diff --git a/doc/contributions.txt b/doc/contributions.txt index e030540f28fecf300c80219cd91b4b7ba851bb12..a4647f005dfdd2c291fd86ca90ff261628634201 100644 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -14,6 +14,8 @@ Adam Marker VWR-2755 Agathos Frascati CT-246 + CT-317 + CT-352 Aimee Trescothick VWR-1813 VWR-3321 @@ -109,6 +111,8 @@ Biancaluce Robbiani CT-229 CT-230 CT-231 + CT-321 + CT-352 Blakar Ogre VWR-418 VWR-881 @@ -129,6 +133,9 @@ Bulli Schumann CT-222 CT-223 CT-224 + CT-319 + CT-350 + CT-352 bushing Spatula VWR-119 VWR-424 @@ -179,6 +186,9 @@ Eddy Stryker EponymousDylan Ra VWR-1289 VWR-1465 +Eva Nowicka + CT-324 + CT-352 Farallon Greyskin VWR-2036 Feep Larsson @@ -187,6 +197,7 @@ Feep Larsson VWR-4444 Flemming Congrejo CT-193 + CT-318 Fluf Fredriksson VWR-3450 Fremont Cunningham @@ -248,7 +259,12 @@ Hoze Menges VWR-255 Ian Kas VWR-8780 (Russian localization) - [NO JIRA] (Ukranian localization) + [NO JIRA] (Ukranian localization) + CT-322 + CT-325 +Irene Muni + CT-324 + CT-352 Iskar Ariantho VWR-1223 VWR-11759 @@ -291,10 +307,15 @@ Lisa Lowe CT-222 CT-223 CT-224 + CT-319 Lockhart Cordoso VWR-108 maciek marksman CT-86 +Magnus Balczo + CT-138 +Malwina Dollinger + CT-138 march Korda SVC-1020 Matthew Dowd @@ -333,6 +354,7 @@ Michelle2 Zenovka Mm Alder VWR-3777 VWR-4794 + VWR-13578 Mr Greggan VWR-445 Nicholaz Beresford @@ -437,9 +459,12 @@ Pf Shan CT-229 CT-230 CT-231 + CT-321 princess niven VWR-5733 CT-85 + CT-320 + CT-352 Renault Clio VWR-1976 Ringo Tuxing @@ -450,6 +475,7 @@ Ringo Tuxing CT-229 CT-230 CT-231 + CT-321 Robin Cornelius VWR-2488 VWR-9557 @@ -465,6 +491,7 @@ Salahzar Stenvaag CT-229 CT-230 CT-231 + CT-321 Sammy Frederix VWR-6186 Scrippy Scofield @@ -485,6 +512,7 @@ Sergen Davies CT-229 CT-230 CT-231 + CT-321 SignpostMarv Martin VWR-153 VWR-154 @@ -543,6 +571,8 @@ Thraxis Epsilon VWR-383 tiamat bingyi CT-246 +TraductoresAnonimos Alter + CT-324 Tue Torok CT-68 CT-69 @@ -554,6 +584,7 @@ Vadim Bigbear VWR-2681 Vixen Heron VWR-2710 + CT-88 Whoops Babii VWR-631 VWR-1640 diff --git a/indra/CMakeLists.txt b/indra/CMakeLists.txt index e8e05f727bcf2cd53dfdd1a0357b4574c7906dd0..3601c223f0db892fe550c50f22085c88b33c861b 100644 --- a/indra/CMakeLists.txt +++ b/indra/CMakeLists.txt @@ -1,3 +1,4 @@ + # -*- cmake -*- # cmake_minimum_required should appear before any diff --git a/indra/cmake/DirectX.cmake b/indra/cmake/DirectX.cmake index d406f3785bd496db0668590e5cf3644fcf45d8e8..29724ee2fc97aa7047ce6362057574e6408d7357 100644 --- a/indra/cmake/DirectX.cmake +++ b/indra/cmake/DirectX.cmake @@ -3,6 +3,7 @@ if (VIEWER AND WINDOWS) find_path(DIRECTX_INCLUDE_DIR dxdiag.h "$ENV{DXSDK_DIR}/Include" + "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (March 2009)/Include" "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (August 2008)/Include" "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (June 2008)/Include" "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (March 2008)/Include" @@ -23,6 +24,7 @@ if (VIEWER AND WINDOWS) find_path(DIRECTX_LIBRARY_DIR dxguid.lib "$ENV{DXSDK_DIR}/Lib/x86" + "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (March 2009)/Lib/x86" "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (August 2008)/Lib/x86" "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (June 2008)/Lib/x86" "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (March 2008)/Lib/x86" diff --git a/indra/cmake/GooglePerfTools.cmake b/indra/cmake/GooglePerfTools.cmake index aff65cb53e55c86f640426ab7cfdef45d8daf96a..355ecb58f09474e8db97e3621a75f748e7735dfc 100644 --- a/indra/cmake/GooglePerfTools.cmake +++ b/indra/cmake/GooglePerfTools.cmake @@ -6,9 +6,11 @@ if (STANDALONE) else (STANDALONE) use_prebuilt_binary(google) if (WINDOWS) + use_prebuilt_binary(google-perftools) set(TCMALLOC_LIBRARIES debug libtcmalloc_minimal-debug - optimized libtcmalloc_minimal-debug) + optimized libtcmalloc_minimal) + set(GOOGLE_PERFTOOLS_FOUND "YES") endif (WINDOWS) if (LINUX) set(TCMALLOC_LIBRARIES tcmalloc) @@ -27,6 +29,10 @@ endif (GOOGLE_PERFTOOLS_FOUND) # XXX Disable temporarily, until we have compilation issues on 64-bit # Etch sorted. set(USE_GOOGLE_PERFTOOLS OFF) +if (WINDOWS) + # *TODO -reenable this once we get server usage sorted out + #set(USE_GOOGLE_PERFTOOLS ON) +endif (WINDOWS) if (USE_GOOGLE_PERFTOOLS) set(TCMALLOC_FLAG -DLL_USE_TCMALLOC=1) diff --git a/indra/cmake/LLAddBuildTest.cmake b/indra/cmake/LLAddBuildTest.cmake index 6eeff45afe79799c8b34a7933cd94e9b3ec07edd..4a61725e09126d513e8229da0bd875fe2a27b4b1 100644 --- a/indra/cmake/LLAddBuildTest.cmake +++ b/indra/cmake/LLAddBuildTest.cmake @@ -1,160 +1,150 @@ # -*- cmake -*- -INCLUDE(APR) -INCLUDE(Pth) -INCLUDE(LLMath) - -MACRO(ADD_BUILD_TEST_NO_COMMON name parent) -# MESSAGE("${CMAKE_CURRENT_SOURCE_DIR}/tests/${name}_test.cpp") - IF (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/tests/${name}_test.cpp") - SET(no_common_libraries - ${APRUTIL_LIBRARIES} - ${APR_LIBRARIES} - ${PTHREAD_LIBRARY} - ${WINDOWS_LIBRARIES} - ) - SET(no_common_source_files - ${name}.cpp - tests/${name}_test.cpp - ${CMAKE_SOURCE_DIR}/test/test.cpp - ) - ADD_BUILD_TEST_INTERNAL("${name}" "${parent}" "${no_common_libraries}" "${no_common_source_files}") - ENDIF (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/tests/${name}_test.cpp") -ENDMACRO(ADD_BUILD_TEST_NO_COMMON name parent) - - -MACRO(ADD_BUILD_TEST name parent) - # optional extra parameter: list of additional source files - SET(more_source_files "${ARGN}") - -# MESSAGE("${CMAKE_CURRENT_SOURCE_DIR}/tests/${name}_test.cpp") - IF (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/tests/${name}_test.cpp") - - SET(basic_libraries - ${LLCOMMON_LIBRARIES} - ${LLMATH_LIBRARIES} - ${APRUTIL_LIBRARIES} - ${APR_LIBRARIES} - ${PTHREAD_LIBRARY} - ${WINDOWS_LIBRARIES} - ${PTH_LIBRARIES} - ) - SET(basic_source_files - ${name}.cpp - tests/${name}_test.cpp - ${CMAKE_SOURCE_DIR}/test/test.cpp - ${CMAKE_SOURCE_DIR}/test/lltut.cpp - ${more_source_files} - ) - ADD_BUILD_TEST_INTERNAL("${name}" "${parent}" "${basic_libraries}" "${basic_source_files}") - - ENDIF (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/tests/${name}_test.cpp") -ENDMACRO(ADD_BUILD_TEST name parent) - - -MACRO(ADD_VIEWER_BUILD_TEST name parent) - # This is just like the generic ADD_BUILD_TEST, but we implicitly - # add the necessary precompiled header .cpp file (anyone else find that - # oxymoronic?) because the MSVC build errors will NOT point you there. - ADD_BUILD_TEST("${name}" "${parent}" llviewerprecompiledheaders.cpp) -ENDMACRO(ADD_VIEWER_BUILD_TEST name parent) - - -MACRO(ADD_SIMULATOR_BUILD_TEST name parent) - ADD_BUILD_TEST("${name}" "${parent}" llsimprecompiledheaders.cpp) - - if (WINDOWS) - SET_SOURCE_FILES_PROPERTIES( - "tests/${name}_test.cpp" - PROPERTIES - COMPILE_FLAGS "/Yullsimprecompiledheaders.h" - ) - endif (WINDOWS) -ENDMACRO(ADD_SIMULATOR_BUILD_TEST name parent) - -MACRO(ADD_BUILD_TEST_INTERNAL name parent libraries source_files) - # Optional additional parameter: pathname of Python wrapper script - SET(wrapper "${ARGN}") - #MESSAGE(STATUS "ADD_BUILD_TEST_INTERNAL ${name} wrapper = ${wrapper}") - - SET(TEST_SOURCE_FILES ${source_files}) - SET(HEADER "${name}.h") - set_source_files_properties(${HEADER} - PROPERTIES HEADER_FILE_ONLY TRUE) - LIST(APPEND TEST_SOURCE_FILES ${HEADER}) - INCLUDE_DIRECTORIES("${LIBS_OPEN_DIR}/test") - ADD_EXECUTABLE(${name}_test ${TEST_SOURCE_FILES}) - TARGET_LINK_LIBRARIES(${name}_test - ${libraries} - ) - - GET_TARGET_PROPERTY(TEST_EXE ${name}_test LOCATION) - SET(TEST_OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${name}_test_ok.txt) - - SET(run_needs ${name}_test) - - IF ("${wrapper}" STREQUAL "") - SET(TEST_CMD ${TEST_EXE} --touch=${TEST_OUTPUT} --sourcedir=${CMAKE_CURRENT_SOURCE_DIR}) - ELSE ("${wrapper}" STREQUAL "") - SET(TEST_CMD ${PYTHON_EXECUTABLE} ${wrapper} ${TEST_EXE} --touch=${TEST_OUTPUT} --sourcedir=${CMAKE_CURRENT_SOURCE_DIR}) - SET(run_needs ${run_needs} ${wrapper}) - ENDIF ("${wrapper}" STREQUAL "") - - #MESSAGE(STATUS "ADD_BUILD_TEST_INTERNAL ${name} test_cmd = ${TEST_CMD}") +MACRO(LL_ADD_PROJECT_UNIT_TESTS project sources) + # Given a project name and a list of sourcefiles (with optional properties on each), + # add targets to build and run the tests specified. + # ASSUMPTIONS: + # * this macro is being executed in the project file that is passed in + # * current working SOURCE dir is that project dir + # * there is a subfolder tests/ with test code corresponding to the filenames passed in + # * properties for each sourcefile passed in indicate what libs to link that file with (MAKE NO ASSUMPTIONS ASIDE FROM TUT) + # + # More info and examples at: https://wiki.secondlife.com/wiki/How_to_add_unit_tests_to_indra_code + # + # WARNING: do NOT modify this code without working with poppy or daveh - + # there is another branch that will conflict heavily with any changes here. + + IF(LL_TEST_VERBOSE) + MESSAGE("LL_ADD_PROJECT_UNIT_TESTS UNITTEST_PROJECT_${project} sources: ${sources}") + ENDIF(LL_TEST_VERBOSE) + + # Start with the header and project-wide setup before making targets + #project(UNITTEST_PROJECT_${project}) + # Setup includes, paths, etc + SET(alltest_SOURCE_FILES + ${CMAKE_SOURCE_DIR}/test/test.cpp + ) + SET(alltest_DEP_TARGETS + llcommon + llmath + ) + SET(alltest_INCLUDE_DIRS + ${LLMATH_INCLUDE_DIRS} + ${LLCOMMON_INCLUDE_DIRS} + ${LIBS_OPEN_DIR}/test + ) + SET(alltest_LIBRARIES + ${PTHREAD_LIBRARY} + ${WINDOWS_LIBRARIES} + ) + # Headers, for convenience in targets. + SET(alltest_HEADER_FILES + ${CMAKE_SOURCE_DIR}/test/test.h + ) + + # start the source test executable definitions + SET(${project}_TEST_OUTPUT "") + FOREACH (source ${sources}) + STRING( REGEX REPLACE "(.*)\\.[^.]+$" "\\1" name ${source} ) + STRING( REGEX REPLACE ".*\\.([^.]+)$" "\\1" extension ${source} ) + IF(LL_TEST_VERBOSE) + MESSAGE("LL_ADD_PROJECT_UNIT_TESTS UNITTEST_PROJECT_${project} individual source: ${source} (${name}.${extension})") + ENDIF(LL_TEST_VERBOSE) + + # + # Per-codefile additional / external source, header, and include dir property extraction + # + # Source + GET_SOURCE_FILE_PROPERTY(${name}_test_additional_SOURCE_FILES ${source} LL_TEST_ADDITIONAL_SOURCE_FILES) + IF(${name}_test_additional_SOURCE_FILES MATCHES NOTFOUND) + SET(${name}_test_additional_SOURCE_FILES "") + ENDIF(${name}_test_additional_SOURCE_FILES MATCHES NOTFOUND) + SET(${name}_test_SOURCE_FILES ${source} tests/${name}_test.${extension} ${alltest_SOURCE_FILES} ${${name}_test_additional_SOURCE_FILES} ) + IF(LL_TEST_VERBOSE) + MESSAGE("LL_ADD_PROJECT_UNIT_TESTS ${name}_test_SOURCE_FILES ${${name}_test_SOURCE_FILES}") + ENDIF(LL_TEST_VERBOSE) + # Headers + GET_SOURCE_FILE_PROPERTY(${name}_test_additional_HEADER_FILES ${source} LL_TEST_ADDITIONAL_HEADER_FILES) + IF(${name}_test_additional_HEADER_FILES MATCHES NOTFOUND) + SET(${name}_test_additional_HEADER_FILES "") + ENDIF(${name}_test_additional_HEADER_FILES MATCHES NOTFOUND) + SET(${name}_test_HEADER_FILES ${name}.h ${${name}_test_additional_HEADER_FILES}) + set_source_files_properties(${${name}_test_HEADER_FILES} PROPERTIES HEADER_FILE_ONLY TRUE) + LIST(APPEND ${name}_test_SOURCE_FILES ${${name}_test_HEADER_FILES}) + IF(LL_TEST_VERBOSE) + MESSAGE("LL_ADD_PROJECT_UNIT_TESTS ${name}_test_HEADER_FILES ${${name}_test_HEADER_FILES}") + ENDIF(LL_TEST_VERBOSE) + # Include dirs + GET_SOURCE_FILE_PROPERTY(${name}_test_additional_INCLUDE_DIRS ${source} LL_TEST_ADDITIONAL_INCLUDE_DIRS) + IF(${name}_test_additional_INCLUDE_DIRS MATCHES NOTFOUND) + SET(${name}_test_additional_INCLUDE_DIRS "") + ENDIF(${name}_test_additional_INCLUDE_DIRS MATCHES NOTFOUND) + INCLUDE_DIRECTORIES(${alltest_INCLUDE_DIRS} ${name}_test_additional_INCLUDE_DIRS ) + IF(LL_TEST_VERBOSE) + MESSAGE("LL_ADD_PROJECT_UNIT_TESTS ${name}_test_additional_INCLUDE_DIRS ${${name}_test_additional_INCLUDE_DIRS}") + ENDIF(LL_TEST_VERBOSE) + + # Setup target + ADD_EXECUTABLE(PROJECT_${project}_TEST_${name} ${${name}_test_SOURCE_FILES}) + + # + # Per-codefile additional / external project dep and lib dep property extraction + # + # WARNING: it's REALLY IMPORTANT to not mix these. I guarantee it will not work in the future. + poppy 2009-04-19 + # Projects + GET_SOURCE_FILE_PROPERTY(${name}_test_additional_PROJECTS ${source} LL_TEST_ADDITIONAL_PROJECTS) + IF(${name}_test_additional_PROJECTS MATCHES NOTFOUND) + SET(${name}_test_additional_PROJECTS "") + ENDIF(${name}_test_additional_PROJECTS MATCHES NOTFOUND) + # Libraries + GET_SOURCE_FILE_PROPERTY(${name}_test_additional_LIBRARIES ${source} LL_TEST_ADDITIONAL_LIBRARIES) + IF(${name}_test_additional_LIBRARIES MATCHES NOTFOUND) + SET(${name}_test_additional_LIBRARIES "") + ENDIF(${name}_test_additional_LIBRARIES MATCHES NOTFOUND) + IF(LL_TEST_VERBOSE) + MESSAGE("LL_ADD_PROJECT_UNIT_TESTS ${name}_test_additional_PROJECTS ${${name}_test_additional_PROJECTS}") + MESSAGE("LL_ADD_PROJECT_UNIT_TESTS ${name}_test_additional_LIBRARIES ${${name}_test_additional_LIBRARIES}") + ENDIF(LL_TEST_VERBOSE) + # Add to project + TARGET_LINK_LIBRARIES(PROJECT_${project}_TEST_${name} ${alltest_LIBRARIES} ${alltest_DEP_TARGETS} ${${name}_test_additional_PROJECTS} ${${name}_test_additional_LIBRARIES} ) + + # + # Setup test targets + # + GET_TARGET_PROPERTY(TEST_EXE PROJECT_${project}_TEST_${name} LOCATION) + SET(TEST_OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/PROJECT_${project}_TEST_${name}_ok.txt) + SET(TEST_CMD ${TEST_EXE} --touch=${TEST_OUTPUT} --sourcedir=${CMAKE_CURRENT_SOURCE_DIR}) + # daveh - what configuration does this use? Debug? it's cmake-time, not build time. + poppy 2009-04-19 + IF(LL_TEST_VERBOSE) + MESSAGE(STATUS "LL_ADD_PROJECT_UNIT_TESTS ${name} test_cmd = ${TEST_CMD}") + ENDIF(LL_TEST_VERBOSE) SET(TEST_SCRIPT_CMD ${CMAKE_COMMAND} -DLD_LIBRARY_PATH=${ARCH_PREBUILT_DIRS}:/usr/lib -DTEST_CMD:STRING="${TEST_CMD}" -P ${CMAKE_SOURCE_DIR}/cmake/RunBuildTest.cmake ) - - #MESSAGE(STATUS "ADD_BUILD_TEST_INTERNAL ${name} test_script = ${TEST_SCRIPT_CMD}") + IF(LL_TEST_VERBOSE) + MESSAGE(STATUS "LL_ADD_PROJECT_UNIT_TESTS ${name} test_script = ${TEST_SCRIPT_CMD}") + ENDIF(LL_TEST_VERBOSE) + # Add test ADD_CUSTOM_COMMAND( OUTPUT ${TEST_OUTPUT} COMMAND ${TEST_SCRIPT_CMD} - DEPENDS ${run_needs} + DEPENDS PROJECT_${project}_TEST_${name} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) + # Why not add custom target and add POST_BUILD command? + # Slightly less uncertain behavior + # (OUTPUT commands run non-deterministically AFAIK) + poppy 2009-04-19 + # > I did not use a post build step as I could not make it notify of a + # > failure after the first time you build and fail a test. - daveh 2009-04-20 + LIST(APPEND ${project}_TEST_OUTPUT ${TEST_OUTPUT}) + ENDFOREACH (source) + + # Add the test runner target per-project + # (replaces old _test_ok targets all over the place) + ADD_CUSTOM_TARGET(${project}_tests ALL DEPENDS ${${project}_TEST_OUTPUT}) + ADD_DEPENDENCIES(${project} ${project}_tests) +ENDMACRO(LL_ADD_PROJECT_UNIT_TESTS) - ADD_CUSTOM_TARGET(${name}_test_ok ALL DEPENDS ${TEST_OUTPUT}) - IF (${parent}) - ADD_DEPENDENCIES(${parent} ${name}_test_ok) - ENDIF (${parent}) - -ENDMACRO(ADD_BUILD_TEST_INTERNAL name parent libraries source_files) - - -MACRO(ADD_COMM_BUILD_TEST name parent wrapper) -## MESSAGE(STATUS "ADD_COMM_BUILD_TEST ${name} wrapper = ${wrapper}") - # optional extra parameter: list of additional source files - SET(more_source_files "${ARGN}") -## MESSAGE(STATUS "ADD_COMM_BUILD_TEST ${name} more_source_files = ${more_source_files}") - - SET(libraries - ${LLMESSAGE_LIBRARIES} - ${LLMATH_LIBRARIES} - ${LLVFS_LIBRARIES} - ${LLCOMMON_LIBRARIES} - ${APRUTIL_LIBRARIES} - ${APR_LIBRARIES} - ${PTHREAD_LIBRARY} - ${WINDOWS_LIBRARIES} - ) - SET(source_files - ${name}.cpp - tests/${name}_test.cpp - ${CMAKE_SOURCE_DIR}/test/test.cpp - ${CMAKE_SOURCE_DIR}/test/lltut.cpp - ${more_source_files} - ) - - ADD_BUILD_TEST_INTERNAL("${name}" "${parent}" "${libraries}" "${source_files}" "${wrapper}") -ENDMACRO(ADD_COMM_BUILD_TEST name parent wrapper) - -MACRO(ADD_VIEWER_COMM_BUILD_TEST name parent wrapper) - # This is just like the generic ADD_COMM_BUILD_TEST, but we implicitly - # add the necessary precompiled header .cpp file (anyone else find that - # oxymoronic?) because the MSVC build errors will NOT point you there. -## MESSAGE(STATUS "ADD_VIEWER_COMM_BUILD_TEST ${name} wrapper = ${wrapper}") - ADD_COMM_BUILD_TEST("${name}" "${parent}" "${wrapper}" llviewerprecompiledheaders.cpp) -ENDMACRO(ADD_VIEWER_COMM_BUILD_TEST name parent wrapper) diff --git a/indra/cmake/LLCommon.cmake b/indra/cmake/LLCommon.cmake index e9e3784e6998bf4ad7595402d6136d4e1f2ad344..4cd3a9adb84813b91fd5463160f6168771330305 100644 --- a/indra/cmake/LLCommon.cmake +++ b/indra/cmake/LLCommon.cmake @@ -4,6 +4,7 @@ include(APR) include(Boost) include(EXPAT) include(ZLIB) +include(GooglePerfTools) set(LLCOMMON_INCLUDE_DIRS ${LIBS_OPEN_DIR}/llcommon @@ -14,6 +15,8 @@ set(LLCOMMON_INCLUDE_DIRS set(LLCOMMON_LIBRARIES llcommon) +add_definitions(${TCMALLOC_FLAG}) + set(LLCOMMON_LINK_SHARED OFF CACHE BOOL "Build the llcommon target as a shared library.") if(LLCOMMON_LINK_SHARED) add_definitions(-DLL_COMMON_LINK_SHARED=1) diff --git a/indra/cmake/Linking.cmake b/indra/cmake/Linking.cmake index 2bddb95178908fcd585e1416c82770104c98b05f..eaa8a6dc2915ce82a4d488e9da155c82ae15a7c1 100644 --- a/indra/cmake/Linking.cmake +++ b/indra/cmake/Linking.cmake @@ -42,6 +42,7 @@ if (WINDOWS) wldap32 gdi32 user32 + dbghelp ) else (WINDOWS) set(WINDOWS_LIBRARIES "") diff --git a/indra/cmake/Variables.cmake b/indra/cmake/Variables.cmake index adff01197fe40677f1a632865ad9dae070fd18a5..6559051b5abbe0bc3ac66901fe5dad362ebb07c8 100644 --- a/indra/cmake/Variables.cmake +++ b/indra/cmake/Variables.cmake @@ -64,7 +64,7 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Linux") if (ARCH STREQUAL x86_64) set(WORD_SIZE 64) else (ARCH STREQUAL x86_64) - set(WORD_SIZE 64) + set(WORD_SIZE 32) endif (ARCH STREQUAL x86_64) endif (WORD_SIZE EQUAL 32) diff --git a/indra/develop.py b/indra/develop.py index f4143eb65cdf55d78db6d34ad226fb2c6273b1da..1d7ac42c9ccee1a431c2a1050b3b27b81a6b1b6d 100755 --- a/indra/develop.py +++ b/indra/develop.py @@ -370,22 +370,29 @@ def count_distcc_hosts(): cpus += m and int(m.group(1)) or 1 return hosts, cpus - def mk_distcc_hosts(): + def mk_distcc_hosts(basename, range, num_cpus): '''Generate a list of LL-internal machines to build on.''' loc_entry, cpus = localhost() hosts = [loc_entry] dead = [] - stations = [s for s in xrange(36) if s not in dead] + stations = [s for s in xrange(range) if s not in dead] random.shuffle(stations) - hosts += ['station%d.lindenlab.com/2,lzo' % s for s in stations] + hosts += ['%s%d.lindenlab.com/%d,lzo' % (basename, s, num_cpus) for s in stations] cpus += 2 * len(stations) return ' '.join(hosts), cpus if job_count is None: hosts, job_count = count_distcc_hosts() - if hosts == 1 and socket.gethostname().startswith('station'): - hosts, job_count = mk_distcc_hosts() - os.putenv('DISTCC_HOSTS', hosts) + if hosts == 1: + hostname = socket.gethostname() + if hostname.startswith('station'): + hosts, job_count = mk_distcc_hosts('station', 36, 2) + os.environ['DISTCC_HOSTS'] = hosts + if hostname.startswith('eniac'): + hosts, job_count = mk_distcc_hosts('eniac', 71, 2) + os.environ['DISTCC_HOSTS'] = hosts + if job_count > 12: + job_count = 12; opts.extend(['-j', str(job_count)]) if targets: @@ -444,7 +451,8 @@ def run_build(self, opts, targets): targets = ' '.join(['-target ' + repr(t) for t in targets]) else: targets = '' - cmd = ('xcodebuild -parallelizeTargets ' + # cmd = ('xcodebuild -parallelizeTargets ' # parallelizeTargets is suspected of non-deterministic build failures. + poppy 2009-06-05 + cmd = ('xcodebuild ' '-configuration %s %s %s' % (self.build_type, ' '.join(opts), targets)) for d in self.build_dirs(): @@ -525,27 +533,35 @@ def cmake_commandline(self, src_dir, build_dir, opts, simple): '-DROOT_PROJECT_NAME:STRING=%(project_name)s ' '%(opts)s "%(dir)s"' % args) + def get_HKLM_registry_value(self, key_str, value_str): + import _winreg + reg = _winreg.ConnectRegistry(None, _winreg.HKEY_LOCAL_MACHINE) + key = _winreg.OpenKey(reg, key_str) + value = _winreg.QueryValueEx(key, value_str)[0] + print 'Found: %s' % value + return value + def find_visual_studio(self, gen=None): if gen is None: gen = self._generator gen = gen.lower() + value_str = (r'EnvironmentDirectory') + key_str = (r'SOFTWARE\Microsoft\VisualStudio\%s\Setup\VS' % + self.gens[gen]['ver']) + print ('Reading VS environment from HKEY_LOCAL_MACHINE\%s\%s' % + (key_str, value_str)) try: - import _winreg - key_str = (r'SOFTWARE\Microsoft\VisualStudio\%s\Setup\VS' % - self.gens[gen]['ver']) - value_str = (r'EnvironmentDirectory') - print ('Reading VS environment from HKEY_LOCAL_MACHINE\%s\%s' % - (key_str, value_str)) - print key_str - - reg = _winreg.ConnectRegistry(None, _winreg.HKEY_LOCAL_MACHINE) - key = _winreg.OpenKey(reg, key_str) - value = _winreg.QueryValueEx(key, value_str)[0] - print 'Found: %s' % value - return value + return self.get_HKLM_registry_value(key_str, value_str) except WindowsError, err: + key_str = (r'SOFTWARE\Wow6432Node\Microsoft\VisualStudio\%s\Setup\VS' % + self.gens[gen]['ver']) + + try: + return self.get_HKLM_registry_value(key_str, value_str) + except: print >> sys.stderr, "Didn't find ", self.gens[gen]['gen'] - return '' + + return '' def get_build_cmd(self): if self.incredibuild: @@ -689,6 +705,15 @@ def cmake_commandline(self, src_dir, build_dir, opts, simple): ''' def main(arguments): + if os.getenv('DISTCC_DIR') is None: + distcc_dir = os.path.join(getcwd(), '.distcc') + if not os.path.exists(distcc_dir): + os.mkdir(distcc_dir) + print "setting DISTCC_DIR to %s" % distcc_dir + os.environ['DISTCC_DIR'] = distcc_dir + else: + print "DISTCC_DIR is set to %s" % os.getenv('DISTCC_DIR') + setup = setup_platform[sys.platform]() try: opts, args = getopt.getopt( diff --git a/indra/integration_tests/llui_libtest/CMakeLists.txt b/indra/integration_tests/llui_libtest/CMakeLists.txt index 71a47f1475a15fe785e02054b2b3bb2df1bf4c0b..68556ac4ab4e771c37891c02dcfd698762e842ad 100644 --- a/indra/integration_tests/llui_libtest/CMakeLists.txt +++ b/indra/integration_tests/llui_libtest/CMakeLists.txt @@ -62,6 +62,7 @@ endif (DARWIN) target_link_libraries(llui_libtest llui ${OS_LIBRARIES} + ${GOOGLE_PERFTOOLS_LIBRARIES} ) if (WINDOWS) diff --git a/indra/integration_tests/llui_libtest/llui_libtest.cpp b/indra/integration_tests/llui_libtest/llui_libtest.cpp index 599bcabfcb6dbefbd3809e50d61258ffbe050863..f8caa7990b3516aa3fe02101827466f42af2641b 100644 --- a/indra/integration_tests/llui_libtest/llui_libtest.cpp +++ b/indra/integration_tests/llui_libtest/llui_libtest.cpp @@ -51,6 +51,53 @@ // *TODO: switch to using TUT // *TODO: teach Parabuild about this program, run automatically after full builds +// We can't create LLImageGL objects because we have no window or rendering +// context. Provide enough of an LLUIImage to test the LLUI library without +// an underlying image. +class TestUIImage : public LLUIImage +{ +public: + TestUIImage() + : LLUIImage( std::string(), NULL ) // NULL ImageGL, don't deref! + { } + + /*virtual*/ S32 getWidth() const + { + return 16; + } + + /*virtual*/ S32 getHeight() const + { + return 16; + } +}; + +// We need to supply dummy images +class TestImageProvider : public LLImageProviderInterface +{ +public: + /*virtual*/ LLPointer<LLUIImage> getUIImage(const std::string& name) + { + return makeImage(); + } + + /*virtual*/ LLPointer<LLUIImage> getUIImageByID(const LLUUID& id) + { + return makeImage(); + } + + /*virtual*/ void cleanUp() + { + } + + LLPointer<LLUIImage> makeImage() + { + LLPointer<LLImageGL> image_gl; + LLPointer<LLUIImage> image = new LLUIImage( std::string(), image_gl); + return image; + } +}; + static std::string get_xui_dir() { std::string delim = gDirUtilp->getDirDelimiter(); @@ -84,8 +131,9 @@ int main(int argc, char** argv) settings["floater"] = &floater_group; settings["ignores"] = &ignores_group; - LLImageProviderInterface* image_provider = NULL; - LLUI::initClass(settings, image_provider); + // Don't use real images as we don't have a GL context + TestImageProvider image_provider; + LLUI::initClass(settings, &image_provider); const bool no_register_widgets = false; LLWidgetReg::initClass( no_register_widgets ); @@ -116,7 +164,7 @@ int main(int argc, char** argv) // Convert all test floaters to new XML format std::string delim = gDirUtilp->getDirDelimiter(); - std::string xui_dir = get_xui_dir() + "en-us" + delim; + std::string xui_dir = get_xui_dir() + "en" + delim; std::string filename; while (gDirUtilp->getNextFileInDir(xui_dir, "floater_test_*.xml", filename, false)) { @@ -141,8 +189,7 @@ int main(int argc, char** argv) llinfos << "Output: " << out_filename << llendl; LLFILE* floater_file = LLFile::fopen(out_filename.c_str(), "w"); LLXMLNode::writeHeaderToFile(floater_file); - const char* const indent = " "; - output_node->writeToFile(floater_file, indent); + output_node->writeToFile(floater_file); fclose(floater_file); } return 0; diff --git a/indra/integration_tests/llui_libtest/llwidgetreg.cpp b/indra/integration_tests/llui_libtest/llwidgetreg.cpp index f4a4665cc5d91cd9ed934d87235f7cffd901a87d..417f3059d6c8097c38ed89fc4cab2d73306e9ec9 100644 --- a/indra/integration_tests/llui_libtest/llwidgetreg.cpp +++ b/indra/integration_tests/llui_libtest/llwidgetreg.cpp @@ -62,46 +62,45 @@ void LLWidgetReg::initClass(bool register_widgets) // references to the object files. if (register_widgets) { - LLRegisterWidget<LLButton> button("button"); - LLRegisterWidget<LLCheckBoxCtrl> check_box("check_box"); - LLRegisterWidget<LLComboBox> combo_box("combo_box"); - LLRegisterWidget<LLFlyoutButton> flyout_button("flyout_button"); - LLRegisterWidget<LLContainerView> container_view("container_view"); - LLRegisterWidget<LLIconCtrl> icon("icon"); - LLRegisterWidget<LLLineEditor> line_editor("line_editor"); - LLRegisterWidget<LLSearchEditor> search_editor("search_editor"); - LLRegisterWidget<LLMenuItemSeparatorGL> menu_item_separator("menu_item_separator"); - LLRegisterWidget<LLMenuItemCallGL> menu_item_call_gl("menu_item_call"); - LLRegisterWidget<LLMenuItemCheckGL> menu_item_check_gl("menu_item_check"); - LLRegisterWidget<LLMenuGL> menu("menu"); - LLRegisterWidget<LLMenuBarGL> menu_bar("menu_bar"); - LLRegisterWidget<LLContextMenu> context_menu("context_menu"); - LLRegisterWidget<LLMultiSlider> multi_slider_bar("multi_slider_bar"); - LLRegisterWidget<LLMultiSliderCtrl> multi_slider("multi_slider"); - LLRegisterWidget<LLPanel> panel("panel", &LLPanel::fromXML); - LLRegisterWidget<LLLayoutStack> layout_stack("layout_stack", &LLLayoutStack::fromXML); - LLRegisterWidget<LLProgressBar> progress_bar("progress_bar"); - LLRegisterWidget<LLRadioGroup> radio_group("radio_group"); - LLRegisterWidget<LLRadioCtrl> radio_item("radio_item"); - LLRegisterWidget<LLScrollContainer> scroll_container("scroll_container"); - LLRegisterWidget<LLScrollingPanelList> scrolling_panel_list("scrolling_panel_list"); - LLRegisterWidget<LLScrollListCtrl> scroll_list("scroll_list"); - LLRegisterWidget<LLSlider> slider_bar("slider_bar"); - LLRegisterWidget<LLSlider> volume_slider("volume_slider"); - LLRegisterWidget<LLSliderCtrl> slider("slider"); - LLRegisterWidget<LLSpinCtrl> spinner("spinner"); - LLRegisterWidget<LLStatBar> stat_bar("stat_bar"); - //LLRegisterWidget<LLPlaceHolderPanel> placeholder("placeholder"); - LLRegisterWidget<LLTabContainer> tab_container("tab_container"); - LLRegisterWidget<LLTextBox> text("text"); - LLRegisterWidget<LLTextEditor> simple_text_editor("simple_text_editor"); - LLRegisterWidget<LLUICtrl> ui_ctrl("ui_ctrl"); - LLRegisterWidget<LLStatView> stat_view("stat_view"); - //LLRegisterWidget<LLUICtrlLocate> locate("locate"); - //LLRegisterWidget<LLUICtrlLocate> pad("pad"); - LLRegisterWidget<LLViewBorder> view_border("view_border"); + LLDefaultWidgetRegistry::Register<LLButton> button("button"); + LLDefaultWidgetRegistry::Register<LLCheckBoxCtrl> check_box("check_box"); + LLDefaultWidgetRegistry::Register<LLComboBox> combo_box("combo_box"); + LLDefaultWidgetRegistry::Register<LLFlyoutButton> flyout_button("flyout_button"); + LLDefaultWidgetRegistry::Register<LLContainerView> container_view("container_view"); + LLDefaultWidgetRegistry::Register<LLIconCtrl> icon("icon"); + LLDefaultWidgetRegistry::Register<LLLineEditor> line_editor("line_editor"); + LLDefaultWidgetRegistry::Register<LLSearchEditor> search_editor("search_editor"); + LLDefaultWidgetRegistry::Register<LLMenuItemSeparatorGL> menu_item_separator("menu_item_separator"); + LLDefaultWidgetRegistry::Register<LLMenuItemCallGL> menu_item_call_gl("menu_item_call"); + LLDefaultWidgetRegistry::Register<LLMenuItemCheckGL> menu_item_check_gl("menu_item_check"); + LLDefaultWidgetRegistry::Register<LLMenuGL> menu("menu"); + LLDefaultWidgetRegistry::Register<LLMenuBarGL> menu_bar("menu_bar"); + LLDefaultWidgetRegistry::Register<LLContextMenu> context_menu("context_menu"); + LLDefaultWidgetRegistry::Register<LLMultiSlider> multi_slider_bar("multi_slider_bar"); + LLDefaultWidgetRegistry::Register<LLMultiSliderCtrl> multi_slider("multi_slider"); + LLDefaultWidgetRegistry::Register<LLPanel> panel("panel", &LLPanel::fromXML); + LLDefaultWidgetRegistry::Register<LLLayoutStack> layout_stack("layout_stack", &LLLayoutStack::fromXML); + LLDefaultWidgetRegistry::Register<LLProgressBar> progress_bar("progress_bar"); + LLDefaultWidgetRegistry::Register<LLRadioGroup> radio_group("radio_group"); + LLDefaultWidgetRegistry::Register<LLRadioCtrl> radio_item("radio_item"); + LLDefaultWidgetRegistry::Register<LLScrollContainer> scroll_container("scroll_container"); + LLDefaultWidgetRegistry::Register<LLScrollingPanelList> scrolling_panel_list("scrolling_panel_list"); + LLDefaultWidgetRegistry::Register<LLScrollListCtrl> scroll_list("scroll_list"); + LLDefaultWidgetRegistry::Register<LLSlider> slider_bar("slider_bar"); + LLDefaultWidgetRegistry::Register<LLSliderCtrl> slider("slider"); + LLDefaultWidgetRegistry::Register<LLSpinCtrl> spinner("spinner"); + LLDefaultWidgetRegistry::Register<LLStatBar> stat_bar("stat_bar"); + //LLDefaultWidgetRegistry::Register<LLPlaceHolderPanel> placeholder("placeholder"); + LLDefaultWidgetRegistry::Register<LLTabContainer> tab_container("tab_container"); + LLDefaultWidgetRegistry::Register<LLTextBox> text("text"); + LLDefaultWidgetRegistry::Register<LLTextEditor> simple_text_editor("simple_text_editor"); + LLDefaultWidgetRegistry::Register<LLUICtrl> ui_ctrl("ui_ctrl"); + LLDefaultWidgetRegistry::Register<LLStatView> stat_view("stat_view"); + //LLDefaultWidgetRegistry::Register<LLUICtrlLocate> locate("locate"); + //LLDefaultWidgetRegistry::Register<LLUICtrlLocate> pad("pad"); + LLDefaultWidgetRegistry::Register<LLViewBorder> view_border("view_border"); } // *HACK: Usually this is registered as a viewer text editor - LLRegisterWidget<LLTextEditor> text_editor("text_editor"); + LLDefaultWidgetRegistry::Register<LLTextEditor> text_editor("text_editor"); } diff --git a/indra/integration_tests/llui_libtest/llwidgetreg.h b/indra/integration_tests/llui_libtest/llwidgetreg.h index 263e3958c97ad91325ef56f64cc0ddb99f8ab202..eac818608d2163e0ebb10cfb6783f042631eec53 100644 --- a/indra/integration_tests/llui_libtest/llwidgetreg.h +++ b/indra/integration_tests/llui_libtest/llwidgetreg.h @@ -33,7 +33,7 @@ // Register all widgets with the builder registry. // Useful on Windows where linker discards all references to the -// static LLRegisterWidget<> calls. +// static LLDefaultWidgetRegistry::Register<> calls. class LLWidgetReg { public: diff --git a/indra/lib/python/indra/base/cllsd_test.py b/indra/lib/python/indra/base/cllsd_test.py index 3af59e741a7f717f815013ea79b5b3970b1e86a5..0b20d99d807e02c60bd80ec90ffd8b49683a6305 100644 --- a/indra/lib/python/indra/base/cllsd_test.py +++ b/indra/lib/python/indra/base/cllsd_test.py @@ -10,7 +10,7 @@ class myint(int): '&<>', u'\u81acj', llsd.uri('http://foo<'), - lluuid.LLUUID(), + lluuid.UUID(), llsd.LLSD(['thing']), 1, myint(31337), diff --git a/indra/lib/python/indra/base/llsd.py b/indra/lib/python/indra/base/llsd.py index 9534d5935eb2778594a431ac43fb240b1c277dcc..1190d88663964a6c3dace2c291778ab676d0579e 100644 --- a/indra/lib/python/indra/base/llsd.py +++ b/indra/lib/python/indra/base/llsd.py @@ -72,8 +72,11 @@ class uri(str): def format_datestr(v): - """ Formats a datetime object into the string format shared by xml and notation serializations.""" - return v.isoformat() + 'Z' + """ Formats a datetime or date object into the string format shared by xml and notation serializations.""" + if hasattr(v, 'microsecond'): + return v.isoformat() + 'Z' + else: + return v.strftime('%Y-%m-%dT%H:%M:%SZ') def parse_datestr(datestr): """Parses a datetime object from the string format shared by xml and notation serializations.""" @@ -183,6 +186,7 @@ def __init__(self): unicode : self.STRING, uri : self.URI, datetime.datetime : self.DATE, + datetime.date : self.DATE, list : self.ARRAY, tuple : self.ARRAY, types.GeneratorType : self.ARRAY, @@ -347,6 +351,7 @@ def __init__(self): unicode : self.STRING, uri : self.URI, datetime.datetime : self.DATE, + datetime.date : self.DATE, list : self.ARRAY, tuple : self.ARRAY, types.GeneratorType : self.ARRAY, @@ -924,12 +929,13 @@ def _format_list(something): (type(something), something)) -def parse_binary(something): - header = '<?llsd/binary?>\n' - if not something.startswith(header): - raise LLSDParseError('LLSD binary encoding header not found') - return LLSDBinaryParser().parse(something[len(header):]) - +def parse_binary(binary): + if binary.startswith('<?llsd/binary?>'): + just_binary = binary.split('\n', 1)[1] + else: + just_binary = binary + return LLSDBinaryParser().parse(just_binary) + def parse_xml(something): try: return to_python(fromstring(something)[0]) diff --git a/indra/lib/python/indra/base/metrics.py b/indra/lib/python/indra/base/metrics.py index 8f2a85cf0e5e9ae319b5d85d7560824330ff6c60..ff8380265f376dd391d1a11edf2a540c53f53a18 100644 --- a/indra/lib/python/indra/base/metrics.py +++ b/indra/lib/python/indra/base/metrics.py @@ -29,25 +29,93 @@ """ import sys -from indra.base import llsd +try: + import syslog +except ImportError: + # Windows + import sys + class syslog(object): + # wrap to a lame syslog for windows + _logfp = sys.stderr + def syslog(msg): + _logfp.write(msg) + if not msg.endswith('\n'): + _logfp.write('\n') + syslog = staticmethod(syslog) -_sequence_id = 0 +from indra.base.llsd import format_notation -def record_metrics(table, stats, dest=None): +def record_metrics(table, stats): "Write a standard metrics log" - _log("LLMETRICS", table, stats, dest) + _log("LLMETRICS", table, stats) -def record_event(table, data, dest=None): +def record_event(table, data): "Write a standard logmessage log" - _log("LLLOGMESSAGE", table, data, dest) + _log("LLLOGMESSAGE", table, data) + +def set_destination(dest): + """Set the destination of metrics logs for this process. -def _log(header, table, data, dest): + If you do not call this function prior to calling a logging + method, that function will open sys.stdout as a destination. + Attempts to set dest to None will throw a RuntimeError. + @param dest a file-like object which will be the destination for logs.""" if dest is None: - # do this check here in case sys.stdout changes at some - # point. as a default parameter, it will never be - # re-evaluated. - dest = sys.stdout + raise RuntimeError("Attempt to unset metrics destination.") + global _destination + _destination = dest + +def destination(): + """Get the destination of the metrics logs for this process. + Returns None if no destination is set""" + global _destination + return _destination + +class SysLogger(object): + "A file-like object which writes to syslog." + def __init__(self, ident='indra', logopt = None, facility = None): + try: + if logopt is None: + logopt = syslog.LOG_CONS | syslog.LOG_PID + if facility is None: + facility = syslog.LOG_LOCAL0 + syslog.openlog(ident, logopt, facility) + import atexit + atexit.register(syslog.closelog) + except AttributeError: + # No syslog module on Windows + pass + + def write(str): + syslog.syslog(str) + write = staticmethod(write) + + def flush(): + pass + flush = staticmethod(flush) + +# +# internal API +# +_sequence_id = 0 +_destination = None + +def _next_id(): global _sequence_id - print >>dest, header, "(" + str(_sequence_id) + ")", - print >>dest, table, llsd.format_notation(data) + next = _sequence_id _sequence_id += 1 + return next + +def _dest(): + global _destination + if _destination is None: + # this default behavior is documented in the metrics functions above. + _destination = sys.stdout + return _destination + +def _log(header, table, data): + log_line = "%s (%d) %s %s" \ + % (header, _next_id(), table, format_notation(data)) + dest = _dest() + dest.write(log_line) + dest.flush() diff --git a/indra/lib/python/indra/ipc/servicebuilder.py b/indra/lib/python/indra/ipc/servicebuilder.py index cb43bcb26fb3322e0eb3c2d6cfdb5c48898f4395..0a0ce2b4e2d45faecca4ef1447b1d4aa71ba280e 100644 --- a/indra/lib/python/indra/ipc/servicebuilder.py +++ b/indra/lib/python/indra/ipc/servicebuilder.py @@ -39,6 +39,12 @@ pass _g_builder = None +def _builder(): + global _g_builder + if _g_builder is None: + _g_builder = ServiceBuilder() + return _g_builder + def build(name, context={}, **kwargs): """ Convenience method for using a global, singleton, service builder. Pass arguments either via a dict or via python keyword arguments, or both! @@ -56,6 +62,11 @@ def build(name, context={}, **kwargs): _g_builder = ServiceBuilder() return _g_builder.buildServiceURL(name, context, **kwargs) +def build_path(name, context={}, **kwargs): + context = context.copy() # shouldn't modify the caller's dictionary + context.update(kwargs) + return _builder().buildPath(name, context) + class ServiceBuilder(object): def __init__(self, services_definition = services_config): """\ @@ -73,12 +84,21 @@ def __init__(self, services_definition = services_config): continue if isinstance(service_builder, dict): # We will be constructing several builders - for name, builder in service_builder.items(): + for name, builder in service_builder.iteritems(): full_builder_name = service['name'] + '-' + name self.builders[full_builder_name] = builder else: self.builders[service['name']] = service_builder + def buildPath(self, name, context): + """\ + @brief given the environment on construction, return a service path. + @param name The name of the service. + @param context A dict of name value lookups for the service. + @returns Returns the + """ + return russ.format(self.builders[name], context) + def buildServiceURL(self, name, context={}, **kwargs): """\ @brief given the environment on construction, return a service URL. diff --git a/indra/lib/python/indra/ipc/siesta.py b/indra/lib/python/indra/ipc/siesta.py index b206f181c47f05bf8cea5deb17e60c305107196e..d867e715378b268ac365bada4b202b3a74d89ede 100644 --- a/indra/lib/python/indra/ipc/siesta.py +++ b/indra/lib/python/indra/ipc/siesta.py @@ -1,3 +1,32 @@ +"""\ +@file siesta.py +@brief A tiny llsd based RESTful web services framework + +$LicenseInfo:firstyear=2008&license=mit$ + +Copyright (c) 2008, Linden Research, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +$/LicenseInfo$ +""" + +from indra.base import config from indra.base import llsd from webob import exc import webob @@ -37,11 +66,11 @@ def mime_type(content_type): return content_type.split(';', 1)[0].strip().lower() class BodyLLSD(object): - '''Give a webob Request or Response an llsd property. + '''Give a webob Request or Response an llsd based "content" property. - Getting the llsd property parses the body, and caches the result. + Getting the content property parses the body, and caches the result. - Setting the llsd property formats a payload, and the body property + Setting the content property formats a payload, and the body property is set.''' def _llsd__get(self): @@ -80,7 +109,7 @@ def _llsd__del(self): if hasattr(self, '_llsd'): del self._llsd - llsd = property(_llsd__get, _llsd__set, _llsd__del) + content = property(_llsd__get, _llsd__set, _llsd__del) class Response(webob.Response, BodyLLSD): @@ -114,10 +143,10 @@ class Request(webob.Request, BodyLLSD): Sensible content type and accept headers are used by default. - Setting the llsd property also sets the body. Getting the llsd + Setting the content property also sets the body. Getting the content property parses the body if necessary. - If you set the body property directly, the llsd property will be + If you set the body property directly, the content property will be deleted.''' default_content_type = 'application/llsd+xml' @@ -149,11 +178,11 @@ def path_urljoin(self, *parts): body = property(webob.Request._body__get, _body__set, webob.Request._body__del, webob.Request._body__get.__doc__) - def create_response(self, llsd=None, status='200 OK', + def create_response(self, content=None, status='200 OK', conditional_response=webob.NoDefault): resp = self.ResponseClass(status=status, request=self, conditional_response=conditional_response) - resp.llsd = llsd + resp.content = content return resp def curl(self): @@ -196,12 +225,18 @@ def curl(self): 'application/xml': llsd.format_xml, } +formatter_qualities = ( + ('application/llsd+xml', 1.0), + ('application/llsd+notation', 0.5), + ('application/llsd+binary', 0.4), + ('application/xml', 0.3), + ('application/json', 0.2), + ) def formatter_for_mime_type(mime_type): '''Return a formatter that encodes to the given MIME type. The result is a pair of function and MIME type.''' - try: return llsd_formatters[mime_type], mime_type except KeyError: @@ -214,21 +249,19 @@ def formatter_for_request(req): '''Return a formatter that encodes to the preferred type of the client. The result is a pair of function and actual MIME type.''' - - for ctype in req.accept.best_matches('application/llsd+xml'): - try: - return llsd_formatters[ctype], ctype - except KeyError: - pass - else: + ctype = req.accept.best_match(formatter_qualities) + try: + return llsd_formatters[ctype], ctype + except KeyError: raise exc.HTTPNotAcceptable().exception def wsgi_adapter(func, environ, start_response): '''Adapt a Siesta callable to act as a WSGI application.''' - + # Process the request as appropriate. try: req = Request(environ) + #print req.urlvars resp = func(req, **req.urlvars) if not isinstance(resp, webob.Response): try: @@ -281,7 +314,8 @@ def foo(req, **kwargs): allowed = [m for m in http11_methods if hasattr(instance, 'handle_' + m.lower())] raise exc.HTTPMethodNotAllowed( - headers={'Allowed': ', '.join(allowed)}).exception + headers={'Allow': ', '.join(allowed)}).exception + #print "kwargs: ", kwargs return handler(req, **kwargs) def replacement(environ, start_response): @@ -336,7 +370,7 @@ def curl(reqs): route_re = re.compile(r''' \{ # exact character "{" - (\w+) # variable name (restricted to a-z, 0-9, _) + (\w*) # "config" or variable (restricted to a-z, 0-9, _) (?:([:~])([^}]+))? # optional :type or ~regex part \} # exact character "}" ''', re.VERBOSE) @@ -344,27 +378,37 @@ def curl(reqs): predefined_regexps = { 'uuid': r'[a-f0-9][a-f0-9-]{31,35}', 'int': r'\d+', + 'host': r'[a-z0-9][a-z0-9\-\.]*', } def compile_route(route): fp = StringIO() last_pos = 0 for match in route_re.finditer(route): + #print "matches: ", match.groups() fp.write(re.escape(route[last_pos:match.start()])) var_name = match.group(1) sep = match.group(2) expr = match.group(3) - if expr: - if sep == ':': - expr = predefined_regexps[expr] - # otherwise, treat what follows '~' as a regexp + if var_name == 'config': + expr = re.escape(str(config.get(var_name))) else: - expr = '[^/]+' - expr = '(?P<%s>%s)' % (var_name, expr) + if expr: + if sep == ':': + expr = predefined_regexps[expr] + # otherwise, treat what follows '~' as a regexp + else: + expr = '[^/]+' + if var_name != '': + expr = '(?P<%s>%s)' % (var_name, expr) + else: + expr = '(%s)' % (expr,) fp.write(expr) last_pos = match.end() fp.write(re.escape(route[last_pos:])) - return '^%s$' % fp.getvalue() + compiled_route = '^%s$' % fp.getvalue() + #print route, "->", compiled_route + return compiled_route class Router(object): '''WSGI routing class. Parses a URL and hands off a request to @@ -372,21 +416,43 @@ class Router(object): responds with a 404.''' def __init__(self): - self.routes = [] - self.paths = [] + self._new_routes = [] + self._routes = [] + self._paths = [] def add(self, route, app, methods=None): - self.paths.append(route) - self.routes.append((re.compile(compile_route(route)), app, - methods and dict.fromkeys(methods))) + self._new_routes.append((route, app, methods)) + + def _create_routes(self): + for route, app, methods in self._new_routes: + self._paths.append(route) + self._routes.append( + (re.compile(compile_route(route)), + app, + methods and dict.fromkeys(methods))) + self._new_routes = [] def __call__(self, environ, start_response): + # load up the config from the config file. Only needs to be + # done once per interpreter. This is the entry point of all + # siesta applications, so this is where we trap it. + _conf = config.get_config() + if _conf is None: + import os.path + fname = os.path.join( + environ.get('ll.config_dir', '/local/linden/etc'), + 'indra.xml') + config.load(fname) + + # proceed with handling the request + self._create_routes() path_info = environ['PATH_INFO'] request_method = environ['REQUEST_METHOD'] allowed = [] - for regex, app, methods in self.routes: + for regex, app, methods in self._routes: m = regex.match(path_info) if m: + #print "groupdict:",m.groupdict() if not methods or request_method in methods: environ['paste.urlvars'] = m.groupdict() return app(environ, start_response) @@ -396,7 +462,7 @@ def __call__(self, environ, start_response): allowed = dict.fromkeys(allows).keys() allowed.sort() resp = exc.HTTPMethodNotAllowed( - headers={'Allowed': ', '.join(allowed)}) + headers={'Allow': ', '.join(allowed)}) else: resp = exc.HTTPNotFound() return resp(environ, start_response) diff --git a/indra/lib/python/indra/util/named_query.py b/indra/lib/python/indra/util/named_query.py index 59c37a7218ccab5eb05e7ee91d2168b44f21862d..693b483f792f485d206dbac812865a6fef3d0170 100644 --- a/indra/lib/python/indra/util/named_query.py +++ b/indra/lib/python/indra/util/named_query.py @@ -48,9 +48,8 @@ from indra.base import config DEBUG = False - -NQ_FILE_SUFFIX = config.get('named-query-file-suffix', '.nq') -NQ_FILE_SUFFIX_LEN = len(NQ_FILE_SUFFIX) +NQ_FILE_SUFFIX = None +NQ_FILE_SUFFIX_LEN = None _g_named_manager = None @@ -60,6 +59,11 @@ def _init_g_named_manager(sql_dir = None): This function is intended entirely for testing purposes, because it's tricky to control the config from inside a test.""" + global NQ_FILE_SUFFIX + NQ_FILE_SUFFIX = config.get('named-query-file-suffix', '.nq') + global NQ_FILE_SUFFIX_LEN + NQ_FILE_SUFFIX_LEN = len(NQ_FILE_SUFFIX) + if sql_dir is None: sql_dir = config.get('named-query-base-dir') @@ -73,11 +77,11 @@ def _init_g_named_manager(sql_dir = None): _g_named_manager = NamedQueryManager( os.path.abspath(os.path.realpath(sql_dir))) -def get(name): +def get(name, schema = None): "Get the named query object to be used to perform queries" if _g_named_manager is None: _init_g_named_manager() - return _g_named_manager.get(name) + return _g_named_manager.get(name).for_schema(schema) def sql(connection, name, params): # use module-global NamedQuery object to perform default substitution @@ -330,6 +334,8 @@ def return_as_map(self): def for_schema(self, db_name): "Look trough the alternates and return the correct query" + if db_name is None: + return self try: return self._alternative[db_name] except KeyError, e: @@ -359,10 +365,10 @@ def run(self, connection, params, expect_rows = None, use_dictcursor = True): if DEBUG: print "SQL:", self.sql(connection, params) rows = cursor.execute(full_query, params) - + # *NOTE: the expect_rows argument is a very cheesy way to get some # validation on the result set. If you want to add more expectation - # logic, do something more object-oriented and flexible. Or use an ORM. + # logic, do something more object-oriented and flexible. Or use an ORM. if(self._return_as_map): expect_rows = 1 if expect_rows is not None and rows != expect_rows: diff --git a/indra/llcharacter/llcharacter.h b/indra/llcharacter/llcharacter.h index 66c4c188ed8e4f0bb838d88e383340a3999595dd..cd8f9e63fb966d1c57c20f472470b495e36bc855 100644 --- a/indra/llcharacter/llcharacter.h +++ b/indra/llcharacter/llcharacter.h @@ -169,7 +169,7 @@ class LLCharacter void updateMotions(e_update_t update_type); LLAnimPauseRequest requestPause(); - BOOL areAnimationsPaused() { return mMotionController.isPaused(); } + BOOL areAnimationsPaused() const { return mMotionController.isPaused(); } void setAnimTimeFactor(F32 factor) { mMotionController.setTimeFactor(factor); } void setTimeStep(F32 time_step) { mMotionController.setTimeStep(time_step); } @@ -231,9 +231,9 @@ class LLCharacter return (mCurIterator++)->second; } - LLVisualParam* getVisualParam(S32 id) + LLVisualParam* getVisualParam(S32 id) const { - VisualParamIndexMap_t::iterator iter = mVisualParamIndexMap.find(id); + VisualParamIndexMap_t::const_iterator iter = mVisualParamIndexMap.find(id); return (iter == mVisualParamIndexMap.end()) ? 0 : iter->second; } S32 getVisualParamID(LLVisualParam *id) @@ -246,11 +246,11 @@ class LLCharacter } return 0; } - S32 getVisualParamCount() { return (S32)mVisualParamIndexMap.size(); } + S32 getVisualParamCount() const { return (S32)mVisualParamIndexMap.size(); } LLVisualParam* getVisualParam(const char *name); - ESex getSex() { return mSex; } + ESex getSex() const { return mSex; } void setSex( ESex sex ) { mSex = sex; } U32 getAppearanceSerialNum() const { return mAppearanceSerialNum; } diff --git a/indra/llcharacter/lleditingmotion.cpp b/indra/llcharacter/lleditingmotion.cpp index 6907df82d448040ab00ada24e1d8590ab8a2d7cc..381d19e6142c47698e6896386a9abeb33cf6777f 100644 --- a/indra/llcharacter/lleditingmotion.cpp +++ b/indra/llcharacter/lleditingmotion.cpp @@ -187,14 +187,6 @@ BOOL LLEditingMotion::onUpdate(F32 time, U8* joint_mask) } focus_pt += mCharacter->getCharacterPosition(); - if (!llfinite(focus_pt.magVecSquared())) - { - LLVector3 tmp = mCharacter->getCharacterPosition() ; - LL_WARNS_ONCE("Animation") << "Non finite focus point in editing motion. focus point: " << focus_pt << " and character position: " << - tmp << " and pointAtPt: " << pointAtPt << - " - ignoring anim" << LL_ENDL; - return FALSE; - } // propagate joint positions to kinematic chain mParentJoint.setPosition( mParentState->getJoint()->getWorldPosition() ); diff --git a/indra/llcharacter/llmotioncontroller.cpp b/indra/llcharacter/llmotioncontroller.cpp index 006d2b5f62dc90081e67336ab7f225107f191569..bb9625b2bd5451c4b2ca83cb1b1a0d7a09188704 100644 --- a/indra/llcharacter/llmotioncontroller.cpp +++ b/indra/llcharacter/llmotioncontroller.cpp @@ -1019,9 +1019,9 @@ bool LLMotionController::isMotionLoading(LLMotion* motion) //----------------------------------------------------------------------------- // findMotion() //----------------------------------------------------------------------------- -LLMotion* LLMotionController::findMotion(const LLUUID& id) +LLMotion* LLMotionController::findMotion(const LLUUID& id) const { - motion_map_t::iterator iter = mAllMotions.find(id); + motion_map_t::const_iterator iter = mAllMotions.find(id); if(iter == mAllMotions.end()) { return NULL; diff --git a/indra/llcharacter/llmotioncontroller.h b/indra/llcharacter/llmotioncontroller.h index 9271483a252bec9aeeacda2110744aeb2aca95f5..5c3ec223cb0e1484c2598eee992a10fd2d0f2bdc 100644 --- a/indra/llcharacter/llmotioncontroller.h +++ b/indra/llcharacter/llmotioncontroller.h @@ -153,12 +153,12 @@ class LLMotionController // pause and continue all motions void pauseAllMotions(); void unpauseAllMotions(); - BOOL isPaused() { return mPaused; } + BOOL isPaused() const { return mPaused; } void setTimeStep(F32 step); void setTimeFactor(F32 time_factor); - F32 getTimeFactor() { return mTimeFactor; } + F32 getTimeFactor() const { return mTimeFactor; } motion_list_t& getActiveMotions() { return mActiveMotions; } @@ -167,7 +167,7 @@ class LLMotionController //protected: bool isMotionActive( LLMotion *motion ); bool isMotionLoading( LLMotion *motion ); - LLMotion *findMotion( const LLUUID& id ); + LLMotion *findMotion( const LLUUID& id ) const; protected: // internal operations act on motion instances directly diff --git a/indra/llcharacter/llvisualparam.h b/indra/llcharacter/llvisualparam.h index 3a0c1bbc77168c0cd4fffd8a9c91990cd7a6f3a1..25c41e8509ea39f614a8f8ab1157b32d17177fa7 100644 --- a/indra/llcharacter/llvisualparam.h +++ b/indra/llcharacter/llvisualparam.h @@ -112,7 +112,7 @@ class LLVisualParam virtual void stopAnimating(BOOL set_by_user); // Interface methods - S32 getID() { return mID; } + S32 getID() const { return mID; } void setID(S32 id) { llassert(!mInfo); mID = id; } const std::string& getName() const { return mInfo->mName; } @@ -124,22 +124,22 @@ class LLVisualParam void setMaxDisplayName(const std::string& s) { mInfo->mMaxName = s; } void setMinDisplayName(const std::string& s) { mInfo->mMinName = s; } - EVisualParamGroup getGroup() { return mInfo->mGroup; } - F32 getMinWeight() { return mInfo->mMinWeight; } - F32 getMaxWeight() { return mInfo->mMaxWeight; } - F32 getDefaultWeight() { return mInfo->mDefaultWeight; } - ESex getSex() { return mInfo->mSex; } + EVisualParamGroup getGroup() const { return mInfo->mGroup; } + F32 getMinWeight() const { return mInfo->mMinWeight; } + F32 getMaxWeight() const { return mInfo->mMaxWeight; } + F32 getDefaultWeight() const { return mInfo->mDefaultWeight; } + ESex getSex() const { return mInfo->mSex; } - F32 getWeight() { return mIsAnimating ? mTargetWeight : mCurWeight; } - F32 getCurrentWeight() { return mCurWeight; } - F32 getLastWeight() { return mLastWeight; } - BOOL isAnimating() { return mIsAnimating; } + F32 getWeight() const { return mIsAnimating ? mTargetWeight : mCurWeight; } + F32 getCurrentWeight() const { return mCurWeight; } + F32 getLastWeight() const { return mLastWeight; } + BOOL isAnimating() const { return mIsAnimating; } LLVisualParam* getNextParam() { return mNext; } void setNextParam( LLVisualParam *next ); virtual void setAnimating(BOOL is_animating) { mIsAnimating = is_animating; } - BOOL getAnimating() { return mIsAnimating; } + BOOL getAnimating() const { return mIsAnimating; } protected: F32 mCurWeight; // current weight diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt index 88acb70b8a050a37cd6a9424806ba93aa3ccc0b2..ecb6c283dbfb67366ac1279003afde21cba3bf69 100644 --- a/indra/llcommon/CMakeLists.txt +++ b/indra/llcommon/CMakeLists.txt @@ -20,6 +20,8 @@ include_directories( # ${LLCOMMON_LIBRARIES}) set(llcommon_SOURCE_FILES + llallocator.cpp + llallocator_heap_profile.cpp llapp.cpp llapr.cpp llaprsockstream.cpp @@ -47,15 +49,16 @@ set(llcommon_SOURCE_FILES llformat.cpp llframetimer.cpp llheartbeat.cpp - llindraconfigfile.cpp llliveappconfig.cpp lllivefile.cpp lllog.cpp llmd5.cpp llmemory.cpp llmemorystream.cpp + llmemtype.cpp llmetrics.cpp llmortician.cpp + llptrto.cpp llprocessor.cpp llqueuedthread.cpp llrand.cpp @@ -67,6 +70,7 @@ set(llcommon_SOURCE_FILES llsdutil.cpp llsecondlifeurls.cpp llstat.cpp + llstacktrace.cpp llstreamtools.cpp llstring.cpp llstringtable.cpp @@ -93,6 +97,8 @@ set(llcommon_HEADER_FILES indra_constants.h linden_common.h linked_lists.h + llallocator.h + llallocator_heap_profile.h llagentconstants.h llapp.h llapr.h @@ -115,7 +121,9 @@ set(llcommon_HEADER_FILES lldate.h lldefs.h lldependencies.h + lldeleteutils.h lldepthstack.h + lldictionary.h lldlinked.h lldoubledispatch.h lldqueueptr.h @@ -142,7 +150,7 @@ set(llcommon_HEADER_FILES llheartbeat.h llhttpstatuscodes.h llindexedqueue.h - llindraconfigfile.h + llinstancetracker.h llinstancetracker.h llkeythrottle.h lllazy.h @@ -183,6 +191,7 @@ set(llcommon_HEADER_FILES llskiplist.h llskipmap.h llstack.h + llstacktrace.h llstat.h llstatenums.h llstl.h @@ -240,7 +249,15 @@ target_link_libraries( ${BOOST_REGEX_LIBRARY} ) -ADD_BUILD_TEST(llaprsockstream llcommon) -ADD_BUILD_TEST(lllazy llcommon) -ADD_BUILD_TEST(lleventfilter llcommon) -ADD_BUILD_TEST(lleventcoro llcommon) +include(LLAddBuildTest) +SET(llcommon_TEST_SOURCE_FILES + # WARNING: Please don't write tests against LLCommon or LLMath until this issue is resolved: https://jira.lindenlab.com/jira/browse/DEV-29456 + # lllazy.cpp + ) +LL_ADD_PROJECT_UNIT_TESTS(llcommon "${llcommon_TEST_SOURCE_FILES}") + +# *TODO - reenable these once tcmalloc libs no longer break the build. +#ADD_BUILD_TEST(llallocator llcommon) +#ADD_BUILD_TEST(llallocator_heap_profile llcommon) +#ADD_BUILD_TEST(llmemtype llcommon) + diff --git a/indra/llcommon/llallocator.cpp b/indra/llcommon/llallocator.cpp new file mode 100644 index 0000000000000000000000000000000000000000..eed9d1e7db47bce5282a65f3734a1f81634ef052 --- /dev/null +++ b/indra/llcommon/llallocator.cpp @@ -0,0 +1,140 @@ +/** + * @file llallocator.cpp + * @brief Implementation of the LLAllocator class. + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + * + * Copyright (c) 2009-2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#include "linden_common.h" +#include "llallocator.h" + +#if LL_USE_TCMALLOC + +#include "google/heap-profiler.h" +#include "google/commandlineflags_public.h" + +DECLARE_bool(heap_profile_use_stack_trace); +//DECLARE_double(tcmalloc_release_rate); + +// static +void LLAllocator::pushMemType(S32 type) +{ + if(isProfiling()) + { + PushMemType(type); + } +} + +// static +S32 LLAllocator::popMemType() +{ + if (isProfiling()) + { + return PopMemType(); + } + else + { + return -1; + } +} + +void LLAllocator::setProfilingEnabled(bool should_enable) +{ + // NULL disables dumping to disk + static char const * const PREFIX = NULL; + if(should_enable) + { + HeapProfilerSetUseStackTrace(false); + HeapProfilerStart(PREFIX); + } + else + { + HeapProfilerStop(); + } +} + +// static +bool LLAllocator::isProfiling() +{ + return IsHeapProfilerRunning(); +} + +std::string LLAllocator::getRawProfile() +{ + // *TODO - fix google-perftools to accept an buffer to avoid this + // malloc-copy-free cycle. + char * buffer = GetHeapProfile(); + std::string ret = buffer; + free(buffer); + return ret; +} + +#else // LL_USE_TCMALLOC + +// +// stub implementations for when tcmalloc is disabled +// + +// static +void LLAllocator::pushMemType(S32 type) +{ +} + +// static +S32 LLAllocator::popMemType() +{ + return -1; +} + +void LLAllocator::setProfilingEnabled(bool should_enable) +{ +} + +// static +bool LLAllocator::isProfiling() +{ + return false; +} + +std::string LLAllocator::getRawProfile() +{ + return std::string(); +} + +#endif // LL_USE_TCMALLOC + +LLAllocatorHeapProfile const & LLAllocator::getProfile() +{ + mProf.mLines.clear(); + + // *TODO - avoid making all these extra copies of things... + std::string prof_text = getRawProfile(); + //std::cout << prof_text << std::endl; + mProf.parse(prof_text); + return mProf; +} diff --git a/indra/llcommon/llallocator.h b/indra/llcommon/llallocator.h new file mode 100644 index 0000000000000000000000000000000000000000..2b70fee0b8f9d6dd94b7b42c0aac0364305703f3 --- /dev/null +++ b/indra/llcommon/llallocator.h @@ -0,0 +1,63 @@ +/** + * @file llallocator.h + * @brief Declaration of the LLAllocator class. + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + * + * Copyright (c) 2009-2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#ifndef LL_LLALLOCATOR_H +#define LL_LLALLOCATOR_H + +#include <string> + +#include "llmemtype.h" +#include "llallocator_heap_profile.h" + +class LLAllocator { + friend class LLMemoryView; + friend class LLMemType; + +private: + static void pushMemType(S32 type); + static S32 popMemType(); + +public: + void setProfilingEnabled(bool should_enable); + + static bool isProfiling(); + + LLAllocatorHeapProfile const & getProfile(); + +private: + std::string getRawProfile(); + +private: + LLAllocatorHeapProfile mProf; +}; + +#endif // LL_LLALLOCATOR_H diff --git a/indra/llcommon/llallocator_heap_profile.cpp b/indra/llcommon/llallocator_heap_profile.cpp new file mode 100644 index 0000000000000000000000000000000000000000..d82ee9ed81bc25c43fea886a95abe558bd19d07e --- /dev/null +++ b/indra/llcommon/llallocator_heap_profile.cpp @@ -0,0 +1,149 @@ +/** + * @file llallocator_heap_profile.cpp + * @brief Implementation of the parser for tcmalloc heap profile data. + * @author Brad Kittenbrink + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + * + * Copyright (c) 2009-2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#include "linden_common.h" +#include "llallocator_heap_profile.h" + +#if LL_MSVC +// disable warning about boost::lexical_cast returning uninitialized data +// when it fails to parse the string +#pragma warning (disable:4701) +#endif + +#include <boost/algorithm/string/split.hpp> +#include <boost/bind.hpp> +#include <boost/lexical_cast.hpp> +#include <boost/range/iterator_range.hpp> + +static const std::string HEAP_PROFILE_MAGIC_STR = "heap profile:"; + +static bool is_separator(char c) +{ + return isspace(c) || c == '[' || c == ']' || c == ':'; +} + +void LLAllocatorHeapProfile::parse(std::string const & prof_text) +{ + // a typedef for handling a token in the string buffer + // it's a begin/end pair of string::const_iterators + typedef boost::iterator_range<std::string::const_iterator> range_t; + + mLines.clear(); + + if(prof_text.compare(0, HEAP_PROFILE_MAGIC_STR.length(), HEAP_PROFILE_MAGIC_STR) != 0) + { + // *TODO - determine if there should be some better error state than + // mLines being empty. -brad + llwarns << "invalid heap profile data passed into parser." << llendl; + return; + } + + std::vector< range_t > prof_lines; + + std::string::const_iterator prof_begin = prof_text.begin() + HEAP_PROFILE_MAGIC_STR.length(); + + range_t prof_range(prof_begin, prof_text.end()); + boost::algorithm::split(prof_lines, + prof_range, + boost::bind(std::equal_to<llwchar>(), '\n', _1)); + + std::vector< range_t >::const_iterator i; + for(i = prof_lines.begin(); i != prof_lines.end() && !i->empty(); ++i) + { + range_t const & line_text = *i; + + std::vector<range_t> line_elems; + + boost::algorithm::split(line_elems, + line_text, + is_separator); + + std::vector< range_t >::iterator j; + j = line_elems.begin(); + + while(j != line_elems.end() && j->empty()) { ++j; } // skip any separator tokens + llassert_always(j != line_elems.end()); + U32 live_count = boost::lexical_cast<U32>(*j); + ++j; + + while(j != line_elems.end() && j->empty()) { ++j; } // skip any separator tokens + llassert_always(j != line_elems.end()); + U64 live_size = boost::lexical_cast<U64>(*j); + ++j; + + while(j != line_elems.end() && j->empty()) { ++j; } // skip any separator tokens + llassert_always(j != line_elems.end()); + U32 tot_count = boost::lexical_cast<U32>(*j); + ++j; + + while(j != line_elems.end() && j->empty()) { ++j; } // skip any separator tokens + llassert_always(j != line_elems.end()); + U64 tot_size = boost::lexical_cast<U64>(*j); + ++j; + + while(j != line_elems.end() && j->empty()) { ++j; } // skip any separator tokens + llassert_always(j != line_elems.end()); + ++j; // skip the '@' + + mLines.push_back(line(live_count, live_size, tot_count, tot_size)); + line & current_line = mLines.back(); + + for(; j != line_elems.end(); ++j) + { + if(!j->empty()) { + U32 marker = boost::lexical_cast<U32>(*j); + current_line.mTrace.push_back(marker); + } + } + } + + // *TODO - parse MAPPED_LIBRARIES section here if we're ever interested in it +} + +void LLAllocatorHeapProfile::dump(std::ostream & out) const +{ + lines_t::const_iterator i; + for(i = mLines.begin(); i != mLines.end(); ++i) + { + out << i->mLiveCount << ": " << i->mLiveSize << '[' << i->mTotalCount << ": " << i->mTotalSize << "] @"; + + stack_trace::const_iterator j; + for(j = i->mTrace.begin(); j != i->mTrace.end(); ++j) + { + out << ' ' << *j; + } + out << '\n'; + } + out.flush(); +} + diff --git a/indra/llcommon/llallocator_heap_profile.h b/indra/llcommon/llallocator_heap_profile.h new file mode 100644 index 0000000000000000000000000000000000000000..19758df5441b6943a915c5763b3517219ee178c0 --- /dev/null +++ b/indra/llcommon/llallocator_heap_profile.h @@ -0,0 +1,77 @@ +/** + * @file llallocator_heap_profile.h + * @brief Declaration of the parser for tcmalloc heap profile data. + * @author Brad Kittenbrink + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + * + * Copyright (c) 2009-2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#ifndef LL_LLALLOCATOR_HEAP_PROFILE_H +#define LL_LLALLOCATOR_HEAP_PROFILE_H + +#include "stdtypes.h" + +#include <map> +#include <vector> + +class LLAllocatorHeapProfile +{ +public: + typedef int stack_marker; + + typedef std::vector<stack_marker> stack_trace; + + struct line { + line(U32 live_count, U64 live_size, U32 tot_count, U64 tot_size) : + mLiveSize(live_size), + mTotalSize(tot_size), + mLiveCount(live_count), + mTotalCount(tot_count) + { + } + U64 mLiveSize, mTotalSize; + U32 mLiveCount, mTotalCount; + stack_trace mTrace; + }; + + typedef std::vector<line> lines_t; + + LLAllocatorHeapProfile() + { + } + + void parse(std::string const & prof_text); + + void dump(std::ostream & out) const; + +public: + lines_t mLines; +}; + + +#endif // LL_LLALLOCATOR_HEAP_PROFILE_H diff --git a/indra/llcommon/llapp.cpp b/indra/llcommon/llapp.cpp index 199315f34e81c543c123be41c82fb96ac8a957f7..968b92d1e7ad94b5f21ee45665cf9e32ba9ff073 100644 --- a/indra/llcommon/llapp.cpp +++ b/indra/llcommon/llapp.cpp @@ -38,7 +38,9 @@ #include "llerrorcontrol.h" #include "llerrorthread.h" #include "llframetimer.h" +#include "lllivefile.h" #include "llmemory.h" +#include "llstl.h" // for DeletePointer() #include "lltimer.h" // @@ -91,7 +93,6 @@ LLAppChildCallback LLApp::sDefaultChildCallback = NULL; LLApp::LLApp() : mThreadErrorp(NULL) { commonCtor(); - startErrorThread(); } void LLApp::commonCtor() @@ -106,9 +107,6 @@ void LLApp::commonCtor() sSigChildCount = new LLAtomicU32(0); #endif - // Setup error handling - setupErrorHandling(); - // initialize the options structure. We need to make this an array // because the structured data will not auto-allocate if we // reference an invalid location with the [] operator. @@ -141,6 +139,11 @@ LLApp::~LLApp() delete sSigChildCount; sSigChildCount = NULL; #endif + + // reclaim live file memory + std::for_each(mLiveFiles.begin(), mLiveFiles.end(), DeletePointer()); + mLiveFiles.clear(); + setStopped(); // HACK: wait for the error thread to clean itself ms_sleep(20); @@ -214,6 +217,15 @@ bool LLApp::parseCommandOptions(int argc, char** argv) return true; } + +void LLApp::manageLiveFile(LLLiveFile* livefile) +{ + if(!livefile) return; + livefile->checkAndReload(); + livefile->addToEventTimer(); + mLiveFiles.push_back(livefile); +} + bool LLApp::setOptionData(OptionPriority level, LLSD data) { if((level < 0) @@ -275,6 +287,7 @@ void LLApp::setupErrorHandling() #endif + startErrorThread(); } void LLApp::startErrorThread() @@ -283,10 +296,13 @@ void LLApp::startErrorThread() // Start the error handling thread, which is responsible for taking action // when the app goes into the APP_STATUS_ERROR state // - llinfos << "Starting error thread" << llendl; - mThreadErrorp = new LLErrorThread(); - mThreadErrorp->setUserData((void *) this); - mThreadErrorp->start(); + if(!mThreadErrorp) + { + llinfos << "Starting error thread" << llendl; + mThreadErrorp = new LLErrorThread(); + mThreadErrorp->setUserData((void *) this); + mThreadErrorp->start(); + } } void LLApp::setErrorHandler(LLAppErrorHandler handler) diff --git a/indra/llcommon/llapp.h b/indra/llcommon/llapp.h index f8a593c33d7f87ad12d427a0c327434daf208c44..cc60ba0b80984a6776199f0a7dcb39dabe05fd7f 100644 --- a/indra/llcommon/llapp.h +++ b/indra/llcommon/llapp.h @@ -40,8 +40,7 @@ // Forward declarations class LLErrorThread; -class LLApp; - +class LLLiveFile; typedef void (*LLAppErrorHandler)(); typedef void (*LLAppChildCallback)(int pid, bool exited, int status); @@ -127,6 +126,19 @@ class LLApp */ bool parseCommandOptions(int argc, char** argv); + /** + * @brief Keep track of live files automatically. + * + * *TODO: it currently uses the <code>addToEventTimer()</code> API + * instead of the runner. I should probalby use the runner. + * + * *NOTE: DO NOT add the livefile instance to any kind of check loop. + * + * @param livefile A valid instance of an LLLiveFile. This LLApp + * instance will delete the livefile instance. + */ + void manageLiveFile(LLLiveFile* livefile); + /** * @brief Set the options at the specified priority. * @@ -194,11 +206,26 @@ class LLApp #endif static int getPid(); - // - // Error handling methods - // + /** @name Error handling methods */ + //@{ + /** + * @brief Do our generic platform-specific error-handling setup -- + * signals on unix, structured exceptions on windows. + * + * DO call this method if your app will either spawn children or be + * spawned by a launcher. + * Call just after app object construction. + * (Otherwise your app will crash when getting signals, + * and will not core dump.) + * + * DO NOT call this method if your application has specialized + * error handling code. + */ + void setupErrorHandling(); + void setErrorHandler(LLAppErrorHandler handler); void setSyncErrorHandler(LLAppErrorHandler handler); + //@} #if !LL_WINDOWS // @@ -214,8 +241,9 @@ class LLApp void setDefaultChildCallback(LLAppChildCallback callback); // Fork and do the proper signal handling/error handling mojo - // WARNING: You need to make sure your signal handling callback is correct after - // you fork, because not all threads are duplicated when you fork! + // *NOTE: You need to make sure your signal handling callback is + // correct after you fork, because not all threads are duplicated + // when you fork! pid_t fork(); #endif @@ -255,7 +283,6 @@ class LLApp private: void startErrorThread(); - void setupErrorHandling(); // Do platform-specific error-handling setup (signals, structured exceptions) static void runErrorHandler(); // run shortly after we detect an error, ran in the relatively robust context of the LLErrorThread - preferred. static void runSyncErrorHandler(); // run IMMEDIATELY when we get an error, ran in the context of the faulting thread. @@ -278,6 +305,8 @@ class LLApp // The application options. LLSD mOptions; + // The live files for this application + std::vector<LLLiveFile*> mLiveFiles; //@} private: diff --git a/indra/llcommon/llapr.cpp b/indra/llcommon/llapr.cpp index 82530b14891efccd263a0d4d71fbc0878074d007..669afc53303121b99d9bec164ffc7f8d5f57bdc7 100644 --- a/indra/llcommon/llapr.cpp +++ b/indra/llcommon/llapr.cpp @@ -38,6 +38,7 @@ apr_pool_t *gAPRPoolp = NULL; // Global APR memory pool LLVolatileAPRPool *LLAPRFile::sAPRFilePoolp = NULL ; //global volatile APR memory pool. apr_thread_mutex_t *gLogMutexp = NULL; +apr_thread_mutex_t *gCallStacksLogMutexp = NULL; const S32 FULL_VOLATILE_APR_POOL = 1024 ; //number of references to LLVolatileAPRPool @@ -51,6 +52,7 @@ void ll_init_apr() // Initialize the logging mutex apr_thread_mutex_create(&gLogMutexp, APR_THREAD_MUTEX_UNNESTED, gAPRPoolp); + apr_thread_mutex_create(&gCallStacksLogMutexp, APR_THREAD_MUTEX_UNNESTED, gAPRPoolp); } if(!LLAPRFile::sAPRFilePoolp) @@ -72,6 +74,14 @@ void ll_cleanup_apr() apr_thread_mutex_destroy(gLogMutexp); gLogMutexp = NULL; } + if (gCallStacksLogMutexp) + { + // Clean up the logging mutex + + // All other threads NEED to be done before we clean up APR, so this is okay. + apr_thread_mutex_destroy(gCallStacksLogMutexp); + gCallStacksLogMutexp = NULL; + } if (gAPRPoolp) { apr_pool_destroy(gAPRPoolp); diff --git a/indra/llcommon/llapr.h b/indra/llcommon/llapr.h index 5bd4b8a0f0bc22da2bab2081641621467437eb18..e13b3734f9ae9c419a11447514e47bc3aa180144 100644 --- a/indra/llcommon/llapr.h +++ b/indra/llcommon/llapr.h @@ -49,6 +49,7 @@ #include "llstring.h" extern LL_COMMON_API apr_thread_mutex_t* gLogMutexp; +extern apr_thread_mutex_t* gCallStacksLogMutexp; /** * @brief initialize the common apr constructs -- apr itself, the diff --git a/indra/llcommon/llassettype.cpp b/indra/llcommon/llassettype.cpp index fc2ac9dcbcb84d7daf098d59b5d316d9fc058c46..6715b6722d33f3769ad8b10b26685766a3d081a5 100644 --- a/indra/llcommon/llassettype.cpp +++ b/indra/llcommon/llassettype.cpp @@ -33,148 +33,112 @@ #include "linden_common.h" #include "llassettype.h" +#include "lldictionary.h" +#include "llmemory.h" +#include "llsingleton.h" -#include "llstring.h" -#include "lltimer.h" - -// I added lookups for exact text of asset type enums in addition to the ones below, so shoot me. -Steve +///---------------------------------------------------------------------------- +/// Class LLAssetType +///---------------------------------------------------------------------------- +struct AssetEntry : public LLDictionaryEntry +{ + AssetEntry(const char *desc_name, + const char *type_name, // 8 character limit! + const char *human_name, + const char *category_name, // used by llinventorymodel when creating new categories + EDragAndDropType dad_type); + + // limited to 8 characters + const char *mTypeName; + // human readable form. Put as many printable characters you want in each one. + // (c.f. llinventory.cpp INVENTORY_TYPE_HUMAN_NAMES). + const char *mHumanName; + const char *mCategoryName; + EDragAndDropType mDadType; +}; -struct asset_info_t +class LLAssetDictionary : public LLSingleton<LLAssetDictionary>, + public LLDictionary<LLAssetType::EType, AssetEntry> { - LLAssetType::EType type; - const char* desc; +public: + LLAssetDictionary(); }; -asset_info_t asset_types[] = +LLAssetDictionary::LLAssetDictionary() { - { LLAssetType::AT_TEXTURE, "TEXTURE" }, - { LLAssetType::AT_SOUND, "SOUND" }, - { LLAssetType::AT_CALLINGCARD, "CALLINGCARD" }, - { LLAssetType::AT_LANDMARK, "LANDMARK" }, - { LLAssetType::AT_SCRIPT, "SCRIPT" }, - { LLAssetType::AT_CLOTHING, "CLOTHING" }, - { LLAssetType::AT_OBJECT, "OBJECT" }, - { LLAssetType::AT_NOTECARD, "NOTECARD" }, - { LLAssetType::AT_CATEGORY, "CATEGORY" }, - { LLAssetType::AT_ROOT_CATEGORY, "ROOT_CATEGORY" }, - { LLAssetType::AT_LSL_TEXT, "LSL_TEXT" }, - { LLAssetType::AT_LSL_BYTECODE, "LSL_BYTECODE" }, - { LLAssetType::AT_TEXTURE_TGA, "TEXTURE_TGA" }, - { LLAssetType::AT_BODYPART, "BODYPART" }, - { LLAssetType::AT_TRASH, "TRASH" }, - { LLAssetType::AT_SNAPSHOT_CATEGORY, "SNAPSHOT_CATEGORY" }, - { LLAssetType::AT_LOST_AND_FOUND, "LOST_AND_FOUND" }, - { LLAssetType::AT_SOUND_WAV, "SOUND_WAV" }, - { LLAssetType::AT_IMAGE_TGA, "IMAGE_TGA" }, - { LLAssetType::AT_IMAGE_JPEG, "IMAGE_JPEG" }, - { LLAssetType::AT_ANIMATION, "ANIMATION" }, - { LLAssetType::AT_GESTURE, "GESTURE" }, - { LLAssetType::AT_SIMSTATE, "SIMSTATE" }, - { LLAssetType::AT_FAVORITE, "FAVORITE" }, - { LLAssetType::AT_NONE, "NONE" }, + addEntry(LLAssetType::AT_TEXTURE, new AssetEntry("TEXTURE", "texture", "texture", "Textures", DAD_TEXTURE)); + addEntry(LLAssetType::AT_SOUND, new AssetEntry("SOUND", "sound", "sound", "Sounds", DAD_SOUND)); + addEntry(LLAssetType::AT_CALLINGCARD, new AssetEntry("CALLINGCARD", "callcard", "calling card", "Calling Cards", DAD_CALLINGCARD)); + addEntry(LLAssetType::AT_LANDMARK, new AssetEntry("LANDMARK", "landmark", "landmark", "Landmarks", DAD_LANDMARK)); + addEntry(LLAssetType::AT_SCRIPT, new AssetEntry("SCRIPT", "script", "legacy script", "Scripts", DAD_NONE)); + addEntry(LLAssetType::AT_CLOTHING, new AssetEntry("CLOTHING", "clothing", "clothing", "Clothing", DAD_CLOTHING)); + addEntry(LLAssetType::AT_OBJECT, new AssetEntry("OBJECT", "object", "object", "Objects", DAD_OBJECT)); + addEntry(LLAssetType::AT_NOTECARD, new AssetEntry("NOTECARD", "notecard", "note card", "Notecards", DAD_NOTECARD)); + addEntry(LLAssetType::AT_CATEGORY, new AssetEntry("CATEGORY", "category", "folder", "New Folder", DAD_CATEGORY)); + addEntry(LLAssetType::AT_ROOT_CATEGORY, new AssetEntry("ROOT_CATEGORY", "root", "root", "Inventory", DAD_ROOT_CATEGORY)); + addEntry(LLAssetType::AT_LSL_TEXT, new AssetEntry("LSL_TEXT", "lsltext", "lsl2 script", "Scripts", DAD_SCRIPT)); + addEntry(LLAssetType::AT_LSL_BYTECODE, new AssetEntry("LSL_BYTECODE", "lslbyte", "lsl bytecode", "Scripts", DAD_NONE)); + addEntry(LLAssetType::AT_TEXTURE_TGA, new AssetEntry("TEXTURE_TGA", "txtr_tga", "tga texture", "Uncompressed Images", DAD_NONE)); + addEntry(LLAssetType::AT_BODYPART, new AssetEntry("BODYPART", "bodypart", "body part", "Body Parts", DAD_BODYPART)); + addEntry(LLAssetType::AT_TRASH, new AssetEntry("TRASH", "trash", "trash", "Trash", DAD_NONE)); + addEntry(LLAssetType::AT_SNAPSHOT_CATEGORY, new AssetEntry("SNAPSHOT_CATEGORY", "snapshot", "snapshot", "Photo Album", DAD_NONE)); + addEntry(LLAssetType::AT_LOST_AND_FOUND, new AssetEntry("LOST_AND_FOUND", "lstndfnd", "lost and found", "Lost And Found", DAD_NONE)); + addEntry(LLAssetType::AT_SOUND_WAV, new AssetEntry("SOUND_WAV", "snd_wav", "sound", "Uncompressed Sounds", DAD_NONE)); + addEntry(LLAssetType::AT_IMAGE_TGA, new AssetEntry("IMAGE_TGA", "img_tga", "targa image", "Uncompressed Images", DAD_NONE)); + addEntry(LLAssetType::AT_IMAGE_JPEG, new AssetEntry("IMAGE_JPEG", "jpeg", "jpeg image", "Uncompressed Images", DAD_NONE)); + addEntry(LLAssetType::AT_ANIMATION, new AssetEntry("ANIMATION", "animatn", "animation", "Animations", DAD_ANIMATION)); + addEntry(LLAssetType::AT_GESTURE, new AssetEntry("GESTURE", "gesture", "gesture", "Gestures", DAD_GESTURE)); + addEntry(LLAssetType::AT_SIMSTATE, new AssetEntry("SIMSTATE", "simstate", "simstate", "New Folder", DAD_NONE)); + addEntry(LLAssetType::AT_LINK, new AssetEntry("LINK", "link", "symbolic link", "New Folder", DAD_NONE)); + addEntry(LLAssetType::AT_FAVORITE, new AssetEntry("FAVORITE", "favorite", "favorite", "favorite", DAD_NONE)); + addEntry(LLAssetType::AT_NONE, new AssetEntry("NONE", "-1", NULL, "New Folder", DAD_NONE)); }; -LLAssetType::EType LLAssetType::getType(const std::string& sin) +AssetEntry::AssetEntry(const char *desc_name, + const char *type_name, + const char *human_name, + const char *category_name, + EDragAndDropType dad_type) : + LLDictionaryEntry(desc_name), + mTypeName(type_name), + mHumanName(human_name), + mCategoryName(category_name), + mDadType(dad_type) { - std::string s = sin; - LLStringUtil::toUpper(s); - for (S32 idx = 0; ;idx++) - { - asset_info_t* info = asset_types + idx; - if (info->type == LLAssetType::AT_NONE) - break; - if (s == info->desc) - return info->type; - } - return LLAssetType::AT_NONE; + llassert(strlen(mTypeName) <= 8); } -std::string LLAssetType::getDesc(LLAssetType::EType type) +// static +LLAssetType::EType LLAssetType::getType(const std::string& desc_name) { - for (S32 idx = 0; ;idx++) - { - asset_info_t* info = asset_types + idx; - if (type == info->type) - return info->desc; - if (info->type == LLAssetType::AT_NONE) - break; - } - return "BAD TYPE"; + std::string s = desc_name; + LLStringUtil::toUpper(s); + return LLAssetDictionary::getInstance()->lookup(s); } -//============================================================================ - -// The asset type names are limited to 8 characters. // static -const char* LLAssetType::mAssetTypeNames[LLAssetType::AT_COUNT] = -{ - "texture", - "sound", - "callcard", - "landmark", - "script", - "clothing", - "object", - "notecard", - "category", - "root", - "lsltext", - "lslbyte", - "txtr_tga",// Intentionally spelled this way. Limited to eight characters. - "bodypart", - "trash", - "snapshot", - "lstndfnd", - "snd_wav", - "img_tga", - "jpeg", - "animatn", - "gesture", - "simstate", - "favorite" -}; - -// This table is meant for decoding to human readable form. Put any -// and as many printable characters you want in each one. -// See also llinventory.cpp INVENTORY_TYPE_HUMAN_NAMES -const char* LLAssetType::mAssetTypeHumanNames[LLAssetType::AT_COUNT] = +const std::string &LLAssetType::getDesc(LLAssetType::EType asset_type) +{ + const AssetEntry *entry = LLAssetDictionary::getInstance()->lookup(asset_type); + if (entry) { - "texture", - "sound", - "calling card", - "landmark", - "legacy script", - "clothing", - "object", - "note card", - "folder", - "root", - "lsl2 script", - "lsl bytecode", - "tga texture", - "body part", - "trash", - "snapshot", - "lost and found", - "sound", - "targa image", - "jpeg image", - "animation", - "gesture", - "simstate" - "favorite" -}; - -///---------------------------------------------------------------------------- -/// class LLAssetType -///---------------------------------------------------------------------------- + return entry->mName; + } + else + { + static const std::string error_string = "BAD TYPE"; + return error_string; + } +} // static -const char* LLAssetType::lookup( LLAssetType::EType type ) +const char *LLAssetType::lookup(LLAssetType::EType asset_type) { - if( (type >= 0) && (type < AT_COUNT )) + const LLAssetDictionary *dict = LLAssetDictionary::getInstance(); + const AssetEntry *entry = dict->lookup(asset_type); + if (entry) { - return mAssetTypeNames[ S32( type ) ]; + return entry->mTypeName; } else { @@ -188,25 +152,30 @@ LLAssetType::EType LLAssetType::lookup( const char* name ) return lookup(ll_safe_string(name)); } -LLAssetType::EType LLAssetType::lookup( const std::string& name ) +LLAssetType::EType LLAssetType::lookup(const std::string& type_name) { - for( S32 i = 0; i < AT_COUNT; i++ ) + const LLAssetDictionary *dict = LLAssetDictionary::getInstance(); + for (LLAssetDictionary::const_iterator iter = dict->begin(); + iter != dict->end(); + iter++) { - if( name == mAssetTypeNames[i] ) + const AssetEntry *entry = iter->second; + if (type_name == entry->mTypeName) { - // match - return (EType)i; + return iter->first; } } return AT_NONE; } // static -const char* LLAssetType::lookupHumanReadable(LLAssetType::EType type) +const char *LLAssetType::lookupHumanReadable(LLAssetType::EType asset_type) { - if( (type >= 0) && (type < AT_COUNT )) + const LLAssetDictionary *dict = LLAssetDictionary::getInstance(); + const AssetEntry *entry = dict->lookup(asset_type); + if (entry) { - return mAssetTypeHumanNames[S32(type)]; + return entry->mHumanName; } else { @@ -220,44 +189,51 @@ LLAssetType::EType LLAssetType::lookupHumanReadable( const char* name ) return lookupHumanReadable(ll_safe_string(name)); } -LLAssetType::EType LLAssetType::lookupHumanReadable( const std::string& name ) +LLAssetType::EType LLAssetType::lookupHumanReadable(const std::string& readable_name) { - for( S32 i = 0; i < AT_COUNT; i++ ) + const LLAssetDictionary *dict = LLAssetDictionary::getInstance(); + for (LLAssetDictionary::const_iterator iter = dict->begin(); + iter != dict->end(); + iter++) { - if( name == mAssetTypeHumanNames[i] ) + const AssetEntry *entry = iter->second; + if (readable_name == entry->mHumanName) { - // match - return (EType)i; + return iter->first; } } return AT_NONE; } -EDragAndDropType LLAssetType::lookupDragAndDropType( EType asset ) +// static +const char *LLAssetType::lookupCategoryName(LLAssetType::EType asset_type) { - switch( asset ) + const LLAssetDictionary *dict = LLAssetDictionary::getInstance(); + const AssetEntry *entry = dict->lookup(asset_type); + if (entry) { - case AT_TEXTURE: return DAD_TEXTURE; - case AT_SOUND: return DAD_SOUND; - case AT_CALLINGCARD: return DAD_CALLINGCARD; - case AT_LANDMARK: return DAD_LANDMARK; - case AT_SCRIPT: return DAD_NONE; - case AT_CLOTHING: return DAD_CLOTHING; - case AT_OBJECT: return DAD_OBJECT; - case AT_NOTECARD: return DAD_NOTECARD; - case AT_CATEGORY: return DAD_CATEGORY; - case AT_ROOT_CATEGORY: return DAD_ROOT_CATEGORY; - case AT_LSL_TEXT: return DAD_SCRIPT; - case AT_BODYPART: return DAD_BODYPART; - case AT_ANIMATION: return DAD_ANIMATION; - case AT_GESTURE: return DAD_GESTURE; - default: return DAD_NONE; - }; + return entry->mCategoryName; + } + else + { + return "New Folder"; + } +} + +// static +EDragAndDropType LLAssetType::lookupDragAndDropType(EType asset_type) +{ + const LLAssetDictionary *dict = LLAssetDictionary::getInstance(); + const AssetEntry *entry = dict->lookup(asset_type); + if (entry) + return entry->mDadType; + else + return DAD_NONE; } // static. Generate a good default description -void LLAssetType::generateDescriptionFor(LLAssetType::EType type, - std::string& desc) +void LLAssetType::generateDescriptionFor(LLAssetType::EType asset_type, + std::string& description) { const S32 BUF_SIZE = 30; char time_str[BUF_SIZE]; /* Flawfinder: ignore */ @@ -265,6 +241,6 @@ void LLAssetType::generateDescriptionFor(LLAssetType::EType type, time(&now); memset(time_str, '\0', BUF_SIZE); strftime(time_str, BUF_SIZE - 1, "%Y-%m-%d %H:%M:%S ", localtime(&now)); - desc.assign(time_str); - desc.append(LLAssetType::lookupHumanReadable(type)); + description.assign(time_str); + description.append(LLAssetType::lookupHumanReadable(asset_type)); } diff --git a/indra/llcommon/llassettype.h b/indra/llcommon/llassettype.h index f9df6ddd92a79d05a40e0a71abb043b77ed2951b..2f5403168810cd3045587e15f90b01f955d5587e 100644 --- a/indra/llcommon/llassettype.h +++ b/indra/llcommon/llassettype.h @@ -30,152 +30,154 @@ * $/LicenseInfo$ */ -#ifndef LL_LLASSETTYPE -#define LL_LLASSETTYPE +#ifndef LL_LLASSETTYPE_H +#define LL_LLASSETTYPE_H #include <string> #include "stdenums.h" // for EDragAndDropType -class LL_COMMON_API LLAssetType +class LLAssetType { public: enum EType { - // Used for painting the faces of geometry. - // Stored in typical j2c stream format AT_TEXTURE = 0, + // Used for painting the faces of geometry. + // Stored in typical j2c stream format. - // Used to fill the aural spectrum. AT_SOUND = 1, + // Used to fill the aural spectrum. - // Links instant message access to the user on the card. eg, a - // card for yourself, a card for linden support, a card for - // the guy you were talking to in the coliseum. AT_CALLINGCARD = 2, + // Links instant message access to the user on the card. + // : E.G. A card for yourself, for linden support, for + // : the guy you were talking to in the coliseum. - // Links to places in the world with location and a screen - // shot or image saved. eg, home, linden headquarters, the - // coliseum, or destinations where we want to increase - // traffic. AT_LANDMARK = 3, + // Links to places in the world with location and a screen shot or image saved. + // : E.G. Home, linden headquarters, the coliseum, destinations where + // : we want to increase traffic. - // Valid scripts that can be attached to an object. eg. open a - // door, jump into the air. AT_SCRIPT = 4, + // Valid scripts that can be attached to an object. + // : E.G. Open a door, jump into the air. - // A collection of textures and parameters that can be worn - // by an avatar. AT_CLOTHING = 5, + // A collection of textures and parameters that can be worn by an avatar. - // Any combination of textures, sounds, and scripts that are - // associated with a fixed piece of geometry. eg, a hot tub, a - // house with working door. AT_OBJECT = 6, + // Any combination of textures, sounds, and scripts that are + // associated with a fixed piece of geometry. + // : E.G. A hot tub, a house with working door. - // Just text AT_NOTECARD = 7, + // Just text. - // A category holds a collection of inventory items. It's - // treated as an item in the inventory, and therefore needs a - // type. AT_CATEGORY = 8, + // Holds a collection of inventory items. + // It's treated as an item in the inventory and therefore needs a type. - // A root category is a user's root inventory category. We - // decided to expose it visually, so it seems logical to fold - // it into the asset types. AT_ROOT_CATEGORY = 9, + // A user's root inventory category. + // We decided to expose it visually, so it seems logical to fold + // it into the asset types. - // The LSL is the brand spanking new scripting language. We've - // split it into a text and bytecode representation. AT_LSL_TEXT = 10, AT_LSL_BYTECODE = 11, + // The LSL is the scripting language. + // We've split it into a text and bytecode representation. - // uncompressed TGA texture AT_TEXTURE_TGA = 12, + // Uncompressed TGA texture. - // A collection of textures and parameters that can be worn - // by an avatar. AT_BODYPART = 13, + // A collection of textures and parameters that can be worn by an avatar. - // This asset type is meant to only be used as a marker for a - // category preferred type. Using this, we can throw things in - // the trash before completely deleting. AT_TRASH = 14, + // Only to be used as a marker for a category preferred type. + // Using this, we can throw things in the trash before completely deleting. - // This is a marker for a folder meant for snapshots. No - // actual assets will be snapshots, though if there were, you - // could interpret them as textures. AT_SNAPSHOT_CATEGORY = 15, + // A marker for a folder meant for snapshots. + // No actual assets will be snapshots, though if there were, you + // could interpret them as textures. - // This is used to stuff lost&found items into AT_LOST_AND_FOUND = 16, + // Used to stuff lost&found items into. - // uncompressed sound AT_SOUND_WAV = 17, + // Uncompressed sound. - // uncompressed image, non-square, and not appropriate for use - // as a texture. AT_IMAGE_TGA = 18, + // Uncompressed image, non-square. + // Not appropriate for use as a texture. - // compressed image, non-square, and not appropriate for use - // as a texture. AT_IMAGE_JPEG = 19, + // Compressed image, non-square. + // Not appropriate for use as a texture. - // animation AT_ANIMATION = 20, + // Animation. - // gesture, sequence of animations, sounds, chat, wait steps AT_GESTURE = 21, + // Gesture, sequence of animations, sounds, chat, wait steps. - // simstate file AT_SIMSTATE = 22, - - // favorite items - AT_FAVORITE = 23, + // Simstate file. + + AT_LINK = 23, + // Inventory symbolic link + + AT_FAVORITE = 24, + // favorite items // +*********************************************+ // | TO ADD AN ELEMENT TO THIS ENUM: | - // +*********************************************+ + // +************************************************+ // | 1. INSERT BEFORE AT_COUNT | // | 2. INCREMENT AT_COUNT BY 1 | // | 3. ADD TO LLAssetType::mAssetTypeNames | // | 4. ADD TO LLAssetType::mAssetTypeHumanNames | // +*********************************************+ - AT_COUNT = 24, + AT_COUNT = 25, AT_NONE = -1 }; // machine transation between type and strings static EType lookup(const char* name); // safe conversion to std::string, *TODO: deprecate - static EType lookup(const std::string& name); - static const char* lookup(EType type); + static EType lookup(const std::string& type_name); + static const char* lookup(EType asset_type); // translation from a type to a human readable form. - static EType lookupHumanReadable( const char* name ); // safe conversion to std::string, *TODO: deprecate - static EType lookupHumanReadable( const std::string& name ); - static const char* lookupHumanReadable(EType type); + static EType lookupHumanReadable(const char* desc_name); // safe conversion to std::string, *TODO: deprecate + static EType lookupHumanReadable(const std::string& readable_name); + static const char* lookupHumanReadable(EType asset_type); - static EDragAndDropType lookupDragAndDropType( EType ); + static const char* lookupCategoryName(EType asset_type); // Generate a good default description. You may want to add a verb // or agent name after this depending on your application. - static void generateDescriptionFor(LLAssetType::EType type, - std::string& desc); - - static EType getType(const std::string& sin); - static std::string getDesc(EType type); + static void generateDescriptionFor(LLAssetType::EType asset_type, + std::string& description); + + static EType getType(const std::string& desc_name); + static const std::string& getDesc(EType asset_type); + static EDragAndDropType lookupDragAndDropType(EType asset_type); + + /* TODO: Change return types from "const char *" to "const std::string &". + This is fairly straightforward, but requires changing some calls to use .c_str(). + e.g.: + - fprintf(fp, "\t\ttype\t%s\n", LLAssetType::lookup(mType)); + + fprintf(fp, "\t\ttype\t%s\n", LLAssetType::lookup(mType).c_str()); + */ private: // don't instantiate or derive one of these objects - LLAssetType( void ) {} - ~LLAssetType( void ) {} - -private: - static const char* mAssetTypeNames[]; - static const char* mAssetTypeHumanNames[]; + LLAssetType() {} + ~LLAssetType() {} }; -#endif // LL_LLASSETTYPE +#endif // LL_LLASSETTYPE_H diff --git a/indra/llcommon/llboost.h b/indra/llcommon/llboost.h index f4bfc2bfa29a8ec1dca557d1f4269234a972a1b8..c2bde3a09736a4a176dd4143524c7ae12a956597 100644 --- a/indra/llcommon/llboost.h +++ b/indra/llcommon/llboost.h @@ -46,7 +46,7 @@ */ typedef boost::tokenizer<boost::char_separator<char> > boost_tokenizer; -// Useful combiner for boost signals that retturn a vool (e.g. validation) +// Useful combiner for boost signals that return a bool (e.g. validation) // returns false if any of the callbacks return false struct boost_boolean_combiner { diff --git a/indra/llcommon/lldate.h b/indra/llcommon/lldate.h index c096d7ddd5d54e09847633e8cb0c7dfe8ab806ec..d6982fbd9e049bd1e0e42489429f658cf9284fa8 100644 --- a/indra/llcommon/lldate.h +++ b/indra/llcommon/lldate.h @@ -142,6 +142,14 @@ class LL_COMMON_API LLDate bool operator!=(const LLDate& rhs) const { return (*this < rhs) || (rhs < *this); } bool operator==(const LLDate& rhs) const { return !(*this != rhs); } + /** + * @brief Compare to epoch UTC. + */ + + bool isNull() const { return mSecondsSinceEpoch == 0.0; } + bool notNull() const { return mSecondsSinceEpoch != 0.0; } + + private: F64 mSecondsSinceEpoch; }; diff --git a/indra/llcommon/lldeleteutils.h b/indra/llcommon/lldeleteutils.h new file mode 100644 index 0000000000000000000000000000000000000000..d6a0945e4680fb6a48f6a7b7b4e30fd60cf24b42 --- /dev/null +++ b/indra/llcommon/lldeleteutils.h @@ -0,0 +1,53 @@ +/** + * @file lldeleteutils.h + * @brief Utility functions to simplify some common pointer-munging idioms. + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + * + * Copyright (c) 2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ +#ifndef LL_DELETE_UTILS_H +#define LL_DELETE_UTILS_H + +// Simple utility functions to eventually replace the common 2-line +// idiom scattered throughout the viewer codebase. Note that where +// possible we would rather be using smart pointers of some sort. + +template <class T> +inline void deleteAndClear(T*& ptr) +{ + delete ptr; + ptr = NULL; +} + +template <class T> +inline void deleteAndClearArray(T*& array_ptr) +{ + delete[] array_ptr; + array_ptr = NULL; +} + +#endif diff --git a/indra/llcommon/lldictionary.h b/indra/llcommon/lldictionary.h new file mode 100644 index 0000000000000000000000000000000000000000..856947def80ddfe89983aba2d6b375f81c7c1398 --- /dev/null +++ b/indra/llcommon/lldictionary.h @@ -0,0 +1,102 @@ +/** + * @file lldictionary.h + * @brief Lldictionary class header file + * + * $LicenseInfo:firstyear=2002&license=viewergpl$ + * + * Copyright (c) 2002-2007, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlife.com/developers/opensource/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at http://secondlife.com/developers/opensource/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#ifndef LL_LLDICTIONARY_H +#define LL_LLDICTIONARY_H + +#include <map> + +struct LLDictionaryEntry +{ + LLDictionaryEntry(const std::string &name) : + mName(name) + { + mNameCapitalized = mName; + LLStringUtil::replaceChar(mNameCapitalized, '-', ' '); + LLStringUtil::replaceChar(mNameCapitalized, '_', ' '); + for (U32 i=0; i < mNameCapitalized.size(); i++) + { + if (i == 0 || mNameCapitalized[i-1] == ' ') // don't change ordering of this statement or crash + { + mNameCapitalized[i] = toupper(mNameCapitalized[i]); + } + } + } + virtual ~LLDictionaryEntry() {} + const std::string mName; + std::string mNameCapitalized; +}; + +template <class Index, class Entry> +class LLDictionary : public std::map<Index, Entry *> +{ +public: + typedef std::map<Index, Entry *> map_t; + typedef typename map_t::iterator iterator_t; + typedef typename map_t::const_iterator const_iterator_t; + + LLDictionary() {} + virtual ~LLDictionary() + { + for (iterator_t iter = map_t::begin(); iter != map_t::end(); ++iter) + delete (iter->second); + } + + const Entry *lookup(Index index) const + { + const_iterator_t dictionary_iter = map_t::find(index); + if (dictionary_iter == map_t::end()) return NULL; + return dictionary_iter->second; + } + const Index lookup(const std::string &name) const + { + for (const_iterator_t dictionary_iter = map_t::begin(); + dictionary_iter != map_t::end(); + dictionary_iter++) + { + const Entry *entry = dictionary_iter->second; + if (entry->mName == name) + { + return dictionary_iter->first; + } + } + llassert(false); + return Index(-1); + } + +protected: + void addEntry(Index index, Entry *entry) + { + (*this)[index] = entry; + } +}; + +#endif // LL_LLDICTIONARY_H diff --git a/indra/llcommon/llerror.cpp b/indra/llcommon/llerror.cpp index 8aa5b3b62e27b73cda40dd048a59a4b50e273833..8102eddb1850d28e115e48c617da532303feafc0 100644 --- a/indra/llcommon/llerror.cpp +++ b/indra/llcommon/llerror.cpp @@ -289,7 +289,7 @@ namespace public: static LogControlFile& fromDirectory(const std::string& dir); - virtual void loadFile(); + virtual bool loadFile(); private: LogControlFile(const std::string &filename) @@ -317,7 +317,7 @@ namespace // NB: This instance is never freed } - void LogControlFile::loadFile() + bool LogControlFile::loadFile() { LLSD configuration; @@ -333,12 +333,13 @@ namespace llwarns << filename() << " missing, ill-formed," " or simply undefined; not changing configuration" << llendl; - return; + return false; } } LLError::configure(configuration); llinfos << "logging reconfigured from " << filename() << llendl; + return true; } @@ -1228,9 +1229,62 @@ namespace LLError char** LLCallStacks::sBuffer = NULL ; S32 LLCallStacks::sIndex = 0 ; + class CallStacksLogLock + { + public: + CallStacksLogLock(); + ~CallStacksLogLock(); + bool ok() const { return mOK; } + private: + bool mLocked; + bool mOK; + }; + + CallStacksLogLock::CallStacksLogLock() + : mLocked(false), mOK(false) + { + if (!gCallStacksLogMutexp) + { + mOK = true; + return; + } + + const int MAX_RETRIES = 5; + for (int attempts = 0; attempts < MAX_RETRIES; ++attempts) + { + apr_status_t s = apr_thread_mutex_trylock(gCallStacksLogMutexp); + if (!APR_STATUS_IS_EBUSY(s)) + { + mLocked = true; + mOK = true; + return; + } + + ms_sleep(1); + } + + // We're hosed, we can't get the mutex. Blah. + std::cerr << "CallStacksLogLock::CallStacksLogLock: failed to get mutex for log" + << std::endl; + } + + CallStacksLogLock::~CallStacksLogLock() + { + if (mLocked) + { + apr_thread_mutex_unlock(gCallStacksLogMutexp); + } + } + //static void LLCallStacks::push(const char* function, const int line) { + CallStacksLogLock lock; + if (!lock.ok()) + { + return; + } + if(!sBuffer) { sBuffer = new char*[512] ; @@ -1266,6 +1320,12 @@ namespace LLError //static void LLCallStacks::end(std::ostringstream* _out) { + CallStacksLogLock lock; + if (!lock.ok()) + { + return; + } + if(!sBuffer) { sBuffer = new char*[512] ; @@ -1288,6 +1348,12 @@ namespace LLError //static void LLCallStacks::print() { + CallStacksLogLock lock; + if (!lock.ok()) + { + return; + } + if(sIndex > 0) { llinfos << " ************* PRINT OUT LL CALL STACKS ************* " << llendl ; diff --git a/indra/llcommon/llevents.h b/indra/llcommon/llevents.h index 73a35af035ee5cc90f3c94c96fc36fb7d8a0bdd4..2f6515a4cb034f3d0b8ec8da5c085bab89536b51 100644 --- a/indra/llcommon/llevents.h +++ b/indra/llcommon/llevents.h @@ -19,6 +19,7 @@ #include <map> #include <set> #include <vector> +#include <list> #include <deque> #include <stdexcept> #include <boost/signals2.hpp> @@ -27,9 +28,13 @@ #include <boost/enable_shared_from_this.hpp> #include <boost/utility.hpp> // noncopyable #include <boost/optional/optional.hpp> +#include <boost/ptr_container/ptr_vector.hpp> #include <boost/visit_each.hpp> #include <boost/ref.hpp> // reference_wrapper #include <boost/type_traits/is_pointer.hpp> +#include <boost/utility/addressof.hpp> +#include <boost/preprocessor/repetition/enum_params.hpp> +#include <boost/preprocessor/iteration/local.hpp> #include <boost/function.hpp> #include <boost/static_assert.hpp> #include "llsd.h" @@ -106,9 +111,6 @@ typedef LLStandardSignal::slot_type LLEventListener; /// Result of registering a listener, supports <tt>connected()</tt>, /// <tt>disconnect()</tt> and <tt>blocked()</tt> typedef boost::signals2::connection LLBoundListener; -/// Storing an LLBoundListener in LLTempBoundListener will disconnect the -/// referenced listener when the LLTempBoundListener instance is destroyed. -typedef boost::signals2::scoped_connection LLTempBoundListener; /** * A common idiom for event-based code is to accept either a callable -- @@ -125,7 +127,7 @@ typedef boost::signals2::scoped_connection LLTempBoundListener; * LLListenerOrPumpName::Empty. Test for this condition beforehand using * either <tt>if (param)</tt> or <tt>if (! param)</tt>. */ -class LL_COMMON_API LLListenerOrPumpName +class LLListenerOrPumpName { public: /// passing string name of LLEventPump @@ -172,13 +174,13 @@ class LL_COMMON_API LLListenerOrPumpName /***************************************************************************** * LLEventPumps *****************************************************************************/ -class LL_COMMON_API LLEventPump; +class LLEventPump; /** * LLEventPumps is a Singleton manager through which one typically accesses * this subsystem. */ -class LL_COMMON_API LLEventPumps: public LLSingleton<LLEventPumps> +class LLEventPumps: public LLSingleton<LLEventPumps> { friend class LLSingleton<LLEventPumps>; public: @@ -252,62 +254,14 @@ namespace LLEventDetail const ConnectFunc& connect_func); } // namespace LLEventDetail -/***************************************************************************** -* LLEventTrackable -*****************************************************************************/ -/** - * LLEventTrackable wraps boost::signals2::trackable, which resembles - * boost::trackable. Derive your listener class from LLEventTrackable instead, - * and use something like - * <tt>LLEventPump::listen(boost::bind(&YourTrackableSubclass::method, - * instance, _1))</tt>. This will implicitly disconnect when the object - * referenced by @c instance is destroyed. - * - * @note - * LLEventTrackable doesn't address a couple of cases: - * * Object destroyed during call - * - You enter a slot call in thread A. - * - Thread B destroys the object, which of course disconnects it from any - * future slot calls. - * - Thread A's call uses 'this', which now refers to a defunct object. - * Undefined behavior results. - * * Call during destruction - * - @c MySubclass is derived from LLEventTrackable. - * - @c MySubclass registers one of its own methods using - * <tt>LLEventPump::listen()</tt>. - * - The @c MySubclass object begins destruction. <tt>~MySubclass()</tt> - * runs, destroying state specific to the subclass. (For instance, a - * <tt>Foo*</tt> data member is <tt>delete</tt>d but not zeroed.) - * - The listening method will not be disconnected until - * <tt>~LLEventTrackable()</tt> runs. - * - Before we get there, another thread posts data to the @c LLEventPump - * instance, calling the @c MySubclass method. - * - The method in question relies on valid @c MySubclass state. (For - * instance, it attempts to dereference the <tt>Foo*</tt> pointer that was - * <tt>delete</tt>d but not zeroed.) - * - Undefined behavior results. - * If you suspect you may encounter any such scenario, you're better off - * managing the lifespan of your object with <tt>boost::shared_ptr</tt>. - * Passing <tt>LLEventPump::listen()</tt> a <tt>boost::bind()</tt> expression - * involving a <tt>boost::weak_ptr<Foo></tt> is recognized specially, engaging - * thread-safe Boost.Signals2 machinery. - */ -typedef boost::signals2::trackable LLEventTrackable; - /***************************************************************************** * LLEventPump *****************************************************************************/ /** * LLEventPump is the base class interface through which we access the * concrete subclasses LLEventStream and LLEventQueue. - * - * @NOTE - * LLEventPump derives from LLEventTrackable so that when you "chain" - * LLEventPump instances together, they will automatically disconnect on - * destruction. Please see LLEventTrackable documentation for situations in - * which this may be perilous across threads. */ -class LL_COMMON_API LLEventPump: public LLEventTrackable +class LLEventPump: boost::noncopyable { public: /** @@ -410,22 +364,10 @@ class LL_COMMON_API LLEventPump: public LLEventTrackable * themselves. listen() can throw any ListenError; see ListenError * subclasses. * - * The listener name must be unique among active listeners for this - * LLEventPump, else you get DupListenerName. If you don't care to invent - * a name yourself, use inventName(). (I was tempted to recognize e.g. "" - * and internally generate a distinct name for that case. But that would - * handle badly the scenario in which you want to add, remove, re-add, - * etc. the same listener: each new listen() call would necessarily - * perform a new dependency sort. Assuming you specify the same - * after/before lists each time, using inventName() when you first - * instantiate your listener, then passing the same name on each listen() - * call, allows us to optimize away the second and subsequent dependency - * sorts. - * - * If (as is typical) you pass a <tt>boost::bind()</tt> expression as @a - * listener, listen() will inspect the components of that expression. If a - * bound object matches any of several cases, the connection will - * automatically be disconnected when that object is destroyed. + * If (as is typical) you pass a <tt>boost::bind()</tt> expression, + * listen() will inspect the components of that expression. If a bound + * object matches any of several cases, the connection will automatically + * be disconnected when that object is destroyed. * * * You bind a <tt>boost::weak_ptr</tt>. * * Binding a <tt>boost::shared_ptr</tt> that way would ensure that the @@ -487,9 +429,6 @@ class LL_COMMON_API LLEventPump: public LLEventTrackable /// query virtual bool enabled() const { return mEnabled; } - /// Generate a distinct name for a listener -- see listen() - static std::string inventName(const std::string& pfx="listener"); - private: friend class LLEventPumps; /// flush queued events @@ -528,7 +467,7 @@ class LL_COMMON_API LLEventPump: public LLEventTrackable * LLEventStream is a thin wrapper around LLStandardSignal. Posting an * event immediately calls all registered listeners. */ -class LL_COMMON_API LLEventStream: public LLEventPump +class LLEventStream: public LLEventPump { public: LLEventStream(const std::string& name, bool tweak=false): LLEventPump(name, tweak) {} @@ -545,7 +484,7 @@ class LL_COMMON_API LLEventStream: public LLEventPump * LLEventQueue isa LLEventPump whose post() method defers calling registered * listeners until flush() is called. */ -class LL_COMMON_API LLEventQueue: public LLEventPump +class LLEventQueue: public LLEventPump { public: LLEventQueue(const std::string& name, bool tweak=false): LLEventPump(name, tweak) {} @@ -564,89 +503,47 @@ class LL_COMMON_API LLEventQueue: public LLEventPump }; /***************************************************************************** -* LLReqID +* LLEventTrackable and underpinnings *****************************************************************************/ /** - * This class helps the implementer of a given event API to honor the - * ["reqid"] convention. By this convention, each event API stamps into its - * response LLSD a ["reqid"] key whose value echoes the ["reqid"] value, if - * any, from the corresponding request. - * - * This supports an (atypical, but occasionally necessary) use case in which - * two or more asynchronous requests are multiplexed onto the same ["reply"] - * LLEventPump. Since the response events could arrive in arbitrary order, the - * caller must be able to demux them. It does so by matching the ["reqid"] - * value in each response with the ["reqid"] value in the corresponding - * request. - * - * It is the caller's responsibility to ensure distinct ["reqid"] values for - * that case. Though LLSD::UUID is guaranteed to work, it might be overkill: - * the "namespace" of unique ["reqid"] values is simply the set of requests - * specifying the same ["reply"] LLEventPump name. - * - * Making a given event API echo the request's ["reqid"] into the response is - * nearly trivial. This helper is mostly for mnemonic purposes, to serve as a - * place to put these comments. We hope that each time a coder implements a - * new event API based on some existing one, s/he will say, "Huh, what's an - * LLReqID?" and look up this material. - * - * The hardest part about the convention is deciding where to store the - * ["reqid"] value. Ironically, LLReqID can't help with that: you must store - * an LLReqID instance in whatever storage will persist until the reply is - * sent. For example, if the request ultimately ends up using a Responder - * subclass, storing an LLReqID instance in the Responder works. + * LLEventTrackable wraps boost::signals2::trackable, which resembles + * boost::trackable. Derive your listener class from LLEventTrackable instead, + * and use something like + * <tt>LLEventPump::listen(boost::bind(&YourTrackableSubclass::method, + * instance, _1))</tt>. This will implicitly disconnect when the object + * referenced by @c instance is destroyed. * * @note - * The @em implementer of an event API must honor the ["reqid"] convention. - * However, the @em caller of an event API need only use it if s/he is sharing - * the same ["reply"] LLEventPump for two or more asynchronous event API - * requests. - * - * In most cases, it's far easier for the caller to instantiate a local - * LLEventStream and pass its name to the event API in question. Then it's - * perfectly reasonable not to set a ["reqid"] key in the request, ignoring - * the @c isUndefined() ["reqid"] value in the response. + * LLEventTrackable doesn't address a couple of cases: + * * Object destroyed during call + * - You enter a slot call in thread A. + * - Thread B destroys the object, which of course disconnects it from any + * future slot calls. + * - Thread A's call uses 'this', which now refers to a defunct object. + * Undefined behavior results. + * * Call during destruction + * - @c MySubclass is derived from LLEventTrackable. + * - @c MySubclass registers one of its own methods using + * <tt>LLEventPump::listen()</tt>. + * - The @c MySubclass object begins destruction. <tt>~MySubclass()</tt> + * runs, destroying state specific to the subclass. (For instance, a + * <tt>Foo*</tt> data member is <tt>delete</tt>d but not zeroed.) + * - The listening method will not be disconnected until + * <tt>~LLEventTrackable()</tt> runs. + * - Before we get there, another thread posts data to the @c LLEventPump + * instance, calling the @c MySubclass method. + * - The method in question relies on valid @c MySubclass state. (For + * instance, it attempts to dereference the <tt>Foo*</tt> pointer that was + * <tt>delete</tt>d but not zeroed.) + * - Undefined behavior results. + * If you suspect you may encounter any such scenario, you're better off + * managing the lifespan of your object with <tt>boost::shared_ptr</tt>. + * Passing <tt>LLEventPump::listen()</tt> a <tt>boost::bind()</tt> expression + * involving a <tt>boost::weak_ptr<Foo></tt> is recognized specially, engaging + * thread-safe Boost.Signals2 machinery. */ -class LLReqID -{ -public: - /** - * If you have the request in hand at the time you instantiate the - * LLReqID, pass that request to extract its ["reqid"]. - */ - LLReqID(const LLSD& request): - mReqid(request["reqid"]) - {} - /// If you don't yet have the request, use setFrom() later. - LLReqID() {} - - /// Extract and store the ["reqid"] value from an incoming request. - void setFrom(const LLSD& request) - { - mReqid = request["reqid"]; - } - - /// Set ["reqid"] key into a pending response LLSD object. - void stamp(LLSD& response) const; - - /// Make a whole new response LLSD object with our ["reqid"]. - LLSD makeResponse() const - { - LLSD response; - stamp(response); - return response; - } - - /// Not really sure of a use case for this accessor... - LLSD getReqID() const { return mReqid; } - -private: - LLSD mReqid; -}; +typedef boost::signals2::trackable LLEventTrackable; -/***************************************************************************** -* Underpinnings -*****************************************************************************/ /** * We originally provided a suite of overloaded * LLEventTrackable::listenTo(LLEventPump&, ...) methods that would call diff --git a/indra/llcommon/llfasttimer.h b/indra/llcommon/llfasttimer.h index f2dae09fdf7e809dc8a3553a915dd57a30b46d5e..612068b20213f551b294fffc6befa3f442b2a1fd 100644 --- a/indra/llcommon/llfasttimer.h +++ b/indra/llcommon/llfasttimer.h @@ -30,229 +30,323 @@ * $/LicenseInfo$ */ -#ifndef LL_LLFASTTIMER_H -#define LL_LLFASTTIMER_H +#ifndef LL_FASTTIMER_H +#define LL_FASTTIMER_H + +#include "llinstancetracker.h" #define FAST_TIMER_ON 1 -U64 LL_COMMON_API get_cpu_clock_count(); +U64 get_cpu_clock_count(); + +class LLMutex; + +#include <queue> +#include "llsd.h" + -class LL_COMMON_API LLFastTimer +class LLFastTimer { public: - enum EFastTimerType + // stores a "named" timer instance to be reused via multiple LLFastTimer stack instances + class NamedTimer + : public LLInstanceTracker<NamedTimer> { - // high level - FTM_FRAME, - FTM_UPDATE, - FTM_RENDER, - FTM_SWAP, - FTM_CLIENT_COPY, - FTM_IDLE, - FTM_SLEEP, - - // common messaging components - FTM_PUMP, - FTM_CURL, - - // common simulation components - FTM_UPDATE_ANIMATION, - FTM_UPDATE_TERRAIN, - FTM_UPDATE_PRIMITIVES, - FTM_UPDATE_PARTICLES, - FTM_SIMULATE_PARTICLES, - FTM_UPDATE_SKY, - FTM_UPDATE_TEXTURES, - FTM_UPDATE_WLPARAM, - FTM_UPDATE_WATER, - FTM_UPDATE_CLOUDS, - FTM_UPDATE_GRASS, - FTM_UPDATE_TREE, - FTM_UPDATE_AVATAR, - - // common render components - FTM_SHADOW_GEOMETRY, - FTM_SHADOW_RENDER, - FTM_SHADOW_TERRAIN, - FTM_SHADOW_AVATAR, - FTM_SHADOW_SIMPLE, - FTM_SHADOW_ALPHA, - FTM_SHADOW_TREE, - - FTM_RENDER_GEOMETRY, - FTM_RENDER_TERRAIN, - FTM_RENDER_SIMPLE, - FTM_RENDER_FULLBRIGHT, - FTM_RENDER_GLOW, - FTM_RENDER_GRASS, - FTM_RENDER_INVISIBLE, - FTM_RENDER_SHINY, - FTM_RENDER_BUMP, - FTM_RENDER_TREES, - FTM_RENDER_CHARACTERS, - FTM_RENDER_OCCLUSION, - FTM_RENDER_ALPHA, - FTM_RENDER_CLOUDS, - FTM_RENDER_HUD, - FTM_RENDER_PARTICLES, - FTM_RENDER_WATER, - FTM_RENDER_WL_SKY, - FTM_RENDER_FAKE_VBO_UPDATE, - FTM_RENDER_TIMER, - FTM_RENDER_UI, - FTM_RENDER_BLOOM, - FTM_RENDER_BLOOM_FBO, - FTM_RENDER_FONTS, - - // newview specific - FTM_MESSAGES, - FTM_MOUSEHANDLER, - FTM_KEYHANDLER, - FTM_REBUILD, - FTM_STATESORT, - FTM_STATESORT_DRAWABLE, - FTM_STATESORT_POSTSORT, - FTM_REBUILD_VBO, - FTM_REBUILD_VOLUME_VB, - FTM_REBUILD_BRIDGE_VB, - FTM_REBUILD_HUD_VB, - FTM_REBUILD_TERRAIN_VB, - FTM_REBUILD_WATER_VB, - FTM_REBUILD_TREE_VB, - FTM_REBUILD_PARTICLE_VB, - FTM_REBUILD_CLOUD_VB, - FTM_REBUILD_GRASS_VB, - FTM_REBUILD_NONE_VB, - FTM_REBUILD_OCCLUSION_VB, - FTM_POOLS, - FTM_POOLRENDER, - FTM_IDLE_CB, - FTM_WORLD_UPDATE, - FTM_UPDATE_MOVE, - FTM_OCTREE_BALANCE, - FTM_UPDATE_LIGHTS, - FTM_CULL, - FTM_CULL_REBOUND, - FTM_FRUSTUM_CULL, - FTM_GEO_UPDATE, - FTM_GEO_RESERVE, - FTM_GEO_LIGHT, - FTM_GEO_SHADOW, - FTM_GEO_SKY, - FTM_GEN_VOLUME, - FTM_GEN_TRIANGLES, - FTM_GEN_FLEX, - FTM_AUDIO_UPDATE, - FTM_RESET_DRAWORDER, - FTM_OBJECTLIST_UPDATE, - FTM_AVATAR_UPDATE, - FTM_JOINT_UPDATE, - FTM_ATTACHMENT_UPDATE, - FTM_LOD_UPDATE, - FTM_REGION_UPDATE, - FTM_CLEANUP, - FTM_NETWORK, - FTM_IDLE_NETWORK, - FTM_CREATE_OBJECT, - FTM_LOAD_AVATAR, - FTM_PROCESS_MESSAGES, - FTM_PROCESS_OBJECTS, - FTM_PROCESS_IMAGES, - FTM_IMAGE_UPDATE, - FTM_IMAGE_CREATE, - FTM_IMAGE_DECODE, - FTM_IMAGE_MARK_DIRTY, - FTM_PIPELINE, - FTM_VFILE_WAIT, - FTM_FLEXIBLE_UPDATE, - FTM_OCCLUSION_READBACK, - FTM_HUD_EFFECTS, - FTM_HUD_UPDATE, - FTM_INVENTORY, - FTM_AUTO_SELECT, - FTM_ARRANGE, - FTM_FILTER, - FTM_REFRESH, - FTM_SORT, - FTM_PICK, - - // Temp - FTM_TEMP1, - FTM_TEMP2, - FTM_TEMP3, - FTM_TEMP4, - FTM_TEMP5, - FTM_TEMP6, - FTM_TEMP7, - FTM_TEMP8, - - FTM_OTHER, // Special, used by display code + public: + ~NamedTimer(); + + enum { HISTORY_NUM = 60 }; + + const std::string& getName() { return mName; } + NamedTimer* getParent() { return mParent; } + void setParent(NamedTimer* parent); + S32 getDepth(); + std::string getToolTip(S32 history_index = -1); + + typedef std::vector<NamedTimer*>::const_iterator child_const_iter; + child_const_iter beginChildren(); + child_const_iter endChildren(); + std::vector<NamedTimer*>& getChildren(); + + void setCollapsed(bool collapsed) { mCollapsed = collapsed; } + bool getCollapsed() { return mCollapsed; } + + U64 getCountAverage() { return mCountAverage; } + U64 getCallAverage() { return mCallAverage; } + + U64 getHistoricalCount(S32 history_index = 0); + U64 getHistoricalCalls(S32 history_index = 0); + + static NamedTimer& getRootNamedTimer(); + + struct FrameState + { + FrameState(NamedTimer* timerp); + + U64 mSelfTimeCounter; + U64 mLastStartTime; // most recent time when this timer was started + U32 mCalls; + FrameState* mParent; // info for caller timer + FrameState* mLastCaller; // used to bootstrap tree construction + NamedTimer* mTimer; + U16 mActiveCount; // number of timers with this ID active on stack + bool mMoveUpTree; // needs to be moved up the tree of timers at the end of frame + }; + + FrameState& getFrameStateFast() const + { + return (*sTimerInfos)[mFrameStateIndex]; + } + + S32 getFrameStateIndex() const { return mFrameStateIndex; } + + FrameState& getFrameState() const; + + + private: + friend class LLFastTimer; + friend class NamedTimerFactory; + + // + // methods + // + NamedTimer(const std::string& name); + // recursive call to gather total time from children + static void accumulateTimings(); + + // called once per frame by LLFastTimer + static void processFrame(); + + static void buildHierarchy(); + static void resetFrame(); + static void reset(); + + typedef std::vector<FrameState> info_list_t; + static info_list_t& getFrameStateList(); + static void createFrameStateList(); // must call before any call to getFrameStateList() - FTM_NUM_TYPES + // + // members + // + S32 mFrameStateIndex; + + std::string mName; + + U64 mTotalTimeCounter; + + U64 mCountAverage; + U64 mCallAverage; + + U64* mCountHistory; + U64* mCallHistory; + + // tree structure + NamedTimer* mParent; // NamedTimer of caller(parent) + std::vector<NamedTimer*> mChildren; + bool mCollapsed; // don't show children + bool mNeedsSorting; // sort children whenever child added + + static info_list_t* sTimerInfos; }; - enum { FTM_HISTORY_NUM = 60 }; - enum { FTM_MAX_DEPTH = 64 }; - + + // used to statically declare a new named timer + class DeclareTimer + { + public: + DeclareTimer(const std::string& name, bool open); + DeclareTimer(const std::string& name); + + // convertable to NamedTimer::FrameState for convenient usage of LLFastTimer(declared_timer) + operator NamedTimer::FrameState&() { return mNamedTimer.getFrameStateFast(); } + private: + NamedTimer& mNamedTimer; + }; + + static DeclareTimer FTM_ARRANGE; + static DeclareTimer FTM_ATTACHMENT_UPDATE; + static DeclareTimer FTM_AUDIO_UPDATE; + static DeclareTimer FTM_AUTO_SELECT; + static DeclareTimer FTM_AVATAR_UPDATE; + static DeclareTimer FTM_CLEANUP; + static DeclareTimer FTM_CLIENT_COPY; + static DeclareTimer FTM_CREATE_OBJECT; + static DeclareTimer FTM_CULL; + static DeclareTimer FTM_CULL_REBOUND; + static DeclareTimer FTM_FILTER; + static DeclareTimer FTM_FLEXIBLE_UPDATE; + static DeclareTimer FTM_FRAME; + static DeclareTimer FTM_FRUSTUM_CULL; + static DeclareTimer FTM_GEN_FLEX; + static DeclareTimer FTM_GEN_TRIANGLES; + static DeclareTimer FTM_GEN_VOLUME; + static DeclareTimer FTM_GEO_SKY; + static DeclareTimer FTM_GEO_UPDATE; + static DeclareTimer FTM_HUD_EFFECTS; + static DeclareTimer FTM_HUD_UPDATE; + static DeclareTimer FTM_IDLE; + static DeclareTimer FTM_IDLE_CB; + static DeclareTimer FTM_IDLE_NETWORK; + static DeclareTimer FTM_IMAGE_CREATE; + static DeclareTimer FTM_IMAGE_MARK_DIRTY; + static DeclareTimer FTM_IMAGE_UPDATE; + static DeclareTimer FTM_INVENTORY; + static DeclareTimer FTM_JOINT_UPDATE; + static DeclareTimer FTM_KEYHANDLER; + static DeclareTimer FTM_LOAD_AVATAR; + static DeclareTimer FTM_LOD_UPDATE; + static DeclareTimer FTM_MESSAGES; + static DeclareTimer FTM_MOUSEHANDLER; + static DeclareTimer FTM_NETWORK; + static DeclareTimer FTM_OBJECTLIST_UPDATE; + static DeclareTimer FTM_OCCLUSION_READBACK; + static DeclareTimer FTM_OCTREE_BALANCE; + static DeclareTimer FTM_PICK; + static DeclareTimer FTM_PIPELINE; + static DeclareTimer FTM_POOLRENDER; + static DeclareTimer FTM_POOLS; + static DeclareTimer FTM_PROCESS_IMAGES; + static DeclareTimer FTM_PROCESS_MESSAGES; + static DeclareTimer FTM_PROCESS_OBJECTS; + static DeclareTimer FTM_PUMP; + static DeclareTimer FTM_REBUILD_GRASS_VB; + static DeclareTimer FTM_REBUILD_PARTICLE_VB; + static DeclareTimer FTM_REBUILD_TERRAIN_VB; + static DeclareTimer FTM_REBUILD_VBO; + static DeclareTimer FTM_REBUILD_VOLUME_VB; + static DeclareTimer FTM_REFRESH; + static DeclareTimer FTM_REGION_UPDATE; + static DeclareTimer FTM_RENDER; + static DeclareTimer FTM_RENDER_ALPHA; + static DeclareTimer FTM_RENDER_BLOOM; + static DeclareTimer FTM_RENDER_BLOOM_FBO; + static DeclareTimer FTM_RENDER_BUMP; + static DeclareTimer FTM_RENDER_CHARACTERS; + static DeclareTimer FTM_RENDER_FAKE_VBO_UPDATE; + static DeclareTimer FTM_RENDER_FONTS; + static DeclareTimer FTM_RENDER_FULLBRIGHT; + static DeclareTimer FTM_RENDER_GEOMETRY; + static DeclareTimer FTM_RENDER_GLOW; + static DeclareTimer FTM_RENDER_GRASS; + static DeclareTimer FTM_RENDER_INVISIBLE; + static DeclareTimer FTM_RENDER_OCCLUSION; + static DeclareTimer FTM_RENDER_SHINY; + static DeclareTimer FTM_RENDER_SIMPLE; + static DeclareTimer FTM_RENDER_TERRAIN; + static DeclareTimer FTM_RENDER_TREES; + static DeclareTimer FTM_RENDER_UI; + static DeclareTimer FTM_RENDER_WATER; + static DeclareTimer FTM_RENDER_WL_SKY; + static DeclareTimer FTM_RESET_DRAWORDER; + static DeclareTimer FTM_SHADOW_ALPHA; + static DeclareTimer FTM_SHADOW_AVATAR; + static DeclareTimer FTM_SHADOW_RENDER; + static DeclareTimer FTM_SHADOW_SIMPLE; + static DeclareTimer FTM_SHADOW_TERRAIN; + static DeclareTimer FTM_SHADOW_TREE; + static DeclareTimer FTM_SIMULATE_PARTICLES; + static DeclareTimer FTM_SLEEP; + static DeclareTimer FTM_SORT; + static DeclareTimer FTM_STATESORT; + static DeclareTimer FTM_STATESORT_DRAWABLE; + static DeclareTimer FTM_STATESORT_POSTSORT; + static DeclareTimer FTM_SWAP; + static DeclareTimer FTM_TEMP1; + static DeclareTimer FTM_TEMP2; + static DeclareTimer FTM_TEMP3; + static DeclareTimer FTM_TEMP4; + static DeclareTimer FTM_TEMP5; + static DeclareTimer FTM_TEMP6; + static DeclareTimer FTM_TEMP7; + static DeclareTimer FTM_TEMP8; + static DeclareTimer FTM_UPDATE_ANIMATION; + static DeclareTimer FTM_UPDATE_AVATAR; + static DeclareTimer FTM_UPDATE_CLOUDS; + static DeclareTimer FTM_UPDATE_GRASS; + static DeclareTimer FTM_UPDATE_MOVE; + static DeclareTimer FTM_UPDATE_PARTICLES; + static DeclareTimer FTM_UPDATE_PRIMITIVES; + static DeclareTimer FTM_UPDATE_SKY; + static DeclareTimer FTM_UPDATE_TERRAIN; + static DeclareTimer FTM_UPDATE_TEXTURES; + static DeclareTimer FTM_UPDATE_TREE; + static DeclareTimer FTM_UPDATE_WATER; + static DeclareTimer FTM_UPDATE_WLPARAM; + static DeclareTimer FTM_VFILE_WAIT; + static DeclareTimer FTM_WORLD_UPDATE; + public: - static LLFastTimer::EFastTimerType sCurType; + enum RootTimerMarker { ROOT }; + + static LLMutex* sLogLock; + static std::queue<LLSD> sLogQueue; + static BOOL sLog; + static BOOL sMetricLog; + + LLFastTimer(RootTimerMarker); - LLFastTimer(EFastTimerType type) + LLFastTimer(NamedTimer::FrameState& timer) + : mFrameState(&timer) { -#if FAST_TIMER_ON - mType = type; - sCurType = type; - // These don't get counted, because they use CPU clockticks - //gTimerBins[gCurTimerBin]++; - //LLTimer::sNumTimerCalls++; + NamedTimer::FrameState* frame_state = mFrameState; + frame_state->mLastStartTime = get_cpu_clock_count(); + mStartSelfTime = frame_state->mLastStartTime; - U64 cpu_clocks = get_cpu_clock_count(); + frame_state->mActiveCount++; + frame_state->mCalls++; + // keep current parent as long as it is active when we are + frame_state->mMoveUpTree |= (frame_state->mParent->mActiveCount == 0); + + mLastTimer = sCurTimer; + sCurTimer = this; + } - sStart[sCurDepth] = cpu_clocks; - sCurDepth++; -#endif - }; ~LLFastTimer() { #if FAST_TIMER_ON - U64 end,delta; - int i; - - // These don't get counted, because they use CPU clockticks - //gTimerBins[gCurTimerBin]++; - //LLTimer::sNumTimerCalls++; - end = get_cpu_clock_count(); - - sCurDepth--; - delta = end - sStart[sCurDepth]; - sCounter[mType] += delta; - sCalls[mType]++; - // Subtract delta from parents - for (i=0; i<sCurDepth; i++) - sStart[i] += delta; + NamedTimer::FrameState* frame_state = mFrameState; + U64 cur_time = get_cpu_clock_count(); + frame_state->mSelfTimeCounter += cur_time - mStartSelfTime; + + frame_state->mActiveCount--; + LLFastTimer* last_timer = mLastTimer; + sCurTimer = last_timer; + + // store last caller to bootstrap tree creation + frame_state->mLastCaller = last_timer->mFrameState; + + // we are only tracking self time, so subtract our total time delta from parents + U64 total_time = cur_time - frame_state->mLastStartTime; + last_timer->mStartSelfTime += total_time; #endif } + + // call this once a frame to reset timers + static void nextFrame(); + + // call this to reset timer hierarchy, averages, etc. static void reset(); + static U64 countsPerSecond(); + static S32 getLastFrameIndex() { return sLastFrameIndex; } + static S32 getCurFrameIndex() { return sCurFrameIndex; } + + static void writeLog(std::ostream& os); public: - static int sCurDepth; - static U64 sStart[FTM_MAX_DEPTH]; - static U64 sCounter[FTM_NUM_TYPES]; - static U64 sCalls[FTM_NUM_TYPES]; - static U64 sCountAverage[FTM_NUM_TYPES]; - static U64 sCallAverage[FTM_NUM_TYPES]; - static U64 sCountHistory[FTM_HISTORY_NUM][FTM_NUM_TYPES]; - static U64 sCallHistory[FTM_HISTORY_NUM][FTM_NUM_TYPES]; - static S32 sCurFrameIndex; - static S32 sLastFrameIndex; - static int sPauseHistory; - static int sResetHistory; - static F64 sCPUClockFrequency; + static bool sPauseHistory; + static bool sResetHistory; private: - EFastTimerType mType; -}; + typedef std::vector<LLFastTimer*> timer_stack_t; + static LLFastTimer* sCurTimer; + static S32 sCurFrameIndex; + static S32 sLastFrameIndex; + static F64 sCPUClockFrequency; + U64 mStartSelfTime; // start time + time of all child timers + NamedTimer::FrameState* mFrameState; + LLFastTimer* mLastTimer; +}; #endif // LL_LLFASTTIMER_H diff --git a/indra/llcommon/llinstancetracker.h b/indra/llcommon/llinstancetracker.h index 21d16e9ef7140c80a25e7e9fe3058c70b4cf1baa..ea50acbbc5e08008c241eb34d188ba9cbc0a1280 100644 --- a/indra/llcommon/llinstancetracker.h +++ b/indra/llcommon/llinstancetracker.h @@ -42,6 +42,7 @@ // This mix-in class adds support for tracking all instances of the specified class parameter T // The (optional) key associates a value of type KEY with a given instance of T, for quick lookup // If KEY is not provided, then instances are stored in a simple set +// *NOTE: see explicit specialization below for default KEY==T* case template<typename T, typename KEY = T*> class LLInstanceTracker : boost::noncopyable { @@ -83,6 +84,8 @@ class LLInstanceTracker : boost::noncopyable static std::map<KEY, T*>* sInstances; }; +// explicit specialization for default case where KEY is T* +// use a simple std::set<T*> template<typename T> class LLInstanceTracker<T, T*> { @@ -90,8 +93,8 @@ class LLInstanceTracker<T, T*> typedef typename std::set<T*>::iterator instance_iter; typedef typename std::set<T*>::const_iterator instance_const_iter; - static instance_iter instancesBegin() { return getSet().begin(); } - static instance_iter instancesEnd() { return getSet().end(); } + static instance_iter beginInstances() { return getSet().begin(); } + static instance_iter endInstances() { return getSet().end(); } static S32 instanceCount() { return getSet().size(); } protected: diff --git a/indra/llcommon/llliveappconfig.cpp b/indra/llcommon/llliveappconfig.cpp index e1bfc11a03ba080c23ba513595b8bcc3baa35da4..75bdfee8b7a804eff6c64e482b4e613e521cd5fb 100644 --- a/indra/llcommon/llliveappconfig.cpp +++ b/indra/llcommon/llliveappconfig.cpp @@ -38,9 +38,12 @@ #include "llsd.h" #include "llsdserialize.h" -LLLiveAppConfig::LLLiveAppConfig(LLApp* app, const std::string& filename, F32 refresh_period) -: LLLiveFile(filename, refresh_period), - mApp(app) +LLLiveAppConfig::LLLiveAppConfig( + const std::string& filename, + F32 refresh_period, + LLApp::OptionPriority priority) : + LLLiveFile(filename, refresh_period), + mPriority(priority) { } @@ -48,7 +51,7 @@ LLLiveAppConfig::~LLLiveAppConfig() { } // virtual -void LLLiveAppConfig::loadFile() +bool LLLiveAppConfig::loadFile() { llinfos << "LLLiveAppConfig::loadFile(): reading from " << filename() << llendl; @@ -59,12 +62,25 @@ void LLLiveAppConfig::loadFile() LLSDSerialize::fromXML(config, file); if(!config.isMap()) { - llinfos << "LLDataserverConfig::loadFile(): not an map!" + llwarns << "Live app config not an map in " << filename() << " Ignoring the data." << llendl; - return; + return false; } file.close(); } - mApp->setOptionData( - LLApp::PRIORITY_SPECIFIC_CONFIGURATION, config); + else + { + llinfos << "Live file " << filename() << " does not exit." << llendl; + } + // *NOTE: we do not handle the else case here because we would not + // have attempted to load the file unless LLLiveFile had + // determined there was a reason to load it. This only happens + // when either the file has been updated or it is either suddenly + // in existence or has passed out of existence. Therefore, we want + // to set the config to an empty config, and return that it + // changed. + + LLApp* app = LLApp::instance(); + if(app) app->setOptionData(mPriority, config); + return true; } diff --git a/indra/llcommon/llliveappconfig.h b/indra/llcommon/llliveappconfig.h index 3251a7c50ea559ecc488bb2ed62818ed36e2ccff..a6ece6e8b39caac0236f13ae2ccf2178c134025f 100644 --- a/indra/llcommon/llliveappconfig.h +++ b/indra/llcommon/llliveappconfig.h @@ -33,25 +33,43 @@ #ifndef LLLIVEAPPCONFIG_H #define LLLIVEAPPCONFIG_H +#include "llapp.h" #include "lllivefile.h" -class LLApp; -class LL_COMMON_API LLLiveAppConfig : public LLLiveFile +/** + * @class LLLiveAppConfig + * @see LLLiveFile + * + * To use this, instantiate a LLLiveAppConfig object inside your main + * loop. The traditional name for it is live_config. Be sure to call + * <code>live_config.checkAndReload()</code> periodically. + */ +class LLLiveAppConfig : public LLLiveFile { public: - // To use this, instantiate a LLLiveAppConfig object inside your main loop. - // The traditional name for it is live_config. - // Be sure to call live_config.checkAndReload() periodically. - LLLiveAppConfig(LLApp* app, const std::string& filename, F32 refresh_period); - ~LLLiveAppConfig(); + /** + * @brief Constructor + * + * @param filename. The name of the file for periodically checking + * configuration. + * @param refresh_period How often the internal timer should + * bother checking the filesystem. + * @param The application priority level of that configuration file. + */ + LLLiveAppConfig( + const std::string& filename, + F32 refresh_period, + LLApp::OptionPriority priority); + + ~LLLiveAppConfig(); ///< Destructor protected: - /*virtual*/ void loadFile(); + /*virtual*/ bool loadFile(); private: - LLApp* mApp; + LLApp::OptionPriority mPriority; }; #endif diff --git a/indra/llcommon/lllivefile.cpp b/indra/llcommon/lllivefile.cpp index b6f458cb3e049b2aa4c70539191209738c39c0f6..effda6c49c281faeebdb77b39152c9c70a474df9 100644 --- a/indra/llcommon/lllivefile.cpp +++ b/indra/llcommon/lllivefile.cpp @@ -35,14 +35,17 @@ #include "llframetimer.h" #include "lltimer.h" +const F32 DEFAULT_CONFIG_FILE_REFRESH = 5.0f; + + class LLLiveFile::Impl { public: - Impl(const std::string &filename, const F32 refresh_period); + Impl(const std::string& filename, const F32 refresh_period); ~Impl(); bool check(); - + void changed(); bool mForceCheck; F32 mRefreshPeriod; @@ -50,16 +53,19 @@ class LLLiveFile::Impl std::string mFilename; time_t mLastModTime; + time_t mLastStatTime; bool mLastExists; LLEventTimer* mEventTimer; }; -LLLiveFile::Impl::Impl(const std::string &filename, const F32 refresh_period) - : mForceCheck(true), +LLLiveFile::Impl::Impl(const std::string& filename, const F32 refresh_period) + : + mForceCheck(true), mRefreshPeriod(refresh_period), mFilename(filename), mLastModTime(0), + mLastStatTime(0), mLastExists(false), mEventTimer(NULL) { @@ -70,7 +76,7 @@ LLLiveFile::Impl::~Impl() delete mEventTimer; } -LLLiveFile::LLLiveFile(const std::string &filename, const F32 refresh_period) +LLLiveFile::LLLiveFile(const std::string& filename, const F32 refresh_period) : impl(* new Impl(filename, refresh_period)) { } @@ -121,17 +127,30 @@ bool LLLiveFile::Impl::check() // We want to read the file. Update status info for the file. mLastExists = true; - mLastModTime = stat_data.st_mtime; - + mLastStatTime = stat_data.st_mtime; return true; } +void LLLiveFile::Impl::changed() +{ + // we wanted to read this file, and we were successful. + mLastModTime = mLastStatTime; +} + bool LLLiveFile::checkAndReload() { bool changed = impl.check(); if (changed) { - loadFile(); + if(loadFile()) + { + impl.changed(); + this->changed(); + } + else + { + changed = false; + } } return changed; } diff --git a/indra/llcommon/lllivefile.h b/indra/llcommon/lllivefile.h index a6f9996767cd413ff289ccfc2a18a5c76ea6eaeb..2453d7a125a6fd44f949df7ae5190329049cda89 100644 --- a/indra/llcommon/lllivefile.h +++ b/indra/llcommon/lllivefile.h @@ -33,29 +33,65 @@ #ifndef LL_LLLIVEFILE_H #define LL_LLLIVEFILE_H -const F32 configFileRefreshRate = 5.0; // seconds +extern const F32 DEFAULT_CONFIG_FILE_REFRESH; class LL_COMMON_API LLLiveFile { public: - LLLiveFile(const std::string &filename, const F32 refresh_period = 5.f); + LLLiveFile(const std::string& filename, const F32 refresh_period = 5.f); virtual ~LLLiveFile(); + /** + * @brief Check to see if this live file should reload. + * + * Call this before using anything that was read & cached + * from the file. + * + * This method calls the <code>loadFile()</code> method if + * any of: + * file has a new modify time since the last check + * file used to exist and now does not + * file used to not exist but now does + * @return Returns true if the file was reloaded. + */ bool checkAndReload(); - // Returns true if the file changed in any way - // Call this before using anything that was read & cached from the file + std::string filename() const; + /** + * @brief Add this live file to an automated recheck. + * + * Normally, just calling checkAndReload() is enough. In some + * cases though, you may need to let the live file periodically + * check itself. + */ void addToEventTimer(); - // Normally, just calling checkAndReload() is enough. In some cases - // though, you may need to let the live file periodically check itself. void setRefreshPeriod(F32 seconds); protected: - virtual void loadFile() = 0; // Implement this to load your file if it changed + /** + * @breif Implement this to load your file if it changed. + * + * This method is called automatically by <code>checkAndReload()</code>, + * so though you must implement this in derived classes, you do + * not need to call it manually. + * @return Returns true if the file was successfully loaded. + */ + virtual bool loadFile() = 0; + + /** + * @brief Implement this method if you want to get a change callback. + * + * This virtual function will be called automatically at the end + * of <code>checkAndReload()</code> if a new configuration was + * loaded. This does not track differences between the current and + * newly loaded file, so any successful load event will trigger a + * <code>changed()</code> callback. Default is to do nothing. + */ + virtual void changed() {} private: class Impl; diff --git a/indra/llcommon/llmemory.cpp b/indra/llcommon/llmemory.cpp index 5d54cfcade131a24dc73ec16e4c4494045186313..2a8015e26d9542e392e1219859e49ab44dcdecc2 100644 --- a/indra/llcommon/llmemory.cpp +++ b/indra/llcommon/llmemory.cpp @@ -44,7 +44,6 @@ #endif #include "llmemory.h" -#include "llmemtype.h" //---------------------------------------------------------------------------- @@ -74,162 +73,6 @@ void LLMemory::freeReserve() reserveMem = NULL; } - -//---------------------------------------------------------------------------- - -//static -#if MEM_TRACK_TYPE -S32 LLMemType::sCurDepth = 0; -S32 LLMemType::sCurType = LLMemType::MTYPE_INIT; -S32 LLMemType::sType[LLMemType::MTYPE_MAX_DEPTH]; -S32 LLMemType::sMemCount[LLMemType::MTYPE_NUM_TYPES] = { 0 }; -S32 LLMemType::sMaxMemCount[LLMemType::MTYPE_NUM_TYPES] = { 0 }; -S32 LLMemType::sNewCount[LLMemType::MTYPE_NUM_TYPES] = { 0 }; -S32 LLMemType::sOverheadMem = 0; - -const char* LLMemType::sTypeDesc[LLMemType::MTYPE_NUM_TYPES] = -{ - "INIT", - "STARTUP", - "MAIN", - - "IMAGEBASE", - "IMAGERAW", - "IMAGEFORMATTED", - - "APPFMTIMAGE", - "APPRAWIMAGE", - "APPAUXRAWIMAGE", - - "DRAWABLE", - "OBJECT", - "PIPELINE", - "AVATAR", - "PARTICLES", - "REGIONS", - "INVENTORY", - "ANIMATION", - "NETWORK", - "PHYSICS", - "INTERESTLIST", - - "SCRIPT", - "SCRIPT_RUN", - "SCRIPT_BYTECODE", - - "IO_PUMP", - "IO_TCP", - "IO_BUFFER", - "IO_HTTP_SERVER" - "IO_SD_SERVER", - "IO_SD_CLIENT", - "IO_URL_REQUEST", - - "TEMP1", - "TEMP2", - "TEMP3", - "TEMP4", - "TEMP5", - "TEMP6", - "TEMP7", - "TEMP8", - "TEMP9" -}; - -#endif -S32 LLMemType::sTotalMem = 0; -S32 LLMemType::sMaxTotalMem = 0; - -//static -void LLMemType::printMem() -{ - S32 misc_mem = sTotalMem; -#if MEM_TRACK_TYPE - for (S32 i=0; i<MTYPE_NUM_TYPES; i++) - { - if (sMemCount[i]) - { - llinfos << llformat("MEM: % 20s %03d MB (%03d MB) in %06d News",sTypeDesc[i],sMemCount[i]>>20,sMaxMemCount[i]>>20, sNewCount[i]) << llendl; - } - misc_mem -= sMemCount[i]; - } -#endif - llinfos << llformat("MEM: % 20s %03d MB","MISC",misc_mem>>20) << llendl; - llinfos << llformat("MEM: % 20s %03d MB (Max=%d MB)","TOTAL",sTotalMem>>20,sMaxTotalMem>>20) << llendl; -} - -#if MEM_TRACK_MEM - -void* ll_allocate (size_t size) -{ - if (size == 0) - { - llwarns << "Null allocation" << llendl; - } - - size = (size+3)&~3; - S32 alloc_size = size + 4; -#if MEM_TRACK_TYPE - alloc_size += 4; -#endif - char* p = (char*)malloc(alloc_size); - if (p == NULL) - { - LLMemory::freeReserve(); - llerrs << "Out of memory Error" << llendl; - } - LLMemType::sTotalMem += size; - LLMemType::sMaxTotalMem = llmax(LLMemType::sTotalMem, LLMemType::sMaxTotalMem); - LLMemType::sOverheadMem += 4; - *(size_t*)p = size; - p += 4; -#if MEM_TRACK_TYPE - if (LLMemType::sCurType < 0 || LLMemType::sCurType >= LLMemType::MTYPE_NUM_TYPES) - { - llerrs << "Memory Type Error: new" << llendl; - } - LLMemType::sOverheadMem += 4; - *(S32*)p = LLMemType::sCurType; - p += 4; - LLMemType::sMemCount[LLMemType::sCurType] += size; - if (LLMemType::sMemCount[LLMemType::sCurType] > LLMemType::sMaxMemCount[LLMemType::sCurType]) - { - LLMemType::sMaxMemCount[LLMemType::sCurType] = LLMemType::sMemCount[LLMemType::sCurType]; - } - LLMemType::sNewCount[LLMemType::sCurType]++; -#endif - return (void*)p; -} - -void ll_release (void *pin) -{ - if (!pin) - { - return; - } - char* p = (char*)pin; -#if MEM_TRACK_TYPE - p -= 4; - S32 type = *(S32*)p; - if (type < 0 || type >= LLMemType::MTYPE_NUM_TYPES) - { - llerrs << "Memory Type Error: delete" << llendl; - } -#endif - p -= 4; - S32 size = *(size_t*)p; - LLMemType::sOverheadMem -= 4; -#if MEM_TRACK_TYPE - LLMemType::sMemCount[type] -= size; - LLMemType::sOverheadMem -= 4; - LLMemType::sNewCount[type]--; -#endif - LLMemType::sTotalMem -= size; - free(p); -} - -#else - void* ll_allocate (size_t size) { if (size == 0) @@ -250,32 +93,6 @@ void ll_release (void *p) free(p); } -#endif - -#if MEM_TRACK_MEM - -void* operator new (size_t size) -{ - return ll_allocate(size); -} - -void* operator new[] (size_t size) -{ - return ll_allocate(size); -} - -void operator delete (void *p) -{ - ll_release(p); -} - -void operator delete[] (void *p) -{ - ll_release(p); -} - -#endif - //---------------------------------------------------------------------------- #if defined(LL_WINDOWS) diff --git a/indra/llcommon/llmemory.h b/indra/llcommon/llmemory.h index 2c356db9654cd3d13a0ae04a68da0bb7a25cf4a4..f41da37ba649e34b72f9e167457ef19d0c7ddf4f 100644 --- a/indra/llcommon/llmemory.h +++ b/indra/llcommon/llmemory.h @@ -38,7 +38,10 @@ extern S32 gTotalDAlloc; extern S32 gTotalDAUse; extern S32 gDACount; -class LL_COMMON_API LLMemory +extern void* ll_allocate (size_t size); +extern void ll_release (void *p); + +class LLMemory { public: static void initClass(); diff --git a/indra/llcommon/llmemtype.cpp b/indra/llcommon/llmemtype.cpp new file mode 100644 index 0000000000000000000000000000000000000000..4e33439711593af7d5557ac904ae80315416e615 --- /dev/null +++ b/indra/llcommon/llmemtype.cpp @@ -0,0 +1,237 @@ +/** + * @file llmemtype.cpp + * @brief Simple memory allocation/deallocation tracking stuff here + * + * $LicenseInfo:firstyear=2002&license=viewergpl$ + * + * Copyright (c) 2002-2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#include "llmemtype.h" +#include "llallocator.h" + +std::vector<char const *> LLMemType::DeclareMemType::mNameList; + +LLMemType::DeclareMemType LLMemType::MTYPE_INIT("Init"); +LLMemType::DeclareMemType LLMemType::MTYPE_STARTUP("Startup"); +LLMemType::DeclareMemType LLMemType::MTYPE_MAIN("Main"); +LLMemType::DeclareMemType LLMemType::MTYPE_FRAME("Frame"); + +LLMemType::DeclareMemType LLMemType::MTYPE_GATHER_INPUT("GatherInput"); +LLMemType::DeclareMemType LLMemType::MTYPE_JOY_KEY("JoyKey"); + +LLMemType::DeclareMemType LLMemType::MTYPE_IDLE("Idle"); +LLMemType::DeclareMemType LLMemType::MTYPE_IDLE_PUMP("IdlePump"); +LLMemType::DeclareMemType LLMemType::MTYPE_IDLE_NETWORK("IdleNetwork"); +LLMemType::DeclareMemType LLMemType::MTYPE_IDLE_UPDATE_REGIONS("IdleUpdateRegions"); +LLMemType::DeclareMemType LLMemType::MTYPE_IDLE_UPDATE_VIEWER_REGION("IdleUpdateViewerRegion"); +LLMemType::DeclareMemType LLMemType::MTYPE_IDLE_UPDATE_SURFACE("IdleUpdateSurface"); +LLMemType::DeclareMemType LLMemType::MTYPE_IDLE_UPDATE_PARCEL_OVERLAY("IdleUpdateParcelOverlay"); +LLMemType::DeclareMemType LLMemType::MTYPE_IDLE_AUDIO("IdleAudio"); + +LLMemType::DeclareMemType LLMemType::MTYPE_CACHE_PROCESS_PENDING("CacheProcessPending"); +LLMemType::DeclareMemType LLMemType::MTYPE_CACHE_PROCESS_PENDING_ASKS("CacheProcessPendingAsks"); +LLMemType::DeclareMemType LLMemType::MTYPE_CACHE_PROCESS_PENDING_REPLIES("CacheProcessPendingReplies"); + +LLMemType::DeclareMemType LLMemType::MTYPE_MESSAGE_CHECK_ALL("MessageCheckAll"); +LLMemType::DeclareMemType LLMemType::MTYPE_MESSAGE_PROCESS_ACKS("MessageProcessAcks"); + +LLMemType::DeclareMemType LLMemType::MTYPE_RENDER("Render"); +LLMemType::DeclareMemType LLMemType::MTYPE_SLEEP("Sleep"); + +LLMemType::DeclareMemType LLMemType::MTYPE_NETWORK("Network"); +LLMemType::DeclareMemType LLMemType::MTYPE_PHYSICS("Physics"); +LLMemType::DeclareMemType LLMemType::MTYPE_INTERESTLIST("InterestList"); + +LLMemType::DeclareMemType LLMemType::MTYPE_IMAGEBASE("ImageBase"); +LLMemType::DeclareMemType LLMemType::MTYPE_IMAGERAW("ImageRaw"); +LLMemType::DeclareMemType LLMemType::MTYPE_IMAGEFORMATTED("ImageFormatted"); + +LLMemType::DeclareMemType LLMemType::MTYPE_APPFMTIMAGE("AppFmtImage"); +LLMemType::DeclareMemType LLMemType::MTYPE_APPRAWIMAGE("AppRawImage"); +LLMemType::DeclareMemType LLMemType::MTYPE_APPAUXRAWIMAGE("AppAuxRawImage"); + +LLMemType::DeclareMemType LLMemType::MTYPE_DRAWABLE("Drawable"); + +LLMemType::DeclareMemType LLMemType::MTYPE_OBJECT("Object"); +LLMemType::DeclareMemType LLMemType::MTYPE_OBJECT_PROCESS_UPDATE("ObjectProcessUpdate"); +LLMemType::DeclareMemType LLMemType::MTYPE_OBJECT_PROCESS_UPDATE_CORE("ObjectProcessUpdateCore"); + +LLMemType::DeclareMemType LLMemType::MTYPE_DISPLAY("Display"); +LLMemType::DeclareMemType LLMemType::MTYPE_DISPLAY_UPDATE("DisplayUpdate"); +LLMemType::DeclareMemType LLMemType::MTYPE_DISPLAY_UPDATE_CAMERA("DisplayUpdateCam"); +LLMemType::DeclareMemType LLMemType::MTYPE_DISPLAY_UPDATE_GEOM("DisplayUpdateGeom"); +LLMemType::DeclareMemType LLMemType::MTYPE_DISPLAY_SWAP("DisplaySwap"); +LLMemType::DeclareMemType LLMemType::MTYPE_DISPLAY_UPDATE_HUD("DisplayUpdateHud"); +LLMemType::DeclareMemType LLMemType::MTYPE_DISPLAY_GEN_REFLECTION("DisplayGenRefl"); +LLMemType::DeclareMemType LLMemType::MTYPE_DISPLAY_IMAGE_UPDATE("DisplayImageUpdate"); +LLMemType::DeclareMemType LLMemType::MTYPE_DISPLAY_STATE_SORT("DisplayStateSort"); +LLMemType::DeclareMemType LLMemType::MTYPE_DISPLAY_SKY("DisplaySky"); +LLMemType::DeclareMemType LLMemType::MTYPE_DISPLAY_RENDER_GEOM("DisplayRenderGeom"); +LLMemType::DeclareMemType LLMemType::MTYPE_DISPLAY_RENDER_FLUSH("DisplayRenderFlush"); +LLMemType::DeclareMemType LLMemType::MTYPE_DISPLAY_RENDER_UI("DisplayRenderUI"); +LLMemType::DeclareMemType LLMemType::MTYPE_DISPLAY_RENDER_ATTACHMENTS("DisplayRenderAttach"); + +LLMemType::DeclareMemType LLMemType::MTYPE_VERTEX_DATA("VertexData"); +LLMemType::DeclareMemType LLMemType::MTYPE_VERTEX_CONSTRUCTOR("VertexConstr"); +LLMemType::DeclareMemType LLMemType::MTYPE_VERTEX_DESTRUCTOR("VertexDestr"); +LLMemType::DeclareMemType LLMemType::MTYPE_VERTEX_CREATE_VERTICES("VertexCreateVerts"); +LLMemType::DeclareMemType LLMemType::MTYPE_VERTEX_CREATE_INDICES("VertexCreateIndices"); +LLMemType::DeclareMemType LLMemType::MTYPE_VERTEX_DESTROY_BUFFER("VertexDestroyBuff"); +LLMemType::DeclareMemType LLMemType::MTYPE_VERTEX_DESTROY_INDICES("VertexDestroyIndices"); +LLMemType::DeclareMemType LLMemType::MTYPE_VERTEX_UPDATE_VERTS("VertexUpdateVerts"); +LLMemType::DeclareMemType LLMemType::MTYPE_VERTEX_UPDATE_INDICES("VertexUpdateIndices"); +LLMemType::DeclareMemType LLMemType::MTYPE_VERTEX_ALLOCATE_BUFFER("VertexAllocateBuffer"); +LLMemType::DeclareMemType LLMemType::MTYPE_VERTEX_RESIZE_BUFFER("VertexResizeBuffer"); +LLMemType::DeclareMemType LLMemType::MTYPE_VERTEX_MAP_BUFFER("VertexMapBuffer"); +LLMemType::DeclareMemType LLMemType::MTYPE_VERTEX_MAP_BUFFER_VERTICES("VertexMapBufferVerts"); +LLMemType::DeclareMemType LLMemType::MTYPE_VERTEX_MAP_BUFFER_INDICES("VertexMapBufferIndices"); +LLMemType::DeclareMemType LLMemType::MTYPE_VERTEX_UNMAP_BUFFER("VertexUnmapBuffer"); +LLMemType::DeclareMemType LLMemType::MTYPE_VERTEX_SET_STRIDE("VertexSetStride"); +LLMemType::DeclareMemType LLMemType::MTYPE_VERTEX_SET_BUFFER("VertexSetBuffer"); +LLMemType::DeclareMemType LLMemType::MTYPE_VERTEX_SETUP_VERTEX_BUFFER("VertexSetupVertBuff"); +LLMemType::DeclareMemType LLMemType::MTYPE_VERTEX_CLEANUP_CLASS("VertexCleanupClass"); + +LLMemType::DeclareMemType LLMemType::MTYPE_SPACE_PARTITION("SpacePartition"); + +LLMemType::DeclareMemType LLMemType::MTYPE_PIPELINE("Pipeline"); +LLMemType::DeclareMemType LLMemType::MTYPE_PIPELINE_INIT("PipelineInit"); +LLMemType::DeclareMemType LLMemType::MTYPE_PIPELINE_CREATE_BUFFERS("PipelineCreateBuffs"); +LLMemType::DeclareMemType LLMemType::MTYPE_PIPELINE_RESTORE_GL("PipelineRestroGL"); +LLMemType::DeclareMemType LLMemType::MTYPE_PIPELINE_UNLOAD_SHADERS("PipelineUnloadShaders"); +LLMemType::DeclareMemType LLMemType::MTYPE_PIPELINE_LIGHTING_DETAIL("PipelineLightingDetail"); +LLMemType::DeclareMemType LLMemType::MTYPE_PIPELINE_GET_POOL_TYPE("PipelineGetPoolType"); +LLMemType::DeclareMemType LLMemType::MTYPE_PIPELINE_ADD_POOL("PipelineAddPool"); +LLMemType::DeclareMemType LLMemType::MTYPE_PIPELINE_ALLOCATE_DRAWABLE("PipelineAllocDrawable"); +LLMemType::DeclareMemType LLMemType::MTYPE_PIPELINE_ADD_OBJECT("PipelineAddObj"); +LLMemType::DeclareMemType LLMemType::MTYPE_PIPELINE_CREATE_OBJECTS("PipelineCreateObjs"); +LLMemType::DeclareMemType LLMemType::MTYPE_PIPELINE_UPDATE_MOVE("PipelineUpdateMove"); +LLMemType::DeclareMemType LLMemType::MTYPE_PIPELINE_UPDATE_GEOM("PipelineUpdateGeom"); +LLMemType::DeclareMemType LLMemType::MTYPE_PIPELINE_MARK_VISIBLE("PipelineMarkVisible"); +LLMemType::DeclareMemType LLMemType::MTYPE_PIPELINE_MARK_MOVED("PipelineMarkMoved"); +LLMemType::DeclareMemType LLMemType::MTYPE_PIPELINE_MARK_SHIFT("PipelineMarkShift"); +LLMemType::DeclareMemType LLMemType::MTYPE_PIPELINE_SHIFT_OBJECTS("PipelineShiftObjs"); +LLMemType::DeclareMemType LLMemType::MTYPE_PIPELINE_MARK_TEXTURED("PipelineMarkTextured"); +LLMemType::DeclareMemType LLMemType::MTYPE_PIPELINE_MARK_REBUILD("PipelineMarkRebuild"); +LLMemType::DeclareMemType LLMemType::MTYPE_PIPELINE_UPDATE_CULL("PipelineUpdateCull"); +LLMemType::DeclareMemType LLMemType::MTYPE_PIPELINE_STATE_SORT("PipelineStateSort"); +LLMemType::DeclareMemType LLMemType::MTYPE_PIPELINE_POST_SORT("PipelinePostSort"); + +LLMemType::DeclareMemType LLMemType::MTYPE_PIPELINE_RENDER_HUD_ELS("PipelineHudEls"); +LLMemType::DeclareMemType LLMemType::MTYPE_PIPELINE_RENDER_HL("PipelineRenderHL"); +LLMemType::DeclareMemType LLMemType::MTYPE_PIPELINE_RENDER_GEOM("PipelineRenderGeom"); +LLMemType::DeclareMemType LLMemType::MTYPE_PIPELINE_RENDER_GEOM_DEFFERRED("PipelineRenderGeomDef"); +LLMemType::DeclareMemType LLMemType::MTYPE_PIPELINE_RENDER_GEOM_POST_DEF("PipelineRenderGeomPostDef"); +LLMemType::DeclareMemType LLMemType::MTYPE_PIPELINE_RENDER_GEOM_SHADOW("PipelineRenderGeomShadow"); +LLMemType::DeclareMemType LLMemType::MTYPE_PIPELINE_RENDER_SELECT("PipelineRenderSelect"); +LLMemType::DeclareMemType LLMemType::MTYPE_PIPELINE_REBUILD_POOLS("PipelineRebuildPools"); +LLMemType::DeclareMemType LLMemType::MTYPE_PIPELINE_QUICK_LOOKUP("PipelineQuickLookup"); +LLMemType::DeclareMemType LLMemType::MTYPE_PIPELINE_RENDER_OBJECTS("PipelineRenderObjs"); +LLMemType::DeclareMemType LLMemType::MTYPE_PIPELINE_GENERATE_IMPOSTOR("PipelineGenImpostors"); +LLMemType::DeclareMemType LLMemType::MTYPE_PIPELINE_RENDER_BLOOM("PipelineRenderBloom"); + +LLMemType::DeclareMemType LLMemType::MTYPE_UPKEEP_POOLS("UpkeepPools"); + +LLMemType::DeclareMemType LLMemType::MTYPE_AVATAR("Avatar"); +LLMemType::DeclareMemType LLMemType::MTYPE_AVATAR_MESH("AvatarMesh"); +LLMemType::DeclareMemType LLMemType::MTYPE_PARTICLES("Particles"); +LLMemType::DeclareMemType LLMemType::MTYPE_REGIONS("Regions"); + +LLMemType::DeclareMemType LLMemType::MTYPE_INVENTORY("Inventory"); +LLMemType::DeclareMemType LLMemType::MTYPE_INVENTORY_DRAW("InventoryDraw"); +LLMemType::DeclareMemType LLMemType::MTYPE_INVENTORY_BUILD_NEW_VIEWS("InventoryBuildNewViews"); +LLMemType::DeclareMemType LLMemType::MTYPE_INVENTORY_DO_FOLDER("InventoryDoFolder"); +LLMemType::DeclareMemType LLMemType::MTYPE_INVENTORY_POST_BUILD("InventoryPostBuild"); +LLMemType::DeclareMemType LLMemType::MTYPE_INVENTORY_FROM_XML("InventoryFromXML"); +LLMemType::DeclareMemType LLMemType::MTYPE_INVENTORY_CREATE_NEW_ITEM("InventoryCreateNewItem"); +LLMemType::DeclareMemType LLMemType::MTYPE_INVENTORY_VIEW_INIT("InventoryViewInit"); +LLMemType::DeclareMemType LLMemType::MTYPE_INVENTORY_VIEW_SHOW("InventoryViewShow"); +LLMemType::DeclareMemType LLMemType::MTYPE_INVENTORY_VIEW_TOGGLE("InventoryViewToggle"); + +LLMemType::DeclareMemType LLMemType::MTYPE_ANIMATION("Animation"); +LLMemType::DeclareMemType LLMemType::MTYPE_VOLUME("Volume"); +LLMemType::DeclareMemType LLMemType::MTYPE_PRIMITIVE("Primitive"); + +LLMemType::DeclareMemType LLMemType::MTYPE_SCRIPT("Script"); +LLMemType::DeclareMemType LLMemType::MTYPE_SCRIPT_RUN("ScriptRun"); +LLMemType::DeclareMemType LLMemType::MTYPE_SCRIPT_BYTECODE("ScriptByteCode"); + +LLMemType::DeclareMemType LLMemType::MTYPE_IO_PUMP("IoPump"); +LLMemType::DeclareMemType LLMemType::MTYPE_IO_TCP("IoTCP"); +LLMemType::DeclareMemType LLMemType::MTYPE_IO_BUFFER("IoBuffer"); +LLMemType::DeclareMemType LLMemType::MTYPE_IO_HTTP_SERVER("IoHttpServer"); +LLMemType::DeclareMemType LLMemType::MTYPE_IO_SD_SERVER("IoSDServer"); +LLMemType::DeclareMemType LLMemType::MTYPE_IO_SD_CLIENT("IoSDClient"); +LLMemType::DeclareMemType LLMemType::MTYPE_IO_URL_REQUEST("IOUrlRequest"); + +LLMemType::DeclareMemType LLMemType::MTYPE_DIRECTX_INIT("DirectXInit"); + +LLMemType::DeclareMemType LLMemType::MTYPE_TEMP1("Temp1"); +LLMemType::DeclareMemType LLMemType::MTYPE_TEMP2("Temp2"); +LLMemType::DeclareMemType LLMemType::MTYPE_TEMP3("Temp3"); +LLMemType::DeclareMemType LLMemType::MTYPE_TEMP4("Temp4"); +LLMemType::DeclareMemType LLMemType::MTYPE_TEMP5("Temp5"); +LLMemType::DeclareMemType LLMemType::MTYPE_TEMP6("Temp6"); +LLMemType::DeclareMemType LLMemType::MTYPE_TEMP7("Temp7"); +LLMemType::DeclareMemType LLMemType::MTYPE_TEMP8("Temp8"); +LLMemType::DeclareMemType LLMemType::MTYPE_TEMP9("Temp9"); + +LLMemType::DeclareMemType LLMemType::MTYPE_OTHER("Other"); + + +LLMemType::DeclareMemType::DeclareMemType(char const * st) +{ + mID = (S32)mNameList.size(); + mName = st; + + mNameList.push_back(mName); +} + +LLMemType::DeclareMemType::~DeclareMemType() +{ +} + +LLMemType::LLMemType(LLMemType::DeclareMemType& dt) +{ + mTypeIndex = dt.mID; + LLAllocator::pushMemType(dt.mID); +} + +LLMemType::~LLMemType() +{ + LLAllocator::popMemType(); +} + +char const * LLMemType::getNameFromID(S32 id) +{ + if (id < 0 || id >= (S32)DeclareMemType::mNameList.size()) + { + return "INVALID"; + } + + return DeclareMemType::mNameList[id]; +} + diff --git a/indra/llcommon/llmemtype.h b/indra/llcommon/llmemtype.h index b7cef4de4ae33cfaf51250797e31aa9223c7a40b..12310fcdb4fed67f4a58fddf3a68eea0deba0dec 100644 --- a/indra/llcommon/llmemtype.h +++ b/indra/llcommon/llmemtype.h @@ -36,131 +36,210 @@ //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- -class LLMemType; - -extern void* ll_allocate (size_t size); -extern void ll_release (void *p); +//---------------------------------------------------------------------------- +#include "linden_common.h" //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! // WARNING: Never commit with MEM_TRACK_MEM == 1 //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! #define MEM_TRACK_MEM (0 && LL_WINDOWS) -#define MEM_TRACK_TYPE (1 && MEM_TRACK_MEM) -#if MEM_TRACK_TYPE -#define MEM_DUMP_DATA 1 -#define MEM_TYPE_NEW(T) \ -static void* operator new(size_t s) { LLMemType mt(T); return ll_allocate(s); } \ -static void operator delete(void* p) { ll_release(p); } +#include <vector> -#else #define MEM_TYPE_NEW(T) -#endif // MEM_TRACK_TYPE - - -//---------------------------------------------------------------------------- class LLMemType { public: - // Also update sTypeDesc in llmemory.cpp - enum EMemType - { - MTYPE_INIT, - MTYPE_STARTUP, - MTYPE_MAIN, - MTYPE_IMAGEBASE, - MTYPE_IMAGERAW, - MTYPE_IMAGEFORMATTED, - - MTYPE_APPFMTIMAGE, - MTYPE_APPRAWIMAGE, - MTYPE_APPAUXRAWIMAGE, - - MTYPE_DRAWABLE, - MTYPE_OBJECT, - MTYPE_VERTEX_DATA, - MTYPE_SPACE_PARTITION, - MTYPE_PIPELINE, - MTYPE_AVATAR, - MTYPE_AVATAR_MESH, - MTYPE_PARTICLES, - MTYPE_REGIONS, - MTYPE_INVENTORY, - MTYPE_ANIMATION, - MTYPE_VOLUME, - MTYPE_PRIMITIVE, - - MTYPE_NETWORK, - MTYPE_PHYSICS, - MTYPE_INTERESTLIST, - - MTYPE_SCRIPT, - MTYPE_SCRIPT_RUN, - MTYPE_SCRIPT_BYTECODE, - - MTYPE_IO_PUMP, - MTYPE_IO_TCP, - MTYPE_IO_BUFFER, - MTYPE_IO_HTTP_SERVER, - MTYPE_IO_SD_SERVER, - MTYPE_IO_SD_CLIENT, - MTYPE_IO_URL_REQUEST, - - MTYPE_TEMP1, - MTYPE_TEMP2, - MTYPE_TEMP3, - MTYPE_TEMP4, - MTYPE_TEMP5, - MTYPE_TEMP6, - MTYPE_TEMP7, - MTYPE_TEMP8, - MTYPE_TEMP9, - - MTYPE_OTHER, // Special, used by display code + // class we'll initialize all instances of as + // static members of MemType. Then use + // to construct any new mem type. + class DeclareMemType + { + public: + DeclareMemType(char const * st); + ~DeclareMemType(); + + S32 mID; + char const * mName; - MTYPE_NUM_TYPES + // array so we can map an index ID to Name + static std::vector<char const *> mNameList; }; - enum { MTYPE_MAX_DEPTH = 64 }; - -public: - LLMemType(EMemType type) - { -#if MEM_TRACK_TYPE - if (type < 0 || type >= MTYPE_NUM_TYPES) - llerrs << "LLMemType error" << llendl; - if (sCurDepth < 0 || sCurDepth >= MTYPE_MAX_DEPTH) - llerrs << "LLMemType error" << llendl; - sType[sCurDepth] = sCurType; - sCurDepth++; - sCurType = type; -#endif - } - ~LLMemType() - { -#if MEM_TRACK_TYPE - sCurDepth--; - sCurType = sType[sCurDepth]; -#endif - } - static void reset(); - static void printMem(); + LLMemType(DeclareMemType& dt); + ~LLMemType(); + + static char const * getNameFromID(S32 id); + + static DeclareMemType MTYPE_INIT; + static DeclareMemType MTYPE_STARTUP; + static DeclareMemType MTYPE_MAIN; + static DeclareMemType MTYPE_FRAME; + + static DeclareMemType MTYPE_GATHER_INPUT; + static DeclareMemType MTYPE_JOY_KEY; + + static DeclareMemType MTYPE_IDLE; + static DeclareMemType MTYPE_IDLE_PUMP; + static DeclareMemType MTYPE_IDLE_NETWORK; + static DeclareMemType MTYPE_IDLE_UPDATE_REGIONS; + static DeclareMemType MTYPE_IDLE_UPDATE_VIEWER_REGION; + static DeclareMemType MTYPE_IDLE_UPDATE_SURFACE; + static DeclareMemType MTYPE_IDLE_UPDATE_PARCEL_OVERLAY; + static DeclareMemType MTYPE_IDLE_AUDIO; + + static DeclareMemType MTYPE_CACHE_PROCESS_PENDING; + static DeclareMemType MTYPE_CACHE_PROCESS_PENDING_ASKS; + static DeclareMemType MTYPE_CACHE_PROCESS_PENDING_REPLIES; + + static DeclareMemType MTYPE_MESSAGE_CHECK_ALL; + static DeclareMemType MTYPE_MESSAGE_PROCESS_ACKS; + + static DeclareMemType MTYPE_RENDER; + static DeclareMemType MTYPE_SLEEP; + + static DeclareMemType MTYPE_NETWORK; + static DeclareMemType MTYPE_PHYSICS; + static DeclareMemType MTYPE_INTERESTLIST; + + static DeclareMemType MTYPE_IMAGEBASE; + static DeclareMemType MTYPE_IMAGERAW; + static DeclareMemType MTYPE_IMAGEFORMATTED; -public: -#if MEM_TRACK_TYPE - static S32 sCurDepth; - static S32 sCurType; - static S32 sType[MTYPE_MAX_DEPTH]; - static S32 sMemCount[MTYPE_NUM_TYPES]; - static S32 sMaxMemCount[MTYPE_NUM_TYPES]; - static S32 sNewCount[MTYPE_NUM_TYPES]; - static S32 sOverheadMem; - static const char* sTypeDesc[MTYPE_NUM_TYPES]; -#endif - static S32 sTotalMem; - static S32 sMaxTotalMem; + static DeclareMemType MTYPE_APPFMTIMAGE; + static DeclareMemType MTYPE_APPRAWIMAGE; + static DeclareMemType MTYPE_APPAUXRAWIMAGE; + + static DeclareMemType MTYPE_DRAWABLE; + + static DeclareMemType MTYPE_OBJECT; + static DeclareMemType MTYPE_OBJECT_PROCESS_UPDATE; + static DeclareMemType MTYPE_OBJECT_PROCESS_UPDATE_CORE; + + static DeclareMemType MTYPE_DISPLAY; + static DeclareMemType MTYPE_DISPLAY_UPDATE; + static DeclareMemType MTYPE_DISPLAY_UPDATE_CAMERA; + static DeclareMemType MTYPE_DISPLAY_UPDATE_GEOM; + static DeclareMemType MTYPE_DISPLAY_SWAP; + static DeclareMemType MTYPE_DISPLAY_UPDATE_HUD; + static DeclareMemType MTYPE_DISPLAY_GEN_REFLECTION; + static DeclareMemType MTYPE_DISPLAY_IMAGE_UPDATE; + static DeclareMemType MTYPE_DISPLAY_STATE_SORT; + static DeclareMemType MTYPE_DISPLAY_SKY; + static DeclareMemType MTYPE_DISPLAY_RENDER_GEOM; + static DeclareMemType MTYPE_DISPLAY_RENDER_FLUSH; + static DeclareMemType MTYPE_DISPLAY_RENDER_UI; + static DeclareMemType MTYPE_DISPLAY_RENDER_ATTACHMENTS; + + static DeclareMemType MTYPE_VERTEX_DATA; + static DeclareMemType MTYPE_VERTEX_CONSTRUCTOR; + static DeclareMemType MTYPE_VERTEX_DESTRUCTOR; + static DeclareMemType MTYPE_VERTEX_CREATE_VERTICES; + static DeclareMemType MTYPE_VERTEX_CREATE_INDICES; + static DeclareMemType MTYPE_VERTEX_DESTROY_BUFFER; + static DeclareMemType MTYPE_VERTEX_DESTROY_INDICES; + static DeclareMemType MTYPE_VERTEX_UPDATE_VERTS; + static DeclareMemType MTYPE_VERTEX_UPDATE_INDICES; + static DeclareMemType MTYPE_VERTEX_ALLOCATE_BUFFER; + static DeclareMemType MTYPE_VERTEX_RESIZE_BUFFER; + static DeclareMemType MTYPE_VERTEX_MAP_BUFFER; + static DeclareMemType MTYPE_VERTEX_MAP_BUFFER_VERTICES; + static DeclareMemType MTYPE_VERTEX_MAP_BUFFER_INDICES; + static DeclareMemType MTYPE_VERTEX_UNMAP_BUFFER; + static DeclareMemType MTYPE_VERTEX_SET_STRIDE; + static DeclareMemType MTYPE_VERTEX_SET_BUFFER; + static DeclareMemType MTYPE_VERTEX_SETUP_VERTEX_BUFFER; + static DeclareMemType MTYPE_VERTEX_CLEANUP_CLASS; + + static DeclareMemType MTYPE_SPACE_PARTITION; + + static DeclareMemType MTYPE_PIPELINE; + static DeclareMemType MTYPE_PIPELINE_INIT; + static DeclareMemType MTYPE_PIPELINE_CREATE_BUFFERS; + static DeclareMemType MTYPE_PIPELINE_RESTORE_GL; + static DeclareMemType MTYPE_PIPELINE_UNLOAD_SHADERS; + static DeclareMemType MTYPE_PIPELINE_LIGHTING_DETAIL; + static DeclareMemType MTYPE_PIPELINE_GET_POOL_TYPE; + static DeclareMemType MTYPE_PIPELINE_ADD_POOL; + static DeclareMemType MTYPE_PIPELINE_ALLOCATE_DRAWABLE; + static DeclareMemType MTYPE_PIPELINE_ADD_OBJECT; + static DeclareMemType MTYPE_PIPELINE_CREATE_OBJECTS; + static DeclareMemType MTYPE_PIPELINE_UPDATE_MOVE; + static DeclareMemType MTYPE_PIPELINE_UPDATE_GEOM; + static DeclareMemType MTYPE_PIPELINE_MARK_VISIBLE; + static DeclareMemType MTYPE_PIPELINE_MARK_MOVED; + static DeclareMemType MTYPE_PIPELINE_MARK_SHIFT; + static DeclareMemType MTYPE_PIPELINE_SHIFT_OBJECTS; + static DeclareMemType MTYPE_PIPELINE_MARK_TEXTURED; + static DeclareMemType MTYPE_PIPELINE_MARK_REBUILD; + static DeclareMemType MTYPE_PIPELINE_UPDATE_CULL; + static DeclareMemType MTYPE_PIPELINE_STATE_SORT; + static DeclareMemType MTYPE_PIPELINE_POST_SORT; + + static DeclareMemType MTYPE_PIPELINE_RENDER_HUD_ELS; + static DeclareMemType MTYPE_PIPELINE_RENDER_HL; + static DeclareMemType MTYPE_PIPELINE_RENDER_GEOM; + static DeclareMemType MTYPE_PIPELINE_RENDER_GEOM_DEFFERRED; + static DeclareMemType MTYPE_PIPELINE_RENDER_GEOM_POST_DEF; + static DeclareMemType MTYPE_PIPELINE_RENDER_GEOM_SHADOW; + static DeclareMemType MTYPE_PIPELINE_RENDER_SELECT; + static DeclareMemType MTYPE_PIPELINE_REBUILD_POOLS; + static DeclareMemType MTYPE_PIPELINE_QUICK_LOOKUP; + static DeclareMemType MTYPE_PIPELINE_RENDER_OBJECTS; + static DeclareMemType MTYPE_PIPELINE_GENERATE_IMPOSTOR; + static DeclareMemType MTYPE_PIPELINE_RENDER_BLOOM; + + static DeclareMemType MTYPE_UPKEEP_POOLS; + + static DeclareMemType MTYPE_AVATAR; + static DeclareMemType MTYPE_AVATAR_MESH; + static DeclareMemType MTYPE_PARTICLES; + static DeclareMemType MTYPE_REGIONS; + + static DeclareMemType MTYPE_INVENTORY; + static DeclareMemType MTYPE_INVENTORY_DRAW; + static DeclareMemType MTYPE_INVENTORY_BUILD_NEW_VIEWS; + static DeclareMemType MTYPE_INVENTORY_DO_FOLDER; + static DeclareMemType MTYPE_INVENTORY_POST_BUILD; + static DeclareMemType MTYPE_INVENTORY_FROM_XML; + static DeclareMemType MTYPE_INVENTORY_CREATE_NEW_ITEM; + static DeclareMemType MTYPE_INVENTORY_VIEW_INIT; + static DeclareMemType MTYPE_INVENTORY_VIEW_SHOW; + static DeclareMemType MTYPE_INVENTORY_VIEW_TOGGLE; + + static DeclareMemType MTYPE_ANIMATION; + static DeclareMemType MTYPE_VOLUME; + static DeclareMemType MTYPE_PRIMITIVE; + + static DeclareMemType MTYPE_SCRIPT; + static DeclareMemType MTYPE_SCRIPT_RUN; + static DeclareMemType MTYPE_SCRIPT_BYTECODE; + + static DeclareMemType MTYPE_IO_PUMP; + static DeclareMemType MTYPE_IO_TCP; + static DeclareMemType MTYPE_IO_BUFFER; + static DeclareMemType MTYPE_IO_HTTP_SERVER; + static DeclareMemType MTYPE_IO_SD_SERVER; + static DeclareMemType MTYPE_IO_SD_CLIENT; + static DeclareMemType MTYPE_IO_URL_REQUEST; + + static DeclareMemType MTYPE_DIRECTX_INIT; + + static DeclareMemType MTYPE_TEMP1; + static DeclareMemType MTYPE_TEMP2; + static DeclareMemType MTYPE_TEMP3; + static DeclareMemType MTYPE_TEMP4; + static DeclareMemType MTYPE_TEMP5; + static DeclareMemType MTYPE_TEMP6; + static DeclareMemType MTYPE_TEMP7; + static DeclareMemType MTYPE_TEMP8; + static DeclareMemType MTYPE_TEMP9; + + static DeclareMemType MTYPE_OTHER; // Special; used by display code + + S32 mTypeIndex; }; //---------------------------------------------------------------------------- diff --git a/indra/llcommon/llstacktrace.cpp b/indra/llcommon/llstacktrace.cpp new file mode 100644 index 0000000000000000000000000000000000000000..4be91b5b11f48b8128f5ba50b796da73b4102a99 --- /dev/null +++ b/indra/llcommon/llstacktrace.cpp @@ -0,0 +1,141 @@ +/** + * @file llstacktrace.cpp + * @brief stack tracing functionality + * + * $LicenseInfo:firstyear=2001&license=viewergpl$ + * + * Copyright (c) 2001-2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#include "llstacktrace.h" + +#ifdef LL_WINDOWS + +#include <iostream> +#include <sstream> + +#include "windows.h" +#include "Dbghelp.h" + +typedef USHORT NTAPI RtlCaptureStackBackTrace_Function( + IN ULONG frames_to_skip, + IN ULONG frames_to_capture, + OUT PVOID *backtrace, + OUT PULONG backtrace_hash); + +static RtlCaptureStackBackTrace_Function* const RtlCaptureStackBackTrace_fn = + (RtlCaptureStackBackTrace_Function*) + GetProcAddress(GetModuleHandleA("ntdll.dll"), "RtlCaptureStackBackTrace"); + +bool ll_get_stack_trace(std::vector<std::string>& lines) +{ + const S32 MAX_STACK_DEPTH = 32; + const S32 STRING_NAME_LENGTH = 200; + const S32 FRAME_SKIP = 2; + static BOOL symbolsLoaded = false; + static BOOL firstCall = true; + + HANDLE hProc = GetCurrentProcess(); + + // load the symbols if they're not loaded + if(!symbolsLoaded && firstCall) + { + symbolsLoaded = SymInitialize(hProc, NULL, true); + firstCall = false; + } + + // if loaded, get the call stack + if(symbolsLoaded) + { + // create the frames to hold the addresses + void* frames[MAX_STACK_DEPTH]; + memset(frames, 0, sizeof(void*)*MAX_STACK_DEPTH); + S32 depth = 0; + + // get the addresses + depth = RtlCaptureStackBackTrace_fn(FRAME_SKIP, MAX_STACK_DEPTH, frames, NULL); + + IMAGEHLP_LINE64 line; + memset(&line, 0, sizeof(IMAGEHLP_LINE64)); + line.SizeOfStruct = sizeof(IMAGEHLP_LINE64); + + // create something to hold address info + PIMAGEHLP_SYMBOL64 pSym; + pSym = (PIMAGEHLP_SYMBOL64)malloc(sizeof(IMAGEHLP_SYMBOL64) + STRING_NAME_LENGTH); + memset(pSym, 0, sizeof(IMAGEHLP_SYMBOL64) + STRING_NAME_LENGTH); + pSym->MaxNameLength = STRING_NAME_LENGTH; + pSym->SizeOfStruct = sizeof(IMAGEHLP_SYMBOL64); + + // get address info for each address frame + // and store + for(S32 i=0; i < depth; i++) + { + std::stringstream stack_line; + BOOL ret; + + DWORD64 addr = (DWORD64)frames[i]; + ret = SymGetSymFromAddr64(hProc, addr, 0, pSym); + if(ret) + { + stack_line << pSym->Name << " "; + } + + DWORD dummy; + ret = SymGetLineFromAddr64(hProc, addr, &dummy, &line); + if(ret) + { + std::string file_name = line.FileName; + std::string::size_type index = file_name.rfind("\\"); + stack_line << file_name.substr(index + 1, file_name.size()) << ":" << line.LineNumber; + } + + lines.push_back(stack_line.str()); + } + + free(pSym); + + // TODO: figure out a way to cleanup symbol loading + // Not hugely necessary, however. + //SymCleanup(hProc); + return true; + } + else + { + lines.push_back("Stack Trace Failed. PDB symbol info not loaded"); + } + + return false; +} + +#else + +bool ll_get_stack_trace(std::vector<std::string>& lines) +{ + return false; +} + +#endif + diff --git a/indra/llcommon/llstacktrace.h b/indra/llcommon/llstacktrace.h new file mode 100644 index 0000000000000000000000000000000000000000..609b934a9745616974c1a36934561650110e0077 --- /dev/null +++ b/indra/llcommon/llstacktrace.h @@ -0,0 +1,44 @@ +/** + * @file llstacktrace.h + * @brief stack trace functions + * + * $LicenseInfo:firstyear=2001&license=viewergpl$ + * + * Copyright (c) 2001-2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + + +#ifndef LL_LLSTACKTRACE_H +#define LL_LLSTACKTRACE_H + +#include "stdtypes.h" +#include <vector> +#include <string> + +bool ll_get_stack_trace(std::vector<std::string>& lines); + +#endif + diff --git a/indra/llcommon/llstat.cpp b/indra/llcommon/llstat.cpp index eab1241b5cec0897641143d18c92afe5bd91b7e6..90dae117937254d03e8f2fabe78bc8ed23c6cecd 100644 --- a/indra/llcommon/llstat.cpp +++ b/indra/llcommon/llstat.cpp @@ -63,7 +63,7 @@ class LLStatsConfigFile : public LLLiveFile static std::string filename(); protected: - /* virtual */ void loadFile(); + /* virtual */ bool loadFile(); public: void init(LLPerfStats* statsp); @@ -95,12 +95,12 @@ LLStatsConfigFile& LLStatsConfigFile::instance() /* virtual */ // Load and parse the stats configuration file -void LLStatsConfigFile::loadFile() +bool LLStatsConfigFile::loadFile() { if (!mStatsp) { llwarns << "Tries to load performance configure file without initializing LPerfStats" << llendl; - return; + return false; } mChanged = true; @@ -114,7 +114,7 @@ void LLStatsConfigFile::loadFile() { llinfos << "Performance statistics configuration file ill-formed, not recording statistics" << llendl; mStatsp->setReportPerformanceDuration( 0.f ); - return; + return false; } } else @@ -124,7 +124,7 @@ void LLStatsConfigFile::loadFile() llinfos << "Performance statistics configuration file deleted, not recording statistics" << llendl; mStatsp->setReportPerformanceDuration( 0.f ); } - return; + return true; } } @@ -160,6 +160,7 @@ void LLStatsConfigFile::loadFile() { llinfos << "Performance stats recording turned off" << llendl; } + return true; } diff --git a/indra/llcommon/llstring.h b/indra/llcommon/llstring.h index da1900eadf9d0285893bda1275215f74a7190995..91b706a5beed161a762f75c17b17319e9cde54d5 100644 --- a/indra/llcommon/llstring.h +++ b/indra/llcommon/llstring.h @@ -147,7 +147,7 @@ struct char_traits<U16> }; #endif -class LL_COMMON_API LLStringOps +class LLStringOps { private: static long sltOffset; @@ -194,13 +194,13 @@ class LL_COMMON_API LLStringOps * @brief Return a string constructed from in without crashing if the * pointer is NULL. */ -LL_COMMON_API std::string ll_safe_string(const char* in); -LL_COMMON_API std::string ll_safe_string(const char* in, S32 maxlen); +std::string ll_safe_string(const char* in); +std::string ll_safe_string(const char* in, S32 maxlen); // Allowing assignments from non-strings into format_map_t is apparently // *really* error-prone, so subclass std::string with just basic c'tors. -class LL_COMMON_API LLFormatMapString +class LLFormatMapString { public: LLFormatMapString() {}; @@ -254,7 +254,25 @@ class LLStringUtilBase // True if this is the head of s. static BOOL isHead( const std::basic_string<T>& string, const T* s ); - + + /** + * @brief Returns true if string starts with substr + * + * If etither string or substr are empty, this method returns false. + */ + static bool startsWith( + const std::basic_string<T>& string, + const std::basic_string<T>& substr); + + /** + * @brief Returns true if string ends in substr + * + * If etither string or substr are empty, this method returns false. + */ + static bool endsWith( + const std::basic_string<T>& string, + const std::basic_string<T>& substr); + static void addCRLF(std::basic_string<T>& string); static void removeCRLF(std::basic_string<T>& string); @@ -362,7 +380,7 @@ struct LLDictionaryLess * This function works on bytes rather than glyphs, so this will * incorrectly truncate non-single byte strings. * Use utf8str_truncate() for utf8 strings - * @return a copy of in string minus the trailing count characters. + * @return a copy of in string minus the trailing count bytes. */ inline std::string chop_tail_copy( const std::string& in, @@ -375,7 +393,7 @@ inline std::string chop_tail_copy( * @brief This translates a nybble stored as a hex value from 0-f back * to a nybble in the low order bits of the return byte. */ -LL_COMMON_API U8 hex_as_nybble(char hex); +U8 hex_as_nybble(char hex); /** * @brief read the contents of a file into a string. @@ -386,8 +404,8 @@ LL_COMMON_API U8 hex_as_nybble(char hex); * @param filename The full name of the file to read. * @return Returns true on success. If false, str is unmodified. */ -LL_COMMON_API bool _read_file_into_string(std::string& str, const std::string& filename); -LL_COMMON_API bool iswindividual(llwchar elem); +bool _read_file_into_string(std::string& str, const std::string& filename); +bool iswindividual(llwchar elem); /** * Unicode support @@ -396,52 +414,52 @@ LL_COMMON_API bool iswindividual(llwchar elem); // Make the incoming string a utf8 string. Replaces any unknown glyph // with the UNKOWN_CHARACTER. Once any unknown glph is found, the rest // of the data may not be recovered. -LL_COMMON_API std::string rawstr_to_utf8(const std::string& raw); +std::string rawstr_to_utf8(const std::string& raw); // // We should never use UTF16 except when communicating with Win32! // typedef std::basic_string<U16> llutf16string; -LL_COMMON_API LLWString utf16str_to_wstring(const llutf16string &utf16str, S32 len); -LL_COMMON_API LLWString utf16str_to_wstring(const llutf16string &utf16str); +LLWString utf16str_to_wstring(const llutf16string &utf16str, S32 len); +LLWString utf16str_to_wstring(const llutf16string &utf16str); -LL_COMMON_API llutf16string wstring_to_utf16str(const LLWString &utf32str, S32 len); -LL_COMMON_API llutf16string wstring_to_utf16str(const LLWString &utf32str); +llutf16string wstring_to_utf16str(const LLWString &utf32str, S32 len); +llutf16string wstring_to_utf16str(const LLWString &utf32str); -LL_COMMON_API llutf16string utf8str_to_utf16str ( const std::string& utf8str, S32 len); -LL_COMMON_API llutf16string utf8str_to_utf16str ( const std::string& utf8str ); +llutf16string utf8str_to_utf16str ( const std::string& utf8str, S32 len); +llutf16string utf8str_to_utf16str ( const std::string& utf8str ); -LL_COMMON_API LLWString utf8str_to_wstring(const std::string &utf8str, S32 len); -LL_COMMON_API LLWString utf8str_to_wstring(const std::string &utf8str); +LLWString utf8str_to_wstring(const std::string &utf8str, S32 len); +LLWString utf8str_to_wstring(const std::string &utf8str); // Same function, better name. JC inline LLWString utf8string_to_wstring(const std::string& utf8_string) { return utf8str_to_wstring(utf8_string); } // -LL_COMMON_API S32 wchar_to_utf8chars(llwchar inchar, char* outchars); +S32 wchar_to_utf8chars(llwchar inchar, char* outchars); -LL_COMMON_API std::string wstring_to_utf8str(const LLWString &utf32str, S32 len); -LL_COMMON_API std::string wstring_to_utf8str(const LLWString &utf32str); +std::string wstring_to_utf8str(const LLWString &utf32str, S32 len); +std::string wstring_to_utf8str(const LLWString &utf32str); -LL_COMMON_API std::string utf16str_to_utf8str(const llutf16string &utf16str, S32 len); -LL_COMMON_API std::string utf16str_to_utf8str(const llutf16string &utf16str); +std::string utf16str_to_utf8str(const llutf16string &utf16str, S32 len); +std::string utf16str_to_utf8str(const llutf16string &utf16str); // Length of this UTF32 string in bytes when transformed to UTF8 -LL_COMMON_API S32 wstring_utf8_length(const LLWString& wstr); +S32 wstring_utf8_length(const LLWString& wstr); // Length in bytes of this wide char in a UTF8 string -LL_COMMON_API S32 wchar_utf8_length(const llwchar wc); +S32 wchar_utf8_length(const llwchar wc); -LL_COMMON_API std::string utf8str_tolower(const std::string& utf8str); +std::string utf8str_tolower(const std::string& utf8str); // Length in llwchar (UTF-32) of the first len units (16 bits) of the given UTF-16 string. -LL_COMMON_API S32 utf16str_wstring_length(const llutf16string &utf16str, S32 len); +S32 utf16str_wstring_length(const llutf16string &utf16str, S32 len); // Length in utf16string (UTF-16) of wlen wchars beginning at woffset. -LL_COMMON_API S32 wstring_utf16_length(const LLWString & wstr, S32 woffset, S32 wlen); +S32 wstring_utf16_length(const LLWString & wstr, S32 woffset, S32 wlen); // Length in wstring (i.e., llwchar count) of a part of a wstring specified by utf16 length (i.e., utf16 units.) -LL_COMMON_API S32 wstring_wstring_length_from_utf16_length(const LLWString & wstr, S32 woffset, S32 utf16_length, BOOL *unaligned = NULL); +S32 wstring_wstring_length_from_utf16_length(const LLWString & wstr, S32 woffset, S32 utf16_length, BOOL *unaligned = NULL); /** * @brief Properly truncate a utf8 string to a maximum byte count. @@ -453,11 +471,11 @@ LL_COMMON_API S32 wstring_wstring_length_from_utf16_length(const LLWString & wst * @param max_len The maximum number of bytes in the return value. * @return Returns a valid utf8 string with byte count <= max_len. */ -LL_COMMON_API std::string utf8str_truncate(const std::string& utf8str, const S32 max_len); +std::string utf8str_truncate(const std::string& utf8str, const S32 max_len); -LL_COMMON_API std::string utf8str_trim(const std::string& utf8str); +std::string utf8str_trim(const std::string& utf8str); -LL_COMMON_API S32 utf8str_compare_insensitive( +S32 utf8str_compare_insensitive( const std::string& lhs, const std::string& rhs); @@ -468,17 +486,17 @@ LL_COMMON_API S32 utf8str_compare_insensitive( * @param target_char The wchar to be replaced * @param replace_char The wchar which is written on replace */ -LL_COMMON_API std::string utf8str_substChar( +std::string utf8str_substChar( const std::string& utf8str, const llwchar target_char, const llwchar replace_char); -LL_COMMON_API std::string utf8str_makeASCII(const std::string& utf8str); +std::string utf8str_makeASCII(const std::string& utf8str); // Hack - used for evil notecards. -LL_COMMON_API std::string mbcsstring_makeASCII(const std::string& str); +std::string mbcsstring_makeASCII(const std::string& str); -LL_COMMON_API std::string utf8str_removeCRLF(const std::string& utf8str); +std::string utf8str_removeCRLF(const std::string& utf8str); #if LL_WINDOWS @@ -503,21 +521,14 @@ LL_COMMON_API std::string utf8str_removeCRLF(const std::string& utf8str); * formatted string. * */ - -// Deal with the differeneces on Windows -namespace snprintf_hack -{ - LL_COMMON_API int snprintf(char *str, size_t size, const char *format, ...); -} - -using snprintf_hack::snprintf; +int safe_snprintf(char* str, size_t size, const char* format, ...); /** * @brief Convert a wide string to std::string * * This replaces the unsafe W2A macro from ATL. */ -LL_COMMON_API std::string ll_convert_wide_to_string(const wchar_t* in); +std::string ll_convert_wide_to_string(const wchar_t* in); //@} #endif // LL_WINDOWS @@ -540,7 +551,7 @@ namespace LLStringFn * with zero non-printable characters. * @param The replacement character. use LL_UNKNOWN_CHAR if unsure. */ - LL_COMMON_API void replace_nonprintable_in_ascii( + void replace_nonprintable_in_ascii( std::basic_string<char>& string, char replacement); @@ -554,7 +565,7 @@ namespace LLStringFn * with zero non-printable characters and zero pipe characters. * @param The replacement character. use LL_UNKNOWN_CHAR if unsure. */ - LL_COMMON_API void replace_nonprintable_and_pipe_in_ascii(std::basic_string<char>& str, + void replace_nonprintable_and_pipe_in_ascii(std::basic_string<char>& str, char replacement); @@ -563,7 +574,7 @@ namespace LLStringFn * Returns a copy of the string with those characters removed. * Works with US ASCII and UTF-8 encoded strings. JC */ - LL_COMMON_API std::string strip_invalid_xml(const std::string& input); + std::string strip_invalid_xml(const std::string& input); /** @@ -574,7 +585,7 @@ namespace LLStringFn * with zero non-printable characters. * @param The replacement character. use LL_UNKNOWN_CHAR if unsure. */ - LL_COMMON_API void replace_ascii_controlchars( + void replace_ascii_controlchars( std::basic_string<char>& string, char replacement); } @@ -757,15 +768,16 @@ bool LLStringUtilBase<T>::formatDatetime(std::basic_string<T>& replacement, std: { S32 secFromEpoch = (long) substitutions["datetime"].asInteger(); - if (param == "local") + if (param == "local") // local { secFromEpoch -= LLStringOps::getLocalTimeOffset(); } - else if (param != "utc") + else if (param != "utc") // slt { secFromEpoch -= LLStringOps::getSltOffset(); } - + + // if never fell into those two ifs above, param must be utc if (secFromEpoch < 0) secFromEpoch = 0; LLDate * datetime = new LLDate((F64)secFromEpoch); @@ -1251,6 +1263,30 @@ BOOL LLStringUtilBase<T>::isHead( const std::basic_string<T>& string, const T* s } } +// static +template<class T> +bool LLStringUtilBase<T>::startsWith( + const std::basic_string<T>& string, + const std::basic_string<T>& substr) +{ + if(string.empty() || (substr.empty())) return false; + if(0 == string.find(substr)) return true; + return false; +} + +// static +template<class T> +bool LLStringUtilBase<T>::endsWith( + const std::basic_string<T>& string, + const std::basic_string<T>& substr) +{ + if(string.empty() || (substr.empty())) return false; + std::string::size_type idx = string.rfind(substr); + if(std::string::npos == idx) return false; + return (idx == (string.size() - substr.size())); +} + + template<class T> BOOL LLStringUtilBase<T>::convertToBOOL(const std::basic_string<T>& string, BOOL& value) { diff --git a/indra/llcommon/lltimer.cpp b/indra/llcommon/lltimer.cpp index f8066d56ede84d455ed6b80aa913c605b566379b..ea5b0c03ef18e8cadf136d85d5cfbd4d2f0d1284 100644 --- a/indra/llcommon/lltimer.cpp +++ b/indra/llcommon/lltimer.cpp @@ -581,7 +581,7 @@ LLEventTimer::~LLEventTimer() void LLEventTimer::updateClass() { std::list<LLEventTimer*> completed_timers; - for (instance_iter iter = instancesBegin(); iter != instancesEnd(); ) + for (instance_iter iter = beginInstances(); iter != endInstances(); ) { LLEventTimer* timer = *iter++; F32 et = timer->mEventTimer.getElapsedTimeF32(); diff --git a/indra/llcommon/lltreeiterators.h b/indra/llcommon/lltreeiterators.h index 7ab94b0e6d0da640de34f7f3cfe21846f4807c4d..c946566e842e8d66a8440e39c6dacce002bcf288 100644 --- a/indra/llcommon/lltreeiterators.h +++ b/indra/llcommon/lltreeiterators.h @@ -356,7 +356,7 @@ class LLTreeDFSIter: public LLBaseIter<LLTreeDFSIter<NODE, CHILDITER>, NODE> LLTreeDFSIter() {} /// flags iterator logic to skip traversing children of current node on next increment - void skipChildren(bool skip = true) { mSkipChildren = skip; } + void skipDescendants(bool skip = true) { mSkipChildren = skip; } private: /// leverage boost::iterator_facade @@ -453,7 +453,8 @@ class LLTreeDFSPostIter: public LLBaseIter<LLTreeDFSPostIter<NODE, CHILDITER>, N /// each node. LLTreeDFSPostIter(const ptr_type& node, const func_type& beginfunc, const func_type& endfunc): mBeginFunc(beginfunc), - mEndFunc(endfunc) + mEndFunc(endfunc), + mSkipAncestors(false) { if (! node) return; @@ -463,6 +464,9 @@ class LLTreeDFSPostIter: public LLBaseIter<LLTreeDFSPostIter<NODE, CHILDITER>, N /// Instantiate an LLTreeDFSPostIter to mark the end of the walk LLTreeDFSPostIter() {} + /// flags iterator logic to skip traversing ancestors of current node on next increment + void skipAncestors(bool skip = true) { mSkipAncestors = skip; } + private: /// leverage boost::iterator_facade friend class boost::iterator_core_access; @@ -480,11 +484,25 @@ class LLTreeDFSPostIter: public LLBaseIter<LLTreeDFSPostIter<NODE, CHILDITER>, N /// implement dereference/indirection operators ptr_type& dereference() const { return const_cast<ptr_type&>(mPending.back().first); } + struct isOpen + { + bool operator()(const typename list_type::value_type& item) + { + return item.second; + } + }; + /// Call this each time we change mPending.back() -- that is, every time /// we're about to change the value returned by dereference(). If we /// haven't yet pushed the new node's children, do so now. void makeCurrent() { + if (mSkipAncestors) + { + mPending.erase(std::remove_if(mPending.begin(), mPending.end(), isOpen()), mPending.end()); + mSkipAncestors = false; + } + // Once we've popped the last node, this becomes a no-op. if (mPending.empty()) return; @@ -524,11 +542,13 @@ class LLTreeDFSPostIter: public LLBaseIter<LLTreeDFSPostIter<NODE, CHILDITER>, N } /// list of the nodes yet to be processed - list_type mPending; + list_type mPending; /// functor to extract begin() child iterator - func_type mBeginFunc; + func_type mBeginFunc; /// functor to extract end() child iterator - func_type mEndFunc; + func_type mEndFunc; + /// flags logic to skip traversal of ancestors of current node + bool mSkipAncestors; }; /** diff --git a/indra/llcommon/lluri.cpp b/indra/llcommon/lluri.cpp index 3dbc8378753e53731286e97a03b9f89c1a1f9693..f6e8f01f0ef2b84cc4f44ef5e2b36aa332813978 100644 --- a/indra/llcommon/lluri.cpp +++ b/indra/llcommon/lluri.cpp @@ -162,11 +162,10 @@ namespace { return LLURI::escape(s, unreserved() + ":@!$'()*+,="); } // sub_delims - "&;" + ":@" } -// *TODO: Consider using curl. After http textures gets merged everywhere. -// static +//static std::string LLURI::escape(const std::string& str) { - static std::string default_allowed(unreserved() + ":@!$'()*+,=/?&#;"); + static std::string default_allowed = unreserved(); static bool initialized = false; if(!initialized) { diff --git a/indra/llcommon/lluri.h b/indra/llcommon/lluri.h index a35598ffe53ce6f4e92507ccc6579c92acdf39cf..33fd88b4979176a58e3068a31ee326347509aa19 100644 --- a/indra/llcommon/lluri.h +++ b/indra/llcommon/lluri.h @@ -127,27 +127,16 @@ class LL_COMMON_API LLURI /** @name Escaping Utilities */ //@{ /** - * @brief Escape a raw url with a reasonable set of allowed characters. - * - * The default set was chosen to match HTTP urls and general - * guidelines for naming resources. Passing in a raw url does not - * produce well defined results because you really need to know - * which segments are path parts because path parts are supposed - * to be escaped individually. The default set chosen is: + * @brief Escape the string passed except for unreserved * * ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz * 0123456789 * -._~ - * :@!$'()*+,=/?&#; * - * *NOTE: This API is basically broken because it does not - * allow you to specify significant path characters. For example, - * if the filename actually contained a /, then you cannot use - * this function to generate the serialized url for that - * resource. + * @see http://www.ietf.org/rfc/rfc1738.txt * * @param str The raw URI to escape. - * @return Returns the escaped uri or an empty string. + * @return Returns the rfc 1738 escaped uri or an empty string. */ static std::string escape(const std::string& str); diff --git a/indra/llcommon/llversionserver.h b/indra/llcommon/llversionserver.h index c840688a7c939c5a34be008104cf28ec482dd66e..c0fc06ee6e2ea142738027b87f6380a3a6822572 100644 --- a/indra/llcommon/llversionserver.h +++ b/indra/llcommon/llversionserver.h @@ -34,9 +34,9 @@ #define LL_LLVERSIONSERVER_H const S32 LL_VERSION_MAJOR = 1; -const S32 LL_VERSION_MINOR = 27; +const S32 LL_VERSION_MINOR = 29; const S32 LL_VERSION_PATCH = 0; -const S32 LL_VERSION_BUILD = 118914; +const S32 LL_VERSION_BUILD = 120909; const char * const LL_CHANNEL = "Second Life Server"; diff --git a/indra/llcommon/llversionviewer.h b/indra/llcommon/llversionviewer.h index 0730087662a43439eeb3883d9b3e546f2ce24c10..45810a101d66b711ba7b4006e7f0342234008133 100644 --- a/indra/llcommon/llversionviewer.h +++ b/indra/llcommon/llversionviewer.h @@ -38,6 +38,6 @@ const S32 LL_VERSION_MINOR = 0; const S32 LL_VERSION_PATCH = 0; const S32 LL_VERSION_BUILD = 0; -const char * const LL_CHANNEL = "Second Life Release"; +const char * const LL_CHANNEL = "Second Life 2009"; #endif diff --git a/indra/llcommon/tests/llallocator_heap_profile_test.cpp b/indra/llcommon/tests/llallocator_heap_profile_test.cpp new file mode 100644 index 0000000000000000000000000000000000000000..7369fdc8bcd2e503fb54a424c19156aa080b6bd2 --- /dev/null +++ b/indra/llcommon/tests/llallocator_heap_profile_test.cpp @@ -0,0 +1,150 @@ +/** + * @file llallocator_heap_profile_test.cpp + * @author Brad Kittenbrink + * @date 2008-02- + * @brief Test for llallocator_heap_profile.cpp. + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + * + * Copyright (c) 2009-2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#include "../llallocator_heap_profile.h" +#include "../test/lltut.h" + +namespace tut +{ + struct llallocator_heap_profile_data + { + LLAllocatorHeapProfile prof; + + static char const * const sample_win_profile; + // *TODO - get test output from mac/linux tcmalloc + static char const * const sample_mac_profile; + static char const * const sample_lin_profile; + + static char const * const crash_testcase; + }; + typedef test_group<llallocator_heap_profile_data> factory; + typedef factory::object object; +} +namespace +{ + tut::factory llallocator_heap_profile_test_factory("LLAllocatorHeapProfile"); +} + +namespace tut +{ + template<> template<> + void object::test<1>() + { + prof.parse(sample_win_profile); + + ensure_equals("count lines", prof.mLines.size() , 5); + ensure_equals("alloc counts", prof.mLines[0].mLiveCount, 2131854U); + ensure_equals("alloc counts", prof.mLines[0].mLiveSize, 2245710106ULL); + ensure_equals("alloc counts", prof.mLines[0].mTotalCount, 14069198U); + ensure_equals("alloc counts", prof.mLines[0].mTotalSize, 4295177308ULL); + ensure_equals("count markers", prof.mLines[0].mTrace.size(), 0); + ensure_equals("count markers", prof.mLines[1].mTrace.size(), 0); + ensure_equals("count markers", prof.mLines[2].mTrace.size(), 4); + ensure_equals("count markers", prof.mLines[3].mTrace.size(), 6); + ensure_equals("count markers", prof.mLines[4].mTrace.size(), 7); + + //prof.dump(std::cout); + } + + template<> template<> + void object::test<2>() + { + prof.parse(crash_testcase); + + ensure_equals("count lines", prof.mLines.size(), 2); + ensure_equals("alloc counts", prof.mLines[0].mLiveCount, 3U); + ensure_equals("alloc counts", prof.mLines[0].mLiveSize, 1049652ULL); + ensure_equals("alloc counts", prof.mLines[0].mTotalCount, 8U); + ensure_equals("alloc counts", prof.mLines[0].mTotalSize, 1049748ULL); + ensure_equals("count markers", prof.mLines[0].mTrace.size(), 0); + ensure_equals("count markers", prof.mLines[1].mTrace.size(), 0); + + //prof.dump(std::cout); + } + + template<> template<> + void object::test<3>() + { + // test that we don't crash on edge case data + prof.parse(""); + ensure("emtpy on error", prof.mLines.empty()); + + prof.parse("heap profile:"); + ensure("emtpy on error", prof.mLines.empty()); + } + +char const * const llallocator_heap_profile_data::sample_win_profile = +"heap profile: 2131854: 2245710106 [14069198: 4295177308] @\n" +"308592: 1073398388 [966564: 1280998739] @\n" +"462651: 375969538 [1177377: 753561247] @ 2 3 6 1\n" +"314744: 206611283 [2008722: 570934755] @ 2 3 3 7 21 32\n" +"277152: 82862770 [621961: 168503640] @ 2 3 3 7 21 32 87\n" +"\n" +"MAPPED_LIBRARIES:\n" +"00400000-02681000 r-xp 00000000 00:00 0 c:\\proj\\tcmalloc-eval-9\\indra\\build-vc80\\newview\\RelWithDebInfo\\secondlife-bin.exe\n" +"77280000-773a7000 r-xp 00000000 00:00 0 C:\\Windows\\system32\\ntdll.dll\n" +"76df0000-76ecb000 r-xp 00000000 00:00 0 C:\\Windows\\system32\\kernel32.dll\n" +"76000000-76073000 r-xp 00000000 00:00 0 C:\\Windows\\system32\\comdlg32.dll\n" +"75ee0000-75f8a000 r-xp 00000000 00:00 0 C:\\Windows\\system32\\msvcrt.dll\n" +"76c30000-76c88000 r-xp 00000000 00:00 0 C:\\Windows\\system32\\SHLWAPI.dll\n" +"75f90000-75fdb000 r-xp 00000000 00:00 0 C:\\Windows\\system32\\GDI32.dll\n" +"77420000-774bd000 r-xp 00000000 00:00 0 C:\\Windows\\system32\\USER32.dll\n" +"75e10000-75ed6000 r-xp 00000000 00:00 0 C:\\Windows\\system32\\ADVAPI32.dll\n" +"75b00000-75bc2000 r-xp 00000000 00:00 0 C:\\Windows\\system32\\RPCRT4.dll\n" +"72ca0000-72d25000 r-xp 00000000 00:00 0 C:\\Windows\\WinSxS\\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.6001.18000_none_886786f450a74a05\\COMCTL32.dll\n" +"76120000-76c30000 r-xp 00000000 00:00 0 C:\\Windows\\system32\\SHELL32.dll\n" +"71ce0000-71d13000 r-xp 00000000 00:00 0 C:\\Windows\\system32\\DINPUT8.dll\n"; + + +char const * const llallocator_heap_profile_data::crash_testcase = +"heap profile: 3: 1049652 [ 8: 1049748] @\n" +" 3: 1049652 [ 8: 1049748] @\n" +"\n" +"MAPPED_LIBRARIES:\n" +"00400000-004d5000 r-xp 00000000 00:00 0 c:\\code\\linden\\tcmalloc\\indra\\build-vc80\\llcommon\\RelWithDebInfo\\llallocator_test.exe\n" +"7c900000-7c9af000 r-xp 00000000 00:00 0 C:\\WINDOWS\\system32\\ntdll.dll\n" +"7c800000-7c8f6000 r-xp 00000000 00:00 0 C:\\WINDOWS\\system32\\kernel32.dll\n" +"77dd0000-77e6b000 r-xp 00000000 00:00 0 C:\\WINDOWS\\system32\\ADVAPI32.dll\n" +"77e70000-77f02000 r-xp 00000000 00:00 0 C:\\WINDOWS\\system32\\RPCRT4.dll\n" +"77fe0000-77ff1000 r-xp 00000000 00:00 0 C:\\WINDOWS\\system32\\Secur32.dll\n" +"71ab0000-71ac7000 r-xp 00000000 00:00 0 C:\\WINDOWS\\system32\\WS2_32.dll\n" +"77c10000-77c68000 r-xp 00000000 00:00 0 C:\\WINDOWS\\system32\\msvcrt.dll\n" +"71aa0000-71aa8000 r-xp 00000000 00:00 0 C:\\WINDOWS\\system32\\WS2HELP.dll\n" +"76bf0000-76bfb000 r-xp 00000000 00:00 0 C:\\WINDOWS\\system32\\PSAPI.DLL\n" +"5b860000-5b8b5000 r-xp 00000000 00:00 0 C:\\WINDOWS\\system32\\NETAPI32.dll\n" +"10000000-10041000 r-xp 00000000 00:00 0 c:\\code\\linden\\tcmalloc\\indra\\build-vc80\\llcommon\\RelWithDebInfo\\libtcmalloc_minimal.dll\n" +"7c420000-7c4a7000 r-xp 00000000 00:00 0 C:\\WINDOWS\\WinSxS\\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.1433_x-ww_5cf844d2\\MSVCP80.dll\n" +"78130000-781cb000 r-xp 00000000 00:00 0 C:\\WINDOWS\\WinSxS\\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.1433_x-ww_5cf844d2\\MSVCR80.dll\n"; + +} diff --git a/indra/llcommon/tests/llallocator_test.cpp b/indra/llcommon/tests/llallocator_test.cpp new file mode 100644 index 0000000000000000000000000000000000000000..9db95f4273245b83ca6347b0fbebc54fdc93e657 --- /dev/null +++ b/indra/llcommon/tests/llallocator_test.cpp @@ -0,0 +1,86 @@ +/** + * @file llallocator_test.cpp + * @author Brad Kittenbrink + * @date 2008-02- + * @brief Test for llallocator.cpp. + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + * + * Copyright (c) 2009-2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#include "../llallocator.h" +#include "../test/lltut.h" + +namespace tut +{ + struct llallocator_data + { + LLAllocator llallocator; + }; + typedef test_group<llallocator_data> factory; + typedef factory::object object; +} +namespace +{ + tut::factory llallocator_test_factory("LLAllocator"); +} + +namespace tut +{ + template<> template<> + void object::test<1>() + { + llallocator.setProfilingEnabled(false); + ensure("Profiler disable", !llallocator.isProfiling()); + } + +#if LL_USE_TCMALLOC + template<> template<> + void object::test<2>() + { + llallocator.setProfilingEnabled(true); + ensure("Profiler enable", llallocator.isProfiling()); + } + + template <> template <> + void object::test<3>() + { + llallocator.setProfilingEnabled(true); + + char * test_alloc = new char[1024]; + + llallocator.getProfile(); + + delete [] test_alloc; + + llallocator.getProfile(); + + // *NOTE - this test isn't ensuring anything right now other than no + // exceptions are thrown. + } +#endif // LL_USE_TCMALLOC +}; diff --git a/indra/llcommon/tests/llmemtype_test.cpp b/indra/llcommon/tests/llmemtype_test.cpp new file mode 100644 index 0000000000000000000000000000000000000000..6cc5ce01ce78d7e281fafd0701940f194ecf1a83 --- /dev/null +++ b/indra/llcommon/tests/llmemtype_test.cpp @@ -0,0 +1,123 @@ +/** + * @file llmemtype_test.cpp + * @author Palmer Truelson + * @date 2008-03- + * @brief Test for llmemtype.cpp. + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + * + * Copyright (c) 2009-2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#include "../llmemtype.h" +#include "../test/lltut.h" +#include "../llallocator.h" + + +#include <stack> + +std::stack<S32> memTypeStack; + +void LLAllocator::pushMemType(S32 i) +{ + memTypeStack.push(i); +} + +S32 LLAllocator::popMemType(void) +{ + S32 ret = memTypeStack.top(); + memTypeStack.pop(); + return ret; +} + +namespace tut +{ + struct llmemtype_data + { + }; + + typedef test_group<llmemtype_data> factory; + typedef factory::object object; +} +namespace +{ + tut::factory llmemtype_test_factory("LLMemType"); +} + +namespace tut +{ + template<> template<> + void object::test<1>() + { + ensure("Simplest test ever", true); + } + + // test with no scripts + template<> template<> + void object::test<2>() + { + { + LLMemType m1(LLMemType::MTYPE_INIT); + } + ensure("Test that you can construct and destruct the mem type"); + } + + // test creation and stack testing + template<> template<> + void object::test<3>() + { + { + ensure("Test that creation and destruction properly inc/dec the stack"); + ensure_equals(memTypeStack.size(), 0); + { + LLMemType m1(LLMemType::MTYPE_INIT); + ensure_equals(memTypeStack.size(), 1); + LLMemType m2(LLMemType::MTYPE_STARTUP); + ensure_equals(memTypeStack.size(), 2); + } + ensure_equals(memTypeStack.size(), 0); + } + } + + // test with no scripts + template<> template<> + void object::test<4>() + { + // catch the begining and end + std::string test_name = LLMemType::getNameFromID(LLMemType::MTYPE_INIT.mID); + ensure_equals("Init name", test_name, "Init"); + + std::string test_name2 = LLMemType::getNameFromID(LLMemType::MTYPE_VOLUME.mID); + ensure_equals("Volume name", test_name2, "Volume"); + + std::string test_name3 = LLMemType::getNameFromID(LLMemType::MTYPE_OTHER.mID); + ensure_equals("Other name", test_name3, "Other"); + + std::string test_name4 = LLMemType::getNameFromID(-1); + ensure_equals("Invalid name", test_name4, "INVALID"); + } + +}; diff --git a/indra/llcrashlogger/llcrashlogger.cpp b/indra/llcrashlogger/llcrashlogger.cpp index 822fb390f31b3ab698d63fe64a2dac3d00b7248e..c1022c1195ec62bed7ed615276ca1da1ce3f274f 100755 --- a/indra/llcrashlogger/llcrashlogger.cpp +++ b/indra/llcrashlogger/llcrashlogger.cpp @@ -90,7 +90,8 @@ LLCrashLogger::LLCrashLogger() : mSentCrashLogs(false), mCrashHost("") { - + // Set up generic error handling + setupErrorHandling(); } LLCrashLogger::~LLCrashLogger() @@ -208,7 +209,10 @@ void LLCrashLogger::gatherFiles() mFileMap["SettingsXml"] = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS,"settings.xml"); } +#if !LL_DARWIN if(mCrashInPreviousExec) +#else +#endif { // Replace the log file ext with .old, since the // instance that launched this process has overwritten diff --git a/indra/llimage/llimage.cpp b/indra/llimage/llimage.cpp index 93ddc65f32a7b4fa40fbd1364b1c55077190d5ca..488f3bf78d60b541c14ef2b377f33cc517027366 100644 --- a/indra/llimage/llimage.cpp +++ b/indra/llimage/llimage.cpp @@ -152,7 +152,7 @@ void LLImageBase::deleteData() // virtual U8* LLImageBase::allocateData(S32 size) { - LLMemType mt1((LLMemType::EMemType)mMemType); + LLMemType mt1(mMemType); if (size < 0) { @@ -188,7 +188,7 @@ U8* LLImageBase::allocateData(S32 size) // virtual U8* LLImageBase::reallocateData(S32 size) { - LLMemType mt1((LLMemType::EMemType)mMemType); + LLMemType mt1(mMemType); U8 *new_datap = new U8[size]; if (!new_datap) { @@ -332,7 +332,7 @@ BOOL LLImageRaw::resize(U16 width, U16 height, S8 components) U8 * LLImageRaw::getSubImage(U32 x_pos, U32 y_pos, U32 width, U32 height) const { - LLMemType mt1((LLMemType::EMemType)mMemType); + LLMemType mt1(mMemType); U8 *data = new U8[width*height*getComponents()]; // Should do some simple bounds checking @@ -415,7 +415,7 @@ void LLImageRaw::clear(U8 r, U8 g, U8 b, U8 a) // Reverses the order of the rows in the image void LLImageRaw::verticalFlip() { - LLMemType mt1((LLMemType::EMemType)mMemType); + LLMemType mt1(mMemType); S32 row_bytes = getWidth() * getComponents(); llassert(row_bytes > 0); std::vector<U8> line_buffer(row_bytes); @@ -548,7 +548,7 @@ void LLImageRaw::composite( LLImageRaw* src ) // Src and dst can be any size. Src has 4 components. Dst has 3 components. void LLImageRaw::compositeScaled4onto3(LLImageRaw* src) { - LLMemType mt1((LLMemType::EMemType)mMemType); + LLMemType mt1(mMemType); llinfos << "compositeScaled4onto3" << llendl; LLImageRaw* dst = this; // Just for clarity. @@ -787,7 +787,7 @@ void LLImageRaw::copyUnscaled3onto4( LLImageRaw* src ) // Src and dst can be any size. Src and dst have same number of components. void LLImageRaw::copyScaled( LLImageRaw* src ) { - LLMemType mt1((LLMemType::EMemType)mMemType); + LLMemType mt1(mMemType); LLImageRaw* dst = this; // Just for clarity. llassert_always( (1 == src->getComponents()) || (3 == src->getComponents()) || (4 == src->getComponents()) ); @@ -819,7 +819,7 @@ void LLImageRaw::copyScaled( LLImageRaw* src ) BOOL LLImageRaw::scale( S32 new_width, S32 new_height, BOOL scale_image_data ) { - LLMemType mt1((LLMemType::EMemType)mMemType); + LLMemType mt1(mMemType); llassert((1 == getComponents()) || (3 == getComponents()) || (4 == getComponents()) ); S32 old_width = getWidth(); diff --git a/indra/llimage/llimage.h b/indra/llimage/llimage.h index c0c81e97710c48fe289a1861aae99953d7f726ae..81085531072dc7eda16fac65930999971f96063e 100644 --- a/indra/llimage/llimage.h +++ b/indra/llimage/llimage.h @@ -37,6 +37,7 @@ #include "llstring.h" //#include "llmemory.h" #include "llthread.h" +#include "llmemtype.h" const S32 MIN_IMAGE_MIP = 2; // 4x4, only used for expand/contract power of 2 const S32 MAX_IMAGE_MIP = 11; // 2048x2048 @@ -155,7 +156,7 @@ class LLImageBase : public LLThreadSafeRefCount BOOL mBadBufferAllocation ; public: - S16 mMemType; // debug + LLMemType::DeclareMemType& mMemType; // debug static BOOL sSizeOverride; }; diff --git a/indra/llimage/llimagej2c.cpp b/indra/llimage/llimagej2c.cpp index 1b93c219824c5974499dc6057768458174fd36fc..363486fb9c013caa8e9ec4141c412638171e9188 100644 --- a/indra/llimage/llimagej2c.cpp +++ b/indra/llimage/llimagej2c.cpp @@ -279,7 +279,7 @@ BOOL LLImageJ2C::decode(LLImageRaw *raw_imagep, F32 decode_time) BOOL LLImageJ2C::decodeChannels(LLImageRaw *raw_imagep, F32 decode_time, S32 first_channel, S32 max_channel_count ) { - LLMemType mt1((LLMemType::EMemType)mMemType); + LLMemType mt1(mMemType); BOOL res = TRUE; @@ -329,7 +329,7 @@ BOOL LLImageJ2C::encode(const LLImageRaw *raw_imagep, F32 encode_time) BOOL LLImageJ2C::encode(const LLImageRaw *raw_imagep, const char* comment_text, F32 encode_time) { - LLMemType mt1((LLMemType::EMemType)mMemType); + LLMemType mt1(mMemType); resetLastError(); BOOL res = mImpl->encodeImpl(*this, *raw_imagep, comment_text, encode_time, mReversible); if (!mLastError.empty()) @@ -462,7 +462,7 @@ BOOL LLImageJ2C::loadAndValidate(const std::string &filename) BOOL LLImageJ2C::validate(U8 *data, U32 file_size) { - LLMemType mt1((LLMemType::EMemType)mMemType); + LLMemType mt1(mMemType); resetLastError(); diff --git a/indra/llinventory/llinventory.cpp b/indra/llinventory/llinventory.cpp index ce2e4e9cfa240de5fd6cad9238d094f59c1b19ee..adc80b2ed370d083c71e482f613ee153e32af90a 100644 --- a/indra/llinventory/llinventory.cpp +++ b/indra/llinventory/llinventory.cpp @@ -705,8 +705,8 @@ BOOL LLInventoryItem::exportFile(LLFILE* fp, BOOL include_asset_key) const fprintf(fp, "\t\tasset_id\t%s\n", uuid_str.c_str()); } fprintf(fp, "\t\ttype\t%s\n", LLAssetType::lookup(mType)); - const char* inv_type_str = LLInventoryType::lookup(mInventoryType); - if(inv_type_str) fprintf(fp, "\t\tinv_type\t%s\n", inv_type_str); + const std::string inv_type_str = LLInventoryType::lookup(mInventoryType); + if(!inv_type_str.empty()) fprintf(fp, "\t\tinv_type\t%s\n", inv_type_str.c_str()); fprintf(fp, "\t\tflags\t%08x\n", mFlags); mSaleInfo.exportFile(fp); fprintf(fp, "\t\tname\t%s|\n", mName.c_str()); @@ -908,8 +908,8 @@ BOOL LLInventoryItem::exportLegacyStream(std::ostream& output_stream, BOOL inclu output_stream << "\t\tasset_id\t" << uuid_str << "\n"; } output_stream << "\t\ttype\t" << LLAssetType::lookup(mType) << "\n"; - const char* inv_type_str = LLInventoryType::lookup(mInventoryType); - if(inv_type_str) + const std::string inv_type_str = LLInventoryType::lookup(mInventoryType); + if(!inv_type_str.empty()) output_stream << "\t\tinv_type\t" << inv_type_str << "\n"; std::string buffer; buffer = llformat( "\t\tflags\t%08x\n", mFlags); @@ -951,8 +951,8 @@ void LLInventoryItem::asLLSD( LLSD& sd ) const } sd[INV_ASSET_TYPE_LABEL] = LLAssetType::lookup(mType); sd[INV_INVENTORY_TYPE_LABEL] = mInventoryType; - const char* inv_type_str = LLInventoryType::lookup(mInventoryType); - if(inv_type_str) + const std::string inv_type_str = LLInventoryType::lookup(mInventoryType); + if(!inv_type_str.empty()) { sd[INV_INVENTORY_TYPE_LABEL] = inv_type_str; } diff --git a/indra/llinventory/llinventory.h b/indra/llinventory/llinventory.h index bdf444d34f6f8ff9481f350bcf66c5e38fafc131..3f79cedc232783ab33b1ec6b61346e05c10253a5 100644 --- a/indra/llinventory/llinventory.h +++ b/indra/llinventory/llinventory.h @@ -92,9 +92,9 @@ class LLInventoryObject : public LLRefCount // accessors virtual const LLUUID& getUUID() const; const LLUUID& getParentUUID() const; - const std::string& getName() const; - LLAssetType::EType getType() const; - + virtual const std::string& getName() const; + virtual LLAssetType::EType getType() const; + LLAssetType::EType getActualType() const { return mType; } // mutators - will not call updateServer(); void setUUID(const LLUUID& new_uuid); void rename(const std::string& new_name); @@ -217,6 +217,7 @@ class LLInventoryItem : public LLInventoryObject ~LLInventoryItem(); // ref counted public: + MEM_TYPE_NEW(LLMemType::MTYPE_INVENTORY); LLInventoryItem(const LLUUID& uuid, const LLUUID& parent_uuid, @@ -241,7 +242,7 @@ class LLInventoryItem : public LLInventoryObject // accessors const LLPermissions& getPermissions() const; const LLUUID& getCreatorUUID() const; - const LLUUID& getAssetUUID() const; + virtual const LLUUID& getAssetUUID() const; const std::string& getDescription() const; const LLSaleInfo& getSaleInfo() const; LLInventoryType::EType getInventoryType() const; diff --git a/indra/llinventory/llinventorytype.cpp b/indra/llinventory/llinventorytype.cpp index d905fe3ea7d294b02913f5be25b04b6d2065f1f8..ff9c6989437c86e1df756234c02933e488a9b036 100644 --- a/indra/llinventory/llinventorytype.cpp +++ b/indra/llinventory/llinventorytype.cpp @@ -33,68 +33,59 @@ #include "linden_common.h" #include "llinventorytype.h" +#include "lldictionary.h" +#include "llmemory.h" +#include "llsingleton.h" + +static const std::string empty_string; ///---------------------------------------------------------------------------- /// Class LLInventoryType ///---------------------------------------------------------------------------- - -// Unlike asset type names, not limited to 8 characters. -// Need not match asset type names. -static const char* INVENTORY_TYPE_NAMES[LLInventoryType::IT_COUNT] = -{ - "texture", // 0 - "sound", - "callcard", - "landmark", - NULL, - NULL, // 5 - "object", - "notecard", - "category", - "root", - "script", // 10 - NULL, - NULL, - NULL, - NULL, - "snapshot", // 15 - NULL, - "attach", - "wearable", - "animation", - "gesture", // 20 - "favorite" //21 +struct InventoryEntry : public LLDictionaryEntry +{ + InventoryEntry(const std::string &name, + const std::string &human_name, + int num_asset_types = 0, ...); + const std::string mHumanName; + typedef std::vector<LLAssetType::EType> asset_vec_t; + asset_vec_t mAssetTypes; }; -// This table is meant for decoding to human readable form. Put any -// and as many printable characters you want in each one. -// See also LLAssetType::mAssetTypeHumanNames -static const char* INVENTORY_TYPE_HUMAN_NAMES[LLInventoryType::IT_COUNT] = -{ - "texture", // 0 - "sound", - "calling card", - "landmark", - NULL, - NULL, // 5 - "object", - "note card", - "folder", - "root", - "script", // 10 - NULL, - NULL, - NULL, - NULL, - "snapshot", // 15 - NULL, - "attachment", - "wearable", - "animation", - "gesture", // 20 - "favorite" // 21 +class LLInventoryDictionary : public LLSingleton<LLInventoryDictionary>, + public LLDictionary<LLInventoryType::EType, InventoryEntry> +{ +public: + LLInventoryDictionary(); }; +LLInventoryDictionary::LLInventoryDictionary() +{ + addEntry(LLInventoryType::IT_TEXTURE, new InventoryEntry("texture", "texture", 1, LLAssetType::AT_TEXTURE)); + addEntry(LLInventoryType::IT_SOUND, new InventoryEntry("sound", "sound", 1, LLAssetType::AT_SOUND)); + addEntry(LLInventoryType::IT_CALLINGCARD, new InventoryEntry("callcard", "calling card", 1, LLAssetType::AT_CALLINGCARD)); + addEntry(LLInventoryType::IT_LANDMARK, new InventoryEntry("landmark", "landmark", 1, LLAssetType::AT_LANDMARK)); + //addEntry(LLInventoryType::IT_SCRIPT, new InventoryEntry(NULL,NULL)); + //addEntry(LLInventoryType::IT_CLOTHING, new InventoryEntry(NULL,NULL)); + addEntry(LLInventoryType::IT_OBJECT, new InventoryEntry("object", "object", 1, LLAssetType::AT_OBJECT)); + addEntry(LLInventoryType::IT_NOTECARD, new InventoryEntry("notecard", "note card", 1, LLAssetType::AT_NOTECARD)); + addEntry(LLInventoryType::IT_CATEGORY, new InventoryEntry("category", "folder" )); + addEntry(LLInventoryType::IT_ROOT_CATEGORY, new InventoryEntry("root", "root" )); + addEntry(LLInventoryType::IT_LSL, new InventoryEntry("script", "script", 2, LLAssetType::AT_LSL_TEXT, LLAssetType::AT_LSL_BYTECODE)); + //addEntry(LLInventoryType::IT_LSL_BYTECODE, new InventoryEntry(NULL,NULL)); + //addEntry(LLInventoryType::IT_TEXTURE_TGA, new InventoryEntry(NULL,NULL)); + //addEntry(LLInventoryType::IT_BODYPART, new InventoryEntry(NULL,NULL)); + //addEntry(LLInventoryType::IT_TRASH, new InventoryEntry(NULL,NULL)); + addEntry(LLInventoryType::IT_SNAPSHOT, new InventoryEntry("snapshot", "snapshot", 1, LLAssetType::AT_TEXTURE)); + //addEntry(LLInventoryType::IT_LOST_AND_FOUND, new InventoryEntry(NULL,NULL, )); + addEntry(LLInventoryType::IT_ATTACHMENT, new InventoryEntry("attach", "attachment", 1, LLAssetType::AT_OBJECT)); + addEntry(LLInventoryType::IT_WEARABLE, new InventoryEntry("wearable", "wearable", 2, LLAssetType::AT_CLOTHING, LLAssetType::AT_BODYPART)); + addEntry(LLInventoryType::IT_ANIMATION, new InventoryEntry("animation", "animation", 1, LLAssetType::AT_ANIMATION)); + addEntry(LLInventoryType::IT_GESTURE, new InventoryEntry("gesture", "gesture", 1, LLAssetType::AT_GESTURE)); + addEntry(LLInventoryType::IT_FAVORITE, new InventoryEntry("favorite", "favorite", 1, LLAssetType::AT_FAVORITE)); +} + + // Maps asset types to the default inventory type for that kind of asset. // Thus, "Lost and Found" is a "Category" static const LLInventoryType::EType @@ -122,78 +113,48 @@ DEFAULT_ASSET_FOR_INV_TYPE[LLAssetType::AT_COUNT] = LLInventoryType::IT_NONE, // AT_IMAGE_JPEG LLInventoryType::IT_ANIMATION, // AT_ANIMATION LLInventoryType::IT_GESTURE, // AT_GESTURE + LLInventoryType::IT_NONE, // AT_LINK LLInventoryType::IT_FAVORITE, // AT_FAVORITE }; -static const int MAX_POSSIBLE_ASSET_TYPES = 2; -static const LLAssetType::EType -INVENTORY_TO_ASSET_TYPE[LLInventoryType::IT_COUNT][MAX_POSSIBLE_ASSET_TYPES] = +InventoryEntry::InventoryEntry(const std::string &name, + const std::string &human_name, + int num_asset_types, ...) : + LLDictionaryEntry(name), + mHumanName(human_name) { - { LLAssetType::AT_TEXTURE, LLAssetType::AT_NONE }, // IT_TEXTURE - { LLAssetType::AT_SOUND, LLAssetType::AT_NONE }, // IT_SOUND - { LLAssetType::AT_CALLINGCARD, LLAssetType::AT_NONE }, // IT_CALLINGCARD - { LLAssetType::AT_LANDMARK, LLAssetType::AT_NONE }, // IT_LANDMARK - { LLAssetType::AT_NONE, LLAssetType::AT_NONE }, - { LLAssetType::AT_NONE, LLAssetType::AT_NONE }, - { LLAssetType::AT_OBJECT, LLAssetType::AT_NONE }, // IT_OBJECT - { LLAssetType::AT_NOTECARD, LLAssetType::AT_NONE }, // IT_NOTECARD - { LLAssetType::AT_NONE, LLAssetType::AT_NONE }, // IT_CATEGORY - { LLAssetType::AT_NONE, LLAssetType::AT_NONE }, // IT_ROOT_CATEGORY - { LLAssetType::AT_LSL_TEXT, LLAssetType::AT_LSL_BYTECODE }, // IT_LSL - { LLAssetType::AT_NONE, LLAssetType::AT_NONE }, - { LLAssetType::AT_NONE, LLAssetType::AT_NONE }, - { LLAssetType::AT_NONE, LLAssetType::AT_NONE }, - { LLAssetType::AT_NONE, LLAssetType::AT_NONE }, - { LLAssetType::AT_TEXTURE, LLAssetType::AT_NONE }, // IT_SNAPSHOT - { LLAssetType::AT_NONE, LLAssetType::AT_NONE }, - { LLAssetType::AT_OBJECT, LLAssetType::AT_NONE }, // IT_ATTACHMENT - { LLAssetType::AT_CLOTHING, LLAssetType::AT_BODYPART }, // IT_WEARABLE - { LLAssetType::AT_ANIMATION, LLAssetType::AT_NONE }, // IT_ANIMATION - { LLAssetType::AT_GESTURE, LLAssetType::AT_NONE }, // IT_GESTURE - { LLAssetType::AT_FAVORITE, LLAssetType::AT_NONE }, // IT_FAVORITE -}; + va_list argp; + va_start(argp, num_asset_types); + // Read in local textures + for (U8 i=0; i < num_asset_types; i++) + { + LLAssetType::EType t = (LLAssetType::EType)va_arg(argp,int); + mAssetTypes.push_back(t); + } +} // static -const char* LLInventoryType::lookup(EType type) +const std::string &LLInventoryType::lookup(EType type) { - if((type >= 0) && (type < IT_COUNT)) - { - return INVENTORY_TYPE_NAMES[S32(type)]; - } - else - { - return NULL; - } + const InventoryEntry *entry = LLInventoryDictionary::getInstance()->lookup(type); + if (!entry) return empty_string; + return entry->mName; } // static LLInventoryType::EType LLInventoryType::lookup(const std::string& name) { - for(S32 i = 0; i < IT_COUNT; ++i) - { - if((INVENTORY_TYPE_NAMES[i]) - && (name == INVENTORY_TYPE_NAMES[i])) - { - // match - return (EType)i; - } - } - return IT_NONE; + return LLInventoryDictionary::getInstance()->lookup(name); } // XUI:translate // translation from a type to a human readable form. // static -const char* LLInventoryType::lookupHumanReadable(EType type) +const std::string &LLInventoryType::lookupHumanReadable(EType type) { - if((type >= 0) && (type < IT_COUNT)) - { - return INVENTORY_TYPE_HUMAN_NAMES[S32(type)]; - } - else - { - return NULL; - } + const InventoryEntry *entry = LLInventoryDictionary::getInstance()->lookup(type); + if (!entry) return empty_string; + return entry->mHumanName; } // return the default inventory for the given asset type. @@ -210,21 +171,21 @@ LLInventoryType::EType LLInventoryType::defaultForAssetType(LLAssetType::EType a } } -bool inventory_and_asset_types_match( - LLInventoryType::EType inventory_type, - LLAssetType::EType asset_type) +bool inventory_and_asset_types_match(LLInventoryType::EType inventory_type, + LLAssetType::EType asset_type) { - bool rv = false; - if((inventory_type >= 0) && (inventory_type < LLInventoryType::IT_COUNT)) + const InventoryEntry *entry = LLInventoryDictionary::getInstance()->lookup(inventory_type); + if (!entry) return false; + + for (InventoryEntry::asset_vec_t::const_iterator iter = entry->mAssetTypes.begin(); + iter != entry->mAssetTypes.end(); + iter++) { - for(S32 i = 0; i < MAX_POSSIBLE_ASSET_TYPES; ++i) + const LLAssetType::EType type = (*iter); + if(type == asset_type) { - if(INVENTORY_TO_ASSET_TYPE[inventory_type][i] == asset_type) - { - rv = true; - break; - } + return true; } } - return rv; + return false; } diff --git a/indra/llinventory/llinventorytype.h b/indra/llinventory/llinventorytype.h index c9ba97d7b6a4662c93dfa8ccd6e604c3307e4382..1aad90d51b15e9120c3e8ec73af07983b9ff0c83 100644 --- a/indra/llinventory/llinventorytype.h +++ b/indra/llinventory/llinventorytype.h @@ -75,25 +75,24 @@ class LLInventoryType // machine transation between type and strings static EType lookup(const std::string& name); - static const char* lookup(EType type); + static const std::string &lookup(EType type); // translation from a type to a human readable form. - static const char* lookupHumanReadable(EType type); + static const std::string &lookupHumanReadable(EType type); // return the default inventory for the given asset type. static EType defaultForAssetType(LLAssetType::EType asset_type); private: // don't instantiate or derive one of these objects - LLInventoryType( void ); - ~LLInventoryType( void ); + LLInventoryType() {} + ~LLInventoryType() {} }; -// helper function which returns true if inventory type and asset type +// helper function that returns true if inventory type and asset type // are potentially compatible. For example, an attachment must be an // object, but a wearable can be a bodypart or clothing asset. -bool inventory_and_asset_types_match( - LLInventoryType::EType inventory_type, - LLAssetType::EType asset_type); +bool inventory_and_asset_types_match(LLInventoryType::EType inventory_type, + LLAssetType::EType asset_type); #endif diff --git a/indra/llinventory/lllandmark.cpp b/indra/llinventory/lllandmark.cpp index 13a63bc7d6b289084dfe9946434e867286a919d0..83b6392ca8e3dc157aa90949107fdce647c32c9f 100644 --- a/indra/llinventory/lllandmark.cpp +++ b/indra/llinventory/lllandmark.cpp @@ -40,7 +40,7 @@ std::pair<LLUUID, U64> LLLandmark::mLocalRegion; LLLandmark::region_map_t LLLandmark::mRegions; -LLLandmark::region_callback_t LLLandmark::mRegionCallback; +LLLandmark::region_callback_map_t LLLandmark::sRegionCallbackMap; LLLandmark::LLLandmark() : mGlobalPositionKnown(false) @@ -177,7 +177,7 @@ void LLLandmark::requestRegionHandle( LLMessageSystem* msg, const LLHost& upstream_host, const LLUUID& region_id, - LLRegionHandleCallback* callback) + region_handle_callback_t callback) { if(region_id.isNull()) { @@ -186,7 +186,7 @@ void LLLandmark::requestRegionHandle( if(callback) { const U64 U64_ZERO = 0; - callback->dataReady(region_id, U64_ZERO); + callback(region_id, U64_ZERO); } } else @@ -196,7 +196,7 @@ void LLLandmark::requestRegionHandle( lldebugs << "requestRegionHandle: local" << llendl; if(callback) { - callback->dataReady(region_id, mLocalRegion.second); + callback(region_id, mLocalRegion.second); } } else @@ -207,8 +207,8 @@ void LLLandmark::requestRegionHandle( lldebugs << "requestRegionHandle: upstream" << llendl; if(callback) { - region_callback_t::value_type vt(region_id, callback); - mRegionCallback.insert(vt); + region_callback_map_t::value_type vt(region_id, callback); + sRegionCallbackMap.insert(vt); } lldebugs << "Landmark requesting information about: " << region_id << llendl; @@ -221,7 +221,7 @@ void LLLandmark::requestRegionHandle( { // we have the answer locally - just call the callack. lldebugs << "requestRegionHandle: ready" << llendl; - callback->dataReady(region_id, (*it).second.mRegionHandle); + callback(region_id, (*it).second.mRegionHandle); } } } @@ -259,11 +259,11 @@ void LLLandmark::processRegionIDAndHandle(LLMessageSystem* msg, void**) #endif // make all the callbacks here. - region_callback_t::iterator it; - while((it = mRegionCallback.find(region_id)) != mRegionCallback.end()) + region_callback_map_t::iterator it; + while((it = sRegionCallbackMap.find(region_id)) != sRegionCallbackMap.end()) { - (*it).second->dataReady(region_id, info.mRegionHandle); - mRegionCallback.erase(it); + (*it).second(region_id, info.mRegionHandle); + sRegionCallbackMap.erase(it); } } diff --git a/indra/llinventory/lllandmark.h b/indra/llinventory/lllandmark.h index cb0c11ab87ecdb77c19725800cc0057935b8d99a..feaf1a0e9c2157c8c00bb5e959d54ed21c57a651 100644 --- a/indra/llinventory/lllandmark.h +++ b/indra/llinventory/lllandmark.h @@ -35,6 +35,7 @@ #define LL_LLLANDMARK_H #include <map> +#include <boost/function.hpp> #include "llframetimer.h" #include "lluuid.h" #include "v3dmath.h" @@ -42,24 +43,12 @@ class LLMessageSystem; class LLHost; -// virutal base class used for calling back interested parties when a -// region handle comes back. -class LLRegionHandleCallback -{ -public: - LLRegionHandleCallback() {} - virtual ~LLRegionHandleCallback() {} - virtual bool dataReady( - const LLUUID& region_id, - const U64& region_handle) - { - return true; - } -}; - class LLLandmark { public: + // for calling back interested parties when a region handle comes back. + typedef boost::function<void(const LLUUID& region_id, const U64& region_handle)> region_handle_callback_t; + ~LLLandmark() {} // returns true if the position is known. @@ -90,7 +79,7 @@ class LLLandmark LLMessageSystem* msg, const LLHost& upstream_host, const LLUUID& region_id, - LLRegionHandleCallback* callback); + region_handle_callback_t callback); // Call this method to create a lookup for this region. This // simplifies a lot of the code. @@ -118,8 +107,8 @@ class LLLandmark static std::pair<LLUUID, U64> mLocalRegion; typedef std::map<LLUUID, CacheInfo> region_map_t; static region_map_t mRegions; - typedef std::multimap<LLUUID, LLRegionHandleCallback*> region_callback_t; - static region_callback_t mRegionCallback; + typedef std::multimap<LLUUID, region_handle_callback_t> region_callback_map_t; + static region_callback_map_t sRegionCallbackMap; }; #endif diff --git a/indra/llinventory/llparcel.cpp b/indra/llinventory/llparcel.cpp index bd8c0d58e5a036e19ac0a81e7884496737fb9051..8c9dfd6f39a1f4e795c516452b1248c5d757c18c 100644 --- a/indra/llinventory/llparcel.cpp +++ b/indra/llinventory/llparcel.cpp @@ -175,7 +175,7 @@ void LLParcel::init(const LLUUID &owner_id, mSaleTimerExpires.stop(); mGraceExtension = 0; //mExpireAction = STEA_REVERT; - mRecordTransaction = FALSE; + //mRecordTransaction = FALSE; mAuctionID = 0; mInEscrow = false; diff --git a/indra/llinventory/llparcel.h b/indra/llinventory/llparcel.h index 021ad89e52172cba6a0cb97224cc5669b0973f5a..7b7896f74fe278c3ac9d3dff49b44580c0e13425 100644 --- a/indra/llinventory/llparcel.h +++ b/indra/llinventory/llparcel.h @@ -414,12 +414,6 @@ class LLParcel void completeSale(U32& type, U8& flags, LLUUID& to_id); void clearSale(); - // this function returns TRUE if the parcel needs conversion to a - // lease from a non-owned-status state. - BOOL getRecordTransaction() const { return mRecordTransaction; } - void setRecordTransaction(BOOL record) { mRecordTransaction = record; } - - // more accessors U32 getParcelFlags() const { return mParcelFlags; } @@ -597,8 +591,6 @@ class LLParcel ELandingType mLandingType; LLTimer mSaleTimerExpires; S32 mGraceExtension; - BOOL mRecordTransaction; - // This value is non-zero if there is an auction associated with // the parcel. diff --git a/indra/llmath/CMakeLists.txt b/indra/llmath/CMakeLists.txt index f84cdf1563be20d0f5e75b817033735f64f67d92..c26749cd23dd460d9d8e22256e9596bb159ef7eb 100644 --- a/indra/llmath/CMakeLists.txt +++ b/indra/llmath/CMakeLists.txt @@ -80,3 +80,12 @@ set_source_files_properties(${llmath_HEADER_FILES} list(APPEND llmath_SOURCE_FILES ${llmath_HEADER_FILES}) add_library (llmath ${llmath_SOURCE_FILES}) + + +include(LLAddBuildTest) +SET(llmath_TEST_SOURCE_FILES + # WARNING: Please don't write tests against LLCommon or LLMath until this issue is resolved: https://jira.lindenlab.com/jira/browse/DEV-29456 + # llvolume.cpp + ) +LL_ADD_PROJECT_UNIT_TESTS(llmath "${llmath_TEST_SOURCE_FILES}") + diff --git a/indra/llmath/llrect.h b/indra/llmath/llrect.h index 98aceb0597afb8894251d0146d2b04d4145e96c7..16bfdde658da8c515e44da1aea95a8dab94a8659 100644 --- a/indra/llmath/llrect.h +++ b/indra/llmath/llrect.h @@ -64,17 +64,11 @@ template <class Type> class LLRectBase mLeft(left), mTop(top), mRight(right), mBottom(bottom) {} - LLRectBase(const LLSD& sd) + explicit LLRectBase(const LLSD& sd) { setValue(sd); } - const LLRectBase& operator=(const LLSD& sd) - { - setValue(sd); - return *this; - } - void setValue(const LLSD& sd) { mLeft = sd[0].asInteger(); diff --git a/indra/llmath/llvolumemgr.h b/indra/llmath/llvolumemgr.h index 57d789e73a2613eea7d02ffe76b5e5639caa6ac5..a78ea76a1a8d05c67191b2b47e67cbe57452c133 100644 --- a/indra/llmath/llvolumemgr.h +++ b/indra/llmath/llvolumemgr.h @@ -92,8 +92,8 @@ class LLVolumeMgr // whatever calls getVolume() never owns the LLVolume* and // cannot keep references for long since it may be deleted // later. For best results hold it in an LLPointer<LLVolume>. - LLVolume *refVolume(const LLVolumeParams &volume_params, const S32 detail); - void unrefVolume(LLVolume *volumep); + virtual LLVolume *refVolume(const LLVolumeParams &volume_params, const S32 detail); + virtual void unrefVolume(LLVolume *volumep); void dump(); diff --git a/indra/llmath/v3color.cpp b/indra/llmath/v3color.cpp index fa7b61cd75fb53a3e7351773713dca0eff15c124..e76607a91f2eae8a83142c5109022b03f087ed38 100644 --- a/indra/llmath/v3color.cpp +++ b/indra/llmath/v3color.cpp @@ -75,6 +75,42 @@ std::ostream& operator<<(std::ostream& s, const LLColor3 &a) return s; } +static F32 hueToRgb ( F32 val1In, F32 val2In, F32 valHUeIn ) +{ + if ( valHUeIn < 0.0f ) valHUeIn += 1.0f; + if ( valHUeIn > 1.0f ) valHUeIn -= 1.0f; + if ( ( 6.0f * valHUeIn ) < 1.0f ) return ( val1In + ( val2In - val1In ) * 6.0f * valHUeIn ); + if ( ( 2.0f * valHUeIn ) < 1.0f ) return ( val2In ); + if ( ( 3.0f * valHUeIn ) < 2.0f ) return ( val1In + ( val2In - val1In ) * ( ( 2.0f / 3.0f ) - valHUeIn ) * 6.0f ); + return ( val1In ); +} + +void LLColor3::setHSL ( F32 hValIn, F32 sValIn, F32 lValIn) +{ + if ( sValIn < 0.00001f ) + { + mV[VRED] = lValIn; + mV[VGREEN] = lValIn; + mV[VBLUE] = lValIn; + } + else + { + F32 interVal1; + F32 interVal2; + + if ( lValIn < 0.5f ) + interVal2 = lValIn * ( 1.0f + sValIn ); + else + interVal2 = ( lValIn + sValIn ) - ( sValIn * lValIn ); + + interVal1 = 2.0f * lValIn - interVal2; + + mV[VRED] = hueToRgb ( interVal1, interVal2, hValIn + ( 1.f / 3.f ) ); + mV[VGREEN] = hueToRgb ( interVal1, interVal2, hValIn ); + mV[VBLUE] = hueToRgb ( interVal1, interVal2, hValIn - ( 1.f / 3.f ) ); + } +} + void LLColor3::calcHSL(F32* hue, F32* saturation, F32* luminance) const { F32 var_R = mV[VRED]; diff --git a/indra/llmath/v3color.h b/indra/llmath/v3color.h index 179687a32e09d86d61b7b94b4fb13c01e90531dd..1915d80502cbbce35170db0814edeaf026d2366d 100644 --- a/indra/llmath/v3color.h +++ b/indra/llmath/v3color.h @@ -79,6 +79,7 @@ class LLColor3 mV[2] = (F32) sd[2].asReal();; } + void setHSL(F32 hue, F32 saturation, F32 luminance); void calcHSL(F32* hue, F32* saturation, F32* luminance) const; const LLColor3& setToBlack(); // Clears LLColor3 to (0, 0, 0) diff --git a/indra/llmath/v3dmath.h b/indra/llmath/v3dmath.h index a99bf5b4a6aa756866434ad147a5ae54c1914472..6ab31e8a41bdfc56df46d98d91ec2a70edae3a3f 100644 --- a/indra/llmath/v3dmath.h +++ b/indra/llmath/v3dmath.h @@ -53,7 +53,7 @@ class LLVector3d inline LLVector3d(const F64 x, const F64 y, const F64 z); // Initializes LLVector3d to (x. y, z) inline explicit LLVector3d(const F64 *vec); // Initializes LLVector3d to (vec[0]. vec[1], vec[2]) inline explicit LLVector3d(const LLVector3 &vec); - LLVector3d(const LLSD& sd) + explicit LLVector3d(const LLSD& sd) { setValue(sd); } @@ -65,12 +65,6 @@ class LLVector3d mdV[2] = sd[2].asReal(); } - const LLVector3d& operator=(const LLSD& sd) - { - setValue(sd); - return *this; - } - LLSD getValue() const { LLSD ret; diff --git a/indra/llmath/v3math.cpp b/indra/llmath/v3math.cpp index 101e9d075a71b28ff885ac8612f484aa4ee9c086..f392ac448bac5b4d67a0250809dc2e0604387493 100644 --- a/indra/llmath/v3math.cpp +++ b/indra/llmath/v3math.cpp @@ -314,12 +314,6 @@ void LLVector3::setValue(const LLSD& sd) mV[2] = (F32) sd[2].asReal(); } -const LLVector3& LLVector3::operator=(const LLSD& sd) -{ - setValue(sd); - return *this; -} - const LLVector3& operator*=(LLVector3 &a, const LLQuaternion &rot) { const F32 rw = - rot.mQ[VX] * a.mV[VX] - rot.mQ[VY] * a.mV[VY] - rot.mQ[VZ] * a.mV[VZ]; diff --git a/indra/llmath/v3math.h b/indra/llmath/v3math.h index 7f96800e210eeb5fbff4e98516dbb7a6eae5d03a..805d7e63842607e6ae5d616902969f0054444755 100644 --- a/indra/llmath/v3math.h +++ b/indra/llmath/v3math.h @@ -67,14 +67,12 @@ class LLVector3 explicit LLVector3(const LLVector2 &vec); // Initializes LLVector3 to (vec[0]. vec[1], 0) explicit LLVector3(const LLVector3d &vec); // Initializes LLVector3 to (vec[0]. vec[1], vec[2]) explicit LLVector3(const LLVector4 &vec); // Initializes LLVector4 to (vec[0]. vec[1], vec[2]) - LLVector3(const LLSD& sd); + explicit LLVector3(const LLSD& sd); LLSD getValue() const; void setValue(const LLSD& sd); - const LLVector3& operator=(const LLSD& sd); - inline BOOL isFinite() const; // checks to see if all values of LLVector3 are finite BOOL clamp(F32 min, F32 max); // Clamps all values to (min,max), returns TRUE if data changed BOOL clampLength( F32 length_limit ); // Scales vector to limit length to a value diff --git a/indra/llmath/v4color.cpp b/indra/llmath/v4color.cpp index 34337b3ac86145701470bc83003c7eea79179827..219b06ec7462495aaab7e71169a1c33540ddf30c 100644 --- a/indra/llmath/v4color.cpp +++ b/indra/llmath/v4color.cpp @@ -305,6 +305,42 @@ LLColor4 vec3to4(const LLColor3 &vec) return temp; } +static F32 hueToRgb ( F32 val1In, F32 val2In, F32 valHUeIn ) +{ + if ( valHUeIn < 0.0f ) valHUeIn += 1.0f; + if ( valHUeIn > 1.0f ) valHUeIn -= 1.0f; + if ( ( 6.0f * valHUeIn ) < 1.0f ) return ( val1In + ( val2In - val1In ) * 6.0f * valHUeIn ); + if ( ( 2.0f * valHUeIn ) < 1.0f ) return ( val2In ); + if ( ( 3.0f * valHUeIn ) < 2.0f ) return ( val1In + ( val2In - val1In ) * ( ( 2.0f / 3.0f ) - valHUeIn ) * 6.0f ); + return ( val1In ); +} + +void LLColor4::setHSL ( F32 hValIn, F32 sValIn, F32 lValIn) +{ + if ( sValIn < 0.00001f ) + { + mV[VRED] = lValIn; + mV[VGREEN] = lValIn; + mV[VBLUE] = lValIn; + } + else + { + F32 interVal1; + F32 interVal2; + + if ( lValIn < 0.5f ) + interVal2 = lValIn * ( 1.0f + sValIn ); + else + interVal2 = ( lValIn + sValIn ) - ( sValIn * lValIn ); + + interVal1 = 2.0f * lValIn - interVal2; + + mV[VRED] = hueToRgb ( interVal1, interVal2, hValIn + ( 1.f / 3.f ) ); + mV[VGREEN] = hueToRgb ( interVal1, interVal2, hValIn ); + mV[VBLUE] = hueToRgb ( interVal1, interVal2, hValIn - ( 1.f / 3.f ) ); + } +} + void LLColor4::calcHSL(F32* hue, F32* saturation, F32* luminance) const { F32 var_R = mV[VRED]; diff --git a/indra/llmath/v4color.h b/indra/llmath/v4color.h index f2a5cd39ed0ef9ca272d2519c13af9eefe60fd03..d6fbdec61e16234bfb9536ea3de0c780a2635b39 100644 --- a/indra/llmath/v4color.h +++ b/indra/llmath/v4color.h @@ -58,7 +58,7 @@ class LLColor4 LLColor4(U32 clr); // Initializes LLColor4 to (r=clr>>24, etc)) LLColor4(const F32 *vec); // Initializes LLColor4 to (vec[0]. vec[1], vec[2], 1) LLColor4(const LLColor3 &vec, F32 a = 1.f); // Initializes LLColor4 to (vec, a) - LLColor4(const LLSD& sd); + explicit LLColor4(const LLSD& sd); explicit LLColor4(const LLColor4U& color4u); // "explicit" to avoid automatic conversion explicit LLColor4(const LLVector4& vector4); // "explicit" to avoid automatic conversion @@ -74,6 +74,7 @@ class LLColor4 void setValue(const LLSD& sd); + void setHSL(F32 hue, F32 saturation, F32 luminance); void calcHSL(F32* hue, F32* saturation, F32* luminance) const; const LLColor4& setToBlack(); // zero LLColor4 to (0, 0, 0, 1) @@ -112,7 +113,6 @@ class LLColor4 F32 &operator[](int idx) { return mV[idx]; } const LLColor4& operator=(const LLColor3 &a); // Assigns vec3 to vec4 and returns vec4 - const LLColor4& operator=(const LLSD& sd); friend std::ostream& operator<<(std::ostream& s, const LLColor4 &a); // Print a friend LLColor4 operator+(const LLColor4 &a, const LLColor4 &b); // Return vector a + b @@ -633,12 +633,5 @@ void LLColor4::clamp() } } -inline const LLColor4& LLColor4::operator=(const LLSD& sd) -{ - setValue(sd); - - return *this; -} - #endif diff --git a/indra/llmath/v4coloru.h b/indra/llmath/v4coloru.h index c0390fa0b2d364710a80245f291dd2069a46b226..4ec5a345ebc96a6d81e22db12e2e6913eb6ac229 100644 --- a/indra/llmath/v4coloru.h +++ b/indra/llmath/v4coloru.h @@ -66,7 +66,7 @@ class LLColor4U LLColor4U(U8 r, U8 g, U8 b); // Initializes LLColor4U to (r, g, b, 1) LLColor4U(U8 r, U8 g, U8 b, U8 a); // Initializes LLColor4U to (r. g, b, a) LLColor4U(const U8 *vec); // Initializes LLColor4U to (vec[0]. vec[1], vec[2], 1) - LLColor4U(const LLSD& sd) + explicit LLColor4U(const LLSD& sd) { setValue(sd); } @@ -79,12 +79,6 @@ class LLColor4U mV[3] = sd[3].asInteger(); } - const LLColor4U& operator=(const LLSD& sd) - { - setValue(sd); - return *this; - } - LLSD getValue() const { LLSD ret; diff --git a/indra/llmessage/CMakeLists.txt b/indra/llmessage/CMakeLists.txt index 99bd98dfc1662a15c6317996b37008e420bb1f30..29e7aed898308ed3d9cafbff00ea095fb9d29bd6 100644 --- a/indra/llmessage/CMakeLists.txt +++ b/indra/llmessage/CMakeLists.txt @@ -219,10 +219,15 @@ IF (NOT LINUX AND VIEWER) # When building the viewer the tests links against the shared objects. # These can not be found when we try to run the tests, so we had to disable them, for the viewer build. # TODO: Can someone with viewer knowledge figure out how to make these find the correct so. - #ADD_BUILD_TEST(llhttpclientadapter llmessage) - ADD_BUILD_TEST(lltrustedmessageservice llmessage) - ADD_BUILD_TEST(lltemplatemessagedispatcher llmessage) + SET(llmessage_TEST_SOURCE_FILES + # llhttpclientadapter.cpp + lltrustedmessageservice.cpp + lltemplatemessagedispatcher.cpp + ) + LL_ADD_PROJECT_UNIT_TESTS(llmessage "${llmessage_TEST_SOURCE_FILES}") + + # Commented out - see rationale at bottom of newview's build file + poppy 2009-06-05 # Don't make llmessage depend on llsdmessage_test because ADD_COMM_BUILD_TEST depends on llmessage! - ADD_COMM_BUILD_TEST(llsdmessage "" "${CMAKE_CURRENT_SOURCE_DIR}/tests/test_llsdmessage_peer.py") + # ADD_COMM_BUILD_TEST(llsdmessage "" "${CMAKE_CURRENT_SOURCE_DIR}/tests/test_llsdmessage_peer.py") ADD_BUILD_TEST(llareslistener llmessage) ENDIF (NOT LINUX AND VIEWER) diff --git a/indra/llmessage/llcachename.cpp b/indra/llmessage/llcachename.cpp index 43abc2953d7f6351252dc12e288247de28ac1660..a4304596de59a05aed4cebff37404d57a6079edd 100644 --- a/indra/llmessage/llcachename.cpp +++ b/indra/llmessage/llcachename.cpp @@ -42,6 +42,7 @@ #include "llsdserialize.h" #include "lluuid.h" #include "message.h" +#include "llmemtype.h" // llsd serialization constants static const std::string AGENTS("agents"); @@ -607,6 +608,7 @@ boost::signals2::connection LLCacheName::get(const LLUUID& id, BOOL is_group, ol void LLCacheName::processPending() { + LLMemType mt_pp(LLMemType::MTYPE_CACHE_PROCESS_PENDING); const F32 SECS_BETWEEN_PROCESS = 0.1f; if(!impl.mProcessTimer.checkExpirationAndReset(SECS_BETWEEN_PROCESS)) { @@ -700,6 +702,7 @@ std::string LLCacheName::getDefaultName() void LLCacheName::Impl::processPendingAsks() { + LLMemType mt_ppa(LLMemType::MTYPE_CACHE_PROCESS_PENDING_ASKS); sendRequest(_PREHASH_UUIDNameRequest, mAskNameQueue); sendRequest(_PREHASH_UUIDGroupNameRequest, mAskGroupQueue); mAskNameQueue.clear(); @@ -708,6 +711,7 @@ void LLCacheName::Impl::processPendingAsks() void LLCacheName::Impl::processPendingReplies() { + LLMemType mt_ppr(LLMemType::MTYPE_CACHE_PROCESS_PENDING_REPLIES); // First call all the callbacks, because they might send messages. for(ReplyQueue::iterator it = mReplyQueue.begin(); it != mReplyQueue.end(); ++it) { diff --git a/indra/llmessage/llhttpclient.cpp b/indra/llmessage/llhttpclient.cpp index 307d9b92faab43b3761154e9982c22aef95cbf68..8b90a4c5cacd2ed5df432d2ca9c3e7f49847deae 100644 --- a/indra/llmessage/llhttpclient.cpp +++ b/indra/llmessage/llhttpclient.cpp @@ -224,6 +224,10 @@ static void request( LLURLRequest* req = new LLURLRequest(method, url); req->checkRootCertificate(true); + + lldebugs << LLURLRequest::actionAsVerb(method) << " " << url << " " + << headers << llendl; + // Insert custom headers is the caller sent any if (headers.isMap()) { @@ -375,72 +379,140 @@ class LLHTTPBuffer std::string mBuffer; }; -// *TODO: Deprecate (only used by dataserver) -// This call is blocking! This is probably usually bad. :( -LLSD LLHTTPClient::blockingGet(const std::string& url) +// These calls are blocking! This is usually bad, unless you're a dataserver. Then it's awesome. + +/** + @brief does a blocking request on the url, returning the data or bad status. + + @param url URI to verb on. + @param method the verb to hit the URI with. + @param body the body of the call (if needed - for instance not used for GET and DELETE, but is for POST and PUT) + @param headers HTTP headers to use for the request. + @param timeout Curl timeout to use. Defaults to 5. Rationale: + Without this timeout, blockingGet() calls have been observed to take + up to 90 seconds to complete. Users of blockingGet() already must + check the HTTP return code for validity, so this will not introduce + new errors. A 5 second timeout will succeed > 95% of the time (and + probably > 99% of the time) based on my statistics. JC + + @returns an LLSD map: {status: integer, body: map} + */ +static LLSD blocking_request( + const std::string& url, + LLURLRequest::ERequestAction method, + const LLSD& body, + const LLSD& headers = LLSD(), + const F32 timeout = 5 +) { - llinfos << "blockingGet of " << url << llendl; - - // Returns an LLSD map: {status: integer, body: map} - char curl_error_buffer[CURL_ERROR_SIZE]; + lldebugs << "blockingRequest of " << url << llendl; + char curl_error_buffer[CURL_ERROR_SIZE] = "\0"; CURL* curlp = curl_easy_init(); - LLHTTPBuffer http_buffer; - - // Without this timeout, blockingGet() calls have been observed to take - // up to 90 seconds to complete. Users of blockingGet() already must - // check the HTTP return code for validity, so this will not introduce - // new errors. A 5 second timeout will succeed > 95% of the time (and - // probably > 99% of the time) based on my statistics. JC + std::string body_str; + + // other request method checks root cert first, we skip? + //req->checkRootCertificate(true); + + // * Set curl handle options curl_easy_setopt(curlp, CURLOPT_NOSIGNAL, 1); // don't use SIGALRM for timeouts - curl_easy_setopt(curlp, CURLOPT_TIMEOUT, 5); // seconds - + curl_easy_setopt(curlp, CURLOPT_TIMEOUT, timeout); // seconds, see warning at top of function. curl_easy_setopt(curlp, CURLOPT_WRITEFUNCTION, LLHTTPBuffer::curl_write); curl_easy_setopt(curlp, CURLOPT_WRITEDATA, &http_buffer); curl_easy_setopt(curlp, CURLOPT_URL, url.c_str()); curl_easy_setopt(curlp, CURLOPT_ERRORBUFFER, curl_error_buffer); - curl_easy_setopt(curlp, CURLOPT_FAILONERROR, 1); - - struct curl_slist *header_list = NULL; - header_list = curl_slist_append(header_list, "Accept: application/llsd+xml"); - CURLcode curl_result = curl_easy_setopt(curlp, CURLOPT_HTTPHEADER, header_list); + + // * Setup headers (don't forget to free them after the call!) + curl_slist* headers_list = NULL; + if (headers.isMap()) + { + LLSD::map_const_iterator iter = headers.beginMap(); + LLSD::map_const_iterator end = headers.endMap(); + for (; iter != end; ++iter) + { + std::ostringstream header; + header << iter->first << ": " << iter->second.asString() ; + lldebugs << "header = " << header.str() << llendl; + headers_list = curl_slist_append(headers_list, header.str().c_str()); + } + } + + // * Setup specific method / "verb" for the URI (currently only GET and POST supported + poppy) + if (method == LLURLRequest::HTTP_GET) + { + curl_easy_setopt(curlp, CURLOPT_HTTPGET, 1); + } + else if (method == LLURLRequest::HTTP_POST) + { + curl_easy_setopt(curlp, CURLOPT_POST, 1); + //serialize to ostr then copy to str - need to because ostr ptr is unstable :( + std::ostringstream ostr; + LLSDSerialize::toXML(body, ostr); + body_str = ostr.str(); + curl_easy_setopt(curlp, CURLOPT_POSTFIELDS, body_str.c_str()); + //copied from PHP libs, correct? + headers_list = curl_slist_append(headers_list, "Content-Type: application/llsd+xml"); + + // copied from llurlrequest.cpp + // it appears that apache2.2.3 or django in etch is busted. If + // we do not clear the expect header, we get a 500. May be + // limited to django/mod_wsgi. + headers_list = curl_slist_append(headers_list, "Expect:"); + } + + // * Do the action using curl, handle results + lldebugs << "HTTP body: " << body_str << llendl; + headers_list = curl_slist_append(headers_list, "Accept: application/llsd+xml"); + CURLcode curl_result = curl_easy_setopt(curlp, CURLOPT_HTTPHEADER, headers_list); if ( curl_result != CURLE_OK ) { - llinfos << "Curl is hosed - can't add Accept header for llsd+xml" << llendl; + llinfos << "Curl is hosed - can't add headers" << llendl; } LLSD response = LLSD::emptyMap(); - S32 curl_success = curl_easy_perform(curlp); - S32 http_status = 499; - curl_easy_getinfo(curlp,CURLINFO_RESPONSE_CODE, &http_status); - + curl_easy_getinfo(curlp, CURLINFO_RESPONSE_CODE, &http_status); response["status"] = http_status; - - if (curl_success != 0 - && http_status != 404) // We expect 404s, don't spam for them. + // if we get a non-404 and it's not a 200 OR maybe it is but you have error bits, + if ( http_status != 404 && (http_status != 200 || curl_success != 0) ) { + // We expect 404s, don't spam for them. + llwarns << "CURL REQ URL: " << url << llendl; + llwarns << "CURL REQ METHOD TYPE: " << method << llendl; + llwarns << "CURL REQ HEADERS: " << headers.asString() << llendl; + llwarns << "CURL REQ BODY: " << body_str << llendl; + llwarns << "CURL HTTP_STATUS: " << http_status << llendl; llwarns << "CURL ERROR: " << curl_error_buffer << llendl; - + llwarns << "CURL ERROR BODY: " << http_buffer.asString() << llendl; response["body"] = http_buffer.asString(); } else { response["body"] = http_buffer.asLLSD(); + lldebugs << "CURL response: " << http_buffer.asString() << llendl; } - if(header_list) + if(headers_list) { // free the header list - curl_slist_free_all(header_list); - header_list = NULL; + curl_slist_free_all(headers_list); } + // * Cleanup curl_easy_cleanup(curlp); - return response; } +LLSD LLHTTPClient::blockingGet(const std::string& url) +{ + return blocking_request(url, LLURLRequest::HTTP_GET, LLSD()); +} + +LLSD LLHTTPClient::blockingPost(const std::string& url, const LLSD& body) +{ + return blocking_request(url, LLURLRequest::HTTP_POST, body); +} + void LLHTTPClient::put( const std::string& url, const LLSD& body, diff --git a/indra/llmessage/llhttpclient.h b/indra/llmessage/llhttpclient.h index a0c9fac77fc57830beece89a2512479f10004240..3d0646e5fe9b53b436f5fc9c7166ca47845b767d 100644 --- a/indra/llmessage/llhttpclient.h +++ b/indra/llmessage/llhttpclient.h @@ -142,6 +142,14 @@ class LLHTTPClient */ static LLSD blockingGet(const std::string& url); + /** + * @brief Blocking HTTP POST that returns an LLSD map of status and body. + * + * @param url the complete serialized (and escaped) url to get + * @param body the LLSD post body + * @return An LLSD of { 'status':status (an int), 'body':payload (an LLSD) } + */ + static LLSD blockingPost(const std::string& url, const LLSD& body); static void setPump(LLPumpIO& pump); diff --git a/indra/llmessage/llinstantmessage.cpp b/indra/llmessage/llinstantmessage.cpp index e41b332e7bb722c76f17df34f44e4e21996d9eec..3da41939fae047184f0ae872779690b207e4e2fa 100644 --- a/indra/llmessage/llinstantmessage.cpp +++ b/indra/llmessage/llinstantmessage.cpp @@ -357,7 +357,7 @@ LLPointer<LLIMInfo> llsd_to_im_info(const LLSD& im_info_sd) param_message["message"].asString(), param_message["id"].asUUID(), (U32) param_message["parent_estate_id"].asInteger(), - im_info->mRegionID = param_message["region_id"].asUUID(), + param_message["region_id"].asUUID(), ll_vector3_from_sd(param_message["position"]), param_message["data"], (U8) param_message["offline"].asInteger(), diff --git a/indra/llmessage/llmessageconfig.cpp b/indra/llmessage/llmessageconfig.cpp index d4279354b63dc70bb6d393235bc45a7c54ae9c9d..dff0a3844c66f32c0e5fdda94c9fde33bdf9500b 100644 --- a/indra/llmessage/llmessageconfig.cpp +++ b/indra/llmessage/llmessageconfig.cpp @@ -66,7 +66,7 @@ class LLMessageConfigFile : public LLLiveFile static LLMessageConfigFile& instance(); // return the singleton configuration file - /* virtual */ void loadFile(); + /* virtual */ bool loadFile(); void loadServerDefaults(const LLSD& data); void loadMaxQueuedEvents(const LLSD& data); void loadMessages(const LLSD& data); @@ -98,7 +98,7 @@ LLMessageConfigFile& LLMessageConfigFile::instance() } // virtual -void LLMessageConfigFile::loadFile() +bool LLMessageConfigFile::loadFile() { LLSD data; { @@ -115,7 +115,7 @@ void LLMessageConfigFile::loadFile() LL_INFOS("AppInit") << "LLMessageConfigFile::loadFile: file missing," " ill-formed, or simply undefined; not changing the" " file" << LL_ENDL; - return; + return false; } } loadServerDefaults(data); @@ -123,6 +123,7 @@ void LLMessageConfigFile::loadFile() loadMessages(data); loadCapBans(data); loadMessageBans(data); + return true; } void LLMessageConfigFile::loadServerDefaults(const LLSD& data) diff --git a/indra/llmessage/llurlrequest.cpp b/indra/llmessage/llurlrequest.cpp index 46e976fe35ddab9c9e4f29ec5f9e369209303d74..3ab8057abb0951576a5f4d1dea241e404c65e4c3 100644 --- a/indra/llmessage/llurlrequest.cpp +++ b/indra/llmessage/llurlrequest.cpp @@ -98,6 +98,26 @@ LLURLRequestDetail::~LLURLRequestDetail() * class LLURLRequest */ +// static +std::string LLURLRequest::actionAsVerb(LLURLRequest::ERequestAction action) +{ + static const std::string VERBS[] = + { + "(invalid)", + "HEAD", + "GET", + "PUT", + "POST", + "DELETE", + "MOVE" + }; + if(((S32)action <=0) || ((S32)action >= REQUEST_ACTION_COUNT)) + { + return VERBS[0]; + } + return VERBS[action]; +} + LLURLRequest::LLURLRequest(LLURLRequest::ERequestAction action) : mAction(action) { diff --git a/indra/llmessage/llurlrequest.h b/indra/llmessage/llurlrequest.h index d1facbff0f2e035e1ff9bf7aa6b698ae4d04d199..86ef71f085b7048386f68a9c086681987d9d5b21 100644 --- a/indra/llmessage/llurlrequest.h +++ b/indra/llmessage/llurlrequest.h @@ -81,6 +81,11 @@ class LLURLRequest : public LLIOPipe REQUEST_ACTION_COUNT }; + /** + * @brief Turn the requst action into an http verb. + */ + static std::string actionAsVerb(ERequestAction action); + /** * @brief Constructor. * diff --git a/indra/llmessage/message.cpp b/indra/llmessage/message.cpp index 78af35bf65dae0340690521c26c37552a8740b41..e56d818d652899f9604e275709886c102f4024ae 100644 --- a/indra/llmessage/message.cpp +++ b/indra/llmessage/message.cpp @@ -86,6 +86,7 @@ #include "v3math.h" #include "v4math.h" #include "lltransfertargetvfile.h" +#include "llmemtype.h" // Constants //const char* MESSAGE_LOG_FILENAME = "message.log"; @@ -794,6 +795,7 @@ S32 LLMessageSystem::getReceiveBytes() const void LLMessageSystem::processAcks() { + LLMemType mt_pa(LLMemType::MTYPE_MESSAGE_PROCESS_ACKS); F64 mt_sec = getMessageTimeSeconds(); { gTransferManager.updateTransfers(); @@ -4020,6 +4022,7 @@ void LLMessageSystem::setTimeDecodesSpamThreshold( F32 seconds ) // TODO: babbage: move gServicePump in to LLMessageSystem? bool LLMessageSystem::checkAllMessages(S64 frame_count, LLPumpIO* http_pump) { + LLMemType mt_cam(LLMemType::MTYPE_MESSAGE_CHECK_ALL); if(checkMessages(frame_count)) { return true; diff --git a/indra/llmessage/message.h b/indra/llmessage/message.h index 3d7d8984ad1e7851eaf9512ad3df2e3ed7c6a087..27482ca1af1860ca0f86750ea47efce944b17c2c 100644 --- a/indra/llmessage/message.h +++ b/indra/llmessage/message.h @@ -509,6 +509,22 @@ class LLMessageSystem : public LLMessageSenderInterface public: // BOOL decodeData(const U8 *buffer, const LLHost &host); + /** + gets binary data from the current message. + + @param blockname the name of the block in the message (from the message template) + + @param varname + + @param datap + + @param size expected size - set to zero to get any amount of data up to max_size. + Make sure max_size is set in that case! + + @param blocknum + + @param max_size the max number of bytes to read + */ void getBinaryDataFast(const char *blockname, const char *varname, void *datap, S32 size, S32 blocknum = 0, S32 max_size = S32_MAX); void getBinaryData(const char *blockname, const char *varname, void *datap, S32 size, S32 blocknum = 0, S32 max_size = S32_MAX); void getBOOLFast( const char *block, const char *var, BOOL &data, S32 blocknum = 0); diff --git a/indra/llmessage/tests/llcurl_stub.cpp b/indra/llmessage/tests/llcurl_stub.cpp index afd38b0655801d3abf20a6c535b4eb660fa7aa70..d6be54336a4a68f40c5df52c28e7029faebc2420 100644 --- a/indra/llmessage/tests/llcurl_stub.cpp +++ b/indra/llmessage/tests/llcurl_stub.cpp @@ -2,7 +2,7 @@ * @file llcurl_stub.cpp * @brief stub class to allow unit testing * - * $LicenseInfo:firstyear=2008&license=internal$ + * $LicenseInfo:firstyear=2008&license=viewergpl$ * * Copyright (c) 2008-2009, Linden Research, Inc. * diff --git a/indra/llmessage/tests/lltesthttpclientadapter.cpp b/indra/llmessage/tests/lltesthttpclientadapter.cpp index 9bb597feec6e94eee9a2671666030063a01b4fbd..0cea4b57c206eadc6b101be8ecab1d3bc8a991ac 100644 --- a/indra/llmessage/tests/lltesthttpclientadapter.cpp +++ b/indra/llmessage/tests/lltesthttpclientadapter.cpp @@ -2,7 +2,7 @@ * @file * @brief * - * $LicenseInfo:firstyear=2008&license=internal$ + * $LicenseInfo:firstyear=2008&license=viewergpl$ * * Copyright (c) 2008-2009, Linden Research, Inc. * diff --git a/indra/llmessage/tests/lltesthttpclientadapter.h b/indra/llmessage/tests/lltesthttpclientadapter.h index 8853fc44ec0b7a60a8d4ade8a34c0be386b0654a..6f252e8510e4a7cb2c73f5dffeba32a119ab275f 100644 --- a/indra/llmessage/tests/lltesthttpclientadapter.h +++ b/indra/llmessage/tests/lltesthttpclientadapter.h @@ -2,7 +2,7 @@ * @file * @brief * - * $LicenseInfo:firstyear=2008&license=internal$ + * $LicenseInfo:firstyear=2008&license=viewergpl$ * * Copyright (c) 2008-2009, Linden Research, Inc. * diff --git a/indra/llmessage/tests/lltestmessagesender.cpp b/indra/llmessage/tests/lltestmessagesender.cpp index 2c8456e0a81f65939bfddc4df482aba8f99145b6..3d1876ec368a69c0f66dd25c17c99417ed65840e 100644 --- a/indra/llmessage/tests/lltestmessagesender.cpp +++ b/indra/llmessage/tests/lltestmessagesender.cpp @@ -2,7 +2,7 @@ * @file * @brief * - * $LicenseInfo:firstyear=2008&license=internal$ + * $LicenseInfo:firstyear=2008&license=viewergpl$ * * Copyright (c) 2008-2009, Linden Research, Inc. * diff --git a/indra/llmessage/tests/lltestmessagesender.h b/indra/llmessage/tests/lltestmessagesender.h index dfbef6be64d59de8d63d66a1d3672cfea3aef03c..d3aaee8f695199522db2934eb025d597b5ae3a1e 100644 --- a/indra/llmessage/tests/lltestmessagesender.h +++ b/indra/llmessage/tests/lltestmessagesender.h @@ -2,7 +2,7 @@ * @file * @brief * - * $LicenseInfo:firstyear=2008&license=internal$ + * $LicenseInfo:firstyear=2008&license=viewergpl$ * * Copyright (c) 2008-2009, Linden Research, Inc. * diff --git a/indra/llprimitive/llprimitive.cpp b/indra/llprimitive/llprimitive.cpp index a0fcecfe5fb94d873d4773d027b3852cdc7df59d..9b0fd81ed31176747c1d73b9dffa13c7f41050d8 100644 --- a/indra/llprimitive/llprimitive.cpp +++ b/indra/llprimitive/llprimitive.cpp @@ -132,7 +132,7 @@ void LLPrimitive::setVolumeManager( LLVolumeMgr* volume_manager ) { if ( !volume_manager || sVolumeManager ) { - llerrs << "Unable to set LLPrimitive::sVolumeManager to NULL" << llendl; + llerrs << "LLPrimitive::sVolumeManager attempting to be set to NULL or it already has been set." << llendl; } sVolumeManager = volume_manager; } diff --git a/indra/llprimitive/tests/llmessagesystem_stub.cpp b/indra/llprimitive/tests/llmessagesystem_stub.cpp new file mode 100644 index 0000000000000000000000000000000000000000..62504be3b07e5484f44a5ed7f2df342c85e52eca --- /dev/null +++ b/indra/llprimitive/tests/llmessagesystem_stub.cpp @@ -0,0 +1,42 @@ +/** + * @file llmessagesystem_stub.cpp + * @brief stub class to allow unit testing + * + * $LicenseInfo:firstyear=2008&license=internal$ + * + * Copyright (c) 2008, Linden Research, Inc. + * + * The following source code is PROPRIETARY AND CONFIDENTIAL. Use of + * this source code is governed by the Linden Lab Source Code Disclosure + * Agreement ("Agreement") { } + * Lab. By accessing, using, copying, modifying or distributing this + * software, you acknowledge that you have been informed of your + * obligations under the Agreement and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ +#include "linden_common.h" + +char * _PREHASH_TextureEntry; + +S32 LLMessageSystem::getSizeFast(char const*, char const*) const +{ + return 0; +} + +S32 LLMessageSystem::getSizeFast(char const*, int, char const*) const +{ + return 0; +} + +void LLMessageSystem::getBinaryDataFast(char const*, char const*, void*, int, int, int) +{ +} + +void LLMessageSystem::addBinaryDataFast(char const*, void const*, int) +{ +} + diff --git a/indra/llprimitive/tests/llprimitive_test.cpp b/indra/llprimitive/tests/llprimitive_test.cpp new file mode 100644 index 0000000000000000000000000000000000000000..1805a9e96854b849f01f63d34adf39353224b015 --- /dev/null +++ b/indra/llprimitive/tests/llprimitive_test.cpp @@ -0,0 +1,214 @@ +/** + * @file llprimitive_test.cpp + * @brief llprimitive tests + * + * $LicenseInfo:firstyear=2001&license=viewergpl$ + * Copyright (c) 2001-2009, Linden Research, Inc. + * $/LicenseInfo$ + */ + +#include "linden_common.h" + +#include "../test/lltut.h" + +#include "../llprimitive.h" + +#include "../../llmath/llvolumemgr.h" + +class DummyVolumeMgr : public LLVolumeMgr +{ +public: + DummyVolumeMgr() : LLVolumeMgr(), mVolumeTest(NULL), mCurrDetailTest(0) {} + ~DummyVolumeMgr() + { + } + + + virtual LLVolume *refVolume(const LLVolumeParams &volume_params, const S32 detail) + { + if (mVolumeTest.isNull() || volume_params != mCurrParamsTest || detail != mCurrDetailTest) + { + F32 volume_detail = LLVolumeLODGroup::getVolumeScaleFromDetail(detail); + mVolumeTest = new LLVolume(volume_params, volume_detail, FALSE, FALSE); + mCurrParamsTest = volume_params; + mCurrDetailTest = detail; + return mVolumeTest; + } + else + { + return mVolumeTest; + } + } + + virtual void unrefVolume(LLVolume *volumep) + { + if (mVolumeTest == volumep) + { + mVolumeTest = NULL; + } + } + +private: + LLPointer<LLVolume> mVolumeTest; + LLVolumeParams mCurrParamsTest; + S32 mCurrDetailTest; +}; + +class PRIMITIVE_TEST_SETUP +{ +public: + PRIMITIVE_TEST_SETUP() + { + volume_manager_test = new DummyVolumeMgr(); + LLPrimitive::setVolumeManager(volume_manager_test); + } + + ~PRIMITIVE_TEST_SETUP() + { + LLPrimitive::cleanupVolumeManager(); + } + DummyVolumeMgr * volume_manager_test; +}; + +namespace tut +{ + struct llprimitive + { + PRIMITIVE_TEST_SETUP setup_class; + }; + + typedef test_group<llprimitive> llprimitive_t; + typedef llprimitive_t::object llprimitive_object_t; + tut::llprimitive_t tut_llprimitive("llprimitive"); + + template<> template<> + void llprimitive_object_t::test<1>() + { + set_test_name("Test LLPrimitive Instantiation"); + LLPrimitive test; + } + + template<> template<> + void llprimitive_object_t::test<2>() + { + set_test_name("Test LLPrimitive PCode setter and getter."); + LLPrimitive test; + ensure_equals(test.getPCode(), 0); + LLPCode code = 1; + test.setPCode(code); + ensure_equals(test.getPCode(), code); + } + + template<> template<> + void llprimitive_object_t::test<3>() + { + set_test_name("Test llprimitive constructor and initer."); + LLPCode code = 1; + LLPrimitive primitive; + primitive.init_primitive(code); + ensure_equals(primitive.getPCode(), code); + } + + template<> template<> + void llprimitive_object_t::test<4>() + { + set_test_name("Test Static llprimitive constructor and initer."); + LLPCode code = 1; + LLPrimitive * primitive = LLPrimitive::createPrimitive(code); + ensure(primitive != NULL); + ensure_equals(primitive->getPCode(), code); + } + + template<> template<> + void llprimitive_object_t::test<5>() + { + set_test_name("Test setVolume creation of new unique volume."); + LLPrimitive primitive; + LLVolumeParams params; + + // Make sure volume starts off null + ensure(primitive.getVolume() == NULL); + + // Make sure we have no texture entries before setting the volume + ensure_equals(primitive.getNumTEs(), 0); + + // Test that GEOMETRY has not been flagged as changed. + ensure(!primitive.isChanged(LLXform::GEOMETRY)); + + // Make sure setVolume returns true + ensure(primitive.setVolume(params, 0, true) == TRUE); + LLVolume* new_volume = primitive.getVolume(); + + // make sure new volume was actually created + ensure(new_volume != NULL); + + // Make sure that now that we've set the volume we have texture entries + ensure_not_equals(primitive.getNumTEs(), 0); + + // Make sure that the number of texture entries equals the number of faces in the volume (should be 6) + ensure_equals(new_volume->getNumFaces(), 6); + ensure_equals(primitive.getNumTEs(), new_volume->getNumFaces()); + + // Test that GEOMETRY has been flagged as changed. + ensure(primitive.isChanged(LLXform::GEOMETRY)); + + // Run it twice to make sure it doesn't create a different one if params are the same + ensure(primitive.setVolume(params, 0, true) == FALSE); + ensure(new_volume == primitive.getVolume()); + + // Change the param definition and try setting it again. + params.setRevolutions(4); + ensure(primitive.setVolume(params, 0, true) == TRUE); + + // Ensure that we now have a different volume + ensure(new_volume != primitive.getVolume()); + } + + template<> template<> + void llprimitive_object_t::test<6>() + { + set_test_name("Test setVolume creation of new NOT-unique volume."); + LLPrimitive primitive; + LLVolumeParams params; + + // Make sure volume starts off null + ensure(primitive.getVolume() == NULL); + + // Make sure we have no texture entries before setting the volume + ensure_equals(primitive.getNumTEs(), 0); + + // Test that GEOMETRY has not been flagged as changed. + ensure(!primitive.isChanged(LLXform::GEOMETRY)); + + // Make sure setVolume returns true + ensure(primitive.setVolume(params, 0, false) == TRUE); + + LLVolume* new_volume = primitive.getVolume(); + + // make sure new volume was actually created + ensure(new_volume != NULL); + + // Make sure that now that we've set the volume we have texture entries + ensure_not_equals(primitive.getNumTEs(), 0); + + // Make sure that the number of texture entries equals the number of faces in the volume (should be 6) + ensure_equals(new_volume->getNumFaces(), 6); + ensure_equals(primitive.getNumTEs(), new_volume->getNumFaces()); + + // Test that GEOMETRY has been flagged as changed. + ensure(primitive.isChanged(LLXform::GEOMETRY)); + + // Run it twice to make sure it doesn't create a different one if params are the same + ensure(primitive.setVolume(params, 0, false) == FALSE); + ensure(new_volume == primitive.getVolume()); + + // Change the param definition and try setting it again. + params.setRevolutions(4); + ensure(primitive.setVolume(params, 0, false) == TRUE); + + // Ensure that we now have a different volume + ensure(new_volume != primitive.getVolume()); + } +} + +#include "llmessagesystem_stub.cpp" diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp index f39e88f4834dd822661d2947c99897cd4a626ad0..69675e322a22e9ec418d68973f30c04b07221b5a 100644 --- a/indra/llrender/llgl.cpp +++ b/indra/llrender/llgl.cpp @@ -45,10 +45,13 @@ #include "llrender.h" #include "llerror.h" +#include "llerrorcontrol.h" #include "llquaternion.h" #include "llmath.h" #include "m4math.h" #include "llstring.h" +#include "llmemtype.h" +#include "llstacktrace.h" #include "llglheaders.h" @@ -56,9 +59,49 @@ //#define GL_STATE_VERIFY #endif + +BOOL gDebugSession = FALSE; BOOL gDebugGL = FALSE; BOOL gClothRipple = FALSE; BOOL gNoRender = FALSE; + +std::ofstream gFailLog; + +void ll_init_fail_log(std::string filename) +{ + gFailLog.open(filename.c_str()); +} + + +void ll_fail(std::string msg) +{ + + if (gDebugSession) + { + std::vector<std::string> lines; + + gFailLog << LLError::utcTime() << " " << msg << std::endl; + + gFailLog << "Stack Trace:" << std::endl; + + ll_get_stack_trace(lines); + + for(size_t i = 0; i < lines.size(); ++i) + { + gFailLog << lines[i] << std::endl; + } + + gFailLog << "End of Stack Trace." << std::endl << std::endl; + + gFailLog.flush(); + } +}; + +void ll_close_fail_log() +{ + gFailLog.close(); +} + LLMatrix4 gGLObliqueProjectionInverse; #define LL_GL_NAME_POOLING 0 @@ -594,6 +637,7 @@ void LLGLManager::initExtensions() mHasShaderObjects = FALSE; mHasVertexShader = FALSE; mHasFragmentShader = FALSE; + mHasTextureRectangle = FALSE; #else // LL_MESA_HEADLESS mHasMultitexture = glh_init_extensions("GL_ARB_multitexture"); mHasMipMapGeneration = glh_init_extensions("GL_SGIS_generate_mipmap"); @@ -610,6 +654,7 @@ void LLGLManager::initExtensions() && ExtensionExists("GL_EXT_packed_depth_stencil", gGLHExts.mSysExts); mHasFramebufferMultisample = mHasFramebufferObject && ExtensionExists("GL_EXT_framebuffer_multisample", gGLHExts.mSysExts); mHasDrawBuffers = ExtensionExists("GL_ARB_draw_buffers", gGLHExts.mSysExts); + mHasTextureRectangle = ExtensionExists("GL_ARB_texture_rectangle", gGLHExts.mSysExts); #if !LL_DARWIN mHasPointParameters = !mIsATI && ExtensionExists("GL_ARB_point_parameters", gGLHExts.mSysExts); #endif @@ -683,6 +728,7 @@ void LLGLManager::initExtensions() if (strchr(blacklist,'q')) mHasFramebufferObject = FALSE;//S if (strchr(blacklist,'r')) mHasDrawBuffers = FALSE;//S if (strchr(blacklist,'s')) mHasFramebufferMultisample = FALSE; + if (strchr(blacklist,'t')) mHasTextureRectangle = FALSE; } #endif // LL_LINUX || LL_SOLARIS @@ -969,6 +1015,7 @@ void assert_glerror() { return; } + if (!gGLManager.mInited) { LL_ERRS("RenderInit") << "GL not initialized" << LL_ENDL; @@ -986,12 +1033,22 @@ void assert_glerror() { LL_WARNS("RenderState") << "GL Error:" << error<< LL_ENDL; LL_WARNS("RenderState") << "GL Error String:" << gl_error_msg << LL_ENDL; + + if (gDebugSession) + { + gFailLog << "GL Error:" << gl_error_msg << std::endl; + } } else { // gluErrorString returns NULL for some extensions' error codes. // you'll probably have to grep for the number in glext.h. LL_WARNS("RenderState") << "GL Error: UNKNOWN 0x" << std::hex << error << std::dec << LL_ENDL; + + if (gDebugSession) + { + gFailLog << "GL Error: UNKNOWN 0x" << std::hex << error << std::dec << std::endl; + } } error = glGetError(); #endif @@ -999,7 +1056,14 @@ void assert_glerror() if (quit) { - llerrs << "One or more unhandled GL errors." << llendl; + if (gDebugSession) + { + ll_fail("assert_glerror failed"); + } + else + { + llerrs << "One or more unhandled GL errors." << llendl; + } } } @@ -1085,9 +1149,19 @@ void LLGLState::checkStates(const std::string& msg) glGetIntegerv(GL_BLEND_SRC, &src); glGetIntegerv(GL_BLEND_DST, &dst); + BOOL error = FALSE; + if (src != GL_SRC_ALPHA || dst != GL_ONE_MINUS_SRC_ALPHA) { - LL_GL_ERRS << "Blend function corrupted: " << std::hex << src << " " << std::hex << dst << " " << msg << std::dec << LL_ENDL; + if (gDebugSession) + { + gFailLog << "Blend function corrupted: " << std::hex << src << " " << std::hex << dst << " " << msg << std::dec << std::endl; + error = TRUE; + } + else + { + LL_GL_ERRS << "Blend function corrupted: " << std::hex << src << " " << std::hex << dst << " " << msg << std::dec << LL_ENDL; + } } for (std::map<LLGLenum, LLGLboolean>::iterator iter = sStateMap.begin(); @@ -1099,10 +1173,22 @@ void LLGLState::checkStates(const std::string& msg) if(cur_state != gl_state) { dumpStates(); - LL_GL_ERRS << llformat("LLGLState error. State: 0x%04x",state) << LL_ENDL; + if (gDebugSession) + { + gFailLog << llformat("LLGLState error. State: 0x%04x",state) << std::endl; + error = TRUE; + } + else + { + LL_GL_ERRS << llformat("LLGLState error. State: 0x%04x",state) << LL_ENDL; + } } } + if (error) + { + ll_fail("LLGLState::checkStates failed."); + } stop_glerror(); } @@ -1113,9 +1199,12 @@ void LLGLState::checkTextureChannels(const std::string& msg) return; } + stop_glerror(); + GLint activeTexture; glGetIntegerv(GL_ACTIVE_TEXTURE_ARB, &activeTexture); - + stop_glerror(); + BOOL error = FALSE; if (activeTexture == GL_TEXTURE0_ARB) @@ -1123,15 +1212,22 @@ void LLGLState::checkTextureChannels(const std::string& msg) GLint tex_env_mode = 0; glGetTexEnviv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, &tex_env_mode); + stop_glerror(); + if (tex_env_mode != GL_MODULATE) { error = TRUE; LL_WARNS("RenderState") << "GL_TEXTURE_ENV_MODE invalid: " << std::hex << tex_env_mode << std::dec << LL_ENDL; + if (gDebugSession) + { + gFailLog << "GL_TEXTURE_ENV_MODE invalid: " << std::hex << tex_env_mode << std::dec << std::endl; + } } } - GLint maxTextureUnits; + GLint maxTextureUnits = 0; glGetIntegerv(GL_MAX_TEXTURE_UNITS_ARB, &maxTextureUnits); + stop_glerror(); static const char* label[] = { @@ -1167,30 +1263,48 @@ void LLGLState::checkTextureChannels(const std::string& msg) { gGL.getTexUnit(i)->activate(); glClientActiveTextureARB(GL_TEXTURE0_ARB+i); - + stop_glerror(); glGetIntegerv(GL_TEXTURE_STACK_DEPTH, &stackDepth); + stop_glerror(); if (stackDepth != 1) { error = TRUE; LL_WARNS("RenderState") << "Texture matrix stack corrupted." << LL_ENDL; + + if (gDebugSession) + { + gFailLog << "Texture matrix stack corrupted." << std::endl; + } } glGetFloatv(GL_TEXTURE_MATRIX, (GLfloat*) matrix.mMatrix); + stop_glerror(); if (matrix != identity) { error = TRUE; LL_WARNS("RenderState") << "Texture matrix in channel " << i << " corrupt." << LL_ENDL; + if (gDebugSession) + { + gFailLog << "Texture matrix in channel " << i << " corrupt." << std::endl; + } } - for (S32 j = (i == 0 ? 1 : 0); j < 9; j++) + + for (S32 j = (i == 0 ? 1 : 0); + j < (gGLManager.mHasTextureRectangle ? 9 : 8); j++) { if (glIsEnabled(value[j])) { error = TRUE; LL_WARNS("RenderState") << "Texture channel " << i << " still has " << label[j] << " enabled." << LL_ENDL; + if (gDebugSession) + { + gFailLog << "Texture channel " << i << " still has " << label[j] << " enabled." << std::endl; + } } + stop_glerror(); } glh::matrix4f mat; @@ -1198,20 +1312,33 @@ void LLGLState::checkTextureChannels(const std::string& msg) identity.identity(); glGetFloatv(GL_TEXTURE_MATRIX, mat.m); + stop_glerror(); if (mat != identity) { error = TRUE; LL_WARNS("RenderState") << "Texture matrix " << i << " is not identity." << LL_ENDL; + if (gDebugSession) + { + gFailLog << "Texture matrix " << i << " is not identity." << std::endl; + } } } gGL.getTexUnit(0)->activate(); glClientActiveTextureARB(GL_TEXTURE0_ARB); + stop_glerror(); if (error) { - LL_GL_ERRS << "GL texture state corruption detected. " << msg << LL_ENDL; + if (gDebugSession) + { + ll_fail("LLGLState::checkTextureChannels failed."); + } + else + { + LL_GL_ERRS << "GL texture state corruption detected. " << msg << LL_ENDL; + } } } @@ -1231,6 +1358,10 @@ void LLGLState::checkClientArrays(const std::string& msg, U32 data_mask) if (active_texture != GL_TEXTURE0_ARB) { llwarns << "Client active texture corrupted: " << active_texture << llendl; + if (gDebugSession) + { + gFailLog << "Client active texture corrupted: " << active_texture << std::endl; + } error = TRUE; } @@ -1238,6 +1369,10 @@ void LLGLState::checkClientArrays(const std::string& msg, U32 data_mask) if (active_texture != GL_TEXTURE0_ARB) { llwarns << "Active texture corrupted: " << active_texture << llendl; + if (gDebugSession) + { + gFailLog << "Active texture corrupted: " << active_texture << std::endl; + } error = TRUE; } @@ -1274,6 +1409,10 @@ void LLGLState::checkClientArrays(const std::string& msg, U32 data_mask) { error = TRUE; LL_WARNS("RenderState") << "GL still has " << label[j] << " enabled." << LL_ENDL; + if (gDebugSession) + { + gFailLog << "GL still has " << label[j] << " enabled." << std::endl; + } } } else @@ -1282,6 +1421,10 @@ void LLGLState::checkClientArrays(const std::string& msg, U32 data_mask) { error = TRUE; LL_WARNS("RenderState") << "GL does not have " << label[j] << " enabled." << LL_ENDL; + if (gDebugSession) + { + gFailLog << "GL does not have " << label[j] << " enabled." << std::endl; + } } } } @@ -1294,6 +1437,10 @@ void LLGLState::checkClientArrays(const std::string& msg, U32 data_mask) { error = TRUE; LL_WARNS("RenderState") << "GL still has GL_TEXTURE_COORD_ARRAY enabled on channel 1." << LL_ENDL; + if (gDebugSession) + { + gFailLog << "GL still has GL_TEXTURE_COORD_ARRAY enabled on channel 1." << std::endl; + } } } else @@ -1302,6 +1449,10 @@ void LLGLState::checkClientArrays(const std::string& msg, U32 data_mask) { error = TRUE; LL_WARNS("RenderState") << "GL does not have GL_TEXTURE_COORD_ARRAY enabled on channel 1." << LL_ENDL; + if (gDebugSession) + { + gFailLog << "GL does not have GL_TEXTURE_COORD_ARRAY enabled on channel 1." << std::endl; + } } } @@ -1311,6 +1462,10 @@ void LLGLState::checkClientArrays(const std::string& msg, U32 data_mask) { error = TRUE; LL_WARNS("RenderState") << "GL still has GL_TEXTURE_2D enabled on channel 1." << LL_ENDL; + if (gDebugSession) + { + gFailLog << "GL still has GL_TEXTURE_2D enabled on channel 1." << std::endl; + } } } else @@ -1319,6 +1474,10 @@ void LLGLState::checkClientArrays(const std::string& msg, U32 data_mask) { error = TRUE; LL_WARNS("RenderState") << "GL does not have GL_TEXTURE_2D enabled on channel 1." << LL_ENDL; + if (gDebugSession) + { + gFailLog << "GL does not have GL_TEXTURE_2D enabled on channel 1." << std::endl; + } } } @@ -1337,13 +1496,24 @@ void LLGLState::checkClientArrays(const std::string& msg, U32 data_mask) { error = TRUE; LL_WARNS("RenderState") << "GL still has vertex attrib array " << i << " enabled." << LL_ENDL; + if (gDebugSession) + { + gFailLog << "GL still has vertex attrib array " << i << " enabled." << std::endl; + } } } } if (error) { - LL_GL_ERRS << "GL client array corruption detected. " << msg << LL_ENDL; + if (gDebugSession) + { + ll_fail("LLGLState::checkClientArrays failed."); + } + else + { + LL_GL_ERRS << "GL client array corruption detected. " << msg << LL_ENDL; + } } } @@ -1394,7 +1564,17 @@ LLGLState::~LLGLState() { if (gDebugGL) { - llassert_always(sStateMap[mState] == glIsEnabled(mState)); + if (!gDebugSession) + { + llassert_always(sStateMap[mState] == glIsEnabled(mState)); + } + else + { + if (sStateMap[mState] != glIsEnabled(mState)) + { + ll_fail("GL enabled state does not match expected"); + } + } } if (mIsEnabled != mWasEnabled) @@ -1706,6 +1886,7 @@ void LLGLNamePool::release(GLuint name) //static void LLGLNamePool::upkeepPools() { + LLMemType mt(LLMemType::MTYPE_UPKEEP_POOLS); for (pool_list_t::iterator iter = sInstances.begin(); iter != sInstances.end(); ++iter) { LLGLNamePool* pool = *iter; diff --git a/indra/llrender/llgl.h b/indra/llrender/llgl.h index 00ff1e2f53d3631a4374d433494697a99894ce6d..34dd982259c4676bcccca0021a593d991a86e7e1 100644 --- a/indra/llrender/llgl.h +++ b/indra/llrender/llgl.h @@ -50,9 +50,17 @@ #include "glh/glh_linear.h" extern BOOL gDebugGL; +extern BOOL gDebugSession; +extern std::ofstream gFailLog; #define LL_GL_ERRS LL_ERRS("RenderState") +void ll_init_fail_log(std::string filename); + +void ll_fail(std::string msg); + +void ll_close_fail_log(); + class LLSD; // Manage GL extensions... @@ -88,6 +96,7 @@ class LLGLManager BOOL mHasOcclusionQuery; BOOL mHasPointParameters; BOOL mHasDrawBuffers; + BOOL mHasTextureRectangle; // Other extensions. BOOL mHasAnisotropic; diff --git a/indra/llrender/llglslshader.cpp b/indra/llrender/llglslshader.cpp index 9e341446583745279a2a9bd8ba4d6d296d431600..830617063b92f413c41656435692a512a951bbb7 100644 --- a/indra/llrender/llglslshader.cpp +++ b/indra/llrender/llglslshader.cpp @@ -408,7 +408,15 @@ S32 LLGLSLShader::disableTexture(S32 uniform, LLTexUnit::eTextureType mode) { if (gDebugGL && gGL.getTexUnit(index)->getCurrType() != mode) { - llerrs << "Texture channel " << index << " texture type corrupted." << llendl; + if (gDebugSession) + { + gFailLog << "Texture channel " << index << " texture type corrupted." << std::endl; + ll_fail("LLGLSLShader::disableTexture failed"); + } + else + { + llerrs << "Texture channel " << index << " texture type corrupted." << llendl; + } } gGL.getTexUnit(index)->disable(); } diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp index cdf626e16f97b04f84a91aa5b3d4143f362bcec1..e1231eeeb480b3b8ceba11f03e364afbe57599a2 100644 --- a/indra/llrender/llimagegl.cpp +++ b/indra/llrender/llimagegl.cpp @@ -54,8 +54,8 @@ LLGLuint LLImageGL::sCurrentBoundTextures[MAX_GL_TEXTURE_UNITS] = { 0 }; U32 LLImageGL::sUniqueCount = 0; U32 LLImageGL::sBindCount = 0; -S32 LLImageGL::sGlobalTextureMemory = 0; -S32 LLImageGL::sBoundTextureMemory = 0; +S32 LLImageGL::sGlobalTextureMemoryInBytes = 0; +S32 LLImageGL::sBoundTextureMemoryInBytes = 0; S32 LLImageGL::sCurBoundTextureMemory = 0; S32 LLImageGL::sCount = 0; @@ -63,6 +63,7 @@ BOOL LLImageGL::sGlobalUseAnisotropic = FALSE; F32 LLImageGL::sLastFrameTime = 0.f; std::set<LLImageGL*> LLImageGL::sImageList; + //************************************************************************************** //below are functions for debug use //do not delete them even though they are not currently being used. @@ -87,9 +88,18 @@ void LLImageGL::checkTexSize() const { GLint texname; glGetIntegerv(GL_TEXTURE_BINDING_2D, &texname); + BOOL error = FALSE; if (texname != mTexName) { - llerrs << "Invalid texture bound!" << llendl; + error = TRUE; + if (gDebugSession) + { + gFailLog << "Invalid texture bound!" << std::endl; + } + else + { + llerrs << "Invalid texture bound!" << llendl; + } } stop_glerror() ; LLGLint x = 0, y = 0 ; @@ -102,7 +112,20 @@ void LLImageGL::checkTexSize() const } if(x != (mWidth >> mCurrentDiscardLevel) || y != (mHeight >> mCurrentDiscardLevel)) { - llerrs << "wrong texture size and discard level!" << llendl ; + error = TRUE; + if (gDebugSession) + { + gFailLog << "wrong texture size and discard level!" << std::endl; + } + else + { + llerrs << "wrong texture size and discard level!" << llendl ; + } + } + + if (error) + { + ll_fail("LLImageGL::checkTexSize failed."); } } } @@ -174,7 +197,7 @@ S32 LLImageGL::dataFormatComponents(S32 dataformat) void LLImageGL::updateStats(F32 current_time) { sLastFrameTime = current_time; - sBoundTextureMemory = sCurBoundTextureMemory; + sBoundTextureMemoryInBytes = sCurBoundTextureMemory; sCurBoundTextureMemory = 0; } @@ -453,10 +476,20 @@ void LLImageGL::updateBindStats(void) const sUniqueCount++; updateBoundTexMem(mTextureMemory); mLastBindTime = sLastFrameTime; + + if(LLFastTimer::sMetricLog) + { + updateTestStats() ; + } } } } +//virtual +void LLImageGL::updateTestStats(void) const +{ +} + //virtual bool LLImageGL::bindError(const S32 stage) const { @@ -680,7 +713,6 @@ void LLImageGL::setImage(const U8* data_in, BOOL data_hasmips) } else { -// LLFastTimer t2(LLFastTimer::FTM_TEMP5); S32 w = getWidth(); S32 h = getHeight(); if (is_compressed) @@ -1013,13 +1045,13 @@ BOOL LLImageGL::createGLTexture(S32 discard_level, const U8* data_in, BOOL data_ if (old_name != 0) { - sGlobalTextureMemory -= mTextureMemory; + sGlobalTextureMemoryInBytes -= mTextureMemory; LLImageGL::deleteTextures(1, &old_name); stop_glerror(); } mTextureMemory = getMipBytes(discard_level); - sGlobalTextureMemory += mTextureMemory; + sGlobalTextureMemoryInBytes += mTextureMemory; setActive() ; // mark this as bound at this point, so we don't throw it out immediately @@ -1096,7 +1128,7 @@ BOOL LLImageGL::isValidForSculpt(S32 discard_level, S32 image_width, S32 image_h return glwidth >= image_width && glheight >= image_height && (GL_RGB8 == glcomponents || GL_RGBA8 == glcomponents) ; } -BOOL LLImageGL::readBackRaw(S32 discard_level, LLImageRaw* imageraw, bool compressed_ok) +BOOL LLImageGL::readBackRaw(S32 discard_level, LLImageRaw* imageraw, bool compressed_ok) const { llpushcallstacks ; if (discard_level < 0) @@ -1220,7 +1252,7 @@ void LLImageGL::destroyGLTexture() } } - sGlobalTextureMemory -= mTextureMemory; + sGlobalTextureMemoryInBytes -= mTextureMemory; mTextureMemory = 0; LLImageGL::deleteTextures(1, &mTexName); @@ -1377,7 +1409,6 @@ void LLImageGL::analyzeAlpha(const void* data_in, S32 w, S32 h) stride = 4; break; default: - llwarns << "Cannot analyze alpha of image with primary format " << std::hex << mFormatPrimary << std::dec << llendl; return; } diff --git a/indra/llrender/llimagegl.h b/indra/llrender/llimagegl.h index 53b0b70caeabc0af7e3e3c68012c37d91b5d20f1..1775ae7de982c7902f4263acb64f3260c190a633 100644 --- a/indra/llrender/llimagegl.h +++ b/indra/llrender/llimagegl.h @@ -43,6 +43,9 @@ #include "llrender.h" +#define BYTES_TO_MEGA_BYTES(x) ((x) >> 20) +#define MEGA_BYTES_TO_BYTES(x) ((x) << 20) + //============================================================================ class LLImageGL : public LLRefCount @@ -55,6 +58,7 @@ class LLImageGL : public LLRefCount static S32 dataFormatComponents(S32 dataformat); void updateBindStats(void) const; + virtual void updateTestStats(void) const; // needs to be called every frame static void updateStats(F32 current_time); @@ -108,7 +112,7 @@ class LLImageGL : public LLRefCount BOOL setSubImageFromFrameBuffer(S32 fb_x, S32 fb_y, S32 x_pos, S32 y_pos, S32 width, S32 height); BOOL setDiscardLevel(S32 discard_level); // Read back a raw image for this discard level, if it exists - BOOL readBackRaw(S32 discard_level, LLImageRaw* imageraw, bool compressed_ok); + BOOL readBackRaw(S32 discard_level, LLImageRaw* imageraw, bool compressed_ok) const; void destroyGLTexture(); void setExplicitFormat(LLGLint internal_format, LLGLenum primary_format, LLGLenum type_format = 0, BOOL swap_bytes = FALSE); @@ -239,12 +243,13 @@ class LLImageGL : public LLRefCount static LLGLuint sCurrentBoundTextures[MAX_GL_TEXTURE_UNITS]; // Currently bound texture ID // Global memory statistics - static S32 sGlobalTextureMemory; // Tracks main memory texmem - static S32 sBoundTextureMemory; // Tracks bound texmem for last completed frame + static S32 sGlobalTextureMemoryInBytes; // Tracks main memory texmem + static S32 sBoundTextureMemoryInBytes; // Tracks bound texmem for last completed frame static S32 sCurBoundTextureMemory; // Tracks bound texmem for current frame static U32 sBindCount; // Tracks number of texture binds for current frame static U32 sUniqueCount; // Tracks number of unique texture binds for current frame static BOOL sGlobalUseAnisotropic; + #if DEBUG_MISS BOOL mMissed; // Missed on last bind? BOOL getMissed() const { return mMissed; }; diff --git a/indra/llrender/llrender.cpp b/indra/llrender/llrender.cpp index 6bb217a9c2fbebc7c3e9d3369d0872d5d0872b5c..d3a230b37b25fc2fa6a145018fa52cbd98ba3cae 100644 --- a/indra/llrender/llrender.cpp +++ b/indra/llrender/llrender.cpp @@ -189,7 +189,7 @@ bool LLTexUnit::bind(LLImageGL* texture, bool forceBind) llwarns << "NULL LLTexUnit::bind texture" << llendl; return false; } - + if (!texture->getTexName()) //if texture does not exist { //if deleted, will re-generate it immediately @@ -785,6 +785,9 @@ void LLRender::setSceneBlendType(eBlendType type) case BT_MULT: glBlendFunc(GL_DST_COLOR, GL_ZERO); break; + case BT_MULT_ALPHA: + glBlendFunc(GL_DST_ALPHA, GL_ZERO); + break; case BT_MULT_X2: glBlendFunc(GL_DST_COLOR, GL_SRC_COLOR); break; diff --git a/indra/llrender/llrender.h b/indra/llrender/llrender.h index 5b52fa1a520ec442e3b957e756ebfa190cab8bf4..31083d8286e67521703cf4c139d8b19458342a4f 100644 --- a/indra/llrender/llrender.h +++ b/indra/llrender/llrender.h @@ -252,6 +252,7 @@ class LLRender BT_ADD, BT_ADD_WITH_ALPHA, // Additive blend modulated by the fragment's alpha. BT_MULT, + BT_MULT_ALPHA, BT_MULT_X2, BT_REPLACE } eBlendType; diff --git a/indra/llrender/llrendertarget.cpp b/indra/llrender/llrendertarget.cpp index b7f31779ca0decd5471e378fbb1c6a184d7d7e97..dc052851ca8f576ecde4e27e4250260dc67e20a1 100644 --- a/indra/llrender/llrendertarget.cpp +++ b/indra/llrender/llrendertarget.cpp @@ -36,6 +36,9 @@ #include "llrender.h" #include "llgl.h" +LLRenderTarget* LLRenderTarget::sBoundTarget = NULL; + + void check_framebuffer_status() { @@ -46,11 +49,9 @@ void check_framebuffer_status() { case GL_FRAMEBUFFER_COMPLETE_EXT: break; - case GL_FRAMEBUFFER_UNSUPPORTED_EXT: - llerrs << "WTF?" << llendl; - break; default: - llerrs << "WTF?" << llendl; + ll_fail("check_framebuffer_status failed"); + break; } } } @@ -273,6 +274,7 @@ void LLRenderTarget::release() } mSampleBuffer = NULL; + sBoundTarget = NULL; } void LLRenderTarget::bindTarget() @@ -311,6 +313,7 @@ void LLRenderTarget::bindTarget() } glViewport(0, 0, mResX, mResY); + sBoundTarget = this; } // static @@ -320,6 +323,7 @@ void LLRenderTarget::unbindTarget() { glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); } + sBoundTarget = NULL; } void LLRenderTarget::clear(U32 mask_in) @@ -532,6 +536,7 @@ void LLMultisampleBuffer::bindTarget(LLRenderTarget* ref) glViewport(0, 0, mResX, mResY); + sBoundTarget = this; } void LLMultisampleBuffer::allocate(U32 resx, U32 resy, U32 color_fmt, BOOL depth, BOOL stencil, LLTexUnit::eTextureType usage, BOOL use_fbo ) diff --git a/indra/llrender/llrendertarget.h b/indra/llrender/llrendertarget.h index d5d809b791da1dd2fc1679a9ba5518c018a368e1..98b608f834761aa3f17f5a66662ec6c0f6c8d407 100644 --- a/indra/llrender/llrendertarget.h +++ b/indra/llrender/llrendertarget.h @@ -140,6 +140,8 @@ class LLRenderTarget //one renderable attachment (i.e. color buffer, depth buffer). BOOL isComplete() const; + static LLRenderTarget* getCurrentBoundTarget() { return sBoundTarget; } + protected: friend class LLMultisampleBuffer; U32 mResX; @@ -153,6 +155,8 @@ class LLRenderTarget LLTexUnit::eTextureType mUsage; U32 mSamples; LLMultisampleBuffer* mSampleBuffer; + + static LLRenderTarget* sBoundTarget; }; diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp index fc2a6954c36878e0c3f006b7d41cb8077e884786..db4189dfea93e2f30678c76a340fc4ca096fde9e 100644 --- a/indra/llrender/llvertexbuffer.cpp +++ b/indra/llrender/llvertexbuffer.cpp @@ -116,6 +116,7 @@ void LLVertexBuffer::setupClientArrays(U32 data_mask) GL_COLOR_ARRAY, }; + BOOL error = FALSE; for (U32 i = 0; i < 4; ++i) { if (sLastMask & mask[i]) @@ -128,7 +129,15 @@ void LLVertexBuffer::setupClientArrays(U32 data_mask) { //needs to be enabled, make sure it was (DEBUG TEMPORARY) if (i > 0 && !glIsEnabled(array[i])) { - llerrs << "Bad client state! " << array[i] << " disabled." << llendl; + if (gDebugSession) + { + error = TRUE; + gFailLog << "Bad client state! " << array[i] << " disabled." << std::endl; + } + else + { + llerrs << "Bad client state! " << array[i] << " disabled." << llendl; + } } } } @@ -140,11 +149,24 @@ void LLVertexBuffer::setupClientArrays(U32 data_mask) } else if (gDebugGL && glIsEnabled(array[i])) { //needs to be disabled, make sure it was (DEBUG TEMPORARY) - llerrs << "Bad client state! " << array[i] << " enabled." << llendl; + if (gDebugSession) + { + error = TRUE; + gFailLog << "Bad client state! " << array[i] << " enabled." << std::endl; + } + else + { + llerrs << "Bad client state! " << array[i] << " enabled." << llendl; + } } } } + if (error) + { + ll_fail("LLVertexBuffer::setupClientArrays failed"); + } + U32 map_tc[] = { MAP_TEXCOORD1, @@ -314,7 +336,7 @@ void LLVertexBuffer::unbind() //static void LLVertexBuffer::cleanupClass() { - LLMemType mt(LLMemType::MTYPE_VERTEX_DATA); + LLMemType mt2(LLMemType::MTYPE_VERTEX_CLEANUP_CLASS); unbind(); clientCopy(); // deletes GL buffers } @@ -341,7 +363,7 @@ LLVertexBuffer::LLVertexBuffer(U32 typemask, S32 usage) : mResized(FALSE), mDynamicSize(FALSE) { - LLMemType mt(LLMemType::MTYPE_VERTEX_DATA); + LLMemType mt2(LLMemType::MTYPE_VERTEX_CONSTRUCTOR); if (!sEnableVBOs) { mUsage = 0 ; @@ -378,7 +400,7 @@ S32 LLVertexBuffer::calcStride(const U32& typemask, S32* offsets) //virtual LLVertexBuffer::~LLVertexBuffer() { - LLMemType mt(LLMemType::MTYPE_VERTEX_DATA); + LLMemType mt2(LLMemType::MTYPE_VERTEX_DESTRUCTOR); destroyGLBuffer(); destroyGLIndices(); sCount--; @@ -458,8 +480,8 @@ void LLVertexBuffer::releaseIndices() void LLVertexBuffer::createGLBuffer() { - LLMemType mt(LLMemType::MTYPE_VERTEX_DATA); - + LLMemType mt2(LLMemType::MTYPE_VERTEX_CREATE_VERTICES); + U32 size = getSize(); if (mGLBuffer) { @@ -490,7 +512,7 @@ void LLVertexBuffer::createGLBuffer() void LLVertexBuffer::createGLIndices() { - LLMemType mt(LLMemType::MTYPE_VERTEX_DATA); + LLMemType mt2(LLMemType::MTYPE_VERTEX_CREATE_INDICES); U32 size = getIndicesSize(); if (mGLIndices) @@ -522,7 +544,7 @@ void LLVertexBuffer::createGLIndices() void LLVertexBuffer::destroyGLBuffer() { - LLMemType mt(LLMemType::MTYPE_VERTEX_DATA); + LLMemType mt2(LLMemType::MTYPE_VERTEX_DESTROY_BUFFER); if (mGLBuffer) { if (useVBOs()) @@ -549,7 +571,7 @@ void LLVertexBuffer::destroyGLBuffer() void LLVertexBuffer::destroyGLIndices() { - LLMemType mt(LLMemType::MTYPE_VERTEX_DATA); + LLMemType mt2(LLMemType::MTYPE_VERTEX_DESTROY_INDICES); if (mGLIndices) { if (useVBOs()) @@ -576,7 +598,7 @@ void LLVertexBuffer::destroyGLIndices() void LLVertexBuffer::updateNumVerts(S32 nverts) { - LLMemType mt(LLMemType::MTYPE_VERTEX_DATA); + LLMemType mt2(LLMemType::MTYPE_VERTEX_UPDATE_VERTS); if (nverts >= 65535) { @@ -605,7 +627,7 @@ void LLVertexBuffer::updateNumVerts(S32 nverts) void LLVertexBuffer::updateNumIndices(S32 nindices) { - LLMemType mt(LLMemType::MTYPE_VERTEX_DATA); + LLMemType mt2(LLMemType::MTYPE_VERTEX_UPDATE_INDICES); mRequestedNumIndices = nindices; if (!mDynamicSize) { @@ -626,7 +648,7 @@ void LLVertexBuffer::updateNumIndices(S32 nindices) void LLVertexBuffer::allocateBuffer(S32 nverts, S32 nindices, bool create) { - LLMemType mt(LLMemType::MTYPE_VERTEX_DATA); + LLMemType mt2(LLMemType::MTYPE_VERTEX_ALLOCATE_BUFFER); updateNumVerts(nverts); updateNumIndices(nindices); @@ -649,7 +671,7 @@ void LLVertexBuffer::resizeBuffer(S32 newnverts, S32 newnindices) mRequestedNumVerts = newnverts; mRequestedNumIndices = newnindices; - LLMemType mt(LLMemType::MTYPE_VERTEX_DATA); + LLMemType mt2(LLMemType::MTYPE_VERTEX_RESIZE_BUFFER); mDynamicSize = TRUE; if (mUsage == GL_STATIC_DRAW_ARB) { //always delete/allocate static buffers on resize @@ -778,7 +800,7 @@ BOOL LLVertexBuffer::useVBOs() const // Map for data access U8* LLVertexBuffer::mapBuffer(S32 access) { - LLMemType mt(LLMemType::MTYPE_VERTEX_DATA); + LLMemType mt2(LLMemType::MTYPE_VERTEX_MAP_BUFFER); if (mFinal) { llerrs << "LLVertexBuffer::mapBuffer() called on a finalized buffer." << llendl; @@ -790,13 +812,19 @@ U8* LLVertexBuffer::mapBuffer(S32 access) if (!mLocked && useVBOs()) { - setBuffer(0); - mLocked = TRUE; - stop_glerror(); - mMappedData = (U8*) glMapBufferARB(GL_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); - stop_glerror(); - mMappedIndexData = (U8*) glMapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); - stop_glerror(); + { + LLMemType mt_v(LLMemType::MTYPE_VERTEX_MAP_BUFFER_VERTICES); + setBuffer(0); + mLocked = TRUE; + stop_glerror(); + mMappedData = (U8*) glMapBufferARB(GL_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); + stop_glerror(); + } + { + LLMemType mt_v(LLMemType::MTYPE_VERTEX_MAP_BUFFER_INDICES); + mMappedIndexData = (U8*) glMapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); + stop_glerror(); + } if (!mMappedData) { @@ -839,7 +867,7 @@ U8* LLVertexBuffer::mapBuffer(S32 access) void LLVertexBuffer::unmapBuffer() { - LLMemType mt(LLMemType::MTYPE_VERTEX_DATA); + LLMemType mt2(LLMemType::MTYPE_VERTEX_UNMAP_BUFFER); if (mMappedData || mMappedIndexData) { if (useVBOs() && mLocked) @@ -961,7 +989,7 @@ bool LLVertexBuffer::getClothWeightStrider(LLStrider<LLVector4>& strider, S32 in void LLVertexBuffer::setStride(S32 type, S32 new_stride) { - LLMemType mt(LLMemType::MTYPE_VERTEX_DATA); + LLMemType mt2(LLMemType::MTYPE_VERTEX_SET_STRIDE); if (mNumVerts) { llerrs << "LLVertexBuffer::setOffset called with mNumVerts = " << mNumVerts << llendl; @@ -983,7 +1011,7 @@ void LLVertexBuffer::setStride(S32 type, S32 new_stride) // Set for rendering void LLVertexBuffer::setBuffer(U32 data_mask) { - LLMemType mt(LLMemType::MTYPE_VERTEX_DATA); + LLMemType mt2(LLMemType::MTYPE_VERTEX_SET_BUFFER); //set up pointers if the data mask is different ... BOOL setup = (sLastMask != data_mask); @@ -1015,19 +1043,36 @@ void LLVertexBuffer::setBuffer(U32 data_mask) sIBOActive = TRUE; } + BOOL error = FALSE; if (gDebugGL) { GLint buff; glGetIntegerv(GL_ARRAY_BUFFER_BINDING_ARB, &buff); if ((GLuint)buff != mGLBuffer) { - llerrs << "Invalid GL vertex buffer bound: " << buff << llendl; + if (gDebugSession) + { + error = TRUE; + gFailLog << "Invalid GL vertex buffer bound: " << buff << std::endl; + } + else + { + llerrs << "Invalid GL vertex buffer bound: " << buff << llendl; + } } glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB, &buff); if ((GLuint)buff != mGLIndices) { - llerrs << "Invalid GL index buffer bound: " << buff << llendl; + if (gDebugSession) + { + error = TRUE; + gFailLog << "Invalid GL index buffer bound: " << buff << std::endl; + } + else + { + llerrs << "Invalid GL index buffer bound: " << buff << llendl; + } } } @@ -1039,13 +1084,29 @@ void LLVertexBuffer::setBuffer(U32 data_mask) glGetIntegerv(GL_ARRAY_BUFFER_BINDING_ARB, &buff); if ((GLuint)buff != mGLBuffer) { - llerrs << "Invalid GL vertex buffer bound: " << buff << llendl; + if (gDebugSession) + { + error = TRUE; + gFailLog << "Invalid GL vertex buffer bound: " << std::endl; + } + else + { + llerrs << "Invalid GL vertex buffer bound: " << buff << llendl; + } } glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB, &buff); if ((GLuint)buff != mGLIndices) { - llerrs << "Invalid GL index buffer bound: " << buff << llendl; + if (gDebugSession) + { + error = TRUE; + gFailLog << "Invalid GL index buffer bound: "<< std::endl; + } + else + { + llerrs << "Invalid GL index buffer bound: " << buff << llendl; + } } } @@ -1067,10 +1128,22 @@ void LLVertexBuffer::setBuffer(U32 data_mask) if (data_mask != 0) { - llerrs << "Buffer set for rendering before being filled after resize." << llendl; + if (gDebugSession) + { + error = TRUE; + gFailLog << "Buffer set for rendering before being filled after resize." << std::endl; + } + else + { + llerrs << "Buffer set for rendering before being filled after resize." << llendl; + } } } + if (error) + { + ll_fail("LLVertexBuffer::mapBuffer failed"); + } unmapBuffer(); } else @@ -1121,7 +1194,7 @@ void LLVertexBuffer::setBuffer(U32 data_mask) // virtual (default) void LLVertexBuffer::setupVertexBuffer(U32 data_mask) const { - LLMemType mt(LLMemType::MTYPE_VERTEX_DATA); + LLMemType mt2(LLMemType::MTYPE_VERTEX_SETUP_VERTEX_BUFFER); stop_glerror(); U8* base = useVBOs() ? NULL : mMappedData; S32 stride = mStride; diff --git a/indra/llui/CMakeLists.txt b/indra/llui/CMakeLists.txt index f3595a7b056cc66119d0fd7637d347d8b1139fb0..117e8e28ab3fe328cab6e15966aa0c04ba8bdaac 100644 --- a/indra/llui/CMakeLists.txt +++ b/indra/llui/CMakeLists.txt @@ -81,6 +81,7 @@ set(llui_SOURCE_FILES lltextparser.cpp lltrans.cpp llui.cpp + lluicolortable.cpp lluictrl.cpp lluictrlfactory.cpp lluiimage.cpp @@ -153,6 +154,7 @@ set(llui_HEADER_FILES lltexteditor.h lltextparser.h lltrans.h + lluicolortable.h lluiconstants.h lluictrlfactory.h lluictrl.h diff --git a/indra/llui/llbutton.cpp b/indra/llui/llbutton.cpp index cdd364797cf1ea3667375a9c6c22cafcfd7453ed..f2aa9c0d4c5d4c1dc4c0c1fcef084164f538e009 100644 --- a/indra/llui/llbutton.cpp +++ b/indra/llui/llbutton.cpp @@ -53,7 +53,7 @@ #include "llrender.h" #include "lluictrlfactory.h" -static LLRegisterWidget<LLButton> r("button"); +static LLDefaultWidgetRegistry::Register<LLButton> r("button"); // globals loaded from settings.xml S32 LLBUTTON_H_PAD = 0; @@ -90,7 +90,6 @@ LLButton::Params::Params() mouse_down_callback("mouse_down_callback"), mouse_up_callback("mouse_up_callback"), mouse_held_callback("mouse_held_callback"), - mouse_held_once_callback("mouse_held_once_callback"), is_toggle("is_toggle", false), scale_image("scale_image", true), help_url("help_url"), @@ -147,7 +146,7 @@ LLButton::LLButton(const LLButton::Params& p) mFadeWhenDisabled(FALSE) { static LLUICachedControl<S32> llbutton_orig_h_pad ("UIButtonOrigHPad", 0); - static LLButton::Params default_params(LLUICtrlFactory::getDefaultParams<LLButton::Params>()); + static Params default_params(LLUICtrlFactory::getDefaultParams<Params>()); //if we aren't a picture_style button set label as name if not provided if (!p.picture_style.isProvided() || !p.picture_style) @@ -199,6 +198,11 @@ LLButton::LLButton(const LLButton::Params& p) } } + if (mImageUnselected.isNull()) + { + llwarns << "Button: " << getName() << " with no image!" << llendl; + } + if (p.click_callback.isProvided()) initCommitCallback(p.click_callback, mCommitSignal); // alias -> commit_callback if (p.mouse_down_callback.isProvided()) @@ -256,6 +260,12 @@ boost::signals2::connection LLButton::setHeldDownCallback( const commit_signal_t { return mHeldDownSignal.connect(cb); } + +boost::signals2::connection LLButton::setRightClickedCallback( const commit_signal_t::slot_type& cb ) +{ + return mRightClickSignal.connect(cb); +} + // *TODO: Deprecate (for backwards compatability only) boost::signals2::connection LLButton::setClickedCallback( button_callback_t cb, void* data ) @@ -375,6 +385,36 @@ BOOL LLButton::handleMouseUp(S32 x, S32 y, MASK mask) return TRUE; } +BOOL LLButton::handleRightMouseDown(S32 x, S32 y, MASK mask) +{ + // Route future Mouse messages here preemptively. (Release on mouse up.) + gFocusMgr.setMouseCapture( this ); + + if (hasTabStop() && !getIsChrome()) + { + setFocus(TRUE); + } + + + return TRUE; +} + +BOOL LLButton::handleRightMouseUp(S32 x, S32 y, MASK mask) +{ + // We only handle the click if the click both started and ended within us + if( hasMouseCapture() ) + { + // Always release the mouse + gFocusMgr.setMouseCapture( NULL ); + + if (pointInView(x, y)) + { + mRightClickSignal(this, getValue()); + } + } + return TRUE; +} + void LLButton::onMouseEnter(S32 x, S32 y, MASK mask) { @@ -615,7 +655,7 @@ void LLButton::draw() else { // no image - llwarns << "No image for button " << getName() << llendl; + lldebugs << "No image for button " << getName() << llendl; // draw it in pink so we can find it gl_rect_2d(0, getRect().getHeight(), getRect().getWidth(), 0, LLColor4::pink1, FALSE); } @@ -813,6 +853,10 @@ void LLButton::setDisabledSelectedLabel( const LLStringExplicit& label ) void LLButton::setImageUnselected(LLPointer<LLUIImage> image) { mImageUnselected = image; + if (mImageUnselected.isNull()) + { + llwarns << "Setting default button image for: " << getName() << " to NULL" << llendl; + } } void LLButton::autoResize() @@ -854,7 +898,7 @@ void LLButton::resize(LLUIString label) { if (btn_width - (mRightHPad + mLeftHPad) < label_width) { - setRect(LLRect( getRect().mLeft, getRect().mTop, getRect().mRight+ label_width + mLeftHPad + mRightHPad , getRect().mBottom)); + setRect(LLRect( getRect().mLeft, getRect().mTop, getRect().mLeft + label_width + mLeftHPad + mRightHPad , getRect().mBottom)); } } } diff --git a/indra/llui/llbutton.h b/indra/llui/llbutton.h index 99f4b948055d843d9af8a566ee97ab10d17c09b6..1398e5c14bd1d85837205cf7661e6317f16ccfc3 100644 --- a/indra/llui/llbutton.h +++ b/indra/llui/llbutton.h @@ -107,8 +107,7 @@ class LLButton Optional<CommitCallbackParam> click_callback, // alias -> commit_callback mouse_down_callback, mouse_up_callback, - mouse_held_callback, - mouse_held_once_callback; + mouse_held_callback; // misc Optional<bool> is_toggle, @@ -138,6 +137,8 @@ class LLButton virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask); virtual BOOL handleHover(S32 x, S32 y, MASK mask); + virtual BOOL handleRightMouseDown(S32 x, S32 y, MASK mask); + virtual BOOL handleRightMouseUp(S32 x, S32 y, MASK mask); virtual void draw(); /*virtual*/ BOOL postBuild(); @@ -155,6 +156,9 @@ class LLButton boost::signals2::connection setMouseUpCallback( const commit_signal_t::slot_type& cb ); // mouse up, EVEN IF NOT IN BUTTON // Passes a 'count' parameter in the commit param payload, i.e. param["count"]) boost::signals2::connection setHeldDownCallback( const commit_signal_t::slot_type& cb ); // Mouse button held down and in button + boost::signals2::connection setRightClickedCallback( const commit_signal_t::slot_type& cb ); // right mouse down and up within button + + // *TODO: Deprecate (for backwards compatability only) boost::signals2::connection setClickedCallback( button_callback_t cb, void* data ); diff --git a/indra/llui/llcheckboxctrl.cpp b/indra/llui/llcheckboxctrl.cpp index 7b37344db7ce780da2f93c524ff9ac811687ab3a..932a1b6297b4a834108d17dae2d249e627ab1df8 100644 --- a/indra/llui/llcheckboxctrl.cpp +++ b/indra/llui/llcheckboxctrl.cpp @@ -52,7 +52,7 @@ const U32 MAX_STRING_LENGTH = 10; template LLCheckBoxCtrl* LLView::getChild<LLCheckBoxCtrl>( const std::string& name, BOOL recurse, BOOL create_if_missing ) const; -static LLRegisterWidget<LLCheckBoxCtrl> r("check_box"); +static LLDefaultWidgetRegistry::Register<LLCheckBoxCtrl> r("check_box"); LLCheckBoxCtrl::Params::Params() : text_enabled_color("text_enabled_color"), diff --git a/indra/llui/llcheckboxctrl.h b/indra/llui/llcheckboxctrl.h index fe719e3b6a1be5dba4b7945c9eb01bd0125b616f..2f8f088a3e7a72de6c1725394f51ff706a840f19 100644 --- a/indra/llui/llcheckboxctrl.h +++ b/indra/llui/llcheckboxctrl.h @@ -65,7 +65,7 @@ class LLCheckBoxCtrl Optional<LLTextBox::Params> label_text; Optional<LLButton::Params> check_button; - Deprecated radio_style; + Ignored radio_style; Params(); }; diff --git a/indra/llui/llcombobox.cpp b/indra/llui/llcombobox.cpp index 09f7a6c8138aac94cd901c4813f1334bb7b67e53..51ab3326fe24c73493c81f8fcb474e854bcc2a4e 100644 --- a/indra/llui/llcombobox.cpp +++ b/indra/llui/llcombobox.cpp @@ -65,7 +65,7 @@ S32 MAX_COMBO_WIDTH = 500; template LLComboBox* LLView::getChild<LLComboBox>( const std::string& name, BOOL recurse, BOOL create_if_missing ) const; -static LLRegisterWidget<LLComboBox> register_combo_box("combo_box"); +static LLDefaultWidgetRegistry::Register<LLComboBox> register_combo_box("combo_box"); void LLComboBox::PreferredPositionValues::declareValues() { @@ -98,6 +98,7 @@ LLComboBox::LLComboBox(const LLComboBox::Params& p) : LLUICtrl(p), mTextEntry(NULL), mTextEntryTentative(p.show_text_as_tentative), + mHasAutocompletedText(false), mAllowTextEntry(p.allow_text_entry), mMaxChars(p.max_chars), mPrearrangeCallback(p.prearrange_callback()), @@ -482,7 +483,6 @@ void LLComboBox::createLineEditor(const LLComboBox::Params& p) params.commit_callback.function(boost::bind(&LLComboBox::onTextCommit, this, _2)); params.keystroke_callback(boost::bind(&LLComboBox::onTextEntry, this, _1)); params.focus_lost_callback(NULL); - params.select_on_focus(true); params.handle_edit_keys_directly(true); params.commit_on_focus_lost(false); params.follows.flags(FOLLOWS_ALL); @@ -640,18 +640,17 @@ void LLComboBox::onButtonDown() { if (!mList->getVisible()) { + // this might change selection, so do it first + prearrangeList(); + + // highlight the last selected item from the original selection before potentially selecting a new item + // as visual cue to original value of combo box LLScrollListItem* last_selected_item = mList->getLastSelectedItem(); if (last_selected_item) { - // highlight the original selection before potentially selecting a new item mList->mouseOverHighlightNthItem(mList->getItemIndex(last_selected_item)); } - if( mPrearrangeCallback ) - { - mPrearrangeCallback( this, LLSD() ); - } - if (mList->getItemCount() != 0) { showList(); @@ -810,6 +809,7 @@ void LLComboBox::setTextEntry(const LLStringExplicit& text) if (mTextEntry) { mTextEntry->setText(text); + mHasAutocompletedText = FALSE; updateSelection(); } } @@ -848,10 +848,7 @@ void LLComboBox::onTextEntry(LLLineEditor* line_editor) setCurrentByIndex(llmin(getItemCount() - 1, getCurrentIndex() + 1)); if (!mList->getVisible()) { - if( mPrearrangeCallback ) - { - mPrearrangeCallback( this, LLSD() ); - } + prearrangeList(); if (mList->getItemCount() != 0) { @@ -866,10 +863,7 @@ void LLComboBox::onTextEntry(LLLineEditor* line_editor) setCurrentByIndex(llmax(0, getCurrentIndex() - 1)); if (!mList->getVisible()) { - if( mPrearrangeCallback ) - { - mPrearrangeCallback( this, LLSD() ); - } + prearrangeList(); if (mList->getItemCount() != 0) { @@ -891,7 +885,7 @@ void LLComboBox::updateSelection() LLWString left_wstring = mTextEntry->getWText().substr(0, mTextEntry->getCursor()); // user-entered portion of string, based on assumption that any selected // text was a result of auto-completion - LLWString user_wstring = mTextEntry->hasSelection() ? left_wstring : mTextEntry->getWText(); + LLWString user_wstring = mHasAutocompletedText ? left_wstring : mTextEntry->getWText(); std::string full_string = mTextEntry->getText(); // go ahead and arrange drop down list on first typed character, even @@ -899,23 +893,14 @@ void LLComboBox::updateSelection() // callback to populate content if( mTextEntry->getWText().size() == 1 ) { - if (mPrearrangeCallback) - { - mPrearrangeCallback( this, LLSD() ); - } + prearrangeList(mTextEntry->getText()); } if (mList->selectItemByLabel(full_string, FALSE)) { mTextEntry->setTentative(FALSE); } - else if (!mList->selectItemByPrefix(left_wstring, FALSE)) - { - mList->deselectAllItems(); - mTextEntry->setText(wstring_to_utf8str(user_wstring)); - mTextEntry->setTentative(mTextEntryTentative); - } - else + else if (mList->selectItemByPrefix(left_wstring, FALSE)) { LLWString selected_item = utf8str_to_wstring(mList->getSelectedItemLabel()); LLWString wtext = left_wstring + selected_item.substr(left_wstring.size(), selected_item.size()); @@ -923,6 +908,14 @@ void LLComboBox::updateSelection() mTextEntry->setSelection(left_wstring.size(), mTextEntry->getWText().size()); mTextEntry->endSelection(); mTextEntry->setTentative(FALSE); + mHasAutocompletedText = TRUE; + } + else // no matching items found + { + mList->deselectAllItems(); + mTextEntry->setText(wstring_to_utf8str(user_wstring)); // removes text added by autocompletion + mTextEntry->setTentative(mTextEntryTentative); + mHasAutocompletedText = FALSE; } } @@ -948,6 +941,14 @@ void LLComboBox::setFocus(BOOL b) } } +void LLComboBox::prearrangeList(std::string filter) +{ + if (mPrearrangeCallback) + { + mPrearrangeCallback(this, LLSD(filter)); + } +} + //============================================================================ // LLCtrlListInterface functions diff --git a/indra/llui/llcombobox.h b/indra/llui/llcombobox.h index e7a864eb82e49a51f1ed2036e340819af3d898a2..bc98690a015f5c80a58f07f4af2485dc7940dbae 100644 --- a/indra/llui/llcombobox.h +++ b/indra/llui/llcombobox.h @@ -106,6 +106,7 @@ class LLComboBox friend class LLUICtrlFactory; LLComboBox(const Params&); void initFromParams(const Params&); + void prearrangeList(std::string filter = ""); public: // LLView interface @@ -213,18 +214,18 @@ class LLComboBox virtual void showList(); virtual void hideList(); - void onTextEntry(LLLineEditor* line_editor); + virtual void onTextEntry(LLLineEditor* line_editor); protected: LLButton* mButton; + LLLineEditor* mTextEntry; LLScrollListCtrl* mList; EPreferredPosition mListPosition; LLPointer<LLUIImage> mArrowImage; LLUIString mLabel; + BOOL mHasAutocompletedText; private: - S32 mButtonPadding; - LLLineEditor* mTextEntry; BOOL mAllowTextEntry; S32 mMaxChars; BOOL mTextEntryTentative; diff --git a/indra/llui/llcontainerview.cpp b/indra/llui/llcontainerview.cpp index a63023e35cfa3536ed113a968948d5eb64fb28b6..40cc430e2592e07925b319c8dd91a0d4b8188bfc 100644 --- a/indra/llui/llcontainerview.cpp +++ b/indra/llui/llcontainerview.cpp @@ -42,7 +42,7 @@ #include "llscrollcontainer.h" #include "lluictrlfactory.h" -static LLRegisterWidget<LLContainerView> r("container_view"); +static LLDefaultWidgetRegistry::Register<LLContainerView> r("container_view"); LLContainerView::LLContainerView(const LLContainerView::Params& p) : LLView(p), diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index be7e050b58b8919907c1ddb64e18ff86ab171c7a..8932a7ccf2b542295e00048302b18cac39c30c0b 100644 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp @@ -188,6 +188,13 @@ bool LLFloater::KeyCompare::equate(const LLSD& a, const LLSD& b) //************************************ +//static +const LLFloater::Params& LLFloater::getDefaultParams() +{ + return LLUICtrlFactory::getDefaultParams<LLFloater::Params>(); +} + + LLFloater::LLFloater(const LLSD& key, const LLFloater::Params& p) : LLPanel(), mDragHandle(NULL), @@ -1710,6 +1717,7 @@ LLFloaterView::LLFloaterView (const Params& p) : LLUICtrl (p), mFocusCycleMode(FALSE), mSnapOffsetBottom(0) + ,mSnapOffsetRight(0) { } @@ -2214,6 +2222,7 @@ LLRect LLFloaterView::getSnapRect() const { LLRect snap_rect = getRect(); snap_rect.mBottom += mSnapOffsetBottom; + snap_rect.mRight -= mSnapOffsetRight; return snap_rect; } @@ -2397,6 +2406,35 @@ void LLFloater::setKey(const LLSD& newkey) mKey = newkey; } +//static +void LLFloater::setupParamsForExport(Params& p, LLView* parent) +{ + // Do rectangle munging to topleft layout first + LLPanel::setupParamsForExport(p, parent); + + // Copy the rectangle out to apply layout constraints + LLRect rect = p.rect; + + // Null out other settings + p.rect.left.setProvided(false); + p.rect.top.setProvided(false); + p.rect.right.setProvided(false); + p.rect.bottom.setProvided(false); + + // Explicitly set width/height + p.rect.width.set( rect.getWidth(), true ); + p.rect.height.set( rect.getHeight(), true ); + + // If you can't resize this floater, don't export min_height + // and min_width + bool can_resize = p.can_resize; + if (!can_resize) + { + p.min_height.setProvided(false); + p.min_width.setProvided(false); + } +} + void LLFloater::initFromParams(const LLFloater::Params& p) { // control_name, tab_stop, focus_lost_callback, initial_value, rect, enabled, visible @@ -2453,7 +2491,7 @@ void LLFloater::initFloaterXML(LLXMLNodePtr node, LLView *parent, BOOL open_floa LLFloater::setFloaterHost((LLMultiFloater*) this); } - addChildren(node, output_node); + LLUICtrlFactory::createChildren(this, node, output_node); if (node->hasName("multi_floater")) { diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h index f6c783b0bfffaa74d60db5dada8d8f921c572c62..3e80f1b28471d977d6d5ef04cd16a376483e24d9 100644 --- a/indra/llui/llfloater.h +++ b/indra/llui/llfloater.h @@ -141,10 +141,16 @@ friend class LLMultiFloater; } }; - LLFloater(const LLSD& key = LLSD(), const LLFloater::Params& params = LLFloater::Params()); + // use this to avoid creating your own default LLFloater::Param instance + static const Params& getDefaultParams(); + + LLFloater(const LLSD& key = LLSD(), const Params& params = getDefaultParams()); virtual ~LLFloater(); + // Don't export top/left for rect, only height/width + static void setupParamsForExport(Params& p, LLView* parent); + void initFromParams(const LLFloater::Params& p); void initFloaterXML(LLXMLNodePtr node, LLView *parent, BOOL open_floater = TRUE, LLXMLNodePtr output_node = NULL); @@ -424,6 +430,7 @@ class LLFloaterView : public LLUICtrl S32 getZOrder(LLFloater* child); void setSnapOffsetBottom(S32 offset) { mSnapOffsetBottom = offset; } + void setSnapOffsetRight(S32 offset) { mSnapOffsetRight = offset; } private: S32 mColumn; @@ -431,6 +438,7 @@ class LLFloaterView : public LLUICtrl S32 mNextTop; BOOL mFocusCycleMode; S32 mSnapOffsetBottom; + S32 mSnapOffsetRight; }; // singleton implementation for floaters diff --git a/indra/llui/llfloaterreg.h b/indra/llui/llfloaterreg.h index af1bfc5ec197c85bcc0d1a6b69ddd3e1985469c5..ef2f71ad180ef5f065459d79cce00b428f994024 100644 --- a/indra/llui/llfloaterreg.h +++ b/indra/llui/llfloaterreg.h @@ -29,6 +29,8 @@ * COMPLETENESS OR PERFORMANCE. * $/LicenseInfo$ */ +#ifndef LLFLOATERREG_H +#define LLFLOATERREG_H /// llcommon #include "llboost.h" @@ -147,3 +149,4 @@ class LLFloaterReg }; +#endif diff --git a/indra/llui/llflyoutbutton.cpp b/indra/llui/llflyoutbutton.cpp index 6b7c1747265e79a6839a33ae344015eea992efc8..8846f2a8c47ac1dc2e17a4c7f848aa2b629456fc 100644 --- a/indra/llui/llflyoutbutton.cpp +++ b/indra/llui/llflyoutbutton.cpp @@ -35,7 +35,7 @@ // file includes #include "llflyoutbutton.h" -static LLRegisterWidget<LLFlyoutButton> r2("flyout_button"); +//static LLDefaultWidgetRegistry::Register<LLFlyoutButton> r2("flyout_button"); const S32 FLYOUT_BUTTON_ARROW_WIDTH = 24; diff --git a/indra/llui/lliconctrl.cpp b/indra/llui/lliconctrl.cpp index d01679cd1c699abef591fb941d880dda76a74bb9..eddfc7128495556b17f1472848bc9dfdf8d848ae 100644 --- a/indra/llui/lliconctrl.cpp +++ b/indra/llui/lliconctrl.cpp @@ -42,7 +42,7 @@ #include "lluictrlfactory.h" #include "lluiimage.h" -static LLRegisterWidget<LLIconCtrl> r("icon"); +static LLDefaultWidgetRegistry::Register<LLIconCtrl> r("icon"); LLIconCtrl::Params::Params() : image("image_name"), diff --git a/indra/llui/lliconctrl.h b/indra/llui/lliconctrl.h index ad0f6f563f6424e2e3b4a0ee098edd209a236d38..a6cab0e9eec71285770fb35f4aa4cfb5502bf61a 100644 --- a/indra/llui/lliconctrl.h +++ b/indra/llui/lliconctrl.h @@ -55,7 +55,7 @@ class LLIconCtrl { Optional<LLUIImage*> image; Optional<LLUIColor> color; - Deprecated scale_image; + Ignored scale_image; Params(); }; protected: diff --git a/indra/llui/lllayoutstack.cpp b/indra/llui/lllayoutstack.cpp index 483c1358ae402671936bf22f275977e4e5a92524..39dac296ea913bb04b341405ad086b9107388049 100644 --- a/indra/llui/lllayoutstack.cpp +++ b/indra/llui/lllayoutstack.cpp @@ -38,12 +38,15 @@ #include "llresizebar.h" #include "llcriticaldamp.h" +static LLDefaultWidgetRegistry::Register<LLLayoutStack> register_layout_stack("layout_stack", &LLLayoutStack::fromXML); + + // // LLLayoutStack // -struct LLLayoutStack::LLEmbeddedPanel +struct LLLayoutStack::LayoutPanel { - LLEmbeddedPanel(LLPanel* panelp, ELayoutOrientation orientation, S32 min_width, S32 min_height, BOOL auto_resize, BOOL user_resize) : mPanel(panelp), + LayoutPanel(LLPanel* panelp, ELayoutOrientation orientation, S32 min_width, S32 min_height, BOOL auto_resize, BOOL user_resize) : mPanel(panelp), mMinWidth(min_width), mMinHeight(min_height), mAutoResize(auto_resize), @@ -68,7 +71,7 @@ struct LLLayoutStack::LLEmbeddedPanel } LLResizeBar::Params p; p.name("resize"); - p.resizing_view(mPanel); + p.resizing_view(mPanel); p.min_size(min_dim); p.side(side); p.snapping_enabled(false); @@ -80,13 +83,13 @@ struct LLLayoutStack::LLEmbeddedPanel } } - ~LLEmbeddedPanel() + ~LayoutPanel() { // probably not necessary, but... delete mResizeBar; mResizeBar = NULL; } - + F32 getCollapseFactor() { if (mOrientation == HORIZONTAL) @@ -96,7 +99,7 @@ struct LLLayoutStack::LLEmbeddedPanel return mVisibleAmt * collapse_amt; } else - { + { F32 collapse_amt = clamp_rescale(mCollapseAmt, 0.f, 1.f, 1.f, llmin(1.f, (F32)mMinHeight / (F32)llmax(1, mPanel->getRect().getHeight()))); return mVisibleAmt * collapse_amt; @@ -115,10 +118,9 @@ struct LLLayoutStack::LLEmbeddedPanel F32 mCollapseAmt; }; -static LLRegisterWidget<LLLayoutStack> r2("layout_stack", &LLLayoutStack::fromXML); - LLLayoutStack::Params::Params() : orientation("orientation", std::string("vertical")), + animate("animate", TRUE), border_size("border_size", LLCachedControl<S32>(*LLUI::sSettingGroups["config"], "UIResizeBarHeight", 0)) { name="stack"; @@ -129,7 +131,8 @@ LLLayoutStack::LLLayoutStack(const LLLayoutStack::Params& p) mMinWidth(0), mMinHeight(0), mPanelSpacing(p.border_size), - mOrientation((p.orientation() == "vertical") ? VERTICAL : HORIZONTAL) + mOrientation((p.orientation() == "vertical") ? VERTICAL : HORIZONTAL), + mAnimate(p.animate) {} LLLayoutStack::~LLLayoutStack() @@ -168,7 +171,7 @@ void LLLayoutStack::draw() void LLLayoutStack::removeChild(LLView* view) { - LLEmbeddedPanel* embedded_panelp = findEmbeddedPanel(dynamic_cast<LLPanel*>(view)); + LayoutPanel* embedded_panelp = findEmbeddedPanel(dynamic_cast<LLPanel*>(view)); if (embedded_panelp) { @@ -222,16 +225,10 @@ LLView* LLLayoutStack::fromXML(LLXMLNodePtr node, LLView *parent, LLXMLNodePtr o { LLLayoutStack::Params p(LLUICtrlFactory::getDefaultParams<LLLayoutStack::Params>()); LLXUIParser::instance().readXUI(node, p); - setupParams(p, parent); - LLLayoutStack* layout_stackp = LLUICtrlFactory::create<LLLayoutStack>(p); - - if (parent && layout_stackp) - { - S32 tab_group = p.tab_group.isProvided() ? p.tab_group() : parent->getLastTabGroup(); - - parent->addChild(layout_stackp, tab_group); - } + // Export must happen before setupParams() mungles rectangles and before + // this item gets added to parent (otherwise screws up last_child_rect + // logic). JC if (output_node) { Params output_params(p); @@ -242,6 +239,16 @@ LLView* LLLayoutStack::fromXML(LLXMLNodePtr node, LLView *parent, LLXMLNodePtr o output_node, output_params, &default_params); } + setupParams(p, parent); + LLLayoutStack* layout_stackp = LLUICtrlFactory::create<LLLayoutStack>(p); + + if (parent && layout_stackp) + { + S32 tab_group = p.tab_group.isProvided() ? p.tab_group() : parent->getLastTabGroup(); + + parent->addChild(layout_stackp, tab_group); + } + for (LLXMLNodePtr child_node = node->getFirstChild(); child_node.notNull(); child_node = child_node->getNextSibling()) { const S32 DEFAULT_MIN_WIDTH = 0; @@ -287,8 +294,9 @@ LLView* LLLayoutStack::fromXML(LLXMLNodePtr node, LLView *parent, LLXMLNodePtr o get_attribute_bool_and_write(child_node, "user_resize", &user_resize, FALSE, output_child); - LLPanel* panelp = new LLPanel(); - LLView* new_child = LLUICtrlFactory::getInstance()->createFromXML(child_node, panelp, LLStringUtil::null, output_child); + LLPanel::Params p; + LLPanel* panelp = LLUICtrlFactory::create<LLPanel>(p); + LLView* new_child = LLUICtrlFactory::getInstance()->createFromXML(child_node, panelp, LLStringUtil::null, output_child, parent ? parent->getChildRegistry() : LLDefaultWidgetRegistry::instance()); if (new_child) { // put child in new embedded panel @@ -349,7 +357,7 @@ void LLLayoutStack::addPanel(LLPanel* panel, S32 min_width, S32 min_height, BOOL { panel->setVisible(FALSE); } - LLEmbeddedPanel* embedded_panel = new LLEmbeddedPanel(panel, mOrientation, min_width, min_height, auto_resize, user_resize); + LayoutPanel* embedded_panel = new LayoutPanel(panel, mOrientation, min_width, min_height, auto_resize, user_resize); mPanels.insert(mPanels.begin() + llclamp(index, 0, (S32)mPanels.size()), embedded_panel); @@ -381,7 +389,7 @@ void LLLayoutStack::removePanel(LLPanel* panel) void LLLayoutStack::collapsePanel(LLPanel* panel, BOOL collapsed) { - LLEmbeddedPanel* panel_container = findEmbeddedPanel(panel); + LayoutPanel* panel_container = findEmbeddedPanel(panel); if (!panel_container) return; panel_container->mCollapsed = collapsed; @@ -405,16 +413,30 @@ void LLLayoutStack::updateLayout(BOOL force_resize) LLPanel* panelp = (*panel_it)->mPanel; if (panelp->getVisible()) { - (*panel_it)->mVisibleAmt = lerp((*panel_it)->mVisibleAmt, 1.f, LLCriticalDamp::getInterpolant(ANIM_OPEN_TIME)); - if ((*panel_it)->mVisibleAmt > 0.99f) + if (mAnimate) + { + (*panel_it)->mVisibleAmt = lerp((*panel_it)->mVisibleAmt, 1.f, LLCriticalDamp::getInterpolant(ANIM_OPEN_TIME)); + if ((*panel_it)->mVisibleAmt > 0.99f) + { + (*panel_it)->mVisibleAmt = 1.f; + } + } + else { (*panel_it)->mVisibleAmt = 1.f; } } else // not visible { - (*panel_it)->mVisibleAmt = lerp((*panel_it)->mVisibleAmt, 0.f, LLCriticalDamp::getInterpolant(ANIM_CLOSE_TIME)); - if ((*panel_it)->mVisibleAmt < 0.001f) + if (mAnimate) + { + (*panel_it)->mVisibleAmt = lerp((*panel_it)->mVisibleAmt, 0.f, LLCriticalDamp::getInterpolant(ANIM_CLOSE_TIME)); + if ((*panel_it)->mVisibleAmt < 0.001f) + { + (*panel_it)->mVisibleAmt = 0.f; + } + } + else { (*panel_it)->mVisibleAmt = 0.f; } @@ -670,7 +692,7 @@ void LLLayoutStack::updateLayout(BOOL force_resize) } // end LLLayoutStack::updateLayout -LLLayoutStack::LLEmbeddedPanel* LLLayoutStack::findEmbeddedPanel(LLPanel* panelp) const +LLLayoutStack::LayoutPanel* LLLayoutStack::findEmbeddedPanel(LLPanel* panelp) const { if (!panelp) return NULL; diff --git a/indra/llui/lllayoutstack.h b/indra/llui/lllayoutstack.h index 600690f67dd14cb74ed7b67f7cf8762602a592c6..480bdb5c17be7d69a805f6d0367a92a70887dcdb 100644 --- a/indra/llui/lllayoutstack.h +++ b/indra/llui/lllayoutstack.h @@ -43,6 +43,7 @@ class LLLayoutStack : public LLView { Optional<std::string> orientation; Optional<S32> border_size; + Optional<bool> animate; // mMinWidth and mMinHeight are calculated, not set in XML Params(); @@ -81,7 +82,7 @@ class LLLayoutStack : public LLView friend class LLUICtrlFactory; private: - struct LLEmbeddedPanel; + struct LayoutPanel; void updateLayout(BOOL force_resize = FALSE); void calcMinExtents(); @@ -90,13 +91,15 @@ class LLLayoutStack : public LLView const ELayoutOrientation mOrientation; - typedef std::vector<LLEmbeddedPanel*> e_panel_list_t; + typedef std::vector<LayoutPanel*> e_panel_list_t; e_panel_list_t mPanels; - LLEmbeddedPanel* findEmbeddedPanel(LLPanel* panelp) const; + LayoutPanel* findEmbeddedPanel(LLPanel* panelp) const; S32 mMinWidth; // calculated by calcMinExtents S32 mMinHeight; // calculated by calcMinExtents S32 mPanelSpacing; + + bool mAnimate; }; // end class LLLayoutStack #endif diff --git a/indra/llui/lllazyvalue.h b/indra/llui/lllazyvalue.h index da0af6f5223d495dda4875851ad60caddbb7eeec..cf45214628962a506c79a1f9f98663cd638929ef 100644 --- a/indra/llui/lllazyvalue.h +++ b/indra/llui/lllazyvalue.h @@ -75,6 +75,11 @@ class LLLazyValue return mValue; } + bool isUsingFunction() const + { + return mValueGetter != NULL; + } + private: function_type mValueGetter; T mValue; diff --git a/indra/llui/lllineeditor.cpp b/indra/llui/lllineeditor.cpp index c03ef7968f49e6df7c260878767ffd3dde1d8797..5ea45e13cf07cf9cfb924f032170d6268a4d194b 100644 --- a/indra/llui/lllineeditor.cpp +++ b/indra/llui/lllineeditor.cpp @@ -70,8 +70,9 @@ const F32 CURSOR_FLASH_DELAY = 1.0f; // in seconds const S32 SCROLL_INCREMENT_ADD = 0; // make space for typing const S32 SCROLL_INCREMENT_DEL = 4; // make space for baskspacing const F32 AUTO_SCROLL_TIME = 0.05f; +const F32 TRIPLE_CLICK_INTERVAL = 0.3f; // delay between double and triple click. *TODO: make this equal to the double click interval? -static LLRegisterWidget<LLLineEditor> r1("line_editor"); +static LLDefaultWidgetRegistry::Register<LLLineEditor> r1("line_editor"); template LLLineEditor* LLView::getChild<LLLineEditor>( const std::string& name, BOOL recurse, BOOL create_if_missing ) const; @@ -161,6 +162,7 @@ LLLineEditor::LLLineEditor(const LLLineEditor::Params& p) llassert( mMaxLengthBytes > 0 ); mScrollTimer.reset(); + mTripleClickTimer.reset(); setText(p.default_text()); // line history support: @@ -450,6 +452,7 @@ void LLLineEditor::selectAll() BOOL LLLineEditor::handleDoubleClick(S32 x, S32 y, MASK mask) { setFocus( TRUE ); + mTripleClickTimer.setTimerExpirySec(TRIPLE_CLICK_INTERVAL); if (mSelectionEnd == 0 && mSelectionStart == mText.length()) { @@ -566,14 +569,25 @@ BOOL LLLineEditor::handleMouseDown(S32 x, S32 y, MASK mask) } else { - // Save selection for word/line selecting on double-click - mLastSelectionStart = mSelectionStart; - mLastSelectionEnd = mSelectionEnd; + if (mTripleClickTimer.hasExpired()) + { + // Save selection for word/line selecting on double-click + mLastSelectionStart = mSelectionStart; + mLastSelectionEnd = mSelectionEnd; - // Move cursor and deselect for regular click - setCursorAtLocalPos( x ); - deselect(); - startSelection(); + // Move cursor and deselect for regular click + setCursorAtLocalPos( x ); + deselect(); + startSelection(); + } + else // handle triple click + { + selectAll(); + // We don't want handleMouseUp() to "finish" the selection (and thereby + // set mSelectionEnd to where the mouse is), so we finish the selection + // here. + mIsSelecting = FALSE; + } } gFocusMgr.setMouseCapture( this ); diff --git a/indra/llui/lllineeditor.h b/indra/llui/lllineeditor.h index 4c2a9b77b2dc5cc055330ada798568b3e7aee9af..eb021bace974318c4d674c7f1b2d17b4691d37ff 100644 --- a/indra/llui/lllineeditor.h +++ b/indra/llui/lllineeditor.h @@ -103,7 +103,7 @@ class LLLineEditor Optional<S32> text_pad_left, text_pad_right; - Deprecated is_unicode, + Ignored is_unicode, drop_shadow_visible, border_drop_shadow_visible, bg_visible; @@ -320,6 +320,7 @@ class LLLineEditor LLLinePrevalidateFunc mPrevalidateFunc; LLFrameTimer mKeystrokeTimer; + LLTimer mTripleClickTimer; LLUIColor mCursorColor; LLUIColor mFgColor; diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp index fc2e6e163b60bbbe53c5e5f40f3ab28572674085..4af1c1241b806beef90ff5646a6af055d269250a 100644 --- a/indra/llui/llmenugl.cpp +++ b/indra/llui/llmenugl.cpp @@ -65,8 +65,6 @@ #include <set> #include <boost/tokenizer.hpp> -using namespace LLOldEvents; - // static LLMenuHolderGL *LLMenuGL::sMenuContainer = NULL; @@ -121,6 +119,19 @@ const F32 PIE_SHRINK_TIME = 0.2f; // time of transition between unbounded and bo const F32 ACTIVATE_HIGHLIGHT_TIME = 0.3f; +// widget registrars +struct MenuRegistry : public LLWidgetRegistry<MenuRegistry> +{}; + +static MenuRegistry::Register<LLMenuItemSeparatorGL> register_separator("menu_item_separator"); +static MenuRegistry::Register<LLMenuItemCallGL> register_menu_item_call("menu_item_call"); +static MenuRegistry::Register<LLMenuItemCheckGL> register_menu_item_check("menu_item_check"); +static MenuRegistry::Register<LLMenuGL> register_menu("menu"); + +static LLDefaultWidgetRegistry::Register<LLMenuGL> register_menu_default("menu"); + + + ///============================================================================ /// Class LLMenuItemGL ///============================================================================ @@ -395,25 +406,30 @@ BOOL LLMenuItemGL::handleKeyHere( KEY key, MASK mask ) return FALSE; } -BOOL LLMenuItemGL::handleMouseUp( S32 x, S32 y, MASK ) +BOOL LLMenuItemGL::handleMouseUp( S32 x, S32 y, MASK mask) { // switch to mouse navigation mode LLMenuGL::setKeyboardMode(FALSE); onCommit(); make_ui_sound("UISndClickRelease"); - return TRUE; + return LLView::handleMouseUp(x, y, mask); } -BOOL LLMenuItemGL::handleMouseDown( S32 x, S32 y, MASK ) +BOOL LLMenuItemGL::handleMouseDown( S32 x, S32 y, MASK mask) { // switch to mouse navigation mode LLMenuGL::setKeyboardMode(FALSE); setHighlight(TRUE); - return TRUE; + return LLView::handleMouseDown(x, y, mask); } +BOOL LLMenuItemGL::handleScrollWheel( S32 x, S32 y, S32 clicks ) +{ + // If the menu is scrollable let it handle the wheel event. + return !getMenu()->isScrollable(); +} void LLMenuItemGL::draw( void ) { @@ -516,8 +532,6 @@ void LLMenuItemGL::onVisibilityChange(BOOL new_visibility) // // This class represents a separator. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -static LLRegisterWidget<LLMenuItemSeparatorGL> register_separator("menu_item_separator"); - LLMenuItemSeparatorGL::Params::Params() { name = "separator"; @@ -708,7 +722,6 @@ class LLMenuItemBlankGL : public LLMenuItemGL ///============================================================================ /// Class LLMenuItemCallGL ///============================================================================ -static LLRegisterWidget<LLMenuItemCallGL> register_menu_item_call_gl("menu_item_call"); LLMenuItemCallGL::LLMenuItemCallGL(const LLMenuItemCallGL::Params& p) : LLMenuItemGL(p) @@ -787,8 +800,6 @@ BOOL LLMenuItemCallGL::handleAcceleratorKey( KEY key, MASK mask ) ///============================================================================ /// Class LLMenuItemCheckGL ///============================================================================ -static LLRegisterWidget<LLMenuItemCheckGL> register_menu_item_check_gl("menu_item_check"); - LLMenuItemCheckGL::LLMenuItemCheckGL (const LLMenuItemCheckGL::Params& p) : LLMenuItemCallGL(p) { @@ -1446,18 +1457,105 @@ void LLMenuItemBranchDownGL::draw( void ) setHover(FALSE); } +class LLMenuScrollItem : public LLMenuItemCallGL +{ +public: + enum EArrowType + { + ARROW_DOWN, + ARROW_UP + }; + + struct Params : public LLInitParam::Block<Params, LLMenuItemCallGL::Params> + { + Optional<EArrowType> arrow_type; + Optional<CommitCallbackParam> scroll_callback; + }; + +protected: + LLMenuScrollItem(const Params&); + friend class LLUICtrlFactory; + +public: + /*virtual*/ void draw(); + /*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent); + /*virtual*/ void setEnabled(BOOL enabled); + virtual void onCommit( void ); + +private: + LLButton* mArrowBtn; +}; + +LLMenuScrollItem::LLMenuScrollItem(const Params& p) +: LLMenuItemCallGL(p) +{ + std::string icon; + if (p.arrow_type.isProvided() && p.arrow_type == ARROW_UP) + { + icon = "arrow_up.tga"; + } + else + { + icon = "arrow_down.tga"; + } + + LLButton::Params bparams; + bparams.label(""); + bparams.label_selected(""); + bparams.mouse_opaque(true); + bparams.scale_image(false); + bparams.click_callback(p.scroll_callback); + bparams.mouse_held_callback(p.scroll_callback); + bparams.follows.flags(FOLLOWS_ALL); + std::string background = "transparent.j2c"; + bparams.image_unselected.name(background); + bparams.image_disabled.name(background); + bparams.image_selected.name(background); + bparams.image_hover_selected.name(background); + bparams.image_disabled_selected.name(background); + bparams.image_hover_unselected.name(background); + bparams.image_overlay.name(icon); + + mArrowBtn = LLUICtrlFactory::create<LLButton>(bparams); + addChild(mArrowBtn); +} + +/*virtual*/ +void LLMenuScrollItem::draw() +{ + LLUICtrl::draw(); +} + +/*virtual*/ +void LLMenuScrollItem::reshape(S32 width, S32 height, BOOL called_from_parent) +{ + mArrowBtn->reshape(width, height, called_from_parent); + LLView::reshape(width, height, called_from_parent); +} + +/*virtual*/ +void LLMenuScrollItem::setEnabled(BOOL enabled) +{ + mArrowBtn->setEnabled(enabled); + LLView::setEnabled(enabled); +} + +void LLMenuScrollItem::onCommit( void ) +{ + LLUICtrl::onCommit(); +} + ///============================================================================ /// Class LLMenuGL ///============================================================================ -static LLRegisterWidget<LLMenuGL> r1("menu"); - LLMenuGL::LLMenuGL(const LLMenuGL::Params& p) : LLUICtrl(p), mBackgroundColor( p.bg_color() ), mBgVisible( p.bg_visible ), mDropShadowed( p.drop_shadow ), mHorizontalLayout( p.horizontal_layout ), + mScrollable(mHorizontalLayout ? FALSE : p.scrollable), // Scrolling is supported only for vertical layout mKeepFixedSize( p.keep_fixed_size ), mLabel (p.label), mLastMouseX(0), @@ -1467,6 +1565,9 @@ LLMenuGL::LLMenuGL(const LLMenuGL::Params& p) mTornOff(FALSE), mTearOffItem(NULL), mSpilloverBranch(NULL), + mFirstVisibleItem(NULL), + mArrowUpItem(NULL), + mArrowDownItem(NULL), mSpilloverMenu(NULL), mJumpKey(p.jump_key), mCreateJumpKeys(p.create_jump_keys), @@ -1563,6 +1664,11 @@ BOOL LLMenuGL::postBuild() return LLUICtrl::postBuild(); } +const widget_registry_t& LLMenuGL::getChildRegistry() const +{ + return MenuRegistry::instance(); +} + // are we the childmost active menu and hence our jump keys should be enabled? // or are we a free-standing torn-off menu (which uses jump keys too) @@ -1609,6 +1715,86 @@ BOOL LLMenuGL::isOpen() } } +void LLMenuGL::scrollItemsUp() +{ + // Slowing down the items scrolling when arrow button is held + if (mScrollItemsTimer.hasExpired() && NULL != mFirstVisibleItem) + { + mScrollItemsTimer.setTimerExpirySec(.033f); + } + else + { + return; + } + + item_list_t::iterator cur_item_iter; + item_list_t::iterator prev_item_iter; + for (cur_item_iter = mItems.begin(), prev_item_iter = mItems.begin(); cur_item_iter != mItems.end(); cur_item_iter++) + { + if( (*cur_item_iter) == mFirstVisibleItem) + { + break; + } + if ((*cur_item_iter)->getVisible()) + { + prev_item_iter = cur_item_iter; + } + } + + if ((*prev_item_iter)->getVisible()) + { + mFirstVisibleItem = *prev_item_iter; + } + + mNeedsArrange = TRUE; + arrangeAndClear(); +} + +void LLMenuGL::scrollItemsDown() +{ + // Slowing down the items scrolling when arrow button is held + if (mScrollItemsTimer.hasExpired()) + { + mScrollItemsTimer.setTimerExpirySec(.033f); + } + else + { + return; + } + + if (NULL == mFirstVisibleItem) + { + mFirstVisibleItem = *mItems.begin(); + } + + item_list_t::iterator cur_item_iter; + + for (cur_item_iter = mItems.begin(); cur_item_iter != mItems.end(); cur_item_iter++) + { + if( (*cur_item_iter) == mFirstVisibleItem) + { + break; + } + } + + item_list_t::iterator next_item_iter; + + for (next_item_iter = ++cur_item_iter; next_item_iter != mItems.end(); next_item_iter++) + { + if( (*next_item_iter)->getVisible()) + { + break; + } + } + + if ((*next_item_iter)->getVisible()) + { + mFirstVisibleItem = *next_item_iter; + } + + mNeedsArrange = TRUE; + arrangeAndClear(); +} // rearrange the child rects so they fit the shape of the menu. void LLMenuGL::arrange( void ) @@ -1627,11 +1813,26 @@ void LLMenuGL::arrange( void ) // torn off menus are not constrained to the size of the screen U32 max_width = getTornOff() ? U32_MAX : menu_region_rect.getWidth(); - U32 max_height = getTornOff() ? U32_MAX : menu_region_rect.getHeight(); + U32 max_height = U32_MAX; + if (!getTornOff()) + { + max_height = getRect().mTop - menu_region_rect.mBottom; + if (menu_region_rect.mTop - getRect().mTop > (S32)max_height) + { + max_height = menu_region_rect.mTop - getRect().mTop; + } + } + // *FIX: create the item first and then ask for its dimensions? S32 spillover_item_width = PLAIN_PAD_PIXELS + LLFontGL::getFontSansSerif()->getWidth( std::string("More") ); // *TODO: Translate S32 spillover_item_height = llround(LLFontGL::getFontSansSerif()->getLineHeight()) + MENU_ITEM_PADDING; + // Scrolling support + item_list_t::iterator first_visible_item_iter; + item_list_t::iterator first_hidden_item_iter = mItems.end(); + S32 height_before_first_visible_item = -1; + S32 visible_items_height = 0; + if (mHorizontalLayout) { item_list_t::iterator item_iter; @@ -1675,11 +1876,13 @@ void LLMenuGL::arrange( void ) else { item_list_t::iterator item_iter; + for (item_iter = mItems.begin(); item_iter != mItems.end(); ++item_iter) { if ((*item_iter)->getVisible()) { if (!getTornOff() + && !mScrollable && *item_iter != mSpilloverBranch && height + (*item_iter)->getNominalHeight() > max_height - spillover_item_height) { @@ -1710,19 +1913,164 @@ void LLMenuGL::arrange( void ) height += (*item_iter)->getNominalHeight(); width = llmax( width, (*item_iter)->getNominalWidth() ); } + + if (mScrollable) + { + // Determining visible items boundaries + if (NULL == mFirstVisibleItem) + { + mFirstVisibleItem = *item_iter; + } + + if (*item_iter == mFirstVisibleItem) + { + height_before_first_visible_item = height - (*item_iter)->getNominalHeight(); + first_visible_item_iter = item_iter; + } + + if (-1 != height_before_first_visible_item && 0 == visible_items_height && height - height_before_first_visible_item > max_height - spillover_item_height * 2) + { + first_hidden_item_iter = item_iter; + visible_items_height = height - height_before_first_visible_item - (*item_iter)->getNominalHeight(); + } + } } } - } - setRect(LLRect(getRect().mLeft, getRect().mBottom + height, getRect().mLeft + width, getRect().mBottom)); + if (mScrollable) + { + S32 max_items_height = max_height - spillover_item_height * 2; + + // Fix mFirstVisibleItem value, if it doesn't allow to display all items, that can fit + if (visible_items_height < max_items_height) + { + if (visible_items_height == 0) + { + visible_items_height = height - height_before_first_visible_item; + } + + item_list_t::iterator tmp_iter(first_visible_item_iter); + while (visible_items_height < max_items_height && first_visible_item_iter != mItems.begin()) + { + if ((*first_visible_item_iter)->getVisible()) + { + // It keeps visible item, after first_visible_item_iter + tmp_iter = first_visible_item_iter; + } + + first_visible_item_iter--; + + if ((*first_visible_item_iter)->getVisible()) + { + visible_items_height += (*first_visible_item_iter)->getNominalHeight(); + height_before_first_visible_item -= (*first_visible_item_iter)->getNominalHeight(); + } + } + + // Roll back one item, that doesn't fit + if (visible_items_height > max_items_height) + { + visible_items_height -= (*first_visible_item_iter)->getNominalHeight(); + height_before_first_visible_item += (*first_visible_item_iter)->getNominalHeight(); + first_visible_item_iter = tmp_iter; + } + if (!(*first_visible_item_iter)->getVisible()) + { + first_visible_item_iter = tmp_iter; + } + + mFirstVisibleItem = *first_visible_item_iter; + } + } + } S32 cur_height = (S32)llmin(max_height, height); + + if (mScrollable && + (height_before_first_visible_item > MENU_ITEM_PADDING || + height_before_first_visible_item + visible_items_height < (S32)height)) + { + // Reserving 2 extra slots for arrow items + cur_height = visible_items_height + spillover_item_height * 2; + } + + setRect(LLRect(getRect().mLeft, getRect().mTop, getRect().mLeft + width, getRect().mTop - cur_height)); + S32 cur_width = 0; + S32 offset = 0; + if (mScrollable) + { + // No space for all items, creating arrow items + if (height_before_first_visible_item > MENU_ITEM_PADDING || + height_before_first_visible_item + visible_items_height < (S32)height) + { + if (NULL == mArrowUpItem) + { + LLMenuScrollItem::Params item_params; + item_params.name(ARROW_UP); + item_params.arrow_type(LLMenuScrollItem::ARROW_UP); + item_params.scroll_callback.function(boost::bind(&LLMenuGL::scrollItemsUp, this)); + + mArrowUpItem = LLUICtrlFactory::create<LLMenuScrollItem>(item_params); + LLUICtrl::addChild(mArrowUpItem); + + } + if (NULL == mArrowDownItem) + { + LLMenuScrollItem::Params item_params; + item_params.name(ARROW_DOWN); + item_params.arrow_type(LLMenuScrollItem::ARROW_DOWN); + item_params.scroll_callback.function(boost::bind(&LLMenuGL::scrollItemsDown, this)); + + mArrowDownItem = LLUICtrlFactory::create<LLMenuScrollItem>(item_params); + LLUICtrl::addChild(mArrowDownItem); + } + + LLRect rect; + mArrowUpItem->setRect(rect.setLeftTopAndSize( 0, cur_height, width, mArrowUpItem->getNominalHeight())); + mArrowUpItem->setVisible(TRUE); + mArrowUpItem->setEnabled(height_before_first_visible_item > MENU_ITEM_PADDING); + mArrowUpItem->reshape(width, mArrowUpItem->getNominalHeight()); + mArrowDownItem->setRect(rect.setLeftTopAndSize( 0, mArrowDownItem->getNominalHeight(), width, mArrowDownItem->getNominalHeight())); + mArrowDownItem->setVisible(TRUE); + mArrowDownItem->setEnabled(height_before_first_visible_item + visible_items_height < (S32)height); + mArrowDownItem->reshape(width, mArrowDownItem->getNominalHeight()); + + cur_height -= mArrowUpItem->getNominalHeight(); + + offset = menu_region_rect.mRight; // This moves items behind visible area + } + else + { + if (NULL != mArrowUpItem) + { + mArrowUpItem->setVisible(FALSE); + } + if (NULL != mArrowDownItem) + { + mArrowDownItem->setVisible(FALSE); + } + } + + } + item_list_t::iterator item_iter; for (item_iter = mItems.begin(); item_iter != mItems.end(); ++item_iter) { if ((*item_iter)->getVisible()) { + if (mScrollable) + { + if (item_iter == first_visible_item_iter) + { + offset = 0; + } + else if (item_iter == first_hidden_item_iter) + { + offset = menu_region_rect.mRight; // This moves items behind visible area + } + } + // setup item rect to hold label LLRect rect; if (mHorizontalLayout) @@ -1732,8 +2080,11 @@ void LLMenuGL::arrange( void ) } else { - rect.setLeftTopAndSize( 0, cur_height, width, (*item_iter)->getNominalHeight()); - cur_height -= (*item_iter)->getNominalHeight(); + rect.setLeftTopAndSize( 0 + offset, cur_height, width, (*item_iter)->getNominalHeight()); + if (offset == 0) + { + cur_height -= (*item_iter)->getNominalHeight(); + } } (*item_iter)->setRect( rect ); (*item_iter)->buildDrawLabel(); @@ -1913,9 +2264,11 @@ void LLMenuGL::empty( void ) cleanupSpilloverBranch(); mItems.clear(); + mFirstVisibleItem = NULL; + mArrowUpItem = NULL; + mArrowDownItem = NULL; deleteAllChildren(); - } // Adjust rectangle of the menu @@ -2351,9 +2704,29 @@ BOOL LLMenuGL::handleHover( S32 x, S32 y, MASK mask ) } getWindow()->setCursor(UI_CURSOR_ARROW); - //ProductEngine: what behavior is this addressing? // *HACK Release the mouse capture - gFocusMgr.setMouseCapture( NULL ); + // This is done to release the mouse after the Navigation Bar "Back" or "Forward" button + // drop-down menu is shown. Otherwise any other view won't be able to handle mouse events + // until the user chooses one of the drop-down menu items. + + return TRUE; +} + +BOOL LLMenuGL::handleScrollWheel( S32 x, S32 y, S32 clicks ) +{ + if (!mScrollable) + return blockMouseEvent(x, y); + + if( clicks > 0 ) + { + while( clicks-- ) + scrollItemsDown(); + } + else + { + while( clicks++ ) + scrollItemsUp(); + } return TRUE; } @@ -2458,7 +2831,6 @@ void LLMenuGL::showPopup(LLView* spawning_view, LLMenuGL* menu, S32 x, S32 y) const LLRect menu_region_rect = LLMenuGL::sMenuContainer->getMenuRect(); const S32 HPAD = 2; - menu->arrangeAndClear(); // Fix menu rect if needed. LLRect rect = menu->getRect(); //LLView* cur_view = spawning_view; S32 left = x + HPAD; @@ -2471,6 +2843,15 @@ void LLMenuGL::showPopup(LLView* spawning_view, LLMenuGL* menu, S32 x, S32 y) //rect.setLeftTopAndSize(x + HPAD, y, rect.getWidth(), rect.getHeight()); menu->setRect( rect ); + // Resetting scrolling position + if (menu->isScrollable()) + { + menu->mFirstVisibleItem = NULL; + menu->needsArrange(); + } + menu->arrangeAndClear(); // Fix menu rect if needed. + rect = menu->getRect(); + S32 bottom; left = rect.mLeft; bottom = rect.mBottom; @@ -2502,7 +2883,7 @@ void LLMenuGL::showPopup(LLView* spawning_view, LLMenuGL* menu, S32 x, S32 y) /// Class LLMenuBarGL ///============================================================================ -static LLRegisterWidget<LLMenuBarGL> r2("menu_bar"); +static LLDefaultWidgetRegistry::Register<LLMenuBarGL> r2("menu_bar"); LLMenuBarGL::LLMenuBarGL( const Params& p ) : LLMenuGL(p), @@ -2516,7 +2897,6 @@ LLMenuBarGL::~LLMenuBarGL() mAccelerators.clear(); } - BOOL LLMenuBarGL::handleAcceleratorKey(KEY key, MASK mask) { if (getHighlightedItem() && mask == MASK_NONE) @@ -3189,7 +3569,9 @@ void LLContextMenuBranch::setHighlight( BOOL highlight ) // class LLContextMenu // A context menu //----------------------------------------------------------------------------- -static LLRegisterWidget<LLContextMenu> context_menu_register("context_menu"); +static LLDefaultWidgetRegistry::Register<LLContextMenu> context_menu_register("context_menu"); +static MenuRegistry::Register<LLContextMenu> context_menu_register2("context_menu"); + LLContextMenu::LLContextMenu(const Params& p) : LLMenuGL(p), @@ -3208,13 +3590,21 @@ void LLContextMenu::setVisible(BOOL visible) void LLContextMenu::show(S32 x, S32 y,BOOL adjustCursor) { + arrangeAndClear(); + S32 width = getRect().getWidth(); S32 height = getRect().getHeight(); - const LLRect menu_region_rect = LLMenuGL::sMenuContainer->getMenuRect(); - LLView* parent_view = getParent(); + if(getParentMenuItem()) + { + S32 parent_width = getParentMenuItem()->getRect().getWidth(); + + if(x + width > menu_region_rect.getWidth()) + x -= parent_width + width; + } + S32 local_x, local_y; parent_view->screenPointToLocal(x, y, &local_x, &local_y); @@ -3238,8 +3628,6 @@ void LLContextMenu::hide() LLView::setVisible(FALSE); - gFocusMgr.setMouseCapture(NULL); - if (mHoverItem) { mHoverItem->setHighlight( FALSE ); @@ -3250,9 +3638,11 @@ void LLContextMenu::hide() BOOL LLContextMenu::handleHover( S32 x, S32 y, MASK mask ) { + LLMenuGL::handleHover(x,y,mask); + BOOL handled = FALSE; - LLMenuItemGL *item = getItemFromXY( x, y ); + LLMenuItemGL *item = getHighlightedItem(); if (item && item->getEnabled()) { @@ -3293,7 +3683,7 @@ BOOL LLContextMenu::handleMouseDown( S32 x, S32 y, MASK mask ) { BOOL handled = FALSE; // The click was somewhere within our rectangle - LLMenuItemGL *item = getItemFromXY( x, y ); + LLMenuItemGL *item = getHighlightedItem(); if (item) { @@ -3315,7 +3705,7 @@ BOOL LLContextMenu::handleMouseUp( S32 x, S32 y, MASK mask ) BOOL handled = FALSE; // The click was somewhere within our rectangle - LLMenuItemGL *item = getItemFromXY( x, y ); + LLMenuItemGL *item = getHighlightedItem(); if (item) { @@ -3347,7 +3737,7 @@ BOOL LLContextMenu::handleRightMouseDown(S32 x, S32 y, MASK mask) BOOL handled = FALSE; // The click was somewhere within our rectangle - LLMenuItemGL *item = getItemFromXY( x, y ); + LLMenuItemGL *item = getHighlightedItem(); S32 local_x = x - getRect().mLeft; S32 local_y = y - getRect().mBottom; @@ -3383,7 +3773,6 @@ BOOL LLContextMenu::handleRightMouseUp( S32 x, S32 y, MASK mask ) if (!mHoveredAnyItem && !pointInView(local_x, local_y)) { - gFocusMgr.setMouseCapture(NULL); sMenuContainer->hideMenus(); return TRUE; } @@ -3395,25 +3784,12 @@ BOOL LLContextMenu::handleRightMouseUp( S32 x, S32 y, MASK mask ) return result; } -LLMenuItemGL* LLContextMenu::getItemFromXY (S32 x, S32 y) -{ - item_list_t::iterator item_iter; - for (item_iter = mItems.begin(); item_iter != mItems.end(); ++item_iter) - { - S32 local_x = x - (**item_iter).getRect().mLeft; - S32 local_y = y - (**item_iter).getRect().mBottom; - if((**item_iter).pointInView(local_x,local_y)) - return *item_iter; - } - return NULL; -} - -void LLContextMenu::draw () +void LLContextMenu::draw() { LLMenuGL::draw(); } -BOOL LLContextMenu::appendContextSubMenu(LLContextMenu *menu) +BOOL LLContextMenu::appendContextSubMenu(LLContextMenu *menu) { if (menu == this) @@ -3426,7 +3802,11 @@ BOOL LLContextMenu::appendContextSubMenu(LLContextMenu *menu) p.name = menu->getName(); p.label = menu->getLabel(); p.branch = menu; - + p.enabled_color=LLUI::getCachedColorFunctor("MenuItemEnabledColor"); + p.disabled_color=LLUI::getCachedColorFunctor("MenuItemDisabledColor"); + p.highlight_bg_color=LLUI::getCachedColorFunctor("MenuItemHighlightBgColor"); + p.highlight_fg_color=LLUI::getCachedColorFunctor("MenuItemHighlightFgColor"); + item = LLUICtrlFactory::create<LLContextMenuBranch>(p); LLMenuGL::sMenuContainer->addChild(item->getBranch()); item->setFont( LLFontGL::getFontSansSerifSmall() ); diff --git a/indra/llui/llmenugl.h b/indra/llui/llmenugl.h index ffaecc2c15e5222315f7f68ad77184442df595a1..526e1c2583a19a4eacdfa76657775bdda22250b2 100644 --- a/indra/llui/llmenugl.h +++ b/indra/llui/llmenugl.h @@ -63,7 +63,7 @@ class LLMenuItemGL : public LLUICtrl Optional<KEY> jump_key; Optional<bool> use_mac_ctrl; - Deprecated rect, + Ignored rect, left, top, right, @@ -175,6 +175,7 @@ class LLMenuItemGL : public LLUICtrl virtual BOOL handleKeyHere( KEY key, MASK mask ); virtual BOOL handleMouseDown( S32 x, S32 y, MASK mask ); virtual BOOL handleMouseUp( S32 x, S32 y, MASK mask ); + virtual BOOL handleScrollWheel( S32 x, S32 y, S32 clicks ); virtual void draw( void ); BOOL getHover() const { return mGotHover; } @@ -368,7 +369,8 @@ class LLMenuGL drop_shadow, bg_visible, create_jump_keys, - keep_fixed_size; + keep_fixed_size, + scrollable; Optional<LLUIColor> bg_color; Params() @@ -377,7 +379,8 @@ class LLMenuGL drop_shadow("drop_shadow", true), bg_visible("bg_visible", true), create_jump_keys("create_jump_keys", false), - bg_color("bg_color", LLUI::getCachedColorFunctor( "MenuDefaultBgColor" )) + bg_color("bg_color", LLUI::getCachedColorFunctor( "MenuDefaultBgColor" )), + scrollable("scrollable", false) { addSynonym(bg_visible, "opaque"); addSynonym(bg_color, "color"); @@ -400,12 +403,14 @@ class LLMenuGL // LLView Functionality /*virtual*/ BOOL handleUnicodeCharHere( llwchar uni_char ); /*virtual*/ BOOL handleHover( S32 x, S32 y, MASK mask ); + /*virtual*/ BOOL handleScrollWheel( S32 x, S32 y, S32 clicks ); /*virtual*/ void draw( void ); /*virtual*/ void drawBackground(LLMenuItemGL* itemp, F32 alpha); /*virtual*/ void setVisible(BOOL visible); /*virtual*/ bool addChild(LLView* view, S32 tab_group = 0); /*virtual*/ void removeChild( LLView* ctrl); /*virtual*/ BOOL postBuild(); + /*virtual*/ const widget_registry_t& getChildRegistry() const; virtual BOOL handleAcceleratorKey(KEY key, MASK mask); @@ -493,6 +498,10 @@ class LLMenuGL static void setKeyboardMode(BOOL mode) { sKeyboardMode = mode; } static BOOL getKeyboardMode() { return sKeyboardMode; } + void scrollItemsUp(); + void scrollItemsDown(); + BOOL isScrollable() const { return mScrollable; } + static class LLMenuHolderGL* sMenuContainer; protected: @@ -507,6 +516,9 @@ class LLMenuGL // TODO: create accessor methods for these? typedef std::list< LLMenuItemGL* > item_list_t; item_list_t mItems; + LLMenuItemGL*mFirstVisibleItem; + LLMenuItemGL *mArrowUpItem, *mArrowDownItem; + typedef std::map<KEY, LLMenuItemGL*> navigation_key_map_t; navigation_key_map_t mJumpKeys; S32 mLastMouseX; @@ -514,6 +526,7 @@ class LLMenuGL S32 mMouseVelX; S32 mMouseVelY; BOOL mHorizontalLayout; + BOOL mScrollable; BOOL mKeepFixedSize; BOOL mNeedsArrange; @@ -530,6 +543,7 @@ class LLMenuGL BOOL mDropShadowed; // Whether to drop shadow BOOL mHasSelection; LLFrameTimer mFadeTimer; + LLTimer mScrollItemsTimer; BOOL mTornOff; class LLMenuItemTearOffGL* mTearOffItem; class LLMenuItemBranchGL* mSpilloverBranch; @@ -652,9 +666,6 @@ class LLContextMenu BOOL appendContextSubMenu(LLContextMenu *menu); -protected: - LLMenuItemGL* getItemFromXY (S32 x, S32 y); - protected: BOOL mHoveredAnyItem; LLMenuItemGL* mHoverItem; @@ -685,14 +696,14 @@ class LLMenuBarGL : public LLMenuGL LLMenuBarGL( const Params& p ); virtual ~LLMenuBarGL(); - virtual BOOL handleAcceleratorKey(KEY key, MASK mask); - virtual BOOL handleKeyHere(KEY key, MASK mask); - virtual BOOL handleJumpKey(KEY key); - virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); - virtual BOOL handleRightMouseDown(S32 x, S32 y, MASK mask); + /*virtual*/ BOOL handleAcceleratorKey(KEY key, MASK mask); + /*virtual*/ BOOL handleKeyHere(KEY key, MASK mask); + /*virtual*/ BOOL handleJumpKey(KEY key); + /*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask); + /*virtual*/ BOOL handleRightMouseDown(S32 x, S32 y, MASK mask); - virtual void draw(); - virtual BOOL jumpKeysActive(); + /*virtual*/ void draw(); + /*virtual*/ BOOL jumpKeysActive(); // add a vertical separator to this menu virtual BOOL addSeparator(); diff --git a/indra/llui/llmultifloater.h b/indra/llui/llmultifloater.h index ea8a9841e39a0e60a7b0ac102de6abf0b0882bda..7f4c1c040aadc8b25d018293ca56796aa2401a60 100644 --- a/indra/llui/llmultifloater.h +++ b/indra/llui/llmultifloater.h @@ -44,7 +44,7 @@ class LLMultiFloater : public LLFloater { public: - LLMultiFloater(const LLFloater::Params& params = LLFloater::Params()); + LLMultiFloater(const LLFloater::Params& params = LLFloater::getDefaultParams()); virtual ~LLMultiFloater() {}; void buildTabContainer(); diff --git a/indra/llui/llmultislider.cpp b/indra/llui/llmultislider.cpp index 24b83b012043d62aa1dbf834f10b901dcf2d8bda..099a79278a658225d1b1e11f9b5e9add9a7692d3 100644 --- a/indra/llui/llmultislider.cpp +++ b/indra/llui/llmultislider.cpp @@ -45,7 +45,7 @@ #include <sstream> -static LLRegisterWidget<LLMultiSlider> r("multi_slider_bar"); +static LLDefaultWidgetRegistry::Register<LLMultiSlider> r("multi_slider_bar"); const F32 FLOAT_THRESHOLD = 0.00001f; diff --git a/indra/llui/llmultisliderctrl.cpp b/indra/llui/llmultisliderctrl.cpp index bc981a9b578908cd82c8943acc382aee65161301..312aceaaa27613d2f7cfc772bcf7683e21d3b455 100644 --- a/indra/llui/llmultisliderctrl.cpp +++ b/indra/llui/llmultisliderctrl.cpp @@ -52,7 +52,7 @@ #include "llresmgr.h" #include "lluictrlfactory.h" -static LLRegisterWidget<LLMultiSliderCtrl> r("multi_slider"); +static LLDefaultWidgetRegistry::Register<LLMultiSliderCtrl> r("multi_slider"); const U32 MAX_STRING_LENGTH = 10; LLMultiSliderCtrl::Params::Params() diff --git a/indra/llui/llnotifications.cpp b/indra/llui/llnotifications.cpp index 569112aef145bf81627aa975607528ce0e8d0d6d..452f18b40ba50645641a14f35b627529525d1f9b 100644 --- a/indra/llui/llnotifications.cpp +++ b/indra/llui/llnotifications.cpp @@ -314,7 +314,7 @@ void LLNotificationForm::addElement(const std::string& type, const std::string& LLSD element; element["type"] = type; element["name"] = name; - element["label"] = name; + element["text"] = name; element["value"] = value; element["index"] = mFormData.size(); mFormData.append(element); @@ -541,8 +541,12 @@ std::string LLNotification::getSelectedOptionName(const LLSD& response) void LLNotification::respond(const LLSD& response) { mRespondedTo = true; - LLNotificationResponder func = LLNotificationFunctorRegistry::instance().getFunctor(mResponseFunctorName); - func(asLLSD(), response); + // look up the functor + LLNotificationFunctorRegistry::ResponseFunctor functor = + LLNotificationFunctorRegistry::instance().getFunctor(mResponseFunctorName); + // and then call it + functor(asLLSD(), response); + if (mTemporaryResponder) { LLNotificationFunctorRegistry::instance().unregisterFunctor(mResponseFunctorName); diff --git a/indra/llui/llnotifications.h b/indra/llui/llnotifications.h index 5c8d146e0cb20018e3e2dd9551684f57a45ead9f..b749724b4e93e64ae67c7a23c574d813873c4dc0 100644 --- a/indra/llui/llnotifications.h +++ b/indra/llui/llnotifications.h @@ -299,8 +299,8 @@ friend class LLNotifications; struct Functor : public LLInitParam::Choice<Functor> { - Option<std::string> name; - Option<LLNotificationFunctorRegistry::ResponseFunctor> function; + Alternative<std::string> name; + Alternative<LLNotificationFunctorRegistry::ResponseFunctor> function; Functor() : name("functor_name"), diff --git a/indra/llui/llpanel.cpp b/indra/llui/llpanel.cpp index 35871dc078f1a63475054c166caa8d5acdd6086f..0136a41d61649bd9545e8fd51d0a4238f974bab4 100644 --- a/indra/llui/llpanel.cpp +++ b/indra/llui/llpanel.cpp @@ -56,7 +56,12 @@ #include "llbutton.h" #include "lltabcontainer.h" -static LLRegisterWidget<LLPanel> r1("panel", &LLPanel::fromXML); +static LLDefaultWidgetRegistry::Register<LLPanel> r1("panel", &LLPanel::fromXML); + +const LLPanel::Params& LLPanel::getDefaultParams() +{ + return LLUICtrlFactory::getDefaultParams<LLPanel::Params>(); +} LLPanel::Params::Params() : has_border("border", false), @@ -67,7 +72,8 @@ LLPanel::Params::Params() min_width("min_width", 100), min_height("min_height", 100), strings("string"), - filename("filename") + filename("filename"), + class_name("class") { name = "panel"; addSynonym(background_visible, "bg_visible"); @@ -85,7 +91,8 @@ LLPanel::LLPanel(const LLPanel::Params& p) mDefaultBtn(NULL), mBorder(NULL), mLabel(p.label), - mCommitCallbackRegistrar(false) + mCommitCallbackRegistrar(false), + mEnableCallbackRegistrar(false) { setIsChrome(FALSE); @@ -112,6 +119,14 @@ void LLPanel::addBorder(LLViewBorder::Params p) addChild( mBorder ); } +void LLPanel::addBorder() +{ + LLViewBorder::Params p; + p.border_thickness(LLPANEL_BORDER_WIDTH); + addBorder(p); +} + + void LLPanel::removeBorder() { if (mBorder) @@ -263,29 +278,26 @@ BOOL LLPanel::handleKeyHere( KEY key, MASK mask ) } } } - - // If we have a default button, click it when - // return is pressed, unless current focus is a return-capturing button - // in which case *that* button will handle the return key - LLButton* focused_button = dynamic_cast<LLButton*>(cur_focus); - if (cur_focus && !(focused_button && focused_button->getCommitOnReturn())) + + // If RETURN was pressed and something has focus, call onCommit() + if (!handled && cur_focus && key == KEY_RETURN && mask == MASK_NONE) { - // RETURN key means hit default button in this case - if (key == KEY_RETURN && mask == MASK_NONE - && mDefaultBtn != NULL - && mDefaultBtn->getVisible() - && mDefaultBtn->getEnabled()) + LLButton* focused_button = dynamic_cast<LLButton*>(cur_focus); + if (focused_button && focused_button->getCommitOnReturn()) { + // current focus is a return-capturing button, + // let *that* button handle the return key + handled = FALSE; + } + else if (mDefaultBtn && mDefaultBtn->getVisible() && mDefaultBtn->getEnabled()) + { + // If we have a default button, click it when return is pressed mDefaultBtn->onCommit(); handled = TRUE; } - } - - if (key == KEY_RETURN && mask == MASK_NONE) - { - // set keyboard focus to self to trigger commitOnFocusLost behavior on current ctrl - if (cur_focus && cur_focus->acceptsTextInput()) + else if (cur_focus->acceptsTextInput()) { + // call onCommit for text input handling control cur_focus->onCommit(); handled = TRUE; } @@ -352,23 +364,49 @@ void LLPanel::setBorderVisible(BOOL b) } } +LLFastTimer::DeclareTimer FTM_PANEL_CONSTRUCTION("Panel Construction"); + LLView* LLPanel::fromXML(LLXMLNodePtr node, LLView* parent, LLXMLNodePtr output_node) { std::string name("panel"); node->getAttributeString("name", name); - LLPanel* panelp = LLUICtrlFactory::getInstance()->createFactoryPanel(name); + std::string class_attr; + node->getAttributeString("class", class_attr); + + LLPanel* panelp = NULL; + + { + LLFastTimer timer(FTM_PANEL_CONSTRUCTION); + + if(!class_attr.empty()) + { + panelp = LLRegisterPanelClass::instance().createPanelClass(class_attr); + if (!panelp) + { + llwarns << "Panel class \"" << class_attr << "\" not registered." << llendl; + } + } + if (!panelp) + { + panelp = LLUICtrlFactory::getInstance()->createFactoryPanel(name); + } + + } // factory panels may have registered their own factory maps if (!panelp->getFactoryMap().empty()) { LLUICtrlFactory::instance().pushFactoryFunctions(&panelp->getFactoryMap()); } - panelp->mCommitCallbackRegistrar.pushScope(); // for local registry callbacks; define in constructor, referenced in XUI or postBuild + // for local registry callbacks; define in constructor, referenced in XUI or postBuild + panelp->mCommitCallbackRegistrar.pushScope(); + panelp->mEnableCallbackRegistrar.pushScope(); panelp->initPanelXML(node, parent, output_node); panelp->mCommitCallbackRegistrar.popScope(); + panelp->mEnableCallbackRegistrar.popScope(); if (panelp && !panelp->getFactoryMap().empty()) { @@ -422,62 +460,95 @@ void LLPanel::initFromParams(const LLPanel::Params& p) } +static LLFastTimer::DeclareTimer FTM_PANEL_SETUP("Panel Setup"); +static LLFastTimer::DeclareTimer FTM_EXTERNAL_PANEL_LOAD("Load Extern Panel Reference"); +static LLFastTimer::DeclareTimer FTM_PANEL_POSTBUILD("Panel PostBuild"); + BOOL LLPanel::initPanelXML(LLXMLNodePtr node, LLView *parent, LLXMLNodePtr output_node) { const LLPanel::Params& default_params(LLUICtrlFactory::getDefaultParams<LLPanel::Params>()); Params params(default_params); - LLXMLNodePtr referenced_xml; - std::string xml_filename; - node->getAttributeString("filename", xml_filename); - - if (!xml_filename.empty()) { - if (!LLUICtrlFactory::getLayeredXMLNode(xml_filename, referenced_xml)) - { - llwarns << "Couldn't parse panel from: " << xml_filename << llendl; + LLFastTimer timer(FTM_PANEL_SETUP); - return FALSE; - } + LLXMLNodePtr referenced_xml; + std::string xml_filename; + node->getAttributeString("filename", xml_filename); - LLXUIParser::instance().readXUI(referenced_xml, params); + if (!xml_filename.empty()) + { + LLFastTimer timer(FTM_EXTERNAL_PANEL_LOAD); + if (output_node) + { + //if we are exporting, we want to export the current xml + //not the referenced xml + LLXUIParser::instance().readXUI(node, params); + Params output_params(params); + setupParamsForExport(output_params, parent); + output_node->setName(node->getName()->mString); + LLXUIParser::instance().writeXUI( + output_node, output_params, &default_params); + return TRUE; + } + + if (!LLUICtrlFactory::getLayeredXMLNode(xml_filename, referenced_xml)) + { + llwarns << "Couldn't parse panel from: " << xml_filename << llendl; - // add children using dimensions from referenced xml for consistent layout - setShape(params.rect); - addChildren(referenced_xml); - } + return FALSE; + } - LLXUIParser::instance().readXUI(node, params); + LLXUIParser::instance().readXUI(referenced_xml, params); - if (output_node) - { - Params output_params(params); - setupParamsForExport(output_params, parent); - output_node->setName(node->getName()->mString); - LLXUIParser::instance().writeXUI( - output_node, output_params, &default_params); - } - - setupParams(params, parent); - initFromParams(params); + // add children using dimensions from referenced xml for consistent layout + setShape(params.rect); + LLUICtrlFactory::createChildren(this, referenced_xml); + } - // add children - addChildren(node, output_node); + LLXUIParser::instance().readXUI(node, params); - // Connect to parent after children are built, because tab containers - // do a reshape() on their child panels, which requires that the children - // be built/added. JC - if (parent) - { - S32 tab_group = params.tab_group.isProvided() ? params.tab_group() : -1; - parent->addChild(this, tab_group); - } + if (output_node) + { + Params output_params(params); + setupParamsForExport(output_params, parent); + output_node->setName(node->getName()->mString); + LLXUIParser::instance().writeXUI( + output_node, output_params, &default_params); + } + + setupParams(params, parent); + { + LLFastTimer timer(FTM_PANEL_CONSTRUCTION); + initFromParams(params); + } + + // add children + LLUICtrlFactory::createChildren(this, node, output_node); - postBuild(); + // Connect to parent after children are built, because tab containers + // do a reshape() on their child panels, which requires that the children + // be built/added. JC + if (parent) + { + S32 tab_group = params.tab_group.isProvided() ? params.tab_group() : -1; + parent->addChild(this, tab_group); + } + { + LLFastTimer timer(FTM_PANEL_POSTBUILD); + postBuild(); + } + } return TRUE; } +const widget_registry_t& LLPanel::getChildRegistry() const +{ + // use default widget registry + return LLDefaultWidgetRegistry::instance(); +} + bool LLPanel::hasString(const std::string& name) { return mUIStrings.find(name) != mUIStrings.end(); @@ -827,10 +898,11 @@ LLView* LLPanel::getChildView(const std::string& name, BOOL recurse, BOOL create } if (!view && create_if_missing) { - view = getDummyWidget<LLView>(name); + view = getDefaultWidget<LLView>(name); if (!view) { - view = LLUICtrlFactory::createDummyWidget<LLView>(name); + // create LLViews explicitly, as they are not registered widget types + view = LLUICtrlFactory::createDefaultWidget<LLView>(name); } } return view; diff --git a/indra/llui/llpanel.h b/indra/llui/llpanel.h index 5f4f8d16e7373ae50e9c8fc8026857d08fbed391..fc40cd77eb0c87bf774bbd68c2cfe3b546bdb719 100644 --- a/indra/llui/llpanel.h +++ b/indra/llui/llpanel.h @@ -86,17 +86,20 @@ class LLPanel : public LLUICtrl min_height; Optional<std::string> filename; + Optional<std::string> class_name; Multiple<LocalizedString> strings; Params(); }; +protected: + friend class LLUICtrlFactory; // RN: for some reason you can't just use LLUICtrlFactory::getDefaultParams as a default argument in VC8 - static const Params& defaultParams() { return LLUICtrlFactory::getDefaultParams<LLPanel::Params>(); } + static const LLPanel::Params& getDefaultParams(); // Panels can get constructed directly - LLPanel(const Params& params = defaultParams()); + LLPanel(const LLPanel::Params& params = getDefaultParams()); public: // LLPanel(const std::string& name, const LLRect& rect = LLRect(), BOOL bordered = TRUE); @@ -119,7 +122,7 @@ class LLPanel : public LLUICtrl // Border controls void addBorder( LLViewBorder::Params p); - void addBorder() { LLViewBorder::Params p; p.border_thickness(LLPANEL_BORDER_WIDTH); addBorder(p); } + void addBorder(); void removeBorder(); BOOL hasBorder() const { return mBorder != NULL; } void setBorderVisible( BOOL b ); @@ -158,9 +161,11 @@ class LLPanel : public LLUICtrl const LLCallbackMap::map_t& getFactoryMap() const { return mFactoryMap; } CommitCallbackRegistry::ScopedRegistrar& getCommitCallbackRegistrar() { return mCommitCallbackRegistrar; } + EnableCallbackRegistry::ScopedRegistrar& getEnableCallbackRegistrar() { return mEnableCallbackRegistrar; } void initFromParams(const Params& p); BOOL initPanelXML(LLXMLNodePtr node, LLView *parent, LLXMLNodePtr output_node = NULL); + /*virtual*/ const widget_registry_t& getChildRegistry() const; bool hasString(const std::string& name); std::string getString(const std::string& name, const LLStringUtil::format_map_t& args) const; @@ -238,12 +243,16 @@ class LLPanel : public LLUICtrl void childDisplayNotFound(); static LLView* fromXML(LLXMLNodePtr node, LLView *parent, LLXMLNodePtr output_node = NULL); + + //call onOpen to let panel know when it's about to be shown or activated + virtual void onOpen(const LLSD& key) {} protected: // Override to set not found list LLButton* getDefaultButton() { return mDefaultBtn; } LLCallbackMap::map_t mFactoryMap; CommitCallbackRegistry::ScopedRegistrar mCommitCallbackRegistrar; + EnableCallbackRegistry::ScopedRegistrar mEnableCallbackRegistrar; private: // Unified error reporting for the child* functions diff --git a/indra/llui/llprogressbar.cpp b/indra/llui/llprogressbar.cpp index 693c3317970837cf59388aa8f0786e33ec997c34..779967940af22721b97408db25e78aa1e9f98eb7 100644 --- a/indra/llui/llprogressbar.cpp +++ b/indra/llui/llprogressbar.cpp @@ -46,7 +46,7 @@ #include "llfocusmgr.h" #include "lluictrlfactory.h" -static LLRegisterWidget<LLProgressBar> r("progress_bar"); +static LLDefaultWidgetRegistry::Register<LLProgressBar> r("progress_bar"); LLProgressBar::Params::Params() : image_bar("image_bar"), diff --git a/indra/llui/llradiogroup.cpp b/indra/llui/llradiogroup.cpp index 7d348414316f9e486b3983f2a2c2f5923e33e220..70f98bd90850f62846ae8a799e8c427a6b762ad7 100644 --- a/indra/llui/llradiogroup.cpp +++ b/indra/llui/llradiogroup.cpp @@ -44,8 +44,14 @@ #include "llfocusmgr.h" #include "lluictrlfactory.h" -static LLRegisterWidget<LLRadioGroup> r1("radio_group"); -static LLRegisterWidget<LLRadioCtrl> r2("radio_item"); +static LLDefaultWidgetRegistry::Register<LLRadioGroup> r1("radio_group"); + +struct RadioGroupRegistry : public LLWidgetRegistry<RadioGroupRegistry> +{}; + +static RadioGroupRegistry::Register<LLRadioCtrl> register_radio_ctrl("radio_item"); + + LLRadioGroup::Params::Params() : has_border("draw_border") @@ -76,6 +82,11 @@ LLRadioGroup::~LLRadioGroup() { } +const widget_registry_t& LLRadioGroup::getChildRegistry() const +{ + return RadioGroupRegistry::instance(); +} + // virtual BOOL LLRadioGroup::postBuild() { diff --git a/indra/llui/llradiogroup.h b/indra/llui/llradiogroup.h index 3dfab9b2b39cadc05005e9f15fbfab09d637ca3f..850d896e29edc318c0f8270531d4fff8ab043c59 100644 --- a/indra/llui/llradiogroup.h +++ b/indra/llui/llradiogroup.h @@ -48,8 +48,8 @@ class LLRadioCtrl : public LLCheckBoxCtrl public: struct Params : public LLInitParam::Block<Params, LLCheckBoxCtrl::Params> { - Deprecated length; - Deprecated type; + Ignored length; + Ignored type; Params() : length("length"), @@ -70,7 +70,6 @@ class LLRadioCtrl : public LLCheckBoxCtrl friend class LLUICtrlFactory; }; - /* * An invisible view containing multiple mutually exclusive toggling * buttons (usually radio buttons). Automatically handles the mutex @@ -80,6 +79,7 @@ class LLRadioGroup : public LLUICtrl, public LLCtrlSelectionInterface { public: + struct Params : public LLInitParam::Block<Params, LLUICtrl::Params> { Optional<bool> has_border; @@ -118,6 +118,8 @@ class LLRadioGroup // Update the control as needed. Userdata must be a pointer to the button. void onClickButton(LLUICtrl* clicked_radio); + virtual const widget_registry_t& getChildRegistry() const; + //======================================================================== LLCtrlSelectionInterface* getSelectionInterface() { return (LLCtrlSelectionInterface*)this; }; @@ -145,5 +147,4 @@ class LLRadioGroup BOOL mHasBorder; }; - #endif diff --git a/indra/llui/llscrollbar.cpp b/indra/llui/llscrollbar.cpp index 1a2603420bbf1ff8c05e5730362500e5aceccf2b..3f1ff34419555ec4547406f6409eb9976057b85f 100644 --- a/indra/llui/llscrollbar.cpp +++ b/indra/llui/llscrollbar.cpp @@ -48,7 +48,7 @@ #include "llrender.h" #include "lluictrlfactory.h" -static LLRegisterWidget<LLScrollbar> register_scrollbar("scroll_bar"); +static LLDefaultWidgetRegistry::Register<LLScrollbar> register_scrollbar("scroll_bar"); LLScrollbar::Params::Params() : orientation ("orientation", HORIZONTAL), @@ -62,7 +62,9 @@ LLScrollbar::Params::Params() thumb_color("thumb_color"), thickness("thickness"), up_button("up_button"), - down_button("down_button") + down_button("down_button"), + left_button("left_button"), + right_button("right_button") { tab_stop = false; } diff --git a/indra/llui/llscrollcontainer.cpp b/indra/llui/llscrollcontainer.cpp index dfe3ef29fc26877ea1a7965d5a9bf7e76d3627e0..2a2e56a92c7707ee9ca9be69e026dd4001ca5d91 100644 --- a/indra/llui/llscrollcontainer.cpp +++ b/indra/llui/llscrollcontainer.cpp @@ -63,7 +63,7 @@ static const F32 AUTO_SCROLL_RATE_ACCEL = 120.f; /// Class LLScrollContainer ///---------------------------------------------------------------------------- -static LLRegisterWidget<LLScrollContainer> r("scroll_container"); +static LLDefaultWidgetRegistry::Register<LLScrollContainer> r("scroll_container"); LLScrollContainer::Params::Params() : is_opaque("opaque"), @@ -197,6 +197,15 @@ void LLScrollContainer::reshape(S32 width, S32 height, BOOL LLScrollContainer::handleKeyHere(KEY key, MASK mask) { + // allow scrolled view to handle keystrokes in case it delegated keyboard focus + // to the scroll container. + // NOTE: this should not recurse indefinitely as handleKeyHere + // should not propagate to parent controls, so mScrolledView should *not* + // call LLScrollContainer::handleKeyHere in turn + if (mScrolledView->handleKeyHere(key, mask)) + { + return TRUE; + } for( S32 i = 0; i < SCROLLBAR_COUNT; i++ ) { if( mScrollbar[i]->handleKeyHere(key, mask) ) @@ -508,6 +517,11 @@ bool LLScrollContainer::addChild(LLView* view, S32 tab_group) return ret_val; } +const widget_registry_t& LLScrollContainer::getChildRegistry() const +{ + // a scroll container can contain any default widget + return LLDefaultWidgetRegistry::instance(); +} void LLScrollContainer::updateScroll() { diff --git a/indra/llui/llscrollcontainer.h b/indra/llui/llscrollcontainer.h index 7e207645ff8a5196e012946bad8edd7856a00b3a..26d8cc824eea2a9ed1a116673471a6a40bef3077 100644 --- a/indra/llui/llscrollcontainer.h +++ b/indra/llui/llscrollcontainer.h @@ -104,6 +104,7 @@ class LLScrollContainer : public LLUICtrl virtual BOOL handleToolTip(S32 x, S32 y, std::string& msg, LLRect* sticky_rect); virtual void draw(); virtual bool addChild(LLView* view, S32 tab_group = 0); + virtual const widget_registry_t& getChildRegistry() const; private: // internal scrollbar handlers diff --git a/indra/llui/llscrollingpanellist.cpp b/indra/llui/llscrollingpanellist.cpp index bfeb35704a83b4af3c15f95c166f3eff0e4ba2b2..1f3a7f9fcf497b88c07db262ea6d387aa78d38d7 100644 --- a/indra/llui/llscrollingpanellist.cpp +++ b/indra/llui/llscrollingpanellist.cpp @@ -35,7 +35,7 @@ #include "llscrollingpanellist.h" -static LLRegisterWidget<LLScrollingPanelList> r("scrolling_panel_list"); +static LLDefaultWidgetRegistry::Register<LLScrollingPanelList> r("scrolling_panel_list"); ///////////////////////////////////////////////////////////////////// diff --git a/indra/llui/llscrolllistcolumn.cpp b/indra/llui/llscrolllistcolumn.cpp index 48fddbfb717d465c0cee46915f4e68cdc31eb80d..02f09bd9b4bd546f0d5f58b5b1d5a54f1e99df83 100644 --- a/indra/llui/llscrolllistcolumn.cpp +++ b/indra/llui/llscrolllistcolumn.cpp @@ -285,6 +285,16 @@ void LLScrollListColumn::SortNames::declareValues() declare("descending", LLScrollListColumn::DESCENDING); } +// +// LLScrollListColumn +// +//static +const LLScrollListColumn::Params& LLScrollListColumn::getDefaultParams() +{ + return LLUICtrlFactory::getDefaultParams<LLScrollListColumn::Params>(); +} + + LLScrollListColumn::LLScrollListColumn(const Params& p, LLScrollListCtrl* parent) : mWidth(0), mIndex (-1), diff --git a/indra/llui/llscrolllistcolumn.h b/indra/llui/llscrolllistcolumn.h index c1bb86577f667ea6e85c92ce06b7248205eec12b..712ea564548fdd8f8e5da0652462225a6a9d12b8 100644 --- a/indra/llui/llscrolllistcolumn.h +++ b/indra/llui/llscrolllistcolumn.h @@ -116,9 +116,9 @@ class LLScrollListColumn struct Width : public LLInitParam::Choice<Width> { - Option<bool> dynamic_width; - Option<S32> pixel_width; - Option<F32> relative_width; + Alternative<bool> dynamic_width; + Alternative<S32> pixel_width; + Alternative<F32> relative_width; Width() : dynamic_width("dynamicwidth", false), @@ -133,8 +133,8 @@ class LLScrollListColumn // either an image or label is used in column header struct Header : public LLInitParam::Choice<Header> { - Option<std::string> label; - Option<LLUIImage*> image; + Alternative<std::string> label; + Alternative<LLUIImage*> image; Header() : label("label"), @@ -160,8 +160,10 @@ class LLScrollListColumn } }; + static const Params& getDefaultParams(); + //NOTE: this is default constructible so we can store it in a map. - LLScrollListColumn(const Params& p = Params(), LLScrollListCtrl* = NULL); + LLScrollListColumn(const Params& p = getDefaultParams(), LLScrollListCtrl* = NULL); void setWidth(S32 width); S32 getWidth() const { return mWidth; } diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp index 6f484b1875e1fd1521d7fe56a3d5fc0353d79607..6d91c784f745a0a1f7f6cf927e8d787fd3000d01 100644 --- a/indra/llui/llscrolllistctrl.cpp +++ b/indra/llui/llscrolllistctrl.cpp @@ -62,7 +62,7 @@ template LLScrollListCtrl* LLView::getChild<LLScrollListCtrl>( const std::string& name, BOOL recurse, BOOL create_if_missing ) const; -static LLRegisterWidget<LLScrollListCtrl> r("scroll_list"); +static LLDefaultWidgetRegistry::Register<LLScrollListCtrl> r("scroll_list"); // local structures & classes. struct SortScrollListItem @@ -1246,14 +1246,14 @@ const std::string LLScrollListCtrl::getSelectedItemLabel(S32 column) const // "StringUUID" interface: use this when you're creating a list that contains non-unique strings each of which // has an associated, unique UUID, and only one of which can be selected at a time. -LLScrollListItem* LLScrollListCtrl::addStringUUIDItem(const std::string& item_text, const LLUUID& id, EAddPosition pos, BOOL enabled, S32 column_width) +LLScrollListItem* LLScrollListCtrl::addStringUUIDItem(const std::string& item_text, const LLUUID& id, EAddPosition pos, BOOL enabled) { if (getItemCount() < mMaxItemCount) { LLScrollListItem::Params item_p; item_p.enabled(enabled); item_p.value(id); - item_p.cells.add().value(item_text).width(column_width).type("text"); + item_p.cells.add().value(item_text).type("text"); return addRow( item_p, pos ); } diff --git a/indra/llui/llscrolllistctrl.h b/indra/llui/llscrolllistctrl.h index 461df6760fa49ad42ef63039e85b4b8a0be72220..8d200fb73fc80f9287f8de809f17a6640c8bf6ad 100644 --- a/indra/llui/llscrolllistctrl.h +++ b/indra/llui/llscrolllistctrl.h @@ -222,7 +222,7 @@ class LLScrollListCtrl : public LLUICtrl, public LLEditMenuHandler, // DEPRECATED: Use LLSD versions of setCommentText() and getSelectedValue(). // "StringUUID" interface: use this when you're creating a list that contains non-unique strings each of which // has an associated, unique UUID, and only one of which can be selected at a time. - LLScrollListItem* addStringUUIDItem(const std::string& item_text, const LLUUID& id, EAddPosition pos = ADD_BOTTOM, BOOL enabled = TRUE, S32 column_width = 0); + LLScrollListItem* addStringUUIDItem(const std::string& item_text, const LLUUID& id, EAddPosition pos = ADD_BOTTOM, BOOL enabled = TRUE); LLUUID getStringUUIDSelectedItem() const; LLScrollListItem* getFirstSelected() const; diff --git a/indra/llui/llscrolllistitem.h b/indra/llui/llscrolllistitem.h index 8d87137c3a2c043b1785300a50f730fd03589bad..4237d5b304eabf0e6a84e56b2b1339e4fac55415 100644 --- a/indra/llui/llscrolllistitem.h +++ b/indra/llui/llscrolllistitem.h @@ -64,9 +64,9 @@ class LLScrollListItem Optional<void*> userdata; Optional<LLSD> value; - Deprecated name; // use for localization tools - Deprecated type; - Deprecated length; + Ignored name; // use for localization tools + Ignored type; + Ignored length; Multiple<LLScrollListCell::Params> cells; diff --git a/indra/llui/llsearcheditor.cpp b/indra/llui/llsearcheditor.cpp index 62b204fd566e3395fe34e82ffbbb99738ca9491b..9522d32a8bba723b896a1d49cb5439e8c7cb2934 100644 --- a/indra/llui/llsearcheditor.cpp +++ b/indra/llui/llsearcheditor.cpp @@ -36,7 +36,7 @@ #include "llsearcheditor.h" -static LLRegisterWidget<LLSearchEditor> r2("search_editor"); +//static LLDefaultWidgetRegistry::Register<LLSearchEditor> r2("search_editor"); LLSearchEditor::LLSearchEditor(const LLSearchEditor::Params& p) : LLUICtrl(p) diff --git a/indra/llui/llslider.cpp b/indra/llui/llslider.cpp index ff2f5d3da09690efac2b1c4a143a85e810e142a1..8070dc4d02e77ad67190cb391284fb6eed50bc80 100644 --- a/indra/llui/llslider.cpp +++ b/indra/llui/llslider.cpp @@ -43,10 +43,9 @@ #include "llimagegl.h" #include "lluictrlfactory.h" -static LLRegisterWidget<LLSlider> r1("slider_bar"); +static LLDefaultWidgetRegistry::Register<LLSlider> r1("slider_bar"); //FIXME: make this into an unregistered template so that code constructed sliders don't // have ambigious template lookup problem -static LLRegisterWidget<LLSlider> r2("volume_slider"); LLSlider::Params::Params() : track_color("track_color"), diff --git a/indra/llui/llsliderctrl.cpp b/indra/llui/llsliderctrl.cpp index 2c8aed61968e6fadd8427fa5f3875c9632509f6d..8bdeddcf751ce272e46980d794b1313415415ddb 100644 --- a/indra/llui/llsliderctrl.cpp +++ b/indra/llui/llsliderctrl.cpp @@ -53,7 +53,7 @@ const U32 MAX_STRING_LENGTH = 10; -static LLRegisterWidget<LLSliderCtrl> r("slider"); +static LLDefaultWidgetRegistry::Register<LLSliderCtrl> r("slider"); LLSliderCtrl::LLSliderCtrl(const LLSliderCtrl::Params& p) : LLF32UICtrl(p), @@ -398,4 +398,3 @@ void LLSliderCtrl::reportInvalidData() make_ui_sound("UISndBadKeystroke"); } - diff --git a/indra/llui/llspinctrl.cpp b/indra/llui/llspinctrl.cpp index ac4b528aacbb4e7cb48519fce40983eab2f44613..72329a4b323d05526222b1fe16fb34aed766ad95 100644 --- a/indra/llui/llspinctrl.cpp +++ b/indra/llui/llspinctrl.cpp @@ -53,7 +53,7 @@ const U32 MAX_STRING_LENGTH = 32; -static LLRegisterWidget<LLSpinCtrl> r2("spinner"); +static LLDefaultWidgetRegistry::Register<LLSpinCtrl> r2("spinner"); LLSpinCtrl::Params::Params() : label_width("label_width"), diff --git a/indra/llui/llstatbar.cpp b/indra/llui/llstatbar.cpp index b5383c34eab6152d4c33c4fc640ab5013631aadf..bd74b285a7ac83916a689d223e78ff179be256e6 100644 --- a/indra/llui/llstatbar.cpp +++ b/indra/llui/llstatbar.cpp @@ -43,8 +43,6 @@ #include "llstat.h" #include "lluictrlfactory.h" -static LLRegisterWidget<LLStatBar> r1("stat_bar"); - /////////////////////////////////////////////////////////////////////////////////// LLStatBar::LLStatBar(const Params& p) diff --git a/indra/llui/llstatview.cpp b/indra/llui/llstatview.cpp index e16f2c450e4c84a76caafefc9e570935289fdfc5..6691f16c1e1611a30b09f00b37cad3029a8945d4 100644 --- a/indra/llui/llstatview.cpp +++ b/indra/llui/llstatview.cpp @@ -64,3 +64,17 @@ LLStatView::~LLStatView() } } + +// widget registrars +struct StatViewRegistry : public LLWidgetRegistry<StatViewRegistry> +{}; + +static StatViewRegistry::Register<LLStatBar> r1("stat_bar"); + + +const widget_registry_t& LLStatView::getChildRegistry() const +{ + return StatViewRegistry::instance(); +} + + diff --git a/indra/llui/llstatview.h b/indra/llui/llstatview.h index 0197c7ceb3dd9f6794f31ee1622bc9fb80f9cf48..20aba7782bd6724532507783fe682afb71139d81 100644 --- a/indra/llui/llstatview.h +++ b/indra/llui/llstatview.h @@ -53,11 +53,14 @@ class LLStatView : public LLContainerView }; ~LLStatView(); + virtual const widget_registry_t& getChildRegistry() const; + protected: LLStatView(const Params&); friend class LLUICtrlFactory; protected: std::string mSetting; + }; #endif // LL_STATVIEW_ diff --git a/indra/llui/lltabcontainer.cpp b/indra/llui/lltabcontainer.cpp index 5b24131c90abbc69fcbb6e007355658177a1f0b4..3391b1275c64f1f48a34edb0484e3eb74b72bf08 100644 --- a/indra/llui/lltabcontainer.cpp +++ b/indra/llui/lltabcontainer.cpp @@ -99,15 +99,21 @@ struct LLPlaceHolderPanel : public LLPanel LLPlaceHolderPanel(const Params& p) : LLPanel(p) {} }; -static LLRegisterWidget<LLPlaceHolderPanel> r1("placeholder"); -static LLRegisterWidget<LLTabContainer> r2("tab_container"); +static LLDefaultWidgetRegistry::Register<LLPlaceHolderPanel> r1("placeholder"); +static LLDefaultWidgetRegistry::Register<LLTabContainer> r2("tab_container"); LLTabContainer::Params::Params() : tab_width("tab_width"), tab_position("tab_position"), tab_min_width("tab_min_width"), tab_max_width("tab_max_width"), - hide_tabs("hide_tabs", false) + hide_tabs("hide_tabs", false), + tab_top_image_unselected("tab_top_image_unselected"), + tab_top_image_selected("tab_top_image_selected"), + tab_bottom_image_unselected("tab_bottom_image_unselected"), + tab_bottom_image_selected("tab_bottom_image_selected"), + tab_left_image_unselected("tab_left_image_unselected"), + tab_left_image_selected("tab_left_image_selected") { name(std::string("tab_container")); mouse_opaque = false; @@ -134,7 +140,13 @@ LLTabContainer::LLTabContainer(const LLTabContainer::Params& p) mJumpNextArrowBtn(NULL), mRightTabBtnOffset(p.tab_padding_right), mTotalTabWidth(0), - mTabPosition(p.tab_position) + mTabPosition(p.tab_position), + mImageTopUnselected(p.tab_top_image_unselected), + mImageTopSelected(p.tab_top_image_selected), + mImageBottomUnselected(p.tab_bottom_image_unselected), + mImageBottomSelected(p.tab_bottom_image_selected), + mImageLeftUnselected(p.tab_left_image_unselected), + mImageLeftSelected(p.tab_left_image_selected) { static LLUICachedControl<S32> tabcntr_vert_tab_min_width ("UITabCntrVertTabMinWidth", 0); @@ -817,8 +829,8 @@ void LLTabContainer::addTabPanel(const TabPanelParams& panel) // Tab button LLRect btn_rect; // Note: btn_rect.mLeft is just a dummy. Will be updated in draw(). - std::string tab_img; - std::string tab_selected_img; + LLUIImage* tab_img = NULL; + LLUIImage* tab_selected_img = NULL; S32 tab_fudge = 1; // To make new tab art look better, nudge buttons up 1 pel if (mIsVertical) @@ -831,14 +843,14 @@ void LLTabContainer::addTabPanel(const TabPanelParams& panel) else if( getTabPosition() == LLTabContainer::TOP ) { btn_rect.setLeftTopAndSize( 0, getRect().getHeight() - getTopBorderHeight() + tab_fudge, button_width, tabcntr_tab_height ); - tab_img = "tab_top_blue.tga"; - tab_selected_img = "tab_top_selected_blue.tga"; + tab_img = mImageTopUnselected.get(); + tab_selected_img = mImageTopSelected.get(); } else { btn_rect.setOriginAndSize( 0, 0 + tab_fudge, button_width, tabcntr_tab_height ); - tab_img = "tab_bottom_blue.tga"; - tab_selected_img = "tab_bottom_selected_blue.tga"; + tab_img = mImageBottomUnselected.get(); + tab_selected_img = mImageBottomSelected.get(); } LLTextBox* textbox = NULL; @@ -869,8 +881,8 @@ void LLTabContainer::addTabPanel(const TabPanelParams& panel) p.click_callback.function(boost::bind(&LLTabContainer::onTabBtn, this, _2, child)); p.font(font); p.label(trimmed_label); - p.image_unselected.name("tab_left.tga"); - p.image_selected.name("tab_left_selected.tga"); + p.image_unselected(mImageLeftUnselected); + p.image_selected(mImageLeftSelected); p.scale_image(true); p.font_halign = LLFontGL::LEFT; p.tab_stop(false); @@ -895,8 +907,8 @@ void LLTabContainer::addTabPanel(const TabPanelParams& panel) p.visible(false); p.tool_tip(tooltip); p.scale_image(true); - p.image_unselected.name(tab_img); - p.image_selected.name(tab_selected_img); + p.image_unselected(tab_img); + p.image_selected(tab_selected_img); p.tab_stop(false); // Try to squeeze in a bit more text p.pad_left(4); diff --git a/indra/llui/lltabcontainer.h b/indra/llui/lltabcontainer.h index 7ed1a0f4bfca07e6dcb3e57cd7f035b9599d030a..ac8232bbb1b587e5533b3b0d4c0fc5c4f73a23b4 100644 --- a/indra/llui/lltabcontainer.h +++ b/indra/llui/lltabcontainer.h @@ -71,6 +71,13 @@ class LLTabContainer : public LLPanel Optional<bool> hide_tabs; Optional<S32> tab_padding_right; + Optional<LLUIImage*> tab_top_image_unselected, + tab_top_image_selected, + tab_bottom_image_unselected, + tab_bottom_image_selected, + tab_left_image_unselected, + tab_left_image_selected; + Params(); }; @@ -236,6 +243,13 @@ class LLTabContainer : public LLPanel S32 mTotalTabWidth; LLFrameTimer mDragAndDropDelayTimer; + + LLPointer<LLUIImage> mImageTopUnselected; + LLPointer<LLUIImage> mImageTopSelected; + LLPointer<LLUIImage> mImageBottomUnselected; + LLPointer<LLUIImage> mImageBottomSelected; + LLPointer<LLUIImage> mImageLeftUnselected; + LLPointer<LLUIImage> mImageLeftSelected; }; #endif // LL_TABCONTAINER_H diff --git a/indra/llui/lltextbox.cpp b/indra/llui/lltextbox.cpp index 95990bbfc270ada7bed0b2a55f762d677c830477..464e4be80972557733008464c581a88205a5a9d8 100644 --- a/indra/llui/lltextbox.cpp +++ b/indra/llui/lltextbox.cpp @@ -40,7 +40,7 @@ template LLTextBox* LLView::getChild<LLTextBox>( const std::string& name, BOOL recurse, BOOL create_if_missing ) const; -static LLRegisterWidget<LLTextBox> r("text"); +static LLDefaultWidgetRegistry::Register<LLTextBox> r("text"); LLTextBox::Params::Params() : text_color("text_color"), diff --git a/indra/llui/lltextbox.h b/indra/llui/lltextbox.h index aae538a2212f926a5c136e1571d07b6da136f4db..dca906decc8ec88279f45ccfba4f596d99da6811 100644 --- a/indra/llui/lltextbox.h +++ b/indra/llui/lltextbox.h @@ -60,7 +60,7 @@ class LLTextBox Optional<LLFontGL::ShadowType> font_shadow; - Deprecated drop_shadow_visible, + Ignored drop_shadow_visible, type, length; diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp index 44d98e75c8c072ab93734e3f7fe0f4f9d29e3eba..34bced064e874a3cb776f8c74d20fcd40420b66a 100644 --- a/indra/llui/lltexteditor.cpp +++ b/indra/llui/lltexteditor.cpp @@ -63,7 +63,7 @@ // // Globals // -static LLRegisterWidget<LLTextEditor> r("simple_text_editor"); +static LLDefaultWidgetRegistry::Register<LLTextEditor> r("simple_text_editor"); // // Constants diff --git a/indra/llui/lltexteditor.h b/indra/llui/lltexteditor.h index efedb30f4718d30b2e0231b3a98a40da3569efe7..f64353555e0d6010a26dcb7a17e3fcc0295eb0df 100644 --- a/indra/llui/lltexteditor.h +++ b/indra/llui/lltexteditor.h @@ -82,7 +82,7 @@ class LLTextEditor : public LLUICtrl, LLEditMenuHandler, protected LLPreeditor Optional<LLViewBorder::Params> border; - Deprecated type, + Ignored type, length, is_unicode; diff --git a/indra/llui/llui.cpp b/indra/llui/llui.cpp index 1cb6972370718e3ee6ac0fa5e709f9af9aedf175..1d3e5d7a15b924209e9a7ea4d58a92116a779335 100644 --- a/indra/llui/llui.cpp +++ b/indra/llui/llui.cpp @@ -50,6 +50,7 @@ // Project includes #include "llcontrol.h" #include "llui.h" +#include "lluicolortable.h" #include "llview.h" #include "lllineeditor.h" #include "llfloater.h" @@ -57,6 +58,10 @@ #include "llmenugl.h" #include "llwindow.h" +// for registration +#include "llsearcheditor.h" +#include "llflyoutbutton.h" + // for XUIParse #include "llquaternion.h" #include <boost/tokenizer.hpp> @@ -84,6 +89,10 @@ std::list<std::string> gUntranslated; /*static*/ std::vector<std::string> LLUI::sXUIPaths; +// register searcheditor here +static LLDefaultWidgetRegistry::Register<LLSearchEditor> register_search_editor("search_editor"); +static LLDefaultWidgetRegistry::Register<LLFlyoutButton> register_flyout_button("flyout_button"); + // // Functions @@ -1697,7 +1706,7 @@ void LLUI::getCursorPositionLocal(const LLView* viewp, S32 *x, S32 *y) // static std::string LLUI::getLanguage() { - std::string language = "en-us"; + std::string language = "en"; if (sSettingGroups["config"]) { language = sSettingGroups["config"]->getString("Language"); @@ -1711,7 +1720,7 @@ std::string LLUI::getLanguage() } if (language.empty() || language == "default") { - language = "en-us"; + language = "en"; } } return language; @@ -1744,7 +1753,7 @@ void LLUI::setupPaths() else // parsing failed { std::string slash = gDirUtilp->getDirDelimiter(); - std::string dir = "xui" + slash + "en-us"; + std::string dir = "xui" + slash + "en"; llwarns << "XUI::config file unable to open: " << filename << llendl; sXUIPaths.push_back(dir); } @@ -1771,7 +1780,7 @@ std::string LLUI::locateSkin(const std::string& filename) } if (!gDirUtilp->fileExists(found_file)) { - std::string local_skin = "xui" + slash + "en-us" + slash + filename; + std::string local_skin = "xui" + slash + "en" + slash + filename; found_file = gDirUtilp->findSkinnedFilename(local_skin); } if (!gDirUtilp->fileExists(found_file)) @@ -1858,8 +1867,11 @@ LLControlGroup& LLUI::getControlControlGroup (const std::string& controlname) for (settings_map_t::iterator itor = sSettingGroups.begin(); itor != sSettingGroups.end(); ++itor) { - if (sSettingGroups[(itor->first)]->controlExists(controlname)) - return *sSettingGroups[(itor->first)]; + if(itor->second!= NULL) + { + if (sSettingGroups[(itor->first)]->controlExists(controlname)) + return *sSettingGroups[(itor->first)]; + } } return *sSettingGroups["config"]; // default group @@ -1943,7 +1955,7 @@ namespace LLInitParam { if (control.isProvided()) { - return LLUI::getCachedColorFunctor(control); + return LLUIColorTable::instance().getColor(control); } else { diff --git a/indra/llui/llui.h b/indra/llui/llui.h index 71396e10d9c9e5028df0e10bbdc0b08b7194c092..dbd295d4e86012e7dd382d93c8fb5f28273a8081 100644 --- a/indra/llui/llui.h +++ b/indra/llui/llui.h @@ -183,7 +183,8 @@ class LLUI static void setupPaths(); static const std::vector<std::string>& getXUIPaths() { return sXUIPaths; } static std::string getSkinPath() { return sXUIPaths.front(); } - + static std::string getLocalizedSkinPath() { return sXUIPaths.back(); } //all files may not exist at the localized path + //helper functions (should probably move free standing rendering helper functions here) static LLView* getRootView() { return sRootView; } static void setRootView(LLView* view) { sRootView = view; } @@ -664,8 +665,8 @@ template <typename T> LLRegisterWith<LLDestroyClassList> LLDestroyClass<T>::sReg // useful parameter blocks struct TimeIntervalParam : public LLInitParam::Choice<TimeIntervalParam> { - Option<F32> seconds; - Option<S32> frames; + Alternative<F32> seconds; + Alternative<S32> frames; TimeIntervalParam() : seconds("seconds"), frames("frames") diff --git a/indra/llui/lluicolortable.cpp b/indra/llui/lluicolortable.cpp new file mode 100644 index 0000000000000000000000000000000000000000..27ba6cc8b4d582d3505c1b127fa098ed446046ca --- /dev/null +++ b/indra/llui/lluicolortable.cpp @@ -0,0 +1,155 @@ +/** + * @file lluicolortable.cpp + * @brief brief LLUIColorTable class implementation file + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + * Copyright (c) 2009, Linden Research, Inc. + * $/LicenseInfo$ + */ + +#include "linden_common.h" + +#include <queue> + +#include "lluicolortable.h" + +LLUIColorTable::ColorParams::ColorParams() +: value("value"), + reference("reference") +{ +} + +LLUIColorTable::ColorEntryParams::ColorEntryParams() +: name("name"), + color("") +{ +} + +LLUIColorTable::Params::Params() +: color_entries("color_entries") +{ +} + +void LLUIColorTable::init(const Params& p) +{ + // this map will contain all color references after the following loop + typedef std::map<std::string, std::string> string_string_map_t; + string_string_map_t unresolved_refs; + + mColors.clear(); + for(LLInitParam::ParamIterator<ColorEntryParams>::const_iterator it = p.color_entries().begin(); + it != p.color_entries().end(); + ++it) + { + ColorEntryParams color_entry = *it; + if(color_entry.color.value.isChosen()) + { + mColors.insert(string_color_map_t::value_type(color_entry.name, color_entry.color.value)); + } + else + { + unresolved_refs.insert(string_string_map_t::value_type(color_entry.name, color_entry.color.reference)); + } + } + + // maintain an in order queue of visited references for better debugging of cycles + typedef std::queue<std::string> string_queue_t; + string_queue_t ref_chain; + + // maintain a map of the previously visited references in the reference chain for detecting cycles + typedef std::map<std::string, string_string_map_t::iterator> string_color_ref_iter_map_t; + string_color_ref_iter_map_t visited_refs; + + // loop through the unresolved color references until there are none left + while(!unresolved_refs.empty()) + { + // we haven't visited any references yet + visited_refs.clear(); + + string_string_map_t::iterator it = unresolved_refs.begin(); + while(true) + { + if(it != unresolved_refs.end()) + { + // locate the current reference in the previously visited references... + string_color_ref_iter_map_t::iterator visited = visited_refs.lower_bound(it->first); + if(visited != visited_refs.end() + && !(visited_refs.key_comp()(it->first, visited->first))) + { + // ...if we find the current reference in the previously visited references + // we know that there is a cycle + std::string ending_ref = it->first; + std::string warning("The following colors form a cycle: "); + + // warn about the references in the chain and remove them from + // the unresolved references map because they cannot be resolved + for(string_color_ref_iter_map_t::iterator iter = visited_refs.begin(); + iter != visited_refs.end(); + ++iter) + { + if(!ref_chain.empty()) + { + warning += ref_chain.front() + "->"; + ref_chain.pop(); + } + unresolved_refs.erase(iter->second); + } + + llwarns << warning + ending_ref << llendl; + + break; + } + else + { + // ...continue along the reference chain + ref_chain.push(it->first); + visited_refs.insert(visited, string_color_ref_iter_map_t::value_type(it->first, it)); + } + } + else + { + // since this reference does not refer to another reference it must refer to an + // actual color, lets find it... + string_color_map_t::iterator color_value = mColors.find(it->second); + + if(color_value != mColors.end()) + { + // ...we found the color, and we now add every reference in the reference chain + // to the color map + for(string_color_ref_iter_map_t::iterator iter = visited_refs.begin(); + iter != visited_refs.end(); + ++iter) + { + mColors.insert(string_color_map_t::value_type(iter->first, color_value->second)); + unresolved_refs.erase(iter->second); + } + + break; + } + else + { + // ... we did not find the color which imples that the current reference + // references a non-existant color + for(string_color_ref_iter_map_t::iterator iter = visited_refs.begin(); + iter != visited_refs.end(); + ++iter) + { + llwarns << iter->first << " references a non-existent color" << llendl; + unresolved_refs.erase(iter->second); + } + + break; + } + } + + // find the next color reference in the reference chain + it = unresolved_refs.find(it->second); + } + } +} + +const LLColor4& LLUIColorTable::getColor(const std::string& name) const +{ + string_color_map_t::const_iterator iter = mColors.find(name); + return (iter != mColors.end() ? iter->second : LLColor4::magenta); +} diff --git a/indra/llui/lluicolortable.h b/indra/llui/lluicolortable.h new file mode 100644 index 0000000000000000000000000000000000000000..dcbb1ee5cb6e45bd23912452ca71b929c6fff60e --- /dev/null +++ b/indra/llui/lluicolortable.h @@ -0,0 +1,58 @@ +/** + * @file lluicolortable.h + * @brief brief LLUIColorTable class header file + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + * Copyright (c) 2009, Linden Research, Inc. + * $/LicenseInfo$ + */ + +#ifndef LL_LLUICOLORTABLE_H_ +#define LL_LLUICOLORTABLE_H_ + +#include <map> + +#include "llinitparam.h" +#include "llsingleton.h" + +#include "v4color.h" + +class LLUIColorTable : public LLSingleton<LLUIColorTable> +{ +public: + struct ColorParams : LLInitParam::Choice<ColorParams> + { + Alternative<LLColor4> value; + Alternative<std::string> reference; + + ColorParams(); + }; + + struct ColorEntryParams : LLInitParam::Block<ColorEntryParams> + { + Mandatory<std::string> name; + Mandatory<ColorParams> color; + + ColorEntryParams(); + }; + + struct Params : LLInitParam::Block<Params> + { + Multiple<ColorEntryParams> color_entries; + + Params(); + }; + + // define colors by passing in a param block that can be generated via XUI file or manually + void init(const Params& p); + + // color lookup + const LLColor4& getColor(const std::string& name) const; + +private: + // consider using sorted vector + typedef std::map<std::string, LLColor4> string_color_map_t; + string_color_map_t mColors; +}; + +#endif // LL_LLUICOLORTABLE_H diff --git a/indra/llui/lluictrl.cpp b/indra/llui/lluictrl.cpp index 99811809a8039c4e210312c78052e3aa5c4077c2..7b378fd9c7fa71b75d843cb38830e77b985ae2ed 100644 --- a/indra/llui/lluictrl.cpp +++ b/indra/llui/lluictrl.cpp @@ -38,7 +38,7 @@ #include "llpanel.h" #include "lluictrlfactory.h" -static LLRegisterWidget<LLUICtrl> r("ui_ctrl"); +static LLDefaultWidgetRegistry::Register<LLUICtrl> r("ui_ctrl"); LLUICtrl::Params::Params() : tab_stop("tab_stop", true), @@ -47,8 +47,8 @@ LLUICtrl::Params::Params() init_callback("init_callback"), commit_callback("commit_callback"), validate_callback("validate_callback"), - control_name("control_name"), - enabled_control("enabled_control") + rightclick_callback("rightclick_callback"), + control_name("control_name") { addSynonym(initial_value, "initial_val"); // this is the canonical name for text contents of an xml node @@ -111,13 +111,21 @@ void LLFocusableElement::setFocus(BOOL b) { } +//static +const LLUICtrl::Params& LLUICtrl::getDefaultParams() +{ + return LLUICtrlFactory::getDefaultParams<LLUICtrl::Params>(); +} + + LLUICtrl::LLUICtrl(const LLUICtrl::Params& p, const LLViewModelPtr& viewmodel) : LLView(p), mTentative(FALSE), mIsChrome(FALSE), mViewModel(viewmodel), mControlVariable(NULL), - mEnabledControlVariable(NULL) + mEnabledControlVariable(NULL), + mDisabledControlVariable(NULL) { mUICtrlHandle.bind(this); } @@ -127,12 +135,37 @@ void LLUICtrl::initFromParams(const Params& p) LLView::initFromParams(p); setControlName(p.control_name); - if (p.enabled_control.isProvided()) + if(p.enabled_controls.isProvided()) { - LLControlVariable* control = findControl(p.enabled_control); - if (control) - setEnabledControlVariable(control); + if (p.enabled_controls.enabled.isChosen()) + { + LLControlVariable* control = findControl(p.enabled_controls.enabled); + if (control) + setEnabledControlVariable(control); + } + else if(p.enabled_controls.disabled.isChosen()) + { + LLControlVariable* control = findControl(p.enabled_controls.disabled); + if (control) + setDisabledControlVariable(control); + } } + if(p.controls_visibility.isProvided()) + { + if (p.controls_visibility.visible.isChosen()) + { + LLControlVariable* control = findControl(p.controls_visibility.visible); + if (control) + setMakeVisibleControlVariable(control); + } + else if (p.controls_visibility.invisible.isChosen()) + { + LLControlVariable* control = findControl(p.controls_visibility.invisible); + if (control) + setMakeInvisibleControlVariable(control); + } + } + setTabStop(p.tab_stop); setFocusLostCallback(p.focus_lost_callback()); @@ -163,6 +196,10 @@ void LLUICtrl::initFromParams(const Params& p) } } } + + if(p.rightclick_callback.isProvided()) + initCommitCallback(p.rightclick_callback, mRightClickSignal); + } @@ -326,6 +363,50 @@ void LLUICtrl::setEnabledControlVariable(LLControlVariable* control) } } +void LLUICtrl::setDisabledControlVariable(LLControlVariable* control) +{ + if (mDisabledControlVariable) + { + mDisabledControlConnection.disconnect(); // disconnect current signal + mDisabledControlVariable = NULL; + } + if (control) + { + mDisabledControlVariable = control; + mDisabledControlConnection = mDisabledControlVariable->getSignal()->connect(boost::bind(&controlListener, _2, getUICtrlHandle(), std::string("disabled"))); + setEnabled(!(mDisabledControlVariable->getValue().asBoolean())); + } +} + +void LLUICtrl::setMakeVisibleControlVariable(LLControlVariable* control) +{ + if (mMakeVisibleControlVariable) + { + mMakeVisibleControlConnection.disconnect(); // disconnect current signal + mMakeVisibleControlVariable = NULL; + } + if (control) + { + mMakeVisibleControlVariable = control; + mMakeVisibleControlConnection = mMakeVisibleControlVariable->getSignal()->connect(boost::bind(&controlListener, _2, getUICtrlHandle(), std::string("visible"))); + setVisible(mMakeVisibleControlVariable->getValue().asBoolean()); + } +} + +void LLUICtrl::setMakeInvisibleControlVariable(LLControlVariable* control) +{ + if (mMakeInvisibleControlVariable) + { + mMakeInvisibleControlConnection.disconnect(); // disconnect current signal + mMakeInvisibleControlVariable = NULL; + } + if (control) + { + mMakeInvisibleControlVariable = control; + mMakeInvisibleControlConnection = mMakeInvisibleControlVariable->getSignal()->connect(boost::bind(&controlListener, _2, getUICtrlHandle(), std::string("invisible"))); + setVisible(!(mMakeInvisibleControlVariable->getValue().asBoolean())); + } +} // static bool LLUICtrl::controlListener(const LLSD& newvalue, LLHandle<LLUICtrl> handle, std::string type) { @@ -342,11 +423,21 @@ bool LLUICtrl::controlListener(const LLSD& newvalue, LLHandle<LLUICtrl> handle, ctrl->setEnabled(newvalue.asBoolean()); return true; } + else if(type =="disabled") + { + ctrl->setEnabled(!newvalue.asBoolean()); + return true; + } else if (type == "visible") { ctrl->setVisible(newvalue.asBoolean()); return true; } + else if (type == "invisible") + { + ctrl->setVisible(!newvalue.asBoolean()); + return true; + } } return false; } diff --git a/indra/llui/lluictrl.h b/indra/llui/lluictrl.h index 6d310dca22faf474249347d6ceb3aa59edd4de7d..6dfbd9cf8beceded60f13f076ffcf3faa87ef242 100644 --- a/indra/llui/lluictrl.h +++ b/indra/llui/lluictrl.h @@ -87,7 +87,7 @@ class LLUICtrl struct CallbackParam : public LLInitParam::Block<CallbackParam> { - Deprecated name; + Ignored name; Optional<std::string> function_name; Optional<LLSD> parameter; @@ -114,6 +114,26 @@ class LLUICtrl Optional<enable_callback_t> function; }; + struct EnableControls : public LLInitParam::Choice<EnableControls> + { + Alternative<std::string> enabled; + Alternative<std::string> disabled; + + EnableControls() + : enabled("enabled_control"), + disabled("disabled_control") + {} + }; + struct ControlVisibility : public LLInitParam::Choice<ControlVisibility> + { + Alternative<std::string> visible; + Alternative<std::string> invisible; + + ControlVisibility() + : visible("make_visible_control"), + invisible("make_invisible_control") + {} + }; struct Params : public LLInitParam::Block<Params, LLView::Params> { Optional<std::string> label; @@ -124,10 +144,13 @@ class LLUICtrl commit_callback; Optional<EnableCallbackParam> validate_callback; + Optional<CommitCallbackParam> rightclick_callback; + Optional<focus_callback_t> focus_lost_callback; Optional<std::string> control_name; - Optional<std::string> enabled_control; + Optional<EnableControls> enabled_controls; + Optional<ControlVisibility> controls_visibility; Params(); }; @@ -137,7 +160,8 @@ class LLUICtrl void initFromParams(const Params& p); protected: friend class LLUICtrlFactory; - LLUICtrl(const Params& p = LLUICtrl::Params(), + static const Params& getDefaultParams(); + LLUICtrl(const Params& p = getDefaultParams(), const LLViewModelPtr& viewmodel=LLViewModelPtr(new LLViewModel)); void initCommitCallback(const CommitCallbackParam& cb, commit_signal_t& sig); @@ -176,6 +200,9 @@ class LLUICtrl LLControlVariable* getControlVariable() { return mControlVariable; } void setEnabledControlVariable(LLControlVariable* control); + void setDisabledControlVariable(LLControlVariable* control); + void setMakeVisibleControlVariable(LLControlVariable* control); + void setMakeInvisibleControlVariable(LLControlVariable* control); virtual void setValue(const LLSD& value); virtual LLSD getValue() const; @@ -244,8 +271,9 @@ class LLUICtrl static bool controlListener(const LLSD& newvalue, LLHandle<LLUICtrl> handle, std::string type); - commit_signal_t mCommitSignal; - enable_signal_t mValidateSignal; + commit_signal_t mCommitSignal; + enable_signal_t mValidateSignal; + commit_signal_t mRightClickSignal; LLViewModelPtr mViewModel; @@ -253,7 +281,12 @@ class LLUICtrl boost::signals2::connection mControlConnection; LLControlVariable* mEnabledControlVariable; boost::signals2::connection mEnabledControlConnection; - + LLControlVariable* mDisabledControlVariable; + boost::signals2::connection mDisabledControlConnection; + LLControlVariable* mMakeVisibleControlVariable; + boost::signals2::connection mMakeVisibleControlConnection; + LLControlVariable* mMakeInvisibleControlVariable; + boost::signals2::connection mMakeInvisibleControlConnection; private: BOOL mTabStop; diff --git a/indra/llui/lluictrlfactory.cpp b/indra/llui/lluictrlfactory.cpp index 1f487bdb7ecba7470eb8b79548f9cadae08ad0c7..24e4ad18e686a3f6526b46068d257b5c0cae6b9b 100644 --- a/indra/llui/lluictrlfactory.cpp +++ b/indra/llui/lluictrlfactory.cpp @@ -78,10 +78,14 @@ const S32 VPAD = 4; const S32 FLOATER_H_MARGIN = 15; const S32 MIN_WIDGET_HEIGHT = 10; +LLFastTimer::DeclareTimer FTM_WIDGET_CONSTRUCTION("Widget Construction"); +LLFastTimer::DeclareTimer FTM_INIT_FROM_PARAMS("Widget InitFromParams"); +LLFastTimer::DeclareTimer FTM_WIDGET_SETUP("Widget Setup"); + //----------------------------------------------------------------------------- // Register widgets that are purely data driven here so they get linked in #include "llstatview.h" -static LLRegisterWidget<LLStatView> register_stat_view("stat_view"); +static LLDefaultWidgetRegistry::Register<LLStatView> register_stat_view("stat_view"); //----------------------------------------------------------------------------- @@ -103,9 +107,7 @@ class LLUICtrlLocate : public LLUICtrl }; -//FIXME: this created an ambiguous lookup of template (locate.xml or pad.xml?) -static LLRegisterWidget<LLUICtrlLocate> r1("locate"); -static LLRegisterWidget<LLUICtrlLocate> r2("pad"); +static LLDefaultWidgetRegistry::Register<LLUICtrlLocate> r1("locate"); //----------------------------------------------------------------------------- // LLUICtrlFactory() @@ -132,22 +134,82 @@ void LLUICtrlFactory::loadWidgetTemplate(const std::string& widget_tag, LLInitPa } } +//static +void LLUICtrlFactory::createChildren(LLView* viewp, LLXMLNodePtr node, LLXMLNodePtr output_node) +{ + if (node.isNull()) return; + + for (LLXMLNodePtr child_node = node->getFirstChild(); child_node.notNull(); child_node = child_node->getNextSibling()) + { + LLXMLNodePtr outputChild; + if (output_node) + { + outputChild = output_node->createChild("", FALSE); + } + + if (!instance().createFromXML(child_node, viewp, LLStringUtil::null, outputChild, viewp->getChildRegistry())) + { + std::string child_name = std::string(child_node->getName()->mString); + llwarns << "Could not create widget named " << child_node->getName()->mString << llendl; + } + + if (outputChild && !outputChild->mChildren && outputChild->mAttributes.empty() && outputChild->getValue().empty()) + { + output_node->deleteChild(outputChild); + } + } + +} + +LLFastTimer::DeclareTimer FTM_XML_PARSE("XML Reading/Parsing"); //----------------------------------------------------------------------------- // getLayeredXMLNode() //----------------------------------------------------------------------------- bool LLUICtrlFactory::getLayeredXMLNode(const std::string &xui_filename, LLXMLNodePtr& root) { + LLFastTimer timer(FTM_XML_PARSE); return LLXMLNode::getLayeredXMLNode(xui_filename, root, LLUI::getXUIPaths()); } + +//----------------------------------------------------------------------------- +// getLocalizedXMLNode() +//----------------------------------------------------------------------------- +bool LLUICtrlFactory::getLocalizedXMLNode(const std::string &xui_filename, LLXMLNodePtr& root) +{ + LLFastTimer timer(FTM_XML_PARSE); + std::string full_filename = gDirUtilp->findSkinnedFilename(LLUI::getLocalizedSkinPath(), xui_filename); + if (!LLXMLNode::parseFile(full_filename, root, NULL)) + { + return false; + } + else + { + return true; + } +} + +static LLFastTimer::DeclareTimer BUILD_FLOATERS("Build Floaters"); + //----------------------------------------------------------------------------- // buildFloater() //----------------------------------------------------------------------------- void LLUICtrlFactory::buildFloater(LLFloater* floaterp, const std::string& filename, BOOL open_floater, LLXMLNodePtr output_node) { + LLFastTimer timer(BUILD_FLOATERS); LLXMLNodePtr root; - if (!LLUICtrlFactory::getLayeredXMLNode(filename, root)) + //if exporting, only load the language being exported, + //instead of layering localized version on top of english + if (output_node) + { + if (!LLUICtrlFactory::getLocalizedXMLNode(filename, root)) + { + llwarns << "Couldn't parse floater from: " << LLUI::getLocalizedSkinPath() + gDirUtilp->getDirDelimiter() + filename << llendl; + return; + } + } + else if (!LLUICtrlFactory::getLayeredXMLNode(filename, root)) { llwarns << "Couldn't parse floater from: " << LLUI::getSkinPath() + gDirUtilp->getDirDelimiter() + filename << llendl; return; @@ -167,8 +229,10 @@ void LLUICtrlFactory::buildFloater(LLFloater* floaterp, const std::string& filen { mFactoryStack.push_front(&floaterp->getFactoryMap()); } - - floaterp->getCommitCallbackRegistrar().pushScope(); // for local registry callbacks; define in constructor, referenced in XUI or postBuild + + // for local registry callbacks; define in constructor, referenced in XUI or postBuild + floaterp->getCommitCallbackRegistrar().pushScope(); + floaterp->getEnableCallbackRegistrar().pushScope(); floaterp->initFloaterXML(root, floaterp->getParent(), open_floater, output_node); @@ -178,6 +242,7 @@ void LLUICtrlFactory::buildFloater(LLFloater* floaterp, const std::string& filen } floaterp->getCommitCallbackRegistrar().popScope(); + floaterp->getEnableCallbackRegistrar().popScope(); if (!floaterp->getFactoryMap().empty()) { @@ -202,15 +267,28 @@ S32 LLUICtrlFactory::saveToXML(LLView* viewp, const std::string& filename) return 0; } +static LLFastTimer::DeclareTimer BUILD_PANELS("Build Panels"); + //----------------------------------------------------------------------------- // buildPanel() //----------------------------------------------------------------------------- BOOL LLUICtrlFactory::buildPanel(LLPanel* panelp, const std::string& filename, LLXMLNodePtr output_node) { + LLFastTimer timer(BUILD_PANELS); BOOL didPost = FALSE; LLXMLNodePtr root; - if (!LLUICtrlFactory::getLayeredXMLNode(filename, root)) + //if exporting, only load the language being exported, + //instead of layering localized version on top of english + if (output_node) + { + if (!LLUICtrlFactory::getLocalizedXMLNode(filename, root)) + { + llwarns << "Couldn't parse panel from: " << LLUI::getLocalizedSkinPath() + gDirUtilp->getDirDelimiter() + filename << llendl; + return didPost; + } + } + else if (!LLUICtrlFactory::getLayeredXMLNode(filename, root)) { llwarns << "Couldn't parse panel from: " << LLUI::getSkinPath() + gDirUtilp->getDirDelimiter() + filename << llendl; return didPost; @@ -232,7 +310,14 @@ BOOL LLUICtrlFactory::buildPanel(LLPanel* panelp, const std::string& filename, L mFactoryStack.push_front(&panelp->getFactoryMap()); } + // for local registry callbacks; define in constructor, referenced in XUI or postBuild + panelp->getCommitCallbackRegistrar().pushScope(); + panelp->getEnableCallbackRegistrar().pushScope(); + didPost = panelp->initPanelXML(root, NULL, output_node); + + panelp->getCommitCallbackRegistrar().popScope(); + panelp->getEnableCallbackRegistrar().popScope(); if (LLUI::sShowXUINames) { @@ -251,13 +336,15 @@ BOOL LLUICtrlFactory::buildPanel(LLPanel* panelp, const std::string& filename, L //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- -LLView *LLUICtrlFactory::createFromXML(LLXMLNodePtr node, LLView* parent, const std::string& filename, LLXMLNodePtr output_node) +LLFastTimer::DeclareTimer FTM_CREATE_FROM_XML("Create child widget"); + +LLView *LLUICtrlFactory::createFromXML(LLXMLNodePtr node, LLView* parent, const std::string& filename, LLXMLNodePtr output_node, const widget_registry_t& registry) { + LLFastTimer timer(FTM_CREATE_FROM_XML); std::string ctrl_type = node->getName()->mString; LLStringUtil::toLower(ctrl_type); - LLWidgetCreatorFunc* funcp = LLWidgetCreatorRegistry::getInstance()->getValue(ctrl_type); - + const LLWidgetCreatorFunc* funcp = registry.getValue(ctrl_type); if (funcp == NULL) { return NULL; @@ -267,7 +354,8 @@ LLView *LLUICtrlFactory::createFromXML(LLXMLNodePtr node, LLView* parent, const { if (mDummyPanel == NULL) { - mDummyPanel = new LLPanel(); + LLPanel::Params p; + mDummyPanel = create<LLPanel>(p); } parent = mDummyPanel; } @@ -299,7 +387,8 @@ LLPanel* LLUICtrlFactory::createFactoryPanel(const std::string& name) return ret; } } - return new LLPanel(); + LLPanel::Params panel_p; + return create<LLPanel>(panel_p); } //----------------------------------------------------------------------------- @@ -359,12 +448,18 @@ void LLUICtrlFactory::popFactoryFunctions() } } +const widget_registry_t& LLUICtrlFactory::getWidgetRegistry(LLView* viewp) +{ + return viewp->getChildRegistry(); +} + // // LLXUIParser // LLXUIParser::LLXUIParser() -: mLastWriteGeneration(-1) +: mLastWriteGeneration(-1), + mCurReadDepth(0) { registerParserFuncs<bool>(boost::bind(&LLXUIParser::readBoolValue, this, _1), boost::bind(&LLXUIParser::writeBoolValue, this, _1, _2)); @@ -396,9 +491,13 @@ LLXUIParser::LLXUIParser() boost::bind(&LLXUIParser::writeSDValue, this, _1, _2)); } +static LLFastTimer::DeclareTimer PARSE_XUI("XUI Parsing"); + void LLXUIParser::readXUI(LLXMLNodePtr node, LLInitParam::BaseBlock& block, bool silent) { + LLFastTimer timer(PARSE_XUI); mNameStack.clear(); + mCurReadDepth = 0; setParseSilently(silent); if (node.isNull()) @@ -421,9 +520,21 @@ void LLXUIParser::writeXUI(LLXMLNodePtr node, const LLInitParam::BaseBlock &bloc // go from a stack of names to a specific XML node LLXMLNodePtr LLXUIParser::getNode(const name_stack_t& stack) { - if (stack.empty() || mWriteRootNode.isNull()) return NULL; + name_stack_t name_stack; - std::string attribute_name = stack.front().first; + for (name_stack_t::const_iterator it = stack.begin(); + it != stack.end(); + ++it) + { + if (!it->first.empty()) + { + name_stack.push_back(*it); + } + } + + if (name_stack.empty() || mWriteRootNode.isNull()) return NULL; + + std::string attribute_name = name_stack.front().first; // heuristic to make font always attribute of parent node bool is_font = (attribute_name == "font"); @@ -444,43 +555,68 @@ LLXMLNodePtr LLXUIParser::getNode(const name_stack_t& stack) } } - for (name_stack_t::const_iterator it = ++stack.begin(); - it != stack.end(); + for (name_stack_t::const_iterator it = ++name_stack.begin(); + it != name_stack.end(); ++it) { attribute_name += "."; attribute_name += it->first; } + // *NOTE: <string> elements for translation need to have whitespace + // preserved like "initial_value" above, however, the <string> node + // becomes an attribute of the containing floater or panel. + // Because all <string> elements must have a "name" attribute, and + // "name" is parsed first, just put the value into the last written + // child. + if (attribute_name == "string.value") + { + // The caller of will shortly call writeStringValue(), which sets + // this node's type to string, but we don't want to export type="string". + // Set the default for this node to suppress the export. + static LLXMLNodePtr default_node; + if (default_node.isNull()) + { + default_node = new LLXMLNode(); + // Force the node to have a string type + default_node->setStringValue( std::string() ); + } + mLastWrittenChild->setDefault(default_node); + // mLastWrittenChild is the "string" node part of "string.value", + // so the caller will call writeStringValue() into that node, + // setting the node text contents. + return mLastWrittenChild; + } + LLXMLNodePtr attribute_node; const char* attribute_cstr = attribute_name.c_str(); - if (stack.size() != 1 + if (name_stack.size() != 1 && !is_font) { std::string child_node_name(mWriteRootNode->getName()->mString); child_node_name += "."; - child_node_name += stack.front().first; + child_node_name += name_stack.front().first; LLXMLNodePtr child_node; - if (mLastWriteGeneration == stack.front().second) + if (mLastWriteGeneration == name_stack.front().second) { child_node = mLastWrittenChild; } else { - mLastWriteGeneration = stack.front().second; + mLastWriteGeneration = name_stack.front().second; child_node = mWriteRootNode->createChild(child_node_name.c_str(), false); } mLastWrittenChild = child_node; - name_stack_t::const_iterator it = ++stack.begin(); + name_stack_t::const_iterator it = ++name_stack.begin(); std::string short_attribute_name(it->first); for (++it; - it != stack.end(); + it != name_stack.end(); ++it) { short_attribute_name += "."; @@ -526,7 +662,10 @@ bool LLXUIParser::readXUIImpl(LLXMLNodePtr nodep, const std::string& scope, LLIn { mCurReadNode = nodep; mNameStack.push_back(std::make_pair(std::string("value"), newParseGeneration())); - block.submitValue(mNameStack, *this); + // child nodes are not necessarily valid parameters (could be a child widget) + // so don't complain once we've recursed + bool silent = mCurReadDepth > 0; + block.submitValue(mNameStack, *this, silent); mNameStack.pop_back(); } @@ -539,6 +678,7 @@ bool LLXUIParser::readXUIImpl(LLXMLNodePtr nodep, const std::string& scope, LLIn // nested_param1 // nested_param2 // nested_param3 + mCurReadDepth++; for(LLXMLNodePtr childp = nodep->getFirstChild(); childp.notNull();) { std::string child_name(childp->getName()->mString); @@ -550,13 +690,6 @@ bool LLXUIParser::readXUIImpl(LLXMLNodePtr nodep, const std::string& scope, LLIn // since there is no widget named "rect" if (child_name.find(".") == std::string::npos) { - // skip over children with registered names - if (LLWidgetCreatorRegistry::instance().exists(child_name)) - { - childp = childp->getNextSibling(); - continue; - } - mNameStack.push_back(std::make_pair(child_name, newParseGeneration())); num_tokens_pushed++; } @@ -611,6 +744,7 @@ bool LLXUIParser::readXUIImpl(LLXMLNodePtr nodep, const std::string& scope, LLIn mNameStack.pop_back(); } } + mCurReadDepth--; return values_parsed; } @@ -637,7 +771,9 @@ bool LLXUIParser::readAttributes(LLXMLNodePtr nodep, LLInitParam::BaseBlock& blo num_tokens_pushed++; } - any_parsed |= block.submitValue(mNameStack, *this); + // child nodes are not necessarily valid attributes, so don't complain once we've recursed + bool silent = mCurReadDepth > 0; + any_parsed |= block.submitValue(mNameStack, *this, silent); while(num_tokens_pushed-- > 0) { @@ -872,6 +1008,9 @@ bool LLXUIParser::writeUIColorValue(const void* val_ptr, const name_stack_t& sta if (node.notNull()) { LLUIColor color = *((LLUIColor*)val_ptr); + //RN: don't write out the color that is represented by a function + // rely on param block exporting to get the reference to the color settings + if (color.isUsingFunction()) return false; node->setFloatValue(4, color.get().mV); return true; } diff --git a/indra/llui/lluictrlfactory.h b/indra/llui/lluictrlfactory.h index 5b04557368bc7aac836f05f3279a257c1faf8f54..b9c61b1fed4c5b4d0c1c2684587b751e07bada74 100644 --- a/indra/llui/lluictrlfactory.h +++ b/indra/llui/lluictrlfactory.h @@ -36,6 +36,7 @@ #include "llcallbackmap.h" #include "llinitparam.h" #include "llxmlnode.h" +#include "llfasttimer.h" #include <boost/function.hpp> #include <iosfwd> @@ -109,18 +110,37 @@ LOG_CLASS(LLXUIParser); LLXMLNodePtr mWriteRootNode; S32 mLastWriteGeneration; LLXMLNodePtr mLastWrittenChild; + S32 mCurReadDepth; }; // global static instance for registering all widget types typedef boost::function<LLView* (LLXMLNodePtr node, LLView *parent, LLXMLNodePtr output_node)> LLWidgetCreatorFunc; -class LLWidgetCreatorRegistry : public LLRegistrySingleton<std::string, LLWidgetCreatorFunc, LLWidgetCreatorRegistry> +typedef LLRegistry<std::string, LLWidgetCreatorFunc> widget_registry_t; + +template <typename DERIVED_TYPE> +class LLWidgetRegistry : public LLRegistrySingleton<std::string, LLWidgetCreatorFunc, DERIVED_TYPE> { +public: + typedef LLRegistrySingleton<std::string, LLWidgetCreatorFunc, DERIVED_TYPE> super_t; + // local static instance for registering a particular widget + template<typename T, typename PARAM_BLOCK = typename T::Params> + class Register : public super_t::StaticRegistrar + { + public: + // register with either the provided builder, or the generic templated builder + Register(const char* tag, LLWidgetCreatorFunc func = NULL); + }; + protected: - LLWidgetCreatorRegistry() {} - -private: - friend class LLSingleton<LLWidgetCreatorRegistry>; + LLWidgetRegistry() {} +}; + +class LLDefaultWidgetRegistry : public LLWidgetRegistry<LLDefaultWidgetRegistry> +{ +protected: + LLDefaultWidgetRegistry() {} + friend class LLSingleton<LLDefaultWidgetRegistry>; }; struct LLCompareTypeID @@ -134,19 +154,19 @@ struct LLCompareTypeID class LLWidgetTemplateRegistry : public LLRegistrySingleton<const std::type_info*, std::string, LLWidgetTemplateRegistry, LLCompareTypeID> -{ +{}; -}; +// function used to create new default widgets via LLView::getChild<T> +typedef LLView* (*dummy_widget_creator_func_t)(const std::string&); -// local static instance for registering a particular widget -template<typename T, typename PARAM_BLOCK = typename T::Params> -class LLRegisterWidget -: public LLWidgetCreatorRegistry::StaticRegistrar -{ -public: - // register with either the provided builder, or the generic templated builder - LLRegisterWidget(const char* tag, LLWidgetCreatorFunc func = NULL); -}; +// used to register factory functions for default widget instances +class LLDummyWidgetRegistry +: public LLRegistrySingleton<const std::type_info*, dummy_widget_creator_func_t, LLDummyWidgetRegistry, LLCompareTypeID> +{}; + +extern LLFastTimer::DeclareTimer FTM_WIDGET_SETUP; +extern LLFastTimer::DeclareTimer FTM_WIDGET_CONSTRUCTION; +extern LLFastTimer::DeclareTimer FTM_INIT_FROM_PARAMS; class LLUICtrlFactory : public LLSingleton<LLUICtrlFactory> { @@ -232,10 +252,12 @@ class LLUICtrlFactory : public LLSingleton<LLUICtrlFactory> return widget; } - LLView* createFromXML(LLXMLNodePtr node, LLView* parent, const std::string& filename = LLStringUtil::null, LLXMLNodePtr output_node = NULL); + LLView* createFromXML(LLXMLNodePtr node, LLView* parent, const std::string& filename, LLXMLNodePtr output_node, const widget_registry_t& ); + static const widget_registry_t& getWidgetRegistry(LLView*); + template<typename T> - static T* createFromFile(const std::string &filename, LLView *parent) + static T* createFromFile(const std::string &filename, LLView *parent, LLXMLNodePtr output_node = NULL) { //#pragma message("Generating LLUICtrlFactory::createFromFile") T* widget = NULL; @@ -245,35 +267,50 @@ class LLUICtrlFactory : public LLSingleton<LLUICtrlFactory> { LLXMLNodePtr root_node; - if (LLUICtrlFactory::getLayeredXMLNode(filename, root_node)) - { - LLView* view = getInstance()->createFromXML(root_node, parent, filename); - if (view) - { - widget = dynamic_cast<T*>(view); - // not of right type, so delete it - if (!widget) - { - delete view; - view = NULL; - } - + //if exporting, only load the language being exported, + //instead of layering localized version on top of english + if (output_node) + { + if (!LLUICtrlFactory::getLocalizedXMLNode(filename, root_node)) + { + llwarns << "Couldn't parse XUI file: " << filename << llendl; + goto fail; } } - else + else if (!LLUICtrlFactory::getLayeredXMLNode(filename, root_node)) { llwarns << "Couldn't parse XUI file: " << skinned_filename << llendl; + goto fail; + } + + LLView* view = getInstance()->createFromXML(root_node, parent, filename, output_node, getWidgetRegistry(parent)); + if (view) + { + widget = dynamic_cast<T*>(view); + // not of right type, so delete it + if (!widget) + { + delete view; + view = NULL; + } + } } +fail: getInstance()->mFileNames.pop_back(); - return widget; } + template<class T> + static T* getDefaultWidget(const std::string& name) + { + dummy_widget_creator_func_t* dummy_func = LLDummyWidgetRegistry::instance().getValue(&typeid(T)); + return dynamic_cast<T*>((*dummy_func)(name)); + } + template <class T> - static T* createDummyWidget(const std::string& name) + static LLView* createDefaultWidget(const std::string& name) { - //#pragma message("Generating LLUICtrlFactory::createDummyWidget") typename T::Params params; params.name(name); @@ -283,6 +320,8 @@ class LLUICtrlFactory : public LLSingleton<LLUICtrlFactory> template<typename T, typename PARAM_BLOCK> static T* defaultBuilder(LLXMLNodePtr node, LLView *parent, LLXMLNodePtr output_node) { + LLFastTimer timer(FTM_WIDGET_SETUP); + //#pragma message("Generating LLUICtrlFactory::defaultBuilder") PARAM_BLOCK params(getDefaultParams<PARAM_BLOCK>()); @@ -307,8 +346,15 @@ class LLUICtrlFactory : public LLSingleton<LLUICtrlFactory> { llwarns << getInstance()->getCurFileName() << ": Invalid parameter block for " << typeid(T).name() << llendl; } - T* widget = new T(params); - widget->initFromParams(params); + T* widget; + { + LLFastTimer timer(FTM_WIDGET_CONSTRUCTION); + widget = new T(params); + } + { + LLFastTimer timer(FTM_INIT_FROM_PARAMS); + widget->initFromParams(params); + } if (parent) { @@ -316,7 +362,7 @@ class LLUICtrlFactory : public LLSingleton<LLUICtrlFactory> setCtrlParent(widget, parent, tab_group); } - widget->addChildren(node, output_node); + createChildren(widget, node, output_node); if (!widget->postBuild()) { @@ -327,7 +373,11 @@ class LLUICtrlFactory : public LLSingleton<LLUICtrlFactory> return widget; } + static void createChildren(LLView* viewp, LLXMLNodePtr node, LLXMLNodePtr output_node = NULL); + static bool getLayeredXMLNode(const std::string &filename, LLXMLNodePtr& root); + + static bool getLocalizedXMLNode(const std::string &xui_filename, LLXMLNodePtr& root); static void loadWidgetTemplate(const std::string& widget_tag, LLInitParam::BaseBlock& block); @@ -346,12 +396,68 @@ class LLUICtrlFactory : public LLSingleton<LLUICtrlFactory> }; // this is here to make gcc happy with reference to LLUICtrlFactory -template<typename T, typename PARAM_BLOCK> -LLRegisterWidget<T, PARAM_BLOCK>::LLRegisterWidget(const char* tag, LLWidgetCreatorFunc func) -: LLWidgetCreatorRegistry::StaticRegistrar(tag, func.empty() ? (LLWidgetCreatorFunc)&LLUICtrlFactory::defaultBuilder<T, PARAM_BLOCK> : func) +template<typename DERIVED> +template<typename T, typename PARAM_BLOCK> +LLWidgetRegistry<DERIVED>::Register<T, PARAM_BLOCK>::Register(const char* tag, LLWidgetCreatorFunc func) +: LLWidgetRegistry<DERIVED>::StaticRegistrar(tag, func.empty() ? (LLWidgetCreatorFunc)&LLUICtrlFactory::defaultBuilder<T, PARAM_BLOCK> : func) { - //FIXME: inventory_panel will register itself with LLPanel::Params but it does have its own params...:( + // associate parameter block type with template .xml file LLWidgetTemplateRegistry::instance().defaultRegistrar().add(&typeid(PARAM_BLOCK), tag); + // associate widget type with factory function + LLDummyWidgetRegistry::instance().defaultRegistrar().add(&typeid(T), &LLUICtrlFactory::createDefaultWidget<T>); +} + + +typedef boost::function<LLPanel* (void)> LLPannelClassCreatorFunc; + +// local static instance for registering a particular panel class + +class LLRegisterPanelClass +: public LLSingleton< LLRegisterPanelClass > +{ +public: + // reigister with either the provided builder, or the generic templated builder + void addPanelClass(const std::string& tag,LLPannelClassCreatorFunc func) + { + mPannelClassesNames[tag] = func; + } + + LLPanel* createPanelClass(const std::string& tag) + { + param_name_map_t::iterator iT = mPannelClassesNames.find(tag); + if(iT == mPannelClassesNames.end()) + return 0; + return iT->second(); + } + template<typename T> + static T* defaultPanelClassBuilder() + { + T* pT = new T(); + return pT; + } + +private: + typedef std::map< std::string, LLPannelClassCreatorFunc> param_name_map_t; + + param_name_map_t mPannelClassesNames; +}; + + +// local static instance for registering a particular panel class +template<typename T> +class LLRegisterPanelClassWrapper +: public LLRegisterPanelClass +{ +public: + // reigister with either the provided builder, or the generic templated builder + LLRegisterPanelClassWrapper(const std::string& tag); +}; + + +template<typename T> +LLRegisterPanelClassWrapper<T>::LLRegisterPanelClassWrapper(const std::string& tag) +{ + LLRegisterPanelClass::instance().addPanelClass(tag,&LLRegisterPanelClass::defaultPanelClassBuilder<T>); } diff --git a/indra/llui/lluiimage.cpp b/indra/llui/lluiimage.cpp index 0ed22837429a8bdd9dd014beed662628ae6c7d42..8e0de0cb0c09522a7c3fc98cdc116e017d0cebc0 100644 --- a/indra/llui/lluiimage.cpp +++ b/indra/llui/lluiimage.cpp @@ -49,6 +49,10 @@ LLUIImage::LLUIImage(const std::string& name, LLPointer<LLImageGL> image) : { } +LLUIImage::~LLUIImage() +{ +} + void LLUIImage::setClipRegion(const LLRectf& region) { mClipRegion = region; @@ -147,12 +151,16 @@ namespace LLInitParam return imagep; } + template<> bool ParamCompare<LLUIImage*>::equals( LLUIImage* const &a, LLUIImage* const &b) { // force all LLUIImages for XML UI export to be "non-default" - return false; + if (!a && !b) + return false; + else + return (a == b); } } diff --git a/indra/llui/lluiimage.h b/indra/llui/lluiimage.h index ae43b5017231b41ff5f5626e00138723014dc90d..e35026cd3d77b544b5c017b3a8419b4f43da6699 100644 --- a/indra/llui/lluiimage.h +++ b/indra/llui/lluiimage.h @@ -33,7 +33,7 @@ #ifndef LL_LLUIIMAGE_H #define LL_LLUIIMAGE_H -#include "llgl.h" +//#include "llgl.h" #include "llimagegl.h" #include "llrefcount.h" #include "llrect.h" @@ -46,6 +46,7 @@ class LLUIImage : public LLRefCount { public: LLUIImage(const std::string& name, LLPointer<LLImageGL> image); + virtual ~LLUIImage(); void setClipRegion(const LLRectf& region); void setScaleRegion(const LLRectf& region); @@ -67,8 +68,8 @@ class LLUIImage : public LLRefCount const std::string& getName() const { return mName; } - S32 getWidth() const; - S32 getHeight() const; + virtual S32 getWidth() const; + virtual S32 getHeight() const; // returns dimensions of underlying textures, which might not be equal to ui image portion S32 getTextureWidth() const; diff --git a/indra/llui/lluistring.cpp b/indra/llui/lluistring.cpp index ce73990d27eabedd78526249c8b241975076ace2..7ce0fd7a88d1a75344ce0b29ba47ffd2884109d3 100644 --- a/indra/llui/lluistring.cpp +++ b/indra/llui/lluistring.cpp @@ -112,6 +112,13 @@ void LLUIString::clear() void LLUIString::format() { + // optimize for empty strings (don't attempt string replacement) + if (mOrig.empty()) + { + mResult.clear(); + mWResult.clear(); + return; + } mResult = mOrig; // get the defailt args + local args diff --git a/indra/llui/llview.cpp b/indra/llui/llview.cpp index 0a28075ed6b511b99917bf5b9924569beb52db51..d225ad276797e640193edcd67315a970ebce691e 100644 --- a/indra/llui/llview.cpp +++ b/indra/llui/llview.cpp @@ -56,8 +56,6 @@ #include "lltexteditor.h" #include "lltextbox.h" -using namespace LLOldEvents; - BOOL LLView::sDebugRects = FALSE; BOOL LLView::sDebugKeys = FALSE; S32 LLView::sDepth = 0; @@ -95,9 +93,10 @@ LLView::Params::Params() layout("layout"), rect("rect"), bottom_delta("bottom_delta", S32_MAX), + top_pad("top_pad"), + top_delta("top_delta", S32_MAX), + left_pad("left_pad"), left_delta("left_delta", S32_MAX), - top_delta("top_delta"), - right_delta("right_delta"), center_horiz("center_horiz", false), center_vert("center_vert", false), serializable("", false), @@ -124,7 +123,8 @@ LLView::LLView(const LLView::Params& p) mUseBoundingRect(p.use_bounding_rect), mDefaultTabGroup(p.default_tab_group), mLastTabGroup(0), - mToolTipMsg((LLStringExplicit)p.tool_tip()) + mToolTipMsg((LLStringExplicit)p.tool_tip()), + mDefaultWidgets(NULL) { // create rect first, as this will supply initial follows flags setShape(p.rect); @@ -157,8 +157,13 @@ LLView::~LLView() mParentView->removeChild(this); } - std::for_each(mDummyWidgets.begin(), mDummyWidgets.end(), - DeletePairedPointer()); + if (mDefaultWidgets) + { + std::for_each(mDefaultWidgets->begin(), mDefaultWidgets->end(), + DeletePairedPointer()); + delete mDefaultWidgets; + mDefaultWidgets = NULL; + } } // virtual @@ -269,34 +274,6 @@ void LLView::moveChildToBackOfTabGroup(LLUICtrl* child) } } -void LLView::addChildren(LLXMLNodePtr node, LLXMLNodePtr output_node) -{ - if (node.isNull()) return; - - for (LLXMLNodePtr child_node = node->getFirstChild(); child_node.notNull(); child_node = child_node->getNextSibling()) - { - LLXMLNodePtr outputChild; - if (output_node) - { - outputChild = output_node->createChild("", FALSE); - } - - if (!LLUICtrlFactory::getInstance()->createFromXML(child_node, this, LLStringUtil::null, outputChild)) - { - std::string child_name = std::string(child_node->getName()->mString); - if (child_name.find(".") == std::string::npos) - { - llwarns << "Could not create widget named " << child_node->getName()->mString << llendl; - } - } - - if (outputChild && !outputChild->mChildren && outputChild->mAttributes.empty() && outputChild->getValue().empty()) - { - output_node->deleteChild(outputChild); - } - } -} - // virtual bool LLView::addChild(LLView* child, S32 tab_group) { @@ -1733,10 +1710,10 @@ LLView* LLView::getChildView(const std::string& name, BOOL recurse, BOOL create_ if (create_if_missing) { - LLView* view = getDummyWidget<LLView>(name); + LLView* view = getDefaultWidget<LLView>(name); if (!view) { - view = LLUICtrlFactory::createDummyWidget<LLView>(name); + view = LLUICtrlFactory::createDefaultWidget<LLView>(name); } return view; } @@ -2305,16 +2282,34 @@ LLView* LLView::findSnapEdge(S32& new_edge_val, const LLCoordGL& mouse_dir, ESna LLControlVariable *LLView::findControl(const std::string& name) { - LLControlVariable* control; - control = LLUI::sSettingGroups["color"]->getControl(name); - if (control) + // parse the name to locate which group it belongs to + std::size_t key_pos= name.find("."); + if(key_pos!= std::string::npos ) { - return control; + std::string control_group_key = name.substr(0, key_pos); + LLControlVariable* control; + // check if it's in the control group that name indicated + if(LLUI::sSettingGroups[control_group_key]) + { + control = LLUI::sSettingGroups[control_group_key]->getControl(name); + if (control) + { + return control; + } + } } - return LLUI::sSettingGroups["config"]->getControl(name); + LLControlGroup& control_group = LLUI::getControlControlGroup(name); + return control_group.getControl(name); +} + +const widget_registry_t& LLView::getChildRegistry() const +{ + static widget_registry_t empty_registry; + return empty_registry; } + const S32 FLOATER_H_MARGIN = 15; const S32 MIN_WIDGET_HEIGHT = 10; const S32 VPAD = 4; @@ -2395,17 +2390,38 @@ void LLView::parseFollowsFlags(const LLView::Params& params) // static -LLFontGL::HAlign LLView::selectFontHAlign(LLXMLNodePtr node) +//LLFontGL::HAlign LLView::selectFontHAlign(LLXMLNodePtr node) +//{ +// LLFontGL::HAlign gl_hfont_align = LLFontGL::LEFT; +// +// if (node->hasAttribute("halign")) +// { +// std::string horizontal_align_name; +// node->getAttributeString("halign", horizontal_align_name); +// gl_hfont_align = LLFontGL::hAlignFromName(horizontal_align_name); +// } +// return gl_hfont_align; +//} + +// Return the rectangle of the last-constructed child, +// if present and a first-class widget (eg, not a close box or drag handle) +// Returns true if found +static bool get_last_child_rect(LLView* parent, LLRect *rect) { - LLFontGL::HAlign gl_hfont_align = LLFontGL::LEFT; + if (!parent) return false; - if (node->hasAttribute("halign")) + LLView::child_list_t::const_iterator itor = + parent->getChildList()->begin(); + for (;itor != parent->getChildList()->end(); ++itor) { - std::string horizontal_align_name; - node->getAttributeString("halign", horizontal_align_name); - gl_hfont_align = LLFontGL::hAlignFromName(horizontal_align_name); + LLView *last_view = (*itor); + if (last_view->getSaveToXML()) + { + *rect = last_view->getRect(); + return true; + } } - return gl_hfont_align; + return false; } //static @@ -2416,10 +2432,12 @@ void LLView::setupParams(LLView::Params& p, LLView* parent) p.serializable(true); - // *NOTE: Do not inherit layout from parent until we re-export - // all nodes and make topleft the default. JC - //if (p.layout().empty() && parent) - // p.layout = parent->getLayout(); + // *NOTE: This will confuse export of floater/panel coordinates unless + // the default is also "topleft". JC + if (p.layout().empty() && parent) + { + p.layout = parent->getLayout(); + } if (parent) { @@ -2488,20 +2506,11 @@ void LLView::setupParams(LLView::Params& p, LLView* parent) last_rect.translate(0, last_rect.getHeight()); - LLView::child_list_t::const_iterator itor = parent->getChildList()->begin(); - for (;itor != parent->getChildList()->end(); ++itor) - { - LLView *last_view = (*itor); - if (last_view->getSaveToXML()) - { - last_rect = last_view->getRect(); - break; - } - } + // If there was a recently constructed child, use its rectangle + get_last_child_rect(parent, &last_rect); if (layout_topleft) { - S32 left_delta = 0; p.bottom_delta.setIfNotProvided(0, false); // Invert the sense of bottom_delta for topleft layout @@ -2509,32 +2518,33 @@ void LLView::setupParams(LLView::Params& p, LLView* parent) { p.bottom_delta = -p.bottom_delta; } - else if (p.top_delta.isProvided()) + else if (p.top_pad.isProvided()) { - p.bottom_delta = -(p.rect.height + p.top_delta); + p.bottom_delta = -(p.rect.height + p.top_pad); } - else if (!p.left_delta.isProvided() && !p.right_delta.isProvided() && !p.top_delta.isProvided()) + else if (p.top_delta.isProvided()) { - // set default position is just below last rect - p.bottom_delta.setIfNotProvided(-(p.rect.height + VPAD), false); + p.bottom_delta = + -(p.top_delta + p.rect.height - last_rect.getHeight()); } - - // *TODO: Add left_pad for padding off the last widget's right edge - // if (p.left_pad.isProvided()) - //{ - // left_delta = p.left_pad + last_rect.getWidth(); - //} - //else if ... - if (p.left_delta.isProvided()) + else if (!p.bottom_delta.isProvided() + && !p.left_delta.isProvided() + && !p.top_pad.isProvided() + && !p.left_pad.isProvided()) { - left_delta = p.left_delta; + // set default position is just below last rect + p.bottom_delta.set(-(p.rect.height + VPAD), false); } - else if (p.right_delta.isProvided()) + + // default to same left edge + p.left_delta.setIfNotProvided(0, false); + if (p.left_pad.isProvided()) { - left_delta = -(p.right_delta + p.rect.width); + // left_pad is based on prior widget's right edge + p.left_delta.set(p.left_pad + last_rect.getWidth(), false); } - last_rect.translate(left_delta, p.bottom_delta); + last_rect.translate(p.left_delta, p.bottom_delta); } else { @@ -2581,27 +2591,103 @@ static S32 invert_vertical(S32 y, LLView* parent) } } -//static -void LLView::setupParamsForExport(Params& p, LLView* parent) -{ - // Don't convert if already top-left based - if (p.layout() == "topleft") +// Assumes that input is in bottom-left coordinates, hence must call +// _before_ convert_coords_to_top_left(). +static void convert_to_relative_layout(LLView::Params& p, LLView* parent) +{ + // Use setupParams to get the final widget rectangle + // according to our wacky layout rules. + LLView::Params final = p; + LLView::setupParams(final, parent); + // Must actually extract the rectangle to get consistent + // right = left+width, top = bottom+height + LLRect final_rect = final.rect; + + // We prefer to write out top edge instead of bottom, regardless + // of whether we use relative positioning + bool converted_top = false; + + // Look for a last rectangle + LLRect last_rect; + if (get_last_child_rect(parent, &last_rect)) + { + // ...we have a previous widget to compare to + const S32 EDGE_THRESHOLD_PIXELS = 4; + S32 left_pad = final_rect.mLeft - last_rect.mRight; + S32 left_delta = final_rect.mLeft - last_rect.mLeft; + S32 top_pad = final_rect.mTop - last_rect.mBottom; + S32 top_delta = final_rect.mTop - last_rect.mTop; + // If my left edge is almost the same, or my top edge is + // almost the same... + if (llabs(left_delta) <= EDGE_THRESHOLD_PIXELS + || llabs(top_delta) <= EDGE_THRESHOLD_PIXELS) + { + // ...use relative positioning + // prefer top_pad if widgets are stacking vertically + // (coordinate system is still bottom-left here) + if (top_pad < 0) + { + p.top_pad = top_pad; + p.top_delta.setProvided(false); + } + else + { + p.top_pad.setProvided(false); + p.top_delta = top_delta; + } + // null out other vertical specifiers + p.rect.top.setProvided(false); + p.rect.bottom.setProvided(false); + p.bottom_delta.setProvided(false); + converted_top = true; + + // prefer left_pad if widgets are stacking horizontally + if (left_pad > 0) + { + p.left_pad = left_pad; + p.left_delta.setProvided(false); + } + else + { + p.left_pad.setProvided(false); + p.left_delta = left_delta; + } + p.rect.left.setProvided(false); + p.rect.right.setProvided(false); + } + } + + if (!converted_top) { - return; + // ...this is the first widget, or one that wasn't aligned + // prefer top/left specification + p.rect.top = final_rect.mTop; + p.rect.bottom.setProvided(false); + p.bottom_delta.setProvided(false); + p.top_pad.setProvided(false); + p.top_delta.setProvided(false); } +} +static void convert_coords_to_top_left(LLView::Params& p, LLView* parent) +{ + // Convert the coordinate system to be top-left based. if (p.rect.top.isProvided()) { p.rect.top = invert_vertical(p.rect.top, parent); } - if (p.top_delta.isProvided()) - { - p.top_delta = -p.top_delta; - } if (p.rect.bottom.isProvided()) { p.rect.bottom = invert_vertical(p.rect.bottom, parent); } + if (p.top_pad.isProvided()) + { + p.top_pad = -p.top_pad; + } + if (p.top_delta.isProvided()) + { + p.top_delta = -p.top_delta; + } if (p.bottom_delta.isProvided()) { p.bottom_delta = -p.bottom_delta; @@ -2609,6 +2695,46 @@ void LLView::setupParamsForExport(Params& p, LLView* parent) p.layout = "topleft"; } +//static +void LLView::setupParamsForExport(Params& p, LLView* parent) +{ + // Don't convert if already top-left based + if (p.layout() == "topleft") + { + return; + } + + // heuristic: Many of our floaters and panels were bulk-exported. + // These specify exactly bottom/left and height/width. + // Others were done by hand using bottom_delta and/or left_delta. + // Some rely on not specifying left to mean align with left edge. + // Try to convert both to use relative layout, but using top-left + // coordinates. + // Avoid rectangles where top/bottom/left/right was specified. + if (p.rect.height.isProvided() && p.rect.width.isProvided()) + { + if (p.rect.bottom.isProvided() && p.rect.left.isProvided()) + { + // standard bulk export, convert it + convert_to_relative_layout(p, parent); + } + else if (p.rect.bottom.isProvided() && p.left_delta.isProvided()) + { + // hand layout with left_delta + convert_to_relative_layout(p, parent); + } + else if (p.bottom_delta.isProvided()) + { + // hand layout with bottom_delta + // don't check for p.rect.left or p.left_delta because sometimes + // this layout doesn't set it for widgets that are left-aligned + convert_to_relative_layout(p, parent); + } + } + + convert_coords_to_top_left(p, parent); +} + LLView::tree_iterator_t LLView::beginTree() { return tree_iterator_t(this, @@ -2621,3 +2747,14 @@ LLView::tree_iterator_t LLView::endTree() // an empty iterator is an "end" iterator return tree_iterator_t(); } + +// only create maps on demand, as they incur heap allocation/deallocation cost +// when a view is constructed/deconstructed +LLView::default_widget_map_t& LLView::getDefaultWidgetMap() const +{ + if (!mDefaultWidgets) + { + mDefaultWidgets = new default_widget_map_t(); + } + return *mDefaultWidgets; +} diff --git a/indra/llui/llview.h b/indra/llui/llview.h index 85e190c7d283eb3bf8ec80b8307c56f6696a9fce..422f62f602437a678a9adf622381e1a2b715e9e7 100644 --- a/indra/llui/llview.h +++ b/indra/llui/llview.h @@ -37,6 +37,7 @@ // the HUD or a dialog box or a button. It can also contain sub-views // and child widgets +#include "stdtypes.h" #include "llcoord.h" #include "llfontgl.h" #include "llmortician.h" @@ -48,7 +49,6 @@ #include "llui.h" #include "lluistring.h" #include "llviewquery.h" -#include "llxmlnode.h" #include "stdenums.h" #include "lluistring.h" #include "llcursortypes.h" @@ -143,8 +143,8 @@ class LLView : public LLMouseHandler, public LLMortician public: struct Follows : public LLInitParam::Choice<Follows> { - Option<std::string> string; - Option<U32> flags; + Alternative<std::string> string; + Alternative<U32> flags; Follows() : string(""), @@ -176,17 +176,21 @@ class LLView : public LLMouseHandler, public LLMortician Optional<std::string> layout; Optional<LLRect> rect; - Optional<S32> top_delta, - bottom_delta, - right_delta, - left_delta; - + // Historical bottom-left layout used bottom_delta and left_delta + // for relative positioning. New layout "topleft" prefers specifying + // based on top edge. + Optional<S32> bottom_delta, // deprecated + top_pad, // from last bottom to my top + top_delta, // from last top to my top + left_pad, // from last right to my left + left_delta; // from last left to my left + Optional<bool> center_horiz, center_vert; // these are nested attributes for LLLayoutPanel //FIXME: get parent context involved in parsing traversal - Deprecated user_resize, + Ignored user_resize, auto_resize, needs_translate; @@ -285,8 +289,6 @@ class LLView : public LLMouseHandler, public LLMortician void moveChildToFrontOfTabGroup(LLUICtrl* child); void moveChildToBackOfTabGroup(LLUICtrl* child); - void addChildren(LLXMLNodePtr node, LLXMLNodePtr output_node = NULL); - virtual bool addChild(LLView* view, S32 tab_group = 0); // implemented in terms of addChild() @@ -484,20 +486,23 @@ class LLView : public LLMouseHandler, public LLMortician virtual LLView* getChildView(const std::string& name, BOOL recurse = TRUE, BOOL create_if_missing = TRUE) const; - template <class T> T* getDummyWidget(const std::string& name) const + template <class T> T* getDefaultWidget(const std::string& name) const { - dummy_widget_map_t::const_iterator found_it = mDummyWidgets.find(name); - if (found_it == mDummyWidgets.end()) + default_widget_map_t::const_iterator found_it = getDefaultWidgetMap().find(name); + if (found_it == getDefaultWidgetMap().end()) { return NULL; } return dynamic_cast<T*>(found_it->second); } + // determines allowable children when parsing XUI + virtual const widget_registry_t& getChildRegistry() const; + ////////////////////////////////////////////// // statics ////////////////////////////////////////////// - static LLFontGL::HAlign selectFontHAlign(LLXMLNodePtr node); + //static LLFontGL::HAlign selectFontHAlign(LLXMLNodePtr node); // focuses the item in the list after the currently-focused item, wrapping if necessary static BOOL focusNext(LLView::child_list_t & result); @@ -520,13 +525,13 @@ class LLView : public LLMouseHandler, public LLMortician // to be top-left based. static void setupParamsForExport(Params& p, LLView* parent); -protected: //virtual BOOL addChildFromParam(const LLInitParam::BaseBlock& params) { return TRUE; } virtual BOOL handleKeyHere(KEY key, MASK mask); virtual BOOL handleUnicodeCharHere(llwchar uni_char); virtual void handleReshape(const LLRect& rect, bool by_user); +protected: void drawDebugRect(); void drawChild(LLView* childp, S32 x_offset = 0, S32 y_offset = 0, BOOL force_draw = FALSE); @@ -587,8 +592,11 @@ class LLView : public LLMouseHandler, public LLMortician static LLWindow* sWindow; // All root views must know about their window. - typedef std::map<std::string, LLView*> dummy_widget_map_t; - mutable dummy_widget_map_t mDummyWidgets; + typedef std::map<std::string, LLView*> default_widget_map_t; + // allocate this map no demand, as it is rarely needed + mutable default_widget_map_t* mDefaultWidgets; + + default_widget_map_t& getDefaultWidgetMap() const; public: static BOOL sDebugRects; // Draw debug rects behind everything. @@ -632,10 +640,10 @@ template <class T> T* LLView::getChild(const std::string& name, BOOL recurse, BO } if (create_if_missing) { - result = getDummyWidget<T>(name); + result = getDefaultWidget<T>(name); if (!result) { - result = LLUICtrlFactory::createDummyWidget<T>(name); + result = LLUICtrlFactory::getDefaultWidget<T>(name); if (result) { @@ -647,7 +655,7 @@ template <class T> T* LLView::getChild(const std::string& name, BOOL recurse, BO return NULL; } - mDummyWidgets[name] = result; + getDefaultWidgetMap()[name] = result; } } } diff --git a/indra/llui/llviewborder.cpp b/indra/llui/llviewborder.cpp index 540a9f75138536249e212a003c95bf2fcd32171b..a5b09671bbd952a5aae6d7bda83aa54551c208b2 100644 --- a/indra/llui/llviewborder.cpp +++ b/indra/llui/llviewborder.cpp @@ -35,7 +35,7 @@ #include "llfocusmgr.h" #include "lluictrlfactory.h" -static LLRegisterWidget<LLViewBorder> r("view_border"); +static LLDefaultWidgetRegistry::Register<LLViewBorder> r("view_border"); void LLViewBorder::BevelValues::declareValues() { diff --git a/indra/llwindow/lldxhardware.cpp b/indra/llwindow/lldxhardware.cpp index d33a0a6eead28308a18063b8f7626542916a6447..d8058baf53f49b5e07c4444775dc533730f64734 100644 --- a/indra/llwindow/lldxhardware.cpp +++ b/indra/llwindow/lldxhardware.cpp @@ -625,7 +625,37 @@ LLSD LLDXHardware::getDisplayInfo() ret["DeviceName"] = device_name; std::string device_driver= get_string(device_containerp, L"szDriverVersion"); ret["DriverVersion"] = device_driver; - } + + // ATI has a slightly different version string + if(device_name.length() >= 4 && device_name.substr(0,4) == "ATI ") + { + // get the key + HKEY hKey; + const DWORD RV_SIZE = 100; + WCHAR release_version[RV_SIZE]; + + // Hard coded registry entry. Using this since it's simpler for now. + // And using EnumDisplayDevices to get a registry key also requires + // a hard coded Query value. + if(ERROR_SUCCESS == RegOpenKey(HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\ATI Technologies\\CBT"), &hKey)) + { + // get the value + DWORD dwType = REG_SZ; + DWORD dwSize = sizeof(WCHAR) * RV_SIZE; + if(ERROR_SUCCESS == RegQueryValueEx(hKey, TEXT("ReleaseVersion"), + NULL, &dwType, (LPBYTE)release_version, &dwSize)) + { + // print the value + // windows doesn't guarantee to be null terminated + release_version[RV_SIZE - 1] = NULL; + ret["DriverVersion"] = utf16str_to_utf8str(release_version); + + } + RegCloseKey(hKey); + } + } + } + LCleanup: SAFE_RELEASE(file_containerp); SAFE_RELEASE(driver_containerp); diff --git a/indra/llwindow/llwindowmesaheadless.cpp b/indra/llwindow/llwindowmesaheadless.cpp index c1f9d2095e5e0e9a403ccc758cfb70b367f88b82..7ee09f4a24fcf37a9864bb43fe45bd2ac4b98d11 100644 --- a/indra/llwindow/llwindowmesaheadless.cpp +++ b/indra/llwindow/llwindowmesaheadless.cpp @@ -44,10 +44,11 @@ U16 *gMesaBuffer = NULL; // // LLWindowMesaHeadless // -LLWindowMesaHeadless::LLWindowMesaHeadless(const std::string& title, const std::string& name, S32 x, S32 y, S32 width, S32 height, +LLWindowMesaHeadless::LLWindowMesaHeadless(LLWindowCallbacks* callbacks, + const std::string& title, const std::string& name, S32 x, S32 y, S32 width, S32 height, U32 flags, BOOL fullscreen, BOOL clearBg, BOOL disable_vsync, BOOL use_gl, BOOL ignore_pixel_depth) - : LLWindow(fullscreen, flags) + : LLWindow(callbacks, fullscreen, flags) { if (use_gl) { diff --git a/indra/llwindow/llwindowmesaheadless.h b/indra/llwindow/llwindowmesaheadless.h index ab562d9ffef7b044cb8e77b968b1598b492c6167..22e0ec126d507957b52dd863e047d4d3c16c0d82 100644 --- a/indra/llwindow/llwindowmesaheadless.h +++ b/indra/llwindow/llwindowmesaheadless.h @@ -98,7 +98,8 @@ class LLWindowMesaHeadless : public LLWindow /*virtual*/ void *getPlatformWindow() { return 0; }; /*virtual*/ void bringToFront() {}; - LLWindowMesaHeadless(const std::string& title, const std::string& name, S32 x, S32 y, S32 width, S32 height, + LLWindowMesaHeadless(LLWindowCallbacks* callbacks, + const std::string& title, const std::string& name, S32 x, S32 y, S32 width, S32 height, U32 flags, BOOL fullscreen, BOOL clearBg, BOOL disable_vsync, BOOL use_gl, BOOL ignore_pixel_depth); ~LLWindowMesaHeadless(); diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp index b60740c7e43a400ba6d415bb72da7b53a2d643a5..ce1bc821685fc63a36722adf161d67bfbbab1bc3 100644 --- a/indra/llwindow/llwindowwin32.cpp +++ b/indra/llwindow/llwindowwin32.cpp @@ -60,6 +60,7 @@ #include <dinput.h> #include <Dbt.h.> +#include "llmemtype.h" // culled from winuser.h #ifndef WM_MOUSEWHEEL /* Added to be compatible with later SDK's */ const S32 WM_MOUSEWHEEL = 0x020A; @@ -1593,6 +1594,8 @@ void LLWindowWin32::gatherInput() MSG msg; int msg_count = 0; + LLMemType m1(LLMemType::MTYPE_GATHER_INPUT); + while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE) && msg_count < MAX_MESSAGE_PER_UPDATE) { mCallbacks->handlePingWatchdog(this, "Main:TranslateGatherInput"); diff --git a/indra/llxml/llcontrol.cpp b/indra/llxml/llcontrol.cpp index 2271c02cd040e6b2405832ff3d27ec15fb47dafc..9d0cdacb1d465389ab158e4bede46f7df73c06c0 100644 --- a/indra/llxml/llcontrol.cpp +++ b/indra/llxml/llcontrol.cpp @@ -1176,7 +1176,7 @@ template<> LLVector3 convert_from_llsd<LLVector3>(const LLSD& sd, eControlType type, const std::string& control_name) { if (type == TYPE_VEC3) - return sd; + return (LLVector3)sd; else { CONTROL_ERRS << "Invalid LLVector3 value" << llendl; @@ -1188,7 +1188,7 @@ template<> LLVector3d convert_from_llsd<LLVector3d>(const LLSD& sd, eControlType type, const std::string& control_name) { if (type == TYPE_VEC3D) - return sd; + return (LLVector3d)sd; else { CONTROL_ERRS << "Invalid LLVector3d value" << llendl; @@ -1200,7 +1200,7 @@ template<> LLRect convert_from_llsd<LLRect>(const LLSD& sd, eControlType type, const std::string& control_name) { if (type == TYPE_RECT) - return sd; + return LLRect(sd); else { CONTROL_ERRS << "Invalid rect value" << llendl; diff --git a/indra/llxml/llcontrol.h b/indra/llxml/llcontrol.h index 0a8e665c55a9503b518bef6ed2e5e7db20d42931..37939a0908ada28dcb3128604cae3ab4d3bddc0f 100644 --- a/indra/llxml/llcontrol.h +++ b/indra/llxml/llcontrol.h @@ -332,10 +332,6 @@ class LLControlCache : public LLRefCount, public LLInstanceTracker<LLControlCach ~LLControlCache() { - if(mConnection.connected()) - { - mConnection.disconnect(); - } } const T& getValue() const { return mCachedValue; } @@ -378,7 +374,7 @@ class LLControlCache : public LLRefCount, public LLInstanceTracker<LLControlCach private: T mCachedValue; eControlType mType; - boost::signals2::connection mConnection; + boost::signals2::scoped_connection mConnection; }; template <typename T> diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 5d79dfbc3e9f3573b1aa65495479f577241222b7..c177de6e88d67cf8c0b4e8f59bb6621342f78f37 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -11,7 +11,6 @@ include(ELFIO) include(FMOD) include(OPENAL) include(FindOpenGL) -include(LLAddBuildTest) include(LLAudio) include(LLCharacter) include(LLCommon) @@ -66,28 +65,36 @@ include_directories( ) set(viewer_SOURCE_FILES + llaccordionpanel.cpp llagent.cpp llagentaccess.cpp llagentdata.cpp llagentlanguage.cpp llagentpilot.cpp + llagentwearables.cpp llanimstatelabels.cpp llappviewer.cpp llassetuploadresponders.cpp llassetuploadqueue.cpp llaudiosourcevo.cpp llavatariconctrl.cpp + llavatarlist.cpp + llavatarlistitem.cpp llavatarpropertiesprocessor.cpp llbbox.cpp + llbottomtray.cpp llbox.cpp llcallbacklist.cpp llcallingcard.cpp llcapabilitylistener.cpp llcaphttpsender.cpp llchatbar.cpp + llchathistoryscroll.cpp + llchiclet.cpp llclassifiedinfo.cpp llclassifiedstatsresponder.cpp llcloud.cpp + llcollapsiblectrl.cpp llcolorswatch.cpp llcommandhandler.cpp llcommandlineparser.cpp @@ -99,6 +106,7 @@ set(viewer_SOURCE_FILES lldebugview.cpp lldelayedgestureerror.cpp lldirpicker.cpp + lldraggerbar.cpp lldrawable.cpp lldrawpoolalpha.cpp lldrawpoolavatar.cpp @@ -126,6 +134,7 @@ set(viewer_SOURCE_FILES llflexibleobject.cpp llfloaterabout.cpp llfloateractivespeakers.cpp + llfloateraddlandmark.cpp llfloateranimpreview.cpp llfloaterauction.cpp llfloateravatarinfo.cpp @@ -172,6 +181,7 @@ set(viewer_SOURCE_FILES llfloaterlandholdings.cpp llfloatermap.cpp llfloatermemleak.cpp + llfloaterminiinspector.cpp llfloatermute.cpp llfloaternamedesc.cpp llfloaternotificationsconsole.cpp @@ -202,9 +212,12 @@ set(viewer_SOURCE_FILES llfloaterworldmap.cpp llfolderview.cpp llfollowcam.cpp + llfriendactions.cpp llgesturemgr.cpp llgivemoney.cpp llglsandbox.cpp + llgroupactions.cpp + llgrouplist.cpp llgroupmgr.cpp llgroupnotify.cpp llhomelocationresponder.cpp @@ -222,7 +235,7 @@ set(viewer_SOURCE_FILES llhudview.cpp llimpanel.cpp llimview.cpp - llinventoryactions.cpp + llimcontrolpanel.cpp llinventorybridge.cpp llinventoryclipboard.cpp llinventorymodel.cpp @@ -242,6 +255,7 @@ set(viewer_SOURCE_FILES llmediaremotectrl.cpp llmemoryview.cpp llmenucommands.cpp + llmetricperformancetester.cpp llmimetypes.cpp llmorphview.cpp llmoveview.cpp @@ -250,12 +264,11 @@ set(viewer_SOURCE_FILES llnameeditor.cpp llnamelistctrl.cpp llnavigationbar.cpp + llnearbychathistory.cpp llnetmap.cpp llnotify.cpp lloutputmonitorctrl.cpp lloverlaybar.cpp - llpanelaudioprefs.cpp - llpanelaudiovolume.cpp llpanelavatar.cpp llpanelavatarrow.cpp llpanelclassified.cpp @@ -268,38 +281,37 @@ set(viewer_SOURCE_FILES llpaneldirland.cpp llpaneldirpeople.cpp llpaneldirplaces.cpp - llpaneldisplay.cpp llpanelevent.cpp llpanelface.cpp - llpanelgeneral.cpp llpanelgroup.cpp llpanelgroupgeneral.cpp llpanelgroupinvite.cpp llpanelgrouplandmoney.cpp llpanelgroupnotices.cpp llpanelgrouproles.cpp - llpanelinput.cpp llpanelinventory.cpp llpanelland.cpp + llpanellandmarks.cpp llpanellandmedia.cpp llpanellogin.cpp - llpanelmsgs.cpp - llpanelnetwork.cpp + llpanelmeprofile.cpp llpanelobject.cpp + llpanelpeople.cpp llpanelpermissions.cpp llpanelpick.cpp + llpanelpicks.cpp llpanelplace.cpp + llpanelplaceinfo.cpp llpanelshower.cpp - llpanelskins.cpp + llpanelplaces.cpp + llpanelplacestab.cpp + llpanelprofileview.cpp + llpanelteleporthistory.cpp llpanelvolume.cpp - llpanelweb.cpp llparcelselection.cpp llpatchvertexarray.cpp llpolymesh.cpp llpolymorph.cpp - llprefschat.cpp - llprefsim.cpp - llprefsvoice.cpp llpreviewanim.cpp llpreview.cpp llpreviewgesture.cpp @@ -310,10 +322,12 @@ set(viewer_SOURCE_FILES llpreviewtexture.cpp llproductinforequest.cpp llprogressview.cpp + llrecentpeople.cpp llregionposition.cpp llremoteparcelrequest.cpp llsavedsettingsglue.cpp llselectmgr.cpp + llsidetray.cpp llsky.cpp llslurl.cpp llspatialpartition.cpp @@ -324,7 +338,9 @@ set(viewer_SOURCE_FILES llsurface.cpp llsurfacepatch.cpp llteleporthistory.cpp + lltexglobalcolor.cpp lltexlayer.cpp + lltexlayerparams.cpp lltexturecache.cpp lltexturectrl.cpp lltexturefetch.cpp @@ -402,6 +418,7 @@ set(viewer_SOURCE_FILES llvlmanager.cpp llvoavatar.cpp llvoavatardefines.cpp + llvoavatarself.cpp llvocache.cpp llvoclouds.cpp llvograss.cpp @@ -409,6 +426,7 @@ set(viewer_SOURCE_FILES llvoiceclient.cpp llvoiceremotectrl.cpp llvoicevisualizer.cpp + llvoicecontrolpanel.cpp llvoinventorylistener.cpp llvopartgroup.cpp llvosky.cpp @@ -422,6 +440,7 @@ set(viewer_SOURCE_FILES llwaterparammanager.cpp llwaterparamset.cpp llwearable.cpp + llwearabledictionary.cpp llwearablelist.cpp llweb.cpp llwebbrowserctrl.cpp @@ -459,12 +478,13 @@ endif (LINUX) set(viewer_HEADER_FILES CMakeLists.txt ViewerInstall.cmake - + llaccordionpanel.h llagent.h llagentaccess.h llagentdata.h llagentlanguage.h llagentpilot.h + llagentwearables.h llanimstatelabels.h llappearance.h llappviewer.h @@ -472,8 +492,11 @@ set(viewer_HEADER_FILES llassetuploadqueue.h llaudiosourcevo.h llavatariconctrl.h + llavatarlist.h + llavatarlistitem.h llavatarpropertiesprocessor.h llbbox.h + llbottomtray.h llbox.h llcallbacklist.h llcallingcard.h @@ -481,9 +504,12 @@ set(viewer_HEADER_FILES llcapabilityprovider.h llcaphttpsender.h llchatbar.h + llchathistoryscroll.h + llchiclet.h llclassifiedinfo.h llclassifiedstatsresponder.h llcloud.h + llcollapsiblectrl.h llcolorswatch.h llcommandhandler.h llcommandlineparser.h @@ -495,6 +521,7 @@ set(viewer_HEADER_FILES lldebugview.h lldelayedgestureerror.h lldirpicker.h + lldraggerbar.h lldrawable.h lldrawpool.h lldrawpoolalpha.h @@ -523,6 +550,7 @@ set(viewer_HEADER_FILES llflexibleobject.h llfloaterabout.h llfloateractivespeakers.h + llfloateraddlandmark.h llfloateranimpreview.h llfloaterauction.h llfloateravatarinfo.h @@ -569,6 +597,7 @@ set(viewer_HEADER_FILES llfloaterlandholdings.h llfloatermap.h llfloatermemleak.h + llfloaterminiinspector.h llfloatermute.h llfloaternamedesc.h llfloaternotificationsconsole.h @@ -599,8 +628,11 @@ set(viewer_HEADER_FILES llfloaterworldmap.h llfolderview.h llfollowcam.h + llfriendactions.h llgesturemgr.h llgivemoney.h + llgroupactions.h + llgrouplist.h llgroupmgr.h llgroupnotify.h llhomelocationresponder.h @@ -618,6 +650,7 @@ set(viewer_HEADER_FILES llhudview.h llimpanel.h llimview.h + llimcontrolpanel.h llinventorybridge.h llinventoryclipboard.h llinventorymodel.h @@ -638,6 +671,7 @@ set(viewer_HEADER_FILES llmediaremotectrl.h llmemoryview.h llmenucommands.h + llmetricperformancetester.h llmimetypes.h llmorphview.h llmoveview.h @@ -646,12 +680,11 @@ set(viewer_HEADER_FILES llnameeditor.h llnamelistctrl.h llnavigationbar.h + llnearbychathistory.h llnetmap.h llnotify.h lloutputmonitorctrl.h lloverlaybar.h - llpanelaudioprefs.h - llpanelaudiovolume.h llpanelavatar.h llpanelavatarrow.h llpanelclassified.h @@ -664,38 +697,37 @@ set(viewer_HEADER_FILES llpaneldirland.h llpaneldirpeople.h llpaneldirplaces.h - llpaneldisplay.h llpanelevent.h llpanelface.h - llpanelgeneral.h llpanelgroup.h llpanelgroupgeneral.h llpanelgroupinvite.h llpanelgrouplandmoney.h llpanelgroupnotices.h llpanelgrouproles.h - llpanelinput.h llpanelinventory.h llpanelland.h + llpanellandmarks.h llpanellandmedia.h llpanellogin.h - llpanelmsgs.h - llpanelnetwork.h + llpanelmeprofile.h llpanelobject.h + llpanelpeople.h llpanelpermissions.h llpanelpick.h + llpanelpicks.h llpanelplace.h + llpanelplaceinfo.h llpanelshower.h - llpanelskins.h + llpanelplaces.h + llpanelplacestab.h + llpanelprofileview.h + llpanelteleporthistory.h llpanelvolume.h - llpanelweb.h llparcelselection.h llpatchvertexarray.h llpolymesh.h llpolymorph.h - llprefschat.h - llprefsim.h - llprefsvoice.h llpreview.h llpreviewanim.h llpreviewgesture.h @@ -706,11 +738,14 @@ set(viewer_HEADER_FILES llpreviewtexture.h llproductinforequest.h llprogressview.h + llrecentpeople.h llregionposition.h llremoteparcelrequest.h llresourcedata.h + llrootview.h llsavedsettingsglue.h llselectmgr.h + llsidetray.h llsky.h llslurl.h llspatialpartition.h @@ -722,7 +757,9 @@ set(viewer_HEADER_FILES llsurfacepatch.h lltable.h llteleporthistory.h + lltexglobalcolor.h lltexlayer.h + lltexlayerparams.h lltexturecache.h lltexturectrl.h lltexturefetch.h @@ -800,6 +837,7 @@ set(viewer_HEADER_FILES llvlmanager.h llvoavatar.h llvoavatardefines.h + llvoavatarself.h llvocache.h llvoclouds.h llvograss.h @@ -807,6 +845,7 @@ set(viewer_HEADER_FILES llvoiceclient.h llvoiceremotectrl.h llvoicevisualizer.h + llvoicecontrolpanel.h llvoinventorylistener.h llvopartgroup.h llvosky.h @@ -821,6 +860,7 @@ set(viewer_HEADER_FILES llwaterparammanager.h llwaterparamset.h llwearable.h + llwearabledictionary.h llwearablelist.h llweb.h llwebbrowserctrl.h @@ -988,12 +1028,11 @@ if (WINDOWS) ) set(viewer_LIBRARIES - advapi32 + ${WINDOWS_LIBRARIES} comdlg32 ${DINPUT_LIBRARY} ${DXGUID_LIBRARY} fmodvc - gdi32 kernel32 odbc32 odbccp32 @@ -1001,7 +1040,6 @@ if (WINDOWS) oleaut32 opengl32 shell32 - user32 Vfw32 winspool ) @@ -1017,6 +1055,8 @@ if (WINDOWS) if (INTEL_MEMOPS_LIBRARY) list(APPEND viewer_LIBRARIES ${INTEL_MEMOPS_LIBRARY}) endif (INTEL_MEMOPS_LIBRARY) + + use_prebuilt_binary(dbghelp) endif (WINDOWS) # Add the xui files. This is handy for searching for xui elements @@ -1026,11 +1066,11 @@ set(viewer_XUI_FILES skins/default/textures/textures.xml ) file(GLOB DEFAULT_XUI_FILE_GLOB_LIST - ${CMAKE_CURRENT_SOURCE_DIR}/skins/default/xui/en-us/*.xml) + ${CMAKE_CURRENT_SOURCE_DIR}/skins/default/xui/en/*.xml) list(APPEND viewer_XUI_FILES ${DEFAULT_XUI_FILE_GLOB_LIST}) file(GLOB DEFAULT_WIDGET_FILE_GLOB_LIST - ${CMAKE_CURRENT_SOURCE_DIR}/skins/default/xui/en-us/widgets/*.xml) + ${CMAKE_CURRENT_SOURCE_DIR}/skins/default/xui/en/widgets/*.xml) list(APPEND viewer_XUI_FILES ${DEFAULT_WIDGET_FILE_GLOB_LIST}) file(GLOB SILVER_XUI_FILE_GLOB_LIST @@ -1164,6 +1204,8 @@ if (WINDOWS) set_target_properties(${VIEWER_BINARY_NAME} PROPERTIES + # *TODO -reenable this once we get server usage sorted out + #LINK_FLAGS "/debug /NODEFAULTLIB:LIBCMT /SUBSYSTEM:WINDOWS /INCLUDE:\"__tcmalloc\"" LINK_FLAGS "/debug /NODEFAULTLIB:LIBCMT /SUBSYSTEM:WINDOWS" LINK_FLAGS_DEBUG "/NODEFAULTLIB:\"LIBCMT;LIBCMTD;MSVCRT\" /INCREMENTAL:NO" LINK_FLAGS_RELEASE ${release_flags} @@ -1269,6 +1311,7 @@ target_link_libraries(${VIEWER_BINARY_NAME} ${XMLRPCEPI_LIBRARIES} ${ELFIO_LIBRARIES} ${LLLOGIN_LIBRARIES} + ${GOOGLE_PERFTOOLS_LIBRARIES} ) build_version(viewer) @@ -1390,8 +1433,20 @@ if (INSTALL) include(${CMAKE_CURRENT_SOURCE_DIR}/ViewerInstall.cmake) endif (INSTALL) -ADD_VIEWER_BUILD_TEST(llagentaccess viewer) -ADD_VIEWER_COMM_BUILD_TEST(llcapabilitylistener viewer - ${CMAKE_CURRENT_SOURCE_DIR}/../llmessage/tests/test_llsdmessage_peer.py) -ADD_VIEWER_COMM_BUILD_TEST(llxmlrpclistener viewer - ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_llxmlrpc_peer.py) +include(LLAddBuildTest) +SET(viewer_TEST_SOURCE_FILES + llagentaccess.cpp + # Not *actually* a unit test, it's an integration test. + # Because it won't work in the new unit test iface, i've commented out + # and notified Nat. Delete this when it's replaced! + # + poppy & brad 2009-06-05 + # llcapabilitylistener.cpp + ) +set_source_files_properties( + ${viewer_TEST_SOURCE_FILES} + PROPERTIES + LL_TEST_ADDITIONAL_SOURCE_FILES llviewerprecompiledheaders.cpp + ) +LL_ADD_PROJECT_UNIT_TESTS(${VIEWER_BINARY_NAME} "${viewer_TEST_SOURCE_FILES}") + +#ADD_VIEWER_BUILD_TEST(llmemoryview viewer) diff --git a/indra/newview/app_settings/cmd_line.xml b/indra/newview/app_settings/cmd_line.xml index db665b72dd0a50d14eb89e2d9c243e04e49b63e0..783a886fdd325e0c654afbaac2a82ee3bf10fddc 100644 --- a/indra/newview/app_settings/cmd_line.xml +++ b/indra/newview/app_settings/cmd_line.xml @@ -1,337 +1,387 @@ -<?xml version="1.0"?> -<llsd> - <map> - <key>help</key> - <map> - <key>desc</key> - <string>display this help message</string> - - <key>short</key> - <string>h</string> - </map> - - <key>port</key> - <map> - <key>count</key> - <integer>1</integer> - <key>map-to</key> - <string>UserConnectionPort</string> - </map> - - <key>drop</key> - <map> - <key>count</key> - <integer>1</integer> - <key>map-to</key> - <string>PacketDropPercentage</string> - </map> - - <key>inbw</key> - <map> - <key>count</key> - <integer>1</integer> - <key>map-to</key> - <string>InBandwidth</string> - </map> - - <key>outbw</key> - <map> - <key>count</key> - <integer>1</integer> - <key>map-to</key> - <string>OutBandwidth</string> - </map> - - <key>grid</key> - <map> - <key>desc</key> - <string>Specify the name of the grid, local, or an IP address to connect to.</string> - <key>count</key> - <integer>1</integer> - <key>map-to</key> - <string>CmdLineGridChoice</string> - </map> - - <key>loginuri</key> - <map> - <key>desc</key> - <string>login server and CGI script to use</string> - <key>count</key> - <integer>1</integer> - <key>compose</key> - <boolean>true</boolean> - <key>map-to</key> - <string>CmdLineLoginURI</string> - </map> - - <key>helperuri</key> - <map> - <key>desc</key> - <string>helper web CGI prefix to use</string> - <key>count</key> - <integer>1</integer> - <key>map-to</key> - <string>CmdLineHelperURI</string> - </map> - - <key>debugviews</key> - <map> - <key>map-to</key> - <string>DebugViews</string> - </map> - - <key>skin</key> - <map> - <key>desc</key> - <string>ui/branding skin folder to use</string> - <key>count</key> - <integer>1</integer> - <key>map-to</key> - <string>SkinFolder</string> - </map> - - <key>autologin</key> - <map> - <key>desc</key> - <string>log in as last saved user</string> - <key>map-to</key> - <string>AutoLogin</string> - </map> - - <key>quitafter</key> - <map> - <key>count</key> - <integer>1</integer> - <key>map-to</key> - <string>QuitAfterSeconds</string> - </map> - - <key>rotate</key> - <map> - <key>map-to</key> - <string>RotateRight</string> - </map> - - <key>noaudio</key> - <map> - <key>map-to</key> - <string>NoAudio</string> - </map> - - <key>nosound</key> - <map> - <key>map-to</key> - <string>NoAudio</string> - </map> - - <key>noprobe</key> - <map> - <key>map-to</key> - <string>NoHardwareProbe</string> - </map> - - <key>noquicktime</key> - <map> - <key>map-to</key> - <string>NoQuickTime</string> - </map> - - <key>nopreload</key> - <map> - <key>map-to</key> - <string>NoPreload</string> - </map> - - <key>purge</key> - <map> - <key>desc</key> - <string>Delete files in the cache.</string> - <key>map-to</key> - <string>PurgeCacheOnNextStartup</string> - </map> - - <key>noinvlib</key> - <map> - <key>desc</key> - <string>Do not request the inventory library.</string> - <key>map-to</key> - <string>NoInventoryLibrary</string> - </map> - - <key>logfile</key> - <map> - <key>count</key> - <integer>1</integer> - <key>map-to</key> - <string>UserLogFile</string> - </map> - - <key>setdefault</key> - <map> - <key>desc</key> - <string> specify the value of a particular - configuration variable which can be - overridden by settings.xml - </string> - <key>count</key> - <integer>2</integer> - <!-- Special case. Mapped to settings procedurally. --> - </map> - - <key>set</key> - <map> - <key>desc</key> - <string> specify the value of a particular - configuration variable that - overrides all other settings - </string> - <key>count</key> - <integer>2</integer> - <key>compose</key> - <boolean>true</boolean> - <!-- Special case. Mapped to settings procedurally. --> - </map> - - <key>settings</key> - <map> - <key>desc</key> - <string>Specify the filename of a configuration file.</string> - <key>count</key> - <integer>1</integer> - <!-- Special case. Mapped to settings procedurally. --> - </map> - - <key>login</key> - <map> - <key>desc</key> - <string>3 tokens: first, last and password</string> - <key>count</key> - <integer>3</integer> - <key>map-to</key> - <string>UserLoginInfo</string> - </map> - - <key>god</key> - <map> - <key>desc</key> - <string>Log in a god if you have god access.</string> - <key>map-to</key> - <string>ConnectAsGod</string> - </map> - - <key>console</key> - <map> - <key>count</key> - <integer>1</integer> - <key>map-to</key> - <string>ShowConsoleWindow</string> - </map> - - <key>safe</key> - <map> - <key>desc</key> - <string>Reset preferences, run in safe mode.</string> - <key>map-to</key> - <string>SafeMode</string> - </map> - - <key>multiple</key> - <map> - <key>desc</key> - <string>Allow multple viewers.</string> - <key>map-to</key> - <string>AllowMultipleViewers</string> - </map> - - <key>novoice</key> - <map> - <key>desc</key> - <string>Disable voice.</string> - <key>map-to</key> - <string>CmdLineDisableVoice</string> - </map> - - <key>url</key> - <map> - <key>desc</key> - <string>Startup location</string> - <key>count</key> - <integer>1</integer> - <key>last_option</key> - <boolean>true</boolean> - <!-- Special case. Not mapped to a setting. --> - </map> - - <key>slurl</key> - <map> - <key>desc</key> - <string>Startup SLurl</string> - <key>count</key> - <integer>1</integer> - <key>positional</key> - <boolean>true</boolean> - <key>last_option</key> - <boolean>true</boolean> - <!-- Special case. Not mapped to a setting. --> - </map> - - <key>ignorepixeldepth</key> - <map> - <key>desc</key> - <string>Ignore pixel depth settings.</string> - <key>map-to</key> - <string>IgnorePixelDepth</string> - </map> - - <key>cooperative</key> - <map> - <key>desc</key> - <string>Yield some idle time to local host.</string> - <key>count</key> - <integer>1</integer> - <key>map-to</key> - <string>YieldTime</string> - </map> - - <key>no-verify-ssl-cert</key> - <map> - <key>map-to</key> - <string>NoVerifySSLCert</string> - </map> - - <key>channel</key> - <map> - <key>count</key> - <integer>1</integer> - <key>map-to</key> - <string>VersionChannelName</string> - </map> - - <key>loginpage</key> - <map> - <key>desc</key> - <string>Login authentication page to use.</string> - <key>count</key> - <integer>1</integer> - <key>map-to</key> - <string>LoginPage</string> - </map> - - <key>qa</key> - <map> - <key>desc</key> - <string>Activated debugging menu in Advanced Settings.</string> - <key>map-to</key> - <string>QAMode</string> - </map> - - <key>crashonstartup</key> - <map> - <key>desc</key> - <string>Crashes on startup. For QA use.</string> - <key>map-to</key> - <string>CrashOnStartup</string> - </map> - - </map> -</llsd> +<?xml version="1.0"?> +<llsd> + <map> + <key>help</key> + <map> + <key>desc</key> + <string>display this help message</string> + + <key>short</key> + <string>h</string> + </map> + + <key>port</key> + <map> + <key>count</key> + <integer>1</integer> + <key>map-to</key> + <string>UserConnectionPort</string> + </map> + + <key>drop</key> + <map> + <key>count</key> + <integer>1</integer> + <key>map-to</key> + <string>PacketDropPercentage</string> + </map> + + <key>inbw</key> + <map> + <key>count</key> + <integer>1</integer> + <key>map-to</key> + <string>InBandwidth</string> + </map> + + <key>outbw</key> + <map> + <key>count</key> + <integer>1</integer> + <key>map-to</key> + <string>OutBandwidth</string> + </map> + + <key>grid</key> + <map> + <key>desc</key> + <string>Specify the name of the grid, local, or an IP address to connect to.</string> + <key>count</key> + <integer>1</integer> + <key>map-to</key> + <string>CmdLineGridChoice</string> + </map> + + <key>loginuri</key> + <map> + <key>desc</key> + <string>login server and CGI script to use</string> + <key>count</key> + <integer>1</integer> + <key>compose</key> + <boolean>true</boolean> + <key>map-to</key> + <string>CmdLineLoginURI</string> + </map> + + <key>helperuri</key> + <map> + <key>desc</key> + <string>helper web CGI prefix to use</string> + <key>count</key> + <integer>1</integer> + <key>map-to</key> + <string>CmdLineHelperURI</string> + </map> + + <key>debugviews</key> + <map> + <key>map-to</key> + <string>DebugViews</string> + </map> + + <key>skin</key> + <map> + <key>desc</key> + <string>ui/branding skin folder to use</string> + <key>count</key> + <integer>1</integer> + <key>map-to</key> + <string>SkinFolder</string> + </map> + + <key>autologin</key> + <map> + <key>desc</key> + <string>log in as last saved user</string> + <key>map-to</key> + <string>AutoLogin</string> + </map> + + <key>quitafter</key> + <map> + <key>count</key> + <integer>1</integer> + <key>map-to</key> + <string>QuitAfterSeconds</string> + </map> + + <key>logperformance</key> + <map> + <key>desc</key> + <string>Log performance metrics for benchmarking</string> + <key>map-to</key> + <string>LogPerformance</string> + </map> + + <key>logmetrics</key> + <map> + <key>desc</key> + <string>Log metrics for benchmarking</string> + <key>map-to</key> + <string>LogMetrics</string> + </map> + + <key>analyzeperformance</key> + <map> + <key>desc</key> + <string>When used in conjunction with logperformance, analyzes result of log against baseline.</string> + <key>map-to</key> + <string>AnalyzePerformance</string> + </map> + + <key>debugsession</key> + <map> + <key>desc</key> + <string>Run as if RenderDebugGL is TRUE, but log errors until end of session.</string> + <key>map-to</key> + <string>DebugSession</string> + </map> + + <key>replaysession</key> + <map> + <key>desc</key> + <string>After login, replay last recorded session and quit.</string> + <key>map-to</key> + <string>ReplaySession</string> + </map> + + <key>rotate</key> + <map> + <key>map-to</key> + <string>RotateRight</string> + </map> + + <key>noaudio</key> + <map> + <key>map-to</key> + <string>NoAudio</string> + </map> + + <key>nosound</key> + <map> + <key>map-to</key> + <string>NoAudio</string> + </map> + + <key>noprobe</key> + <map> + <key>map-to</key> + <string>NoHardwareProbe</string> + </map> + + <key>noquicktime</key> + <map> + <key>map-to</key> + <string>NoQuickTime</string> + </map> + + <key>nopreload</key> + <map> + <key>map-to</key> + <string>NoPreload</string> + </map> + + <key>purge</key> + <map> + <key>desc</key> + <string>Delete files in the cache.</string> + <key>map-to</key> + <string>PurgeCacheOnNextStartup</string> + </map> + + <key>noinvlib</key> + <map> + <key>desc</key> + <string>Do not request the inventory library.</string> + <key>map-to</key> + <string>NoInventoryLibrary</string> + </map> + + <key>logfile</key> + <map> + <key>count</key> + <integer>1</integer> + <key>map-to</key> + <string>UserLogFile</string> + </map> + + <key>graphicslevel</key> + <map> + <key>desc</key> + <string>Set the detail level. + 0 - low, 1 - medium, 2 - high, 3 - ultra + </string> + <key>count</key> + <integer>1</integer> + </map> + + <key>setdefault</key> + <map> + <key>desc</key> + <string> specify the value of a particular + configuration variable which can be + overridden by settings.xml + </string> + <key>count</key> + <integer>2</integer> + <!-- Special case. Mapped to settings procedurally. --> + </map> + + <key>set</key> + <map> + <key>desc</key> + <string> specify the value of a particular + configuration variable that + overrides all other settings + </string> + <key>count</key> + <integer>2</integer> + <key>compose</key> + <boolean>true</boolean> + <!-- Special case. Mapped to settings procedurally. --> + </map> + + <key>settings</key> + <map> + <key>desc</key> + <string>Specify the filename of a configuration file.</string> + <key>count</key> + <integer>1</integer> + <!-- Special case. Mapped to settings procedurally. --> + </map> + + <key>login</key> + <map> + <key>desc</key> + <string>3 tokens: first, last and password</string> + <key>count</key> + <integer>3</integer> + <key>map-to</key> + <string>UserLoginInfo</string> + </map> + + <key>god</key> + <map> + <key>desc</key> + <string>Log in a god if you have god access.</string> + <key>map-to</key> + <string>ConnectAsGod</string> + </map> + + <key>console</key> + <map> + <key>count</key> + <integer>1</integer> + <key>map-to</key> + <string>ShowConsoleWindow</string> + </map> + + <key>safe</key> + <map> + <key>desc</key> + <string>Reset preferences, run in safe mode.</string> + <key>map-to</key> + <string>SafeMode</string> + </map> + + <key>multiple</key> + <map> + <key>desc</key> + <string>Allow multple viewers.</string> + <key>map-to</key> + <string>AllowMultipleViewers</string> + </map> + + <key>novoice</key> + <map> + <key>desc</key> + <string>Disable voice.</string> + <key>map-to</key> + <string>CmdLineDisableVoice</string> + </map> + + <key>url</key> + <map> + <key>desc</key> + <string>Startup location</string> + <key>count</key> + <integer>1</integer> + <key>last_option</key> + <boolean>true</boolean> + <!-- Special case. Not mapped to a setting. --> + </map> + + <key>slurl</key> + <map> + <key>desc</key> + <string>Startup SLurl</string> + <key>count</key> + <integer>1</integer> + <key>positional</key> + <boolean>true</boolean> + <key>last_option</key> + <boolean>true</boolean> + <!-- Special case. Not mapped to a setting. --> + </map> + + <key>ignorepixeldepth</key> + <map> + <key>desc</key> + <string>Ignore pixel depth settings.</string> + <key>map-to</key> + <string>IgnorePixelDepth</string> + </map> + + <key>cooperative</key> + <map> + <key>desc</key> + <string>Yield some idle time to local host.</string> + <key>count</key> + <integer>1</integer> + <key>map-to</key> + <string>YieldTime</string> + </map> + + <key>no-verify-ssl-cert</key> + <map> + <key>map-to</key> + <string>NoVerifySSLCert</string> + </map> + + <key>channel</key> + <map> + <key>count</key> + <integer>1</integer> + <key>map-to</key> + <string>VersionChannelName</string> + </map> + + <key>loginpage</key> + <map> + <key>desc</key> + <string>Login authentication page to use.</string> + <key>count</key> + <integer>1</integer> + <key>map-to</key> + <string>LoginPage</string> + </map> + + <key>qa</key> + <map> + <key>desc</key> + <string>Activated debugging menu in Advanced Settings.</string> + <key>map-to</key> + <string>QAMode</string> + </map> + + <key>crashonstartup</key> + <map> + <key>desc</key> + <string>Crashes on startup. For QA use.</string> + <key>map-to</key> + <string>CrashOnStartup</string> + </map> + + </map> +</llsd> diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index f39622616518e94b1f6c55af5c36f52fe9859010..5ad49774a9ef6b206ea87b775dce852e52435eb6 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -584,6 +584,17 @@ <key>Value</key> <integer>0</integer> </map> + <key>BottomPanelNew</key> + <map> + <key>Comment</key> + <string>Enable the new bottom panel</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> <key>BrowserHomePage</key> <map> <key>Comment</key> @@ -2732,6 +2743,17 @@ <key>Value</key> <integer>1</integer> </map> + <key>FirstSelectedDisabledPopups</key> + <map> + <key>Comment</key> + <string>Return false if there is not disabled popup selected in the list of floater preferences popups</string> + <key>Persist</key> + <integer>0</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> <key>FixedWeather</key> <map> <key>Comment</key> @@ -2870,17 +2892,6 @@ <integer>0</integer> </array> </map> - <key>FloaterViewBottom</key> - <map> - <key>Comment</key> - <string>[DO NOT MODIFY] Controls layout of floating windows within SL window</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>S32</string> - <key>Value</key> - <integer>-1</integer> - </map> <key>FlyBtnEnabled</key> <map> <key>Comment</key> @@ -3318,16 +3329,16 @@ <key>Value</key> <integer>0</integer> </map> - <key>FullScreen</key> + <key>NotFullScreen</key> <map> <key>Comment</key> - <string>Run SL in fullscreen mode</string> + <string>Run SL in non fullscreen mode</string> <key>Persist</key> <integer>1</integer> <key>Type</key> <string>Boolean</string> <key>Value</key> - <integer>0</integer> + <integer>1</integer> </map> <key>FullScreenAspectRatio</key> <map> @@ -3516,6 +3527,17 @@ <key>Value</key> <string /> </map> + <key>IMInChatConsole</key> + <map> + <key>Comment</key> + <string>Copy IM into chat console</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> <key>IMInChatHistory</key> <map> <key>Comment</key> @@ -4331,6 +4353,17 @@ <key>Value</key> <real>600.0</real> </map> + <key>MemProfiling</key> + <map> + <key>Comment</key> + <string>You want to use tcmalloc's memory profiling options.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> <key>MenuAccessKeyTime</key> <map> <key>Comment</key> @@ -5427,6 +5460,17 @@ <key>Value</key> <integer>0</integer> </map> + <key>RenderDebugAlphaMask</key> + <map> + <key>Comment</key> + <string>Test Alpha Masking Cutoffs.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>0.5</real> + </map> <key>RenderDebugGL</key> <map> <key>Comment</key> @@ -5791,6 +5835,17 @@ <key>Value</key> <integer>0</integer> </map> + <key>RenderHUDParticles</key> + <map> + <key>Comment</key> + <string>Display particle systems in HUD attachments (experimental)</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> <key>RenderHiddenSelections</key> <map> <key>Comment</key> @@ -6997,7 +7052,18 @@ <key>Type</key> <string>Boolean</string> <key>Value</key> + <integer>0</integer> + </map> + <key>ShowNetStats</key> + <map> + <key>Comment</key> + <string>Show the Search Bar in the Status Overlay</string> + <key>Persist</key> <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> </map> <key>ShowSelectionBeam</key> <map> @@ -7092,7 +7158,7 @@ <key>Comment</key> <string>Display XUI Names as Tooltips</string> <key>Persist</key> - <integer>1</integer> + <integer>0</integer> <key>Type</key> <string>Boolean</string> <key>Value</key> @@ -7377,28 +7443,6 @@ <key>Value</key> <string>fss.txt</string> </map> - <key>StatusBarHeight</key> - <map> - <key>Comment</key> - <string>Height of menu/status bar at top of screen (pixels)</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>S32</string> - <key>Value</key> - <integer>26</integer> - </map> - <key>StatusBarPad</key> - <map> - <key>Comment</key> - <string>Spacing between popup buttons at bottom of screen (Stand up, Release Controls)</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>S32</string> - <key>Value</key> - <integer>10</integer> - </map> <key>SystemLanguage</key> <map> <key>Comment</key> @@ -7408,7 +7452,7 @@ <key>Type</key> <string>String</string> <key>Value</key> - <string>en-us</string> + <string>en</string> </map> <key>TabToTextFieldsOnly</key> <map> @@ -7861,6 +7905,28 @@ <key>Value</key> <string>5748decc-f629-461c-9a36-a35a221fe21f</string> </map> + <key>UIImgDefaultAlphaUUID</key> + <map> + <key>Comment</key> + <string /> + <key>Persist</key> + <integer>0</integer> + <key>Type</key> + <string>String</string> + <key>Value</key> + <string>5748decc-f629-461c-9a36-a35a221fe21f</string> + </map> + <key>UIImgDefaultTattooUUID</key> + <map> + <key>Comment</key> + <string /> + <key>Persist</key> + <integer>0</integer> + <key>Type</key> + <string>String</string> + <key>Value</key> + <string>5748decc-f629-461c-9a36-a35a221fe21f</string> + </map> <key>UIImgDefaultUnderwearUUID</key> <map> <key>Comment</key> @@ -9149,6 +9215,17 @@ <key>Value</key> <integer>44125</integer> </map> + <key>WarningsAsChat</key> + <map> + <key>Comment</key> + <string>Display warning messages in chat history</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> <key>WLSkyDetail</key> <map> <key>Comment</key> @@ -9169,7 +9246,7 @@ <key>Type</key> <string>Boolean</string> <key>Value</key> - <integer>1</integer> + <integer>0</integer> </map> <key>WaterEditPresets</key> <map> diff --git a/indra/newview/character/avatar_lad.xml b/indra/newview/character/avatar_lad.xml index f484167cab02ce214cfaa8ffd1b7454e90fe0f69..c943c57fdbe79d523a17b7ea446ad182a1d46c3e 100644 --- a/indra/newview/character/avatar_lad.xml +++ b/indra/newview/character/avatar_lad.xml @@ -5542,6 +5542,14 @@ <texture local_texture="hair_grain" /> </layer> + + <layer + name="hair alpha" + visibility_mask="TRUE"> + <texture + local_texture="hair_alpha" /> + </layer> + </layer_set> <!-- =========================================================== --> @@ -5615,13 +5623,31 @@ </param> </layer> - <layer - name="head_bodypaint"> - <texture - local_texture="head_bodypaint" /> - </layer> + <layer + name="highlight"> + <texture + tga_file="head_highlights_alpha.tga" + file_is_mask="TRUE" /> - <layer + + <param + id="159" + group="1" + name="Shading" + wearable="skin" + value_min="0" + value_max="1"> + <param_color> + <value + color="255, 255, 255, 0" /> + + + <value + color="255, 255, 255, 64" /> + </param_color> + </param> + </layer> + <layer name="rosyface"> <texture tga_file="rosyface_alpha.tga" @@ -5651,52 +5677,6 @@ </layer> <layer - name="freckles" - fixed_color="120,47,20,128"> - <param - id="165" - group="0" - wearable="skin" - edit_group="skin_facedetail" - edit_group_order="2" - name="Freckles" - label_min="Less" - label_max="More" - value_min="0" - value_max="1" - camera_distance=".3" - camera_elevation=".07"> - <param_alpha - tga_file="freckles_alpha.tga" - skip_if_zero="true" - domain="0.5" /> - </param> - </layer> - - <layer - name="highlight"> - <texture - tga_file="head_highlights_alpha.tga" - file_is_mask="TRUE" /> - - <param - id="159" - group="1" - name="Shading" - wearable="skin" - value_min="0" - value_max="1"> - <param_color> - <value - color="255, 255, 255, 0" /> - - <value - color="255, 255, 255, 64" /> - </param_color> - </param> - </layer> - - <layer name="lips"> <texture tga_file="lips_mask.tga" @@ -5757,8 +5737,29 @@ domain="0.3" /> </param> </layer>--> - <layer + name="freckles" + fixed_color="120,47,20,128"> + <param + id="165" + group="0" + wearable="skin" + edit_group="skin_facedetail" + edit_group_order="2" + name="Freckles" + label_min="Less" + label_max="More" + value_min="0" + value_max="1" + camera_distance=".3" + camera_elevation=".07"> + <param_alpha + tga_file="freckles_alpha.tga" + skip_if_zero="true" + domain="0.5" /> + </param> + </layer> + <layer name="eyebrowsbump" render_pass="bump"> <texture @@ -6458,8 +6459,6 @@ <layer name="facialhair" global_color="hair_color"> - <morph_mask - morph_name="Displace_Hair_Facial" /> <texture tga_file="head_hair.tga" @@ -6546,6 +6545,23 @@ </param> </layer> + <layer + name="head_bodypaint"> + <texture + local_texture="head_bodypaint" /> + </layer> + <layer + name="head alpha" + visibility_mask="TRUE"> + <texture + local_texture="head_alpha" /> + </layer> + <layer + name="head_tattoo"> + <texture + local_texture="head_tattoo" /> + </layer> + </layer_set> <!-- =========================================================== --> @@ -6661,6 +6677,13 @@ </param> </layer> + <layer + name="upper_tattoo"> + <texture + local_texture="upper_tattoo" /> + </layer> + + <layer name="upper_undershirt bump" render_pass="bump" @@ -7289,12 +7312,6 @@ <texture local_texture="upper_shirt" /> - <morph_mask - morph_name="Displace_Loose_Upperbody" /> - - <morph_mask - morph_name="Shirtsleeve_flair" /> - <param id="803" group="0" @@ -7730,6 +7747,14 @@ domain="0.01" /> </param> </layer> + + <layer + name="upper alpha" + visibility_mask="TRUE"> + <texture + local_texture="upper_alpha" /> + </layer> + </layer_set> <!-- =========================================================== --> @@ -7845,6 +7870,12 @@ </param> </layer> + <layer + name="lower_tattoo"> + <texture + local_texture="lower_tattoo" /> + </layer> + <layer name="lower_underpants bump" render_pass="bump" @@ -8315,18 +8346,6 @@ <texture local_texture="lower_pants" /> - <morph_mask - morph_name="Displace_Loose_Lowerbody" /> - - <morph_mask - morph_name="Leg_Pantflair" /> - - <morph_mask - morph_name="Low_Crotch" /> - - <morph_mask - morph_name="Leg_Longcuffs" /> - <param id="806" group="0" @@ -8602,6 +8621,14 @@ domain="0.01" /> </param> </layer> + + <layer + name="lower alpha" + visibility_mask="TRUE"> + <texture + local_texture="lower_alpha" /> + </layer> + </layer_set> <!-- =========================================================== --> @@ -8621,6 +8648,14 @@ <texture local_texture="eyes_iris" /> </layer> + + <layer + name="eyes alpha" + visibility_mask="TRUE"> + <texture + local_texture="eyes_alpha" /> + </layer> + </layer_set> <!-- =========================================================== --> @@ -8800,6 +8835,7 @@ domain="0" /> </param> </layer> + </layer_set> <!-- =========================================================== --> @@ -11260,5 +11296,36 @@ </param> </driver_parameters> + + <morph_masks> + <mask + morph_name="Displace_Hair_Facial" + body_region="head" + layer="facialhair" /> + <mask + morph_name="Displace_Loose_Upperbody" + body_region="upper_body" + layer="upper_clothes" /> + <mask + morph_name="Shirtsleeve_flair" + body_region="upper_body" + layer="upper_clothes" /> + <mask + morph_name="Displace_Loose_Lowerbody" + body_region="lower_body" + layer="lower_pants" /> + <mask + morph_name="Leg_Pantflair" + body_region="lower_body" + layer="lower_pants" /> + <mask + morph_name="Low_Crotch" + body_region="lower_body" + layer="lower_pants" /> + <mask + morph_name="Leg_Longcuffs" + body_region="lower_body" + layer="lower_pants" /> + </morph_masks> </linden_avatar> diff --git a/indra/newview/character/checkerboard.tga b/indra/newview/character/checkerboard.tga new file mode 100644 index 0000000000000000000000000000000000000000..1950d7403dfdad67395b79e2ef4cecd57304794e Binary files /dev/null and b/indra/newview/character/checkerboard.tga differ diff --git a/indra/newview/character/invisible_head.tga b/indra/newview/character/invisible_head.tga new file mode 100755 index 0000000000000000000000000000000000000000..2673a237d51d5398417930c64a7cfb55a6e0de20 Binary files /dev/null and b/indra/newview/character/invisible_head.tga differ diff --git a/indra/newview/installers/windows/installer_template.nsi b/indra/newview/installers/windows/installer_template.nsi index 87218008bd500658302589acde498fab2d69958c..73a548cdc6e1190ba7ef11f8fa978d21ff306cb7 100644 --- a/indra/newview/installers/windows/installer_template.nsi +++ b/indra/newview/installers/windows/installer_template.nsi @@ -498,7 +498,8 @@ RMDir "$INSTDIR" IfFileExists "$INSTDIR" FOLDERFOUND NOFOLDER FOLDERFOUND: - MessageBox MB_YESNO $(DeleteProgramFilesMB) IDNO NOFOLDER + ; Silent uninstall always removes all files (/SD IDYES) + MessageBox MB_YESNO $(DeleteProgramFilesMB) /SD IDYES IDNO NOFOLDER RMDir /r "$INSTDIR" NOFOLDER: diff --git a/indra/newview/installers/windows/lang_nl.nsi b/indra/newview/installers/windows/lang_nl.nsi index c8ffa8bfcd733b6fe4d588bb3213148e2e2b7215..8884b1e8585416464c522dad2f002b3a8338326f 100644 Binary files a/indra/newview/installers/windows/lang_nl.nsi and b/indra/newview/installers/windows/lang_nl.nsi differ diff --git a/indra/newview/linux_tools/launch_url.sh b/indra/newview/linux_tools/launch_url.sh index d2c8919d46e0707b66d7b93ad237391507e22450..404ea36f2601820a61a3d58a9b07685ee9894b68 100755 --- a/indra/newview/linux_tools/launch_url.sh +++ b/indra/newview/linux_tools/launch_url.sh @@ -7,17 +7,15 @@ # # On Unixoids we try, in order of decreasing priority: # - $BROWSER if set (preferred) -# - kfmclient openURL +# - Default GNOME browser +# - Default KDE browser # - x-www-browser -# - opera -# - firefox -# - mozilla -# - netscape +# - The first browser in $BROWSER_COMMANDS that is found. URL="$1" if [ -z "$URL" ]; then - echo "Usage: $0 URL" + echo "Usage: $(basename "$0") URL" exit fi @@ -47,46 +45,42 @@ if [ ! -z "$XBROWSER" ]; then echo "$0: Trying some others..." fi -# else kfmclient -# (embodies KDE concept of 'preferred browser') -if which kfmclient >/dev/null; then - kfmclient openURL "$URL" & - exit -fi - -# else x-www-browser -# (Debianesque idea of a working X browser) -if which x-www-browser >/dev/null; then - x-www-browser "$URL" & - exit -fi - -# else opera -# (if user has opera in their path, they probably went to the -# trouble of installing it -> prefer it) -if which opera >/dev/null; then - opera "$URL" & +# Launcher the default GNOME browser. +if [ ! -z "$GNOME_DESKTOP_SESSION_ID" ] && which gnome-open >/dev/null; then + gnome-open "$URL" & exit fi -# else firefox -if which firefox >/dev/null; then - firefox "$URL" & +# Launch the default KDE browser. +if [ ! -z "$KDE_FULL_SESSION" ] && which kfmclient >/dev/null; then + kfmclient openURL "$URL" & exit fi -# else mozilla -if which mozilla >/dev/null; then - mozilla "$URL" & - exit -fi - -# else netscape -if which netscape >/dev/null; then - netscape "$URL" & - exit -fi +# List of browser commands that will be tried in the order listed. x-www-browser +# will be tried first, which is a debian alternative. +BROWSER_COMMANDS=" \ + x-www-browser \ + firefox \ + mozilla-firefox \ + iceweasel \ + iceape \ + opera \ + epiphany-browser \ + epiphany-gecko \ + epiphany-webkit \ + epiphany \ + mozilla \ + seamonkey \ + galeon \ + dillo \ + netscape" +for browser_cmd in $BROWSER_COMMANDS; do + if which $browser_cmd >/dev/null; then + $browser_cmd "$URL" & + exit + fi +done echo '$0: Failed to find a known browser. Please consider setting the $BROWSER environment variable.' - -# end. +exit 1 diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index f97f9f607f807da10b460fe85c682276cb2cfddf..a70d31431fe7fb32cb2d33b12740b9f0042cff03 100644 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -32,110 +32,69 @@ #include "llviewerprecompiledheaders.h" -#include "stdtypes.h" -#include "stdenums.h" - #include "llagent.h" +#include "llagentwearables.h" -#include "llcamera.h" -#include "llcoordframe.h" -#include "indra_constants.h" -#include "llmath.h" -#include "llcriticaldamp.h" -#include "llfocusmgr.h" -#include "llglheaders.h" -#include "llmenugl.h" -#include "llparcel.h" -#include "llpermissions.h" -#include "llregionhandle.h" -#include "m3math.h" -#include "m4math.h" -#include "message.h" -#include "llquaternion.h" -#include "v3math.h" -#include "v4math.h" -#include "llsmoothstep.h" -#include "llsdutil.h" -//#include "vmath.h" - -#include "imageids.h" -#include "llbox.h" -#include "llbutton.h" +#include "llanimationstates.h" #include "llcallingcard.h" #include "llchatbar.h" #include "llconsole.h" #include "lldrawable.h" -#include "llface.h" #include "llfirstuse.h" -#include "llfloater.h" #include "llfloaterreg.h" #include "llfloateractivespeakers.h" #include "llfloateravatarinfo.h" -#include "llfloaterbuildoptions.h" #include "llfloatercamera.h" -#include "llfloaterchat.h" #include "llfloatercustomize.h" #include "llfloaterdirectory.h" #include "llfloatergroupinfo.h" -#include "llfloatergroups.h" #include "llfloaterland.h" #include "llfloatermute.h" #include "llfloatersnapshot.h" #include "llfloatertools.h" #include "llfloaterworldmap.h" + +#include "llfocusmgr.h" #include "llgroupmgr.h" #include "llhomelocationresponder.h" -#include "llhudeffectlookat.h" +#include "llimview.h" #include "llhudmanager.h" -#include "llinventorymodel.h" -#include "llinventoryview.h" #include "lljoystickbutton.h" #include "llmenugl.h" #include "llmorphview.h" #include "llmoveview.h" -#include "llteleporthistory.h" -#include "llnotify.h" -#include "llquantize.h" +#include "llparcel.h" #include "llsdutil.h" #include "llselectmgr.h" #include "llsky.h" #include "llslurl.h" -#include "llrendersphere.h" +#include "llsmoothstep.h" +#include "llsidetray.h" #include "llstatusbar.h" -#include "llstartup.h" -#include "llimview.h" +#include "llteleporthistory.h" #include "lltool.h" #include "lltoolcomp.h" -#include "lltoolfocus.h" -#include "lltoolgrab.h" #include "lltoolmgr.h" -#include "lltoolpie.h" -#include "llui.h" // for make_ui_sound +#include "lluictrlfactory.h" +#include "llurldispatcher.h" + #include "llviewercamera.h" -#include "llviewerinventory.h" -#include "llviewermenu.h" -#include "llviewernetwork.h" +#include "llviewerdisplay.h" #include "llviewerobjectlist.h" #include "llviewerparcelmgr.h" -#include "llviewerparceloverlay.h" -#include "llviewerregion.h" #include "llviewerstats.h" #include "llviewerwindow.h" -#include "llviewerdisplay.h" -#include "llvoavatar.h" -#include "llvoground.h" -#include "llvosky.h" -#include "llwearable.h" -#include "llwearablelist.h" +#include "llviewercontrol.h" +#include "llviewerjoystick.h" + +#include "llvoavatarself.h" +#include "llwindow.h" #include "llworld.h" #include "llworldmap.h" + #include "pipeline.h" -#include "roles_constants.h" -#include "llviewercontrol.h" -#include "llappviewer.h" -#include "llviewerjoystick.h" -#include "llfollowcam.h" #include "lltrans.h" +#include "llbottomtray.h" #include "stringize.h" #include "llcapabilitylistener.h" @@ -145,6 +104,10 @@ using namespace LLVOAvatarDefines; extern LLMenuBarGL* gMenuBarView; +const BOOL ANIMATE = TRUE; +const U8 AGENT_STATE_TYPING = 0x04; +const U8 AGENT_STATE_EDITING = 0x10; + //drone wandering constants const F32 MAX_WANDER_TIME = 20.f; // seconds const F32 MAX_HEADING_HALF_ERROR = 0.2f; // radians @@ -220,7 +183,7 @@ const F64 CHAT_AGE_FAST_RATE = 3.0; // The agent instance. LLAgent gAgent; -// +//-------------------------------------------------------------------- // Statics // @@ -259,7 +222,6 @@ bool handleSlowMotionAnimation(const LLSD& newvalue) return true; } - // ************************************************************ // Enabled this definition to compile a 'hacked' viewer that // locally believes the end user has godlike powers. @@ -282,19 +244,12 @@ LLAgent::LLAgent() : mHideGroupTitle(FALSE), mGroupID(), - mMapOriginX(0.F), - mMapOriginY(0.F), - mMapWidth(0), - mMapHeight(0), - mLookAt(NULL), mPointAt(NULL), mHUDTargetZoom(1.f), mHUDCurZoom(1.f), mInitialized(FALSE), - mNumPendingQueries(0), - mActiveCacheQueries(NULL), mForceMouselook(FALSE), mDoubleTapRunTimer(), @@ -413,9 +368,6 @@ LLAgent::LLAgent() : mFirstLogin(FALSE), mGenderChosen(FALSE), - mAgentWearablesUpdateSerialNum(0), - mWearablesLoaded(FALSE), - mTextureCacheQueryID(0), mAppearanceSerialNum(0) { for (U32 i = 0; i < TOTAL_CONTROLS; i++) @@ -424,12 +376,6 @@ LLAgent::LLAgent() : mControlsTakenPassedOnCount[i] = 0; } - mActiveCacheQueries = new S32[BAKED_NUM_INDICES]; - for (U32 i = 0; i < (U32)BAKED_NUM_INDICES; i++) - { - mActiveCacheQueries[i] = 0; - } - mFollowCam.setMaxCameraDistantFromSubject( MAX_CAMERA_DISTANCE_FROM_AGENT ); } @@ -450,7 +396,7 @@ void LLAgent::init() // Leave at 0.1 meters until we have real near clip management LLViewerCamera::getInstance()->setNear(0.1f); LLViewerCamera::getInstance()->setFar(mDrawDistance); // if you want to change camera settings, do so in camera.h - LLViewerCamera::getInstance()->setAspect( gViewerWindow->getDisplayAspectRatio() ); // default, overridden in LLViewerWindow::reshape + LLViewerCamera::getInstance()->setAspect( gViewerWindow->getWorldViewAspectRatio() ); // default, overridden in LLViewerWindow::reshape LLViewerCamera::getInstance()->setViewHeightInPixels(768); // default, overridden in LLViewerWindow::reshape setFlying( gSavedSettings.getBOOL("FlyingAtExit") ); @@ -464,7 +410,7 @@ void LLAgent::init() mTrackFocusObject = gSavedSettings.getBOOL("TrackFocusObject"); mEffectColor = gSavedSkinSettings.getColor4("EffectColor"); - + gSavedSettings.getControl("PreferredMaturity")->getValidateSignal()->connect(boost::bind(&LLAgent::validateMaturity, this, _2)); gSavedSettings.getControl("PreferredMaturity")->getSignal()->connect(boost::bind(&LLAgent::handleMaturity, this, _2)); @@ -477,7 +423,9 @@ void LLAgent::init() void LLAgent::cleanup() { setSitCamera(LLUUID::null); + mAvatarObject = NULL; + if(mLookAt) { mLookAt->markDead() ; @@ -499,9 +447,6 @@ LLAgent::~LLAgent() { cleanup(); - delete [] mActiveCacheQueries; - mActiveCacheQueries = NULL; - // *Note: this is where LLViewerCamera::getInstance() used to be deleted. } @@ -549,7 +494,7 @@ void LLAgent::resetView(BOOL reset_camera, BOOL change_camera) { LLViewerJoystick::getInstance()->moveAvatar(true); } - + LLFloaterReg::hideInstance("build"); gViewerWindow->showCursor(); @@ -1350,167 +1295,171 @@ LLQuaternion LLAgent::getQuat() const //----------------------------------------------------------------------------- // calcFocusOffset() //----------------------------------------------------------------------------- -LLVector3 LLAgent::calcFocusOffset(LLViewerObject *object, LLVector3 pos_agent, S32 x, S32 y) +LLVector3 LLAgent::calcFocusOffset(LLViewerObject *object, LLVector3 original_focus_point, S32 x, S32 y) { - // calculate offset based on view direction - BOOL is_avatar = object->isAvatar(); - LLMatrix4 obj_matrix = is_avatar ? ((LLVOAvatar*)object)->mPelvisp->getWorldMatrix() : object->getRenderMatrix(); - LLQuaternion obj_rot = is_avatar ? ((LLVOAvatar*)object)->mPelvisp->getWorldRotation() : object->getRenderRotation(); - LLVector3 obj_pos = is_avatar ? ((LLVOAvatar*)object)->mPelvisp->getWorldPosition() : object->getRenderPosition(); - LLQuaternion inv_obj_rot = ~obj_rot; + LLMatrix4 obj_matrix = object->getRenderMatrix(); + LLQuaternion obj_rot = object->getRenderRotation(); + LLVector3 obj_pos = object->getRenderPosition(); - LLVector3 obj_dir_abs = obj_pos - LLViewerCamera::getInstance()->getOrigin(); - obj_dir_abs.rotVec(inv_obj_rot); - obj_dir_abs.normalize(); - obj_dir_abs.abs(); + BOOL is_avatar = object->isAvatar(); + // if is avatar - don't do any funk heuristics to position the focal point + // see DEV-30589 + if (is_avatar) + { + return original_focus_point - obj_pos; + } + + LLQuaternion inv_obj_rot = ~obj_rot; // get inverse of rotation LLVector3 object_extents = object->getScale(); // make sure they object extents are non-zero object_extents.clamp(0.001f, F32_MAX); - LLVector3 object_half_extents = object_extents * 0.5f; - obj_dir_abs.mV[VX] = obj_dir_abs.mV[VX] / object_extents.mV[VX]; - obj_dir_abs.mV[VY] = obj_dir_abs.mV[VY] / object_extents.mV[VY]; - obj_dir_abs.mV[VZ] = obj_dir_abs.mV[VZ] / object_extents.mV[VZ]; + // obj_to_cam_ray is unit vector pointing from object center to camera, in the coordinate frame of the object + LLVector3 obj_to_cam_ray = obj_pos - LLViewerCamera::getInstance()->getOrigin(); + obj_to_cam_ray.rotVec(inv_obj_rot); + obj_to_cam_ray.normalize(); - LLVector3 normal; - if (obj_dir_abs.mV[VX] > obj_dir_abs.mV[VY] && obj_dir_abs.mV[VX] > obj_dir_abs.mV[VZ]) + // obj_to_cam_ray_proportions are the (positive) ratios of + // the obj_to_cam_ray x,y,z components with the x,y,z object dimensions. + LLVector3 obj_to_cam_ray_proportions; + obj_to_cam_ray_proportions.mV[VX] = llabs(obj_to_cam_ray.mV[VX] / object_extents.mV[VX]); + obj_to_cam_ray_proportions.mV[VY] = llabs(obj_to_cam_ray.mV[VY] / object_extents.mV[VY]); + obj_to_cam_ray_proportions.mV[VZ] = llabs(obj_to_cam_ray.mV[VZ] / object_extents.mV[VZ]); + + // find the largest ratio stored in obj_to_cam_ray_proportions + // this corresponds to the object's local axial plane (XY, YZ, XZ) that is *most* facing the camera + LLVector3 longest_object_axis; + // is x-axis longest? + if (obj_to_cam_ray_proportions.mV[VX] > obj_to_cam_ray_proportions.mV[VY] + && obj_to_cam_ray_proportions.mV[VX] > obj_to_cam_ray_proportions.mV[VZ]) { - normal.setVec(obj_matrix.getFwdRow4()); + // then grab it + longest_object_axis.setVec(obj_matrix.getFwdRow4()); } - else if (obj_dir_abs.mV[VY] > obj_dir_abs.mV[VZ]) + // is y-axis longest? + else if (obj_to_cam_ray_proportions.mV[VY] > obj_to_cam_ray_proportions.mV[VZ]) { - normal.setVec(obj_matrix.getLeftRow4()); + // then grab it + longest_object_axis.setVec(obj_matrix.getLeftRow4()); } + // otherwise, use z axis else { - normal.setVec(obj_matrix.getUpRow4()); + longest_object_axis.setVec(obj_matrix.getUpRow4()); } - normal.normalize(); + + // Use this axis as the normal to project mouse click on to plane with that normal, at the object center. + // This generates a point behind the mouse cursor that is approximately in the middle of the object in + // terms of depth. + // We do this to allow the camera rotation tool to "tumble" the object by rotating the camera. + // If the focus point were the object surface under the mouse, camera rotation would introduce an undesirable + // eccentricity to the object orientation + LLVector3 focus_plane_normal(longest_object_axis); + focus_plane_normal.normalize(); LLVector3d focus_pt_global; - // RN: should we check return value for valid pick? - gViewerWindow->mousePointOnPlaneGlobal(focus_pt_global, x, y, gAgent.getPosGlobalFromAgent(obj_pos), normal); + gViewerWindow->mousePointOnPlaneGlobal(focus_pt_global, x, y, gAgent.getPosGlobalFromAgent(obj_pos), focus_plane_normal); LLVector3 focus_pt = gAgent.getPosAgentFromGlobal(focus_pt_global); - // find vector from camera to focus point in object coordinates - LLVector3 camera_focus_vec = focus_pt - LLViewerCamera::getInstance()->getOrigin(); - // convert to object-local space - camera_focus_vec.rotVec(inv_obj_rot); + + // find vector from camera to focus point in object space + LLVector3 camera_to_focus_vec = focus_pt - LLViewerCamera::getInstance()->getOrigin(); + camera_to_focus_vec.rotVec(inv_obj_rot); // find vector from object origin to focus point in object coordinates - LLVector3 focus_delta = focus_pt - obj_pos; + LLVector3 focus_offset_from_object_center = focus_pt - obj_pos; // convert to object-local space - focus_delta.rotVec(inv_obj_rot); + focus_offset_from_object_center.rotVec(inv_obj_rot); - // calculate clip percentage needed to get focus offset back in bounds along the camera_focus axis + // We need to project the focus point back into the bounding box of the focused object. + // Do this by calculating the XYZ scale factors needed to get focus offset back in bounds along the camera_focus axis LLVector3 clip_fraction; + // for each axis... for (U32 axis = VX; axis <= VZ; axis++) { - F32 clip_amt; - if (focus_delta.mV[axis] > 0.f) + //...calculate distance that focus offset sits outside of bounding box along that axis... + //NOTE: dist_out_of_bounds keeps the sign of focus_offset_from_object_center + F32 dist_out_of_bounds; + if (focus_offset_from_object_center.mV[axis] > 0.f) { - clip_amt = llmax(0.f, focus_delta.mV[axis] - object_half_extents.mV[axis]); + dist_out_of_bounds = llmax(0.f, focus_offset_from_object_center.mV[axis] - (object_extents.mV[axis] * 0.5f)); } else { - clip_amt = llmin(0.f, focus_delta.mV[axis] + object_half_extents.mV[axis]); + dist_out_of_bounds = llmin(0.f, focus_offset_from_object_center.mV[axis] + (object_extents.mV[axis] * 0.5f)); } - // don't divide by very small nunber - if (llabs(camera_focus_vec.mV[axis]) < 0.0001f) + //...then calculate the scale factor needed to push camera_to_focus_vec back in bounds along current axis + if (llabs(camera_to_focus_vec.mV[axis]) < 0.0001f) { + // don't divide by very small number clip_fraction.mV[axis] = 0.f; } else { - clip_fraction.mV[axis] = clip_amt / camera_focus_vec.mV[axis]; + clip_fraction.mV[axis] = dist_out_of_bounds / camera_to_focus_vec.mV[axis]; } } LLVector3 abs_clip_fraction = clip_fraction; abs_clip_fraction.abs(); - // find greatest shrinkage factor and + // find axis of focus offset that is *most* outside the bounding box and use that to // rescale focus offset to inside object extents - if (abs_clip_fraction.mV[VX] > abs_clip_fraction.mV[VY] && - abs_clip_fraction.mV[VX] > abs_clip_fraction.mV[VZ]) + if (abs_clip_fraction.mV[VX] > abs_clip_fraction.mV[VY] + && abs_clip_fraction.mV[VX] > abs_clip_fraction.mV[VZ]) { - focus_delta -= clip_fraction.mV[VX] * camera_focus_vec; + focus_offset_from_object_center -= clip_fraction.mV[VX] * camera_to_focus_vec; } else if (abs_clip_fraction.mV[VY] > abs_clip_fraction.mV[VZ]) { - focus_delta -= clip_fraction.mV[VY] * camera_focus_vec; + focus_offset_from_object_center -= clip_fraction.mV[VY] * camera_to_focus_vec; } else { - focus_delta -= clip_fraction.mV[VZ] * camera_focus_vec; + focus_offset_from_object_center -= clip_fraction.mV[VZ] * camera_to_focus_vec; } // convert back to world space - focus_delta.rotVec(obj_rot); + focus_offset_from_object_center.rotVec(obj_rot); + // now, based on distance of camera from object relative to object size + // push the focus point towards the near surface of the object when (relatively) close to the objcet + // or keep the focus point in the object middle when (relatively) far + // NOTE: leave focus point in middle of avatars, since the behavior you want when alt-zooming on avatars + // is almost always "tumble about middle" and not "spin around surface point" if (!is_avatar) { - //unproject relative clicked coordinate from window coordinate using GL - /*GLint viewport[4]; - GLdouble modelview[16]; - GLdouble projection[16]; - GLfloat winX, winY, winZ; - GLdouble posX, posY, posZ; - - // convert our matrices to something that has a multiply that works - glh::matrix4f newModel((F32*)LLViewerCamera::getInstance()->getModelview().mMatrix); - glh::matrix4f tmpObjMat((F32*)obj_matrix.mMatrix); - newModel *= tmpObjMat; - - for(U32 i = 0; i < 16; ++i) - { - modelview[i] = newModel.m[i]; - projection[i] = LLViewerCamera::getInstance()->getProjection().mMatrix[i/4][i%4]; - } - glGetIntegerv( GL_VIEWPORT, viewport ); - - winX = ((F32)x) * gViewerWindow->getDisplayScale().mV[VX]; - winY = ((F32)y) * gViewerWindow->getDisplayScale().mV[VY]; - glReadPixels( llfloor(winX), llfloor(winY), 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &winZ ); - - gluUnProject( winX, winY, winZ, modelview, projection, viewport, &posX, &posY, &posZ);*/ - - LLVector3 obj_rel = pos_agent - object->getRenderPosition(); + LLVector3 obj_rel = original_focus_point - object->getRenderPosition(); - LLVector3 obj_center = LLVector3(0, 0, 0) * object->getRenderMatrix(); - //now that we have the object relative position, we should bias toward the center of the object //based on the distance of the camera to the focus point vs. the distance of the camera to the focus F32 relDist = llabs(obj_rel * LLViewerCamera::getInstance()->getAtAxis()); - F32 viewDist = dist_vec(obj_center + obj_rel, LLViewerCamera::getInstance()->getOrigin()); + F32 viewDist = dist_vec(obj_pos + obj_rel, LLViewerCamera::getInstance()->getOrigin()); LLBBox obj_bbox = object->getBoundingBoxAgent(); F32 bias = 0.f; + // virtual_camera_pos is the camera position we are simulating by backing the camera off + // and adjusting the FOV LLVector3 virtual_camera_pos = gAgent.getPosAgentFromGlobal(mFocusTargetGlobal + (getCameraPositionGlobal() - mFocusTargetGlobal) / (1.f + mCameraFOVZoomFactor)); - if(obj_bbox.containsPointAgent(virtual_camera_pos)) - { - // if the camera is inside the object (large, hollow objects, for example) - // force focus point all the way to destination depth, away from object center - bias = 1.f; - } - else + // if the camera is inside the object (large, hollow objects, for example) + // leave focus point all the way to destination depth, away from object center + if(!obj_bbox.containsPointAgent(virtual_camera_pos)) { // perform magic number biasing of focus point towards surface vs. planar center bias = clamp_rescale(relDist/viewDist, 0.1f, 0.7f, 0.0f, 1.0f); + obj_rel = lerp(focus_offset_from_object_center, obj_rel, bias); } - - obj_rel = lerp(focus_delta, obj_rel, bias); - - return LLVector3(obj_rel); + + focus_offset_from_object_center = obj_rel; } - return LLVector3(focus_delta.mV[VX], focus_delta.mV[VY], focus_delta.mV[VZ]); + return focus_offset_from_object_center; } //----------------------------------------------------------------------------- @@ -2200,7 +2149,7 @@ void LLAgent::setBusy() { gBusyMenu->setLabel(LLTrans::getString("AvatarSetNotBusy")); } - LLFloaterMute::getInstance()->updateButtons(); + LLFloaterReg::getTypedInstance<LLFloaterMute>("mute")->updateButtons(); } //----------------------------------------------------------------------------- @@ -2214,7 +2163,7 @@ void LLAgent::clearBusy() { gBusyMenu->setLabel(LLTrans::getString("AvatarSetBusy")); } - LLFloaterMute::getInstance()->updateButtons(); + LLFloaterReg::getTypedInstance<LLFloaterMute>("mute")->updateButtons(); } //----------------------------------------------------------------------------- @@ -2694,7 +2643,7 @@ std::ostream& operator<<(std::ostream &s, const LLAgent &agent) //----------------------------------------------------------------------------- // setAvatarObject() //----------------------------------------------------------------------------- -void LLAgent::setAvatarObject(LLVOAvatar *avatar) +void LLAgent::setAvatarObject(LLVOAvatarSelf *avatar) { mAvatarObject = avatar; @@ -2721,8 +2670,6 @@ void LLAgent::setAvatarObject(LLVOAvatar *avatar) { mPointAt->setSourceObject(avatar); } - - sendAgentWearablesRequest(); } // TRUE if your own avatar needs to be rendered. Usually only @@ -2773,7 +2720,7 @@ void LLAgent::startTyping() { sendAnimationRequest(ANIM_AGENT_TYPE, ANIM_REQUEST_START); } - gChatBar->sendChatFromViewer("", CHAT_TYPE_START, FALSE); + LLBottomTray::getInstance()->sendChatFromViewer("", CHAT_TYPE_START, FALSE); } //----------------------------------------------------------------------------- @@ -2785,7 +2732,7 @@ void LLAgent::stopTyping() { clearRenderState(AGENT_STATE_TYPING); sendAnimationRequest(ANIM_AGENT_TYPE, ANIM_REQUEST_STOP); - gChatBar->sendChatFromViewer("", CHAT_TYPE_STOP, FALSE); + LLBottomTray::getInstance()->sendChatFromViewer("", CHAT_TYPE_STOP, FALSE); } } @@ -2860,6 +2807,10 @@ void LLAgent::endAnimationUpdateUI() LLNavigationBar::getInstance()->setVisible(TRUE); gStatusBar->setVisibleForMouselook(true); + LLBottomTray::getInstance()->setVisible(TRUE); + + LLSideTray::getInstance()->setVisible(TRUE); + LLToolMgr::getInstance()->setCurrentToolset(gBasicToolset); // Only pop if we have pushed... @@ -2874,7 +2825,7 @@ void LLAgent::endAnimationUpdateUI() #endif mViewsPushed = FALSE; } - + gAgent.setLookAt(LOOKAT_TARGET_CLEAR); if( gMorphView ) @@ -2946,6 +2897,10 @@ void LLAgent::endAnimationUpdateUI() LLNavigationBar::getInstance()->setVisible(FALSE); gStatusBar->setVisibleForMouselook(false); + LLBottomTray::getInstance()->setVisible(FALSE); + + LLSideTray::getInstance()->setVisible(FALSE); + // clear out camera lag effect mCameraLag.clearVec(); @@ -2955,7 +2910,7 @@ void LLAgent::endAnimationUpdateUI() LLToolMgr::getInstance()->setCurrentToolset(gMouselookToolset); mViewsPushed = TRUE; - + // hide all floaters except the mini map #if 0 // Use this once all floaters are registered @@ -4275,7 +4230,7 @@ void LLAgent::changeCameraToCustomizeAvatar(BOOL avatar_animate, BOOL camera_ani gFocusMgr.setKeyboardFocus( NULL ); gFocusMgr.setMouseCapture( NULL ); - LLVOAvatar::onCustomizeStart(); + LLVOAvatarSelf::onCustomizeStart(); } if (mAvatarObject.notNull()) @@ -5239,15 +5194,15 @@ BOOL LLAgent::buildLocationString(std::string& str, ELocationFormat fmt) switch (fmt) { case LOCATION_FORMAT_LANDMARK: - buffer = llformat("%.32s (%d, %d, %d)", - region_name.c_str(), - pos_x, pos_y, pos_z); + buffer = llformat("%.100s", region_name.c_str()); break; case LOCATION_FORMAT_NORMAL: + buffer = llformat("%s", region_name.c_str()); + break; case LOCATION_FORMAT_FULL: buffer = llformat("%s (%d, %d, %d)", region_name.c_str(), - pos_x, pos_y, pos_z); + pos_x, pos_y, pos_z); break; } } @@ -5257,20 +5212,16 @@ BOOL LLAgent::buildLocationString(std::string& str, ELocationFormat fmt) switch (fmt) { case LOCATION_FORMAT_LANDMARK: - buffer = llformat("%.32s, %.32s (%d, %d, %d)", - parcel_name.c_str(), - region_name.c_str(), - pos_x, pos_y, pos_z); + buffer = llformat("%.100s", parcel_name.c_str()); break; case LOCATION_FORMAT_NORMAL: - buffer = llformat("%s/%s (%d, %d, %d)", + buffer = llformat("%s, %s", region_name.c_str(), - parcel_name.c_str(), - pos_x, pos_y, pos_z); + parcel_name.c_str()); break; case LOCATION_FORMAT_FULL: std::string sim_access_string = region->getSimAccessString(); - buffer = llformat("%s/%s (%d, %d, %d)%s%s", + buffer = llformat("%s, %s (%d, %d, %d)%s%s", region_name.c_str(), parcel_name.c_str(), pos_x, pos_y, pos_z, @@ -5445,7 +5396,7 @@ BOOL LLAgent::allowOperation(PermissionBit op, } -void LLAgent::getName(std::string& name) +void LLAgent::getName(std::string& name) const { name.clear(); @@ -5483,16 +5434,51 @@ void LLAgent::initOriginGlobal(const LLVector3d &origin_global) mAgentOriginGlobal = origin_global; } +BOOL LLAgent::leftButtonGrabbed() const +{ + return (!cameraMouselook() && mControlsTakenCount[CONTROL_LBUTTON_DOWN_INDEX] > 0) + || (cameraMouselook() && mControlsTakenCount[CONTROL_ML_LBUTTON_DOWN_INDEX] > 0) + || (!cameraMouselook() && mControlsTakenPassedOnCount[CONTROL_LBUTTON_DOWN_INDEX] > 0) + || (cameraMouselook() && mControlsTakenPassedOnCount[CONTROL_ML_LBUTTON_DOWN_INDEX] > 0); +} + +BOOL LLAgent::rotateGrabbed() const +{ + return (mControlsTakenCount[CONTROL_YAW_POS_INDEX] > 0) + || (mControlsTakenCount[CONTROL_YAW_NEG_INDEX] > 0); +} + +BOOL LLAgent::forwardGrabbed() const +{ + return (mControlsTakenCount[CONTROL_AT_POS_INDEX] > 0); +} + +BOOL LLAgent::backwardGrabbed() const +{ + return (mControlsTakenCount[CONTROL_AT_NEG_INDEX] > 0); +} + +BOOL LLAgent::upGrabbed() const +{ + return (mControlsTakenCount[CONTROL_UP_POS_INDEX] > 0); +} + +BOOL LLAgent::downGrabbed() const +{ + return (mControlsTakenCount[CONTROL_UP_NEG_INDEX] > 0); +} + void update_group_floaters(const LLUUID& group_id) { LLFloaterGroupInfo::refreshGroup(group_id); + //*TODO Implement group update for Profile View // update avatar info - LLFloaterAvatarInfo* fa = LLFloaterReg::findTypedInstance<LLFloaterAvatarInfo>("preview_avatar", LLSD(gAgent.getID())); - if(fa) - { - fa->resetGroupList(); - } +// LLFloaterAvatarInfo* fa = LLFloaterReg::findTypedInstance<LLFloaterAvatarInfo>("preview_avatar", LLSD(gAgent.getID())); +// if(fa) +// { +// fa->resetGroupList(); +// } if (gIMMgr) { @@ -5928,9 +5914,9 @@ void LLAgent::processControlRelease(LLMessageSystem *msg, void **) //static void LLAgent::processAgentCachedTextureResponse(LLMessageSystem *mesgsys, void **user_data) { - gAgent.mNumPendingQueries--; + gAgentQueryManager.mNumPendingQueries--; - LLVOAvatar* avatarp = gAgent.getAvatarObject(); + LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); if (!avatarp || avatarp->isDead()) { llwarns << "No avatar for user in cached texture update!" << llendl; @@ -5960,12 +5946,12 @@ void LLAgent::processAgentCachedTextureResponse(LLMessageSystem *mesgsys, void * if (texture_id.notNull() && (S32)texture_index < BAKED_NUM_INDICES - && gAgent.mActiveCacheQueries[ texture_index ] == query_id) + && gAgentQueryManager.mActiveCacheQueries[texture_index] == query_id) { //llinfos << "Received cached texture " << (U32)texture_index << ": " << texture_id << llendl; - avatarp->setCachedBakedTexture(getTextureIndex((EBakedTextureIndex)texture_index), texture_id); + avatarp->setCachedBakedTexture(LLVOAvatarDictionary::bakedToLocalTextureIndex((EBakedTextureIndex)texture_index), texture_id); //avatarp->setTETexture( LLVOAvatar::sBakedTextureIndices[texture_index], texture_id ); - gAgent.mActiveCacheQueries[ texture_index ] = 0; + gAgentQueryManager.mActiveCacheQueries[texture_index] = 0; num_results++; } } @@ -5974,7 +5960,7 @@ void LLAgent::processAgentCachedTextureResponse(LLMessageSystem *mesgsys, void * avatarp->updateMeshTextures(); - if (gAgent.mNumPendingQueries == 0) + if (gAgentQueryManager.mNumPendingQueries == 0) { // RN: not sure why composites are disabled at this point avatarp->setCompositeUpdatesEnabled(TRUE); @@ -5984,8 +5970,7 @@ void LLAgent::processAgentCachedTextureResponse(LLMessageSystem *mesgsys, void * BOOL LLAgent::anyControlGrabbed() const { - U32 i; - for (i = 0; i < TOTAL_CONTROLS; i++) + for (U32 i = 0; i < TOTAL_CONTROLS; i++) { if (gAgent.mControlsTakenCount[i] > 0) return TRUE; @@ -6082,7 +6067,7 @@ bool LLAgent::teleportCore(bool is_local) // hide land floater too - it'll be out of date LLFloaterLand::hideInstance(); - + LLViewerParcelMgr::getInstance()->deselectLand(); // Close all pie menus, deselect land, etc. @@ -6382,1006 +6367,133 @@ void LLAgent::requestLeaveGodMode() sendReliableMessage(); } -// wearables -LLAgent::createStandardWearablesAllDoneCallback::~createStandardWearablesAllDoneCallback() -{ - gAgent.createStandardWearablesAllDone(); -} - -LLAgent::sendAgentWearablesUpdateCallback::~sendAgentWearablesUpdateCallback() -{ - gAgent.sendAgentWearablesUpdate(); -} - -LLAgent::addWearableToAgentInventoryCallback::addWearableToAgentInventoryCallback( - LLPointer<LLRefCount> cb, S32 index, LLWearable* wearable, U32 todo) : - mIndex(index), - mWearable(wearable), - mTodo(todo), - mCB(cb) -{ -} - -void LLAgent::addWearableToAgentInventoryCallback::fire(const LLUUID& inv_item) +//----------------------------------------------------------------------------- +// sendAgentSetAppearance() +//----------------------------------------------------------------------------- +void LLAgent::sendAgentSetAppearance() { - if (inv_item.isNull()) - return; - - gAgent.addWearabletoAgentInventoryDone(mIndex, inv_item, mWearable); + if (mAvatarObject.isNull()) return; - if (mTodo & CALL_UPDATE) - { - gAgent.sendAgentWearablesUpdate(); - } - if (mTodo & CALL_RECOVERDONE) - { - gAgent.recoverMissingWearableDone(); - } - /* - * Do this for every one in the loop - */ - if (mTodo & CALL_CREATESTANDARDDONE) - { - gAgent.createStandardWearablesDone(mIndex); - } - if (mTodo & CALL_MAKENEWOUTFITDONE) + if (gAgentQueryManager.mNumPendingQueries > 0 && !gAgent.cameraCustomizeAvatar()) { - gAgent.makeNewOutfitDone(mIndex); + return; } -} -void LLAgent::addWearabletoAgentInventoryDone( - S32 index, - const LLUUID& item_id, - LLWearable* wearable) -{ - if (item_id.isNull()) - return; - LLUUID old_item_id = mWearableEntry[index].mItemID; - mWearableEntry[index].mItemID = item_id; - mWearableEntry[index].mWearable = wearable; - if (old_item_id.notNull()) - gInventory.addChangedMask(LLInventoryObserver::LABEL, old_item_id); - gInventory.addChangedMask(LLInventoryObserver::LABEL, item_id); - LLViewerInventoryItem* item = gInventory.getItem(item_id); - if(item && wearable) - { - // We're changing the asset id, so we both need to set it - // locally via setAssetUUID() and via setTransactionID() which - // will be decoded on the server. JC - item->setAssetUUID(wearable->getID()); - item->setTransactionID(wearable->getTransactionID()); - gInventory.addChangedMask(LLInventoryObserver::INTERNAL, item_id); - item->updateServer(FALSE); - } - gInventory.notifyObservers(); -} + llinfos << "TAT: Sent AgentSetAppearance: " << mAvatarObject->getBakedStatusForPrintout() << llendl; + //dumpAvatarTEs( "sendAgentSetAppearance()" ); -void LLAgent::sendAgentWearablesUpdate() -{ - // First make sure that we have inventory items for each wearable - S32 i; - for(i=0; i < WT_COUNT; ++i) - { - LLWearable* wearable = mWearableEntry[ i ].mWearable; - if (wearable) - { - if( mWearableEntry[ i ].mItemID.isNull() ) - { - LLPointer<LLInventoryCallback> cb = - new addWearableToAgentInventoryCallback( - LLPointer<LLRefCount>(NULL), - i, - wearable, - addWearableToAgentInventoryCallback::CALL_NONE); - addWearableToAgentInventory(cb, wearable); - } - else - { - gInventory.addChangedMask( LLInventoryObserver::LABEL, - mWearableEntry[i].mItemID ); - } - } - } + LLMessageSystem* msg = gMessageSystem; + msg->newMessageFast(_PREHASH_AgentSetAppearance); + msg->nextBlockFast(_PREHASH_AgentData); + msg->addUUIDFast(_PREHASH_AgentID, getID()); + msg->addUUIDFast(_PREHASH_SessionID, getSessionID()); - // Then make sure the inventory is in sync with the avatar. - gInventory.notifyObservers(); + // correct for the collision tolerance (to make it look like the + // agent is actually walking on the ground/object) + // NOTE -- when we start correcting all of the other Havok geometry + // to compensate for the COLLISION_TOLERANCE ugliness we will have + // to tweak this number again + const LLVector3 body_size = mAvatarObject->mBodySize; + msg->addVector3Fast(_PREHASH_Size, body_size); - // Send the AgentIsNowWearing - gMessageSystem->newMessageFast(_PREHASH_AgentIsNowWearing); + // To guard against out of order packets + // Note: always start by sending 1. This resets the server's count. 0 on the server means "uninitialized" + mAppearanceSerialNum++; + msg->addU32Fast(_PREHASH_SerialNum, mAppearanceSerialNum ); - gMessageSystem->nextBlockFast(_PREHASH_AgentData); - gMessageSystem->addUUIDFast(_PREHASH_AgentID, getID()); - gMessageSystem->addUUIDFast(_PREHASH_SessionID, getSessionID()); + // is texture data current relative to wearables? + // KLW - TAT this will probably need to check the local queue. + BOOL textures_current = mAvatarObject->areTexturesCurrent(); - lldebugs << "sendAgentWearablesUpdate()" << llendl; - for(i=0; i < WT_COUNT; ++i) + for(U8 baked_index = 0; baked_index < BAKED_NUM_INDICES; baked_index++ ) { - gMessageSystem->nextBlockFast(_PREHASH_WearableData); - - U8 type_u8 = (U8)i; - gMessageSystem->addU8Fast(_PREHASH_WearableType, type_u8 ); + const ETextureIndex texture_index = LLVOAvatarDictionary::bakedToLocalTextureIndex((EBakedTextureIndex)baked_index); - LLWearable* wearable = mWearableEntry[ i ].mWearable; - if( wearable ) + // if we're not wearing a skirt, we don't need the texture to be baked + if (texture_index == TEX_SKIRT_BAKED && !mAvatarObject->isWearingWearableType(WT_SKIRT)) { - //llinfos << "Sending wearable " << wearable->getName() << llendl; - gMessageSystem->addUUIDFast(_PREHASH_ItemID, mWearableEntry[ i ].mItemID ); + continue; } - else + + // IMG_DEFAULT_AVATAR means not baked + if (!mAvatarObject->isTextureDefined(texture_index)) { - //llinfos << "Not wearing wearable type " << LLWearable::typeToTypeName((EWearableType)i) << llendl; - gMessageSystem->addUUIDFast(_PREHASH_ItemID, LLUUID::null ); + textures_current = FALSE; + break; } - - lldebugs << " " << LLWearable::typeToTypeLabel((EWearableType)i) << ": " << (wearable ? wearable->getID() : LLUUID::null) << llendl; } - gAgent.sendReliableMessage(); -} -void LLAgent::saveWearable( EWearableType type, BOOL send_update ) -{ - LLWearable* old_wearable = mWearableEntry[(S32)type].mWearable; - if( old_wearable && (old_wearable->isDirty() || old_wearable->isOldVersion()) ) + // only update cache entries if we have all our baked textures + if (textures_current) { - LLWearable* new_wearable = gWearableList.createCopyFromAvatar( old_wearable ); - mWearableEntry[(S32)type].mWearable = new_wearable; - - LLInventoryItem* item = gInventory.getItem(mWearableEntry[(S32)type].mItemID); - if( item ) - { - // Update existing inventory item - LLPointer<LLViewerInventoryItem> template_item = - new LLViewerInventoryItem(item->getUUID(), - item->getParentUUID(), - item->getPermissions(), - new_wearable->getID(), - new_wearable->getAssetType(), - item->getInventoryType(), - item->getName(), - item->getDescription(), - item->getSaleInfo(), - item->getFlags(), - item->getCreationDate()); - template_item->setTransactionID(new_wearable->getTransactionID()); - template_item->updateServer(FALSE); - gInventory.updateItem(template_item); - } - else + llinfos << "TAT: Sending cached texture data" << llendl; + for (U8 baked_index = 0; baked_index < BAKED_NUM_INDICES; baked_index++) { - // Add a new inventory item (shouldn't ever happen here) - U32 todo = addWearableToAgentInventoryCallback::CALL_NONE; - if (send_update) + const LLVOAvatarDictionary::BakedEntry *baked_dict = LLVOAvatarDictionary::getInstance()->getBakedTexture((EBakedTextureIndex)baked_index); + LLUUID hash; + for (U8 i=0; i < baked_dict->mWearables.size(); i++) + { + // EWearableType wearable_type = gBakedWearableMap[baked_index][wearable_num]; + const EWearableType wearable_type = baked_dict->mWearables[i]; + // MULTI-WEARABLE: fixed to 0th - extend to everything once messaging works. + const LLWearable* wearable = gAgentWearables.getWearable(wearable_type,0); + if (wearable) + { + hash ^= wearable->getID(); + } + } + if (hash.notNull()) { - todo |= addWearableToAgentInventoryCallback::CALL_UPDATE; + hash ^= baked_dict->mWearablesHashID; } - LLPointer<LLInventoryCallback> cb = - new addWearableToAgentInventoryCallback( - LLPointer<LLRefCount>(NULL), - (S32)type, - new_wearable, - todo); - addWearableToAgentInventory(cb, new_wearable); - return; - } - - getAvatarObject()->wearableUpdated( type ); - if( send_update ) - { - sendAgentWearablesUpdate(); - } - } -} + const ETextureIndex texture_index = LLVOAvatarDictionary::bakedToLocalTextureIndex((EBakedTextureIndex)baked_index); -void LLAgent::saveWearableAs( - EWearableType type, - const std::string& new_name, - BOOL save_in_lost_and_found) -{ - if(!isWearableCopyable(type)) - { - llwarns << "LLAgent::saveWearableAs() not copyable." << llendl; - return; - } - LLWearable* old_wearable = getWearable(type); - if(!old_wearable) - { - llwarns << "LLAgent::saveWearableAs() no old wearable." << llendl; - return; - } - LLInventoryItem* item = gInventory.getItem(mWearableEntry[type].mItemID); - if(!item) - { - llwarns << "LLAgent::saveWearableAs() no inventory item." << llendl; - return; - } - std::string trunc_name(new_name); - LLStringUtil::truncate(trunc_name, DB_INV_ITEM_NAME_STR_LEN); - LLWearable* new_wearable = gWearableList.createCopyFromAvatar( - old_wearable, - trunc_name); - LLPointer<LLInventoryCallback> cb = - new addWearableToAgentInventoryCallback( - LLPointer<LLRefCount>(NULL), - type, - new_wearable, - addWearableToAgentInventoryCallback::CALL_UPDATE); - LLUUID category_id; - if (save_in_lost_and_found) - { - category_id = gInventory.findCategoryUUIDForType( - LLAssetType::AT_LOST_AND_FOUND); + msg->nextBlockFast(_PREHASH_WearableData); + msg->addUUIDFast(_PREHASH_CacheID, hash); + msg->addU8Fast(_PREHASH_TextureIndex, (U8)texture_index); + } + msg->nextBlockFast(_PREHASH_ObjectData); + mAvatarObject->packTEMessage( gMessageSystem ); } else { - // put in same folder as original - category_id = item->getParentUUID(); + // If the textures aren't baked, send NULL for texture IDs + // This means the baked texture IDs on the server will be untouched. + // Once all textures are baked, another AvatarAppearance message will be sent to update the TEs + msg->nextBlockFast(_PREHASH_ObjectData); + gMessageSystem->addBinaryDataFast(_PREHASH_TextureEntry, NULL, 0); } - copy_inventory_item( - gAgent.getID(), - item->getPermissions().getOwner(), - item->getUUID(), - category_id, - new_name, - cb); -/* - LLWearable* old_wearable = getWearable( type ); - if( old_wearable ) + S32 transmitted_params = 0; + for (LLViewerVisualParam* param = (LLViewerVisualParam*)mAvatarObject->getFirstVisualParam(); + param; + param = (LLViewerVisualParam*)mAvatarObject->getNextVisualParam()) { - std::string old_name = old_wearable->getName(); - old_wearable->setName( new_name ); - LLWearable* new_wearable = gWearableList.createCopyFromAvatar( old_wearable ); - old_wearable->setName( old_name ); - - LLUUID category_id; - LLInventoryItem* item = gInventory.getItem( mWearableEntry[ type ].mItemID ); - if( item ) + if (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE) { - new_wearable->setPermissions(item->getPermissions()); - if (save_in_lost_and_found) - { - category_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_LOST_AND_FOUND); - } - else - { - // put in same folder as original - category_id = item->getParentUUID(); - } - LLInventoryView* view = LLInventoryView::getActiveInventory(); - if(view) - { - view->getPanel()->setSelection(item->getUUID(), TAKE_FOCUS_NO); - } + msg->nextBlockFast(_PREHASH_VisualParam ); + + // We don't send the param ids. Instead, we assume that the receiver has the same params in the same sequence. + const F32 param_value = param->getWeight(); + const U8 new_weight = F32_to_U8(param_value, param->getMinWeight(), param->getMaxWeight()); + msg->addU8Fast(_PREHASH_ParamValue, new_weight ); + transmitted_params++; } - - mWearableEntry[ type ].mWearable = new_wearable; - LLPointer<LLInventoryCallback> cb = - new addWearableToAgentInventoryCallback( - LLPointer<LLRefCount>(NULL), - type, - addWearableToAgentInventoryCallback::CALL_UPDATE); - addWearableToAgentInventory(cb, new_wearable, category_id); } -*/ -} -void LLAgent::revertWearable( EWearableType type ) -{ - LLWearable* wearable = mWearableEntry[(S32)type].mWearable; - if( wearable ) - { - wearable->writeToAvatar( TRUE ); - } - sendAgentSetAppearance(); +// llinfos << "Avatar XML num VisualParams transmitted = " << transmitted_params << llendl; + sendReliableMessage(); } -void LLAgent::revertAllWearables() +void LLAgent::sendAgentDataUpdateRequest() { - for( S32 i=0; i < WT_COUNT; i++ ) - { - revertWearable( (EWearableType)i ); - } -} - -void LLAgent::saveAllWearables() -{ - //if(!gInventory.isLoaded()) - //{ - // return; - //} - - for( S32 i=0; i < WT_COUNT; i++ ) - { - saveWearable( (EWearableType)i, FALSE ); - } - sendAgentWearablesUpdate(); -} - -// Called when the user changes the name of a wearable inventory item that is currenlty being worn. -void LLAgent::setWearableName( const LLUUID& item_id, const std::string& new_name ) -{ - for( S32 i=0; i < WT_COUNT; i++ ) - { - if( mWearableEntry[i].mItemID == item_id ) - { - LLWearable* old_wearable = mWearableEntry[i].mWearable; - llassert( old_wearable ); - - std::string old_name = old_wearable->getName(); - old_wearable->setName( new_name ); - LLWearable* new_wearable = gWearableList.createCopy( old_wearable ); - LLInventoryItem* item = gInventory.getItem(item_id); - if(item) - { - new_wearable->setPermissions(item->getPermissions()); - } - old_wearable->setName( old_name ); - - mWearableEntry[i].mWearable = new_wearable; - sendAgentWearablesUpdate(); - break; - } - } -} - - -BOOL LLAgent::isWearableModifiable(EWearableType type) -{ - LLUUID item_id = getWearableItem(type); - if(!item_id.isNull()) - { - LLInventoryItem* item = gInventory.getItem(item_id); - if(item && item->getPermissions().allowModifyBy(gAgent.getID(), - gAgent.getGroupID())) - { - return TRUE; - } - } - return FALSE; -} - -BOOL LLAgent::isWearableCopyable(EWearableType type) -{ - LLUUID item_id = getWearableItem(type); - if(!item_id.isNull()) - { - LLInventoryItem* item = gInventory.getItem(item_id); - if(item && item->getPermissions().allowCopyBy(gAgent.getID(), - gAgent.getGroupID())) - { - return TRUE; - } - } - return FALSE; -} - -U32 LLAgent::getWearablePermMask(EWearableType type) -{ - LLUUID item_id = getWearableItem(type); - if(!item_id.isNull()) - { - LLInventoryItem* item = gInventory.getItem(item_id); - if(item) - { - return item->getPermissions().getMaskOwner(); - } - } - return PERM_NONE; -} - -LLInventoryItem* LLAgent::getWearableInventoryItem(EWearableType type) -{ - LLUUID item_id = getWearableItem(type); - LLInventoryItem* item = NULL; - if(item_id.notNull()) - { - item = gInventory.getItem(item_id); - } - return item; -} - -LLWearable* LLAgent::getWearableFromWearableItem( const LLUUID& item_id ) -{ - for( S32 i=0; i < WT_COUNT; i++ ) - { - if( mWearableEntry[i].mItemID == item_id ) - { - return mWearableEntry[i].mWearable; - } - } - return NULL; -} - - -void LLAgent::sendAgentWearablesRequest() -{ - gMessageSystem->newMessageFast(_PREHASH_AgentWearablesRequest); - gMessageSystem->nextBlockFast(_PREHASH_AgentData); - gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID() ); - gMessageSystem->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID() ); - sendReliableMessage(); -} - -// Used to enable/disable menu items. -// static -BOOL LLAgent::selfHasWearable( void* userdata ) -{ - EWearableType type = (EWearableType)(intptr_t)userdata; - return gAgent.getWearable( type ) != NULL; -} - -BOOL LLAgent::isWearingItem( const LLUUID& item_id ) -{ - return (getWearableFromWearableItem( item_id ) != NULL); -} - -// static -void LLAgent::processAgentInitialWearablesUpdate( LLMessageSystem* mesgsys, void** user_data ) -{ - // We should only receive this message a single time. Ignore subsequent AgentWearablesUpdates - // that may result from AgentWearablesRequest having been sent more than once. - static bool first = true; - if (!first) return; - first = false; - - LLUUID agent_id; - gMessageSystem->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, agent_id ); - - LLVOAvatar* avatar = gAgent.getAvatarObject(); - if( avatar && (agent_id == avatar->getID()) ) - { - gMessageSystem->getU32Fast(_PREHASH_AgentData, _PREHASH_SerialNum, gAgent.mAgentWearablesUpdateSerialNum ); - - S32 num_wearables = gMessageSystem->getNumberOfBlocksFast(_PREHASH_WearableData); - if( num_wearables < 4 ) - { - // Transitional state. Avatars should always have at least their body parts (hair, eyes, shape and skin). - // The fact that they don't have any here (only a dummy is sent) implies that this account existed - // before we had wearables, or that the database has gotten messed up. - return; - } - - //lldebugs << "processAgentInitialWearablesUpdate()" << llendl; - // Add wearables - LLUUID asset_id_array[ WT_COUNT ]; - S32 i; - for( i=0; i < num_wearables; i++ ) - { - U8 type_u8 = 0; - gMessageSystem->getU8Fast(_PREHASH_WearableData, _PREHASH_WearableType, type_u8, i ); - if( type_u8 >= WT_COUNT ) - { - continue; - } - EWearableType type = (EWearableType) type_u8; - - LLUUID item_id; - gMessageSystem->getUUIDFast(_PREHASH_WearableData, _PREHASH_ItemID, item_id, i ); - - LLUUID asset_id; - gMessageSystem->getUUIDFast(_PREHASH_WearableData, _PREHASH_AssetID, asset_id, i ); - if( asset_id.isNull() ) - { - LLWearable::removeFromAvatar( type, FALSE ); - } - else - { - LLAssetType::EType asset_type = LLWearable::typeToAssetType( type ); - if( asset_type == LLAssetType::AT_NONE ) - { - continue; - } - - gAgent.mWearableEntry[type].mItemID = item_id; - asset_id_array[type] = asset_id; - } - - lldebugs << " " << LLWearable::typeToTypeLabel(type) << llendl; - } - - // now that we have the asset ids...request the wearable assets - for( i = 0; i < WT_COUNT; i++ ) - { - if( !gAgent.mWearableEntry[i].mItemID.isNull() ) - { - gWearableList.getAsset( - asset_id_array[i], - LLStringUtil::null, - LLWearable::typeToAssetType( (EWearableType) i ), - LLAgent::onInitialWearableAssetArrived, (void*)(intptr_t)i ); - } - } - } -} - -// A single wearable that the avatar was wearing on start-up has arrived from the database. -// static -void LLAgent::onInitialWearableAssetArrived( LLWearable* wearable, void* userdata ) -{ - EWearableType type = (EWearableType)(intptr_t)userdata; - - LLVOAvatar* avatar = gAgent.getAvatarObject(); - if( !avatar ) - { - return; - } - - if( wearable ) - { - llassert( type == wearable->getType() ); - gAgent.mWearableEntry[ type ].mWearable = wearable; - - // disable composites if initial textures are baked - avatar->setupComposites(); - gAgent.queryWearableCache(); - - wearable->writeToAvatar( FALSE ); - avatar->setCompositeUpdatesEnabled(TRUE); - gInventory.addChangedMask( LLInventoryObserver::LABEL, gAgent.mWearableEntry[type].mItemID ); - } - else - { - // Somehow the asset doesn't exist in the database. - gAgent.recoverMissingWearable( type ); - } - - gInventory.notifyObservers(); - - // Have all the wearables that the avatar was wearing at log-in arrived? - if( !gAgent.mWearablesLoaded ) - { - gAgent.mWearablesLoaded = TRUE; - for( S32 i = 0; i < WT_COUNT; i++ ) - { - if( !gAgent.mWearableEntry[i].mItemID.isNull() && !gAgent.mWearableEntry[i].mWearable ) - { - gAgent.mWearablesLoaded = FALSE; - break; - } - } - } - - if( gAgent.mWearablesLoaded ) - { - // Make sure that the server's idea of the avatar's wearables actually match the wearables. - gAgent.sendAgentSetAppearance(); - - // Check to see if there are any baked textures that we hadn't uploaded before we logged off last time. - // If there are any, schedule them to be uploaded as soon as the layer textures they depend on arrive. - if( !gAgent.cameraCustomizeAvatar() ) - { - avatar->requestLayerSetUploads(); - } - } -} - -// Normally, all wearables referred to "AgentWearablesUpdate" will correspond to actual assets in the -// database. If for some reason, we can't load one of those assets, we can try to reconstruct it so that -// the user isn't left without a shape, for example. (We can do that only after the inventory has loaded.) -void LLAgent::recoverMissingWearable( EWearableType type ) -{ - // Try to recover by replacing missing wearable with a new one. - LLNotifications::instance().add("ReplacedMissingWearable"); - lldebugs << "Wearable " << LLWearable::typeToTypeLabel( type ) << " could not be downloaded. Replaced inventory item with default wearable." << llendl; - LLWearable* new_wearable = gWearableList.createNewWearable(type); - - S32 type_s32 = (S32) type; - mWearableEntry[type_s32].mWearable = new_wearable; - new_wearable->writeToAvatar( TRUE ); - - // Add a new one in the lost and found folder. - // (We used to overwrite the "not found" one, but that could potentially - // destory content.) JC - LLUUID lost_and_found_id = - gInventory.findCategoryUUIDForType(LLAssetType::AT_LOST_AND_FOUND); - LLPointer<LLInventoryCallback> cb = - new addWearableToAgentInventoryCallback( - LLPointer<LLRefCount>(NULL), - type_s32, - new_wearable, - addWearableToAgentInventoryCallback::CALL_RECOVERDONE); - addWearableToAgentInventory( cb, new_wearable, lost_and_found_id, TRUE); -} - -void LLAgent::recoverMissingWearableDone() -{ - // Have all the wearables that the avatar was wearing at log-in arrived or been fabricated? - mWearablesLoaded = TRUE; - for( S32 i = 0; i < WT_COUNT; i++ ) - { - if( !mWearableEntry[i].mItemID.isNull() && !mWearableEntry[i].mWearable ) - { - mWearablesLoaded = FALSE; - break; - } - } - - if( mWearablesLoaded ) - { - // Make sure that the server's idea of the avatar's wearables actually match the wearables. - sendAgentSetAppearance(); - } - else - { - gInventory.addChangedMask( LLInventoryObserver::LABEL, LLUUID::null ); - gInventory.notifyObservers(); - } -} - -void LLAgent::createStandardWearables(BOOL female) -{ - llwarns << "Creating Standard " << (female ? "female" : "male" ) - << " Wearables" << llendl; - - if (mAvatarObject.isNull()) - { - return; - } - - if(female) mAvatarObject->setSex(SEX_FEMALE); - else mAvatarObject->setSex(SEX_MALE); - - BOOL create[WT_COUNT] = - { - TRUE, //WT_SHAPE - TRUE, //WT_SKIN - TRUE, //WT_HAIR - TRUE, //WT_EYES - TRUE, //WT_SHIRT - TRUE, //WT_PANTS - TRUE, //WT_SHOES - TRUE, //WT_SOCKS - FALSE, //WT_JACKET - FALSE, //WT_GLOVES - TRUE, //WT_UNDERSHIRT - TRUE, //WT_UNDERPANTS - FALSE //WT_SKIRT - }; - - for( S32 i=0; i < WT_COUNT; i++ ) - { - bool once = false; - LLPointer<LLRefCount> donecb = NULL; - if( create[i] ) - { - if (!once) - { - once = true; - donecb = new createStandardWearablesAllDoneCallback; - } - llassert( mWearableEntry[i].mWearable == NULL ); - LLWearable* wearable = gWearableList.createNewWearable((EWearableType)i); - mWearableEntry[i].mWearable = wearable; - // no need to update here... - LLPointer<LLInventoryCallback> cb = - new addWearableToAgentInventoryCallback( - donecb, - i, - wearable, - addWearableToAgentInventoryCallback::CALL_CREATESTANDARDDONE); - addWearableToAgentInventory(cb, wearable, LLUUID::null, FALSE); - } - } -} -void LLAgent::createStandardWearablesDone(S32 index) -{ - LLWearable* wearable = mWearableEntry[index].mWearable; - - if (wearable) - { - wearable->writeToAvatar(TRUE); - } -} - -void LLAgent::createStandardWearablesAllDone() -{ - // ... because sendAgentWearablesUpdate will notify inventory - // observers. - mWearablesLoaded = TRUE; - sendAgentWearablesUpdate(); - sendAgentSetAppearance(); - - // Treat this as the first texture entry message, if none received yet - mAvatarObject->onFirstTEMessageReceived(); -} - -void LLAgent::makeNewOutfit( - const std::string& new_folder_name, - const LLDynamicArray<S32>& wearables_to_include, - const LLDynamicArray<S32>& attachments_to_include, - BOOL rename_clothing) -{ - if (mAvatarObject.isNull()) - { - return; - } - - // First, make a folder in the Clothes directory. - LLUUID folder_id = gInventory.createNewCategory( - gInventory.findCategoryUUIDForType(LLAssetType::AT_CLOTHING), - LLAssetType::AT_NONE, - new_folder_name); - - bool found_first_item = false; - - /////////////////// - // Wearables - - if( wearables_to_include.count() ) - { - // Then, iterate though each of the wearables and save copies of them in the folder. - S32 i; - S32 count = wearables_to_include.count(); - LLDynamicArray<LLUUID> delete_items; - LLPointer<LLRefCount> cbdone = NULL; - for( i = 0; i < count; ++i ) - { - S32 index = wearables_to_include[i]; - LLWearable* old_wearable = mWearableEntry[ index ].mWearable; - if( old_wearable ) - { - std::string new_name; - LLWearable* new_wearable; - new_wearable = gWearableList.createCopy(old_wearable); - if (rename_clothing) - { - new_name = new_folder_name; - new_name.append(" "); - new_name.append(old_wearable->getTypeLabel()); - LLStringUtil::truncate(new_name, DB_INV_ITEM_NAME_STR_LEN); - new_wearable->setName(new_name); - } - - LLViewerInventoryItem* item = gInventory.getItem(mWearableEntry[index].mItemID); - S32 todo = addWearableToAgentInventoryCallback::CALL_NONE; - if (!found_first_item) - { - found_first_item = true; - /* set the focus to the first item */ - todo |= addWearableToAgentInventoryCallback::CALL_MAKENEWOUTFITDONE; - /* send the agent wearables update when done */ - cbdone = new sendAgentWearablesUpdateCallback; - } - LLPointer<LLInventoryCallback> cb = - new addWearableToAgentInventoryCallback( - cbdone, - index, - new_wearable, - todo); - if (isWearableCopyable((EWearableType)index)) - { - copy_inventory_item( - gAgent.getID(), - item->getPermissions().getOwner(), - item->getUUID(), - folder_id, - new_name, - cb); - } - else - { - move_inventory_item( - gAgent.getID(), - gAgent.getSessionID(), - item->getUUID(), - folder_id, - new_name, - cb); - } - } - } - gInventory.notifyObservers(); - } - - - /////////////////// - // Attachments - - if( attachments_to_include.count() ) - { - BOOL msg_started = FALSE; - LLMessageSystem* msg = gMessageSystem; - for( S32 i = 0; i < attachments_to_include.count(); i++ ) - { - S32 attachment_pt = attachments_to_include[i]; - LLViewerJointAttachment* attachment = get_if_there(mAvatarObject->mAttachmentPoints, attachment_pt, (LLViewerJointAttachment*)NULL ); - if(!attachment) continue; - LLViewerObject* attached_object = attachment->getObject(); - if(!attached_object) continue; - const LLUUID& item_id = attachment->getItemID(); - if(item_id.isNull()) continue; - LLInventoryItem* item = gInventory.getItem(item_id); - if(!item) continue; - if(!msg_started) - { - msg_started = TRUE; - msg->newMessage("CreateNewOutfitAttachments"); - msg->nextBlock("AgentData"); - msg->addUUID("AgentID", getID()); - msg->addUUID("SessionID", getSessionID()); - msg->nextBlock("HeaderData"); - msg->addUUID("NewFolderID", folder_id); - } - msg->nextBlock("ObjectData"); - msg->addUUID("OldItemID", item_id); - msg->addUUID("OldFolderID", item->getParentUUID()); - } - - if( msg_started ) - { - sendReliableMessage(); - } - - } -} - -void LLAgent::makeNewOutfitDone(S32 index) -{ - LLUUID first_item_id = mWearableEntry[index].mItemID; - // Open the inventory and select the first item we added. - if( first_item_id.notNull() ) - { - LLInventoryView* view = LLInventoryView::getActiveInventory(); - if(view) - { - view->getPanel()->setSelection(first_item_id, TAKE_FOCUS_NO); - } - } -} - - -void LLAgent::addWearableToAgentInventory( - LLPointer<LLInventoryCallback> cb, - LLWearable* wearable, - const LLUUID& category_id, - BOOL notify) -{ - create_inventory_item( - gAgent.getID(), - gAgent.getSessionID(), - category_id, - wearable->getTransactionID(), - wearable->getName(), - wearable->getDescription(), - wearable->getAssetType(), - LLInventoryType::IT_WEARABLE, - wearable->getType(), - wearable->getPermissions().getMaskNextOwner(), - cb); -} - -//----------------------------------------------------------------------------- -// sendAgentSetAppearance() -//----------------------------------------------------------------------------- -void LLAgent::sendAgentSetAppearance() -{ - if (mAvatarObject.isNull()) return; - - if (mNumPendingQueries > 0 && !gAgent.cameraCustomizeAvatar()) - { - return; - } - - - llinfos << "TAT: Sent AgentSetAppearance: " << mAvatarObject->getBakedStatusForPrintout() << llendl; - //dumpAvatarTEs( "sendAgentSetAppearance()" ); - - LLMessageSystem* msg = gMessageSystem; - msg->newMessageFast(_PREHASH_AgentSetAppearance); - msg->nextBlockFast(_PREHASH_AgentData); - msg->addUUIDFast(_PREHASH_AgentID, getID()); - msg->addUUIDFast(_PREHASH_SessionID, getSessionID()); - - // correct for the collision tolerance (to make it look like the - // agent is actually walking on the ground/object) - // NOTE -- when we start correcting all of the other Havok geometry - // to compensate for the COLLISION_TOLERANCE ugliness we will have - // to tweak this number again - const LLVector3 body_size = mAvatarObject->mBodySize; - msg->addVector3Fast(_PREHASH_Size, body_size); - - // To guard against out of order packets - // Note: always start by sending 1. This resets the server's count. 0 on the server means "uninitialized" - mAppearanceSerialNum++; - msg->addU32Fast(_PREHASH_SerialNum, mAppearanceSerialNum ); - - // is texture data current relative to wearables? - // KLW - TAT this will probably need to check the local queue. - BOOL textures_current = !mAvatarObject->hasPendingBakedUploads() && mWearablesLoaded; - - for(U8 baked_index = 0; baked_index < BAKED_NUM_INDICES; baked_index++ ) - { - const ETextureIndex texture_index = getTextureIndex((EBakedTextureIndex)baked_index); - - // if we're not wearing a skirt, we don't need the texture to be baked - if (texture_index == TEX_SKIRT_BAKED && !mAvatarObject->isWearingWearableType(WT_SKIRT)) - { - continue; - } - - // IMG_DEFAULT_AVATAR means not baked - if (!mAvatarObject->isTextureDefined(texture_index)) - { - textures_current = FALSE; - break; - } - } - - // only update cache entries if we have all our baked textures - if (textures_current) - { - llinfos << "TAT: Sending cached texture data" << llendl; - for (U8 baked_index = 0; baked_index < BAKED_NUM_INDICES; baked_index++) - { - const LLVOAvatarDictionary::WearableDictionaryEntry *wearable_dict = LLVOAvatarDictionary::getInstance()->getWearable((EBakedTextureIndex)baked_index); - LLUUID hash; - for (U8 i=0; i < wearable_dict->mWearablesVec.size(); i++) - { - // EWearableType wearable_type = gBakedWearableMap[baked_index][wearable_num]; - const EWearableType wearable_type = wearable_dict->mWearablesVec[i]; - const LLWearable* wearable = getWearable(wearable_type); - if (wearable) - { - hash ^= wearable->getID(); - } - } - if (hash.notNull()) - { - hash ^= wearable_dict->mHashID; - } - - const ETextureIndex texture_index = getTextureIndex((EBakedTextureIndex)baked_index); - - msg->nextBlockFast(_PREHASH_WearableData); - msg->addUUIDFast(_PREHASH_CacheID, hash); - msg->addU8Fast(_PREHASH_TextureIndex, (U8)texture_index); - } - msg->nextBlockFast(_PREHASH_ObjectData); - mAvatarObject->packTEMessage( gMessageSystem ); - } - else - { - // If the textures aren't baked, send NULL for texture IDs - // This means the baked texture IDs on the server will be untouched. - // Once all textures are baked, another AvatarAppearance message will be sent to update the TEs - msg->nextBlockFast(_PREHASH_ObjectData); - gMessageSystem->addBinaryDataFast(_PREHASH_TextureEntry, NULL, 0); - } - - - S32 transmitted_params = 0; - for (LLViewerVisualParam* param = (LLViewerVisualParam*)mAvatarObject->getFirstVisualParam(); - param; - param = (LLViewerVisualParam*)mAvatarObject->getNextVisualParam()) - { - if (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE) - { - msg->nextBlockFast(_PREHASH_VisualParam ); - - // We don't send the param ids. Instead, we assume that the receiver has the same params in the same sequence. - const F32 param_value = param->getWeight(); - const U8 new_weight = F32_to_U8(param_value, param->getMinWeight(), param->getMaxWeight()); - msg->addU8Fast(_PREHASH_ParamValue, new_weight ); - transmitted_params++; - } - } - -// llinfos << "Avatar XML num VisualParams transmitted = " << transmitted_params << llendl; - sendReliableMessage(); -} - -void LLAgent::sendAgentDataUpdateRequest() -{ - if(getID().isNull()) - return; // not logged in gMessageSystem->newMessageFast(_PREHASH_AgentDataUpdateRequest); gMessageSystem->nextBlockFast(_PREHASH_AgentData); - gMessageSystem->addUUIDFast(_PREHASH_AgentID, getID()); - gMessageSystem->addUUIDFast(_PREHASH_SessionID, getSessionID()); + gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID() ); + gMessageSystem->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); sendReliableMessage(); } @@ -7396,453 +6508,6 @@ void LLAgent::sendAgentUserInfoRequest() sendReliableMessage(); } -void LLAgent::removeWearable( EWearableType type ) -{ - LLWearable* old_wearable = mWearableEntry[ type ].mWearable; - - if ( (gAgent.isTeen()) - && (type == WT_UNDERSHIRT || type == WT_UNDERPANTS)) - { - // Can't take off underclothing in simple UI mode or on PG accounts - return; - } - - if( old_wearable ) - { - if( old_wearable->isDirty() ) - { - LLSD payload; - payload["wearable_type"] = (S32)type; - // Bring up view-modal dialog: Save changes? Yes, No, Cancel - LLNotifications::instance().add("WearableSave", LLSD(), payload, &LLAgent::onRemoveWearableDialog); - return; - } - else - { - removeWearableFinal( type ); - } - } -} - -// static -bool LLAgent::onRemoveWearableDialog(const LLSD& notification, const LLSD& response ) -{ - S32 option = LLNotification::getSelectedOption(notification, response); - EWearableType type = (EWearableType)notification["payload"]["wearable_type"].asInteger(); - switch( option ) - { - case 0: // "Save" - gAgent.saveWearable( type ); - gAgent.removeWearableFinal( type ); - break; - - case 1: // "Don't Save" - gAgent.removeWearableFinal( type ); - break; - - case 2: // "Cancel" - break; - - default: - llassert(0); - break; - } - return false; -} - -// Called by removeWearable() and onRemoveWearableDialog() to actually do the removal. -void LLAgent::removeWearableFinal( EWearableType type ) -{ - LLWearable* old_wearable = mWearableEntry[ type ].mWearable; - - gInventory.addChangedMask( LLInventoryObserver::LABEL, mWearableEntry[type].mItemID ); - - mWearableEntry[ type ].mWearable = NULL; - mWearableEntry[ type ].mItemID.setNull(); - - queryWearableCache(); - - if( old_wearable ) - { - old_wearable->removeFromAvatar( TRUE ); - } - - // Update the server - sendAgentWearablesUpdate(); - sendAgentSetAppearance(); - gInventory.notifyObservers(); -} - -void LLAgent::copyWearableToInventory( EWearableType type ) -{ - LLWearable* wearable = mWearableEntry[ type ].mWearable; - if( wearable ) - { - // Save the old wearable if it has changed. - if( wearable->isDirty() ) - { - wearable = gWearableList.createCopyFromAvatar( wearable ); - mWearableEntry[ type ].mWearable = wearable; - } - - // Make a new entry in the inventory. (Put it in the same folder as the original item if possible.) - LLUUID category_id; - LLInventoryItem* item = gInventory.getItem( mWearableEntry[ type ].mItemID ); - if( item ) - { - category_id = item->getParentUUID(); - wearable->setPermissions(item->getPermissions()); - } - LLPointer<LLInventoryCallback> cb = - new addWearableToAgentInventoryCallback( - LLPointer<LLRefCount>(NULL), - type, - wearable); - addWearableToAgentInventory(cb, wearable, category_id); - } -} - - -// A little struct to let setWearable() communicate more than one value with onSetWearableDialog(). -struct LLSetWearableData -{ - LLSetWearableData( const LLUUID& new_item_id, LLWearable* new_wearable ) : - mNewItemID( new_item_id ), mNewWearable( new_wearable ) {} - LLUUID mNewItemID; - LLWearable* mNewWearable; -}; - -BOOL LLAgent::needsReplacement(EWearableType wearableType, S32 remove) -{ - return TRUE; - /*if (remove) return TRUE; - - return getWearable(wearableType) ? TRUE : FALSE;*/ -} - -// Assumes existing wearables are not dirty. -void LLAgent::setWearableOutfit( - const LLInventoryItem::item_array_t& items, - const LLDynamicArray< LLWearable* >& wearables, - BOOL remove ) -{ - lldebugs << "setWearableOutfit() start" << llendl; - - BOOL wearables_to_remove[WT_COUNT]; - wearables_to_remove[WT_SHAPE] = FALSE; - wearables_to_remove[WT_SKIN] = FALSE; - wearables_to_remove[WT_HAIR] = FALSE; - wearables_to_remove[WT_EYES] = FALSE; - wearables_to_remove[WT_SHIRT] = remove; - wearables_to_remove[WT_PANTS] = remove; - wearables_to_remove[WT_SHOES] = remove; - wearables_to_remove[WT_SOCKS] = remove; - wearables_to_remove[WT_JACKET] = remove; - wearables_to_remove[WT_GLOVES] = remove; - wearables_to_remove[WT_UNDERSHIRT] = (!gAgent.isTeen()) & remove; - wearables_to_remove[WT_UNDERPANTS] = (!gAgent.isTeen()) & remove; - wearables_to_remove[WT_SKIRT] = remove; - - S32 count = wearables.count(); - llassert( items.count() == count ); - - S32 i; - for( i = 0; i < count; i++ ) - { - LLWearable* new_wearable = wearables[i]; - LLPointer<LLInventoryItem> new_item = items[i]; - - EWearableType type = new_wearable->getType(); - wearables_to_remove[type] = FALSE; - - LLWearable* old_wearable = mWearableEntry[ type ].mWearable; - if( old_wearable ) - { - const LLUUID& old_item_id = mWearableEntry[ type ].mItemID; - if( (old_wearable->getID() == new_wearable->getID()) && - (old_item_id == new_item->getUUID()) ) - { - lldebugs << "No change to wearable asset and item: " << LLWearable::typeToTypeName( type ) << llendl; - continue; - } - - gInventory.addChangedMask(LLInventoryObserver::LABEL, old_item_id); - - // Assumes existing wearables are not dirty. - if( old_wearable->isDirty() ) - { - llassert(0); - continue; - } - } - - mWearableEntry[ type ].mItemID = new_item->getUUID(); - mWearableEntry[ type ].mWearable = new_wearable; - } - - std::vector<LLWearable*> wearables_being_removed; - - for( i = 0; i < WT_COUNT; i++ ) - { - if( wearables_to_remove[i] ) - { - wearables_being_removed.push_back(mWearableEntry[ i ].mWearable); - mWearableEntry[ i ].mWearable = NULL; - - gInventory.addChangedMask(LLInventoryObserver::LABEL, mWearableEntry[ i ].mItemID); - mWearableEntry[ i ].mItemID.setNull(); - } - } - - gInventory.notifyObservers(); - - queryWearableCache(); - - std::vector<LLWearable*>::iterator wearable_iter; - - for( wearable_iter = wearables_being_removed.begin(); - wearable_iter != wearables_being_removed.end(); - ++wearable_iter) - { - LLWearable* wearablep = *wearable_iter; - if (wearablep) - { - wearablep->removeFromAvatar( TRUE ); - } - } - - for( i = 0; i < count; i++ ) - { - wearables[i]->writeToAvatar( TRUE ); - } - - // Start rendering & update the server - mWearablesLoaded = TRUE; - sendAgentWearablesUpdate(); - sendAgentSetAppearance(); - - lldebugs << "setWearableOutfit() end" << llendl; -} - - -// User has picked "wear on avatar" from a menu. -void LLAgent::setWearable( LLInventoryItem* new_item, LLWearable* new_wearable ) -{ - EWearableType type = new_wearable->getType(); - - LLWearable* old_wearable = mWearableEntry[ type ].mWearable; - if( old_wearable ) - { - const LLUUID& old_item_id = mWearableEntry[ type ].mItemID; - if( (old_wearable->getID() == new_wearable->getID()) && - (old_item_id == new_item->getUUID()) ) - { - lldebugs << "No change to wearable asset and item: " << LLWearable::typeToTypeName( type ) << llendl; - return; - } - - if( old_wearable->isDirty() ) - { - // Bring up modal dialog: Save changes? Yes, No, Cancel - LLSD payload; - payload["item_id"] = new_item->getUUID(); - LLNotifications::instance().add( "WearableSave", LLSD(), payload, boost::bind(LLAgent::onSetWearableDialog, _1, _2, new_wearable)); - return; - } - } - - setWearableFinal( new_item, new_wearable ); -} - -// static -bool LLAgent::onSetWearableDialog( const LLSD& notification, const LLSD& response, LLWearable* wearable ) -{ - S32 option = LLNotification::getSelectedOption(notification, response); - LLInventoryItem* new_item = gInventory.getItem( notification["payload"]["item_id"].asUUID()); - if( !new_item ) - { - delete wearable; - return false; - } - - switch( option ) - { - case 0: // "Save" - gAgent.saveWearable( wearable->getType() ); - gAgent.setWearableFinal( new_item, wearable ); - break; - - case 1: // "Don't Save" - gAgent.setWearableFinal( new_item, wearable ); - break; - - case 2: // "Cancel" - break; - - default: - llassert(0); - break; - } - - delete wearable; - return false; -} - -// Called from setWearable() and onSetWearableDialog() to actually set the wearable. -void LLAgent::setWearableFinal( LLInventoryItem* new_item, LLWearable* new_wearable ) -{ - EWearableType type = new_wearable->getType(); - - // Replace the old wearable with a new one. - llassert( new_item->getAssetUUID() == new_wearable->getID() ); - LLUUID old_item_id = mWearableEntry[ type ].mItemID; - mWearableEntry[ type ].mItemID = new_item->getUUID(); - mWearableEntry[ type ].mWearable = new_wearable; - - if (old_item_id.notNull()) - { - gInventory.addChangedMask( LLInventoryObserver::LABEL, old_item_id ); - gInventory.notifyObservers(); - } - - //llinfos << "LLVOAvatar::setWearable()" << llendl; - queryWearableCache(); - new_wearable->writeToAvatar( TRUE ); - - // Update the server - sendAgentWearablesUpdate(); - sendAgentSetAppearance(); -} - -void LLAgent::queryWearableCache() -{ - if (!mWearablesLoaded) - { - return; - } - - // Look up affected baked textures. - // If they exist: - // disallow updates for affected layersets (until dataserver responds with cache request.) - // If cache miss, turn updates back on and invalidate composite. - // If cache hit, modify baked texture entries. - // - // Cache requests contain list of hashes for each baked texture entry. - // Response is list of valid baked texture assets. (same message) - - gMessageSystem->newMessageFast(_PREHASH_AgentCachedTexture); - gMessageSystem->nextBlockFast(_PREHASH_AgentData); - gMessageSystem->addUUIDFast(_PREHASH_AgentID, getID()); - gMessageSystem->addUUIDFast(_PREHASH_SessionID, getSessionID()); - gMessageSystem->addS32Fast(_PREHASH_SerialNum, mTextureCacheQueryID); - - S32 num_queries = 0; - for (U8 baked_index = 0; baked_index < BAKED_NUM_INDICES; baked_index++ ) - { - const LLVOAvatarDictionary::WearableDictionaryEntry *wearable_dict = LLVOAvatarDictionary::getInstance()->getWearable((EBakedTextureIndex)baked_index); - LLUUID hash; - for (U8 i=0; i < wearable_dict->mWearablesVec.size(); i++) - { - // EWearableType wearable_type = gBakedWearableMap[baked_index][wearable_num]; - const EWearableType wearable_type = wearable_dict->mWearablesVec[i]; - const LLWearable* wearable = getWearable(wearable_type); - if (wearable) - { - hash ^= wearable->getID(); - } - } - if (hash.notNull()) - { - hash ^= wearable_dict->mHashID; - num_queries++; - // *NOTE: make sure at least one request gets packed - - //llinfos << "Requesting texture for hash " << hash << " in baked texture slot " << baked_index << llendl; - gMessageSystem->nextBlockFast(_PREHASH_WearableData); - gMessageSystem->addUUIDFast(_PREHASH_ID, hash); - gMessageSystem->addU8Fast(_PREHASH_TextureIndex, (U8)baked_index); - } - - mActiveCacheQueries[ baked_index ] = mTextureCacheQueryID; - } - - llinfos << "Requesting texture cache entry for " << num_queries << " baked textures" << llendl; - gMessageSystem->sendReliable(getRegion()->getHost()); - mNumPendingQueries++; - mTextureCacheQueryID++; -} - -// User has picked "remove from avatar" from a menu. -// static -void LLAgent::userRemoveWearable( void* userdata ) -{ - EWearableType type = (EWearableType)(intptr_t)userdata; - - if( !(type==WT_SHAPE || type==WT_SKIN || type==WT_HAIR ) ) //&& - //!((!gAgent.isTeen()) && ( type==WT_UNDERPANTS || type==WT_UNDERSHIRT )) ) - { - gAgent.removeWearable( type ); - } -} - -void LLAgent::userRemoveAllClothes( void* userdata ) -{ - // We have to do this up front to avoid having to deal with the case of multiple wearables being dirty. - if( gFloaterCustomize ) - { - gFloaterCustomize->askToSaveIfDirty( LLAgent::userRemoveAllClothesStep2 ); - } - else - { - LLAgent::userRemoveAllClothesStep2( TRUE ); - } -} - -void LLAgent::userRemoveAllClothesStep2( BOOL proceed ) -{ - if( proceed ) - { - gAgent.removeWearable( WT_SHIRT ); - gAgent.removeWearable( WT_PANTS ); - gAgent.removeWearable( WT_SHOES ); - gAgent.removeWearable( WT_SOCKS ); - gAgent.removeWearable( WT_JACKET ); - gAgent.removeWearable( WT_GLOVES ); - gAgent.removeWearable( WT_UNDERSHIRT ); - gAgent.removeWearable( WT_UNDERPANTS ); - gAgent.removeWearable( WT_SKIRT ); - } -} - -void LLAgent::userRemoveAllAttachments( void* userdata ) -{ - LLVOAvatar* avatarp = gAgent.getAvatarObject(); - if(!avatarp) - { - llwarns << "No avatar found." << llendl; - return; - } - - gMessageSystem->newMessage("ObjectDetach"); - gMessageSystem->nextBlockFast(_PREHASH_AgentData); - gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID() ); - gMessageSystem->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); - - for (LLVOAvatar::attachment_map_t::iterator iter = avatarp->mAttachmentPoints.begin(); - iter != avatarp->mAttachmentPoints.end(); ) - { - LLVOAvatar::attachment_map_t::iterator curiter = iter++; - LLViewerJointAttachment* attachment = curiter->second; - LLViewerObject* objectp = attachment->getObject(); - if (objectp) - { - gMessageSystem->nextBlockFast(_PREHASH_ObjectData); - gMessageSystem->addU32Fast(_PREHASH_ObjectLocalID, objectp->getLocalID()); - } - } - gMessageSystem->sendReliable( gAgent.getRegionHost() ); -} - void LLAgent::observeFriends() { if(!mFriendObserver) @@ -7905,4 +6570,87 @@ void LLAgent::parseTeleportMessages(const std::string& xml_filename) }//end for (all message sets in xml file) } +// static +void LLAgent::createLandmarkHere() +{ + std::string landmark_name, landmark_desc; + + gAgent.buildLocationString(landmark_name, LLAgent::LOCATION_FORMAT_LANDMARK); + gAgent.buildLocationString(landmark_desc, LLAgent::LOCATION_FORMAT_FULL); + LLUUID folder_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_LANDMARK); + + createLandmarkHere(landmark_name, landmark_desc, folder_id); +} + +// static +void LLAgent::createLandmarkHere(const std::string& name, const std::string& desc, const LLUUID& folder_id) +{ + LLViewerRegion* agent_region = gAgent.getRegion(); + if(!agent_region) + { + llwarns << "No agent region" << llendl; + return; + } + LLParcel* agent_parcel = LLViewerParcelMgr::getInstance()->getAgentParcel(); + if (!agent_parcel) + { + llwarns << "No agent parcel" << llendl; + return; + } + if (!agent_parcel->getAllowLandmark() + && !LLViewerParcelMgr::isParcelOwnedByAgent(agent_parcel, GP_LAND_ALLOW_LANDMARK)) + { + LLNotifications::instance().add("CannotCreateLandmarkNotOwner"); + return; + } + + create_inventory_item(gAgent.getID(), gAgent.getSessionID(), + folder_id, LLTransactionID::tnull, + name, desc, + LLAssetType::AT_LANDMARK, + LLInventoryType::IT_LANDMARK, + NOT_WEARABLE, PERM_ALL, + NULL); +} + +void LLAgent::sendAgentUpdateUserInfo(bool im_via_email, const std::string& directory_visibility ) +{ + gMessageSystem->newMessageFast(_PREHASH_UpdateUserInfo); + gMessageSystem->nextBlockFast(_PREHASH_AgentData); + gMessageSystem->addUUIDFast(_PREHASH_AgentID, getID()); + gMessageSystem->addUUIDFast(_PREHASH_SessionID, getSessionID()); + gMessageSystem->nextBlockFast(_PREHASH_UserData); + gMessageSystem->addBOOLFast(_PREHASH_IMViaEMail, im_via_email); + gMessageSystem->addString("DirectoryVisibility", directory_visibility); + gAgent.sendReliableMessage(); +} + +// static +void LLAgent::dumpGroupInfo() +{ + llinfos << "group " << gAgent.mGroupName << llendl; + llinfos << "ID " << gAgent.mGroupID << llendl; + llinfos << "powers " << gAgent.mGroupPowers << llendl; + llinfos << "title " << gAgent.mGroupTitle << llendl; + //llinfos << "insig " << gAgent.mGroupInsigniaID << llendl; +} + +/********************************************************************************/ +LLAgentQueryManager gAgentQueryManager; + +LLAgentQueryManager::LLAgentQueryManager() : + mWearablesCacheQueryID(0), + mNumPendingQueries(0), + mUpdateSerialNum(0) +{ + for (U32 i = 0; i < BAKED_NUM_INDICES; i++) + { + mActiveCacheQueries[i] = 0; + } +} + +LLAgentQueryManager::~LLAgentQueryManager() +{ +} + // EOF diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h index 23ff6cd59484657902bf1cb64b49e049317a7ea3..94f6229838aa4624674749bd80add611ff19c3ab 100644 --- a/indra/newview/llagent.h +++ b/indra/newview/llagent.h @@ -33,63 +33,25 @@ #ifndef LL_LLAGENT_H #define LL_LLAGENT_H -#include <set> - #include "indra_constants.h" -#include "llmath.h" -#include "llcontrol.h" -#include "llcoordframe.h" -#include "llevent.h" +#include "llevent.h" // LLObservable base class +#include "llagentaccess.h" #include "llagentaccess.h" #include "llagentconstants.h" -#include "llanimationstates.h" -#include "lldbstrings.h" -#include "llhudeffectlookat.h" -#include "llhudeffectpointat.h" +#include "llhudeffectpointat.h" // ELookAtType +#include "llhudeffectlookat.h" // EPointAtType #include "llpointer.h" -#include "llstring.h" -#include "lluuid.h" -#include "m3math.h" -#include "m4math.h" -#include "llquaternion.h" -#include "lltimer.h" -#include "v3dmath.h" -#include "v3math.h" -#include "v4color.h" -#include "v4math.h" -//#include "vmath.h" -#include "stdenums.h" -#include "llwearable.h" -#include "llcharacter.h" -#include "llinventory.h" -#include "llviewerinventory.h" -#include "llagentdata.h" - -// Ventrella -#include "llfollowcam.h" -// end Ventrella - -const U8 AGENT_STATE_TYPING = 0x04; // Typing indication -const U8 AGENT_STATE_EDITING = 0x10; // Set when agent has objects selected - -const BOOL ANIMATE = TRUE; - -typedef enum e_camera_modes -{ - CAMERA_MODE_THIRD_PERSON, - CAMERA_MODE_MOUSELOOK, - CAMERA_MODE_CUSTOMIZE_AVATAR, - CAMERA_MODE_FOLLOW -} ECameraMode; +#include "llcharacter.h" // LLAnimPauseRequest +#include "llfollowcam.h" // Ventrella +#include "llagentdata.h" // gAgentID, gAgentSessionID +#include "llvoavatardefines.h" -typedef enum e_anim_request -{ - ANIM_REQUEST_START, - ANIM_REQUEST_STOP -} EAnimRequest; +extern const BOOL ANIMATE; +extern const U8 AGENT_STATE_TYPING; // Typing indication +extern const U8 AGENT_STATE_EDITING; // Set when agent has objects selected class LLChat; -class LLVOAvatar; +class LLVOAvatarSelf; class LLViewerRegion; class LLMotion; class LLToolset; @@ -98,6 +60,25 @@ class LLPermissions; class LLHost; class LLFriendObserver; class LLPickInfo; +class LLViewerObject; +class LLAgentDropGroupViewerNode; + +//-------------------------------------------------------------------- +// Types +//-------------------------------------------------------------------- +enum ECameraMode +{ + CAMERA_MODE_THIRD_PERSON, + CAMERA_MODE_MOUSELOOK, + CAMERA_MODE_CUSTOMIZE_AVATAR, + CAMERA_MODE_FOLLOW +}; + +enum EAnimRequest +{ + ANIM_REQUEST_START, + ANIM_REQUEST_STOP +}; struct LLGroupData { @@ -110,284 +91,437 @@ struct LLGroupData std::string mName; }; -inline bool operator==(const LLGroupData &a, const LLGroupData &b) -{ - return (a.mID == b.mID); -} - -// forward declarations - -// - +//------------------------------------------------------------------------ +// LLAgent +//------------------------------------------------------------------------ class LLAgent : public LLOldEvents::LLObservable { LOG_CLASS(LLAgent); - + public: - // When the agent hasn't typed anything for this duration, it leaves the - // typing state (for both chat and IM). - static const F32 TYPING_TIMEOUT_SECS; + friend class LLAgentDropGroupViewerNode; - LLAgent(); - ~LLAgent(); +/******************************************************************************** + ** ** + ** INITIALIZATION + **/ + //-------------------------------------------------------------------- + // Constructors / Destructors + //-------------------------------------------------------------------- +public: + LLAgent(); + virtual ~LLAgent(); void init(); void cleanup(); + void setAvatarObject(LLVOAvatarSelf *avatar); - // - // MANIPULATORS - // - // TODO: Put all non-const functions here. + //-------------------------------------------------------------------- + // Login + //-------------------------------------------------------------------- +public: + void onAppFocusGained(); + void setFirstLogin(BOOL b) { mFirstLogin = b; } + // Return TRUE if the database reported this login as the first for this particular user. + BOOL isFirstLogin() const { return mFirstLogin; } +public: + BOOL mInitialized; + BOOL mFirstLogin; + std::string mMOTD; // Message of the day - // Called whenever the agent moves. Puts camera back in default position, - // deselects items, etc. - void resetView(BOOL reset_camera = TRUE, BOOL change_camera = FALSE); + //-------------------------------------------------------------------- + // Session + //-------------------------------------------------------------------- +public: + const LLUUID& getID() const { return gAgentID; } + const LLUUID& getSessionID() const { return gAgentSessionID; } + // Note: NEVER send this value in the clear or over any weakly + // encrypted channel (such as simple XOR masking). If you are unsure + // ask Aaron or MarkL. + const LLUUID& getSecureSessionID() const { return mSecureSessionID; } +public: + LLUUID mSecureSessionID; // Secure token for this login session + +/** Initialization + ** ** + *******************************************************************************/ - // Called on camera movement, to allow the camera to be unlocked from the - // default position behind the avatar. - void unlockView(); +/******************************************************************************** + ** ** + ** IDENTITY + **/ - void onAppFocusGained(); + //-------------------------------------------------------------------- + // Name + //-------------------------------------------------------------------- +public: + void getName(std::string& name) const; + void buildFullname(std::string &name) const; + void buildFullnameAndTitle(std::string &name) const; - void sendMessage(); // Send message to this agent's region. - void sendReliableMessage(); + //-------------------------------------------------------------------- + // Gender + //-------------------------------------------------------------------- +public: + // On the very first login, gender isn't chosen until the user clicks + // in a dialog. We don't render the avatar until they choose. + BOOL isGenderChosen() const { return mGenderChosen; } + void setGenderChosen(BOOL b) { mGenderChosen = b; } +private: + BOOL mGenderChosen; - LLVector3d calcCameraPositionTargetGlobal(BOOL *hit_limit = NULL); // Calculate the camera position target - LLVector3d calcFocusPositionTargetGlobal(); - LLVector3d calcThirdPersonFocusOffset(); - // target for this mode - LLVector3d getCameraPositionGlobal() const; - const LLVector3 &getCameraPositionAgent() const; - F32 calcCameraFOVZoomFactor(); - F32 getCameraMinOffGround(); // minimum height off ground for this mode, meters - void endAnimationUpdateUI(); - void setKey(const S32 direction, S32 &key); // sets key to +1 for +direction, -1 for -direction - void handleScrollWheel(S32 clicks); // mousewheel driven zoom +/** Identity + ** ** + *******************************************************************************/ + +/******************************************************************************** + ** ** + ** GENERAL ACCESSORS + **/ + +public: + LLVOAvatarSelf* getAvatarObject() const { return mAvatarObject; } + const LLUUID& getInventoryRootID() const { return mInventoryRootID; } + LLUUID& getInventoryRootID() { return mInventoryRootID; } +private: + LLUUID mInventoryRootID; + LLPointer<LLVOAvatarSelf> mAvatarObject; // NULL until avatar object sent down from simulator + +/** General Accessors + ** ** + *******************************************************************************/ + +/******************************************************************************** + ** ** + ** POSITION + **/ + + //-------------------------------------------------------------------- + // Position + //-------------------------------------------------------------------- +public: + LLVector3 getPosAgentFromGlobal(const LLVector3d &pos_global) const; + LLVector3d getPosGlobalFromAgent(const LLVector3 &pos_agent) const; + const LLVector3d &getPositionGlobal() const; + const LLVector3 &getPositionAgent(); + // Call once per frame to update position, angles (radians). + void updateAgentPosition(const F32 dt, const F32 yaw, const S32 mouse_x, const S32 mouse_y); + void setPositionAgent(const LLVector3 ¢er); +protected: + void propagate(const F32 dt); // ! BUG ! Should roll into updateAgentPosition +private: + mutable LLVector3d mPositionGlobal; + + //-------------------------------------------------------------------- + // Velocity + //-------------------------------------------------------------------- +public: + LLVector3 getVelocity() const; + F32 getVelocityZ() const { return getVelocity().mV[VZ]; } // ! HACK ! - void setAvatarObject(LLVOAvatar *avatar); + //-------------------------------------------------------------------- + // Coordinate System + //-------------------------------------------------------------------- +public: + LLCoordFrame getFrameAgent() const { return mFrameAgent; } + void initOriginGlobal(const LLVector3d &origin_global); // Only to be used in ONE place + void resetAxes(); + void resetAxes(const LLVector3 &look_at); // Makes reasonable left and up + // The following three get*Axis functions return direction avatar is looking, not camera. + const LLVector3& getAtAxis() const { return mFrameAgent.getAtAxis(); } + const LLVector3& getUpAxis() const { return mFrameAgent.getUpAxis(); } + const LLVector3& getLeftAxis() const { return mFrameAgent.getLeftAxis(); } + LLQuaternion getQuat() const; // Returns the quat that represents the rotation of the agent in the absolute frame +private: + LLVector3d mAgentOriginGlobal; // Origin of agent coords from global coords + LLCoordFrame mFrameAgent; // Agent position and view, agent-region coordinates - // rendering state bitmask helpers - void startTyping(); - void stopTyping(); - void setRenderState(U8 newstate); - void clearRenderState(U8 clearstate); - U8 getRenderState(); - // Set the home data + //-------------------------------------------------------------------- + // Home + //-------------------------------------------------------------------- +public: + void setStartPosition(U32 location_id); // Marks current location as start, sends information to servers + void setHomePosRegion(const U64& region_handle, const LLVector3& pos_region); + BOOL getHomePosGlobal(LLVector3d* pos_global); +private: + BOOL mHaveHomePosition; + U64 mHomeRegionHandle; + LLVector3 mHomePosRegion; + + //-------------------------------------------------------------------- + // Region + //-------------------------------------------------------------------- +public: + enum ELocationFormat + { + LOCATION_FORMAT_NORMAL, + LOCATION_FORMAT_LANDMARK, + LOCATION_FORMAT_FULL, + }; void setRegion(LLViewerRegion *regionp); LLViewerRegion *getRegion() const; LLHost getRegionHost() const; std::string getSLURL() const; - - void updateAgentPosition(const F32 dt, const F32 yaw, const S32 mouse_x, const S32 mouse_y); // call once per frame to update position, angles radians - void updateLookAt(const S32 mouse_x, const S32 mouse_y); - + BOOL inPrelude(); + BOOL buildLocationString(std::string& str, ELocationFormat fmt = LOCATION_FORMAT_LANDMARK); // Utility to build a location string + static void createLandmarkHere(); + static void createLandmarkHere(const std::string& name, const std::string& desc, const LLUUID& folder_id); +private: + LLViewerRegion *mRegionp; - void updateCamera(); // call once per frame to update camera location/orientation - void resetCamera(); // slam camera into its default position - void setupSitCamera(); - void setCameraCollidePlane(const LLVector4 &plane) { mCameraCollidePlane = plane; } + //-------------------------------------------------------------------- + // History + //-------------------------------------------------------------------- +public: + S32 getRegionsVisited() const; + F64 getDistanceTraveled() const; +private: + std::set<U64> mRegionsVisited; // Stat - what distinct regions has the avatar been to? + F64 mDistanceTraveled; // Stat - how far has the avatar moved? + LLVector3d mLastPositionGlobal; // Used to calculate travel distance + +/** Position + ** ** + *******************************************************************************/ - void changeCameraToDefault(); - void changeCameraToMouselook(BOOL animate = TRUE); - void changeCameraToThirdPerson(BOOL animate = TRUE); - void changeCameraToCustomizeAvatar(BOOL avatar_animate = TRUE, BOOL camera_animate = TRUE); // trigger transition animation - // Ventrella - void changeCameraToFollow(BOOL animate = TRUE); - //end Ventrella +/******************************************************************************** + ** ** + ** ACTIONS + **/ - void setFocusGlobal(const LLPickInfo& pick); - void setFocusGlobal(const LLVector3d &focus, const LLUUID &object_id = LLUUID::null); - void setFocusOnAvatar(BOOL focus, BOOL animate); - void setCameraPosAndFocusGlobal(const LLVector3d& pos, const LLVector3d& focus, const LLUUID &object_id); - void setSitCamera(const LLUUID &object_id, const LLVector3 &camera_pos = LLVector3::zero, const LLVector3 &camera_focus = LLVector3::zero); - void clearFocusObject(); - void setFocusObject(LLViewerObject* object); - void setObjectTracking(BOOL track) { mTrackFocusObject = track; } -// void setLookingAtAvatar(BOOL looking); + //-------------------------------------------------------------------- + // Fidget + //-------------------------------------------------------------------- + // Trigger random fidget animations +public: + void fidget(); + static void stopFidget(); +private: + LLFrameTimer mFidgetTimer; + LLFrameTimer mFocusObjectFadeTimer; + F32 mNextFidgetTime; + S32 mCurrentFidget; + //-------------------------------------------------------------------- + // Fly + //-------------------------------------------------------------------- +public: + BOOL getFlying() const { return mControlFlags & AGENT_CONTROL_FLY; } + void setFlying(BOOL fly); + static void toggleFlying(); + static bool enableFlying(); + BOOL canFly(); // Does this parcel allow you to fly? + + //-------------------------------------------------------------------- + // Chat + //-------------------------------------------------------------------- +public: void heardChat(const LLUUID& id); void lookAtLastChat(); - F32 getTypingTime() { return mTypingTimer.getElapsedTimeF32(); } + F32 getTypingTime() { return mTypingTimer.getElapsedTimeF32(); } + LLUUID getLastChatter() const { return mLastChatterID; } + F32 getNearChatRadius() { return mNearChatRadius; } +protected: + void ageChat(); // Helper function to prematurely age chat when agent is moving +private: + LLFrameTimer mChatTimer; + LLUUID mLastChatterID; + F32 mNearChatRadius; + + //-------------------------------------------------------------------- + // Typing + //-------------------------------------------------------------------- +public: + void startTyping(); + void stopTyping(); +public: + // When the agent hasn't typed anything for this duration, it leaves the + // typing state (for both chat and IM). + static const F32 TYPING_TIMEOUT_SECS; +private: + LLFrameTimer mTypingTimer; + //-------------------------------------------------------------------- + // AFK + //-------------------------------------------------------------------- +public: void setAFK(); void clearAFK(); BOOL getAFK() const; - void setAlwaysRun() { mbAlwaysRun = true; } - void clearAlwaysRun() { mbAlwaysRun = false; } + //-------------------------------------------------------------------- + // Run + //-------------------------------------------------------------------- +public: + enum EDoubleTapRunMode + { + DOUBLETAP_NONE, + DOUBLETAP_FORWARD, + DOUBLETAP_BACKWARD, + DOUBLETAP_SLIDELEFT, + DOUBLETAP_SLIDERIGHT + }; - void setRunning() { mbRunning = true; } - void clearRunning() { mbRunning = false; } + void setAlwaysRun() { mbAlwaysRun = true; } + void clearAlwaysRun() { mbAlwaysRun = false; } + void setRunning() { mbRunning = true; } + void clearRunning() { mbRunning = false; } + void sendWalkRun(bool running); + bool getAlwaysRun() const { return mbAlwaysRun; } + bool getRunning() const { return mbRunning; } +public: + LLFrameTimer mDoubleTapRunTimer; + EDoubleTapRunMode mDoubleTapRunMode; +private: + bool mbAlwaysRun; // Should the avatar run by default rather than walk? + bool mbRunning; // Is the avatar trying to run right now? + //-------------------------------------------------------------------- + // Busy + //-------------------------------------------------------------------- +public: void setBusy(); void clearBusy(); BOOL getBusy() const; +private: + BOOL mIsBusy; - void setAdminOverride(BOOL b); - void setGodLevel(U8 god_level); - void setFirstLogin(BOOL b) { mFirstLogin = b; } - void setGenderChosen(BOOL b) { mGenderChosen = b; } - - // update internal datastructures and update the server with the - // new contribution level. Returns true if the group id was found - // and contribution could be set. - BOOL setGroupContribution(const LLUUID& group_id, S32 contribution); - BOOL setUserGroupFlags(const LLUUID& group_id, BOOL accept_notices, BOOL list_in_profile); - void setHideGroupTitle(BOOL hide) { mHideGroupTitle = hide; } + //-------------------------------------------------------------------- + // Jump + //-------------------------------------------------------------------- +public: + BOOL getJump() const { return mbJump; } +private: + BOOL mbJump; - // - // ACCESSORS - // - // TODO: Put all read functions here, make them const + //-------------------------------------------------------------------- + // Grab + //-------------------------------------------------------------------- +public: + BOOL leftButtonGrabbed() const; + BOOL rotateGrabbed() const; + BOOL forwardGrabbed() const; + BOOL backwardGrabbed() const; + BOOL upGrabbed() const; + BOOL downGrabbed() const; - const LLUUID& getID() const { return gAgentID; } - const LLUUID& getSessionID() const { return gAgentSessionID; } - - const LLUUID& getSecureSessionID() const { return mSecureSessionID; } - // Note: NEVER send this value in the clear or over any weakly - // encrypted channel (such as simple XOR masking). If you are unsure - // ask Aaron or MarkL. - - BOOL isGodlike() const; - U8 getGodLevel() const; - // note: this is a prime candidate for pulling out into a Maturity class - // rather than just expose the preference setting, we're going to actually - // expose what the client code cares about -- what the user should see - // based on a combination of the is* and prefers* flags, combined with God bit. - bool wantsPGOnly() const; - bool canAccessMature() const; - bool canAccessAdult() const; - bool canAccessMaturityInRegion( U64 region_handle ) const; - bool canAccessMaturityAtGlobal( LLVector3d pos_global ) const; - bool prefersPG() const; - bool prefersMature() const; - bool prefersAdult() const; - bool isTeen() const; - bool isMature() const; - bool isAdult() const; - void setTeen(bool teen); - void setMaturity(char text); - static int convertTextToMaturity(char text); - bool sendMaturityPreferenceToServer(int preferredMaturity); - - // maturity callbacks for PreferredMaturity control variable - void handleMaturity(const LLSD& newvalue); - bool validateMaturity(const LLSD& newvalue); + //-------------------------------------------------------------------- + // Controls + //-------------------------------------------------------------------- +public: + U32 getControlFlags(); + void setControlFlags(U32 mask); // Performs bitwise mControlFlags |= mask + void clearControlFlags(U32 mask); // Performs bitwise mControlFlags &= ~mask + BOOL controlFlagsDirty() const; + void enableControlFlagReset(); + void resetControlFlags(); + BOOL anyControlGrabbed() const; // True iff a script has taken over a control + BOOL isControlGrabbed(S32 control_index) const; + // Send message to simulator to force grabbed controls to be + // released, in case of a poorly written script. + void forceReleaseControls(); +private: + S32 mControlsTakenCount[TOTAL_CONTROLS]; + S32 mControlsTakenPassedOnCount[TOTAL_CONTROLS]; + U32 mControlFlags; // Replacement for the mFooKey's + BOOL mbFlagsDirty; + BOOL mbFlagsNeedReset; // ! HACK ! For preventing incorrect flags sent when crossing region boundaries - const LLAgentAccess& getAgentAccess(); + //-------------------------------------------------------------------- + // Animations + //-------------------------------------------------------------------- +public: + void stopCurrentAnimations(); + void requestStopMotion(LLMotion* motion); + void onAnimStop(const LLUUID& id); + void sendAnimationRequests(LLDynamicArray<LLUUID> &anim_ids, EAnimRequest request); + void sendAnimationRequest(const LLUUID &anim_id, EAnimRequest request); + void endAnimationUpdateUI(); +private: + LLFrameTimer mAnimationTimer; // Seconds that transition animation has been active + F32 mAnimationDuration; // In seconds + BOOL mCustomAnim; // Current animation is ANIM_AGENT_CUSTOMIZE ? + LLAnimPauseRequest mPauseRequest; + BOOL mViewsPushed; // Keep track of whether or not we have pushed views - // This function can go away after the AO transition (see llstartup.cpp) - void setAOTransition(); +/** Animation + ** ** + *******************************************************************************/ + +/******************************************************************************** + ** ** + ** MOVEMENT + **/ - BOOL isGroupTitleHidden() const { return mHideGroupTitle; } - BOOL isGroupMember() const { return !mGroupID.isNull(); } // This is only used for building titles! - const LLUUID &getGroupID() const { return mGroupID; } - ECameraMode getCameraMode() const { return mCameraMode; } - BOOL getFocusOnAvatar() const { return mFocusOnAvatar; } - LLPointer<LLViewerObject>& getFocusObject() { return mFocusObject; } - F32 getFocusObjectDist() const { return mFocusObjectDist; } - BOOL inPrelude(); - BOOL canManageEstate() const; - BOOL getAdminOverride() const; + //-------------------------------------------------------------------- + // Keys + //-------------------------------------------------------------------- +public: + void setKey(const S32 direction, S32 &key); // Sets key to +1 for +direction, -1 for -direction +private: + S32 mAtKey; // Either 1, 0, or -1. Indicates that movement key is pressed + S32 mWalkKey; // Like AtKey, but causes less forward thrust + S32 mLeftKey; + S32 mUpKey; + F32 mYawKey; + S32 mPitchKey; - LLUUID getLastChatter() const { return mLastChatterID; } - bool getAlwaysRun() const { return mbAlwaysRun; } - bool getRunning() const { return mbRunning; } - - const LLUUID& getInventoryRootID() const { return mInventoryRootID; } - - void buildFullname(std::string &name) const; - void buildFullnameAndTitle(std::string &name) const; - - // Check against all groups in the entire agent group list. - BOOL isInGroup(const LLUUID& group_id) const; - BOOL hasPowerInGroup(const LLUUID& group_id, U64 power) const; - // Check for power in just the active group. - BOOL hasPowerInActiveGroup(const U64 power) const; - U64 getPowerInGroup(const LLUUID& group_id) const; - - // Get group information by group_id. if not in group, data is - // left unchanged and method returns FALSE. otherwise, values are - // copied and returns TRUE. - BOOL getGroupData(const LLUUID& group_id, LLGroupData& data) const; - // Get just the agent's contribution to the given group. - S32 getGroupContribution(const LLUUID& group_id) const; - - // return TRUE if the database reported this login as the first - // for this particular user. - BOOL isFirstLogin() const { return mFirstLogin; } - - // On the very first login, gender isn't chosen until the user clicks - // in a dialog. We don't render the avatar until they choose. - BOOL isGenderChosen() const { return mGenderChosen; } - - typedef enum e_location_format - { - LOCATION_FORMAT_NORMAL, - LOCATION_FORMAT_LANDMARK, - LOCATION_FORMAT_FULL, - } ELocationFormat; - - // utility to build a location string - BOOL buildLocationString(std::string& str, ELocationFormat fmt = LOCATION_FORMAT_LANDMARK); - - LLQuaternion getHeadRotation(); - LLVOAvatar *getAvatarObject() const { return mAvatarObject; } - - BOOL needsRenderAvatar(); // TRUE when camera mode is such that your own avatar should draw - // Not const because timers can't be accessed in const-fashion. - BOOL needsRenderHead(); - BOOL cameraThirdPerson() const { return (mCameraMode == CAMERA_MODE_THIRD_PERSON && mLastCameraMode == CAMERA_MODE_THIRD_PERSON); } - BOOL cameraMouselook() const { return (mCameraMode == CAMERA_MODE_MOUSELOOK && mLastCameraMode == CAMERA_MODE_MOUSELOOK); } - BOOL cameraCustomizeAvatar() const { return (mCameraMode == CAMERA_MODE_CUSTOMIZE_AVATAR /*&& !mCameraAnimating*/); } - BOOL cameraFollow() const { return (mCameraMode == CAMERA_MODE_FOLLOW && mLastCameraMode == CAMERA_MODE_FOLLOW); } - - LLVector3 getPosAgentFromGlobal(const LLVector3d &pos_global) const; - LLVector3d getPosGlobalFromAgent(const LLVector3 &pos_agent) const; - - // Get the data members - const LLVector3& getAtAxis() const { return mFrameAgent.getAtAxis(); } // direction avatar is looking, not camera - const LLVector3& getUpAxis() const { return mFrameAgent.getUpAxis(); } // direction avatar is looking, not camera - const LLVector3& getLeftAxis() const { return mFrameAgent.getLeftAxis(); } // direction avatar is looking, not camera - - LLCoordFrame getFrameAgent() const { return mFrameAgent; } - LLVector3 getVelocity() const; - F32 getVelocityZ() const { return getVelocity().mV[VZ]; } // a hack - - const LLVector3d &getPositionGlobal() const; - const LLVector3 &getPositionAgent(); - S32 getRegionsVisited() const; - F64 getDistanceTraveled() const; - - const LLVector3d &getFocusGlobal() const { return mFocusGlobal; } - const LLVector3d &getFocusTargetGlobal() const { return mFocusTargetGlobal; } - - BOOL getJump() const { return mbJump; } - BOOL getAutoPilot() const { return mAutoPilot; } - LLVector3d getAutoPilotTargetGlobal() const { return mAutoPilotTargetGlobal; } - - LLQuaternion getQuat() const; // returns the quat that represents the rotation - // of the agent in the absolute frame -// BOOL getLookingAtAvatar() const; - - void getName(std::string& name); - - const LLColor4 &getEffectColor(); - void setEffectColor(const LLColor4 &color); - // - // UTILITIES - // - - // Set the physics data - void slamLookAt(const LLVector3 &look_at); - - void setPositionAgent(const LLVector3 ¢er); + //-------------------------------------------------------------------- + // Movement from user input + //-------------------------------------------------------------------- + // All set the appropriate animation flags. + // All turn off autopilot and make sure the camera is behind the avatar. + // Direction is either positive, zero, or negative +public: + void moveAt(S32 direction, bool reset_view = true); + void moveAtNudge(S32 direction); + void moveLeft(S32 direction); + void moveLeftNudge(S32 direction); + void moveUp(S32 direction); + void moveYaw(F32 mag, bool reset_view = true); + void movePitch(S32 direction); - void resetAxes(); - void resetAxes(const LLVector3 &look_at); // makes reasonable left and up + //-------------------------------------------------------------------- + // Orbit + //-------------------------------------------------------------------- +public: + void setOrbitLeftKey(F32 mag) { mOrbitLeftKey = mag; } + void setOrbitRightKey(F32 mag) { mOrbitRightKey = mag; } + void setOrbitUpKey(F32 mag) { mOrbitUpKey = mag; } + void setOrbitDownKey(F32 mag) { mOrbitDownKey = mag; } + void setOrbitInKey(F32 mag) { mOrbitInKey = mag; } + void setOrbitOutKey(F32 mag) { mOrbitOutKey = mag; } +private: + F32 mOrbitLeftKey; + F32 mOrbitRightKey; + F32 mOrbitUpKey; + F32 mOrbitDownKey; + F32 mOrbitInKey; + F32 mOrbitOutKey; + + //-------------------------------------------------------------------- + // Pan + //-------------------------------------------------------------------- +public: + void setPanLeftKey(F32 mag) { mPanLeftKey = mag; } + void setPanRightKey(F32 mag) { mPanRightKey = mag; } + void setPanUpKey(F32 mag) { mPanUpKey = mag; } + void setPanDownKey(F32 mag) { mPanDownKey = mag; } + void setPanInKey(F32 mag) { mPanInKey = mag; } + void setPanOutKey(F32 mag) { mPanOutKey = mag; } +private: + F32 mPanUpKey; + F32 mPanDownKey; + F32 mPanLeftKey; + F32 mPanRightKey; + F32 mPanInKey; + F32 mPanOutKey; - // Move the avatar's frame + //-------------------------------------------------------------------- + // Move the avatar's frame + //-------------------------------------------------------------------- +public: void rotate(F32 angle, const LLVector3 &axis); void rotate(F32 angle, F32 x, F32 y, F32 z); void rotate(const LLMatrix3 &matrix); @@ -398,202 +532,47 @@ class LLAgent : public LLOldEvents::LLObservable LLVector3 getReferenceUpVector(); F32 clampPitchToLimits(F32 angle); - void setThirdPersonHeadOffset(LLVector3 offset) { mThirdPersonHeadOffset = offset; } - // Flight management - BOOL getFlying() const { return mControlFlags & AGENT_CONTROL_FLY; } - void setFlying(BOOL fly); - static void toggleFlying(); - static bool enableFlying(); - - // Does this parcel allow you to fly? - BOOL canFly(); - - // Animation functions - void stopCurrentAnimations(); - void requestStopMotion( LLMotion* motion ); - void onAnimStop(const LLUUID& id); - - void sendAnimationRequests(LLDynamicArray<LLUUID> &anim_ids, EAnimRequest request); - void sendAnimationRequest(const LLUUID &anim_id, EAnimRequest request); - - LLVector3 calcFocusOffset(LLViewerObject *object, LLVector3 pos_agent, S32 x, S32 y); - BOOL calcCameraMinDistance(F32 &obj_min_distance); - - void startCameraAnimation(); - void stopCameraAnimation(); - - void cameraZoomIn(const F32 factor); // zoom in by fraction of current distance - void cameraOrbitAround(const F32 radians); // rotate camera CCW radians about build focus point - void cameraOrbitOver(const F32 radians); // rotate camera forward radians over build focus point - void cameraOrbitIn(const F32 meters); // move camera in toward build focus point - - F32 getCameraZoomFraction(); // get camera zoom as fraction of minimum and maximum zoom - void setCameraZoomFraction(F32 fraction); // set camera zoom as fraction of minimum and maximum zoom - - void cameraPanIn(const F32 meters); - void cameraPanLeft(const F32 meters); - void cameraPanUp(const F32 meters); - - void updateFocusOffset(); - void validateFocusObject(); - - void setUsingFollowCam( bool using_follow_cam); - - F32 calcCustomizeAvatarUIOffset( const LLVector3d& camera_pos_global ); - - // marks current location as start, sends information to servers - void setStartPosition(U32 location_id); - - // Movement from user input. All set the appropriate animation flags. - // All turn off autopilot and make sure the camera is behind the avatar. - // direction is either positive, zero, or negative - void moveAt(S32 direction, bool reset_view = true); - void moveAtNudge(S32 direction); - void moveLeft(S32 direction); - void moveLeftNudge(S32 direction); - void moveUp(S32 direction); - void moveYaw(F32 mag, bool reset_view = true); - void movePitch(S32 direction); - - void setOrbitLeftKey(F32 mag) { mOrbitLeftKey = mag; } - void setOrbitRightKey(F32 mag) { mOrbitRightKey = mag; } - void setOrbitUpKey(F32 mag) { mOrbitUpKey = mag; } - void setOrbitDownKey(F32 mag) { mOrbitDownKey = mag; } - void setOrbitInKey(F32 mag) { mOrbitInKey = mag; } - void setOrbitOutKey(F32 mag) { mOrbitOutKey = mag; } - - void setPanLeftKey(F32 mag) { mPanLeftKey = mag; } - void setPanRightKey(F32 mag) { mPanRightKey = mag; } - void setPanUpKey(F32 mag) { mPanUpKey = mag; } - void setPanDownKey(F32 mag) { mPanDownKey = mag; } - void setPanInKey(F32 mag) { mPanInKey = mag; } - void setPanOutKey(F32 mag) { mPanOutKey = mag; } - - U32 getControlFlags(); - void setControlFlags(U32 mask); // performs bitwise mControlFlags |= mask - void clearControlFlags(U32 mask); // performs bitwise mControlFlags &= ~mask - BOOL controlFlagsDirty() const; - void enableControlFlagReset(); - void resetControlFlags(); - - void propagate(const F32 dt); // BUG: should roll into updateAgentPosition - - void startAutoPilotGlobal(const LLVector3d &pos_global, const std::string& behavior_name = std::string(), const LLQuaternion *target_rotation = NULL, - void (*finish_callback)(BOOL, void *) = NULL, void *callback_data = NULL, F32 stop_distance = 0.f, F32 rotation_threshold = 0.03f); - + //-------------------------------------------------------------------- + // Autopilot + //-------------------------------------------------------------------- +public: + BOOL getAutoPilot() const { return mAutoPilot; } + LLVector3d getAutoPilotTargetGlobal() const { return mAutoPilotTargetGlobal; } + void startAutoPilotGlobal(const LLVector3d &pos_global, + const std::string& behavior_name = std::string(), + const LLQuaternion *target_rotation = NULL, + void (*finish_callback)(BOOL, void *) = NULL, void *callback_data = NULL, + F32 stop_distance = 0.f, F32 rotation_threshold = 0.03f); void startFollowPilot(const LLUUID &leader_id); void stopAutoPilot(BOOL user_cancel = FALSE); void setAutoPilotGlobal(const LLVector3d &pos_global); - void autoPilot(F32 *delta_yaw); // autopilot walking action, angles in radians + void autoPilot(F32 *delta_yaw); // Autopilot walking action, angles in radians void renderAutoPilotTarget(); +private: + BOOL mAutoPilot; + BOOL mAutoPilotFlyOnStop; + LLVector3d mAutoPilotTargetGlobal; + F32 mAutoPilotStopDistance; + BOOL mAutoPilotUseRotation; + LLVector3 mAutoPilotTargetFacing; + F32 mAutoPilotTargetDist; + S32 mAutoPilotNoProgressFrameCount; + F32 mAutoPilotRotationThreshold; + std::string mAutoPilotBehaviorName; + void (*mAutoPilotFinishedCallback)(BOOL, void *); + void* mAutoPilotCallbackData; + LLUUID mLeaderID; + +/** Movement + ** ** + *******************************************************************************/ - // - // teportation methods - // - - // go to a named location home - void teleportRequest( - const U64& region_handle, - const LLVector3& pos_local); - - // teleport to a landmark - void teleportViaLandmark(const LLUUID& landmark_id); - - // go home - void teleportHome() { teleportViaLandmark(LLUUID::null); } - - // to an invited location - void teleportViaLure(const LLUUID& lure_id, BOOL godlike); - - // to a global location - this will probably need to be - // deprecated. - void teleportViaLocation(const LLVector3d& pos_global); - - // cancel the teleport, may or may not be allowed by server - void teleportCancel(); - - void setTargetVelocity(const LLVector3 &vel); - const LLVector3 &getTargetVelocity() const; - - const std::string getTeleportSourceSLURL() const { return mTeleportSourceSLURL; } - - - // Setting the ability for this avatar to proxy for another avatar. - //static void processAddModifyAbility(LLMessageSystem* msg, void**); - //static void processGrantedProxies(LLMessageSystem* msg, void**); - //static void processRemoveModifyAbility(LLMessageSystem* msg, void**); - //BOOL isProxyFor(const LLUUID& agent_id);// *FIX should be const - - static void processAgentDataUpdate(LLMessageSystem *msg, void **); - static void processAgentGroupDataUpdate(LLMessageSystem *msg, void **); - static void processAgentDropGroup(LLMessageSystem *msg, void **); - static void processScriptControlChange(LLMessageSystem *msg, void **); - static void processAgentCachedTextureResponse(LLMessageSystem *mesgsys, void **user_data); - //static void processControlTake(LLMessageSystem *msg, void **); - //static void processControlRelease(LLMessageSystem *msg, void **); - - // This method checks to see if this agent can modify an object - // based on the permissions and the agent's proxy status. - BOOL isGrantedProxy(const LLPermissions& perm); - - BOOL allowOperation(PermissionBit op, - const LLPermissions& perm, - U64 group_proxy_power = 0, - U8 god_minimum = GOD_MAINTENANCE); - - friend std::ostream& operator<<(std::ostream &s, const LLAgent &sphere); - - void initOriginGlobal(const LLVector3d &origin_global); // Only to be used in ONE place! - djs 08/07/02 - - BOOL leftButtonGrabbed() const { return ( (!cameraMouselook() && mControlsTakenCount[CONTROL_LBUTTON_DOWN_INDEX] > 0) - ||(cameraMouselook() && mControlsTakenCount[CONTROL_ML_LBUTTON_DOWN_INDEX] > 0) - ||(!cameraMouselook() && mControlsTakenPassedOnCount[CONTROL_LBUTTON_DOWN_INDEX] > 0) - ||(cameraMouselook() && mControlsTakenPassedOnCount[CONTROL_ML_LBUTTON_DOWN_INDEX] > 0)); } - BOOL rotateGrabbed() const { return ( (mControlsTakenCount[CONTROL_YAW_POS_INDEX] > 0) - ||(mControlsTakenCount[CONTROL_YAW_NEG_INDEX] > 0)); } - BOOL forwardGrabbed() const { return ( (mControlsTakenCount[CONTROL_AT_POS_INDEX] > 0)); } - BOOL backwardGrabbed() const { return ( (mControlsTakenCount[CONTROL_AT_NEG_INDEX] > 0)); } - BOOL upGrabbed() const { return ( (mControlsTakenCount[CONTROL_UP_POS_INDEX] > 0)); } - BOOL downGrabbed() const { return ( (mControlsTakenCount[CONTROL_UP_NEG_INDEX] > 0)); } - - // True iff a script has taken over a control. - BOOL anyControlGrabbed() const; - - BOOL isControlGrabbed(S32 control_index) const; - - // Send message to simulator to force grabbed controls to be - // released, in case of a poorly written script. - void forceReleaseControls(); - - BOOL sitCameraEnabled() { return mSitCameraEnabled; } - - F32 getCurrentCameraBuildOffset() { return (F32)mCameraFocusOffset.length(); } - - // look at behavior - BOOL setLookAt(ELookAtType target_type, LLViewerObject *object = NULL, LLVector3 position = LLVector3::zero); - ELookAtType getLookAtType(); - - // point at behavior - BOOL setPointAt(EPointAtType target_type, LLViewerObject *object = NULL, LLVector3 position = LLVector3::zero); - EPointAtType getPointAtType(); - - void setHomePosRegion( const U64& region_handle, const LLVector3& pos_region ); - BOOL getHomePosGlobal( LLVector3d* pos_global ); - void setCameraAnimating( BOOL b ) { mCameraAnimating = b; } - BOOL getCameraAnimating( ) { return mCameraAnimating; } - void setAnimationDuration( F32 seconds ) { mAnimationDuration = seconds; } - - F32 getNearChatRadius() { return mNearChatRadius; } - - enum EDoubleTapRunMode - { - DOUBLETAP_NONE, - DOUBLETAP_FORWARD, - DOUBLETAP_BACKWARD, - DOUBLETAP_SLIDELEFT, - DOUBLETAP_SLIDERIGHT - }; +/******************************************************************************** + ** ** + ** TELEPORT + **/ +public: enum ETeleportState { TELEPORT_NONE = 0, // No teleport in progress @@ -604,377 +583,487 @@ class LLAgent : public LLOldEvents::LLObservable TELEPORT_ARRIVING = 5 // Make the user wait while content "pre-caches" }; - ETeleportState getTeleportState() const { return mTeleportState; } - void setTeleportState( ETeleportState state ); - const std::string& getTeleportMessage() const { return mTeleportMessage; } - void setTeleportMessage(const std::string& message) - { - mTeleportMessage = message; - } +public: + static void parseTeleportMessages(const std::string& xml_filename); + const std::string getTeleportSourceSLURL() const { return mTeleportSourceSLURL; } +public: + // ! TODO ! Define ERROR and PROGRESS enums here instead of exposing the mappings. + static std::map<std::string, std::string> sTeleportErrorMessages; + static std::map<std::string, std::string> sTeleportProgressMessages; +private: + std::string mTeleportSourceSLURL; // SLURL where last TP began - // trigger random fidget animations - void fidget(); + //-------------------------------------------------------------------- + // Teleport Actions + //-------------------------------------------------------------------- +public: + void teleportRequest(const U64& region_handle, + const LLVector3& pos_local); // Go to a named location home + void teleportViaLandmark(const LLUUID& landmark_id); // Teleport to a landmark + void teleportHome() { teleportViaLandmark(LLUUID::null); } // Go home + void teleportViaLure(const LLUUID& lure_id, BOOL godlike); // To an invited location + void teleportViaLocation(const LLVector3d& pos_global); // To a global location - this will probably need to be deprecated + void teleportCancel(); // May or may not be allowed by server +protected: + bool teleportCore(bool is_local = false); // Stuff for all teleports; returns true if the teleport can proceed - void requestEnterGodMode(); - void requestLeaveGodMode(); + //-------------------------------------------------------------------- + // Teleport State + //-------------------------------------------------------------------- +public: + ETeleportState getTeleportState() const { return mTeleportState; } + void setTeleportState(ETeleportState state); +private: + ETeleportState mTeleportState; - void sendAgentSetAppearance(); - void sendAgentDataUpdateRequest(); - void sendAgentUserInfoRequest(); + //-------------------------------------------------------------------- + // Teleport Message + //-------------------------------------------------------------------- +public: + const std::string& getTeleportMessage() const { return mTeleportMessage; } + void setTeleportMessage(const std::string& message) { mTeleportMessage = message; } +private: + std::string mTeleportMessage; +/** Teleport + ** ** + *******************************************************************************/ + +/******************************************************************************** + ** ** + ** CAMERA + **/ + + //-------------------------------------------------------------------- + // Mode + //-------------------------------------------------------------------- +public: + void changeCameraToDefault(); + void changeCameraToMouselook(BOOL animate = TRUE); + void changeCameraToThirdPerson(BOOL animate = TRUE); + void changeCameraToCustomizeAvatar(BOOL avatar_animate = TRUE, BOOL camera_animate = TRUE); // Trigger transition animation + void changeCameraToFollow(BOOL animate = TRUE); // Ventrella + BOOL cameraThirdPerson() const { return (mCameraMode == CAMERA_MODE_THIRD_PERSON && mLastCameraMode == CAMERA_MODE_THIRD_PERSON); } + BOOL cameraMouselook() const { return (mCameraMode == CAMERA_MODE_MOUSELOOK && mLastCameraMode == CAMERA_MODE_MOUSELOOK); } + BOOL cameraCustomizeAvatar() const { return (mCameraMode == CAMERA_MODE_CUSTOMIZE_AVATAR /*&& !mCameraAnimating*/); } + BOOL cameraFollow() const { return (mCameraMode == CAMERA_MODE_FOLLOW && mLastCameraMode == CAMERA_MODE_FOLLOW); } + ECameraMode getCameraMode() const { return mCameraMode; } + void updateCamera(); // Call once per frame to update camera location/orientation + void resetCamera(); // Slam camera into its default position +private: + ECameraMode mCameraMode; // Target mode after transition animation is done + ECameraMode mLastCameraMode; + + //-------------------------------------------------------------------- + // Position + //-------------------------------------------------------------------- +public: + LLVector3d getCameraPositionGlobal() const; + const LLVector3 &getCameraPositionAgent() const; + LLVector3d calcCameraPositionTargetGlobal(BOOL *hit_limit = NULL); // Calculate the camera position target + F32 getCameraMinOffGround(); // Minimum height off ground for this mode, meters + void setCameraCollidePlane(const LLVector4 &plane) { mCameraCollidePlane = plane; } + BOOL calcCameraMinDistance(F32 &obj_min_distance); + F32 calcCustomizeAvatarUIOffset(const LLVector3d& camera_pos_global); + F32 getCurrentCameraBuildOffset() { return (F32)mCameraFocusOffset.length(); } +private: + F32 mCurrentCameraDistance; // Current camera offset from avatar + F32 mTargetCameraDistance; // Target camera offset from avatar + F32 mCameraFOVZoomFactor; // Amount of fov zoom applied to camera when zeroing in on an object + F32 mCameraCurrentFOVZoomFactor; // Interpolated fov zoom + F32 mCameraFOVDefault; // Default field of view that is basis for FOV zoom effect + LLVector3 mCameraOffsetDefault; // Default third-person camera offset + LLVector4 mCameraCollidePlane; // Colliding plane for camera + F32 mCameraZoomFraction; // Mousewheel driven fraction of zoom + LLVector3 mCameraPositionAgent; // Camera position in agent coordinates + LLVector3 mCameraVirtualPositionAgent; // Camera virtual position (target) before performing FOV zoom + LLVector3d mCameraSmoothingLastPositionGlobal; + LLVector3d mCameraSmoothingLastPositionAgent; + BOOL mCameraSmoothingStop; + LLVector3 mCameraLag; // Third person camera lag + LLVector3 mCameraUpVector; // Camera's up direction in world coordinates (determines the 'roll' of the view) + + //-------------------------------------------------------------------- + // Follow + //-------------------------------------------------------------------- +public: + void setUsingFollowCam(bool using_follow_cam); +private: + LLFollowCam mFollowCam; // Ventrella + + //-------------------------------------------------------------------- + // Sit + //-------------------------------------------------------------------- +public: + void setupSitCamera(); + BOOL sitCameraEnabled() { return mSitCameraEnabled; } + void setSitCamera(const LLUUID &object_id, + const LLVector3 &camera_pos = LLVector3::zero, const LLVector3 &camera_focus = LLVector3::zero); +private: + LLPointer<LLViewerObject> mSitCameraReferenceObject; // Object to which camera is related when sitting + BOOL mSitCameraEnabled; // Use provided camera information when sitting? + LLVector3 mSitCameraPos; // Root relative camera pos when sitting + LLVector3 mSitCameraFocus; // Root relative camera target when sitting + + //-------------------------------------------------------------------- + // Animation + //-------------------------------------------------------------------- +public: + void setCameraAnimating(BOOL b) { mCameraAnimating = b; } + BOOL getCameraAnimating() { return mCameraAnimating; } + void setAnimationDuration(F32 seconds) { mAnimationDuration = seconds; } + void startCameraAnimation(); + void stopCameraAnimation(); +private: + BOOL mCameraAnimating; // Camera is transitioning from one mode to another + LLVector3d mAnimationCameraStartGlobal; // Camera start position, global coords + LLVector3d mAnimationFocusStartGlobal; // Camera focus point, global coords + + //-------------------------------------------------------------------- + // Focus + //-------------------------------------------------------------------- +public: + LLVector3d calcFocusPositionTargetGlobal(); + LLVector3 calcFocusOffset(LLViewerObject *object, LLVector3 pos_agent, S32 x, S32 y); + BOOL getFocusOnAvatar() const { return mFocusOnAvatar; } + LLPointer<LLViewerObject>& getFocusObject() { return mFocusObject; } + F32 getFocusObjectDist() const { return mFocusObjectDist; } + void updateFocusOffset(); + void validateFocusObject(); + void setFocusGlobal(const LLPickInfo& pick); + void setFocusGlobal(const LLVector3d &focus, const LLUUID &object_id = LLUUID::null); + void setFocusOnAvatar(BOOL focus, BOOL animate); + void setCameraPosAndFocusGlobal(const LLVector3d& pos, const LLVector3d& focus, const LLUUID &object_id); + void clearFocusObject(); + void setFocusObject(LLViewerObject* object); + void setObjectTracking(BOOL track) { mTrackFocusObject = track; } + const LLVector3d &getFocusGlobal() const { return mFocusGlobal; } + const LLVector3d &getFocusTargetGlobal() const { return mFocusTargetGlobal; } +private: + LLVector3d mCameraFocusOffset; // Offset from focus point in build mode + LLVector3d mCameraFocusOffsetTarget; // Target towards which we are lerping the camera's focus offset + BOOL mFocusOnAvatar; + LLVector3d mFocusGlobal; + LLVector3d mFocusTargetGlobal; + LLPointer<LLViewerObject> mFocusObject; + F32 mFocusObjectDist; + LLVector3 mFocusObjectOffset; + F32 mFocusDotRadius; // Meters + BOOL mTrackFocusObject; + F32 mUIOffset; - // Ventrella - LLFollowCam mFollowCam; - // end Ventrella - //-------------------------------------------------------------------- - // Wearables + // Lookat / Pointat //-------------------------------------------------------------------- - void setWearable( LLInventoryItem* new_item, LLWearable* wearable ); - static bool onSetWearableDialog( const LLSD& notification, const LLSD& response, LLWearable* wearable ); - void setWearableFinal( LLInventoryItem* new_item, LLWearable* new_wearable ); - void setWearableOutfit( const LLInventoryItem::item_array_t& items, const LLDynamicArray< LLWearable* >& wearables, BOOL remove ); - void queryWearableCache(); - - BOOL isWearableModifiable(EWearableType type); - BOOL isWearableCopyable(EWearableType type); - BOOL needsReplacement(EWearableType wearableType, S32 remove); - U32 getWearablePermMask(EWearableType type); - - LLInventoryItem* getWearableInventoryItem(EWearableType type); - - LLWearable* getWearable( EWearableType type ) { return (type < WT_COUNT) ? mWearableEntry[ type ].mWearable : NULL; } - BOOL isWearingItem( const LLUUID& item_id ); - LLWearable* getWearableFromWearableItem( const LLUUID& item_id ); - const LLUUID& getWearableItem( EWearableType type ) { return (type < WT_COUNT) ? mWearableEntry[ type ].mItemID : LLUUID::null; } - - static EWearableType getTEWearableType( S32 te ); - static LLUUID getDefaultTEImageID( S32 te ); - - void copyWearableToInventory( EWearableType type ); - - void makeNewOutfit( - const std::string& new_folder_name, - const LLDynamicArray<S32>& wearables_to_include, - const LLDynamicArray<S32>& attachments_to_include, - BOOL rename_clothing); - void makeNewOutfitDone(S32 index); - - void removeWearable( EWearableType type ); - static bool onRemoveWearableDialog(const LLSD& notification, const LLSD& response ); - void removeWearableFinal( EWearableType type ); - - void sendAgentWearablesUpdate(); - - /** - * @brief Only public because of addWearableToAgentInventoryCallback. - * - * NOTE: Do not call this method unless you are the inventory callback. - * NOTE: This can suffer from race conditions when working on the - * same values for index. - * @param index The index in mWearableEntry. - * @param item_id The inventory item id of the new wearable to wear. - * @param wearable The actual wearable data. - */ - void addWearabletoAgentInventoryDone( - S32 index, - const LLUUID& item_id, - LLWearable* wearable); - - void saveWearableAs( EWearableType type, const std::string& new_name, BOOL save_in_lost_and_found ); - void saveWearable( EWearableType type, BOOL send_update = TRUE ); - void saveAllWearables(); - - void revertWearable( EWearableType type ); - void revertAllWearables(); - - void setWearableName( const LLUUID& item_id, const std::string& new_name ); - void createStandardWearables(BOOL female); - void createStandardWearablesDone(S32 index); - void createStandardWearablesAllDone(); - - BOOL areWearablesLoaded() { return mWearablesLoaded; } - - void sendWalkRun(bool running); - - void observeFriends(); - void friendsChanged(); - - // statics - static void stopFidget(); - static void processAgentInitialWearablesUpdate(LLMessageSystem* mesgsys, void** user_data); - static void userRemoveWearable( void* userdata ); // userdata is EWearableType - static void userRemoveAllClothes( void* userdata ); // userdata is NULL - static void userRemoveAllClothesStep2(BOOL proceed ); - static void userRemoveAllAttachments( void* userdata); // userdata is NULL - static BOOL selfHasWearable( void* userdata ); // userdata is EWearableType - - //debug methods - static void clearVisualParams(void *); - -protected: - // stuff to do for any sort of teleport. Returns true if the - // teleport can proceed. - bool teleportCore(bool is_local = false); - - // helper function to prematurely age chat when agent is moving - void ageChat(); - - // internal wearable functions - void sendAgentWearablesRequest(); - static void onInitialWearableAssetArrived(LLWearable* wearable, void* userdata); - void recoverMissingWearable(EWearableType type); - void recoverMissingWearableDone(); - void addWearableToAgentInventory(LLPointer<LLInventoryCallback> cb, - LLWearable* wearable, const LLUUID& category_id = LLUUID::null, - BOOL notify = TRUE); public: - // TODO: Make these private! - LLUUID mSecureSessionID; // secure token for this login session - - F32 mDrawDistance; - - U64 mGroupPowers; - BOOL mHideGroupTitle; - std::string mGroupTitle; // honorific, like "Sir" - std::string mGroupName; - LLUUID mGroupID; - //LLUUID mGroupInsigniaID; - LLUUID mInventoryRootID; - LLUUID mMapID; - F64 mMapOriginX; // Global x coord of mMapID's bottom left corner. - F64 mMapOriginY; // Global y coord of mMapID's bottom left corner. - S32 mMapWidth; // Width of map in meters - S32 mMapHeight; // Height of map in meters - std::string mMOTD; // message of the day - + void updateLookAt(const S32 mouse_x, const S32 mouse_y); + BOOL setLookAt(ELookAtType target_type, LLViewerObject *object = NULL, LLVector3 position = LLVector3::zero); + ELookAtType getLookAtType(); + void slamLookAt(const LLVector3 &look_at); // Set the physics data + BOOL setPointAt(EPointAtType target_type, LLViewerObject *object = NULL, LLVector3 position = LLVector3::zero); + EPointAtType getPointAtType(); +public: LLPointer<LLHUDEffectLookAt> mLookAt; LLPointer<LLHUDEffectPointAt> mPointAt; - LLDynamicArray<LLGroupData> mGroups; + //-------------------------------------------------------------------- + // Third person + //-------------------------------------------------------------------- +public: + LLVector3d calcThirdPersonFocusOffset(); + void setThirdPersonHeadOffset(LLVector3 offset) { mThirdPersonHeadOffset = offset; } +private: + LLVector3 mThirdPersonHeadOffset; // Head offset for third person camera position - F32 mHUDTargetZoom; // target zoom level for HUD objects (used when editing) - F32 mHUDCurZoom; // current animated zoom level for HUD objects + //-------------------------------------------------------------------- + // Orbit + //-------------------------------------------------------------------- +public: + void cameraOrbitAround(const F32 radians); // Rotate camera CCW radians about build focus point + void cameraOrbitOver(const F32 radians); // Rotate camera forward radians over build focus point + void cameraOrbitIn(const F32 meters); // Move camera in toward build focus point - BOOL mInitialized; + //-------------------------------------------------------------------- + // Zoom + //-------------------------------------------------------------------- +public: + void handleScrollWheel(S32 clicks); // Mousewheel driven zoom + void cameraZoomIn(const F32 factor); // Zoom in by fraction of current distance + F32 getCameraZoomFraction(); // Get camera zoom as fraction of minimum and maximum zoom + void setCameraZoomFraction(F32 fraction); // Set camera zoom as fraction of minimum and maximum zoom + F32 calcCameraFOVZoomFactor(); - S32 mNumPendingQueries; - S32* mActiveCacheQueries; + //-------------------------------------------------------------------- + // Pan + //-------------------------------------------------------------------- +public: + void cameraPanIn(const F32 meters); + void cameraPanLeft(const F32 meters); + void cameraPanUp(const F32 meters); + + //-------------------------------------------------------------------- + // View + //-------------------------------------------------------------------- +public: + // Called whenever the agent moves. Puts camera back in default position, deselects items, etc. + void resetView(BOOL reset_camera = TRUE, BOOL change_camera = FALSE); + // Called on camera movement. Unlocks camera from the default position behind the avatar. + void unlockView(); + //-------------------------------------------------------------------- + // Mouselook + //-------------------------------------------------------------------- +public: + BOOL getForceMouselook() const { return mForceMouselook; } + void setForceMouselook(BOOL mouselook) { mForceMouselook = mouselook; } +private: BOOL mForceMouselook; + + //-------------------------------------------------------------------- + // HUD + //-------------------------------------------------------------------- +public: + const LLColor4 &getEffectColor(); + void setEffectColor(const LLColor4 &color); +public: + F32 mHUDTargetZoom; // Target zoom level for HUD objects (used when editing) + F32 mHUDCurZoom; // Current animated zoom level for HUD objects +private: + LLColor4 mEffectColor; - static void parseTeleportMessages(const std::string& xml_filename); - //we should really define ERROR and PROGRESS enums here - //but I don't really feel like doing that, so I am just going - //to expose the mappings....yup - static std::map<std::string, std::string> sTeleportErrorMessages; - static std::map<std::string, std::string> sTeleportProgressMessages; +/** Camera + ** ** + *******************************************************************************/ - LLFrameTimer mDoubleTapRunTimer; - EDoubleTapRunMode mDoubleTapRunMode; +/******************************************************************************** + ** ** + ** ACCESS + **/ +public: + // Checks if agent can modify an object based on the permissions and the agent's proxy status. + BOOL isGrantedProxy(const LLPermissions& perm); + BOOL allowOperation(PermissionBit op, + const LLPermissions& perm, + U64 group_proxy_power = 0, + U8 god_minimum = GOD_MAINTENANCE); + const LLAgentAccess& getAgentAccess(); + BOOL canManageEstate() const; + BOOL getAdminOverride() const; + // ! BACKWARDS COMPATIBILITY ! This function can go away after the AO transition (see llstartup.cpp). + void setAOTransition(); private: - bool mbAlwaysRun; // should the avatar run by default rather than walk - bool mbRunning; // is the avatar trying to run right now - - LLAgentAccess mAgentAccess; + LLAgentAccess mAgentAccess; - ETeleportState mTeleportState; - std::string mTeleportMessage; - - S32 mControlsTakenCount[TOTAL_CONTROLS]; - S32 mControlsTakenPassedOnCount[TOTAL_CONTROLS]; - - LLViewerRegion *mRegionp; - LLVector3d mAgentOriginGlobal; // Origin of agent coords from global coords - mutable LLVector3d mPositionGlobal; + //-------------------------------------------------------------------- + // God + //-------------------------------------------------------------------- +public: + BOOL isGodlike() const; + U8 getGodLevel() const; + void setAdminOverride(BOOL b); + void setGodLevel(U8 god_level); + void requestEnterGodMode(); + void requestLeaveGodMode(); - std::string mTeleportSourceSLURL; // SLURL where last TP began. + //-------------------------------------------------------------------- + // Maturity + //-------------------------------------------------------------------- +public: + // Note: this is a prime candidate for pulling out into a Maturity class. + // Rather than just expose the preference setting, we're going to actually + // expose what the client code cares about -- what the user should see + // based on a combination of the is* and prefers* flags, combined with god bit. + bool wantsPGOnly() const; + bool canAccessMature() const; + bool canAccessAdult() const; + bool canAccessMaturityInRegion( U64 region_handle ) const; + bool canAccessMaturityAtGlobal( LLVector3d pos_global ) const; + bool prefersPG() const; + bool prefersMature() const; + bool prefersAdult() const; + bool isTeen() const; + bool isMature() const; + bool isAdult() const; + void setTeen(bool teen); + void setMaturity(char text); + static int convertTextToMaturity(char text); + bool sendMaturityPreferenceToServer(int preferredMaturity); // ! "U8" instead of "int"? + + // Maturity callbacks for PreferredMaturity control variable + void handleMaturity(const LLSD& newvalue); + bool validateMaturity(const LLSD& newvalue); + + +/** Access + ** ** + *******************************************************************************/ + +/******************************************************************************** + ** ** + ** RENDERING + **/ - std::set<U64> mRegionsVisited; // stat - what distinct regions has the avatar been to? - F64 mDistanceTraveled; // stat - how far has the avatar moved? - LLVector3d mLastPositionGlobal; // Used to calculate travel distance +public: + LLQuaternion getHeadRotation(); + BOOL needsRenderAvatar(); // TRUE when camera mode is such that your own avatar should draw + BOOL needsRenderHead(); +public: + F32 mDrawDistance; +private: + BOOL mShowAvatar; // Should we render the avatar? + U32 mAppearanceSerialNum; + + //-------------------------------------------------------------------- + // Rendering state bitmap helpers + //-------------------------------------------------------------------- +public: + void setRenderState(U8 newstate); + void clearRenderState(U8 clearstate); + U8 getRenderState(); +private: + U8 mRenderState; // Current behavior state of agent - LLPointer<LLVOAvatar> mAvatarObject; // NULL until avatar object sent down from simulator +/** Rendering + ** ** + *******************************************************************************/ - U8 mRenderState; // Current behavior state of agent - LLFrameTimer mTypingTimer; +/******************************************************************************** + ** ** + ** GROUPS + **/ - ECameraMode mCameraMode; // target mode after transition animation is done - ECameraMode mLastCameraMode; - BOOL mViewsPushed; // keep track of whether or not we have pushed views. - - BOOL mCustomAnim ; //current animation is ANIM_AGENT_CUSTOMIZE ? - BOOL mShowAvatar; // should we render the avatar? - BOOL mCameraAnimating; // camera is transitioning from one mode to another - LLVector3d mAnimationCameraStartGlobal; // camera start position, global coords - LLVector3d mAnimationFocusStartGlobal; // camera focus point, global coords - LLFrameTimer mAnimationTimer; // seconds that transition animation has been active - F32 mAnimationDuration; // seconds - F32 mCameraFOVZoomFactor; // amount of fov zoom applied to camera when zeroing in on an object - F32 mCameraCurrentFOVZoomFactor; // interpolated fov zoom - F32 mCameraFOVDefault; // default field of view that is basis for FOV zoom effect - LLVector3d mCameraFocusOffset; // offset from focus point in build mode - LLVector3d mCameraFocusOffsetTarget; // target towards which we are lerping the camera's focus offset - LLVector3 mCameraOffsetDefault; // default third-person camera offset - LLVector4 mCameraCollidePlane; // colliding plane for camera - F32 mCurrentCameraDistance; // current camera offset from avatar - F32 mTargetCameraDistance; // target camera offset from avatar - F32 mCameraZoomFraction; // mousewheel driven fraction of zoom - LLVector3 mCameraLag; // third person camera lag - LLVector3 mThirdPersonHeadOffset; // head offset for third person camera position - LLVector3 mCameraPositionAgent; // camera position in agent coordinates - LLVector3 mCameraVirtualPositionAgent; // camera virtual position (target) before performing FOV zoom - BOOL mSitCameraEnabled; // use provided camera information when sitting? - LLVector3 mSitCameraPos; // root relative camera pos when sitting - LLVector3 mSitCameraFocus; // root relative camera target when sitting - LLVector3d mCameraSmoothingLastPositionGlobal; - LLVector3d mCameraSmoothingLastPositionAgent; - BOOL mCameraSmoothingStop; +public: + const LLUUID &getGroupID() const { return mGroupID; } + // Get group information by group_id, or FALSE if not in group. + BOOL getGroupData(const LLUUID& group_id, LLGroupData& data) const; + // Get just the agent's contribution to the given group. + S32 getGroupContribution(const LLUUID& group_id) const; + // Update internal datastructures and update the server. + BOOL setGroupContribution(const LLUUID& group_id, S32 contribution); + BOOL setUserGroupFlags(const LLUUID& group_id, BOOL accept_notices, BOOL list_in_profile); + const std::string &getGroupName() const { return mGroupName; } +private: + std::string mGroupName; + LLUUID mGroupID; - LLVector3 mCameraUpVector; // camera's up direction in world coordinates (determines the 'roll' of the view) + //-------------------------------------------------------------------- + // Group Membership + //-------------------------------------------------------------------- +public: + // Checks against all groups in the entire agent group list. + BOOL isInGroup(const LLUUID& group_id) const; +protected: + // Only used for building titles. + BOOL isGroupMember() const { return !mGroupID.isNull(); } +public: + LLDynamicArray<LLGroupData> mGroups; - LLPointer<LLViewerObject> mSitCameraReferenceObject; // object to which camera is related when sitting + //-------------------------------------------------------------------- + // Group Title + //-------------------------------------------------------------------- +public: + void setHideGroupTitle(BOOL hide) { mHideGroupTitle = hide; } + BOOL isGroupTitleHidden() const { return mHideGroupTitle; } +private: + std::string mGroupTitle; // Honorific, like "Sir" + BOOL mHideGroupTitle; - BOOL mFocusOnAvatar; - LLVector3d mFocusGlobal; - LLVector3d mFocusTargetGlobal; - LLPointer<LLViewerObject> mFocusObject; - F32 mFocusObjectDist; - LLVector3 mFocusObjectOffset; - F32 mFocusDotRadius; // meters - BOOL mTrackFocusObject; - F32 mUIOffset; + //-------------------------------------------------------------------- + // Group Powers + //-------------------------------------------------------------------- +public: + BOOL hasPowerInGroup(const LLUUID& group_id, U64 power) const; + BOOL hasPowerInActiveGroup(const U64 power) const; + U64 getPowerInGroup(const LLUUID& group_id) const; + U64 mGroupPowers; - LLCoordFrame mFrameAgent; // Agent position and view, agent-region coordinates + //-------------------------------------------------------------------- + // Friends + //-------------------------------------------------------------------- +public: + void observeFriends(); + void friendsChanged(); +private: + LLFriendObserver* mFriendObserver; + std::set<LLUUID> mProxyForAgents; - BOOL mIsBusy; +/** Groups + ** ** + *******************************************************************************/ - S32 mAtKey; // Either 1, 0, or -1... indicates that movement-key is pressed - S32 mWalkKey; // like AtKey, but causes less forward thrust - S32 mLeftKey; - S32 mUpKey; - F32 mYawKey; - S32 mPitchKey; +/******************************************************************************** + ** ** + ** MESSAGING + **/ - F32 mOrbitLeftKey; - F32 mOrbitRightKey; - F32 mOrbitUpKey; - F32 mOrbitDownKey; - F32 mOrbitInKey; - F32 mOrbitOutKey; + //-------------------------------------------------------------------- + // Send + //-------------------------------------------------------------------- +public: + void sendMessage(); // Send message to this agent's region + void sendReliableMessage(); + void sendAgentSetAppearance(); + void sendAgentDataUpdateRequest(); + void sendAgentUserInfoRequest(); + // IM to Email and Online visibility + void sendAgentUpdateUserInfo(bool im_to_email, const std::string& directory_visibility); - F32 mPanUpKey; - F32 mPanDownKey; - F32 mPanLeftKey; - F32 mPanRightKey; - F32 mPanInKey; - F32 mPanOutKey; + //-------------------------------------------------------------------- + // Receive + //-------------------------------------------------------------------- +public: + static void processAgentDataUpdate(LLMessageSystem *msg, void **); + static void processAgentGroupDataUpdate(LLMessageSystem *msg, void **); + static void processAgentDropGroup(LLMessageSystem *msg, void **); + static void processScriptControlChange(LLMessageSystem *msg, void **); + static void processAgentCachedTextureResponse(LLMessageSystem *mesgsys, void **user_data); + +/** Messaging + ** ** + *******************************************************************************/ - U32 mControlFlags; // replacement for the mFooKey's - BOOL mbFlagsDirty; - BOOL mbFlagsNeedReset; // HACK for preventing incorrect flags sent when crossing region boundaries +/******************************************************************************** + ** ** + ** DEBUGGING + **/ - BOOL mbJump; +public: + static void dumpGroupInfo(); + static void clearVisualParams(void *); + friend std::ostream& operator<<(std::ostream &s, const LLAgent &sphere); - BOOL mAutoPilot; - BOOL mAutoPilotFlyOnStop; - LLVector3d mAutoPilotTargetGlobal; - F32 mAutoPilotStopDistance; - BOOL mAutoPilotUseRotation; - LLVector3 mAutoPilotTargetFacing; - F32 mAutoPilotTargetDist; - S32 mAutoPilotNoProgressFrameCount; - F32 mAutoPilotRotationThreshold; - std::string mAutoPilotBehaviorName; - void (*mAutoPilotFinishedCallback)(BOOL, void *); - void* mAutoPilotCallbackData; - LLUUID mLeaderID; +/** Debugging + ** ** + *******************************************************************************/ - std::set<LLUUID> mProxyForAgents; +}; - LLColor4 mEffectColor; +extern LLAgent gAgent; - BOOL mHaveHomePosition; - U64 mHomeRegionHandle; - LLVector3 mHomePosRegion; - LLFrameTimer mChatTimer; - LLUUID mLastChatterID; - F32 mNearChatRadius; +inline bool operator==(const LLGroupData &a, const LLGroupData &b) +{ + return (a.mID == b.mID); +} - LLFrameTimer mFidgetTimer; - LLFrameTimer mFocusObjectFadeTimer; - F32 mNextFidgetTime; - S32 mCurrentFidget; - BOOL mFirstLogin; - BOOL mGenderChosen; +class LLAgentQueryManager +{ + friend class LLAgent; + friend class LLAgentWearables; - //-------------------------------------------------------------------- - // Wearables - //-------------------------------------------------------------------- - struct LLWearableEntry - { - LLWearableEntry() : mItemID( LLUUID::null ), mWearable( NULL ) {} - - LLUUID mItemID; // ID of the inventory item in the agent's inventory. - LLWearable* mWearable; - }; - LLWearableEntry mWearableEntry[ WT_COUNT ]; - U32 mAgentWearablesUpdateSerialNum; - BOOL mWearablesLoaded; - S32 mTextureCacheQueryID; - U32 mAppearanceSerialNum; - LLAnimPauseRequest mPauseRequest; - - class createStandardWearablesAllDoneCallback : public LLRefCount - { - protected: - ~createStandardWearablesAllDoneCallback(); - }; - class sendAgentWearablesUpdateCallback : public LLRefCount - { - protected: - ~sendAgentWearablesUpdateCallback(); - }; - - class addWearableToAgentInventoryCallback : public LLInventoryCallback - { - public: - enum { - CALL_NONE = 0, - CALL_UPDATE = 1, - CALL_RECOVERDONE = 2, - CALL_CREATESTANDARDDONE = 4, - CALL_MAKENEWOUTFITDONE = 8 - } EType; - - /** - * @brief Construct a callback for dealing with the wearables. - * - * Would like to pass the agent in here, but we can't safely - * count on it being around later. Just use gAgent directly. - * @param cb callback to execute on completion (??? unused ???) - * @param index Index for the wearable in the agent - * @param wearable The wearable data. - * @param todo Bitmask of actions to take on completion. - */ - addWearableToAgentInventoryCallback( - LLPointer<LLRefCount> cb, - S32 index, - LLWearable* wearable, - U32 todo = CALL_NONE); - virtual void fire(const LLUUID& inv_item); - - private: - S32 mIndex; - LLWearable* mWearable; - U32 mTodo; - LLPointer<LLRefCount> mCB; - }; - - LLFriendObserver* mFriendObserver; +public: + LLAgentQueryManager(); + virtual ~LLAgentQueryManager(); + + BOOL hasNoPendingQueries() const { return getNumPendingQueries() == 0; } + S32 getNumPendingQueries() const { return mNumPendingQueries; } +private: + S32 mNumPendingQueries; + S32 mWearablesCacheQueryID; + U32 mUpdateSerialNum; + S32 mActiveCacheQueries[LLVOAvatarDefines::BAKED_NUM_INDICES]; }; -extern LLAgent gAgent; +extern LLAgentQueryManager gAgentQueryManager; #endif diff --git a/indra/newview/llagentpilot.cpp b/indra/newview/llagentpilot.cpp index 95595c87ab00a1c4169bb57b6effa4c0e7027702..8ffb97d8fcd263354708750dbcfbf48feb775b9e 100644 --- a/indra/newview/llagentpilot.cpp +++ b/indra/newview/llagentpilot.cpp @@ -44,6 +44,7 @@ LLAgentPilot gAgentPilot; BOOL LLAgentPilot::sLoop = TRUE; +BOOL LLAgentPilot::sReplaySession = FALSE; LLAgentPilot::LLAgentPilot() : mNumRuns(-1), @@ -176,6 +177,11 @@ void LLAgentPilot::stopPlayback() mTimer.reset(); gAgent.stopAutoPilot(); } + + if (sReplaySession) + { + LLAppViewer::instance()->forceQuit(); + } } void LLAgentPilot::updateTarget() diff --git a/indra/newview/llagentpilot.h b/indra/newview/llagentpilot.h index 0ad4772f688879bb3d355d6c3713418639c4e56d..dc034398a70b5cc0ad851c73a4c66f2f3c2317f2 100644 --- a/indra/newview/llagentpilot.h +++ b/indra/newview/llagentpilot.h @@ -70,6 +70,7 @@ class LLAgentPilot static void startPlayback(void *); static void stopPlayback(void *); static BOOL sLoop; + static BOOL sReplaySession; S32 mNumRuns; BOOL mQuitAfterRuns; diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp new file mode 100644 index 0000000000000000000000000000000000000000..1c756b1441fe2731e9d4754432a1ffe54696aef4 --- /dev/null +++ b/indra/newview/llagentwearables.cpp @@ -0,0 +1,1584 @@ +/** + * @file llagentwearables.cpp + * @brief LLAgentWearables class implementation + * + * $LicenseInfo:firstyear=2001&license=viewergpl$ + * + * Copyright (c) 2001-2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#include "llviewerprecompiledheaders.h" + +#include "llagent.h" +#include "llagentwearables.h" + +#include "llfloatercustomize.h" +#include "llinventoryview.h" +#include "llinventorymodel.h" +#include "llnotify.h" +#include "llviewerregion.h" +#include "llvoavatarself.h" +#include "llwearable.h" +#include "llwearablelist.h" + +LLAgentWearables gAgentWearables; + +BOOL LLAgentWearables::mInitialWearablesUpdateReceived = FALSE; + +using namespace LLVOAvatarDefines; + +void LLAgentWearables::dump() +{ + llinfos << "LLAgentWearablesDump" << llendl; + for (S32 i = 0; i < WT_COUNT; i++) + { + U32 count = getWearableCount((EWearableType)i); + llinfos << "Type: " << i << " count " << count << llendl; + for (U32 j=0; j<count; j++) + { + LLWearableInv* wearable_entry = getWearableInv((EWearableType)i,j); + if (wearable_entry == NULL) + { + llinfos << " " << j << " NULL entry" << llendl; + continue; + } + if (wearable_entry->mWearable == NULL) + { + llinfos << " " << j << " NULL wearable" << llendl; + continue; + } + llinfos << " " << j << " Name " << wearable_entry->mWearable->getName() + << " description " << wearable_entry->mWearable->getDescription() << llendl; + + } + } +} + +// MULTI-WEARABLE: debugging +struct LLAgentDumper +{ + LLAgentDumper(std::string name): + mName(name) + { + llinfos << llendl; + llinfos << "LLAgentDumper " << mName << llendl; + gAgentWearables.dump(); + } + + ~LLAgentDumper() + { + llinfos << llendl; + llinfos << "~LLAgentDumper " << mName << llendl; + gAgentWearables.dump(); + } + + std::string mName; +}; + +LLAgentWearables::LLAgentWearables() : + mWearablesLoaded(FALSE), + mAvatarObject(NULL) +{ + // MULTI-WEARABLE: TODO remove null entries. + for (U32 i = 0; i < WT_COUNT; i++) + { + mWearableDatas[(EWearableType)i].push_back(new LLWearableInv); + } +} + +LLAgentWearables::~LLAgentWearables() +{ + cleanup(); +} + +void LLAgentWearables::cleanup() +{ + for (wearableentry_map_t::iterator iter = mWearableDatas.begin(); + iter != mWearableDatas.end(); + iter++) + { + wearableentry_vec_t &wearables = iter->second; + for (U32 i = 0; i < wearables.size(); i++) + { + LLWearableInv *wearable = wearables[i]; + delete wearable; + wearables[i] = NULL; + } + } + mAvatarObject = NULL; +} + +void LLAgentWearables::setAvatarObject(LLVOAvatarSelf *avatar) +{ + mAvatarObject = avatar; + if (avatar) + { + sendAgentWearablesRequest(); + } +} + +// wearables +LLAgentWearables::createStandardWearablesAllDoneCallback::~createStandardWearablesAllDoneCallback() +{ + gAgentWearables.createStandardWearablesAllDone(); +} + +LLAgentWearables::sendAgentWearablesUpdateCallback::~sendAgentWearablesUpdateCallback() +{ + gAgentWearables.sendAgentWearablesUpdate(); +} + +/** + * @brief Construct a callback for dealing with the wearables. + * + * Would like to pass the agent in here, but we can't safely + * count on it being around later. Just use gAgent directly. + * @param cb callback to execute on completion (??? unused ???) + * @param type Type for the wearable in the agent + * @param wearable The wearable data. + * @param todo Bitmask of actions to take on completion. + */ +LLAgentWearables::addWearableToAgentInventoryCallback::addWearableToAgentInventoryCallback( + LLPointer<LLRefCount> cb, S32 type, U32 index, LLWearable* wearable, U32 todo) : + mType(type), + mIndex(index), + mWearable(wearable), + mTodo(todo), + mCB(cb) +{ +} + +void LLAgentWearables::addWearableToAgentInventoryCallback::fire(const LLUUID& inv_item) +{ + if (inv_item.isNull()) + return; + + gAgentWearables.addWearabletoAgentInventoryDone(mType, mIndex, inv_item, mWearable); + + if (mTodo & CALL_UPDATE) + { + gAgentWearables.sendAgentWearablesUpdate(); + } + if (mTodo & CALL_RECOVERDONE) + { + gAgentWearables.recoverMissingWearableDone(); + } + /* + * Do this for every one in the loop + */ + if (mTodo & CALL_CREATESTANDARDDONE) + { + gAgentWearables.createStandardWearablesDone(mType, mIndex); + } + if (mTodo & CALL_MAKENEWOUTFITDONE) + { + gAgentWearables.makeNewOutfitDone(mType, mIndex); + } +} + +void LLAgentWearables::addWearabletoAgentInventoryDone(const S32 type, + const U32 index, + const LLUUID& item_id, + LLWearable* wearable) +{ + if (item_id.isNull()) + return; + + LLWearableInv* wearable_entry = getWearableInv((EWearableType)type, index); + + LLUUID old_item_id = wearable_entry->mItemID; + wearable_entry->mItemID = item_id; + wearable_entry->mWearable = wearable; + if (old_item_id.notNull()) + gInventory.addChangedMask(LLInventoryObserver::LABEL, old_item_id); + gInventory.addChangedMask(LLInventoryObserver::LABEL, item_id); + LLViewerInventoryItem* item = gInventory.getItem(item_id); + if (item && wearable) + { + // We're changing the asset id, so we both need to set it + // locally via setAssetUUID() and via setTransactionID() which + // will be decoded on the server. JC + item->setAssetUUID(wearable->getID()); + item->setTransactionID(wearable->getTransactionID()); + gInventory.addChangedMask(LLInventoryObserver::INTERNAL, item_id); + item->updateServer(FALSE); + } + gInventory.notifyObservers(); +} + +void LLAgentWearables::sendAgentWearablesUpdate() +{ + // MULTI-WEARABLE: call i "type" or something. + // First make sure that we have inventory items for each wearable + for (S32 i=0; i < WT_COUNT; ++i) + { + for (U32 j=0; j < getWearableCount((EWearableType)i); j++) + { + LLWearableInv* wearable_entry = getWearableInv((EWearableType)i,j); + LLWearable* wearable = wearable_entry->mWearable; + if (wearable) + { + if (wearable_entry->mItemID.isNull()) + { + LLPointer<LLInventoryCallback> cb = + new addWearableToAgentInventoryCallback( + LLPointer<LLRefCount>(NULL), + i, + j, + wearable, + addWearableToAgentInventoryCallback::CALL_NONE); + addWearableToAgentInventory(cb, wearable); + } + else + { + gInventory.addChangedMask(LLInventoryObserver::LABEL, + wearable_entry->mItemID); + } + } + } + } + + // Then make sure the inventory is in sync with the avatar. + gInventory.notifyObservers(); + + // Send the AgentIsNowWearing + gMessageSystem->newMessageFast(_PREHASH_AgentIsNowWearing); + + gMessageSystem->nextBlockFast(_PREHASH_AgentData); + gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); + gMessageSystem->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); + + lldebugs << "sendAgentWearablesUpdate()" << llendl; + // MULTI-WEARABLE: update for multi-wearables after server-side support is in. + for (S32 i=0; i < WT_COUNT; ++i) + { + gMessageSystem->nextBlockFast(_PREHASH_WearableData); + + U8 type_u8 = (U8)i; + gMessageSystem->addU8Fast(_PREHASH_WearableType, type_u8); + + // MULTI-WEARABLE: TODO: hacked index to 0, needs to loop over all once messages support this. + LLWearableInv* wearable_entry = getWearableInv((EWearableType)i, 0); + LLWearable* wearable = wearable_entry->mWearable; + if (wearable) + { + //llinfos << "Sending wearable " << wearable->getName() << llendl; + gMessageSystem->addUUIDFast(_PREHASH_ItemID, wearable_entry->mItemID); + } + else + { + //llinfos << "Not wearing wearable type " << LLWearableDictionary::getInstance()->getWearable((EWearableType)i) << llendl; + gMessageSystem->addUUIDFast(_PREHASH_ItemID, LLUUID::null); + } + + lldebugs << " " << LLWearableDictionary::getTypeLabel((EWearableType)i) << ": " << (wearable ? wearable->getID() : LLUUID::null) << llendl; + } + gAgent.sendReliableMessage(); +} + +// MULTI-WEARABLE: add index. +void LLAgentWearables::saveWearable(const EWearableType type, const U32 index, BOOL send_update) +{ + LLWearableInv* wearable_entry = getWearableInv(type, index); + LLWearable* old_wearable = wearable_entry ? wearable_entry->mWearable : NULL; + if (old_wearable && (old_wearable->isDirty() || old_wearable->isOldVersion())) + { + LLWearable* new_wearable = LLWearableList::instance().createCopyFromAvatar(old_wearable); + wearable_entry->mWearable = new_wearable; + + LLInventoryItem* item = gInventory.getItem(wearable_entry->mItemID); + if (item) + { + // Update existing inventory item + LLPointer<LLViewerInventoryItem> template_item = + new LLViewerInventoryItem(item->getUUID(), + item->getParentUUID(), + item->getPermissions(), + new_wearable->getID(), + new_wearable->getAssetType(), + item->getInventoryType(), + item->getName(), + item->getDescription(), + item->getSaleInfo(), + item->getFlags(), + item->getCreationDate()); + template_item->setTransactionID(new_wearable->getTransactionID()); + template_item->updateServer(FALSE); + gInventory.updateItem(template_item); + } + else + { + // Add a new inventory item (shouldn't ever happen here) + U32 todo = addWearableToAgentInventoryCallback::CALL_NONE; + if (send_update) + { + todo |= addWearableToAgentInventoryCallback::CALL_UPDATE; + } + LLPointer<LLInventoryCallback> cb = + new addWearableToAgentInventoryCallback( + LLPointer<LLRefCount>(NULL), + (S32)type, + index, + new_wearable, + todo); + addWearableToAgentInventory(cb, new_wearable); + return; + } + + gAgent.getAvatarObject()->wearableUpdated( type ); + + if (send_update) + { + sendAgentWearablesUpdate(); + } + } +} + +// MULTI-WEARABLE: add index +void LLAgentWearables::saveWearableAs(const EWearableType type, + const U32 index, + const std::string& new_name, + BOOL save_in_lost_and_found) +{ + if (!isWearableCopyable(type, index)) + { + llwarns << "LLAgent::saveWearableAs() not copyable." << llendl; + return; + } + LLWearableInv* wearable_entry = getWearableInv(type, index); + LLWearable* old_wearable = wearable_entry->mWearable; + if (!old_wearable) + { + llwarns << "LLAgent::saveWearableAs() no old wearable." << llendl; + return; + } + + LLInventoryItem* item = gInventory.getItem(wearable_entry->mItemID); + if (!item) + { + llwarns << "LLAgent::saveWearableAs() no inventory item." << llendl; + return; + } + std::string trunc_name(new_name); + LLStringUtil::truncate(trunc_name, DB_INV_ITEM_NAME_STR_LEN); + LLWearable* new_wearable = LLWearableList::instance().createCopyFromAvatar( + old_wearable, + trunc_name); + LLPointer<LLInventoryCallback> cb = + new addWearableToAgentInventoryCallback( + LLPointer<LLRefCount>(NULL), + type, + index, + new_wearable, + addWearableToAgentInventoryCallback::CALL_UPDATE); + LLUUID category_id; + if (save_in_lost_and_found) + { + category_id = gInventory.findCategoryUUIDForType( + LLAssetType::AT_LOST_AND_FOUND); + } + else + { + // put in same folder as original + category_id = item->getParentUUID(); + } + + copy_inventory_item( + gAgent.getID(), + item->getPermissions().getOwner(), + item->getUUID(), + category_id, + new_name, + cb); +} + +void LLAgentWearables::revertWearable(const EWearableType type, const U32 index) +{ + LLWearableInv* wearable_entry = getWearableInv(type, index); + LLWearable* wearable = wearable_entry->mWearable; + if (wearable) + { + wearable->writeToAvatar(TRUE); + } + gAgent.sendAgentSetAppearance(); +} + +void LLAgentWearables::saveAllWearables() +{ + //if (!gInventory.isLoaded()) + //{ + // return; + //} + + for (S32 i=0; i < WT_COUNT; i++) + { + for (U32 j=0; j < getWearableCount((EWearableType)i); j++) + saveWearable((EWearableType)i, j, FALSE); + } + sendAgentWearablesUpdate(); +} + +// Called when the user changes the name of a wearable inventory item that is currently being worn. +void LLAgentWearables::setWearableName(const LLUUID& item_id, const std::string& new_name) +{ + for (S32 i=0; i < WT_COUNT; i++) + { + for (U32 j=0; j < getWearableCount((EWearableType)i); j++) + { + LLWearableInv* wearable_entry = getWearableInv((EWearableType)i,j); + if (wearable_entry->mItemID == item_id) + { + LLWearable* old_wearable = wearable_entry->mWearable; + llassert(old_wearable); + + std::string old_name = old_wearable->getName(); + old_wearable->setName(new_name); + LLWearable* new_wearable = LLWearableList::instance().createCopy(old_wearable); + LLInventoryItem* item = gInventory.getItem(item_id); + if (item) + { + new_wearable->setPermissions(item->getPermissions()); + } + old_wearable->setName(old_name); + + wearable_entry->mWearable = new_wearable; + sendAgentWearablesUpdate(); + break; + } + } + } +} + + +BOOL LLAgentWearables::isWearableModifiable(EWearableType type, U32 index) const +{ + LLUUID item_id = getWearableItem(type, index); + if (!item_id.isNull()) + { + LLInventoryItem* item = gInventory.getItem(item_id); + if (item && item->getPermissions().allowModifyBy(gAgent.getID(), + gAgent.getGroupID())) + { + return TRUE; + } + } + return FALSE; +} + +BOOL LLAgentWearables::isWearableCopyable(EWearableType type, U32 index) const +{ + LLUUID item_id = getWearableItem(type, index); + if (!item_id.isNull()) + { + LLInventoryItem* item = gInventory.getItem(item_id); + if (item && item->getPermissions().allowCopyBy(gAgent.getID(), + gAgent.getGroupID())) + { + return TRUE; + } + } + return FALSE; +} + +/* + U32 LLAgentWearables::getWearablePermMask(EWearableType type) + { + LLUUID item_id = getWearableItem(type); + if (!item_id.isNull()) + { + LLInventoryItem* item = gInventory.getItem(item_id); + if (item) + { + return item->getPermissions().getMaskOwner(); + } + } + return PERM_NONE; + } +*/ + +LLInventoryItem* LLAgentWearables::getWearableInventoryItem(EWearableType type, U32 index) +{ + LLUUID item_id = getWearableItem(type,index); + LLInventoryItem* item = NULL; + if (item_id.notNull()) + { + item = gInventory.getItem(item_id); + } + return item; +} + +LLWearable* LLAgentWearables::getWearableFromWearableItem(const LLUUID& item_id) const +{ + for (S32 i=0; i < WT_COUNT; i++) + { + for (U32 j=0; j < getWearableCount((EWearableType)i); j++) + { + const LLWearableInv* wearable_entry = getWearableInv((EWearableType)i, j); + if (wearable_entry->mItemID == item_id) + { + return wearable_entry->mWearable; + } + } + } + return NULL; +} + +void LLAgentWearables::sendAgentWearablesRequest() +{ + gMessageSystem->newMessageFast(_PREHASH_AgentWearablesRequest); + gMessageSystem->nextBlockFast(_PREHASH_AgentData); + gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); + gMessageSystem->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); + gAgent.sendReliableMessage(); +} + +// MULTI-WEARABLE: update for multiple items per type. +// Used to enable/disable menu items. +// static +BOOL LLAgentWearables::selfHasWearable(void* userdata) +{ + EWearableType type = (EWearableType)(intptr_t)userdata; + // MULTI-WEARABLE: TODO could be getWearableCount > 0, once null entries have been eliminated. + return gAgentWearables.getWearableInv(type,0)->mWearable != NULL; +} + +const LLAgentWearables::LLWearableInv LLAgentWearables::s_null_wearable; + +LLWearable* LLAgentWearables::getWearable(const EWearableType type, U32 index) +{ + LLWearableInv* inv = getWearableInv(type,index); + return inv->mWearable; +} + +const LLWearable* LLAgentWearables::getWearable(const EWearableType type, U32 index) const +{ + const LLWearableInv* inv = getWearableInv(type,index); + return inv->mWearable; +} + +//MULTI-WEARABLE: this will give wrong values until we get rid of the "always one empty object" scheme. +U32 LLAgentWearables::getWearableCount(const EWearableType type) const +{ + wearableentry_map_t::const_iterator wearable_iter = mWearableDatas.find(type); + if (wearable_iter == mWearableDatas.end()) + { + return 0; + } + const wearableentry_vec_t& wearable_vec = wearable_iter->second; + return wearable_vec.size(); +} + +LLAgentWearables::LLWearableInv* LLAgentWearables::getWearableInv(const EWearableType type, U32 index) +{ + wearableentry_map_t::iterator wearable_iter = mWearableDatas.find(type); + if (wearable_iter == mWearableDatas.end()) + { + return NULL; + } + wearableentry_vec_t& wearable_vec = wearable_iter->second; + if (index>=wearable_vec.size()) + { + return NULL; + } + else + { + return wearable_vec[index]; + } +} + +const LLAgentWearables::LLWearableInv* LLAgentWearables::getWearableInv(const EWearableType type, U32 index) const +{ + wearableentry_map_t::const_iterator wearable_iter = mWearableDatas.find(type); + if (wearable_iter == mWearableDatas.end()) return &s_null_wearable; + const wearableentry_vec_t& wearable_vec = wearable_iter->second; + if (index>=wearable_vec.size()) + return &s_null_wearable; + else + return wearable_vec[index]; +} + +const LLUUID& LLAgentWearables::getWearableItem(EWearableType type, U32 index) const +{ + return getWearableInv(type,index)->mItemID; +} + + +BOOL LLAgentWearables::isWearingItem(const LLUUID& item_id) const +{ + return (getWearableFromWearableItem(item_id) != NULL); +} + +// MULTI-WEARABLE: update for multiple +// static +void LLAgentWearables::processAgentInitialWearablesUpdate(LLMessageSystem* mesgsys, void** user_data) +{ + // We should only receive this message a single time. Ignore subsequent AgentWearablesUpdates + // that may result from AgentWearablesRequest having been sent more than once. + if (mInitialWearablesUpdateReceived) + return; + mInitialWearablesUpdateReceived = true; + + LLUUID agent_id; + gMessageSystem->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, agent_id); + + LLVOAvatar* avatar = gAgent.getAvatarObject(); + if (avatar && (agent_id == avatar->getID())) + { + gMessageSystem->getU32Fast(_PREHASH_AgentData, _PREHASH_SerialNum, gAgentQueryManager.mUpdateSerialNum); + + S32 num_wearables = gMessageSystem->getNumberOfBlocksFast(_PREHASH_WearableData); + if (num_wearables < 4) + { + // Transitional state. Avatars should always have at least their body parts (hair, eyes, shape and skin). + // The fact that they don't have any here (only a dummy is sent) implies that this account existed + // before we had wearables, or that the database has gotten messed up. + return; + } + + //lldebugs << "processAgentInitialWearablesUpdate()" << llendl; + // Add wearables + LLUUID asset_id_array[WT_COUNT]; + // MULTI-WEARABLE: TODO: update once messages change. Currently use results to populate the zeroth element. + for (S32 i=0; i < num_wearables; i++) + { + U8 type_u8 = 0; + gMessageSystem->getU8Fast(_PREHASH_WearableData, _PREHASH_WearableType, type_u8, i); + if (type_u8 >= WT_COUNT) + { + continue; + } + const EWearableType type = (EWearableType) type_u8; + + LLUUID item_id; + gMessageSystem->getUUIDFast(_PREHASH_WearableData, _PREHASH_ItemID, item_id, i); + + LLUUID asset_id; + gMessageSystem->getUUIDFast(_PREHASH_WearableData, _PREHASH_AssetID, asset_id, i); + if (asset_id.isNull()) + { + LLWearable::removeFromAvatar(type, FALSE); + } + else + { + LLAssetType::EType asset_type = LLWearableDictionary::getAssetType(type); + if (asset_type == LLAssetType::AT_NONE) + { + continue; + } + // MULTI-WEARABLE: TODO FIXME: assumes zeroth element always exists and can be safely written to. + LLWearableInv* wearable_entry = gAgentWearables.getWearableInv(type,0); + wearable_entry->mItemID = item_id; + asset_id_array[type] = asset_id; + } + + lldebugs << " " << LLWearableDictionary::getTypeLabel(type) << llendl; + } + + // now that we have the asset ids...request the wearable assets + for (S32 i = 0; i < WT_COUNT; i++) + { + // MULTI-WEARABLE: TODO: update once messages change. Currently use results to populate the zeroth element. + LLWearableInv* wearable_entry = gAgentWearables.getWearableInv((EWearableType)i, 0); + if (!wearable_entry->mItemID.isNull()) + { + LLWearableList::instance().getAsset(asset_id_array[i], + LLStringUtil::null, + LLWearableDictionary::getAssetType((EWearableType) i), + onInitialWearableAssetArrived, (void*)(intptr_t)i); + } + } + } +} + +// A single wearable that the avatar was wearing on start-up has arrived from the database. +// static +void LLAgentWearables::onInitialWearableAssetArrived(LLWearable* wearable, void* userdata) +{ + const EWearableType type = (EWearableType)(intptr_t)userdata; + + LLVOAvatarSelf* avatar = gAgent.getAvatarObject(); + if (!avatar) + { + return; + } + + if (wearable) + { + llassert(type == wearable->getType()); + // MULTI-WEARABLE: is this always zeroth element? Change sometime. + LLWearableInv* wearable_entry = gAgentWearables.getWearableInv(type,0); + wearable_entry->mWearable = wearable; + + // disable composites if initial textures are baked + avatar->setupComposites(); + gAgentWearables.queryWearableCache(); + + wearable->writeToAvatar(FALSE); + avatar->setCompositeUpdatesEnabled(TRUE); + gInventory.addChangedMask(LLInventoryObserver::LABEL, wearable_entry->mItemID); + } + else + { + // Somehow the asset doesn't exist in the database. + // MULTI-WEARABLE: assuming zeroth elt + gAgentWearables.recoverMissingWearable(type,0); + } + + gInventory.notifyObservers(); + + // Have all the wearables that the avatar was wearing at log-in arrived? + // MULTI-WEARABLE: update when multiple wearables can arrive per type. + if (!gAgentWearables.mWearablesLoaded) + { + gAgentWearables.mWearablesLoaded = TRUE; + for (S32 i = 0; i < WT_COUNT; i++) + { + LLWearableInv* wearable_entry = gAgentWearables.getWearableInv((EWearableType)i,0); + if (!wearable_entry->mItemID.isNull() && !wearable_entry->mWearable) + { + gAgentWearables.mWearablesLoaded = FALSE; + break; + } + } + } + + if (gAgentWearables.mWearablesLoaded) + { + + // Can't query cache until all wearables have arrived, so calling this earlier is a no-op. + gAgentWearables.queryWearableCache(); + + // Make sure that the server's idea of the avatar's wearables actually match the wearables. + gAgent.sendAgentSetAppearance(); + + // Check to see if there are any baked textures that we hadn't uploaded before we logged off last time. + // If there are any, schedule them to be uploaded as soon as the layer textures they depend on arrive. + if (gAgent.cameraCustomizeAvatar()) + { + avatar->requestLayerSetUploads(); + } + } +} + +// Normally, all wearables referred to "AgentWearablesUpdate" will correspond to actual assets in the +// database. If for some reason, we can't load one of those assets, we can try to reconstruct it so that +// the user isn't left without a shape, for example. (We can do that only after the inventory has loaded.) +void LLAgentWearables::recoverMissingWearable(const EWearableType type, U32 index) +{ + // Try to recover by replacing missing wearable with a new one. + LLNotifications::instance().add("ReplacedMissingWearable"); + lldebugs << "Wearable " << LLWearableDictionary::getTypeLabel(type) << " could not be downloaded. Replaced inventory item with default wearable." << llendl; + LLWearable* new_wearable = LLWearableList::instance().createNewWearable(type); + + S32 type_s32 = (S32) type; + LLWearableInv* wearable_entry = getWearableInv(type, index); + wearable_entry->mWearable = new_wearable; + new_wearable->writeToAvatar(TRUE); + + // Add a new one in the lost and found folder. + // (We used to overwrite the "not found" one, but that could potentially + // destory content.) JC + LLUUID lost_and_found_id = + gInventory.findCategoryUUIDForType(LLAssetType::AT_LOST_AND_FOUND); + LLPointer<LLInventoryCallback> cb = + new addWearableToAgentInventoryCallback( + LLPointer<LLRefCount>(NULL), + type_s32, + index, + new_wearable, + addWearableToAgentInventoryCallback::CALL_RECOVERDONE); + addWearableToAgentInventory(cb, new_wearable, lost_and_found_id, TRUE); +} + +void LLAgentWearables::recoverMissingWearableDone() +{ + // Have all the wearables that the avatar was wearing at log-in arrived or been fabricated? + mWearablesLoaded = TRUE; + for (S32 i = 0; i < WT_COUNT; i++) + { + // MULTI-WEARABLE: assuming zeroth elt - fix when messages change. + LLWearableInv* wearable_entry = getWearableInv((EWearableType)i,0); + if (!wearable_entry->mItemID.isNull() && !wearable_entry->mWearable) + { + mWearablesLoaded = FALSE; + break; + } + } + + if (mWearablesLoaded) + { + // Make sure that the server's idea of the avatar's wearables actually match the wearables. + gAgent.sendAgentSetAppearance(); + } + else + { + gInventory.addChangedMask(LLInventoryObserver::LABEL, LLUUID::null); + gInventory.notifyObservers(); + } +} + +void LLAgentWearables::createStandardWearables(BOOL female) +{ + llwarns << "Creating Standard " << (female ? "female" : "male") + << " Wearables" << llendl; + + if (mAvatarObject.isNull()) + { + return; + } + + mAvatarObject->setSex(female ? SEX_FEMALE : SEX_MALE); + + const BOOL create[WT_COUNT] = + { + TRUE, //WT_SHAPE + TRUE, //WT_SKIN + TRUE, //WT_HAIR + TRUE, //WT_EYES + TRUE, //WT_SHIRT + TRUE, //WT_PANTS + TRUE, //WT_SHOES + TRUE, //WT_SOCKS + FALSE, //WT_JACKET + FALSE, //WT_GLOVES + TRUE, //WT_UNDERSHIRT + TRUE, //WT_UNDERPANTS + FALSE //WT_SKIRT + }; + + for (S32 i=0; i < WT_COUNT; i++) + { + bool once = false; + LLPointer<LLRefCount> donecb = NULL; + if (create[i]) + { + if (!once) + { + once = true; + donecb = new createStandardWearablesAllDoneCallback; + } + // MULTI_WEARABLE: only elt 0, may be the right thing? + LLWearableInv* wearable_entry = getWearableInv((EWearableType)i,0); + llassert(wearable_entry->mWearable == NULL); + LLWearable* wearable = LLWearableList::instance().createNewWearable((EWearableType)i); + wearable_entry->mWearable = wearable; + // no need to update here... + // MULTI_WEARABLE: hardwired index = 0 here. + LLPointer<LLInventoryCallback> cb = + new addWearableToAgentInventoryCallback( + donecb, + i, + 0, + wearable, + addWearableToAgentInventoryCallback::CALL_CREATESTANDARDDONE); + addWearableToAgentInventory(cb, wearable, LLUUID::null, FALSE); + } + } +} + +void LLAgentWearables::createStandardWearablesDone(S32 type, U32 index) +{ + LLWearable* wearable = getWearable((EWearableType)type, index); + + if (wearable) + { + wearable->writeToAvatar(TRUE); + } +} + +void LLAgentWearables::createStandardWearablesAllDone() +{ + // ... because sendAgentWearablesUpdate will notify inventory + // observers. + mWearablesLoaded = TRUE; + updateServer(); + + // Treat this as the first texture entry message, if none received yet + mAvatarObject->onFirstTEMessageReceived(); +} + +void LLAgentWearables::makeNewOutfit(const std::string& new_folder_name, + const LLDynamicArray<S32>& wearables_to_include, + const LLDynamicArray<S32>& attachments_to_include, + BOOL rename_clothing) +{ + if (mAvatarObject.isNull()) + { + return; + } + + // First, make a folder in the Clothes directory. + LLUUID folder_id = gInventory.createNewCategory( + gInventory.findCategoryUUIDForType(LLAssetType::AT_CLOTHING), + LLAssetType::AT_NONE, + new_folder_name); + + bool found_first_item = false; + + /////////////////// + // Wearables + + if (wearables_to_include.count()) + { + // Then, iterate though each of the wearables and save copies of them in the folder. + S32 i; + S32 count = wearables_to_include.count(); + LLDynamicArray<LLUUID> delete_items; + LLPointer<LLRefCount> cbdone = NULL; + for (i = 0; i < count; ++i) + { + const S32 type = wearables_to_include[i]; + for (U32 j=0; j<getWearableCount((EWearableType)i); j++) + { + LLWearableInv* wearable_entry = getWearableInv((EWearableType)type, j); + LLWearable* old_wearable = wearable_entry->mWearable; + if (old_wearable) + { + std::string new_name; + LLWearable* new_wearable; + new_wearable = LLWearableList::instance().createCopy(old_wearable); + if (rename_clothing) + { + new_name = new_folder_name; + new_name.append(" "); + new_name.append(old_wearable->getTypeLabel()); + LLStringUtil::truncate(new_name, DB_INV_ITEM_NAME_STR_LEN); + new_wearable->setName(new_name); + } + + LLViewerInventoryItem* item = gInventory.getItem(wearable_entry->mItemID); + S32 todo = addWearableToAgentInventoryCallback::CALL_NONE; + if (!found_first_item) + { + found_first_item = true; + /* set the focus to the first item */ + todo |= addWearableToAgentInventoryCallback::CALL_MAKENEWOUTFITDONE; + /* send the agent wearables update when done */ + cbdone = new sendAgentWearablesUpdateCallback; + } + LLPointer<LLInventoryCallback> cb = + new addWearableToAgentInventoryCallback( + cbdone, + type, + j, + new_wearable, + todo); + if (isWearableCopyable((EWearableType)type, j)) + { + copy_inventory_item( + gAgent.getID(), + item->getPermissions().getOwner(), + item->getUUID(), + folder_id, + new_name, + cb); + } + else + { + move_inventory_item( + gAgent.getID(), + gAgent.getSessionID(), + item->getUUID(), + folder_id, + new_name, + cb); + } + } + } + } + gInventory.notifyObservers(); + } + + + /////////////////// + // Attachments + + if (attachments_to_include.count()) + { + BOOL msg_started = FALSE; + LLMessageSystem* msg = gMessageSystem; + for (S32 i = 0; i < attachments_to_include.count(); i++) + { + S32 attachment_pt = attachments_to_include[i]; + LLViewerJointAttachment* attachment = get_if_there(mAvatarObject->mAttachmentPoints, attachment_pt, (LLViewerJointAttachment*)NULL); + if (!attachment) continue; + LLViewerObject* attached_object = attachment->getObject(); + if (!attached_object) continue; + const LLUUID& item_id = attachment->getItemID(); + if (item_id.isNull()) continue; + LLInventoryItem* item = gInventory.getItem(item_id); + if (!item) continue; + if (!msg_started) + { + msg_started = TRUE; + msg->newMessage("CreateNewOutfitAttachments"); + msg->nextBlock("AgentData"); + msg->addUUID("AgentID", gAgent.getID()); + msg->addUUID("SessionID", gAgent.getSessionID()); + msg->nextBlock("HeaderData"); + msg->addUUID("NewFolderID", folder_id); + } + msg->nextBlock("ObjectData"); + msg->addUUID("OldItemID", item_id); + msg->addUUID("OldFolderID", item->getParentUUID()); + } + + if (msg_started) + { + gAgent.sendReliableMessage(); + } + + } +} + +void LLAgentWearables::makeNewOutfitDone(S32 type, U32 index) +{ + LLWearableInv* wearable_entry = getWearableInv((EWearableType)type, index); + LLUUID first_item_id = wearable_entry->mItemID; + // Open the inventory and select the first item we added. + if (first_item_id.notNull()) + { + LLInventoryView* view = LLInventoryView::getActiveInventory(); + if (view) + { + view->getPanel()->setSelection(first_item_id, TAKE_FOCUS_NO); + } + } +} + + +void LLAgentWearables::addWearableToAgentInventory(LLPointer<LLInventoryCallback> cb, + LLWearable* wearable, + const LLUUID& category_id, + BOOL notify) +{ + create_inventory_item(gAgent.getID(), + gAgent.getSessionID(), + category_id, + wearable->getTransactionID(), + wearable->getName(), + wearable->getDescription(), + wearable->getAssetType(), + LLInventoryType::IT_WEARABLE, + wearable->getType(), + wearable->getPermissions().getMaskNextOwner(), + cb); +} + +void LLAgentWearables::removeWearable(const EWearableType type, bool do_remove_all, U32 index) +{ + + if (do_remove_all) + { + removeWearableFinal(type, do_remove_all, index); + } + else + { +// MULTI_WEARABLE: handle vector changes from arbitrary removal. + LLWearable* old_wearable = getWearable(type,index); + + if ((gAgent.isTeen()) + && (type == WT_UNDERSHIRT || type == WT_UNDERPANTS)) + { + // Can't take off underclothing in simple UI mode or on PG accounts + return; + } + + if (old_wearable) + { + if (old_wearable->isDirty()) + { + LLSD payload; + payload["wearable_type"] = (S32)type; + // Bring up view-modal dialog: Save changes? Yes, No, Cancel + LLNotifications::instance().add("WearableSave", LLSD(), payload, &LLAgentWearables::onRemoveWearableDialog); + return; + } + else + { + removeWearableFinal(type, do_remove_all, index); + } + } + } +} + + +// MULTI_WEARABLE: assuming one wearable per type. +// MULTI_WEARABLE: hardwiring 0th elt for now - notification needs to change. +// static +bool LLAgentWearables::onRemoveWearableDialog(const LLSD& notification, const LLSD& response) +{ + S32 option = LLNotification::getSelectedOption(notification, response); + EWearableType type = (EWearableType)notification["payload"]["wearable_type"].asInteger(); + switch(option) + { + case 0: // "Save" + gAgentWearables.saveWearable(type, 0); + gAgentWearables.removeWearableFinal(type, false, 0); + break; + + case 1: // "Don't Save" + gAgentWearables.removeWearableFinal(type, false, 0); + break; + + case 2: // "Cancel" + break; + + default: + llassert(0); + break; + } + return false; +} + +// Called by removeWearable() and onRemoveWearableDialog() to actually do the removal. +void LLAgentWearables::removeWearableFinal(const EWearableType type, bool do_remove_all, U32 index) +{ + //LLAgentDumper dumper("removeWearable"); + if (do_remove_all) + { + S32 max_entry = mWearableDatas[type].size()-1; + for (S32 i=max_entry; i>=0; i--) + { + LLWearableInv *wearable_entry = getWearableInv(type,i); + LLWearable* old_wearable = wearable_entry->mWearable; + gInventory.addChangedMask(LLInventoryObserver::LABEL, wearable_entry->mItemID); + wearable_entry->mWearable = NULL; + wearable_entry->mItemID.setNull(); + //queryWearableCache(); // BAP moved below + // MULTI_WEARABLE: FIXME - currently we keep a null entry, so can't delete the last one. + if (i>0) + { + mWearableDatas[type].pop_back(); + delete wearable_entry; + } + if (old_wearable) + { + old_wearable->removeFromAvatar(TRUE); + } + } + } + else + { + LLWearableInv* wearable_entry = getWearableInv(type, index); + LLWearable* old_wearable = wearable_entry->mWearable; + + gInventory.addChangedMask(LLInventoryObserver::LABEL, wearable_entry->mItemID); + + wearable_entry->mWearable = NULL; + wearable_entry->mItemID.setNull(); + + //queryWearableCache(); // BAP moved below + + if (old_wearable) + { + old_wearable->removeFromAvatar(TRUE); + } + + // MULTI_WEARABLE: logic changes if null entries go away + if (getWearableCount(type)>1) + { + // Have to shrink the vector and clean up the item. + wearableentry_map_t::iterator wearable_iter = mWearableDatas.find(type); + llassert_always(wearable_iter != mWearableDatas.end()); + wearableentry_vec_t& wearable_vec = wearable_iter->second; + wearable_vec.erase( wearable_vec.begin() + index ); + delete(wearable_entry); + } + } + + queryWearableCache(); + + // Update the server + updateServer(); + gInventory.notifyObservers(); +} + +// Assumes existing wearables are not dirty. +// MULTI_WEARABLE: assumes one wearable per type. +void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& items, + const LLDynamicArray< LLWearable* >& wearables, + BOOL remove) +{ + lldebugs << "setWearableOutfit() start" << llendl; + + BOOL wearables_to_remove[WT_COUNT]; + wearables_to_remove[WT_SHAPE] = FALSE; + wearables_to_remove[WT_SKIN] = FALSE; + wearables_to_remove[WT_HAIR] = FALSE; + wearables_to_remove[WT_EYES] = FALSE; + wearables_to_remove[WT_SHIRT] = remove; + wearables_to_remove[WT_PANTS] = remove; + wearables_to_remove[WT_SHOES] = remove; + wearables_to_remove[WT_SOCKS] = remove; + wearables_to_remove[WT_JACKET] = remove; + wearables_to_remove[WT_GLOVES] = remove; + wearables_to_remove[WT_UNDERSHIRT] = (!gAgent.isTeen()) & remove; + wearables_to_remove[WT_UNDERPANTS] = (!gAgent.isTeen()) & remove; + wearables_to_remove[WT_SKIRT] = remove; + + S32 count = wearables.count(); + llassert(items.count() == count); + + S32 i; + for (i = 0; i < count; i++) + { + LLWearable* new_wearable = wearables[i]; + LLPointer<LLInventoryItem> new_item = items[i]; + + const EWearableType type = new_wearable->getType(); + wearables_to_remove[type] = FALSE; + + // MULTI_WEARABLE: using 0th + LLWearableInv* old_wearable_entry = getWearableInv(type, 0); + LLWearable* old_wearable = old_wearable_entry->mWearable; + if (old_wearable) + { + const LLUUID& old_item_id = old_wearable_entry->mItemID; + if ((old_wearable->getID() == new_wearable->getID()) && + (old_item_id == new_item->getUUID())) + { + lldebugs << "No change to wearable asset and item: " << LLWearableDictionary::getInstance()->getWearableEntry(type) << llendl; + continue; + } + + gInventory.addChangedMask(LLInventoryObserver::LABEL, old_item_id); + + // Assumes existing wearables are not dirty. + if (old_wearable->isDirty()) + { + llassert(0); + continue; + } + } + + old_wearable_entry->mItemID = new_item->getUUID(); + old_wearable_entry->mWearable = new_wearable; + } + + std::vector<LLWearable*> wearables_being_removed; + + for (i = 0; i < WT_COUNT; i++) + { + if (wearables_to_remove[i]) + { + // MULTI_WEARABLE: assuming 0th + LLWearableInv* wearable_entry = getWearableInv((EWearableType)i, 0); + wearables_being_removed.push_back(wearable_entry->mWearable); + wearable_entry->mWearable = NULL; + + gInventory.addChangedMask(LLInventoryObserver::LABEL, wearable_entry->mItemID); + wearable_entry->mItemID.setNull(); + } + } + + gInventory.notifyObservers(); + + queryWearableCache(); + + std::vector<LLWearable*>::iterator wearable_iter; + + for (wearable_iter = wearables_being_removed.begin(); + wearable_iter != wearables_being_removed.end(); + ++wearable_iter) + { + LLWearable* wearablep = *wearable_iter; + if (wearablep) + { + wearablep->removeFromAvatar(TRUE); + } + } + + for (i = 0; i < count; i++) + { + wearables[i]->writeToAvatar(TRUE); + } + + // Start rendering & update the server + mWearablesLoaded = TRUE; + updateServer(); + + lldebugs << "setWearableOutfit() end" << llendl; +} + + +// User has picked "wear on avatar" from a menu. +void LLAgentWearables::setWearable(LLInventoryItem* new_item, LLWearable* new_wearable, bool do_append) +{ + //LLAgentDumper dumper("setWearable"); + if (isWearingItem(new_item->getUUID())) + { + llwarns << "wearable " << new_item->getUUID() << " is already worn" << llendl; + return; + } + + const EWearableType type = new_wearable->getType(); + + if (!do_append) + { + // Remove old wearable, if any + // MULTI_WEARABLE: hardwired to 0 + LLWearableInv* old_wearable_entry = getWearableInv(type,0); + LLWearable* old_wearable = old_wearable_entry->mWearable; + if (old_wearable) + { + const LLUUID& old_item_id = old_wearable_entry->mItemID; + if ((old_wearable->getID() == new_wearable->getID()) && + (old_item_id == new_item->getUUID())) + { + lldebugs << "No change to wearable asset and item: " << LLWearableDictionary::getInstance()->getWearableEntry(type) << llendl; + return; + } + + if (old_wearable->isDirty()) + { + // Bring up modal dialog: Save changes? Yes, No, Cancel + LLSD payload; + payload["item_id"] = new_item->getUUID(); + LLNotifications::instance().add("WearableSave", LLSD(), payload, boost::bind(onSetWearableDialog, _1, _2, new_wearable)); + return; + } + } + } + + setWearableFinal(new_item, new_wearable, do_append); +} + +// static +bool LLAgentWearables::onSetWearableDialog(const LLSD& notification, const LLSD& response, LLWearable* wearable) +{ + S32 option = LLNotification::getSelectedOption(notification, response); + LLInventoryItem* new_item = gInventory.getItem(notification["payload"]["item_id"].asUUID()); + if (!new_item) + { + delete wearable; + return false; + } + + switch(option) + { + case 0: // "Save" +// MULTI_WEARABLE: assuming 0th + gAgentWearables.saveWearable(wearable->getType(),0); + gAgentWearables.setWearableFinal(new_item, wearable); + break; + + case 1: // "Don't Save" + gAgentWearables.setWearableFinal(new_item, wearable); + break; + + case 2: // "Cancel" + break; + + default: + llassert(0); + break; + } + + delete wearable; + return false; +} + +// Called from setWearable() and onSetWearableDialog() to actually set the wearable. +// MULTI_WEARABLE: unify code after null objects are gone. +void LLAgentWearables::setWearableFinal(LLInventoryItem* new_item, LLWearable* new_wearable, bool do_append) +{ + const EWearableType type = new_wearable->getType(); + + if (do_append && getWearableInv(type,0)->mItemID.notNull()) + { + LLWearableInv *new_wearable_entry = new LLWearableInv; + new_wearable_entry->mItemID = new_item->getUUID(); + new_wearable_entry->mWearable = new_wearable; + mWearableDatas[type].push_back(new_wearable_entry); + llinfos << "Added additional wearable for type " << type + << " size is now " << mWearableDatas[type].size() << llendl; + } + else + { + LLWearableInv* wearable_entry = getWearableInv(type,0); + // Replace the old wearable with a new one. + llassert(new_item->getAssetUUID() == new_wearable->getID()); + LLUUID old_item_id = wearable_entry->mItemID; + wearable_entry->mItemID = new_item->getUUID(); + wearable_entry->mWearable = new_wearable; + + if (old_item_id.notNull()) + { + gInventory.addChangedMask(LLInventoryObserver::LABEL, old_item_id); + gInventory.notifyObservers(); + } + llinfos << "Replaced current element 0 for type " << type + << " size is now " << mWearableDatas[type].size() << llendl; + } + + //llinfos << "LLVOAvatar::setWearable()" << llendl; + queryWearableCache(); + new_wearable->writeToAvatar(TRUE); + + updateServer(); +} + +void LLAgentWearables::queryWearableCache() +{ + if (!mWearablesLoaded) + { + return; + } + + // Look up affected baked textures. + // If they exist: + // disallow updates for affected layersets (until dataserver responds with cache request.) + // If cache miss, turn updates back on and invalidate composite. + // If cache hit, modify baked texture entries. + // + // Cache requests contain list of hashes for each baked texture entry. + // Response is list of valid baked texture assets. (same message) + + gMessageSystem->newMessageFast(_PREHASH_AgentCachedTexture); + gMessageSystem->nextBlockFast(_PREHASH_AgentData); + gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); + gMessageSystem->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); + gMessageSystem->addS32Fast(_PREHASH_SerialNum, gAgentQueryManager.mWearablesCacheQueryID); + + S32 num_queries = 0; + for (U8 baked_index = 0; baked_index < BAKED_NUM_INDICES; baked_index++) + { + const LLVOAvatarDictionary::BakedEntry *baked_dict = LLVOAvatarDictionary::getInstance()->getBakedTexture((EBakedTextureIndex)baked_index); + LLUUID hash; + for (U8 i=0; i < baked_dict->mWearables.size(); i++) + { + // EWearableType baked_type = gBakedWearableMap[baked_index][baked_num]; + const EWearableType baked_type = baked_dict->mWearables[i]; + // MULTI_WEARABLE: assuming 0th + const LLWearable* wearable = getWearableInv(baked_type,0)->mWearable; + if (wearable) + { + hash ^= wearable->getID(); + } + } + if (hash.notNull()) + { + hash ^= baked_dict->mWearablesHashID; + num_queries++; + // *NOTE: make sure at least one request gets packed + + //llinfos << "Requesting texture for hash " << hash << " in baked texture slot " << baked_index << llendl; + gMessageSystem->nextBlockFast(_PREHASH_WearableData); + gMessageSystem->addUUIDFast(_PREHASH_ID, hash); + gMessageSystem->addU8Fast(_PREHASH_TextureIndex, (U8)baked_index); + } + + gAgentQueryManager.mActiveCacheQueries[baked_index] = gAgentQueryManager.mWearablesCacheQueryID; + } + + llinfos << "Requesting texture cache entry for " << num_queries << " baked textures" << llendl; + gMessageSystem->sendReliable(gAgent.getRegion()->getHost()); + gAgentQueryManager.mNumPendingQueries++; + gAgentQueryManager.mWearablesCacheQueryID++; +} + +// MULTI_WEARABLE: need a way to specify by wearable rather than by type. +// User has picked "remove from avatar" from a menu. +// static +void LLAgentWearables::userRemoveWearable(void* userdata) +{ + EWearableType type = (EWearableType)(intptr_t)userdata; + + if (!(type==WT_SHAPE || type==WT_SKIN || type==WT_HAIR)) //&& + //!((!gAgent.isTeen()) && (type==WT_UNDERPANTS || type==WT_UNDERSHIRT))) + { + // MULTI_WEARABLE: fixed to 0th for now. + gAgentWearables.removeWearable(type,false,0); + } +} + +// static +void LLAgentWearables::userRemoveAllClothes(void* userdata) +{ + // We have to do this up front to avoid having to deal with the case of multiple wearables being dirty. + if (gFloaterCustomize) + { + gFloaterCustomize->askToSaveIfDirty(userRemoveAllClothesStep2); + } + else + { + userRemoveAllClothesStep2(TRUE); + } +} + +// static +// MULTI_WEARABLE: removing all here. +void LLAgentWearables::userRemoveAllClothesStep2(BOOL proceed) +{ + if (proceed) + { + gAgentWearables.removeWearable(WT_SHIRT,true,0); + gAgentWearables.removeWearable(WT_PANTS,true,0); + gAgentWearables.removeWearable(WT_SHOES,true,0); + gAgentWearables.removeWearable(WT_SOCKS,true,0); + gAgentWearables.removeWearable(WT_JACKET,true,0); + gAgentWearables.removeWearable(WT_GLOVES,true,0); + gAgentWearables.removeWearable(WT_UNDERSHIRT,true,0); + gAgentWearables.removeWearable(WT_UNDERPANTS,true,0); + gAgentWearables.removeWearable(WT_SKIRT,true,0); + } +} + +void LLAgentWearables::userRemoveAllAttachments(void* userdata) +{ + LLVOAvatar* avatarp = gAgent.getAvatarObject(); + if (!avatarp) + { + llwarns << "No avatar found." << llendl; + return; + } + + gMessageSystem->newMessage("ObjectDetach"); + gMessageSystem->nextBlockFast(_PREHASH_AgentData); + gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); + gMessageSystem->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); + + for (LLVOAvatar::attachment_map_t::iterator iter = avatarp->mAttachmentPoints.begin(); + iter != avatarp->mAttachmentPoints.end();) + { + LLVOAvatar::attachment_map_t::iterator curiter = iter++; + LLViewerJointAttachment* attachment = curiter->second; + LLViewerObject* objectp = attachment->getObject(); + if (objectp) + { + gMessageSystem->nextBlockFast(_PREHASH_ObjectData); + gMessageSystem->addU32Fast(_PREHASH_ObjectLocalID, objectp->getLocalID()); + } + } + gMessageSystem->sendReliable(gAgent.getRegionHost()); +} + +void LLAgentWearables::updateServer() +{ + sendAgentWearablesUpdate(); + gAgent.sendAgentSetAppearance(); +} diff --git a/indra/newview/llagentwearables.h b/indra/newview/llagentwearables.h new file mode 100644 index 0000000000000000000000000000000000000000..98f49203d3d30b559ca6d4aa0cc67aeaca3a82e8 --- /dev/null +++ b/indra/newview/llagentwearables.h @@ -0,0 +1,235 @@ +/** + * @file llagentwearables.h + * @brief LLAgentWearables class header file + * + * $LicenseInfo:firstyear=2000&license=viewergpl$ + * + * Copyright (c) 2000-2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#ifndef LL_LLAGENTWEARABLES_H +#define LL_LLAGENTWEARABLES_H + +#include "llmemory.h" +#include "lluuid.h" +#include "llinventory.h" +#include "llviewerinventory.h" + +class LLInventoryItem; +class LLVOAvatarSelf; +class LLWearable; + +class LLAgentWearables +{ + //-------------------------------------------------------------------- + // Constructors / destructors / Initializers + //-------------------------------------------------------------------- +public: + LLAgentWearables(); + virtual ~LLAgentWearables(); + void setAvatarObject(LLVOAvatarSelf *avatar); + void createStandardWearables(BOOL female); + void cleanup(); + void dump(); +protected: + // MULTI-WEARABLE: assuming one per type. Type is called index - rename. + void createStandardWearablesDone(S32 type, U32 index/* = 0*/); + void createStandardWearablesAllDone(); + + //-------------------------------------------------------------------- + // Queries + //-------------------------------------------------------------------- +public: + BOOL isWearingItem(const LLUUID& item_id) const; + BOOL isWearableModifiable(EWearableType type, U32 index /*= 0*/) const; + BOOL isWearableCopyable(EWearableType type, U32 index /*= 0*/) const; + BOOL areWearablesLoaded() const { return mWearablesLoaded; } + + //-------------------------------------------------------------------- + // Accessors + //-------------------------------------------------------------------- +public: + const LLUUID& getWearableItem(EWearableType type, U32 index /*= 0*/) const; + LLWearable* getWearableFromWearableItem(const LLUUID& item_id) const; + LLInventoryItem* getWearableInventoryItem(EWearableType type, U32 index /*= 0*/); + // MULTI-WEARABLE: assuming one per type. + static BOOL selfHasWearable(void* userdata); // userdata is EWearableType + LLWearable* getWearable(const EWearableType type, U32 index /*= 0*/); + const LLWearable* getWearable(const EWearableType type, U32 index /*= 0*/) const; + U32 getWearableCount(const EWearableType type) const; + +private: + struct LLWearableInv; + LLWearableInv* getWearableInv(const EWearableType type, U32 index /*= 0*/); + const LLWearableInv* getWearableInv(const EWearableType type, U32 /*index = 0*/) const; + //-------------------------------------------------------------------- + // Setters + //-------------------------------------------------------------------- +public: + void setWearable(LLInventoryItem* new_item, LLWearable* wearable, bool do_append = false); + void setWearableOutfit(const LLInventoryItem::item_array_t& items, const LLDynamicArray< LLWearable* >& wearables, BOOL remove); + void setWearableName(const LLUUID& item_id, const std::string& new_name); +protected: + void setWearableFinal(LLInventoryItem* new_item, LLWearable* new_wearable, bool do_append = false); + static bool onSetWearableDialog(const LLSD& notification, const LLSD& response, LLWearable* wearable); + + void addWearableToAgentInventory(LLPointer<LLInventoryCallback> cb, + LLWearable* wearable, + const LLUUID& category_id = LLUUID::null, + BOOL notify = TRUE); + void addWearabletoAgentInventoryDone(const S32 type, + const U32 index, + const LLUUID& item_id, + LLWearable* wearable); + void recoverMissingWearable(const EWearableType type, U32 index /*= 0*/); + void recoverMissingWearableDone(); + + //-------------------------------------------------------------------- + // Removing wearables + //-------------------------------------------------------------------- +public: + void removeWearable(const EWearableType type, bool do_remove_all /*= false*/, U32 index /*= 0*/); +private: + void removeWearableFinal(const EWearableType type, bool do_remove_all /*= false*/, U32 index /*= 0*/); +protected: + static bool onRemoveWearableDialog(const LLSD& notification, const LLSD& response); + static void userRemoveAllClothesStep2(BOOL proceed); // userdata is NULL + + //-------------------------------------------------------------------- + // Server Communication + //-------------------------------------------------------------------- +public: + static void processAgentInitialWearablesUpdate(LLMessageSystem* mesgsys, void** user_data); +protected: + void sendAgentWearablesUpdate(); + void sendAgentWearablesRequest(); + void queryWearableCache(); + void updateServer(); + static void onInitialWearableAssetArrived(LLWearable* wearable, void* userdata); + + //-------------------------------------------------------------------- + // Outfits + //-------------------------------------------------------------------- +public: + void makeNewOutfit(const std::string& new_folder_name, + const LLDynamicArray<S32>& wearables_to_include, + const LLDynamicArray<S32>& attachments_to_include, + BOOL rename_clothing);protected: +private: + void makeNewOutfitDone(S32 type, U32 index); + + //-------------------------------------------------------------------- + // Save Wearables + //-------------------------------------------------------------------- +public: + // MULTI-WEARABLE: assumes one per type. + void saveWearableAs(const EWearableType type, const U32 index, const std::string& new_name, BOOL save_in_lost_and_found); + void saveWearable(const EWearableType type, const U32 index, BOOL send_update = TRUE); + void saveAllWearables(); + void revertWearable(const EWearableType type, const U32 index); + + //-------------------------------------------------------------------- + // Static UI hooks + //-------------------------------------------------------------------- +public: + // MULTI-WEARABLE: assuming one wearable per type. Need upstream changes. + static void userRemoveWearable(void* userdata); // userdata is EWearableType + static void userRemoveAllClothes(void* userdata); // userdata is NULL + static void userRemoveAllAttachments(void* userdata); // userdata is NULL + + //-------------------------------------------------------------------- + // Member variables + //-------------------------------------------------------------------- +private: + typedef std::vector<LLWearableInv*> wearableentry_vec_t; // all wearables of a certain type (EG all shirts) + typedef std::map<EWearableType, wearableentry_vec_t> wearableentry_map_t; // wearable "categories" arranged by wearable type + wearableentry_map_t mWearableDatas; + + static BOOL mInitialWearablesUpdateReceived; + BOOL mWearablesLoaded; + LLPointer<LLVOAvatarSelf> mAvatarObject; // NULL until avatar object sent down from simulator + + //-------------------------------------------------------------------------------- + // Support classes + //-------------------------------------------------------------------------------- +private: + class createStandardWearablesAllDoneCallback : public LLRefCount + { + protected: + ~createStandardWearablesAllDoneCallback(); + }; + class sendAgentWearablesUpdateCallback : public LLRefCount + { + protected: + ~sendAgentWearablesUpdateCallback(); + }; + + class addWearableToAgentInventoryCallback : public LLInventoryCallback + { + public: + enum EType + { + CALL_NONE = 0, + CALL_UPDATE = 1, + CALL_RECOVERDONE = 2, + CALL_CREATESTANDARDDONE = 4, + CALL_MAKENEWOUTFITDONE = 8 + }; + + // MULTI-WEARABLE: index is an EWearableType - more confusing usage. + // MULTI-WEARABLE: need to have type and index args both? + addWearableToAgentInventoryCallback(LLPointer<LLRefCount> cb, + S32 type, + U32 index, + LLWearable* wearable, + U32 todo = CALL_NONE); + virtual void fire(const LLUUID& inv_item); + private: + S32 mType; + U32 mIndex; + LLWearable* mWearable; + U32 mTodo; + LLPointer<LLRefCount> mCB; + }; + + struct LLWearableInv // Make this subclass of llwearable? + { + LLWearableInv() : mItemID(LLUUID::null), mWearable(NULL) {} + // BOOL exists() const; + LLUUID mItemID; // ID of the inventory item in the agent's inventory. + LLWearable* mWearable; + }; + const static LLWearableInv s_null_wearable; + +}; // LLAgentWearables + +extern LLAgentWearables gAgentWearables; + +//-------------------------------------------------------------------- +// Types +//-------------------------------------------------------------------- + +#endif // LL_AGENTWEARABLES_H diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 455e987da0b3f81b377b5e95052d156db3303316..48cb3babfa3bd471daa3f18dec54548a4af901da 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -45,6 +45,7 @@ #include "llviewerimagelist.h" #include "llgroupmgr.h" #include "llagent.h" +#include "llagentwearables.h" #include "llwindow.h" #include "llviewerstats.h" #include "llmd5.h" @@ -55,6 +56,7 @@ #include "llstartup.h" #include "llfocusmgr.h" #include "llviewerjoystick.h" +#include "llallocator.h" #include "llares.h" #include "llcurl.h" #include "llviewerwindow.h" @@ -64,12 +66,14 @@ #include "llviewerobjectlist.h" #include "llworldmap.h" #include "llmutelist.h" +#include "lluicolortable.h" #include "llurldispatcher.h" #include "llurlhistory.h" #include "llfirstuse.h" #include "llrender.h" #include "llteleporthistory.h" #include "lllocationhistory.h" +#include "llfasttimerview.h" #include "llweb.h" #include "llsecondlifeurls.h" @@ -370,7 +374,6 @@ static void settings_to_globals() MENU_BAR_HEIGHT = gSavedSettings.getS32("MenuBarHeight"); MENU_BAR_WIDTH = gSavedSettings.getS32("MenuBarWidth"); - STATUS_BAR_HEIGHT = gSavedSettings.getS32("StatusBarHeight"); LLCOMBOBOX_HEIGHT = BTN_HEIGHT - 2; LLCOMBOBOX_WIDTH = 128; @@ -394,7 +397,7 @@ static void settings_to_globals() gAgentPilot.mNumRuns = gSavedSettings.getS32("StatsNumRuns"); gAgentPilot.mQuitAfterRuns = gSavedSettings.getBOOL("StatsQuitAfterRuns"); - gAgent.mHideGroupTitle = gSavedSettings.getBOOL("RenderHideGroupTitle"); + gAgent.setHideGroupTitle(gSavedSettings.getBOOL("RenderHideGroupTitle")); gDebugWindowProc = gSavedSettings.getBOOL("DebugWindowProc"); gAllowTapTapHoldRun = gSavedSettings.getBOOL("AllowTapTapHoldRun"); @@ -411,7 +414,7 @@ static void settings_modify() LLVOAvatar::sUseImpostors = gSavedSettings.getBOOL("RenderUseImpostors"); LLVOSurfacePatch::sLODFactor = gSavedSettings.getF32("RenderTerrainLODFactor"); LLVOSurfacePatch::sLODFactor *= LLVOSurfacePatch::sLODFactor; //square lod factor to get exponential range of [1,4] - gDebugGL = gSavedSettings.getBOOL("RenderDebugGL"); + gDebugGL = gSavedSettings.getBOOL("RenderDebugGL") || gDebugSession; gDebugPipeline = gSavedSettings.getBOOL("RenderDebugPipeline"); #if LL_VECTORIZE @@ -449,6 +452,38 @@ static void settings_modify() #endif } +class LLFastTimerLogThread : public LLThread +{ +public: + std::string mFile; + + LLFastTimerLogThread() : LLThread("fast timer log") + { + if(LLFastTimer::sLog) + { + mFile = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, "performance.slp"); + } + if(LLFastTimer::sMetricLog) + { + mFile = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, "metric.slp"); + } + } + + void run() + { + std::ofstream os(mFile.c_str()); + + while (!LLAppViewer::instance()->isQuitting()) + { + LLFastTimer::writeLog(os); + os.flush(); + ms_sleep(32); + } + + os.close(); + } +}; + void LLAppViewer::initGridChoice() { // Load up the initial grid choice from: @@ -514,19 +549,22 @@ LLAppViewer::LLAppViewer() : mPurgeOnExit(false), mSecondInstance(false), mSavedFinalSnapshot(false), + mForceGraphicsDetail(false), mQuitRequested(false), mLogoutRequestSent(false), mYieldTime(-1), mMainloopTimeout(NULL), mAgentRegionLastAlive(false), mRandomizeFramerate(LLCachedControl<bool>(gSavedSettings,"Randomize Framerate", FALSE)), - mPeriodicSlowFrame(LLCachedControl<bool>(gSavedSettings,"Periodic Slow Frame", FALSE)) + mPeriodicSlowFrame(LLCachedControl<bool>(gSavedSettings,"Periodic Slow Frame", FALSE)), + mFastTimerLogThread(NULL) { if(NULL != sInstance) { llerrs << "Oh no! An instance of LLAppViewer already exists! LLAppViewer is sort of like a singleton." << llendl; } + setupErrorHandling(); sInstance = this; } @@ -566,6 +604,8 @@ bool LLAppViewer::init() if (!initConfiguration()) return false; + mAlloc.setProfilingEnabled(gSavedSettings.getBOOL("MemProfiling")); + // *NOTE:Mani - LLCurl::initClass is not thread safe. // Called before threads are created. LLCurl::initClass(); @@ -623,6 +663,7 @@ bool LLAppViewer::init() settings_map["color"] = &gSavedSkinSettings; settings_map["ignores"] = &gWarningSettings; settings_map["floater"] = &gSavedSettings; // *TODO: New settings file + settings_map["account"] = &gSavedPerAccountSettings; LLUI::initClass(settings_map, LLUIImageList::getInstance(), @@ -816,6 +857,7 @@ bool LLAppViewer::init() bool LLAppViewer::mainLoop() { + LLMemType mt1(LLMemType::MTYPE_MAIN); mMainloopTimeout = new LLWatchdogTimeout(); // *FIX:Mani - Make this a setting, once new settings exist in this branch. @@ -833,7 +875,6 @@ bool LLAppViewer::mainLoop() LLVoiceChannel::initClass(); LLVoiceClient::init(gServicePump); - LLMemType mt1(LLMemType::MTYPE_MAIN); LLTimer frameTimer,idleTimer; LLTimer debugTime; LLViewerJoystick* joystick(LLViewerJoystick::getInstance()); @@ -849,10 +890,9 @@ bool LLAppViewer::mainLoop() // Handle messages while (!LLApp::isExiting()) { - LLFastTimer::reset(); // Should be outside of any timer instances + LLFastTimer::nextFrame(); // Should be outside of any timer instances try { - LLFastTimer t(LLFastTimer::FTM_FRAME); pingMainloopTimeout("Main:MiscNativeWindowEvents"); if (gViewerWindow) @@ -905,6 +945,7 @@ bool LLAppViewer::mainLoop() && !gViewerWindow->getShowProgress() && !gFocusMgr.focusLocked()) { + LLMemType mjk(LLMemType::MTYPE_JOY_KEY); joystick->scanJoystick(); gKeyboard->scanKeyboard(); } @@ -918,6 +959,7 @@ bool LLAppViewer::mainLoop() if (gAres != NULL && gAres->isInitialized()) { + LLMemType mt_ip(LLMemType::MTYPE_IDLE_PUMP); pingMainloopTimeout("Main:ServicePump"); LLFastTimer t4(LLFastTimer::FTM_PUMP); gAres->process(); @@ -955,6 +997,7 @@ bool LLAppViewer::mainLoop() // Sleep and run background threads { + LLMemType mt_sleep(LLMemType::MTYPE_SLEEP); LLFastTimer t2(LLFastTimer::FTM_SLEEP); bool run_multiple_threads = gSavedSettings.getBOOL("RunMultipleThreads"); @@ -1355,6 +1398,7 @@ bool LLAppViewer::cleanup() sTextureCache->shutdown(); sTextureFetch->shutdown(); sImageDecodeThread->shutdown(); + delete sTextureCache; sTextureCache = NULL; delete sTextureFetch; @@ -1362,6 +1406,31 @@ bool LLAppViewer::cleanup() delete sImageDecodeThread; sImageDecodeThread = NULL; + LLLocationHistory::getInstance()->save(); + delete mFastTimerLogThread; + mFastTimerLogThread = NULL; + + if (LLFastTimerView::sAnalyzePerformance) + { + llinfos << "Analyzing performance" << llendl; + + if(LLFastTimer::sLog) + { + LLFastTimerView::doAnalysis( + gDirUtilp->getExpandedFilename(LL_PATH_LOGS, "performance_baseline.slp"), + gDirUtilp->getExpandedFilename(LL_PATH_LOGS, "performance.slp"), + gDirUtilp->getExpandedFilename(LL_PATH_LOGS, "performance_report.csv")); + } + if(LLFastTimer::sMetricLog) + { + LLFastTimerView::doAnalysis( + gDirUtilp->getExpandedFilename(LL_PATH_LOGS, "metric_baseline.slp"), + gDirUtilp->getExpandedFilename(LL_PATH_LOGS, "metric.slp"), + gDirUtilp->getExpandedFilename(LL_PATH_LOGS, "metric_report.csv")); + } + } + LLMetricPerformanceTester::cleanClass() ; + //Note: //LLViewerMedia::cleanupClass() has to be put before gImageList.shutdown() //because some new image might be generated during cleaning up media. --bao @@ -1414,6 +1483,8 @@ bool LLAppViewer::cleanup() llinfos << "File launched." << llendflush; } + ll_close_fail_log(); + llinfos << "Goodbye" << llendflush; // return 0; @@ -1464,6 +1535,13 @@ bool LLAppViewer::initThreads() LLAppViewer::sTextureFetch = new LLTextureFetch(LLAppViewer::getTextureCache(), enable_threads && false); LLImage::initClass(LLAppViewer::getImageDecodeThread()); + if (LLFastTimer::sLog || LLFastTimer::sMetricLog) + { + LLFastTimer::sLogLock = new LLMutex(NULL); + mFastTimerLogThread = new LLFastTimerLogThread(); + mFastTimerLogThread->start(); + } + // *FIX: no error handling here! return true; } @@ -1621,6 +1699,37 @@ void LLAppViewer::loadColorSettings() loadSettingsFromDirectory("CurrentSkin", true); loadSettingsFromDirectory("UserSkin"); + class ColorConverterFunctor : public LLControlGroup::ApplyFunctor + { + public: + explicit ColorConverterFunctor(LLUIColorTable::Params& result) + :mResult(result) + { + } + + void apply(const std::string& name, LLControlVariable* control) + { + if(control->isType(TYPE_COL4)) + { + LLUIColorTable::ColorParams color; + color.value = (LLColor4)control->getValue(); + + LLUIColorTable::ColorEntryParams color_entry; + color_entry.name = name; + color_entry.color = color; + + mResult.color_entries.add(color_entry); + } + } + + private: + LLUIColorTable::Params& mResult; + }; + + LLUIColorTable::Params params; + ColorConverterFunctor ccf(params); + LLControlGroup::getInstance("Skinning")->applyToAll(&ccf); + LLUIColorTable::instance().init(params); } bool LLAppViewer::initConfiguration() @@ -1806,6 +1915,68 @@ bool LLAppViewer::initConfiguration() gCrashOnStartup = TRUE; } + if (clp.hasOption("logperformance")) + { + LLFastTimer::sLog = TRUE; + } + + if(clp.hasOption("logmetrics")) + { + LLFastTimer::sMetricLog = TRUE ; + } + + if (clp.hasOption("graphicslevel")) + { + const LLCommandLineParser::token_vector_t& value = clp.getOption("graphicslevel"); + if(value.size() != 1) + { + llwarns << "Usage: -graphicslevel <0-3>" << llendl; + } + else + { + std::string detail = value.front(); + mForceGraphicsDetail = TRUE; + + switch (detail.c_str()[0]) + { + case '0': + gSavedSettings.setU32("RenderQualityPerformance", 0); + break; + case '1': + gSavedSettings.setU32("RenderQualityPerformance", 1); + break; + case '2': + gSavedSettings.setU32("RenderQualityPerformance", 2); + break; + case '3': + gSavedSettings.setU32("RenderQualityPerformance", 3); + break; + default: + mForceGraphicsDetail = FALSE; + llwarns << "Usage: -graphicslevel <0-3>" << llendl; + break; + } + } + } + + if (clp.hasOption("analyzeperformance")) + { + LLFastTimerView::sAnalyzePerformance = TRUE; + } + + if (clp.hasOption("replaysession")) + { + LLAgentPilot::sReplaySession = TRUE; + } + + if (clp.hasOption("debugsession")) + { + gDebugSession = TRUE; + gDebugGL = TRUE; + + ll_init_fail_log(gDirUtilp->getExpandedFilename(LL_PATH_LOGS, "test_failures.log")); + } + // Handle slurl use. NOTE: Don't let SL-55321 reappear. // *FIX: This init code should be made more robust to prevent @@ -2012,18 +2183,41 @@ void LLAppViewer::checkForCrash(void) { #if LL_SEND_CRASH_REPORTS - if (gLastExecEvent == LAST_EXEC_FROZE || gLastExecEvent == LAST_EXEC_OTHER_CRASH) + //*NOTE:Mani The current state of the crash handler has the MacOSX + // sending all crash reports as freezes, in order to let + // the MacOSX CrashRepoter generate stacks before spawning the + // SL crash logger. + // The Linux and Windows clients generate their own stacks and + // spawn the SL crash logger immediately. This may change in the future. +#if LL_DARWIN + if(gLastExecEvent != LAST_EXEC_NORMAL) +#else + if (gLastExecEvent == LAST_EXEC_FROZE) +#endif { llinfos << "Last execution froze, requesting to send crash report." << llendl; // // Pop up a freeze or crash warning dialog // - std::ostringstream msg; - msg << LLTrans::getString("MBFrozenCrashed"); - std::string alert = LLTrans::getString("SECOND_LIFE_VIEWER") + " " + LLTrans::getString("MBAlert"); - S32 choice = OSMessageBox(msg.str(), + S32 choice; + if(gCrashSettings.getS32(CRASH_BEHAVIOR_SETTING) == CRASH_BEHAVIOR_ASK) + { + std::ostringstream msg; + msg << LLTrans::getString("MBFrozenCrashed"); + std::string alert = LLTrans::getString("SECOND_LIFE_VIEWER") + " " + LLTrans::getString("MBAlert"); + choice = OSMessageBox(msg.str(), alert, OSMB_YESNO); + } + else if(gCrashSettings.getS32(CRASH_BEHAVIOR_SETTING) == CRASH_BEHAVIOR_NEVER_SEND) + { + choice = OSBTN_NO; + } + else + { + choice = OSBTN_YES; + } + if (OSBTN_YES == choice) { llinfos << "Sending crash report." << llendl; @@ -2058,7 +2252,7 @@ bool LLAppViewer::initWindow() gSavedSettings.getS32("WindowWidth"), gSavedSettings.getS32("WindowHeight"), FALSE, ignorePixelDepth); - if (gSavedSettings.getBOOL("FullScreen")) + if (!gSavedSettings.getBOOL("NotFullScreen")) { gViewerWindow->toggleFullscreen(FALSE); // request to go full screen... which will be delayed until login @@ -2076,6 +2270,11 @@ bool LLAppViewer::initWindow() // Initialize GL stuff // + if (mForceGraphicsDetail) + { + LLFeatureManager::getInstance()->setGraphicsLevel(gSavedSettings.getU32("RenderQualityPerformance"), false); + } + // Set this flag in case we crash while initializing GL gSavedSettings.setBOOL("RenderInitError", TRUE); gSavedSettings.saveToFile( gSavedSettings.getString("ClientSettingsFile"), TRUE ); @@ -2247,7 +2446,7 @@ void LLAppViewer::handleViewerCrash() llinfos << "Handle viewer crash entry." << llendl; //print out recorded call stacks if there are any. - LLError::LLCallStacks::print() ; + LLError::LLCallStacks::print(); LLAppViewer* pApp = LLAppViewer::instance(); if (pApp->beingDebugged()) @@ -2294,6 +2493,8 @@ void LLAppViewer::handleViewerCrash() gDebugInfo["SessionLength"] = F32(LLFrameTimer::getElapsedSeconds()); gDebugInfo["StartupState"] = LLStartUp::getStartupStateString(); gDebugInfo["RAMInfo"]["Allocated"] = (LLSD::Integer) LLMemory::getCurrentRSS() >> 10; + gDebugInfo["FirstLogin"] = (LLSD::Boolean) gAgent.isFirstLogin(); + gDebugInfo["FirstRunThisInstall"] = gSavedSettings.getBOOL("FirstRunThisInstall"); if(gLogoutInProgress) { @@ -3062,6 +3263,7 @@ class LLFrameStatsTimer : public LLFrameTimer /////////////////////////////////////////////////////// void LLAppViewer::idle() { + LLMemType mt_idle(LLMemType::MTYPE_IDLE); pingMainloopTimeout("Main:Idle"); // Update frame timers @@ -3105,7 +3307,6 @@ void LLAppViewer::idle() // // Special case idle if still starting up // - if (LLStartUp::getStartupState() < STATE_STARTED) { // Skip rest if idle startup returns false (essentially, no world yet) @@ -3145,7 +3346,7 @@ void LLAppViewer::idle() // When appropriate, update agent location to the simulator. F32 agent_update_time = agent_update_timer.getElapsedTimeF32(); BOOL flags_changed = gAgent.controlFlagsDirty() || (last_control_flags != gAgent.getControlFlags()); - + if (flags_changed || (agent_update_time > (1.0f / (F32) AGENT_UPDATES_PER_SECOND))) { // Send avatar and camera info @@ -3160,7 +3361,6 @@ void LLAppViewer::idle() // Manage statistics // // - { // Initialize the viewer_stats_timer with an already elapsed time // of SEND_STATS_PERIOD so that the initial stats report will @@ -3199,7 +3399,7 @@ void LLAppViewer::idle() } } } - + if (!gDisconnected) { LLFastTimer t(LLFastTimer::FTM_NETWORK); @@ -3553,6 +3753,7 @@ static F32 CheckMessagesMaxTime = CHECK_MESSAGES_DEFAULT_MAX_TIME; void LLAppViewer::idleNetwork() { + LLMemType mt_in(LLMemType::MTYPE_IDLE_NETWORK); pingMainloopTimeout("idleNetwork"); LLError::LLCallStacks::clear() ; llpushcallstacks ; @@ -3572,7 +3773,8 @@ void LLAppViewer::idleNetwork() stop_glerror(); const S64 frame_count = gFrameCount; // U32->S64 F32 total_time = 0.0f; - while (gMessageSystem->checkAllMessages(frame_count, gServicePump)) + + while (gMessageSystem->checkAllMessages(frame_count, gServicePump)) { if (gDoDisconnect) { @@ -3601,6 +3803,7 @@ void LLAppViewer::idleNetwork() break; #endif } + // Handle per-frame message system processing. gMessageSystem->processAcks(); @@ -3713,6 +3916,8 @@ void LLAppViewer::disconnectViewer() // close inventory interface, close all windows LLInventoryView::cleanup(); + gAgentWearables.cleanup(); + // Also writes cached agent settings to gSavedSettings gAgent.cleanup(); @@ -3828,6 +4033,8 @@ void LLAppViewer::pingMainloopTimeout(const std::string& state, F32 secs) void LLAppViewer::handleLoginComplete() { + gViewerWindow->handleLoginComplete(); + initMainloopTimeout("Mainloop Init"); // Store some data to DebugInfo in case of a freeze. diff --git a/indra/newview/llappviewer.h b/indra/newview/llappviewer.h index a7f1594d0e8c72728c885b9877b84e7a63b2d9d8..b23bd8cc81f97b14d3a149930058fdefefc90ec5 100644 --- a/indra/newview/llappviewer.h +++ b/indra/newview/llappviewer.h @@ -40,6 +40,8 @@ class LLWorkerThread; class LLTextureFetch; class LLWatchdogTimeout; class LLCommandLineParser; +class LLAllocator; + class LLAppViewer : public LLApp @@ -153,6 +155,8 @@ class LLAppViewer : public LLApp // *NOTE:Mani Fix this for login abstraction!! void handleLoginComplete(); + LLAllocator & getAllocator() { return mAlloc; } + protected: virtual bool initWindow(); // Initialize the viewer's window. virtual bool initLogging(); // Initialize log files, logging system, return false on failure. @@ -224,6 +228,8 @@ class LLAppViewer : public LLApp bool mSavedFinalSnapshot; + bool mForceGraphicsDetail; + bool mQuitRequested; // User wants to quit, may have modified documents open. bool mLogoutRequestSent; // Disconnect message sent to simulator, no longer safe to send messages to the sim. S32 mYieldTime; @@ -231,10 +237,13 @@ class LLAppViewer : public LLApp LLWatchdogTimeout* mMainloopTimeout; + LLThread* mFastTimerLogThread; // for tracking viewer<->region circuit death bool mAgentRegionLastAlive; LLUUID mAgentRegionLastID; + LLAllocator mAlloc; + public: //some information for updater typedef struct diff --git a/indra/newview/llappviewermacosx.cpp b/indra/newview/llappviewermacosx.cpp index 1c32f0c564dc62ab94fbbe0e06fe512d073022b5..ca005946c94315351731a24f7cbdfa687815afbd 100644 --- a/indra/newview/llappviewermacosx.cpp +++ b/indra/newview/llappviewermacosx.cpp @@ -188,7 +188,7 @@ bool LLAppViewerMacOSX::initParseCommandLine(LLCommandLineParser& clp) // in the "General" tab, click the "Add Localization" button // create a new localization for the language you're adding // set the contents of the new localization of the file to the string corresponding to our localization - // (i.e. "en-us", "ja", etc. Use the existing ones as a guide.) + // (i.e. "en", "ja", etc. Use the existing ones as a guide.) CFURLRef url = CFBundleCopyResourceURL(CFBundleGetMainBundle(), CFSTR("language"), CFSTR("txt"), NULL); char path[MAX_PATH]; if(CFURLGetFileSystemRepresentation(url, false, (UInt8 *)path, sizeof(path))) @@ -391,6 +391,28 @@ void LLAppViewerMacOSX::handleCrashReporting(bool reportFreeze) { _exit(1); } + + // TODO:palmer REMOVE THIS VERY SOON. THIS WILL NOT BE IN VIEWER 2.0 + // Remove the crash stack log from previous executions. + // Since we've started logging a new instance of the app, we can assume + // The old crash stack is invalid for the next crash report. + char path[MAX_PATH]; + FSRef folder; + if(FSFindFolder(kUserDomain, kLogsFolderType, false, &folder) == noErr) + { + // folder is an FSRef to ~/Library/Logs/ + if(FSRefMakePath(&folder, (UInt8*)&path, sizeof(path)) == noErr) + { + std::string pathname = std::string(path) + std::string("/CrashReporter/"); + std::string mask = "Second Life*"; + std::string file_name; + while(gDirUtilp->getNextFileInDir(pathname, mask, file_name, false)) + { + LLFile::remove(pathname + file_name); + } + } + } + } std::string LLAppViewerMacOSX::generateSerialNumber() diff --git a/indra/newview/llappviewermacosx.h b/indra/newview/llappviewermacosx.h index bc841fc3a72966c28f11616118bc17aa29b8088f..0928916a578b16aa350ed2a191b4a5a1510395ce 100644 --- a/indra/newview/llappviewermacosx.h +++ b/indra/newview/llappviewermacosx.h @@ -55,6 +55,7 @@ class LLAppViewerMacOSX : public LLAppViewer virtual void handleSyncCrashTrace(); std::string generateSerialNumber(); + virtual bool initLogging(); virtual bool initParseCommandLine(LLCommandLineParser& clp); }; diff --git a/indra/newview/llappviewerwin32.cpp b/indra/newview/llappviewerwin32.cpp index be5403e39a72fefb95cd5191569fc852f13d85b7..98d7ab712b7997821257ec8e4fe493c6d473e7f4 100644 --- a/indra/newview/llappviewerwin32.cpp +++ b/indra/newview/llappviewerwin32.cpp @@ -160,9 +160,31 @@ int APIENTRY WINMAIN(HINSTANCE hInstance, int nCmdShow) { LLMemType mt1(LLMemType::MTYPE_STARTUP); + + const S32 MAX_HEAPS = 255; + DWORD heap_enable_lfh_error[MAX_HEAPS]; + S32 num_heaps = 0; #if WINDOWS_CRT_MEM_CHECKS && !INCLUDE_VLD _CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF ); // dump memory leaks on exit +#elif 1 + // Experimental - enable the low fragmentation heap + // This results in a 2-3x improvement in opening a new Inventory window (which uses a large numebr of allocations) + // Note: This won't work when running from the debugger unless the _NO_DEBUG_HEAP environment variable is set to 1 + + _CrtSetDbgFlag(0); // default, just making explicit + + ULONG ulEnableLFH = 2; + HANDLE* hHeaps = new HANDLE[MAX_HEAPS]; + num_heaps = GetProcessHeaps(MAX_HEAPS, hHeaps); + for(S32 i = 0; i < num_heaps; i++) + { + bool success = HeapSetInformation(hHeaps[i], HeapCompatibilityInformation, &ulEnableLFH, sizeof(ulEnableLFH)); + if (success) + heap_enable_lfh_error[i] = 0; + else + heap_enable_lfh_error[i] = GetLastError(); + } #endif // *FIX: global @@ -184,8 +206,21 @@ int APIENTRY WINMAIN(HINSTANCE hInstance, llwarns << "Application init failed." << llendl; return -1; } - - // Run the application main loop + + // Have to wait until after logging is initialized to display LFH info + if (num_heaps > 0) + { + llinfos << "Attempted to enable LFH for " << num_heaps << " heaps." << llendl; + for(S32 i = 0; i < num_heaps; i++) + { + if (heap_enable_lfh_error[i]) + { + llinfos << " Failed to enable LFH for heap: " << i << " Error: " << heap_enable_lfh_error[i] << llendl; + } + } + } + + // Run the application main loop if(!LLApp::isQuitting()) { viewer_app_ptr->mainLoop(); diff --git a/indra/newview/llassetuploadresponders.cpp b/indra/newview/llassetuploadresponders.cpp index 63d0518cfef70f7141de14bf445dbc8e3c21b07a..4cd9647603fcde5c7d321fb7d9e092c06fd37ee1 100644 --- a/indra/newview/llassetuploadresponders.cpp +++ b/indra/newview/llassetuploadresponders.cpp @@ -172,6 +172,9 @@ void LLAssetUploadResponder::uploadUpload(const LLSD& content) void LLAssetUploadResponder::uploadFailure(const LLSD& content) { + // remove the "Uploading..." message + LLUploadDialog::modalUploadFinished(); + std::string reason = content["state"]; // deal with L$ errors if (reason == "insufficient funds") @@ -335,11 +338,11 @@ void LLNewAgentInventoryResponder::uploadComplete(const LLSD& content) } LLSendTexLayerResponder::LLSendTexLayerResponder(const LLSD& post_data, - const LLUUID& vfile_id, - LLAssetType::EType asset_type, - LLBakedUploadData * baked_upload_data) - : LLAssetUploadResponder(post_data, vfile_id, asset_type), - mBakedUploadData(baked_upload_data) + const LLUUID& vfile_id, + LLAssetType::EType asset_type, + LLBakedUploadData * baked_upload_data) : + LLAssetUploadResponder(post_data, vfile_id, asset_type), + mBakedUploadData(baked_upload_data) { } diff --git a/indra/newview/llavatariconctrl.cpp b/indra/newview/llavatariconctrl.cpp index 09aecd193fed2800e8bcd8522621131108728200..807f2f035cf3a8784c85b127608b381ec9a278bf 100644 --- a/indra/newview/llavatariconctrl.cpp +++ b/indra/newview/llavatariconctrl.cpp @@ -35,8 +35,8 @@ #include "llagent.h" #include "llavatarconstants.h" #include "llavatariconctrl.h" -#include "llfloateravatarinfo.h" -#include "llfloaterfriends.h" +#include "llcallingcard.h" // for LLAvatarTracker +#include "llfriendactions.h" #include "llimview.h" #include "llmenugl.h" #include "lluictrlfactory.h" @@ -44,10 +44,11 @@ #define MENU_ITEM_VIEW_PROFILE 0 #define MENU_ITEM_SEND_IM 1 -static LLRegisterWidget<LLAvatarIconCtrl> r("avatar_icon"); +static LLDefaultWidgetRegistry::Register<LLAvatarIconCtrl> r("avatar_icon"); LLAvatarIconCtrl::LLAvatarIconCtrl(const LLAvatarIconCtrl::Params& p) -: LLIconCtrl(p) +: LLIconCtrl(p), + mDrawTooltip(p.draw_tooltip) { LLRect rect = p.rect; @@ -87,18 +88,23 @@ LLAvatarIconCtrl::LLAvatarIconCtrl(const LLAvatarIconCtrl::Params& p) mStatusSymbol->setColor(LLColor4::grey); addChild(mStatusSymbol); - + if (p.avatar_id.isProvided()) { LLSD value(p.avatar_id); setValue(value); } + else + { + LLIconCtrl::setValue("default_profile_picture.j2c"); + } + LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar; registrar.add("AvatarIcon.Action", boost::bind(&LLAvatarIconCtrl::onAvatarIconContextMenuItemClicked, this, _2)); - LLMenuGL* menu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_avatar_icon.xml", this); + LLMenuGL* menu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_avatar_icon.xml", gMenuHolder); mPopupMenuHandle = menu->getHandle(); } @@ -127,7 +133,7 @@ void LLAvatarIconCtrl::setValue(const LLSD& value) if (mAvatarId != value.asUUID()) { LLAvatarPropertiesProcessor::getInstance()->addObserver(value.asUUID(), this); - LLAvatarPropertiesProcessor::getInstance()->sendAvatarPropertiesRequest(value.asUUID()); + LLAvatarPropertiesProcessor::getInstance()->sendDataRequest(value.asUUID(),APT_PROPERTIES); mAvatarId = value.asUUID(); } } @@ -140,28 +146,47 @@ void LLAvatarIconCtrl::setValue(const LLSD& value) } //virtual -void LLAvatarIconCtrl::processAvatarProperties(const LLAvatarData& avatar_data) +void LLAvatarIconCtrl::processProperties(void* data, EAvatarProcessorType type) { - if (avatar_data.avatar_id != mAvatarId) + if (APT_PROPERTIES == type) { - return; - } - - // Update the avatar - LLIconCtrl::setValue(avatar_data.image_id); - - // Update color of status symbol and tool tip - if (avatar_data.flags & AVATAR_ONLINE) - { - mStatusSymbol->setColor(LLColor4::green); - setToolTip((LLStringExplicit)"Online"); - } - else - { - mStatusSymbol->setColor(LLColor4::grey); - setToolTip((LLStringExplicit)"Offline"); + LLAvatarData* avatar_data = static_cast<LLAvatarData*>(data); + if (avatar_data) + { + if (avatar_data->avatar_id != mAvatarId) + { + return; + } + + // Update the avatar + if (avatar_data->image_id.notNull()) + { + LLIconCtrl::setValue(avatar_data->image_id); + } + else + { + LLIconCtrl::setValue("default_profile_picture.j2c"); + } + + // Update color of status symbol and tool tip + if (avatar_data->flags & AVATAR_ONLINE) + { + mStatusSymbol->setColor(LLColor4::green); + if (mDrawTooltip) + { + setToolTip((LLStringExplicit)"Online"); + } + } + else + { + mStatusSymbol->setColor(LLColor4::grey); + if (mDrawTooltip) + { + setToolTip((LLStringExplicit)"Offline"); + } + } + } } - } BOOL LLAvatarIconCtrl::handleRightMouseDown(S32 x, S32 y, MASK mask) @@ -203,7 +228,7 @@ void LLAvatarIconCtrl::onAvatarIconContextMenuItemClicked(const LLSD& userdata) if (level == "profile") { - LLFloaterAvatarInfo::show(id); + LLFriendActions::showProfile(id); } else if (level == "im") { @@ -221,24 +246,10 @@ void LLAvatarIconCtrl::onAvatarIconContextMenuItemClicked(const LLSD& userdata) name.append(" "); name.append(getLastName()); - LLPanelFriends::requestFriendshipDialog(id, name); + LLFriendActions::requestFriendshipDialog(id, name); } else if (level == "remove") { - LLSD args; - - std::string msgType = "RemoveFromFriends"; - - args["FIRST_NAME"] = getFirstName(); - args["LAST_NAME"] = getLastName(); - - LLSD payload; - - payload["ids"].append(id); - - LLNotifications::instance().add(msgType, - args, - payload, - &LLPanelFriends::handleRemove); + LLFriendActions::removeFriendDialog(id); } } diff --git a/indra/newview/llavatariconctrl.h b/indra/newview/llavatariconctrl.h index 4cec1d2d755c45b384ebcf6a1240e9c3173ecb48..cb1e9584ba5884e30a89bc375af23bb80d838b5f 100644 --- a/indra/newview/llavatariconctrl.h +++ b/indra/newview/llavatariconctrl.h @@ -44,9 +44,11 @@ class LLAvatarIconCtrl struct Params : public LLInitParam::Block<Params, LLIconCtrl::Params> { Optional <LLUUID> avatar_id; + Optional <bool> draw_tooltip; Params() { name = "avatar_icon"; + draw_tooltip = TRUE; } }; protected: @@ -61,7 +63,7 @@ class LLAvatarIconCtrl virtual void setValue(const LLSD& value); // LLAvatarPropertiesProcessor observer trigger - virtual void processAvatarProperties(const LLAvatarData& avatar_data); + virtual void processProperties(void* data, EAvatarProcessorType type); BOOL handleRightMouseDown(S32 x, S32 y, MASK mask); @@ -81,6 +83,7 @@ class LLAvatarIconCtrl std::string mFirstName; std::string mLastName; LLHandle<LLView> mPopupMenuHandle; + bool mDrawTooltip; }; #endif // LL_LLAVATARICONCTRL_H diff --git a/indra/newview/llavatarlist.cpp b/indra/newview/llavatarlist.cpp new file mode 100644 index 0000000000000000000000000000000000000000..08f0cf884204a53a905ea0f7a155f79364385cc2 --- /dev/null +++ b/indra/newview/llavatarlist.cpp @@ -0,0 +1,163 @@ +/** + * @file llavatarlist.h + * @brief Generic avatar list + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + * + * Copyright (c) 2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#include "llviewerprecompiledheaders.h" + +#include "llavatarlist.h" + +// newview +#include "llcallingcard.h" // for LLAvatarTracker +#include "llcachename.h" + +static LLDefaultWidgetRegistry::Register<LLAvatarList> r("avatar_list"); + +LLAvatarList::Params::Params() +{ + draw_heading = true; + draw_stripes = false; + multi_select = false; + column_padding = 0; + search_column = LIST_NAME; + sort_column = LIST_NAME; +} + +LLAvatarList::LLAvatarList(const Params& p) +: LLScrollListCtrl(p) +{ + setCommitOnSelectionChange(TRUE); // there's no such param in LLScrollListCtrl::Params + + // "name" column + { + LLScrollListColumn::Params col_params; + col_params.name = "name"; + col_params.header.label = "Name"; // *TODO: localize or remove the header + col_params.width.dynamic_width = true; + addColumn(col_params); + } + + // invisible "id" column + { + LLScrollListColumn::Params col_params; + col_params.name = "id"; + col_params.width.pixel_width = 0; + addColumn(col_params); + } + + // The corresponding parameters don't work because we create columns dynamically. + sortByColumnIndex(LIST_NAME, TRUE); + setSearchColumn(LIST_NAME); +} + +std::vector<LLUUID> LLAvatarList::getSelectedIDs() +{ + LLUUID selected_id; + std::vector<LLUUID> avatar_ids; + std::vector<LLScrollListItem*> selected = getAllSelected(); + for(std::vector<LLScrollListItem*>::iterator itr = selected.begin(); itr != selected.end(); ++itr) + { + avatar_ids.push_back((*itr)->getUUID()); + } + return avatar_ids; +} + +void LLAvatarList::addItem(const LLUUID& id, const std::string& name, BOOL is_bold, EAddPosition pos) +{ + std::string fullname; + + // Populate list item. + LLSD element; + element["id"] = id; + + LLSD& friend_column = element["columns"][LIST_NAME]; + friend_column["column"] = "name"; + friend_column["value"] = name; + + LLScrollListItem* new_itemp = addElement(element, pos); + + // Indicate buddy online status. + // (looks like parsing font parameters from LLSD is broken) + if (is_bold) + { + LLScrollListText* name_textp = dynamic_cast<LLScrollListText*>(new_itemp->getColumn(LIST_NAME)); + if (name_textp) + name_textp->setFontStyle(LLFontGL::BOLD); + else + { + llwarns << "Name column not found" << llendl; + } + } +} + +BOOL LLAvatarList::updateList(const std::vector<LLUUID>& all_buddies) +{ + BOOL have_names = TRUE; + + // Save selection. + std::vector<LLUUID> selected_ids = getSelectedIDs(); + LLUUID current_id = getCurrentID(); + S32 pos = getScrollPos(); + + std::vector<LLUUID>::const_iterator buddy_it = all_buddies.begin(); + deleteAllItems(); + for(; buddy_it != all_buddies.end(); ++buddy_it) + { + std::string name; + const LLUUID& buddy_id = *buddy_it; + have_names &= gCacheName->getFullName(buddy_id, name); + addItem(buddy_id, name, LLAvatarTracker::instance().isBuddyOnline(buddy_id)); + } + + // Changed item in place, need to request sort and update columns + // because we might have changed data in a column on which the user + // has already sorted. JC + sortItems(); + + // re-select items + selectMultiple(selected_ids); + setCurrentByID(current_id); +#if 0 + // Restore selection. + if(selected_ids.size() > 0) + { + // only non-null if friends was already found. This may fail, + // but we don't really care here, because refreshUI() will + // clean up the interface. + for(std::vector<LLUUID>::iterator itr = selected_ids.begin(); itr != selected_ids.end(); ++itr) + { + setSelectedByValue(*itr, true); + } + } +#endif + setScrollPos(pos); + + return have_names; +} diff --git a/indra/newview/llavatarlist.h b/indra/newview/llavatarlist.h new file mode 100644 index 0000000000000000000000000000000000000000..9bd9ce8e0eb85e6db96f0b48983c62f3a98e2565 --- /dev/null +++ b/indra/newview/llavatarlist.h @@ -0,0 +1,63 @@ +/** + * @file llavatarlist.h + * @brief Generic avatar list + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + * + * Copyright (c) 2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#ifndef LL_LLAVATARLIST_H +#define LL_LLAVATARLIST_H + +#include <llscrolllistctrl.h> + +// *TODO: derive from ListView when it's ready. +class LLAvatarList : public LLScrollListCtrl +{ + LOG_CLASS(LLAvatarList); +public: + struct Params : public LLInitParam::Block<Params, LLScrollListCtrl::Params> + { + Params(); + }; + + enum AVATAR_LIST_COLUMN_ORDER + { + LIST_NAME, + }; + + LLAvatarList(const Params&); + virtual ~LLAvatarList() {} + + BOOL updateList(const std::vector<LLUUID>& all_buddies); + +protected: + std::vector<LLUUID> getSelectedIDs(); + void addItem(const LLUUID& id, const std::string& name, BOOL is_bold, EAddPosition pos = ADD_BOTTOM); +}; + +#endif // LL_LLAVATARLIST_H diff --git a/indra/newview/llavatarlistitem.cpp b/indra/newview/llavatarlistitem.cpp new file mode 100644 index 0000000000000000000000000000000000000000..80b80dc2283504515671be0df55053be838bf817 --- /dev/null +++ b/indra/newview/llavatarlistitem.cpp @@ -0,0 +1,273 @@ +/** + * @file llavatarlistitem.cpp + * @avatar list item source file + * + * $LicenseInfo:firstyear=2004&license=viewergpl$ + * + * Copyright (c) 2004-2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + + +#include "llviewerprecompiledheaders.h" + +#include "llfloaterreg.h" +#include "llavatarlistitem.h" +#include "llagent.h" + + + +//--------------------------------------------------------------------------------- +LLAvatarListItem::LLAvatarListItem(const Params& p) : LLPanel() +{ + mNeedsArrange = false; + LLUICtrlFactory::getInstance()->buildPanel(this, "panel_avatar_list_item.xml"); + + mStatus = NULL; + mInfo = NULL; + mProfile = NULL; + mini_inspector = NULL; + + mAvatar = getChild<LLAvatarIconCtrl>("avatar_icon"); + //mAvatar->setValue(p.avatar_icon); + mName = getChild<LLTextBox>("name"); + //mName->setText(p.user_name); + + init(p); + + +} + +//--------------------------------------------------------------------------------- +void LLAvatarListItem::init(const Params& p) +{ + mLocator = getChild<LLIconCtrl>("locator"); + + mStatus = getChild<LLTextBox>("user_status"); + + mInfo = getChild<LLButton>("info_btn"); + mInfo->setVisible(false); + + mProfile = getChild<LLButton>("profile_btn"); + mProfile->setVisible(false); + + if(!p.buttons.locator) + { + mLocator->setVisible(false); + delete mLocator; + mLocator = NULL; + } + + if(!p.buttons.status) + { + mStatus->setVisible(false); + delete mStatus; + mStatus = NULL; + } + + if(!p.buttons.info) + { + delete mInfo; + mInfo = NULL; + } + else + { + mInfo->setClickedCallback(boost::bind(&LLAvatarListItem::onInfoBtnClick, this)); + } + + if(!p.buttons.profile) + { + delete mProfile; + mProfile = NULL; + + LLRect rect; + + rect.setLeftTopAndSize(mName->getRect().mLeft, mName->getRect().mTop, mName->getRect().getWidth() + 30, mName->getRect().getHeight()); + mName->setRect(rect); + + if(mStatus) + { + rect.setLeftTopAndSize(mStatus->getRect().mLeft + 30, mStatus->getRect().mTop, mStatus->getRect().getWidth(), mStatus->getRect().getHeight()); + mStatus->setRect(rect); + } + + if(mLocator) + { + rect.setLeftTopAndSize(mLocator->getRect().mLeft + 30, mLocator->getRect().mTop, mLocator->getRect().getWidth(), mLocator->getRect().getHeight()); + mLocator->setRect(rect); + } + + if(mInfo) + { + rect.setLeftTopAndSize(mInfo->getRect().mLeft + 30, mInfo->getRect().mTop, mInfo->getRect().getWidth(), mInfo->getRect().getHeight()); + mInfo->setRect(rect); + } + } + +} + +//--------------------------------------------------------------------------------- +void LLAvatarListItem::reshape(S32 width, S32 height, BOOL called_from_parent) +{ + if(!mNeedsArrange) + { + LLView::reshape(width, height, called_from_parent); + return; + } + + LLRect rect; + S32 profile_delta = 0; + S32 width_delta = getRect().getWidth() - width; + + if(!mProfile) + { + profile_delta = 30; + } + else + { + rect.setLeftTopAndSize(mProfile->getRect().mLeft - width_delta, mProfile->getRect().mTop, mProfile->getRect().getWidth(), mProfile->getRect().getHeight()); + mProfile->setRect(rect); + } + + width_delta += profile_delta; + + if(mInfo) + { + rect.setLeftTopAndSize(mInfo->getRect().mLeft - width_delta, mInfo->getRect().mTop, mInfo->getRect().getWidth(), mInfo->getRect().getHeight()); + mInfo->setRect(rect); + } + + if(mLocator) + { + rect.setLeftTopAndSize(mLocator->getRect().mLeft - width_delta, mLocator->getRect().mTop, mLocator->getRect().getWidth(), mLocator->getRect().getHeight()); + mLocator->setRect(rect); + } + + if(mStatus) + { + rect.setLeftTopAndSize(mStatus->getRect().mLeft - width_delta, mStatus->getRect().mTop, mStatus->getRect().getWidth(), mStatus->getRect().getHeight()); + mStatus->setRect(rect); + } + + mNeedsArrange = false; + LLView::reshape(width, height, called_from_parent); +} + +//--------------------------------------------------------------------------------- +LLAvatarListItem::~LLAvatarListItem() +{ +} +//--------------------------------------------------------------------------------- + +//--------------------------------------------------------------------------------- +BOOL LLAvatarListItem::handleHover(S32 x, S32 y, MASK mask) +{ + mYPos = y; + mXPos = x; + + return true; +} + +//--------------------------------------------------------------------------------- +void LLAvatarListItem::onMouseEnter(S32 x, S32 y, MASK mask) +{ + setTransparentColor( *(new LLColor4((F32)0.4, (F32)0.4, (F32)0.4)) ); + + if(mInfo) + mInfo->setVisible(true); + + if(mProfile) + mProfile->setVisible(true); +} + +//--------------------------------------------------------------------------------- +void LLAvatarListItem::onMouseLeave(S32 x, S32 y, MASK mask) +{ + if(mInfo) + { + if( mInfo->getRect().pointInRect(x, y) ) + return; + + mInfo->setVisible(false); + } + + if(mProfile) + { + if( mProfile->getRect().pointInRect(x, y) ) + return; + + mProfile->setVisible(false); + } + + setTransparentColor( *(new LLColor4((F32)0.3, (F32)0.3, (F32)0.3)) ); +} + +//--------------------------------------------------------------------------------- +void LLAvatarListItem::setStatus(int status) +{ +} + +//--------------------------------------------------------------------------------- +void LLAvatarListItem::setName(std::string name) +{ +} + +//--------------------------------------------------------------------------------- +void LLAvatarListItem::setAvatar(LLSD& data) +{ +} + +//--------------------------------------------------------------------------------- +void LLAvatarListItem::onInfoBtnClick() +{ + mini_inspector = LLFloaterReg::showInstance("mini_inspector", gAgent.getID()); + + if (!mini_inspector) + return; + + LLRect rect; + localPointToScreen(mXPos, mYPos, &mXPos, &mYPos); + + + // *TODO Vadim: rewrite this. "+= -" looks weird. + S32 delta = mYPos - mini_inspector->getRect().getHeight(); + if(delta < 0) + { + mYPos += -delta; + } + + rect.setLeftTopAndSize(mXPos, mYPos, mini_inspector->getRect().getWidth(), mini_inspector->getRect().getHeight()); + mini_inspector->setRect(rect); + mini_inspector->setFrontmost(true); + mini_inspector->setVisible(true); + +} + +//--------------------------------------------------------------------------------- +void LLAvatarListItem::onProfileBtnClick() +{ +} + +//--------------------------------------------------------------------------------- diff --git a/indra/newview/llavatarlistitem.h b/indra/newview/llavatarlistitem.h new file mode 100644 index 0000000000000000000000000000000000000000..5835a4c6b4bb6aa5696f2b75d1f239acd29e68c9 --- /dev/null +++ b/indra/newview/llavatarlistitem.h @@ -0,0 +1,102 @@ +/** + * @file llavatarlistitem.h + * @avatar list item header file + * + * $LicenseInfo:firstyear=2004&license=viewergpl$ + * + * Copyright (c) 2004-2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#include "llavatariconctrl.h" +#include <llview.h> +#include <llpanel.h> +#include <llfloater.h> +#include <lltextbox.h> +#include <llbutton.h> +#include <lluuid.h> + +#include "llfloaterminiinspector.h" + +class LLAvatarListItem : public LLPanel +{ +public: + struct Params : public LLInitParam::Block<Params, LLPanel::Params> + { + Optional<LLUUID> avatar_icon; + Optional<std::string> user_name; + struct avatar_list_item_buttons + { + bool status; + bool info; + bool profile; + bool locator; + avatar_list_item_buttons() : status(true), info(true), profile(true), locator(true) + {}; + } buttons; + + Params() : avatar_icon("avatar_icon",LLUUID()), user_name("user_name","") + {}; + }; + + + LLAvatarListItem(const Params& p); + virtual ~LLAvatarListItem(); + + void reshape(S32 width, S32 height, BOOL called_from_parent); + + //interface + void setStatus(int status); + void setName(std::string name); + void setAvatar(LLSD& data); + void needsArrange( void ) {mNeedsArrange = true;} + + + //event handlers + //mouse + virtual BOOL handleHover(S32 x, S32 y, MASK mask); + virtual void onMouseLeave(S32 x, S32 y, MASK mask); + virtual void onMouseEnter(S32 x, S32 y, MASK mask); + //buttons + void onInfoBtnClick(); + void onProfileBtnClick(); + +private: + LLAvatarIconCtrl* mAvatar; + LLIconCtrl* mLocator; + LLTextBox* mName; + LLTextBox* mStatus; + LLButton* mInfo; + LLButton* mProfile; + + S32 mYPos; + S32 mXPos; + + LLFloater* mini_inspector; + bool mNeedsArrange; + + // + void init(const Params& p); +}; diff --git a/indra/newview/llavatarpropertiesprocessor.cpp b/indra/newview/llavatarpropertiesprocessor.cpp index 6ff5c8f625a4a696a8abad26a27947666addf817..e27da5663b09f192c921439d44fe4ce63ff43c0c 100644 --- a/indra/newview/llavatarpropertiesprocessor.cpp +++ b/indra/newview/llavatarpropertiesprocessor.cpp @@ -30,15 +30,21 @@ * $/LicenseInfo$ */ -#include "llviewerprecompiledheaders.h" - +#include "llviewerprecompiledheaders.h" + #include "llavatarpropertiesprocessor.h" + #include "message.h" #include "llagent.h" +#include "llviewergenericmessage.h" + +LLAvatarPropertiesProcessor::LLAvatarPropertiesProcessor() +{ +} void LLAvatarPropertiesProcessor::addObserver(const LLUUID& avatar_id, LLAvatarPropertiesObserver* observer) { - // Check if that observer is alredy in mObservers for that avatar_id + // Check if that observer is already in mObservers for that avatar_id observer_multimap_t::iterator it; // IAN BUG this should update the observer's UUID if this is a dupe - sent to PE @@ -81,11 +87,41 @@ void LLAvatarPropertiesProcessor::removeObserver(const LLUUID& avatar_id, LLAvat } } +void LLAvatarPropertiesProcessor::sendDataRequest(const LLUUID& avatar_id, EAvatarProcessorType type, + const void * data) +{ + switch(type) + { + case APT_PROPERTIES: + sendAvatarPropertiesRequest(avatar_id); + break; + case APT_PICKS: + sendGenericRequest(avatar_id, "avatarpicksrequest"); + break; + case APT_PICK_INFO: + if (data) { + sendPickInfoRequest(avatar_id, *static_cast<const LLUUID*>(data)); + } + case APT_NOTES: + sendGenericRequest(avatar_id, "avatarnotesrequest"); + break; + case APT_GROUPS: + sendGenericRequest(avatar_id, "avatargroupsrequest"); + break; + default: + break; + } +} + +void LLAvatarPropertiesProcessor::sendGenericRequest(const LLUUID& avatar_id, const std::string method) +{ + std::vector<std::string> strings; + strings.push_back( avatar_id.asString() ); + send_generic_message(method, strings); +} -// IAN BUG - this is in no way linked to observers... problem? void LLAvatarPropertiesProcessor::sendAvatarPropertiesRequest(const LLUUID& avatar_id) { - lldebugs << "LLAvatarPropertiesProcessor::sendAvatarPropertiesRequest()" << llendl; LLMessageSystem *msg = gMessageSystem; msg->newMessageFast(_PREHASH_AvatarPropertiesRequest); @@ -94,45 +130,312 @@ void LLAvatarPropertiesProcessor::sendAvatarPropertiesRequest(const LLUUID& avat msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); msg->addUUIDFast( _PREHASH_AvatarID, avatar_id); gAgent.sendReliableMessage(); +} + +void LLAvatarPropertiesProcessor::sendDataUpdate(const void* data, EAvatarProcessorType type) +{ + switch(type) + { + case APT_PROPERTIES: + sendAvatarPropertiesUpdate(data); + break; + case APT_PICK_INFO: + sendPicInfoUpdate(data); + case APT_PICKS: +// sendGenericRequest(avatar_id, "avatarpicksrequest"); + break; + case APT_NOTES: +// sendGenericRequest(avatar_id, "avatarnotesrequest"); + break; + case APT_GROUPS: +// sendGenericRequest(avatar_id, "avatargroupsrequest"); + break; + default: + break; + } } +void LLAvatarPropertiesProcessor::sendAvatarPropertiesUpdate(const void* data) +{ + llinfos << "Sending avatarinfo update" << llendl; + + const LLAvatarData* avatar_props = static_cast<const LLAvatarData*>(data); + // This value is required by sendAvatarPropertiesUpdate method. + //A profile should never be mature. (From the original code) + BOOL mature = FALSE; + -// static -void LLAvatarPropertiesProcessor::processAvatarPropertiesReply(LLMessageSystem *msg, void**) + + LLMessageSystem *msg = gMessageSystem; + + msg->newMessageFast(_PREHASH_AvatarPropertiesUpdate); + msg->nextBlockFast(_PREHASH_AgentData); + msg->addUUIDFast( _PREHASH_AgentID, gAgent.getID() ); + msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID() ); + msg->nextBlockFast(_PREHASH_PropertiesData); + + msg->addUUIDFast( _PREHASH_ImageID, avatar_props->image_id); + msg->addUUIDFast( _PREHASH_FLImageID, avatar_props->fl_image_id); + msg->addStringFast( _PREHASH_AboutText, avatar_props->about_text); + msg->addStringFast( _PREHASH_FLAboutText, avatar_props->fl_about_text); + + msg->addBOOL(_PREHASH_AllowPublish, avatar_props->allow_publish); + msg->addBOOL(_PREHASH_MaturePublish, mature); + msg->addString(_PREHASH_ProfileURL, avatar_props->profile_url); + gAgent.sendReliableMessage(); +} + +void LLAvatarPropertiesProcessor::processAvatarPropertiesReply(LLMessageSystem* msg, void**) { LLAvatarData avatar_data; - msg->getUUIDFast( _PREHASH_AgentData, _PREHASH_AgentID, avatar_data.agent_id); - msg->getUUIDFast( _PREHASH_AgentData, _PREHASH_AvatarID, avatar_data.avatar_id); - msg->getUUIDFast( _PREHASH_PropertiesData, _PREHASH_ImageID, avatar_data.image_id); - msg->getUUIDFast( _PREHASH_PropertiesData, _PREHASH_FLImageID, avatar_data.fl_image_id); - msg->getUUIDFast( _PREHASH_PropertiesData, _PREHASH_PartnerID, avatar_data.partner_id); - msg->getStringFast( _PREHASH_PropertiesData, _PREHASH_AboutText, avatar_data.about_text); + msg->getUUIDFast( _PREHASH_AgentData, _PREHASH_AgentID, avatar_data.agent_id); + msg->getUUIDFast( _PREHASH_AgentData, _PREHASH_AvatarID, avatar_data.avatar_id); + msg->getUUIDFast( _PREHASH_PropertiesData, _PREHASH_ImageID, avatar_data.image_id); + msg->getUUIDFast( _PREHASH_PropertiesData, _PREHASH_FLImageID, avatar_data.fl_image_id); + msg->getUUIDFast( _PREHASH_PropertiesData, _PREHASH_PartnerID, avatar_data.partner_id); + msg->getStringFast( _PREHASH_PropertiesData, _PREHASH_AboutText, avatar_data.about_text); msg->getStringFast( _PREHASH_PropertiesData, _PREHASH_FLAboutText, avatar_data.fl_about_text); - msg->getStringFast( _PREHASH_PropertiesData, _PREHASH_BornOn, avatar_data.born_on); - msg->getString( "PropertiesData", "ProfileURL", avatar_data.profile_url); - msg->getU32Fast( _PREHASH_PropertiesData, _PREHASH_Flags, avatar_data.flags); + msg->getStringFast( _PREHASH_PropertiesData, _PREHASH_BornOn, avatar_data.born_on); + msg->getString( _PREHASH_PropertiesData, _PREHASH_ProfileURL, avatar_data.profile_url); + msg->getU32Fast( _PREHASH_PropertiesData, _PREHASH_Flags, avatar_data.flags); + avatar_data.caption_index = 0; S32 charter_member_size = 0; - charter_member_size = msg->getSize("PropertiesData", "CharterMember"); + charter_member_size = msg->getSize(_PREHASH_PropertiesData, _PREHASH_CharterMember); if(1 == charter_member_size) { - msg->getBinaryData("PropertiesData", "CharterMember", &avatar_data.caption_index, 1); + msg->getBinaryData(_PREHASH_PropertiesData, _PREHASH_CharterMember, &avatar_data.caption_index, 1); } else if(1 < charter_member_size) { - msg->getString("PropertiesData", "CharterMember", avatar_data.caption_text); + msg->getString(_PREHASH_PropertiesData, _PREHASH_CharterMember, avatar_data.caption_text); + } + notifyObservers(avatar_data.avatar_id,&avatar_data,APT_PROPERTIES); +} + +void LLAvatarPropertiesProcessor::processAvatarInterestsReply(LLMessageSystem* msg, void**) +{ +/* + AvatarInterestsReply is automatically sent by the server in response to the + AvatarPropertiesRequest sent when the panel is opened (in addition to the AvatarPropertiesReply message). + If the interests panel is no longer part of the design (?) we should just register the message + to a handler function that does nothing. + That will suppress the warnings and be compatible with old server versions. + WARNING: LLTemplateMessageReader::decodeData: Message from 216.82.37.237:13000 with no handler function received: AvatarInterestsReply +*/ +} +void LLAvatarPropertiesProcessor::processAvatarClassifiedReply(LLMessageSystem* msg, void**) +{ + // avatarclassifiedsrequest is not sent according to new UI design but + // keep this method according to resolved issues. +} +void LLAvatarPropertiesProcessor::processAvatarNotesReply(LLMessageSystem* msg, void**) +{ + LLAvatarNotes avatar_notes; + + msg->getUUID(_PREHASH_AgentData, _PREHASH_AgentID, avatar_notes.agent_id); + msg->getUUID(_PREHASH_Data, _PREHASH_TargetID, avatar_notes.target_id); + msg->getString(_PREHASH_Data, _PREHASH_Notes, avatar_notes.notes); + + notifyObservers(avatar_notes.target_id,&avatar_notes,APT_NOTES); +} + +void LLAvatarPropertiesProcessor::processAvatarPicksReply(LLMessageSystem* msg, void**) +{ + LLAvatarPicks avatar_picks; + msg->getUUID(_PREHASH_AgentData, _PREHASH_AgentID, avatar_picks.target_id); + msg->getUUID(_PREHASH_AgentData, _PREHASH_TargetID, avatar_picks.target_id); + + S32 block_count = msg->getNumberOfBlocks(_PREHASH_Data); + for (int block = 0; block < block_count; ++block) + { + LLUUID pick_id; + std::string pick_name; + + msg->getUUID(_PREHASH_Data, _PREHASH_PickID, pick_id, block); + msg->getString(_PREHASH_Data, _PREHASH_PickName, pick_name, block); + + avatar_picks.picks_list.push_back(std::make_pair(pick_id,pick_name)); } + notifyObservers(avatar_picks.target_id,&avatar_picks,APT_PICKS); +} + +void LLAvatarPropertiesProcessor::processPickInfoReply(LLMessageSystem* msg, void**) +{ + LLPickData pick_data; + + // Extract the agent id and verify the message is for this + // client. + msg->getUUID(_PREHASH_AgentData, _PREHASH_AgentID, pick_data.agent_id ); + msg->getUUID(_PREHASH_Data, _PREHASH_PickID, pick_data.pick_id); + msg->getUUID(_PREHASH_Data, _PREHASH_CreatorID, pick_data.creator_id); + + // ** top_pick should be deleted, not being used anymore - angela + msg->getBOOL(_PREHASH_Data, _PREHASH_TopPick, pick_data.top_pick); + msg->getUUID(_PREHASH_Data, _PREHASH_ParcelID, pick_data.parcel_id); + msg->getString(_PREHASH_Data, _PREHASH_Name, pick_data.name); + msg->getString(_PREHASH_Data, _PREHASH_Desc, pick_data.desc); + msg->getUUID(_PREHASH_Data, _PREHASH_SnapshotID, pick_data.snapshot_id); + + // "Location text" is actually the owner name, the original + // name that owner gave the parcel, and the location. + msg->getString(_PREHASH_Data, _PREHASH_User, pick_data.location_text); + pick_data.location_text.append(", "); + msg->getString(_PREHASH_Data, _PREHASH_OriginalName, pick_data.original_name); + if (!pick_data.original_name.empty()) + { + pick_data.location_text.append(pick_data.original_name); + pick_data.location_text.append(", "); + } + + msg->getString(_PREHASH_Data, _PREHASH_SimName, pick_data.sim_name); + pick_data.location_text.append(pick_data.sim_name); + pick_data.location_text.append(" "); + + msg->getVector3d(_PREHASH_Data, _PREHASH_PosGlobal, pick_data.pos_global); + S32 region_x = llround((F32)pick_data.pos_global.mdV[VX]) % REGION_WIDTH_UNITS; + S32 region_y = llround((F32)pick_data.pos_global.mdV[VY]) % REGION_WIDTH_UNITS; + S32 region_z = llround((F32)pick_data.pos_global.mdV[VZ]); + pick_data.location_text.append(llformat("(%d, %d, %d)", region_x, region_y, region_z)); + + msg->getS32(_PREHASH_Data, _PREHASH_SortOrder, pick_data.sort_order); + msg->getBOOL(_PREHASH_Data, _PREHASH_Enabled, pick_data.enabled); + + notifyObservers(pick_data.agent_id, &pick_data, APT_PICK_INFO); +} + +void LLAvatarPropertiesProcessor::processAvatarGroupsReply(LLMessageSystem* msg, void**) +{ + LLAvatarGroups avatar_groups; + msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, avatar_groups.agent_id ); + msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_AvatarID, avatar_groups.avatar_id ); + + S32 group_count = msg->getNumberOfBlocksFast(_PREHASH_GroupData); + for(S32 i = 0; i < group_count; ++i) + { + LLAvatarGroups::LLGroupData group_data; + + msg->getU64( _PREHASH_GroupData, _PREHASH_GroupPowers, group_data.group_powers, i ); + msg->getStringFast(_PREHASH_GroupData, _PREHASH_GroupTitle, group_data.group_title, i ); + msg->getUUIDFast( _PREHASH_GroupData, _PREHASH_GroupID, group_data.group_id, i); + msg->getStringFast(_PREHASH_GroupData, _PREHASH_GroupName, group_data.group_name, i ); + msg->getUUIDFast( _PREHASH_GroupData, _PREHASH_GroupInsigniaID, group_data.group_insignia_id, i ); + + avatar_groups.group_list.push_back(group_data); + } + + notifyObservers(avatar_groups.avatar_id,&avatar_groups,APT_GROUPS); +} + +void LLAvatarPropertiesProcessor::notifyObservers(const LLUUID& id,void* data, EAvatarProcessorType type) +{ LLAvatarPropertiesProcessor::observer_multimap_t observers = LLAvatarPropertiesProcessor::getInstance()->mObservers; - observer_multimap_t::iterator oi = observers.find(avatar_data.avatar_id); - observer_multimap_t::iterator end = observers.upper_bound(avatar_data.avatar_id); + observer_multimap_t::iterator oi = observers.lower_bound(id); + observer_multimap_t::iterator end = observers.upper_bound(id); for (; oi != end; ++oi) { - oi->second->processAvatarProperties(avatar_data); + oi->second->processProperties(data,type); + } +} + +void LLAvatarPropertiesProcessor::sendFriendRights(const LLUUID& avatar_id, S32 rights) +{ + if(!avatar_id.isNull()) + { + LLMessageSystem* msg = gMessageSystem; + + // setup message header + msg->newMessageFast(_PREHASH_GrantUserRights); + msg->nextBlockFast(_PREHASH_AgentData); + msg->addUUID(_PREHASH_AgentID, gAgent.getID()); + msg->addUUID(_PREHASH_SessionID, gAgent.getSessionID()); + + msg->nextBlockFast(_PREHASH_Rights); + msg->addUUID(_PREHASH_AgentRelated, avatar_id); + msg->addS32(_PREHASH_RelatedRights, rights); + + gAgent.sendReliableMessage(); + } +} + +void LLAvatarPropertiesProcessor::sendNotes(const LLUUID& avatar_id, const std::string notes) +{ + if(!avatar_id.isNull()) + { + LLMessageSystem* msg = gMessageSystem; + + // setup message header + msg->newMessageFast(_PREHASH_AvatarNotesUpdate); + msg->nextBlockFast(_PREHASH_AgentData); + msg->addUUID(_PREHASH_AgentID, gAgent.getID()); + msg->addUUID(_PREHASH_SessionID, gAgent.getSessionID()); + + msg->nextBlockFast(_PREHASH_Data); + msg->addUUID(_PREHASH_TargetID, avatar_id); + msg->addString(_PREHASH_Notes, notes); + + gAgent.sendReliableMessage(); } } + +void LLAvatarPropertiesProcessor::sendPickDelete( const LLUUID& pick_id ) +{ + LLMessageSystem* msg = gMessageSystem; + msg->newMessage(_PREHASH_PickDelete); + msg->nextBlock(_PREHASH_AgentData); + msg->addUUID(_PREHASH_AgentID, gAgent.getID()); + msg->addUUID(_PREHASH_SessionID, gAgent.getSessionID()); + msg->nextBlock(_PREHASH_Data); + msg->addUUID(_PREHASH_PickID, pick_id); + gAgent.sendReliableMessage(); +} + +void LLAvatarPropertiesProcessor::sendPicInfoUpdate(const void* pick_data) +{ + if (!pick_data) return; + const LLPickData *new_pick = static_cast<const LLPickData*>(pick_data); + if (!new_pick) return; + + LLMessageSystem* msg = gMessageSystem; + + msg->newMessage(_PREHASH_PickInfoUpdate); + msg->nextBlock(_PREHASH_AgentData); + msg->addUUID(_PREHASH_AgentID, gAgent.getID()); + msg->addUUID(_PREHASH_SessionID, gAgent.getSessionID()); + + msg->nextBlock(_PREHASH_Data); + msg->addUUID(_PREHASH_PickID, new_pick->pick_id); + msg->addUUID(_PREHASH_CreatorID, new_pick->creator_id); + + //legacy var need to be deleted + msg->addBOOL(_PREHASH_TopPick, FALSE); + + // fills in on simulator if null + msg->addUUID(_PREHASH_ParcelID, new_pick->parcel_id); + msg->addString(_PREHASH_Name, new_pick->name); + msg->addString(_PREHASH_Desc, new_pick->desc); + msg->addUUID(_PREHASH_SnapshotID, new_pick->snapshot_id); + msg->addVector3d(_PREHASH_PosGlobal, new_pick->pos_global); + + // Only top picks have a sort order + msg->addS32(_PREHASH_SortOrder, 0); + + msg->addBOOL(_PREHASH_Enabled, new_pick->enabled); + gAgent.sendReliableMessage(); +} + +void LLAvatarPropertiesProcessor::sendPickInfoRequest(const LLUUID& creator_id, const LLUUID& pick_id) +{ + // Must ask for a pick based on the creator id because + // the pick database is distributed to the inventory cluster. JC + std::vector<std::string> request_params; + request_params.push_back(creator_id.asString() ); + request_params.push_back(pick_id.asString() ); + send_generic_message("pickinforequest", request_params); +} diff --git a/indra/newview/llavatarpropertiesprocessor.h b/indra/newview/llavatarpropertiesprocessor.h index e8c0e253d706f08b9f8f9b3d1220889effab536d..4d50541d9a6da4ec74bcdb442f3b196f6a26af18 100644 --- a/indra/newview/llavatarpropertiesprocessor.h +++ b/indra/newview/llavatarpropertiesprocessor.h @@ -36,12 +36,30 @@ #include "lluuid.h" #include <map> +/* +*TODO Vadim: This needs some refactoring: +- Remove EAvatarProcessorType in favor of separate observers, derived from a common parent (to get rid of void*). +*/ + +/* +*TODO: mantipov: get rid of sendDataRequest and sendDataUpdate methods. Use exact methods instead of. +*/ + class LLMessageSystem; +enum EAvatarProcessorType +{ + APT_PROPERTIES, + APT_NOTES, + APT_GROUPS, + APT_PICKS, + APT_PICK_INFO +}; + struct LLAvatarData { LLUUID agent_id; - LLUUID avatar_id; + LLUUID avatar_id; //target id LLUUID image_id; LLUUID fl_image_id; LLUUID partner_id; @@ -49,32 +67,140 @@ struct LLAvatarData std::string fl_about_text; std::string born_on; std::string profile_url; - U8 caption_index; + U8 caption_index; std::string caption_text; - U32 flags; + U32 flags; + BOOL allow_publish; +}; + +struct LLAvatarPicks +{ + LLUUID agent_id; + LLUUID target_id; //target id + + typedef std::pair<LLUUID,std::string> pick_data_t; + typedef std::list< pick_data_t> picks_list_t; + picks_list_t picks_list; +}; + +struct LLPickData +{ + LLUUID agent_id; + LLUUID pick_id; + LLUUID creator_id; + BOOL top_pick; + LLUUID parcel_id; + std::string name; + std::string desc; + LLUUID snapshot_id; + LLVector3d pos_global; + S32 sort_order; + BOOL enabled; + + //used only in read requests + std::string location_text; + std::string original_name; + std::string sim_name; + + //used only in write (update) requests + LLUUID session_id; + +}; + +struct LLAvatarNotes +{ + LLUUID agent_id; + LLUUID target_id; //target id + std::string notes; +}; + +struct LLAvatarGroups +{ + LLUUID agent_id; + LLUUID avatar_id; //target id + BOOL list_in_profile; + + struct LLGroupData; + typedef std::list<LLGroupData> group_list_t; + + group_list_t group_list; + + struct LLGroupData + { + U64 group_powers; + BOOL accept_notices; + std::string group_title; + LLUUID group_id; + std::string group_name; + LLUUID group_insignia_id; + }; }; class LLAvatarPropertiesObserver { public: virtual ~LLAvatarPropertiesObserver() {} - virtual void processAvatarProperties(const LLAvatarData& avatar_data) = 0; + virtual void processProperties(void* data, EAvatarProcessorType type) = 0; }; -class LLAvatarPropertiesProcessor : public LLSingleton<LLAvatarPropertiesProcessor> +class LLAvatarPropertiesProcessor + : public LLSingleton<LLAvatarPropertiesProcessor> { - public: - virtual ~LLAvatarPropertiesProcessor() {} - void addObserver(const LLUUID& avatar_id, LLAvatarPropertiesObserver* observer); - void removeObserver(const LLUUID& avatar_id, LLAvatarPropertiesObserver* observer); + + LLAvatarPropertiesProcessor(); + virtual ~LLAvatarPropertiesProcessor() + {} + + void addObserver(const LLUUID& avatar_id, LLAvatarPropertiesObserver* observer); + + void removeObserver(const LLUUID& avatar_id, LLAvatarPropertiesObserver* observer); + + void sendDataRequest(const LLUUID& avatar_id, EAvatarProcessorType type, const void * data = NULL); + + void sendDataUpdate(const void* data, EAvatarProcessorType type); + + void sendFriendRights(const LLUUID& avatar_id, S32 rights); + + void sendNotes(const LLUUID& avatar_id, const std::string notes); + + void sendPickDelete(const LLUUID& pick_id); + + static void processAvatarPropertiesReply(LLMessageSystem* msg, void**); + + static void processAvatarInterestsReply(LLMessageSystem* msg, void**); + + static void processAvatarClassifiedReply(LLMessageSystem* msg, void**); + + static void processAvatarGroupsReply(LLMessageSystem* msg, void**); + + static void processAvatarNotesReply(LLMessageSystem* msg, void**); + + static void processAvatarPicksReply(LLMessageSystem* msg, void**); + + static void processPickInfoReply(LLMessageSystem* msg, void**); +protected: void sendAvatarPropertiesRequest(const LLUUID& avatar_id); - static void processAvatarPropertiesReply(LLMessageSystem *msg, void **); -private: - typedef std::multimap<LLUUID, LLAvatarPropertiesObserver*> observer_multimap_t; - observer_multimap_t mObservers; + void sendGenericRequest(const LLUUID& avatar_id, const std::string method); + + void sendAvatarPropertiesUpdate(const void* data); + + void sendPickInfoRequest(const LLUUID& creator_id, const LLUUID& pick_id); + + void sendPicInfoUpdate(const void * pick_data); + + static void notifyObservers(const LLUUID& id,void* data, EAvatarProcessorType type); + + typedef void* (*processor_method_t)(LLMessageSystem*); + static processor_method_t getProcessor(EAvatarProcessorType type); + +protected: + + typedef std::multimap<LLUUID, LLAvatarPropertiesObserver*> observer_multimap_t; + + observer_multimap_t mObservers; }; #endif // LL_LLAVATARPROPERTIESPROCESSOR_H diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp new file mode 100644 index 0000000000000000000000000000000000000000..616cbb1fdb90addf2891c67bf444858cfda3a54f --- /dev/null +++ b/indra/newview/llbottomtray.cpp @@ -0,0 +1,346 @@ +/** +* @file llbottomtray.cpp +* @brief LLBottomTray class implementation +* +* $LicenseInfo:firstyear=2009&license=viewergpl$ +* +* Copyright (c) 2009, Linden Research, Inc. +* +* Second Life Viewer Source Code +* The source code in this file ("Source Code") is provided by Linden Lab +* to you under the terms of the GNU General Public License, version 2.0 +* ("GPL"), unless you have obtained a separate licensing agreement +* ("Other License"), formally executed by you and Linden Lab. Terms of +* the GPL can be found in doc/GPL-license.txt in this distribution, or +* online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 +* +* There are special exceptions to the terms and conditions of the GPL as +* it is applied to this Source Code. View the full text of the exception +* in the file doc/FLOSS-exception.txt in this software distribution, or +* online at +* http://secondlifegrid.net/programs/open_source/licensing/flossexception +* +* By copying, modifying or distributing this software, you acknowledge +* that you have read and understood your obligations described above, +* and agree to abide by those obligations. +* +* ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO +* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, +* COMPLETENESS OR PERFORMANCE. +* $/LicenseInfo$ +*/ + +#include "llviewerprecompiledheaders.h" // must be first include +#include "llbottomtray.h" +#include "llagent.h" +#include "llchiclet.h" +#include "lllayoutstack.h" +#include "llkeyboard.h" +#include "llgesturemgr.h" +#include "llanimationstates.h" + +//FIXME: temporary, for send_chat_from_viewer() proto +#include "llchatbar.h" + +LLBottomTray::LLBottomTray() + :mLastSpecialChatChannel(0) +{ + LLUICtrlFactory::getInstance()->buildPanel(this,"panel_bottomtray.xml"); + + mChicletPanel = getChild<LLChicletPanel>("chiclet_list",TRUE,FALSE); + + LLLineEditor* chat_box = getChatBox(); + chat_box->setCommitCallback(boost::bind(&LLBottomTray::onChatBoxCommit, this)); + chat_box->setKeystrokeCallback(&onChatBoxKeystroke, this); + chat_box->setFocusLostCallback(&onChatBoxFocusLost, this); + + LLIMMgr::getInstance()->addSessionObserver(this); +} + +LLBottomTray::~LLBottomTray() +{ + if (!LLSingleton<LLIMMgr>::destroyed()) + { + LLIMMgr::getInstance()->removeSessionObserver(this); + } +} + +LLLineEditor* LLBottomTray::getChatBox() +{ + return getChild<LLLineEditor>("chat_box",TRUE,FALSE); +} + +void LLBottomTray::onChatBoxCommit() +{ + if (getChatBox()->getText().length() > 0) + { + sendChat(CHAT_TYPE_NORMAL); + + LLLineEditor* chat_box = getChatBox(); + + if (chat_box) + { + chat_box->setText(LLStringExplicit("")); + } + + gAgent.stopTyping(); + } +} + +void LLBottomTray::sendChatFromViewer(const std::string &utf8text, EChatType type, BOOL animate) +{ + sendChatFromViewer(utf8str_to_wstring(utf8text), type, animate); +} + +void LLBottomTray::sendChatFromViewer(const LLWString &wtext, EChatType type, BOOL animate) +{ + // Look for "/20 foo" channel chats. + S32 channel = 0; + LLWString out_text = stripChannelNumber(wtext, &channel); + std::string utf8_out_text = wstring_to_utf8str(out_text); + std::string utf8_text = wstring_to_utf8str(wtext); + + utf8_text = utf8str_trim(utf8_text); + if (!utf8_text.empty()) + { + utf8_text = utf8str_truncate(utf8_text, MAX_STRING - 1); + } + + // Don't animate for chats people can't hear (chat to scripts) + if (animate && (channel == 0)) + { + if (type == CHAT_TYPE_WHISPER) + { + lldebugs << "You whisper " << utf8_text << llendl; + gAgent.sendAnimationRequest(ANIM_AGENT_WHISPER, ANIM_REQUEST_START); + } + else if (type == CHAT_TYPE_NORMAL) + { + lldebugs << "You say " << utf8_text << llendl; + gAgent.sendAnimationRequest(ANIM_AGENT_TALK, ANIM_REQUEST_START); + } + else if (type == CHAT_TYPE_SHOUT) + { + lldebugs << "You shout " << utf8_text << llendl; + gAgent.sendAnimationRequest(ANIM_AGENT_SHOUT, ANIM_REQUEST_START); + } + else + { + llinfos << "send_chat_from_viewer() - invalid volume" << llendl; + return; + } + } + else + { + if (type != CHAT_TYPE_START && type != CHAT_TYPE_STOP) + { + lldebugs << "Channel chat: " << utf8_text << llendl; + } + } + + send_chat_from_viewer(utf8_out_text, type, channel); +} + +// static +void LLBottomTray::onChatBoxKeystroke(LLLineEditor* caller, void* userdata) +{ + LLBottomTray* self = (LLBottomTray *)userdata; + + LLWString raw_text; + if (self->getChatBox()) raw_text = self->getChatBox()->getWText(); + + // Can't trim the end, because that will cause autocompletion + // to eat trailing spaces that might be part of a gesture. + LLWStringUtil::trimHead(raw_text); + + S32 length = raw_text.length(); + + if( (length > 0) && (raw_text[0] != '/') ) // forward slash is used for escape (eg. emote) sequences + { + gAgent.startTyping(); + } + else + { + gAgent.stopTyping(); + } + + /* Doesn't work -- can't tell the difference between a backspace + that killed the selection vs. backspace at the end of line. + if (length > 1 + && text[0] == '/' + && key == KEY_BACKSPACE) + { + // the selection will already be deleted, but we need to trim + // off the character before + std::string new_text = raw_text.substr(0, length-1); + self->mInputEditor->setText( new_text ); + self->mInputEditor->setCursorToEnd(); + length = length - 1; + } + */ + + KEY key = gKeyboard->currentKey(); + + // Ignore "special" keys, like backspace, arrows, etc. + if (length > 1 + && raw_text[0] == '/' + && key < KEY_SPECIAL) + { + // we're starting a gesture, attempt to autocomplete + + std::string utf8_trigger = wstring_to_utf8str(raw_text); + std::string utf8_out_str(utf8_trigger); + + if (gGestureManager.matchPrefix(utf8_trigger, &utf8_out_str)) + { + if (self->getChatBox()) + { + std::string rest_of_match = utf8_out_str.substr(utf8_trigger.size()); + self->getChatBox()->setText(utf8_trigger + rest_of_match); // keep original capitalization for user-entered part + S32 outlength = self->getChatBox()->getLength(); // in characters + + // Select to end of line, starting from the character + // after the last one the user typed. + self->getChatBox()->setSelection(length, outlength); + } + } + + //llinfos << "GESTUREDEBUG " << trigger + // << " len " << length + // << " outlen " << out_str.getLength() + // << llendl; + } +} + +// static +void LLBottomTray::onChatBoxFocusLost(LLFocusableElement* caller, void* userdata) +{ + // stop typing animation + gAgent.stopTyping(); +} + + +//virtual +void LLBottomTray::sessionAdded(const LLUUID& session_id, const std::string& name, const LLUUID& other_participant_id) +{ + if(getChicletPanel()) + { + LLSD sid(session_id); + + if(getChicletPanel()->findIMChiclet(&sid)) + { + + } + else + { + LLIMChiclet* chicklet = (LLIMChiclet *)getChicletPanel()->createChiclet(&sid); + chicklet->setIMSessionName(name); + chicklet->setOtherParticipantId(other_participant_id); + + getChicletPanel()->arrange(); + } + } +} + +//virtual +void LLBottomTray::sessionRemoved(const LLUUID& session_id) +{ + if(getChicletPanel()) + { + LLSD sid(session_id); + getChicletPanel()->removeIMChiclet(&sid); + getChicletPanel()->arrange(); + } +} + +void LLBottomTray::sendChat( EChatType type ) +{ + LLLineEditor* chat_box = getChatBox(); + + if (chat_box) + { + LLWString text = chat_box->getConvertedText(); + if (!text.empty()) + { + // store sent line in history, duplicates will get filtered + chat_box->updateHistory(); + // Check if this is destined for another channel + S32 channel = 0; + stripChannelNumber(text, &channel); + + std::string utf8text = wstring_to_utf8str(text); + // Try to trigger a gesture, if not chat to a script. + std::string utf8_revised_text; + if (0 == channel) + { + // discard returned "found" boolean + gGestureManager.triggerAndReviseString(utf8text, &utf8_revised_text); + } + else + { + utf8_revised_text = utf8text; + } + + utf8_revised_text = utf8str_trim(utf8_revised_text); + + if (!utf8_revised_text.empty()) + { + // Chat with animation + sendChatFromViewer(utf8_revised_text, type, TRUE); + } + } + } + + gAgent.stopTyping(); +} + +// If input of the form "/20foo" or "/20 foo", returns "foo" and channel 20. +// Otherwise returns input and channel 0. +LLWString LLBottomTray::stripChannelNumber(const LLWString &mesg, S32* channel) +{ + if (mesg[0] == '/' + && mesg[1] == '/') + { + // This is a "repeat channel send" + *channel = mLastSpecialChatChannel; + return mesg.substr(2, mesg.length() - 2); + } + else if (mesg[0] == '/' + && mesg[1] + && LLStringOps::isDigit(mesg[1])) + { + // This a special "/20" speak on a channel + S32 pos = 0; + + // Copy the channel number into a string + LLWString channel_string; + llwchar c; + do + { + c = mesg[pos+1]; + channel_string.push_back(c); + pos++; + } + while(c && pos < 64 && LLStringOps::isDigit(c)); + + // Move the pointer forward to the first non-whitespace char + // Check isspace before looping, so we can handle "/33foo" + // as well as "/33 foo" + while(c && iswspace(c)) + { + c = mesg[pos+1]; + pos++; + } + + mLastSpecialChatChannel = strtol(wstring_to_utf8str(channel_string).c_str(), NULL, 10); + *channel = mLastSpecialChatChannel; + return mesg.substr(pos, mesg.length() - pos); + } + else + { + // This is normal chat. + *channel = 0; + return mesg; + } +} + diff --git a/indra/newview/llbottomtray.h b/indra/newview/llbottomtray.h new file mode 100644 index 0000000000000000000000000000000000000000..780e1b270de4adb5d34c50b8dde51fda5d9db530 --- /dev/null +++ b/indra/newview/llbottomtray.h @@ -0,0 +1,91 @@ +/** +* @file llbottomtray.h +* @brief LLBottomTray class header file +* +* $LicenseInfo:firstyear=2009&license=viewergpl$ +* +* Copyright (c) 2009, Linden Research, Inc. +* +* Second Life Viewer Source Code +* The source code in this file ("Source Code") is provided by Linden Lab +* to you under the terms of the GNU General Public License, version 2.0 +* ("GPL"), unless you have obtained a separate licensing agreement +* ("Other License"), formally executed by you and Linden Lab. Terms of +* the GPL can be found in doc/GPL-license.txt in this distribution, or +* online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 +* +* There are special exceptions to the terms and conditions of the GPL as +* it is applied to this Source Code. View the full text of the exception +* in the file doc/FLOSS-exception.txt in this software distribution, or +* online at +* http://secondlifegrid.net/programs/open_source/licensing/flossexception +* +* By copying, modifying or distributing this software, you acknowledge +* that you have read and understood your obligations described above, +* and agree to abide by those obligations. +* +* ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO +* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, +* COMPLETENESS OR PERFORMANCE. +* $/LicenseInfo$ +*/ + +#ifndef LL_LLBOTTOMPANEL_H +#define LL_LLBOTTOMPANEL_H + +#include "llpanel.h" +#include "llflyoutbutton.h" +#include "llimview.h" +#include "llchat.h" + +class LLChicletPanel; +class LLNotificationChiclet; +class LLNotificationChiclet; +class LLTalkButton; + +class LLBottomTray + : public LLSingleton<LLBottomTray> + , public LLPanel + , public LLIMSessionObserver +{ +public: + LLBottomTray(); + + ~LLBottomTray(); + + LLLineEditor* getChatBox(); + + LLChicletPanel* getChicletPanel() {return mChicletPanel;}; + + LLNotificationChiclet* getIMWell() {return mIMWell;}; + + LLNotificationChiclet* getNotificationWell(){return mNotificationWell;}; + + void onChatBoxCommit(); + void sendChatFromViewer(const std::string &utf8text, EChatType type, BOOL animate); + void sendChatFromViewer(const LLWString &wtext, EChatType type, BOOL animate); + static void onChatBoxKeystroke(LLLineEditor* caller, void* userdata); + static void onChatBoxFocusLost(LLFocusableElement* caller, void* userdata); + + // LLIMSessionObserver observe triggers + virtual void sessionAdded(const LLUUID& session_id, const std::string& name, const LLUUID& other_participant_id); + virtual void sessionRemoved(const LLUUID& session_id); + +protected: + + void sendChat( EChatType type ); + LLWString stripChannelNumber(const LLWString &mesg, S32* channel); + + // Which non-zero channel did we last chat on? + S32 mLastSpecialChatChannel; + + LLChicletPanel* mChicletPanel; + LLNotificationChiclet* mIMWell; + LLNotificationChiclet* mNotificationWell; + LLTalkButton* mTalkBtn; +}; + +extern LLBottomTray* gBottomTray; +extern S32 BOTTOM_TRAY_HEIGHT; + +#endif // LL_LLBOTTOMPANEL_H diff --git a/indra/newview/llchatbar.cpp b/indra/newview/llchatbar.cpp index 4e2eebbab1d8e08e6680ed2410fe524c1f981d3f..5e97157694043aedf9222a7a89b81765a3719ef7 100644 --- a/indra/newview/llchatbar.cpp +++ b/indra/newview/llchatbar.cpp @@ -67,7 +67,7 @@ #include "llui.h" #include "llviewermenu.h" #include "lluictrlfactory.h" - +#include "llbottomtray.h" // // Globals @@ -76,10 +76,6 @@ const F32 AGENT_TYPING_TIMEOUT = 5.f; // seconds LLChatBar *gChatBar = NULL; -// legacy calllback glue -void send_chat_from_viewer(const std::string& utf8_out_text, EChatType type, S32 channel); - - class LLChatBarGestureObserver : public LLGestureManagerObserver { public: @@ -418,17 +414,25 @@ void LLChatBar::sendChat( EChatType type ) // static void LLChatBar::startChat(const char* line) { - gChatBar->setVisible(TRUE); - gChatBar->setKeyboardFocus(TRUE); - gSavedSettings.setBOOL("ChatVisible", TRUE); - - if (line && gChatBar->mInputEditor) + //TODO* remove DUMMY chat + if(LLBottomTray::getInstance()->getChatBox()) { - std::string line_string(line); - gChatBar->mInputEditor->setText(line_string); + LLBottomTray::getInstance()->getChatBox()->setFocus(TRUE); } - // always move cursor to end so users don't obliterate chat when accidentally hitting WASD - gChatBar->mInputEditor->setCursorToEnd(); + + // *TODO Vadim: Why was this code commented out? + +// gChatBar->setVisible(TRUE); +// gChatBar->setKeyboardFocus(TRUE); +// gSavedSettings.setBOOL("ChatVisible", TRUE); +// +// if (line && gChatBar->mInputEditor) +// { +// std::string line_string(line); +// gChatBar->mInputEditor->setText(line_string); +// } +// // always move cursor to end so users don't obliterate chat when accidentally hitting WASD +// gChatBar->mInputEditor->setCursorToEnd(); } @@ -436,21 +440,29 @@ void LLChatBar::startChat(const char* line) // static void LLChatBar::stopChat() { - // In simple UI mode, we never release focus from the chat bar - gChatBar->setKeyboardFocus(FALSE); - - // If we typed a movement key and pressed return during the - // same frame, the keyboard handlers will see the key as having - // gone down this frame and try to move the avatar. - gKeyboard->resetKeys(); - gKeyboard->resetMaskKeys(); - - // stop typing animation - gAgent.stopTyping(); + //TODO* remove DUMMY chat + if(LLBottomTray::getInstance()->getChatBox()) + { + LLBottomTray::getInstance()->getChatBox()->setFocus(FALSE); + } - // hide chat bar so it doesn't grab focus back - gChatBar->setVisible(FALSE); - gSavedSettings.setBOOL("ChatVisible", FALSE); + // *TODO Vadim: Why was this code commented out? + +// // In simple UI mode, we never release focus from the chat bar +// gChatBar->setKeyboardFocus(FALSE); +// +// // If we typed a movement key and pressed return during the +// // same frame, the keyboard handlers will see the key as having +// // gone down this frame and try to move the avatar. +// gKeyboard->resetKeys(); +// gKeyboard->resetMaskKeys(); +// +// // stop typing animation +// gAgent.stopTyping(); +// +// // hide chat bar so it doesn't grab focus back +// gChatBar->setVisible(FALSE); +// gSavedSettings.setBOOL("ChatVisible", FALSE); } // static diff --git a/indra/newview/llchatbar.h b/indra/newview/llchatbar.h index 93421da34fe4da99552ce191df8d8f0ff8d8d028..e0e324af6b95873e8aaa3ccfadfeefde5a6691d5 100644 --- a/indra/newview/llchatbar.h +++ b/indra/newview/llchatbar.h @@ -45,6 +45,9 @@ class LLFrameTimer; class LLChatBarGestureObserver; class LLComboBox; +// legacy calllback glue +void send_chat_from_viewer(const std::string& utf8_out_text, EChatType type, S32 channel); + class LLChatBar : public LLPanel { diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp new file mode 100644 index 0000000000000000000000000000000000000000..d8e844d2917b72df5169fd38a36c800b1b5fcb51 --- /dev/null +++ b/indra/newview/llchiclet.cpp @@ -0,0 +1,725 @@ +/** +* @file llchiclet.cpp +* @brief LLChiclet class implementation +* +* $LicenseInfo:firstyear=2002&license=viewergpl$ +* +* Copyright (c) 2002-2009, Linden Research, Inc. +* +* Second Life Viewer Source Code +* The source code in this file ("Source Code") is provided by Linden Lab +* to you under the terms of the GNU General Public License, version 2.0 +* ("GPL"), unless you have obtained a separate licensing agreement +* ("Other License"), formally executed by you and Linden Lab. Terms of +* the GPL can be found in doc/GPL-license.txt in this distribution, or +* online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 +* +* There are special exceptions to the terms and conditions of the GPL as +* it is applied to this Source Code. View the full text of the exception +* in the file doc/FLOSS-exception.txt in this software distribution, or +* online at +* http://secondlifegrid.net/programs/open_source/licensing/flossexception +* +* By copying, modifying or distributing this software, you acknowledge +* that you have read and understood your obligations described above, +* and agree to abide by those obligations. +* +* ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO +* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, +* COMPLETENESS OR PERFORMANCE. +* $/LicenseInfo$ +*/ + +#include "llviewerprecompiledheaders.h" // must be first include +#include "llchiclet.h" +#include "llfloaterreg.h" +#include "llvoiceclient.h" +#include "llagent.h" +#include "lltextbox.h" +#include "lliconctrl.h" +#include "llvoicecontrolpanel.h" +#include "lloutputmonitorctrl.h" +#include "llimview.h" +#include "llbottomtray.h" + +static const S32 CHICLET_HEIGHT = 25; +static const S32 CHICLET_SPACING = 0; +static const S32 CHICLET_PADDING = 3; +static const S32 AVATAR_WIDTH = 25; +static const S32 SPEAKER_WIDTH = 20; +static const S32 COUNTER_WIDTH = 20; +static const S32 SCROLL_BUTTON_WIDTH = 19; +static const S32 SCROLL_BUTTON_HEIGHT = 20; +static const S32 NOTIFICATION_TEXT_TOP_PAD = 5; + +static LLDefaultWidgetRegistry::Register<LLChicletPanel> t1("chiclet_panel"); +static LLDefaultWidgetRegistry::Register<LLTalkButton> t2("chiclet_talk"); +static LLDefaultWidgetRegistry::Register<LLNotificationChiclet> t3("chiclet_notification"); +static LLDefaultWidgetRegistry::Register<LLChicletPanel> t4("chiclet_panel"); + +////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////// + +LLNotificationChiclet::Params::Params() +: image_unselected("image_unselected") +, image_selected("image_selected") +, image_overlay("image_overlay") +{ +} + +LLNotificationChiclet::LLNotificationChiclet(const Params& p) +: LLChiclet(p) +, mButton(NULL) +, mCounterText(NULL) +{ + LLRect rc(p.rect); + + LLButton::Params button_params; + button_params.name("btn"); + button_params.label(LLStringUtil::null); + button_params.rect(LLRect(0,rc.getHeight(),rc.getWidth(),0)); + button_params.image_overlay(p.image_overlay); + button_params.image_unselected(p.image_unselected); + button_params.image_selected(p.image_selected); + button_params.tab_stop(false); + mButton = LLUICtrlFactory::create<LLButton>(button_params); + addChild(mButton); + + LLTextBox::Params textbox_params; + textbox_params.name("txt"); + textbox_params.rect(LLRect(p.label_left,rc.getHeight(), + rc.getWidth()-p.label_left,0)); + textbox_params.mouse_opaque(false); + textbox_params.v_pad(NOTIFICATION_TEXT_TOP_PAD); + textbox_params.font.style("SansSerif"); + textbox_params.font_halign(LLFontGL::HCENTER); + mCounterText = LLUICtrlFactory::create<LLTextBox>(textbox_params); + addChild(mCounterText); + mCounterText->setColor(LLColor4::white); + mCounterText->setText(LLStringUtil::null); +} + +LLNotificationChiclet::~LLNotificationChiclet() +{ + +} + +LLChiclet* LLNotificationChiclet::create(const Params& p) +{ + LLChiclet* chiclet = new LLNotificationChiclet(p); + return chiclet; +} + +void LLNotificationChiclet::setCounter(S32 counter) +{ + std::stringstream stream; + mCounter = counter; + stream << mCounter; + mCounterText->setText(stream.str()); +} + +boost::signals2::connection LLNotificationChiclet::setClickCallback( + const commit_callback_t& cb) +{ + return mButton->setClickedCallback(cb); +} + +////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////// + +LLChiclet::LLChiclet(const Params& p) +: LLUICtrl(p) +, mCounter(0) +, mShowCounter(true) +{ + +} + +LLChiclet::~LLChiclet() +{ + +} + +boost::signals2::connection LLChiclet::setLeftButtonClickCallback( + const commit_callback_t& cb) +{ + return mCommitSignal.connect(cb); +} + +BOOL LLChiclet::handleMouseDown(S32 x, S32 y, MASK mask) +{ + onCommit(); + childrenHandleMouseDown(x,y,mask); + return TRUE; +} + +////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////// + +LLIMChiclet::LLIMChiclet(const LLChiclet::Params& p) +: LLChiclet(p) +, mAvatar(NULL) +, mCounterText(NULL) +, mSpeaker(NULL) +, mIMSessionId() +, mShowSpeaker(false) +, mSpeakerStatus(SPEAKER_IDLE) +{ + LLAvatarIconCtrl::Params avatar_params; + avatar_params.control_name("avatar"); + avatar_params.draw_tooltip = FALSE; + mAvatar = LLUICtrlFactory::create<LLAvatarIconCtrl>(avatar_params); + + addChild(mAvatar); + + LLTextBox::Params unread_params; + unread_params.font.style("SansSerif"); + unread_params.font_halign(LLFontGL::HCENTER); + unread_params.v_pad(5); + mCounterText = LLUICtrlFactory::create<LLTextBox>(unread_params); + addChild(mCounterText); + mCounterText->setColor(LLColor4::white); + setCounter(getCounter()); + + LLIconCtrl::Params speaker_params; + speaker_params.image( LLUI::getUIImage("icn_voice_ptt-on-lvl2.tga") ); + mSpeaker = LLUICtrlFactory::create<LLIconCtrl>(speaker_params); + addChild(mSpeaker); + mSpeaker->setVisible(getShowSpeaker()); + + S32 left = 0; + mAvatar->setRect(LLRect(left,CHICLET_HEIGHT,AVATAR_WIDTH,0)); + left += AVATAR_WIDTH + CHICLET_SPACING; + mCounterText->setRect(LLRect(left,CHICLET_HEIGHT,left + COUNTER_WIDTH,0)); + left += COUNTER_WIDTH + CHICLET_SPACING; + mSpeaker->setRect(LLRect(left,CHICLET_HEIGHT,left + SPEAKER_WIDTH,0)); +} + +LLIMChiclet::~LLIMChiclet() +{ + +} + +LLChiclet* LLIMChiclet::create(LLSD* imSessionId /* = NULL */) +{ + LLIMChiclet* chiclet = new LLIMChiclet(LLChiclet::Params()); + chiclet->setIMSessionId(imSessionId); + return chiclet; +} + +void LLIMChiclet::setCounter(S32 counter) +{ + mCounter = counter; + std::stringstream stream; + stream << mCounter; + mCounterText->setText(stream.str()); + + LLRect rc = mCounterText->getRect(); + rc.mRight = rc.mLeft + calcCounterWidth(); + mCounterText->setRect(rc); +} + +LLRect LLIMChiclet::getRequiredRect() +{ + LLRect rect(0,CHICLET_HEIGHT,AVATAR_WIDTH,0); + if(getShowCounter()) + { + rect.mRight += CHICLET_SPACING + calcCounterWidth(); + } + if(getShowSpeaker()) + { + rect.mRight += CHICLET_SPACING + SPEAKER_WIDTH; + } + return rect; +} + +void LLIMChiclet::setShowCounter(bool show) +{ + LLChiclet::setShowCounter(show); + mCounterText->setVisible(getShowCounter()); +} + +void LLIMChiclet::setIMSessionName(const std::string& name) +{ + setToolTip(name); +} + +void LLIMChiclet::setOtherParticipantId(const LLUUID& other_participant_id) +{ + if (mAvatar) + { + mAvatar->setValue(other_participant_id); + } +} + +void LLIMChiclet::setShowSpeaker(bool show) +{ + mShowSpeaker = show; + mSpeaker->setVisible(getShowSpeaker()); +} + +void LLIMChiclet::draw() +{ + LLUICtrl::draw(); + gl_rect_2d(1, getRect().getHeight(), getRect().getWidth(), 1, LLColor4(0.0f,0.0f,0.0f,1.f), FALSE); +} + +S32 LLIMChiclet::calcCounterWidth() +{ + S32 font_width = mCounterText->getFont()->getWidth("0"); + S32 text_size = mCounterText->getText().size(); + + return llmax(font_width * text_size, COUNTER_WIDTH); +} + +////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////// + +LLChicletPanel::LLChicletPanel(const Params&p) +: LLPanel(p) +, mLeftScroll(NULL) +, mRightScroll(NULL) +, mFirstToShow(0) +{ + LLButton::Params params; + + params.name("scroll_left"); + params.label(LLStringUtil::null); + params.tab_stop(false); + params.image_selected(LLUI::getUIImage("scroll_left.tga")); + params.image_unselected(LLUI::getUIImage("scroll_left.tga")); + params.image_hover_selected(LLUI::getUIImage("scroll_left.tga")); + mLeftScroll = LLUICtrlFactory::create<LLButton>(params); + addChild(mLeftScroll); + mLeftScroll->setClickedCallback(boost::bind(&LLChicletPanel::onLeftScrollClick,this)); + mLeftScroll->setEnabled(false); + + params.name("scroll_right"); + params.image_selected(LLUI::getUIImage("scroll_right.tga")); + params.image_unselected(LLUI::getUIImage("scroll_right.tga")); + params.image_hover_selected(LLUI::getUIImage("scroll_right.tga")); + mRightScroll = LLUICtrlFactory::create<LLButton>(params); + addChild(mRightScroll); + mRightScroll->setClickedCallback(boost::bind(&LLChicletPanel::onRightScrollClick,this)); + mRightScroll->setEnabled(false); + + LLPanel::Params panel_params; + mScrollArea = LLUICtrlFactory::create<LLPanel>(panel_params,this); + addChild(mScrollArea); +} + +LLChicletPanel::~LLChicletPanel() +{ + +} + +LLChicletPanel* LLChicletPanel::create() +{ + LLChicletPanel* panel = new LLChicletPanel(LLChicletPanel::Params()); + return panel; +} + +BOOL LLChicletPanel::postBuild() +{ + LLPanel::postBuild(); + + return TRUE; +} + +LLChiclet* LLChicletPanel::createChiclet(LLSD* imSessionId, S32 pos) +{ + LLChiclet* chiclet = LLIMChiclet::create(imSessionId); + if(!chiclet) + { + assert(false); + return NULL; + } + + if(!addChiclet(chiclet, pos)) + { + assert(false); + return NULL; + } + + return chiclet; +} + +bool LLChicletPanel::addChiclet(LLChiclet* chiclet, S32 pos) +{ + if(mScrollArea->addChild(chiclet)) + { + mChicletList.insert(mChicletList.begin() + pos, chiclet); + + chiclet->setLeftButtonClickCallback(boost::bind(&LLChicletPanel::onChicletClick, this, _1, _2)); + + return true; + } + + return false; +} + +void LLChicletPanel::onChicletClick(LLUICtrl*ctrl,const LLSD¶m) +{ + LLIMChiclet* chiclet = dynamic_cast<LLIMChiclet*>(ctrl); + if (chiclet) + { + LLFloaterReg::showInstance("communicate", chiclet->getIMSessionId().asUUID()); + } + + mCommitSignal(ctrl,param); +} + +LLChiclet* LLChicletPanel::findIMChiclet(LLSD* imSessionId) +{ + chiclet_list_t::const_iterator it = mChicletList.begin(); + for( ; mChicletList.end() != it; ++it) + { + LLIMChiclet* chiclet = dynamic_cast<LLIMChiclet*>(*it); + if(!chiclet) + { + continue; + } + + if(chiclet->getIMSessionId().asUUID() == imSessionId->asUUID()) + { + return chiclet; + } + } + return NULL; +} + +LLChiclet* LLChicletPanel::getChiclet(S32 pos) +{ + return mChicletList.at(pos); +} + +void LLChicletPanel::removeChiclet(chiclet_list_t::iterator it) +{ + mScrollArea->removeChild(*it); + delete *it; + mChicletList.erase(it); + mLeftScroll->setEnabled(canScrollLeft()); + mRightScroll->setEnabled(canScrollRight()); +} + +void LLChicletPanel::removeChiclet(S32 pos) +{ + if(0 > pos || getChicletCount() >= pos) + { + return; + } + removeChiclet(mChicletList.begin() + pos); +} + +void LLChicletPanel::removeChiclet(LLChiclet*chiclet) +{ + chiclet_list_t::iterator it = mChicletList.begin(); + for( ; mChicletList.end() != it; ++it) + { + LLChiclet* temp = *it; + if(temp == chiclet) + { + removeChiclet(it); + return; + } + } +} + +void LLChicletPanel::removeIMChiclet(LLSD* imSessionId) +{ + chiclet_list_t::iterator it = mChicletList.begin(); + for( ; mChicletList.end() != it; ++it) + { + LLIMChiclet* chiclet = dynamic_cast<LLIMChiclet*>(*it); + if(!chiclet) + { + continue; + } + + if(chiclet->getIMSessionId().asUUID() == imSessionId->asUUID()) + { + removeChiclet(it); + return; + } + } +} + +void LLChicletPanel::removeAll() +{ + mScrollArea->deleteAllChildren(); + + mChicletList.erase(mChicletList.begin(), mChicletList.end()); + mLeftScroll->setEnabled(false); + mRightScroll->setEnabled(false); +} + +void LLChicletPanel::reshape(S32 width, S32 height, BOOL called_from_parent ) +{ + LLPanel::reshape(width,height,called_from_parent); + + mLeftScroll->setRect(LLRect(0,CHICLET_HEIGHT,SCROLL_BUTTON_WIDTH, + CHICLET_HEIGHT - SCROLL_BUTTON_HEIGHT)); + mRightScroll->setRect(LLRect(getRect().getWidth()-SCROLL_BUTTON_WIDTH,CHICLET_HEIGHT, + getRect().getWidth(),CHICLET_HEIGHT - SCROLL_BUTTON_HEIGHT)); + + mScrollArea->setRect(LLRect(SCROLL_BUTTON_WIDTH + 5,CHICLET_HEIGHT + 1, + getRect().getWidth() - SCROLL_BUTTON_WIDTH - 5, 0)); + + + arrange(); +} + +void LLChicletPanel::arrange() +{ + S32 left = 0; + S32 size = getChicletCount(); + + for( int n = mFirstToShow; n < size; ++n) + { + LLChiclet* chiclet = getChiclet(n); + S32 chiclet_width = chiclet->getRequiredRect().getWidth(); + LLRect rc(left, CHICLET_HEIGHT, left + chiclet_width, 0); + + chiclet->setRect(rc); + chiclet->reshape(rc.getWidth(),rc.getHeight()); + + left += chiclet_width + CHICLET_PADDING; + } + + mLeftScroll->setEnabled(canScrollLeft()); + mRightScroll->setEnabled(canScrollRight()); +} + +void LLChicletPanel::draw() +{ + //gl_rect_2d(0,getRect().getHeight(),getRect().getWidth(),0,LLColor4(0.f,1.f,1.f,1.f),TRUE); + + child_list_const_iter_t it = getChildList()->begin(); + for( ; getChildList()->end() != it; ++it) + { + LLView* child = *it; + if(child == dynamic_cast<LLView*>(mScrollArea)) + { + LLLocalClipRect clip(mScrollArea->getRect()); + drawChild(mScrollArea); + } + else + { + drawChild(child); + } + } +} + +bool LLChicletPanel::canScrollRight() +{ + S32 width = 0; + LLRect visible_rect = mScrollArea->getRect(); + + chiclet_list_t::const_iterator it = mChicletList.begin() + mFirstToShow; + for(;mChicletList.end() != it; ++it) + { + LLChiclet* chiclet = *it; + width += chiclet->getRect().getWidth() + CHICLET_PADDING; + if(width > visible_rect.getWidth()) + return true; + } + return false; +} + +bool LLChicletPanel::canScrollLeft() +{ + return mFirstToShow > 0; +} + +void LLChicletPanel::scroll(ScrollDirection direction) +{ + S32 elem = 0; + if(SCROLL_LEFT == direction) + elem = mFirstToShow; + else if(SCROLL_RIGHT) + elem = mFirstToShow - 1; + + S32 offset = mChicletList[elem]->getRect().getWidth() + + CHICLET_PADDING; + offset *= direction; + + chiclet_list_t::const_iterator it = mChicletList.begin(); + for(;mChicletList.end() != it; ++it) + { + LLChiclet* chiclet = *it; + chiclet->translate(offset,0); + } +} + +void LLChicletPanel::scrollLeft() +{ + if(canScrollLeft()) + { + --mFirstToShow; + scroll(SCROLL_LEFT); + mLeftScroll->setEnabled(canScrollLeft()); + mRightScroll->setEnabled(canScrollRight()); + } +} + +void LLChicletPanel::scrollRight() +{ + if(canScrollRight()) + { + ++mFirstToShow; + scroll(SCROLL_RIGHT); + mLeftScroll->setEnabled(canScrollLeft()); + mRightScroll->setEnabled(canScrollRight()); + } +} + +void LLChicletPanel::onLeftScrollClick() +{ + scrollLeft(); +} + +void LLChicletPanel::onRightScrollClick() +{ + scrollRight(); +} + +boost::signals2::connection LLChicletPanel::setChicletClickCallback( + const commit_callback_t& cb) +{ + return mCommitSignal.connect(cb); +} + +BOOL LLChicletPanel::handleScrollWheel(S32 x, S32 y, S32 clicks) +{ + if(clicks > 0) + { + scrollRight(); + } + else + { + scrollLeft(); + } + return TRUE; +} + +LLTalkButton::LLTalkButton(const LLUICtrl::Params& p) +: LLUICtrl(p) +{ + static S32 DROPDOWN_BTN_WIDTH = 20; + + LLRect rc(p.rect); + + LLButton::Params speak_params; + speak_params.name("left"); + speak_params.rect(LLRect(0,rc.getHeight(),rc.getWidth()-DROPDOWN_BTN_WIDTH,0)); + speak_params.label("Speak"); + speak_params.label_selected("Speak"); + speak_params.font(LLFontGL::getFontSansSerifSmall()); + speak_params.label_color(LLColor4::black); + speak_params.label_color_selected(LLColor4::black); + speak_params.tab_stop(false); + speak_params.is_toggle(true); + speak_params.picture_style(true); + speak_params.image_selected(LLUI::getUIImage("flyout_btn_left_selected.tga")); + speak_params.image_unselected(LLUI::getUIImage("flyout_btn_left.tga")); + mSpeakBtn = LLUICtrlFactory::create<LLButton>(speak_params); + addChild(mSpeakBtn); + + mSpeakBtn->setClickedCallback(boost::bind(&LLTalkButton::onClick_SpeakBtn, this)); + mSpeakBtn->setToggleState(false); + + LLButton::Params show_params; + show_params.name("right"); + show_params.rect(LLRect(rc.getWidth()-DROPDOWN_BTN_WIDTH,rc.getHeight(),rc.getWidth(),0)); + show_params.label(""); + show_params.tab_stop(false); + show_params.is_toggle(true); + show_params.picture_style(true); + show_params.image_selected(LLUI::getUIImage("show_btn_selected.tga")); + show_params.image_unselected(LLUI::getUIImage("show_btn.tga")); + mShowBtn = LLUICtrlFactory::create<LLButton>(show_params); + addChild(mShowBtn); + + mShowBtn->setClickedCallback(boost::bind(&LLTalkButton::onClick_ShowBtn, this)); + mShowBtn->setToggleState(false); + + mSpeakBtn->setToggleState(FALSE); + mShowBtn->setToggleState(FALSE); + + rc = mSpeakBtn->getRect(); + + LLOutputMonitorCtrl::Params monitor_param; + monitor_param.name("monitor"); + monitor_param.draw_border(false); + monitor_param.rect(LLRect(rc.getWidth()-20,18,rc.getWidth()-3,2)); + monitor_param.visible(true); + mOutputMonitor = LLUICtrlFactory::create<LLOutputMonitorCtrl>(monitor_param); + + mSpeakBtn->addChild(mOutputMonitor); + + mPrivateCallPanel = NULL; +} + +LLTalkButton::~LLTalkButton() +{ +} + +void LLTalkButton::draw() +{ + if(mSpeakBtn->getToggleState()) + { + mOutputMonitor->setPower(gVoiceClient->getCurrentPower(gAgent.getID())); + } + + LLUICtrl::draw(); +} + +void LLTalkButton::onClick_SpeakBtn() +{ + bool speaking = mSpeakBtn->getToggleState(); + gVoiceClient->setUserPTTState(speaking); + mOutputMonitor->setIsMuted(!speaking); +} + +void LLTalkButton::onClick_ShowBtn() +{ + if(!mShowBtn->getToggleState()) + { + mPrivateCallPanel->onClickClose(mPrivateCallPanel); + delete mPrivateCallPanel; + mPrivateCallPanel = NULL; + mShowBtn->setToggleState(FALSE); + return; + } + + S32 x = mSpeakBtn->getRect().mLeft; + S32 y = 0; + + localPointToScreen(x, y, &x, &y); + + mPrivateCallPanel = new LLVoiceControlPanel; + getRootView()->addChild(mPrivateCallPanel); + + y = LLBottomTray::getInstance()->getRect().getHeight() + + mPrivateCallPanel->getRect().getHeight(); + + LLRect rect; + rect.setLeftTopAndSize(x, y, mPrivateCallPanel->getRect().getWidth(), mPrivateCallPanel->getRect().getHeight()); + mPrivateCallPanel->setRect(rect); + + LLAvatarListItem::Params p; + p.buttons.status = true; + p.buttons.info = true; + p.buttons.profile = false; + p.buttons.locator = true; + + mPrivateCallPanel->addItem(new LLAvatarListItem(p)); + mPrivateCallPanel->setVisible(TRUE); + mPrivateCallPanel->setFrontmost(TRUE); + + mShowBtn->setToggleState(TRUE); +} diff --git a/indra/newview/llchiclet.h b/indra/newview/llchiclet.h new file mode 100644 index 0000000000000000000000000000000000000000..11c3356c461a1a0391a72a4651da56e4fb8d4ccf --- /dev/null +++ b/indra/newview/llchiclet.h @@ -0,0 +1,286 @@ +/** +* @file llchiclet.h +* @brief LLChiclet class header file +* +* $LicenseInfo:firstyear=2002&license=viewergpl$ +* +* Copyright (c) 2002-2009, Linden Research, Inc. +* +* Second Life Viewer Source Code +* The source code in this file ("Source Code") is provided by Linden Lab +* to you under the terms of the GNU General Public License, version 2.0 +* ("GPL"), unless you have obtained a separate licensing agreement +* ("Other License"), formally executed by you and Linden Lab. Terms of +* the GPL can be found in doc/GPL-license.txt in this distribution, or +* online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 +* +* There are special exceptions to the terms and conditions of the GPL as +* it is applied to this Source Code. View the full text of the exception +* in the file doc/FLOSS-exception.txt in this software distribution, or +* online at +* http://secondlifegrid.net/programs/open_source/licensing/flossexception +* +* By copying, modifying or distributing this software, you acknowledge +* that you have read and understood your obligations described above, +* and agree to abide by those obligations. +* +* ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO +* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, +* COMPLETENESS OR PERFORMANCE. +* $/LicenseInfo$ +*/ + +#ifndef LL_LLCHICLET_H +#define LL_LLCHICLET_H + +#include "llpanel.h" + +class LLTextBox; +class LLIconCtrl; +class LLAvatarIconCtrl; +class LLVoiceControlPanel; +class LLOutputMonitorCtrl; + +class LLChiclet : public LLUICtrl +{ +public: + + struct Params : public LLInitParam::Block<Params, LLUICtrl::Params> + { + Params(){}; + }; + + virtual ~LLChiclet(); + + virtual void setCounter(S32 counter) = 0; + + virtual S32 getCounter() = 0; + + virtual void setShowCounter(bool show) {mShowCounter = show;}; + + virtual bool getShowCounter() {return mShowCounter;}; + + virtual boost::signals2::connection setLeftButtonClickCallback( + const commit_callback_t& cb); + +protected: + + friend class LLUICtrlFactory; + LLChiclet(const Params& p); + + virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); + +protected: + S32 mCounter; + bool mShowCounter; +}; + +class LLIMChiclet : public LLChiclet +{ +public: + static LLChiclet* create(LLSD* imSessionId = NULL); + + void setCounter(S32); + + S32 getCounter() {return mCounter;}; + + const LLSD& getIMSessionId() const {return mIMSessionId;}; + + void setIMSessionId(LLSD* imSessionId) {if (imSessionId) mIMSessionId = *imSessionId;}; + void setIMSessionName(const std::string& name); + void setOtherParticipantId(const LLUUID& other_participant_id); + + void setShowSpeaker(bool show); + + bool getShowSpeaker() {return mShowSpeaker;}; + + enum SpeakerStatus + { + SPREAKER_ACTIVE, + SPEAKER_IDLE + }; + + void setSpeakerStatus(SpeakerStatus status); + + SpeakerStatus getSpeakerStatus() {return mSpeakerStatus;}; + + ~LLIMChiclet(); + +protected: + LLIMChiclet(const LLChiclet::Params& p); + friend class LLUICtrlFactory; + + S32 calcCounterWidth(); + + //overrides +public: + + void setShowCounter(bool show); + + void draw(); + + LLRect getRequiredRect(); + +protected: + LLAvatarIconCtrl* mAvatar; + LLTextBox* mCounterText; + LLIconCtrl* mSpeaker; + + LLSD mIMSessionId; + bool mShowSpeaker; + SpeakerStatus mSpeakerStatus; +}; + +class LLNotificationChiclet : public LLChiclet +{ +public: + + struct Params : public LLInitParam::Block<Params, LLChiclet::Params> + { + Optional<LLUIImage*> + image_unselected, + image_selected, + image_hover_selected, + image_hover_unselected, + image_disabled_selected, + image_disabled, + image_overlay; + + Optional<S32> + label_left; + + Params(); + }; + + static LLChiclet* create(const Params& p); + + void setCounter(S32 counter); + + S32 getCounter() {return mCounter;}; + + boost::signals2::connection setClickCallback(const commit_callback_t& cb); + + virtual ~ LLNotificationChiclet(); + +protected: + LLNotificationChiclet(const Params& p); + friend class LLUICtrlFactory; + +protected: + LLButton* mButton; + LLTextBox* mCounterText; +}; + +class LLChicletPanel : public LLPanel +{ +public: + + struct Params : public LLInitParam::Block<Params, LLPanel::Params> + { + Params(){}; + }; + + static LLChicletPanel* create(); + + LLChiclet* createChiclet(LLSD* imSessionId = NULL, S32 pos = 0); + + bool addChiclet(LLChiclet*, S32 pos); + + LLChiclet* getChiclet(S32 pos); + + LLChiclet* findIMChiclet(LLSD* imSessionId); + + S32 getChicletCount() {return mChicletList.size();}; + + void removeChiclet(S32 pos); + + void removeChiclet(LLChiclet*); + + void removeIMChiclet(LLSD* imSessionId); + + void removeAll(); + + void arrange(); + + ~LLChicletPanel(); + + void scrollLeft(); + + void scrollRight(); + + void onLeftScrollClick(); + + void onRightScrollClick(); + + boost::signals2::connection setChicletClickCallback( + const commit_callback_t& cb); + + void onChicletClick(LLUICtrl*ctrl,const LLSD¶m); + + //overrides +public: + + void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE ); + + void draw(); + + BOOL postBuild(); + +protected: + LLChicletPanel(const Params&p); + friend class LLUICtrlFactory; + + bool needsScrolling(); + + bool canScrollRight(); + + bool canScrollLeft(); + + enum ScrollDirection + { + SCROLL_LEFT = 1, + SCROLL_RIGHT = -1 + }; + + void scroll(ScrollDirection direction); + + typedef std::vector<LLChiclet*> chiclet_list_t; + + void removeChiclet(chiclet_list_t::iterator it); + + BOOL handleScrollWheel(S32 x, S32 y, S32 clicks); + +protected: + + chiclet_list_t mChicletList; + LLButton* mLeftScroll; + LLButton* mRightScroll; + S32 mFirstToShow; + S32 mLastToShow; + LLPanel* mScrollArea; +}; + + +class LLTalkButton : public LLUICtrl +{ +public: + + virtual ~LLTalkButton(); + + void onClick_SpeakBtn(); + void onClick_ShowBtn(); + + void draw(); + +protected: + friend class LLUICtrlFactory; + LLTalkButton(const LLUICtrl::Params& p); + +private: + LLButton* mSpeakBtn; + LLButton* mShowBtn; + LLVoiceControlPanel* mPrivateCallPanel; + LLOutputMonitorCtrl* mOutputMonitor; +}; + +#endif // LL_LLCHICLET_H diff --git a/indra/newview/llcolorswatch.cpp b/indra/newview/llcolorswatch.cpp index 096d4fb8ed5800f4293215afd23209997f9c119c..33aaac542bd58b9b6f1a278add85cf0b606965de 100644 --- a/indra/newview/llcolorswatch.cpp +++ b/indra/newview/llcolorswatch.cpp @@ -51,7 +51,7 @@ #include "llviewerimagelist.h" #include "llfocusmgr.h" -static LLRegisterWidget<LLColorSwatchCtrl> r("color_swatch"); +static LLDefaultWidgetRegistry::Register<LLColorSwatchCtrl> r("color_swatch"); LLColorSwatchCtrl::Params::Params() : color("color", LLColor4::white), diff --git a/indra/newview/llcurrencyuimanager.cpp b/indra/newview/llcurrencyuimanager.cpp index 19a560abf2be04e8e041c473a28db11b25ff3867..99576947279bfcd87ca5be35edae4960c621e452 100644 --- a/indra/newview/llcurrencyuimanager.cpp +++ b/indra/newview/llcurrencyuimanager.cpp @@ -122,7 +122,8 @@ LLCurrencyUIManager::Impl::Impl(LLPanel& dialog) : mPanel(dialog), mHidden(false), mError(false), - mUserCurrencyBuy(1000), mUserEnteredCurrencyBuy(false), + mUserCurrencyBuy(2000), // note, this is a default, real value set in llfloaterbuycurrency.cpp + mUserEnteredCurrencyBuy(false), mSiteCurrencyEstimated(false), mSiteCurrencyEstimatedCost(0), mBought(false), diff --git a/indra/newview/lldebugview.cpp b/indra/newview/lldebugview.cpp index 2af29260f43efe42237ce0403a6a50f6aa12cb22..bd5b9c30a21b7758f74c593d7a11bd70caf2b5a3 100644 --- a/indra/newview/lldebugview.cpp +++ b/indra/newview/lldebugview.cpp @@ -43,6 +43,8 @@ #include "imageids.h" #include "llviewercontrol.h" #include "llviewerwindow.h" +#include "llappviewer.h" +#include "llmemoryview.h" // // Globals @@ -81,7 +83,8 @@ LLDebugView::LLDebugView(const LLDebugView::Params& p) mFastTimerView->setVisible(FALSE); // start invisible addChild(mFastTimerView); - r.set(25, rect.getHeight() - 50, rect.getWidth()/2, rect.getHeight() - 450); + r.set(25, rect.getHeight() - 50, (S32) (gViewerWindow->getVirtualWindowRect().getWidth() * 0.75f), + (S32) (gViewerWindow->getVirtualWindowRect().getHeight() * 0.75f)); LLMemoryView::Params mp; mp.name("memory"); mp.rect(r); diff --git a/indra/newview/lldrawable.h b/indra/newview/lldrawable.h index ba37694356d760b63ce5e8d05bcc4157ba1ef261..f3ef0753e74eacd76c010637eb676e5f8b2fd12a 100644 --- a/indra/newview/lldrawable.h +++ b/indra/newview/lldrawable.h @@ -150,7 +150,7 @@ class LLDrawable : public LLRefCount void updateTexture(); void updateMaterial(); - virtual void updateDistance(LLCamera& camera); + virtual void updateDistance(LLCamera& camera, bool force_update); BOOL updateGeometry(BOOL priority); void updateFaceSize(S32 idx); diff --git a/indra/newview/lldrawpoolsky.cpp b/indra/newview/lldrawpoolsky.cpp index 060af757362fad0c3c8cf75635fe5555825c651d..a9e0948ecf896882163bad821d7053d742d58504 100644 --- a/indra/newview/lldrawpoolsky.cpp +++ b/indra/newview/lldrawpoolsky.cpp @@ -60,8 +60,8 @@ LLDrawPool *LLDrawPoolSky::instancePool() void LLDrawPoolSky::prerender() { - mVertexShaderLevel = LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_ENVIRONMENT); -// gSky.mVOSkyp->updateGeometry(gSky.mVOSkyp->mDrawable); + mVertexShaderLevel = LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_ENVIRONMENT); + gSky.mVOSkyp->updateGeometry(gSky.mVOSkyp->mDrawable); } void LLDrawPoolSky::render(S32 pass) @@ -96,7 +96,6 @@ void LLDrawPoolSky::render(S32 pass) } - LLVOSky *voskyp = gSky.mVOSkyp; LLGLSPipelineSkyBox gls_skybox; LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE); @@ -119,43 +118,9 @@ void LLDrawPoolSky::render(S32 pass) { renderSkyCubeFace(i); } - - LLFace *hbfaces[3]; - hbfaces[0] = NULL; - hbfaces[1] = NULL; - hbfaces[2] = NULL; - for (S32 curr_face = 0; curr_face < face_count; curr_face++) - { - LLFace* facep = mDrawFace[curr_face]; - if (voskyp->isSameFace(LLVOSky::FACE_SUN, facep)) - { - hbfaces[0] = facep; - } - if (voskyp->isSameFace(LLVOSky::FACE_MOON, facep)) - { - hbfaces[1] = facep; - } - if (voskyp->isSameFace(LLVOSky::FACE_BLOOM, facep)) - { - hbfaces[2] = facep; - } - } LLGLEnable blend(GL_BLEND); - if (hbfaces[2]) - { - // renderSunHalo(hbfaces[2]); - } - if (hbfaces[0]) - { - // renderHeavenlyBody(0, hbfaces[0]); - } - if (hbfaces[1]) - { - // renderHeavenlyBody(1, hbfaces[1]); - } - glPopMatrix(); } @@ -180,35 +145,6 @@ void LLDrawPoolSky::renderSkyCubeFace(U8 side) } } -void LLDrawPoolSky::renderHeavenlyBody(U8 hb, LLFace* face) -{ - if ( !mHB[hb]->getDraw() ) return; - if (! face->getGeomCount()) return; - - LLImageGL* tex = face->getTexture(); - gGL.getTexUnit(0)->bind(tex); - LLColor4 color(mHB[hb]->getInterpColor()); - LLOverrideFaceColor override(this, color); - face->renderIndexed(); -} - - - -void LLDrawPoolSky::renderSunHalo(LLFace* face) -{ - if (! mHB[0]->getDraw()) return; - if (! face->getGeomCount()) return; - - LLImageGL* tex = face->getTexture(); - gGL.getTexUnit(0)->bind(tex); - LLColor4 color(mHB[0]->getInterpColor()); - color.mV[3] = llclamp(mHB[0]->getHaloBrighness(), 0.f, 1.f); - - LLOverrideFaceColor override(this, color); - face->renderIndexed(); -} - - void LLDrawPoolSky::renderForSelect() { } diff --git a/indra/newview/lldynamictexture.cpp b/indra/newview/lldynamictexture.cpp index 203c086c569c089a5740b2f0de5ebd150e40615b..1953c2906822968de03e7352387938ba06d9cea0 100644 --- a/indra/newview/lldynamictexture.cpp +++ b/indra/newview/lldynamictexture.cpp @@ -179,7 +179,7 @@ void LLDynamicTexture::postRender(BOOL success) } // restore viewport - gViewerWindow->setupViewport(); + gViewerWindow->setup2DViewport(); // restore camera LLViewerCamera::getInstance()->setOrigin(mCamera); diff --git a/indra/newview/llfasttimerview.cpp b/indra/newview/llfasttimerview.cpp index 7a79b7ef3e81bbac0ed3888f8a03d15ce8bb235a..b373dd2241bd9fcb6317a75c51e6d4c24ca1720f 100644 --- a/indra/newview/llfasttimerview.cpp +++ b/indra/newview/llfasttimerview.cpp @@ -41,6 +41,7 @@ #include "llrender.h" #include "llmath.h" #include "llfontgl.h" +#include "llsdserialize.h" #include "llappviewer.h" #include "llviewerimagelist.h" @@ -49,290 +50,108 @@ #include "llstat.h" #include "llfasttimer.h" - +#include "lltreeiterators.h" +#include "llmetricperformancetester.h" ////////////////////////////////////////////////////////////////////////////// static const S32 MAX_VISIBLE_HISTORY = 10; static const S32 LINE_GRAPH_HEIGHT = 240; -struct ft_display_info { - int timer; - const char *desc; - const LLColor4 *color; - S32 disabled; // initialized to 0 - int level; // calculated based on desc - int parent; // calculated -}; - -static const LLColor4 red0(0.5f, 0.0f, 0.0f, 1.0f); -static const LLColor4 green0(0.0f, 0.5f, 0.0f, 1.0f); -static const LLColor4 blue0(0.0f, 0.0f, 0.5f, 1.0f); -static const LLColor4 blue7(0.0f, 0.0f, 0.5f, 1.0f); - -static const LLColor4 green7(0.6f, 1.0f, 0.4f, 1.0f); -static const LLColor4 green8(0.4f, 1.0f, 0.6f, 1.0f); -static const LLColor4 green9(0.6f, 1.0f, 0.6f, 1.0f); - -// green(6), blue, yellow, orange, pink(2), cyan -// red (5) magenta (4) -static struct ft_display_info ft_display_table[] = -{ - { LLFastTimer::FTM_FRAME, "Frame", &LLColor4::white, 0 }, - { LLFastTimer::FTM_MESSAGES, " System Messages", &LLColor4::grey1, 1 }, - { LLFastTimer::FTM_MOUSEHANDLER, " Mouse", &LLColor4::grey1, 0 }, - { LLFastTimer::FTM_KEYHANDLER, " Keyboard", &LLColor4::grey1, 0 }, - { LLFastTimer::FTM_SLEEP, " Sleep", &LLColor4::grey2, 0 }, - { LLFastTimer::FTM_IDLE, " Idle", &blue0, 0 }, - { LLFastTimer::FTM_PUMP, " Pump", &LLColor4::magenta2, 1 }, - { LLFastTimer::FTM_CURL, " Curl", &LLColor4::magenta3, 0 }, - { LLFastTimer::FTM_INVENTORY, " Inventory Update", &LLColor4::purple6, 1 }, - { LLFastTimer::FTM_AUTO_SELECT, " Open and Select", &LLColor4::red, 0 }, - { LLFastTimer::FTM_FILTER, " Filter", &LLColor4::red2, 0 }, - { LLFastTimer::FTM_ARRANGE, " Arrange", &LLColor4::red3, 0 }, - { LLFastTimer::FTM_REFRESH, " Refresh", &LLColor4::red4, 0 }, - { LLFastTimer::FTM_SORT, " Sort", &LLColor4::red5, 0 }, - { LLFastTimer::FTM_RESET_DRAWORDER, " ResetDrawOrder", &LLColor4::pink1, 0 }, - { LLFastTimer::FTM_WORLD_UPDATE, " World Update", &LLColor4::blue1, 1 }, - { LLFastTimer::FTM_UPDATE_MOVE, " Move Objects", &LLColor4::pink2, 0 }, - { LLFastTimer::FTM_OCTREE_BALANCE, " Octree Balance", &LLColor4::red3, 0 }, - { LLFastTimer::FTM_SIMULATE_PARTICLES, " Particle Sim", &LLColor4::blue4, 0 }, - { LLFastTimer::FTM_OBJECTLIST_UPDATE, " Object Update", &LLColor4::purple1, 1 }, - { LLFastTimer::FTM_AVATAR_UPDATE, " Avatars", &LLColor4::purple2, 0 }, - { LLFastTimer::FTM_JOINT_UPDATE, " Joints", &LLColor4::purple3, 0 }, - { LLFastTimer::FTM_ATTACHMENT_UPDATE, " Attachments", &LLColor4::purple4, 0 }, - { LLFastTimer::FTM_UPDATE_ANIMATION, " Animation", &LLColor4::purple5, 0 }, - { LLFastTimer::FTM_FLEXIBLE_UPDATE, " Flex Update", &LLColor4::pink2, 0 }, - { LLFastTimer::FTM_LOD_UPDATE, " LOD Update", &LLColor4::magenta1, 0 }, - { LLFastTimer::FTM_REGION_UPDATE, " Region Update", &LLColor4::cyan2, 0 }, - { LLFastTimer::FTM_NETWORK, " Network", &LLColor4::orange1, 1 }, - { LLFastTimer::FTM_IDLE_NETWORK, " Decode Msgs", &LLColor4::orange2, 0 }, - { LLFastTimer::FTM_PROCESS_MESSAGES, " Process Msgs", &LLColor4::orange3, 0 }, - { LLFastTimer::FTM_PROCESS_OBJECTS, " Object Updates",&LLColor4::orange4, 0 }, - { LLFastTimer::FTM_CREATE_OBJECT, " Create Obj", &LLColor4::orange5, 0 }, -// { LLFastTimer::FTM_LOAD_AVATAR, " Load Avatar", &LLColor4::pink2, 0 }, - { LLFastTimer::FTM_PROCESS_IMAGES, " Image Updates",&LLColor4::orange6, 0 }, - { LLFastTimer::FTM_PIPELINE, " Pipeline", &LLColor4::magenta4, 0 }, - { LLFastTimer::FTM_CLEANUP, " Cleanup", &LLColor4::cyan3, 0 }, - { LLFastTimer::FTM_AUDIO_UPDATE, " Audio Update", &LLColor4::yellow3, 0 }, - { LLFastTimer::FTM_VFILE_WAIT, " VFile Wait", &LLColor4::cyan6, 0 }, -// { LLFastTimer::FTM_IDLE_CB, " Callbacks", &LLColor4::pink1, 0 }, - { LLFastTimer::FTM_RENDER, " Render", &green0, 1 }, - { LLFastTimer::FTM_PICK, " Pick", &LLColor4::purple, 1 }, - { LLFastTimer::FTM_HUD_EFFECTS, " HUD Effects", &LLColor4::orange1, 0 }, - { LLFastTimer::FTM_HUD_UPDATE, " HUD Update", &LLColor4::orange2, 0 }, - { LLFastTimer::FTM_UPDATE_SKY, " Sky Update", &LLColor4::cyan1, 0 }, - { LLFastTimer::FTM_UPDATE_TEXTURES, " Textures", &LLColor4::pink2, 0 }, - { LLFastTimer::FTM_GEO_UPDATE, " Geo Update", &LLColor4::blue3, 1 }, - { LLFastTimer::FTM_UPDATE_PRIMITIVES, " Volumes", &LLColor4::blue4, 0 }, - { LLFastTimer::FTM_GEN_VOLUME, " Gen Volume", &LLColor4::yellow3, 0 }, - { LLFastTimer::FTM_GEN_FLEX, " Flexible", &LLColor4::yellow4, 0 }, - { LLFastTimer::FTM_GEN_TRIANGLES, " Triangles", &LLColor4::yellow5, 0 }, - { LLFastTimer::FTM_UPDATE_AVATAR, " Avatar", &LLColor4::yellow1, 0 }, - { LLFastTimer::FTM_UPDATE_TREE, " Tree", &LLColor4::yellow2, 0 }, - { LLFastTimer::FTM_UPDATE_TERRAIN, " Terrain", &LLColor4::yellow6, 0 }, - { LLFastTimer::FTM_UPDATE_CLOUDS, " Clouds", &LLColor4::yellow7, 0 }, - { LLFastTimer::FTM_UPDATE_GRASS, " Grass", &LLColor4::yellow8, 0 }, - { LLFastTimer::FTM_UPDATE_WATER, " Water", &LLColor4::yellow9, 0 }, - { LLFastTimer::FTM_GEO_LIGHT, " Lighting", &LLColor4::yellow1, 0 }, - { LLFastTimer::FTM_GEO_SHADOW, " Shadow", &LLColor4::black, 0 }, - { LLFastTimer::FTM_UPDATE_PARTICLES, " Particles", &LLColor4::blue5, 0 }, - { LLFastTimer::FTM_GEO_RESERVE, " Reserve", &LLColor4::blue6, 0 }, - { LLFastTimer::FTM_UPDATE_LIGHTS, " Lights", &LLColor4::yellow2, 0 }, - { LLFastTimer::FTM_GEO_SKY, " Sky", &LLColor4::yellow3, 0 }, - { LLFastTimer::FTM_UPDATE_WLPARAM, " Windlight Param",&LLColor4::magenta2, 0 }, - { LLFastTimer::FTM_CULL, " Object Cull", &LLColor4::blue2, 1 }, - { LLFastTimer::FTM_CULL_REBOUND, " Rebound", &LLColor4::blue3, 0 }, - { LLFastTimer::FTM_FRUSTUM_CULL, " Frustum Cull", &LLColor4::blue4, 0 }, - { LLFastTimer::FTM_OCCLUSION_READBACK, " Occlusion Read", &LLColor4::red2, 0 }, - { LLFastTimer::FTM_IMAGE_UPDATE, " Image Update", &LLColor4::yellow4, 1 }, - { LLFastTimer::FTM_IMAGE_CREATE, " Image CreateGL",&LLColor4::yellow5, 0 }, - { LLFastTimer::FTM_IMAGE_DECODE, " Image Decode", &LLColor4::yellow6, 0 }, - { LLFastTimer::FTM_IMAGE_MARK_DIRTY, " Dirty Textures",&LLColor4::red1, 0 }, - { LLFastTimer::FTM_STATESORT, " State Sort", &LLColor4::orange1, 1 }, - { LLFastTimer::FTM_STATESORT_DRAWABLE, " Drawable", &LLColor4::orange2, 0 }, - { LLFastTimer::FTM_STATESORT_POSTSORT, " Post Sort", &LLColor4::orange3, 0 }, - { LLFastTimer::FTM_REBUILD_OCCLUSION_VB," Occlusion", &LLColor4::cyan5, 0 }, - { LLFastTimer::FTM_REBUILD_VBO, " VBO Rebuild", &LLColor4::red4, 0 }, - { LLFastTimer::FTM_REBUILD_VOLUME_VB, " Volume", &LLColor4::blue1, 0 }, -// { LLFastTimer::FTM_REBUILD_NONE_VB, " Unknown", &LLColor4::cyan5, 0 }, -// { LLFastTimer::FTM_REBUILD_BRIDGE_VB, " Bridge", &LLColor4::blue2, 0 }, -// { LLFastTimer::FTM_REBUILD_HUD_VB, " HUD", &LLColor4::blue3, 0 }, - { LLFastTimer::FTM_REBUILD_TERRAIN_VB, " Terrain", &LLColor4::blue4, 0 }, -// { LLFastTimer::FTM_REBUILD_WATER_VB, " Water", &LLColor4::blue5, 0 }, -// { LLFastTimer::FTM_REBUILD_TREE_VB, " Tree", &LLColor4::cyan1, 0 }, - { LLFastTimer::FTM_REBUILD_PARTICLE_VB, " Particle", &LLColor4::cyan2, 0 }, -// { LLFastTimer::FTM_REBUILD_CLOUD_VB, " Cloud", &LLColor4::cyan3, 0 }, - { LLFastTimer::FTM_REBUILD_GRASS_VB, " Grass", &LLColor4::cyan4, 0 }, - { LLFastTimer::FTM_SHADOW_RENDER, " Shadow", &LLColor4::green5, 1 }, - { LLFastTimer::FTM_SHADOW_SIMPLE, " Simple", &LLColor4::yellow2, 1 }, - { LLFastTimer::FTM_SHADOW_ALPHA, " Alpha", &LLColor4::yellow6, 1 }, - { LLFastTimer::FTM_SHADOW_TERRAIN, " Terrain", &LLColor4::green6, 1 }, - { LLFastTimer::FTM_SHADOW_AVATAR, " Avatar", &LLColor4::yellow1, 1 }, - { LLFastTimer::FTM_SHADOW_TREE, " Tree", &LLColor4::yellow8, 1 }, - { LLFastTimer::FTM_RENDER_GEOMETRY, " Geometry", &LLColor4::green2, 1 }, - { LLFastTimer::FTM_POOLS, " Pools", &LLColor4::green3, 1 }, - { LLFastTimer::FTM_POOLRENDER, " RenderPool", &LLColor4::green4, 1 }, - { LLFastTimer::FTM_RENDER_TERRAIN, " Terrain", &LLColor4::green6, 0 }, - { LLFastTimer::FTM_RENDER_CHARACTERS, " Avatars", &LLColor4::yellow1, 0 }, - { LLFastTimer::FTM_RENDER_SIMPLE, " Simple", &LLColor4::yellow2, 0 }, - { LLFastTimer::FTM_RENDER_FULLBRIGHT, " Fullbright", &LLColor4::yellow5, 0 }, - { LLFastTimer::FTM_RENDER_GLOW, " Glow", &LLColor4::orange1, 0 }, - { LLFastTimer::FTM_RENDER_GRASS, " Grass", &LLColor4::yellow6, 0 }, - { LLFastTimer::FTM_RENDER_INVISIBLE, " Invisible", &LLColor4::red2, 0 }, - { LLFastTimer::FTM_RENDER_SHINY, " Shiny", &LLColor4::yellow3, 0 }, - { LLFastTimer::FTM_RENDER_BUMP, " Bump", &LLColor4::yellow4, 0 }, - { LLFastTimer::FTM_RENDER_TREES, " Trees", &LLColor4::yellow8, 0 }, - { LLFastTimer::FTM_RENDER_OCCLUSION, " Occlusion", &LLColor4::red1, 0 }, - { LLFastTimer::FTM_RENDER_CLOUDS, " Clouds", &LLColor4::yellow5, 0 }, - { LLFastTimer::FTM_RENDER_ALPHA, " Alpha", &LLColor4::yellow6, 0 }, - { LLFastTimer::FTM_RENDER_HUD, " HUD", &LLColor4::yellow7, 0 }, - { LLFastTimer::FTM_RENDER_WATER, " Water", &LLColor4::yellow9, 0 }, - { LLFastTimer::FTM_RENDER_WL_SKY, " WL Sky", &LLColor4::blue3, 0 }, - { LLFastTimer::FTM_RENDER_FAKE_VBO_UPDATE," Fake VBO update", &LLColor4::red2, 0 }, - { LLFastTimer::FTM_RENDER_BLOOM, " Bloom", &LLColor4::blue4, 0 }, - { LLFastTimer::FTM_RENDER_BLOOM_FBO, " First FBO", &LLColor4::blue, 0 }, - { LLFastTimer::FTM_RENDER_UI, " UI", &LLColor4::cyan4, 1 }, - { LLFastTimer::FTM_RENDER_TIMER, " Timers", &LLColor4::cyan5, 1, 0 }, - { LLFastTimer::FTM_RENDER_FONTS, " Fonts", &LLColor4::pink1, 0 }, - { LLFastTimer::FTM_SWAP, " Swap", &LLColor4::pink2, 0 }, - { LLFastTimer::FTM_CLIENT_COPY, " Client Copy", &LLColor4::red1, 1}, - { LLFastTimer::FTM_SWAP, " Swap", &LLColor4::pink2, 0 }, - { LLFastTimer::FTM_CLIENT_COPY, " Client Copy", &LLColor4::red1, 1}, - -#if 0 || !LL_RELEASE_FOR_DOWNLOAD - { LLFastTimer::FTM_TEMP1, " Temp1", &LLColor4::red1, 0 }, - { LLFastTimer::FTM_TEMP2, " Temp2", &LLColor4::magenta1, 0 }, - { LLFastTimer::FTM_TEMP3, " Temp3", &LLColor4::red2, 0 }, - { LLFastTimer::FTM_TEMP4, " Temp4", &LLColor4::magenta2, 0 }, - { LLFastTimer::FTM_TEMP5, " Temp5", &LLColor4::red3, 0 }, - { LLFastTimer::FTM_TEMP6, " Temp6", &LLColor4::magenta3, 0 }, - { LLFastTimer::FTM_TEMP7, " Temp7", &LLColor4::red4, 0 }, - { LLFastTimer::FTM_TEMP8, " Temp8", &LLColor4::magenta4, 0 }, -#endif - - { LLFastTimer::FTM_OTHER, " Other", &red0 } -}; -static int ft_display_didcalc = 0; -static const int FTV_DISPLAY_NUM = LL_ARRAY_SIZE(ft_display_table); +//static const int FTV_DISPLAY_NUM = (sizeof(ft_display_table)/sizeof(ft_display_table[0])); +static S32 FTV_NUM_TIMERS; +const S32 FTV_MAX_DEPTH = 8; + +std::vector<LLFastTimer::NamedTimer*> ft_display_idx; // line of table entry for display purposes (for collapse) + +typedef LLTreeDFSIter<LLFastTimer::NamedTimer, LLFastTimer::NamedTimer::child_const_iter> timer_tree_iterator_t; -S32 ft_display_idx[FTV_DISPLAY_NUM]; // line of table entry for display purposes (for collapse) +BOOL LLFastTimerView::sAnalyzePerformance = FALSE; + +static timer_tree_iterator_t begin_timer_tree(LLFastTimer::NamedTimer& id) +{ + return timer_tree_iterator_t(&id, + boost::bind(boost::mem_fn(&LLFastTimer::NamedTimer::beginChildren), _1), + boost::bind(boost::mem_fn(&LLFastTimer::NamedTimer::endChildren), _1)); +} + +static timer_tree_iterator_t end_timer_tree() +{ + return timer_tree_iterator_t(); +} LLFastTimerView::LLFastTimerView(const LLRect& rect) -: LLFloater() +: LLFloater(), + mHoverTimer(NULL) { setRect(rect); setVisible(FALSE); mDisplayMode = 0; mAvgCountTotal = 0; mMaxCountTotal = 0; - mDisplayCenter = 1; + mDisplayCenter = ALIGN_CENTER; mDisplayCalls = 0; mDisplayHz = 0; mScrollIndex = 0; - mHoverIndex = -1; + mHoverID = NULL; mHoverBarIndex = -1; - mBarStart = new S32[(MAX_VISIBLE_HISTORY + 1) * FTV_DISPLAY_NUM]; - memset(mBarStart, 0, (MAX_VISIBLE_HISTORY + 1) * FTV_DISPLAY_NUM * sizeof(S32)); - mBarEnd = new S32[(MAX_VISIBLE_HISTORY + 1) * FTV_DISPLAY_NUM]; - memset(mBarEnd, 0, (MAX_VISIBLE_HISTORY + 1) * FTV_DISPLAY_NUM * sizeof(S32)); - mSubtractHidden = 0; + FTV_NUM_TIMERS = LLFastTimer::NamedTimer::instanceCount(); mPrintStats = -1; - - // One-time setup - if (!ft_display_didcalc) - { - int pidx[FTV_DISPLAY_NUM]; - int pdisabled[FTV_DISPLAY_NUM]; - for (S32 i=0; i < FTV_DISPLAY_NUM; i++) - { - int level = 0; - const char *text = ft_display_table[i].desc; - while(text[0] == ' ') - { - text++; - level++; - } - llassert(level < FTV_DISPLAY_NUM); - ft_display_table[i].desc = text; - ft_display_table[i].level = level; - if (level > 0) - { - ft_display_table[i].parent = pidx[level-1]; - if (pdisabled[level-1]) - { - ft_display_table[i].disabled = 3; - } - } - else - { - ft_display_table[i].parent = -1; - } - ft_display_idx[i] = i; - pidx[level] = i; - pdisabled[level] = ft_display_table[i].disabled; - } - ft_display_didcalc = 1; - } } -LLFastTimerView::~LLFastTimerView() -{ - delete[] mBarStart; - delete[] mBarEnd; -} BOOL LLFastTimerView::handleRightMouseDown(S32 x, S32 y, MASK mask) { - if (mBarRect.pointInRect(x, y)) + if (mHoverTimer ) + { + // right click collapses timers + if (!mHoverTimer->getCollapsed()) + { + mHoverTimer->setCollapsed(true); + } + else if (mHoverTimer->getParent()) + { + mHoverTimer->getParent()->setCollapsed(true); + } + } + else if (mBarRect.pointInRect(x, y)) { S32 bar_idx = MAX_VISIBLE_HISTORY - ((y - mBarRect.mBottom) * (MAX_VISIBLE_HISTORY + 2) / mBarRect.getHeight()); bar_idx = llclamp(bar_idx, 0, MAX_VISIBLE_HISTORY); mPrintStats = bar_idx; -// return TRUE; // for now, pass all mouse events through } return FALSE; } -S32 LLFastTimerView::getLegendIndex(S32 y) +LLFastTimer::NamedTimer* LLFastTimerView::getLegendID(S32 y) { S32 idx = (getRect().getHeight() - y) / ((S32) LLFontGL::getFontMonospace()->getLineHeight()+2) - 5; - if (idx >= 0 && idx < FTV_DISPLAY_NUM) + + if (idx >= 0 && idx < (S32)ft_display_idx.size()) { return ft_display_idx[idx]; } - return -1; + return NULL; } BOOL LLFastTimerView::handleMouseDown(S32 x, S32 y, MASK mask) { if (x < mBarRect.mLeft) { - S32 legend_index = getLegendIndex(y); - if (legend_index >= 0 && legend_index < FTV_DISPLAY_NUM) + LLFastTimer::NamedTimer* idp = getLegendID(y); + if (idp) { - S32 disabled = ft_display_table[legend_index].disabled; - if (++disabled > 2) - disabled = 0; - ft_display_table[legend_index].disabled = disabled; - S32 level = ft_display_table[legend_index].level; - - // propagate enable/disable to all children - legend_index++; - while (legend_index < FTV_DISPLAY_NUM && ft_display_table[legend_index].level > level) - { - ft_display_table[legend_index].disabled = disabled ? 3 : 0; - legend_index++; - } + idp->setCollapsed(!idp->getCollapsed()); } } + else if (mHoverTimer) + { + //left click drills down by expanding timers + mHoverTimer->setCollapsed(false); + } else if (mask & MASK_ALT) { - if (mask & MASK_SHIFT) - { - mSubtractHidden = !mSubtractHidden; - } - else if (mask & MASK_CONTROL) + if (mask & MASK_CONTROL) { mDisplayHz = !mDisplayHz; } @@ -348,8 +167,7 @@ BOOL LLFastTimerView::handleMouseDown(S32 x, S32 y, MASK mask) } else if (mask & MASK_CONTROL) { - if (++mDisplayCenter > 2) - mDisplayCenter = 0; + mDisplayCenter = (ChildAlignment)((mDisplayCenter + 1) % ALIGN_COUNT); } else { @@ -370,13 +188,14 @@ BOOL LLFastTimerView::handleMouseUp(S32 x, S32 y, MASK mask) return FALSE; } - BOOL LLFastTimerView::handleHover(S32 x, S32 y, MASK mask) { + mHoverTimer = NULL; + mHoverID = NULL; + if(LLFastTimer::sPauseHistory && mBarRect.pointInRect(x, y)) { - mHoverIndex = -1; - mHoverBarIndex = MAX_VISIBLE_HISTORY - ((y - mBarRect.mBottom) * (MAX_VISIBLE_HISTORY + 2) / mBarRect.getHeight()); + mHoverBarIndex = llmin(LLFastTimer::getCurFrameIndex() - 1, MAX_VISIBLE_HISTORY - ((y - mBarRect.mBottom) * (MAX_VISIBLE_HISTORY + 2) / mBarRect.getHeight())); if (mHoverBarIndex == 0) { return TRUE; @@ -385,39 +204,88 @@ BOOL LLFastTimerView::handleHover(S32 x, S32 y, MASK mask) { mHoverBarIndex = 0; } - for (S32 i = 0; i < FTV_DISPLAY_NUM; i++) + + S32 i = 0; + for(timer_tree_iterator_t it = begin_timer_tree(LLFastTimer::NamedTimer::getRootNamedTimer()); + it != end_timer_tree(); + ++it, ++i) { - if (x > mBarStart[mHoverBarIndex * FTV_DISPLAY_NUM + i] && - x < mBarEnd[mHoverBarIndex * FTV_DISPLAY_NUM + i] && - ft_display_table[i].disabled <= 1) + // is mouse over bar for this timer? + if (x > mBarStart[mHoverBarIndex][i] && + x < mBarEnd[mHoverBarIndex][i]) + { + mHoverID = (*it); + mHoverTimer = (*it); + mToolTipRect.set(mBarStart[mHoverBarIndex][i], + mBarRect.mBottom + llround(((F32)mHoverBarIndex + 1.f) * ((F32)mBarRect.getHeight() / ((F32)MAX_VISIBLE_HISTORY + 2.f))), + mBarEnd[mHoverBarIndex][i], + mBarRect.mBottom + llround((F32)mHoverBarIndex * ((F32)mBarRect.getHeight() / ((F32)MAX_VISIBLE_HISTORY + 2.f)))); + } + + if ((*it)->getCollapsed()) { - mHoverIndex = i; + it.skipDescendants(); } } } else if (x < mBarRect.mLeft) { - S32 legend_index = getLegendIndex(y); - if (legend_index >= 0 && legend_index < FTV_DISPLAY_NUM) + LLFastTimer::NamedTimer* timer_id = getLegendID(y); + if (timer_id) { - mHoverIndex = legend_index; + mHoverID = timer_id; } } return FALSE; } + +BOOL LLFastTimerView::handleToolTip(S32 x, S32 y, std::string& msg, LLRect* sticky_rect_screen) +{ + if(LLFastTimer::sPauseHistory && mBarRect.pointInRect(x, y)) + { + // tooltips for timer bars + if (mHoverTimer) + { + msg = mHoverTimer->getToolTip(LLFastTimer::NamedTimer::HISTORY_NUM - mScrollIndex - mHoverBarIndex); + return TRUE; + } + } + else + { + // tooltips for timer legend + if (x < mBarRect.mLeft) + { + LLFastTimer::NamedTimer* idp = getLegendID(y); + if (idp) + { + msg = idp->getToolTip(); + return TRUE; + } + } + + } + + return FALSE; +} + BOOL LLFastTimerView::handleScrollWheel(S32 x, S32 y, S32 clicks) { LLFastTimer::sPauseHistory = TRUE; mScrollIndex = llclamp(mScrollIndex - clicks, - 0, llmin(LLFastTimer::sLastFrameIndex, (S32)LLFastTimer::FTM_HISTORY_NUM-MAX_VISIBLE_HISTORY)); + 0, + llmin(LLFastTimer::getLastFrameIndex(), (S32)LLFastTimer::NamedTimer::HISTORY_NUM - MAX_VISIBLE_HISTORY)); return TRUE; } +static LLFastTimer::DeclareTimer FTM_RENDER_TIMER("Timers", true); + +static std::map<LLFastTimer::NamedTimer*, LLColor4> sTimerColors; + void LLFastTimerView::draw() { - LLFastTimer t(LLFastTimer::FTM_RENDER_TIMER); + LLFastTimer t(FTM_RENDER_TIMER); std::string tdesc; @@ -436,47 +304,9 @@ void LLFastTimerView::draw() S32 texth, textw; LLPointer<LLUIImage> box_imagep = LLUI::getUIImage("rounded_square.tga"); - // Make sure all timers are accounted for - // Set 'FTM_OTHER' to unaccounted ticks last frame - { - S32 display_timer[LLFastTimer::FTM_NUM_TYPES]; - S32 hidx = LLFastTimer::sLastFrameIndex % LLFastTimer::FTM_HISTORY_NUM; - for (S32 i=0; i < LLFastTimer::FTM_NUM_TYPES; i++) - { - display_timer[i] = 0; - } - for (S32 i=0; i < FTV_DISPLAY_NUM; i++) - { - S32 tidx = ft_display_table[i].timer; - display_timer[tidx] = 1; - } - LLFastTimer::sCountHistory[hidx][LLFastTimer::FTM_OTHER] = 0; - LLFastTimer::sCallHistory[hidx][LLFastTimer::FTM_OTHER] = 0; - for (S32 tidx = 0; tidx < LLFastTimer::FTM_NUM_TYPES; tidx++) - { - U64 counts = LLFastTimer::sCountHistory[hidx][tidx]; - if (counts > 0 && display_timer[tidx] == 0) - { - LLFastTimer::sCountHistory[hidx][LLFastTimer::FTM_OTHER] += counts; - LLFastTimer::sCallHistory[hidx][LLFastTimer::FTM_OTHER] += 1; - } - } - LLFastTimer::sCountAverage[LLFastTimer::FTM_OTHER] = 0; - LLFastTimer::sCallAverage[LLFastTimer::FTM_OTHER] = 0; - for (S32 h = 0; h < LLFastTimer::FTM_HISTORY_NUM; h++) - { - LLFastTimer::sCountAverage[LLFastTimer::FTM_OTHER] += LLFastTimer::sCountHistory[h][LLFastTimer::FTM_OTHER]; - LLFastTimer::sCallAverage[LLFastTimer::FTM_OTHER] += LLFastTimer::sCallHistory[h][LLFastTimer::FTM_OTHER]; - } - LLFastTimer::sCountAverage[LLFastTimer::FTM_OTHER] /= LLFastTimer::FTM_HISTORY_NUM; - LLFastTimer::sCallAverage[LLFastTimer::FTM_OTHER] /= LLFastTimer::FTM_HISTORY_NUM; - } - // Draw the window background - { - gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); - gl_rect_2d(0, getRect().getHeight(), getRect().getWidth(), 0, LLColor4(0.f, 0.f, 0.f, 0.25f)); - } + gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); + gl_rect_2d(0, getRect().getHeight(), getRect().getWidth(), 0, LLColor4(0.f, 0.f, 0.f, 0.25f)); S32 xleft = margin; S32 ytop = margin; @@ -515,148 +345,135 @@ void LLFastTimerView::draw() y -= (texth + 2); } - // Calc the total ticks - S32 histmax = llmin(LLFastTimer::sLastFrameIndex+1, MAX_VISIBLE_HISTORY); - U64 ticks_sum[LLFastTimer::FTM_HISTORY_NUM+1][FTV_DISPLAY_NUM]; - for (S32 j=-1; j<LLFastTimer::FTM_HISTORY_NUM; j++) - { - S32 hidx; - if (j >= 0) - hidx = (LLFastTimer::sLastFrameIndex+j) % LLFastTimer::FTM_HISTORY_NUM; - else - hidx = -1; - - // calculate tick info by adding child ticks to parents - for (S32 i=0; i < FTV_DISPLAY_NUM; i++) - { - if (mSubtractHidden && ft_display_table[i].disabled > 1) - { - continue; - } - // Get ticks - S32 tidx = ft_display_table[i].timer; - if (hidx >= 0) - ticks_sum[j+1][i] = LLFastTimer::sCountHistory[hidx][tidx]; - else - ticks_sum[j+1][i] = LLFastTimer::sCountAverage[tidx]; - S32 pidx = ft_display_table[i].parent; - // Add ticks to parents - while (pidx >= 0) - { - ticks_sum[j+1][pidx] += ticks_sum[j+1][i]; - pidx = ft_display_table[pidx].parent; - } - } - } + S32 histmax = llmin(LLFastTimer::getLastFrameIndex()+1, MAX_VISIBLE_HISTORY); // Draw the legend - - S32 legendwidth = 0; xleft = margin; ytop = y; y -= (texth + 2); - S32 cur_line = 0; - S32 display_line[FTV_DISPLAY_NUM]; - for (S32 i=0; i<FTV_DISPLAY_NUM; i++) + sTimerColors[&LLFastTimer::NamedTimer::getRootNamedTimer()] = LLColor4::grey; + + F32 hue = 0.f; + + for (timer_tree_iterator_t it = begin_timer_tree(LLFastTimer::NamedTimer::getRootNamedTimer()); + it != timer_tree_iterator_t(); + ++it) { - S32 disabled = ft_display_table[i].disabled; - if (disabled == 3) - { - continue; // skip row - } - display_line[i] = cur_line; - ft_display_idx[cur_line] = i; - cur_line++; - S32 level = ft_display_table[i].level; - S32 parent = ft_display_table[i].parent; - - x = xleft; + LLFastTimer::NamedTimer* idp = (*it); - left = x; right = x + texth; - top = y; bottom = y - texth; - S32 scale_offset = 0; - if (i == mHoverIndex) - { - scale_offset = llfloor(sinf(mHighlightTimer.getElapsedTimeF32() * 6.f) * 2.f); - } - gl_rect_2d(left - scale_offset, top + scale_offset, right + scale_offset, bottom - scale_offset, *ft_display_table[i].color); + const F32 HUE_INCREMENT = 0.23f; + hue = fmodf(hue + HUE_INCREMENT, 1.f); + // saturation increases with depth + F32 saturation = clamp_rescale((F32)idp->getDepth(), 0.f, 3.f, 0.f, 1.f); + // lightness alternates with depth + F32 lightness = idp->getDepth() % 2 ? 0.5f : 0.6f; - int tidx = ft_display_table[i].timer; - F32 ms = 0; - S32 calls = 0; - if (mHoverBarIndex > 0 && mHoverIndex >= 0) - { - S32 hidx = (LLFastTimer::sLastFrameIndex + (mHoverBarIndex - 1) - mScrollIndex) % LLFastTimer::FTM_HISTORY_NUM; - S32 bidx = LLFastTimer::FTM_HISTORY_NUM - mScrollIndex - mHoverBarIndex; - U64 ticks = ticks_sum[bidx+1][i]; // : LLFastTimer::sCountHistory[hidx][tidx]; - ms = (F32)((F64)ticks * iclock_freq); - calls = (S32)LLFastTimer::sCallHistory[hidx][tidx]; - } - else - { - U64 ticks = ticks_sum[0][i]; - ms = (F32)((F64)ticks * iclock_freq); - calls = (S32)LLFastTimer::sCallAverage[tidx]; - } - if (mDisplayCalls) - { - tdesc = llformat("%s (%d)",ft_display_table[i].desc,calls); - } - else - { - tdesc = llformat("%s [%.1f]",ft_display_table[i].desc,ms); - } - dx = (texth+4) + level*8; + LLColor4 child_color; + child_color.setHSL(hue, saturation, lightness); + + sTimerColors[idp] = child_color; + } - LLColor4 color = disabled > 1 ? LLColor4::grey : LLColor4::white; - if (level > 0) + const S32 LEGEND_WIDTH = 220; + { + LLLocalClipRect clip(LLRect(margin, y, LEGEND_WIDTH, margin)); + S32 cur_line = 0; + ft_display_idx.clear(); + std::map<LLFastTimer::NamedTimer*, S32> display_line; + for (timer_tree_iterator_t it = begin_timer_tree(LLFastTimer::NamedTimer::getRootNamedTimer()); + it != timer_tree_iterator_t(); + ++it) { - S32 line_start_y = (top + bottom) / 2; - S32 line_end_y = line_start_y + ((texth + 2) * (display_line[i] - display_line[parent])) - (texth / 2); - gl_line_2d(x + dx - 8, line_start_y, x + dx, line_start_y, color); - S32 line_x = x + (texth + 4) + ((level - 1) * 8); - gl_line_2d(line_x, line_start_y, line_x, line_end_y, color); - if (disabled == 1) + LLFastTimer::NamedTimer* idp = (*it); + display_line[idp] = cur_line; + ft_display_idx.push_back(idp); + cur_line++; + + x = xleft; + + left = x; right = x + texth; + top = y; bottom = y - texth; + S32 scale_offset = 0; + if (idp == mHoverID) { - gl_line_2d(line_x+4, line_start_y-3, line_x+4, line_start_y+4, color); + scale_offset = llfloor(sinf(mHighlightTimer.getElapsedTimeF32() * 6.f) * 2.f); } - } + gl_rect_2d(left - scale_offset, top + scale_offset, right + scale_offset, bottom - scale_offset, sTimerColors[idp]); - x += dx; - BOOL is_child_of_hover_item = (i == mHoverIndex); - S32 next_parent = ft_display_table[i].parent; - while(!is_child_of_hover_item && next_parent >= 0) - { - is_child_of_hover_item = (mHoverIndex == next_parent); - next_parent = ft_display_table[next_parent].parent; - } + F32 ms = 0; + S32 calls = 0; + if (mHoverBarIndex > 0 && mHoverID) + { + S32 hidx = LLFastTimer::NamedTimer::HISTORY_NUM - mScrollIndex - mHoverBarIndex; + U64 ticks = idp->getHistoricalCount(hidx); + ms = (F32)((F64)ticks * iclock_freq); + calls = (S32)idp->getHistoricalCalls(hidx); + } + else + { + U64 ticks = idp->getCountAverage(); + ms = (F32)((F64)ticks * iclock_freq); + calls = (S32)idp->getCallAverage(); + } - if (is_child_of_hover_item) - { - LLFontGL::getFontMonospace()->renderUTF8(tdesc, 0, x, y, color, LLFontGL::LEFT, LLFontGL::TOP, LLFontGL::BOLD); - } - else - { - LLFontGL::getFontMonospace()->renderUTF8(tdesc, 0, x, y, color, LLFontGL::LEFT, LLFontGL::TOP); - } - y -= (texth + 2); + if (mDisplayCalls) + { + tdesc = llformat("%s (%d)",idp->getName().c_str(),calls); + } + else + { + tdesc = llformat("%s [%.1f]",idp->getName().c_str(),ms); + } + dx = (texth+4) + idp->getDepth()*8; - textw = dx + LLFontGL::getFontMonospace()->getWidth(std::string(ft_display_table[i].desc)) + 40; - if (textw > legendwidth) - legendwidth = textw; - } - for (S32 i=cur_line; i<FTV_DISPLAY_NUM; i++) - { - ft_display_idx[i] = -1; + LLColor4 color = LLColor4::white; + if (idp->getDepth() > 0) + { + S32 line_start_y = (top + bottom) / 2; + S32 line_end_y = line_start_y + ((texth + 2) * (cur_line - display_line[idp->getParent()])) - texth; + gl_line_2d(x + dx - 8, line_start_y, x + dx, line_start_y, color); + S32 line_x = x + (texth + 4) + ((idp->getDepth() - 1) * 8); + gl_line_2d(line_x, line_start_y, line_x, line_end_y, color); + if (idp->getCollapsed() && !idp->getChildren().empty()) + { + gl_line_2d(line_x+4, line_start_y-3, line_x+4, line_start_y+4, color); + } + } + + x += dx; + BOOL is_child_of_hover_item = (idp == mHoverID); + LLFastTimer::NamedTimer* next_parent = idp->getParent(); + while(!is_child_of_hover_item && next_parent) + { + is_child_of_hover_item = (mHoverID == next_parent); + next_parent = next_parent->getParent(); + } + + LLFontGL::getFontMonospace()->renderUTF8(tdesc, 0, + x, y, + color, + LLFontGL::LEFT, LLFontGL::TOP, + is_child_of_hover_item ? LLFontGL::BOLD : LLFontGL::NORMAL); + + y -= (texth + 2); + + textw = dx + LLFontGL::getFontMonospace()->getWidth(idp->getName()) + 40; + + if (idp->getCollapsed()) + { + it.skipDescendants(); + } + } } - xleft += legendwidth + 8; + + xleft += LEGEND_WIDTH + 8; // ytop = ytop; // update rectangle that includes timer bars mBarRect.mLeft = xleft; - mBarRect.mRight = getRect().mRight - xleft; + mBarRect.mRight = getRect().getWidth(); mBarRect.mTop = ytop - ((S32)LLFontGL::getFontMonospace()->getLineHeight() + 4); mBarRect.mBottom = margin + LINE_GRAPH_HEIGHT; @@ -668,25 +485,18 @@ void LLFastTimerView::draw() barw = width - xleft - margin; // Draw the history bars - if (LLFastTimer::sLastFrameIndex >= 0) + if (LLFastTimer::getLastFrameIndex() >= 0) { + LLLocalClipRect clip(LLRect(xleft, ytop - margin, getRect().getWidth() - margin, margin)); + U64 totalticks; if (!LLFastTimer::sPauseHistory) { - U64 ticks = 0; - int hidx = (LLFastTimer::sLastFrameIndex - mScrollIndex) % LLFastTimer::FTM_HISTORY_NUM; - for (S32 i=0; i<FTV_DISPLAY_NUM; i++) - { - if (mSubtractHidden && ft_display_table[i].disabled > 1) - { - continue; - } - int tidx = ft_display_table[i].timer; - ticks += LLFastTimer::sCountHistory[hidx][tidx]; - } - if (LLFastTimer::sCurFrameIndex >= 10) + U64 ticks = LLFastTimer::NamedTimer::getRootNamedTimer().getHistoricalCount(mScrollIndex); + + if (LLFastTimer::getCurFrameIndex() >= 10) { - U64 framec = LLFastTimer::sCurFrameIndex; + U64 framec = LLFastTimer::getCurFrameIndex(); U64 avg = (U64)mAvgCountTotal; mAvgCountTotal = (avg*framec + ticks) / (framec + 1); if (ticks > mMaxCountTotal) @@ -694,11 +504,13 @@ void LLFastTimerView::draw() mMaxCountTotal = ticks; } } -#if 1 + if (ticks < mAvgCountTotal/100 || ticks > mAvgCountTotal*100) - LLFastTimer::sResetHistory = 1; -#endif - if (LLFastTimer::sCurFrameIndex < 10 || LLFastTimer::sResetHistory) + { + LLFastTimer::sResetHistory = true; + } + + if (LLFastTimer::getCurFrameIndex() < 10 || LLFastTimer::sResetHistory) { mAvgCountTotal = ticks; mMaxCountTotal = ticks; @@ -719,16 +531,8 @@ void LLFastTimerView::draw() totalticks = 0; for (S32 j=0; j<histmax; j++) { - U64 ticks = 0; - for (S32 i=0; i<FTV_DISPLAY_NUM; i++) - { - if (mSubtractHidden && ft_display_table[i].disabled > 1) - { - continue; - } - int tidx = ft_display_table[i].timer; - ticks += LLFastTimer::sCountHistory[j][tidx]; - } + U64 ticks = LLFastTimer::NamedTimer::getRootNamedTimer().getHistoricalCount(j); + if (ticks > totalticks) totalticks = ticks; } @@ -801,18 +605,23 @@ void LLFastTimerView::draw() gl_rect_2d(graph_rect, FALSE); } + mBarStart.clear(); + mBarEnd.clear(); + // Draw bars for each history entry // Special: -1 = show running average gGL.getTexUnit(0)->bind(box_imagep->getImage()); for (S32 j=-1; j<histmax && y > LINE_GRAPH_HEIGHT; j++) { - int sublevel_dx[FTV_DISPLAY_NUM+1]; - int sublevel_left[FTV_DISPLAY_NUM+1]; - int sublevel_right[FTV_DISPLAY_NUM+1]; + mBarStart.push_back(std::vector<S32>()); + mBarEnd.push_back(std::vector<S32>()); + int sublevel_dx[FTV_MAX_DEPTH]; + int sublevel_left[FTV_MAX_DEPTH]; + int sublevel_right[FTV_MAX_DEPTH]; S32 tidx; if (j >= 0) { - tidx = LLFastTimer::FTM_HISTORY_NUM - j - 1 - mScrollIndex; + tidx = LLFastTimer::NamedTimer::HISTORY_NUM - j - 1 - mScrollIndex; } else { @@ -822,88 +631,75 @@ void LLFastTimerView::draw() x = xleft; // draw the bars for each stat - int xpos[FTV_DISPLAY_NUM+1]; - int deltax[FTV_DISPLAY_NUM+1]; - xpos[0] = xleft; + std::vector<S32> xpos; + std::vector<S32> deltax; + xpos.push_back(xleft); + + LLFastTimer::NamedTimer* prev_id = NULL; - for (S32 i = 0; i < FTV_DISPLAY_NUM; i++) + S32 i = 0; + for(timer_tree_iterator_t it = begin_timer_tree(LLFastTimer::NamedTimer::getRootNamedTimer()); + it != end_timer_tree(); + ++it, ++i) { - if (ft_display_table[i].disabled > 1) - { - continue; - } - - F32 frac = (F32)ticks_sum[tidx+1][i] / (F32)totalticks; + LLFastTimer::NamedTimer* idp = (*it); + F32 frac = tidx == -1 + ? (F32)idp->getCountAverage() / (F32)totalticks + : (F32)idp->getHistoricalCount(tidx) / (F32)totalticks; dx = llround(frac * (F32)barw); - deltax[i] = dx; + S32 prev_delta_x = deltax.empty() ? 0 : deltax.back(); + deltax.push_back(dx); - int level = ft_display_table[i].level; - int parent = ft_display_table[i].parent; - llassert(level < FTV_DISPLAY_NUM); - llassert(parent < FTV_DISPLAY_NUM); + int level = idp->getDepth() - 1; - left = xpos[level]; - - S32 prev_idx = i - 1; - while (prev_idx > 0) - { - if (ft_display_table[prev_idx].disabled <= 1) - { - break; - } - prev_idx--; - } - S32 next_idx = i + 1; - while (next_idx < FTV_DISPLAY_NUM) + while ((S32)xpos.size() > level + 1) { - if (ft_display_table[next_idx].disabled <= 1) - { - break; - } - next_idx++; + xpos.pop_back(); } - + left = xpos.back(); + if (level == 0) - { + { sublevel_left[level] = xleft; sublevel_dx[level] = dx; sublevel_right[level] = sublevel_left[level] + sublevel_dx[level]; - } - else if (i==0 || ft_display_table[prev_idx].level < level) + } + else if (prev_id && prev_id->getDepth() < idp->getDepth()) { - // If we are the first entry at a new sublevel block, calc the - // total width of this sublevel and modify left to align block. - U64 sublevelticks = ticks_sum[tidx+1][i]; - for (S32 k=i+1; k<FTV_DISPLAY_NUM; k++) - { - if (ft_display_table[k].level < level) - break; - if (ft_display_table[k].disabled <= 1 && ft_display_table[k].level == level) - sublevelticks += ticks_sum[tidx+1][k]; - } - F32 subfrac = (F32)sublevelticks / (F32)totalticks; + U64 sublevelticks = 0; + + for (LLFastTimer::NamedTimer::child_const_iter it = prev_id->beginChildren(); + it != prev_id->endChildren(); + ++it) + { + sublevelticks += (tidx == -1) + ? (*it)->getCountAverage() + : (*it)->getHistoricalCount(tidx); + } + + F32 subfrac = (F32)sublevelticks / (F32)totalticks; sublevel_dx[level] = (int)(subfrac * (F32)barw + .5f); - if (mDisplayCenter == 1) // center aligned + if (mDisplayCenter == ALIGN_CENTER) { - left += (deltax[parent] - sublevel_dx[level])/2; + left += (prev_delta_x - sublevel_dx[level])/2; } - else if (mDisplayCenter == 2) // right aligned + else if (mDisplayCenter == ALIGN_RIGHT) { - left += (deltax[parent] - sublevel_dx[level]); - } + left += (prev_delta_x - sublevel_dx[level]); + } sublevel_left[level] = left; sublevel_right[level] = sublevel_left[level] + sublevel_dx[level]; } right = left + dx; - xpos[level] = right; - xpos[level+1] = left; + xpos.back() = right; + xpos.push_back(left); - mBarStart[(j + 1) * FTV_DISPLAY_NUM + i] = left; - mBarEnd[(j + 1) * FTV_DISPLAY_NUM + i] = right; + mBarStart.back().push_back(left); + mBarEnd.back().push_back(right); top = y; bottom = y - barh; @@ -911,23 +707,23 @@ void LLFastTimerView::draw() if (right > left) { //U32 rounded_edges = 0; - LLColor4 color = *ft_display_table[i].color; + LLColor4 color = sTimerColors[idp];//*ft_display_table[i].color; S32 scale_offset = 0; - BOOL is_child_of_hover_item = (i == mHoverIndex); - S32 next_parent = ft_display_table[i].parent; - while(!is_child_of_hover_item && next_parent >= 0) + BOOL is_child_of_hover_item = (idp == mHoverID); + LLFastTimer::NamedTimer* next_parent = idp->getParent(); + while(!is_child_of_hover_item && next_parent) { - is_child_of_hover_item = (mHoverIndex == next_parent); - next_parent = ft_display_table[next_parent].parent; + is_child_of_hover_item = (mHoverID == next_parent); + next_parent = next_parent->getParent(); } - if (i == mHoverIndex) + if (idp == mHoverID) { scale_offset = llfloor(sinf(mHighlightTimer.getElapsedTimeF32() * 6.f) * 3.f); //color = lerp(color, LLColor4::black, -0.4f); } - else if (mHoverIndex >= 0 && !is_child_of_hover_item) + else if (mHoverID != NULL && !is_child_of_hover_item) { color = lerp(color, LLColor4::grey, 0.8f); } @@ -938,7 +734,13 @@ void LLFastTimerView::draw() gl_segmented_rect_2d_fragment_tex(sublevel_left[level], top - level + scale_offset, sublevel_right[level], bottom + level - scale_offset, box_imagep->getTextureWidth(), box_imagep->getTextureHeight(), 16, start_fragment, end_fragment); } - + + if ((*it)->getCollapsed()) + { + it.skipDescendants(); + } + + prev_id = idp; } y -= (barh + dy); if (j < 0) @@ -973,10 +775,10 @@ void LLFastTimerView::draw() //highlight visible range { - S32 first_frame = LLFastTimer::FTM_HISTORY_NUM - mScrollIndex; + S32 first_frame = LLFastTimer::NamedTimer::HISTORY_NUM - mScrollIndex; S32 last_frame = first_frame - MAX_VISIBLE_HISTORY; - F32 frame_delta = ((F32) (graph_rect.getWidth()))/(LLFastTimer::FTM_HISTORY_NUM-1); + F32 frame_delta = ((F32) (graph_rect.getWidth()))/(LLFastTimer::NamedTimer::HISTORY_NUM-1); F32 right = (F32) graph_rect.mLeft + frame_delta*first_frame; F32 left = (F32) graph_rect.mLeft + frame_delta*last_frame; @@ -999,28 +801,27 @@ void LLFastTimerView::draw() } U64 cur_max = 0; - for (S32 idx = 0; idx < FTV_DISPLAY_NUM; ++idx) + for(timer_tree_iterator_t it = begin_timer_tree(LLFastTimer::NamedTimer::getRootNamedTimer()); + it != end_timer_tree(); + ++it) { - if (ft_display_table[idx].disabled > 1) - { //skip disabled timers - continue; - } + LLFastTimer::NamedTimer* idp = (*it); //fatten highlighted timer - if (mHoverIndex == idx) + if (mHoverID == idp) { gGL.flush(); glLineWidth(3); } - const F32 * col = ft_display_table[idx].color->mV; + const F32 * col = sTimerColors[idp].mV;// ft_display_table[idx].color->mV; F32 alpha = 1.f; - if (mHoverIndex >= 0 && - idx != mHoverIndex) + if (mHoverID != NULL && + idp != mHoverID) { //fade out non-hihglighted timers - if (ft_display_table[idx].parent != mHoverIndex) + if (idp->getParent() != mHoverID) { alpha = alpha_interp; } @@ -1028,9 +829,9 @@ void LLFastTimerView::draw() gGL.color4f(col[0], col[1], col[2], alpha); gGL.begin(LLRender::LINE_STRIP); - for (U32 j = 0; j < LLFastTimer::FTM_HISTORY_NUM; j++) + for (U32 j = 0; j < LLFastTimer::NamedTimer::HISTORY_NUM; j++) { - U64 ticks = ticks_sum[j+1][idx]; + U64 ticks = idp->getHistoricalCount(j); if (mDisplayHz) { @@ -1040,26 +841,31 @@ void LLFastTimerView::draw() } else if (mDisplayCalls) { - S32 tidx = ft_display_table[idx].timer; - S32 hidx = (LLFastTimer::sLastFrameIndex + j) % LLFastTimer::FTM_HISTORY_NUM; - ticks = (S32)LLFastTimer::sCallHistory[hidx][tidx]; + ticks = (S32)idp->getHistoricalCalls(j); } if (alpha == 1.f) - { //normalize to highlighted timer + { + //normalize to highlighted timer cur_max = llmax(cur_max, ticks); } - F32 x = graph_rect.mLeft + ((F32) (graph_rect.getWidth()))/(LLFastTimer::FTM_HISTORY_NUM-1)*j; + F32 x = graph_rect.mLeft + ((F32) (graph_rect.getWidth()))/(LLFastTimer::NamedTimer::HISTORY_NUM-1)*j; F32 y = graph_rect.mBottom + (F32) graph_rect.getHeight()/max_ticks*ticks; gGL.vertex2f(x,y); } gGL.end(); - if (mHoverIndex == idx) + if (mHoverID == idp) { gGL.flush(); glLineWidth(1); } + + if (idp->getCollapsed()) + { + //skip hidden timers + it.skipDescendants(); + } } //interpolate towards new maximum @@ -1071,12 +877,16 @@ void LLFastTimerView::draw() alpha_interp = alpha_interp + (alpha_target-alpha_interp) * dt; - if (mHoverIndex >= 0) + if (mHoverID != NULL) { x = (graph_rect.mRight + graph_rect.mLeft)/2; y = graph_rect.mBottom + 8; - LLFontGL::getFontMonospace()->renderUTF8(std::string(ft_display_table[mHoverIndex].desc), 0, x, y, LLColor4::white, + LLFontGL::getFontMonospace()->renderUTF8( + mHoverID->getName(), + 0, + x, y, + LLColor4::white, LLFontGL::LEFT, LLFontGL::BOTTOM); } } @@ -1086,87 +896,269 @@ void LLFastTimerView::draw() if (mPrintStats >= 0) { std::string legend_stat; - S32 stat_num; - S32 first = 1; - for (stat_num = 0; stat_num < FTV_DISPLAY_NUM; stat_num++) + bool first = true; + for(timer_tree_iterator_t it = begin_timer_tree(LLFastTimer::NamedTimer::getRootNamedTimer()); + it != end_timer_tree(); + ++it) { - if (ft_display_table[stat_num].disabled > 1) - continue; + LLFastTimer::NamedTimer* idp = (*it); + if (!first) + { legend_stat += ", "; - first=0; - legend_stat += ft_display_table[stat_num].desc; + } + first = true; + legend_stat += idp->getName(); + + if (idp->getCollapsed()) + { + it.skipDescendants(); + } } llinfos << legend_stat << llendl; std::string timer_stat; - first = 1; - for (stat_num = 0; stat_num < FTV_DISPLAY_NUM; stat_num++) + first = true; + for(timer_tree_iterator_t it = begin_timer_tree(LLFastTimer::NamedTimer::getRootNamedTimer()); + it != end_timer_tree(); + ++it) { - S32 disabled = ft_display_table[stat_num].disabled; - if (disabled > 1) - continue; + LLFastTimer::NamedTimer* idp = (*it); + if (!first) + { timer_stat += ", "; - first=0; + } + first = false; + U64 ticks; - S32 tidx = ft_display_table[stat_num].timer; if (mPrintStats > 0) { - S32 hidx = (LLFastTimer::sLastFrameIndex+(mPrintStats-1)-mScrollIndex) % LLFastTimer::FTM_HISTORY_NUM; - ticks = disabled >= 1 ? ticks_sum[mPrintStats][stat_num] : LLFastTimer::sCountHistory[hidx][tidx]; + S32 hidx = (mPrintStats - 1) - mScrollIndex; + ticks = idp->getHistoricalCount(hidx); } else { - ticks = disabled >= 1 ? ticks_sum[0][stat_num] : LLFastTimer::sCountAverage[tidx]; + ticks = idp->getCountAverage(); } F32 ms = (F32)((F64)ticks * iclock_freq); timer_stat += llformat("%.1f",ms); + + if (idp->getCollapsed()) + { + it.skipDescendants(); + } } llinfos << timer_stat << llendl; mPrintStats = -1; } - mHoverIndex = -1; + mHoverID = NULL; mHoverBarIndex = -1; LLView::draw(); } -F64 LLFastTimerView::getTime(LLFastTimer::EFastTimerType tidx) +F64 LLFastTimerView::getTime(LLFastTimer::NamedTimer::FrameState& id) { - // Find table index - S32 i; - for (i=0; i<FTV_DISPLAY_NUM; i++) + return (F64)id.mTimer->getCountAverage() / (F64)LLFastTimer::countsPerSecond(); +} + +//static +LLSD LLFastTimerView::analyzePerformanceLogDefault(std::istream& is) +{ + LLSD ret; + + LLSD cur; + + LLSD::Real total_time = 0.0; + LLSD::Integer total_frames = 0; + + while (!is.eof() && LLSDSerialize::fromXML(cur, is)) { - if (tidx == ft_display_table[i].timer) + for (LLSD::map_iterator iter = cur.beginMap(); iter != cur.endMap(); ++iter) { - break; + std::string label = iter->first; + + F64 time = iter->second["Time"].asReal(); + + total_time += time; + + if (time > 0.0) + { + ret[label]["TotalTime"] = ret[label]["TotalTime"].asReal() + time; + ret[label]["MaxTime"] = llmax(time, ret[label]["MaxTime"].asReal()); + + if (ret[label]["MinTime"].asReal() == 0) + { + ret[label]["MinTime"] = time; + } + else + { + ret[label]["MinTime"] = llmin(ret[label]["MinTime"].asReal(), time); + } + + LLSD::Integer samples = iter->second["Calls"].asInteger(); + + ret[label]["Samples"] = ret[label]["Samples"].asInteger() + samples; + ret[label]["MaxSamples"] = llmax(ret[label]["MaxSamples"].asInteger(), samples); + + if (ret[label]["MinSamples"].asInteger() == 0) + { + ret[label]["MinSamples"] = samples; + } + else + { + ret[label]["MinSamples"] = llmin(ret[label]["MinSamples"].asInteger(), samples); + } + } } + total_frames++; } + + ret["SessionTime"] = total_time; + ret["FrameCount"] = total_frames; - if (i == FTV_DISPLAY_NUM) + return ret; + +} + +//static +void LLFastTimerView::doAnalysisDefault(std::string baseline, std::string target, std::string output) +{ + + //analyze baseline + std::ifstream base_is(baseline.c_str()); + LLSD base = analyzePerformanceLogDefault(base_is); + base_is.close(); + + //analyze current + std::ifstream target_is(target.c_str()); + LLSD current = analyzePerformanceLogDefault(target_is); + target_is.close(); + + //output comparision + std::ofstream os(output.c_str()); + + LLSD::Real session_time = current["SessionTime"].asReal(); + + os << "Label, % Change, % of Session, Cur Min, Cur Max, Cur Mean, Cur Total, Cur Samples, Base Min, Base Max, Base Mean, Base Total, Base Samples\n"; + for (LLSD::map_iterator iter = base.beginMap(); iter != base.endMap(); ++iter) { - // walked off the end of ft_display_table without finding - // the desired timer type - llwarns << "Timer type " << tidx << " not known." << llendl; - return F64(0.0); + LLSD::String label = iter->first; + + if (current[label]["Samples"].asInteger() == 0 || + base[label]["Samples"].asInteger() == 0) + { + //cannot compare + continue; + } + LLSD::Real a = base[label]["TotalTime"].asReal() / base[label]["Samples"].asReal(); + LLSD::Real b = current[label]["TotalTime"].asReal() / base[label]["Samples"].asReal(); + + LLSD::Real diff = b-a; + + LLSD::Real perc = diff/a * 100; + + os << llformat("%s, %.2f, %.4f, %.4f, %.4f, %.4f, %.4f, %d, %.4f, %.4f, %.4f, %.4f, %d\n", + label.c_str(), + (F32) perc, + (F32) (current[label]["TotalTime"].asReal()/session_time * 100.0), + (F32) current[label]["MinTime"].asReal(), + (F32) current[label]["MaxTime"].asReal(), + (F32) b, + (F32) current[label]["TotalTime"].asReal(), + current[label]["Samples"].asInteger(), + (F32) base[label]["MinTime"].asReal(), + (F32) base[label]["MaxTime"].asReal(), + (F32) a, + (F32) base[label]["TotalTime"].asReal(), + base[label]["Samples"].asInteger()); } - S32 table_idx = i; - // Add child ticks to parent - U64 ticks = LLFastTimer::sCountAverage[tidx]; - S32 level = ft_display_table[table_idx].level; - for (i=table_idx+1; i<FTV_DISPLAY_NUM; i++) + os.flush(); + os.close(); +} + +//------------------------- +//static +LLSD LLFastTimerView::analyzeMetricPerformanceLog(std::istream& is) +{ + LLSD ret; + LLSD cur; + + while (!is.eof() && LLSDSerialize::fromXML(cur, is)) { - if (ft_display_table[i].level <= level) + for (LLSD::map_iterator iter = cur.beginMap(); iter != cur.endMap(); ++iter) { - break; + std::string label = iter->first; + + LLMetricPerformanceTester* tester = LLMetricPerformanceTester::getTester(iter->second["Name"].asString()) ; + if(tester) + { + ret[label]["Name"] = iter->second["Name"] ; + + S32 num_of_strings = tester->getNumOfMetricStrings() ; + for(S32 index = 0 ; index < num_of_strings ; index++) + { + ret[label][ tester->getMetricString(index) ] = iter->second[ tester->getMetricString(index) ] ; + } + } } - ticks += LLFastTimer::sCountAverage[ft_display_table[i].timer]; } + + return ret; +} + +//static +void LLFastTimerView::doAnalysisMetrics(std::string baseline, std::string target, std::string output) +{ + if(!LLMetricPerformanceTester::hasMetricPerformanceTesters()) + { + return ; + } + + //analyze baseline + std::ifstream base_is(baseline.c_str()); + LLSD base = analyzeMetricPerformanceLog(base_is); + base_is.close(); + + //analyze current + std::ifstream target_is(target.c_str()); + LLSD current = analyzeMetricPerformanceLog(target_is); + target_is.close(); - return (F64)ticks / (F64)LLFastTimer::countsPerSecond(); + //output comparision + std::ofstream os(output.c_str()); + + os << "Label, Metric, Base(B), Target(T), Diff(T-B), Percentage(100*T/B)\n"; + for(LLMetricPerformanceTester::name_tester_map_t::iterator iter = LLMetricPerformanceTester::sTesterMap.begin() ; + iter != LLMetricPerformanceTester::sTesterMap.end() ; ++iter) + { + LLMetricPerformanceTester* tester = ((LLMetricPerformanceTester*)iter->second) ; + tester->analyzePerformance(&os, &base, ¤t) ; + } + + os.flush(); + os.close(); } + +//static +void LLFastTimerView::doAnalysis(std::string baseline, std::string target, std::string output) +{ + if(LLFastTimer::sLog) + { + doAnalysisDefault(baseline, target, output) ; + return ; + } + + if(LLFastTimer::sMetricLog) + { + doAnalysisMetrics(baseline, target, output) ; + return ; + } +} + + diff --git a/indra/newview/llfasttimerview.h b/indra/newview/llfasttimerview.h index 611bca649436563f17fe78c319a41cff2d8d55d1..78ca7b50d6ef612c60355d9b7b5c2298dcf7af97 100644 --- a/indra/newview/llfasttimerview.h +++ b/indra/newview/llfasttimerview.h @@ -34,39 +34,62 @@ #define LL_LLFASTTIMERVIEW_H #include "llfloater.h" -#include "llframetimer.h" +#include "llfasttimer.h" class LLFastTimerView : public LLFloater { public: LLFastTimerView(const LLRect& rect); - virtual ~LLFastTimerView(); + + static BOOL sAnalyzePerformance; + + static void doAnalysis(std::string baseline, std::string target, std::string output); + +private: + static void doAnalysisDefault(std::string baseline, std::string target, std::string output) ; + static void doAnalysisMetrics(std::string baseline, std::string target, std::string output) ; + static LLSD analyzeMetricPerformanceLog(std::istream& is) ; + static LLSD analyzePerformanceLogDefault(std::istream& is) ; + +public: virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); virtual BOOL handleRightMouseDown(S32 x, S32 y, MASK mask); virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask); virtual BOOL handleHover(S32 x, S32 y, MASK mask); + virtual BOOL handleToolTip(S32 x, S32 y, std::string& msg, LLRect* sticky_rect_screen); virtual BOOL handleScrollWheel(S32 x, S32 y, S32 clicks); virtual void draw(); - S32 getLegendIndex(S32 y); - F64 getTime(LLFastTimer::EFastTimerType tidx); + LLFastTimer::NamedTimer* getLegendID(S32 y); + F64 getTime(LLFastTimer::NamedTimer::FrameState& id); private: - S32* mBarStart; - S32* mBarEnd; + typedef std::vector<std::vector<S32> > bar_positions_t; + bar_positions_t mBarStart; + bar_positions_t mBarEnd; S32 mDisplayMode; - S32 mDisplayCenter; + + typedef enum child_alignment + { + ALIGN_LEFT, + ALIGN_CENTER, + ALIGN_RIGHT, + ALIGN_COUNT + } ChildAlignment; + + ChildAlignment mDisplayCenter; S32 mDisplayCalls; S32 mDisplayHz; U64 mAvgCountTotal; U64 mMaxCountTotal; LLRect mBarRect; S32 mScrollIndex; - S32 mHoverIndex; + LLFastTimer::NamedTimer* mHoverID; + LLFastTimer::NamedTimer* mHoverTimer; + LLRect mToolTipRect; S32 mHoverBarIndex; LLFrameTimer mHighlightTimer; - S32 mSubtractHidden; S32 mPrintStats; }; diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp index 45bbea7e2a0846c8b1a07948f78e5df5fa53afca..0e5b943dd3633542e7c4fe83920b17256ed6feed 100644 --- a/indra/newview/llfavoritesbar.cpp +++ b/indra/newview/llfavoritesbar.cpp @@ -33,16 +33,21 @@ #include "llviewerprecompiledheaders.h" #include "llfavoritesbar.h" + +#include "llbutton.h" +#include "llfloaterreg.h" +#include "llinventory.h" #include "lluictrlfactory.h" +#include "llmenugl.h" #include "llagent.h" -#include "llviewerinventory.h" -#include "llinventory.h" -#include "llinventorymodel.h" -#include "llbutton.h" #include "llinventorybridge.h" +#include "llinventorymodel.h" +#include "llviewerinventory.h" +#include "llviewermenu.h" +#include "llviewermenu.h" -static LLRegisterWidget<LLFavoritesBarCtrl> r("favorites_bar"); +static LLDefaultWidgetRegistry::Register<LLFavoritesBarCtrl> r("favorites_bar"); // updateButtons's helper struct LLFavoritesSort @@ -64,16 +69,64 @@ struct LLFavoritesSort } }; +class LLVisibilityTrackingMenuGL : public LLMenuGL +{ +protected: + LLVisibilityTrackingMenuGL(const LLMenuGL::Params&); + friend class LLUICtrlFactory; +public: + virtual void onVisibilityChange (BOOL curVisibilityIn); + void setChevronRect(const LLRect& rect) { mChevronRect = rect; } + + bool getClosedByChevronClick() { return mClosedByChevronClick; } + void resetClosedByChevronClick() { mClosedByChevronClick = false; } + +protected: + bool mClosedByChevronClick; + LLRect mChevronRect; +}; + +LLVisibilityTrackingMenuGL::LLVisibilityTrackingMenuGL(const LLMenuGL::Params& p) +: LLMenuGL(p), + mClosedByChevronClick(false) +{ +} + +//virtual +void LLVisibilityTrackingMenuGL::onVisibilityChange (BOOL curVisibilityIn) +{ + S32 x,y; + LLUI::getCursorPositionLocal(LLUI::getRootView(), &x, &y); + + if (!curVisibilityIn && mChevronRect.pointInRect(x, y)) + { + mClosedByChevronClick = true; + } +} + LLFavoritesBarCtrl::LLFavoritesBarCtrl(const LLFavoritesBarCtrl::Params& p) : LLUICtrl(p), - mFont(p.font.isProvided() ? p.font() : LLFontGL::getFontSansSerifSmall()) + mFont(p.font.isProvided() ? p.font() : LLFontGL::getFontSansSerifSmall()), + mPopupMenuHandle(), + mInventoryItemsPopupMenuHandle() { + // Register callback for menus with current registrar (will be parent panel's registrar) + LLUICtrl::CommitCallbackRegistry::currentRegistrar().add("Favorites.DoToSelected", + boost::bind(&LLFavoritesBarCtrl::doToSelected, this, _2)); + + // Add this if we need to selectively enable items + //LLUICtrl::EnableCallbackRegistry::currentRegistrar().add("Favorites.EnableSelected", + // boost::bind(&LLFavoritesBarCtrl::enableSelected, this, _2)); + gInventory.addObserver(this); } LLFavoritesBarCtrl::~LLFavoritesBarCtrl() { gInventory.removeObserver(this); + + LLView::deleteViewByHandle(mPopupMenuHandle); + LLView::deleteViewByHandle(mInventoryItemsPopupMenuHandle); } BOOL LLFavoritesBarCtrl::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, @@ -87,9 +140,7 @@ BOOL LLFavoritesBarCtrl::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, switch (cargo_type) { - // IAN BUG: did the spec ask for calling cards here? case DAD_LANDMARK: - case DAD_CALLINGCARD: { // Copy the item into the favorites folder (if it's not already there). LLInventoryItem *item = (LLInventoryItem *)cargo_data; @@ -126,6 +177,31 @@ BOOL LLFavoritesBarCtrl::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, //virtual void LLFavoritesBarCtrl::changed(U32 mask) +{ + if (mFavoriteFolderId.isNull()) + { + mFavoriteFolderId = gInventory.findCategoryUUIDForType(LLAssetType::AT_FAVORITE); + + if (mFavoriteFolderId.notNull()) + { + gInventory.fetchDescendentsOf(mFavoriteFolderId); + } + } + else + { + updateButtons(getRect().getWidth()); + } +} + +//virtual +void LLFavoritesBarCtrl::reshape(S32 width, S32 height, BOOL called_from_parent) +{ + updateButtons(width); + + LLUICtrl::reshape(width, height, called_from_parent); +} + +void LLFavoritesBarCtrl::updateButtons(U32 bar_width) { LLInventoryModel::item_array_t items; @@ -134,170 +210,317 @@ void LLFavoritesBarCtrl::changed(U32 mask) return; } + const S32 buttonHPad = LLUI::sSettingGroups["config"]->getS32("ButtonHPad"); + const S32 buttonHGap = 2; + const S32 buttonVGap = 2; + static LLButton::Params default_button_params(LLUICtrlFactory::getDefaultParams<LLButton::Params>()); + std::string flat_icon = "transparent.j2c"; + std::string hover_icon = default_button_params.image_unselected.name; + std::string hover_icon_selected = default_button_params.image_selected.name; + + S32 curr_x = buttonHGap; + S32 count = items.count(); - if (getChildCount() == count) + + const S32 chevron_button_width = mFont->getWidth(">>") + buttonHPad * 2; + + S32 buttons_space = bar_width - curr_x; + + S32 first_drop_down_item = count; + + // Calculating, how much buttons can fit in the bar + S32 buttons_width = 0; + for (S32 i = 0; i < count; ++i) { - // Check whether buttons are reflecting state of favorite inventory folder - const LLView::child_list_t *buttons_list = getChildList(); - S32 i = 0; - for(LLView::child_list_const_iter_t iter = buttons_list->begin(); iter != buttons_list->end(); iter++) + buttons_width += mFont->getWidth(items.get(i)->getName()) + buttonHPad * 2 + buttonHGap; + if (buttons_width > buttons_space) { - LLButton *button = (LLButton *)*iter; - LLInventoryItem* item = items.get(i); - // tooltip contains full name of item, label can be cutted - if (button->getToolTip() != item->getName()) + // There is no space for all buttons. + // Calculating the number of buttons, that are fit with chevron button + buttons_space -= chevron_button_width + buttonHGap; + while (i >= 0 && buttons_width > buttons_space) { - break; + buttons_width -= mFont->getWidth(items.get(i)->getName()) + buttonHPad * 2 + buttonHGap; + i--; } - - - i++; + first_drop_down_item = i + 1; // First item behind visible items + + break; } + } - // Check passed, nothing is changed - if (i < items.count()) + // If inventory items are not changed up to mFirstDropDownItem, no need to recreate them + if (mFirstDropDownItem == first_drop_down_item && (mItemNamesCache.size() == count || mItemNamesCache.size() == mFirstDropDownItem)) + { + S32 i; + for (i = 0; i < mFirstDropDownItem; ++i) { + if (mItemNamesCache.get(i) != items.get(i)->getName()) + { + break; + } + } + if (i == mFirstDropDownItem) + { + // Chevron button should stay right aligned + LLView *chevron_button = getChildView(std::string(">>"), FALSE, FALSE); + if (chevron_button) + { + LLRect rect; + rect.setOriginAndSize(bar_width - chevron_button_width - buttonHGap, buttonVGap, chevron_button_width, getRect().getHeight()-buttonVGap); + chevron_button->setRect(rect); + + S32 chevron_root_x, chevron_root_y; + localPointToOtherView(rect.mLeft, rect.mBottom, &chevron_root_x, &chevron_root_y, LLUI::getRootView()); + mChevronRect.setOriginAndSize(chevron_root_x, chevron_root_y, rect.getWidth(), rect.getHeight()); + } return; } } - //FIXME: optimize this - deleteAllChildren(); - - LLButton::Params bparams; + mFirstDropDownItem = first_drop_down_item; - const S32 buttonWidth = LLUI::sSettingGroups["config"]->getS32("ButtonHPad") * 2; - LLRect rect; + mItemNamesCache.clear(); + for (S32 i = 0; i < mFirstDropDownItem; i++) + { + mItemNamesCache.put(items.get(i)->getName()); + } - for(S32 i = 0; i < count; ++i) + // Rebuild the buttons only + // child_list_t is a linked list, so safe to erase from the middle if we pre-incrament the iterator + for ( child_list_const_iter_t child_it = getChildList()->begin(); child_it != getChildList()->end(); ) + { + child_list_const_iter_t cur_it = child_it++; + LLView* viewp = *cur_it; + LLButton* button = dynamic_cast<LLButton*>(viewp); + if (button) + { + removeChild(button); + delete button; + } + } + + // Adding buttons + for(S32 i = 0; i < mFirstDropDownItem; i++) { - rect.setOriginAndSize(0, 0, buttonWidth, llround(mFont->getLineHeight())); + + LLInventoryItem* item = items.get(i); + S32 buttonWidth = mFont->getWidth(item->getName()) + buttonHPad * 2; + + LLRect rect; + rect.setOriginAndSize(curr_x, buttonVGap, buttonWidth, getRect().getHeight()-buttonVGap); + + LLButton::Params bparams; + bparams.image_unselected.name(flat_icon); + bparams.image_disabled.name(flat_icon); + bparams.image_selected.name(hover_icon_selected); + bparams.image_hover_selected.name(hover_icon_selected); + bparams.image_disabled_selected.name(hover_icon_selected); + bparams.image_hover_unselected.name(hover_icon); bparams.follows.flags (FOLLOWS_LEFT | FOLLOWS_BOTTOM); bparams.rect (rect); bparams.tab_stop(false); bparams.font(mFont); - bparams.click_callback.function(boost::bind(&LLFavoritesBarCtrl::onButtonClick, this, 0)); + bparams.name(item->getName()); + bparams.tool_tip(item->getName()); + bparams.click_callback.function(boost::bind(&LLFavoritesBarCtrl::onButtonClick, this, item->getUUID())); + bparams.rightclick_callback.function(boost::bind(&LLFavoritesBarCtrl::onButtonRightClick, this, item->getUUID())); - LLButton *button = LLUICtrlFactory::create<LLButton> (bparams); + addChildInBack(LLUICtrlFactory::create<LLButton> (bparams)); - addChildInBack(button); + curr_x += buttonWidth + buttonHGap; } - updateButtons(getRect().getWidth(), items); + // Chevron button + if (mFirstDropDownItem != count) + { + LLButton::Params bparams; + + LLRect rect; + rect.setOriginAndSize(bar_width - chevron_button_width - buttonHGap, buttonVGap, chevron_button_width, getRect().getHeight()-buttonVGap); + + bparams.follows.flags (FOLLOWS_LEFT | FOLLOWS_BOTTOM); + bparams.image_unselected.name(flat_icon); + bparams.image_disabled.name(flat_icon); + bparams.image_selected.name(hover_icon_selected); + bparams.image_hover_selected.name(hover_icon_selected); + bparams.image_disabled_selected.name(hover_icon_selected); + bparams.image_hover_unselected.name(hover_icon); + bparams.rect (rect); + bparams.tab_stop(false); + bparams.font(mFont); + bparams.name(">>"); + bparams.click_callback.function(boost::bind(&LLFavoritesBarCtrl::showDropDownMenu, this)); + + addChildInBack(LLUICtrlFactory::create<LLButton> (bparams)); + + S32 chevron_root_x, chevron_root_y; + localPointToOtherView(rect.mLeft, rect.mBottom, &chevron_root_x, &chevron_root_y, LLUI::getRootView()); + mChevronRect.setOriginAndSize(chevron_root_x, chevron_root_y, rect.getWidth(), rect.getHeight()); + } } -//virtual -void LLFavoritesBarCtrl::reshape(S32 width, S32 height, BOOL called_from_parent) +BOOL LLFavoritesBarCtrl::postBuild() { - LLInventoryModel::item_array_t items; - if (collectFavoriteItems(items)) + // make the popup menu available + LLMenuGL* menu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_favorites.xml", gMenuHolder); + if (!menu) { - updateButtons(width, items); + menu = LLUICtrlFactory::getDefaultWidget<LLMenuGL>("inventory_menu"); } + menu->setBackgroundColor(gSavedSkinSettings.getColor("MenuPopupBgColor")); + mInventoryItemsPopupMenuHandle = menu->getHandle(); - LLUICtrl::reshape(width, height, called_from_parent); + return TRUE; } -void LLFavoritesBarCtrl::updateButtons(U32 barWidth, LLInventoryModel::item_array_t items) +BOOL LLFavoritesBarCtrl::collectFavoriteItems(LLInventoryModel::item_array_t &items) { - std::sort(items.begin(), items.end(), LLFavoritesSort()); + if (mFavoriteFolderId.isNull()) + return FALSE; + + LLInventoryModel::cat_array_t cats; - const S32 buttonHPad = LLUI::sSettingGroups["config"]->getS32("ButtonHPad"); - const S32 buttonHGap = 2; + LLIsType is_type(LLAssetType::AT_LANDMARK); + gInventory.collectDescendentsIf(mFavoriteFolderId, cats, items, LLInventoryModel::EXCLUDE_TRASH, is_type); - S32 curr_x = buttonHGap; + std::sort(items.begin(), items.end(), LLFavoritesSort()); - S32 count = items.count(); - S32 labelsWidth = 0; + return TRUE; +} - for (S32 i = 0; i < count; ++i) +void LLFavoritesBarCtrl::showDropDownMenu() +{ + if (mPopupMenuHandle.isDead()) { - labelsWidth += mFont->getWidth(items.get(i)->getName()); - } - - const S32 ellipsisWIdth = mFont->getWidth("..."); + LLMenuGL::Params menu_p; + menu_p.name("favorites menu"); + menu_p.can_tear_off(false); + menu_p.visible(false); + menu_p.scrollable(true); - F32 shrinkFactor = 1.0f; + LLVisibilityTrackingMenuGL* menu = LLUICtrlFactory::create<LLVisibilityTrackingMenuGL>(menu_p); - S32 labelsSpace = barWidth - buttonHGap * (count + 1) - buttonHPad * 2 * count; // There is leading buttonHGap in front of first button, - // one buttonHGap at the end of each button and 2 buttonHPad's - if (labelsWidth >= labelsSpace) - { - shrinkFactor = (float)labelsSpace / labelsWidth; + mPopupMenuHandle = menu->getHandle(); } - const LLView::child_list_t *buttons_list = getChildList(); + LLVisibilityTrackingMenuGL* menu = (LLVisibilityTrackingMenuGL*)mPopupMenuHandle.get(); - S32 i = 0; - for(LLView::child_list_const_iter_t iter = buttons_list->begin(); iter != buttons_list->end(); iter++) + if(menu) { - LLButton *button = (LLButton *)*iter; - - LLInventoryItem* item = items.get(i); + if (menu->getClosedByChevronClick()) + { + menu->resetClosedByChevronClick(); + return; + } - LLRect rect; + if (menu->getVisible()) + { + menu->setVisible(FALSE); + menu->resetClosedByChevronClick(); + return; + } - S32 labelWidth = mFont->getWidth(item->getName()); + LLInventoryModel::item_array_t items; - if (shrinkFactor < 1.0f) + if (!collectFavoriteItems(items)) { - labelWidth = (S32) ((float)labelWidth * shrinkFactor); + return; + } - if (labelWidth > ellipsisWIdth) - { - labelWidth -= ellipsisWIdth; + S32 count = items.count(); - S32 charsTotal = item->getName().length(); - S32 charsFitted = 1; - while (charsFitted < charsTotal && mFont->getWidth(item->getName(), 0, charsFitted) < labelWidth) + // Check it there are changed items, since last call + if (mItemNamesCache.size() == count) + { + S32 i; + for (i = mFirstDropDownItem; i < count; i++) + { + if (mItemNamesCache.get(i) != items.get(i)->getName()) { - charsFitted++; + break; } + } + + // Check passed, just show the menu + if (i == count) + { + menu->buildDrawLabels(); + menu->updateParent(LLMenuGL::sMenuContainer); - charsFitted--; - labelWidth += ellipsisWIdth; + menu->setChevronRect(mChevronRect); - button->setLabel(item->getName().substr(0, charsFitted) + "..."); + LLMenuGL::showPopup(this, menu, getRect().getWidth() - menu->getRect().getWidth(), 0); + return; } - else + } + + // Add menu items to cache, if there is only names of buttons + if (mItemNamesCache.size() == mFirstDropDownItem) + { + for (S32 i = mFirstDropDownItem; i < count; i++) { - button->setLabel((LLStringExplicit)""); - labelWidth = 0; + mItemNamesCache.put(items.get(i)->getName()); } } - else + + menu->empty(); + + U32 max_width = 0; + + // Menu will not be wider, than bar + S32 bar_width = getRect().getWidth(); + + for(S32 i = mFirstDropDownItem; i < count; i++) { - button->setLabel(item->getName()); - } + LLInventoryItem* item = items.get(i); + const std::string& item_name = item->getName(); - S32 buttonWidth = labelWidth + buttonHPad * 2; - rect.setOriginAndSize(curr_x, 2, buttonWidth, llround(mFont->getLineHeight())); - button->setRect(rect); + LLMenuItemCallGL::Params item_params; + item_params.name(item_name); + item_params.label(item_name); + + item_params.on_click.function(boost::bind(&LLFavoritesBarCtrl::onButtonClick, this, item->getUUID())); - button->setToolTip(item->getName()); + LLMenuItemCallGL *menu_item = LLUICtrlFactory::create<LLMenuItemCallGL>(item_params); - curr_x += buttonWidth + buttonHGap; + // Check whether item name wider than menu + if ((S32) menu_item->getNominalWidth() > bar_width) + { + S32 chars_total = item_name.length(); + S32 chars_fitted = 1; + menu_item->setLabel(LLStringExplicit("")); + S32 label_space = bar_width - menu_item->getFont()->getWidth("...") - + menu_item->getNominalWidth(); // This returns width of menu item with empty label (pad pixels) - i++; - } -} + while (chars_fitted < chars_total && menu_item->getFont()->getWidth(item_name, 0, chars_fitted) < label_space) + { + chars_fitted++; + } + chars_fitted--; // Rolling back one char, that doesn't fit -BOOL LLFavoritesBarCtrl::collectFavoriteItems(LLInventoryModel::item_array_t &items) -{ - LLUUID favorite_folder_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_FAVORITE); + menu_item->setLabel(item_name.substr(0, chars_fitted) + "..."); + } - if (!favorite_folder_id.notNull()) - return FALSE; - - LLInventoryModel::cat_array_t cats; + max_width = llmax(max_width, menu_item->getNominalWidth()); - gInventory.collectDescendents(favorite_folder_id, cats, items, LLInventoryModel::EXCLUDE_TRASH); + menu->addChild(menu_item); + } - return TRUE; + // Menu will not be wider, than bar + max_width = llmin((S32)max_width, bar_width); + + menu->buildDrawLabels(); + menu->updateParent(LLMenuGL::sMenuContainer); + + menu->setChevronRect(mChevronRect); + + LLMenuGL::showPopup(this, menu, getRect().getWidth() - max_width, 0); + } } -void LLFavoritesBarCtrl::onButtonClick(int idx) +void LLFavoritesBarCtrl::onButtonClick(LLUUID item_id) { LLInventoryModel::item_array_t items; @@ -306,23 +529,51 @@ void LLFavoritesBarCtrl::onButtonClick(int idx) return; } - S32 count = items.count(); + // We only have one Inventory, gInventory. Some day this should be better abstracted. + LLInvFVBridgeAction::doAction(item_id,&gInventory); +} - if (idx < 0 || idx >= count) +void LLFavoritesBarCtrl::onButtonRightClick(LLUUID item_id) +{ + mSelectedItemID = item_id; + + LLMenuGL* menu = (LLMenuGL*)mInventoryItemsPopupMenuHandle.get(); + if (!menu) { - llwarns << "Invalid favorites bar index" << llendl; return; } + + menu->updateParent(LLMenuGL::sMenuContainer); - LLInventoryItem* item = items.get(idx); - if(item) - { - LLUUID item_id = item->getUUID(); - LLAssetType::EType item_type = item->getType(); + S32 x,y; + LLUI::getCursorPositionLocal(this, &x, &y); + LLMenuGL::showPopup(this, menu, x, y); +} - //TODO - donno but may be we must use InventoryModel from InventoryView - //think for now there is only one model...but still - LLInvFVBridgeAction::doAction(item_type,item_id,&gInventory); +void LLFavoritesBarCtrl::doToSelected(const LLSD& userdata) +{ + std::string action = userdata.asString(); + llinfos << "Action = " << action << " Item = " << mSelectedItemID.asString() << llendl; + + LLViewerInventoryItem* item = gInventory.getItem(mSelectedItemID); + if (!item) + return; + + if (action == "open") + { + teleport_via_landmark(item->getAssetUUID()); + } + else if (action == "about") + { + LLFloaterReg::showInstance("preview_landmark", LLSD(mSelectedItemID), TAKE_FOCUS_YES); + } + else if (action == "rename") + { + // Would need to re-implement this: + // folder->startRenamingSelectedItem(); + } + else if (action == "delete") + { + gInventory.removeItem(mSelectedItemID); } } - diff --git a/indra/newview/llfavoritesbar.h b/indra/newview/llfavoritesbar.h index c92f1d5caf666a83f5d9ffbd6852189be9637b9f..646e98cabbaffa39d0f6170b76bf67780519e5bd 100644 --- a/indra/newview/llfavoritesbar.h +++ b/indra/newview/llfavoritesbar.h @@ -47,22 +47,41 @@ class LLFavoritesBarCtrl : public LLUICtrl, public LLInventoryObserver public: virtual ~LLFavoritesBarCtrl(); + /*virtual*/ BOOL postBuild(); + /*virtual*/ BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, EDragAndDropType cargo_type, void* cargo_data, EAcceptance* accept, std::string& tooltip_msg); + // LLInventoryObserver observer trigger virtual void changed(U32 mask); - virtual void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE); + protected: - void updateButtons(U32 barWidth, LLInventoryModel::item_array_t items); + void updateButtons(U32 bar_width); BOOL collectFavoriteItems(LLInventoryModel::item_array_t &items); - void onButtonClick(int idx); + void onButtonClick(LLUUID id); + void onButtonRightClick(LLUUID id); + + void doToSelected(const LLSD& userdata); + + void showDropDownMenu(); + LLHandle<LLView> mPopupMenuHandle; + LLHandle<LLView> mInventoryItemsPopupMenuHandle; + + LLUUID mFavoriteFolderId; const LLFontGL *mFont; + S32 mFirstDropDownItem; + + typedef LLDynamicArray<std::string> item_names_array_t; + item_names_array_t mItemNamesCache; + + LLUUID mSelectedItemID; + LLRect mChevronRect; }; diff --git a/indra/newview/llfloaterabout.cpp b/indra/newview/llfloaterabout.cpp index 356ecff236e25675d5e9de9925129f5b4719dcf1..9df0a968882ccacc059fed3bdc5c5ed526edcf1a 100644 --- a/indra/newview/llfloaterabout.cpp +++ b/indra/newview/llfloaterabout.cpp @@ -59,8 +59,14 @@ #include "llappviewer.h" #include "llglheaders.h" #include "llmediamanager.h" +#include "llwindow.h" +#if LL_WINDOWS +#include "lldxhardware.h" +#endif +extern LLCPUInfo gSysCPU; +extern LLMemoryInfo gSysMemory; extern U32 gPacketsIn; static std::string get_viewer_release_notes_url(); @@ -74,8 +80,8 @@ static std::string get_viewer_release_notes_url(); LLFloaterAbout::LLFloaterAbout(const LLSD& key) : LLFloater() { - LLUICtrlFactory::getInstance()->buildFloater(this, "floater_about.xml"); - center(); + //LLUICtrlFactory::getInstance()->buildFloater(this, "floater_about.xml"); + } // Destroys the object @@ -85,6 +91,7 @@ LLFloaterAbout::~LLFloaterAbout() BOOL LLFloaterAbout::postBuild() { + center(); LLViewerTextEditor *support_widget = getChild<LLViewerTextEditor>("support_editor", true); @@ -185,6 +192,20 @@ BOOL LLFloaterAbout::postBuild() support.append( (const char*) glGetString(GL_RENDERER) ); support.append("\n"); +#if LL_WINDOWS + getWindow()->incBusyCount(); + getWindow()->setCursor(UI_CURSOR_ARROW); + support.append("Windows Graphics Driver Version: "); + LLSD driver_info = gDXHardware.getDisplayInfo(); + if (driver_info.has("DriverVersion")) + { + support.append(driver_info["DriverVersion"]); + } + support.append("\n"); + getWindow()->decBusyCount(); + getWindow()->setCursor(UI_CURSOR_ARROW); +#endif + support.append(getString("OpenGLVersion") + " "); support.append( (const char*) glGetString(GL_VERSION) ); support.append("\n"); @@ -255,7 +276,7 @@ BOOL LLFloaterAbout::postBuild() query["version"] = version.str(); std::ostringstream url; - url << LLFloaterAbout::getInstance()->getString("RELEASE_NOTES_BASE_URL") << LLURI::mapToQueryString(query); + url << LLTrans::getString("RELEASE_NOTES_BASE_URL") << LLURI::mapToQueryString(query); return url.str(); } diff --git a/indra/newview/llfloaterabout.h b/indra/newview/llfloaterabout.h index 537c8f29c0f67ecab7277f6be52ce4bf5b93a235..1b0f3cddd3479b607e9c79f18e8ab9c26bf5bce0 100644 --- a/indra/newview/llfloaterabout.h +++ b/indra/newview/llfloaterabout.h @@ -39,8 +39,9 @@ class LLFloaterAbout : public LLFloater, public LLFloaterSingleton<LLFloaterAbout> { friend class LLUISingleton<LLFloaterAbout, VisibilityPolicy<LLFloater> >; -protected: +public: LLFloaterAbout(const LLSD& key); +protected: virtual ~LLFloaterAbout(); public: diff --git a/indra/newview/llfloateranimpreview.cpp b/indra/newview/llfloateranimpreview.cpp index 34bd5211f2148bf08b52ed90db204051a9ebe62e..12c4932293f92731cf38be0a3077776ad7ffd9c6 100644 --- a/indra/newview/llfloateranimpreview.cpp +++ b/indra/newview/llfloateranimpreview.cpp @@ -42,6 +42,7 @@ #include "llstring.h" #include "llagent.h" +#include "llanimationstates.h" #include "llbbox.h" #include "llbutton.h" #include "llcheckboxctrl.h" diff --git a/indra/newview/llfloaterauction.cpp b/indra/newview/llfloaterauction.cpp index e1974bba84ce000800bccfe885fc5adb080193bf..8ad5a19d02c2f1a9625c09778bd10e48edc89a72 100644 --- a/indra/newview/llfloaterauction.cpp +++ b/indra/newview/llfloaterauction.cpp @@ -75,7 +75,9 @@ LLFloaterAuction::LLFloaterAuction(const LLSD& key) : LLFloater(), mParcelID(-1) { - LLUICtrlFactory::getInstance()->buildFloater(this, "floater_auction.xml"); +// LLUICtrlFactory::getInstance()->buildFloater(this, "floater_auction.xml"); + mCommitCallbackRegistrar.add("ClickSnapshot", boost::bind(&LLFloaterAuction::onClickSnapshot, this)); + mCommitCallbackRegistrar.add("ClickOK", boost::bind(&LLFloaterAuction::onClickOK, this)); } // Destroys the object @@ -85,11 +87,6 @@ LLFloaterAuction::~LLFloaterAuction() BOOL LLFloaterAuction::postBuild() { - childSetValue("fence_check", LLSD( gSavedSettings.getBOOL("AuctionShowFence") ) ); - getChild<LLUICtrl>("fence_check")->setCommitCallback(boost::bind(LLSavedSettingsGlue::setBOOL, _1, "AuctionShowFence")); - - childSetAction("snapshot_btn", onClickSnapshot, this); - childSetAction("ok_btn", onClickOK, this); return TRUE; } diff --git a/indra/newview/llfloaterauction.h b/indra/newview/llfloaterauction.h index d71fd3c653e90500e5c74dbacc446b761ef173a7..b018316c64d5063f8795e3fc1214822e6c9ef408 100644 --- a/indra/newview/llfloaterauction.h +++ b/indra/newview/llfloaterauction.h @@ -55,9 +55,9 @@ class LLFloaterAuction : public LLFloater, public LLFloaterSingleton<LLFloaterAu /*virtual*/ void onOpen(const LLSD& key); /*virtual*/ void draw(); -private: LLFloaterAuction(const LLSD& key); ~LLFloaterAuction(); +private: void initialize(); static void onClickSnapshot(void* data); diff --git a/indra/newview/llfloaterbuildoptions.cpp b/indra/newview/llfloaterbuildoptions.cpp index 2507a72caa8a546a04dc608b3586a1c9142c55ce..9dbd1db38e9a1f2e7c7a3f803adfedbc7446a9c5 100644 --- a/indra/newview/llfloaterbuildoptions.cpp +++ b/indra/newview/llfloaterbuildoptions.cpp @@ -46,7 +46,7 @@ LLFloaterBuildOptions::LLFloaterBuildOptions(const LLSD& key) : LLFloater() { - LLUICtrlFactory::getInstance()->buildFloater(this, "floater_build_options.xml"); + //LLUICtrlFactory::getInstance()->buildFloater(this, "floater_build_options.xml"); } LLFloaterBuildOptions::~LLFloaterBuildOptions() diff --git a/indra/newview/llfloaterbuildoptions.h b/indra/newview/llfloaterbuildoptions.h index da72520486b5a59ed45b3de881715fbcfb332897..61db303ba2303f645d215a348da1f904dfdf92a8 100644 --- a/indra/newview/llfloaterbuildoptions.h +++ b/indra/newview/llfloaterbuildoptions.h @@ -45,7 +45,7 @@ class LLFloaterBuildOptions : public LLFloater, public LLFloaterSingleton<LLFloaterBuildOptions> { friend class LLUISingleton<LLFloaterBuildOptions, VisibilityPolicy<LLFloater> >; -protected: +public: LLFloaterBuildOptions(const LLSD& key); ~LLFloaterBuildOptions(); }; diff --git a/indra/newview/llfloaterbulkpermission.cpp b/indra/newview/llfloaterbulkpermission.cpp index 6157d1954100058df402fc48bfe4ed63b7359f41..65dc3cd9f0552362571931378585a056953f1080 100644 --- a/indra/newview/llfloaterbulkpermission.cpp +++ b/indra/newview/llfloaterbulkpermission.cpp @@ -68,6 +68,7 @@ LLFloaterBulkPermission::LLFloaterBulkPermission(const LLSD& seed) BOOL LLFloaterBulkPermission::postBuild() { childSetEnabled("next_owner_transfer", gSavedSettings.getBOOL("BulkChangeNextOwnerCopy")); + childSetAction("help", onHelpBtn, this); childSetAction("apply", onApplyBtn, this); childSetAction("close", onCloseBtn, this); childSetAction("check_all", onCheckAll, this); @@ -157,6 +158,11 @@ void LLFloaterBulkPermission::onApplyBtn(void* user_data) self->doApply(); } +void LLFloaterBulkPermission::onHelpBtn(void* user_data) +{ + LLNotifications::instance().add("HelpBulkPermission"); +} + void LLFloaterBulkPermission::onCloseBtn(void* user_data) { LLFloaterBulkPermission* self = static_cast<LLFloaterBulkPermission*>(user_data); diff --git a/indra/newview/llfloaterbulkpermission.h b/indra/newview/llfloaterbulkpermission.h index d4578f9f30dca94767cc373ea6d8733dc4d3e45a..2ea12fbe69ed0b9f6bd9d0f3dc7f42e1755a7c0c 100644 --- a/indra/newview/llfloaterbulkpermission.h +++ b/indra/newview/llfloaterbulkpermission.h @@ -77,6 +77,7 @@ class LLFloaterBulkPermission : public LLFloater, public LLVOInventoryListener, U8 key, bool is_new); + static void onHelpBtn(void* user_data); static void onCloseBtn(void* user_data); static void onApplyBtn(void* user_data); static void onCommitCopy(LLUICtrl* ctrl, void* data); diff --git a/indra/newview/llfloaterbump.cpp b/indra/newview/llfloaterbump.cpp index 5cf4d90ece99b8656bffa63b49ce372ddb23cbd3..e4e1c7efa2ce9ab9b5ad6de69629c81c5dd42c59 100644 --- a/indra/newview/llfloaterbump.cpp +++ b/indra/newview/llfloaterbump.cpp @@ -50,7 +50,7 @@ LLFloaterBump::LLFloaterBump(const LLSD& key) : LLFloater() { - LLUICtrlFactory::getInstance()->buildFloater(this, "floater_bumps.xml"); + //LLUICtrlFactory::getInstance()->buildFloater(this, "floater_bumps.xml"); } diff --git a/indra/newview/llfloaterbump.h b/indra/newview/llfloaterbump.h index f55a9e6bc527dbd53c9aa31b128d15ef4272d8fe..b56817436c8ba21ba6746e739d79beb3f7b6b47c 100644 --- a/indra/newview/llfloaterbump.h +++ b/indra/newview/llfloaterbump.h @@ -44,13 +44,12 @@ class LLFloaterBump { friend class LLUISingleton<LLFloaterBump, VisibilityPolicy<LLFloater> >; protected: - LLFloaterBump(const LLSD& key); - virtual ~LLFloaterBump(); - void add(LLScrollListCtrl* list, LLMeanCollisionData *mcd); public: /*virtual*/ void onOpen(const LLSD& key); + LLFloaterBump(const LLSD& key); + virtual ~LLFloaterBump(); }; #endif diff --git a/indra/newview/llfloaterbuycurrency.cpp b/indra/newview/llfloaterbuycurrency.cpp index c943eaeacfa0590f869aa150d4c49af0472437ca..4274650f2c9deeebb4cfd1625366fb97b902a13d 100644 --- a/indra/newview/llfloaterbuycurrency.cpp +++ b/indra/newview/llfloaterbuycurrency.cpp @@ -46,7 +46,7 @@ #include "llwindow.h" #include "llappviewer.h" -static const S32 STANDARD_BUY_AMOUNT = 1000; +static const S32 STANDARD_BUY_AMOUNT = 2000; static const S32 MINIMUM_BALANCE_AMOUNT = 0; class LLFloaterBuyCurrencyUI diff --git a/indra/newview/llfloaterbuyland.cpp b/indra/newview/llfloaterbuyland.cpp index e981b07a8294ae148b7d3e586e1d3641d898cd74..3fbee83c7bb6b98ed74de3674ae9e6ac9026c2d2 100644 --- a/indra/newview/llfloaterbuyland.cpp +++ b/indra/newview/llfloaterbuyland.cpp @@ -1146,7 +1146,7 @@ void LLFloaterBuyLandUI::refreshUI() if (mIsForGroup) { LLStringUtil::format_map_t string_args; - string_args["[GROUP]"] = std::string(gAgent.mGroupName); + string_args["[GROUP]"] = std::string(gAgent.getGroupName()); message += getString("insufficient_land_credits", string_args); diff --git a/indra/newview/llfloatercamera.cpp b/indra/newview/llfloatercamera.cpp index 6ca8944a19d6396bd3b340485b0634eb2ccc5c65..e79142513ba9548abe904fe2af1ac039fc829ccc 100644 --- a/indra/newview/llfloatercamera.cpp +++ b/indra/newview/llfloatercamera.cpp @@ -47,20 +47,24 @@ const F32 CAMERA_BUTTON_DELAY = 0.0f; // // Member functions // - - LLFloaterCamera::LLFloaterCamera(const LLSD& val) : LLFloater() { - setIsChrome(TRUE); - // For now, only used for size and tooltip strings const BOOL DONT_OPEN = FALSE; LLUICtrlFactory::getInstance()->buildFloater(this, "floater_camera.xml", DONT_OPEN); - +} + +// virtual +BOOL LLFloaterCamera::postBuild() +{ + setIsChrome(TRUE); + mRotate = getChild<LLJoystickCameraRotate>("cam_rotate_stick"); mZoom = getChild<LLJoystickCameraZoom>("zoom"); mTrack = getChild<LLJoystickCameraTrack>("cam_track_stick"); + + return TRUE; } // virtual @@ -79,3 +83,4 @@ void LLFloaterCamera::onClose(bool app_quitting) gSavedSettings.setBOOL("ShowCameraControls", FALSE); } } + diff --git a/indra/newview/llfloatercamera.h b/indra/newview/llfloatercamera.h index 871e5c8ed13f501566389187b8de080168604665..f954e329eba751ce68c3588041d03a8ac278169b 100644 --- a/indra/newview/llfloatercamera.h +++ b/indra/newview/llfloatercamera.h @@ -51,7 +51,7 @@ class LLFloaterCamera /*virtual*/ void onOpen(const LLSD& key); /*virtual*/ void onClose(bool app_quitting); - + /*virtual*/ BOOL postBuild(); public: LLJoystickCameraRotate* mRotate; LLJoystickCameraZoom* mZoom; diff --git a/indra/newview/llfloaterchat.cpp b/indra/newview/llfloaterchat.cpp index 4e2d9524886261643de788275f10d39214b2171e..61ef3abda6c230d7f382576e9c973bd848d6214a 100644 --- a/indra/newview/llfloaterchat.cpp +++ b/indra/newview/llfloaterchat.cpp @@ -55,6 +55,7 @@ #include "llmutelist.h" //#include "llresizehandle.h" #include "llchatbar.h" +#include "llrecentpeople.h" #include "llstatusbar.h" #include "llviewertexteditor.h" #include "llviewergesture.h" // for triggering gestures @@ -316,8 +317,7 @@ void LLFloaterChat::onClickMute(void *data) LLMute mute(id); mute.setFromDisplayName(name); LLMuteList::getInstance()->add(mute); - - LLFloaterMute::showInstance(); + LLFloaterReg::showInstance("mute"); } //static @@ -376,7 +376,7 @@ void LLFloaterChat::addChat(const LLChat& chat, size = INSTANT_MSG_SIZE; } // We display anything if it's not an IM. If it's an IM, check pref... - if ( !from_instant_message || gSavedSettings.getBOOL("IMInChatHistory") ) + if ( !from_instant_message || gSavedSettings.getBOOL("IMInChatConsole") ) { gConsole->addLine(chat.mText, size, text_color); } @@ -385,11 +385,15 @@ void LLFloaterChat::addChat(const LLChat& chat, if(from_instant_message && gSavedPerAccountSettings.getBOOL("LogChatIM")) log_chat_text(chat); - if(from_instant_message && gSavedSettings.getBOOL("IMInChatHistory")) + if(from_instant_message && gSavedSettings.getBOOL("IMInChatHistory")) addChatHistory(chat,false); triggerAlerts(chat.mText); + // Add the sender to the list of people with which we've recently interacted. + if(chat.mSourceType == CHAT_SOURCE_AGENT && chat.mFromID.notNull()) + LLRecentPeople::instance().add(chat.mFromID); + if(!from_instant_message) addChatHistory(chat); } diff --git a/indra/newview/llfloaterfriends.cpp b/indra/newview/llfloaterfriends.cpp index 7fa9d07d0a0fd229268cbaac45f61401beaad428..1e8129c7d3f64fefffcbbd65fe6e6bd2ca5d8aca 100644 --- a/indra/newview/llfloaterfriends.cpp +++ b/indra/newview/llfloaterfriends.cpp @@ -46,12 +46,11 @@ #include "llfloateravatarpicker.h" #include "llviewerwindow.h" #include "llbutton.h" -#include "llfloateravatarinfo.h" +#include "llfriendactions.h" #include "llinventorymodel.h" #include "llnamelistctrl.h" #include "llnotify.h" #include "llresmgr.h" -#include "llimview.h" #include "llscrolllistctrl.h" #include "llscrolllistitem.h" #include "llscrolllistcell.h" @@ -63,6 +62,8 @@ #include "lltextbox.h" #include "llvoiceclient.h" +// *TODO: Move more common stuff to LLFriendActions? + //Maximum number of people you can select to do an operation on at once. #define MAX_FRIEND_SELECT 20 #define DEFAULT_PERIOD 5.0 @@ -541,14 +542,11 @@ void LLPanelFriends::onClickProfile(void* user_data) { LLPanelFriends* panelp = (LLPanelFriends*)user_data; - //llinfos << "LLPanelFriends::onClickProfile()" << llendl; std::vector<LLUUID> ids = panelp->getSelectedIDs(); if(ids.size() > 0) { LLUUID agent_id = ids[0]; - BOOL online; - online = LLAvatarTracker::instance().isBuddyOnline(agent_id); - LLFloaterAvatarInfo::showFromFriend(agent_id, online); + LLFriendActions::showProfile(agent_id); } } @@ -557,76 +555,20 @@ void LLPanelFriends::onClickIM(void* user_data) { LLPanelFriends* panelp = (LLPanelFriends*)user_data; - //llinfos << "LLPanelFriends::onClickIM()" << llendl; std::vector<LLUUID> ids = panelp->getSelectedIDs(); if(ids.size() > 0) { if(ids.size() == 1) { - LLUUID agent_id = ids[0]; - const LLRelationship* info = LLAvatarTracker::instance().getBuddyInfo(agent_id); - std::string fullname; - if(info && gCacheName->getFullName(agent_id, fullname)) - { - gIMMgr->addSession(fullname, IM_NOTHING_SPECIAL, agent_id); - } + LLFriendActions::startIM(ids[0]); } else { - // *HACK: Copy into dynamic array - LLDynamicArray<LLUUID> id_array; - for (std::vector<LLUUID>::iterator it = ids.begin(); it != ids.end(); ++it) - { - id_array.push_back(*it); - } - gIMMgr->addSession("Friends Conference", IM_SESSION_CONFERENCE_START, ids[0], id_array); + LLFriendActions::startConference(ids); } - make_ui_sound("UISndStartIM"); } } -// static -void LLPanelFriends::requestFriendship(const LLUUID& target_id, const std::string& target_name, const std::string& message) -{ - LLUUID calling_card_folder_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_CALLINGCARD); - send_improved_im(target_id, - target_name, - message, - IM_ONLINE, - IM_FRIENDSHIP_OFFERED, - calling_card_folder_id); -} - -// static -bool LLPanelFriends::callbackAddFriendWithMessage(const LLSD& notification, const LLSD& response) -{ - S32 option = LLNotification::getSelectedOption(notification, response); - if (option == 0) - { - requestFriendship(notification["payload"]["id"].asUUID(), - notification["payload"]["name"].asString(), - response["message"].asString()); - } - return false; -} - -bool LLPanelFriends::callbackAddFriend(const LLSD& notification, const LLSD& response) -{ - S32 option = LLNotification::getSelectedOption(notification, response); - if (option == 0) - { - // Servers older than 1.25 require the text of the message to be the - // calling card folder ID for the offering user. JC - LLUUID calling_card_folder_id = - gInventory.findCategoryUUIDForType(LLAssetType::AT_CALLINGCARD); - std::string message = calling_card_folder_id.asString(); - requestFriendship(notification["payload"]["id"].asUUID(), - notification["payload"]["name"].asString(), - message); - } - return false; -} - // static void LLPanelFriends::onPickAvatar(const std::vector<std::string>& names, const std::vector<LLUUID>& ids, @@ -634,35 +576,7 @@ void LLPanelFriends::onPickAvatar(const std::vector<std::string>& names, { if (names.empty()) return; if (ids.empty()) return; - requestFriendshipDialog(ids[0], names[0]); -} - -// static -void LLPanelFriends::requestFriendshipDialog(const LLUUID& id, - const std::string& name) -{ - if(id == gAgentID) - { - LLNotifications::instance().add("AddSelfFriend"); - return; - } - - LLSD args; - args["NAME"] = name; - LLSD payload; - payload["id"] = id; - payload["name"] = name; - // Look for server versions like: Second Life Server 1.24.4.95600 - if (gLastVersionChannel.find(" 1.24.") != std::string::npos) - { - // Old and busted server version, doesn't support friend - // requests with messages. - LLNotifications::instance().add("AddFriend", args, payload, &callbackAddFriend); - } - else - { - LLNotifications::instance().add("AddFriendWithMessage", args, payload, &callbackAddFriendWithMessage); - } + LLFriendActions::requestFriendshipDialog(ids[0], names[0]); } // static @@ -681,53 +595,14 @@ void LLPanelFriends::onClickAddFriend(void* user_data) void LLPanelFriends::onClickRemove(void* user_data) { LLPanelFriends* panelp = (LLPanelFriends*)user_data; - - //llinfos << "LLPanelFriends::onClickRemove()" << llendl; - std::vector<LLUUID> ids = panelp->getSelectedIDs(); - LLSD args; - if(ids.size() > 0) - { - std::string msgType = "RemoveFromFriends"; - if(ids.size() == 1) - { - LLUUID agent_id = ids[0]; - std::string first, last; - if(gCacheName->getName(agent_id, first, last)) - { - args["FIRST_NAME"] = first; - args["LAST_NAME"] = last; - } - } - else - { - msgType = "RemoveMultipleFromFriends"; - } - LLSD payload; - - for (LLDynamicArray<LLUUID>::iterator it = ids.begin(); - it != ids.end(); - ++it) - { - payload["ids"].append(*it); - } - - LLNotifications::instance().add(msgType, - args, - payload, - &handleRemove); - } + LLFriendActions::removeFriendsDialog(panelp->getSelectedIDs()); } // static void LLPanelFriends::onClickOfferTeleport(void* user_data) { LLPanelFriends* panelp = (LLPanelFriends*)user_data; - - std::vector<LLUUID> ids = panelp->getSelectedIDs(); - if(ids.size() > 0) - { - handle_lure(ids); - } + LLFriendActions::offerTeleport(panelp->getSelectedIDs()); } // static @@ -936,42 +811,3 @@ void LLPanelFriends::sendRightsGrant(rights_map_t& ids) mNumRightsChanged = ids.size(); gAgent.sendReliableMessage(); } - - - -// static -bool LLPanelFriends::handleRemove(const LLSD& notification, const LLSD& response) -{ - S32 option = LLNotification::getSelectedOption(notification, response); - - const LLSD& ids = notification["payload"]["ids"]; - for(LLSD::array_const_iterator itr = ids.beginArray(); itr != ids.endArray(); ++itr) - { - LLUUID id = itr->asUUID(); - const LLRelationship* ip = LLAvatarTracker::instance().getBuddyInfo(id); - if(ip) - { - switch(option) - { - case 0: // YES - if( ip->isRightGrantedTo(LLRelationship::GRANT_MODIFY_OBJECTS)) - { - LLAvatarTracker::instance().empower(id, FALSE); - LLAvatarTracker::instance().notifyObservers(); - } - LLAvatarTracker::instance().terminateBuddy(id); - LLAvatarTracker::instance().notifyObservers(); - gInventory.addChangedMask(LLInventoryObserver::LABEL | LLInventoryObserver::CALLING_CARD, LLUUID::null); - gInventory.notifyObservers(); - break; - - case 1: // NO - default: - llinfos << "No removal performed." << llendl; - break; - } - } - - } - return false; -} diff --git a/indra/newview/llfloaterfriends.h b/indra/newview/llfloaterfriends.h index 51fe5f6d8949225fcd390627036cf3d221b9b942..9c6660c0dc2abd55300827685ed115146ebed96a 100644 --- a/indra/newview/llfloaterfriends.h +++ b/indra/newview/llfloaterfriends.h @@ -74,15 +74,6 @@ class LLPanelFriends : public LLPanel, public LLEventTimer virtual BOOL postBuild(); - // Show a dialog explaining what friendship entails, then request - // friendship. JC - static void requestFriendshipDialog(const LLUUID& target_id, - const std::string& target_name); - - // Just request friendship, no dialog. - static void requestFriendship(const LLUUID& target_id, - const std::string& target_name, const std::string& message); - // *HACK Made public to remove friends from LLAvatarIconCtrl context menu static bool handleRemove(const LLSD& notification, const LLSD& response); diff --git a/indra/newview/llfloatergroupinvite.cpp b/indra/newview/llfloatergroupinvite.cpp index e8a0973ceda3004ce97b8c953a689646d5d05a66..92db0b092635ac62a092773b0110c09fc4593951 100644 --- a/indra/newview/llfloatergroupinvite.cpp +++ b/indra/newview/llfloatergroupinvite.cpp @@ -91,7 +91,7 @@ LLFloaterGroupInvite::LLFloaterGroupInvite(const LLUUID& group_id) contents = mImpl->mInvitePanelp->getRect(); contents.mTop -= floater_header_size; - setTitle (LLTrans::getString("GroupInvitation")); + setTitle (mImpl->mInvitePanelp->getString("GroupInvitation")); mImpl->mInvitePanelp->setCloseCallback(impl::closeFloater, this); @@ -135,7 +135,7 @@ void LLFloaterGroupInvite::showForGroup(const LLUUID& group_id, std::vector<LLUU contents.mTop += floater_header_size; fgi->setRect(contents); fgi->getDragHandle()->setRect(contents); - fgi->getDragHandle()->setTitle(LLTrans::getString("GroupInvitation")); + fgi->getDragHandle()->setTitle(fgi->mImpl->mInvitePanelp->getString("GroupInvitation")); impl::sInstances[group_id] = fgi; diff --git a/indra/newview/llfloatergroups.cpp b/indra/newview/llfloatergroups.cpp index 65035d9b5c3f9452824d2b262de0c18177844d7a..a967a1833f3541da270d58e6d09669d5d45f2578 100644 --- a/indra/newview/llfloatergroups.cpp +++ b/indra/newview/llfloatergroups.cpp @@ -41,22 +41,14 @@ #include "llfloatergroups.h" -#include "message.h" #include "roles_constants.h" #include "llagent.h" #include "llbutton.h" -#include "llfloaterreg.h" -#include "llfloatergroupinfo.h" -#include "llfloaterdirectory.h" -#include "llfocusmgr.h" -#include "llalertdialog.h" -#include "llselectmgr.h" +#include "llgroupactions.h" #include "llscrolllistctrl.h" #include "lltextbox.h" #include "lluictrlfactory.h" -#include "llviewerwindow.h" -#include "llimview.h" #include "lltrans.h" using namespace LLOldEvents; @@ -304,112 +296,54 @@ void LLPanelGroups::onBtnSearch(void* userdata) void LLPanelGroups::create() { - llinfos << "LLPanelGroups::create" << llendl; - LLFloaterGroupInfo::showCreateGroup(NULL); + LLGroupActions::create(); } void LLPanelGroups::activate() { - llinfos << "LLPanelGroups::activate" << llendl; LLCtrlListInterface *group_list = childGetListInterface("group list"); LLUUID group_id; if (group_list) { group_id = group_list->getCurrentID(); } - LLMessageSystem* msg = gMessageSystem; - msg->newMessageFast(_PREHASH_ActivateGroup); - msg->nextBlockFast(_PREHASH_AgentData); - msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); - msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); - msg->addUUIDFast(_PREHASH_GroupID, group_id); - gAgent.sendReliableMessage(); + LLGroupActions::activate(group_id); } void LLPanelGroups::info() { - llinfos << "LLPanelGroups::info" << llendl; LLCtrlListInterface *group_list = childGetListInterface("group list"); LLUUID group_id; if (group_list && (group_id = group_list->getCurrentID()).notNull()) { - LLFloaterGroupInfo::showFromUUID(group_id); + LLGroupActions::info(group_id); } } void LLPanelGroups::startIM() { - //llinfos << "LLPanelFriends::onClickIM()" << llendl; LLCtrlListInterface *group_list = childGetListInterface("group list"); LLUUID group_id; if (group_list && (group_id = group_list->getCurrentID()).notNull()) { - LLGroupData group_data; - if (gAgent.getGroupData(group_id, group_data)) - { - gIMMgr->addSession( - group_data.mName, - IM_SESSION_GROUP_START, - group_id); - make_ui_sound("UISndStartIM"); - } - else - { - // this should never happen, as starting a group IM session - // relies on you belonging to the group and hence having the group data - make_ui_sound("UISndInvalidOp"); - } + LLGroupActions::startChat(group_id); } } void LLPanelGroups::leave() { - llinfos << "LLPanelGroups::leave" << llendl; LLCtrlListInterface *group_list = childGetListInterface("group list"); LLUUID group_id; if (group_list && (group_id = group_list->getCurrentID()).notNull()) { - S32 count = gAgent.mGroups.count(); - S32 i; - for(i = 0; i < count; ++i) - { - if(gAgent.mGroups.get(i).mID == group_id) - break; - } - if(i < count) - { - LLSD args; - args["GROUP"] = gAgent.mGroups.get(i).mName; - LLSD payload; - payload["group_id"] = group_id; - LLNotifications::instance().add("GroupLeaveConfirmMember", args, payload, callbackLeaveGroup); - } + LLGroupActions::leave(group_id); } } void LLPanelGroups::search() { - LLFloaterReg::showInstance("search", LLSD().insert("panel", "group")); -} - -// static -bool LLPanelGroups::callbackLeaveGroup(const LLSD& notification, const LLSD& response) -{ - S32 option = LLNotification::getSelectedOption(notification, response); - LLUUID group_id = notification["payload"]["group_id"].asUUID(); - if(option == 0) - { - LLMessageSystem* msg = gMessageSystem; - msg->newMessageFast(_PREHASH_LeaveGroupRequest); - msg->nextBlockFast(_PREHASH_AgentData); - msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); - msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); - msg->nextBlockFast(_PREHASH_GroupData); - msg->addUUIDFast(_PREHASH_GroupID, group_id); - gAgent.sendReliableMessage(); - } - return false; + LLGroupActions::search(); } void LLPanelGroups::onGroupList(LLUICtrl* ctrl, void* userdata) diff --git a/indra/newview/llfloatergroups.h b/indra/newview/llfloatergroups.h index d3fb405b426638c5f0b6d3c5c7c810f00f9bd963..0425b812944842b2d6e15beba3bf0c6a6e06915e 100644 --- a/indra/newview/llfloatergroups.h +++ b/indra/newview/llfloatergroups.h @@ -62,7 +62,7 @@ class LLFloaterGroupPicker : public LLFloater, public LLUIFactory<LLFloaterGroup public: ~LLFloaterGroupPicker(); - // Note: Don't return connection; use boost::bind + boost::signal::trackable to disconnect slots + // Note: Don't return connection; use boost::bind + boost::signals2::trackable to disconnect slots typedef boost::signals2::signal<void (LLUUID id)> signal_t; void setSelectGroupCallback(const signal_t::slot_type& cb) { mGroupSelectSignal.connect(cb); } void setPowersMask(U64 powers_mask); diff --git a/indra/newview/llfloaterhardwaresettings.h b/indra/newview/llfloaterhardwaresettings.h index 70344c11d184bc1797431fc6f1681e0a29568115..ec99638740f02f223ef0000df621f657fad34a36 100644 --- a/indra/newview/llfloaterhardwaresettings.h +++ b/indra/newview/llfloaterhardwaresettings.h @@ -35,8 +35,6 @@ #include "llfloater.h" -class LLSliderCtrl; - /// Menuing system for all of windlight's functionality class LLFloaterHardwareSettings : public LLFloater { @@ -85,8 +83,6 @@ class LLFloaterHardwareSettings : public LLFloater void refreshEnabledState(); protected: - LLSliderCtrl* mCtrlVideoCardMem; - BOOL mUseVBO; BOOL mUseAniso; U32 mFSAASamples; diff --git a/indra/newview/llfloaterimagepreview.cpp b/indra/newview/llfloaterimagepreview.cpp index c8a76cbe55a4cba0084ba86486667b7af291e4ed..faa4f0ec993d82bb0ba22025f3e932998be0ddab 100644 --- a/indra/newview/llfloaterimagepreview.cpp +++ b/indra/newview/llfloaterimagepreview.cpp @@ -52,6 +52,7 @@ #include "llui.h" #include "llviewercamera.h" #include "llviewerwindow.h" +#include "llviewerobjectlist.h" #include "llvoavatar.h" #include "pipeline.h" #include "lluictrlfactory.h" @@ -110,7 +111,7 @@ BOOL LLFloaterImagePreview::postBuild() childHide("bad_image_text"); - if (mRawImagep.notNull()) + if (mRawImagep.notNull() && gAgent.getRegion() != NULL) { mAvatarPreview = new LLImagePreviewAvatar(256, 256); mAvatarPreview->setPreviewTarget("mPelvis", "mUpperBodyMesh0", mRawImagep, 2.f, FALSE); @@ -213,13 +214,16 @@ void LLFloaterImagePreview::onPreviewTypeCommit(LLUICtrl* ctrl, void* userdata) //----------------------------------------------------------------------------- void LLFloaterImagePreview::clearAllPreviewTextures() { - mAvatarPreview->clearPreviewTexture("mHairMesh0"); - mAvatarPreview->clearPreviewTexture("mUpperBodyMesh0"); - mAvatarPreview->clearPreviewTexture("mLowerBodyMesh0"); - mAvatarPreview->clearPreviewTexture("mHeadMesh0"); - mAvatarPreview->clearPreviewTexture("mUpperBodyMesh0"); - mAvatarPreview->clearPreviewTexture("mLowerBodyMesh0"); - mAvatarPreview->clearPreviewTexture("mSkirtMesh0"); + if (mAvatarPreview) + { + mAvatarPreview->clearPreviewTexture("mHairMesh0"); + mAvatarPreview->clearPreviewTexture("mUpperBodyMesh0"); + mAvatarPreview->clearPreviewTexture("mLowerBodyMesh0"); + mAvatarPreview->clearPreviewTexture("mHeadMesh0"); + mAvatarPreview->clearPreviewTexture("mUpperBodyMesh0"); + mAvatarPreview->clearPreviewTexture("mLowerBodyMesh0"); + mAvatarPreview->clearPreviewTexture("mSkirtMesh0"); + } } //----------------------------------------------------------------------------- @@ -612,7 +616,8 @@ LLImagePreviewAvatar::LLImagePreviewAvatar(S32 width, S32 height) : LLDynamicTex mCameraPitch = 0.f; mCameraZoom = 1.f; - mDummyAvatar = new LLVOAvatar(LLUUID::null, LL_PCODE_LEGACY_AVATAR, gAgent.getRegion()); + mDummyAvatar = (LLVOAvatar*)gObjectList.createObjectViewer(LL_PCODE_LEGACY_AVATAR, gAgent.getRegion()); + mDummyAvatar->initInstance(); mDummyAvatar->createDrawable(&gPipeline); mDummyAvatar->mIsDummy = TRUE; mDummyAvatar->mSpecialRenderMode = 2; @@ -670,11 +675,14 @@ void LLImagePreviewAvatar::setPreviewTarget(const std::string& joint_name, const //----------------------------------------------------------------------------- void LLImagePreviewAvatar::clearPreviewTexture(const std::string& mesh_name) { - LLViewerJointMesh *mesh = (LLViewerJointMesh*)mDummyAvatar->mRoot.findJoint(mesh_name); - // clear out existing test mesh - if (mesh) + if (mDummyAvatar) { - mesh->setTestTexture(0); + LLViewerJointMesh *mesh = (LLViewerJointMesh*)mDummyAvatar->mRoot.findJoint(mesh_name); + // clear out existing test mesh + if (mesh) + { + mesh->setTestTexture(0); + } } } @@ -795,27 +803,11 @@ LLImagePreviewSculpted::LLImagePreviewSculpted(S32 width, S32 height) : LLDynami F32 const HIGHEST_LOD = 4.0f; mVolume = new LLVolume(volume_params, HIGHEST_LOD); - - /* - mDummyAvatar = new LLVOAvatar(LLUUID::null, LL_PCODE_LEGACY_AVATAR, gAgent.getRegion()); - mDummyAvatar->createDrawable(&gPipeline); - mDummyAvatar->mIsDummy = TRUE; - mDummyAvatar->mSpecialRenderMode = 2; - mDummyAvatar->setPositionAgent(LLVector3::zero); - mDummyAvatar->slamPosition(); - mDummyAvatar->updateJointLODs(); - mDummyAvatar->updateGeometry(mDummyAvatar->mDrawable); - gPipeline.markVisible(mDummyAvatar->mDrawable, *LLViewerCamera::getInstance()); - mTextureName = 0; - */ } LLImagePreviewSculpted::~LLImagePreviewSculpted() { - /* - mDummyAvatar->markDead(); - */ } diff --git a/indra/newview/llfloaterinspect.cpp b/indra/newview/llfloaterinspect.cpp index 14d664ff9d0710f59a66ead8710edd73a262580b..57f4bcf319d213c5dd21a124bf33bda474ec0e92 100644 --- a/indra/newview/llfloaterinspect.cpp +++ b/indra/newview/llfloaterinspect.cpp @@ -37,6 +37,7 @@ #include "llfloaterreg.h" #include "llfloateravatarinfo.h" #include "llfloatertools.h" +#include "llfriendactions.h" #include "llcachename.h" #include "llscrolllistctrl.h" #include "llscrolllistitem.h" @@ -122,7 +123,7 @@ void LLFloaterInspect::onClickCreatorProfile(void* ctrl) LLSelectNode* node = sInstance->mObjectSelection->getFirstNode(&func); if(node) { - LLFloaterAvatarInfo::showFromDirectory(node->mPermissions->getCreator()); + LLFriendActions::showProfile(node->mPermissions->getCreator()); } } } @@ -149,7 +150,7 @@ void LLFloaterInspect::onClickOwnerProfile(void* ctrl) if(node) { const LLUUID& owner_id = node->mPermissions->getOwner(); - LLFloaterAvatarInfo::showFromDirectory(owner_id); + LLFriendActions::showProfile(owner_id); } } } diff --git a/indra/newview/llfloaterlagmeter.cpp b/indra/newview/llfloaterlagmeter.cpp index 5d6c06f1a6a7dfcaf41a8c9a777c2581d121d9fb..82deaef4a9bc86026e34ae262a4f6d6f17655e20 100644 --- a/indra/newview/llfloaterlagmeter.cpp +++ b/indra/newview/llfloaterlagmeter.cpp @@ -53,21 +53,22 @@ const std::string LAG_GOOD_IMAGE_NAME = "lag_status_good.tga"; LLFloaterLagMeter::LLFloaterLagMeter(const LLSD& key) : LLFloater() { - LLUICtrlFactory::getInstance()->buildFloater(this, "floater_lagmeter.xml"); +// LLUICtrlFactory::getInstance()->buildFloater(this, "floater_lagmeter.xml"); + mCommitCallbackRegistrar.add("LagMeter.ClickShrink", boost::bind(&LLFloaterLagMeter::onClickShrink, this)); +} +BOOL LLFloaterLagMeter::postBuild() +{ // Don't let this window take keyboard focus -- it's confusing to // lose arrow-key driving when testing lag. setIsChrome(TRUE); - + // were we shrunk last time? if (gSavedSettings.getBOOL("LagMeterShrunk")) { - onClickShrink(this); + onClickShrink(); } -} - -BOOL LLFloaterLagMeter::postBuild() -{ + mClientButton = getChild<LLButton>("client_lagmeter"); mClientText = getChild<LLTextBox>("client_text"); mClientCause = getChild<LLTextBox>("client_lag_cause"); @@ -102,7 +103,7 @@ BOOL LLFloaterLagMeter::postBuild() config_string = getString("server_single_process_max_time_ms", mStringArgs); mServerSingleProcessMaxTime = (float)atof( config_string.c_str() ); - mShrunk = false; +// mShrunk = false; config_string = getString("max_width_px", mStringArgs); mMaxWidth = atoi( config_string.c_str() ); config_string = getString("min_width_px", mStringArgs); @@ -120,18 +121,18 @@ BOOL LLFloaterLagMeter::postBuild() mStringArgs["[SERVER_FRAME_RATE_CRITICAL]"] = getString("server_frame_rate_critical_fps"); mStringArgs["[SERVER_FRAME_RATE_WARNING]"] = getString("server_frame_rate_warning_fps"); - childSetAction("minimize", onClickShrink, this); +// childSetAction("minimize", onClickShrink, this); return TRUE; } LLFloaterLagMeter::~LLFloaterLagMeter() { // save shrunk status for next time - gSavedSettings.setBOOL("LagMeterShrunk", mShrunk); +// gSavedSettings.setBOOL("LagMeterShrunk", mShrunk); // expand so we save the large window rectangle - if (mShrunk) + if (gSavedSettings.getBOOL("LagMeterShrunk")) { - onClickShrink(this); + onClickShrink(); } } @@ -184,7 +185,7 @@ void LLFloaterLagMeter::determineClient() { mClientCause->setText( getString("client_texture_loading_cause_msg", mStringArgs) ); } - else if((LLViewerImage::sBoundTextureMemory >> 20) > LLViewerImage::sMaxBoundTextureMem) + else if((BYTES_TO_MEGA_BYTES(LLViewerImage::sBoundTextureMemoryInBytes)) > LLViewerImage::sMaxBoundTextureMemInMegaBytes) { mClientCause->setText( getString("client_texture_memory_cause_msg", mStringArgs) ); } @@ -311,58 +312,61 @@ void LLFloaterLagMeter::determineServer() } } -//static -void LLFloaterLagMeter::onClickShrink(void * data) + +void LLFloaterLagMeter::onClickShrink() // toggle "LagMeterShrunk" { - LLFloaterLagMeter * self = (LLFloaterLagMeter*)data; +// LLFloaterLagMeter * self = (LLFloaterLagMeter*)data; + + LLButton * button = getChild<LLButton>("minimize"); + S32 delta_width = mMaxWidth -mMinWidth; + LLRect r = getRect(); + bool shrunk = gSavedSettings.getBOOL("LagMeterShrunk"); - LLButton * button = self->getChild<LLButton>("minimize"); - S32 delta_width = self->mMaxWidth - self->mMinWidth; - LLRect r = self->getRect(); - if(self->mShrunk) + if(shrunk) { - self->setTitle( self->getString("max_title_msg", self->mStringArgs) ); + setTitle(getString("max_title_msg", mStringArgs) ); // make left edge appear to expand r.translate(-delta_width, 0); - self->setRect(r); - self->reshape(self->mMaxWidth, self->getRect().getHeight()); + setRect(r); + reshape(mMaxWidth, getRect().getHeight()); - self->childSetText("client", self->getString("client_text_msg", self->mStringArgs) + ":"); - self->childSetText("network", self->getString("network_text_msg", self->mStringArgs) + ":"); - self->childSetText("server", self->getString("server_text_msg", self->mStringArgs) + ":"); + childSetText("client", getString("client_text_msg", mStringArgs) + ":"); + childSetText("network", getString("network_text_msg",mStringArgs) + ":"); + childSetText("server", getString("server_text_msg", mStringArgs) + ":"); // usually "<<" - button->setLabel( self->getString("smaller_label", self->mStringArgs) ); + button->setLabel( getString("smaller_label", mStringArgs) ); } else { - self->setTitle( self->getString("min_title_msg", self->mStringArgs) ); + setTitle( getString("min_title_msg", mStringArgs) ); // make left edge appear to collapse r.translate(delta_width, 0); - self->setRect(r); - self->reshape(self->mMinWidth, self->getRect().getHeight()); + setRect(r); + reshape(mMinWidth, getRect().getHeight()); - self->childSetText("client", self->getString("client_text_msg", self->mStringArgs) ); - self->childSetText("network", self->getString("network_text_msg", self->mStringArgs) ); - self->childSetText("server", self->getString("server_text_msg", self->mStringArgs) ); + childSetText("client", getString("client_text_msg", mStringArgs) ); + childSetText("network",getString("network_text_msg",mStringArgs) ); + childSetText("server", getString("server_text_msg", mStringArgs) ); // usually ">>" - button->setLabel( self->getString("bigger_label", self->mStringArgs) ); + button->setLabel( getString("bigger_label", mStringArgs) ); } // Don't put keyboard focus on the button button->setFocus(FALSE); - self->mClientText->setVisible(self->mShrunk); - self->mClientCause->setVisible(self->mShrunk); - self->childSetVisible("client_help", self->mShrunk); +// self->mClientText->setVisible(self->mShrunk); +// self->mClientCause->setVisible(self->mShrunk); +// self->childSetVisible("client_help", self->mShrunk); - self->mNetworkText->setVisible(self->mShrunk); - self->mNetworkCause->setVisible(self->mShrunk); - self->childSetVisible("network_help", self->mShrunk); +// self->mNetworkText->setVisible(self->mShrunk); +// self->mNetworkCause->setVisible(self->mShrunk); +// self->childSetVisible("network_help", self->mShrunk); - self->mServerText->setVisible(self->mShrunk); - self->mServerCause->setVisible(self->mShrunk); - self->childSetVisible("server_help", self->mShrunk); +// self->mServerText->setVisible(self->mShrunk); +// self->mServerCause->setVisible(self->mShrunk); +// self->childSetVisible("server_help", self->mShrunk); - self->mShrunk = !self->mShrunk; +// self->mShrunk = !self->mShrunk; + gSavedSettings.setBOOL("LagMeterShrunk", !gSavedSettings.getBOOL("LagMeterShrunk")); } diff --git a/indra/newview/llfloaterlagmeter.h b/indra/newview/llfloaterlagmeter.h index e8af68ac7a5b83339cf4204f4c99f4f69715a995..6d2086839efb879c7b74083ba62fe82d355f32e9 100644 --- a/indra/newview/llfloaterlagmeter.h +++ b/indra/newview/llfloaterlagmeter.h @@ -42,17 +42,18 @@ class LLFloaterLagMeter : public LLFloater, public LLFloaterSingleton<LLFloaterL friend class LLUISingleton<LLFloaterLagMeter, VisibilityPolicy<LLFloater> >; public: + LLFloaterLagMeter(const LLSD& key); + /*virtual*/ ~LLFloaterLagMeter(); + /*virtual*/ void draw(); /*virtual*/ BOOL postBuild(); private: - LLFloaterLagMeter(const LLSD& key); - /*virtual*/ ~LLFloaterLagMeter(); void determineClient(); void determineNetwork(); void determineServer(); - static void onClickShrink(void * data); + void onClickShrink(); bool mShrunk; S32 mMaxWidth, mMinWidth; diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp index 347fe45b8237d3cb6ddad3677a31cfe00b6761ff..f3275913e4c600d7ca3509d87d89dc808a7f2d5e 100644 --- a/indra/newview/llfloaterland.cpp +++ b/indra/newview/llfloaterland.cpp @@ -44,15 +44,15 @@ #include "lluserauth.h" #include "llagent.h" -#include "llfloateravatarpicker.h" #include "llbutton.h" #include "llcheckboxctrl.h" -#include "llradiogroup.h" #include "llcombobox.h" +#include "llfloaterreg.h" +#include "llfloateravatarpicker.h" #include "llfloaterauction.h" -#include "llfloateravatarinfo.h" #include "llfloatergroups.h" #include "llfloatergroupinfo.h" +#include "llfriendactions.h" #include "lllineeditor.h" #include "llnamelistctrl.h" #include "llnotify.h" @@ -784,7 +784,7 @@ void LLPanelLandGeneral::onClickProfile(void* data) else { const LLUUID& avatar_id = parcel->getOwnerID(); - LLFloaterAvatarInfo::showFromObject(avatar_id); + LLFriendActions::showProfile(avatar_id); } } @@ -889,7 +889,8 @@ void LLPanelLandGeneral::onClickStartAuction(void* data) } else { - LLFloaterAuction::showInstance(); + //LLFloaterAuction::showInstance(); + LLFloaterReg::showInstance("auction"); } } } @@ -1056,7 +1057,7 @@ void LLPanelLandObjects::onDoubleClickOwner(void *userdata) } else { - LLFloaterAvatarInfo::showFromDirectory(owner_id); + LLFriendActions::showProfile(owner_id); } } } @@ -2284,6 +2285,8 @@ LLPanelLandAccess::~LLPanelLandAccess() void LLPanelLandAccess::refresh() { + LLFloater* parent_floater = gFloaterView->getParentFloater(this); + if (mListAccess) mListAccess->deleteAllItems(); if (mListBanned) @@ -2326,20 +2329,20 @@ void LLPanelLandAccess::refresh() if (seconds >= 120) { args["[MINUTES]"] = llformat("%d", (seconds/60)); - std::string buf = getString ("Minutes", args); + std::string buf = parent_floater->getString ("Minutes", args); suffix.append(buf); } else if (seconds >= 60) { - suffix.append("1 " + getString("Minute")); + suffix.append("1 " + parent_floater->getString("Minute")); } else { args["[SECONDS]"] = llformat("%d", seconds); - std::string buf = getString ("Seconds", args); + std::string buf = parent_floater->getString ("Seconds", args); suffix.append(buf); } - suffix.append(" " + getString("Remaining") + ")"); + suffix.append(" " + parent_floater->getString("Remaining") + ")"); } if (mListAccess) mListAccess->addNameItem(entry.mID, ADD_SORTED, TRUE, suffix); @@ -2368,20 +2371,20 @@ void LLPanelLandAccess::refresh() if (seconds >= 120) { args["[MINUTES]"] = llformat("%d", (seconds/60)); - std::string buf = getString ("Minutes", args); + std::string buf = parent_floater->getString ("Minutes", args); suffix.append(buf); } else if (seconds >= 60) { - suffix.append("1 " + getString("Minute")); + suffix.append("1 " + parent_floater->getString("Minute")); } else { args["[SECONDS]"] = llformat("%d", seconds); - std::string buf = getString ("Seconds", args); + std::string buf = parent_floater->getString ("Seconds", args); suffix.append(buf); } - suffix.append(" " + getString("Remaining") + ")"); + suffix.append(" " + parent_floater->getString("Remaining") + ")"); } mListBanned->addNameItem(entry.mID, ADD_SORTED, TRUE, suffix); } diff --git a/indra/newview/llfloatermap.cpp b/indra/newview/llfloatermap.cpp index 6920d4538106f2953987155a29d34ce0e2baf428..6660650c56d8d1211fd7b09c1c66e2bf0709d223 100644 --- a/indra/newview/llfloatermap.cpp +++ b/indra/newview/llfloatermap.cpp @@ -40,7 +40,6 @@ #include "llfloaterreg.h" #include "llfontgl.h" #include "llglheaders.h" -#include "llmenugl.h" // Viewer includes #include "llagent.h" @@ -50,6 +49,7 @@ #include "llviewercamera.h" #include "lldraghandle.h" #include "lltextbox.h" +#include "llviewermenu.h" // // Constants @@ -94,7 +94,7 @@ BOOL LLFloaterMap::postBuild() registrar.add("Minimap.Zoom", boost::bind(&LLFloaterMap::handleZoom, this, _2)); registrar.add("Minimap.Tracker", boost::bind(&LLFloaterMap::handleStopTracking, this, _2)); - mPopupMenu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_minimap.xml", this); + mPopupMenu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_minimap.xml", gMenuHolder); if (mPopupMenu && !LLTracker::isTracking(0)) { mPopupMenu->setItemEnabled ("Stop Tracking", false); diff --git a/indra/newview/llfloaternamedesc.cpp b/indra/newview/llfloaternamedesc.cpp index ad0f9aacb10b37e0ebc8083ee597ffe02c03047d..6ef72d4c1a0f7f5826333f445f1047130ab3f872 100644 --- a/indra/newview/llfloaternamedesc.cpp +++ b/indra/newview/llfloaternamedesc.cpp @@ -41,6 +41,7 @@ #include "llbutton.h" #include "llviewerwindow.h" #include "llfocusmgr.h" +#include "llrootview.h" #include "llradiogroup.h" #include "lldbstrings.h" #include "lldir.h" diff --git a/indra/newview/llfloaternotificationsconsole.cpp b/indra/newview/llfloaternotificationsconsole.cpp index 11842b8b0e9a3849d1117ae417b3545dc423ce90..3d5d2b733f88a739cb5ac6165e97e8b9c433cee4 100644 --- a/indra/newview/llfloaternotificationsconsole.cpp +++ b/indra/newview/llfloaternotificationsconsole.cpp @@ -163,7 +163,9 @@ bool LLNotificationChannelPanel::update(const LLSD& payload, bool passed_filter) LLFloaterNotificationConsole::LLFloaterNotificationConsole(const LLSD& key) : LLFloater() { - LLUICtrlFactory::instance().buildFloater(this, "floater_notifications_console.xml"); + mCommitCallbackRegistrar.add("ClickAdd", boost::bind(&LLFloaterNotificationConsole::onClickAdd, this)); + + //LLUICtrlFactory::instance().buildFloater(this, "floater_notifications_console.xml"); } void LLFloaterNotificationConsole::onClose(bool app_quitting) @@ -187,7 +189,7 @@ BOOL LLFloaterNotificationConsole::postBuild() addChannel("Notifications"); addChannel("NotificationTips"); - getChild<LLButton>("add_notification")->setClickedCallback(onClickAdd, this); +// getChild<LLButton>("add_notification")->setClickedCallback(onClickAdd, this); LLComboBox* notifications = getChild<LLComboBox>("notification_types"); LLNotifications::TemplateNames names = LLNotifications::instance().getTemplateNames(); @@ -236,11 +238,9 @@ void LLFloaterNotificationConsole::updateResizeLimits() setResizeLimits(getMinWidth(), floater_header_size + HEADER_PADDING + ((NOTIFICATION_PANEL_HEADER_HEIGHT + 3) * stack.getNumPanels())); } -void LLFloaterNotificationConsole::onClickAdd(void* user_data) +void LLFloaterNotificationConsole::onClickAdd() { - LLFloaterNotificationConsole* floater = (LLFloaterNotificationConsole*)user_data; - - std::string message_name = floater->getChild<LLComboBox>("notification_types")->getValue().asString(); + std::string message_name = getChild<LLComboBox>("notification_types")->getValue().asString(); if (!message_name.empty()) { LLNotifications::instance().add(message_name, LLSD()); diff --git a/indra/newview/llfloaternotificationsconsole.h b/indra/newview/llfloaternotificationsconsole.h index 037255318215243410f2be6721dafa4e733d6024..b85437c3c5fde739f9b204441fa4a13616cd5f8e 100644 --- a/indra/newview/llfloaternotificationsconsole.h +++ b/indra/newview/llfloaternotificationsconsole.h @@ -55,7 +55,7 @@ class LLFloaterNotificationConsole : void updateResizeLimits(); private: - static void onClickAdd(void* user_data); + void onClickAdd(); }; diff --git a/indra/newview/llfloateropenobject.cpp b/indra/newview/llfloateropenobject.cpp index de6b8ad814dde891299dd094324516f42965cb8f..4d782a1814c12beee5b93d38fb4f8cc1b75d3a1b 100644 --- a/indra/newview/llfloateropenobject.cpp +++ b/indra/newview/llfloateropenobject.cpp @@ -45,6 +45,7 @@ #include "llagent.h" // for agent id #include "llalertdialog.h" +#include "llinventorybridge.h" #include "llinventoryview.h" #include "llinventorymodel.h" #include "llpanelinventory.h" diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index 1dcf4a51d2c4a45c06593298e6e15a32bb9761ff..15d57ebbcc7f983ccb7a37d9f62cf5db77321508 100644 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -42,92 +42,348 @@ #include "message.h" -#include "llfocusmgr.h" -#include "lltabcontainer.h" -#include "llfloaterreg.h" - #include "llagent.h" +#include "llavatarconstants.h" +#include "llcheckboxctrl.h" +#include "llcombobox.h" #include "llcommandhandler.h" +#include "lldirpicker.h" +#include "llfeaturemanager.h" +#include "llfocusmgr.h" +#include "llfirstuse.h" +#include "llfloaterreg.h" #include "llfloaterabout.h" #include "llfloaterhardwaresettings.h" -#include "llpanelnetwork.h" -#include "llpanelaudioprefs.h" -#include "llpaneldisplay.h" -#include "llpanelgeneral.h" -#include "llpanelinput.h" +#include "llfloatervoicedevicesettings.h" +#include "llkeyboard.h" +#include "llmodaldialog.h" #include "llpanellogin.h" -#include "llpanelmsgs.h" -#include "llpanelweb.h" -#include "llpanelskins.h" -#include "llprefschat.h" -#include "llprefsvoice.h" -#include "llprefsim.h" +#include "llradiogroup.h" +#include "llsky.h" +#include "llstylemap.h" +#include "llscrolllistctrl.h" +#include "llscrolllistitem.h" +#include "llsliderctrl.h" +#include "lltabcontainer.h" +#include "lltrans.h" +#include "lltexteditor.h" #include "llviewercontrol.h" +#include "llviewercamera.h" +#include "llviewerwindow.h" +#include "llviewermessage.h" +#include "llviewershadermgr.h" +#include "llvotree.h" +#include "llvosky.h" + +// linden library includes +#include "llerror.h" +#include "llfontgl.h" +#include "llrect.h" +#include "llstring.h" + +// project includes + +#include "llbutton.h" +#include "llflexibleobject.h" +#include "lllineeditor.h" +#include "llresmgr.h" +#include "llspinctrl.h" +#include "llstartup.h" +#include "lltextbox.h" + +#include "llui.h" + +#include "llviewerimage.h" +#include "llviewerimagelist.h" +#include "llviewerobjectlist.h" + +#include "llvoavatar.h" +#include "llvovolume.h" +#include "llwindow.h" +#include "llworld.h" +#include "pipeline.h" +#include "lluictrlfactory.h" +#include "llboost.h" + + +//RN temporary includes for resolution switching +#include "llglheaders.h" +const F32 MAX_USER_FAR_CLIP = 512.f; +const F32 MIN_USER_FAR_CLIP = 64.f; + +const S32 ASPECT_RATIO_STR_LEN = 100; + +class LLVoiceSetKeyDialog : public LLModalDialog + { + public: + LLVoiceSetKeyDialog(LLFloaterPreference* parent); + ~LLVoiceSetKeyDialog(); + + BOOL handleKeyHere(KEY key, MASK mask); + static void onCancel(void* user_data); + + private: + LLFloaterPreference* mParent; + }; + +LLVoiceSetKeyDialog::LLVoiceSetKeyDialog(LLFloaterPreference* parent) +: LLModalDialog(LLStringUtil::null, 240, 100), mParent(parent) +{ + LLUICtrlFactory::getInstance()->buildFloater(this, "floater_select_key.xml"); + childSetAction("Cancel", onCancel, this); + childSetFocus("Cancel"); + + gFocusMgr.setKeystrokesOnly(TRUE); +} + +LLVoiceSetKeyDialog::~LLVoiceSetKeyDialog() +{ +} + +BOOL LLVoiceSetKeyDialog::handleKeyHere(KEY key, MASK mask) +{ + BOOL result = TRUE; + + if(key == 'Q' && mask == MASK_CONTROL) + { + result = FALSE; + } + else + { + mParent->setKey(key); + } + + closeFloater(); + return result; +} + +//static +void LLVoiceSetKeyDialog::onCancel(void* user_data) +{ + LLVoiceSetKeyDialog* self = (LLVoiceSetKeyDialog*)user_data; + self->closeFloater(); +} + + +// global functions + +// helper functions for getting/freeing the web browser media +// if creating/destroying these is too slow, we'll need to create +// a static member and update all our static callbacks + +void free_web_media(LLMediaBase *media_source); +void handleHTMLLinkColorChanged(const LLSD& newvalue); +LLMediaBase *get_web_media(); +bool callback_clear_browser_cache(const LLSD& notification, const LLSD& response); + +bool callback_skip_dialogs(const LLSD& notification, const LLSD& response, LLFloaterPreference* floater); +bool callback_reset_dialogs(const LLSD& notification, const LLSD& response, LLFloaterPreference* floater); + +bool extractWindowSizeFromString(const std::string& instr, U32 &width, U32 &height); +void fractionFromDecimal(F32 decimal_val, S32& numerator, S32& denominator); + +LLMediaBase *get_web_media() +{ + LLMediaBase *media_source; + LLMediaManager *mgr = LLMediaManager::getInstance(); + + if (!mgr) + { + llwarns << "cannot get media manager" << llendl; + return NULL; + } + + media_source = mgr->createSourceFromMimeType("http", "text/html" ); + if ( !media_source ) + { + llwarns << "media source create failed " << llendl; + return NULL; + } + + return media_source; +} + +void free_web_media(LLMediaBase *media_source) +{ + if (!media_source) + return; + + LLMediaManager *mgr = LLMediaManager::getInstance(); + if (!mgr) + { + llwarns << "cannot get media manager" << llendl; + return; + } + + mgr->destroySource(media_source); +} + +bool callback_clear_browser_cache(const LLSD& notification, const LLSD& response) +{ + S32 option = LLNotification::getSelectedOption(notification, response); + if ( option == 0 ) // YES + { + LLMediaBase *media_source = get_web_media(); + if (media_source) + media_source->clearCache(); + free_web_media(media_source); + } + return false; +} + +void handleHTMLLinkColorChanged(const LLSD& newvalue) +{ + LLTextEditor::setLinkColor(LLColor4(newvalue)); + LLStyleMap::instance().update(); + +} + +bool callback_skip_dialogs(const LLSD& notification, const LLSD& response, LLFloaterPreference* floater) +{ + S32 option = LLNotification::getSelectedOption(notification, response); + if (0 == option && floater ) + { + if ( floater ) + { + floater->setAllIgnored(); + LLFirstUse::disableFirstUse(); + LLFloaterPreference::buildLists(floater); + } + } + return false; +} + +bool callback_reset_dialogs(const LLSD& notification, const LLSD& response, LLFloaterPreference* floater) +{ + S32 option = LLNotification::getSelectedOption(notification, response); + if ( 0 == option && floater ) + { + if ( floater ) + { + floater->resetAllIgnored(); + LLFirstUse::resetFirstUse(); + LLFloaterPreference::buildLists(floater); + } + } + return false; +} + + +// Extract from strings of the form "<width> x <height>", e.g. "640 x 480". +bool extractWindowSizeFromString(const std::string& instr, U32 &width, U32 &height) +{ + using namespace boost; + cmatch what; + const regex expression("([0-9]+) x ([0-9]+)"); + if (regex_match(instr.c_str(), what, expression)) + { + width = atoi(what[1].first); + height = atoi(what[2].first); + return true; + } + + width = height = 0; + return false; +} + +void fractionFromDecimal(F32 decimal_val, S32& numerator, S32& denominator) +{ + numerator = 0; + denominator = 0; + for (F32 test_denominator = 1.f; test_denominator < 30.f; test_denominator += 1.f) + { + if (fmodf((decimal_val * test_denominator) + 0.01f, 1.f) < 0.02f) + { + numerator = llround(decimal_val * test_denominator); + denominator = llround(test_denominator); + break; + } + } +} +// static +std::string LLFloaterPreference::sSkin = ""; +F32 LLFloaterPreference::sAspectRatio = 0.0; ////////////////////////////////////////////// // LLFloaterPreference LLFloaterPreference::LLFloaterPreference(const LLSD& key) : LLFloater(key), - mInputPanel(NULL), - mNetworkPanel(NULL), - mWebPanel(NULL), - mDisplayPanel(NULL), - mAudioPanel(NULL), - mPrefsChat(NULL), - mPrefsVoice(NULL), - mPrefsIM(NULL), - mMsgPanel(NULL), - mSkinsPanel(NULL) -{ - mFactoryMap["general"] = LLCallbackMap((LLCallbackMap::callback_t)LLCallbackMap::buildPanel<LLPanelGeneral>); - mFactoryMap["input"] = LLCallbackMap((LLCallbackMap::callback_t)LLCallbackMap::buildPanel<LLPanelInput>); - mFactoryMap["network"] = LLCallbackMap((LLCallbackMap::callback_t)LLCallbackMap::buildPanel<LLPanelNetwork>); - mFactoryMap["web"] = LLCallbackMap((LLCallbackMap::callback_t)LLCallbackMap::buildPanel<LLPanelWeb>); - mFactoryMap["display"] = LLCallbackMap((LLCallbackMap::callback_t)LLCallbackMap::buildPanel<LLPanelDisplay>); - mFactoryMap["audio"] = LLCallbackMap((LLCallbackMap::callback_t)LLCallbackMap::buildPanel<LLPanelAudioPrefs>); - mFactoryMap["chat"] = LLCallbackMap((LLCallbackMap::callback_t)LLCallbackMap::buildPanel<LLPrefsChat>); - mFactoryMap["voice"] = LLCallbackMap((LLCallbackMap::callback_t)LLCallbackMap::buildPanel<LLPrefsVoice>); - mFactoryMap["im"] = LLCallbackMap((LLCallbackMap::callback_t)LLCallbackMap::buildPanel<LLPrefsIM>); - mFactoryMap["msgs"] = LLCallbackMap((LLCallbackMap::callback_t)LLCallbackMap::buildPanel<LLPanelMsgs>); - mFactoryMap["skins"] = LLCallbackMap((LLCallbackMap::callback_t)LLCallbackMap::buildPanel<LLPanelSkins>); - - //Called from floater reg: LLUICtrlFactory::getInstance()->buildFloater(this, "floater_preferences.xml", FALSE); + mGotPersonalInfo(false), + mOriginalIMViaEmail(false) +{ + //Build Floater is now Called from LLFloaterReg::add("preferences", "floater_preferences.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPreference>); + + mCommitCallbackRegistrar.add("Pref.Apply", boost::bind(&LLFloaterPreference::onBtnApply, this)); + mCommitCallbackRegistrar.add("Pref.Cancel", boost::bind(&LLFloaterPreference::onBtnCancel, this)); + mCommitCallbackRegistrar.add("Pref.OK", boost::bind(&LLFloaterPreference::onBtnOK, this)); + + mCommitCallbackRegistrar.add("Pref.ClearCache", boost::bind(&LLFloaterPreference::onClickClearCache, (void*)NULL)); + mCommitCallbackRegistrar.add("Pref.WebClearCache", boost::bind(&LLFloaterPreference::onClickBrowserClearCache, (void*)NULL)); + mCommitCallbackRegistrar.add("Pref.SetCache", boost::bind(&LLFloaterPreference::onClickSetCache, this)); + mCommitCallbackRegistrar.add("Pref.ResetCache", boost::bind(&LLFloaterPreference::onClickResetCache, this)); + mCommitCallbackRegistrar.add("Pref.ClickSkin", boost::bind(&LLFloaterPreference::onClickSkin, this,_1, _2)); + mCommitCallbackRegistrar.add("Pref.SelectSkin", boost::bind(&LLFloaterPreference::onSelectSkin, this)); + mCommitCallbackRegistrar.add("Pref.VoiceSetKey", boost::bind(&LLFloaterPreference::onClickSetKey, this)); + mCommitCallbackRegistrar.add("Pref.VoiceSetMiddleMouse", boost::bind(&LLFloaterPreference::onClickSetMiddleMouse, this)); + mCommitCallbackRegistrar.add("Pref.ClickSkipDialogs", boost::bind(&LLFloaterPreference::onClickSkipDialogs, this)); + mCommitCallbackRegistrar.add("Pref.ClickResetDialogs", boost::bind(&LLFloaterPreference::onClickResetDialogs, this)); + mCommitCallbackRegistrar.add("Pref.ClickEnablePopup", boost::bind(&LLFloaterPreference::onClickEnablePopup, this)); + mCommitCallbackRegistrar.add("Pref.LogPath", boost::bind(&LLFloaterPreference::onClickLogPath, this)); + mCommitCallbackRegistrar.add("Pref.Logging", boost::bind(&LLFloaterPreference::onCommitLogging, this)); + mCommitCallbackRegistrar.add("Pref.OpenHelp", boost::bind(&LLFloaterPreference::onOpenHelp, this)); + mCommitCallbackRegistrar.add("Pref.ChangeCustom", boost::bind(&LLFloaterPreference::onChangeCustom, this)); + mCommitCallbackRegistrar.add("Pref.UpdateMeterText", boost::bind(&LLFloaterPreference::updateMeterText, this, _1)); + mCommitCallbackRegistrar.add("Pref.HardwareSettings", boost::bind(&LLFloaterPreference::onOpenHardwareSettings, this)); + mCommitCallbackRegistrar.add("Pref.HardwareDefaults", boost::bind(&LLFloaterPreference::setHardwareDefaults, this)); + mCommitCallbackRegistrar.add("Pref.VertexShaderEnable", boost::bind(&LLFloaterPreference::onVertexShaderEnable, this)); + mCommitCallbackRegistrar.add("Pref.WindowedMod", boost::bind(&LLFloaterPreference::onCommitWindowedMode, this)); + mCommitCallbackRegistrar.add("Pref.UpdateSliderText", boost::bind(&LLFloaterPreference::onUpdateSliderText,this, _1,_2)); + mCommitCallbackRegistrar.add("Pref.AutoDetectAspect", boost::bind(&LLFloaterPreference::onCommitAutoDetectAspect, this)); + mCommitCallbackRegistrar.add("Pref.onSelectAspectRatio", boost::bind(&LLFloaterPreference::onKeystrokeAspectRatio, this)); + mCommitCallbackRegistrar.add("Pref.QualityPerformance", boost::bind(&LLFloaterPreference::onChangeQuality, this, _2)); + + gSavedSkinSettings.getControl("HTMLLinkColor")->getCommitSignal()->connect(boost::bind(&handleHTMLLinkColorChanged, _2)); + } BOOL LLFloaterPreference::postBuild() { - getChild<LLButton>("About...")->setClickedCallback(onClickAbout, this); - getChild<LLButton>("Apply")->setClickedCallback(onBtnApply, this); - getChild<LLButton>("Cancel")->setClickedCallback(onBtnCancel, this); - getChild<LLButton>("OK")->setClickedCallback(onBtnOK, this); - LLTabContainer* tabcontainer = getChild<LLTabContainer>("pref core"); if (!tabcontainer->selectTab(gSavedSettings.getS32("LastPrefTab"))) tabcontainer->selectFirstTab(); - - // Panels that don't yet derive from LLPanelPreferenc - // *TODO: Skinning - conver these to derive from LLPanelPreference - mWebPanel = dynamic_cast<LLPanelWeb*>(getChild<LLPanel>("web")); - mDisplayPanel = dynamic_cast<LLPanelDisplay*>(getChild<LLPanel>("display")); - mAudioPanel = dynamic_cast<LLPanelAudioPrefs*>(getChild<LLPanel>("audio")); - mPrefsChat = dynamic_cast<LLPrefsChat*>(getChild<LLPanel>("chat")); - mPrefsVoice = dynamic_cast<LLPrefsVoice*>(getChild<LLPanel>("voice")); - mPrefsIM = dynamic_cast<LLPrefsIM*>(getChild<LLPanel>("im")); - mMsgPanel = dynamic_cast<LLPanelMsgs*>(getChild<LLPanel>("msgs")); - mSkinsPanel = dynamic_cast<LLPanelSkins*>(getChild<LLPanel>("skins")); - return TRUE; } - LLFloaterPreference::~LLFloaterPreference() { + // clean up user data + LLComboBox* ctrl_aspect_ratio = getChild<LLComboBox>( "aspect_ratio"); + LLComboBox* ctrl_window_size = getChild<LLComboBox>("windowsize combo"); + for (S32 i = 0; i < ctrl_aspect_ratio->getItemCount(); i++) + { + ctrl_aspect_ratio->setCurrentByIndex(i); + } + for (S32 i = 0; i < ctrl_window_size->getItemCount(); i++) + { + ctrl_window_size->setCurrentByIndex(i); + } +} +void LLFloaterPreference::draw() +{ + BOOL has_first_selected = (getChildRef<LLScrollListCtrl>("disabled_popups").getFirstSelected()!=NULL); + gSavedSettings.setBOOL("FirstSelectedDisabledPopups", has_first_selected); + LLFloater::draw(); } void LLFloaterPreference::apply() { LLTabContainer* tabcontainer = getChild<LLTabContainer>("pref core"); + if (sSkin != gSavedSettings.getString("SkinCurrent")) + { + LLNotifications::instance().add("ChangeSkin"); + refreshSkin(this); + } // Call apply() on all panels that derive from LLPanelPreference for (child_list_t::const_iterator iter = tabcontainer->getChildList()->begin(); iter != tabcontainer->getChildList()->end(); ++iter) @@ -137,18 +393,77 @@ void LLFloaterPreference::apply() if (panel) panel->apply(); } - - if (mWebPanel) mWebPanel->apply(); - if (mDisplayPanel) mDisplayPanel->apply(); - if (mAudioPanel) mAudioPanel->apply(); - if (mPrefsChat) mPrefsChat->apply(); - if (mPrefsVoice) mPrefsVoice->apply(); - if (mPrefsIM) mPrefsIM->apply(); - if (mMsgPanel) mMsgPanel->apply(); - if (mSkinsPanel) mSkinsPanel->apply(); - // hardware menu apply LLFloaterHardwareSettings::instance()->apply(); + + LLFloaterVoiceDeviceSettings* voice_device_settings = LLFloaterReg::findTypedInstance<LLFloaterVoiceDeviceSettings>("pref_voicedevicesettings"); + if(voice_device_settings) + { + voice_device_settings->apply(); + } + + gViewerWindow->requestResolutionUpdate(); // for UIScaleFactor + + LLSliderCtrl* fov_slider = getChild<LLSliderCtrl>("camera_fov"); + fov_slider->setMinValue(LLViewerCamera::getInstance()->getMinView()); + fov_slider->setMaxValue(LLViewerCamera::getInstance()->getMaxView()); + + std::string cache_location = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, ""); + childSetText("cache_location", cache_location); + + LLMediaBase *media_source = get_web_media(); + if (media_source) + { + media_source->enableCookies(childGetValue("cookies_enabled")); + if(hasChild("web_proxy_enabled") &&hasChild("web_proxy_editor") && hasChild("web_proxy_port")) + { + bool proxy_enable = childGetValue("web_proxy_enabled"); + std::string proxy_address = childGetValue("web_proxy_editor"); + + int proxy_port = childGetValue("web_proxy_port"); + media_source->enableProxy(proxy_enable, proxy_address, proxy_port); + } + } + free_web_media(media_source); + + LLTextEditor* busy = getChild<LLTextEditor>("busy_response"); + LLWString busy_response; + if (busy) busy_response = busy->getWText(); + LLWStringUtil::replaceTabsWithSpaces(busy_response, 4); + + if(mGotPersonalInfo) + { + gSavedPerAccountSettings.setString("BusyModeResponse2", std::string(wstring_to_utf8str(busy_response))); + bool new_im_via_email = childGetValue("send_im_to_email").asBoolean(); + bool new_hide_online = childGetValue("online_visibility").asBoolean(); + + if((new_im_via_email != mOriginalIMViaEmail) + ||(new_hide_online != mOriginalHideOnlineStatus)) + { + // This hack is because we are representing several different + // possible strings with a single checkbox. Since most users + // can only select between 2 values, we represent it as a + // checkbox. This breaks down a little bit for liaisons, but + // works out in the end. + if(new_hide_online != mOriginalHideOnlineStatus) + { + if(new_hide_online) mDirectoryVisibility = VISIBILITY_HIDDEN; + else mDirectoryVisibility = VISIBILITY_DEFAULT; + //Update showonline value, otherwise multiple applys won't work + mOriginalHideOnlineStatus = new_hide_online; + } + gAgent.sendAgentUpdateUserInfo(new_im_via_email,mDirectoryVisibility); + } + } + + applyResolution(); + + // Only set window size if we're not in fullscreen mode + if(gSavedSettings.getBOOL("NotFullScreen")) + { + applyWindowSize(); + } + } void LLFloaterPreference::cancel() @@ -163,18 +478,25 @@ void LLFloaterPreference::cancel() if (panel) panel->cancel(); } - - if (mWebPanel) mWebPanel->apply(); - if (mDisplayPanel) mDisplayPanel->cancel(); - if (mAudioPanel) mAudioPanel->cancel(); - if (mPrefsChat) mPrefsChat->cancel(); - if (mPrefsVoice) mPrefsVoice->cancel(); - if (mPrefsIM) mPrefsIM->cancel(); - if (mMsgPanel) mMsgPanel->cancel(); - if (mSkinsPanel) mSkinsPanel->cancel(); - + // hide joystick pref floater + LLFloaterReg::hideInstance("pref_joystick"); + // cancel hardware menu - LLFloaterHardwareSettings::instance()->cancel(); + LLFloaterHardwareSettings::instance()->cancel(); // TODO: angela change the build of the floater to floater reg + + // reverts any changes to current skin + gSavedSettings.setString("SkinCurrent", sSkin); + + LLFloaterVoiceDeviceSettings* voice_device_settings = LLFloaterReg::findTypedInstance<LLFloaterVoiceDeviceSettings>("pref_voicedevicesettings"); + if (voice_device_settings) + { + voice_device_settings ->cancel(); + } + + LLFloaterReg::hideInstance("pref_voicedevicesettings"); + + gSavedSettings.setF32("FullScreenAspectRatio", sAspectRatio); + } void LLFloaterPreference::onOpen(const LLSD& key) @@ -183,6 +505,16 @@ void LLFloaterPreference::onOpen(const LLSD& key) LLPanelLogin::setAlwaysRefresh(true); } +void LLFloaterPreference::onVertexShaderEnable() +{ + refreshEnabledGraphics(); +} + +void LLFloaterPreference::setHardwareDefaults() +{ + LLFeatureManager::getInstance()->applyRecommendedSettings(); + refreshEnabledGraphics(); +} void LLFloaterPreference::onClose(bool app_quitting) { gSavedSettings.setS32("LastPrefTab", getChild<LLTabContainer>("pref core")->getCurrentPanelIndex()); @@ -190,19 +522,15 @@ void LLFloaterPreference::onClose(bool app_quitting) cancel(); // will be a no-op if OK or apply was performed just prior. destroy(); } - -// static -void LLFloaterPreference::onClickAbout(void*) +void LLFloaterPreference::onOpenHardwareSettings() { - LLFloaterAbout::showInstance(); + LLFloaterHardwareSettings::show(); } - // static -void LLFloaterPreference::onBtnOK( void* userdata ) +void LLFloaterPreference::onBtnOK() { - LLFloaterPreference *fp =(LLFloaterPreference *)userdata; // commit any outstanding text entry - if (fp->hasFocus()) + if (hasFocus()) { LLUICtrl* cur_focus = gFocusMgr.getKeyboardFocus(); if (cur_focus->acceptsTextInput()) @@ -211,11 +539,10 @@ void LLFloaterPreference::onBtnOK( void* userdata ) } } - if (fp->canClose()) + if (canClose()) { - fp->apply(); - fp->closeFloater(false); - + apply(); + closeFloater(false); gSavedSettings.saveToFile( gSavedSettings.getString("ClientSettingsFile"), TRUE ); gSavedSkinSettings.saveToFile(gSavedSettings.getString("SkinningSettingsFile") , TRUE ); std::string crash_settings_filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, CRASH_SETTINGS_FILE); @@ -231,12 +558,16 @@ void LLFloaterPreference::onBtnOK( void* userdata ) LLPanelLogin::refreshLocation( false ); } +void LLFloaterPreference::onOpenHelp() +{ + const char* xml_alert = "GraphicsPreferencesHelp"; + LLNotifications::instance().add(this->contextualNotification(xml_alert)); +} // static -void LLFloaterPreference::onBtnApply( void* userdata ) +void LLFloaterPreference::onBtnApply( ) { - LLFloaterPreference *fp =(LLFloaterPreference *)userdata; - if (fp->hasFocus()) + if (hasFocus()) { LLUICtrl* cur_focus = gFocusMgr.getKeyboardFocus(); if (cur_focus->acceptsTextInput()) @@ -244,17 +575,15 @@ void LLFloaterPreference::onBtnApply( void* userdata ) cur_focus->onCommit(); } } - fp->apply(); + apply(); LLPanelLogin::refreshLocation( false ); } - // static -void LLFloaterPreference::onBtnCancel( void* userdata ) +void LLFloaterPreference::onBtnCancel() { - LLFloaterPreference *fp =(LLFloaterPreference *)userdata; - if (fp->hasFocus()) + if (hasFocus()) { LLUICtrl* cur_focus = gFocusMgr.getKeyboardFocus(); if (cur_focus->acceptsTextInput()) @@ -262,80 +591,927 @@ void LLFloaterPreference::onBtnCancel( void* userdata ) cur_focus->onCommit(); } } - - fp->closeFloater(); // side effect will also cancel any unsaved changes. + closeFloater(); // side effect will also cancel any unsaved changes. } - -// static +// static void LLFloaterPreference::updateUserInfo(const std::string& visibility, bool im_via_email, const std::string& email) { LLFloaterPreference* instance = LLFloaterReg::findTypedInstance<LLFloaterPreference>("preferences"); - if(instance && instance->mPrefsIM) + if(instance) { - instance->mPrefsIM->setPersonalInfo(visibility, im_via_email, email); + instance->setPersonalInfo(visibility, im_via_email, email); } } -// static + +void LLFloaterPreference::onChangeCustom() +{ + // if custom is turned off, reset everything to defaults + if (this && getChild<LLCheckBoxCtrl>("CustomSettings")->getValue()) + { + U32 set = (U32)getChild<LLSliderCtrl>("QualityPerformanceSelection")->getValueF32(); + LLFeatureManager::getInstance()->setGraphicsLevel(set, true); + updateMeterText(getChild<LLSliderCtrl>("DrawDistance")); + } + + refreshEnabledGraphics(); +} + void LLFloaterPreference::refreshEnabledGraphics() { LLFloaterPreference* instance = LLFloaterReg::findTypedInstance<LLFloaterPreference>("preferences"); if(instance) { LLFloaterHardwareSettings::instance()->refreshEnabledState(); - if (instance->mDisplayPanel) - instance->mDisplayPanel->refreshEnabledState(); + instance->refreshEnabledState(); } } -//---------------------------------------------------------------------------- +void LLFloaterPreference::updateMeterText(LLUICtrl* ctrl) +{ + // get our UI widgets + LLSliderCtrl* slider = (LLSliderCtrl*) ctrl; -//virtual -BOOL LLPanelPreference::postBuild() + LLTextBox* m1 = getChild<LLTextBox>("DrawDistanceMeterText1"); + LLTextBox* m2 = getChild<LLTextBox>("DrawDistanceMeterText2"); + + // toggle the two text boxes based on whether we have 1 or two digits + F32 val = slider->getValueF32(); + bool two_digits = val < 100; + m1->setVisible(two_digits); + m2->setVisible(!two_digits); +} + +// static +void LLFloaterPreference::onClickClearCache(void*) { - apply(); - return true; + // flag client cache for clearing next time the client runs + gSavedSettings.setBOOL("PurgeCacheOnNextStartup", TRUE); + LLNotifications::instance().add("CacheWillClear"); } -void LLPanelPreference::apply() +// static +void LLFloaterPreference::onClickBrowserClearCache(void*) { - // Save the value of all controls in the hierarchy - mSavedValues.clear(); - std::list<LLView*> view_stack; - view_stack.push_back(this); - while(!view_stack.empty()) + LLNotifications::instance().add("ConfirmClearBrowserCache", LLSD(), LLSD(), callback_clear_browser_cache); +} + +void LLFloaterPreference::onClickSetCache() +{ + std::string cur_name(gSavedSettings.getString("CacheLocation")); + std::string proposed_name(cur_name); + + LLDirPicker& picker = LLDirPicker::instance(); + if (! picker.getDir(&proposed_name ) ) { - // Process view on top of the stack - LLView* curview = view_stack.front(); - view_stack.pop_front(); - LLUICtrl* ctrl = dynamic_cast<LLUICtrl*>(curview); - if (ctrl) + return; //Canceled! + } + + std::string dir_name = picker.getDirName(); + if (!dir_name.empty() && dir_name != cur_name) + { + childSetText("cache_location", dir_name); + LLNotifications::instance().add("CacheWillBeMoved"); + gSavedSettings.setString("NewCacheLocation", dir_name); + } + else + { + std::string cache_location = gDirUtilp->getCacheDir(); + childSetText("cache_location", cache_location); + } +} + +void LLFloaterPreference::onClickResetCache() +{ + if (!gSavedSettings.getString("CacheLocation").empty()) + { + gSavedSettings.setString("NewCacheLocation", ""); + LLNotifications::instance().add("CacheWillBeMoved"); + } + std::string cache_location = gDirUtilp->getCacheDir(true); + childSetText("cache_location", cache_location); +} + +void LLFloaterPreference::onClickSkin(LLUICtrl* ctrl, const LLSD& userdata) +{ + gSavedSettings.setString("SkinCurrent", userdata.asString()); + ctrl->setValue(userdata.asString()); +} + +void LLFloaterPreference::onSelectSkin() +{ + std::string skin_selection = getChild<LLRadioGroup>("skin_selection")->getValue().asString(); + gSavedSettings.setString("SkinCurrent", skin_selection); +} + +void LLFloaterPreference::refreshSkin(void* data) +{ + LLPanel*self = (LLPanel*)data; + sSkin = gSavedSettings.getString("SkinCurrent"); + self->getChild<LLRadioGroup>("skin_selection", true)->setValue(sSkin); +} + +// static +void LLFloaterPreference::buildLists(void* data) +{ + LLPanel*self = (LLPanel*)data; + LLScrollListCtrl& disabled_popups = self->getChildRef<LLScrollListCtrl>("disabled_popups"); + LLScrollListCtrl& enabled_popups = self->getChildRef<LLScrollListCtrl>("enabled_popups"); + + disabled_popups.deleteAllItems(); + enabled_popups.deleteAllItems(); + + for (LLNotifications::TemplateMap::const_iterator iter = LLNotifications::instance().templatesBegin(); + iter != LLNotifications::instance().templatesEnd(); + ++iter) + { + LLNotificationTemplatePtr templatep = iter->second; + LLNotificationFormPtr formp = templatep->mForm; + + LLNotificationForm::EIgnoreType ignore = formp->getIgnoreType(); + if (ignore == LLNotificationForm::IGNORE_NO) + continue; + + LLSD row; + row["columns"][0]["value"] = formp->getIgnoreMessage(); + row["columns"][0]["font"] = "SANSSERIF_SMALL"; + row["columns"][0]["width"] = 400; + + LLScrollListItem* item = NULL; + + bool show_popup = LLUI::sSettingGroups["ignores"]->getBOOL(templatep->mName); + if (!show_popup) { - LLControlVariable* control = ctrl->getControlVariable(); - if (control) + if (ignore == LLNotificationForm::IGNORE_WITH_LAST_RESPONSE) { - mSavedValues[control] = control->getValue(); + LLSD last_response = LLUI::sSettingGroups["config"]->getLLSD("Default" + templatep->mName); + if (!last_response.isUndefined()) + { + for (LLSD::map_const_iterator it = last_response.beginMap(); + it != last_response.endMap(); + ++it) + { + if (it->second.asBoolean()) + { + row["columns"][1]["value"] = formp->getElement(it->first)["ignore"].asString(); + break; + } + } + } + row["columns"][1]["font"] = "SANSSERIF_SMALL"; + row["columns"][1]["width"] = 360; } + item = disabled_popups.addElement(row, + ADD_SORTED); + } + else + { + item = enabled_popups.addElement(row, + ADD_SORTED); } - // Push children onto the end of the work stack - for (child_list_t::const_iterator iter = curview->getChildList()->begin(); - iter != curview->getChildList()->end(); ++iter) + if (item) { - view_stack.push_back(*iter); + item->setUserdata((void*)&iter->first); } } - } -void LLPanelPreference::cancel() +void LLFloaterPreference::refreshEnabledState() { - for (control_values_map_t::iterator iter = mSavedValues.begin(); - iter != mSavedValues.end(); ++iter) + + // disable graphics settings and exit if it's not set to custom + if(!gSavedSettings.getBOOL("RenderCustomSettings")) { - LLControlVariable* control = iter->first; - LLSD ctrl_value = iter->second; - control->set(ctrl_value); + return; } -} + + LLCheckBoxCtrl* ctrl_reflections = getChild<LLCheckBoxCtrl>("Reflections"); + LLRadioGroup* radio_reflection_detail = getChild<LLRadioGroup>("ReflectionDetailRadio"); + + // Reflections + BOOL reflections = gSavedSettings.getBOOL("VertexShaderEnable") + && gGLManager.mHasCubeMap + && LLCubeMap::sUseCubeMaps; + ctrl_reflections->setEnabled(reflections); + + // Bump & Shiny + bool bumpshiny = gGLManager.mHasCubeMap && LLCubeMap::sUseCubeMaps && LLFeatureManager::getInstance()->isFeatureAvailable("RenderObjectBump"); + getChild<LLCheckBoxCtrl>("BumpShiny")->setEnabled(bumpshiny ? TRUE : FALSE); + + for (S32 i = 0; i < radio_reflection_detail->getItemCount(); ++i) + { + radio_reflection_detail->setIndexEnabled(i, ctrl_reflections->get() && reflections); + } + + // Avatar Mode + // Enable Avatar Shaders + LLCheckBoxCtrl* ctrl_avatar_vp = getChild<LLCheckBoxCtrl>("AvatarVertexProgram"); + // Avatar Render Mode + LLCheckBoxCtrl* ctrl_avatar_cloth = getChild<LLCheckBoxCtrl>("AvatarCloth"); + + S32 max_avatar_shader = LLViewerShaderMgr::instance()->mMaxAvatarShaderLevel; + ctrl_avatar_vp->setEnabled((max_avatar_shader > 0) ? TRUE : FALSE); + + if (gSavedSettings.getBOOL("VertexShaderEnable") == FALSE || + gSavedSettings.getBOOL("RenderAvatarVP") == FALSE) + { + ctrl_avatar_cloth->setEnabled(false); + } + else + { + ctrl_avatar_cloth->setEnabled(true); + } + + // Vertex Shaders + // Global Shader Enable + LLCheckBoxCtrl* ctrl_shader_enable = getChild<LLCheckBoxCtrl>("BasicShaders"); + // radio set for terrain detail mode + LLRadioGroup* mRadioTerrainDetail = getChild<LLRadioGroup>("TerrainDetailRadio"); // can be linked with control var + + ctrl_shader_enable->setEnabled(LLFeatureManager::getInstance()->isFeatureAvailable("VertexShaderEnable")); + + BOOL shaders = ctrl_shader_enable->get(); + if (shaders) + { + mRadioTerrainDetail->setValue(1); + mRadioTerrainDetail->setEnabled(FALSE); + } + else + { + mRadioTerrainDetail->setEnabled(TRUE); + } + + // WindLight + LLCheckBoxCtrl* ctrl_wind_light = getChild<LLCheckBoxCtrl>("WindLightUseAtmosShaders"); + + // *HACK just checks to see if we can use shaders... + // maybe some cards that use shaders, but don't support windlight + ctrl_wind_light->setEnabled(ctrl_shader_enable->getEnabled() && shaders); + // now turn off any features that are unavailable + disableUnavailableSettings(); +} + +void LLFloaterPreference::disableUnavailableSettings() +{ + LLCheckBoxCtrl* ctrl_reflections = getChild<LLCheckBoxCtrl>("Reflections"); + LLCheckBoxCtrl* ctrl_avatar_vp = getChild<LLCheckBoxCtrl>("AvatarVertexProgram"); + LLCheckBoxCtrl* ctrl_avatar_cloth = getChild<LLCheckBoxCtrl>("AvatarCloth"); + LLCheckBoxCtrl* ctrl_shader_enable = getChild<LLCheckBoxCtrl>("BasicShaders"); + LLCheckBoxCtrl* ctrl_wind_light = getChild<LLCheckBoxCtrl>("WindLightUseAtmosShaders"); + LLCheckBoxCtrl* ctrl_avatar_impostors = getChild<LLCheckBoxCtrl>("AvatarImpostors"); + + // if vertex shaders off, disable all shader related products + if(!LLFeatureManager::getInstance()->isFeatureAvailable("VertexShaderEnable")) + { + ctrl_shader_enable->setEnabled(FALSE); + ctrl_shader_enable->setValue(FALSE); + + ctrl_wind_light->setEnabled(FALSE); + ctrl_wind_light->setValue(FALSE); + + ctrl_reflections->setEnabled(FALSE); + ctrl_reflections->setValue(FALSE); + + ctrl_avatar_vp->setEnabled(FALSE); + ctrl_avatar_vp->setValue(FALSE); + + ctrl_avatar_cloth->setEnabled(FALSE); + ctrl_avatar_cloth->setValue(FALSE); + } + + // disabled windlight + if(!LLFeatureManager::getInstance()->isFeatureAvailable("WindLightUseAtmosShaders")) + { + ctrl_wind_light->setEnabled(FALSE); + ctrl_wind_light->setValue(FALSE); + } + + // disabled reflections + if(!LLFeatureManager::getInstance()->isFeatureAvailable("RenderWaterReflections")) + { + ctrl_reflections->setEnabled(FALSE); + ctrl_reflections->setValue(FALSE); + } + + // disabled av + if(!LLFeatureManager::getInstance()->isFeatureAvailable("RenderAvatarVP")) + { + ctrl_avatar_vp->setEnabled(FALSE); + ctrl_avatar_vp->setValue(FALSE); + + ctrl_avatar_cloth->setEnabled(FALSE); + ctrl_avatar_cloth->setValue(FALSE); + } + // disabled cloth + if(!LLFeatureManager::getInstance()->isFeatureAvailable("RenderAvatarCloth")) + { + ctrl_avatar_cloth->setEnabled(FALSE); + ctrl_avatar_cloth->setValue(FALSE); + } + // disabled impostors + if(!LLFeatureManager::getInstance()->isFeatureAvailable("RenderUseImpostors")) + { + ctrl_avatar_impostors->setEnabled(FALSE); + ctrl_avatar_impostors->setValue(FALSE); + } +} + +void LLFloaterPreference::onCommitAutoDetectAspect() +{ + BOOL auto_detect = getChild<LLCheckBoxCtrl>("aspect_auto_detect")->get(); + F32 ratio; + + if (auto_detect) + { + S32 numerator = 0; + S32 denominator = 0; + + // clear any aspect ratio override + gViewerWindow->mWindow->setNativeAspectRatio(0.f); + fractionFromDecimal(gViewerWindow->mWindow->getNativeAspectRatio(), numerator, denominator); + + std::string aspect; + if (numerator != 0) + { + aspect = llformat("%d:%d", numerator, denominator); + } + else + { + aspect = llformat("%.3f", gViewerWindow->mWindow->getNativeAspectRatio()); + } + + getChild<LLComboBox>( "aspect_ratio")->setLabel(aspect); + + ratio = gViewerWindow->mWindow->getNativeAspectRatio(); + gSavedSettings.setF32("FullScreenAspectRatio", ratio); + } +} + +void LLFloaterPreference::refresh() +{ + LLPanel::refresh(); + + // sliders and their text boxes + // mPostProcess = gSavedSettings.getS32("RenderGlowResolutionPow"); + // slider text boxes + updateSliderText(getChild<LLSliderCtrl>("ObjectMeshDetail"), getChild<LLTextBox>("ObjectMeshDetailText")); + updateSliderText(getChild<LLSliderCtrl>("FlexibleMeshDetail"), getChild<LLTextBox>("FlexibleMeshDetailText")); + updateSliderText(getChild<LLSliderCtrl>("TreeMeshDetail"), getChild<LLTextBox>("TreeMeshDetailText")); + updateSliderText(getChild<LLSliderCtrl>("AvatarMeshDetail"), getChild<LLTextBox>("AvatarMeshDetailText")); + updateSliderText(getChild<LLSliderCtrl>("TerrainMeshDetail"), getChild<LLTextBox>("TerrainMeshDetailText")); + updateSliderText(getChild<LLSliderCtrl>("RenderPostProcess"), getChild<LLTextBox>("PostProcessText")); + updateSliderText(getChild<LLSliderCtrl>("SkyMeshDetail"), getChild<LLTextBox>("SkyMeshDetailText")); + + refreshEnabledState(); +} + +void LLFloaterPreference::onCommitWindowedMode() +{ + refresh(); +} + +void LLFloaterPreference::onChangeQuality(const LLSD& data) +{ + U32 level = (U32)(data.asReal()); + LLFeatureManager::getInstance()->setGraphicsLevel(level, true); + refreshEnabledGraphics(); + refresh(); +} + +// static +// DEV-24146 - needs to be removed at a later date. jan-2009 +void LLFloaterPreference::cleanupBadSetting() +{ + if (gSavedPerAccountSettings.getString("BusyModeResponse2") == "|TOKEN COPY BusyModeResponse|") + { + llwarns << "cleaning old BusyModeResponse" << llendl; + gSavedPerAccountSettings.setString("BusyModeResponse2", gSavedPerAccountSettings.getText("BusyModeResponse")); + } +} + +void LLFloaterPreference::onClickSetKey() +{ + LLVoiceSetKeyDialog* dialog = new LLVoiceSetKeyDialog(this); + dialog->startModal(); +} + +void LLFloaterPreference::setKey(KEY key) +{ + childSetValue("modifier_combo", LLKeyboard::stringFromKey(key)); +} + +void LLFloaterPreference::onClickSetMiddleMouse() +{ + childSetValue("modifier_combo", "MiddleMouse"); +} + +void LLFloaterPreference::onClickSkipDialogs() +{ + LLNotifications::instance().add("SkipShowNextTimeDialogs", LLSD(), LLSD(), boost::bind(&callback_skip_dialogs, _1, _2, this)); +} + +void LLFloaterPreference::onClickResetDialogs() +{ + LLNotifications::instance().add("ResetShowNextTimeDialogs", LLSD(), LLSD(), boost::bind(&callback_reset_dialogs, _1, _2, this)); +} + +void LLFloaterPreference::onClickEnablePopup() +{ + LLScrollListCtrl& disabled_popups = getChildRef<LLScrollListCtrl>("disabled_popups"); + + std::vector<LLScrollListItem*> items = disabled_popups.getAllSelected(); + std::vector<LLScrollListItem*>::iterator itor; + for (itor = items.begin(); itor != items.end(); ++itor) + { + LLNotificationTemplatePtr templatep = LLNotifications::instance().getTemplate(*(std::string*)((*itor)->getUserdata())); + //gSavedSettings.setWarning(templatep->mName, TRUE); + std::string notification_name = templatep->mName; + LLUI::sSettingGroups["ignores"]->setBOOL(notification_name, TRUE); + } + + buildLists(this); +} + +void LLFloaterPreference::resetAllIgnored() +{ + for (LLNotifications::TemplateMap::const_iterator iter = LLNotifications::instance().templatesBegin(); + iter != LLNotifications::instance().templatesEnd(); + ++iter) + { + if (iter->second->mForm->getIgnoreType() != LLNotificationForm::IGNORE_NO) + { + LLUI::sSettingGroups["ignores"]->setBOOL(iter->first, TRUE); + } + } +} + +void LLFloaterPreference::setAllIgnored() +{ + for (LLNotifications::TemplateMap::const_iterator iter = LLNotifications::instance().templatesBegin(); + iter != LLNotifications::instance().templatesEnd(); + ++iter) + { + if (iter->second->mForm->getIgnoreType() != LLNotificationForm::IGNORE_NO) + { + LLUI::sSettingGroups["ignores"]->setBOOL(iter->first, FALSE); + } + } +} + +void LLFloaterPreference::onClickLogPath() +{ + std::string proposed_name(childGetText("log_path_string")); + + LLDirPicker& picker = LLDirPicker::instance(); + if (!picker.getDir(&proposed_name ) ) + { + return; //Canceled! + } + + childSetText("log_path_string", picker.getDirName()); +} + +void LLFloaterPreference::onCommitLogging() +{ + enableHistory(); +} + +void LLFloaterPreference::enableHistory() +{ + if (childGetValue("log_instant_messages").asBoolean() || childGetValue("log_chat").asBoolean()) + { + childEnable("log_show_history"); + childEnable("log_path_button"); + } + else + { + childDisable("log_show_history"); + childDisable("log_path_button"); + } +} + +void LLFloaterPreference::setPersonalInfo(const std::string& visibility, bool im_via_email, const std::string& email) +{ + mGotPersonalInfo = true; + mOriginalIMViaEmail = im_via_email; + mDirectoryVisibility = visibility; + + if(visibility == VISIBILITY_DEFAULT) + { + mOriginalHideOnlineStatus = false; + childEnable("online_visibility"); + } + else if(visibility == VISIBILITY_HIDDEN) + { + mOriginalHideOnlineStatus = true; + childEnable("online_visibility"); + } + else + { + mOriginalHideOnlineStatus = true; + } + + childEnable("include_im_in_chat_history"); + childEnable("show_timestamps_check_im"); + childEnable("friends_online_notify_checkbox"); + + childSetValue("online_visibility", mOriginalHideOnlineStatus); + childSetLabelArg("online_visibility", "[DIR_VIS]", mDirectoryVisibility); + childEnable("send_im_to_email"); + childSetValue("send_im_to_email", im_via_email); + childEnable("log_instant_messages"); + childEnable("log_chat"); + childEnable("busy_response"); + childEnable("log_instant_messages_timestamp"); + childEnable("log_chat_timestamp"); + childEnable("log_chat_IM"); + childEnable("log_date_timestamp"); + + childSetText("busy_response", gSavedPerAccountSettings.getString("BusyModeResponse2")); + + enableHistory(); + std::string display_email(email); + childSetText("email_address",display_email); + +} + +void LLFloaterPreference::onUpdateSliderText(LLUICtrl* ctrl, const LLSD& name) +{ + if(name.asString() =="" || !hasChild("name")) + return; + + LLTextBox* text_box = getChild<LLTextBox>(name.asString()); + LLSliderCtrl* slider = dynamic_cast<LLSliderCtrl*>(ctrl); + updateSliderText(slider, text_box); +} + +void LLFloaterPreference::updateSliderText(LLSliderCtrl* ctrl, LLTextBox* text_box) +{ + if(text_box == NULL || ctrl== NULL) + return; + + // get range and points when text should change + F32 value = (F32)ctrl->getValue().asReal(); + F32 min = ctrl->getMinValue(); + F32 max = ctrl->getMaxValue(); + F32 range = max - min; + llassert(range > 0); + F32 midPoint = min + range / 3.0f; + F32 highPoint = min + (2.0f * range / 3.0f); + + // choose the right text + if(value < midPoint) + { + text_box->setText(LLTrans::getString("GraphicsQualityLow")); + } + else if (value < highPoint) + { + text_box->setText(LLTrans::getString("GraphicsQualityMid")); + } + else + { + text_box->setText(LLTrans::getString("GraphicsQualityHigh")); + } +} + +void LLFloaterPreference::onKeystrokeAspectRatio() +{ + getChild<LLCheckBoxCtrl>("aspect_auto_detect")->set(FALSE); +} + +void LLFloaterPreference::applyWindowSize() +{ + LLComboBox* ctrl_windowSize = getChild<LLComboBox>("windowsize combo"); + if (ctrl_windowSize->getVisible() && (ctrl_windowSize->getCurrentIndex() != -1)) + { + U32 width = 0; + U32 height = 0; + if (extractWindowSizeFromString(ctrl_windowSize->getValue().asString().c_str(), width,height)) + { + LLViewerWindow::movieSize(width, height); + } + } +} + +void LLFloaterPreference::applyResolution() +{ + LLComboBox* ctrl_aspect_ratio = getChild<LLComboBox>( "aspect_ratio"); + gGL.flush(); + char aspect_ratio_text[ASPECT_RATIO_STR_LEN]; /*Flawfinder: ignore*/ + if (ctrl_aspect_ratio->getCurrentIndex() == -1) + { + // *Can't pass const char* from c_str() into strtok + strncpy(aspect_ratio_text, ctrl_aspect_ratio->getSimple().c_str(), sizeof(aspect_ratio_text) -1); /*Flawfinder: ignore*/ + aspect_ratio_text[sizeof(aspect_ratio_text) -1] = '\0'; + char *element = strtok(aspect_ratio_text, ":/\\"); + if (!element) + { + sAspectRatio = 0.f; // will be clamped later + } + else + { + LLLocale locale(LLLocale::USER_LOCALE); + sAspectRatio = (F32)atof(element); + } + + // look for denominator + element = strtok(NULL, ":/\\"); + if (element) + { + LLLocale locale(LLLocale::USER_LOCALE); + + F32 denominator = (F32)atof(element); + if (denominator != 0.f) + { + sAspectRatio /= denominator; + } + } + } + else + { + sAspectRatio = (F32)ctrl_aspect_ratio->getValue().asReal(); + } + + // presumably, user entered a non-numeric value if aspect_ratio == 0.f + if (sAspectRatio != 0.f) + { + sAspectRatio = llclamp(sAspectRatio, 0.2f, 5.f); + gSavedSettings.setF32("FullScreenAspectRatio", sAspectRatio); + } + + // Screen resolution + S32 num_resolutions; + LLWindow::LLWindowResolution* supported_resolutions = + gViewerWindow->getWindow()->getSupportedResolutions(num_resolutions); + U32 resIndex = getChild<LLComboBox>("fullscreen combo")->getCurrentIndex(); + gSavedSettings.setS32("FullScreenWidth", supported_resolutions[resIndex].mWidth); + gSavedSettings.setS32("FullScreenHeight", supported_resolutions[resIndex].mHeight); + + gViewerWindow->requestResolutionUpdate(!gSavedSettings.getBOOL("NotFullScreen")); + + send_agent_update(TRUE); + + // Update enable/disable + refresh(); +} + +void LLFloaterPreference::initWindowSizeControls(LLPanel* panelp) +{ + // Window size + // mWindowSizeLabel = getChild<LLTextBox>("WindowSizeLabel"); + LLComboBox* ctrl_window_size = panelp->getChild<LLComboBox>("windowsize combo"); + + // Look to see if current window size matches existing window sizes, if so then + // just set the selection value... + const U32 height = gViewerWindow->getWindowDisplayHeight(); + const U32 width = gViewerWindow->getWindowDisplayWidth(); + for (S32 i=0; i < ctrl_window_size->getItemCount(); i++) + { + U32 height_test = 0; + U32 width_test = 0; + ctrl_window_size->setCurrentByIndex(i); + if (extractWindowSizeFromString(ctrl_window_size->getValue().asString(), width_test, height_test)) + { + if ((height_test == height) && (width_test == width)) + { + return; + } + } + } + // ...otherwise, add a new entry with the current window height/width. + LLUIString resolution_label = panelp->getString("resolution_format"); + resolution_label.setArg("[RES_X]", llformat("%d", width)); + resolution_label.setArg("[RES_Y]", llformat("%d", height)); + ctrl_window_size->add(resolution_label, ADD_TOP); + ctrl_window_size->setCurrentByIndex(0); +} + + + +//---------------------------------------------------------------------------- +static LLRegisterPanelClassWrapper<LLPanelPreference> t_places("panel_preference"); +LLPanelPreference::LLPanelPreference() +: LLPanel() +{ + // + mCommitCallbackRegistrar.add("setControlFalse", boost::bind(&LLPanelPreference::setControlFalse,this, _2)); +} +//virtual +BOOL LLPanelPreference::postBuild() +{ + if (hasChild("maturity_desired_combobox")) + { + /////////////////////////// From LLPanelGeneral ////////////////////////// + // if we have no agent, we can't let them choose anything + // if we have an agent, then we only let them choose if they have a choice + bool canChoose = gAgent.getID().notNull() && + (gAgent.isMature() || gAgent.isGodlike()); + + if (canChoose) + { + + // if they're not adult or a god, they shouldn't see the adult selection, so delete it + if (!gAgent.isAdult() && !gAgent.isGodlike()) + { + LLComboBox* pMaturityCombo = getChild<LLComboBox>("maturity_desired_combobox"); + // we're going to remove the adult entry from the combo. This obviously depends + // on the order of items in the XML file, but there doesn't seem to be a reasonable + // way to depend on the field in XML called 'name'. + pMaturityCombo->remove(0); + } + childSetVisible("maturity_desired_combobox", true); + childSetVisible("maturity_desired_textbox", false); + } + else + { + childSetVisible("maturity_desired_combobox", false); + std::string selectedItemLabel = getChild<LLComboBox>("maturity_desired_combobox")->getSelectedItemLabel(); + childSetValue("maturity_desired_textbox", selectedItemLabel); + childSetVisible("maturity_desired_textbox", true); + } + } + ////////////////////// PanelVoice /////////////////// + if(hasChild("voice_unavailable")) + { + BOOL voice_disabled = gSavedSettings.getBOOL("CmdLineDisableVoice"); + childSetVisible("voice_unavailable", voice_disabled); + childSetVisible("enable_voice_check", !voice_disabled); + } + + //////////////////////PanelSkins /////////////////// + + if (hasChild("skin_selection")) + { + LLFloaterPreference::refreshSkin(this); + + // if skin is set to a skin that no longer exists (silver) set back to default + if (getChild<LLRadioGroup>("skin_selection")->getSelectedIndex() < 0) + { + gSavedSettings.setString("SkinCurrent", "default"); + LLFloaterPreference::refreshSkin(this); + } + + } + ////////////////////////Panel Popups///////////////// + if(hasChild("disabled_popups") && hasChild("enabled_popups")) + { + LLFloaterPreference::buildLists(this); + } + ////// + if(hasChild("online_visibility") && hasChild("send_im_to_email")) + { + requires("online_visibility"); + requires("send_im_to_email"); + if (!checkRequirements()) + { + return FALSE; + } + childSetText("email_address",getString("log_in_to_change") ); + childSetText("busy_response", getString("log_in_to_change")); + + } + + + if(hasChild("fullscreen combo")) + { + //============================================================================ + // Resolution + + S32 num_resolutions = 0; + LLWindow::LLWindowResolution* supported_resolutions = gViewerWindow->getWindow()->getSupportedResolutions(num_resolutions); + + S32 fullscreen_mode = num_resolutions - 1; + + LLComboBox*ctrl_full_screen = getChild<LLComboBox>( "fullscreen combo"); + LLUIString resolution_label = getString("resolution_format"); + + for (S32 i = 0; i < num_resolutions; i++) + { + resolution_label.setArg("[RES_X]", llformat("%d", supported_resolutions[i].mWidth)); + resolution_label.setArg("[RES_Y]", llformat("%d", supported_resolutions[i].mHeight)); + ctrl_full_screen->add( resolution_label, ADD_BOTTOM ); + } + + { + BOOL targetFullscreen; + S32 targetWidth; + S32 targetHeight; + + gViewerWindow->getTargetWindow(targetFullscreen, targetWidth, targetHeight); + + if (targetFullscreen) + { + fullscreen_mode = 0; // default to 800x600 + for (S32 i = 0; i < num_resolutions; i++) + { + if (targetWidth == supported_resolutions[i].mWidth + && targetHeight == supported_resolutions[i].mHeight) + { + fullscreen_mode = i; + } + } + ctrl_full_screen->setCurrentByIndex(fullscreen_mode); + } + else + { + // set to windowed mode + //fullscreen_mode = mCtrlFullScreen->getItemCount() - 1; + ctrl_full_screen->setCurrentByIndex(0); + } + } + + LLFloaterPreference::initWindowSizeControls(this); + + if (gSavedSettings.getBOOL("FullScreenAutoDetectAspectRatio")) + { + LLFloaterPreference::sAspectRatio = gViewerWindow->getDisplayAspectRatio(); + } + else + { + LLFloaterPreference::sAspectRatio = gSavedSettings.getF32("FullScreenAspectRatio"); + } + + getChild<LLComboBox>("aspect_ratio")->setTextEntryCallback(boost::bind(&LLPanelPreference::setControlFalse, this, LLSD("FullScreenAutoDetectAspectRatio") )); + + + S32 numerator = 0; + S32 denominator = 0; + fractionFromDecimal(LLFloaterPreference::sAspectRatio, numerator, denominator); + + LLUIString aspect_ratio_text = getString("aspect_ratio_text"); + if (numerator != 0) + { + aspect_ratio_text.setArg("[NUM]", llformat("%d", numerator)); + aspect_ratio_text.setArg("[DEN]", llformat("%d", denominator)); + } + else + { + aspect_ratio_text = llformat("%.3f", LLFloaterPreference::sAspectRatio); + } + + LLComboBox* ctrl_aspect_ratio = getChild<LLComboBox>( "aspect_ratio"); + //mCtrlAspectRatio->setCommitCallback(onSelectAspectRatio, this); + // add default aspect ratios + ctrl_aspect_ratio->add(aspect_ratio_text, &LLFloaterPreference::sAspectRatio, ADD_TOP); + ctrl_aspect_ratio->setCurrentByIndex(0); + + refresh(); + } + + apply(); + return true; +} + +void LLPanelPreference::apply() +{ + // Save the value of all controls in the hierarchy + mSavedValues.clear(); + std::list<LLView*> view_stack; + view_stack.push_back(this); + while(!view_stack.empty()) + { + // Process view on top of the stack + LLView* curview = view_stack.front(); + view_stack.pop_front(); + LLUICtrl* ctrl = dynamic_cast<LLUICtrl*>(curview); + if (ctrl) + { + LLControlVariable* control = ctrl->getControlVariable(); + if (control) + { + mSavedValues[control] = control->getValue(); + } + } + + // Push children onto the end of the work stack + for (child_list_t::const_iterator iter = curview->getChildList()->begin(); + iter != curview->getChildList()->end(); ++iter) + { + view_stack.push_back(*iter); + } + } + +} + +void LLPanelPreference::cancel() +{ + for (control_values_map_t::iterator iter = mSavedValues.begin(); + iter != mSavedValues.end(); ++iter) + { + LLControlVariable* control = iter->first; + LLSD ctrl_value = iter->second; + control->set(ctrl_value); + } +} + +void LLPanelPreference::setControlFalse(const LLSD& user_data) +{ + std::string control_name = user_data.asString(); + LLControlVariable* control = findControl(control_name); + + if (control) + control->set(LLSD(FALSE)); +} + diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h index 8144b9b8f1a8ed6397e7e6fd82c65ab632542f4e..afff610c69bc69cd783379d136c78d9a99e6ad86 100644 --- a/indra/newview/llfloaterpreference.h +++ b/indra/newview/llfloaterpreference.h @@ -41,23 +41,24 @@ #include "llfloater.h" -class LLPanelGeneral; -class LLPanelInput; +class LLPanelPreference; class LLPanelLCD; -class LLPanelDisplay; -class LLPanelAudioPrefs; class LLPanelDebug; -class LLPanelNetwork; -class LLPanelWeb; class LLMessageSystem; -class LLPrefsChat; -class LLPrefsVoice; -class LLPrefsIM; -class LLPanelMsgs; -class LLPanelSkins; class LLScrollListCtrl; - +class LLSliderCtrl; class LLSD; +class LLTextBox; + +typedef enum + { + GS_LOW_GRAPHICS, + GS_MID_GRAPHICS, + GS_HIGH_GRAPHICS, + GS_ULTRA_GRAPHICS + + } EGraphicsSettings; + // Floater to control preferences (display, audio, bandwidth, general. class LLFloaterPreference : public LLFloater @@ -68,6 +69,7 @@ class LLFloaterPreference : public LLFloater void apply(); void cancel(); + /*virtual*/ void draw(); virtual BOOL postBuild(); virtual void onOpen(const LLSD& key); virtual void onClose(bool app_quitting); @@ -79,32 +81,85 @@ class LLFloaterPreference : public LLFloater static void refreshEnabledGraphics(); protected: - static void onClickAbout(void*); - static void onBtnOK(void*); - static void onBtnCancel(void*); - static void onBtnApply(void*); + void onBtnOK(); + void onBtnCancel(); + void onBtnApply(); + void onOpenHelp(); + + static void onClickClearCache(void*); + static void onClickBrowserClearCache(void*); + + // if the custom settings box is clicked + void onChangeCustom(); + void updateMeterText(LLUICtrl* ctrl); + void onOpenHardwareSettings(); + /// callback for defaults + void setHardwareDefaults(); + // callback for when client turns on shaders + void onVertexShaderEnable(); + + +public: + + void onClickSetCache(); + void onClickResetCache(); + void onClickSkin(LLUICtrl* ctrl,const LLSD& userdata); + void onSelectSkin(); + void onClickSetKey(); + void setKey(KEY key); + void onClickSetMiddleMouse(); + void onClickSkipDialogs(); + void onClickResetDialogs(); + void onClickEnablePopup(); + void resetAllIgnored(); + void setAllIgnored(); + void onClickLogPath(); + void enableHistory(); + void onCommitLogging(); + void setPersonalInfo(const std::string& visibility, bool im_via_email, const std::string& email); + void refreshEnabledState(); + void disableUnavailableSettings(); + void onCommitWindowedMode(); + void refresh(); // Refresh enable/disable + // if the quality radio buttons are changed + void onChangeQuality(const LLSD& data); + + void updateSliderText(LLSliderCtrl* ctrl, LLTextBox* text_box); + void onUpdateSliderText(LLUICtrl* ctrl, const LLSD& name); + void onKeystrokeAspectRatio(); +// void fractionFromDecimal(F32 decimal_val, S32& numerator, S32& denominator); +// bool extractWindowSizeFromString(const std::string& instr, U32 &width, U32 &height); + + void onCommitAutoDetectAspect(); + void applyResolution(); + void applyWindowSize(); + + static void initWindowSizeControls(LLPanel* panelp); + + static void buildLists(void* data); + static void refreshSkin(void* data); + static void cleanupBadSetting(); + static F32 sAspectRatio; private: - LLPanelSkins *mSkinsPanel; - LLPanelInput *mInputPanel; - LLPanelNetwork *mNetworkPanel; - LLPanelDisplay *mDisplayPanel; - LLPanelAudioPrefs *mAudioPanel; - LLPrefsChat *mPrefsChat; - LLPrefsVoice *mPrefsVoice; - LLPrefsIM *mPrefsIM; - LLPanelWeb *mWebPanel; - LLPanelMsgs *mMsgPanel; + static std::string sSkin; + bool mGotPersonalInfo; + bool mOriginalIMViaEmail; + + bool mOriginalHideOnlineStatus; + std::string mDirectoryVisibility; + }; class LLPanelPreference : public LLPanel { public: + LLPanelPreference(); /*virtual*/ BOOL postBuild(); virtual void apply(); virtual void cancel(); - + void setControlFalse(const LLSD& user_data); private: typedef std::map<LLControlVariable*, LLSD> control_values_map_t; control_values_map_t mSavedValues; diff --git a/indra/newview/llfloaterproperties.cpp b/indra/newview/llfloaterproperties.cpp index e94967eba86560cb707d85498183e09a1ac5b048..5a8afc227787fa1715035a91fbdfcf82b7a64e98 100644 --- a/indra/newview/llfloaterproperties.cpp +++ b/indra/newview/llfloaterproperties.cpp @@ -43,8 +43,8 @@ #include "llagent.h" #include "llbutton.h" #include "llcheckboxctrl.h" -#include "llfloateravatarinfo.h" #include "llfloatergroupinfo.h" +#include "llfriendactions.h" #include "llinventorymodel.h" #include "lllineeditor.h" #include "llradiogroup.h" @@ -605,7 +605,7 @@ void LLFloaterProperties::onClickCreator(void* data) if(!item) return; if(!item->getCreatorUUID().isNull()) { - LLFloaterAvatarInfo::showFromObject(item->getCreatorUUID()); + LLFriendActions::showProfile(item->getCreatorUUID()); } } @@ -622,10 +622,7 @@ void LLFloaterProperties::onClickOwner(void* data) } else { - if(!item->getPermissions().getOwner().isNull()) - { - LLFloaterAvatarInfo::showFromObject(item->getPermissions().getOwner()); - } + LLFriendActions::showProfile(item->getPermissions().getOwner()); } } diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp index 504760175b28a8ca0288be36a4841069b240da2c..57a3bf9445cba12c3df5a0fa2db1133521a7ae7a 100644 --- a/indra/newview/llfloaterregioninfo.cpp +++ b/indra/newview/llfloaterregioninfo.cpp @@ -74,6 +74,7 @@ #include "lltrans.h" #include "llviewercontrol.h" #include "lluictrlfactory.h" +#include "llviewerinventory.h" #include "llviewerimage.h" #include "llviewerimagelist.h" #include "llviewerregion.h" diff --git a/indra/newview/llfloaterreporter.cpp b/indra/newview/llfloaterreporter.cpp index 8ddc929019ead3b28e6bded20d4a9942a23a2708..4b175cdc2770fcc3f6ecbb7c179c507c141cf905 100644 --- a/indra/newview/llfloaterreporter.cpp +++ b/indra/newview/llfloaterreporter.cpp @@ -188,7 +188,7 @@ BOOL LLFloaterReporter::postBuild() LLLineEditor* le = getChild<LLLineEditor>("abuser_name_edit"); le->setEnabled( FALSE ); - setPosBox(mPosition.getValue()); + setPosBox((LLVector3d)mPosition.getValue()); LLButton* pick_btn = getChild<LLButton>("pick_btn"); pick_btn->setImages(std::string("tool_face.tga"), std::string("tool_face_active.tga") ); diff --git a/indra/newview/llfloatersettingsdebug.cpp b/indra/newview/llfloatersettingsdebug.cpp index 9b591496f7e52da6dff9059598224766271083d7..8b6102c67faf0504c698f940a24d1a16dc73edcf 100644 --- a/indra/newview/llfloatersettingsdebug.cpp +++ b/indra/newview/llfloatersettingsdebug.cpp @@ -42,9 +42,13 @@ LLFloaterSettingsDebug::LLFloaterSettingsDebug(const LLSD& key) -: LLFloater() +: LLFloater(key) { - LLUICtrlFactory::getInstance()->buildFloater(this, "floater_settings_debug.xml"); + //LLUICtrlFactory::getInstance()->buildFloater(this, "floater_settings_debug.xml"); + mCommitCallbackRegistrar.add("SettingSelect", boost::bind(&LLFloaterSettingsDebug::onSettingSelect, this,_1)); + mCommitCallbackRegistrar.add("CommitSettings", boost::bind(&LLFloaterSettingsDebug::onCommitSettings, this)); + mCommitCallbackRegistrar.add("ClickDefault", boost::bind(&LLFloaterSettingsDebug::onClickDefault, this)); + } LLFloaterSettingsDebug::~LLFloaterSettingsDebug() @@ -67,22 +71,22 @@ BOOL LLFloaterSettingsDebug::postBuild() } } func(settings_combo); - gSavedSettings.applyToAll(&func); - gSavedPerAccountSettings.applyToAll(&func); - gSavedSkinSettings.applyToAll(&func); + std::string key = getKey().asString(); + if (key == "all" || key == "base") + { + gSavedSettings.applyToAll(&func); + } + if (key == "all" || key == "account") + { + gSavedPerAccountSettings.applyToAll(&func); + } + if (key == "all" || key == "skin") + { + gSavedSkinSettings.applyToAll(&func); + } settings_combo->sortByName(); - settings_combo->setCommitCallback(onSettingSelect, this); settings_combo->updateSelection(); - - childSetCommitCallback("val_spinner_1", onCommitSettings, this); - childSetCommitCallback("val_spinner_2", onCommitSettings, this); - childSetCommitCallback("val_spinner_3", onCommitSettings, this); - childSetCommitCallback("val_spinner_4", onCommitSettings, this); - childSetCommitCallback("val_text", onCommitSettings, this); - childSetCommitCallback("boolean_combo", onCommitSettings, this); - childSetCommitCallback("color_swatch", onCommitSettings, this); - childSetAction("default_btn", onClickDefault, this); mComment = getChild<LLTextEditor>("comment_text"); return TRUE; } @@ -97,21 +101,17 @@ void LLFloaterSettingsDebug::draw() } //static -void LLFloaterSettingsDebug::onSettingSelect(LLUICtrl* ctrl, void* user_data) +void LLFloaterSettingsDebug::onSettingSelect(LLUICtrl* ctrl) { - LLFloaterSettingsDebug* floaterp = (LLFloaterSettingsDebug*)user_data; LLComboBox* combo_box = (LLComboBox*)ctrl; LLControlVariable* controlp = (LLControlVariable*)combo_box->getCurrentUserdata(); - floaterp->updateControl(controlp); + updateControl(controlp); } -//static -void LLFloaterSettingsDebug::onCommitSettings(LLUICtrl* ctrl, void* user_data) +void LLFloaterSettingsDebug::onCommitSettings() { - LLFloaterSettingsDebug* floaterp = (LLFloaterSettingsDebug*)user_data; - - LLComboBox* settings_combo = floaterp->getChild<LLComboBox>("settings_combo"); + LLComboBox* settings_combo = getChild<LLComboBox>("settings_combo"); LLControlVariable* controlp = (LLControlVariable*)settings_combo->getCurrentUserdata(); LLVector3 vector; @@ -125,46 +125,46 @@ void LLFloaterSettingsDebug::onCommitSettings(LLUICtrl* ctrl, void* user_data) switch(controlp->type()) { case TYPE_U32: - controlp->set(floaterp->childGetValue("val_spinner_1")); + controlp->set(childGetValue("val_spinner_1")); break; case TYPE_S32: - controlp->set(floaterp->childGetValue("val_spinner_1")); + controlp->set(childGetValue("val_spinner_1")); break; case TYPE_F32: - controlp->set(LLSD(floaterp->childGetValue("val_spinner_1").asReal())); + controlp->set(LLSD(childGetValue("val_spinner_1").asReal())); break; case TYPE_BOOLEAN: - controlp->set(floaterp->childGetValue("boolean_combo")); + controlp->set(childGetValue("boolean_combo")); break; case TYPE_STRING: - controlp->set(LLSD(floaterp->childGetValue("val_text").asString())); + controlp->set(LLSD(childGetValue("val_text").asString())); break; case TYPE_VEC3: - vector.mV[VX] = (F32)floaterp->childGetValue("val_spinner_1").asReal(); - vector.mV[VY] = (F32)floaterp->childGetValue("val_spinner_2").asReal(); - vector.mV[VZ] = (F32)floaterp->childGetValue("val_spinner_3").asReal(); + vector.mV[VX] = (F32)childGetValue("val_spinner_1").asReal(); + vector.mV[VY] = (F32)childGetValue("val_spinner_2").asReal(); + vector.mV[VZ] = (F32)childGetValue("val_spinner_3").asReal(); controlp->set(vector.getValue()); break; case TYPE_VEC3D: - vectord.mdV[VX] = floaterp->childGetValue("val_spinner_1").asReal(); - vectord.mdV[VY] = floaterp->childGetValue("val_spinner_2").asReal(); - vectord.mdV[VZ] = floaterp->childGetValue("val_spinner_3").asReal(); + vectord.mdV[VX] = childGetValue("val_spinner_1").asReal(); + vectord.mdV[VY] = childGetValue("val_spinner_2").asReal(); + vectord.mdV[VZ] = childGetValue("val_spinner_3").asReal(); controlp->set(vectord.getValue()); break; case TYPE_RECT: - rect.mLeft = floaterp->childGetValue("val_spinner_1").asInteger(); - rect.mRight = floaterp->childGetValue("val_spinner_2").asInteger(); - rect.mBottom = floaterp->childGetValue("val_spinner_3").asInteger(); - rect.mTop = floaterp->childGetValue("val_spinner_4").asInteger(); + rect.mLeft = childGetValue("val_spinner_1").asInteger(); + rect.mRight = childGetValue("val_spinner_2").asInteger(); + rect.mBottom = childGetValue("val_spinner_3").asInteger(); + rect.mTop = childGetValue("val_spinner_4").asInteger(); controlp->set(rect.getValue()); break; case TYPE_COL4: - col3.setValue(floaterp->childGetValue("color_swatch")); - col4 = LLColor4(col3, (F32)floaterp->childGetValue("val_spinner_4").asReal()); + col3.setValue(childGetValue("val_color_swatch")); + col4 = LLColor4(col3, (F32)childGetValue("val_spinner_4").asReal()); controlp->set(col4.getValue()); break; case TYPE_COL3: - controlp->set(floaterp->childGetValue("color_swatch")); + controlp->set(childGetValue("val_color_swatch")); //col3.mV[VRED] = (F32)floaterp->childGetValue("val_spinner_1").asC(); //col3.mV[VGREEN] = (F32)floaterp->childGetValue("val_spinner_2").asReal(); //col3.mV[VBLUE] = (F32)floaterp->childGetValue("val_spinner_3").asReal(); @@ -176,16 +176,15 @@ void LLFloaterSettingsDebug::onCommitSettings(LLUICtrl* ctrl, void* user_data) } // static -void LLFloaterSettingsDebug::onClickDefault(void* user_data) +void LLFloaterSettingsDebug::onClickDefault() { - LLFloaterSettingsDebug* floaterp = (LLFloaterSettingsDebug*)user_data; - LLComboBox* settings_combo = floaterp->getChild<LLComboBox>("settings_combo"); + LLComboBox* settings_combo = getChild<LLComboBox>("settings_combo"); LLControlVariable* controlp = (LLControlVariable*)settings_combo->getCurrentUserdata(); if (controlp) { controlp->resetToDefault(); - floaterp->updateControl(controlp); + updateControl(controlp); } } @@ -196,7 +195,7 @@ void LLFloaterSettingsDebug::updateControl(LLControlVariable* controlp) LLSpinCtrl* spinner2 = getChild<LLSpinCtrl>("val_spinner_2"); LLSpinCtrl* spinner3 = getChild<LLSpinCtrl>("val_spinner_3"); LLSpinCtrl* spinner4 = getChild<LLSpinCtrl>("val_spinner_4"); - LLColorSwatchCtrl* color_swatch = getChild<LLColorSwatchCtrl>("color_swatch"); + LLColorSwatchCtrl* color_swatch = getChild<LLColorSwatchCtrl>("val_color_swatch"); if (!spinner1 || !spinner2 || !spinner3 || !spinner4 || !color_swatch) { diff --git a/indra/newview/llfloatersettingsdebug.h b/indra/newview/llfloatersettingsdebug.h index 1190e8038fd7d36f09cb2b4a5db788256f158f7d..87833793af047a4c1ace7f3088e3bb6501285498 100644 --- a/indra/newview/llfloatersettingsdebug.h +++ b/indra/newview/llfloatersettingsdebug.h @@ -42,6 +42,8 @@ class LLFloaterSettingsDebug public LLFloaterSingleton<LLFloaterSettingsDebug> { public: + // key - selects which settings to show, one of: + // "all", "base", "account", "skin" LLFloaterSettingsDebug(const LLSD& key); virtual ~LLFloaterSettingsDebug(); @@ -50,9 +52,9 @@ class LLFloaterSettingsDebug void updateControl(LLControlVariable* control); - static void onSettingSelect(LLUICtrl* ctrl, void* user_data); - static void onCommitSettings(LLUICtrl* ctrl, void* user_data); - static void onClickDefault(void* user_data); + void onSettingSelect(LLUICtrl* ctrl); + void onCommitSettings(); + void onClickDefault(); protected: LLTextEditor* mComment; diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp index 74b7ee11064cca0f24e0d71bd461fa9f610b0118..cb4f2a671120de4a28d23a27b8b165bfe5440384 100644 --- a/indra/newview/llfloatersnapshot.cpp +++ b/indra/newview/llfloatersnapshot.cpp @@ -249,7 +249,7 @@ LLSnapshotLivePreview::LLSnapshotLivePreview (const LLSnapshotLivePreview::Param mImageScaled[0] = FALSE; mImageScaled[1] = FALSE; - mMaxImageSize = MAX_IMAGE_SIZE ; + mMaxImageSize = MAX_SNAPSHOT_IMAGE_SIZE ; mKeepAspectRatio = gSavedSettings.getBOOL("KeepAspectForSnapshot") ; mThumbnailUpdateLock = FALSE ; mThumbnailUpToDate = FALSE ; @@ -268,13 +268,13 @@ LLSnapshotLivePreview::~LLSnapshotLivePreview() void LLSnapshotLivePreview::setMaxImageSize(S32 size) { - if(size < MAX_IMAGE_SIZE) + if(size < MAX_SNAPSHOT_IMAGE_SIZE) { mMaxImageSize = size; } else { - mMaxImageSize = MAX_IMAGE_SIZE ; + mMaxImageSize = MAX_SNAPSHOT_IMAGE_SIZE ; } } @@ -968,7 +968,7 @@ void LLSnapshotLivePreview::saveTexture() { LLVFile::writeFile(formatted->getData(), formatted->getDataSize(), gVFS, new_asset_id, LLAssetType::AT_TEXTURE); std::string pos_string; - gAgent.buildLocationString(pos_string); + gAgent.buildLocationString(pos_string, LLAgent::LOCATION_FORMAT_FULL); std::string who_took_it; gAgent.buildFullname(who_took_it); LLAssetStorage::LLStoreAssetCallback callback = NULL; diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp index 62a8c0d27e69e80fa1228696e007eb9f15b130ed..4bcf470317e8c718505e1e65789e694795130f14 100644 --- a/indra/newview/llfloatertools.cpp +++ b/indra/newview/llfloatertools.cpp @@ -45,6 +45,7 @@ #include "lldraghandle.h" #include "llfloaterbuildoptions.h" #include "llfloateropenobject.h" +#include "llfloaterreg.h" #include "llfocusmgr.h" #include "llmenugl.h" #include "llpanelcontents.h" @@ -952,7 +953,7 @@ void LLFloaterTools::setObjectType( LLPCode pcode ) void LLFloaterTools::onClickGridOptions(void* data) { //LLFloaterTools* floaterp = (LLFloaterTools*)data; - LLFloaterBuildOptions::showInstance(); + LLFloaterReg::showInstance("build_options"); // RN: this makes grid options dependent on build tools window //floaterp->addDependentFloater(LLFloaterBuildOptions::getInstance(), FALSE); } diff --git a/indra/newview/llfloateruipreview.cpp b/indra/newview/llfloateruipreview.cpp index ec8eb2e2cfa7117ce4316d70db94f19fb8932a4e..34db895b5289307d9b2be1d74a60b8c6343508f2 100644 --- a/indra/newview/llfloateruipreview.cpp +++ b/indra/newview/llfloateruipreview.cpp @@ -56,6 +56,7 @@ #include "llfilepicker.h" #include "lldraghandle.h" #include "lllayoutstack.h" +#include "llviewermenu.h" // Boost (for linux/unix command-line execv) #include <boost/tokenizer.hpp> @@ -120,7 +121,7 @@ LLGUIPreviewLiveFile::~LLGUIPreviewLiveFile() } // Live file load -void LLGUIPreviewLiveFile::loadFile() +bool LLGUIPreviewLiveFile::loadFile() { mParent->displayFloater(FALSE,1); // redisplay the floater if(mFirstFade) // only fade if it wasn't just clicked on; can't use "clicked" BOOL below because of an oddity with setting LLLiveFile initial state @@ -135,6 +136,7 @@ void LLGUIPreviewLiveFile::loadFile() } mFadeTimer = new LLFadeEventTimer(0.05f,this); } + return true; } // Initialize fade event timer @@ -191,7 +193,7 @@ void* create_overlap_panel(void* data) // Constructor LLFloaterUIPreview::LLFloaterUIPreview(const LLSD& key) - : LLFloater(), + : LLFloater(key), mDisplayedFloater(NULL), mDisplayedFloater_2(NULL), mLiveFile(NULL), @@ -203,7 +205,7 @@ LLFloaterUIPreview::LLFloaterUIPreview(const LLSD& key) { sInstance = this; mFactoryMap["overlap_panel"] = LLCallbackMap(create_overlap_panel, NULL); - LLUICtrlFactory::getInstance()->buildFloater(this, "floater_ui_preview.xml"); + // called from floater reg: LLUICtrlFactory::getInstance()->buildFloater(this, "floater_ui_preview.xml"); } // Destructor @@ -260,6 +262,7 @@ BOOL LLFloaterUIPreview::postBuild() mToggleHighlightButton = vlt_panel_tmp->getChild<LLButton>("toggle_vlt_diff_highlight"); mToggleHighlightButton->setClickedCallback(onClickToggleDiffHighlighting, NULL); main_panel_tmp->getChild<LLButton>("save_floater")->setClickedCallback(onClickSaveFloater, (void*)&PRIMARY_FLOATER); + main_panel_tmp->getChild<LLButton>("save_all_floaters")->setClickedCallback(onClickSaveAll, (void*)&PRIMARY_FLOATER); // get pointers to text fields mEditorPathTextBox = editor_panel_tmp->getChild<LLLineEditor>("executable_path_field"); @@ -278,7 +281,7 @@ BOOL LLFloaterUIPreview::postBuild() mDelim = gDirUtilp->getDirDelimiter(); // initialize delimiter to dir sep slash - // refresh list of available languages (EN-US will still be default) + // refresh list of available languages (EN will still be default) BOOL found = TRUE; BOOL found_en_us = FALSE; std::string language_directory; @@ -296,7 +299,7 @@ BOOL LLFloaterUIPreview::postBuild() if(strncmp("template",language_directory.c_str(),8) && -1 == language_directory.find(".")) // if it's not the template directory or a hidden directory { - if(!strncmp("en-us",language_directory.c_str(),5)) // remember if we've seen en-us, so we can make it default + if(!strncmp("en",language_directory.c_str(),5)) // remember if we've seen en, so we can make it default { found_en_us = TRUE; } @@ -310,12 +313,12 @@ BOOL LLFloaterUIPreview::postBuild() } if(found_en_us) { - mLanguageSelection->add(std::string("en-us"),ADD_TOP); // make en-us first item if we found it - mLanguageSelection_2->add(std::string("en-us"),ADD_TOP); + mLanguageSelection->add(std::string("en"),ADD_TOP); // make en first item if we found it + mLanguageSelection_2->add(std::string("en"),ADD_TOP); } else { - std::string warning = std::string("No EN-US localization found; check your XUI directories!"); + std::string warning = std::string("No EN localization found; check your XUI directories!"); popupAndPrintWarning(warning); } mLanguageSelection->selectFirstItem(); // select the first item @@ -390,7 +393,7 @@ std::string LLFloaterUIPreview::getLocStr(S32 ID) // Get localized directory (build path from data directory to XUI files, substituting localization string in for language) std::string LLFloaterUIPreview::getLocalizedDirectory() { - return get_xui_dir() + (sInstance ? getLocStr(1) : "en-us") + mDelim; // e.g. "C:/Code/guipreview/indra/newview/skins/xui/en-us/"; + return get_xui_dir() + (sInstance ? getLocStr(1) : "en") + mDelim; // e.g. "C:/Code/guipreview/indra/newview/skins/xui/en/"; } // Refresh the list of floaters by doing a directory traverse for XML XUI floater files @@ -409,6 +412,14 @@ void LLFloaterUIPreview::refreshList() } } found = TRUE; + while(found) // for every menu file that matches the pattern + { + if((found = gDirUtilp->getNextFileInDir(getLocalizedDirectory(), "menu_*.xml", name, FALSE))) // get next file matching pattern + { + addFloaterEntry(name.c_str()); // and add it to the list (file name only; localization code takes care of rest of path) + } + } + found = TRUE; while(found) // for every panel file that matches the pattern { if((found = gDirUtilp->getNextFileInDir(getLocalizedDirectory(), "panel_*.xml", name, FALSE))) // get next file matching pattern @@ -504,7 +515,7 @@ void LLFloaterUIPreview::onClickDisplayFloater(void* data) } } -// Respond to button click to display/refresh currently-selected floater +// Saves the current floater/panel void LLFloaterUIPreview::onClickSaveFloater(void* data) { S32 caller_id = *((S32*)data); @@ -515,12 +526,24 @@ void LLFloaterUIPreview::onClickSaveFloater(void* data) } } +// Saves all floater/panels +void LLFloaterUIPreview::onClickSaveAll(void* data) +{ + S32 caller_id = *((S32*)data); + int listSize = sInstance->mFileList->getItemCount(); + + for (int index = 0; index < listSize; index++) + { + sInstance->mFileList->selectNthItem(index); + displayFloater(TRUE, caller_id, true); + } +} // Given path to floater or panel XML file "filename.xml", // returns "filename_new.xml" static std::string append_new_to_xml_filename(const std::string& path) { - std::string full_filename = gDirUtilp->findSkinnedFilename(LLUI::getSkinPath(), path); + std::string full_filename = gDirUtilp->findSkinnedFilename(LLUI::getLocalizedSkinPath(), path); std::string::size_type extension_pos = full_filename.rfind(".xml"); full_filename.resize(extension_pos); full_filename += "_new.xml"; @@ -564,18 +587,21 @@ void LLFloaterUIPreview::displayFloater(BOOL click, S32 ID, bool save) *floaterp = new LLPreviewedFloater(); - if(strncmp(path.c_str(),"panel_",6)) // if it's not a panel + if(!strncmp(path.c_str(),"floater_",8)) // if it's a floater { if (save) { LLXMLNodePtr floater_write = new LLXMLNode(); LLUICtrlFactory::getInstance()->buildFloater(*floaterp, path, FALSE, floater_write); // just build it - - std::string full_filename = append_new_to_xml_filename(path); - LLFILE* floater_temp = LLFile::fopen(full_filename.c_str(), "w"); - LLXMLNode::writeHeaderToFile(floater_temp); - floater_write->writeToFile(floater_temp, " "); - fclose(floater_temp); + + if (!floater_write->isNull()) + { + std::string full_filename = append_new_to_xml_filename(path); + LLFILE* floater_temp = LLFile::fopen(full_filename.c_str(), "w"); + LLXMLNode::writeHeaderToFile(floater_temp); + floater_write->writeToFile(floater_temp); + fclose(floater_temp); + } } else { @@ -583,6 +609,25 @@ void LLFloaterUIPreview::displayFloater(BOOL click, S32 ID, bool save) } } + else if (!strncmp(path.c_str(),"menu_",5)) // if it's a menu + { + if (save) + { + LLXMLNodePtr menu_write = new LLXMLNode(); + LLMenuGL* menu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>(path, gMenuHolder, menu_write); + + if (!menu_write->isNull()) + { + std::string full_filename = append_new_to_xml_filename(path); + LLFILE* menu_temp = LLFile::fopen(full_filename.c_str(), "w"); + LLXMLNode::writeHeaderToFile(menu_temp); + menu_write->writeToFile(menu_temp); + fclose(menu_temp); + } + + delete menu; + } + } else // if it is a panel... { static LLUICachedControl<S32> floater_header_size ("UIFloaterHeaderSize", 0); @@ -594,21 +639,19 @@ void LLFloaterUIPreview::displayFloater(BOOL click, S32 ID, bool save) { LLXMLNodePtr panel_write = new LLXMLNode(); LLUICtrlFactory::getInstance()->buildPanel(panel, path, panel_write); // build it - - std::string full_filename = append_new_to_xml_filename(path); - LLFILE* panel_temp = LLFile::fopen(full_filename.c_str(), "w"); - LLXMLNode::writeHeaderToFile(panel_temp); - panel_write->writeToFile(panel_temp, " "); - fclose(panel_temp); + + if (!panel_write->isNull()) + { + std::string full_filename = append_new_to_xml_filename(path); + LLFILE* panel_temp = LLFile::fopen(full_filename.c_str(), "w"); + LLXMLNode::writeHeaderToFile(panel_temp); + panel_write->writeToFile(panel_temp); + fclose(panel_temp); + } } else { LLUICtrlFactory::getInstance()->buildPanel(panel, path); // build it - - } - - if (!save) - { LLRect new_size = panel->getRect(); // get its rectangle panel->setOrigin(0,0); // reset its origin point so it's not offset by -left or other XUI attributes (*floaterp)->setTitle(path); // use the file name as its title, since panels have no guaranteed meaningful name attribute @@ -649,9 +692,9 @@ void LLFloaterUIPreview::displayFloater(BOOL click, S32 ID, bool save) sInstance->mDisplayedFloater->addDependentFloater(sInstance->mDisplayedFloater_2); } - // Add localization to title so user knows whether it's localized or defaulted to en-us + // Add localization to title so user knows whether it's localized or defaulted to en std::string full_path = sInstance->getLocalizedDirectory() + path; - std::string floater_lang = "EN-US"; + std::string floater_lang = "EN"; llstat dummy; if(!LLFile::stat(full_path.c_str(), &dummy)) // if the file does not exist { @@ -723,10 +766,10 @@ void LLFloaterUIPreview::onClickEditFloater(void*) llstat dummy; if(LLFile::stat(path.c_str(), &dummy)) // if the file does not exist { - std::string warning = "No file for this floater exists in the selected localization. Opening the EN-US version instead."; + std::string warning = "No file for this floater exists in the selected localization. Opening the EN version instead."; popupAndPrintWarning(warning); - path = get_xui_dir() + sInstance->mDelim + "en-us" + sInstance->mDelim + file_name; // open the en-us version instead, by default + path = get_xui_dir() + sInstance->mDelim + "en" + sInstance->mDelim + file_name; // open the en version instead, by default } // get executable path diff --git a/indra/newview/llfloateruipreview.h b/indra/newview/llfloateruipreview.h index 28fbb5201366a401ced5e34daa728caa2acf9d18..b0af841e11507801797d03ac0f3d6e6270a40a42 100644 --- a/indra/newview/llfloateruipreview.h +++ b/indra/newview/llfloateruipreview.h @@ -79,7 +79,7 @@ class LLGUIPreviewLiveFile : public LLLiveFile BOOL mFirstFade; // setting this avoids showing the fade reload warning on first load std::string mFileName; protected: - void loadFile(); + bool loadFile(); }; // Implementation of graphical fade in/out (on timer) for when XUI files are updated @@ -127,7 +127,7 @@ class LLOverlapPanel : public LLPanel int mOriginalWidth, mOriginalHeight, mSpacing; }; -class LLFloaterUIPreview : public LLFloater, public LLFloaterSingleton<LLFloaterUIPreview> +class LLFloaterUIPreview : public LLFloater { public: // Setup @@ -203,6 +203,7 @@ class LLFloaterUIPreview : public LLFloater, public LLFloaterSingleton<LLFloater // Button/drop-down action listeners (self explanatory) static void onClickDisplayFloater(void*); static void onClickSaveFloater(void*); + static void onClickSaveAll(void*); static void onClickEditFloater(void*); static void onClickBrowseForEditor(void*); static void onClickBrowseForDiffs(void*); diff --git a/indra/newview/llfloatervoicedevicesettings.cpp b/indra/newview/llfloatervoicedevicesettings.cpp index 5e5ea2e2f1dd687b5e5801956fd81b79f18795b8..12d12f37f2cbe4105319ab793b7f18e5ed8811f0 100644 --- a/indra/newview/llfloatervoicedevicesettings.cpp +++ b/indra/newview/llfloatervoicedevicesettings.cpp @@ -41,7 +41,6 @@ #include "llcombobox.h" #include "llfocusmgr.h" #include "lliconctrl.h" -#include "llprefsvoice.h" #include "llsliderctrl.h" #include "llviewercontrol.h" #include "llvoiceclient.h" @@ -290,11 +289,14 @@ LLFloaterVoiceDeviceSettings::LLFloaterVoiceDeviceSettings(const LLSD& seed) { mFactoryMap["device_settings"] = LLCallbackMap(createPanelVoiceDeviceSettings, this); // do not automatically open singleton floaters (as result of getInstance()) - BOOL no_open = FALSE; - LLUICtrlFactory::getInstance()->buildFloater(this, "floater_device_settings.xml", no_open); +// BOOL no_open = FALSE; +// Called from floater reg: LLUICtrlFactory::getInstance()->buildFloater(this, "floater_device_settings.xml", no_open); +} +BOOL LLFloaterVoiceDeviceSettings::postBuild() +{ center(); + return TRUE; } - void LLFloaterVoiceDeviceSettings::onOpen(const LLSD& key) { if(mDevicePanel) diff --git a/indra/newview/llfloatervoicedevicesettings.h b/indra/newview/llfloatervoicedevicesettings.h index addc674ae37838388fe09df34d73747ebcd459f9..47f41d6d7ec9a0c3c04c0be7b4b8b458bf4da22b 100644 --- a/indra/newview/llfloatervoicedevicesettings.h +++ b/indra/newview/llfloatervoicedevicesettings.h @@ -36,8 +36,6 @@ #include "llfloater.h" -class LLPrefsVoiceLogic; - class LLPanelVoiceDeviceSettings : public LLPanel { public: @@ -68,6 +66,7 @@ class LLFloaterVoiceDeviceSettings : public LLFloater, public LLFloaterSingleton { public: LLFloaterVoiceDeviceSettings(const LLSD& seed); + virtual BOOL postBuild(); /*virtual*/ void onOpen(const LLSD& key); /*virtual*/ void onClose(bool app_quitting); /*virtual*/ void draw(); diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp index 75c746744275f42625a1079123228f2f1fbd0bfc..fd8c22b8e57c7d3a512a0dd9ae0928967585bdf5 100644 --- a/indra/newview/llfolderview.cpp +++ b/indra/newview/llfolderview.cpp @@ -45,6 +45,7 @@ #include "llinventory.h" #include "llcallbacklist.h" +#include "llinventorybridge.h" #include "llinventoryclipboard.h" // *TODO: remove this once hack below gone. #include "llinventoryview.h"// hacked in for the bonus context menu items. #include "llkeyboard.h" @@ -81,7 +82,7 @@ const S32 ICON_WIDTH = 16; const S32 TEXT_PAD = 1; const S32 ARROW_SIZE = 12; const S32 RENAME_WIDTH_PAD = 4; -const S32 RENAME_HEIGHT_PAD = 6; +const S32 RENAME_HEIGHT_PAD = 2; const S32 AUTO_OPEN_STACK_DEPTH = 16; const S32 MIN_ITEM_WIDTH_VISIBLE = ICON_WIDTH + ICON_PAD + ARROW_SIZE + TEXT_PAD + /*first few characters*/ 40; const S32 MINIMUM_RENAMER_WIDTH = 80; @@ -135,8 +136,9 @@ void LLFolderViewItem::cleanupClass() // Default constructor LLFolderViewItem::LLFolderViewItem(LLFolderViewItem::Params p) -: LLUICtrl(p), +: LLView(p), mLabelWidth(0), + mLabelWidthDirty(false), mParentFolder( NULL ), mIsSelected( FALSE ), mIsCurSelection( FALSE ), @@ -302,20 +304,15 @@ void LLFolderViewItem::refresh() { mSearchableLabel.assign(searchable_label); dirtyFilter(); - // some part of label has changed, so overall width has potentially changed + // some part of label has changed, so overall width has potentially changed, and sort order too if (mParentFolder) { + mParentFolder->requestSort(); mParentFolder->requestArrange(); } } - S32 label_width = sFont->getWidth(mLabel); - if( mLabelSuffix.size() ) - { - label_width += sFont->getWidth( mLabelSuffix ); - } - - mLabelWidth = ARROW_SIZE + TEXT_PAD + ICON_WIDTH + ICON_PAD + label_width; + mLabelWidthDirty = true; } void LLFolderViewItem::applyListenerFunctorRecursively(LLFolderViewListenerFunctor& functor) @@ -392,6 +389,12 @@ BOOL LLFolderViewItem::addToFolder(LLFolderViewFolder* folder, LLFolderView* roo S32 LLFolderViewItem::arrange( S32* width, S32* height, S32 filter_generation) { mIndentation = mParentFolder ? mParentFolder->getIndentation() + LEFT_INDENTATION : 0; + if (mLabelWidthDirty) + { + mLabelWidth = ARROW_SIZE + TEXT_PAD + ICON_WIDTH + ICON_PAD + sFont->getWidth(mSearchableLabel); + mLabelWidthDirty = false; + } + *width = llmax(*width, mLabelWidth + mIndentation); *height = getItemHeight(); return *height; @@ -569,14 +572,13 @@ void LLFolderViewItem::rename(const std::string& new_name) { if( !new_name.empty() ) { - mLabel = new_name; if( mListener ) { mListener->renameItem(new_name); if(mParentFolder) { - mParentFolder->resort(this); + mParentFolder->requestSort(); } } } @@ -819,7 +821,7 @@ void LLFolderViewItem::draw() // If we have keyboard focus, draw selection filled BOOL show_context = getRoot()->getShowSelectionContext(); - BOOL filled = show_context || (gFocusMgr.getKeyboardFocus() == getRoot()); + BOOL filled = show_context || (getRoot()->getParentPanel()->hasFocus()); // always render "current" item, only render other selected items if // mShowSingleSelection is FALSE @@ -999,10 +1001,9 @@ LLFolderViewFolder::LLFolderViewFolder( const LLFolderViewItem::Params& p ): mLastArrangeGeneration( -1 ), mLastCalculatedWidth(0), mCompletedFilterGeneration(-1), - mMostFilteredDescendantGeneration(-1) -{ - mType = std::string("(folder)"); -} + mMostFilteredDescendantGeneration(-1), + mNeedsSort(false) +{} // Destroys the object LLFolderViewFolder::~LLFolderViewFolder( void ) @@ -1028,6 +1029,14 @@ BOOL LLFolderViewFolder::addToFolder(LLFolderViewFolder* folder, LLFolderView* r // makes sure that this view and it's children are the right size. S32 LLFolderViewFolder::arrange( S32* width, S32* height, S32 filter_generation) { + // sort before laying out contents + if (mNeedsSort) + { + mFolders.sort(mSortFunction); + mItems.sort(mSortFunction); + mNeedsSort = false; + } + mHasVisibleChildren = hasFilteredDescendants(filter_generation); LLInventoryFilter::EFolderShow show_folder_state = getRoot()->getShowFolderState(); @@ -1172,6 +1181,13 @@ BOOL LLFolderViewFolder::needsArrange() return mLastArrangeGeneration < getRoot()->getArrangeGeneration(); } +void LLFolderViewFolder::requestSort() +{ + mNeedsSort = true; + // whenever item order changes, we need to lay things out again + requestArrange(); +} + void LLFolderViewFolder::setCompletedFilterGeneration(S32 generation, BOOL recurse_up) { mMostFilteredDescendantGeneration = llmin(mMostFilteredDescendantGeneration, generation); @@ -1708,14 +1724,6 @@ void LLFolderViewFolder::extractItem( LLFolderViewItem* item ) removeChild(item); } -// This function is called by a child that needs to be resorted. -// This is only called for renaming an object because it won't work for date -void LLFolderViewFolder::resort(LLFolderViewItem* item) -{ - mItems.sort(mSortFunction); - mFolders.sort(mSortFunction); -} - bool LLFolderViewFolder::isTrash() const { if (mAmTrash == LLFolderViewFolder::UNKNOWN) @@ -1869,30 +1877,20 @@ BOOL LLFolderViewFolder::isRemovable() // this is an internal method used for adding items to folders. BOOL LLFolderViewFolder::addItem(LLFolderViewItem* item) { - - items_t::iterator it = std::lower_bound( - mItems.begin(), - mItems.end(), - item, - mSortFunction); - mItems.insert(it,item); + mItems.push_back(item); item->setRect(LLRect(0, 0, getRect().getWidth(), 0)); item->setVisible(FALSE); addChild( item ); item->dirtyFilter(); requestArrange(); + requestSort(); return TRUE; } // this is an internal method used for adding items to folders. BOOL LLFolderViewFolder::addFolder(LLFolderViewFolder* folder) { - folders_t::iterator it = std::lower_bound( - mFolders.begin(), - mFolders.end(), - folder, - mSortFunction); - mFolders.insert(it,folder); + mFolders.push_back(folder); folder->setOrigin(0, 0); folder->reshape(getRect().getWidth(), 0); folder->setVisible(FALSE); @@ -1900,6 +1898,7 @@ BOOL LLFolderViewFolder::addFolder(LLFolderViewFolder* folder) folder->dirtyFilter(); // rearrange all descendants too, as our indentation level might have changed folder->requestArrange(TRUE); + requestSort(); return TRUE; } @@ -2522,7 +2521,9 @@ LLFolderView::LLFolderView(const Params& p) mSignalSelectCallback(0), mMinWidth(0), mDragAndDropThisFrame(FALSE), - mCallbackRegistrar(NULL) + mCallbackRegistrar(NULL), + mParentPanel(p.parent_panel) + { LLRect rect = p.rect; LLRect new_rect(rect.mLeft, rect.mBottom + getRect().getHeight(), rect.mLeft + getRect().getWidth(), rect.mBottom); @@ -2556,15 +2557,14 @@ LLFolderView::LLFolderView(const Params& p) addChild(mRenamer); // make the popup menu available - LLMenuGL* menu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_inventory.xml", p.parent_panel); + LLMenuGL* menu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_inventory.xml", gMenuHolder); if (!menu) { - menu = LLUICtrlFactory::createDummyWidget<LLMenuGL>("inventory_menu"); + menu = LLUICtrlFactory::getDefaultWidget<LLMenuGL>("inventory_menu"); } menu->setBackgroundColor(gSavedSkinSettings.getColor("MenuPopupBgColor")); mPopupMenuHandle = menu->getHandle(); - setTabStop(TRUE); } // Destroys the object @@ -2578,7 +2578,6 @@ LLFolderView::~LLFolderView( void ) mScrollContainer = NULL; mRenameItem = NULL; mRenamer = NULL; - gFocusMgr.releaseFocusIfNeeded( this ); if( gEditMenuHandler == this ) { @@ -2668,6 +2667,7 @@ void LLFolderView::closeAllFolders() { // Close all the folders setOpenArrangeRecursively(FALSE, LLFolderViewFolder::RECURSE_DOWN); + arrangeAll(); } void LLFolderView::openFolder(const std::string& foldername) @@ -2772,6 +2772,9 @@ S32 LLFolderView::arrange( S32* unused_width, S32* unused_height, S32 filter_gen reshape( llmax(min_width, total_width), running_height ); } + // move item renamer text field to item's new position + updateRenamerPosition(); + mTargetHeight = (F32)target_height; return llround(mTargetHeight); } @@ -2805,6 +2808,8 @@ void LLFolderView::reshape(S32 width, S32 height, BOOL called_from_parent) } width = llmax(mMinWidth, min_width); LLView::reshape(width, height, called_from_parent); + + mReshapeSignal(mSelectedItems, FALSE); } void LLFolderView::addToSelectionList(LLFolderViewItem* item) @@ -2869,7 +2874,7 @@ BOOL LLFolderView::setSelection(LLFolderViewItem* selection, BOOL openitem, if( selection && take_keyboard_focus) { - setFocus(TRUE); + mParentPanel->setFocus(TRUE); } // clear selection down here because change of keyboard focus can potentially @@ -2894,6 +2899,30 @@ BOOL LLFolderView::setSelection(LLFolderViewItem* selection, BOOL openitem, return rv; } +void LLFolderView::setSelectionByID(const LLUUID& obj_id, BOOL take_keyboard_focus) +{ + LLFolderViewItem* itemp = getItemByID(obj_id); + if(itemp && itemp->getListener()) + { + itemp->getListener()->arrangeAndSet(itemp, TRUE, take_keyboard_focus); + mSelectThisID.setNull(); + return; + } + else + { + // save the desired item to be selected later (if/when ready) + mSelectThisID = obj_id; + } +} + +void LLFolderView::updateSelection() +{ + if (mSelectThisID.notNull()) + { + setSelectionByID(mSelectThisID, false); + } +} + BOOL LLFolderView::changeSelection(LLFolderViewItem* selection, BOOL selected) { BOOL rv = FALSE; @@ -3075,6 +3104,7 @@ void LLFolderView::clearSelection() recursiveDeselect(FALSE); mSelectedItems.clear(); } + mSelectThisID.setNull(); } BOOL LLFolderView::getSelectionList(std::set<LLUUID> &selection) @@ -3134,10 +3164,6 @@ void LLFolderView::draw() { closeAutoOpenedFolders(); } - if(this == gFocusMgr.getKeyboardFocus() && !getVisible()) - { - gFocusMgr.setKeyboardFocus( NULL ); - } // while dragging, update selection rendering to reflect single/multi drag status if (LLToolDragAndDrop::getInstance()->hasMouseCapture()) @@ -3275,11 +3301,11 @@ void LLFolderView::removeSelectedItems( void ) // change selection on successful delete if (new_selection) { - setSelectionFromRoot(new_selection, new_selection->isOpen(), gFocusMgr.childHasKeyboardFocus(this)); + setSelectionFromRoot(new_selection, new_selection->isOpen(), mParentPanel->hasFocus()); } else { - setSelectionFromRoot(NULL, gFocusMgr.childHasKeyboardFocus(this)); + setSelectionFromRoot(NULL, mParentPanel->hasFocus()); } } } @@ -3305,11 +3331,11 @@ void LLFolderView::removeSelectedItems( void ) } if (new_selection) { - setSelectionFromRoot(new_selection, new_selection->isOpen(), gFocusMgr.childHasKeyboardFocus(this)); + setSelectionFromRoot(new_selection, new_selection->isOpen(), mParentPanel->hasFocus()); } else { - setSelectionFromRoot(NULL, gFocusMgr.childHasKeyboardFocus(this)); + setSelectionFromRoot(NULL, mParentPanel->hasFocus()); } for(S32 i = 0; i < count; ++i) @@ -3597,23 +3623,8 @@ void LLFolderView::startRenamingSelectedItem( void ) { mRenameItem = item; - S32 x = ARROW_SIZE + TEXT_PAD + ICON_WIDTH + ICON_PAD - 1 + item->getIndentation(); - S32 y = llfloor(item->getRect().getHeight()-sFont->getLineHeight()-2); - item->localPointToScreen( x, y, &x, &y ); - screenPointToLocal( x, y, &x, &y ); - mRenamer->setOrigin( x, y ); - - S32 scroller_height = 0; - S32 scroller_width = gViewerWindow->getWindowWidth(); - BOOL dummy_bool; - if (mScrollContainer) - { - mScrollContainer->calcVisibleSize( &scroller_width, &scroller_height, &dummy_bool, &dummy_bool); - } + updateRenamerPosition(); - S32 width = llmax(llmin(item->getRect().getWidth() - x, scroller_width - x - getRect().mLeft), MINIMUM_RENAMER_WIDTH); - S32 height = llfloor(sFont->getLineHeight() + RENAME_HEIGHT_PAD); - mRenamer->reshape( width, height, TRUE ); mRenamer->setText(item->getName()); mRenamer->selectAll(); @@ -3625,19 +3636,6 @@ void LLFolderView::startRenamingSelectedItem( void ) } } -void LLFolderView::setFocus(BOOL focus) -{ - if (focus) - { - if(!hasFocus()) - { - gEditMenuHandler = this; - } - } - - LLFolderViewFolder::setFocus(focus); -} - BOOL LLFolderView::handleKeyHere( KEY key, MASK mask ) { BOOL handled = FALSE; @@ -3840,7 +3838,7 @@ BOOL LLFolderView::handleKeyHere( KEY key, MASK mask ) break; } - if (!handled && hasFocus()) + if (!handled && mParentPanel->hasFocus()) { if (key == KEY_BACKSPACE) { @@ -3929,20 +3927,11 @@ BOOL LLFolderView::handleMouseDown( S32 x, S32 y, MASK mask ) mKeyboardSelection = FALSE; mSearchString.clear(); - setFocus(TRUE); + mParentPanel->setFocus(TRUE); return LLView::handleMouseDown( x, y, mask ); } -void LLFolderView::onFocusLost( ) -{ - if( gEditMenuHandler == this ) - { - gEditMenuHandler = NULL; - } - LLUICtrl::onFocusLost(); -} - BOOL LLFolderView::search(LLFolderViewItem* first_item, const std::string &search_string, BOOL backward) { // get first selected item @@ -4019,7 +4008,7 @@ BOOL LLFolderView::handleRightMouseDown( S32 x, S32 y, MASK mask ) { // all user operations move keyboard focus to inventory // this way, we know when to stop auto-updating a search - setFocus(TRUE); + mParentPanel->setFocus(TRUE); BOOL handled = childrenHandleRightMouseDown(x, y, mask) != NULL; S32 count = mSelectedItems.size(); @@ -4224,6 +4213,72 @@ LLFolderViewItem* LLFolderView::getItemByID(const LLUUID& id) return NULL; } +bool LLFolderView::doToSelected(LLInventoryModel* model, const LLSD& userdata) +{ + std::string action = userdata.asString(); + + if ("rename" == action) + { + startRenamingSelectedItem(); + return true; + } + if ("delete" == action) + { + removeSelectedItems(); + return true; + } + + if ("copy" == action) + { + LLInventoryClipboard::instance().reset(); + } + + std::set<LLUUID> selected_items; + getSelectionList(selected_items); + + LLMultiPreview* multi_previewp = NULL; + LLMultiProperties* multi_propertiesp = NULL; + + if (("task_open" == action || "open" == action) && selected_items.size() > 1) + { + multi_previewp = new LLMultiPreview(); + gFloaterView->addChild(multi_previewp); + + LLFloater::setFloaterHost(multi_previewp); + + } + else if (("task_properties" == action || "properties" == action) && selected_items.size() > 1) + { + multi_propertiesp = new LLMultiProperties(); + gFloaterView->addChild(multi_propertiesp); + + LLFloater::setFloaterHost(multi_propertiesp); + } + + std::set<LLUUID>::iterator set_iter; + + for (set_iter = selected_items.begin(); set_iter != selected_items.end(); ++set_iter) + { + LLFolderViewItem* folder_item = getItemByID(*set_iter); + if(!folder_item) continue; + LLInvFVBridge* bridge = (LLInvFVBridge*)folder_item->getListener(); + if(!bridge) continue; + + bridge->performAction(this, model, action); + } + + LLFloater::setFloaterHost(NULL); + if (multi_previewp) + { + multi_previewp->openFloater(LLSD()); + } + else if (multi_propertiesp) + { + multi_propertiesp->openFloater(LLSD()); + } + + return true; +} // Main idle routine void LLFolderView::doIdle() @@ -4307,7 +4362,6 @@ void LLFolderView::idle(void* user_data) } } - void LLFolderView::dumpSelectionInformation() { llinfos << "LLFolderView::dumpSelectionInformation()" << llendl; @@ -4320,6 +4374,31 @@ void LLFolderView::dumpSelectionInformation() llinfos << "****************************************" << llendl; } +void LLFolderView::updateRenamerPosition() +{ + if(mRenameItem) + { + S32 x = ARROW_SIZE + TEXT_PAD + ICON_WIDTH + ICON_PAD - 1 + mRenameItem->getIndentation(); + S32 y = llfloor(mRenameItem->getRect().getHeight()-sFont->getLineHeight()-2); + mRenameItem->localPointToScreen( x, y, &x, &y ); + screenPointToLocal( x, y, &x, &y ); + mRenamer->setOrigin( x, y ); + + S32 scroller_height = 0; + S32 scroller_width = gViewerWindow->getWindowWidth(); + BOOL dummy_bool; + if (mScrollContainer) + { + mScrollContainer->calcVisibleSize( &scroller_width, &scroller_height, &dummy_bool, &dummy_bool); + } + + S32 width = llmax(llmin(mRenameItem->getRect().getWidth() - x, scroller_width - x - getRect().mLeft), MINIMUM_RENAMER_WIDTH); + S32 height = llfloor(sFont->getLineHeight() + RENAME_HEIGHT_PAD); + mRenamer->reshape( width, height, TRUE ); + } +} + + ///---------------------------------------------------------------------------- /// Local function definitions ///---------------------------------------------------------------------------- diff --git a/indra/newview/llfolderview.h b/indra/newview/llfolderview.h index d8eb9008f07ac12d9f771382f2ab56058c45e750..9d91f0d64ec4ab437839dbb05514bc23662bd058 100644 --- a/indra/newview/llfolderview.h +++ b/indra/newview/llfolderview.h @@ -44,6 +44,8 @@ #include <vector> #include <map> #include <deque> +#include <boost/function.hpp> +#include <boost/signals2.hpp> #include "lluictrl.h" #include "v4color.h" @@ -315,7 +317,7 @@ class LLFontGL; class LLFolderViewFolder; class LLFolderView; -class LLFolderViewItem : public LLUICtrl +class LLFolderViewItem : public LLView { public: static void initClass(); @@ -352,9 +354,9 @@ class LLFolderViewItem : public LLUICtrl static LLUIImagePtr sBoxImage; std::string mLabel; std::string mSearchableLabel; - std::string mType; S32 mLabelWidth; - time_t mCreationDate; + bool mLabelWidthDirty; + time_t mCreationDate; LLFolderViewFolder* mParentFolder; LLFolderViewEventListener* mListener; BOOL mIsSelected; @@ -585,6 +587,7 @@ class LLFolderViewFolder : public LLFolderViewItem S32 mLastCalculatedWidth; S32 mCompletedFilterGeneration; S32 mMostFilteredDescendantGeneration; + bool mNeedsSort; public: typedef enum e_recurse_type { @@ -610,6 +613,7 @@ class LLFolderViewFolder : public LLFolderViewItem virtual S32 arrange( S32* width, S32* height, S32 filter_generation ); BOOL needsArrange(); + void requestSort(); // Returns the sort group (system, trash, folder) for this folder. virtual EInventorySortGroup getSortGroup() const; @@ -709,7 +713,7 @@ class LLFolderViewFolder : public LLFolderViewItem virtual void applyListenerFunctorRecursively(LLFolderViewListenerFunctor& functor); virtual void openItem( void ); - virtual BOOL addItem(LLFolderViewItem* item); + virtual BOOL addItem(LLFolderViewItem* item); virtual BOOL addFolder( LLFolderViewFolder* folder); // LLView functionality @@ -739,7 +743,7 @@ class LLFolderViewFolder : public LLFolderViewItem class LLUICtrl; class LLLineEditor; -class LLFolderView : public LLFolderViewFolder, LLEditMenuHandler +class LLFolderView : public LLFolderViewFolder, public LLEditMenuHandler { public: struct Params : public LLInitParam::Block<Params, LLFolderViewFolder::Params> @@ -763,8 +767,9 @@ class LLFolderView : public LLFolderViewFolder, LLEditMenuHandler void setFilterPermMask(PermissionMask filter_perm_mask) { mFilter.setFilterPermissions(filter_perm_mask); } void setAllowMultiSelect(BOOL allow) { mAllowMultiSelect = allow; } - typedef boost::signals2::signal<void (const std::deque<LLFolderViewItem*>& items, BOOL user_action)> signal_t; + typedef boost::signals2::signal<void (const std::deque<LLFolderViewItem*>& items, BOOL user_action)> signal_t; void setSelectCallback(const signal_t::slot_type& cb) { mSelectSignal.connect(cb); } + void setReshapeCallback(const signal_t::slot_type& cb) { mReshapeSignal.connect(cb); } LLInventoryFilter* getFilter() { return &mFilter; } const std::string getFilterSubString(BOOL trim = FALSE); @@ -799,7 +804,13 @@ class LLFolderView : public LLFolderViewFolder, LLEditMenuHandler // Record the selected item and pass it down the hierachy. virtual BOOL setSelection(LLFolderViewItem* selection, BOOL openitem, BOOL take_keyboard_focus); - + + // Used by menu callbacks + void setSelectionByID(const LLUUID& obj_id, BOOL take_keyboard_focus); + + // Called once a frame to update the selection if mSelectThisID has been set + void updateSelection(); + // This method is used to toggle the selection of an item. Walks // children, and keeps track of selected objects. virtual BOOL changeSelection(LLFolderViewItem* selection, BOOL selected); @@ -852,9 +863,6 @@ class LLFolderView : public LLFolderViewFolder, LLEditMenuHandler //void dragItemIntoFolder( LLFolderViewItem* moving_item, LLFolderViewFolder* dst_folder, BOOL drop, BOOL* accept ); //void dragFolderIntoFolder( LLFolderViewFolder* moving_folder, LLFolderViewFolder* dst_folder, BOOL drop, BOOL* accept ); - // LLUICtrl Functionality - /*virtual*/ void setFocus(BOOL focus); - // LLView functionality ///*virtual*/ BOOL handleKey( KEY key, MASK mask, BOOL called_from_parent ); /*virtual*/ BOOL handleKeyHere( KEY key, MASK mask ); @@ -869,7 +877,6 @@ class LLFolderView : public LLFolderViewFolder, LLEditMenuHandler EAcceptance* accept, std::string& tooltip_msg); /*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE); - /*virtual*/ void onFocusLost(); virtual BOOL handleScrollWheel(S32 x, S32 y, S32 clicks); virtual void draw(); virtual void deleteAllChildren(); @@ -889,7 +896,9 @@ class LLFolderView : public LLFolderViewFolder, LLEditMenuHandler void addItemID(const LLUUID& id, LLFolderViewItem* itemp); void removeItemID(const LLUUID& id); LLFolderViewItem* getItemByID(const LLUUID& id); - + + bool doToSelected(LLInventoryModel* model, const LLSD& userdata); + void doIdle(); // Real idle routine static void idle(void* user_data); // static glue to doIdle() @@ -901,9 +910,13 @@ class LLFolderView : public LLFolderViewFolder, LLEditMenuHandler BOOL getDebugFilters() { return mDebugFilters; } + LLPanel* getParentPanel() { return mParentPanel; } // DEBUG only void dumpSelectionInformation(); +private: + void updateRenamerPosition(); + protected: LLScrollContainer* mScrollContainer; // NULL if this is not a child of a scroll container. @@ -948,10 +961,15 @@ class LLFolderView : public LLFolderViewFolder, LLEditMenuHandler S32 mArrangeGeneration; signal_t mSelectSignal; + signal_t mReshapeSignal; S32 mSignalSelectCallback; S32 mMinWidth; std::map<LLUUID, LLFolderViewItem*> mItemMap; BOOL mDragAndDropThisFrame; + + LLUUID mSelectThisID; // if non null, select this item + + LLPanel* mParentPanel; LLUICtrl::CommitCallbackRegistry::ScopedRegistrar* mCallbackRegistrar; diff --git a/indra/newview/llgesturemgr.cpp b/indra/newview/llgesturemgr.cpp index 2dbff92ba04546274909e25498a3b59d8199e660..0f2951d9df370c68d72bf681e35cb7478752809d 100644 --- a/indra/newview/llgesturemgr.cpp +++ b/indra/newview/llgesturemgr.cpp @@ -55,8 +55,9 @@ #include "llinventorymodel.h" #include "llnotify.h" #include "llviewermessage.h" -#include "llvoavatar.h" +#include "llvoavatarself.h" #include "llviewerstats.h" +#include "llbottomtray.h" LLGestureManager gGestureManager; @@ -868,9 +869,11 @@ void LLGestureManager::runStep(LLMultiGesture* gesture, LLGestureStep* step) std::string chat_text = chat_step->mChatText; // Don't animate the nodding, as this might not blend with // other playing animations. + const BOOL animate = FALSE; - gChatBar->sendChatFromViewer(chat_text, CHAT_TYPE_NORMAL, animate); + LLBottomTray::getInstance()->sendChatFromViewer(chat_text, CHAT_TYPE_NORMAL, animate); + gesture->mCurrentStep++; break; } diff --git a/indra/newview/llglsandbox.cpp b/indra/newview/llglsandbox.cpp index b0ccc0f1417ec789923669c91125dbfe0ba9adeb..3b3ada46a8ff489eb5e325e69f52e9f6cae9f8b2 100644 --- a/indra/newview/llglsandbox.cpp +++ b/indra/newview/llglsandbox.cpp @@ -49,7 +49,7 @@ #include "lltextureentry.h" #include "llviewercamera.h" -#include "llvoavatar.h" +#include "llvoavatarself.h" #include "llagent.h" #include "lltoolmgr.h" #include "llselectmgr.h" diff --git a/indra/newview/llgroupactions.cpp b/indra/newview/llgroupactions.cpp new file mode 100644 index 0000000000000000000000000000000000000000..cda30d89003793876abfcab96b6cba75987ac412 --- /dev/null +++ b/indra/newview/llgroupactions.cpp @@ -0,0 +1,141 @@ +/** + * @file llgroupactions.cpp + * @brief Group-related actions (join, leave, new, delete, etc) + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + * + * Copyright (c) 2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + + +#include "llviewerprecompiledheaders.h" + +#include "llgroupactions.h" + +#include "llagent.h" +#include "llfloatergroupinfo.h" +#include "llfloaterreg.h" +#include "llimview.h" // for gIMMgr + +// static +void LLGroupActions::search() +{ + LLFloaterReg::showInstance("search", LLSD().insert("panel", "group")); +} + +// static +void LLGroupActions::create() +{ + LLFloaterGroupInfo::showCreateGroup(NULL); +} + +// static +void LLGroupActions::leave(const LLUUID& group_id) +{ + if (group_id.isNull()) + return; + + S32 count = gAgent.mGroups.count(); + S32 i; + for (i = 0; i < count; ++i) + { + if(gAgent.mGroups.get(i).mID == group_id) + break; + } + if (i < count) + { + LLSD args; + args["GROUP"] = gAgent.mGroups.get(i).mName; + LLSD payload; + payload["group_id"] = group_id; + LLNotifications::instance().add("GroupLeaveConfirmMember", args, payload, onLeaveGroup); + } +} + +// static +void LLGroupActions::activate(const LLUUID& group_id) +{ + LLMessageSystem* msg = gMessageSystem; + msg->newMessageFast(_PREHASH_ActivateGroup); + msg->nextBlockFast(_PREHASH_AgentData); + msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); + msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); + msg->addUUIDFast(_PREHASH_GroupID, group_id); + gAgent.sendReliableMessage(); +} + +// static +void LLGroupActions::info(const LLUUID& group_id) +{ + if (group_id.isNull()) + return; + + LLFloaterGroupInfo::showFromUUID(group_id); +} + +// static +void LLGroupActions::startChat(const LLUUID& group_id) +{ + if (group_id.isNull()) + return; + + LLGroupData group_data; + if (gAgent.getGroupData(group_id, group_data)) + { + gIMMgr->addSession( + group_data.mName, + IM_SESSION_GROUP_START, + group_id); + make_ui_sound("UISndStartIM"); + } + else + { + // this should never happen, as starting a group IM session + // relies on you belonging to the group and hence having the group data + make_ui_sound("UISndInvalidOp"); + } +} + +//-- Private methods ---------------------------------------------------------- + +// static +bool LLGroupActions::onLeaveGroup(const LLSD& notification, const LLSD& response) +{ + S32 option = LLNotification::getSelectedOption(notification, response); + LLUUID group_id = notification["payload"]["group_id"].asUUID(); + if(option == 0) + { + LLMessageSystem* msg = gMessageSystem; + msg->newMessageFast(_PREHASH_LeaveGroupRequest); + msg->nextBlockFast(_PREHASH_AgentData); + msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); + msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); + msg->nextBlockFast(_PREHASH_GroupData); + msg->addUUIDFast(_PREHASH_GroupID, group_id); + gAgent.sendReliableMessage(); + } + return false; +} diff --git a/indra/newview/llgroupactions.h b/indra/newview/llgroupactions.h new file mode 100644 index 0000000000000000000000000000000000000000..1e6caea17c771a9bb6aaff3284a33b5b45348602 --- /dev/null +++ b/indra/newview/llgroupactions.h @@ -0,0 +1,79 @@ +/** + * @file llgroupactions.h + * @brief Group-related actions (join, leave, new, delete, etc) + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + * + * Copyright (c) 2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#ifndef LL_LLGROUPACTIONS_H +#define LL_LLGROUPACTIONS_H + +#include "llsd.h" +#include "lluuid.h" + +/** + * Group-related actions (join, leave, new, delete, etc) + */ +class LLGroupActions +{ +public: + /** + * Invokes group search floater. + */ + static void search(); + + /** + * Invokes group creation floater. + */ + static void create(); + + /** + * Invokes "Leave Group" floater. + */ + static void leave(const LLUUID& group_id); + + /** + * Activate group. + */ + static void activate(const LLUUID& group_id); + + /** + * Show group information dialog. + */ + static void info(const LLUUID& group_id); + + /** + * Start group instant messaging session. + */ + static void startChat(const LLUUID& group_id); + +private: + static bool onLeaveGroup(const LLSD& notification, const LLSD& response); +}; + +#endif // LL_LLGROUPACTIONS_H diff --git a/indra/newview/llgrouplist.cpp b/indra/newview/llgrouplist.cpp new file mode 100644 index 0000000000000000000000000000000000000000..5d0bcab07a5abec655c3a4228a9a03ac98c7ede0 --- /dev/null +++ b/indra/newview/llgrouplist.cpp @@ -0,0 +1,70 @@ +/** + * @file llgrouplist.cpp + * @brief List of the groups the agent belongs to. + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + * + * Copyright (c) 2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#include "llviewerprecompiledheaders.h" + +#include "llgrouplist.h" + +// newview +#include "llagent.h" + +static LLDefaultWidgetRegistry::Register<LLGroupList> r("group_list"); + +LLGroupList::LLGroupList(const Params& p) +: LLAvatarList(p) +{ +} + +BOOL LLGroupList::updateList() +{ + LLCtrlListInterface *group_list = getListInterface(); + const LLUUID& highlight_id = gAgent.getGroupID(); + S32 count = gAgent.mGroups.count(); + LLUUID id; + + group_list->operateOnAll(LLCtrlListInterface::OP_DELETE); + + for(S32 i = 0; i < count; ++i) + { + // *TODO: check powers mask? + id = gAgent.mGroups.get(i).mID; + const LLGroupData& group_data = gAgent.mGroups.get(i); + addItem(id, group_data.mName, highlight_id == id, ADD_BOTTOM); + } + + // add "none" to list at top + //name = LLTrans::getString("GroupsNone") + addItem(LLUUID::null, std::string("none"), highlight_id.isNull(), ADD_TOP); // *TODO: localize + + group_list->selectByValue(highlight_id); + return TRUE; +} diff --git a/indra/newview/llgrouplist.h b/indra/newview/llgrouplist.h new file mode 100644 index 0000000000000000000000000000000000000000..ce26977fdb64c8cdf1ad8c66f1bfb27b7c65df31 --- /dev/null +++ b/indra/newview/llgrouplist.h @@ -0,0 +1,53 @@ +/** + * @file llgrouplist.h + * @brief List of the groups the agent belongs to. + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + * + * Copyright (c) 2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#ifndef LL_LLGROUPLIST_H +#define LL_LLGROUPLIST_H + +#include <llscrolllistctrl.h> + +#include "llavatarlist.h" + +// *TODO: derive from ListView when it's ready. +class LLGroupList: public LLAvatarList +{ + LOG_CLASS(LLGroupList); +public: + struct Params : public LLInitParam::Block<Params, LLAvatarList::Params> + { + }; + + LLGroupList(const Params&); + BOOL updateList(); +}; + +#endif // LL_LLGROUPLIST_H diff --git a/indra/newview/llhudrender.cpp b/indra/newview/llhudrender.cpp index c00edfaa5c6dd7cceaabaa6242ed0f39932161fd..fe65a12c47abc53dda8dfc9589a355879c07e5bc 100644 --- a/indra/newview/llhudrender.cpp +++ b/indra/newview/llhudrender.cpp @@ -77,8 +77,8 @@ void hud_render_text(const LLWString &wstr, const LLVector3 &pos_agent, LLVector3 up_axis; if (orthographic) { - right_axis.setVec(0.f, -1.f / gViewerWindow->getWindowHeight(), 0.f); - up_axis.setVec(0.f, 0.f, 1.f / gViewerWindow->getWindowHeight()); + right_axis.setVec(0.f, -1.f / gViewerWindow->getWorldViewWidth(), 0.f); + up_axis.setVec(0.f, 0.f, 1.f / gViewerWindow->getWorldViewHeight()); } else { @@ -106,19 +106,29 @@ void hud_render_text(const LLWString &wstr, const LLVector3 &pos_agent, //get the render_pos in screen space F64 winX, winY, winZ; + LLRect world_view_rect = gViewerWindow->getWorldViewRect(); + S32 viewport[4]; + viewport[0] = world_view_rect.mLeft; + viewport[1] = world_view_rect.mBottom; + viewport[2] = world_view_rect.getWidth(); + viewport[3] = world_view_rect.getHeight(); gluProject(render_pos.mV[0], render_pos.mV[1], render_pos.mV[2], - gGLModelView, gGLProjection, (GLint*) gGLViewport, + gGLModelView, gGLProjection, (GLint*) viewport, &winX, &winY, &winZ); - //fonts all render orthographically, set up projection + //fonts all render orthographically, set up projection`` glMatrixMode(GL_PROJECTION); glPushMatrix(); glMatrixMode(GL_MODELVIEW); LLUI::pushMatrix(); - gViewerWindow->setup2DRender(); + gl_state_for_2d(world_view_rect.getWidth(), world_view_rect.getHeight()); + gViewerWindow->setup3DViewport(); + //gViewerWindow->setup2DRender(); + winX -= world_view_rect.mLeft; + winY -= world_view_rect.mBottom; LLUI::loadIdentity(); LLUI::translate((F32) winX*1.0f/LLFontGL::sScaleX, (F32) winY*1.0f/(LLFontGL::sScaleY), -(((F32) winZ*2.f)-1.f)); //glRotatef(angle * RAD_TO_DEG, axis.mV[VX], axis.mV[VY], axis.mV[VZ]); diff --git a/indra/newview/llhudtext.cpp b/indra/newview/llhudtext.cpp index 25f513e5c1334cc20ac83609556995a5c89046e4..efeac9c1978c5b127cc7caad56240bb17e3285a0 100644 --- a/indra/newview/llhudtext.cpp +++ b/indra/newview/llhudtext.cpp @@ -318,8 +318,8 @@ void LLHUDText::renderText(BOOL for_select) if (mOnHUDAttachment) { - x_pixel_vec = LLVector3::y_axis / (F32)gViewerWindow->getWindowWidth(); - y_pixel_vec = LLVector3::z_axis / (F32)gViewerWindow->getWindowHeight(); + x_pixel_vec = LLVector3::y_axis / (F32)gViewerWindow->getWorldViewWidth(); + y_pixel_vec = LLVector3::z_axis / (F32)gViewerWindow->getWorldViewHeight(); } else { @@ -797,44 +797,26 @@ LLVector2 LLHUDText::updateScreenPos(LLVector2 &offset) if (!LLViewerCamera::getInstance()->projectPosAgentToScreen(world_pos, screen_pos, FALSE) && mVisibleOffScreen) { // bubble off-screen, so find a spot for it along screen edge - LLVector2 window_center(gViewerWindow->getWindowDisplayWidth() * 0.5f, gViewerWindow->getWindowDisplayHeight() * 0.5f); - LLVector2 delta_from_center(screen_pos.mX - window_center.mV[VX], - screen_pos.mY - window_center.mV[VY]); - delta_from_center.normVec(); - - F32 camera_aspect = LLViewerCamera::getInstance()->getAspect(); - F32 delta_aspect = llabs(delta_from_center.mV[VX] / delta_from_center.mV[VY]); - if (camera_aspect / llmax(delta_aspect, 0.001f) > 1.f) - { - // camera has wider aspect ratio than offset vector, so clamp to height - delta_from_center *= llabs(window_center.mV[VY] / delta_from_center.mV[VY]); - } - else - { - // camera has narrower aspect ratio than offset vector, so clamp to width - delta_from_center *= llabs(window_center.mV[VX] / delta_from_center.mV[VX]); - } - - screen_pos_vec = window_center + delta_from_center; - } - else - { - screen_pos_vec.setVec((F32)screen_pos.mX, (F32)screen_pos.mY); + LLViewerCamera::getInstance()->projectPosAgentToScreenEdge(world_pos, screen_pos); } - S32 bottom = STATUS_BAR_HEIGHT; - if (gChatBar->getVisible()) + + screen_pos_vec.setVec((F32)screen_pos.mX, (F32)screen_pos.mY); + + LLRect world_rect = gViewerWindow->getVirtualWorldViewRect(); + S32 bottom = world_rect.mBottom + STATUS_BAR_HEIGHT; + if (gChatBar && gChatBar->getVisible()) { bottom += CHAT_BAR_HEIGHT; } LLVector2 screen_center; - screen_center.mV[VX] = llclamp((F32)screen_pos_vec.mV[VX], mWidth * 0.5f, (F32)gViewerWindow->getWindowDisplayWidth() - mWidth * 0.5f); + screen_center.mV[VX] = llclamp((F32)screen_pos_vec.mV[VX], (F32)world_rect.mLeft + mWidth * 0.5f, (F32)world_rect.mRight - mWidth * 0.5f); if(mVertAlignment == ALIGN_VERT_TOP) { screen_center.mV[VY] = llclamp((F32)screen_pos_vec.mV[VY], (F32)bottom, - (F32)gViewerWindow->getWindowDisplayHeight() - mHeight - (F32)MENU_BAR_HEIGHT); + (F32)world_rect.mTop - mHeight - (F32)MENU_BAR_HEIGHT); mSoftScreenRect.setLeftTopAndSize(screen_center.mV[VX] - (mWidth + BUFFER_SIZE) * 0.5f, screen_center.mV[VY] + (mHeight + BUFFER_SIZE), mWidth + BUFFER_SIZE, mHeight + BUFFER_SIZE); } @@ -842,7 +824,7 @@ LLVector2 LLHUDText::updateScreenPos(LLVector2 &offset) { screen_center.mV[VY] = llclamp((F32)screen_pos_vec.mV[VY], (F32)bottom + mHeight * 0.5f, - (F32)gViewerWindow->getWindowDisplayHeight() - mHeight * 0.5f - (F32)MENU_BAR_HEIGHT); + (F32)world_rect.mTop - mHeight * 0.5f - (F32)MENU_BAR_HEIGHT); mSoftScreenRect.setCenterAndSize(screen_center.mV[VX], screen_center.mV[VY], mWidth + BUFFER_SIZE, mHeight + BUFFER_SIZE); } diff --git a/indra/newview/llimpanel.cpp b/indra/newview/llimpanel.cpp index 15475be951d1ba1f0f8e5ea29c69087baa27701a..6acd174fc3f0e4d2d6bb92f613c6a5fa65c9b698 100644 --- a/indra/newview/llimpanel.cpp +++ b/indra/newview/llimpanel.cpp @@ -51,16 +51,17 @@ #include "llfloater.h" #include "llfloatercall.h" #include "llfloatergroupinfo.h" +#include "llfriendactions.h" #include "llimview.h" #include "llinventory.h" #include "llinventorymodel.h" #include "llinventoryview.h" #include "llfloateractivespeakers.h" -#include "llfloateravatarinfo.h" #include "llfloaterchat.h" #include "llkeyboard.h" #include "lllineeditor.h" #include "llnotify.h" +#include "llrecentpeople.h" #include "llresmgr.h" #include "lltrans.h" #include "lltabcontainer.h" @@ -705,6 +706,15 @@ void LLVoiceChannelGroup::activate() LLVoiceClient::getInstance()->setNonSpatialChannel( mURI, mCredentials); + +#if 0 // *TODO + if (!gAgent.isInGroup(mSessionID)) // ad-hoc channel + { + // Add the party to the list of people with which we've recently interacted. + for (/*people in the chat*/) + LLRecentPeople::instance().add(buddy_id); + } +#endif } } @@ -1014,6 +1024,9 @@ void LLVoiceChannelP2P::activate() // using the session handle invalidates it. Clear it out here so we can't reuse it by accident. mSessionHandle.clear(); } + + // Add the party to the list of people with which we've recently interacted. + LLRecentPeople::instance().add(mOtherUserID); } } @@ -1168,6 +1181,8 @@ LLFloaterIMPanel::LLFloaterIMPanel(const std::string& session_label, } mSpeakers = new LLIMSpeakerMgr(mVoiceChannel); + // All participants will be added to the list of people we've recently interacted with. + mSpeakers->addListener(&LLRecentPeople::instance(), "add"); LLUICtrlFactory::getInstance()->buildFloater(this, xml_filename, FALSE); @@ -1735,9 +1750,9 @@ void LLFloaterIMPanel::onClickProfile( void* userdata ) // Bring up the Profile window LLFloaterIMPanel* self = (LLFloaterIMPanel*) userdata; - if (self->mOtherParticipantUUID.notNull()) + if (self->getOtherParticipantID().notNull()) { - LLFloaterAvatarInfo::showFromDirectory(self->getOtherParticipantID()); + LLFriendActions::showProfile(self->getOtherParticipantID()); } } @@ -1937,6 +1952,9 @@ void deliver_message(const std::string& utf8_text, default: ; // do nothing } } + + // Add the recipient to the recent people list. + LLRecentPeople::instance().add(other_participant_id); } void LLFloaterIMPanel::sendMsg() diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 9e3bc76c9cf00aa0c610cc478cfb7b27793de2af..cb67fd34e556c25a37c176a5f998c93b42672d28 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -725,6 +725,8 @@ void LLIMMgr::addMessage( dialog, FALSE); + notifyObserverSessionAdded(floater->getSessionID(), name, other_participant_id); + // When we get a new IM, and if you are a god, display a bit // of information about the source. This is to help liaisons // when answering questions. @@ -897,6 +899,7 @@ LLUUID LLIMMgr::addSession( } //mTabContainer->selectTabPanel(panel); floater->setInputFocus(TRUE); + notifyObserverSessionAdded(floater->getSessionID(), name, other_participant_id); return floater->getSessionID(); } @@ -947,6 +950,7 @@ LLUUID LLIMMgr::addSession( } //mTabContainer->selectTabPanel(panel); floater->setInputFocus(TRUE); + notifyObserverSessionAdded(floater->getSessionID(), name, other_participant_id); return floater->getSessionID(); } @@ -964,6 +968,7 @@ void LLIMMgr::removeSession(const LLUUID& session_id) clearPendingInvitation(session_id); clearPendingAgentListUpdates(session_id); } + notifyObserverSessionRemoved(session_id); } void LLIMMgr::inviteToSession( @@ -1238,6 +1243,32 @@ void LLIMMgr::clearPendingAgentListUpdates(const LLUUID& session_id) } } +void LLIMMgr::notifyObserverSessionAdded(const LLUUID& session_id, const std::string& name, const LLUUID& other_participant_id) +{ + for (session_observers_list_t::iterator it = mSessionObservers.begin(); it != mSessionObservers.end(); it++) + { + (*it)->sessionAdded(session_id, name, other_participant_id); + } +} + +void LLIMMgr::notifyObserverSessionRemoved(const LLUUID& session_id) +{ + for (session_observers_list_t::iterator it = mSessionObservers.begin(); it != mSessionObservers.end(); it++) + { + (*it)->sessionRemoved(session_id); + } +} + +void LLIMMgr::addSessionObserver(LLIMSessionObserver *observer) +{ + mSessionObservers.push_back(observer); +} + +void LLIMMgr::removeSessionObserver(LLIMSessionObserver *observer) +{ + mSessionObservers.remove(observer); +} + // create a floater and update internal representation for // consistency. Returns the pointer, caller (the class instance since // it is a private method) is not responsible for deleting the diff --git a/indra/newview/llimview.h b/indra/newview/llimview.h index 38a57a40255a95b44302ee20c04198dc4a047485..469f6ec21db06b73f4cf15bab7e79af8736df3d8 100644 --- a/indra/newview/llimview.h +++ b/indra/newview/llimview.h @@ -44,6 +44,14 @@ class LLFloaterIMPanel; class LLFriendObserver; class LLFloaterIM; +class LLIMSessionObserver +{ +public: + virtual ~LLIMSessionObserver() {} + virtual void sessionAdded(const LLUUID& session_id, const std::string& name, const LLUUID& other_participant_id) = 0; + virtual void sessionRemoved(const LLUUID& session_id) = 0; +}; + class LLIMMgr : public LLSingleton<LLIMMgr> { public: @@ -165,6 +173,9 @@ class LLIMMgr : public LLSingleton<LLIMMgr> //HACK: need a better way of enumerating existing session, or listening to session create/destroy events const std::set<LLHandle<LLFloater> >& getIMFloaterHandles() { return mFloaters; } + void addSessionObserver(LLIMSessionObserver *); + void removeSessionObserver(LLIMSessionObserver *); + private: // create a panel and update internal representation for // consistency. Returns the pointer, caller (the class instance @@ -194,10 +205,16 @@ class LLIMMgr : public LLSingleton<LLIMMgr> static void onInviteNameLookup(LLSD payload, const LLUUID& id, const std::string& first, const std::string& last, BOOL is_group); + void notifyObserverSessionAdded(const LLUUID& session_id, const std::string& name, const LLUUID& other_participant_id); + void notifyObserverSessionRemoved(const LLUUID& session_id); + private: std::set<LLHandle<LLFloater> > mFloaters; LLFriendObserver* mFriendObserver; + typedef std::list <LLIMSessionObserver *> session_observers_list_t; + session_observers_list_t mSessionObservers; + // An IM has been received that you haven't seen yet. BOOL mIMReceived; diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index 89f9242b062ab40ab14b20aa56e790f9388bb410..540cefbc46019a67f37d63915ec55829d1f8e72e 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -40,6 +40,7 @@ #include "message.h" #include "llagent.h" +#include "llagentwearables.h" #include "llcallingcard.h" #include "llcheckboxctrl.h" // for radio buttons #include "llfloaterreg.h" @@ -50,13 +51,13 @@ #include "llviewercontrol.h" #include "llfirstuse.h" -#include "llfloateravatarinfo.h" #include "llfloaterchat.h" #include "llfloatercustomize.h" #include "llfloaterproperties.h" #include "llfloaterworldmap.h" #include "llfocusmgr.h" #include "llfolderview.h" +#include "llfriendactions.h" #include "llgesturemgr.h" #include "lliconctrl.h" #include "llinventorymodel.h" @@ -83,6 +84,7 @@ #include "llwearablelist.h" #include "llviewermessage.h" #include "llviewerregion.h" +#include "llvoavatarself.h" #include "lltabcontainer.h" #include "lluictrlfactory.h" #include "llselectmgr.h" @@ -108,6 +110,7 @@ void dec_busy_count() // Function declarations struct LLWearableHoldingPattern; +void wear_add_inventory_item_on_avatar(LLInventoryItem* item); void wear_inventory_category_on_avatar(LLInventoryCategory* category, BOOL append); void wear_inventory_category_on_avatar_step2( BOOL proceed, LLUUID category, BOOL append); void wear_inventory_category_on_avatar_loop(LLWearable* wearable, void*); @@ -146,6 +149,8 @@ std::string ICON_NAME[ICON_NAME_COUNT] = "inv_item_undershirt.tga", "inv_item_underpants.tga", "inv_item_skirt.tga", + "inv_item_alpha.tga", + "inv_item_tattoo.tga", "inv_item_animation.tga", "inv_item_gesture.tga", @@ -377,8 +382,8 @@ BOOL LLInvFVBridge::isClipboardPasteable() const } void hideContextEntries(LLMenuGL& menu, - const std::vector<std::string> &entries_to_show, - const std::vector<std::string> &disabled_entries) + const std::vector<std::string> &entries_to_show, + const std::vector<std::string> &disabled_entries) { const LLView::child_list_t *list = menu.getChildList(); @@ -422,8 +427,9 @@ void hideContextEntries(LLMenuGL& menu, } // Helper for commonly-used entries -void LLInvFVBridge::getClipboardEntries(bool show_asset_id, std::vector<std::string> &items, - std::vector<std::string> &disabled_items, U32 flags) +void LLInvFVBridge::getClipboardEntries(bool show_asset_id, + std::vector<std::string> &items, + std::vector<std::string> &disabled_items, U32 flags) { items.push_back(std::string("Rename")); if (!isItemRenameable() || (flags & FIRST_SELECTED_ITEM) == 0) @@ -602,22 +608,21 @@ void LLInvFVBridge::changeCategoryParent(LLInventoryModel* model, } -const char* safe_inv_type_lookup(LLInventoryType::EType inv_type) +const std::string safe_inv_type_lookup(LLInventoryType::EType inv_type) { - const char* rv = LLInventoryType::lookup(inv_type); - if(!rv) + const std::string rv= LLInventoryType::lookup(inv_type); + if(rv.empty()) { - const char* INVALID_TYPE = "<invalid>"; - rv = INVALID_TYPE; + return std::string("<invalid>"); } return rv; } LLInvFVBridge* LLInvFVBridge::createBridge(LLAssetType::EType asset_type, - LLInventoryType::EType inv_type, - LLInventoryPanel* inventory, - const LLUUID& uuid, - U32 flags) + LLInventoryType::EType inv_type, + LLInventoryPanel* inventory, + const LLUUID& uuid, + U32 flags) { LLInvFVBridge* new_listener = NULL; switch(asset_type) @@ -910,6 +915,11 @@ void LLItemBridge::buildDisplayName(LLInventoryItem* item, std::string& name) std::string LLItemBridge::getLabelSuffix() const { + // assume that this won't be called before string table is loaded + static const char* NO_COPY =LLTrans::getString("NO_COPY").c_str(); + static const char* NO_MOD = LLTrans::getString("NO_MOD").c_str(); + static const char* NO_XFER = LLTrans::getString("NO_XFER").c_str(); + std::string suffix; LLInventoryItem* item = getItem(); if(item) @@ -924,9 +934,6 @@ std::string LLItemBridge::getLabelSuffix() const gAgent.getID()); const char* EMPTY = ""; - const char* NO_COPY =LLTrans::getString("NO_COPY").c_str(); - const char* NO_MOD = LLTrans::getString("NO_MOD").c_str(); - const char* NO_XFER = LLTrans::getString("NO_XFER").c_str(); const char* scopy; if(copy) scopy = EMPTY; else scopy = NO_COPY; @@ -1021,7 +1028,7 @@ BOOL LLItemBridge::isItemCopyable() const if (item) { // can't copy worn objects. DEV-15183 - LLVOAvatar *avatarp = gAgent.getAvatarObject(); + LLVOAvatarSelf *avatarp = gAgent.getAvatarObject(); if( !avatarp ) { return FALSE; @@ -1108,7 +1115,7 @@ BOOL LLFolderBridge::isItemRemovable() return FALSE; } - LLVOAvatar* avatar = gAgent.getAvatarObject(); + LLVOAvatarSelf* avatar = gAgent.getAvatarObject(); if( !avatar ) { return FALSE; @@ -1145,7 +1152,7 @@ BOOL LLFolderBridge::isItemRemovable() if( (item->getType() == LLAssetType::AT_CLOTHING) || (item->getType() == LLAssetType::AT_BODYPART) ) { - if( gAgent.isWearingItem( item->getUUID() ) ) + if( gAgentWearables.isWearingItem( item->getUUID() ) ) { return FALSE; } @@ -1186,7 +1193,7 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat, LLInventoryModel* model = getInventoryModel(); if(!model) return FALSE; - LLVOAvatar* avatar = gAgent.getAvatarObject(); + LLVOAvatarSelf* avatar = gAgent.getAvatarObject(); if(!avatar) return FALSE; // cannot drag into library @@ -1239,7 +1246,7 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat, if( (item->getType() == LLAssetType::AT_CLOTHING) || (item->getType() == LLAssetType::AT_BODYPART) ) { - if( gAgent.isWearingItem( item->getUUID() ) ) + if( gAgentWearables.isWearingItem( item->getUUID() ) ) { is_movable = FALSE; // It's generally movable, but not into the trash! break; @@ -2188,7 +2195,7 @@ void LLFolderBridge::createWearable(LLFolderBridge* bridge, EWearableType type) // static void LLFolderBridge::createWearable(LLUUID parent_id, EWearableType type) { - LLWearable* wearable = gWearableList.createNewWearable(type); + LLWearable* wearable = LLWearableList::instance().createNewWearable(type); LLAssetType::EType asset_type = wearable->getAssetType(); LLInventoryType::EType inv_type = LLInventoryType::IT_WEARABLE; create_inventory_item(gAgent.getID(), gAgent.getSessionID(), @@ -2260,7 +2267,7 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item, return FALSE; } - LLVOAvatar* avatar = gAgent.getAvatarObject(); + LLVOAvatarSelf* avatar = gAgent.getAvatarObject(); if(!avatar) return FALSE; LLToolDragAndDrop::ESource source = LLToolDragAndDrop::getInstance()->getSource(); @@ -2291,7 +2298,7 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item, { case LLAssetType::AT_CLOTHING: case LLAssetType::AT_BODYPART: - is_movable = !gAgent.isWearingItem(inv_item->getUUID()); + is_movable = !gAgentWearables.isWearingItem(inv_item->getUUID()); break; case LLAssetType::AT_OBJECT: @@ -2577,7 +2584,7 @@ void LLLandmarkBridge::buildContextMenu(LLMenuGL& menu, U32 flags) } // Convenience function for the two functions below. -static void teleport_via_landmark(const LLUUID& asset_id) +void teleport_via_landmark(const LLUUID& asset_id) { gAgent.teleportViaLandmark( asset_id ); @@ -2706,7 +2713,7 @@ void LLCallingCardBridge::performAction(LLFolderView* folder, LLInventoryModel* if (item && (item->getCreatorUUID() != gAgent.getID()) && (!item->getCreatorUUID().isNull())) { - handle_lure(item->getCreatorUUID()); + LLFriendActions::offerTeleport(item->getCreatorUUID()); } } else LLItemBridge::performAction(folder, model, action); @@ -2748,9 +2755,7 @@ void LLCallingCardBridge::openItem() LLViewerInventoryItem* item = getItem(); if(item && !item->getCreatorUUID().isNull()) { - BOOL online; - online = LLAvatarTracker::instance().isBuddyOnline(item->getCreatorUUID()); - LLFloaterAvatarInfo::showFromFriend(item->getCreatorUUID(), online); + LLFriendActions::showProfile(item->getCreatorUUID()); } */ } @@ -3109,7 +3114,7 @@ LLUUID LLObjectBridge::sContextMenuItemID; BOOL LLObjectBridge::isItemRemovable() { - LLVOAvatar* avatar = gAgent.getAvatarObject(); + LLVOAvatarSelf* avatar = gAgent.getAvatarObject(); if(!avatar) return FALSE; if(avatar->isWearingAttachment(mUUID)) return FALSE; return LLInvFVBridge::isItemRemovable(); @@ -3120,8 +3125,6 @@ LLUIImagePtr LLObjectBridge::getIcon() const return get_item_icon(LLAssetType::AT_OBJECT, mInvType, mAttachPt, mIsMultiObject ); } -void rez_attachment(LLViewerInventoryItem* item, LLViewerJointAttachment* attachment); - // virtual void LLObjectBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action) { @@ -3191,7 +3194,7 @@ void LLObjectBridge::openItem() LLFontGL::StyleFlags LLObjectBridge::getLabelStyle() const { - LLVOAvatar* avatar = gAgent.getAvatarObject(); + LLVOAvatarSelf* avatar = gAgent.getAvatarObject(); if( avatar && avatar->isWearingAttachment( mUUID ) ) { return LLFontGL::BOLD; @@ -3204,7 +3207,7 @@ LLFontGL::StyleFlags LLObjectBridge::getLabelStyle() const std::string LLObjectBridge::getLabelSuffix() const { - LLVOAvatar* avatar = gAgent.getAvatarObject(); + LLVOAvatarSelf* avatar = gAgent.getAvatarObject(); if( avatar && avatar->isWearingAttachment( mUUID ) ) { std::string attachment_point_name = avatar->getAttachedPointName(mUUID); @@ -3301,7 +3304,7 @@ void LLObjectBridge::buildContextMenu(LLMenuGL& menu, U32 flags) LLInventoryItem* item = getItem(); if(item) { - LLVOAvatar *avatarp = gAgent.getAvatarObject(); + LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); if( !avatarp ) { return; @@ -3318,7 +3321,8 @@ void LLObjectBridge::buildContextMenu(LLMenuGL& menu, U32 flags) items.push_back(std::string("Object Wear")); items.push_back(std::string("Attach To")); items.push_back(std::string("Attach To HUD")); - items.push_back(std::string("Restore to Last Position")); + // commented out for DEV-32347 + //items.push_back(std::string("Restore to Last Position")); LLMenuGL* attach_menu = menu.getChildMenuByName("Attach To", TRUE); LLMenuGL* attach_hud_menu = menu.getChildMenuByName("Attach To HUD", TRUE); @@ -3379,7 +3383,7 @@ BOOL LLObjectBridge::renameItem(const std::string& new_name) model->updateItem(new_item); model->notifyObservers(); - LLVOAvatar* avatar = gAgent.getAvatarObject(); + LLVOAvatarSelf* avatar = gAgent.getAvatarObject(); if( avatar ) { LLViewerObject* obj = avatar->getWornAttachment( item->getUUID() ); @@ -3435,7 +3439,7 @@ void wear_inventory_item_on_avatar( LLInventoryItem* item ) lldebugs << "wear_inventory_item_on_avatar( " << item->getName() << " )" << llendl; - gWearableList.getAsset(item->getAssetUUID(), + LLWearableList::instance().getAsset(item->getAssetUUID(), item->getName(), item->getType(), LLWearableBridge::onWearOnAvatarArrived, @@ -3443,6 +3447,22 @@ void wear_inventory_item_on_avatar( LLInventoryItem* item ) } } +void wear_add_inventory_item_on_avatar( LLInventoryItem* item ) +{ + if(item) + { + lldebugs << "wear_add_inventory_item_on_avatar( " << item->getName() + << " )" << llendl; + + LLWearableList::instance().getAsset(item->getAssetUUID(), + item->getName(), + item->getType(), + LLWearableBridge::onWearAddOnAvatarArrived, + new LLUUID(item->getUUID())); + } +} + + struct LLFoundData { LLFoundData(const LLUUID& item_id, @@ -3856,7 +3876,7 @@ void wear_inventory_category_on_avatar_step2( BOOL proceed, LLUUID category, BOO gAddToOutfit = append; found = found_container.get(i); - gWearableList.getAsset(found->mAssetID, + LLWearableList::instance().getAsset(found->mAssetID, found->mName, found->mAssetType, wear_inventory_category_on_avatar_loop, @@ -3869,7 +3889,7 @@ void wear_inventory_category_on_avatar_step2( BOOL proceed, LLUUID category, BOO if (!append && !(wearable_count == 0 && obj_count == 0 && gest_count > 0) ) { - LLAgent::userRemoveAllAttachments(NULL); + LLAgentWearables::userRemoveAllAttachments(NULL); } if( obj_count > 0 ) @@ -3976,18 +3996,6 @@ void wear_inventory_category_on_avatar_step3(LLWearableHoldingPattern* holder, B item = (LLViewerInventoryItem*)gInventory.getItem(data->mItemID); if( item && (item->getAssetUUID() == wearable->getID()) ) { - //RN: after discussing with Brashears, I disabled this code - //Metadata should reside in the item, not the asset - //And this code does not handle failed asset uploads properly -// if(!wearable->isMatchedToInventoryItem(item )) -// { -// wearable = gWearableList.createWearableMatchedToInventoryItem( wearable, item ); -// // Now that we have an asset that matches the -// // item, update the item to point to the new -// // asset. -// item->setAssetUUID(wearable->getID()); -// item->updateAssetOnServer(); -// } items.put(item); wearables.put(wearable); } @@ -3998,7 +4006,7 @@ void wear_inventory_category_on_avatar_step3(LLWearableHoldingPattern* holder, B if(wearables.count() > 0) { - gAgent.setWearableOutfit(items, wearables, !append); + gAgentWearables.setWearableOutfit(items, wearables, !append); gInventory.notifyObservers(); } @@ -4069,9 +4077,9 @@ void remove_inventory_category_from_avatar_step2( BOOL proceed, LLUUID category_ { for(i = 0; i < wearable_count; ++i) { - if( gAgent.isWearingItem (item_array.get(i)->getUUID()) ) + if( gAgentWearables.isWearingItem (item_array.get(i)->getUUID()) ) { - gWearableList.getAsset(item_array.get(i)->getAssetUUID(), + LLWearableList::instance().getAsset(item_array.get(i)->getAssetUUID(), item_array.get(i)->getName(), item_array.get(i)->getType(), LLWearableBridge::onRemoveFromAvatarArrived, @@ -4124,22 +4132,22 @@ void remove_inventory_category_from_avatar_step2( BOOL proceed, LLUUID category_ BOOL LLWearableBridge::renameItem(const std::string& new_name) { - if( gAgent.isWearingItem( mUUID ) ) + if( gAgentWearables.isWearingItem( mUUID ) ) { - gAgent.setWearableName( mUUID, new_name ); + gAgentWearables.setWearableName( mUUID, new_name ); } return LLItemBridge::renameItem(new_name); } BOOL LLWearableBridge::isItemRemovable() { - if(gAgent.isWearingItem(mUUID)) return FALSE; + if(gAgentWearables.isWearingItem(mUUID)) return FALSE; return LLInvFVBridge::isItemRemovable(); } LLFontGL::StyleFlags LLWearableBridge::getLabelStyle() const { - if( gAgent.isWearingItem( mUUID ) ) + if( gAgentWearables.isWearingItem( mUUID ) ) { // llinfos << "BOLD" << llendl; return LLFontGL::BOLD; @@ -4152,7 +4160,7 @@ LLFontGL::StyleFlags LLWearableBridge::getLabelStyle() const std::string LLWearableBridge::getLabelSuffix() const { - if( gAgent.isWearingItem( mUUID ) ) + if( gAgentWearables.isWearingItem( mUUID ) ) { return LLItemBridge::getLabelSuffix() + " (worn)"; } @@ -4174,6 +4182,10 @@ void LLWearableBridge::performAction(LLFolderView* folder, LLInventoryModel* mod { wearOnAvatar(); } + else if ("wear_add" == action) + { + wearAddOnAvatar(); + } else if ("edit" == action) { editOnAvatar(); @@ -4181,12 +4193,12 @@ void LLWearableBridge::performAction(LLFolderView* folder, LLInventoryModel* mod } else if ("take_off" == action) { - if(gAgent.isWearingItem(mUUID)) + if(gAgentWearables.isWearingItem(mUUID)) { LLViewerInventoryItem* item = getItem(); if (item) { - gWearableList.getAsset(item->getAssetUUID(), + LLWearableList::instance().getAsset(item->getAssetUUID(), item->getName(), item->getType(), LLWearableBridge::onRemoveFromAvatarArrived, @@ -4212,7 +4224,7 @@ void LLWearableBridge::openItem() } else if(isAgentInventory()) { - if( !gAgent.isWearingItem( mUUID ) ) + if( !gAgentWearables.isWearingItem( mUUID ) ) { wearOnAvatar(); } @@ -4281,6 +4293,7 @@ void LLWearableBridge::buildContextMenu(LLMenuGL& menu, U32 flags) items.push_back(std::string("Wearable Separator")); items.push_back(std::string("Wearable Wear")); + items.push_back(std::string("Wearable Add")); items.push_back(std::string("Wearable Edit")); if ((flags & FIRST_SELECTED_ITEM) == 0) @@ -4307,7 +4320,7 @@ BOOL LLWearableBridge::canWearOnAvatar(void* user_data) LLViewerInventoryItem* item = (LLViewerInventoryItem*)self->getItem(); if(!item || !item->isComplete()) return FALSE; } - return (!gAgent.isWearingItem(self->mUUID)); + return (!gAgentWearables.isWearingItem(self->mUUID)); } // Called from menus @@ -4323,7 +4336,7 @@ void LLWearableBridge::wearOnAvatar() { // Don't wear anything until initial wearables are loaded, can // destroy clothing items. - if (!gAgent.areWearablesLoaded()) + if (!gAgentWearables.areWearablesLoaded()) { LLNotifications::instance().add("CanNotChangeAppearanceUntilLoaded"); return; @@ -4350,6 +4363,37 @@ void LLWearableBridge::wearOnAvatar() } } +void LLWearableBridge::wearAddOnAvatar() +{ + // Don't wear anything until initial wearables are loaded, can + // destroy clothing items. + if (!gAgentWearables.areWearablesLoaded()) + { + LLNotifications::instance().add("CanNotChangeAppearanceUntilLoaded"); + return; + } + + LLViewerInventoryItem* item = getItem(); + if(item) + { + if(!isAgentInventory()) + { + LLPointer<LLInventoryCallback> cb = new WearOnAvatarCallback(); + copy_inventory_item( + gAgent.getID(), + item->getPermissions().getOwner(), + item->getUUID(), + LLUUID::null, + std::string(), + cb); + } + else + { + wear_add_inventory_item_on_avatar(item); + } + } +} + // static void LLWearableBridge::onWearOnAvatarArrived( LLWearable* wearable, void* userdata ) { @@ -4362,22 +4406,33 @@ void LLWearableBridge::onWearOnAvatarArrived( LLWearable* wearable, void* userda { if(item->getAssetUUID() == wearable->getID()) { - //RN: after discussing with Brashears, I disabled this code - //Metadata should reside in the item, not the asset - //And this code does not handle failed asset uploads properly + gAgentWearables.setWearable(item, wearable); + gInventory.notifyObservers(); + //self->getFolderItem()->refreshFromRoot(); + } + else + { + llinfos << "By the time wearable asset arrived, its inv item already pointed to a different asset." << llendl; + } + } + } + delete item_id; +} -// if(!wearable->isMatchedToInventoryItem(item)) -// { -// LLWearable* new_wearable = gWearableList.createWearableMatchedToInventoryItem( wearable, item ); -// -// // Now that we have an asset that matches the -// // item, update the item to point to the new -// // asset. -// item->setAssetUUID(new_wearable->getID()); -// item->updateAssetOnServer(); -// wearable = new_wearable; -// } - gAgent.setWearable(item, wearable); +// static +void LLWearableBridge::onWearAddOnAvatarArrived( LLWearable* wearable, void* userdata ) +{ + LLUUID* item_id = (LLUUID*) userdata; + if(wearable) + { + LLViewerInventoryItem* item = NULL; + item = (LLViewerInventoryItem*)gInventory.getItem(*item_id); + if(item) + { + if(item->getAssetUUID() == wearable->getID()) + { + bool do_append = true; + gAgentWearables.setWearable(item, wearable, do_append); gInventory.notifyObservers(); //self->getFolderItem()->refreshFromRoot(); } @@ -4396,7 +4451,7 @@ BOOL LLWearableBridge::canEditOnAvatar(void* user_data) LLWearableBridge* self = (LLWearableBridge*)user_data; if(!self) return FALSE; - return (gAgent.isWearingItem(self->mUUID)); + return (gAgentWearables.isWearingItem(self->mUUID)); } // static @@ -4411,7 +4466,7 @@ void LLWearableBridge::onEditOnAvatar(void* user_data) void LLWearableBridge::editOnAvatar() { - LLWearable* wearable = gAgent.getWearableFromWearableItem(mUUID); + LLWearable* wearable = gAgentWearables.getWearableFromWearableItem(mUUID); if( wearable ) { // Set the tab to the right wearable. @@ -4432,7 +4487,7 @@ BOOL LLWearableBridge::canRemoveFromAvatar(void* user_data) LLWearableBridge* self = (LLWearableBridge*)user_data; if( self && (LLAssetType::AT_BODYPART != self->mAssetType) ) { - return gAgent.isWearingItem( self->mUUID ); + return gAgentWearables.isWearingItem( self->mUUID ); } return FALSE; } @@ -4442,12 +4497,12 @@ void LLWearableBridge::onRemoveFromAvatar(void* user_data) { LLWearableBridge* self = (LLWearableBridge*)user_data; if(!self) return; - if(gAgent.isWearingItem(self->mUUID)) + if(gAgentWearables.isWearingItem(self->mUUID)) { LLViewerInventoryItem* item = self->getItem(); if (item) { - gWearableList.getAsset(item->getAssetUUID(), + LLWearableList::instance().getAsset(item->getAssetUUID(), item->getName(), item->getType(), onRemoveFromAvatarArrived, @@ -4463,14 +4518,16 @@ void LLWearableBridge::onRemoveFromAvatarArrived(LLWearable* wearable, LLUUID* item_id = (LLUUID*) userdata; if(wearable) { - if( gAgent.isWearingItem( *item_id ) ) + if( gAgentWearables.isWearingItem( *item_id ) ) { EWearableType type = wearable->getType(); if( !(type==WT_SHAPE || type==WT_SKIN || type==WT_HAIR || type==WT_EYES ) ) //&& //!((!gAgent.isTeen()) && ( type==WT_UNDERPANTS || type==WT_UNDERSHIRT )) ) { - gAgent.removeWearable( type ); + // MULTI_WEARABLE: FIXME HACK - always remove all + bool do_remove_all = false; + gAgentWearables.removeWearable( type, do_remove_all, 0 ); } } } @@ -4533,9 +4590,21 @@ LLInvFVBridgeAction* LLInvFVBridgeAction::createAction(LLAssetType::EType asset_ } //static -void LLInvFVBridgeAction::doAction(LLAssetType::EType asset_type, - const LLUUID& uuid,LLInventoryModel* model) +void LLInvFVBridgeAction::doAction(LLAssetType::EType asset_type, + const LLUUID& uuid,LLInventoryModel* model) +{ + LLInvFVBridgeAction* action = createAction(asset_type,uuid,model); + if(action) + { + action->doIt(); + delete action; + } +} + +//static +void LLInvFVBridgeAction::doAction(const LLUUID& uuid, LLInventoryModel* model) { + LLAssetType::EType asset_type = model->getItem(uuid)->getType(); LLInvFVBridgeAction* action = createAction(asset_type,uuid,model); if(action) { @@ -4596,11 +4665,9 @@ void LLLandmarkBridgeAction::doIt() void LLCallingCardBridgeAction::doIt() { LLViewerInventoryItem* item = getItem(); - if(item && !item->getCreatorUUID().isNull()) + if(item && item->getCreatorUUID().notNull()) { - BOOL online; - online = LLAvatarTracker::instance().isBuddyOnline(item->getCreatorUUID()); - LLFloaterAvatarInfo::showFromFriend(item->getCreatorUUID(), online); + LLFriendActions::showProfile(item->getCreatorUUID()); } LLInvFVBridgeAction::doIt(); @@ -4685,7 +4752,7 @@ void LLWearableBridgeAction::wearOnAvatar() { // Don't wear anything until initial wearables are loaded, can // destroy clothing items. - if (!gAgent.areWearablesLoaded()) + if (!gAgentWearables.areWearablesLoaded()) { LLNotifications::instance().add("CanNotChangeAppearanceUntilLoaded"); return; @@ -4721,7 +4788,7 @@ void LLWearableBridgeAction::doIt() } else if(isAgentInventory()) { - if( !gAgent.isWearingItem( mUUID ) ) + if( !gAgentWearables.isWearingItem( mUUID ) ) { wearOnAvatar(); } diff --git a/indra/newview/llinventorybridge.h b/indra/newview/llinventorybridge.h index b66228c75a1fcbd09295c32970aac3a34c167879..b55a6a658b00bc5396da07fbcf4521cd91ea6b7b 100644 --- a/indra/newview/llinventorybridge.h +++ b/indra/newview/llinventorybridge.h @@ -30,6 +30,9 @@ * $/LicenseInfo$ */ +#ifndef LL_LLINVENTORYBRIDGE_H +#define LL_LLINVENTORYBRIDGE_H + #include "llfloaterproperties.h" #include "llwearable.h" #include "llviewercontrol.h" @@ -66,6 +69,8 @@ enum EInventoryIcon CLOTHING_UNDERSHIRT_ICON_NAME, CLOTHING_UNDERPANTS_ICON_NAME, CLOTHING_SKIRT_ICON_NAME, + CLOTHING_ALPHA_ICON_NAME, + CLOTHING_TATTOO_ICON_NAME, ANIMATION_ICON_NAME, GESTURE_ICON_NAME, @@ -532,6 +537,9 @@ class LLWearableBridge : public LLItemBridge static void onWearOnAvatarArrived( LLWearable* wearable, void* userdata ); void wearOnAvatar(); + static void onWearAddOnAvatarArrived( LLWearable* wearable, void* userdata ); + void wearAddOnAvatar(); + static BOOL canEditOnAvatar( void* userdata ); // Access to editOnAvatar() from menu static void onEditOnAvatar( void* userdata ); void editOnAvatar(); @@ -712,3 +720,183 @@ class LLWearableBridgeAction: public LLInvFVBridgeAction void wearOnAvatar(); }; + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Class LLInvFVBridgeAction (& it's derived classes) +// +// This is an implementation class to be able to +// perform action to view inventory items. +// +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +class LLInvFVBridgeAction +{ +public: + // This method is a convenience function which creates the correct + // type of bridge action based on some basic information + static LLInvFVBridgeAction* createAction(LLAssetType::EType asset_type, + const LLUUID& uuid,LLInventoryModel* model); + + static void doAction(LLAssetType::EType asset_type, + const LLUUID& uuid, LLInventoryModel* model); + static void doAction(const LLUUID& uuid, LLInventoryModel* model); + + virtual void doIt() { }; + virtual ~LLInvFVBridgeAction(){}//need this because of warning on OSX +protected: + LLInvFVBridgeAction(const LLUUID& id,LLInventoryModel* model):mUUID(id),mModel(model){} + + LLViewerInventoryItem* getItem() const; +protected: + const LLUUID& mUUID; // item id + LLInventoryModel* mModel; + +}; + + + +class LLTextureBridgeAction: public LLInvFVBridgeAction +{ + friend class LLInvFVBridgeAction; +public: + virtual void doIt() ; + virtual ~LLTextureBridgeAction(){} +protected: + LLTextureBridgeAction(const LLUUID& id,LLInventoryModel* model):LLInvFVBridgeAction(id,model){} + +}; + + +class LLSoundBridgeAction: public LLInvFVBridgeAction +{ + friend class LLInvFVBridgeAction; +public: + virtual void doIt() ; + virtual ~LLSoundBridgeAction(){} +protected: + LLSoundBridgeAction(const LLUUID& id,LLInventoryModel* model):LLInvFVBridgeAction(id,model){} + +}; + + +class LLLandmarkBridgeAction: public LLInvFVBridgeAction +{ + friend class LLInvFVBridgeAction; +public: + virtual void doIt() ; + virtual ~LLLandmarkBridgeAction(){} +protected: + LLLandmarkBridgeAction(const LLUUID& id,LLInventoryModel* model):LLInvFVBridgeAction(id,model){} + +}; + + +class LLCallingCardBridgeAction: public LLInvFVBridgeAction +{ + friend class LLInvFVBridgeAction; +public: + virtual void doIt() ; + virtual ~LLCallingCardBridgeAction(){} +protected: + LLCallingCardBridgeAction(const LLUUID& id,LLInventoryModel* model):LLInvFVBridgeAction(id,model){} + +}; + + +class LLNotecardBridgeAction: public LLInvFVBridgeAction +{ + friend class LLInvFVBridgeAction; +public: + virtual void doIt() ; + virtual ~LLNotecardBridgeAction(){} +protected: + LLNotecardBridgeAction(const LLUUID& id,LLInventoryModel* model):LLInvFVBridgeAction(id,model){} + +}; + + +class LLGestureBridgeAction: public LLInvFVBridgeAction +{ + friend class LLInvFVBridgeAction; +public: + virtual void doIt() ; + virtual ~LLGestureBridgeAction(){} +protected: + LLGestureBridgeAction(const LLUUID& id,LLInventoryModel* model):LLInvFVBridgeAction(id,model){} + +}; + + +class LLAnimationBridgeAction: public LLInvFVBridgeAction +{ + friend class LLInvFVBridgeAction; +public: + virtual void doIt() ; + virtual ~LLAnimationBridgeAction(){} +protected: + LLAnimationBridgeAction(const LLUUID& id,LLInventoryModel* model):LLInvFVBridgeAction(id,model){} + +}; + + +class LLObjectBridgeAction: public LLInvFVBridgeAction +{ + friend class LLInvFVBridgeAction; +public: + virtual void doIt() ; + virtual ~LLObjectBridgeAction(){} +protected: + LLObjectBridgeAction(const LLUUID& id,LLInventoryModel* model):LLInvFVBridgeAction(id,model){} + +}; + + +class LLLSLTextBridgeAction: public LLInvFVBridgeAction +{ + friend class LLInvFVBridgeAction; +public: + virtual void doIt() ; + virtual ~LLLSLTextBridgeAction(){} +protected: + LLLSLTextBridgeAction(const LLUUID& id,LLInventoryModel* model):LLInvFVBridgeAction(id,model){} + +}; + + +class LLWearableBridgeAction: public LLInvFVBridgeAction +{ + friend class LLInvFVBridgeAction; +public: + virtual void doIt(); + virtual ~LLWearableBridgeAction(){} +protected: + LLWearableBridgeAction(const LLUUID& id,LLInventoryModel* model):LLInvFVBridgeAction(id,model){} + + + BOOL isInTrash() const; + // return true if the item is in agent inventory. if false, it + // must be lost or in the inventory library. + BOOL isAgentInventory() const; + + void wearOnAvatar(); + +}; + +void wear_inventory_item_on_avatar(LLInventoryItem* item); +void wear_outfit_by_name(const std::string& name); +void wear_inventory_category(LLInventoryCategory* category, bool copy, bool append); + +void rez_attachment(LLViewerInventoryItem* item, LLViewerJointAttachment* attachment); + +// Move items from an in-world object's "Contents" folder to a specified +// folder in agent inventory. +BOOL move_inv_category_world_to_agent(const LLUUID& object_id, + const LLUUID& category_id, + BOOL drop, + void (*callback)(S32, void*) = NULL, + void* user_data = NULL); + + + +void teleport_via_landmark(const LLUUID& asset_id); + +#endif // LL_LLINVENTORYBRIDGE_H diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp index 4e2bb3e2e9f449af7c4f550313fd7c753c7fb55b..9177d51d5c2088919d9c7419f303e6005d94c7de 100644 --- a/indra/newview/llinventorymodel.cpp +++ b/indra/newview/llinventorymodel.cpp @@ -42,8 +42,10 @@ #include "message.h" #include "llagent.h" +#include "llagentwearables.h" #include "llfloater.h" #include "llfocusmgr.h" +#include "llinventorybridge.h" #include "llinventoryview.h" #include "llviewerinventory.h" #include "llviewermessage.h" @@ -53,11 +55,11 @@ #include "lldbstrings.h" #include "llviewerstats.h" #include "llmutelist.h" -#include "llnotify.h" +#include "llnotifications.h" #include "llcallbacklist.h" #include "llpreview.h" #include "llviewercontrol.h" -#include "llvoavatar.h" +#include "llvoavatarself.h" #include "llsdutil.h" #include <deque> @@ -87,34 +89,6 @@ static std::deque<LLUUID> sFetchQueue; const F32 MAX_TIME_FOR_SINGLE_FETCH = 10.f; const S32 MAX_FETCH_RETRIES = 10; const char CACHE_FORMAT_STRING[] = "%s.inv"; -const char* NEW_CATEGORY_NAME = "New Folder"; -const char* NEW_CATEGORY_NAMES[LLAssetType::AT_COUNT] = -{ - "Textures", // AT_TEXTURE - "Sounds", // AT_SOUND - "Calling Cards", // AT_CALLINGCARD - "Landmarks", // AT_LANDMARK - "Scripts", // AT_SCRIPT (deprecated?) - "Clothing", // AT_CLOTHING - "Objects", // AT_OBJECT - "Notecards", // AT_NOTECARD - "New Folder", // AT_CATEGORY - "Inventory", // AT_ROOT_CATEGORY - "Scripts", // AT_LSL_TEXT - "Scripts", // AT_LSL_BYTECODE - "Uncompressed Images", // AT_TEXTURE_TGA - "Body Parts", // AT_BODYPART - "Trash", // AT_TRASH - "Photo Album", // AT_SNAPSHOT_CATEGORY - "Lost And Found", // AT_LOST_AND_FOUND - "Uncompressed Sounds", // AT_SOUND_WAV - "Uncompressed Images", // AT_IMAGE_TGA - "Uncompressed Images", // AT_IMAGE_JPEG - "Animations", // AT_ANIMATION - "Gestures", // AT_GESTURE - "New Folder", // AT_SIMSTATE - "My Favorites" //AT_FAVORITE -}; struct InventoryIDPtrLess { @@ -389,15 +363,9 @@ LLUUID LLInventoryModel::createNewCategory(const LLUUID& parent_id, { name.assign(pname); } - else if((preferred_type >= LLAssetType::AT_TEXTURE) && - //why < LLAssetType::AT_SIMSTATE??? if preferred_type == LLAssetType::AT_SIMSTATE that will be handled above - (preferred_type < LLAssetType::AT_COUNT)) - { - name.assign(NEW_CATEGORY_NAMES[preferred_type]); - } else { - name.assign(NEW_CATEGORY_NAME); + name.assign(LLAssetType::lookupCategoryName(preferred_type)); } // Add the category to the internal representation @@ -547,7 +515,7 @@ U32 LLInventoryModel::updateItem(const LLViewerInventoryItem* item) LLViewerInventoryItem* old_item = getItem(item->getUUID()); if(old_item) { - // We already have an old item, modify it's values + // We already have an old item, modify its values LLUUID old_parent_id = old_item->getParentUUID(); LLUUID new_parent_id = item->getParentUUID(); if(old_parent_id != new_parent_id) @@ -1044,7 +1012,7 @@ void LLInventoryModel::mock(const LLUUID& root_id) root_id, LLUUID::null, LLAssetType::AT_CATEGORY, - NEW_CATEGORY_NAMES[LLAssetType::AT_ROOT_CATEGORY], + LLAssetType::lookupCategoryName(LLAssetType::AT_ROOT_CATEGORY), gAgent.getID()); addCategory(cat); gInventory.buildParentChildMap(); @@ -1876,56 +1844,63 @@ bool LLInventoryModel::isCategoryComplete(const LLUUID& cat_id) const } bool LLInventoryModel::loadSkeleton( - const LLSD& options, + const LLInventoryModel::options_t& options, const LLUUID& owner_id) { lldebugs << "importing inventory skeleton for " << owner_id << llendl; typedef std::set<LLPointer<LLViewerInventoryCategory>, InventoryIDPtrLess> cat_set_t; cat_set_t temp_cats; - bool rv = true; - for(LLSD::array_const_iterator it = options.beginArray(), - end = options.endArray(); it != end; ++it) - { - LLSD name = (*it)["name"]; - LLSD folder_id = (*it)["folder_id"]; - LLSD parent_id = (*it)["parent_id"]; - LLSD version = (*it)["version"]; - if(name.isDefined() - && folder_id.isDefined() - && parent_id.isDefined() - && version.isDefined() - && folder_id.asUUID().notNull() // if an id is null, it locks the viewer. - ) - { - LLPointer<LLViewerInventoryCategory> cat = new LLViewerInventoryCategory(owner_id); - cat->rename(name.asString()); - cat->setUUID(folder_id.asUUID()); - cat->setParent(parent_id.asUUID()); + update_map_t child_counts; - LLAssetType::EType preferred_type = LLAssetType::AT_NONE; - LLSD type_default = (*it)["type_default"]; - if(type_default.isDefined()) - { - preferred_type = (LLAssetType::EType)type_default.asInteger(); - } - cat->setPreferredType(preferred_type); - cat->setVersion(version.asInteger()); - temp_cats.insert(cat); + LLUUID id; + LLAssetType::EType preferred_type; + bool rv = true; + for(options_t::const_iterator it = options.begin(); it < options.end(); ++it) + { + LLPointer<LLViewerInventoryCategory> cat = new LLViewerInventoryCategory(owner_id); + response_t::const_iterator no_response = (*it).end(); + response_t::const_iterator skel; + skel = (*it).find("name"); + if(skel == no_response) goto clean_cat; + cat->rename(std::string((*skel).second)); + skel = (*it).find("folder_id"); + if(skel == no_response) goto clean_cat; + id.set((*skel).second); + // if an id is null, it locks the viewer. + if(id.isNull()) goto clean_cat; + cat->setUUID(id); + skel = (*it).find("parent_id"); + if(skel == no_response) goto clean_cat; + id.set((*skel).second); + cat->setParent(id); + skel = (*it).find("type_default"); + if(skel == no_response) + { + preferred_type = LLAssetType::AT_NONE; } else { - llwarns << "Unable to import near " << name.asString() << llendl; - rv = false; + S32 t = atoi((*skel).second.c_str()); + preferred_type = (LLAssetType::EType)t; } + cat->setPreferredType(preferred_type); + skel = (*it).find("version"); + if(skel == no_response) goto clean_cat; + cat->setVersion(atoi((*skel).second.c_str())); + temp_cats.insert(cat); + continue; + clean_cat: + llwarns << "Unable to import near " << cat->getName() << llendl; + rv = false; + //delete cat; // automatic when cat is reasigned or destroyed } S32 cached_category_count = 0; S32 cached_item_count = 0; if(!temp_cats.empty()) { - update_map_t child_counts; cat_array_t categories; item_array_t items; std::string owner_id_str; @@ -1954,7 +1929,6 @@ bool LLInventoryModel::loadSkeleton( llinfos << "Unable to gunzip " << gzip_filename << llendl; } } - if(loadFromFile(inventory_filename, categories, items)) { // We were able to find a cache of files. So, use what we @@ -2079,84 +2053,85 @@ bool LLInventoryModel::loadSkeleton( return rv; } -bool LLInventoryModel::loadMeat(const LLSD& options, const LLUUID& owner_id) +bool LLInventoryModel::loadMeat( + const LLInventoryModel::options_t& options, const LLUUID& owner_id) { llinfos << "importing inventory for " << owner_id << llendl; + LLPermissions default_perm; + default_perm.init(LLUUID::null, owner_id, LLUUID::null, LLUUID::null); + LLPointer<LLViewerInventoryItem> item; + LLUUID id; + LLAssetType::EType type; + LLInventoryType::EType inv_type; bool rv = true; - for(LLSD::array_const_iterator it = options.beginArray(), - end = options.endArray(); it != end; ++it) - { - LLSD name = (*it)["name"]; - LLSD item_id = (*it)["item_id"]; - LLSD parent_id = (*it)["parent_id"]; - LLSD asset_type = (*it)["type"]; - LLSD data_id = (*it)["data_id"]; - if(name.isDefined() - && item_id.isDefined() - && parent_id.isDefined() - && asset_type.isDefined() - && data_id.isDefined()) + for(options_t::const_iterator it = options.begin(); it < options.end(); ++it) + { + item = new LLViewerInventoryItem; + response_t::const_iterator no_response = (*it).end(); + response_t::const_iterator meat; + meat = (*it).find("name"); + if(meat == no_response) goto clean_item; + item->rename(std::string((*meat).second)); + meat = (*it).find("item_id"); + if(meat == no_response) goto clean_item; + id.set((*meat).second); + item->setUUID(id); + meat = (*it).find("parent_id"); + if(meat == no_response) goto clean_item; + id.set((*meat).second); + item->setParent(id); + meat = (*it).find("type"); + if(meat == no_response) goto clean_item; + type = (LLAssetType::EType)atoi((*meat).second.c_str()); + item->setType(type); + meat = (*it).find("inv_type"); + if(meat != no_response) + { + inv_type = (LLInventoryType::EType)atoi((*meat).second.c_str()); + item->setInventoryType(inv_type); + } + meat = (*it).find("data_id"); + if(meat == no_response) goto clean_item; + id.set((*meat).second); + if(LLAssetType::AT_CALLINGCARD == type) + { + LLPermissions perm; + perm.init(id, owner_id, LLUUID::null, LLUUID::null); + item->setPermissions(perm); + } + else { - LLPointer<LLViewerInventoryItem> item = new LLViewerInventoryItem; - item->rename(name.asString()); - item->setUUID(item_id.asUUID()); - item->setParent(parent_id.asUUID()); - LLAssetType::EType type = (LLAssetType::EType)asset_type.asInteger(); - item->setType(type); - - LLSD llsd_inv_type = (*it)["inv_type"]; - if(llsd_inv_type.isDefined()) - { - LLInventoryType::EType inv_type = (LLInventoryType::EType)llsd_inv_type.asInteger(); - item->setInventoryType(inv_type); - } - - if(LLAssetType::AT_CALLINGCARD == type) + meat = (*it).find("perm_mask"); + if(meat != no_response) { - LLPermissions perm; - perm.init(data_id.asUUID(), owner_id, LLUUID::null, LLUUID::null); - item->setPermissions(perm); + PermissionMask perm_mask = atoi((*meat).second.c_str()); + default_perm.initMasks( + perm_mask, perm_mask, perm_mask, perm_mask, perm_mask); } else { - LLPermissions default_perm; - default_perm.init(LLUUID::null, owner_id, LLUUID::null, LLUUID::null); - LLSD llsd_perm_mask = (*it)["perm_mask"]; - if(llsd_perm_mask.isDefined()) - { - PermissionMask perm_mask = llsd_perm_mask.asInteger(); - default_perm.initMasks( - perm_mask, perm_mask, perm_mask, perm_mask, perm_mask); - } - else - { - default_perm.initMasks( - PERM_NONE, PERM_NONE, PERM_NONE, PERM_NONE, PERM_NONE); - } - item->setPermissions(default_perm); - item->setAssetUUID(data_id.asUUID()); + default_perm.initMasks( + PERM_NONE, PERM_NONE, PERM_NONE, PERM_NONE, PERM_NONE); } - - LLSD flags = (*it)["flags"]; - if(flags.isDefined()) - { - // Not sure how well LLSD.asInteger() maps to - // unsigned long - using strtoul() - item->setFlags(strtoul(flags.asString().c_str(), NULL, 0)); - } - - LLSD time = (*it)["time"]; - if(time.isDefined()) - { - item->setCreationDate(time.asInteger()); - } - addItem(item); + item->setPermissions(default_perm); + item->setAssetUUID(id); } - else + meat = (*it).find("flags"); + if(meat != no_response) + { + item->setFlags(strtoul((*meat).second.c_str(), NULL, 0)); + } + meat = (*it).find("time"); + if(meat != no_response) { - llwarns << "Unable to import near " << name.asString() << llendl; - rv = false; + item->setCreationDate(atoi((*meat).second.c_str())); } + addItem(item); + continue; + clean_item: + llwarns << "Unable to import near " << item->getName() << llendl; + rv = false; + //delete item; // automatic when item is reassigned or destroyed } return rv; } @@ -3153,6 +3128,63 @@ void LLInventoryModel::processMoveInventoryItem(LLMessageSystem* msg, void**) } } +//---------------------------------------------------------------------------- + +// Trash: LLAssetType::AT_TRASH, "ConfirmEmptyTrash" +// Lost&Found: LLAssetType::AT_LOST_AND_FOUND, "ConfirmEmptyLostAndFound" + +bool LLInventoryModel::callbackEmptyFolderType(const LLSD& notification, const LLSD& response, LLAssetType::EType folder_type) +{ + S32 option = LLNotification::getSelectedOption(notification, response); + if (option == 0) // YES + { + LLUUID folder_id = findCategoryUUIDForType(folder_type); + purgeDescendentsOf(folder_id); + notifyObservers(); + } + return false; +} + +void LLInventoryModel::emptyFolderType(const std::string notification, LLAssetType::EType folder_type) +{ + if (!notification.empty()) + { + LLNotifications::instance().add(notification, LLSD(), LLSD(), + boost::bind(&LLInventoryModel::callbackEmptyFolderType, this, _1, _2, folder_type)); + } + else + { + LLUUID folder_id = findCategoryUUIDForType(folder_type); + purgeDescendentsOf(folder_id); + notifyObservers(); + } +} + +//---------------------------------------------------------------------------- + +void LLInventoryModel::removeItem(const LLUUID& item_id) +{ + LLViewerInventoryItem* item = getItem(item_id); + const LLUUID& new_parent = findCategoryUUIDForType(LLAssetType::AT_TRASH); + if (item && item->getParentUUID() != new_parent) + { + LLInventoryModel::update_list_t update; + LLInventoryModel::LLCategoryUpdate old_folder(item->getParentUUID(),-1); + update.push_back(old_folder); + LLInventoryModel::LLCategoryUpdate new_folder(new_parent, 1); + update.push_back(new_folder); + accountForUpdate(update); + + LLPointer<LLViewerInventoryItem> new_item = new LLViewerInventoryItem(item); + new_item->setParent(new_parent); + new_item->updateParentOnServer(TRUE); + updateItem(new_item); + notifyObservers(); + } +} + +//---------------------------------------------------------------------------- + // *NOTE: DEBUG functionality void LLInventoryModel::dumpInventory() { @@ -3200,7 +3232,7 @@ bool LLInventoryCollectFunctor::itemTransferCommonlyAllowed(LLInventoryItem* ite return false; bool allowed = false; - LLVOAvatar* my_avatar = NULL; + LLVOAvatarSelf* my_avatar = NULL; switch(item->getType()) { @@ -3218,7 +3250,7 @@ bool LLInventoryCollectFunctor::itemTransferCommonlyAllowed(LLInventoryItem* ite case LLAssetType::AT_BODYPART: case LLAssetType::AT_CLOTHING: - if(!gAgent.isWearingItem(item->getUUID())) + if(!gAgentWearables.isWearingItem(item->getUUID())) { allowed = true; } diff --git a/indra/newview/llinventorymodel.h b/indra/newview/llinventorymodel.h index fcb3cc737a3e355190a8bb372b65215030dd0251..0ba64d20e4a24f9273bf954c9aa506b768d5a5d7 100644 --- a/indra/newview/llinventorymodel.h +++ b/indra/newview/llinventorymodel.h @@ -363,7 +363,15 @@ class LLInventoryModel // returns true iff category version is known and theoretical // descendents == actual descendents. bool isCategoryComplete(const LLUUID& cat_id) const; + + // callbacks + // Trigger a notification and empty the folder type (AT_TRASH or AT_LOST_AND_FOUND) if confirmed + void emptyFolderType(const std::string notification, LLAssetType::EType folder_type); + bool callbackEmptyFolderType(const LLSD& notification, const LLSD& response, LLAssetType::EType folder_type); + // Utility Functions + void removeItem(const LLUUID& item_id); + // start and stop background breadth-first fetching of inventory contents // this gets triggered when performing a filter-search static void startBackgroundFetch(const LLUUID& cat_id = LLUUID::null); // start fetch process diff --git a/indra/newview/lljoystickbutton.cpp b/indra/newview/lljoystickbutton.cpp index 539d889c51146cfa93cc10ec43342155681aa6b3..8e6889a37942e23c2698949fbcaa9b6cddb1b221 100644 --- a/indra/newview/lljoystickbutton.cpp +++ b/indra/newview/lljoystickbutton.cpp @@ -49,11 +49,11 @@ #include "llglheaders.h" -static LLRegisterWidget<LLJoystickAgentSlide> r1("joystick_slide"); -static LLRegisterWidget<LLJoystickAgentTurn> r2("joystick_turn"); -static LLRegisterWidget<LLJoystickCameraRotate> r3("joystick_rotate"); -static LLRegisterWidget<LLJoystickCameraZoom> r4("joystick_zoom"); -static LLRegisterWidget<LLJoystickCameraTrack> r5("joystick_track"); +static LLDefaultWidgetRegistry::Register<LLJoystickAgentSlide> r1("joystick_slide"); +static LLDefaultWidgetRegistry::Register<LLJoystickAgentTurn> r2("joystick_turn"); +static LLDefaultWidgetRegistry::Register<LLJoystickCameraRotate> r3("joystick_rotate"); +static LLDefaultWidgetRegistry::Register<LLJoystickCameraZoom> r4("joystick_zoom"); +static LLDefaultWidgetRegistry::Register<LLJoystickCameraTrack> r5("joystick_track"); diff --git a/indra/newview/lllandmarklist.cpp b/indra/newview/lllandmarklist.cpp index 2f43b41042b3625c61c14e27600d6b364343279a..318344f9eff3c8a74a782b79bca64094c2a6520f 100644 --- a/indra/newview/lllandmarklist.cpp +++ b/indra/newview/lllandmarklist.cpp @@ -54,7 +54,7 @@ LLLandmarkList::~LLLandmarkList() std::for_each(mList.begin(), mList.end(), DeletePairedPointer()); } -LLLandmark* LLLandmarkList::getAsset( const LLUUID& asset_uuid ) +LLLandmark* LLLandmarkList::getAsset(const LLUUID& asset_uuid, loaded_callback_t cb) { LLLandmark* landmark = get_ptr_in_map(mList, asset_uuid); if(landmark) @@ -65,6 +65,12 @@ LLLandmark* LLLandmarkList::getAsset( const LLUUID& asset_uuid ) { if ( gLandmarkList.mBadList.find(asset_uuid) == gLandmarkList.mBadList.end() ) { + if (cb) + { + loaded_callback_map_t::value_type vt(asset_uuid, cb); + mLoadedCallbackMap.insert(vt); + } + gAssetStorage->getAssetData( asset_uuid, LLAssetType::AT_LANDMARK, @@ -96,6 +102,8 @@ void LLLandmarkList::processGetAssetReply( LLLandmark* landmark = LLLandmark::constructFromString(&buffer[0]); if (landmark) { + gLandmarkList.mList[ uuid ] = landmark; + LLVector3d pos; if(!landmark->getGlobalPos(pos)) { @@ -106,10 +114,15 @@ void LLLandmarkList::processGetAssetReply( gMessageSystem, gAgent.getRegionHost(), region_id, - NULL); + boost::bind(&LLLandmarkList::onRegionHandle, &gLandmarkList, uuid)); } + + // the callback will be called when we get the region handle. + } + else + { + gLandmarkList.makeCallbacks(uuid); } - gLandmarkList.mList[ uuid ] = landmark; } } else @@ -134,3 +147,45 @@ BOOL LLLandmarkList::assetExists(const LLUUID& asset_uuid) { return mList.count(asset_uuid) != 0 || mBadList.count(asset_uuid) != 0; } + +void LLLandmarkList::onRegionHandle(const LLUUID& landmark_id) +{ + LLLandmark* landmark = getAsset(landmark_id); + + if (!landmark) + { + llwarns << "Got region handle but the landmark not found." << llendl; + return; + } + + // Calculate landmark global position. + // This should succeed since the region handle is available. + LLVector3d pos; + if (!landmark->getGlobalPos(pos)) + { + llwarns << "Got region handle but the landmark global position is still unknown." << llendl; + return; + } + + makeCallbacks(landmark_id); +} + +void LLLandmarkList::makeCallbacks(const LLUUID& landmark_id) +{ + LLLandmark* landmark = getAsset(landmark_id); + + if (!landmark) + { + llwarns << "Landmark to make callbacks for not found." << llendl; + } + + // make all the callbacks here. + loaded_callback_map_t::iterator it; + while((it = mLoadedCallbackMap.find(landmark_id)) != mLoadedCallbackMap.end()) + { + if (landmark) + (*it).second(landmark); + + mLoadedCallbackMap.erase(it); + } +} diff --git a/indra/newview/lllandmarklist.h b/indra/newview/lllandmarklist.h index c41ba7a0f0d643f3315b693bc7c3cba7665aa35b..ebf1b65e9755569e80407565b68d56234b88d406 100644 --- a/indra/newview/lllandmarklist.h +++ b/indra/newview/lllandmarklist.h @@ -33,6 +33,7 @@ #ifndef LL_LLLANDMARKLIST_H #define LL_LLLANDMARKLIST_H +#include <boost/function.hpp> #include <map> #include "lllandmark.h" #include "lluuid.h" @@ -45,6 +46,8 @@ class LLInventoryItem; class LLLandmarkList { public: + typedef boost::function<void(LLLandmark*)> loaded_callback_t; + LLLandmarkList() {} ~LLLandmarkList(); @@ -53,7 +56,7 @@ class LLLandmarkList //const LLLandmark* getNext() { return mList.getNextData(); } BOOL assetExists(const LLUUID& asset_uuid); - LLLandmark* getAsset(const LLUUID& asset_uuid); + LLLandmark* getAsset(const LLUUID& asset_uuid, loaded_callback_t cb = NULL); static void processGetAssetReply( LLVFS *vfs, const LLUUID& uuid, @@ -63,11 +66,19 @@ class LLLandmarkList LLExtStat ext_status ); protected: + void onRegionHandle(const LLUUID& landmark_id); + void makeCallbacks(const LLUUID& landmark_id); + typedef std::map<LLUUID, LLLandmark*> landmark_list_t; landmark_list_t mList; typedef std::set<LLUUID> landmark_bad_list_t; landmark_bad_list_t mBadList; + + // *TODO: make the callback multimap a template class and make use of it + // here and in LLLandmark. + typedef std::multimap<LLUUID, loaded_callback_t> loaded_callback_map_t; + loaded_callback_map_t mLoadedCallbackMap; }; diff --git a/indra/newview/lllocationhistory.cpp b/indra/newview/lllocationhistory.cpp index ab3256a18680d0c521ee2800bc5cf6f565220573..179eca2532be1df235e6fbf1c8da3c4adf5ca6e8 100644 --- a/indra/newview/lllocationhistory.cpp +++ b/indra/newview/lllocationhistory.cpp @@ -36,6 +36,8 @@ #include <iomanip> // for std::setw() +#include "llui.h" + LLLocationHistory::LLLocationHistory() : mFilename("typed_locations.txt"), mLoadedCallback(NULL) @@ -44,11 +46,13 @@ LLLocationHistory::LLLocationHistory() : void LLLocationHistory::addItem(std::string item) { + static LLUICachedControl<S32> max_items("LocationHistoryMaxSize", 100); + mItems.push_back(item); // If the vector size exceeds the maximum, purge the oldest items. - if (mItems.size() > MAX_ITEMS) - mItems.erase(mItems.begin(), mItems.end()-MAX_ITEMS); + if ((S32)mItems.size() > max_items) + mItems.erase(mItems.begin(), mItems.end()-max_items); } diff --git a/indra/newview/lllocationhistory.h b/indra/newview/lllocationhistory.h index ea27d755fac1a34dc6d6c3ebb0c902f2cfc4f15c..d2a959ae626efbc7b30a88b2484f033680d9a7d1 100644 --- a/indra/newview/lllocationhistory.h +++ b/indra/newview/lllocationhistory.h @@ -60,7 +60,6 @@ class LLLocationHistory: public LLSingleton<LLLocationHistory> void dump() const; private: - static const size_t MAX_ITEMS = 10; std::vector<std::string> mItems; std::string mFilename; /// File to store the history to. loaded_callback_t mLoadedCallback; diff --git a/indra/newview/lllocationinputctrl.cpp b/indra/newview/lllocationinputctrl.cpp index 67bf2d7265b89ea5592bd826e0313e011bc4c596..fac0de0f337dea354467a4c80fad7bbd50beec7c 100644 --- a/indra/newview/lllocationinputctrl.cpp +++ b/indra/newview/lllocationinputctrl.cpp @@ -1,5 +1,5 @@ -/** - * @file lllocationinputmonitorctrl.cpp +/** + * @file lllocationinputctrl.cpp * @brief Combobox-like location input control * * $LicenseInfo:firstyear=2009&license=viewergpl$ @@ -36,1091 +36,482 @@ #include "lllocationinputctrl.h" // common includes -#include <llstring.h> -#include <llcombobox.h> - -// newview includes #include "llbutton.h" -#include "llkeyboard.h" -#include "llscrolllistctrl.h" -#include "llwindow.h" -#include "llfloater.h" -#include "llscrollbar.h" -#include "llscrolllistcell.h" -#include "llscrolllistitem.h" -#include "llcontrol.h" +#include "llfloaterreg.h" #include "llfocusmgr.h" -#include "lllineeditor.h" -#include "v2math.h" +#include "llkeyboard.h" +#include "llstring.h" #include "lluictrlfactory.h" +#include "v2math.h" -// Globals -static S32 MAX_COMBO_WIDTH = 500; - -static LLRegisterWidget<LLLocationInputCtrl> r("location_input"); - -LLLocationInputCtrl::LLLocationInputCtrl(const LLLocationInputCtrl::Params& p) -: LLUICtrl(p), - mTextEntry(NULL), - mTextEntryTentative(TRUE), - mListPosition(BELOW), - mAllowTextEntry(p.allow_text_entry), - mSelectOnFocus(p.select_on_focus), - mHasAutocompletedText(false), - mMaxChars(p.max_chars), - mPrearrangeCallback(p.prearrange_callback()), - mTextEntryCallback(p.text_entry_callback()), - mSelectionCallback(p.selection_callback()), - mArrowImage(p.arrow_image) -{ - // Text label button - - LLButton::Params button_params; - button_params.name(p.label); - button_params.image_unselected.name("square_btn_32x128.tga"); - button_params.image_selected.name("square_btn_selected_32x128.tga"); - button_params.image_disabled.name("square_btn_32x128.tga"); - button_params.image_disabled_selected.name("square_btn_selected_32x128.tga"); - button_params.image_overlay.name("combobox_arrow.tga"); - button_params.image_overlay_alignment("right"); - button_params.scale_image(true); - button_params.mouse_down_callback.function(boost::bind(&LLLocationInputCtrl::onButtonDown, this)); - button_params.font(LLFontGL::getFontSansSerifSmall()); - button_params.follows.flags(FOLLOWS_LEFT|FOLLOWS_BOTTOM|FOLLOWS_RIGHT); - button_params.font_halign(LLFontGL::LEFT); - button_params.rect(p.rect); - button_params.pad_right(2); - - mButton = LLUICtrlFactory::create<LLButton>(button_params); - mButton->setRightHPad(2); //redo to compensate for button hack that leaves space for a character - addChild(mButton); - - LLScrollListCtrl::Params params; - params.name ("LocationInput"); - params.commit_callback.function(boost::bind(&LLLocationInputCtrl::onItemSelected, this, _2)); - params.visible(false); - params.bg_writeable_color(LLColor4::white); - params.commit_on_keyboard_movement(false); - - mList = LLUICtrlFactory::create<LLScrollListCtrl>(params); - addChild(mList); - - for (LLInitParam::ParamIterator<LLScrollListItem::Params>::const_iterator it = p.items().begin(); - it != p.items().end(); - ++it) - { - mList->addRow(*it); - } - - setTopLostCallback(boost::bind(&LLLocationInputCtrl::hideList, this)); -} - -LLLocationInputCtrl::~LLLocationInputCtrl() -{ - // children automatically deleted, including mMenu, mButton -} - -void LLLocationInputCtrl::setEnabled(BOOL enabled) -{ - LLView::setEnabled(enabled); - mButton->setEnabled(enabled); -} - -void LLLocationInputCtrl::clear() -{ - if (mTextEntry) - { - mTextEntry->setText(LLStringUtil::null); - } - mButton->setLabelSelected(LLStringUtil::null); - mButton->setLabelUnselected(LLStringUtil::null); - mButton->setDisabledLabel(LLStringUtil::null); - mButton->setDisabledSelectedLabel(LLStringUtil::null); - mList->deselectAllItems(); -} - -void LLLocationInputCtrl::onCommit() -{ - if (mAllowTextEntry && getCurrentIndex() != -1) - { - // we have selected an existing item, blitz the manual text entry with - // the properly capitalized item - mTextEntry->setValue(getSimple()); - mTextEntry->setTentative(FALSE); - } - LLUICtrl::onCommit(); -} - -// virtual -BOOL LLLocationInputCtrl::isDirty() const -{ - BOOL grubby = FALSE; - if ( mList ) - { - grubby = mList->isDirty(); - } - return grubby; -} - -// virtual Clear dirty state -void LLLocationInputCtrl::resetDirty() -{ - if ( mList ) - { - mList->resetDirty(); - } -} +// newview includes +#include "llagent.h" +#include "llfloaterland.h" +#include "llinventorymodel.h" +#include "lllandmarklist.h" +#include "lllocationhistory.h" +#include "llpanelplaces.h" +#include "llsidetray.h" +#include "llviewerinventory.h" +#include "llviewerparcelmgr.h" +//============================================================================ +/* + * "ADD LANDMARK" BUTTON UPDATING LOGIC + * + * If the current parcel has been landmarked, we should draw + * a special image on the button. + * + * To avoid determining the appropriate image on every draw() we do that + * only in the following cases: + * 1) Navbar is shown for the first time after login. + * 2) Agent moves to another parcel. + * 3) A landmark is created or removed. + * + * The first case is handled by the handleLoginComplete() method. + * + * The second case is handled by setting the "agent parcel changed" callback + * on LLViewerParcelMgr. + * + * The third case is the most complex one. We have two inventory observers for that: + * one is designated to handle adding landmarks, the other handles removal. + * Let's see how the former works. + * + * When we get notified about landmark addition, the landmark position is unknown yet. What we can + * do at that point is initiate loading the landmark data by LLLandmarkList and set the + * "loading finished" callback on it. Finally, when the callback is triggered, + * we can determine whether the landmark refers to a point within the current parcel + * and choose the appropriate image for the "Add landmark" button. + */ -// add item "name" to menu -LLScrollListItem* LLLocationInputCtrl::add(const std::string& name, EAddPosition pos, BOOL enabled) +// Returns true if the given inventory item is a landmark pointing to the current parcel. +// Used to filter inventory items. +class LLIsAgentParcelLandmark : public LLInventoryCollectFunctor { - LLScrollListItem* item = mList->addSimpleElement(name, pos); - item->setEnabled(enabled); - if (!mAllowTextEntry && mLabel.empty()) +public: + /*virtual*/ bool operator()(LLInventoryCategory* cat, LLInventoryItem* item) { - selectFirstItem(); - } - return item; -} + if (!item || item->getType() != LLAssetType::AT_LANDMARK) + return false; -// add item "name" with a unique id to menu -LLScrollListItem* LLLocationInputCtrl::add(const std::string& name, const LLUUID& id, EAddPosition pos, BOOL enabled ) -{ - LLScrollListItem* item = mList->addSimpleElement(name, pos, id); - item->setEnabled(enabled); - if (!mAllowTextEntry && mLabel.empty()) - { - selectFirstItem(); - } - return item; -} + LLLandmark* landmark = gLandmarkList.getAsset(item->getAssetUUID()); + if (!landmark) // the landmark not been loaded yet + return false; -// add item "name" with attached userdata -LLScrollListItem* LLLocationInputCtrl::add(const std::string& name, void* userdata, EAddPosition pos, BOOL enabled ) -{ - LLScrollListItem* item = mList->addSimpleElement(name, pos); - item->setEnabled(enabled); - item->setUserdata( userdata ); - if (!mAllowTextEntry && mLabel.empty()) - { - selectFirstItem(); - } - return item; -} + LLVector3d landmark_global_pos; + if (!landmark->getGlobalPos(landmark_global_pos)) + return false; -// add item "name" with attached generic data -LLScrollListItem* LLLocationInputCtrl::add(const std::string& name, LLSD value, EAddPosition pos, BOOL enabled ) -{ - LLScrollListItem* item = mList->addSimpleElement(name, pos, value); - item->setEnabled(enabled); - if (!mAllowTextEntry && mLabel.empty()) - { - selectFirstItem(); + return LLViewerParcelMgr::getInstance()->inAgentParcel(landmark_global_pos); } - return item; -} +}; -LLScrollListItem* LLLocationInputCtrl::addSeparator(EAddPosition pos) -{ - return mList->addSeparator(pos); -} - -void LLLocationInputCtrl::sortByName(BOOL ascending) -{ - mList->sortOnce(0, ascending); -} - - -// Choose an item with a given name in the menu. -// Returns TRUE if the item was found. -BOOL LLLocationInputCtrl::setSimple(const LLStringExplicit& name) +/** + * Initiates loading the landmarks that have been just added. + * + * Once the loading is complete we'll be notified + * with the callback we set for LLLandmarkList. + */ +class LLAddLandmarkObserver : public LLInventoryAddedObserver { - BOOL found = mList->selectItemByLabel(name, FALSE); - - if (found) - { - setLabel(name); - } +public: + LLAddLandmarkObserver(LLLocationInputCtrl* input) : mInput(input) {} - return found; -} - -// virtual -void LLLocationInputCtrl::setValue(const LLSD& value) -{ - BOOL found = mList->selectByValue(value); - if (found) +private: + /*virtual*/ void done() { - LLScrollListItem* item = mList->getFirstSelected(); - if (item) + std::vector<LLUUID>::const_iterator it = mAdded.begin(), end = mAdded.end(); + for(; it != end; ++it) { - setLabel( mList->getSelectedItemLabel() ); + LLInventoryItem* item = gInventory.getItem(*it); + if (!item || item->getType() != LLAssetType::AT_LANDMARK) + continue; + + // Start loading the landmark. + LLLandmark* lm = gLandmarkList.getAsset( + item->getAssetUUID(), + boost::bind(&LLLocationInputCtrl::onLandmarkLoaded, mInput, _1)); + if (lm) + { + // Already loaded? Great, handle it immediately (the callback won't be called). + mInput->onLandmarkLoaded(lm); + } } - } -} -const std::string LLLocationInputCtrl::getSimple() const -{ - const std::string res = mList->getSelectedItemLabel(); - if (res.empty() && mAllowTextEntry) - { - return mTextEntry->getText(); - } - else - { - return res; + mAdded.clear(); } -} -const std::string LLLocationInputCtrl::getSelectedItemLabel(S32 column) const -{ - return mList->getSelectedItemLabel(column); -} + LLLocationInputCtrl* mInput; +}; -// virtual -LLSD LLLocationInputCtrl::getValue() const +/** + * Updates the "Add landmark" button once a landmark gets removed. + */ +class LLRemoveLandmarkObserver : public LLInventoryObserver { - LLScrollListItem* item = mList->getFirstSelected(); - if( item ) - { - return item->getValue(); - } - else if (mAllowTextEntry) - { - return mTextEntry->getValue(); - } - else - { - return LLSD(); - } -} +public: + LLRemoveLandmarkObserver(LLLocationInputCtrl* input) : mInput(input) {} -void LLLocationInputCtrl::setLabel(const LLStringExplicit& name) -{ - if ( mTextEntry ) +private: + /*virtual*/ void changed(U32 mask) { - mTextEntry->setText(name); - if (mList->selectItemByLabel(name, FALSE)) + if (mask & (~(LLInventoryObserver::LABEL|LLInventoryObserver::INTERNAL|LLInventoryObserver::ADD))) { - mTextEntry->setTentative(FALSE); - } - else - { - mTextEntry->setTentative(mTextEntryTentative); + mInput->updateAddLandmarkButton(); } } - - if (!mAllowTextEntry) - { - mButton->setLabelUnselected(name); - mButton->setLabelSelected(name); - mButton->setDisabledLabel(name); - mButton->setDisabledSelectedLabel(name); - } -} + LLLocationInputCtrl* mInput; +}; -BOOL LLLocationInputCtrl::remove(const std::string& name) -{ - BOOL found = mList->selectItemByLabel(name); - - if (found) - { - LLScrollListItem* item = mList->getFirstSelected(); - if (item) - { - mList->deleteSingleItem(mList->getItemIndex(item)); - } - } +//============================================================================ - return found; -} -BOOL LLLocationInputCtrl::remove(S32 index) -{ - if (index < mList->getItemCount()) - { - mList->deleteSingleItem(index); - return TRUE; - } - return FALSE; -} +static LLDefaultWidgetRegistry::Register<LLLocationInputCtrl> r("location_input"); -// Keyboard focus lost. -void LLLocationInputCtrl::onFocusLost() +LLLocationInputCtrl::Params::Params() +: add_landmark_image_enabled("add_landmark_image_enabled"), + add_landmark_image_disabled("add_landmark_image_disabled"), + add_landmark_button("add_landmark_button"), + add_landmark_hpad("add_landmark_hpad", 0), + info_button("info_button"), + background("background") { - hideList(); - // if valid selection - if (mAllowTextEntry && getCurrentIndex() != -1) - { - mTextEntry->selectAll(); - } - LLUICtrl::onFocusLost(); } -void LLLocationInputCtrl::setButtonVisible(BOOL visible) -{ - static LLUICachedControl<S32> drop_shadow_button ("DropShadowButton", 0); - - mButton->setVisible(visible); - if (mTextEntry) +LLLocationInputCtrl::LLLocationInputCtrl(const LLLocationInputCtrl::Params& p) +: LLComboBox(p), + mAddLandmarkHPad(p.add_landmark_hpad), + mInfoBtn(NULL), + mAddLandmarkBtn(NULL) +{ + // Background image. + LLButton::Params bg_params = p.background; + mBackground = LLUICtrlFactory::create<LLButton>(bg_params); + addChildInBack(mBackground); + + // "Place information" button. + LLButton::Params info_params = p.info_button; + mInfoBtn = LLUICtrlFactory::create<LLButton>(info_params); + mInfoBtn->setClickedCallback(boost::bind(&LLLocationInputCtrl::onInfoButtonClicked, this)); + addChild(mInfoBtn); + + // "Add landmark" button. + LLButton::Params al_params = p.add_landmark_button; + if (p.add_landmark_image_enabled()) { - LLRect text_entry_rect(0, getRect().getHeight(), getRect().getWidth(), 0); - if (visible) - { - text_entry_rect.mRight -= llmax(8,mArrowImage->getWidth()) + 2 * drop_shadow_button; - } - //mTextEntry->setRect(text_entry_rect); - mTextEntry->reshape(text_entry_rect.getWidth(), text_entry_rect.getHeight(), TRUE); + al_params.image_unselected = p.add_landmark_image_enabled; + al_params.image_selected = p.add_landmark_image_enabled; } -} - -/*virtual*/ -BOOL LLLocationInputCtrl::postBuild() -{ - // If providing user text entry or descriptive label don't select an item under the hood - if (!acceptsTextInput() && mLabel.empty()) + if (p.add_landmark_image_disabled()) { - selectFirstItem(); + al_params.image_disabled = p.add_landmark_image_disabled; + al_params.image_disabled_selected = p.add_landmark_image_disabled; } - updateLayout(); - return TRUE; -} + al_params.click_callback.function(boost::bind(&LLLocationInputCtrl::onAddLandmarkButtonClicked, this)); + mAddLandmarkBtn = LLUICtrlFactory::create<LLButton>(al_params); + enableAddLandmarkButton(true); + addChild(mAddLandmarkBtn); + + setFocusReceivedCallback(boost::bind(&LLLocationInputCtrl::onFocusReceived, this)); + setFocusLostCallback(boost::bind(&LLLocationInputCtrl::onFocusLost, this)); + setPrearrangeCallback(boost::bind(&LLLocationInputCtrl::onLocationPrearrange, this, _2)); -void LLLocationInputCtrl::draw() -{ - mButton->setEnabled(getEnabled() /*&& !mList->isEmpty()*/); + updateWidgetlayout(); - // Draw children normally - LLUICtrl::draw(); -} + // - Make the "Add landmark" button updated when either current parcel gets changed + // or a landmark gets created or removed from the inventory. + // - Update the location string on parcel change. + LLViewerParcelMgr::getInstance()->setAgentParcelChangedCallback( + boost::bind(&LLLocationInputCtrl::onAgentParcelChange, this)); -BOOL LLLocationInputCtrl::setCurrentByIndex( S32 index ) -{ - BOOL found = mList->selectNthItem( index ); - if (found) - { - setLabel(mList->getSelectedItemLabel()); - } - return found; -} + LLLocationHistory::getInstance()->setLoadedCallback( + boost::bind(&LLLocationInputCtrl::onLocationHistoryLoaded, this)); -S32 LLLocationInputCtrl::getCurrentIndex() const -{ - LLScrollListItem* item = mList->getFirstSelected(); - if( item ) - { - return mList->getItemIndex( item ); - } - return -1; + mRemoveLandmarkObserver = new LLRemoveLandmarkObserver(this); + mAddLandmarkObserver = new LLAddLandmarkObserver(this); + gInventory.addObserver(mRemoveLandmarkObserver); + gInventory.addObserver(mAddLandmarkObserver); } - -void LLLocationInputCtrl::updateLayout() +LLLocationInputCtrl::~LLLocationInputCtrl() { - static LLUICachedControl<S32> drop_shadow_button ("DropShadowButton", 0); - LLRect rect = getLocalRect(); - if (mAllowTextEntry) - { - S32 shadow_size = drop_shadow_button; - mButton->setRect(LLRect( getRect().getWidth() - llmax(8,mArrowImage->getWidth()) - 2 * shadow_size, - rect.mTop, rect.mRight, rect.mBottom)); - mButton->setTabStop(FALSE); - mButton->setHAlign(LLFontGL::HCENTER); - - if (!mTextEntry) - { - LLRect text_entry_rect(0, getRect().getHeight(), getRect().getWidth(), 0); - text_entry_rect.mRight -= llmax(8,mArrowImage->getWidth()) + 2 * drop_shadow_button; - // clear label on button - std::string cur_label = mButton->getLabelSelected(); - LLLineEditor::Params params; - params.name ("combo_text_entry"); - params.rect (text_entry_rect); - params.default_text (LLStringUtil::null); - params.font (LLFontGL::getFontSansSerifSmall()); - params.max_length_bytes (mMaxChars); - params.commit_callback.function(boost::bind(&LLLocationInputCtrl::onTextCommit, this, _2)); - params.keystroke_callback (boost::bind(&LLLocationInputCtrl::onTextEntry, this, _1)); - params.focus_lost_callback (NULL); - params.select_on_focus (mSelectOnFocus); - params.handle_edit_keys_directly (true); - params.commit_on_focus_lost (false); - params.follows.flags (FOLLOWS_ALL); - mTextEntry = LLUICtrlFactory::create<LLLineEditor> (params); - mTextEntry->setText(cur_label); - mTextEntry->setIgnoreTab(TRUE); - mTextEntry->setRevertOnEsc(FALSE); - //mTextEntry->setFocusReceivedCallback(boost::bind(&LLLocationInputCtrl::hideList, this)); - addChild(mTextEntry); - } - else - { - mTextEntry->setVisible(TRUE); - mTextEntry->setMaxTextLength(mMaxChars); - } - - // clear label on button - setLabel(LLStringUtil::null); - - mButton->setFollows(FOLLOWS_BOTTOM | FOLLOWS_TOP | FOLLOWS_RIGHT); - } - else if (!mAllowTextEntry) - { - mButton->setRect(rect); - mButton->setTabStop(TRUE); - mButton->setHAlign(LLFontGL::LEFT); - - if (mTextEntry) - { - mTextEntry->setVisible(FALSE); - } - mButton->setFollowsAll(); - } + gInventory.removeObserver(mRemoveLandmarkObserver); + gInventory.removeObserver(mAddLandmarkObserver); + delete mRemoveLandmarkObserver; + delete mAddLandmarkObserver; } -void* LLLocationInputCtrl::getCurrentUserdata() +void LLLocationInputCtrl::setEnabled(BOOL enabled) { - LLScrollListItem* item = mList->getFirstSelected(); - if( item ) - { - return item->getUserdata(); - } - return NULL; + LLComboBox::setEnabled(enabled); + mAddLandmarkBtn->setEnabled(enabled); } - -void LLLocationInputCtrl::showList() +void LLLocationInputCtrl::hideList() { - // Make sure we don't go off top of screen. - LLCoordWindow window_size; - getWindow()->getSize(&window_size); - //HACK: shouldn't have to know about scale here - mList->fitContents( 192, llfloor((F32)window_size.mY / LLUI::sGLScaleFactor.mV[VY]) - 50 ); - - // Make sure that we can see the whole list - LLRect root_view_local; - LLView* root_view = getRootView(); - root_view->localRectToOtherView(root_view->getLocalRect(), &root_view_local, this); - - LLRect rect = mList->getRect(); - - S32 min_width = getRect().getWidth(); - S32 max_width = llmax(min_width, MAX_COMBO_WIDTH); - // make sure we have up to date content width metrics - mList->calcColumnWidths(); - S32 list_width = llclamp(mList->getMaxContentWidth(), min_width, max_width); - - if (mListPosition == BELOW) - { - if (rect.getHeight() <= -root_view_local.mBottom) - { - // Move rect so it hangs off the bottom of this view - rect.setLeftTopAndSize(0, 0, list_width, rect.getHeight() ); - } - else - { - // stack on top or bottom, depending on which has more room - if (-root_view_local.mBottom > root_view_local.mTop - getRect().getHeight()) - { - // Move rect so it hangs off the bottom of this view - rect.setLeftTopAndSize(0, 0, list_width, llmin(-root_view_local.mBottom, rect.getHeight())); - } - else - { - // move rect so it stacks on top of this view (clipped to size of screen) - rect.setOriginAndSize(0, getRect().getHeight(), list_width, llmin(root_view_local.mTop - getRect().getHeight(), rect.getHeight())); - } - } - } - else // ABOVE - { - if (rect.getHeight() <= root_view_local.mTop - getRect().getHeight()) - { - // move rect so it stacks on top of this view (clipped to size of screen) - rect.setOriginAndSize(0, getRect().getHeight(), list_width, llmin(root_view_local.mTop - getRect().getHeight(), rect.getHeight())); - } - else - { - // stack on top or bottom, depending on which has more room - if (-root_view_local.mBottom > root_view_local.mTop - getRect().getHeight()) - { - // Move rect so it hangs off the bottom of this view - rect.setLeftTopAndSize(0, 0, list_width, llmin(-root_view_local.mBottom, rect.getHeight())); - } - else - { - // move rect so it stacks on top of this view (clipped to size of screen) - rect.setOriginAndSize(0, getRect().getHeight(), list_width, llmin(root_view_local.mTop - getRect().getHeight(), rect.getHeight())); - } - } - - } - mList->setOrigin(rect.mLeft, rect.mBottom); - mList->reshape(rect.getWidth(), rect.getHeight()); - mList->translateIntoRect(root_view_local, FALSE); - - // Make sure we didn't go off bottom of screen - S32 x, y; - mList->localPointToScreen(0, 0, &x, &y); - - if (y < 0) - { - mList->translate(0, -y); - } - - // NB: this call will trigger the focuslost callback which will hide the list, so do it first - // before finally showing the list - - mList->setFocus(TRUE); - - // register ourselves as a "top" control - // effectively putting us into a special draw layer - // and not affecting the bounding rectangle calculation - gFocusMgr.setTopCtrl(this); - - // Show the list and push the button down - mButton->setToggleState(TRUE); - mList->setVisible(TRUE); - - setUseBoundingRect(TRUE); + LLComboBox::hideList(); + if (mTextEntry && hasFocus()) + focusTextEntry(); } -void LLLocationInputCtrl::hideList() +BOOL LLLocationInputCtrl::handleToolTip(S32 x, S32 y, std::string& msg, LLRect* sticky_rect_screen) { - //*HACK: store the original value explicitly somewhere, not just in label - std::string orig_selection = mAllowTextEntry ? mTextEntry->getText() : mButton->getLabelSelected(); - - // assert selection in list - mList->selectItemByLabel(orig_selection, FALSE); - - mButton->setToggleState(FALSE); - mList->setVisible(FALSE); - mList->mouseOverHighlightNthItem(-1); - - setUseBoundingRect(FALSE); - - if( gFocusMgr.getTopCtrl() == this ) + // Let the buttons show their tooltips. + if (LLUICtrl::handleToolTip(x, y, msg, sticky_rect_screen) && !msg.empty()) { - gFocusMgr.setTopCtrl(NULL); + return TRUE; } -} -void LLLocationInputCtrl::onButtonDown() -{ - if (!mList->getVisible()) + // Cursor is above the text entry. + msg = LLUI::sShowXUINames ? getShowNamesToolTip() : gAgent.getSLURL(); + if (mTextEntry && sticky_rect_screen) { -#if 0 // XXX VS - LLScrollListItem* last_selected_item = mList->getLastSelectedItem(); - if (last_selected_item) - { - // highlight the original selection before potentially selecting a new item - mList->mouseOverHighlightNthItem(mList->getItemIndex(last_selected_item)); - } -#endif - - prearrangeList(); - - if (mList->getItemCount() != 0) - { - showList(); - } - - setFocus( TRUE ); - - // pass mouse capture on to list if button is depressed - if (mButton->hasMouseCapture()) - { - gFocusMgr.setMouseCapture(mList); - } + *sticky_rect_screen = mTextEntry->calcScreenRect(); } - else - { - hideList(); - // XXX VS - mTextEntry->setFocus(TRUE); - } + return TRUE; } - -//------------------------------------------------------------------ -// static functions -//------------------------------------------------------------------ - -void LLLocationInputCtrl::onItemSelected(const LLSD& data) +BOOL LLLocationInputCtrl::handleKeyHere(KEY key, MASK mask) { - const std::string name = mList->getSelectedItemLabel(); + BOOL result = LLComboBox::handleKeyHere(key, mask); - S32 cur_id = getCurrentIndex(); - if (cur_id != -1) + if (key == KEY_DOWN && hasFocus() && mList->getItemCount() != 0) { - setLabel(name); - - if (mAllowTextEntry) - { - gFocusMgr.setKeyboardFocus(mTextEntry); - mTextEntry->selectAll(); - } + showList(); } - // hiding the list reasserts the old value stored in the text editor/dropdown button - hideList(); - - // commit does the reverse, asserting the value in the list - onCommit(); - - // call the callback if it exists - if(mSelectionCallback) - { - mSelectionCallback(this, data); - } + return result; } -BOOL LLLocationInputCtrl::handleToolTip(S32 x, S32 y, std::string& msg, LLRect* sticky_rect_screen) +void LLLocationInputCtrl::onTextEntry(LLLineEditor* line_editor) { - std::string tool_tip; + KEY key = gKeyboard->currentKey(); - if(LLUICtrl::handleToolTip(x, y, msg, sticky_rect_screen)) - { - return TRUE; - } - - if (LLUI::sShowXUINames) - { - tool_tip = getShowNamesToolTip(); - } - else + if (line_editor->getText().empty()) { - tool_tip = getToolTip(); - if (tool_tip.empty()) - { - tool_tip = getSelectedItemLabel(); - } - } - - if( !tool_tip.empty() ) - { - msg = tool_tip; - - // Convert rect local to screen coordinates - localPointToScreen( - 0, 0, - &(sticky_rect_screen->mLeft), &(sticky_rect_screen->mBottom) ); - localPointToScreen( - getRect().getWidth(), getRect().getHeight(), - &(sticky_rect_screen->mRight), &(sticky_rect_screen->mTop) ); + prearrangeList(); // resets filter + hideList(); } - return TRUE; -} - -BOOL LLLocationInputCtrl::handleKeyHere(KEY key, MASK mask) -{ - BOOL result = FALSE; - if (hasFocus()) + // Typing? (moving cursor should not affect showing the list) + else if (key != KEY_LEFT && key != KEY_RIGHT && key != KEY_HOME && key != KEY_END) { - if (mList->getVisible() - && key == KEY_ESCAPE && mask == MASK_NONE) - { - hideList(); - // XXX VS - mTextEntry->setFocus(TRUE); - return TRUE; - } - //give list a chance to pop up and handle key - LLScrollListItem* last_selected_item = mList->getLastSelectedItem(); - if (last_selected_item) - { - // highlight the original selection before potentially selecting a new item - mList->mouseOverHighlightNthItem(mList->getItemIndex(last_selected_item)); - } - result = mList->handleKeyHere(key, mask); - - // will only see return key if it is originating from line editor - // since the dropdown button eats the key - if (key == KEY_RETURN) - { - // don't show list and don't eat key input when committing - // free-form text entry with RETURN since user already knows - // what they are trying to select - return FALSE; - } - // if selection has changed, pop open list - // XXX VS -#if 1 - else if(key == KEY_DOWN && mList->getItemCount() != 0) -#else - else if (mList->getLastSelectedItem() != last_selected_item) -#endif + prearrangeList(line_editor->getText()); + if (mList->getItemCount() != 0) { showList(); + focusTextEntry(); } - - } - return result; -} - -BOOL LLLocationInputCtrl::handleUnicodeCharHere(llwchar uni_char) -{ - BOOL result = FALSE; - if (gFocusMgr.childHasKeyboardFocus(this)) - { - // space bar just shows the list - if (' ' != uni_char ) + else { - LLScrollListItem* last_selected_item = mList->getLastSelectedItem(); - if (last_selected_item) - { - // highlight the original selection before potentially selecting a new item - mList->mouseOverHighlightNthItem(mList->getItemIndex(last_selected_item)); - } - result = mList->handleUnicodeCharHere(uni_char); - if (mList->getLastSelectedItem() != last_selected_item) - { - showList(); - } + // Hide the list if it's empty. + hideList(); } } - return result; -} - -void LLLocationInputCtrl::setTextEntry(const LLStringExplicit& text) -{ - if (mTextEntry) - { - setText(text); - updateSelection(); - } + + LLComboBox::onTextEntry(line_editor); } /** * Useful if we want to just set the text entry value, no matter what the list contains. - * + * * This is faster than setTextEntry(). */ void LLLocationInputCtrl::setText(const LLStringExplicit& text) { if (mTextEntry) - mTextEntry->setText(text); -} - -void LLLocationInputCtrl::onTextEntry(LLLineEditor* line_editor) -{ - if (mTextEntryCallback != NULL) - { - (mTextEntryCallback)(line_editor, LLSD()); - } - - KEY key = gKeyboard->currentKey(); - - // XXX VS - { - if (line_editor->getText().empty()) - { - prearrangeList(); // resets filter - hideList(); - } - // Moving cursor should not affect showing the list. - else if (key != KEY_LEFT && key != KEY_RIGHT && key != KEY_HOME && key != KEY_END) - { - prearrangeList(line_editor->getText()); - if (mList->getItemCount() != 0) - { - showList(); - } - else - { - // Hide the list if it's empty. - hideList(); - } - - mTextEntry->setFocus(TRUE); - } - } - - if (key == KEY_BACKSPACE || - key == KEY_DELETE) - { - if (mList->selectItemByLabel(line_editor->getText(), FALSE)) - { - line_editor->setTentative(FALSE); - } - else - { - line_editor->setTentative(mTextEntryTentative); - mList->deselectAllItems(); - } - return; - } - - if (key == KEY_LEFT || - key == KEY_RIGHT) - { - return; - } - - if (key == KEY_DOWN) { - setCurrentByIndex(llmin(getItemCount() - 1, getCurrentIndex() + 1)); - if (!mList->getVisible()) - { - prearrangeList(); - - if (mList->getItemCount() != 0) - { - showList(); - } - } - line_editor->selectAll(); - line_editor->setTentative(FALSE); - } - else - { - // RN: presumably text entry - updateSelection(); + mTextEntry->setText(text); + mHasAutocompletedText = FALSE; } } -void LLLocationInputCtrl::updateSelection() +void LLLocationInputCtrl::setFocus(BOOL b) { - LLWString left_wstring = mTextEntry->getWText().substr(0, mTextEntry->getCursor()); - // user-entered portion of string, based on assumption that any selected - // text was a result of auto-completion - LLWString user_wstring = mHasAutocompletedText ? left_wstring : mTextEntry->getWText(); - std::string full_string = mTextEntry->getText(); - - // go ahead and arrange drop down list on first typed character, even - // though we aren't showing it... some code relies on prearrange - // callback to populate content - if( mTextEntry->getWText().size() == 1 ) - { - prearrangeList(mTextEntry->getText()); - } + LLComboBox::setFocus(b); - if (mList->selectItemByLabel(full_string, FALSE)) - { - mTextEntry->setTentative(FALSE); - } - else if (mList->selectItemByPrefix(left_wstring, FALSE)) - { - LLWString selected_item = utf8str_to_wstring(mList->getSelectedItemLabel()); - LLWString wtext = left_wstring + selected_item.substr(left_wstring.size(), selected_item.size()); - mTextEntry->setText(wstring_to_utf8str(wtext)); - mTextEntry->setSelection(left_wstring.size(), mTextEntry->getWText().size()); - mTextEntry->endSelection(); - mTextEntry->setTentative(FALSE); - mHasAutocompletedText = TRUE; - } - else // no matching items found - { - mList->deselectAllItems(); - mTextEntry->setText(wstring_to_utf8str(user_wstring)); // removes text added by autocompletion - mTextEntry->setTentative(mTextEntryTentative); - mHasAutocompletedText = FALSE; - } + if (mTextEntry && b && !mList->getVisible()) + mTextEntry->setFocus(TRUE); } -void LLLocationInputCtrl::onTextCommit(const LLSD& data) +void LLLocationInputCtrl::handleLoginComplete() { - std::string text = mTextEntry->getText(); - setSimple(text); - onCommit(); - mTextEntry->selectAll(); + // An agent parcel update hasn't occurred yet, so we have to + // manually set location and the appropriate "Add landmark" icon. + refresh(); } -void LLLocationInputCtrl::setFocus(BOOL b) -{ - LLUICtrl::setFocus(b); +//== private methods ========================================================= - if (b) - { - mList->clearSearchString(); - if (mList->getVisible()) - { - mList->setFocus(TRUE); - } - else - { - mTextEntry->setFocus(TRUE); - } - } +void LLLocationInputCtrl::onFocusReceived() +{ + prearrangeList(); + setText(gAgent.getSLURL()); + if (mTextEntry) + mTextEntry->endSelection(); // we don't want handleMouseUp() to "finish" the selection } -//============================================================================ -// LLCtrlListInterface functions - -S32 LLLocationInputCtrl::getItemCount() const +void LLLocationInputCtrl::onFocusLost() { - return mList->getItemCount(); + refreshLocation(); } -void LLLocationInputCtrl::addColumn(const LLSD& column, EAddPosition pos) +void LLLocationInputCtrl::onInfoButtonClicked() { - mList->clearColumns(); - mList->addColumn(column, pos); + LLSD key; + key["type"] = LLPanelPlaces::AGENT; + + LLSideTray::getInstance()->showPanel("panel_places", key); } -void LLLocationInputCtrl::clearColumns() +void LLLocationInputCtrl::onAddLandmarkButtonClicked() { - mList->clearColumns(); + LLFloaterReg::showInstance("add_landmark"); } -void LLLocationInputCtrl::setColumnLabel(const std::string& column, const std::string& label) +void LLLocationInputCtrl::onAgentParcelChange() { - mList->setColumnLabel(column, label); + refresh(); } -LLScrollListItem* LLLocationInputCtrl::addElement(const LLSD& value, EAddPosition pos, void* userdata) +void LLLocationInputCtrl::onLandmarkLoaded(LLLandmark* lm) { - return mList->addElement(value, pos, userdata); + (void) lm; + updateAddLandmarkButton(); } -LLScrollListItem* LLLocationInputCtrl::addSimpleElement(const std::string& value, EAddPosition pos, const LLSD& id) +void LLLocationInputCtrl::onLocationHistoryLoaded() { - return mList->addSimpleElement(value, pos, id); + rebuildLocationHistory(); } -void LLLocationInputCtrl::clearRows() +void LLLocationInputCtrl::onLocationPrearrange(const LLSD& data) { - mList->clearRows(); + std::string filter = data.asString(); + rebuildLocationHistory(filter); + mList->mouseOverHighlightNthItem(-1); // Clear highlight on the last selected item. } -void LLLocationInputCtrl::sortByColumn(const std::string& name, BOOL ascending) +void LLLocationInputCtrl::refresh() { - mList->sortByColumn(name, ascending); + refreshLocation(); // update location string + updateAddLandmarkButton(); // indicate whether current parcel has been landmarked } -//============================================================================ -//LLCtrlSelectionInterface functions - -BOOL LLLocationInputCtrl::setCurrentByID(const LLUUID& id) +void LLLocationInputCtrl::refreshLocation() { - BOOL found = mList->selectByID( id ); + // Is one of our children focused? + if (LLUICtrl::hasFocus() || mButton->hasFocus() || mList->hasFocus() || + (mTextEntry && mTextEntry->hasFocus()) || (mAddLandmarkBtn->hasFocus())) - if (found) { - setLabel(mList->getSelectedItemLabel()); + llwarns << "Location input should not be refreshed when having focus" << llendl; + return; } - return found; -} + // Update location field. + std::string location_name; -LLUUID LLLocationInputCtrl::getCurrentID() const -{ - return mList->getStringUUIDSelectedItem(); -} -BOOL LLLocationInputCtrl::setSelectedByValue(const LLSD& value, BOOL selected) -{ - BOOL found = mList->setSelectedByValue(value, selected); - if (found) - { - setLabel(mList->getSelectedItemLabel()); - } - return found; -} - -LLSD LLLocationInputCtrl::getSelectedValue() -{ - return mList->getSelectedValue(); -} + if (!gAgent.buildLocationString(location_name, LLAgent::LOCATION_FORMAT_NORMAL)) + location_name = "Unknown"; -BOOL LLLocationInputCtrl::isSelected(const LLSD& value) const -{ - return mList->isSelected(value); + setText(location_name); } -BOOL LLLocationInputCtrl::operateOnSelection(EOperation op) +void LLLocationInputCtrl::rebuildLocationHistory(std::string filter) { - if (op == OP_DELETE) + LLLocationHistory::location_list_t filtered_items; + const LLLocationHistory::location_list_t* itemsp = NULL; + LLLocationHistory* lh = LLLocationHistory::getInstance(); + + if (filter.empty()) { - mList->deleteSelectedItems(); - return TRUE; + itemsp = &lh->getItems(); } - return FALSE; -} - -BOOL LLLocationInputCtrl::operateOnAll(EOperation op) -{ - if (op == OP_DELETE) + else { - clearRows(); - return TRUE; + lh->getMatchingItems(filter, filtered_items); + itemsp = &filtered_items; } - return FALSE; -} - -BOOL LLLocationInputCtrl::selectItemRange( S32 first, S32 last ) -{ - return mList->selectItemRange(first, last); -} - -void LLLocationInputCtrl::prearrangeList(std::string filter) -{ - if (mPrearrangeCallback) + + removeall(); + for (LLLocationHistory::location_list_t::const_reverse_iterator it = itemsp->rbegin(); it != itemsp->rend(); it++) { - mPrearrangeCallback(this, LLSD(filter)); + add(*it); } } -//=========================================================================== - -BOOL LLLocationInputCtrl::childHasFocus() const +void LLLocationInputCtrl::focusTextEntry() { - return LLUICtrl::hasFocus() || mButton->hasFocus() || mList->hasFocus() || mTextEntry->hasFocus(); + // We can't use "mTextEntry->setFocus(TRUE)" instead because + // if the "select_on_focus" parameter is true it places the cursor + // at the beginning (after selecting text), thus screwing up updateSelection(). + if (mTextEntry) + gFocusMgr.setKeyboardFocus(mTextEntry); } -BOOL LLLocationInputCtrl::canCut() const +void LLLocationInputCtrl::enableAddLandmarkButton(bool val) { - return mTextEntry ? mTextEntry->canCut() : false; + // Enable/disable the button. + mAddLandmarkBtn->setEnabled(val); } -BOOL LLLocationInputCtrl::canCopy() const +// Change the "Add landmark" button image +// depending on whether current parcel has been landmarked. +void LLLocationInputCtrl::updateAddLandmarkButton() { - return mTextEntry ? mTextEntry->canCopy() : false; -} + bool cur_parcel_landmarked = false; -BOOL LLLocationInputCtrl::canPaste() const -{ - return mTextEntry ? mTextEntry->canPaste() : false; -} + // Determine whether there are landmarks pointing to the current parcel. + LLInventoryModel::cat_array_t cats; + LLInventoryModel::item_array_t items; + LLIsAgentParcelLandmark is_current_parcel_landmark; + gInventory.collectDescendentsIf(gAgent.getInventoryRootID(), + cats, + items, + LLInventoryModel::EXCLUDE_TRASH, + is_current_parcel_landmark); + cur_parcel_landmarked = !items.empty(); -BOOL LLLocationInputCtrl::canDeselect() const -{ - return mTextEntry ? mTextEntry->canDeselect() : false; + enableAddLandmarkButton(!cur_parcel_landmarked); } -BOOL LLLocationInputCtrl::canSelectAll() const +void LLLocationInputCtrl::updateWidgetlayout() { - return mTextEntry ? mTextEntry->canSelectAll() : false; -} + const LLRect& rect = getLocalRect(); + const LLRect& hist_btn_rect = mButton->getRect(); + LLRect info_btn_rect = mButton->getRect(); -void LLLocationInputCtrl::cut() -{ - if (mTextEntry) - mTextEntry->cut(); -} + // info button + info_btn_rect.setOriginAndSize( + 0, (rect.getHeight() - info_btn_rect.getHeight()) / 2, + info_btn_rect.getWidth(), info_btn_rect.getHeight()); + mInfoBtn->setRect(info_btn_rect); -void LLLocationInputCtrl::copy() -{ - if (mTextEntry) - mTextEntry->copy(); -} + // background + mBackground->setRect(LLRect(info_btn_rect.getWidth(), rect.mTop, + rect.mRight - hist_btn_rect.getWidth(), rect.mBottom)); -void LLLocationInputCtrl::paste() -{ - if (mTextEntry) - mTextEntry->paste(); -} + // history button + mButton->setRightHPad(0); -void LLLocationInputCtrl::deleteSelection() -{ - if (mTextEntry) - mTextEntry->deleteSelection(); -} + // "Add Landmark" button + { + LLRect al_btn_rect = mAddLandmarkBtn->getRect(); + al_btn_rect.translate( + hist_btn_rect.mLeft - mAddLandmarkHPad - al_btn_rect.getWidth(), + (rect.getHeight() - al_btn_rect.getHeight()) / 2); + mAddLandmarkBtn->setRect(al_btn_rect); + } -void LLLocationInputCtrl::selectAll() -{ + // text entry if (mTextEntry) - mTextEntry->selectAll(); + { + LLRect text_entry_rect(rect); + text_entry_rect.mLeft = info_btn_rect.getWidth(); + text_entry_rect.mRight = mAddLandmarkBtn->getRect().mLeft; + text_entry_rect.stretch(0, -1); // make space for border + mTextEntry->setRect(text_entry_rect); + } } diff --git a/indra/newview/lllocationinputctrl.h b/indra/newview/lllocationinputctrl.h index 07aa30295caa052fe60a0a2dd21708e829095ac0..17328532639a58c0c2ba390026d31138213a618c 100644 --- a/indra/newview/lllocationinputctrl.h +++ b/indra/newview/lllocationinputctrl.h @@ -1,5 +1,5 @@ /** - * @file lllocationinputmonitorctrl.h + * @file lllocationinputctrl.h * @brief Combobox-like location input control * * $LicenseInfo:firstyear=2009&license=viewergpl$ @@ -33,216 +33,87 @@ #ifndef LL_LLLOCATIONINPUTCTRL_H #define LL_LLLOCATIONINPUTCTRL_H -#include "llbutton.h" -#include "lluictrl.h" -#include "llctrlselectioninterface.h" -#include "llimagegl.h" -#include "llrect.h" -#include "llscrolllistitem.h" -#include <boost/function.hpp> - -// Classes -class LLButton; -class LLFontGL; -class LLLineEditor; -class LLScrollListCtrl; -class LLSquareButton; -class LLUICtrlFactory; -class LLViewBorder; +#include <llcombobox.h> + +class LLLandmark; + +// internals +class LLAddLandmarkObserver; +class LLRemoveLandmarkObserver; /** * Location input control. * - * This is currently just a copy of LLComboBox (which is not exactly what the nav bar needs). - * The only major difference so far is the way auto-completion works. - * * @see LLNavigationBar */ class LLLocationInputCtrl -: public LLUICtrl, public LLCtrlListInterface +: public LLComboBox { LOG_CLASS(LLLocationInputCtrl); - + friend class LLAddLandmarkObserver; + friend class LLRemoveLandmarkObserver; + public: struct Params - : public LLInitParam::Block<Params, LLUICtrl::Params> + : public LLInitParam::Block<Params, LLComboBox::Params> { - Optional<bool> allow_text_entry, select_on_focus; - Optional<S32> max_chars; - Optional<commit_callback_t> prearrange_callback; - Optional<commit_callback_t> text_entry_callback; - Optional<commit_callback_t > selection_callback; - Optional<LLUIImage*> arrow_image; -Multiple<LLScrollListItem::Params> items; - - Params() - : allow_text_entry("allow_text_entry", false), - select_on_focus("select_on_focus", true), - max_chars("max_chars", 20), - arrow_image("arrow_image", LLUI::getUIImage("combobox_arrow.tga")), - items("item") - { - addSynonym(items, "combo_item"); - } + Optional<LLUIImage*> add_landmark_image_enabled, + add_landmark_image_disabled; + Optional<S32> add_landmark_hpad; + Optional<LLButton::Params> add_landmark_button, + info_button, + background; + Params(); }; - typedef enum e_preferred_position - { - ABOVE, - BELOW - } EPreferredPosition; - - virtual ~LLLocationInputCtrl(); -protected: - friend class LLUICtrlFactory; - LLLocationInputCtrl(const Params&); -public: // LLView interface - - virtual BOOL postBuild(); - virtual void draw(); - virtual void onFocusLost(); - - virtual void setEnabled(BOOL enabled); - - virtual BOOL handleToolTip(S32 x, S32 y, std::string& msg, LLRect* sticky_rect); - virtual BOOL handleKeyHere(KEY key, MASK mask); - virtual BOOL handleUnicodeCharHere(llwchar uni_char); + /*virtual*/ void setEnabled(BOOL enabled); + /*virtual*/ BOOL handleToolTip(S32 x, S32 y, std::string& msg, LLRect* sticky_rect); + /*virtual*/ BOOL handleKeyHere(KEY key, MASK mask); + //======================================================================== // LLUICtrl interface - virtual void clear(); // select nothing - virtual void onCommit(); - virtual BOOL acceptsTextInput() const { return mAllowTextEntry; } - virtual BOOL isDirty() const; // Returns TRUE if the user has modified this control. - virtual void resetDirty(); // Clear dirty state - - virtual void setFocus(BOOL b); - - // Selects item by underlying LLSD value, using LLSD::asString() matching. - // For simple items, this is just the name of the label. - virtual void setValue(const LLSD& value ); - - // Gets underlying LLSD value for currently selected items. For simple - // items, this is just the label. - virtual LLSD getValue() const; - - void setTextEntry(const LLStringExplicit& text); - void setText(const LLStringExplicit& text); - - LLScrollListItem* add(const std::string& name, EAddPosition pos = ADD_BOTTOM, BOOL enabled = TRUE); // add item "name" to menu - LLScrollListItem* add(const std::string& name, const LLUUID& id, EAddPosition pos = ADD_BOTTOM, BOOL enabled = TRUE); - LLScrollListItem* add(const std::string& name, void* userdata, EAddPosition pos = ADD_BOTTOM, BOOL enabled = TRUE); - LLScrollListItem* add(const std::string& name, LLSD value, EAddPosition pos = ADD_BOTTOM, BOOL enabled = TRUE); - LLScrollListItem* addSeparator(EAddPosition pos = ADD_BOTTOM); - BOOL remove( S32 index ); // remove item by index, return TRUE if found and removed - void removeall() { clearRows(); } - - void sortByName(BOOL ascending = TRUE); // Sort the entries in the combobox by name - - // Select current item by name using selectItemByLabel. Returns FALSE if not found. - BOOL setSimple(const LLStringExplicit& name); - // Get name of current item. Returns an empty string if not found. - const std::string getSimple() const; - // Get contents of column x of selected row - const std::string getSelectedItemLabel(S32 column = 0) const; - - // Sets the label, which doesn't have to exist in the label. - // This is probably a UI abuse. - void setLabel(const LLStringExplicit& name); - - BOOL remove(const std::string& name); // remove item "name", return TRUE if found and removed - - BOOL setCurrentByIndex( S32 index ); - S32 getCurrentIndex() const; - - virtual void updateLayout(); - + /*virtual*/ void setFocus(BOOL b); //======================================================================== - LLCtrlSelectionInterface* getSelectionInterface() { return (LLCtrlSelectionInterface*)this; }; - LLCtrlListInterface* getListInterface() { return (LLCtrlListInterface*)this; }; - - // LLCtrlListInterface functions - // See llscrolllistctrl.h - virtual S32 getItemCount() const; - // Overwrites the default column (See LLScrollListCtrl for format) - virtual void addColumn(const LLSD& column, EAddPosition pos = ADD_BOTTOM); - virtual void clearColumns(); - virtual void setColumnLabel(const std::string& column, const std::string& label); - virtual LLScrollListItem* addElement(const LLSD& value, EAddPosition pos = ADD_BOTTOM, void* userdata = NULL); - virtual LLScrollListItem* addSimpleElement(const std::string& value, EAddPosition pos = ADD_BOTTOM, const LLSD& id = LLSD()); - virtual void clearRows(); - virtual void sortByColumn(const std::string& name, BOOL ascending); - - // LLCtrlSelectionInterface functions - virtual BOOL getCanSelect() const { return TRUE; } - virtual BOOL selectFirstItem() { return setCurrentByIndex(0); } - virtual BOOL selectNthItem( S32 index ) { return setCurrentByIndex(index); } - virtual BOOL selectItemRange( S32 first, S32 last ); - virtual S32 getFirstSelectedIndex() const { return getCurrentIndex(); } - virtual BOOL setCurrentByID( const LLUUID& id ); - virtual LLUUID getCurrentID() const; // LLUUID::null if no items in menu - virtual BOOL setSelectedByValue(const LLSD& value, BOOL selected); - virtual LLSD getSelectedValue(); - virtual BOOL isSelected(const LLSD& value) const; - virtual BOOL operateOnSelection(EOperation op); - virtual BOOL operateOnAll(EOperation op); + // LLComboBox interface + void hideList(); + void onTextEntry(LLLineEditor* line_editor); //======================================================================== - - void* getCurrentUserdata(); - - void setPrearrangeCallback( commit_callback_t cb ) { mPrearrangeCallback = cb; } - void setTextEntryCallback( commit_callback_t cb ) { mTextEntryCallback = cb; } - void setSelectionCallback( commit_callback_t cb ) { mSelectionCallback = cb; } - void setButtonVisible(BOOL visible); + LLLineEditor* getTextEntry() const { return mTextEntry; } + void handleLoginComplete(); - void onButtonDown(); - void onItemSelected(const LLSD& data); - void onTextCommit(const LLSD& data); - - virtual void updateSelection(); - virtual void showList(); - virtual void hideList(); - - //======================================================================== - BOOL childHasFocus() const; /// Is one of our children focused? - - BOOL canCut() const; - BOOL canCopy() const; - BOOL canPaste() const; - BOOL canDeselect() const; - BOOL canSelectAll() const; - - void cut(); - void copy(); - void paste(); - void deleteSelection(); - void selectAll(); - //======================================================================== - - void onTextEntry(LLLineEditor* line_editor); - -protected: - - void prearrangeList(std::string filter = ""); - - - LLButton* mButton; - LLScrollListCtrl* mList; - EPreferredPosition mListPosition; - LLPointer<LLUIImage> mArrowImage; - std::string mLabel; - S32 mButtonPadding; - LLLineEditor* mTextEntry; - BOOL mAllowTextEntry; - BOOL mSelectOnFocus; - BOOL mHasAutocompletedText; - S32 mMaxChars; - BOOL mTextEntryTentative; - commit_callback_t mPrearrangeCallback; - commit_callback_t mTextEntryCallback; - commit_callback_t mSelectionCallback; +private: + friend class LLUICtrlFactory; + LLLocationInputCtrl(const Params&); + virtual ~LLLocationInputCtrl(); + + void focusTextEntry(); + void enableAddLandmarkButton(bool val); + void refresh(); + void refreshLocation(); + void rebuildLocationHistory(std::string filter = ""); + void setText(const LLStringExplicit& text); + void updateAddLandmarkButton(); + void updateWidgetlayout(); + + void onFocusReceived(); + void onFocusLost(); + void onInfoButtonClicked(); + void onLocationHistoryLoaded(); + void onLocationPrearrange(const LLSD& data); + void onLandmarkLoaded(LLLandmark* lm); + void onAddLandmarkButtonClicked(); + void onAgentParcelChange(); + + LLButton* mBackground; + LLButton* mAddLandmarkBtn; + LLButton* mInfoBtn; + S32 mAddLandmarkHPad; + + LLAddLandmarkObserver* mAddLandmarkObserver; + LLRemoveLandmarkObserver* mRemoveLandmarkObserver; }; #endif diff --git a/indra/newview/lllogchat.cpp b/indra/newview/lllogchat.cpp index 29cf996f7cbcfec8b4a74d683a43ab8723a23e68..69214b5cab565e3e499f092d226205de578173f0 100644 --- a/indra/newview/lllogchat.cpp +++ b/indra/newview/lllogchat.cpp @@ -71,11 +71,16 @@ std::string LLLogChat::timestamp(bool withdate) if (withdate) { - timeStr = LLTrans::getString ("LogChatDateTime"); + timeStr = "["+LLTrans::getString ("TimeYear")+"]/[" + +LLTrans::getString ("TimeMonth")+"]/[" + +LLTrans::getString ("TimeDay")+"] [" + +LLTrans::getString ("TimeHour")+"]:[" + +LLTrans::getString ("TimeMin")+"] "; } else { - timeStr = LLTrans::getString ("LogChatTime"); + timeStr = "[" + LLTrans::getString("TimeHour") + "]:[" + + LLTrans::getString ("TimeMin")+"] "; } LLStringUtil::format (timeStr, substitution); diff --git a/indra/newview/llmanip.cpp b/indra/newview/llmanip.cpp index 2d852dea40a44503a811fa14221daff9c237ab55..703977658532f82c23878a2cc44a062d7c9a825f 100644 --- a/indra/newview/llmanip.cpp +++ b/indra/newview/llmanip.cpp @@ -499,9 +499,9 @@ void LLManip::renderTickText(const LLVector3& pos, const std::string& text, cons // render shadow first LLColor4 shadow_color = LLColor4::black; shadow_color.mV[VALPHA] = color.mV[VALPHA] * 0.5f; - gViewerWindow->setupViewport(1, -1); + gViewerWindow->setup3DViewport(1, -1); hud_render_utf8text(text, render_pos, *big_fontp, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, -0.5f * big_fontp->getWidthF32(text), 3.f, shadow_color, mObjectSelection->getSelectType() == SELECT_TYPE_HUD); - gViewerWindow->setupViewport(); + gViewerWindow->setup3DViewport(); hud_render_utf8text(text, render_pos, *big_fontp, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, -0.5f * big_fontp->getWidthF32(text), 3.f, color, mObjectSelection->getSelectType() == SELECT_TYPE_HUD); glPopMatrix(); @@ -561,19 +561,19 @@ void LLManip::renderTickValue(const LLVector3& pos, F32 value, const std::string { fraction_string = llformat("%c%02d%s", LLResMgr::getInstance()->getDecimalPoint(), fractional_portion, suffix.c_str()); - gViewerWindow->setupViewport(1, -1); + gViewerWindow->setup3DViewport(1, -1); hud_render_utf8text(val_string, render_pos, *big_fontp, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, -1.f * big_fontp->getWidthF32(val_string), 3.f, shadow_color, hud_selection); hud_render_utf8text(fraction_string, render_pos, *small_fontp, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, 1.f, 3.f, shadow_color, hud_selection); - gViewerWindow->setupViewport(); + gViewerWindow->setup3DViewport(); hud_render_utf8text(val_string, render_pos, *big_fontp, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, -1.f * big_fontp->getWidthF32(val_string), 3.f, color, hud_selection); hud_render_utf8text(fraction_string, render_pos, *small_fontp, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, 1.f, 3.f, color, hud_selection); } else { - gViewerWindow->setupViewport(1, -1); + gViewerWindow->setup3DViewport(1, -1); hud_render_utf8text(val_string, render_pos, *big_fontp, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, -0.5f * big_fontp->getWidthF32(val_string), 3.f, shadow_color, hud_selection); - gViewerWindow->setupViewport(); + gViewerWindow->setup3DViewport(); hud_render_utf8text(val_string, render_pos, *big_fontp, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, -0.5f * big_fontp->getWidthF32(val_string), 3.f, color, hud_selection); } glPopMatrix(); @@ -592,14 +592,14 @@ LLColor4 LLManip::setupSnapGuideRenderPass(S32 pass) { case 0: // shadow - gViewerWindow->setupViewport(1, -1); + gViewerWindow->setup3DViewport(1, -1); line_color = grid_color_shadow; line_color.mV[VALPHA] *= line_alpha; LLUI::setLineWidth(2.f); break; case 1: // hidden lines - gViewerWindow->setupViewport(); + gViewerWindow->setup3DViewport(); line_color = grid_color_bg; line_color.mV[VALPHA] *= line_alpha; LLUI::setLineWidth(1.f); diff --git a/indra/newview/llmaniptranslate.cpp b/indra/newview/llmaniptranslate.cpp index 8a12f7553652706187bf50b1daa42059f5f3a4a6..b8c2a3d64b73c2ecf310481441ff60f568ea767f 100644 --- a/indra/newview/llmaniptranslate.cpp +++ b/indra/newview/llmaniptranslate.cpp @@ -61,7 +61,7 @@ #include "llviewerjoint.h" #include "llviewerobject.h" #include "llviewerwindow.h" -#include "llvoavatar.h" +#include "llvoavatarself.h" #include "llworld.h" #include "llui.h" #include "pipeline.h" diff --git a/indra/newview/llmemoryview.cpp b/indra/newview/llmemoryview.cpp index c763da34d586f87d17d8a6036db81604cd76c4c9..ab5db930279c3cb8bbaa82dcf1b2d1d9c4a32b0a 100644 --- a/indra/newview/llmemoryview.cpp +++ b/indra/newview/llmemoryview.cpp @@ -35,33 +35,20 @@ #include "indra_constants.h" #include "llmemoryview.h" -#include "llrect.h" -#include "llerror.h" -#include "llgl.h" -#include "llmath.h" -#include "llfontgl.h" -#include "llmemtype.h" - -#include "llcharacter.h" -#include "llui.h" +#include "llappviewer.h" +#include "llallocator_heap_profile.h" +#include "llviewerwindow.h" #include "llviewercontrol.h" -#include "llstat.h" - -#include "llfasttimer.h" +#include <sstream> +#include <boost/algorithm/string/split.hpp> LLMemoryView::LLMemoryView(const LLMemoryView::Params& p) : LLView(p), - mDelay(120) + //mDelay(120), + mAlloc(NULL) { - mDumpTimer.reset(); - -#ifdef MEM_DUMP_DATA - // clear out file. - LLFILE *dump = LLFile::fopen("memusagedump.txt", "w"); - fclose(dump); -#endif } LLMemoryView::~LLMemoryView() @@ -93,62 +80,101 @@ BOOL LLMemoryView::handleHover(S32 x, S32 y, MASK mask) return FALSE; } -////////////////////////////////////////////////////////////////////////////// - -struct mtv_display_info { - S32 memtype; - const char *desc; - const LLColor4 *color; -}; - -static const LLColor4 red0(0.5f, 0.0f, 0.0f, 1.0f); - -static const struct mtv_display_info mtv_display_table[] = +void LLMemoryView::refreshProfile() { - { LLMemType::MTYPE_INIT, "Init", &LLColor4::white }, - { LLMemType::MTYPE_STARTUP, "Startup", &LLColor4::cyan1 }, - { LLMemType::MTYPE_MAIN, "Main", &LLColor4::cyan2 }, - { LLMemType::MTYPE_IMAGEBASE, "ImageBase", &LLColor4::yellow1 }, - { LLMemType::MTYPE_IMAGERAW, "ImageRaw", &LLColor4::yellow2 }, - { LLMemType::MTYPE_IMAGEFORMATTED, "ImageFmtd", &LLColor4::yellow3 }, - { LLMemType::MTYPE_APPFMTIMAGE, "ViewerImageFmt", &LLColor4::orange1 }, - { LLMemType::MTYPE_APPRAWIMAGE, "ViewerImageRaw", &LLColor4::orange2 }, - { LLMemType::MTYPE_APPAUXRAWIMAGE, "ViewerImageAux", &LLColor4::orange3 }, - { LLMemType::MTYPE_DRAWABLE, "Drawable", &LLColor4::green1 }, - { LLMemType::MTYPE_OBJECT, "ViewerObject", &LLColor4::green2 }, - { LLMemType::MTYPE_PIPELINE, "Pipeline", &LLColor4::green3 }, - { LLMemType::MTYPE_PARTICLES, "Particles", &LLColor4::green4 }, - { LLMemType::MTYPE_SPACE_PARTITION, "Space Partition", &LLColor4::blue2 }, - { LLMemType::MTYPE_VERTEX_DATA, "Vertex Buffer", &LLColor4::blue3 }, - { LLMemType::MTYPE_AVATAR, "Avatar", &LLColor4::purple1 }, - { LLMemType::MTYPE_AVATAR_MESH, "Avatar Mesh", &LLColor4::purple2 }, - { LLMemType::MTYPE_ANIMATION, "Animation", &LLColor4::purple3 }, - { LLMemType::MTYPE_REGIONS, "Regions", &LLColor4::blue1 }, - { LLMemType::MTYPE_VOLUME, "Volume", &LLColor4::pink1 }, - { LLMemType::MTYPE_PRIMITIVE, "Profile", &LLColor4::pink2 }, - { LLMemType::MTYPE_TEMP1, "Temp1", &LLColor4::red1 }, - { LLMemType::MTYPE_TEMP2, "Temp2", &LLColor4::magenta1 }, - { LLMemType::MTYPE_TEMP3, "Temp3", &LLColor4::red2 }, - { LLMemType::MTYPE_TEMP4, "Temp4", &LLColor4::magenta2 }, - { LLMemType::MTYPE_TEMP5, "Temp5", &LLColor4::red3 }, - { LLMemType::MTYPE_TEMP6, "Temp6", &LLColor4::magenta3 }, - { LLMemType::MTYPE_TEMP7, "Temp7", &LLColor4::red4 }, - { LLMemType::MTYPE_TEMP8, "Temp8", &LLColor4::magenta4 }, - - { LLMemType::MTYPE_OTHER, "Other", &red0 }, -}; -static const int MTV_DISPLAY_NUM = LL_ARRAY_SIZE(mtv_display_table); + /* + LLAllocator & alloc = LLAppViewer::instance()->getAllocator(); + if(alloc.isProfiling()) { + std::string profile_text = alloc.getRawProfile(); + + boost::algorithm::split(mLines, profile_text, boost::bind(std::equal_to<llwchar>(), '\n', _1)); + } else { + mLines.clear(); + } + */ + if (mAlloc == NULL) { + mAlloc = &LLAppViewer::instance()->getAllocator(); + } + + mLines.clear(); + + if(mAlloc->isProfiling()) + { + const LLAllocatorHeapProfile &prof = mAlloc->getProfile(); + for(size_t i = 0; i < prof.mLines.size(); ++i) + { + std::stringstream ss; + ss << "Unfreed Mem: " << (prof.mLines[i].mLiveSize >> 20) << " M Trace: "; + for(size_t k = 0; k < prof.mLines[i].mTrace.size(); ++k) + { + ss << LLMemType::getNameFromID(prof.mLines[i].mTrace[k]) << " "; + } + mLines.push_back(utf8string_to_wstring(ss.str())); + } + } +} void LLMemoryView::draw() { - std::string tdesc; - S32 width = getRect().getWidth(); - S32 height = getRect().getHeight(); + const S32 UPDATE_INTERVAL = 60; + const S32 MARGIN_AMT = 10; + static S32 curUpdate = UPDATE_INTERVAL; + static LLCachedControl<LLColor4> s_console_color(gSavedSkinSettings, "ConsoleBackground", LLColor4U::black); + + // setup update interval + if (curUpdate >= UPDATE_INTERVAL) + { + refreshProfile(); + curUpdate = 0; + } + curUpdate++; + + // setup window properly + S32 height = (S32) (gViewerWindow->getVirtualWindowRect().getHeight()*0.75f); + S32 width = (S32) (gViewerWindow->getVirtualWindowRect().getWidth() * 0.9f); + setRect(LLRect().setLeftTopAndSize(getRect().mLeft, getRect().mTop, width, height)); + // setup window color + F32 console_opacity = llclamp(gSavedSettings.getF32("ConsoleBackgroundOpacity"), 0.f, 1.f); + LLColor4 color = s_console_color; + color.mV[VALPHA] *= console_opacity; + LLGLSUIDefault gls_ui; gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); - gl_rect_2d(0, height, width, 0, LLColor4(0.f, 0.f, 0.f, 0.25f)); + gl_rect_2d(0, height, width, 0, color); + LLFontGL * font = LLFontGL::getFontSansSerifSmall(); + + // draw remaining lines + F32 y_pos = 0.f; + F32 y_off = 0.f; + + F32 line_height = font->getLineHeight(); + S32 target_width = width - 2 * MARGIN_AMT; + + // cut off lines on bottom + U32 max_lines = U32((height - 2 * line_height) / line_height); + std::vector<LLWString>::const_iterator end = mLines.end(); + if(mLines.size() > max_lines) { + end = mLines.begin() + max_lines; + } + + y_pos = height - MARGIN_AMT - line_height; + y_off = 0.f; + for (std::vector<LLWString>::const_iterator i = mLines.begin(); i != end; ++i) + { + font->render(*i, 0, MARGIN_AMT, y_pos - y_off, + LLColor4::white, + LLFontGL::LEFT, + LLFontGL::BASELINE, + LLFontGL::NORMAL, + LLFontGL::DROP_SHADOW, + S32_MAX, + target_width + ); + y_off += line_height; + } + #if MEM_TRACK_TYPE S32 left, top, right, bottom; @@ -266,40 +292,3 @@ void LLMemoryView::draw() LLView::draw(); } - -void LLMemoryView::setDataDumpInterval(float delay) -{ - mDelay = delay; -} - -void LLMemoryView::dumpData() -{ -#if MEM_TRACK_TYPE && MEM_DUMP_DATA - if (mDelay && (mDumpTimer.getElapsedTimeF32() > mDelay )) - { - // reset timer - mDumpTimer.reset(); - // append dump info to text file - LLFILE *dump = LLFile::fopen("memusagedump.txt", "a"); - - if (dump) - { - // write out total memory usage - fprintf (dump, "Total memory in use = %09d (%03d MB)\n", LLMemType::sTotalMem, LLMemType::sTotalMem>>20); - fprintf (dump, "High Water Mark = %09d (%03d MB)\n\n", LLMemType::sMaxTotalMem, LLMemType::sMaxTotalMem>>20); - // dump out usage of 'new' for each memory type - for (S32 i=0; i<LLMemType::MTYPE_NUM_TYPES; i++) - { - if (LLMemType::sMemCount[i]) - { - std::string outData = llformat("MEM: % 20s %09d %03d MB (%09d %03d MB) in %06d News", LLMemType::sTypeDesc[i], LLMemType::sMemCount[i], LLMemType::sMemCount[i]>>20, LLMemType::sMaxMemCount[i], LLMemType::sMaxMemCount[i]>>20, LLMemType::sNewCount[i]); - fprintf (dump, "%s\n", outData.c_str()); - } - } - fprintf (dump, "\n\n"); - - fclose(dump); - } - } -#endif -} diff --git a/indra/newview/llmemoryview.h b/indra/newview/llmemoryview.h index e5b019bb4714bce4dac04e3a3da1e3ecc1d08a00..774a52b88b68ce96ccf828080ad3f46f2e5457b6 100644 --- a/indra/newview/llmemoryview.h +++ b/indra/newview/llmemoryview.h @@ -35,6 +35,8 @@ #include "llview.h" +class LLAllocator; + class LLMemoryView : public LLView { public: @@ -54,14 +56,12 @@ class LLMemoryView : public LLView virtual BOOL handleHover(S32 x, S32 y, MASK mask); virtual void draw(); -private: - void setDataDumpInterval(float delay); - void dumpData(); - - float mDelay; - LLFrameTimer mDumpTimer; + void refreshProfile(); private: + std::vector<LLWString> mLines; + LLAllocator* mAlloc; + }; #endif diff --git a/indra/newview/llmenucommands.cpp b/indra/newview/llmenucommands.cpp index 502302868ec3607c2f894579cab5251c28062c7b..d76ddbf4d420ec31ee2224136cda36295c01c682 100644 --- a/indra/newview/llmenucommands.cpp +++ b/indra/newview/llmenucommands.cpp @@ -67,7 +67,7 @@ #include "llworld.h" #include "llworldmap.h" #include "llfocusmgr.h" - +#include "llbottomtray.h" void handle_pay_by_id(const LLUUID& agent_id) { const BOOL is_group = FALSE; @@ -83,7 +83,8 @@ void handle_mouselook(void*) void handle_chat(void*) { // give focus to chatbar if it's open but not focused - if (gSavedSettings.getBOOL("ChatVisible") && gFocusMgr.childHasKeyboardFocus(gChatBar)) + if (gSavedSettings.getBOOL("ChatVisible") && gFocusMgr.childHasKeyboardFocus( + LLBottomTray::getInstance()->getChatBox())) { LLChatBar::stopChat(); } diff --git a/indra/newview/llmetricperformancetester.cpp b/indra/newview/llmetricperformancetester.cpp new file mode 100644 index 0000000000000000000000000000000000000000..93288c98d74afb251728cc83c710e64b9f91af5d --- /dev/null +++ b/indra/newview/llmetricperformancetester.cpp @@ -0,0 +1,258 @@ +/** + * @file llmetricperformancetester.cpp + * @brief LLMetricPerformanceTester class implementation + * + * $LicenseInfo:firstyear=2004&license=viewergpl$ + * + * Copyright (c) 2004-2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#include "llviewerprecompiledheaders.h" + +#include "indra_constants.h" +#include "llerror.h" +#include "llmath.h" +#include "llfontgl.h" +#include "llsdserialize.h" +#include "llstat.h" +#include "lltreeiterators.h" +#include "llmetricperformancetester.h" + +LLMetricPerformanceTester::name_tester_map_t LLMetricPerformanceTester::sTesterMap ; + +//static +void LLMetricPerformanceTester::initClass() +{ +} +//static +void LLMetricPerformanceTester::cleanClass() +{ + for(name_tester_map_t::iterator iter = sTesterMap.begin() ; iter != sTesterMap.end() ; ++iter) + { + delete iter->second ; + } + sTesterMap.clear() ; +} + +//static +void LLMetricPerformanceTester::addTester(LLMetricPerformanceTester* tester) +{ + if(!tester) + { + llerrs << "invalid tester!" << llendl ; + return ; + } + + std::string name = tester->getName() ; + if(getTester(name)) + { + llerrs << "Tester name is used by some other tester: " << name << llendl ; + return ; + } + + sTesterMap.insert(std::make_pair(name, tester)); + + return ; +} + +//static +LLMetricPerformanceTester* LLMetricPerformanceTester::getTester(std::string label) +{ + name_tester_map_t::iterator found_it = sTesterMap.find(label) ; + if(found_it != sTesterMap.end()) + { + return found_it->second ; + } + + return NULL ; +} + +LLMetricPerformanceTester::LLMetricPerformanceTester(std::string name, BOOL use_default_performance_analysis) + : mName(name), + mBaseSessionp(NULL), + mCurrentSessionp(NULL), + mCount(0), + mUseDefaultPerformanceAnalysis(use_default_performance_analysis) +{ + if(mName == std::string()) + { + llerrs << "invalid name." << llendl ; + } + + LLMetricPerformanceTester::addTester(this) ; +} + +/*virtual*/ +LLMetricPerformanceTester::~LLMetricPerformanceTester() +{ + if(mBaseSessionp) + { + delete mBaseSessionp ; + mBaseSessionp = NULL ; + } + if(mCurrentSessionp) + { + delete mCurrentSessionp ; + mCurrentSessionp = NULL ; + } +} + +void LLMetricPerformanceTester::incLabel() +{ + mCurLabel = llformat("%s-%d", mName.c_str(), mCount++) ; +} +void LLMetricPerformanceTester::preOutputTestResults(LLSD* sd) +{ + incLabel() ; + (*sd)[mCurLabel]["Name"] = mName ; +} +void LLMetricPerformanceTester::postOutputTestResults(LLSD* sd) +{ + LLMutexLock lock(LLFastTimer::sLogLock); + LLFastTimer::sLogQueue.push((*sd)); +} + +void LLMetricPerformanceTester::outputTestResults() +{ + LLSD sd ; + preOutputTestResults(&sd) ; + + outputTestRecord(&sd) ; + + postOutputTestResults(&sd) ; +} + +void LLMetricPerformanceTester::addMetricString(std::string str) +{ + mMetricStrings.push_back(str) ; +} + +const std::string& LLMetricPerformanceTester::getMetricString(U32 index) const +{ + return mMetricStrings[index] ; +} + +void LLMetricPerformanceTester::prePerformanceAnalysis() +{ + mCount = 0 ; + incLabel() ; +} + +// +//default analyzing the performance +// +/*virtual*/ +void LLMetricPerformanceTester::analyzePerformance(std::ofstream* os, LLSD* base, LLSD* current) +{ + if(mUseDefaultPerformanceAnalysis)//use default performance analysis + { + prePerformanceAnalysis() ; + + BOOL in_base = (*base).has(mCurLabel) ; + BOOL in_current = (*current).has(mCurLabel) ; + + while(in_base || in_current) + { + LLSD::String label = mCurLabel ; + + if(in_base && in_current) + { + *os << llformat("%s\n", label.c_str()) ; + + for(U32 index = 0 ; index < mMetricStrings.size() ; index++) + { + switch((*current)[label][ mMetricStrings[index] ].type()) + { + case LLSD::TypeInteger: + compareTestResults(os, mMetricStrings[index], + (S32)((*base)[label][ mMetricStrings[index] ].asInteger()), (S32)((*current)[label][ mMetricStrings[index] ].asInteger())) ; + break ; + case LLSD::TypeReal: + compareTestResults(os, mMetricStrings[index], + (F32)((*base)[label][ mMetricStrings[index] ].asReal()), (F32)((*current)[label][ mMetricStrings[index] ].asReal())) ; + break; + default: + llerrs << "unsupported metric " << mMetricStrings[index] << " LLSD type: " << (S32)(*current)[label][ mMetricStrings[index] ].type() << llendl ; + } + } + } + + incLabel() ; + in_base = (*base).has(mCurLabel) ; + in_current = (*current).has(mCurLabel) ; + } + }//end of default + else + { + //load the base session + prePerformanceAnalysis() ; + mBaseSessionp = loadTestSession(base) ; + + //load the current session + prePerformanceAnalysis() ; + mCurrentSessionp = loadTestSession(current) ; + + if(!mBaseSessionp || !mCurrentSessionp) + { + llerrs << "memory error during loading test sessions." << llendl ; + } + + //compare + compareTestSessions(os) ; + + //release memory + if(mBaseSessionp) + { + delete mBaseSessionp ; + mBaseSessionp = NULL ; + } + if(mCurrentSessionp) + { + delete mCurrentSessionp ; + mCurrentSessionp = NULL ; + } + } +} + +//virtual +void LLMetricPerformanceTester::compareTestResults(std::ofstream* os, std::string metric_string, S32 v_base, S32 v_current) +{ + *os << llformat(" ,%s, %d, %d, %d, %.4f\n", metric_string.c_str(), v_base, v_current, + v_current - v_base, (v_base != 0) ? 100.f * v_current / v_base : 0) ; +} + +//virtual +void LLMetricPerformanceTester::compareTestResults(std::ofstream* os, std::string metric_string, F32 v_base, F32 v_current) +{ + *os << llformat(" ,%s, %.4f, %.4f, %.4f, %.4f\n", metric_string.c_str(), v_base, v_current, + v_current - v_base, (fabs(v_base) > 0.0001f) ? 100.f * v_current / v_base : 0.f ) ; +} + +//virtual +LLMetricPerformanceTester::LLTestSession::~LLTestSession() +{ +} + diff --git a/indra/newview/llmetricperformancetester.h b/indra/newview/llmetricperformancetester.h new file mode 100644 index 0000000000000000000000000000000000000000..ab5ccaeb8e7906a41d59a3f3dcbbd8bc7928902d --- /dev/null +++ b/indra/newview/llmetricperformancetester.h @@ -0,0 +1,159 @@ +/** + * @file LLMetricPerformanceTester.h + * @brief LLMetricPerformanceTester class definition + * + * $LicenseInfo:firstyear=2004&license=viewergpl$ + * + * Copyright (c) 2004-2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#ifndef LL_METRICPERFORMANCETESTER_H +#define LL_METRICPERFORMANCETESTER_H + +class LLMetricPerformanceTester +{ +public: + // + //name passed to the constructor is a unique string for each tester. + //an error is reported if the name is already used by some other tester. + // + LLMetricPerformanceTester(std::string name, BOOL use_default_performance_analysis) ; + virtual ~LLMetricPerformanceTester(); + + // + //return the name of the tester + // + std::string getName() const { return mName ;} + // + //return the number of the test metrics in this tester + // + S32 getNumOfMetricStrings() const { return mMetricStrings.size() ;} + // + //return the metric string at the index + // + const std::string& getMetricString(U32 index) const ; + + // + //this function to compare the test results. + //by default, it compares the test results against the baseline one by one, item by item, + //in the increasing order of the LLSD label counter, starting from the first one. + //you can define your own way to analyze performance by passing FALSE to "use_default_performance_analysis", + //and implement two abstract virtual functions below: loadTestSession(...) and compareTestSessions(...). + // + void analyzePerformance(std::ofstream* os, LLSD* base, LLSD* current) ; + +protected: + // + //insert metric strings used in the tester. + // + void addMetricString(std::string str) ; + + // + //increase LLSD label by 1 + // + void incLabel() ; + + // + //the function to write a set of test results to the log LLSD. + // + void outputTestResults() ; + + // + //compare the test results. + //you can write your own to overwrite the default one. + // + virtual void compareTestResults(std::ofstream* os, std::string metric_string, S32 v_base, S32 v_current) ; + virtual void compareTestResults(std::ofstream* os, std::string metric_string, F32 v_base, F32 v_current) ; + + // + //for performance analysis use + //it defines an interface for the two abstract virtual functions loadTestSession(...) and compareTestSessions(...). + //please make your own test session class derived from it. + // + class LLTestSession + { + public: + virtual ~LLTestSession() ; + }; + + // + //load a test session for log LLSD + //you need to implement it only when you define your own way to analyze performance. + //otherwise leave it empty. + // + virtual LLMetricPerformanceTester::LLTestSession* loadTestSession(LLSD* log) = 0 ; + // + //compare the base session and the target session + //you need to implement it only when you define your own way to analyze performance. + //otherwise leave it empty. + // + virtual void compareTestSessions(std::ofstream* os) = 0 ; + // + //the function to write a set of test results to the log LLSD. + //you have to write you own version of this function. + // + virtual void outputTestRecord(LLSD* sd) = 0 ; + +private: + void preOutputTestResults(LLSD* sd) ; + void postOutputTestResults(LLSD* sd) ; + void prePerformanceAnalysis() ; + +protected: + // + //the unique name string of the tester + // + std::string mName ; + // + //the current label counter for the log LLSD + // + std::string mCurLabel ; + S32 mCount ; + + BOOL mUseDefaultPerformanceAnalysis ; + LLTestSession* mBaseSessionp ; + LLTestSession* mCurrentSessionp ; + + //metrics strings + std::vector< std::string > mMetricStrings ; + +//static members +private: + static void addTester(LLMetricPerformanceTester* tester) ; + +public: + typedef std::map< std::string, LLMetricPerformanceTester* > name_tester_map_t; + static name_tester_map_t sTesterMap ; + + static LLMetricPerformanceTester* getTester(std::string label) ; + static BOOL hasMetricPerformanceTesters() {return !sTesterMap.empty() ;} + + static void initClass() ; + static void cleanClass() ; +}; + +#endif + diff --git a/indra/newview/llmorphview.cpp b/indra/newview/llmorphview.cpp index 0e49ecd9b58b024b34b4880c4ff1b0a4f28e98e8..f562e45770440758bf8bab17d8e7f9865f491e5d 100644 --- a/indra/newview/llmorphview.cpp +++ b/indra/newview/llmorphview.cpp @@ -47,7 +47,7 @@ #include "lltoolmgr.h" #include "lltoolmorph.h" #include "llviewercamera.h" -#include "llvoavatar.h" +#include "llvoavatarself.h" #include "llviewerwindow.h" #include "pipeline.h" @@ -108,7 +108,7 @@ void LLMorphView::initialize() //----------------------------------------------------------------------------- void LLMorphView::shutdown() { - LLVOAvatar::onCustomizeEnd(); + LLVOAvatarSelf::onCustomizeEnd(); LLVOAvatar *avatarp = gAgent.getAvatarObject(); if(avatarp && !avatarp->isDead()) diff --git a/indra/newview/llmutelist.cpp b/indra/newview/llmutelist.cpp index 4ec2faf9573f67baa104fd8980fb4f003fbaadb5..b47d6f42143e51399374da6bbbb12e0de7d383f6 100644 --- a/indra/newview/llmutelist.cpp +++ b/indra/newview/llmutelist.cpp @@ -67,7 +67,6 @@ #include "llfloaterchat.h" #include "llimpanel.h" #include "llimview.h" -#include "lltrans.h" #include "llnotifications.h" #include "lluistring.h" #include "llviewerobject.h" @@ -500,35 +499,42 @@ void LLMuteList::updateRemove(const LLMute& mute) void notify_automute_callback(const LLUUID& agent_id, const std::string& first_name, const std::string& last_name, BOOL is_group, LLMuteList::EAutoReason reason) { - std::string auto_message; + std::string notif_name; switch (reason) { default: case LLMuteList::AR_IM: - auto_message = LLTrans::getString("AutoUnmuteByIM"); + notif_name = "AutoUnmuteByIM"; break; case LLMuteList::AR_INVENTORY: - auto_message = LLTrans::getString("AutoUnmuteByInventory"); + notif_name = "AutoUnmuteByInventory"; break; case LLMuteList::AR_MONEY: - auto_message = LLTrans::getString("AutoUnmuteByMoney"); + notif_name = "AutoUnmuteByMoney"; break; } - std::string message = auto_message; - LLStringUtil::format(message, LLSD().insert("FIRST", first_name).insert("LAST", last_name)); - - if (reason == LLMuteList::AR_IM) + LLSD args; + args["FIRST"] = first_name; + args["LAST"] = last_name; + + LLNotificationPtr notif_ptr = LLNotifications::instance().add(notif_name, args); + if (notif_ptr) { - LLFloaterIMPanel *timp = gIMMgr->findFloaterBySession(agent_id); - if (timp) + std::string message = notif_ptr->getMessage(); + + if (reason == LLMuteList::AR_IM) { - timp->addHistoryLine(message); + LLFloaterIMPanel *timp = gIMMgr->findFloaterBySession(agent_id); + if (timp) + { + timp->addHistoryLine(message); + } } - } - LLChat auto_chat(message); - LLFloaterChat::addChat(auto_chat, FALSE, FALSE); + LLChat auto_chat(message); + LLFloaterChat::addChat(auto_chat, FALSE, FALSE); + } } diff --git a/indra/newview/llnamebox.cpp b/indra/newview/llnamebox.cpp index 883ddc7b5344f25c5f8c579dd891c3b5574d5045..b85c1c759dab01a7e979f095e84a97a9128eaa60 100644 --- a/indra/newview/llnamebox.cpp +++ b/indra/newview/llnamebox.cpp @@ -46,7 +46,7 @@ // statics std::set<LLNameBox*> LLNameBox::sInstances; -static LLRegisterWidget<LLNameBox> r("name_box"); +static LLDefaultWidgetRegistry::Register<LLNameBox> r("name_box"); LLNameBox::LLNameBox(const Params& p) diff --git a/indra/newview/llnameeditor.cpp b/indra/newview/llnameeditor.cpp index d706daf0446353c6120469c788832cc8b175e1c6..7f9ba8ba5a954037d9e5e1143f2637fb092fbafd 100644 --- a/indra/newview/llnameeditor.cpp +++ b/indra/newview/llnameeditor.cpp @@ -43,7 +43,7 @@ #include "llstring.h" #include "llui.h" -static LLRegisterWidget<LLNameEditor> r("name_editor"); +static LLDefaultWidgetRegistry::Register<LLNameEditor> r("name_editor"); // statics std::set<LLNameEditor*> LLNameEditor::sInstances; diff --git a/indra/newview/llnamelistctrl.cpp b/indra/newview/llnamelistctrl.cpp index 95d787840ff75c9c3039a83db51f18e8e3889435..722113928bcea1b4f5d7c07d4b5a994bd042423c 100644 --- a/indra/newview/llnamelistctrl.cpp +++ b/indra/newview/llnamelistctrl.cpp @@ -44,7 +44,7 @@ #include "llscrolllistcolumn.h" #include "llsdparam.h" -static LLRegisterWidget<LLNameListCtrl> r("name_list"); +static LLDefaultWidgetRegistry::Register<LLNameListCtrl> r("name_list"); void LLNameListCtrl::NameTypeNames::declareValues() { @@ -266,7 +266,7 @@ void LLNameListCtrl::refreshAll(const LLUUID& id, const std::string& first, const std::string& last, BOOL is_group) { LLInstanceTracker<LLNameListCtrl>::instance_iter it; - for (it = instancesBegin(); it != instancesEnd(); ++it) + for (it = beginInstances(); it != endInstances(); ++it) { LLNameListCtrl* ctrl = *it; ctrl->refresh(id, first, last, is_group); diff --git a/indra/newview/llnamelistctrl.h b/indra/newview/llnamelistctrl.h index 379cd48a6a6167b920f7600e992b77d2d2044c76..6f64aa68ad442284b08ae32bf467522a56306591 100644 --- a/indra/newview/llnamelistctrl.h +++ b/indra/newview/llnamelistctrl.h @@ -68,8 +68,8 @@ class LLNameListCtrl struct NameColumn : public LLInitParam::Choice<NameColumn> { - Option<S32> column_index; - Option<std::string> column_name; + Alternative<S32> column_index; + Alternative<std::string> column_name; NameColumn() : column_name("name_column"), column_index("name_column_index", 0) diff --git a/indra/newview/llnavigationbar.cpp b/indra/newview/llnavigationbar.cpp index 4a9dadfc7a9f7356ac2d005e555c2d0834a15426..cf1d9a5d86755fd52e579d706df0c9f82389b188 100644 --- a/indra/newview/llnavigationbar.cpp +++ b/indra/newview/llnavigationbar.cpp @@ -34,31 +34,127 @@ #include "llnavigationbar.h" -#include "llfocusmgr.h" -#include "llmenugl.h" -#include "llparcel.h" -#include "llregistry.h" -#include "llwindow.h" +#include <llfloaterreg.h> +#include <llfocusmgr.h> +#include <lliconctrl.h> +#include <llmenugl.h> +#include <llwindow.h> #include "llagent.h" #include "llfloaterhtmlhelp.h" -#include "llfloaterreg.h" #include "lllocationhistory.h" #include "lllocationinputctrl.h" #include "llteleporthistory.h" #include "llslurl.h" #include "llurlsimstring.h" +#include "llviewerinventory.h" +#include "llviewermenu.h" #include "llviewerparcelmgr.h" -#include "llviewerregion.h" #include "llworldmap.h" +//-- LLTeleportHistoryMenuItem ----------------------------------------------- + +/** + * Item look varies depending on the type (backward/current/forward). + */ +class LLTeleportHistoryMenuItem : public LLMenuItemCallGL +{ +public: + typedef enum e_item_type + { + TYPE_BACKWARD, + TYPE_CURRENT, + TYPE_FORWARD, + } EType; + + struct Params : public LLInitParam::Block<Params, LLMenuItemCallGL::Params> + { + Mandatory<EType> item_type; + + Params() {} + Params(EType type, std::string title); + }; + + /*virtual*/ void draw(); + /*virtual*/ void onMouseEnter(S32 x, S32 y, MASK mask); + /*virtual*/ void onMouseLeave(S32 x, S32 y, MASK mask); + +private: + LLTeleportHistoryMenuItem(const Params&); + friend class LLUICtrlFactory; + + static const S32 ICON_WIDTH = 16; + static const S32 ICON_HEIGHT = 16; + static const std::string ICON_IMG_BACKWARD; + static const std::string ICON_IMG_FORWARD; + + LLIconCtrl* mArrowIcon; +}; + +const std::string LLTeleportHistoryMenuItem::ICON_IMG_BACKWARD("teleport_history_backward.tga"); +const std::string LLTeleportHistoryMenuItem::ICON_IMG_FORWARD("teleport_history_forward.tga"); + +LLTeleportHistoryMenuItem::Params::Params(EType type, std::string title) +{ + item_type(type); + font.name("SansSerif"); + + if (type == TYPE_CURRENT) + font.style("BOLD"); + else + title = " " + title; + + name(title); + label(title); +} + +LLTeleportHistoryMenuItem::LLTeleportHistoryMenuItem(const Params& p) +: LLMenuItemCallGL(p), + mArrowIcon(NULL) +{ + LLIconCtrl::Params icon_params; + icon_params.name("icon"); + icon_params.rect(LLRect(0, ICON_HEIGHT, ICON_WIDTH, 0)); + icon_params.mouse_opaque(false); + icon_params.follows.flags(FOLLOWS_LEFT | FOLLOWS_TOP); + icon_params.tab_stop(false); + icon_params.visible(false); + + mArrowIcon = LLUICtrlFactory::create<LLIconCtrl> (icon_params); + + // no image for the current item + if (p.item_type == TYPE_BACKWARD) + mArrowIcon->setValue(ICON_IMG_BACKWARD); + else if (p.item_type == TYPE_FORWARD) + mArrowIcon->setValue(ICON_IMG_FORWARD); + + addChild(mArrowIcon); +} + +void LLTeleportHistoryMenuItem::draw() +{ + // Draw menu item itself. + LLMenuItemCallGL::draw(); + + // Draw children if any. *TODO: move this to LLMenuItemGL? + LLUICtrl::draw(); +} + +void LLTeleportHistoryMenuItem::onMouseEnter(S32 x, S32 y, MASK mask) +{ + mArrowIcon->setVisible(TRUE); +} + +void LLTeleportHistoryMenuItem::onMouseLeave(S32 x, S32 y, MASK mask) +{ + mArrowIcon->setVisible(FALSE); +} + +//-- LNavigationBar ---------------------------------------------------------- /* TODO: - Load navbar height from saved settings (as it's done for status bar) or think of a better way. -- Share location info formatting code with LLStatusBar. -- Fix notifications appearing below navbar. -- Navbar should not be visible in mouselook mode. */ S32 NAVIGATION_BAR_HEIGHT = 60; // *HACK @@ -78,18 +174,20 @@ LLNavigationBar::LLNavigationBar() mBtnBack(NULL), mBtnForward(NULL), mBtnHome(NULL), - mBtnInfo(NULL), mBtnHelp(NULL), mCmbLocation(NULL), mLeSearch(NULL) { setIsChrome(TRUE); - + + // Register callbacks and load the location field context menu (NB: the order matters). + mCommitCallbackRegistrar.add("Navbar.Action", boost::bind(&LLNavigationBar::onLocationContextMenuItemClicked, this, _2)); + mEnableCallbackRegistrar.add("Navbar.EnableMenuItem", boost::bind(&LLNavigationBar::onLocationContextMenuItemEnabled, this, _2)); + LLUICtrlFactory::getInstance()->buildPanel(this, "panel_navigation_bar.xml"); // navigation bar can never get a tab setFocusRoot(FALSE); - } LLNavigationBar::~LLNavigationBar() @@ -102,14 +200,15 @@ BOOL LLNavigationBar::postBuild() mBtnBack = getChild<LLButton>("back_btn"); mBtnForward = getChild<LLButton>("forward_btn"); mBtnHome = getChild<LLButton>("home_btn"); - mBtnInfo = getChild<LLButton>("info_btn"); mBtnHelp = getChild<LLButton>("help_btn"); mCmbLocation= getChild<LLLocationInputCtrl>("location_combo"); mLeSearch = getChild<LLLineEditor>("search_input"); - if (!mBtnBack || !mBtnForward || !mBtnHome || !mBtnInfo || !mBtnHelp || - !mCmbLocation || !mLeSearch) + LLButton* search_btn = getChild<LLButton>("search_btn"); + + if (!mBtnBack || !mBtnForward || !mBtnHome || !mBtnHelp || + !mCmbLocation || !mLeSearch || !search_btn) { llwarns << "Malformed navigation bar" << llendl; return FALSE; @@ -124,23 +223,15 @@ BOOL LLNavigationBar::postBuild() mBtnForward->setHeldDownCallback(boost::bind(&LLNavigationBar::onBackOrForwardButtonHeldDown, this, _2)); mBtnHome->setClickedCallback(boost::bind(&LLNavigationBar::onHomeButtonClicked, this)); - mBtnInfo->setClickedCallback(boost::bind(&LLNavigationBar::onInfoButtonClicked, this)); mBtnHelp->setClickedCallback(boost::bind(&LLNavigationBar::onHelpButtonClicked, this)); - mCmbLocation->setFocusReceivedCallback(boost::bind(&LLNavigationBar::onLocationFocusReceived, this)); - mCmbLocation->setFocusLostCallback(boost::bind(&LLNavigationBar::onLocationFocusLost, this)); - mCmbLocation->setTextEntryCallback(boost::bind(&LLNavigationBar::onLocationTextEntry, this, _1)); - mCmbLocation->setPrearrangeCallback(boost::bind(&LLNavigationBar::onLocationPrearrange, this, _2)); mCmbLocation->setSelectionCallback(boost::bind(&LLNavigationBar::onLocationSelection, this)); mLeSearch->setCommitCallback(boost::bind(&LLNavigationBar::onSearchCommit, this)); + search_btn->setClickedCallback(boost::bind(&LLNavigationBar::onSearchCommit, this)); - // Register callbacks and load the location field context menu (NB: the order matters). - LLUICtrl::CommitCallbackRegistry::ScopedRegistrar commit_registrar; - LLMenuItemGL::EnableCallbackRegistry::ScopedRegistrar enable_registrar; - commit_registrar.add("Navbar.Action", boost::bind(&LLNavigationBar::onLocationContextMenuItemClicked, this, _2)); - enable_registrar.add("Navbar.EnableMenuItem", boost::bind(&LLNavigationBar::onLocationContextMenuItemEnabled, this, _2)); - mLocationContextMenu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_navbar.xml", this); + // Load the location field context menu + mLocationContextMenu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_navbar.xml", gMenuHolder); if (!mLocationContextMenu) { llwarns << "Error loading navigation bar context menu" << llendl; @@ -150,49 +241,34 @@ BOOL LLNavigationBar::postBuild() // we'll be notified on teleport history changes LLTeleportHistory::getInstance()->setHistoryChangedCallback( boost::bind(&LLNavigationBar::onTeleportHistoryChanged, this)); - - LLLocationHistory::getInstance()->setLoadedCallback( - boost::bind(&LLNavigationBar::onLocationHistoryLoaded, this)); - - LLLocationHistory::getInstance()->load(); // *TODO: temporary, remove this after debugging - LLTeleportHistory::getInstance()->load(); // *TODO: temporary, remove this after debugging - + return TRUE; } void LLNavigationBar::draw() { - // *TODO: It doesn't look very optimal to refresh location every frame. - refreshLocation(); LLPanel::draw(); } BOOL LLNavigationBar::handleRightMouseDown(S32 x, S32 y, MASK mask) { + // *HACK. We should use mCmbLocation's right click callback instead. + // If the location field is clicked then show its context menu. if (mCmbLocation->getRect().pointInRect(x, y)) { - - // Pass the focus to the line editor when it is righ-clicked + // Pass the focus to the line editor when it is right-clicked mCmbLocation->setFocus(TRUE); - // IAN BUG why do the individual items need to be enabled individually here? - // where are they disabled? - if (mLocationContextMenu) { - mLocationContextMenu->setItemEnabled("Cut", mCmbLocation->canCut()); - mLocationContextMenu->setItemEnabled("Copy", mCmbLocation->canCopy()); - mLocationContextMenu->setItemEnabled("Paste", mCmbLocation->canPaste()); - mLocationContextMenu->setItemEnabled("Delete", mCmbLocation->canDeselect()); - mLocationContextMenu->setItemEnabled("Select All", mCmbLocation->canSelectAll()); - mLocationContextMenu->buildDrawLabels(); mLocationContextMenu->updateParent(LLMenuGL::sMenuContainer); LLMenuGL::showPopup(this, mLocationContextMenu, x, y); } + return TRUE; } - return TRUE; + return LLPanel:: handleRightMouseDown(x, y, mask); } void LLNavigationBar::onBackButtonClicked() @@ -216,13 +292,6 @@ void LLNavigationBar::onHomeButtonClicked() gAgent.teleportHome(); } -void LLNavigationBar::onInfoButtonClicked() -{ - // XXX temporary - LLTeleportHistory::getInstance()->dump(); - LLLocationHistory::getInstance()->dump(); -} - void LLNavigationBar::onHelpButtonClicked() { gViewerHtmlHelp.show(); @@ -230,17 +299,7 @@ void LLNavigationBar::onHelpButtonClicked() void LLNavigationBar::onSearchCommit() { - std::string search_text = mLeSearch->getText(); - LLFloaterReg::showInstance("search", LLSD().insert("panel", "all").insert("id", LLSD(search_text))); -} - -void LLNavigationBar::onLocationFocusReceived() -{ - mCmbLocation->setTextEntry(gAgent.getSLURL()); -} - -void LLNavigationBar::onLocationFocusLost() -{ + invokeSearch(mLeSearch->getText()); } void LLNavigationBar::onTeleportHistoryMenuItemClicked(const LLSD& userdata) @@ -253,51 +312,37 @@ void LLNavigationBar::onTeleportHistoryMenuItemClicked(const LLSD& userdata) // or selects a location from the typed locations dropdown. void LLNavigationBar::onLocationSelection() { - std::string loc_str = mCmbLocation->getSimple(); + std::string typed_location = mCmbLocation->getSimple(); // Will not teleport to empty location. - if (loc_str.empty()) + if (typed_location.empty()) return; - - // *TODO: validate location before adding it to the history. - S32 selected_item = mCmbLocation->getCurrentIndex(); - if (selected_item == -1) // user has typed text + + std::string region_name; + LLVector3 local_coords(128, 128, 0); + + // Is the typed location a SLURL? + if (LLSLURL::isSLURL(typed_location)) { - LLLocationHistory* lh = LLLocationHistory::getInstance(); - mCmbLocation->add(loc_str); - lh->addItem(loc_str); - lh->save(); + // Yes. Extract region name and local coordinates from it. + S32 x = 0, y = 0, z = 0; + if (LLURLSimString::parse(LLSLURL::stripProtocol(typed_location), ®ion_name, &x, &y, &z)) + local_coords.set(x, y, z); + else + return; } - - // If the input is not a SLURL treat it as a region name. - if (!LLSLURL::isSLURL(loc_str)) + else { - loc_str = LLSLURL::buildSLURL(loc_str, 128, 128, 0); + // Treat it as region name. + region_name = typed_location; } - - teleport(loc_str); -} -void LLNavigationBar::onLocationTextEntry(LLUICtrl* ctrl) -{ - LLLineEditor* editor = dynamic_cast<LLLineEditor*>(ctrl); - if (!editor) - return; - - // *TODO: decide whether to populate the list here on in LLLocationInputCtrl. - std::string text = editor->getText(); - //rebuildLocationHistory(text); -} - -void LLNavigationBar::onLocationPrearrange(const LLSD& data) -{ - std::string filter = data.asString(); - rebuildLocationHistory(filter); -} - -void LLNavigationBar::onLocationHistoryLoaded() -{ - rebuildLocationHistory(); + // Resolve the region name to its global coordinates. + // If resolution succeeds we'll teleport. + LLWorldMap::url_callback_t cb = boost::bind( + &LLNavigationBar::onRegionNameResponse, this, + typed_location, region_name, local_coords, _1, _2, _3, _4); + LLWorldMap::getInstance()->sendNamedRegionRequest(region_name, cb, std::string("unused"), false); } void LLNavigationBar::onTeleportHistoryChanged() @@ -309,57 +354,13 @@ void LLNavigationBar::onTeleportHistoryChanged() mBtnForward->setEnabled(cur_item < ((int)h->getItems().size() - 1)); } -void LLNavigationBar::refreshLocation() -{ - // Update location field. - if (mCmbLocation && !mCmbLocation->childHasFocus()) - { - std::string location_name; - - if (!gAgent.buildLocationString(location_name, LLAgent::LOCATION_FORMAT_FULL)) - location_name = "Unknown"; - - mCmbLocation->setText(location_name); - } -} - -void LLNavigationBar::rebuildLocationHistory(std::string filter) -{ - if (!mCmbLocation) - { - llwarns << "Cannot find location history control" << llendl; - return; - } - - LLLocationHistory::location_list_t filtered_items; - const LLLocationHistory::location_list_t* itemsp = NULL; - LLLocationHistory* lh = LLLocationHistory::getInstance(); - - if (filter.empty()) - itemsp = &lh->getItems(); - else - { - lh->getMatchingItems(filter, filtered_items); - itemsp = &filtered_items; - } - - mCmbLocation->removeall(); - for (LLLocationHistory::location_list_t::const_reverse_iterator it = itemsp->rbegin(); it != itemsp->rend(); it++) - mCmbLocation->add(*it); -} - void LLNavigationBar::rebuildTeleportHistoryMenu() { // Has the pop-up menu been built? if (mTeleportHistoryMenu) { // Clear it. - // *TODO: LLMenuGL should have a method for removing all items. - while (mTeleportHistoryMenu->getItemCount()) - { - LLMenuItemGL* itemp = mTeleportHistoryMenu->getItem(0); - mTeleportHistoryMenu->removeChild(itemp); - } + mTeleportHistoryMenu->empty(); } else { @@ -369,6 +370,7 @@ void LLNavigationBar::rebuildTeleportHistoryMenu() menu_p.can_tear_off(false); menu_p.visible(false); menu_p.bg_visible(true); + menu_p.scrollable(true); mTeleportHistoryMenu = LLUICtrlFactory::create<LLMenuGL>(menu_p); addChild(mTeleportHistoryMenu); @@ -382,26 +384,44 @@ void LLNavigationBar::rebuildTeleportHistoryMenu() // Items will be shown in the reverse order, just like in Firefox. for (int i = (int)hist_items.size()-1; i >= 0; i--) { - LLMenuItemCallGL::Params item_params; - std::string title = hist_items[i].mTitle; - - if (i == cur_item) - item_params.font.style("BOLD"); + LLTeleportHistoryMenuItem::EType type; + if (i < cur_item) + type = LLTeleportHistoryMenuItem::TYPE_BACKWARD; + else if (i > cur_item) + type = LLTeleportHistoryMenuItem::TYPE_FORWARD; else - title = " " + title; + type = LLTeleportHistoryMenuItem::TYPE_CURRENT; - item_params.name(title); - item_params.label(title); + LLTeleportHistoryMenuItem::Params item_params(type, hist_items[i].mTitle); item_params.on_click.function(boost::bind(&LLNavigationBar::onTeleportHistoryMenuItemClicked, this, i)); - mTeleportHistoryMenu->addChild(LLUICtrlFactory::create<LLMenuItemCallGL>(item_params)); + mTeleportHistoryMenu->addChild(LLUICtrlFactory::create<LLTeleportHistoryMenuItem>(item_params)); } } -// static void LLNavigationBar::onRegionNameResponse( + std::string typed_location, + std::string region_name, LLVector3 local_coords, U64 region_handle, const std::string& url, const LLUUID& snapshot_id, bool teleport) { + // Invalid location? + if (!region_handle) + { + invokeSearch(typed_location); + return; + } + + // Location is valid. Add it to the typed locations history. + S32 selected_item = mCmbLocation->getCurrentIndex(); + if (selected_item == -1) // user has typed text + { + LLLocationHistory* lh = LLLocationHistory::getInstance(); + mCmbLocation->add(typed_location); + lh->addItem(typed_location); + lh->save(); + } + + // Teleport to the location. LLVector3d region_pos = from_region_handle(region_handle); LLVector3d global_pos = region_pos + (LLVector3d) local_coords; @@ -409,25 +429,6 @@ void LLNavigationBar::onRegionNameResponse( gAgent.teleportViaLocation(global_pos); } -// static -void LLNavigationBar::teleport(std::string slurl) -{ - std::string sim_string = LLSLURL::stripProtocol(slurl); - std::string region_name; - S32 x = 128; - S32 y = 128; - S32 z = 0; - - LLURLSimString::parse(sim_string, ®ion_name, &x, &y, &z); - - // Resolve region name to global coords. - LLVector3 local_coords(x, y, z); - LLWorldMap::getInstance()->sendNamedRegionRequest(region_name, - boost::bind(&LLNavigationBar::onRegionNameResponse, local_coords, _1, _2, _3, _4), - slurl, - false); // don't teleport -} - void LLNavigationBar::showTeleportHistoryMenu() { // Don't show the popup if teleport history is empty. @@ -449,75 +450,84 @@ void LLNavigationBar::showTeleportHistoryMenu() LLMenuGL::showPopup(this, mTeleportHistoryMenu, btnBackRect.mLeft, btnBackRect.mBottom); // *HACK pass the mouse capturing to the drop-down menu - gFocusMgr.setMouseCapture( mTeleportHistoryMenu ); + gFocusMgr.setMouseCapture( NULL ); } void LLNavigationBar::onLocationContextMenuItemClicked(const LLSD& userdata) { - std::string level = userdata.asString(); + std::string item = userdata.asString(); + LLLineEditor* location_entry = mCmbLocation->getTextEntry(); - if (level == std::string("copy_url")) + if (item == std::string("copy_url")) { - LLUIString url(gAgent.getSLURL()); - LLView::getWindow()->copyTextToClipboard(url.getWString()); - lldebugs << "Copy SLURL" << llendl; + std::string sl_url = gAgent.getSLURL(); + LLView::getWindow()->copyTextToClipboard(utf8str_to_wstring(sl_url)); + + LLSD args; + args["SLURL"] = sl_url; + LLNotifications::instance().add("CopySLURL", args); } - else if (level == std::string("landmark")) + else if (item == std::string("landmark")) { - // *TODO To be implemented - lldebugs << "Add Landmark" << llendl; + LLFloaterReg::showInstance("add_landmark"); } - else if (level == std::string("cut")) + else if (item == std::string("cut")) { - mCmbLocation->cut(); - lldebugs << "Cut" << llendl; + location_entry->cut(); } - else if (level == std::string("copy")) + else if (item == std::string("copy")) { - mCmbLocation->copy(); - lldebugs << "Copy" << llendl; + location_entry->copy(); } - else if (level == std::string("paste")) + else if (item == std::string("paste")) { - mCmbLocation->paste(); - lldebugs << "Paste" << llendl; + location_entry->paste(); } - else if (level == std::string("delete")) + else if (item == std::string("delete")) { - mCmbLocation->deleteSelection(); - lldebugs << "Delete" << llendl; + location_entry->deleteSelection(); } - else if (level == std::string("select_all")) + else if (item == std::string("select_all")) { - mCmbLocation->selectAll(); - lldebugs << "Select All" << llendl; + location_entry->selectAll(); } } bool LLNavigationBar::onLocationContextMenuItemEnabled(const LLSD& userdata) { - std::string level = userdata.asString(); + std::string item = userdata.asString(); + const LLLineEditor* location_entry = mCmbLocation->getTextEntry(); - if (level == std::string("can_cut")) + if (item == std::string("can_cut")) { - return mCmbLocation->canCut(); + return location_entry->canCut(); } - else if (level == std::string("can_copy")) + else if (item == std::string("can_copy")) { - return mCmbLocation->canCopy(); + return location_entry->canCopy(); } - else if (level == std::string("can_paste")) + else if (item == std::string("can_paste")) { - return mCmbLocation->canPaste(); + return location_entry->canPaste(); } - else if (level == std::string("can_delete")) + else if (item == std::string("can_delete")) { - return mCmbLocation->canDeselect(); + return location_entry->canDeselect(); } - else if (level == std::string("can_select_all")) + else if (item == std::string("can_select_all")) { - return mCmbLocation->canSelectAll(); + return location_entry->canSelectAll(); } return false; } + +void LLNavigationBar::handleLoginComplete() +{ + mCmbLocation->handleLoginComplete(); +} + +void LLNavigationBar::invokeSearch(std::string search_text) +{ + LLFloaterReg::showInstance("search", LLSD().insert("panel", "all").insert("id", LLSD(search_text))); +} diff --git a/indra/newview/llnavigationbar.h b/indra/newview/llnavigationbar.h index 4ef3039eb7b1212dca378b84f34740ed93bc851b..4c8375839e87d1f07fce52b801981cdf60979452 100644 --- a/indra/newview/llnavigationbar.h +++ b/indra/newview/llnavigationbar.h @@ -58,13 +58,14 @@ class LLNavigationBar /*virtual*/ BOOL postBuild(); /*virtual*/ BOOL handleRightMouseDown(S32 x, S32 y, MASK mask); + void handleLoginComplete(); + private: LLNavigationBar(); - void refreshLocation(); - void rebuildLocationHistory(std::string filter = ""); void rebuildTeleportHistoryMenu(); void showTeleportHistoryMenu(); + void invokeSearch(std::string search_text); // callbacks bool onLocationContextMenuItemEnabled(const LLSD& userdata); @@ -75,21 +76,18 @@ class LLNavigationBar void onBackOrForwardButtonHeldDown(const LLSD& param); void onForwardButtonClicked(); void onHomeButtonClicked(); - void onInfoButtonClicked(); void onHelpButtonClicked(); - void onLocationFocusReceived(); - void onLocationFocusLost(); void onLocationSelection(); - void onLocationTextEntry(LLUICtrl* ctrl); void onLocationPrearrange(const LLSD& data); void onLocationHistoryLoaded(); void onSearchCommit(); - static void onRegionNameResponse( - LLVector3 local_coords, U64 region_handle, const std::string& url, + void onRegionNameResponse( + std::string typed_location, + std::string region_name, + LLVector3 local_coords, + U64 region_handle, const std::string& url, const LLUUID& snapshot_id, bool teleport); - static void teleport(std::string slurl); - static LLNavigationBar *sInstance; LLMenuGL* mLocationContextMenu; @@ -97,7 +95,6 @@ class LLNavigationBar LLButton* mBtnBack; LLButton* mBtnForward; LLButton* mBtnHome; - LLButton* mBtnInfo; LLButton* mBtnHelp; LLLineEditor* mLeSearch; LLLocationInputCtrl* mCmbLocation; diff --git a/indra/newview/llnetmap.cpp b/indra/newview/llnetmap.cpp index 53c7484e722544cd9aebf5bfef96a443daaf7f7b..b40af37f7ec1df8b9baa76ce5a4d34a319cf82d3 100644 --- a/indra/newview/llnetmap.cpp +++ b/indra/newview/llnetmap.cpp @@ -56,9 +56,7 @@ #include "llworld.h" #include "llworldmapview.h" // shared draw code -static LLRegisterWidget<LLNetMap> r1("net_map"); - -using namespace LLOldEvents; +static LLDefaultWidgetRegistry::Register<LLNetMap> r1("net_map"); const F32 MAP_SCALE_MIN = 64; const F32 MAP_SCALE_MID = 172; diff --git a/indra/newview/lloutputmonitorctrl.cpp b/indra/newview/lloutputmonitorctrl.cpp index 4ab4266221c1881dd4c263cf21cb01e3f151568f..ff26707a561b6d9a06f7ec3a1cd9cd3fb104836e 100644 --- a/indra/newview/lloutputmonitorctrl.cpp +++ b/indra/newview/lloutputmonitorctrl.cpp @@ -39,7 +39,7 @@ // viewer includes #include "llvoiceclient.h" -static LLRegisterWidget<LLOutputMonitorCtrl> r("output_monitor"); +static LLDefaultWidgetRegistry::Register<LLOutputMonitorCtrl> r("output_monitor"); // The defaults will be initialized in the constructor. LLColor4 LLOutputMonitorCtrl::sColorMuted; @@ -74,6 +74,8 @@ LLOutputMonitorCtrl::LLOutputMonitorCtrl(const LLOutputMonitorCtrl::Params& p) sRectsNumber = output_monitor_rects_number; sRectWidthRatio = output_monitor_rect_width_ratio; sRectHeightRatio = output_monitor_rect_height_ratio; + + mBorder = p.draw_border; } LLOutputMonitorCtrl::~LLOutputMonitorCtrl() @@ -96,10 +98,14 @@ void LLOutputMonitorCtrl::draw() // const int monh = getRect().getHeight(); const int monw = getRect().getWidth(); - const int maxrects = sRectsNumber; - const int period = monw / maxrects; - const int rectw = llfloor(period * sRectWidthRatio); + int maxrects = sRectsNumber; + const int period = llmax(1, monw / maxrects, 0, 0); // "1" - min value for the period + const int rectw = llmax(1, llfloor(period * sRectWidthRatio), 0, 0); // "1" - min value for the rect's width const int recth = llfloor(monh * sRectHeightRatio); + + if(period == 1 && rectw == 1) //if we have so small control, then "maxrects = monitor's_width - 2*monitor_border's_width + maxrects = monw-2; + const int nrects = mIsMuted ? maxrects : llfloor(mPower * maxrects); // how many rects to draw? const int rectbtm = (monh - recth) / 2; const int recttop = rectbtm + recth; @@ -130,5 +136,6 @@ void LLOutputMonitorCtrl::draw() // // Draw bounding box. // - gl_rect_2d(0, monh, monw, 0, sColorBound, FALSE); + if(mBorder) + gl_rect_2d(0, monh, monw, 0, sColorBound, FALSE); } diff --git a/indra/newview/lloutputmonitorctrl.h b/indra/newview/lloutputmonitorctrl.h index d5ab8e75ce1a886589726ce1a74434fad296cafa..881ad0f010d7d4dee1ab11b430ddd4a333198ae8 100644 --- a/indra/newview/lloutputmonitorctrl.h +++ b/indra/newview/lloutputmonitorctrl.h @@ -49,14 +49,18 @@ class LLOutputMonitorCtrl public: struct Params : public LLInitParam::Block<Params, LLView::Params> { + Optional<bool> draw_border; + Params() { + draw_border = true; name = "output_monitor"; follows.flags(FOLLOWS_LEFT|FOLLOWS_TOP); mouse_opaque = false; - } + }; }; protected: + bool mBorder; LLOutputMonitorCtrl(const Params&); friend class LLUICtrlFactory; diff --git a/indra/newview/lloverlaybar.cpp b/indra/newview/lloverlaybar.cpp index e6ee91cdd389163cd3193f1c0628caca82313145..2ccd729e0a2821770b0d413478012a029a9f3825 100644 --- a/indra/newview/lloverlaybar.cpp +++ b/indra/newview/lloverlaybar.cpp @@ -45,7 +45,6 @@ #include "llfocusmgr.h" #include "llimview.h" #include "llmediaremotectrl.h" -#include "llpanelaudiovolume.h" #include "llparcel.h" #include "lltextbox.h" #include "llui.h" @@ -60,7 +59,7 @@ #include "lluictrlfactory.h" #include "llviewerwindow.h" #include "llvoiceclient.h" -#include "llvoavatar.h" +#include "llvoavatarself.h" #include "llvoiceremotectrl.h" #include "llwebbrowserctrl.h" #include "llselectmgr.h" @@ -169,8 +168,9 @@ void LLOverlayBar::layoutButtons() // calculate button widths const S32 MAX_BUTTON_WIDTH = 150; + const S32 STATUS_BAR_PAD = 10; S32 segment_width = llclamp(lltrunc((F32)(bar_width) / (F32)button_list.size()), 0, MAX_BUTTON_WIDTH); - S32 btn_width = segment_width - gSavedSettings.getS32("StatusBarPad"); + S32 btn_width = segment_width - STATUS_BAR_PAD; // Evenly space all buttons, starting from left S32 left = 0; diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp index d0816ad4d803451381fe824551ae4e6fc554b924..d7929cc5c2232e817bdc923cb39db0de6fd510e4 100644 --- a/indra/newview/llpanelavatar.cpp +++ b/indra/newview/llpanelavatar.cpp @@ -34,60 +34,17 @@ #include "llpanelavatar.h" -#include "llclassifiedflags.h" -#include "llfloaterreg.h" -#include "llfontgl.h" -#include "llcachename.h" - -#include "llavatarconstants.h" -#include "lluiconstants.h" -#include "lltextbox.h" -#include "llviewertexteditor.h" -#include "lltexturectrl.h" #include "llagent.h" -#include "llviewerwindow.h" -#include "llbutton.h" +#include "llavatarconstants.h" #include "llcallingcard.h" -#include "llcheckboxctrl.h" -#include "llfloater.h" - -#include "llfloaterfriends.h" -#include "llfloatergroupinfo.h" -#include "llfloaterworldmap.h" -#include "llfloatermute.h" -#include "llfloateravatarinfo.h" -#include "lliconctrl.h" -#include "llinventoryview.h" -#include "lllineeditor.h" -#include "llnameeditor.h" -#include "llmutelist.h" -#include "llpanelclassified.h" -#include "llpanelpick.h" -#include "llscrolllistctrl.h" -#include "llscrolllistitem.h" -#include "llstatusbar.h" -#include "lltabcontainer.h" +#include "llcombobox.h" +#include "llfriendactions.h" #include "llimview.h" +#include "lltexteditor.h" +#include "lltexturectrl.h" #include "lltooldraganddrop.h" -#include "lluiconstants.h" -#include "llvoavatar.h" -#include "llviewercontrol.h" #include "llviewermenu.h" // *FIX: for is_agent_friend() -#include "llviewergenericmessage.h" // send_generic_message -#include "llviewerobjectlist.h" -#include "llviewerregion.h" -#include "llweb.h" -#include "llinventorymodel.h" -#include "roles_constants.h" -#include "lltrans.h" -#include "lluictrlfactory.h" - -// Statics -std::list<LLPanelAvatar*> LLPanelAvatar::sAllPanels; -BOOL LLPanelAvatar::sAllowFirstLife = FALSE; - -extern void handle_lure(const LLUUID& invitee); -extern void handle_pay_by_id(const LLUUID& payee); +#include "llscrollcontainer.h" //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Class LLDropTarget @@ -157,2049 +114,553 @@ BOOL LLDropTarget::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, return FALSE; } -static LLRegisterWidget<LLDropTarget> r("drop_target"); - +static LLDefaultWidgetRegistry::Register<LLDropTarget> r("drop_target"); +////////////////////////////////////////////////////////////////////////// //----------------------------------------------------------------------------- -// LLPanelAvatarTab() +// LLPanelProfileTab() //----------------------------------------------------------------------------- -LLPanelAvatarTab::LLPanelAvatarTab(LLPanelAvatar* panel_avatar) -: LLPanel(), - mPanelAvatar(panel_avatar), - mDataRequested(false) -{ } - -// virtual -void LLPanelAvatarTab::draw() +////////////////////////////////////////////////////////////////////////// +LLPanelProfileTab::LLPanelProfileTab(const LLUUID& avatar_id) + : LLPanel() + , mAvatarId(LLUUID::null) + , mProfileType(PT_UNKNOWN) { - refresh(); - - LLPanel::draw(); + setAvatarId(avatar_id); } -void LLPanelAvatarTab::sendAvatarProfileRequestIfNeeded(const std::string& method) +LLPanelProfileTab::LLPanelProfileTab(const Params& params ) + : LLPanel() + , mAvatarId(LLUUID::null) + , mProfileType(PT_UNKNOWN) { - if (!mDataRequested) - { - std::vector<std::string> strings; - strings.push_back( mPanelAvatar->getAvatarID().asString() ); - send_generic_message(method, strings); - mDataRequested = true; - } -} -//----------------------------------------------------------------------------- -// LLPanelAvatarSecondLife() -//----------------------------------------------------------------------------- -LLPanelAvatarSecondLife::LLPanelAvatarSecondLife(LLPanelAvatar* panel_avatar ) -: LLPanelAvatarTab(panel_avatar), - mPartnerID() -{ } -void LLPanelAvatarSecondLife::refresh() +LLPanelProfileTab::~LLPanelProfileTab() { - updatePartnerName(); + // *TODO Vadim: use notNull() instead. (there are several similar cases below) + if(mAvatarId.notNull()) + { + LLAvatarPropertiesProcessor::getInstance()->removeObserver(getAvatarId(),this); + } } -void LLPanelAvatarSecondLife::updatePartnerName() +void LLPanelProfileTab::setAvatarId(const LLUUID& avatar_id) { - if (mPartnerID.notNull()) + if(avatar_id.notNull()) { - std::string first, last; - BOOL found = gCacheName->getName(mPartnerID, first, last); - if (found) + if(mAvatarId.notNull()) { - childSetTextArg("partner_edit", "[FIRST]", first); - childSetTextArg("partner_edit", "[LAST]", last); + LLAvatarPropertiesProcessor::getInstance()->removeObserver(mAvatarId,this); } - childSetEnabled("partner_info", TRUE); + mAvatarId = avatar_id; + LLAvatarPropertiesProcessor::getInstance()->addObserver(getAvatarId(),this); + setProfileType(); } } -//----------------------------------------------------------------------------- -// clearControls() -// Empty the data out of the controls, since we have to wait for new -// data off the network. -//----------------------------------------------------------------------------- -void LLPanelAvatarSecondLife::clearControls() +void LLPanelProfileTab::setProfileType() { - LLTextureCtrl* image_ctrl = getChild<LLTextureCtrl>("img"); - if(image_ctrl) - { - image_ctrl->setImageAssetID(LLUUID::null); - } - childSetValue("about", ""); - childSetValue("born", ""); - childSetValue("acct", ""); - - childSetTextArg("partner_edit", "[FIRST]", LLStringUtil::null); - childSetTextArg("partner_edit", "[LAST]", LLStringUtil::null); - - mPartnerID = LLUUID::null; - - LLScrollListCtrl* group_list = getChild<LLScrollListCtrl>("groups"); - if(group_list) - { - group_list->deleteAllItems(); - } - LLScrollListCtrl* ratings_list = getChild<LLScrollListCtrl>("ratings"); - if(ratings_list) - { - ratings_list->deleteAllItems(); - } - + mProfileType = (gAgentID == mAvatarId) ? PT_OWN : PT_OTHER; } - -//----------------------------------------------------------------------------- -// enableControls() -//----------------------------------------------------------------------------- -void LLPanelAvatarSecondLife::enableControls(BOOL self) +void LLPanelProfileTab::onActivate(const LLUUID& id) { - childSetEnabled("img", self); - childSetEnabled("about", self); - childSetVisible("allow_publish", self); - childSetEnabled("allow_publish", self); - childSetVisible("?", self); - childSetEnabled("?", self); + setAvatarId(id); + updateData(); } - -// static -void LLPanelAvatarSecondLife::onClickImage(void *) -{ } - -// static -void LLPanelAvatarSecondLife::onDoubleClickGroup(void* data) +void LLPanelProfileTab::onAddFriend() { - LLPanelAvatarSecondLife* self = (LLPanelAvatarSecondLife*)data; - - - LLScrollListCtrl* group_list = self->getChild<LLScrollListCtrl>("groups"); - if(group_list) + if (getAvatarId().notNull()) { - LLScrollListItem* item = group_list->getFirstSelected(); - - if(item && item->getUUID().notNull()) - { - llinfos << "Show group info " << item->getUUID() << llendl; - - LLFloaterGroupInfo::showFromUUID(item->getUUID()); - } + std::string name; + gCacheName->getFullName(getAvatarId(),name); + LLFriendActions::requestFriendshipDialog(getAvatarId(), name); } } -// static -void LLPanelAvatarSecondLife::onClickPublishHelp(void *) -{ - LLNotifications::instance().add("ClickPublishHelpAvatar"); -} - -// static -void LLPanelAvatarSecondLife::onClickPartnerHelp(void *) +void LLPanelProfileTab::onIM() { - LLNotifications::instance().add("ClickPartnerHelpAvatar", LLSD(), LLSD(), onClickPartnerHelpLoadURL); -} - -// static -bool LLPanelAvatarSecondLife::onClickPartnerHelpLoadURL(const LLSD& notification, const LLSD& response) -{ - S32 option = LLNotification::getSelectedOption(notification, response); - if (option == 0) + if (getAvatarId().notNull()) { - LLWeb::loadURL("http://secondlife.com/partner"); + std::string name; + gCacheName->getFullName(getAvatarId(), name); + gIMMgr->addSession(name, IM_NOTHING_SPECIAL, getAvatarId()); } - return false; } -// static -void LLPanelAvatarSecondLife::onClickPartnerInfo(void *data) +void LLPanelProfileTab::onTeleport() { - LLPanelAvatarSecondLife* self = (LLPanelAvatarSecondLife*) data; - if (self->mPartnerID.notNull()) + if(getAvatarId().notNull()) { - LLFloaterAvatarInfo::showFromProfile(self->mPartnerID, - self->calcScreenRect()); + LLFriendActions::offerTeleport(getAvatarId()); } } +////////////////////////////////////////////////////////////////////////// //----------------------------------------------------------------------------- -// LLPanelAvatarFirstLife() +// LLPanelAvatarProfile() //----------------------------------------------------------------------------- -LLPanelAvatarFirstLife::LLPanelAvatarFirstLife(LLPanelAvatar* panel_avatar ) -: LLPanelAvatarTab(panel_avatar) +////////////////////////////////////////////////////////////////////////// +LLPanelAvatarProfile::LLPanelAvatarProfile(const LLUUID& avatar_id /* = LLUUID::null */) + : LLPanelProfileTab(avatar_id), mUpdated(false), mEditMode(false), mStatusCombobox(NULL), mStatusMessage(NULL) { + updateData(); } -void LLPanelAvatarFirstLife::enableControls(BOOL self) +LLPanelAvatarProfile::LLPanelAvatarProfile(const Params& params ) + : LLPanelProfileTab(params), mUpdated(false), mEditMode(false), mStatusCombobox(NULL), mStatusMessage(NULL) { - childSetEnabled("img", self); - childSetEnabled("about", self); } -//----------------------------------------------------------------------------- -// postBuild -//----------------------------------------------------------------------------- - -BOOL LLPanelAvatarSecondLife::postBuild(void) +LLPanelAvatarProfile::~LLPanelAvatarProfile() { - childSetEnabled("born", FALSE); - childSetEnabled("partner_edit", FALSE); - childSetAction("partner_help",onClickPartnerHelp,this); - childSetAction("partner_info", onClickPartnerInfo, this); - childSetEnabled("partner_info", mPartnerID.notNull()); - - childSetAction("?",onClickPublishHelp,this); - BOOL own_avatar = (getPanelAvatar()->getAvatarID() == gAgent.getID() ); - enableControls(own_avatar); - - childSetVisible("About:",LLPanelAvatar::sAllowFirstLife); - childSetVisible("(500 chars)",LLPanelAvatar::sAllowFirstLife); - childSetVisible("about",LLPanelAvatar::sAllowFirstLife); - - childSetVisible("allow_publish",LLPanelAvatar::sAllowFirstLife); - childSetVisible("?",LLPanelAvatar::sAllowFirstLife); - - childSetVisible("online_yes",FALSE); - - // These are cruft but may still exist in some xml files - // TODO: remove the following 2 lines once translators grab these changes - childSetVisible("online_unknown",FALSE); - childSetVisible("online_no",FALSE); - - childSetAction("Find on Map", LLPanelAvatar::onClickTrack, getPanelAvatar()); - childSetAction("Instant Message...", LLPanelAvatar::onClickIM, getPanelAvatar()); - - childSetAction("Add Friend...", LLPanelAvatar::onClickAddFriend, getPanelAvatar()); - childSetAction("Pay...", LLPanelAvatar::onClickPay, getPanelAvatar()); - childSetAction("Mute", LLPanelAvatar::onClickMute, getPanelAvatar() ); - - childSetAction("Offer Teleport...", LLPanelAvatar::onClickOfferTeleport, - getPanelAvatar() ); - - getChild<LLScrollListCtrl>("groups")->setDoubleClickCallback(onDoubleClickGroup, this ); - - getChild<LLTextureCtrl>("img")->setFallbackImageName("default_profile_picture.j2c"); - - return TRUE; + if(getAvatarId().notNull()) + { + LLAvatarPropertiesProcessor::getInstance()->removeObserver(getAvatarId(),this); + } } -BOOL LLPanelAvatarFirstLife::postBuild(void) +void* LLPanelAvatarProfile::create(void* data /* = NULL */) { - BOOL own_avatar = (getPanelAvatar()->getAvatarID() == gAgent.getID() ); - enableControls(own_avatar); - - getChild<LLTextureCtrl>("img")->setFallbackImageName("default_profile_picture.j2c"); - - return TRUE; + LLSD* id = NULL; + if(data) + { + id = static_cast<LLSD*>(data); + return new LLPanelAvatarProfile(LLUUID(id->asUUID())); + } + return new LLPanelAvatarProfile(); } -BOOL LLPanelAvatarNotes::postBuild(void) +void LLPanelAvatarProfile::updateData() { - childSetCommitCallback("notes edit",onCommitNotes,this); - - LLTextEditor* te = getChild<LLTextEditor>("notes edit"); - if(te) te->setCommitOnFocusLost(TRUE); - return TRUE; + if (getAvatarId().notNull()) + { + LLAvatarPropertiesProcessor::getInstance()->sendDataRequest(getAvatarId(),APT_PROPERTIES); + LLAvatarPropertiesProcessor::getInstance()->sendDataRequest(getAvatarId(),APT_GROUPS); + } } -BOOL LLPanelAvatarWeb::postBuild(void) +void LLPanelAvatarProfile::processProperties(void* data, EAvatarProcessorType type) { - getChild<LLLineEditor>("url_edit")->setKeystrokeCallback(onURLKeystroke, this); - childSetCommitCallback("load", onCommitLoad, this); - - childSetAction("web_profile_help",onClickWebProfileHelp,this); - - childSetCommitCallback("url_edit",onCommitURL,this); - - childSetControlName("auto_load","AutoLoadWebProfiles"); - - mWebBrowser = getChild<LLWebBrowserCtrl>("profile_html"); - - // links open in internally - mWebBrowser->setOpenInExternalBrowser( false ); - - // observe browser events - mWebBrowser->addObserver( this ); + if(APT_PROPERTIES == type) + { + const LLAvatarData* avatar_data = static_cast<const LLAvatarData*>(data); + if(avatar_data && getAvatarId() == avatar_data->avatar_id) + { + childSetValue("register_date", avatar_data->born_on); + childSetValue("sl_description_edit", avatar_data->about_text); + childSetValue("fl_description_edit",avatar_data->fl_about_text); + childSetValue("2nd_life_pic", avatar_data->image_id); + childSetValue("1st_life_pic", avatar_data->fl_image_id); + childSetValue("homepage_edit", avatar_data->profile_url); - return TRUE; -} + if (!isEditMode()) + { + setCaptionText(avatar_data); + } + childSetValue("show_in_search_checkbox", (BOOL)(avatar_data->flags & AVATAR_ALLOW_PUBLISH)); -BOOL LLPanelAvatarClassified::postBuild(void) -{ - childSetAction("New...",onClickNew,this); - childSetAction("Delete...",onClickDelete,this); - return TRUE; -} + if (avatar_data->partner_id.notNull()) + { + std::string first, last; + BOOL found = gCacheName->getName(avatar_data->partner_id, first, last); + if (found) + { + childSetTextArg("partner_text", "[FIRST]", first); + childSetTextArg("partner_text", "[LAST]", last); + } + } + //http://secondlife.com/partner -BOOL LLPanelAvatarPicks::postBuild(void) -{ - childSetAction("New...",onClickNew,this); - childSetAction("Delete...",onClickDelete,this); - return TRUE; -} + bool online = avatar_data->flags & AVATAR_ONLINE; + if(is_agent_friend(avatar_data->avatar_id)) + { + // Online status NO could be because they are hidden + // If they are a friend, we may know the truth! + online = LLAvatarTracker::instance().isBuddyOnline(avatar_data->avatar_id); + } + childSetValue("online_status", online ? + "Online" : "Offline"); + childSetColor("online_status", online ? + LLColor4::green : LLColor4::red); -BOOL LLPanelAvatarAdvanced::postBuild() -{ - for(size_t ii = 0; ii < LL_ARRAY_SIZE(mWantToCheck); ++ii) - mWantToCheck[ii] = NULL; - for(size_t ii = 0; ii < LL_ARRAY_SIZE(mSkillsCheck); ++ii) - mSkillsCheck[ii] = NULL; - mWantToCount = (8>LL_ARRAY_SIZE(mWantToCheck))?LL_ARRAY_SIZE(mWantToCheck):8; - for(S32 tt=0; tt < mWantToCount; ++tt) - { - std::string ctlname = llformat("chk%d", tt); - mWantToCheck[tt] = getChild<LLCheckBoxCtrl>(ctlname); - } - mSkillsCount = (6>LL_ARRAY_SIZE(mSkillsCheck))?LL_ARRAY_SIZE(mSkillsCheck):6; - - for(S32 tt=0; tt < mSkillsCount; ++tt) + LLAvatarPropertiesProcessor::getInstance()->removeObserver(getAvatarId(),this); + } + if (isOwnProfile() && NULL != mStatusCombobox) + { + std::string status; + if (gAgent.getAFK()) + { + status = "away"; + } + else if (gAgent.getBusy()) + { + status = "busy"; + } + else + { + status = "online"; + } + mStatusCombobox->setValue(status); + } + } + else if(APT_GROUPS == type) { - //Find the Skills checkboxes and save off thier controls - std::string ctlname = llformat("schk%d",tt); - mSkillsCheck[tt] = getChild<LLCheckBoxCtrl>(ctlname); + LLAvatarGroups* avatar_groups = static_cast<LLAvatarGroups*>(data); + if(avatar_groups) + { + std::string groups; + LLAvatarGroups::group_list_t::const_iterator it = avatar_groups->group_list.begin(); + for(; avatar_groups->group_list.end() != it; ++it) + { + LLAvatarGroups::LLGroupData group_data = *it; + groups += group_data.group_name; + groups += ", "; + } + childSetValue("sl_groups",groups); + } } - - mWantToEdit = getChild<LLLineEditor>("want_to_edit"); - mSkillsEdit = getChild<LLLineEditor>("skills_edit"); - childSetVisible("skills_edit",LLPanelAvatar::sAllowFirstLife); - childSetVisible("want_to_edit",LLPanelAvatar::sAllowFirstLife); - - return TRUE; } -//----------------------------------------------------------------------------- -// LLPanelAvatarWeb -//----------------------------------------------------------------------------- -LLPanelAvatarWeb::LLPanelAvatarWeb(LLPanelAvatar* panel_avatar) -: LLPanelAvatarTab(panel_avatar), - mWebBrowser(NULL) +void LLPanelAvatarProfile::clear() { + clearControls(); } -LLPanelAvatarWeb::~LLPanelAvatarWeb() +void LLPanelAvatarProfile::clearControls() { - // stop observing browser events - if ( mWebBrowser ) - { - mWebBrowser->remObserver( this ); - }; + childSetValue("2nd_life_pic",LLUUID::null); + childSetValue("1st_life_pic",LLUUID::null); + childSetValue("online_status",LLStringUtil::null); + childSetValue("status_message",LLStringUtil::null); + childSetValue("sl_description_edit",LLStringUtil::null); + childSetValue("fl_description_edit",LLStringUtil::null); + childSetValue("sl_groups",LLStringUtil::null); + childSetValue("homepage_edit",LLStringUtil::null); + childSetValue("register_date",LLStringUtil::null); + childSetValue("acc_status_text",LLStringUtil::null); + childSetTextArg("partner_text", "[FIRST]", LLStringUtil::null); + childSetTextArg("partner_text", "[LAST]", LLStringUtil::null); } -void LLPanelAvatarWeb::refresh() +void LLPanelAvatarProfile::setCaptionText(const LLAvatarData* avatar_data) { - if (mNavigateTo != "") + std::string caption_text = avatar_data->caption_text; + if(caption_text.empty()) { - llinfos << "Loading " << mNavigateTo << llendl; - mWebBrowser->navigateTo( mNavigateTo ); - mNavigateTo = ""; - } -} - - -void LLPanelAvatarWeb::enableControls(BOOL self) -{ - childSetEnabled("url_edit",self); -} + LLStringUtil::format_map_t args; + caption_text = getString("CaptionTextAcctInfo"); + BOOL transacted = (avatar_data->flags & AVATAR_TRANSACTED); + BOOL identified = (avatar_data->flags & AVATAR_IDENTIFIED); + BOOL age_verified = (avatar_data->flags & AVATAR_AGEVERIFIED); // Not currently getting set in dataserver/lldataavatar.cpp for privacy considerations -void LLPanelAvatarWeb::setWebURL(std::string url) -{ - bool changed_url = (mHome != url); + const char* ACCT_TYPE[] = { + "AcctTypeResident", + "AcctTypeTrial", + "AcctTypeCharterMember", + "AcctTypeEmployee" + }; + U8 caption_index = llclamp(avatar_data->caption_index, (U8)0, (U8)(LL_ARRAY_SIZE(ACCT_TYPE)-1)); + args["[ACCTTYPE]"] = getString(ACCT_TYPE[caption_index]); - mHome = url; - bool have_url = !mHome.empty(); - - childSetText("url_edit", mHome); - childSetEnabled("load", mHome.length() > 0); + std::string payment_text = " "; + const S32 DEFAULT_CAPTION_LINDEN_INDEX = 3; + if(caption_index != DEFAULT_CAPTION_LINDEN_INDEX) + { + if(transacted) + { + payment_text = "PaymentInfoUsed"; + } + else if (identified) + { + payment_text = "PaymentInfoOnFile"; + } + else + { + payment_text = "NoPaymentInfoOnFile"; + } + args["[PAYMENTINFO]"] = getString(payment_text); - if (have_url - && gSavedSettings.getBOOL("AutoLoadWebProfiles")) - { - if (changed_url) + std::string age_text = age_verified ? "AgeVerified" : "NotAgeVerified"; + // Do not display age verification status at this time + //args["[[AGEVERIFICATION]]"] = mPanelSecondLife->getString(age_text); + args["[AGEVERIFICATION]"] = " "; + } + else { - load(mHome); + args["[PAYMENTINFO]"] = " "; + args["[AGEVERIFICATION]"] = " "; } + LLStringUtil::format(caption_text, args); } - else - { - childSetVisible("profile_html",false); - childSetVisible("status_text", false); - } + + childSetValue("acc_status_text", caption_text); } -// static -void LLPanelAvatarWeb::onCommitURL(LLUICtrl* ctrl, void* data) +void LLPanelAvatarProfile::onAddFriendButtonClick() { - LLPanelAvatarWeb* self = (LLPanelAvatarWeb*)data; - - if (!self) return; - - self->load( self->childGetText("url_edit") ); + onAddFriend(); } -// static -void LLPanelAvatarWeb::onClickWebProfileHelp(void *) +void LLPanelAvatarProfile::onIMButtonClick() { - LLNotifications::instance().add("ClickWebProfileHelpAvatar"); + onIM(); } -void LLPanelAvatarWeb::load(std::string url) +void LLPanelAvatarProfile::onTeleportButtonClick() { - bool have_url = (!url.empty()); - - - childSetVisible("profile_html", have_url); - childSetVisible("status_text", have_url); - childSetText("status_text", LLStringUtil::null); - - if (have_url) - { - mNavigateTo = url; - } + onTeleport(); } -//static -void LLPanelAvatarWeb::onURLKeystroke(LLLineEditor* editor, void* data) +void LLPanelAvatarProfile::onCallButtonClick() { - LLPanelAvatarWeb* self = (LLPanelAvatarWeb*)data; - if (!self) return; - LLSD::String url = editor->getText(); - self->childSetEnabled("load", url.length() > 0); - return; + } -// static -void LLPanelAvatarWeb::onCommitLoad(LLUICtrl* ctrl, void* data) +void LLPanelAvatarProfile::onShareButtonClick() { - LLPanelAvatarWeb* self = (LLPanelAvatarWeb*)data; - if (!self) return; +} - LLSD::String valstr = ctrl->getValue().asString(); - LLSD::String urlstr = self->childGetText("url_edit"); - if (valstr == "") // load url string into browser panel +/*virtual*/ BOOL LLPanelAvatarProfile::postBuild(void) +{ + mStatusCombobox = getChild<LLComboBox>("status_combo", TRUE, FALSE); + if (NULL != mStatusCombobox) { - self->load(urlstr); + mStatusCombobox->setCommitCallback(boost::bind(&LLPanelAvatarProfile::onStatusChanged, this)); } - else if (valstr == "open") // open in user's external browser + mStatusMessage = getChild<LLLineEditor>("status_me_message_edit", TRUE, FALSE); + if (NULL != mStatusMessage) { - if (!urlstr.empty()) - { - LLWeb::loadURLExternal(urlstr); - } + mStatusMessage->setCommitCallback(boost::bind(&LLPanelAvatarProfile::onStatusMessageChanged, this)); } - else if (valstr == "home") // reload profile owner's home page + + childSetCommitCallback("add_friend",(boost::bind(&LLPanelAvatarProfile::onAddFriendButtonClick,this)),NULL); + childSetCommitCallback("im",(boost::bind(&LLPanelAvatarProfile::onIMButtonClick,this)),NULL); + childSetCommitCallback("call",(boost::bind(&LLPanelAvatarProfile::onCallButtonClick,this)),NULL); + childSetCommitCallback("teleport",(boost::bind(&LLPanelAvatarProfile::onTeleportButtonClick,this)),NULL); + childSetCommitCallback("share",(boost::bind(&LLPanelAvatarProfile::onShareButtonClick,this)),NULL); + + LLTextureCtrl* pic = getChild<LLTextureCtrl>("2nd_life_pic",TRUE,FALSE); + if(pic) { - if (!self->mHome.empty()) - { - self->load(self->mHome); - } + pic->setFallbackImageName("default_land_picture.j2c"); + } + pic = getChild<LLTextureCtrl>("1st_life_pic",TRUE,FALSE); + if(pic) + { + pic->setFallbackImageName("default_land_picture.j2c"); } -} -void LLPanelAvatarWeb::onStatusTextChange( const EventType& eventIn ) -{ - childSetText("status_text", eventIn.getStringValue() ); -} + clearControls(); + updateChildrenList(); -void LLPanelAvatarWeb::onLocationChange( const EventType& eventIn ) -{ - childSetText("url_edit", eventIn.getStringValue() ); + return TRUE; } - - -//----------------------------------------------------------------------------- -// LLPanelAvatarAdvanced -//----------------------------------------------------------------------------- -LLPanelAvatarAdvanced::LLPanelAvatarAdvanced(LLPanelAvatar* panel_avatar) -: LLPanelAvatarTab(panel_avatar), - mWantToCount(0), - mSkillsCount(0), - mWantToEdit( NULL ), - mSkillsEdit( NULL ) +void LLPanelAvatarProfile::onOpen(const LLSD& key) { + setAvatarId(key); + scrollToTop(); + updateChildrenList(); + updateData(); } -void LLPanelAvatarAdvanced::enableControls(BOOL self) +void LLPanelAvatarProfile::scrollToTop() { - S32 t; - for(t=0;t<mWantToCount;t++) + LLScrollContainer* scrollContainer = getChild<LLScrollContainer>("profile_scroll", FALSE, FALSE); + if (NULL != scrollContainer) { - if(mWantToCheck[t])mWantToCheck[t]->setEnabled(self); + scrollContainer->goToTop(); } - for(t=0;t<mSkillsCount;t++) - { - if(mSkillsCheck[t])mSkillsCheck[t]->setEnabled(self); - } - - if (mWantToEdit) mWantToEdit->setEnabled(self); - if (mSkillsEdit) mSkillsEdit->setEnabled(self); - childSetEnabled("languages_edit",self); } -void LLPanelAvatarAdvanced::setWantSkills(U32 want_to_mask, const std::string& want_to_text, - U32 skills_mask, const std::string& skills_text, - const std::string& languages_text) +void LLPanelAvatarProfile::updateChildrenList() { - for(int id =0;id<mWantToCount;id++) - { - mWantToCheck[id]->set( want_to_mask & 1<<id ); - } - for(int id =0;id<mSkillsCount;id++) + if (mUpdated || isEditMode()) { - mSkillsCheck[id]->set( skills_mask & 1<<id ); + return; } - if (mWantToEdit && mSkillsEdit) + switch (mProfileType) { - mWantToEdit->setText( want_to_text ); - mSkillsEdit->setText( skills_text ); - } + case PT_OWN: + childSetVisible("status_panel",FALSE); + childSetVisible("profile_buttons_panel",FALSE); + childSetVisible("title_groups_text",FALSE); + childSetVisible("sl_groups",FALSE); + mUpdated = true; + childSetVisible("status_me_panel",TRUE); + childSetVisible("profile_me_buttons_panel",TRUE); - childSetText("languages_edit",languages_text); -} + break; + case PT_OTHER: + childSetVisible("status_me_panel",FALSE); + childSetVisible("profile_me_buttons_panel",FALSE); -void LLPanelAvatarAdvanced::getWantSkills(U32* want_to_mask, std::string& want_to_text, - U32* skills_mask, std::string& skills_text, - std::string& languages_text) + childSetVisible("status_panel",TRUE); + childSetVisible("profile_buttons_panel",TRUE); + childSetVisible("title_groups_text",TRUE); + childSetVisible("sl_groups",TRUE); + + // account actions + childSetVisible("account_actions_panel", FALSE); + childSetVisible("partner_edit_link", FALSE); + + mUpdated = true; + break; + case PT_UNKNOWN: break;//do nothing + default: + llassert(false); + } +} +void LLPanelAvatarProfile::onStatusChanged() { - if (want_to_mask) + LLSD::String status = mStatusCombobox->getValue().asString(); + + if ("online" == status) { - *want_to_mask = 0; - for(int t=0;t<mWantToCount;t++) - { - if(mWantToCheck[t]->get()) - *want_to_mask |= 1<<t; - } + gAgent.clearAFK(); + gAgent.clearBusy(); } - if (skills_mask) + else if ("away" == status) { - *skills_mask = 0; - for(int t=0;t<mSkillsCount;t++) - { - if(mSkillsCheck[t]->get()) - *skills_mask |= 1<<t; - } + gAgent.clearBusy(); + gAgent.setAFK(); } - if (mWantToEdit) + else if ("busy" == status) { - want_to_text = mWantToEdit->getText(); + gAgent.clearAFK(); + gAgent.setBusy(); + LLNotifications::instance().add("BusyModeSet"); } - - if (mSkillsEdit) + else { - skills_text = mSkillsEdit->getText(); } - languages_text = childGetText("languages_edit"); -} - -//----------------------------------------------------------------------------- -// LLPanelAvatarNotes() -//----------------------------------------------------------------------------- -LLPanelAvatarNotes::LLPanelAvatarNotes(LLPanelAvatar* panel_avatar) -: LLPanelAvatarTab(panel_avatar) -{ -} - -void LLPanelAvatarNotes::refresh() -{ - sendAvatarProfileRequestIfNeeded("avatarnotesrequest"); -} - -void LLPanelAvatarNotes::clearControls() -{ - childSetText("notes edit", getString("Loading")); - childSetEnabled("notes edit", false); } -// static -void LLPanelAvatarNotes::onCommitNotes(LLUICtrl*, void* userdata) +void LLPanelAvatarProfile::onStatusMessageChanged() { - LLPanelAvatarNotes* self = (LLPanelAvatarNotes*)userdata; - - self->getPanelAvatar()->sendAvatarNotesUpdate(); + updateData(); } //----------------------------------------------------------------------------- -// LLPanelAvatarClassified() +// LLPanelAvatarNotes() //----------------------------------------------------------------------------- -LLPanelAvatarClassified::LLPanelAvatarClassified(LLPanelAvatar* panel_avatar) -: LLPanelAvatarTab(panel_avatar) +LLPanelAvatarNotes::LLPanelAvatarNotes(const LLUUID& id /* = LLUUID::null */) +:LLPanelProfileTab(id) { + updateData(); } - -void LLPanelAvatarClassified::refresh() +LLPanelAvatarNotes::LLPanelAvatarNotes(const Params& params) +: LLPanelProfileTab(params) { - BOOL self = (gAgent.getID() == getPanelAvatar()->getAvatarID()); - - LLTabContainer* tabs = getChild<LLTabContainer>("classified tab"); - - S32 tab_count = tabs ? tabs->getTabCount() : 0; - - bool allow_new = tab_count < MAX_CLASSIFIEDS; - bool allow_delete = (tab_count > 0); - bool show_help = (tab_count == 0); - - // *HACK: Don't allow making new classifieds from inside the directory. - // The logic for save/don't save when closing is too hairy, and the - // directory is conceptually read-only. JC - bool in_directory = false; - LLView* view = this; - while (view) - { - if (view->getName() == "directory") - { - in_directory = true; - break; - } - view = view->getParent(); - } - childSetEnabled("New...", self && !in_directory && allow_new); - childSetVisible("New...", !in_directory); - childSetEnabled("Delete...", self && !in_directory && allow_delete); - childSetVisible("Delete...", !in_directory); - childSetVisible("classified tab",!show_help); - sendAvatarProfileRequestIfNeeded("avatarclassifiedsrequest"); } - -BOOL LLPanelAvatarClassified::canClose() +LLPanelAvatarNotes::~LLPanelAvatarNotes() { - LLTabContainer* tabs = getChild<LLTabContainer>("classified tab"); - for (S32 i = 0; i < tabs->getTabCount(); i++) + if(getAvatarId().notNull()) { - LLPanelClassified* panel = (LLPanelClassified*)tabs->getPanelByIndex(i); - if (!panel->canClose()) - { - return FALSE; - } + LLAvatarPropertiesProcessor::getInstance()->removeObserver(getAvatarId(),this); } - return TRUE; } -BOOL LLPanelAvatarClassified::titleIsValid() +void* LLPanelAvatarNotes::create(void* data) { - LLTabContainer* tabs = getChild<LLTabContainer>("classified tab"); - if ( tabs ) + if(data) { - LLPanelClassified* panel = (LLPanelClassified*)tabs->getCurrentPanel(); - if ( panel ) - { - if ( ! panel->titleIsValid() ) - { - return FALSE; - }; - }; - }; - - return TRUE; + LLSD* id = static_cast<LLSD*>(data); + return new LLPanelAvatarNotes(LLUUID(id->asUUID())); + } + return new LLPanelAvatarNotes(); } -void LLPanelAvatarClassified::apply() +void LLPanelAvatarNotes::updateData() { - LLTabContainer* tabs = getChild<LLTabContainer>("classified tab"); - for (S32 i = 0; i < tabs->getTabCount(); i++) + LLAvatarPropertiesProcessor::getInstance()->sendDataRequest(getAvatarId(),APT_NOTES); + + const LLRelationship* relation = LLAvatarTracker::instance().getBuddyInfo(getAvatarId()); + if(relation) { - LLPanelClassified* panel = (LLPanelClassified*)tabs->getPanelByIndex(i); - panel->apply(); - } -} + childSetEnabled("status_check",TRUE); + childSetEnabled("map_check",TRUE); + childSetEnabled("objects_check",TRUE); + S32 rights = relation->getRightsGrantedTo(); -void LLPanelAvatarClassified::deleteClassifiedPanels() -{ - LLTabContainer* tabs = getChild<LLTabContainer>("classified tab"); - if (tabs) - { - tabs->deleteAllTabs(); + childSetValue("status_check",LLRelationship::GRANT_ONLINE_STATUS & rights ? TRUE : FALSE); + childSetValue("map_check",LLRelationship::GRANT_MAP_LOCATION & rights ? TRUE : FALSE); + childSetValue("objects_check",LLRelationship::GRANT_MODIFY_OBJECTS & rights ? TRUE : FALSE); } - - childSetVisible("New...", false); - childSetVisible("Delete...", false); - childSetVisible("loading_text", true); } - -void LLPanelAvatarClassified::processAvatarClassifiedReply(LLMessageSystem* msg, void**) +BOOL LLPanelAvatarNotes::postBuild() { - S32 block = 0; - S32 block_count = 0; - LLUUID classified_id; - std::string classified_name; - LLPanelClassified* panel_classified = NULL; - - LLTabContainer* tabs = getChild<LLTabContainer>("classified tab"); + childSetCommitCallback("status_check",boost::bind(&LLPanelAvatarNotes::onCommitRights,this),NULL); + childSetCommitCallback("map_check",boost::bind(&LLPanelAvatarNotes::onCommitRights,this),NULL); + childSetCommitCallback("objects_check",boost::bind(&LLPanelAvatarNotes::onCommitRights,this),NULL); - // Don't remove old panels. We need to be able to process multiple - // packets for people who have lots of classifieds. JC + childSetCommitCallback("add_friend",(boost::bind(&LLPanelAvatarProfile::onAddFriend,this)),NULL); + childSetCommitCallback("im",(boost::bind(&LLPanelAvatarProfile::onIM,this)),NULL); +// childSetCommitCallback("call",(boost::bind(&LLPanelAvatarProfile::onCallButtonClick,this))); + childSetCommitCallback("teleport",(boost::bind(&LLPanelAvatarProfile::onTeleport,this)),NULL); +// childSetCommitCallback("share",(boost::bind(&LLPanelAvatarProfile::onShareButtonClick,this))); - block_count = msg->getNumberOfBlocksFast(_PREHASH_Data); - for (block = 0; block < block_count; block++) + LLTextEditor* te = getChild<LLTextEditor>("notes_edit",TRUE,FALSE); + if(te) { - msg->getUUIDFast(_PREHASH_Data, _PREHASH_ClassifiedID, classified_id, block); - msg->getStringFast(_PREHASH_Data, _PREHASH_Name, classified_name, block); - - panel_classified = new LLPanelClassified(false, false); + te->setCommitCallback(boost::bind(&LLPanelAvatarNotes::onCommitNotes,this)); + te->setCommitOnFocusLost(TRUE); + } - panel_classified->setClassifiedID(classified_id); + return TRUE; +} - // This will request data from the server when the pick is first drawn. - panel_classified->markForServerRequest(); +void LLPanelAvatarNotes::onCommitNotes() +{ + std::string notes = childGetValue("notes_edit").asString(); + LLAvatarPropertiesProcessor::getInstance()-> sendNotes(getAvatarId(),notes); +} - // The button should automatically truncate long names for us - tabs->addTabPanel(LLTabContainer::TabPanelParams().panel(panel_classified).label(classified_name)); - } +void LLPanelAvatarNotes::onCommitRights() +{ + S32 rights = 0; - // Make sure somebody is highlighted. This works even if there - // are no tabs in the container. - tabs->selectFirstTab(); + if(childGetValue("status_check").asBoolean()) + rights |= LLRelationship::GRANT_ONLINE_STATUS; + if(childGetValue("map_check").asBoolean()) + rights |= LLRelationship::GRANT_MAP_LOCATION; + if(childGetValue("objects_check").asBoolean()) + rights |= LLRelationship::GRANT_MODIFY_OBJECTS; - childSetVisible("New...", true); - childSetVisible("Delete...", true); - childSetVisible("loading_text", false); + LLAvatarPropertiesProcessor::getInstance()->sendFriendRights(getAvatarId(),rights); } - -// Create a new classified panel. It will automatically handle generating -// its own id when it's time to save. -// static -void LLPanelAvatarClassified::onClickNew(void* data) +void LLPanelAvatarNotes::clear() { - LLPanelAvatarClassified* self = (LLPanelAvatarClassified*)data; + childSetValue("notes_edit",LLStringUtil::null); - LLNotifications::instance().add("AddClassified", LLSD(), LLSD(), boost::bind(&LLPanelAvatarClassified::callbackNew, self, _1, _2)); - + childSetEnabled("status_check",FALSE); + childSetEnabled("map_check",FALSE); + childSetEnabled("objects_check",FALSE); } -bool LLPanelAvatarClassified::callbackNew(const LLSD& notification, const LLSD& response) +void LLPanelAvatarNotes::processProperties(void* data, EAvatarProcessorType type) { - S32 option = LLNotification::getSelectedOption(notification, response); - if (0 == option) + if(APT_NOTES == type) { - LLPanelClassified* panel_classified = new LLPanelClassified(false, false); - panel_classified->initNewClassified(); - LLTabContainer* tabs = getChild<LLTabContainer>("classified tab"); - tabs->addTabPanel(LLTabContainer::TabPanelParams().panel(panel_classified).label(panel_classified->getClassifiedName())); - tabs->selectLastTab(); - } - return false; -} - - -// static -void LLPanelAvatarClassified::onClickDelete(void* data) -{ - LLPanelAvatarClassified* self = (LLPanelAvatarClassified*)data; - - LLTabContainer* tabs = self->getChild<LLTabContainer>("classified tab"); - LLPanelClassified* panel_classified = NULL; - if(tabs) - { - panel_classified = (LLPanelClassified*)tabs->getCurrentPanel(); - } - if (!panel_classified) return; - - LLSD args; - args["NAME"] = panel_classified->getClassifiedName(); - LLNotifications::instance().add("DeleteClassified", args, LLSD(), boost::bind(&LLPanelAvatarClassified::callbackDelete, self, _1, _2)); - -} - - -bool LLPanelAvatarClassified::callbackDelete(const LLSD& notification, const LLSD& response) -{ - S32 option = LLNotification::getSelectedOption(notification, response); - LLTabContainer* tabs = getChild<LLTabContainer>("classified tab"); - LLPanelClassified* panel_classified=NULL; - if(tabs) - { - panel_classified = (LLPanelClassified*)tabs->getCurrentPanel(); - } - - LLMessageSystem* msg = gMessageSystem; - - if (!panel_classified) return false; - - if (0 == option) - { - msg->newMessageFast(_PREHASH_ClassifiedDelete); - msg->nextBlockFast(_PREHASH_AgentData); - msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); - msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); - msg->nextBlockFast(_PREHASH_Data); - msg->addUUIDFast(_PREHASH_ClassifiedID, panel_classified->getClassifiedID()); - gAgent.sendReliableMessage(); - - if(tabs) - { - tabs->removeTabPanel(panel_classified); - } - delete panel_classified; - panel_classified = NULL; - } - return false; -} - - -//----------------------------------------------------------------------------- -// LLPanelAvatarPicks() -//----------------------------------------------------------------------------- -LLPanelAvatarPicks::LLPanelAvatarPicks(LLPanelAvatar* panel_avatar) -: LLPanelAvatarTab(panel_avatar) -{ -} - - -void LLPanelAvatarPicks::refresh() -{ - BOOL self = (gAgent.getID() == getPanelAvatar()->getAvatarID()); - LLTabContainer* tabs = getChild<LLTabContainer>("picks tab"); - S32 tab_count = tabs ? tabs->getTabCount() : 0; - childSetEnabled("New...", self && tab_count < MAX_AVATAR_PICKS); - childSetEnabled("Delete...", self && tab_count > 0); - childSetVisible("New...", self && getPanelAvatar()->isEditable()); - childSetVisible("Delete...", self && getPanelAvatar()->isEditable()); - - sendAvatarProfileRequestIfNeeded("avatarpicksrequest"); -} - - -void LLPanelAvatarPicks::deletePickPanels() -{ - LLTabContainer* tabs = getChild<LLTabContainer>("picks tab"); - if(tabs) - { - tabs->deleteAllTabs(); - } - - childSetVisible("New...", false); - childSetVisible("Delete...", false); - childSetVisible("loading_text", true); -} - -void LLPanelAvatarPicks::processAvatarPicksReply(LLMessageSystem* msg, void**) -{ - S32 block = 0; - S32 block_count = 0; - LLUUID pick_id; - std::string pick_name; - LLPanelPick* panel_pick = NULL; - - LLTabContainer* tabs = getChild<LLTabContainer>("picks tab"); - - // Clear out all the old panels. We'll replace them with the correct - // number of new panels. - deletePickPanels(); - - // The database needs to know for which user to look up picks. - LLUUID avatar_id = getPanelAvatar()->getAvatarID(); - - block_count = msg->getNumberOfBlocks("Data"); - for (block = 0; block < block_count; block++) - { - msg->getUUID("Data", "PickID", pick_id, block); - msg->getString("Data", "PickName", pick_name, block); - - panel_pick = new LLPanelPick(); - - panel_pick->setPickID(pick_id, avatar_id); - - // This will request data from the server when the pick is first - // drawn. - panel_pick->markForServerRequest(); - - // The button should automatically truncate long names for us - tabs->addTabPanel(LLTabContainer::TabPanelParams().panel(panel_pick).label(pick_name)); - } - - // Make sure somebody is highlighted. This works even if there - // are no tabs in the container. - tabs->selectFirstTab(); - - childSetVisible("New...", true); - childSetVisible("Delete...", true); - childSetVisible("loading_text", false); -} - - -// Create a new pick panel. It will automatically handle generating -// its own id when it's time to save. -// static -void LLPanelAvatarPicks::onClickNew(void* data) -{ - LLPanelAvatarPicks* self = (LLPanelAvatarPicks*)data; - LLPanelPick* panel_pick = new LLPanelPick(); - LLTabContainer* tabs = self->getChild<LLTabContainer>("picks tab"); - - panel_pick->initNewPick(); - tabs->addTabPanel(LLTabContainer::TabPanelParams().panel(panel_pick).label(panel_pick->getPickName())); - tabs->selectLastTab(); -} - - -// static -void LLPanelAvatarPicks::onClickDelete(void* data) -{ - LLPanelAvatarPicks* self = (LLPanelAvatarPicks*)data; - LLTabContainer* tabs = self->getChild<LLTabContainer>("picks tab"); - LLPanelPick* panel_pick = tabs?(LLPanelPick*)tabs->getCurrentPanel():NULL; - - if (!panel_pick) return; - - LLSD args; - args["PICK"] = panel_pick->getPickName(); - - LLNotifications::instance().add("DeleteAvatarPick", args, LLSD(), - boost::bind(&LLPanelAvatarPicks::callbackDelete, self, _1, _2)); -} - - -// static -bool LLPanelAvatarPicks::callbackDelete(const LLSD& notification, const LLSD& response) -{ - S32 option = LLNotification::getSelectedOption(notification, response); - LLTabContainer* tabs = getChild<LLTabContainer>("picks tab"); - LLPanelPick* panel_pick = tabs ? (LLPanelPick*)tabs->getCurrentPanel() : NULL; - LLMessageSystem* msg = gMessageSystem; - - if (!panel_pick) return false; - - if (0 == option) - { - // If the viewer has a hacked god-mode, then this call will - // fail. - if(gAgent.isGodlike()) - { - msg->newMessage("PickGodDelete"); - msg->nextBlock("AgentData"); - msg->addUUID("AgentID", gAgent.getID()); - msg->addUUID("SessionID", gAgent.getSessionID()); - msg->nextBlock("Data"); - msg->addUUID("PickID", panel_pick->getPickID()); - // *HACK: We need to send the pick's creator id to accomplish - // the delete, and we don't use the query id for anything. JC - msg->addUUID( "QueryID", panel_pick->getPickCreatorID() ); - } - else - { - msg->newMessage("PickDelete"); - msg->nextBlock("AgentData"); - msg->addUUID("AgentID", gAgent.getID()); - msg->addUUID("SessionID", gAgent.getSessionID()); - msg->nextBlock("Data"); - msg->addUUID("PickID", panel_pick->getPickID()); - } - gAgent.sendReliableMessage(); - - if(tabs) - { - tabs->removeTabPanel(panel_pick); - } - delete panel_pick; - panel_pick = NULL; - } - return false; -} - - -//----------------------------------------------------------------------------- -// LLPanelAvatar -//----------------------------------------------------------------------------- -LLPanelAvatar::LLPanelAvatar(BOOL allow_edit) -: LLPanel(), - mPanelSecondLife(NULL), - mPanelAdvanced(NULL), - mPanelClassified(NULL), - mPanelPicks(NULL), - mPanelNotes(NULL), - mPanelFirstLife(NULL), - mPanelWeb(NULL), - mDropTarget(NULL), - mAvatarID( LLUUID::null ), // mAvatarID is set with 'setAvatar' or 'setAvatarID' - mHaveProperties(FALSE), - mHaveStatistics(FALSE), - mHaveNotes(false), - mLastNotes(), - mAllowEdit(allow_edit) -{ - - sAllPanels.push_back(this); - - mFactoryMap["2nd Life"] = LLCallbackMap(createPanelAvatarSecondLife, this); - mFactoryMap["WebProfile"] = LLCallbackMap(createPanelAvatarWeb, this); - mFactoryMap["Interests"] = LLCallbackMap(createPanelAvatarInterests, this); - mFactoryMap["Picks"] = LLCallbackMap(createPanelAvatarPicks, this); - mFactoryMap["Classified"] = LLCallbackMap(createPanelAvatarClassified, this); - mFactoryMap["1st Life"] = LLCallbackMap(createPanelAvatarFirstLife, this); - mFactoryMap["My Notes"] = LLCallbackMap(createPanelAvatarNotes, this); - - LLUICtrlFactory::getInstance()->buildPanel(this, "panel_avatar.xml"); - - selectTab(0); -} - -BOOL LLPanelAvatar::postBuild(void) -{ - mTab = getChild<LLTabContainer>("tab"); - childSetAction("Kick",onClickKick,this); - childSetAction("Freeze",onClickFreeze, this); - childSetAction("Unfreeze", onClickUnfreeze, this); - childSetAction("csr_btn", onClickCSR, this); - childSetAction("OK", onClickOK, this); - childSetAction("Cancel", onClickCancel, this); - - if(mTab && !sAllowFirstLife) - { - LLPanel* panel = mTab->getPanelByName("1st Life"); - if (panel) mTab->removeTabPanel(panel); - - panel = mTab->getPanelByName("WebProfile"); - if (panel) mTab->removeTabPanel(panel); - } - childSetVisible("Kick",FALSE); - childSetEnabled("Kick",FALSE); - childSetVisible("Freeze",FALSE); - childSetEnabled("Freeze",FALSE); - childSetVisible("Unfreeze",FALSE); - childSetEnabled("Unfreeze",FALSE); - childSetVisible("csr_btn", FALSE); - childSetEnabled("csr_btn", FALSE); - - return TRUE; -} - - -LLPanelAvatar::~LLPanelAvatar() -{ - sAllPanels.remove(this); - if (mAvatarID.notNull()) - { - LLAvatarPropertiesProcessor::getInstance()->removeObserver(mAvatarID, this); - } -} - - -BOOL LLPanelAvatar::canClose() -{ - return mPanelClassified && mPanelClassified->canClose(); -} - -void LLPanelAvatar::setAvatar(LLViewerObject *avatarp) -{ - // find the avatar and grab the name - LLNameValue *firstname = avatarp->getNVPair("FirstName"); - LLNameValue *lastname = avatarp->getNVPair("LastName"); - - std::string name; - if (firstname && lastname) - { - name.assign( firstname->getString() ); - name.append(" "); - name.append( lastname->getString() ); - } - else - { - name.assign(""); - } - - // If we have an avatar pointer, they must be online. - setAvatarID(avatarp->getID(), name, ONLINE_STATUS_YES); -} - -void LLPanelAvatar::setOnlineStatus(EOnlineStatus online_status) -{ - // Online status NO could be because they are hidden - // If they are a friend, we may know the truth! - if ((ONLINE_STATUS_YES != online_status) - && mIsFriend - && (LLAvatarTracker::instance().isBuddyOnline( mAvatarID ))) - { - online_status = ONLINE_STATUS_YES; - } - - mPanelSecondLife->childSetVisible("online_yes", (online_status == ONLINE_STATUS_YES)); - - // Since setOnlineStatus gets called after setAvatarID - // need to make sure that "Offer Teleport" doesn't get set - // to TRUE again for yourself - if (mAvatarID != gAgent.getID()) - { - childSetVisible("Offer Teleport...",TRUE); - } - - BOOL in_prelude = gAgent.inPrelude(); - if(gAgent.isGodlike()) - { - childSetEnabled("Offer Teleport...", TRUE); - childSetToolTip("Offer Teleport...", childGetValue("TeleportGod").asString()); - } - else if (in_prelude) - { - childSetEnabled("Offer Teleport...",FALSE); - childSetToolTip("Offer Teleport...",childGetValue("TeleportPrelude").asString()); - } - else - { - childSetEnabled("Offer Teleport...", (online_status == ONLINE_STATUS_YES)); - childSetToolTip("Offer Teleport...", childGetValue("TeleportNormal").asString()); - } -} - -void LLPanelAvatar::setAvatarID(const LLUUID &avatar_id, const std::string &name, - EOnlineStatus online_status) -{ - if (avatar_id.isNull()) return; - - BOOL avatar_changed = FALSE; - if (avatar_id != mAvatarID) - { - avatar_changed = TRUE; - - if (mAvatarID.notNull()) - { - LLAvatarPropertiesProcessor::getInstance()->removeObserver(mAvatarID, this); - } - - LLAvatarPropertiesProcessor::getInstance()->addObserver(avatar_id, this); - } - mAvatarID = avatar_id; - - // Determine if we have their calling card. - mIsFriend = is_agent_friend(mAvatarID); - - // setOnlineStatus uses mIsFriend - setOnlineStatus(online_status); - - BOOL own_avatar = (mAvatarID == gAgent.getID() ); - BOOL avatar_is_friend = LLAvatarTracker::instance().getBuddyInfo(mAvatarID) != NULL; - - mPanelSecondLife->enableControls(own_avatar && mAllowEdit); - mPanelWeb->enableControls(own_avatar && mAllowEdit); - mPanelAdvanced->enableControls(own_avatar && mAllowEdit); - // Teens don't have this. - if (mPanelFirstLife) mPanelFirstLife->enableControls(own_avatar && mAllowEdit); - - mDropTarget = getChild<LLDropTarget> ("Drop Target"); - mDropTarget->setAgentID(mAvatarID); - - LLNameEditor* name_edit = getChild<LLNameEditor>("name"); - if(name_edit) - { - if (name.empty()) - { - name_edit->setNameID(avatar_id, FALSE); - } - else - { - name_edit->setText(name); - } - } -// if (avatar_changed) - { - // While we're waiting for data off the network, clear out the - // old data. - mPanelSecondLife->clearControls(); - - mPanelPicks->deletePickPanels(); - mPanelPicks->setDataRequested(false); - - mPanelClassified->deleteClassifiedPanels(); - mPanelClassified->setDataRequested(false); - - mPanelNotes->clearControls(); - mPanelNotes->setDataRequested(false); - mHaveNotes = false; - mLastNotes.clear(); - - // Request just the first two pages of data. The picks, - // classifieds, and notes will be requested when that panel - // is made visible. JC - LLAvatarPropertiesProcessor::getInstance()->sendAvatarPropertiesRequest(mAvatarID); - - if (own_avatar) - { - if (mAllowEdit) - { - // OK button disabled until properties data arrives - childSetVisible("OK", true); - childSetEnabled("OK", false); - childSetVisible("Cancel",TRUE); - childSetEnabled("Cancel",TRUE); - } - else - { - childSetVisible("OK",FALSE); - childSetEnabled("OK",FALSE); - childSetVisible("Cancel",FALSE); - childSetEnabled("Cancel",FALSE); - } - childSetVisible("Instant Message...",FALSE); - childSetEnabled("Instant Message...",FALSE); - childSetVisible("Mute",FALSE); - childSetEnabled("Mute",FALSE); - childSetVisible("Offer Teleport...",FALSE); - childSetEnabled("Offer Teleport...",FALSE); - childSetVisible("drop target",FALSE); - childSetEnabled("drop target",FALSE); - childSetVisible("Find on Map",FALSE); - childSetEnabled("Find on Map",FALSE); - childSetVisible("Add Friend...",FALSE); - childSetEnabled("Add Friend...",FALSE); - childSetVisible("Pay...",FALSE); - childSetEnabled("Pay...",FALSE); - } - else - { - childSetVisible("OK",FALSE); - childSetEnabled("OK",FALSE); - - childSetVisible("Cancel",FALSE); - childSetEnabled("Cancel",FALSE); - - childSetVisible("Instant Message...",TRUE); - childSetEnabled("Instant Message...",FALSE); - childSetVisible("Mute",TRUE); - childSetEnabled("Mute",FALSE); - - childSetVisible("drop target",TRUE); - childSetEnabled("drop target",FALSE); - - childSetVisible("Find on Map",TRUE); - // Note: we don't always know online status, so always allow gods to try to track - BOOL enable_track = gAgent.isGodlike() || is_agent_mappable(mAvatarID); - childSetEnabled("Find on Map",enable_track); - if (!mIsFriend) - { - childSetToolTip("Find on Map",childGetValue("ShowOnMapNonFriend").asString()); - } - else if (ONLINE_STATUS_YES != online_status) - { - childSetToolTip("Find on Map",childGetValue("ShowOnMapFriendOffline").asString()); - } - else - { - childSetToolTip("Find on Map",childGetValue("ShowOnMapFriendOnline").asString()); - } - childSetVisible("Add Friend...", true); - childSetEnabled("Add Friend...", !avatar_is_friend); - childSetVisible("Pay...",TRUE); - childSetEnabled("Pay...",FALSE); - } - } - - BOOL is_god = FALSE; - if (gAgent.isGodlike()) is_god = TRUE; - - childSetVisible("Kick", is_god); - childSetEnabled("Kick", is_god); - childSetVisible("Freeze", is_god); - childSetEnabled("Freeze", is_god); - childSetVisible("Unfreeze", is_god); - childSetEnabled("Unfreeze", is_god); - childSetVisible("csr_btn", is_god); - childSetEnabled("csr_btn", is_god); -} - - -void LLPanelAvatar::resetGroupList() -{ - // only get these updates asynchronously via the group floater, which works on the agent only - if (mAvatarID != gAgent.getID()) - { - return; - } - - if (mPanelSecondLife) - { - LLScrollListCtrl* group_list = mPanelSecondLife->getChild<LLScrollListCtrl>("groups"); - if (group_list) - { - group_list->deleteAllItems(); - - S32 count = gAgent.mGroups.count(); - LLUUID id; - - for(S32 i = 0; i < count; ++i) - { - LLGroupData group_data = gAgent.mGroups.get(i); - id = group_data.mID; - std::string group_string; - /* Show group title? DUMMY_POWER for Don Grep - if(group_data.mOfficer) - { - group_string = "Officer of "; - } - else - { - group_string = "Member of "; - } - */ - - group_string += group_data.mName; - - LLSD row; - - row["id"] = id ; - row["columns"][0]["value"] = group_string; - row["columns"][0]["font"] = "SANSSERIF_SMALL"; - row["columns"][0]["width"] = 0; - group_list->addElement(row); - } - group_list->sortByColumnIndex(0, TRUE); - } - } -} - -// static -//----------------------------------------------------------------------------- -// onClickIM() -//----------------------------------------------------------------------------- -void LLPanelAvatar::onClickIM(void* userdata) -{ - LLPanelAvatar* self = (LLPanelAvatar*) userdata; - - std::string name; - LLNameEditor* nameedit = self->mPanelSecondLife->getChild<LLNameEditor>("name"); - if (nameedit) name = nameedit->getText(); - gIMMgr->addSession(name, IM_NOTHING_SPECIAL, self->mAvatarID); -} - - -// static -//----------------------------------------------------------------------------- -// onClickTrack() -//----------------------------------------------------------------------------- -void LLPanelAvatar::onClickTrack(void* userdata) -{ - LLPanelAvatar* self = (LLPanelAvatar*) userdata; - - std::string name; - LLNameEditor* nameedit = self->mPanelSecondLife->getChild<LLNameEditor>("name"); - if (nameedit) name = nameedit->getText(); - LLFloaterWorldMap::getInstance()->trackAvatar(self->mAvatarID, name); - LLFloaterReg::showInstance("world_map", "center"); -} - - -// static -void LLPanelAvatar::onClickAddFriend(void* userdata) -{ - LLPanelAvatar* self = (LLPanelAvatar*) userdata; - LLNameEditor* name_edit = self->mPanelSecondLife->getChild<LLNameEditor>("name"); - if (name_edit) - { - LLPanelFriends::requestFriendshipDialog(self->getAvatarID(), - name_edit->getText()); - } -} - -//----------------------------------------------------------------------------- -// onClickMute() -//----------------------------------------------------------------------------- -void LLPanelAvatar::onClickMute(void *userdata) -{ - LLPanelAvatar* self = (LLPanelAvatar*) userdata; - - LLUUID agent_id = self->getAvatarID(); - LLNameEditor* name_edit = self->mPanelSecondLife->getChild<LLNameEditor>("name"); - - if (name_edit) - { - std::string agent_name = name_edit->getText(); - LLFloaterMute::showInstance(); - - if (LLMuteList::getInstance()->isMuted(agent_id)) - { - LLFloaterMute::getInstance()->selectMute(agent_id); - } - else - { - LLMute mute(agent_id, agent_name, LLMute::AGENT); - LLMuteList::getInstance()->add(mute); - } - } -} - - -// static -void LLPanelAvatar::onClickOfferTeleport(void *userdata) -{ - LLPanelAvatar* self = (LLPanelAvatar*) userdata; - - handle_lure(self->mAvatarID); -} - - -// static -void LLPanelAvatar::onClickPay(void *userdata) -{ - LLPanelAvatar* self = (LLPanelAvatar*) userdata; - handle_pay_by_id(self->mAvatarID); -} - - -// static -void LLPanelAvatar::onClickOK(void *userdata) -{ - LLPanelAvatar *self = (LLPanelAvatar *)userdata; - - // JC: Only save the data if we actually got the original - // properties. Otherwise we might save blanks into - // the database. - if (self - && self->mHaveProperties) - { - self->sendAvatarPropertiesUpdate(); - - LLTabContainer* tabs = self->getChild<LLTabContainer>("tab"); - if ( tabs->getCurrentPanel() != self->mPanelClassified ) - { - self->mPanelClassified->apply(); - - LLFloaterReg::hideInstance("preview_avatar", self->mAvatarID); - } - else - { - if ( self->mPanelClassified->titleIsValid() ) - { - self->mPanelClassified->apply(); - LLFloaterReg::hideInstance("preview_avatar", self->mAvatarID); - } - } - } -} - -// static -void LLPanelAvatar::onClickCancel(void *userdata) -{ - LLPanelAvatar *self = (LLPanelAvatar *)userdata; - - if (self) - { - if (!LLFloaterReg::hideInstance("preview_avatar", self->mAvatarID)) - { - // We're in the Search directory and are cancelling an edit - // to our own profile, so reset. - self->sendAvatarPropertiesRequest(); - } - } -} - - -void LLPanelAvatar::sendAvatarPropertiesRequest() -{ - LLAvatarPropertiesProcessor::getInstance()->sendAvatarPropertiesRequest(mAvatarID); -} - -void LLPanelAvatar::sendAvatarNotesUpdate() -{ - std::string notes = mPanelNotes->childGetValue("notes edit").asString(); - - if (!mHaveNotes - && (notes.empty() || notes == getString("Loading"))) - { - // no notes from server and no user updates - return; - } - if (notes == mLastNotes) - { - // Avatar notes unchanged - return; - } - - LLMessageSystem *msg = gMessageSystem; - - msg->newMessage("AvatarNotesUpdate"); - msg->nextBlock("AgentData"); - msg->addUUID("AgentID", gAgent.getID()); - msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); - msg->nextBlock("Data"); - msg->addUUID("TargetID", mAvatarID); - msg->addString("Notes", notes); - - gAgent.sendReliableMessage(); -} - -void LLPanelAvatar::processAvatarProperties(const LLAvatarData& avatar_data) -{ - BOOL allow_publish = FALSE; - BOOL identified = FALSE; - BOOL transacted = FALSE; - BOOL age_verified = FALSE; - BOOL online = FALSE; - std::string profile_url; - std::string caption_text; - - //llinfos << "properties packet size " << msg->getReceiveSize() << llendl; - - childSetEnabled("Instant Message...",TRUE); - childSetEnabled("Pay...",TRUE); - childSetEnabled("Mute",TRUE); - - childSetEnabled("drop target",TRUE); - - mHaveProperties = TRUE; - enableOKIfReady(); - - identified = (avatar_data.flags & AVATAR_IDENTIFIED); - transacted = (avatar_data.flags & AVATAR_TRANSACTED); - age_verified = (avatar_data.flags & AVATAR_AGEVERIFIED); // Not currently getting set in dataserver/lldataavatar.cpp for privacy considerations - allow_publish = (avatar_data.flags & AVATAR_ALLOW_PUBLISH); - online = (avatar_data.flags & AVATAR_ONLINE); - - caption_text = avatar_data.caption_text; - - if(caption_text.empty()) - { - LLStringUtil::format_map_t args; - caption_text = mPanelSecondLife->getString("CaptionTextAcctInfo"); - - const char* ACCT_TYPE[] = { - "AcctTypeResident", - "AcctTypeTrial", - "AcctTypeCharterMember", - "AcctTypeEmployee" - }; - U8 caption_index = llclamp(avatar_data.caption_index, (U8)0, (U8)(LL_ARRAY_SIZE(ACCT_TYPE)-1)); - args["[ACCTTYPE]"] = mPanelSecondLife->getString(ACCT_TYPE[caption_index]); - - std::string payment_text = " "; - const S32 DEFAULT_CAPTION_LINDEN_INDEX = 3; - if(caption_index != DEFAULT_CAPTION_LINDEN_INDEX) - { - if(transacted) - { - payment_text = "PaymentInfoUsed"; - } - else if (identified) - { - payment_text = "PaymentInfoOnFile"; - } - else - { - payment_text = "NoPaymentInfoOnFile"; - } - args["[PAYMENTINFO]"] = mPanelSecondLife->getString(payment_text); - std::string age_text = age_verified ? "AgeVerified" : "NotAgeVerified"; - // Do not display age verification status at this time - //args["[[AGEVERIFICATION]]"] = mPanelSecondLife->getString(age_text); - args["[AGEVERIFICATION]"] = " "; - } - else - { - args["[PAYMENTINFO]"] = " "; - args["[AGEVERIFICATION]"] = " "; - } - LLStringUtil::format(caption_text, args); - } - - mPanelSecondLife->childSetValue("acct", caption_text); - mPanelSecondLife->childSetValue("born", avatar_data.born_on); - - EOnlineStatus online_status = (online) ? ONLINE_STATUS_YES : ONLINE_STATUS_NO; - - setOnlineStatus(online_status); - - mPanelWeb->setWebURL(profile_url); - - LLTextureCtrl* image_ctrl = mPanelSecondLife->getChild<LLTextureCtrl>("img"); - if(image_ctrl) - { - image_ctrl->setImageAssetID(avatar_data.image_id); - } - childSetValue("about", avatar_data.about_text); - - mPanelSecondLife->setPartnerID(avatar_data.partner_id); - mPanelSecondLife->updatePartnerName(); - - if (mPanelFirstLife) - { - // Teens don't get these - mPanelFirstLife->childSetValue("about", avatar_data.fl_about_text); - LLTextureCtrl* image_ctrl = mPanelFirstLife->getChild<LLTextureCtrl>("img"); - if(image_ctrl) - { - image_ctrl->setImageAssetID(avatar_data.fl_image_id); - } - - mPanelSecondLife->childSetValue("allow_publish", allow_publish); - - } -} - -// static -void LLPanelAvatar::processAvatarInterestsReply(LLMessageSystem *msg, void**) -{ - LLUUID agent_id; // your id - LLUUID avatar_id; // target of this panel - - U32 want_to_mask; - std::string want_to_text; - U32 skills_mask; - std::string skills_text; - std::string languages_text; - - //llinfos << "properties packet size " << msg->getReceiveSize() << llendl; - - msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, agent_id); - msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_AvatarID, avatar_id ); - - for (panel_list_t::iterator iter = sAllPanels.begin(); iter != sAllPanels.end(); ++iter) - { - LLPanelAvatar* self = *iter; - if (self->mAvatarID != avatar_id) - { - continue; - } - - msg->getU32Fast( _PREHASH_PropertiesData, _PREHASH_WantToMask, want_to_mask ); - msg->getStringFast(_PREHASH_PropertiesData, _PREHASH_WantToText, want_to_text ); - msg->getU32Fast( _PREHASH_PropertiesData, _PREHASH_SkillsMask, skills_mask ); - msg->getStringFast(_PREHASH_PropertiesData, _PREHASH_SkillsText, skills_text ); - msg->getString(_PREHASH_PropertiesData, "LanguagesText", languages_text ); - - self->mPanelAdvanced->setWantSkills(want_to_mask, want_to_text, skills_mask, skills_text, languages_text); - } -} - -// Separate function because the groups list can be very long, almost -// filling a packet. JC -// static -void LLPanelAvatar::processAvatarGroupsReply(LLMessageSystem *msg, void**) -{ - LLUUID agent_id; // your id - LLUUID avatar_id; // target of this panel - U64 group_powers; - std::string group_title; - LLUUID group_id; - std::string group_name; - LLUUID group_insignia_id; - - llinfos << "groups packet size " << msg->getReceiveSize() << llendl; - - msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, agent_id); - msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_AvatarID, avatar_id ); - - for (panel_list_t::iterator iter = sAllPanels.begin(); iter != sAllPanels.end(); ++iter) - { - LLPanelAvatar* self = *iter; - if (self->mAvatarID != avatar_id) - { - continue; - } - - LLScrollListCtrl* group_list = self->mPanelSecondLife->getChild<LLScrollListCtrl>("groups"); -// if(group_list) -// { -// group_list->deleteAllItems(); -// } - - S32 group_count = msg->getNumberOfBlocksFast(_PREHASH_GroupData); - if (0 == group_count) - { - if(group_list) group_list->setCommentText(LLTrans::getString("None")); - } - else - { - for(S32 i = 0; i < group_count; ++i) - { - msg->getU64( _PREHASH_GroupData, "GroupPowers", group_powers, i ); - msg->getStringFast(_PREHASH_GroupData, _PREHASH_GroupTitle, group_title, i ); - msg->getUUIDFast( _PREHASH_GroupData, _PREHASH_GroupID, group_id, i); - msg->getStringFast(_PREHASH_GroupData, _PREHASH_GroupName, group_name, i ); - msg->getUUIDFast( _PREHASH_GroupData, _PREHASH_GroupInsigniaID, group_insignia_id, i ); - - std::string group_string; - if (group_id.notNull()) - { - group_string.assign(group_name); - } - else - { - group_string.assign(""); - } - - // Is this really necessary? Remove existing entry if it exists. - // TODO: clear the whole list when a request for data is made - if (group_list) - { - S32 index = group_list->getItemIndex(group_id); - if ( index >= 0 ) - { - group_list->deleteSingleItem(index); - } - } - - LLSD row; - row["id"] = group_id; - row["columns"][0]["value"] = group_string; - row["columns"][0]["font"] = "SANSSERIF_SMALL"; - if (group_list) - { - group_list->addElement(row); - } - } - } - if(group_list) group_list->sortByColumnIndex(0, TRUE); - } -} - -// Don't enable the OK button until you actually have the data. -// Otherwise you will write blanks back into the database. -void LLPanelAvatar::enableOKIfReady() -{ - if(mHaveProperties && childIsVisible("OK")) - { - childSetEnabled("OK", TRUE); - } - else - { - childSetEnabled("OK", FALSE); - } -} - -void LLPanelAvatar::sendAvatarPropertiesUpdate() -{ - llinfos << "Sending avatarinfo update" << llendl; - BOOL allow_publish = FALSE; - BOOL mature = FALSE; - if (LLPanelAvatar::sAllowFirstLife) - { - allow_publish = childGetValue("allow_publish"); - //A profile should never be mature. - mature = FALSE; - } - U32 want_to_mask = 0x0; - U32 skills_mask = 0x0; - std::string want_to_text; - std::string skills_text; - std::string languages_text; - mPanelAdvanced->getWantSkills(&want_to_mask, want_to_text, &skills_mask, skills_text, languages_text); - - LLUUID first_life_image_id; - std::string first_life_about_text; - if (mPanelFirstLife) - { - first_life_about_text = mPanelFirstLife->childGetValue("about").asString(); - LLTextureCtrl* image_ctrl = mPanelFirstLife->getChild<LLTextureCtrl>("img"); - if(image_ctrl) - { - first_life_image_id = image_ctrl->getImageAssetID(); - } - } - - std::string about_text = mPanelSecondLife->childGetValue("about").asString(); - - LLMessageSystem *msg = gMessageSystem; - - msg->newMessageFast(_PREHASH_AvatarPropertiesUpdate); - msg->nextBlockFast(_PREHASH_AgentData); - msg->addUUIDFast( _PREHASH_AgentID, gAgent.getID() ); - msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID() ); - msg->nextBlockFast(_PREHASH_PropertiesData); - - LLTextureCtrl* image_ctrl = mPanelSecondLife->getChild<LLTextureCtrl>("img"); - if(image_ctrl) - { - msg->addUUIDFast( _PREHASH_ImageID, image_ctrl->getImageAssetID()); - } - else - { - msg->addUUIDFast( _PREHASH_ImageID, LLUUID::null); - } -// msg->addUUIDFast( _PREHASH_ImageID, mPanelSecondLife->mimage_ctrl->getImageAssetID() ); - msg->addUUIDFast( _PREHASH_FLImageID, first_life_image_id); - msg->addStringFast( _PREHASH_AboutText, about_text); - msg->addStringFast( _PREHASH_FLAboutText, first_life_about_text); - - msg->addBOOL("AllowPublish", allow_publish); - msg->addBOOL("MaturePublish", mature); - msg->addString("ProfileURL", mPanelWeb->childGetText("url_edit")); - gAgent.sendReliableMessage(); - - msg->newMessage("AvatarInterestsUpdate"); - msg->nextBlockFast(_PREHASH_AgentData); - msg->addUUIDFast( _PREHASH_AgentID, gAgent.getID() ); - msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID() ); - msg->nextBlockFast(_PREHASH_PropertiesData); - msg->addU32Fast( _PREHASH_WantToMask, want_to_mask); - msg->addStringFast( _PREHASH_WantToText, want_to_text); - msg->addU32Fast( _PREHASH_SkillsMask, skills_mask); - msg->addStringFast( _PREHASH_SkillsText, skills_text); - msg->addString( "LanguagesText", languages_text); - gAgent.sendReliableMessage(); -} - -void LLPanelAvatar::selectTab(S32 tabnum) -{ - if(mTab) - { - mTab->selectTab(tabnum); - } -} - -void LLPanelAvatar::selectTabByName(std::string tab_name) -{ - if (mTab) - { - if (tab_name.empty()) - { - mTab->selectFirstTab(); - } - else + LLAvatarNotes* avatar_notes = static_cast<LLAvatarNotes*>(data); + if(avatar_notes && getAvatarId() == avatar_notes->target_id) { - mTab->selectTabByName(tab_name); - } - } -} - - -void LLPanelAvatar::processAvatarNotesReply(LLMessageSystem *msg, void**) -{ - // extract the agent id - LLUUID agent_id; - msg->getUUID("AgentData", "AgentID", agent_id); - - LLUUID target_id; - msg->getUUID("Data", "TargetID", target_id); - - // look up all panels which have this avatar - for (panel_list_t::iterator iter = sAllPanels.begin(); iter != sAllPanels.end(); ++iter) - { - LLPanelAvatar* self = *iter; - if (self->mAvatarID != target_id) - { - continue; - } - - std::string text; - msg->getString("Data", "Notes", text); - self->childSetValue("notes edit", text); - self->childSetEnabled("notes edit", true); - self->mHaveNotes = true; - self->mLastNotes = text; - } -} - - -void LLPanelAvatar::processAvatarClassifiedReply(LLMessageSystem *msg, void** userdata) -{ - LLUUID agent_id; - LLUUID target_id; - - msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, agent_id); - msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_TargetID, target_id); - - // look up all panels which have this avatar target - for (panel_list_t::iterator iter = sAllPanels.begin(); iter != sAllPanels.end(); ++iter) - { - LLPanelAvatar* self = *iter; - if (self->mAvatarID != target_id) - { - continue; - } - - self->mPanelClassified->processAvatarClassifiedReply(msg, userdata); - } -} - -void LLPanelAvatar::processAvatarPicksReply(LLMessageSystem *msg, void** userdata) -{ - LLUUID agent_id; - LLUUID target_id; - - msg->getUUID("AgentData", "AgentID", agent_id); - msg->getUUID("AgentData", "TargetID", target_id); - - // look up all panels which have this avatar target - for (panel_list_t::iterator iter = sAllPanels.begin(); iter != sAllPanels.end(); ++iter) - { - LLPanelAvatar* self = *iter; - if (self->mAvatarID != target_id) - { - continue; - } + childSetValue("notes_edit",avatar_notes->notes); + childSetEnabled("notes edit", true); - self->mPanelPicks->processAvatarPicksReply(msg, userdata); - } -} - -// static -void LLPanelAvatar::onClickKick(void* userdata) -{ - LLPanelAvatar* self = (LLPanelAvatar*) userdata; - - LLSD payload; - payload["avatar_id"] = self->mAvatarID; - LLNotifications::instance().add("KickUser", LLSD(), payload, finishKick); -} - -//static -bool LLPanelAvatar::finishKick(const LLSD& notification, const LLSD& response) -{ - S32 option = LLNotification::getSelectedOption(notification, response); - - if (option == 0) - { - LLUUID avatar_id = notification["payload"]["avatar_id"].asUUID(); - LLMessageSystem* msg = gMessageSystem; - - msg->newMessageFast(_PREHASH_GodKickUser); - msg->nextBlockFast(_PREHASH_UserInfo); - msg->addUUIDFast(_PREHASH_GodID, gAgent.getID() ); - msg->addUUIDFast(_PREHASH_GodSessionID, gAgent.getSessionID()); - msg->addUUIDFast(_PREHASH_AgentID, avatar_id ); - msg->addU32("KickFlags", KICK_FLAGS_DEFAULT ); - msg->addStringFast(_PREHASH_Reason, response["message"].asString() ); - gAgent.sendReliableMessage(); - } - return false; -} - -// static -void LLPanelAvatar::onClickFreeze(void* userdata) -{ - LLPanelAvatar* self = (LLPanelAvatar*) userdata; - LLSD payload; - payload["avatar_id"] = self->mAvatarID; - LLNotifications::instance().add("FreezeUser", LLSD(), payload, LLPanelAvatar::finishFreeze); -} - -// static -bool LLPanelAvatar::finishFreeze(const LLSD& notification, const LLSD& response) -{ - S32 option = LLNotification::getSelectedOption(notification, response); - - if (option == 0) - { - LLUUID avatar_id = notification["payload"]["avatar_id"].asUUID(); - LLMessageSystem* msg = gMessageSystem; - - msg->newMessageFast(_PREHASH_GodKickUser); - msg->nextBlockFast(_PREHASH_UserInfo); - msg->addUUIDFast(_PREHASH_GodID, gAgent.getID() ); - msg->addUUIDFast(_PREHASH_GodSessionID, gAgent.getSessionID()); - msg->addUUIDFast(_PREHASH_AgentID, avatar_id ); - msg->addU32("KickFlags", KICK_FLAGS_FREEZE ); - msg->addStringFast(_PREHASH_Reason, response["message"].asString() ); - gAgent.sendReliableMessage(); - } - return false; -} - -// static -void LLPanelAvatar::onClickUnfreeze(void* userdata) -{ - LLPanelAvatar* self = (LLPanelAvatar*) userdata; - LLSD payload; - payload["avatar_id"] = self->mAvatarID; - LLNotifications::instance().add("UnFreezeUser", LLSD(), payload, LLPanelAvatar::finishUnfreeze); -} - -// static -bool LLPanelAvatar::finishUnfreeze(const LLSD& notification, const LLSD& response) -{ - S32 option = LLNotification::getSelectedOption(notification, response); - std::string text = response["message"].asString(); - if (option == 0) - { - LLUUID avatar_id = notification["payload"]["avatar_id"].asUUID(); - LLMessageSystem* msg = gMessageSystem; - - msg->newMessageFast(_PREHASH_GodKickUser); - msg->nextBlockFast(_PREHASH_UserInfo); - msg->addUUIDFast(_PREHASH_GodID, gAgent.getID() ); - msg->addUUIDFast(_PREHASH_GodSessionID, gAgent.getSessionID()); - msg->addUUIDFast(_PREHASH_AgentID, avatar_id ); - msg->addU32("KickFlags", KICK_FLAGS_UNFREEZE ); - msg->addStringFast(_PREHASH_Reason, text ); - gAgent.sendReliableMessage(); - } - return false; -} - -// static -void LLPanelAvatar::onClickCSR(void* userdata) -{ - LLPanelAvatar* self = (LLPanelAvatar*)userdata; - if (!self) return; - - LLNameEditor* name_edit = self->getChild<LLNameEditor>("name"); - if (!name_edit) return; - - std::string name = name_edit->getText(); - if (name.empty()) return; - - std::string url = "http://csr.lindenlab.com/agent/"; - - // slow and stupid, but it's late - S32 len = name.length(); - for (S32 i = 0; i < len; i++) - { - if (name[i] == ' ') - { - url += "%20"; - } - else - { - url += name[i]; + LLAvatarPropertiesProcessor::getInstance()->removeObserver(getAvatarId(),this); } } - - LLWeb::loadURL(url); -} - - -void* LLPanelAvatar::createPanelAvatarSecondLife(void* data) -{ - LLPanelAvatar* self = (LLPanelAvatar*)data; - self->mPanelSecondLife = new LLPanelAvatarSecondLife(self); - return self->mPanelSecondLife; -} - -void* LLPanelAvatar::createPanelAvatarWeb(void* data) -{ - LLPanelAvatar* self = (LLPanelAvatar*)data; - self->mPanelWeb = new LLPanelAvatarWeb(self); - return self->mPanelWeb; -} - -void* LLPanelAvatar::createPanelAvatarInterests(void* data) -{ - LLPanelAvatar* self = (LLPanelAvatar*)data; - self->mPanelAdvanced = new LLPanelAvatarAdvanced(self); - return self->mPanelAdvanced; -} - - -void* LLPanelAvatar::createPanelAvatarPicks(void* data) -{ - LLPanelAvatar* self = (LLPanelAvatar*)data; - self->mPanelPicks = new LLPanelAvatarPicks(self); - return self->mPanelPicks; -} - -void* LLPanelAvatar::createPanelAvatarClassified(void* data) -{ - LLPanelAvatar* self = (LLPanelAvatar*)data; - self->mPanelClassified = new LLPanelAvatarClassified(self); - return self->mPanelClassified; -} - -void* LLPanelAvatar::createPanelAvatarFirstLife(void* data) -{ - LLPanelAvatar* self = (LLPanelAvatar*)data; - self->mPanelFirstLife = new LLPanelAvatarFirstLife(self); - return self->mPanelFirstLife; -} - -void* LLPanelAvatar::createPanelAvatarNotes(void* data) -{ - LLPanelAvatar* self = (LLPanelAvatar*)data; - self->mPanelNotes = new LLPanelAvatarNotes(self); - return self->mPanelNotes; } diff --git a/indra/newview/llpanelavatar.h b/indra/newview/llpanelavatar.h index 8c7112197f0aa8db21a72ad25b235f566b9f8b0d..f72eb1990d7635946d462f340ae44fc972f058ad 100644 --- a/indra/newview/llpanelavatar.h +++ b/indra/newview/llpanelavatar.h @@ -37,10 +37,12 @@ #include "v3dmath.h" #include "lluuid.h" #include "llwebbrowserctrl.h" + #include "llavatarpropertiesprocessor.h" class LLButton; class LLCheckBoxCtrl; +class LLComboBox; class LLDropTarget; class LLInventoryItem; class LLLineEditor; @@ -57,6 +59,12 @@ class LLViewerObject; class LLMessageSystem; class LLIconCtrl; class LLWebBrowserCtrl; +class LLVector3d; +class LLFloaterReg; + +class LLPanelMeProfile; +class LLPanelPick; +class LLAgent; enum EOnlineStatus { @@ -64,322 +72,127 @@ enum EOnlineStatus ONLINE_STATUS_YES = 1 }; -// Base class for all sub-tabs inside the avatar profile. Many of these -// panels need to keep track of the parent panel (to get the avatar id) -// and only request data from the database when they are first drawn. JC -class LLPanelAvatarTab : public LLPanel -{ -public: - LLPanelAvatarTab(LLPanelAvatar* panel_avatar); - - // Calls refresh() once per frame when panel is visible - /*virtual*/ void draw(); - - LLPanelAvatar* getPanelAvatar() const { return mPanelAvatar; } - - void setDataRequested(bool requested) { mDataRequested = requested; } - bool isDataRequested() const { return mDataRequested; } - - // If the data for this tab has not yet been requested, - // send the request. Used by tabs that are filled in only - // when they are first displayed. - // type is one of "avatarnotesrequest", "avatarpicksrequest", - // or "avatarclassifiedsrequest" - void sendAvatarProfileRequestIfNeeded(const std::string& method); - -private: - LLPanelAvatar* mPanelAvatar; - bool mDataRequested; -}; - -class LLPanelAvatarFirstLife : public LLPanelAvatarTab +class LLPanelProfileTab + : public LLPanel + , public LLAvatarPropertiesObserver { public: - LLPanelAvatarFirstLife(LLPanelAvatar* panel_avatar); - - /*virtual*/ BOOL postBuild(void); - - void enableControls(BOOL own_avatar); -}; - - -class LLPanelAvatarSecondLife -: public LLPanelAvatarTab -{ -public: - LLPanelAvatarSecondLife(LLPanelAvatar* panel_avatar ); - - /*virtual*/ BOOL postBuild(void); - /*virtual*/ void refresh(); - - static void onClickImage( void *userdata); - static void onClickFriends( void *userdata); - static void onDoubleClickGroup(void* userdata); - static void onClickPublishHelp(void *userdata); - static void onClickPartnerHelp(void *userdata); - static bool onClickPartnerHelpLoadURL(const LLSD& notification, const LLSD& response); - static void onClickPartnerInfo(void *userdata); - - // Clear out the controls anticipating new network data. - void clearControls(); - void enableControls(BOOL own_avatar); - void updateOnlineText(BOOL online, BOOL have_calling_card); - void updatePartnerName(); - - void setPartnerID(LLUUID id) { mPartnerID = id; } -private: - LLUUID mPartnerID; -}; - + LLPanelProfileTab(const LLUUID& avatar_id); + LLPanelProfileTab(const Params& params ); -// WARNING! The order of the inheritance here matters!! Do not change. - KLW -class LLPanelAvatarWeb : - public LLPanelAvatarTab - , public LLWebBrowserCtrlObserver -{ -public: - LLPanelAvatarWeb(LLPanelAvatar* panel_avatar); - /*virtual*/ ~LLPanelAvatarWeb(); - /*virtual*/ BOOL postBuild(void); + void setAvatarId(const LLUUID& avatar_id); - /*virtual*/ void refresh(); + const LLUUID& getAvatarId(){return mAvatarId;} - void enableControls(BOOL own_avatar); - - void setWebURL(std::string url); - - void load(std::string url); - static void onURLKeystroke(LLLineEditor* editor, void* data); - static void onCommitLoad(LLUICtrl* ctrl, void* data); - static void onCommitURL(LLUICtrl* ctrl, void* data); - static void onClickWebProfileHelp(void *); + virtual void updateData() = 0; + + virtual void onActivate(const LLUUID& id); - // browser observer impls - virtual void onStatusTextChange( const EventType& eventIn ); - virtual void onLocationChange( const EventType& eventIn ); + typedef enum e_profile_type + { + PT_UNKNOWN, + PT_OWN, + PT_OTHER + } EProfileType; -private: - std::string mHome; - std::string mNavigateTo; - LLWebBrowserCtrl* mWebBrowser; -}; + virtual void onAddFriend(); + virtual void onIM(); -class LLPanelAvatarAdvanced : public LLPanelAvatarTab -{ -public: - LLPanelAvatarAdvanced(LLPanelAvatar* panel_avatar); + virtual void onTeleport(); - /*virtual*/ BOOL postBuild(void); + virtual void clear(){}; - void enableControls(BOOL own_avatar); - void setWantSkills(U32 want_to_mask, const std::string& want_to_text, - U32 skills_mask, const std::string& skills_text, - const std::string& languages_text); - void getWantSkills(U32* want_to_mask, std::string& want_to_text, - U32* skills_mask, std::string& skills_text, - std::string& languages_text); +protected: + virtual ~LLPanelProfileTab(); + void setProfileType(); -private: - S32 mWantToCount; - S32 mSkillsCount; - LLCheckBoxCtrl *mWantToCheck[8]; - LLLineEditor *mWantToEdit; - LLCheckBoxCtrl *mSkillsCheck[8]; - LLLineEditor *mSkillsEdit; +protected: + e_profile_type mProfileType; + LLUUID mAvatarId; }; - -class LLPanelAvatarNotes : public LLPanelAvatarTab +class LLPanelAvatarProfile + : public LLPanelProfileTab { public: - LLPanelAvatarNotes(LLPanelAvatar* panel_avatar); + LLPanelAvatarProfile(const LLUUID& avatar_id = LLUUID::null); + LLPanelAvatarProfile(const Params& params ); + ~LLPanelAvatarProfile(); + + static void* create(void* data); - /*virtual*/ BOOL postBuild(void); + /*virtual*/ void processProperties(void* data, EAvatarProcessorType type); - /*virtual*/ void refresh(); + void updateData(); - void clearControls(); + void clear(); - static void onCommitNotes(LLUICtrl* field, void* userdata); -}; - - -class LLPanelAvatarClassified : public LLPanelAvatarTab -{ -public: - LLPanelAvatarClassified(LLPanelAvatar* panel_avatar); + virtual void clearControls(); /*virtual*/ BOOL postBuild(void); + void onOpen(const LLSD& key); - /*virtual*/ void refresh(); + void onAddFriendButtonClick(); - // If can close, return TRUE. If cannot close, pop save/discard dialog - // and return FALSE. - BOOL canClose(); + void onIMButtonClick(); - void apply(); + void onCallButtonClick(); - BOOL titleIsValid(); + void onTeleportButtonClick(); - // Delete all the classified sub-panels from the tab container - void deleteClassifiedPanels(); - - // Unpack the outline of classified for this avatar (count, names, but not - // actual data). - void processAvatarClassifiedReply(LLMessageSystem* msg, void**); + void onShareButtonClick(); private: - static void onClickNew(void* data); - static void onClickDelete(void* data); - - bool callbackDelete(const LLSD& notification, const LLSD& response); - bool callbackNew(const LLSD& notification, const LLSD& response); -}; - - -class LLPanelAvatarPicks : public LLPanelAvatarTab -{ -public: - LLPanelAvatarPicks(LLPanelAvatar* panel_avatar); + bool isOwnProfile(){return PT_OWN == mProfileType;} + bool isEditMode(){return mEditMode;} + void updateChildrenList(); + void onStatusChanged(); + void onStatusMessageChanged(); + void setCaptionText(const LLAvatarData* avatar_data); + void scrollToTop(); - /*virtual*/ BOOL postBuild(void); - /*virtual*/ void refresh(); - - // Delete all the pick sub-panels from the tab container - void deletePickPanels(); - - // Unpack the outline of picks for this avatar (count, names, but not - // actual data). - void processAvatarPicksReply(LLMessageSystem* msg, void**); - void processAvatarClassifiedReply(LLMessageSystem* msg, void**); +protected: + bool mEditMode; private: - static void onClickNew(void* data); - static void onClickDelete(void* data); - - bool callbackDelete(const LLSD& notification, const LLSD& response); + bool mUpdated; + LLComboBox * mStatusCombobox; + LLLineEditor * mStatusMessage; }; -class LLPanelAvatar : public LLPanel, public LLAvatarPropertiesObserver +class LLPanelAvatarNotes + : public LLPanelProfileTab { public: - LLPanelAvatar(BOOL allow_edit); - /*virtual*/ ~LLPanelAvatar(); + LLPanelAvatarNotes(const LLUUID& id = LLUUID::null); + LLPanelAvatarNotes(const Params& params ); + ~LLPanelAvatarNotes(); - /*virtual*/ BOOL postBuild(void); + static void* create(void* data); - // If can close, return TRUE. If cannot close, pop save/discard dialog - // and return FALSE. - BOOL canClose(); + BOOL postBuild(void); - void setAvatar(LLViewerObject *avatarp); + void onCommitRights(); - // Fill in the avatar ID and handle some field fill-in, as well as - // button enablement. - // Pass one of the ONLINE_STATUS_foo constants above. - void setAvatarID(const LLUUID &avatar_id, const std::string &name, EOnlineStatus online_status); + void onCommitNotes(); - void setOnlineStatus(EOnlineStatus online_status); + void clear(); - const LLUUID& getAvatarID() const { return mAvatarID; } - - void resetGroupList(); + void processProperties(void* data, EAvatarProcessorType type); - void sendAvatarStatisticsRequest(); + void updateData(); - void sendAvatarPropertiesRequest(); - void sendAvatarPropertiesUpdate(); - - void sendAvatarNotesRequest(); - void sendAvatarNotesUpdate(); - - void sendAvatarPicksRequest(); - - void selectTab(S32 tabnum); - void selectTabByName(std::string tab_name); - - BOOL haveData() { return mHaveProperties && mHaveStatistics; } - BOOL isEditable() const { return mAllowEdit; } - - // LLAvatarPropertiesProcessor observer trigger - virtual void processAvatarProperties(const LLAvatarData& avatar_data); - - static void processAvatarInterestsReply(LLMessageSystem *msg, void **); - static void processAvatarGroupsReply(LLMessageSystem* msg, void**); - static void processAvatarNotesReply(LLMessageSystem *msg, void **); - static void processAvatarPicksReply(LLMessageSystem *msg, void **); - static void processAvatarClassifiedReply(LLMessageSystem *msg, void **); - - static void onClickTrack( void *userdata); - static void onClickIM( void *userdata); - static void onClickOfferTeleport( void *userdata); - static void onClickPay( void *userdata); - static void onClickAddFriend(void* userdata); - static void onClickOK( void *userdata); - static void onClickCancel( void *userdata); - static void onClickKick( void *userdata); - static void onClickFreeze( void *userdata); - static void onClickUnfreeze(void *userdata); - static void onClickCSR( void *userdata); - static void onClickMute( void *userdata); - -private: - void enableOKIfReady(); - - static bool finishKick(const LLSD& notification, const LLSD& response); - static bool finishFreeze(const LLSD& notification, const LLSD& response); - static bool finishUnfreeze(const LLSD& notification, const LLSD& response); - - static void showProfileCallback(S32 option, void *userdata); +protected: +}; - static void* createPanelAvatar(void* data); - static void* createFloaterAvatarInfo(void* data); - static void* createPanelAvatarSecondLife(void* data); - static void* createPanelAvatarWeb(void* data); - static void* createPanelAvatarInterests(void* data); - static void* createPanelAvatarPicks(void* data); - static void* createPanelAvatarClassified(void* data); - static void* createPanelAvatarFirstLife(void* data); - static void* createPanelAvatarNotes(void* data); -public: - LLPanelAvatarSecondLife* mPanelSecondLife; - LLPanelAvatarAdvanced* mPanelAdvanced; - LLPanelAvatarClassified* mPanelClassified; - LLPanelAvatarPicks* mPanelPicks; - LLPanelAvatarNotes* mPanelNotes; - LLPanelAvatarFirstLife* mPanelFirstLife; - LLPanelAvatarWeb* mPanelWeb; - - LLDropTarget* mDropTarget; - - // Teen users are not allowed to see or enter data into the first life page, - // or their own about/interests text entry fields. - static BOOL sAllowFirstLife; - -private: - LLUUID mAvatarID; // for which avatar is this window? - BOOL mIsFriend; // Are we friends? - BOOL mHaveProperties; - BOOL mHaveStatistics; - // only update note if data received from database and - // note is changed from database version - bool mHaveNotes; - std::string mLastNotes; - LLTabContainer* mTab; - BOOL mAllowEdit; - - typedef std::list<LLPanelAvatar*> panel_list_t; - static panel_list_t sAllPanels; -}; // helper funcs void add_left_label(LLPanel *panel, const std::string& name, S32 y); - #endif // LL_LLPANELAVATAR_H diff --git a/indra/newview/llpanelclassified.cpp b/indra/newview/llpanelclassified.cpp index b606aef06d9bd905d179db0065f47fb7a4791483..c328bcb7f99f04d8900574e13fdc6e4002110662 100644 --- a/indra/newview/llpanelclassified.cpp +++ b/indra/newview/llpanelclassified.cpp @@ -748,22 +748,18 @@ void LLPanelClassified::refresh() mDescEditor->setEnabled(is_self); //mPriceEditor->setEnabled(is_self); mCategoryCombo->setEnabled(is_self); + mMatureCombo->setEnabled(is_self); if( is_self ) { if( mMatureCombo->getCurrentIndex() == 0 ) { // It's a new panel. - // PG regions must have PG classifieds. AO must have mature. - // Only Mature can be PG or Mature. + // PG regions should have PG classifieds. AO should have mature. - constrainAccessCombo(); + setDefaultAccessCombo(); } } - else - { - mMatureCombo->setEnabled( FALSE ); - } if (mAutoRenewCheck) { @@ -1001,7 +997,7 @@ void LLPanelClassified::onClickSet(void* data) self->mLocationEditor->setText(location_text); self->mLocationChanged = true; - self->constrainAccessCombo(); + self->setDefaultAccessCombo(); // Set this to null so it updates on the next save. self->mParcelID.setNull(); @@ -1131,35 +1127,22 @@ void LLFloaterPriceForListing::buttonCore(S32 button, void* data) } } -void LLPanelClassified::constrainAccessCombo() +void LLPanelClassified::setDefaultAccessCombo() { - // Location changed. - // PG regions must have PG classifieds. AO must have mature. - // Only Mature can be PG or Mature. - - bool pref_visible = TRUE; + // PG regions should have PG classifieds. AO should have mature. - S32 force_access = MATURE_UNDEFINED; LLViewerRegion *regionp = gAgent.getRegion(); switch( regionp->getSimAccess() ) { case SIM_ACCESS_PG: - force_access = PG_CONTENT; + mMatureCombo->setCurrentByIndex(PG_CONTENT); break; case SIM_ACCESS_ADULT: - force_access = MATURE_CONTENT; + mMatureCombo->setCurrentByIndex(MATURE_CONTENT); break; default: // You are free to move about the cabin. break; } - - if ( force_access != MATURE_UNDEFINED ) - { - pref_visible = FALSE; - mMatureCombo->setCurrentByIndex(force_access); - } - - mMatureCombo->setEnabled(pref_visible); } diff --git a/indra/newview/llpanelclassified.h b/indra/newview/llpanelclassified.h index 68a5a3332109bdce3fa0d1f2d9f4c6ba324f2875..417eddf460622b331b3cc55af2ce03271df6e150 100644 --- a/indra/newview/llpanelclassified.h +++ b/indra/newview/llpanelclassified.h @@ -120,7 +120,7 @@ class LLPanelClassified : public LLPanel static void focusReceived(LLFocusableElement* ctrl, void* data); static void onCommitAny(LLUICtrl* ctrl, void* data); - void constrainAccessCombo(); // Force AO and PG regions to proper classified access + void setDefaultAccessCombo(); // Default AO and PG regions to proper classified access BOOL checkDirty(); // Update and return mDirty diff --git a/indra/newview/llpanelgroupgeneral.cpp b/indra/newview/llpanelgroupgeneral.cpp index da87b4d1a0e98af5c94ece47c0f722cf1b865022..d495373cc4bbc22a5b043da08cabecb7ba78b39c 100644 --- a/indra/newview/llpanelgroupgeneral.cpp +++ b/indra/newview/llpanelgroupgeneral.cpp @@ -37,7 +37,6 @@ #include "lluictrlfactory.h" #include "llagent.h" #include "roles_constants.h" -#include "llfloateravatarinfo.h" #include "llfloatergroupinfo.h" // UI elements @@ -45,6 +44,7 @@ #include "llcheckboxctrl.h" #include "llcombobox.h" #include "lldbstrings.h" +#include "llfriendactions.h" #include "lllineeditor.h" #include "llnamebox.h" #include "llnamelistctrl.h" @@ -375,7 +375,7 @@ void LLPanelGroupGeneral::openProfile(void* data) LLScrollListItem* selected = self->mListVisibleMembers->getFirstSelected(); if (selected) { - LLFloaterAvatarInfo::showFromDirectory( selected->getUUID() ); + LLFriendActions::showProfile(selected->getUUID()); } } } diff --git a/indra/newview/llpanelgrouplandmoney.cpp b/indra/newview/llpanelgrouplandmoney.cpp index afc58734158ce720c22d8a60cc1e04f549bd26b0..ea092645e7d3b08a383f58aa4576e40756ff83a3 100644 --- a/indra/newview/llpanelgrouplandmoney.cpp +++ b/indra/newview/llpanelgrouplandmoney.cpp @@ -402,12 +402,6 @@ void LLPanelGroupLandMoney::impl::processGroupLand(LLMessageSystem* msg) //if ( !gAgent.hasPowerInGroup(mGroupID, GP_LAND_VIEW_OWNED) ) return; if (!gAgent.isInGroup(mGroupID)) return; - //we updated more than just the available area special block - if ( count > 1) - { - mMapButtonp->setEnabled(TRUE); - } - std::string name; std::string desc; S32 actual_area; @@ -555,6 +549,7 @@ void LLPanelGroupLandMoney::activate() mImplementationp->setYourMaxContributionTextBox(max_avail); } + mImplementationp->mMapButtonp->setEnabled(false); update(GC_ALL); } @@ -645,6 +640,12 @@ BOOL LLPanelGroupLandMoney::postBuild() mImplementationp->mGroupParcelsp = getChild<LLScrollListCtrl>("group_parcel_list"); + if ( mImplementationp->mGroupParcelsp ) + { + mImplementationp->mGroupParcelsp->setCommitCallback(boost::bind(&LLButton::setEnabled, mImplementationp->mMapButtonp, true)); + mImplementationp->mGroupParcelsp->setCommitOnSelectionChange(true); + } + mImplementationp->mCantViewParcelsText = getString("cant_view_group_land_text"); mImplementationp->mCantViewAccountsText = getString("cant_view_group_accounting_text"); @@ -663,11 +664,6 @@ BOOL LLPanelGroupLandMoney::postBuild() mImplementationp->mGroupOverLimitIconp->setVisible(FALSE); } - if ( mImplementationp->mMapButtonp ) - { - mImplementationp->mMapButtonp->setEnabled(FALSE); - } - if ( !can_view ) { if ( mImplementationp->mGroupParcelsp ) diff --git a/indra/newview/llpanelgroupnotices.cpp b/indra/newview/llpanelgroupnotices.cpp index acf6bc0dd063da6c6d9e461e8c23f9030217ee48..201cf5a0237d8696f9b2e41ca2c021b10327be54 100644 --- a/indra/newview/llpanelgroupnotices.cpp +++ b/indra/newview/llpanelgroupnotices.cpp @@ -73,8 +73,10 @@ class LLGroupDropTarget : public LLView public: struct Params : public LLInitParam::Block<Params, LLView::Params> { - Mandatory<LLPanelGroupNotices*> panel; - Mandatory<LLUUID> group_id; + // *NOTE: These parameters logically Mandatory, but are not + // specified in XML files, hence Optional + Optional<LLPanelGroupNotices*> panel; + Optional<LLUUID> group_id; Params() : panel("panel"), group_id("group_id") @@ -103,7 +105,7 @@ class LLGroupDropTarget : public LLView LLUUID mGroupID; }; -static LLRegisterWidget<LLGroupDropTarget> r("group_drop_target"); +static LLDefaultWidgetRegistry::Register<LLGroupDropTarget> r("group_drop_target"); LLGroupDropTarget::LLGroupDropTarget(const LLGroupDropTarget::Params& p) : LLView(p), @@ -196,8 +198,9 @@ std::string build_notice_date(const U32& the_time) time(&t); } - - std::string dateStr = LLTrans::getString("GroupNotifyDateStr"); + std::string dateStr = "["+LLTrans::getString("LTimeMthNum")+"]/[" + +LLTrans::getString("LTimeDay")+"]/[" + +LLTrans::getString("LTimeYear")+"]"; LLSD substitution; substitution["datetime"] = (S32) t; LLStringUtil::format (dateStr, substitution); diff --git a/indra/newview/llpanelgrouproles.cpp b/indra/newview/llpanelgrouproles.cpp index 1f50d2ef0438f42ed8ba48ffad82dd0a193ba745..9e537be4256d63c3a7ba89296d70cdb57c900503 100644 --- a/indra/newview/llpanelgrouproles.cpp +++ b/indra/newview/llpanelgrouproles.cpp @@ -36,8 +36,8 @@ #include "llagent.h" #include "llbutton.h" -#include "llfloateravatarinfo.h" #include "llfloatergroupinvite.h" +#include "llfriendactions.h" #include "lliconctrl.h" #include "lllineeditor.h" #include "llnamelistctrl.h" @@ -1289,7 +1289,7 @@ void LLPanelGroupMembersSubTab::handleMemberDoubleClick() LLScrollListItem* selected = mMembersList->getFirstSelected(); if (selected) { - LLFloaterAvatarInfo::showFromDirectory( selected->getUUID() ); + LLFriendActions::showProfile(selected->getUUID()); } } diff --git a/indra/newview/llpanelgrouproles.h b/indra/newview/llpanelgrouproles.h index 8290a81ff48c6ce2dcd478f3d96c04de2df92854..3ceaae131392f885333325d2d40a5e98bbd88a72 100644 --- a/indra/newview/llpanelgrouproles.h +++ b/indra/newview/llpanelgrouproles.h @@ -42,6 +42,7 @@ class LLPanelGroupRolesSubTab; class LLPanelGroupActionsSubTab; class LLScrollListCtrl; class LLScrollListItem; +class LLTextEditor; // Forward declare for friend usage. //virtual BOOL LLPanelGroupSubTab::postBuildSubTab(LLView*); diff --git a/indra/newview/llpanellandmarks.cpp b/indra/newview/llpanellandmarks.cpp new file mode 100644 index 0000000000000000000000000000000000000000..24b4082630f39833c4e3dde2b5b37a889b7e3966 --- /dev/null +++ b/indra/newview/llpanellandmarks.cpp @@ -0,0 +1,252 @@ +/** + * @file llpanellandmarks.cpp + * @brief Landmarks tab for Side Bar "Places" panel + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + * + * Copyright (c) 2001-2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#include "llviewerprecompiledheaders.h" + +#include "llfloaterreg.h" +#include "lllandmark.h" + +#include "llfloaterworldmap.h" +#include "lllandmarklist.h" +#include "llpanellandmarks.h" +#include "llsidetray.h" +#include "lltabcontainer.h" +#include "llworldmap.h" + +// Not yet implemented; need to remove buildPanel() from constructor when we switch +//static LLRegisterPanelClassWrapper<LLLandmarksPanel> t_landmarks("panel_landmarks"); + +LLLandmarksPanel::LLLandmarksPanel() + : LLPanelPlacesTab(), + mInventoryPanel(NULL) +{ + mSavedFolderState = new LLSaveFolderState(); + mSavedFolderState->setApply(FALSE); + + LLUICtrlFactory::getInstance()->buildPanel(this, "panel_landmarks.xml"); +} + +LLLandmarksPanel::~LLLandmarksPanel() +{ + delete mSavedFolderState; +} + +BOOL LLLandmarksPanel::postBuild() +{ + if (!gInventory.isInventoryUsable()) + return FALSE; + + mInventoryPanel = getChild<LLInventoryPanel>("landmarks_list"); + mInventoryPanel->setFilterTypes(0x1 << LLInventoryType::IT_LANDMARK); + mInventoryPanel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS); + mInventoryPanel->openDefaultFolderForType(LLAssetType::AT_LANDMARK); + mInventoryPanel->setSelectCallback(boost::bind(&LLLandmarksPanel::onSelectionChange, this, _1, _2)); + + LLFolderView* root_folder = mInventoryPanel->getRootFolder(); + root_folder->setReshapeCallback(boost::bind(&LLLandmarksPanel::onSelectionChange, this, _1, _2)); + + mActionBtn = getChild<LLButton>("selector"); + root_folder->addChild(mActionBtn); + mActionBtn->setEnabled(TRUE); + childSetAction("selector", boost::bind(&LLLandmarksPanel::onSelectorButtonClicked, this), this); + + return TRUE; +} + +// virtual +void LLLandmarksPanel::onSearchEdit(const std::string& string) +{ + if (string == "") + { + mInventoryPanel->setFilterSubString(LLStringUtil::null); + + // re-open folders that were initially open + mSavedFolderState->setApply(TRUE); + mInventoryPanel->getRootFolder()->applyFunctorRecursively(*mSavedFolderState); + LLOpenFoldersWithSelection opener; + mInventoryPanel->getRootFolder()->applyFunctorRecursively(opener); + mInventoryPanel->getRootFolder()->scrollToShowSelection(); + } + + gInventory.startBackgroundFetch(); + + if (mInventoryPanel->getFilterSubString().empty() && string.empty()) + { + // current filter and new filter empty, do nothing + return; + } + + // save current folder open state if no filter currently applied + if (mInventoryPanel->getRootFolder()->getFilterSubString().empty()) + { + mSavedFolderState->setApply(FALSE); + mInventoryPanel->getRootFolder()->applyFunctorRecursively(*mSavedFolderState); + } + + // set new filter string + mInventoryPanel->setFilterSubString(string); +} + +// virtual +void LLLandmarksPanel::onShowOnMap() +{ + LLFolderViewItem* current_item = mInventoryPanel->getRootFolder()->getCurSelectedItem(); + if (!current_item) + return; + + LLFolderViewEventListener* listenerp = current_item->getListener(); + if (listenerp->getInventoryType() != LLInventoryType::IT_LANDMARK) + return; + + LLInventoryItem* inventory_item = gInventory.getItem(listenerp->getUUID()); + if (!inventory_item) + return; + + LLLandmark* landmark = gLandmarkList.getAsset(inventory_item->getAssetUUID()); + if (!landmark) + return; + + LLVector3d landmark_global_pos; + if (!landmark->getGlobalPos(landmark_global_pos)) + return; + + if (!landmark_global_pos.isExactlyZero()) + { + LLFloaterWorldMap::getInstance()->trackLocation(landmark_global_pos); + LLFloaterReg::showInstance("world_map", "center"); + } +} + +// virtual +void LLLandmarksPanel::onTeleport() +{ + LLFolderViewItem* current_item = mInventoryPanel->getRootFolder()->getCurSelectedItem(); + if (!current_item) + return; + + LLFolderViewEventListener* listenerp = current_item->getListener(); + if (listenerp->getInventoryType() == LLInventoryType::IT_LANDMARK) + { + listenerp->openItem(); + } + + togglePanelPlacesButtons(TRUE); +} + +/* +// virtual +void LLLandmarksPanel::onCopySLURL() +{ + LLFolderViewItem* current_item = mInventoryPanel->getRootFolder()->getCurSelectedItem(); + if (!current_item) + return; + + LLFolderViewEventListener* listenerp = current_item->getListener(); + if (listenerp->getInventoryType() != LLInventoryType::IT_LANDMARK) + return; + + LLInventoryItem* inventory_item = gInventory.getItem(listenerp->getUUID()); + if (!inventory_item) + return; + + LLLandmark* landmark = gLandmarkList.getAsset(inventory_item->getAssetUUID()); + if (!landmark) + return; + + LLVector3d landmark_global_pos; + if (!landmark->getGlobalPos(landmark_global_pos)) + return; + + U64 new_region_handle = to_region_handle(landmark_global_pos); + + LLWorldMap::url_callback_t cb = boost::bind( + &LLPanelPlacesTab::onRegionResponse, this, + landmark_global_pos, _1, _2, _3, _4); + + LLWorldMap::getInstance()->sendHandleRegionRequest(new_region_handle, cb, std::string("unused"), false); +} +*/ + +void LLLandmarksPanel::onSelectionChange(const std::deque<LLFolderViewItem*> &items, BOOL user_action) +{ + LLFolderViewItem* current_item = mInventoryPanel->getRootFolder()->getCurSelectedItem(); + if (!current_item) + return; + + LLFolderViewEventListener* listenerp = current_item->getListener(); + if (listenerp->getInventoryType() == LLInventoryType::IT_LANDMARK) + { + S32 bottom = 0; + LLFolderViewItem* folder = current_item->getParentFolder(); + + while ( folder->getParentFolder() != NULL ) + { + bottom += folder->getRect().mBottom; + folder = folder->getParentFolder(); + } + + LLRect rect = current_item->getRect(); + LLRect btn_rect( + rect.mRight - mActionBtn->getRect().getWidth(), + bottom + rect.mTop, + rect.mRight, + bottom + rect.mBottom); + + mActionBtn->setRect(btn_rect); + + if (!mActionBtn->getVisible()) + mActionBtn->setVisible(TRUE); + + togglePanelPlacesButtons(TRUE); + } + else + { + if (mActionBtn->getVisible()) + mActionBtn->setVisible(FALSE); + + togglePanelPlacesButtons(FALSE); + } +} + +void LLLandmarksPanel::onSelectorButtonClicked() +{ + LLFolderViewItem* cur_item = mInventoryPanel->getRootFolder()->getCurSelectedItem(); + + LLFolderViewEventListener* listenerp = cur_item->getListener(); + if (listenerp->getInventoryType() == LLInventoryType::IT_LANDMARK) + { + LLSD key; + key["type"] = LLPanelPlaces::LANDMARK; + key["id"] = listenerp->getUUID(); + + LLSideTray::getInstance()->showPanel("panel_places", key); + } +} diff --git a/indra/newview/llpanellandmarks.h b/indra/newview/llpanellandmarks.h new file mode 100644 index 0000000000000000000000000000000000000000..0f400a722ee6c0882c2e7d85c9cde15d2a15366d --- /dev/null +++ b/indra/newview/llpanellandmarks.h @@ -0,0 +1,61 @@ +/** + * @file llpanellandmarks.h + * @brief Landmarks tab for Side Bar "Places" panel + * class definition + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + * + * Copyright (c) 2001-2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#ifndef LL_LLPANELLANDMARKS_H +#define LL_LLPANELLANDMARKS_H + +#include "llinventoryview.h" +#include "llinventorymodel.h" +#include "llpanelplacestab.h" + +class LLLandmarksPanel : public LLPanelPlacesTab +{ +public: + LLLandmarksPanel(); + virtual ~LLLandmarksPanel(); + + /*virtual*/ BOOL postBuild(); + /*virtual*/ void onSearchEdit(const std::string& string); + /*virtual*/ void onShowOnMap(); + /*virtual*/ void onTeleport(); + ///*virtual*/ void onCopySLURL(); + + void onSelectionChange(const std::deque<LLFolderViewItem*> &items, BOOL user_action); + void onSelectorButtonClicked(); + +private: + LLInventoryPanel* mInventoryPanel; + LLSaveFolderState* mSavedFolderState; + LLButton* mActionBtn; +}; + +#endif //LL_LLPANELLANDMARKS_H diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp index 06c78a93da20ea80acf0492ef5ed64ceb709e9be..75df49e5e37d7a90b541a6c48d2ed5bbd86e3ecb 100644 --- a/indra/newview/llpanellogin.cpp +++ b/indra/newview/llpanellogin.cpp @@ -34,9 +34,8 @@ #include "llpanellogin.h" -#include "llpanelgeneral.h" - #include "indra_constants.h" // for key and mask constants +#include "llfloaterreg.h" #include "llfontgl.h" #include "llmd5.h" #include "llsecondlifeurls.h" @@ -49,7 +48,6 @@ #include "llcombobox.h" #include "llcurl.h" #include "llviewercontrol.h" -#include "llfloaterabout.h" #include "llfloaterpreference.h" #include "llfocusmgr.h" #include "lllineeditor.h" @@ -69,8 +67,8 @@ #include "llhttpclient.h" #include "llweb.h" #include "llwebbrowserctrl.h" -#include "llfloateruipreview.h" #include "llfloaterhtml.h" +#include "llrootview.h" #include "llfloaterhtmlhelp.h" #include "llfloatertos.h" @@ -418,7 +416,7 @@ BOOL LLPanelLogin::handleKeyHere(KEY key, MASK mask) { // previously was "Test Floater" if(gSavedSettings.getBOOL("QAMode")) { - LLFloaterUIPreview::showInstance(); + LLFloaterReg::showInstance("ui_preview", LLSD(), TRUE); return TRUE; } } @@ -434,7 +432,7 @@ BOOL LLPanelLogin::handleKeyHere(KEY key, MASK mask) if ( KEY_F2 == key ) { llinfos << "Spawning floater TOS window" << llendl; - LLFloaterTOS* tos_dialog = LLFloaterTOS::show(LLFloaterTOS::TOS_TOS,"", NULL); + LLFloaterTOS* tos_dialog = LLFloaterTOS::show(LLFloaterTOS::TOS_TOS,""); tos_dialog->startModal(); return TRUE; } @@ -907,7 +905,7 @@ void LLPanelLogin::onClickQuit(void*) // static void LLPanelLogin::onClickVersion(void*) { - LLFloaterAbout::showInstance(); + LLFloaterReg::showInstance("sl_about"); } //static diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp new file mode 100644 index 0000000000000000000000000000000000000000..1d7a2748cc833d3e11425cb98f765542f47ed24c --- /dev/null +++ b/indra/newview/llpanelpeople.cpp @@ -0,0 +1,729 @@ +/** + * @file llpanelpeople.cpp + * @brief Side tray "People" panel + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + * + * Copyright (c) 2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#include "llviewerprecompiledheaders.h" + +// libs +#include "llfloaterreg.h" +#include "llmenugl.h" +#include "llsearcheditor.h" +#include "lltabcontainer.h" +#include "lluictrlfactory.h" + +#include "llpanelpeople.h" + +// newview +#include "llagent.h" +#include "llavatarlist.h" +#include "llcallingcard.h" // for LLAvatarTracker +#include "llfloateravatarpicker.h" +#include "llfloaterminiinspector.h" +#include "llfriendactions.h" +#include "llgroupactions.h" +#include "llgrouplist.h" +#include "llrecentpeople.h" +#include "llviewercontrol.h" // for gSavedSettings +#include "llviewermenu.h" // for gMenuHolder +#include "llvoiceclient.h" +#include "llworld.h" + +using namespace LLOldEvents; + +#define FRIEND_LIST_UPDATE_TIMEOUT 0.5 +#define NEARBY_LIST_UPDATE_INTERVAL 1 +#define RECENT_LIST_UPDATE_DELAY 1 + +static LLRegisterPanelClassWrapper<LLPanelPeople> t_people("panel_people"); + +//============================================================================= + +class LLPanelPeople::Updater +{ +public: + typedef boost::function<bool(U32)> callback_t; + Updater(callback_t cb) + : mCallback(cb) + { + } + virtual ~Updater() + { + } + virtual void setActive(bool) {} +protected: + bool updateList(U32 mask = 0) + { + return mCallback(mask); + } + callback_t mCallback; +}; + +class LLAvatarListUpdater : public LLPanelPeople::Updater, public LLEventTimer +{ +public: + LLAvatarListUpdater(callback_t cb, F32 period) + : LLEventTimer(period), + LLPanelPeople::Updater(cb) + { + mEventTimer.stop(); + } +}; + +/** + * Updates the friends list. + */ +class LLFriendListUpdater : public LLAvatarListUpdater, public LLFriendObserver +{ + LOG_CLASS(LLFriendListUpdater); +public: + LLFriendListUpdater(callback_t cb) + : LLAvatarListUpdater(cb, FRIEND_LIST_UPDATE_TIMEOUT) + { + LLAvatarTracker::instance().addObserver(this); + // For notification when SIP online status changes. + LLVoiceClient::getInstance()->addObserver(this); + } + ~LLFriendListUpdater() + { + LLVoiceClient::getInstance()->removeObserver(this); + LLAvatarTracker::instance().removeObserver(this); + } + /*virtual*/ void setActive(bool val) + { + if (!val) + return; + + // Perform updates until all names are loaded. + if (!updateList(LLFriendObserver::ADD)) + changed(LLFriendObserver::ADD); + } + /*virtual*/ void changed(U32 mask) + { + // events can arrive quickly in bulk - we need not process EVERY one of them - + // so we wait a short while to let others pile-in, and process them in aggregate. + mEventTimer.start(); + + // save-up all the mask-bits which have come-in + mMask |= mask; + } + /*virtual*/ BOOL tick() + { + if (updateList(mMask)) + { + // Got all names, stop updates. + mEventTimer.stop(); + mMask = 0; + } + + return FALSE; + } +private: + U32 mMask; +}; + +/** + * Periodically updates the nearby people list while the Nearby tab is active. + */ +class LLNearbyListUpdater : public LLAvatarListUpdater +{ + LOG_CLASS(LLNearbyListUpdater); +public: + LLNearbyListUpdater(callback_t cb) + : LLAvatarListUpdater(cb, NEARBY_LIST_UPDATE_INTERVAL) + { + setActive(false); + } + /*virtual*/ BOOL tick() + { + updateList(); + return FALSE; + } + /*virtual*/ void setActive(bool val) + { + if (val) + { + // update immediately and start regular updates + tick(); + mEventTimer.start(); + } + else + { + // stop regular updates + mEventTimer.stop(); + } + } +private: +}; + +/** + * Updates the recent people list (those the agent has recently interacted with). + */ +class LLRecentListUpdater : public LLAvatarListUpdater +{ + LOG_CLASS(LLRecentListUpdater); +public: + LLRecentListUpdater(callback_t cb) + : LLAvatarListUpdater(cb, RECENT_LIST_UPDATE_DELAY) + { + LLRecentPeople::instance().setChangedCallback(boost::bind(&LLRecentListUpdater::onRecentPeopleChanged, this)); + } +private: + /*virtual*/ BOOL tick() + { + // Update the list until we get all the names. + if (updateList()) + { + // Got all names, stop updates. + mEventTimer.stop(); + } + + return FALSE; + } + void onRecentPeopleChanged() + { + if (!updateList()) + { + // Some names are incomplete, schedule another update. + mEventTimer.start(); + } + } +}; + +/** + * Updates the group list on events from LLAgent. + */ +class LLGroupListUpdater : public LLPanelPeople::Updater, public LLSimpleListener +{ + LOG_CLASS(LLGroupListUpdater); +public: + LLGroupListUpdater(callback_t cb) + : LLPanelPeople::Updater(cb) + { + gAgent.addListener(this, "new group"); + } + ~LLGroupListUpdater() + { + gAgent.removeListener(this); + } + /*virtual*/ bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) + { + // Why is "new group" sufficient? + if (event->desc() == "new group") + { + updateList(); + return true; + } + + return false; + } +}; + +//============================================================================= + +LLPanelPeople::LLPanelPeople() + : LLPanel(), + mFilterSubString(LLStringUtil::null), + mSearchEditor(NULL), + mTabContainer(NULL), + mFriendList(NULL), + mNearbyList(NULL), + mRecentList(NULL) +{ + mFriendListUpdater = new LLFriendListUpdater(boost::bind(&LLPanelPeople::onFriendListUpdate,this, _1)); + mNearbyListUpdater = new LLNearbyListUpdater(boost::bind(&LLPanelPeople::updateNearbyList, this)); + mRecentListUpdater = new LLRecentListUpdater(boost::bind(&LLPanelPeople::updateRecentList, this)); + mGroupListUpdater = new LLGroupListUpdater (boost::bind(&LLPanelPeople::updateGroupList, this)); +} + +LLPanelPeople::~LLPanelPeople() +{ + delete mNearbyListUpdater; + delete mFriendListUpdater; + delete mRecentListUpdater; + delete mGroupListUpdater; + + LLView::deleteViewByHandle(mGroupPlusMenuHandle); + LLView::deleteViewByHandle(mGroupMinusMenuHandle); +} + +BOOL LLPanelPeople::postBuild() +{ + mSearchEditor = getChild<LLSearchEditor>("filter_input"); + + mTabContainer = getChild<LLTabContainer>("tabs"); + mTabContainer->setCommitCallback(boost::bind(&LLPanelPeople::onTabSelected, this, _2)); + mTabContainer->selectTabByName("friends_panel"); // must go after setting commit callback + + mFriendList = getChild<LLPanel>("friends_panel")->getChild<LLAvatarList>("avatar_list"); + mNearbyList = getChild<LLPanel>("nearby_panel")->getChild<LLAvatarList>("avatar_list"); + mRecentList = getChild<LLPanel>("recent_panel")->getChild<LLAvatarList>("avatar_list"); + mGroupList = getChild<LLGroupList>("group_list"); + + LLPanel* groups_panel = getChild<LLPanel>("groups_panel"); + groups_panel->childSetAction("activate_btn", boost::bind(&LLPanelPeople::onActivateButtonClicked, this)); + groups_panel->childSetAction("plus_btn", boost::bind(&LLPanelPeople::onGroupPlusButtonClicked, this)); + groups_panel->childSetAction("minus_btn", boost::bind(&LLPanelPeople::onGroupMinusButtonClicked, this)); + + LLPanel* friends_panel = getChild<LLPanel>("friends_panel"); + friends_panel->childSetAction("add_btn", boost::bind(&LLPanelPeople::onAddFriendWizButtonClicked, this)); + friends_panel->childSetAction("del_btn", boost::bind(&LLPanelPeople::onDeleteFriendButtonClicked, this)); + + mFriendList->setDoubleClickCallback(boost::bind(&LLPanelPeople::onAvatarListDoubleClicked, this, mFriendList)); + mNearbyList->setDoubleClickCallback(boost::bind(&LLPanelPeople::onAvatarListDoubleClicked, this, mNearbyList)); + mRecentList->setDoubleClickCallback(boost::bind(&LLPanelPeople::onAvatarListDoubleClicked, this, mRecentList)); + mFriendList->setCommitCallback(boost::bind(&LLPanelPeople::onAvatarListCommitted, this, mFriendList)); + mNearbyList->setCommitCallback(boost::bind(&LLPanelPeople::onAvatarListCommitted, this, mNearbyList)); + mRecentList->setCommitCallback(boost::bind(&LLPanelPeople::onAvatarListCommitted, this, mRecentList)); + + mGroupList->setDoubleClickCallback(boost::bind(&LLPanelPeople::onGroupInfoButtonClicked, this)); + mGroupList->setCommitCallback(boost::bind(&LLPanelPeople::updateButtons, this)); + + buttonSetAction("view_profile_btn", boost::bind(&LLPanelPeople::onViewProfileButtonClicked, this)); + buttonSetAction("add_friend_btn", boost::bind(&LLPanelPeople::onAddFriendButtonClicked, this)); + buttonSetAction("group_info_btn", boost::bind(&LLPanelPeople::onGroupInfoButtonClicked, this)); + buttonSetAction("chat_btn", boost::bind(&LLPanelPeople::onChatButtonClicked, this)); + buttonSetAction("im_btn", boost::bind(&LLPanelPeople::onImButtonClicked, this)); + buttonSetAction("call_btn", boost::bind(&LLPanelPeople::onCallButtonClicked, this)); + buttonSetAction("teleport_btn", boost::bind(&LLPanelPeople::onTeleportButtonClicked, this)); + buttonSetAction("share_btn", boost::bind(&LLPanelPeople::onShareButtonClicked, this)); + buttonSetAction("more_btn", boost::bind(&LLPanelPeople::onMoreButtonClicked, this)); + + // Create menus. + LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar; + registrar.add("People.Group.Plus.Action", boost::bind(&LLPanelPeople::onGroupPlusMenuItemClicked, this, _2)); + LLMenuGL* plus_menu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_group_plus.xml", gMenuHolder); + mGroupPlusMenuHandle = plus_menu->getHandle(); + registrar.add("People.Group.Minus.Action", boost::bind(&LLPanelPeople::onGroupMinusMenuItemClicked, this, _2)); + LLMenuGL* minus_menu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_group_minus.xml", gMenuHolder); + mGroupMinusMenuHandle = minus_menu->getHandle(); + + // Perform initial update. + mFriendListUpdater->setActive(true); + updateGroupList(); + updateRecentList(); + + return TRUE; +} + +bool LLPanelPeople::refreshFriendNames(U32 changed_mask) +{ + // get all buddies we know about + LLAvatarTracker::buddy_map_t all_buddies; + LLAvatarTracker::instance().copyBuddyList(all_buddies); + + bool have_names = true; + + if (changed_mask & (LLFriendObserver::ADD | LLFriendObserver::REMOVE | LLFriendObserver::ONLINE)) + { + // *TODO: it's suboptimal to rebuild the whole list on online status change. + + // convert the buddy map to vector + std::vector<LLUUID> avatar_ids; + LLAvatarTracker::buddy_map_t::const_iterator buddy_it = all_buddies.begin(); + for (; buddy_it != all_buddies.end(); ++buddy_it) + avatar_ids.push_back(buddy_it->first); + + // do refresh the friend list + if (avatar_ids.size() > 0) + have_names = mFriendList->updateList(avatar_ids); + else + mFriendList->setCommentText(getString("no_friends")); + } + + return have_names; +} + +bool LLPanelPeople::updateFriendList(U32 changed_mask) +{ + // Refresh names. + if (changed_mask & (LLFriendObserver::ADD | LLFriendObserver::REMOVE | LLFriendObserver::ONLINE)) + { + return refreshFriendNames(changed_mask); + } + + return true; +} + +bool LLPanelPeople::updateNearbyList() +{ + std::vector<LLUUID> avatar_ids; + + LLWorld::getInstance()->getAvatars(&avatar_ids, NULL, gAgent.getPositionGlobal(), gSavedSettings.getF32("NearMeRange")); + + mNearbyList->updateList(avatar_ids); + + if (avatar_ids.size() == 0) + mNearbyList->setCommentText(getString("no_one_near")); + + return true; +} + +bool LLPanelPeople::updateRecentList() +{ + std::vector<LLUUID> avatar_ids; + + LLRecentPeople::instance().get(avatar_ids); + + if (avatar_ids.size() > 0) + return mRecentList->updateList(avatar_ids); + + mRecentList->setCommentText(getString("no_people")); + return true; +} + +bool LLPanelPeople::updateGroupList() +{ + return mGroupList->updateList(); +} + +void LLPanelPeople::buttonSetVisible(std::string btn_name, BOOL visible) +{ + // Currently all bottom buttons are wrapped with layout panels. + // Hiding a button has no effect: the panel still occupies its space. + // So we have to hide the whole panel (along with its button) + // to free some space up. + LLButton* btn = getChild<LLView>("button_bar")->getChild<LLButton>(btn_name); + LLPanel* btn_parent = dynamic_cast<LLPanel*>(btn->getParent()); + if (btn_parent) + btn_parent->setVisible(visible); +} + +void LLPanelPeople::buttonSetEnabled(const std::string& btn_name, bool enabled) +{ + // To make sure we're referencing the right widget (a child of the button bar). + LLButton* button = getChild<LLView>("button_bar")->getChild<LLButton>(btn_name); + button->setEnabled(enabled); +} + +void LLPanelPeople::buttonSetAction(const std::string& btn_name, const commit_signal_t::slot_type& cb) +{ + // To make sure we're referencing the right widget (a child of the button bar). + LLButton* button = getChild<LLView>("button_bar")->getChild<LLButton>(btn_name); + button->setClickedCallback(cb); +} + +void LLPanelPeople::updateButtons() +{ + std::string cur_tab = mTabContainer->getCurrentPanel()->getName(); + bool nearby_tab_active = (cur_tab == "nearby_panel"); + bool friends_tab_active = (cur_tab == "friends_panel"); + bool group_tab_active = (cur_tab == "groups_panel"); + bool recent_tab_active = (cur_tab == "recent_panel"); + LLUUID selected_id; + + buttonSetVisible("group_info_btn", group_tab_active); + buttonSetVisible("chat_btn", group_tab_active); + buttonSetVisible("add_friend_btn", nearby_tab_active || recent_tab_active); + buttonSetVisible("view_profile_btn", !group_tab_active); + buttonSetVisible("im_btn", !group_tab_active); + buttonSetVisible("teleport_btn", friends_tab_active || group_tab_active); + buttonSetVisible("share_btn", !recent_tab_active && false); // not implemented yet + + if (group_tab_active) + { + bool cur_group_active = true; + + selected_id = mGroupList->getCurrentID(); + if (selected_id.notNull()) + cur_group_active = (gAgent.getGroupID() == selected_id); + + bool item_selected = selected_id.notNull(); + LLPanel* groups_panel = mTabContainer->getCurrentPanel(); + groups_panel->childSetEnabled("activate_btn", !item_selected || !cur_group_active); // "none" or a non-active group selected + groups_panel->childSetEnabled("plus_btn", item_selected); + groups_panel->childSetEnabled("minus_btn", item_selected); + } + else + { + bool is_friend = true; + LLAvatarList* list; + + // Check whether selected avatar is our friend. + if ((list = getActiveAvatarList()) && (selected_id = list->getCurrentID()).notNull()) + { + is_friend = LLAvatarTracker::instance().getBuddyInfo(selected_id) != NULL; + } + + childSetEnabled("add_friend_btn", !is_friend); + } + + bool item_selected = selected_id.notNull(); + buttonSetEnabled("teleport_btn", friends_tab_active && item_selected); + buttonSetEnabled("view_profile_btn", item_selected); + buttonSetEnabled("im_btn", item_selected); + buttonSetEnabled("call_btn", item_selected && false); // not implemented yet + buttonSetEnabled("share_btn", item_selected && false); // not implemented yet + buttonSetEnabled("group_info_btn", item_selected); + buttonSetEnabled("chat_btn", item_selected); +} + +LLAvatarList* LLPanelPeople::getActiveAvatarList() const +{ + std::string cur_tab = mTabContainer->getCurrentPanel()->getName(); + + if (cur_tab == "friends_panel") + return mFriendList; + if (cur_tab == "nearby_panel") + return mNearbyList; + if (cur_tab == "recent_panel") + return mRecentList; + + return NULL; +} + +LLUUID LLPanelPeople::getCurrentItemID() const +{ + LLAvatarList* alist = getActiveAvatarList(); + if (alist) + return alist->getCurrentID(); + return mGroupList->getCurrentID(); +} + +void LLPanelPeople::showGroupMenu(LLMenuGL* menu) +{ + // Shows the menu at the top of the button bar. + + // Calculate its coordinates. + // (assumes that groups panel is the current tab) + LLPanel* bottom_panel = mTabContainer->getCurrentPanel()->getChild<LLPanel>("bottom_panel"); + LLPanel* parent_panel = mTabContainer->getCurrentPanel(); + menu->arrangeAndClear(); + S32 menu_height = menu->getRect().getHeight(); + S32 menu_x = -2; // *HACK: compensates HPAD in showPopup() + S32 menu_y = bottom_panel->getRect().mTop + menu_height; + + // Actually show the menu. + menu->buildDrawLabels(); + menu->updateParent(LLMenuGL::sMenuContainer); + LLMenuGL::showPopup(parent_panel, menu, menu_x, menu_y); +} + +void LLPanelPeople::onVisibilityChange(BOOL new_visibility) +{ + if (new_visibility == FALSE) + { + // Don't update anything while we're invisible. + mNearbyListUpdater->setActive(FALSE); + } + else + { + // Make the tab-container re-select current tab + // for onTabSelected() callback to get called. + // (currently this is needed to reactivate nearby list updates + // when we get visible) + mTabContainer->selectTab(mTabContainer->getCurrentPanelIndex()); + } +} + +void LLPanelPeople::onSearchEdit(const std::string& search_string) +{ + if (mFilterSubString == search_string) + return; + + mFilterSubString = search_string; + + LLStringUtil::toUpper(mFilterSubString); + LLStringUtil::trimHead(mFilterSubString); + mSearchEditor->setText(mFilterSubString); +} + +void LLPanelPeople::onTabSelected(const LLSD& param) +{ + std::string tab_name = getChild<LLPanel>(param.asString())->getName(); + mNearbyListUpdater->setActive(tab_name == "nearby_panel"); + updateButtons(); +} + +void LLPanelPeople::onAvatarListDoubleClicked(LLAvatarList* list) +{ + LLUUID clicked_id = list->getCurrentID(); + + if (clicked_id.isNull()) + return; + + // Open mini-inspector for the avatar being clicked + LLFloaterReg::showInstance("mini_inspector", clicked_id); + // inspector will delete itself on close +} + +void LLPanelPeople::onAvatarListCommitted(LLAvatarList* list) +{ + (void) list; + updateButtons(); +} + +void LLPanelPeople::onViewProfileButtonClicked() +{ + LLUUID id = getCurrentItemID(); + LLFriendActions::showProfile(id); +} + +void LLPanelPeople::onAddFriendButtonClicked() +{ + LLUUID id = getCurrentItemID(); + if (id.notNull()) + { + std::string name; + gCacheName->getFullName(id, name); + LLFriendActions::requestFriendshipDialog(id, name); + } +} + +void LLPanelPeople::onAddFriendWizButtonClicked() +{ + // Show add friend wizard. + LLFloaterAvatarPicker* picker = LLFloaterAvatarPicker::show(onAvatarPicked, NULL, FALSE, TRUE); + LLFloater* root_floater = gFloaterView->getParentFloater(this); + if (root_floater) + { + root_floater->addDependentFloater(picker); + } +} + +void LLPanelPeople::onDeleteFriendButtonClicked() +{ + LLFriendActions::removeFriendDialog(getCurrentItemID()); +} + +void LLPanelPeople::onGroupInfoButtonClicked() +{ + LLUUID group_id = getCurrentItemID(); + if (group_id.notNull()) + LLGroupActions::info(group_id); +} + +void LLPanelPeople::onChatButtonClicked() +{ + LLUUID group_id = getCurrentItemID(); + if (group_id.notNull()) + LLGroupActions::startChat(group_id); +} + +void LLPanelPeople::onImButtonClicked() +{ + LLUUID id = getCurrentItemID(); + if (id.notNull()) + { + LLFriendActions::startIM(id); + } +} + +void LLPanelPeople::onActivateButtonClicked() +{ + LLGroupActions::activate(mGroupList->getCurrentID()); +} + +// static +void LLPanelPeople::onAvatarPicked( + const std::vector<std::string>& names, + const std::vector<LLUUID>& ids, + void*) +{ + if (!names.empty() && !ids.empty()) + LLFriendActions::requestFriendshipDialog(ids[0], names[0]); +} + +bool LLPanelPeople::onFriendListUpdate(U32 changed_mask) +{ + bool have_names = updateFriendList(changed_mask); + + // Update online status in the Recent tab. + // *TODO: isn't it too much to update the whole list? + updateRecentList(); + + return have_names; +} + +void LLPanelPeople::onGroupPlusButtonClicked() +{ + LLMenuGL* plus_menu = (LLMenuGL*)mGroupPlusMenuHandle.get(); + if (!plus_menu) + return; + + showGroupMenu(plus_menu); +} + +void LLPanelPeople::onGroupMinusButtonClicked() +{ + LLMenuGL* minus_menu = (LLMenuGL*)mGroupMinusMenuHandle.get(); + if (!minus_menu) + return; + + showGroupMenu(minus_menu); +} + +void LLPanelPeople::onGroupPlusMenuItemClicked(const LLSD& userdata) +{ + std::string chosen_item = userdata.asString(); + + if (chosen_item == "join_group") + LLGroupActions::search(); + else if (chosen_item == "new_group") + LLGroupActions::create(); +} + +void LLPanelPeople::onGroupMinusMenuItemClicked(const LLSD& userdata) +{ + std::string chosen_item = userdata.asString(); + + LLUUID group_id = getCurrentItemID(); + if (chosen_item == "leave_group") + LLGroupActions::leave(group_id); + /* + else if (chosen_item == "delete_group") + ; // *TODO: how to delete a group? + */ +} + +void LLPanelPeople::onCallButtonClicked() +{ + // *TODO: not implemented yet +} + +void LLPanelPeople::onTeleportButtonClicked() +{ + LLFriendActions::offerTeleport(getCurrentItemID()); +} + +void LLPanelPeople::onShareButtonClicked() +{ + // *TODO: not implemented yet +} + +void LLPanelPeople::onMoreButtonClicked() +{ + // *TODO: not implemented yet +} + +void LLPanelPeople::onOpen(const LLSD& key) +{ + mTabContainer->selectTab(key.asInteger()); +} diff --git a/indra/newview/llpanelpeople.h b/indra/newview/llpanelpeople.h new file mode 100644 index 0000000000000000000000000000000000000000..4d535f287cd6a1e8bb62c8c76a7e7075236bd9d8 --- /dev/null +++ b/indra/newview/llpanelpeople.h @@ -0,0 +1,122 @@ +/** + * @file llpanelpeople.h + * @brief Side tray "People" panel + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + * + * Copyright (c) 2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#ifndef LL_LLPANELPEOPLE_H +#define LL_LLPANELPEOPLE_H + +#include <llpanel.h> + +#include "llcallingcard.h" // for avatar tracker + +class LLSearchEditor; +class LLTabContainer; +class LLAvatarList; +class LLGroupList; + +class LLPanelPeople : public LLPanel +{ + LOG_CLASS(LLPanelPeople); +public: + LLPanelPeople(); + virtual ~LLPanelPeople(); + + /*virtual*/ BOOL postBuild(); + + virtual void onOpen(const LLSD& key); + + // internals + class Updater; + +private: + bool updateFriendList(U32 changed_mask); + bool updateNearbyList(); + bool updateRecentList(); + bool updateGroupList(); + void updateButtons(); + bool refreshFriendNames(U32 changed_mask); + LLAvatarList* getActiveAvatarList() const; + LLUUID getCurrentItemID() const; + void buttonSetVisible(std::string btn_name, BOOL visible); + void buttonSetEnabled(const std::string& btn_name, bool enabled); + void buttonSetAction(const std::string& btn_name, const commit_signal_t::slot_type& cb); + void showGroupMenu(LLMenuGL* menu); + + /*virtual*/ void onVisibilityChange(BOOL new_visibility); + + // UI callbacks + void onSearchEdit(const std::string& search_string); + void onTabSelected(const LLSD& param); + void onViewProfileButtonClicked(); + void onAddFriendButtonClicked(); + void onAddFriendWizButtonClicked(); + void onDeleteFriendButtonClicked(); + void onGroupInfoButtonClicked(); + void onChatButtonClicked(); + void onImButtonClicked(); + void onCallButtonClicked(); + void onTeleportButtonClicked(); + void onShareButtonClicked(); + void onMoreButtonClicked(); + void onActivateButtonClicked(); + void onAvatarListDoubleClicked(LLAvatarList* list); + void onAvatarListCommitted(LLAvatarList* list); + void onGroupPlusButtonClicked(); + void onGroupMinusButtonClicked(); + void onGroupPlusMenuItemClicked(const LLSD& userdata); + void onGroupMinusMenuItemClicked(const LLSD& userdata); + + // misc callbacks + bool onFriendListUpdate(U32 changed_mask); + static void onAvatarPicked( + const std::vector<std::string>& names, + const std::vector<LLUUID>& ids, + void*); + + LLSearchEditor* mSearchEditor; + LLTabContainer* mTabContainer; + LLAvatarList* mFriendList; + LLAvatarList* mNearbyList; + LLAvatarList* mRecentList; + LLGroupList* mGroupList; + + LLHandle<LLView> mGroupPlusMenuHandle; + LLHandle<LLView> mGroupMinusMenuHandle; + + Updater* mFriendListUpdater; + Updater* mNearbyListUpdater; + Updater* mRecentListUpdater; + Updater* mGroupListUpdater; + + std::string mFilterSubString; +}; + +#endif //LL_LLPANELPEOPLE_H diff --git a/indra/newview/llpanelpermissions.cpp b/indra/newview/llpanelpermissions.cpp index b4e33fec7630c16bfc43dcd1f5f2491a15a409ef..9fdde9e757d8f1905631de99d71ada3202a3576e 100644 --- a/indra/newview/llpanelpermissions.cpp +++ b/indra/newview/llpanelpermissions.cpp @@ -55,11 +55,11 @@ #include "lllineeditor.h" #include "llradiogroup.h" #include "llcombobox.h" -#include "llfloateravatarinfo.h" #include "lluiconstants.h" #include "lldbstrings.h" #include "llfloatergroupinfo.h" #include "llfloatergroups.h" +#include "llfriendactions.h" #include "llnamebox.h" #include "llviewercontrol.h" #include "lluictrlfactory.h" @@ -811,7 +811,7 @@ void LLPanelPermissions::onClickCreator(void *data) { LLPanelPermissions *self = (LLPanelPermissions *)data; - LLFloaterAvatarInfo::showFromObject(self->mCreatorID); + LLFriendActions::showProfile(self->mCreatorID); } // static @@ -827,7 +827,7 @@ void LLPanelPermissions::onClickOwner(void *data) } else { - LLFloaterAvatarInfo::showFromObject(self->mOwnerID); + LLFriendActions::showProfile(self->mOwnerID); } } diff --git a/indra/newview/llpanelpick.cpp b/indra/newview/llpanelpick.cpp index 905c42861ace95fb10359e92451481dd46b4d9c9..65be4718efad8e2015a82e434abaa369ad5151ac 100644 --- a/indra/newview/llpanelpick.cpp +++ b/indra/newview/llpanelpick.cpp @@ -35,444 +35,358 @@ // profile. #include "llviewerprecompiledheaders.h" - -#include "llpanelpick.h" - -#include "lldir.h" -#include "llfloaterreg.h" -#include "llparcel.h" +#include "llpanel.h" #include "message.h" - #include "llagent.h" -#include "llbutton.h" -#include "llcheckboxctrl.h" -#include "llviewercontrol.h" -#include "lllineeditor.h" -#include "lltabcontainer.h" -#include "lltextbox.h" -#include "llviewertexteditor.h" +#include "llparcel.h" +#include "llviewerparcelmgr.h" #include "lltexturectrl.h" #include "lluiconstants.h" -#include "llviewergenericmessage.h" -#include "lluictrlfactory.h" -#include "llviewerparcelmgr.h" -#include "llworldmap.h" -#include "llfloaterworldmap.h" -#include "llviewerregion.h" -#include "llviewerwindow.h" +#include "llavatarpropertiesprocessor.h" +#include "llpanelpick.h" +#include "llpanelmeprofile.h" -//static -std::list<LLPanelPick*> LLPanelPick::sAllPanels; - -LLPanelPick::LLPanelPick() -: LLPanel(), - mPickID(), - mCreatorID(), - mParcelID(), - mDataRequested(FALSE), - mDataReceived(FALSE), - mPosGlobal(), - mSnapshotCtrl(NULL), - mNameEditor(NULL), - mDescEditor(NULL), - mLocationEditor(NULL), - mTeleportBtn(NULL), - mMapBtn(NULL), - //mLandmarkBtn(NULL), - mSortOrderText(NULL), - mSortOrderEditor(NULL), - mEnabledCheck(NULL), - mSetBtn(NULL) + +#define XML_PANEL_EDIT_PICK "panel_edit_pick.xml" +#define XML_PANEL_PICK_INFO "panel_pick_info.xml" + +#define XML_NAME "pick_name" +#define XML_DESC "pick_desc" +#define XML_SNAPSHOT "pick_snapshot" +#define XML_LOCATION "pick_location" + + +LLPanelPick::LLPanelPick(BOOL edit_mode/* = FALSE */) +: LLPanel(), LLAvatarPropertiesObserver(), + mEditMode(edit_mode), + mSnapshotCtrl(NULL), + mPickId(LLUUID::null), + mCreatorId(LLUUID::null), + mDataReceived(FALSE) { - sAllPanels.push_back(this); + if (edit_mode) + { + LLUICtrlFactory::getInstance()->buildPanel(this, XML_PANEL_EDIT_PICK); + LLAvatarPropertiesProcessor::instance().addObserver(gAgentID, this); + } + else + { + LLUICtrlFactory::getInstance()->buildPanel(this, XML_PANEL_PICK_INFO); + } - std::string pick_def_file; - LLUICtrlFactory::getInstance()->buildPanel(this, "panel_avatar_pick.xml"); - } - LLPanelPick::~LLPanelPick() { - sAllPanels.remove(this); + if (!mCreatorId.isNull()) LLAvatarPropertiesProcessor::instance().removeObserver(mCreatorId, this); } - void LLPanelPick::reset() { - mPickID.setNull(); - mCreatorID.setNull(); - mParcelID.setNull(); - - // Don't request data, this isn't valid - mDataRequested = TRUE; + mPickId.setNull(); + mCreatorId.setNull(); + mParcelId.setNull(); + mDataReceived = FALSE; mPosGlobal.clearVec(); - - clearCtrls(); } - BOOL LLPanelPick::postBuild() { - mSnapshotCtrl = getChild<LLTextureCtrl>("snapshot_ctrl"); - mSnapshotCtrl->setCommitCallback(onCommitAny, this); + mSnapshotCtrl = getChild<LLTextureCtrl>(XML_SNAPSHOT); - mNameEditor = getChild<LLLineEditor>("given_name_editor"); - mNameEditor->setCommitOnFocusLost(TRUE); - mNameEditor->setCommitCallback(onCommitAny, this); - - mDescEditor = getChild<LLTextEditor>("desc_editor"); - mDescEditor->setCommitOnFocusLost(TRUE); - mDescEditor->setCommitCallback(onCommitAny, this); - mDescEditor->setTabsToNextField(TRUE); - - mLocationEditor = getChild<LLLineEditor>("location_editor"); + if (mEditMode) + { + childSetAction("cancel_btn", onClickCancel, this); + childSetAction("set_to_curr_location_btn", onClickSet, this); + childSetAction("save_changes_btn", onClickSave, this); + } + else + { + childSetAction("edit_btn", onClickEdit, this); + childSetAction("teleport_btn", onClickTeleport, this); + childSetAction("show_on_map_btn", onClickMap, this); + childSetAction("back_btn", onClickBack, this); + //*TODO set on menu + } - mSetBtn = getChild<LLButton>( "set_location_btn"); - mSetBtn->setClickedCallback(onClickSet, this); + return TRUE; +} - mTeleportBtn = getChild<LLButton>( "pick_teleport_btn"); - mTeleportBtn->setClickedCallback(onClickTeleport, this); +void LLPanelPick::init(LLUUID creator_id, LLUUID pick_id) +{ + mCreatorId = creator_id; + mPickId = pick_id; - mMapBtn = getChild<LLButton>( "pick_map_btn"); - mMapBtn->setClickedCallback(onClickMap, this); + // on Pick Info panel (for non-Agent picks) edit_btn should be invisible + if (!mEditMode) + { + if (mCreatorId != gAgentID) + { + childSetEnabled("edit_btn", FALSE); + childSetVisible("edit_btn", FALSE); + } + else + { + childSetEnabled("edit_btn", TRUE); + childSetVisible("edit_btn", TRUE); + } + } - mSortOrderText = getChild<LLTextBox>("sort_order_text"); + LLAvatarPropertiesProcessor::instance().addObserver(mCreatorId, this); + LLAvatarPropertiesProcessor::instance().sendDataRequest(mCreatorId, APT_PICK_INFO, &mPickId); +} - mSortOrderEditor = getChild<LLLineEditor>("sort_order_editor"); - mSortOrderEditor->setPrevalidate(LLLineEditor::prevalidateInt); - mSortOrderEditor->setCommitOnFocusLost(TRUE); - mSortOrderEditor->setCommitCallback(onCommitAny, this); +void LLPanelPick::init(LLPickData *pick_data) +{ + mPickId = pick_data->pick_id; + mCreatorId = pick_data->creator_id; - mEnabledCheck = getChild<LLCheckBoxCtrl>( "enabled_check"); - mEnabledCheck->setCommitCallback(onCommitAny, this); + setName(pick_data->name); + setDesc(pick_data->desc); + setLocation(pick_data->location_text); + mSnapshotCtrl->setImageAssetID(pick_data->snapshot_id); - return TRUE; + mPosGlobal = pick_data->pos_global; + mSimName = pick_data->sim_name; + mParcelId = pick_data->parcel_id; } - // Fill in some reasonable defaults for a new pick. -void LLPanelPick::initNewPick() +void LLPanelPick::createNewPick() { - mPickID.generate(); - - mCreatorID = gAgent.getID(); - + mPickId.generate(); + mCreatorId = gAgent.getID(); mPosGlobal = gAgent.getPositionGlobal(); // Try to fill in the current parcel LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel(); if (parcel) { - mNameEditor->setText(parcel->getName()); - mDescEditor->setText(parcel->getDesc()); + setName(parcel->getName()); + setDesc(parcel->getDesc()); mSnapshotCtrl->setImageAssetID(parcel->getSnapshotID()); } - // Commit to the database, since we've got "new" values. - sendPickInfoUpdate(); + sendUpdate(); } - -void LLPanelPick::setPickID(const LLUUID& pick_id, const LLUUID& creator_id) +/*virtual*/ void LLPanelPick::processProperties(void* data, EAvatarProcessorType type) { - mPickID = pick_id; - mCreatorID = creator_id; -} + if (APT_PICK_INFO != type) return; + if (!data) return; + LLPickData* pick_data = static_cast<LLPickData *>(data); + if (!pick_data) return; + if (mPickId != pick_data->pick_id) return; -// Schedules the panel to request data -// from the server next time it is drawn. -void LLPanelPick::markForServerRequest() -{ - mDataRequested = FALSE; - mDataReceived = FALSE; + init(pick_data); + mDataReceived = TRUE; + LLAvatarPropertiesProcessor::instance().removeObserver(gAgentID, this); } -std::string LLPanelPick::getPickName() +void LLPanelPick::setEditMode( BOOL edit_mode ) { - return mNameEditor->getText(); -} + if (mEditMode == edit_mode) return; + mEditMode = edit_mode; + if (edit_mode) + { + // preserve data before killing controls + std::string name = getName(); + std::string desc = getDesc(); + std::string location = getLocation(); + LLUUID snapshot_id = mSnapshotCtrl->getImageAssetID(); + LLRect old_rect = getRect(); + + deleteAllChildren(); + + LLUICtrlFactory::getInstance()->buildPanel(this, XML_PANEL_EDIT_PICK); + + //*NOTE this code is from LLPanelMeProfile.togglePanel()... doubt this is a right way to do things + reshape(old_rect.getWidth(), old_rect.getHeight()); + old_rect.setLeftTopAndSize(0, old_rect.getHeight(), old_rect.getWidth(), old_rect.getHeight()); + setRect(old_rect); + + // time to restore data + setName(name); + setDesc(desc); + setLocation(location); + mSnapshotCtrl->setImageAssetID(snapshot_id); + } + else + { + // returning to VIEW mode - need to perform cleanup + // this is the case when that panel is reused between viewing/editing different picks + deleteAllChildren(); + reset(); + LLUICtrlFactory::getInstance()->buildPanel(this, XML_PANEL_PICK_INFO); + } +} -void LLPanelPick::sendPickInfoRequest() +//*HACK need to be redone - control panel toggling from parent (Me Panel/Avatar Profile Panel) +void LLPanelPick::setPanelMeProfile(LLPanelMeProfile* meProfilePanel) { - // Must ask for a pick based on the creator id because - // the pick database is distributed to the inventory cluster. JC - std::vector<std::string> strings; - strings.push_back( mCreatorID.asString() ); - strings.push_back( mPickID.asString() ); - send_generic_message("pickinforequest", strings); - - mDataRequested = TRUE; + mMeProfilePanel = meProfilePanel; } - -void LLPanelPick::sendPickInfoUpdate() +void LLPanelPick::setName(std::string name) { - // If we don't have a pick id yet, we'll need to generate one, - // otherwise we'll keep overwriting pick_id 00000 in the database. - if (mPickID.isNull()) + if (mEditMode) { - mPickID.generate(); + childSetValue(XML_NAME, name); + } + else + { + childSetWrappedText(XML_NAME, name); } - - LLMessageSystem* msg = gMessageSystem; - - msg->newMessage("PickInfoUpdate"); - msg->nextBlock("AgentData"); - msg->addUUID("AgentID", gAgent.getID()); - msg->addUUID("SessionID", gAgent.getSessionID()); - msg->nextBlock("Data"); - msg->addUUID("PickID", mPickID); - msg->addUUID("CreatorID", mCreatorID); - msg->addBOOL("TopPick", FALSE); //legacy var need to be deleted -angela - // fills in on simulator if null - msg->addUUID("ParcelID", mParcelID); - msg->addString("Name", mNameEditor->getText()); - msg->addString("Desc", mDescEditor->getText()); - msg->addUUID("SnapshotID", mSnapshotCtrl->getImageAssetID()); - msg->addVector3d("PosGlobal", mPosGlobal); - - // Only top picks have a sort order - S32 sort_order; - sort_order = 0; - - msg->addS32("SortOrder", sort_order); - msg->addBOOL("Enabled", mEnabledCheck->get()); - gAgent.sendReliableMessage(); } - -//static -void LLPanelPick::processPickInfoReply(LLMessageSystem *msg, void **) +void LLPanelPick::setDesc(std::string desc) { - // Extract the agent id and verify the message is for this - // client. - LLUUID agent_id; - msg->getUUID("AgentData", "AgentID", agent_id ); - if (agent_id != gAgent.getID()) - { - llwarns << "Agent ID mismatch in processPickInfoReply" - << llendl; - return; - } - - LLUUID pick_id; - msg->getUUID("Data", "PickID", pick_id); - - LLUUID creator_id; - msg->getUUID("Data", "CreatorID", creator_id); - - // ** top_pick should be deleted, not being used anymore - angela - BOOL top_pick; - msg->getBOOL("Data", "TopPick", top_pick); - - LLUUID parcel_id; - msg->getUUID("Data", "ParcelID", parcel_id); - - std::string name; - msg->getString("Data", "Name", name); - - std::string desc; - msg->getString("Data", "Desc", desc); - - LLUUID snapshot_id; - msg->getUUID("Data", "SnapshotID", snapshot_id); - - // "Location text" is actually the owner name, the original - // name that owner gave the parcel, and the location. - std::string location_text; - msg->getString("Data", "User", location_text); - location_text.append(", "); - - std::string original_name; - msg->getString("Data", "OriginalName", original_name); - if (!original_name.empty()) + if (mEditMode) { - location_text.append(original_name); - location_text.append(", "); + childSetValue(XML_DESC, desc); } - - std::string sim_name; - msg->getString("Data", "SimName", sim_name); - location_text.append(sim_name); - location_text.append(" "); - - LLVector3d pos_global; - msg->getVector3d("Data", "PosGlobal", pos_global); - - S32 region_x = llround((F32)pos_global.mdV[VX]) % REGION_WIDTH_UNITS; - S32 region_y = llround((F32)pos_global.mdV[VY]) % REGION_WIDTH_UNITS; - S32 region_z = llround((F32)pos_global.mdV[VZ]); - - location_text.append(llformat("(%d, %d, %d)", region_x, region_y, region_z)); - - S32 sort_order; - msg->getS32("Data", "SortOrder", sort_order); - - BOOL enabled; - msg->getBOOL("Data", "Enabled", enabled); - - // Look up the panel to fill in - for (panel_list_t::iterator iter = sAllPanels.begin(); iter != sAllPanels.end(); ++iter) + else { - LLPanelPick* self = *iter; - // For top picks, must match pick id - if (self->mPickID != pick_id) - { - continue; - } - - self->mDataReceived = TRUE; - - // Found the panel, now fill in the information - self->mPickID = pick_id; - self->mCreatorID = creator_id; - self->mParcelID = parcel_id; - self->mSimName.assign(sim_name); - self->mPosGlobal = pos_global; - - // Update UI controls - self->mNameEditor->setText(std::string(name)); - self->mDescEditor->setText(std::string(desc)); - self->mSnapshotCtrl->setImageAssetID(snapshot_id); - self->mLocationEditor->setText(location_text); - self->mEnabledCheck->set(enabled); - - self->mSortOrderEditor->setText(llformat("%d", sort_order)); - } + childSetWrappedText(XML_DESC, desc); + } } -void LLPanelPick::draw() +void LLPanelPick::setLocation(std::string location) { - refresh(); - - LLPanel::draw(); + childSetWrappedText(XML_LOCATION, location); } - -void LLPanelPick::refresh() +std::string LLPanelPick::getName() { - if (!mDataRequested) - { - sendPickInfoRequest(); - } + return childGetValue(XML_NAME).asString(); +} - // Check for god mode - //BOOL godlike = gAgent.isGodlike(); - BOOL is_self = (gAgent.getID() == mCreatorID); +std::string LLPanelPick::getDesc() +{ + return childGetValue(XML_DESC).asString(); +} - // Set button visibility/enablement appropriately +std::string LLPanelPick::getLocation() +{ + return childGetValue(XML_LOCATION).asString(); +} - mSnapshotCtrl->setEnabled(is_self); - mNameEditor->setEnabled(is_self); - mDescEditor->setEnabled(is_self); +void LLPanelPick::sendUpdate() +{ + LLPickData pick_data; - mSortOrderText->setVisible(FALSE); + // If we don't have a pick id yet, we'll need to generate one, + // otherwise we'll keep overwriting pick_id 00000 in the database. + if (mPickId.isNull()) mPickId.generate(); + + pick_data.agent_id = gAgent.getID(); + pick_data.session_id = gAgent.getSessionID(); + pick_data.pick_id = mPickId; + pick_data.creator_id = gAgentID; + + //legacy var need to be deleted + pick_data.top_pick = FALSE; + pick_data.parcel_id = mParcelId; + pick_data.name = getName(); + pick_data.desc = getDesc(); + pick_data.snapshot_id = mSnapshotCtrl->getImageAssetID(); + pick_data.pos_global = mPosGlobal; + pick_data.sort_order = 0; + pick_data.enabled = TRUE; + + LLAvatarPropertiesProcessor::instance().sendDataUpdate(&pick_data, APT_PICK_INFO); +} - mSortOrderEditor->setVisible(FALSE); - mSortOrderEditor->setEnabled(FALSE); - mEnabledCheck->setVisible(FALSE); - mEnabledCheck->setEnabled(FALSE); +//----------------------------------------- +// "PICK INFO" (VIEW MODE) BUTTON HANDLERS +//----------------------------------------- - mSetBtn->setVisible(is_self); - mSetBtn->setEnabled(is_self); +//static +void LLPanelPick::onClickEdit(void* data) +{ + LLPanelPick* self = (LLPanelPick*)data; + if (!self) return; + if (self->mEditMode) return; + if (!self->mDataReceived) return; + self->setEditMode(TRUE); } - -// static +//static void LLPanelPick::onClickTeleport(void* data) { - LLPanelPick* self = (LLPanelPick*)data; - - if (!self->mPosGlobal.isExactlyZero()) - { - gAgent.teleportViaLocation(self->mPosGlobal); - LLFloaterWorldMap::getInstance()->trackLocation(self->mPosGlobal); - } + //LLPanelPick* self = (LLPanelPick*)data; + //*TODO implement } - -// static +//static void LLPanelPick::onClickMap(void* data) +{ + //LLPanelPick* self = (LLPanelPick*)data; + //*TODO implement +} + +//*HACK need to move panel toggling to parent panels +//static +void LLPanelPick::onClickBack(void* data) { LLPanelPick* self = (LLPanelPick*)data; - LLFloaterWorldMap::getInstance()->trackLocation(self->mPosGlobal); - LLFloaterReg::showInstance("world_map", "center"); + if (!self) return; + self->mMeProfilePanel->togglePanel(self); } -// static -/* -void LLPanelPick::onClickLandmark(void* data) + + +//----------------------------------------- +// "EDIT PICK" (EDIT MODE) BUTTON HANDLERS +//----------------------------------------- + +//static +void LLPanelPick::onClickCancel(void* data) { - LLPanelPick* self = (LLPanelPick*)data; - create_landmark(self->mNameEditor->getText(), "", self->mPosGlobal); + LLPanelPick* self = (LLPanelPick*) data; + if (!self) return; + if (!self->mEditMode) return; + self->mMeProfilePanel->togglePanel(self); } -*/ // static void LLPanelPick::onClickSet(void* data) { - LLPanelPick* self = (LLPanelPick*)data; + //TODO check whether pick data was received before + + LLPanelPick* self = (LLPanelPick*) data; + if (!self) return; + if (!self->mEditMode) return; // Save location for later. self->mPosGlobal = gAgent.getPositionGlobal(); - std::string location_text; - location_text.assign("(will update after save)"); - location_text.append(", "); - - S32 region_x = llround((F32)self->mPosGlobal.mdV[VX]) % REGION_WIDTH_UNITS; - S32 region_y = llround((F32)self->mPosGlobal.mdV[VY]) % REGION_WIDTH_UNITS; + S32 region_x = llround((F32)self->mPosGlobal.mdV[VX]) % REGION_WIDTH_UNITS; + S32 region_y = llround((F32)self->mPosGlobal.mdV[VY]) % REGION_WIDTH_UNITS; S32 region_z = llround((F32)self->mPosGlobal.mdV[VZ]); + std::string location_text = "(will update after save), "; location_text.append(self->mSimName); - location_text.append(llformat(" (%d, %d, %d)", region_x, region_y, region_z)); + location_text.append(llformat(" (%d, %d, %d)", region_x, region_y, region_z)); - // if sim name in pick is different from current sim name - // make sure it's clear that all that's being changed - // is the location and nothing else - if ( gAgent.getRegion ()->getName () != self->mSimName ) - { - LLNotifications::instance().add("SetPickLocation"); - }; - - self->mLocationEditor->setText(location_text); - - onCommitAny(NULL, data); + self->setLocation(location_text); } - // static -void LLPanelPick::onCommitAny(LLUICtrl* ctrl, void* data) +void LLPanelPick::onClickSave(void* data) { LLPanelPick* self = (LLPanelPick*)data; + if (!self->mEditMode) return; + if (!self->mDataReceived) return; - // have we received up to date data for this pick? - if (self->mDataReceived) - { - self->sendPickInfoUpdate(); - - // Big hack - assume that top picks are always in a browser, - // and non-top-picks are always in a tab container. - /*if (self->mTopPick) - { - LLPanelDirPicks* panel = (LLPanelDirPicks*)self->getParent(); - panel->renamePick(self->mPickID, self->mNameEditor->getText()); - } - else - {*/ - LLTabContainer* tab = (LLTabContainer*)self->getParent(); - if (tab) - { - if(tab) tab->setCurrentTabName(self->mNameEditor->getText()); - } - //} - } + //*TODO check if data was received before + self->sendUpdate(); + self->mMeProfilePanel->togglePanel(self); } diff --git a/indra/newview/llpanelpick.h b/indra/newview/llpanelpick.h index 641e1bdf64af89030e7b3696b5793303ad4af3d9..8ada1a39fb55e08dbb3de4b93acc89f16111fa4a 100644 --- a/indra/newview/llpanelpick.h +++ b/indra/newview/llpanelpick.h @@ -38,89 +38,78 @@ #define LL_LLPANELPICK_H #include "llpanel.h" -#include "v3dmath.h" -#include "lluuid.h" - -class LLButton; -class LLCheckBoxCtrl; -class LLIconCtrl; -class LLLineEditor; -class LLTextBox; -class LLTextEditor; + class LLTextureCtrl; -class LLUICtrl; class LLMessageSystem; +class LLPanelMeProfile; +class LLAvatarPropertiesObserver; -class LLPanelPick : public LLPanel +class LLPanelPick : public LLPanel, public LLAvatarPropertiesObserver { + LOG_CLASS(LLPanelPick); public: - LLPanelPick(); - /*virtual*/ ~LLPanelPick(); + LLPanelPick(BOOL edit_mode = FALSE); + /*virtual*/ ~LLPanelPick(); void reset(); - /*virtual*/ BOOL postBuild(); + /*virtual*/ BOOL postBuild(); - /*virtual*/ void draw(); + // Create a new pick, including creating an id, giving a sane + // initial position, etc. + void createNewPick(); - /*virtual*/ void refresh(); + void init(LLUUID creator_id, LLUUID pick_id); - // Setup a new pick, including creating an id, giving a sane - // initial position, etc. - void initNewPick(); + /*virtual*/ void processProperties(void* data, EAvatarProcessorType type); - // We need to know the creator id so the database knows which partition - // to query for the pick data. - void setPickID(const LLUUID& pick_id, const LLUUID& creator_id); + void setEditMode(BOOL edit_mode); - // Schedules the panel to request data - // from the server next time it is drawn. - void markForServerRequest(); + //TODO redo panel toggling + void setPanelMeProfile(LLPanelMeProfile* meProfilePanel); - std::string getPickName(); - const LLUUID& getPickID() const { return mPickID; } - const LLUUID& getPickCreatorID() const { return mCreatorID; } +protected: - void sendPickInfoRequest(); - void sendPickInfoUpdate(); + void setName(std::string name); + void setDesc(std::string desc); + void setLocation(std::string location); - static void processPickInfoReply(LLMessageSystem* msg, void**); + std::string getName(); + std::string getDesc(); + std::string getLocation(); -protected: - static void onClickTeleport(void* data); - static void onClickMap(void* data); - //static void onClickLandmark(void* data); - static void onClickSet(void* data); + void sendUpdate(); + void init(LLPickData *pick_data); - static void onCommitAny(LLUICtrl* ctrl, void* data); + //----------------------------------------- + // "PICK INFO" (VIEW MODE) BUTTON HANDLERS + //----------------------------------------- + static void onClickEdit(void* data); + static void onClickTeleport(void* data); + static void onClickMap(void* data); + static void onClickBack(void* data); -protected: - LLUUID mPickID; - LLUUID mCreatorID; - LLUUID mParcelID; + //----------------------------------------- + // "EDIT PICK" (EDIT MODE) BUTTON HANDLERS + //----------------------------------------- + static void onClickSet(void* data); + static void onClickSave(void* data); + static void onClickCancel(void* data); - // Data will be requested on first draw +protected: + BOOL mEditMode; + LLTextureCtrl* mSnapshotCtrl; BOOL mDataRequested; BOOL mDataReceived; + LLUUID mPickId; + LLUUID mCreatorId; + LLVector3d mPosGlobal; + LLUUID mParcelId; std::string mSimName; - LLVector3d mPosGlobal; - - LLTextureCtrl* mSnapshotCtrl; - LLLineEditor* mNameEditor; - LLTextEditor* mDescEditor; - LLLineEditor* mLocationEditor; - - LLButton* mTeleportBtn; - LLButton* mMapBtn; - - LLTextBox* mSortOrderText; - LLLineEditor* mSortOrderEditor; - LLCheckBoxCtrl* mEnabledCheck; - LLButton* mSetBtn; - typedef std::list<LLPanelPick*> panel_list_t; - static panel_list_t sAllPanels; + //TODO redo panel toggling + LLPanelMeProfile* mMeProfilePanel; }; #endif // LL_LLPANELPICK_H diff --git a/indra/newview/llpanelpicks.cpp b/indra/newview/llpanelpicks.cpp new file mode 100644 index 0000000000000000000000000000000000000000..1a3aa8a33a921ca780722d80e5e95a855860e0c2 --- /dev/null +++ b/indra/newview/llpanelpicks.cpp @@ -0,0 +1,469 @@ +/** + * @file llpanelpicks.cpp + * @brief LLPanelPicks and related class implementations + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + * + * Copyright (c) 2004-2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#include "llviewerprecompiledheaders.h" + +#include "llagent.h" +#include "llavatarconstants.h" +#include "lltexturectrl.h" +#include "llviewergenericmessage.h" // send_generic_message +#include "llworldmap.h" +#include "llfloaterworldmap.h" +#include "llpanelmeprofile.h" +#include "llfloaterreg.h" +#include "llpanelpicks.h" +#include "llavatarpropertiesprocessor.h" +#include "llpanelpick.h" + +#define XML_BTN_NEW "new_btn" +#define XML_BTN_DELETE "trash_btn" +#define XML_BTN_INFO "info_btn" + + +//----------------------------------------------------------------------------- +// LLPanelPicks +//----------------------------------------------------------------------------- +LLPanelPicks::LLPanelPicks(const LLUUID& avatar_id /* = LLUUID::null */) +:LLPanelProfileTab(avatar_id), mMeProfilePanel(NULL) +{ + updateData(); +} + +LLPanelPicks::LLPanelPicks(const Params& params) +:LLPanelProfileTab(params), mMeProfilePanel(NULL) +{ + +} + +LLPanelPicks::~LLPanelPicks() +{ + if(!getAvatarId().isNull()) + { + LLAvatarPropertiesProcessor::getInstance()->removeObserver(getAvatarId(),this); + } +} + +void* LLPanelPicks::create(void* data /* = NULL */) +{ + LLSD* id = NULL; + if(data) + { + id = static_cast<LLSD*>(data); + return new LLPanelPicks(LLUUID(id->asUUID())); + } + return new LLPanelPicks(); +} + +void LLPanelPicks::updateData() +{ + LLAvatarPropertiesProcessor::getInstance()->sendDataRequest(getAvatarId(),APT_PICKS); +} + +void LLPanelPicks::processProperties(void* data, EAvatarProcessorType type) +{ + if(APT_PICKS == type) + { + LLAvatarPicks* avatar_picks = static_cast<LLAvatarPicks*>(data); + if(avatar_picks && getAvatarId() == avatar_picks->target_id) + { + std::string name, second_name; + gCacheName->getName(getAvatarId(),name,second_name); + childSetTextArg("pick_title", "[NAME]",name); + + LLView* picks_list = getChild<LLView>("back_panel",TRUE,FALSE); + if(!picks_list) return; + clear(); + + //*TODO move it somewhere else? + picks_list->setEnabled(FALSE); + childSetEnabled(XML_BTN_NEW, false); + childSetEnabled(XML_BTN_DELETE, false); + childSetEnabled(XML_BTN_INFO, false); + + S32 height = avatar_picks->picks_list.size() * 85; + LLRect rc = picks_list->getRect(); + rc.setLeftTopAndSize(rc.mLeft,rc.mTop,rc.getWidth(),height); + picks_list->setRect(rc); + picks_list->reshape(rc.getWidth(),rc.getHeight()); + + LLAvatarPicks::picks_list_t::const_iterator it = avatar_picks->picks_list.begin(); + for(; avatar_picks->picks_list.end() != it; ++it) + { + LLUUID pick_id = it->first; + std::string pick_name = it->second; + + LLPickItem* picture = LLPickItem::create(); + picks_list->addChild(picture); + + picture->setPictureName(pick_name); + picture->setPictureId(pick_id); + picture->setCreatorId(getAvatarId()); + + S32 last_bottom = picks_list->getRect().getHeight(); + if(mPickItemList.size() > 0) + { + last_bottom = mPickItemList[mPickItemList.size()-1]->getRect().mBottom; + last_bottom -= 5; + } + LLRect rc = picture->getRect(); + rc.mBottom = last_bottom - rc.getHeight(); + rc.mTop = last_bottom; + picture->reshape(rc.getWidth(),rc.getHeight()); + picture->setRect(rc); + + + LLAvatarPropertiesProcessor::instance().addObserver(mAvatarId, picture); + picture->update(); + mPickItemList.push_back(picture); + } + LLAvatarPropertiesProcessor::getInstance()->removeObserver(getAvatarId(),this); + + updateButtons(); + picks_list->setEnabled(TRUE); + + } + } +} + +void LLPanelPicks::clear() +{ + LLView* scroll = getChild<LLView>("back_panel",TRUE,FALSE); + if(scroll) + { + picture_list_t::const_iterator it = mPickItemList.begin(); + for(; mPickItemList.end() != it; ++it) + { + scroll->removeChild(*it); + delete *it; + } + } + mPickItemList.clear(); +} + +BOOL LLPanelPicks::postBuild(void) +{ + childSetAction(XML_BTN_INFO, onClickInfo, this); + childSetAction(XML_BTN_NEW, onClickNew, this); + childSetAction(XML_BTN_DELETE, onClickDelete, this); + + childSetAction("teleport_btn", onClickTeleport, this); + childSetAction("show_on_map_btn", onClickMap, this); + return TRUE; +} + +void LLPanelPicks::onActivate(const LLUUID& id) +{ + BOOL self = (gAgent.getID() == id); + + // only agent can edit her picks + childSetEnabled("edit_panel", self); + childSetVisible("edit_panel", self); + + // and see a special title - set as invisible by default in xml file + if (self) + { + childSetVisible("pick_title", !self); + childSetVisible("pick_title_agent", self); + } + + LLPanelProfileTab::onActivate(id); +} + + +//static +void LLPanelPicks::onClickInfo(void *data) +{ + LLPanelPicks* self = (LLPanelPicks*) data; + if (self) + { + LLPanelPick* panel_pick_info = new LLPanelPick(); + + //*TODO redo, use the selected pick from List View, but not the first (last) one + LLView* scroll = self->getChild<LLView>("back_panel", TRUE, FALSE); + LLPickItem* pick = static_cast<LLPickItem*>(scroll->getFirstChild()); + if (!pick) return; + + panel_pick_info->init(pick->getCreatorId(), pick->getPickId()); + + //*HACK redo toggling of panels (should work on both "profiles") + if (self->mMeProfilePanel) + { + panel_pick_info->setPanelMeProfile(self->mMeProfilePanel); + //self->mMeProfilePanel->addChildInBack(panel_pick_info); + self->mMeProfilePanel->togglePanel(panel_pick_info); + } + } +} + +//static +void LLPanelPicks::onClickNew(void *data) +{ + LLPanelPicks* self = (LLPanelPicks*) data; + if(self && self->mMeProfilePanel) + { + if (self->mPickItemList.size() >= MAX_AVATAR_PICKS) + { + //*TODO show warning message + return; + } + + //in edit mode + LLPanelPick* panel_edit_pick = new LLPanelPick(TRUE); + panel_edit_pick->createNewPick(); + + //*HACK redo toggling of panels + panel_edit_pick->setPanelMeProfile(self->mMeProfilePanel); + self->mMeProfilePanel->togglePanel(panel_edit_pick); + } +} + +//static +void LLPanelPicks::onClickDelete(void *data) +{ + LLPanelPicks* self = (LLPanelPicks*) data; + if(self && self->mMeProfilePanel) + { + //*TODO redo, use the selected pick from List View, but not the first (last) one + LLView* scroll = self->getChild<LLView>("back_panel", TRUE, FALSE); + LLPickItem* first_pick = static_cast<LLPickItem*>(scroll->getFirstChild()); + if (!first_pick) return; + + LLSD args; + args["PICK"] = first_pick->getPickName(); + LLNotifications::instance().add("DeleteAvatarPick", args, LLSD(), boost::bind(&LLPanelPicks::callbackDelete, self, _1, _2)); + } +} + +bool LLPanelPicks::callbackDelete(const LLSD& notification, const LLSD& response) +{ + S32 option = LLNotification::getSelectedOption(notification, response); + + //*TODO redo, use the selected pick from List View, but not the first (last) one + LLView* scroll = getChild<LLView>("back_panel",TRUE,FALSE); + LLPickItem* first_pick = static_cast<LLPickItem*>(scroll->getFirstChild()); + if (!first_pick) return false; + + if (0 == option) + { + LLAvatarPropertiesProcessor::instance().sendPickDelete(first_pick->getPickId()); + + scroll->removeChild(first_pick); + mPickItemList.pop_back(); + first_pick = NULL; + } + updateButtons(); + return false; +} + +void LLPanelPicks::setPanelMeProfile(LLPanelMeProfile* meProfilePanel) +{ + mMeProfilePanel = meProfilePanel; +} + +//static +void LLPanelPicks::teleport(const LLVector3d& position) +{ + if (!position.isExactlyZero()) + { + gAgent.teleportViaLocation(position); + LLFloaterWorldMap::getInstance()->trackLocation(position); + } +} + +//static +void LLPanelPicks::onClickTeleport(void* data) +{ + LLPanelPicks* self = (LLPanelPicks*)data; + + if (!self->mPickItemList.size()) return; + + //*TODO use the selected Pick instead of the last one in the list of Picks + LLPickItem* last_pick = self->mPickItemList.back(); + if (!last_pick) return; + + teleport(last_pick->getPosGlobal()); +} + +//static +void LLPanelPicks::onClickMap(void* data) +{ + LLPanelPicks* self = (LLPanelPicks*)data; + + if (!self->mPickItemList.size()) return; + + //*TODO use the selected Pick instead of the last one in the list of Picks + LLPickItem* last_pick = self->mPickItemList.back(); + if (!last_pick) return; + + showOnMap(last_pick->getPosGlobal()); + +} + +//static +void LLPanelPicks::showOnMap(const LLVector3d& position) +{ + LLFloaterWorldMap::getInstance()->trackLocation(position); + LLFloaterReg::showInstance("world_map", "center"); +} + +void LLPanelPicks::updateButtons() +{ + int picks_num = mPickItemList.size(); + childSetEnabled(XML_BTN_INFO, picks_num > 0); + + if (mAvatarId == gAgentID) + { + childSetEnabled(XML_BTN_NEW, picks_num < MAX_AVATAR_PICKS); + childSetEnabled(XML_BTN_DELETE, picks_num > 0); + } +} + + +//----------------------------------------------------------------------------- +// LLPanelPicks +//----------------------------------------------------------------------------- +LLPickItem::LLPickItem() +: LLPanel() +, mPicID(LLUUID::null) +, mCreatorID(LLUUID::null) +, mParcelID(LLUUID::null) +, mSnapshotID(LLUUID::null) +, mNeedData(true) +{ + LLUICtrlFactory::getInstance()->buildPanel(this,"panel_pic_list_item.xml"); +} + +LLPickItem::~LLPickItem() +{ + if (!mCreatorID.isNull()) + { + LLAvatarPropertiesProcessor::instance().removeObserver(mCreatorID, this); + } + +} + +LLPickItem* LLPickItem::create() +{ + return new LLPickItem(); +} + +void LLPickItem::init(LLPickData* pick_data) +{ + setPictureDescription(pick_data->desc); + setSnapshotId(pick_data->snapshot_id); + mPosGlobal = pick_data->pos_global; + mLocation = pick_data->location_text; + + LLTextureCtrl* picture = getChild<LLTextureCtrl>("picture", TRUE, FALSE); + if (picture) + { + picture->setImageAssetID(pick_data->snapshot_id); + } +} + +void LLPickItem::setPicture() +{ + +} + +void LLPickItem::setPictureName(const std::string& name) +{ + mPickName = name; + childSetValue("picture_name",name); + +} + +const std::string& LLPickItem::getPickName() +{ + return mPickName; +} + +const LLUUID& LLPickItem::getCreatorId() +{ + return mCreatorID; +} + +const LLUUID& LLPickItem::getSnapshotId() +{ + return mSnapshotID; +} + +void LLPickItem::setPictureDescription(const std::string& descr) +{ + childSetValue("picture_descr",descr); +} + +void LLPickItem::setPictureId(const LLUUID& id) +{ + mPicID = id; +} + +const LLUUID& LLPickItem::getPickId() +{ + return mPicID; +} + +const LLVector3d& LLPickItem::getPosGlobal() +{ + return mPosGlobal; +} + +const std::string& LLPickItem::getLocation() +{ + return mLocation; +} + +const std::string LLPickItem::getDescription() +{ + return childGetValue("picture_descr").asString(); +} + +void LLPickItem::update() +{ + mNeedData = true; + LLAvatarPropertiesProcessor::instance().sendDataRequest(mCreatorID, APT_PICK_INFO, &mPicID); + mNeedData = false; +} + +void LLPickItem::processProperties(void *data, EAvatarProcessorType type) +{ + if (APT_PICK_INFO != type) return; + if (!data) return; + + LLPickData* pick_data = static_cast<LLPickData *>(data); + if (!pick_data) return; + if (mPicID != pick_data->pick_id) return; + + init(pick_data); + LLAvatarPropertiesProcessor::instance().removeObserver(pick_data->agent_id, this); +} + diff --git a/indra/newview/llpanelpicks.h b/indra/newview/llpanelpicks.h new file mode 100644 index 0000000000000000000000000000000000000000..bb1ee067807e4c1f2bf63e24d7f38d208c9c1917 --- /dev/null +++ b/indra/newview/llpanelpicks.h @@ -0,0 +1,153 @@ +/** + * @file llpanelpicks.h + * @brief LLPanelPicks and related class definitions + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + * + * Copyright (c) 2004-2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#ifndef LL_LLPANELPICKS_H +#define LL_LLPANELPICKS_H + +#include "llpanel.h" +#include "v3dmath.h" +#include "lluuid.h" +#include "llavatarpropertiesprocessor.h" + +class LLMessageSystem; +class LLVector3d; +class LLPanelProfileTab; +class LLPanelMeProfile; +class LLPanelPick; +class LLAgent; +class LLPickItem; + + +class LLPanelPicks + : public LLPanelProfileTab +{ +public: + LLPanelPicks(const LLUUID& avatar_id = LLUUID::null); + LLPanelPicks(const Params& params ); + ~LLPanelPicks(); + + static void* create(void* data); + + static void teleport(const LLVector3d& position); + + static void showOnMap(const LLVector3d& position); + + /*virtual*/ BOOL postBuild(void); + + /*virtual*/ void onActivate(const LLUUID& id); + + void processProperties(void* data, EAvatarProcessorType type); + + void updateData(); + + void setPanelMeProfile(LLPanelMeProfile*); + + void clear(); + + //*TODO implement + //LLPickItem& getSelectedPick(); + +private: + static void onClickInfo(void* data); + static void onClickNew(void* data); + static void onClickDelete(void* data); + static void onClickTeleport(void* data); + static void onClickMap(void* data); + + bool callbackDelete(const LLSD& notification, const LLSD& response); + + void updateButtons(); + + typedef std::vector<LLPickItem*> picture_list_t; + picture_list_t mPickItemList; + LLPanelMeProfile* mMeProfilePanel; + +}; + +class LLPickItem : public LLPanel, public LLAvatarPropertiesObserver +{ +public: + + LLPickItem(); + + static LLPickItem* create(); + + void init(LLPickData* pick_data); + + void setPictureName(const std::string& name); + + void setPictureDescription(const std::string& descr); + + void setPicture(); + + void setPictureId(const LLUUID& id); + + void setCreatorId(const LLUUID& id) {mCreatorID = id;}; + + void setSnapshotId(const LLUUID& id) {mSnapshotID = id;}; + + void setNeedData(bool need){mNeedData = need;}; + + const LLUUID& getPickId(); + + const std::string& getPickName(); + + const LLUUID& getCreatorId(); + + const LLUUID& getSnapshotId(); + + const LLVector3d& getPosGlobal(); + + const std::string& getLocation(); + + const std::string getDescription(); + + /*virtual*/ void processProperties(void* data, EAvatarProcessorType type); + + void update(); + + ~LLPickItem(); + +protected: + + LLUUID mPicID; + LLUUID mCreatorID; + LLUUID mParcelID; + LLUUID mSnapshotID; + LLVector3d mPosGlobal; + bool mNeedData; + + std::string mPickName; + std::string mLocation; +}; + +#endif // LL_LLPANELPICKS_H diff --git a/indra/newview/llpanelplace.cpp b/indra/newview/llpanelplace.cpp index ee194ee7e815b1412fb510ebc945dddb0db563f1..ad385d8bdfe7d8d788a2a9ac99b0e33d6edd8af1 100644 --- a/indra/newview/llpanelplace.cpp +++ b/indra/newview/llpanelplace.cpp @@ -36,10 +36,8 @@ #include "llviewercontrol.h" #include "llqueryflags.h" -#include "message.h" #include "llui.h" #include "llsecondlifeurls.h" -#include "llremoteparcelrequest.h" #include "llfloater.h" #include "llfloaterreg.h" @@ -55,15 +53,13 @@ #include "lltrans.h" #include "llworldmap.h" #include "llviewerregion.h" +#include "llvoavatarself.h" #include "lluictrlfactory.h" //#include "llviewermenu.h" // create_landmark() #include "llweb.h" #include "llsdutil.h" #include "llsdutil_math.h" -//static -std::list<LLPanelPlace*> LLPanelPlace::sAllPanels; - LLPanelPlace::LLPanelPlace() : LLPanel(), mParcelID(), @@ -73,17 +69,16 @@ LLPanelPlace::LLPanelPlace() mPosRegion(), mAuctionID(0), mLandmarkAssetID() -{ - sAllPanels.push_back(this); -} - +{} LLPanelPlace::~LLPanelPlace() { - sAllPanels.remove(this); + if (mParcelID.notNull()) + { + LLRemoteParcelInfoProcessor::getInstance()->removeObserver(mParcelID, this); + } } - BOOL LLPanelPlace::postBuild() { // Since this is only used in the directory browser, always @@ -179,6 +174,7 @@ void LLPanelPlace::resetName(const std::string& name) } } +//virtual void LLPanelPlace::setParcelID(const LLUUID& parcel_id) { mParcelID = parcel_id; @@ -190,7 +186,6 @@ void LLPanelPlace::setSnapshot(const LLUUID& snapshot_id) mSnapshotCtrl->setImageAssetID(snapshot_id); } - void LLPanelPlace::setLocationString(const std::string& location) { mLocationDisplay->setText(location); @@ -203,27 +198,22 @@ void LLPanelPlace::setLandTypeString(const std::string& land_type) void LLPanelPlace::sendParcelInfoRequest() { - LLMessageSystem *msg = gMessageSystem; - if (mParcelID != mRequestedID) { - msg->newMessage("ParcelInfoRequest"); - msg->nextBlockFast(_PREHASH_AgentData); - msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID() ); - msg->addUUID("SessionID", gAgent.getSessionID()); - msg->nextBlock("Data"); - msg->addUUID("ParcelID", mParcelID); - gAgent.sendReliableMessage(); + LLRemoteParcelInfoProcessor::getInstance()->addObserver(mParcelID, this); + LLRemoteParcelInfoProcessor::getInstance()->sendParcelInfoRequest(mParcelID); + mRequestedID = mParcelID; } } +//virtual void LLPanelPlace::setErrorStatus(U32 status, const std::string& reason) { // We only really handle 404 and 499 errors std::string error_text; if(status == 404) - { + { error_text = getString("server_error_text"); } else if(status == 499) @@ -233,140 +223,91 @@ void LLPanelPlace::setErrorStatus(U32 status, const std::string& reason) mDescEditor->setText(error_text); } -//static -void LLPanelPlace::processParcelInfoReply(LLMessageSystem *msg, void **) +//virtual +void LLPanelPlace::processParcelInfo(const LLParcelData& parcel_data) { - LLUUID agent_id; - LLUUID parcel_id; - LLUUID owner_id; - std::string name; - std::string desc; - S32 actual_area; - S32 billable_area; - U8 flags; - F32 global_x; - F32 global_y; - F32 global_z; - std::string sim_name; - LLUUID snapshot_id; - F32 dwell; - S32 sale_price; - S32 auction_id; - - msg->getUUID("AgentData", "AgentID", agent_id ); - msg->getUUID("Data", "ParcelID", parcel_id); - - // look up all panels which have this avatar - for (panel_list_t::iterator iter = sAllPanels.begin(); iter != sAllPanels.end(); ++iter) - { - LLPanelPlace* self = *iter; - if (self->mParcelID != parcel_id) - { - continue; - } + mAuctionID = parcel_data.auction_id; - msg->getUUID ("Data", "OwnerID", owner_id); - msg->getString ("Data", "Name", name); - msg->getString ("Data", "Desc", desc); - msg->getS32 ("Data", "ActualArea", actual_area); - msg->getS32 ("Data", "BillableArea", billable_area); - msg->getU8 ("Data", "Flags", flags); - msg->getF32 ("Data", "GlobalX", global_x); - msg->getF32 ("Data", "GlobalY", global_y); - msg->getF32 ("Data", "GlobalZ", global_z); - msg->getString ("Data", "SimName", sim_name); - msg->getUUID ("Data", "SnapshotID", snapshot_id); - msg->getF32 ("Data", "Dwell", dwell); - msg->getS32 ("Data", "SalePrice", sale_price); - msg->getS32 ("Data", "AuctionID", auction_id); - - - self->mAuctionID = auction_id; - - if(snapshot_id.notNull()) - { - self->mSnapshotCtrl->setImageAssetID(snapshot_id); - } - - // Only assign the name and description if they are not empty and there is not a - // value present (passed in from a landmark, e.g.) - - if( !name.empty() - && self->mNameEditor && self->mNameEditor->getText().empty()) - { - self->mNameEditor->setText(name); - } + if(parcel_data.snapshot_id.notNull()) + { + mSnapshotCtrl->setImageAssetID(parcel_data.snapshot_id); + } - if( !desc.empty() - && self->mDescEditor && self->mDescEditor->getText().empty()) - { - self->mDescEditor->setText(desc); - } + if( !parcel_data.name.empty() + && mNameEditor && mNameEditor->getText().empty()) + { + mNameEditor->setText(parcel_data.name); + } - std::string info_text; - LLUIString traffic = self->getString("traffic_text"); - traffic.setArg("[TRAFFIC]", llformat("%d ", (int)dwell)); - info_text = traffic; - LLUIString area = self->getString("area_text"); - area.setArg("[AREA]", llformat("%d", actual_area)); - info_text += area; - if (flags & DFQ_FOR_SALE) - { - LLUIString forsale = self->getString("forsale_text"); - forsale.setArg("[PRICE]", llformat("%d", sale_price)); - info_text += forsale; - } - if (auction_id != 0) - { - LLUIString auction = self->getString("auction_text"); - auction.setArg("[ID]", llformat("%010d ", auction_id)); - info_text += auction; - } - if (self->mInfoEditor) - { - self->mInfoEditor->setText(info_text); - } + if( !parcel_data.desc.empty() + && mDescEditor && mDescEditor->getText().empty()) + { + mDescEditor->setText(parcel_data.desc); + } - // HACK: Flag 0x2 == adult region, - // Flag 0x1 == mature region, otherwise assume PG - std::string rating = LLViewerRegion::accessToString(SIM_ACCESS_PG); - if (flags & 0x2) - { - rating = LLViewerRegion::accessToString(SIM_ACCESS_ADULT); - } - else if (flags & 0x1) - { - rating = LLViewerRegion::accessToString(SIM_ACCESS_MATURE); - } + std::string info_text; + LLUIString traffic = getString("traffic_text"); + traffic.setArg("[TRAFFIC]", llformat("%d ", (int)parcel_data.dwell)); + info_text = traffic; + LLUIString area = getString("area_text"); + area.setArg("[AREA]", llformat("%d", parcel_data.actual_area)); + info_text += area; + if (parcel_data.flags & DFQ_FOR_SALE) + { + LLUIString forsale = getString("forsale_text"); + forsale.setArg("[PRICE]", llformat("%d", parcel_data.sale_price)); + info_text += forsale; + } + if (parcel_data.auction_id != 0) + { + LLUIString auction = getString("auction_text"); + auction.setArg("[ID]", llformat("%010d ", parcel_data.auction_id)); + info_text += auction; + } + if (mInfoEditor) + { + mInfoEditor->setText(info_text); + } - // Just use given region position for display - S32 region_x = llround(self->mPosRegion.mV[0]); - S32 region_y = llround(self->mPosRegion.mV[1]); - S32 region_z = llround(self->mPosRegion.mV[2]); + // HACK: Flag 0x2 == adult region, + // Flag 0x1 == mature region, otherwise assume PG + std::string rating = LLViewerRegion::accessToString(SIM_ACCESS_PG); + if (parcel_data.flags & 0x2) + { + rating = LLViewerRegion::accessToString(SIM_ACCESS_ADULT); + } + else if (parcel_data.flags & 0x1) + { + rating = LLViewerRegion::accessToString(SIM_ACCESS_MATURE); + } - // If the region position is zero, grab position from the global - if(self->mPosRegion.isExactlyZero()) - { - region_x = llround(global_x) % REGION_WIDTH_UNITS; - region_y = llround(global_y) % REGION_WIDTH_UNITS; - region_z = llround(global_z); - } + // Just use given region position for display + S32 region_x = llround(mPosRegion.mV[0]); + S32 region_y = llround(mPosRegion.mV[1]); + S32 region_z = llround(mPosRegion.mV[2]); - if(self->mPosGlobal.isExactlyZero()) - { - self->mPosGlobal.setVec(global_x, global_y, global_z); - } + // If the region position is zero, grab position from the global + if(mPosRegion.isExactlyZero()) + { + region_x = llround(parcel_data.global_x) % REGION_WIDTH_UNITS; + region_y = llround(parcel_data.global_y) % REGION_WIDTH_UNITS; + region_z = llround(parcel_data.global_z); + } - std::string location = llformat("%s %d, %d, %d (%s)", - sim_name.c_str(), region_x, region_y, region_z, rating.c_str()); - if (self->mLocationDisplay) - { - self->mLocationDisplay->setText(location); - } + if(mPosGlobal.isExactlyZero()) + { + mPosGlobal.setVec(parcel_data.global_x, parcel_data.global_y, parcel_data.global_z); + } - BOOL show_auction = (auction_id > 0); - self->mAuctionBtn->setVisible(show_auction); + std::string location = llformat("%s %d, %d, %d (%s)", + parcel_data.sim_name.c_str(), region_x, region_y, region_z, rating.c_str()); + if (mLocationDisplay) + { + mLocationDisplay->setText(location); } + + BOOL show_auction = (parcel_data.auction_id > 0); + mAuctionBtn->setVisible(show_auction); } @@ -392,7 +333,7 @@ void LLPanelPlace::displayParcelInfo(const LLVector3& pos_region, U64 region_handle = to_region_handle(pos_global); body["region_handle"] = ll_sd_from_U64(region_handle); } - LLHTTPClient::post(url, body, new LLRemoteParcelRequestResponder(this->getHandle())); + LLHTTPClient::post(url, body, new LLRemoteParcelRequestResponder(getObserverHandle())); } else { @@ -402,7 +343,6 @@ void LLPanelPlace::displayParcelInfo(const LLVector3& pos_region, mSnapshotCtrl->setFallbackImageName("default_land_picture.j2c"); } - // static void LLPanelPlace::onClickTeleport(void* data) { diff --git a/indra/newview/llpanelplace.h b/indra/newview/llpanelplace.h index b11290493a6e135dbe598d50add752d373d3da0e..f90a1b0567c99a0ee6ad20a4e34ded0d9341e550 100644 --- a/indra/newview/llpanelplace.h +++ b/indra/newview/llpanelplace.h @@ -38,6 +38,8 @@ #include "v3dmath.h" #include "lluuid.h" +#include "llremoteparcelrequest.h" + class LLButton; class LLTextBox; class LLLineEditor; @@ -46,7 +48,7 @@ class LLTextureCtrl; class LLMessageSystem; class LLInventoryItem; -class LLPanelPlace : public LLPanel +class LLPanelPlace : public LLPanel, LLRemoteParcelInfoObserver { public: LLPanelPlace(); @@ -58,7 +60,7 @@ class LLPanelPlace : public LLPanel // Ignore all old location information, useful if you are // recycling an existing dialog and need to clear it. - void setParcelID(const LLUUID& parcel_id); + /*virtual*/ void setParcelID(const LLUUID& parcel_id); // Sends a request for data about the given parcel, which will // only update the location if there is none already available. @@ -67,7 +69,7 @@ class LLPanelPlace : public LLPanel void setSnapshot(const LLUUID& snapshot_id); void setLocationString(const std::string& location); void setLandTypeString(const std::string& land_type); - void setErrorStatus(U32 status, const std::string& reason); + /*virtual*/ void setErrorStatus(U32 status, const std::string& reason); void resetName(const std::string& name); void sendParcelInfoRequest(); @@ -75,7 +77,7 @@ class LLPanelPlace : public LLPanel const LLUUID& landmark_asset_id, const LLUUID& region_id, const LLVector3d& pos_global); - static void processParcelInfoReply(LLMessageSystem* msg, void**); + /*virtual*/ void processParcelInfo(const LLParcelData& parcel_data); LLTextureCtrl *getSnapshotCtrl() const { return mSnapshotCtrl; } @@ -113,9 +115,6 @@ class LLPanelPlace : public LLPanel LLButton* mMapBtn; //LLButton* mLandmarkBtn; LLButton* mAuctionBtn; - - typedef std::list<LLPanelPlace*> panel_list_t; - static panel_list_t sAllPanels; }; #endif // LL_LLPANELPLACE_H diff --git a/indra/newview/llpanelplaceinfo.cpp b/indra/newview/llpanelplaceinfo.cpp new file mode 100644 index 0000000000000000000000000000000000000000..3ed93e5598858e749e6df0e420007fbaf493982e --- /dev/null +++ b/indra/newview/llpanelplaceinfo.cpp @@ -0,0 +1,382 @@ +/** + * @file llpanelplaceinfo.cpp + * @brief Displays place information in Side Tray. + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + * + * Copyright (c) 2004-2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#include "llviewerprecompiledheaders.h" + +#include "llpanelplaceinfo.h" + +// *TODO: reorder includes to match the coding standard +#include "llinventory.h" +#include "llviewercontrol.h" +#include "llqueryflags.h" +#include "llui.h" +#include "llsecondlifeurls.h" +#include "llfloater.h" +#include "llfloaterreg.h" + +#include "llagent.h" +#include "llviewerwindow.h" +#include "llviewerinventory.h" +#include "llbutton.h" +#include "llfloaterworldmap.h" +#include "lllineeditor.h" +#include "llinventorymodel.h" +#include "lluiconstants.h" +#include "roles_constants.h" +#include "lltextbox.h" +#include "llviewertexteditor.h" +#include "lltexturectrl.h" +#include "lltrans.h" +#include "llworldmap.h" +#include "llviewerregion.h" +#include "lluictrlfactory.h" +#include "llweb.h" +#include "llsdutil.h" + +static LLRegisterPanelClassWrapper<LLPanelPlaceInfo> t_places("panel_landmark_info"); + +LLPanelPlaceInfo::LLPanelPlaceInfo() +: LLPanel(), + mParcelID(), + mRequestedID(), + mPosRegion(), + mLandmarkID() +{} + +LLPanelPlaceInfo::~LLPanelPlaceInfo() +{ + if (mParcelID.notNull()) + { + LLRemoteParcelInfoProcessor::getInstance()->removeObserver(mParcelID, this); + } +} + +BOOL LLPanelPlaceInfo::postBuild() +{ + // Since this is only used in the directory browser, always + // disable the snapshot control. Otherwise clicking on it will + // open a texture picker. + mSnapshotCtrl = getChild<LLTextureCtrl>("logo"); + mSnapshotCtrl->setEnabled(FALSE); + + mRegionName = getChild<LLTextBox>("region_name"); + mParcelName = getChild<LLTextBox>("parcel_name"); + mDescEditor = getChild<LLTextEditor>("description"); + mRating = getChild<LLIconCtrl>("maturity"); + + mOwner = getChild<LLTextBox>("owner"); + mCreator = getChild<LLTextBox>("creator"); + mCreated = getChild<LLTextBox>("created"); + + mTitleEditor = getChild<LLLineEditor>("title_editor"); + mTitleEditor->setCommitCallback(boost::bind(&LLPanelPlaceInfo::onCommitTitleOrNote, this, TITLE)); + + mNotesEditor = getChild<LLTextEditor>("notes_editor"); + mNotesEditor->setCommitCallback(boost::bind(&LLPanelPlaceInfo::onCommitTitleOrNote, this, NOTE)); + mNotesEditor->setCommitOnFocusLost(true); + + mInfoPanel = getChild<LLPanel>("info_panel"); + + return TRUE; +} + +void LLPanelPlaceInfo::displayItemInfo(const LLInventoryItem* pItem) +{ + if (!pItem) + return; + + mLandmarkID = pItem->getUUID(); + + if(!gCacheName) + return; + + const LLPermissions& perm = pItem->getPermissions(); + + ////////////////// + // CREATOR NAME // + ////////////////// + if (pItem->getCreatorUUID().notNull()) + { + std::string name; + LLUUID creator_id = pItem->getCreatorUUID(); + if (!gCacheName->getFullName(creator_id, name)) + { + gCacheName->get(creator_id, FALSE, + boost::bind(&LLPanelPlaceInfo::nameUpdatedCallback, this, mCreator, _2, _3)); + } + mCreator->setText(name); + } + else + { + mCreator->setText(getString("unknown")); + } + + //////////////// + // OWNER NAME // + //////////////// + if(perm.isOwned()) + { + std::string name; + if (perm.isGroupOwned()) + { + LLUUID group_id = perm.getGroup(); + if (!gCacheName->getGroupName(group_id, name)) + { + gCacheName->get(group_id, TRUE, + boost::bind(&LLPanelPlaceInfo::nameUpdatedCallback, this, mOwner, _2, _3)); + } + } + else + { + LLUUID owner_id = perm.getOwner(); + if (!gCacheName->getFullName(owner_id, name)) + { + gCacheName->get(owner_id, FALSE, + boost::bind(&LLPanelPlaceInfo::nameUpdatedCallback, this, mOwner, _2, _3)); + } + } + mOwner->setText(name); + } + else + { + mOwner->setText(getString("public")); + } + + ////////////////// + // ACQUIRE DATE // + ////////////////// + time_t time_utc = pItem->getCreationDate(); + if (0 == time_utc) + { + mCreated->setText(getString("unknown")); + } + else + { + std::string timeStr = getString("acquired_date"); + LLSD substitution; + substitution["datetime"] = (S32) time_utc; + LLStringUtil::format (timeStr, substitution); + mCreated->setText(timeStr); + } + + mTitleEditor->setText(pItem->getName()); + mNotesEditor->setText(pItem->getDescription()); +} + +void LLPanelPlaceInfo::nameUpdatedCallback( + LLTextBox* text, + const std::string& first, + const std::string& last) +{ + text->setText(first + " " + last); +} + +void LLPanelPlaceInfo::resetLocation() +{ + mParcelID.setNull(); + mRequestedID.setNull(); + mLandmarkID.setNull(); + mPosRegion.clearVec(); + std::string not_available = getString("not_available"); + mRating->setValue(not_available); + mRegionName->setText(not_available); + mParcelName->setText(not_available); + mDescEditor->setText(not_available); + mCreator->setText(not_available); + mOwner->setText(not_available); + mCreated->setText(not_available); + mTitleEditor->setText(LLStringUtil::null); + mNotesEditor->setText(LLStringUtil::null); +} + +//virtual +void LLPanelPlaceInfo::setParcelID(const LLUUID& parcel_id) +{ + mParcelID = parcel_id; + sendParcelInfoRequest(); +} + +void LLPanelPlaceInfo::sendParcelInfoRequest() +{ + if (mParcelID != mRequestedID) + { + LLRemoteParcelInfoProcessor::getInstance()->addObserver(mParcelID, this); + LLRemoteParcelInfoProcessor::getInstance()->sendParcelInfoRequest(mParcelID); + + mRequestedID = mParcelID; + } +} + +// virtual +void LLPanelPlaceInfo::setErrorStatus(U32 status, const std::string& reason) +{ + // We only really handle 404 and 499 errors + std::string error_text; + if(status == 404) + { + error_text = getString("server_error_text"); + } + else if(status == 499) + { + error_text = getString("server_forbidden_text"); + } + mDescEditor->setText(error_text); +} + +// virtual +void LLPanelPlaceInfo::processParcelInfo(const LLParcelData& parcel_data) +{ + if(parcel_data.snapshot_id.notNull()) + { + mSnapshotCtrl->setImageAssetID(parcel_data.snapshot_id); + } + + if( !parcel_data.name.empty()) + { + mParcelName->setText(parcel_data.name); + } + + if( !parcel_data.desc.empty()) + { + mDescEditor->setText(parcel_data.desc); + } + + // HACK: Flag 0x2 == adult region, + // Flag 0x1 == mature region, otherwise assume PG + std::string rating = LLViewerRegion::accessToString(SIM_ACCESS_PG); + std::string rating_icon = "icon_event.tga"; + if (parcel_data.flags & 0x2) + { + rating = LLViewerRegion::accessToString(SIM_ACCESS_ADULT); + rating_icon = "icon_event_adult.tga"; + } + else if (parcel_data.flags & 0x1) + { + rating = LLViewerRegion::accessToString(SIM_ACCESS_MATURE); + rating_icon = "icon_event_mature.tga"; + } + mRating->setValue(rating_icon); + + // Just use given region position for display + S32 region_x = llround(mPosRegion.mV[0]); + S32 region_y = llround(mPosRegion.mV[1]); + S32 region_z = llround(mPosRegion.mV[2]); + + // If the region position is zero, grab position from the global + if(mPosRegion.isExactlyZero()) + { + region_x = llround(parcel_data.global_x) % REGION_WIDTH_UNITS; + region_y = llround(parcel_data.global_y) % REGION_WIDTH_UNITS; + region_z = llround(parcel_data.global_z); + } + + if (!parcel_data.sim_name.empty()) + { + std::string name = llformat("%s (%d, %d, %d)", + parcel_data.sim_name.c_str(), region_x, region_y, region_z); + mRegionName->setText(name); + } +} + +void LLPanelPlaceInfo::displayParcelInfo(const LLVector3& pos_region, + const LLUUID& region_id, + const LLVector3d& pos_global) +{ + LLSD body; + mPosRegion = pos_region; + std::string url = gAgent.getRegion()->getCapability("RemoteParcelRequest"); + if (!url.empty()) + { + body["location"] = ll_sd_from_vector3(pos_region); + if (!region_id.isNull()) + { + body["region_id"] = region_id; + } + if (!pos_global.isExactlyZero()) + { + U64 region_handle = to_region_handle(pos_global); + body["region_handle"] = ll_sd_from_U64(region_handle); + } + LLHTTPClient::post(url, body, new LLRemoteParcelRequestResponder(getObserverHandle())); + } + else + { + mDescEditor->setText(getString("server_update_text")); + } + mSnapshotCtrl->setImageAssetID(LLUUID::null); + mSnapshotCtrl->setFallbackImageName("default_land_picture.j2c"); +} + +void LLPanelPlaceInfo::onCommitTitleOrNote(LANDMARK_INFO_TYPE type) +{ + LLInventoryItem* item = gInventory.getItem(mLandmarkID); + if (!item) + return; + + std::string current_value; + std::string item_value; + if (type == TITLE) + { + if (mTitleEditor) + { + current_value = mTitleEditor->getText(); + item_value = item->getName(); + } + } + else + { + if (mNotesEditor) + { + current_value = mNotesEditor->getText(); + item_value = item->getDescription(); + } + } + + if (item_value != current_value && + gAgent.allowOperation(PERM_MODIFY, item->getPermissions(), GP_OBJECT_MANIPULATE)) + { + LLPointer<LLViewerInventoryItem> new_item = new LLViewerInventoryItem(item); + + if (type == TITLE) + { + new_item->rename(current_value); + } + else + { + new_item->setDescription(current_value); + } + + new_item->updateServer(FALSE); + gInventory.updateItem(new_item); + gInventory.notifyObservers(); + } +} diff --git a/indra/newview/llpanelplaceinfo.h b/indra/newview/llpanelplaceinfo.h new file mode 100644 index 0000000000000000000000000000000000000000..f88e29bc915941f79829b8237336d2da3cb8d648 --- /dev/null +++ b/indra/newview/llpanelplaceinfo.h @@ -0,0 +1,109 @@ +/** + * @file llpanelplace.h + * @brief Displays place information in Side Tray. + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + * + * Copyright (c) 2004-2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#ifndef LL_LLPANELPLACEINFO_H +#define LL_LLPANELPLACEINFO_H + +#include "llpanel.h" + +#include "v3dmath.h" +#include "lluuid.h" + +#include "lliconctrl.h" + +#include "llremoteparcelrequest.h" + +class LLButton; +class LLTextBox; +class LLLineEditor; +class LLTextEditor; +class LLTextureCtrl; +class LLInventoryItem; + +class LLPanelPlaceInfo : public LLPanel, LLRemoteParcelInfoObserver +{ +public: + LLPanelPlaceInfo(); + /*virtual*/ ~LLPanelPlaceInfo(); + + /*virtual*/ BOOL postBuild(); + + void resetLocation(); + // Ignore all old location information, useful if you are + // recycling an existing dialog and need to clear it. + + /*virtual*/ void setParcelID(const LLUUID& parcel_id); + // Sends a request for data about the given parcel, which will + // only update the location if there is none already available. + + void displayItemInfo(const LLInventoryItem* pItem); + /*virtual*/ void setErrorStatus(U32 status, const std::string& reason); + + void sendParcelInfoRequest(); + void displayParcelInfo(const LLVector3& pos_region, + const LLUUID& region_id, + const LLVector3d& pos_global); + void nameUpdatedCallback(LLTextBox* text, + const std::string& first, + const std::string& last); + + /*virtual*/ void processParcelInfo(const LLParcelData& parcel_data); + +private: + enum LANDMARK_INFO_TYPE + { + TITLE, + NOTE + }; + + void onCommitTitleOrNote(LANDMARK_INFO_TYPE type); + + LLUUID mParcelID; + LLUUID mRequestedID; + LLUUID mLandmarkID; + LLVector3 mPosRegion; + + LLTextureCtrl* mSnapshotCtrl; + LLTextBox* mRegionName; + LLTextBox* mParcelName; + LLTextEditor* mDescEditor; + LLIconCtrl* mRating; + LLTextBox* mOwner; + LLTextBox* mCreator; + LLTextBox* mCreated; + LLLineEditor* mTitleEditor; + LLTextEditor* mNotesEditor; + LLTextBox* mLocationEditor; + LLPanel* mInfoPanel; +}; + +#endif // LL_LLPANELPLACEINFO_H diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp new file mode 100644 index 0000000000000000000000000000000000000000..d18cac9f42011edd5d4489d990e3ea29ac3bc715 --- /dev/null +++ b/indra/newview/llpanelplaces.cpp @@ -0,0 +1,293 @@ +/** + * @file llpanelplaces.cpp + * @brief Side Bar "Places" panel + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + * + * Copyright (c) 2004-2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#include "llviewerprecompiledheaders.h" + +#include "llfloaterreg.h" +#include "llsearcheditor.h" +#include "lltabcontainer.h" +#include "lluictrlfactory.h" + +#include "lllandmark.h" + +#include "llagent.h" +#include "lllandmarklist.h" +#include "llfloaterworldmap.h" +#include "llpanelplaces.h" +#include "llpanellandmarks.h" +#include "llpanelteleporthistory.h" +#include "llviewerregion.h" + +static LLRegisterPanelClassWrapper<LLPanelPlaces> t_places("panel_places"); + +LLPanelPlaces::LLPanelPlaces() + : LLPanel(), + mFilterSubString(LLStringUtil::null), + mActivePanel(NULL), + mSearchEditor(NULL), + mPlaceInfo(NULL) +{ + gInventory.addObserver(this); + + //LLUICtrlFactory::getInstance()->buildPanel(this, "panel_places.xml"); // Called from LLRegisterPanelClass::defaultPanelClassBuilder() +} + +LLPanelPlaces::~LLPanelPlaces() +{ + if (gInventory.containsObserver(this)) + gInventory.removeObserver(this); +} + +BOOL LLPanelPlaces::postBuild() +{ + mTabContainer = getChild<LLTabContainer>("Places Tabs"); + if (mTabContainer) + { + mTabContainer->setCommitCallback(boost::bind(&LLPanelPlaces::onTabSelected, this)); + } + + mSearchEditor = getChild<LLSearchEditor>("Filter"); + if (mSearchEditor) + { + mSearchEditor->setSearchCallback(boost::bind(&LLPanelPlaces::onSearchEdit, this, _1)); + } + + mPlaceInfo = dynamic_cast<LLPanelPlaceInfo*>(getChild<LLPanel>("panel_landmark_info")); + if (mPlaceInfo) + { + LLButton* back_btn = mPlaceInfo->getChild<LLButton>("back_btn"); + if (back_btn) + { + back_btn->setClickedCallback(boost::bind(&LLPanelPlaces::onBackButtonClicked, this)); + } + } + + //childSetAction("share_btn", boost::bind(&LLPanelPlaces::onShareButtonClicked, this), this); + childSetAction("teleport_btn", boost::bind(&LLPanelPlaces::onTeleportButtonClicked, this), this); + childSetAction("map_btn", boost::bind(&LLPanelPlaces::onShowOnMapButtonClicked, this), this); + + return TRUE; +} + +void LLPanelPlaces::draw() +{ + LLPanel::draw(); +} + +void LLPanelPlaces::onOpen(const LLSD& key) +{ + if(key.size() == 0) + return; + + togglePlaceInfoPanel(TRUE); + + mPlaceInfoType = key["type"].asInteger(); + + if (mPlaceInfoType == AGENT) + { + // We don't need to teleport to the current location so disable the button + getChild<LLButton>("teleport_btn")->setEnabled(FALSE); + + mPlaceInfo->displayParcelInfo(gAgent.getPositionAgent(), + gAgent.getRegion()->getRegionID(), + gAgent.getPositionGlobal()); + } + else if (mPlaceInfoType == LANDMARK) + { + LLInventoryItem* item = gInventory.getItem(key["id"].asUUID()); + if (!item) + return; + + mPlaceInfo->displayItemInfo(item); + + LLLandmark* landmark = gLandmarkList.getAsset(item->getAssetUUID()); + if (!landmark) + return; + + LLUUID region_id; + landmark->getRegionID(region_id); + LLVector3d pos_global; + landmark->getGlobalPos(pos_global); + mPlaceInfo->displayParcelInfo(landmark->getRegionPos(), + region_id, + pos_global); + + } + else if (mPlaceInfoType == TELEPORT_HISTORY) + { + S32 index = key["id"].asInteger(); + + const LLTeleportHistory::slurl_list_t& hist_items = + LLTeleportHistory::getInstance()->getItems(); + + LLVector3d pos_global = hist_items[index].mGlobalPos; + + F32 region_x = (F32)fmod( pos_global.mdV[VX], (F64)REGION_WIDTH_METERS ); + F32 region_y = (F32)fmod( pos_global.mdV[VY], (F64)REGION_WIDTH_METERS ); + + LLVector3 pos_local(region_x, region_y, (F32)pos_global.mdV[VZ]); + + mPlaceInfo->displayParcelInfo(pos_local, + hist_items[index].mRegionID, + pos_global); + } +} + +void LLPanelPlaces::onSearchEdit(const std::string& search_string) +{ + if (mFilterSubString != search_string) + { + mFilterSubString = search_string; + + LLStringUtil::toUpper(mFilterSubString); + LLStringUtil::trimHead(mFilterSubString); + + mSearchEditor->setText(mFilterSubString); + + mActivePanel->onSearchEdit(mFilterSubString); + } +} + +void LLPanelPlaces::onTabSelected() +{ + if (!mActivePanel) + return; + + mActivePanel = dynamic_cast<LLPanelPlacesTab*>(mTabContainer->getCurrentPanel()); + + if (mActivePanel) + { + mActivePanel->onSearchEdit(mFilterSubString); + mActivePanel->onTabSelected(); + } +} + +void LLPanelPlaces::onShareButtonClicked() +{ + // TODO: Launch the "Things" Share wizard +} + +/* +void LLPanelPlaces::onAddLandmarkButtonClicked() +{ + LLFloaterReg::showInstance("add_landmark"); +} + +void LLPanelPlaces::onCopySLURLButtonClicked() +{ + mActivePanel->onCopySLURL(); +} +*/ + +void LLPanelPlaces::onTeleportButtonClicked() +{ + mActivePanel->onTeleport(); +} + +void LLPanelPlaces::onShowOnMapButtonClicked() +{ + if (!mPlaceInfoType) + { + LLVector3d global_pos = gAgent.getPositionGlobal(); + if (!global_pos.isExactlyZero()) + { + LLFloaterWorldMap::getInstance()->trackLocation(global_pos); + LLFloaterReg::showInstance("world_map", "center"); + } + } + else + { + mActivePanel->onShowOnMap(); + } +} + +void LLPanelPlaces::onBackButtonClicked() +{ + togglePlaceInfoPanel(FALSE); +} + +void LLPanelPlaces::togglePlaceInfoPanel(BOOL visible) +{ + if (!mPlaceInfo) + return; + + mPlaceInfo->setVisible(visible); + mSearchEditor->setVisible(!visible); + mTabContainer->setVisible(!visible); + + if (visible) + { + mPlaceInfo->resetLocation(); + + LLRect rect = getRect(); + LLRect new_rect = LLRect(rect.mLeft, rect.mTop, rect.mRight, mTabContainer->getRect().mBottom); + mPlaceInfo->reshape(new_rect.getWidth(),new_rect.getHeight()); + } +} + +//virtual +void LLPanelPlaces::changed(U32 mask) +{ + if (!(gInventory.isInventoryUsable() && LLTeleportHistory::getInstance())) + return; + + LLLandmarksPanel* landmarks_panel = new LLLandmarksPanel(); + if (landmarks_panel) + { + landmarks_panel->setPanelPlacesButtons(this); + + mTabContainer->addTabPanel( + LLTabContainer::TabPanelParams(). + panel(landmarks_panel). + label("Landmarks"). + insert_at(LLTabContainer::END)); + } + + LLTeleportHistoryPanel* teleport_history_panel = new LLTeleportHistoryPanel(); + if (teleport_history_panel) + { + teleport_history_panel->setPanelPlacesButtons(this); + + mTabContainer->addTabPanel( + LLTabContainer::TabPanelParams(). + panel(teleport_history_panel). + label("Teleport History"). + insert_at(LLTabContainer::END)); + } + + mTabContainer->selectFirstTab(); + + mActivePanel = dynamic_cast<LLPanelPlacesTab*>(mTabContainer->getCurrentPanel()); + + // we don't need to monitor inventory changes anymore, + // so remove the observer + gInventory.removeObserver(this); +} diff --git a/indra/newview/llpanelplaces.h b/indra/newview/llpanelplaces.h new file mode 100644 index 0000000000000000000000000000000000000000..533fb8dd8289d14ead36fff8e122d8e8e6c7a07e --- /dev/null +++ b/indra/newview/llpanelplaces.h @@ -0,0 +1,85 @@ +/** + * @file llpanelplaces.h + * @brief Side Bar "Places" panel + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + * + * Copyright (c) 2004-2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#ifndef LL_LLPANELPLACES_H +#define LL_LLPANELPLACES_H + +#include "llpanel.h" + +#include "llinventory.h" + +#include "llinventorymodel.h" +#include "llpanelplaceinfo.h" + +class LLPanelPlacesTab; +class LLSearchEditor; +class LLTabContainer; + +class LLPanelPlaces : public LLPanel, LLInventoryObserver +{ +public: + enum PLACE_INFO_TYPE + { + AGENT, + LANDMARK, + TELEPORT_HISTORY + }; + + LLPanelPlaces(); + virtual ~LLPanelPlaces(); + + /*virtual*/ BOOL postBuild(); + /*virtual*/ void draw(); + /*virtual*/ void changed(U32 mask); + /*virtual*/ void onOpen(const LLSD& key); + + void onSearchEdit(const std::string& search_string); + void onTabSelected(); + //void onAddLandmarkButtonClicked(); + //void onCopySLURLButtonClicked(); + void onShareButtonClicked(); + void onTeleportButtonClicked(); + void onShowOnMapButtonClicked(); + void onBackButtonClicked(); + void togglePlaceInfoPanel(BOOL visible); + +private: + LLSearchEditor* mSearchEditor; + LLPanelPlacesTab* mActivePanel; + LLTabContainer* mTabContainer; + LLPanelPlaceInfo* mPlaceInfo; + std::string mFilterSubString; + + // Place information type currently shown in Information panel + S32 mPlaceInfoType; +}; + +#endif //LL_LLPANELPLACES_H diff --git a/indra/newview/llpanelplacestab.cpp b/indra/newview/llpanelplacestab.cpp new file mode 100644 index 0000000000000000000000000000000000000000..2b38aa0890751eb43974bf1f01a08d818d5772bd --- /dev/null +++ b/indra/newview/llpanelplacestab.cpp @@ -0,0 +1,98 @@ +/** + * @file llpanelplacestab.cpp + * @brief Tabs interface for Side Bar "Places" panel + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + * + * Copyright (c) 2004-2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#include "llviewerprecompiledheaders.h" + +#include "llwindow.h" + +#include "llnotifications.h" + +#include "llslurl.h" +#include "llpanelplacestab.h" +#include "llworldmap.h" + +void LLPanelPlacesTab::setPanelPlacesButtons(LLPanelPlaces* panel) +{ + //mShareBtn = panel->getChild<LLButton>("share_btn"); + mTeleportBtn = panel->getChild<LLButton>("teleport_btn"); + mShowOnMapBtn = panel->getChild<LLButton>("map_btn"); +} + +void LLPanelPlacesTab::onRegionResponse(const LLVector3d& landmark_global_pos, + U64 region_handle, + const std::string& url, + const LLUUID& snapshot_id, + bool teleport) +{ + std::string sim_name; + bool gotSimName = LLWorldMap::getInstance()->simNameFromPosGlobal( landmark_global_pos, sim_name ); + + std::string sl_url; + if ( gotSimName ) + { + F32 region_x = (F32)fmod( landmark_global_pos.mdV[VX], (F64)REGION_WIDTH_METERS ); + F32 region_y = (F32)fmod( landmark_global_pos.mdV[VY], (F64)REGION_WIDTH_METERS ); + + sl_url = LLSLURL::buildSLURL(sim_name, llround(region_x), llround(region_y), llround((F32)landmark_global_pos.mdV[VZ])); + } + else + { + sl_url = ""; + } + + LLView::getWindow()->copyTextToClipboard(utf8str_to_wstring(sl_url)); + + LLSD args; + args["SLURL"] = sl_url; + + LLNotifications::instance().add("CopySLURL", args); +} + +void LLPanelPlacesTab::onTabSelected() +{ + togglePanelPlacesButtons(TRUE); +} + +void LLPanelPlacesTab::togglePanelPlacesButtons(BOOL enabled) +{ + if (enabled) + { + //mShareBtn->setEnabled(TRUE); + mTeleportBtn->setEnabled(TRUE); + mShowOnMapBtn->setEnabled(TRUE); + } + else + { + //mShareBtn->setEnabled(FALSE); + mTeleportBtn->setEnabled(FALSE); + mShowOnMapBtn->setEnabled(FALSE); + } +} diff --git a/indra/newview/llpanelplacestab.h b/indra/newview/llpanelplacestab.h new file mode 100644 index 0000000000000000000000000000000000000000..5d6b7d1090c36f6f594a54eedd21ce8603ca06a3 --- /dev/null +++ b/indra/newview/llpanelplacestab.h @@ -0,0 +1,68 @@ +/** + * @file llpanelplacestab.h + * @brief Tabs interface for Side Bar "Places" panel + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + * + * Copyright (c) 2004-2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#ifndef LL_LLPANELPLACESTAB_H +#define LL_LLPANELPLACESTAB_H + +#include "llpanel.h" + +#include "llpanelplaces.h" + +class LLPanelPlacesTab : public LLPanel +{ +public: + LLPanelPlacesTab() : LLPanel() {} + virtual ~LLPanelPlacesTab() {} + + virtual void onSearchEdit(const std::string& string) = 0; + //virtual void onShare() = 0; + virtual void onShowOnMap() = 0; + virtual void onTeleport() = 0; + //virtual void onCopySLURL() = 0; + + void setPanelPlacesButtons(LLPanelPlaces* panel); + void onRegionResponse(const LLVector3d& landmark_global_pos, + U64 region_handle, + const std::string& url, + const LLUUID& snapshot_id, + bool teleport); + void onTabSelected(); + +protected: + void togglePanelPlacesButtons(BOOL enabled); + +private: + //LLButton* mShareBtn; + LLButton* mTeleportBtn; + LLButton* mShowOnMapBtn; +}; + +#endif //LL_LLPANELPLACESTAB_H diff --git a/indra/newview/llpanelprofileview.cpp b/indra/newview/llpanelprofileview.cpp new file mode 100644 index 0000000000000000000000000000000000000000..0d25272f88adde923682ae979e68674ea8fc49d0 --- /dev/null +++ b/indra/newview/llpanelprofileview.cpp @@ -0,0 +1,112 @@ +/** +* @file llpanelprofileview.cpp +* @brief Side tray "Profile View" panel +* +* $LicenseInfo:firstyear=2009&license=viewergpl$ +* +* Copyright (c) 2009, Linden Research, Inc. +* +* Second Life Viewer Source Code +* The source code in this file ("Source Code") is provided by Linden Lab +* to you under the terms of the GNU General Public License, version 2.0 +* ("GPL"), unless you have obtained a separate licensing agreement +* ("Other License"), formally executed by you and Linden Lab. Terms of +* the GPL can be found in doc/GPL-license.txt in this distribution, or +* online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 +* +* There are special exceptions to the terms and conditions of the GPL as +* it is applied to this Source Code. View the full text of the exception +* in the file doc/FLOSS-exception.txt in this software distribution, or +* online at +* http://secondlifegrid.net/programs/open_source/licensing/flossexception +* +* By copying, modifying or distributing this software, you acknowledge +* that you have read and understood your obligations described above, +* and agree to abide by those obligations. +* +* ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO +* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, +* COMPLETENESS OR PERFORMANCE. +* $/LicenseInfo$ +*/ + +#include "llviewerprecompiledheaders.h" +#include "llpanelprofileview.h" +#include <llfloaterreg.h> +#include <lltabcontainer.h> +#include <lluictrlfactory.h> +#include "llpanelavatar.h" +#include "llpanelpicks.h" + +static LLRegisterPanelClassWrapper<LLPanelProfileView> t_panel_target_profile("panel_profile_view"); +static LLRegisterPanelClassWrapper<LLPanelAvatarNotes> t_panel_notes("panel_notes"); + +static std::string PANEL_PROFILE = "panel_profile"; +static std::string PANEL_PICKS = "panel_picks"; +static std::string PANEL_NOTES = "panel_notes"; + +LLPanelProfileView::LLPanelProfileView() +: LLPanel() +{ +} + +LLPanelProfileView::~LLPanelProfileView(void) +{ +} + +/*virtual*/ +void LLPanelProfileView::onOpen(const LLSD& key) +{ + if (!getVisible()) + setVisible(TRUE); + + LLUUID id(key.asUUID()); + if(id.notNull() && mProfileId.notNull() && mProfileId != id) + { + mTabs[PANEL_PROFILE]->clear(); + mTabs[PANEL_PICKS]->clear(); + mTabs[PANEL_NOTES]->clear(); + } + + mProfileId = id; + mTabs[PANEL_PROFILE]->onOpen(mProfileId); + mTabs[PANEL_PICKS]->setAvatarId(mProfileId); + mTabs[PANEL_PICKS]->updateData(); + mTabs[PANEL_NOTES]->setAvatarId(mProfileId); + mTabs[PANEL_NOTES]->updateData(); + + std::string full_name; + gCacheName->getFullName(key,full_name); + childSetValue("user_name",full_name); +} + + +BOOL LLPanelProfileView::postBuild() +{ + mTabContainer = getChild<LLTabContainer>("profile_tabs"); + mTabContainer->setCommitCallback(boost::bind(&LLPanelProfileView::onTabSelected, this, _2)); + + mTabs[PANEL_PROFILE] = (getChild<LLPanelAvatarProfile>(PANEL_PROFILE)); + mTabs[PANEL_PICKS] = (getChild<LLPanelPicks>(PANEL_PICKS)); + mTabs[PANEL_NOTES] = (getChild<LLPanelAvatarNotes>(PANEL_NOTES)); + + childSetCommitCallback("back",boost::bind(&LLPanelProfileView::onBackBtnClick,this),NULL); + + return TRUE; +} + + +//private + +void LLPanelProfileView::initTabs(const LLSD& key) +{ +} + +void LLPanelProfileView::onTabSelected(const LLSD& param) +{ +} + +void LLPanelProfileView::onBackBtnClick() +{ + setVisible(FALSE); +} diff --git a/indra/newview/llpanelprofileview.h b/indra/newview/llpanelprofileview.h new file mode 100644 index 0000000000000000000000000000000000000000..2d89f15fe450a36c56cf4e7369794ec0cd34bfa6 --- /dev/null +++ b/indra/newview/llpanelprofileview.h @@ -0,0 +1,69 @@ +/** +* @file llpanelprofileview.h +* @brief Side tray "Profile View" panel +* +* $LicenseInfo:firstyear=2009&license=viewergpl$ +* +* Copyright (c) 2009, Linden Research, Inc. +* +* Second Life Viewer Source Code +* The source code in this file ("Source Code") is provided by Linden Lab +* to you under the terms of the GNU General Public License, version 2.0 +* ("GPL"), unless you have obtained a separate licensing agreement +* ("Other License"), formally executed by you and Linden Lab. Terms of +* the GPL can be found in doc/GPL-license.txt in this distribution, or +* online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 +* +* There are special exceptions to the terms and conditions of the GPL as +* it is applied to this Source Code. View the full text of the exception +* in the file doc/FLOSS-exception.txt in this software distribution, or +* online at +* http://secondlifegrid.net/programs/open_source/licensing/flossexception +* +* By copying, modifying or distributing this software, you acknowledge +* that you have read and understood your obligations described above, +* and agree to abide by those obligations. +* +* ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO +* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, +* COMPLETENESS OR PERFORMANCE. +* $/LicenseInfo$ +*/ + +#ifndef LL_LLPANELPROFILEVIEW_H +#define LL_LLPANELPROFILEVIEW_H + +#include <llpanel.h> + +class LLPanelProfileTab; +class LLTabContainer; + +class LLPanelProfileView : public LLPanel +{ + LOG_CLASS(LLPanelProfileView); + friend class LLUICtrlFactory; + +public: + LLPanelProfileView(); + + ~LLPanelProfileView(void); + + void onTabSelected(const LLSD& param); + + void onOpen(const LLSD& key); + + BOOL postBuild(); + + void initTabs(const LLSD& key); + + void onBackBtnClick(); + +private: + LLTabContainer* mTabContainer; + + typedef std::map<std::string, LLPanelProfileTab*> profile_tabs_t; + profile_tabs_t mTabs; + LLUUID mProfileId; +}; + +#endif //LL_LLPANELPROFILEVIEW_H diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp new file mode 100644 index 0000000000000000000000000000000000000000..eb35834dc0fd1053e435ad0ebd78aab2d0cc6a6b --- /dev/null +++ b/indra/newview/llpanelteleporthistory.cpp @@ -0,0 +1,211 @@ +/** + * @file llpanelteleporthistory.cpp + * @brief Teleport history represented by a scrolling list + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + * + * Copyright (c) 2001-2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#include "llviewerprecompiledheaders.h" + +#include "llfloaterreg.h" + +#include "llfloaterworldmap.h" +#include "llpanelteleporthistory.h" +#include "llsidetray.h" +#include "llworldmap.h" + +// Not yet implemented; need to remove buildPanel() from constructor when we switch +//static LLRegisterPanelClassWrapper<LLTeleportHistoryPanel> t_teleport_history("panel_teleport_history"); + +LLTeleportHistoryPanel::LLTeleportHistoryPanel() + : LLPanelPlacesTab(), + mFilterSubString(LLStringUtil::null), + mTeleportHistory(NULL), + mHistoryItems(NULL) +{ + LLUICtrlFactory::getInstance()->buildPanel(this, "panel_teleport_history.xml"); +} + +LLTeleportHistoryPanel::~LLTeleportHistoryPanel() +{ +} + +BOOL LLTeleportHistoryPanel::postBuild() +{ + mTeleportHistory = LLTeleportHistory::getInstance(); + if (mTeleportHistory) + { + mTeleportHistory->setHistoryChangedCallback(boost::bind(&LLTeleportHistoryPanel::showTeleportHistory, this)); + } + + mHistoryItems = getChild<LLScrollListCtrl>("history_items"); + if (mHistoryItems) + { + mHistoryItems->setDoubleClickCallback(onDoubleClickItem, this); + mHistoryItems->setCommitOnSelectionChange(FALSE); + mHistoryItems->setCommitCallback(boost::bind(&LLTeleportHistoryPanel::handleItemSelect, this, _2)); + } + + return TRUE; +} + +// virtual +void LLTeleportHistoryPanel::onSearchEdit(const std::string& string) +{ + if (mFilterSubString != string) + { + mFilterSubString = string; + showTeleportHistory(); + } +} + +// virtual +void LLTeleportHistoryPanel::onShowOnMap() +{ + LLScrollListItem* itemp = mHistoryItems->getFirstSelected(); + if(!itemp) + return; + + S32 index = itemp->getColumn(LIST_INDEX)->getValue().asInteger(); + + // teleport to existing item in history, so we don't add it again + mTeleportHistory->goToItem(index); +} + +// virtual +void LLTeleportHistoryPanel::onTeleport() +{ + LLScrollListItem* itemp = mHistoryItems->getFirstSelected(); + if(!itemp) + return; + + S32 index = itemp->getColumn(LIST_INDEX)->getValue().asInteger(); + + mTeleportHistory->goToItem(index); +} + +/* +// virtual +void LLTeleportHistoryPanel::onCopySLURL() +{ + LLScrollListItem* itemp = mHistoryItems->getFirstSelected(); + if(!itemp) + return; + + S32 index = itemp->getColumn(LIST_INDEX)->getValue().asInteger(); + + const LLTeleportHistory::slurl_list_t& hist_items = mTeleportHistory->getItems(); + + LLVector3d global_pos = hist_items[index].mGlobalPos; + + U64 new_region_handle = to_region_handle(global_pos); + + LLWorldMap::url_callback_t cb = boost::bind( + &LLPanelPlacesTab::onRegionResponse, this, + global_pos, _1, _2, _3, _4); + + LLWorldMap::getInstance()->sendHandleRegionRequest(new_region_handle, cb, std::string("unused"), false); +} +*/ + +void LLTeleportHistoryPanel::showTeleportHistory() +{ + const LLTeleportHistory::slurl_list_t& hist_items = mTeleportHistory->getItems(); + + mHistoryItems->deleteAllItems(); + + S32 cur_item = mTeleportHistory->getCurrentItemIndex(); + + for (LLTeleportHistory::slurl_list_t::const_iterator iter = hist_items.begin(); + iter != hist_items.end(); ++iter) + { + std::string landmark_title = (*iter).mTitle; + LLStringUtil::toUpper(landmark_title); + + std::string::size_type match_offset = mFilterSubString.size() ? landmark_title.find(mFilterSubString) : std::string::npos; + bool passed = mFilterSubString.size() == 0 || match_offset != std::string::npos; + + if (!passed) + continue; + + S32 index = iter - hist_items.begin(); + + LLSD row; + row["id"] = index; + + LLSD& icon_column = row["columns"][LIST_ICON]; + icon_column["column"] = "landmark_icon"; + icon_column["type"] = "icon"; + icon_column["value"] = "inv_item_landmark.tga"; + + LLSD& region_column = row["columns"][LIST_ITEM_TITLE]; + region_column["column"] = "region"; + region_column["type"] = "text"; + region_column["value"] = (*iter).mTitle; + + LLSD& index_column = row["columns"][LIST_INDEX]; + index_column["column"] = "index"; + index_column["type"] = "text"; + index_column["value"] = index; + + mHistoryItems->addElement(row); + + if (cur_item == index) + { + LLScrollListItem* itemp = mHistoryItems->getItem(index); + ((LLScrollListText*)itemp->getColumn(LIST_ITEM_TITLE))->setFontStyle(LLFontGL::BOLD); + } + } + + togglePanelPlacesButtons(mHistoryItems->getFirstSelected() != NULL); +} + +void LLTeleportHistoryPanel::handleItemSelect(const LLSD& data) +{ + LLScrollListItem* itemp = mHistoryItems->getFirstSelected(); + + if (!itemp) + return; + + togglePanelPlacesButtons(TRUE); +} + +//static +void LLTeleportHistoryPanel::onDoubleClickItem(void* user_data) +{ + LLTeleportHistoryPanel* self = (LLTeleportHistoryPanel*)user_data; + + LLScrollListItem* itemp = self->mHistoryItems->getFirstSelected(); + if(!itemp) + return; + + LLSD key; + key["type"] = LLPanelPlaces::TELEPORT_HISTORY; + key["id"] = itemp->getColumn(LIST_INDEX)->getValue().asInteger(); + + LLSideTray::getInstance()->showPanel("panel_places", key); +} diff --git a/indra/newview/llpanelteleporthistory.h b/indra/newview/llpanelteleporthistory.h new file mode 100644 index 0000000000000000000000000000000000000000..6f41c97eec99b6d98275a392e2b3b8b5db1a2d6f --- /dev/null +++ b/indra/newview/llpanelteleporthistory.h @@ -0,0 +1,72 @@ +/** + * @file llpanelteleporthistory.h + * @brief Teleport history represented by a scrolling list + * class definition + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + * + * Copyright (c) 2001-2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#ifndef LL_LLPANELTELEPORTHISTORY_H +#define LL_LLPANELTELEPORTHISTORY_H + +#include "lluictrlfactory.h" +#include "llscrolllistctrl.h" + +#include "llpanelplacestab.h" +#include "llteleporthistory.h" + +class LLTeleportHistoryPanel : public LLPanelPlacesTab +{ +public: + LLTeleportHistoryPanel(); + virtual ~LLTeleportHistoryPanel(); + + /*virtual*/ BOOL postBuild(); + /*virtual*/ void onSearchEdit(const std::string& string); + /*virtual*/ void onShowOnMap(); + /*virtual*/ void onTeleport(); + ///*virtual*/ void onCopySLURL(); + + void showTeleportHistory(); + void handleItemSelect(const LLSD& data); + + static void onDoubleClickItem(void* user_data); + +private: + enum TELEPORT_HISTORY_COLUMN_ORDER + { + LIST_ICON, + LIST_ITEM_TITLE, + LIST_INDEX + }; + + LLTeleportHistory* mTeleportHistory; + LLScrollListCtrl* mHistoryItems; + std::string mFilterSubString; +}; + +#endif //LL_LLPANELTELEPORTHISTORY_H diff --git a/indra/newview/llpreview.cpp b/indra/newview/llpreview.cpp index dfc8b783d52671e02a66221cb58a6dfaf1a7e417..64713108aff4c4e0671848f4d692e17a49bd00c4 100644 --- a/indra/newview/llpreview.cpp +++ b/indra/newview/llpreview.cpp @@ -49,7 +49,7 @@ #include "llviewerobjectlist.h" #include "lldbstrings.h" #include "llagent.h" -#include "llvoavatar.h" +#include "llvoavatarself.h" #include "llselectmgr.h" #include "llinventoryview.h" #include "llviewerinventory.h" @@ -171,7 +171,7 @@ void LLPreview::onCommit() // update the object itself. if( item->getType() == LLAssetType::AT_OBJECT ) { - LLVOAvatar* avatar = gAgent.getAvatarObject(); + LLVOAvatarSelf* avatar = gAgent.getAvatarObject(); if( avatar ) { LLViewerObject* obj = avatar->getWornAttachment( item->getUUID() ); diff --git a/indra/newview/llpreviewanim.cpp b/indra/newview/llpreviewanim.cpp index efe0d3b75260bd8b4ae56df4359e8421bb2a5a76..6857d14fff80cc25e300f9fef7bae3bf7019b191 100644 --- a/indra/newview/llpreviewanim.cpp +++ b/indra/newview/llpreviewanim.cpp @@ -37,7 +37,7 @@ #include "llresmgr.h" #include "llinventory.h" #include "llinventoryview.h" -#include "llvoavatar.h" +#include "llvoavatarself.h" #include "llagent.h" // gAgent #include "llkeyframemotion.h" #include "llfilepicker.h" diff --git a/indra/newview/llpreviewgesture.cpp b/indra/newview/llpreviewgesture.cpp index f973667fbd15d69f0975c2212a4dc37e66fd9fa8..dc6ee44936f4b804e4d36a3e8faa8514539d0009 100644 --- a/indra/newview/llpreviewgesture.cpp +++ b/indra/newview/llpreviewgesture.cpp @@ -47,6 +47,7 @@ // newview #include "llagent.h" // todo: remove +#include "llanimationstates.h" #include "llassetuploadresponders.h" #include "llbutton.h" #include "llcheckboxctrl.h" @@ -70,6 +71,7 @@ #include "llviewerregion.h" #include "llviewerstats.h" #include "llviewerwindow.h" // busycount +#include "llvoavatarself.h" #include "llappviewer.h" // gVFS #include "llanimstatelabels.h" #include "llresmgr.h" diff --git a/indra/newview/llpreviewscript.cpp b/indra/newview/llpreviewscript.cpp index 025aa25170caa4ec615a3f7c8f5b86688ae987fd..9de2f38afffd96bb7c24ff67cc46a80786f90c83 100644 --- a/indra/newview/llpreviewscript.cpp +++ b/indra/newview/llpreviewscript.cpp @@ -282,7 +282,7 @@ LLScriptEdCore::LLScriptEdCore( setBorderVisible(FALSE); - LLUICtrlFactory::getInstance()->buildPanel(this, "floater_script_ed_panel.xml"); + LLUICtrlFactory::getInstance()->buildPanel(this, "panel_script_ed.xml"); std::vector<std::string> funcs; std::vector<std::string> tooltips; diff --git a/indra/newview/llrecentpeople.cpp b/indra/newview/llrecentpeople.cpp new file mode 100644 index 0000000000000000000000000000000000000000..0c16cea00499ad90d19b18ae30dc933bb4414df8 --- /dev/null +++ b/indra/newview/llrecentpeople.cpp @@ -0,0 +1,69 @@ +/** + * @file llrecentpeople.cpp + * @brief List of people with which the user has recently interacted. + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + * + * Copyright (c) 2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#include "llviewerprecompiledheaders.h" + +#include "llrecentpeople.h" + +#include "llagent.h" + +using namespace LLOldEvents; + +bool LLRecentPeople::add(const LLUUID& id) +{ + if (contains(id) || id == gAgent.getID()) + return false; + + mList.insert(id); + mChangedSignal(); + return true; +} + +bool LLRecentPeople::contains(const LLUUID& id) const +{ + return mList.find(id) != mList.end(); +} + +void LLRecentPeople::get(std::vector<LLUUID>& result) const +{ + result.clear(); + for (std::set<LLUUID>::const_iterator pos = mList.begin(); pos != mList.end(); ++pos) + result.push_back(*pos); +} + +// virtual +bool LLRecentPeople::handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) +{ + (void) userdata; + add(event->getValue().asUUID()); + return true; +} diff --git a/indra/newview/llrecentpeople.h b/indra/newview/llrecentpeople.h new file mode 100644 index 0000000000000000000000000000000000000000..40ac80e8bcef607ae87a0046f849da42c385b6f2 --- /dev/null +++ b/indra/newview/llrecentpeople.h @@ -0,0 +1,101 @@ +/** + * @file llrecentpeople.h + * @brief List of people with which the user has recently interacted. + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + * + * Copyright (c) 2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#ifndef LL_LLRECENTPEOPLE_H +#define LL_LLRECENTPEOPLE_H + +#include "llevent.h" +#include "llsingleton.h" +#include "lluuid.h" + +#include <vector> +#include <set> +#include <boost/signals2.hpp> + +/** + * List of people the agent recently interacted with. + * + * Includes: anyone with whom the user IM'd or called + * (1:1 and ad-hoc but not SL Group chat), + * anyone with whom the user has had a transaction + * (inventory offer, friend request, etc), + * and anyone that has chatted within chat range of the user in-world. + * + *TODO: purge least recently added items? + */ +class LLRecentPeople: public LLSingleton<LLRecentPeople>, public LLOldEvents::LLSimpleListener +{ + LOG_CLASS(LLRecentPeople); +public: + typedef boost::signals2::signal<void ()> signal_t; + + /** + * Add specified avatar to the list if it's not there already. + * + * @param id avatar to add. + * @return false if the avatar is in the list already, true otherwisr + */ + bool add(const LLUUID& id); + + /** + * @param id avatar to search. + * @return true if the avatar is in the list, false otherwise. + */ + bool contains(const LLUUID& id) const; + + /** + * Get the whole list. + * + * @param result where to put the result. + */ + void get(std::vector<LLUUID>& result) const; + + /** + * Set callback to be called when the list changed. + * + * Multiple callbacks can be set. + * + * @return no connection; use boost::bind + boost::signals2::trackable to disconnect slots. + */ + void setChangedCallback(const signal_t::slot_type& cb) { mChangedSignal.connect(cb); } + + /** + * LLSimpleListener interface. + */ + /*virtual*/ bool handleEvent(LLPointer<LLOldEvents::LLEvent> event, const LLSD& userdata); + +private: + std::set<LLUUID> mList; + signal_t mChangedSignal; +}; + +#endif // LL_LLRECENTPEOPLE_H diff --git a/indra/newview/llremoteparcelrequest.cpp b/indra/newview/llremoteparcelrequest.cpp index 8ff4dea2b1b01177943a75d869b1b200f04a22be..fe4e8b5d0c8017c7074ca26bc1aea6ae7020bdaa 100644 --- a/indra/newview/llremoteparcelrequest.cpp +++ b/indra/newview/llremoteparcelrequest.cpp @@ -34,8 +34,7 @@ #include "llviewerprecompiledheaders.h" -#include "llagent.h" -#include "llremoteparcelrequest.h" +#include "message.h" #include "llpanelplace.h" #include "llpanel.h" @@ -43,37 +42,120 @@ #include "llsdserialize.h" #include "llviewerregion.h" #include "llview.h" -#include "message.h" -LLRemoteParcelRequestResponder::LLRemoteParcelRequestResponder(LLHandle<LLPanel> place_panel_handle) -{ - mPlacePanelHandle = place_panel_handle; -} -/*virtual*/ +#include "llagent.h" +#include "llremoteparcelrequest.h" + + +LLRemoteParcelRequestResponder::LLRemoteParcelRequestResponder(LLHandle<LLRemoteParcelInfoObserver> observer_handle) + : mObserverHandle(observer_handle) +{} + +//If we get back a normal response, handle it here +//virtual void LLRemoteParcelRequestResponder::result(const LLSD& content) { LLUUID parcel_id = content["parcel_id"]; - LLPanelPlace* place_panelp = (LLPanelPlace*)mPlacePanelHandle.get(); + mObserverHandle.get()->setParcelID(parcel_id); +} + +//If we get back an error (not found, etc...), handle it here +//virtual +void LLRemoteParcelRequestResponder::error(U32 status, const std::string& reason) +{ + llinfos << "LLRemoteParcelRequest::error(" + << status << ": " << reason << ")" << llendl; + + mObserverHandle.get()->setErrorStatus(status, reason); +} - if(place_panelp) +void LLRemoteParcelInfoProcessor::addObserver(const LLUUID& parcel_id, LLRemoteParcelInfoObserver* observer) +{ + // Check if the observer is alredy in observsrs list for this UUID + observer_multimap_t::iterator it; + + it = mObservers.find(parcel_id); + while (it != mObservers.end()) { - place_panelp->setParcelID(parcel_id); + if (it->second == observer) + { + return; + } + else + { + ++it; + } } + mObservers.insert(std::pair<LLUUID, LLRemoteParcelInfoObserver*>(parcel_id, observer)); } -/*virtual*/ -void LLRemoteParcelRequestResponder::error(U32 status, const std::string& reason) +void LLRemoteParcelInfoProcessor::removeObserver(const LLUUID& parcel_id, LLRemoteParcelInfoObserver* observer) { - llinfos << "LLRemoteParcelRequest::error(" - << status << ": " << reason << ")" << llendl; - LLPanelPlace* place_panelp = (LLPanelPlace*)mPlacePanelHandle.get(); + if (!observer) + { + return; + } - if(place_panelp) + observer_multimap_t::iterator it; + + it = mObservers.find(parcel_id); + while (it != mObservers.end()) { - place_panelp->setErrorStatus(status, reason); + if (it->second == observer) + { + mObservers.erase(it); + break; + } + else + { + ++it; + } } +} +//static +void LLRemoteParcelInfoProcessor::processParcelInfoReply(LLMessageSystem* msg, void**) +{ + LLParcelData parcel_data; + + msg->getUUID ("Data", "ParcelID", parcel_data.parcel_id); + msg->getUUID ("Data", "OwnerID", parcel_data.owner_id); + msg->getString ("Data", "Name", parcel_data.name); + msg->getString ("Data", "Desc", parcel_data.desc); + msg->getS32 ("Data", "ActualArea", parcel_data.actual_area); + msg->getS32 ("Data", "BillableArea", parcel_data.billable_area); + msg->getU8 ("Data", "Flags", parcel_data.flags); + msg->getF32 ("Data", "GlobalX", parcel_data.global_x); + msg->getF32 ("Data", "GlobalY", parcel_data.global_y); + msg->getF32 ("Data", "GlobalZ", parcel_data.global_z); + msg->getString ("Data", "SimName", parcel_data.sim_name); + msg->getUUID ("Data", "SnapshotID", parcel_data.snapshot_id); + msg->getF32 ("Data", "Dwell", parcel_data.dwell); + msg->getS32 ("Data", "SalePrice", parcel_data.sale_price); + msg->getS32 ("Data", "AuctionID", parcel_data.auction_id); + + LLRemoteParcelInfoProcessor::observer_multimap_t observers = LLRemoteParcelInfoProcessor::getInstance()->mObservers; + + observer_multimap_t::iterator oi = observers.find(parcel_data.parcel_id); + observer_multimap_t::iterator end = observers.upper_bound(parcel_data.parcel_id); + for (; oi != end; ++oi) + { + oi->second->processParcelInfo(parcel_data); + LLRemoteParcelInfoProcessor::getInstance()->removeObserver(parcel_data.parcel_id, oi->second); + } } +void LLRemoteParcelInfoProcessor::sendParcelInfoRequest(const LLUUID& parcel_id) +{ + LLMessageSystem *msg = gMessageSystem; + + msg->newMessage("ParcelInfoRequest"); + msg->nextBlockFast(_PREHASH_AgentData); + msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID() ); + msg->addUUID("SessionID", gAgent.getSessionID()); + msg->nextBlock("Data"); + msg->addUUID("ParcelID", parcel_id); + gAgent.sendReliableMessage(); +} diff --git a/indra/newview/llremoteparcelrequest.h b/indra/newview/llremoteparcelrequest.h index c92ee3ff3a268b12c13f9c069a6d6fe3137161ba..3a16e25ef619cc136c8579443698c1f6622056cb 100644 --- a/indra/newview/llremoteparcelrequest.h +++ b/indra/newview/llremoteparcelrequest.h @@ -38,17 +38,73 @@ #include "llhttpclient.h" #include "llpanel.h" +class LLRemoteParcelInfoObserver; + class LLRemoteParcelRequestResponder : public LLHTTPClient::Responder { public: - LLRemoteParcelRequestResponder(LLHandle<LLPanel> place_panel_handle); + LLRemoteParcelRequestResponder(LLHandle<LLRemoteParcelInfoObserver> observer_handle); + //If we get back a normal response, handle it here - virtual void result(const LLSD& content); + /*virtual*/ void result(const LLSD& content); + //If we get back an error (not found, etc...), handle it here - virtual void error(U32 status, const std::string& reason); + /*virtual*/ void error(U32 status, const std::string& reason); + +protected: + LLHandle<LLRemoteParcelInfoObserver> mObserverHandle; +}; + +struct LLParcelData +{ + LLUUID parcel_id; + LLUUID owner_id; + std::string name; + std::string desc; + S32 actual_area; + S32 billable_area; + U8 flags; + F32 global_x; + F32 global_y; + F32 global_z; + std::string sim_name; + LLUUID snapshot_id; + F32 dwell; + S32 sale_price; + S32 auction_id; +}; + +// An interface class for panels which display parcel information +// like name, description, area, snapshot etc. +class LLRemoteParcelInfoObserver +{ +public: + LLRemoteParcelInfoObserver() { mObserverHandle.bind(this); } + virtual ~LLRemoteParcelInfoObserver() {} + virtual void processParcelInfo(const LLParcelData& parcel_data) = 0; + virtual void setParcelID(const LLUUID& parcel_id) = 0; + virtual void setErrorStatus(U32 status, const std::string& reason) = 0; + LLHandle<LLRemoteParcelInfoObserver> getObserverHandle() const { return mObserverHandle; } protected: - LLHandle<LLPanel> mPlacePanelHandle; + LLRootHandle<LLRemoteParcelInfoObserver> mObserverHandle; +}; + +class LLRemoteParcelInfoProcessor : public LLSingleton<LLRemoteParcelInfoProcessor> +{ +public: + virtual ~LLRemoteParcelInfoProcessor() {} + + void addObserver(const LLUUID& parcel_id, LLRemoteParcelInfoObserver* observer); + void removeObserver(const LLUUID& parcel_id, LLRemoteParcelInfoObserver* observer); + + void sendParcelInfoRequest(const LLUUID& parcel_id); + + static void processParcelInfoReply(LLMessageSystem* msg, void**); + +private: + typedef std::multimap<LLUUID, LLRemoteParcelInfoObserver*> observer_multimap_t; + observer_multimap_t mObservers; }; #endif // LL_LLREMOTEPARCELREQUEST_H diff --git a/indra/newview/llrootview.h b/indra/newview/llrootview.h new file mode 100644 index 0000000000000000000000000000000000000000..af9517f922c7448a04a5e72d470ec60170369bf1 --- /dev/null +++ b/indra/newview/llrootview.h @@ -0,0 +1,55 @@ +/** + * @file llrootview.h + * @brief Mother of all Views + * + * $LicenseInfo:firstyear=2001&license=viewergpl$ + * + * Copyright (c) 2001-2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#ifndef LL_LLROOTVIEW_H +#define LL_LLROOTVIEW_H + +#include "llview.h" +#include "lluictrlfactory.h" + +class LLRootViewRegistry : public LLWidgetRegistry<LLRootViewRegistry> +{}; + +class LLRootView : public LLView +{ +public: + LLRootView(const Params& p) + : LLView(p) + {} + + const widget_registry_t& getChildRegistry() const + { + // use default widget registry + return LLRootViewRegistry::instance(); + } +}; +#endif //LL_LLROOTVIEW_H diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp index 0cca1ebe7121c5ebb100f127fdd780bda622291d..ed7c7dce12baf2a7a441241091df283b5af049a0 100644 --- a/indra/newview/llselectmgr.cpp +++ b/indra/newview/llselectmgr.cpp @@ -79,7 +79,7 @@ #include "llviewerobjectlist.h" #include "llviewerregion.h" #include "llviewerstats.h" -#include "llvoavatar.h" +#include "llvoavatarself.h" #include "llvovolume.h" #include "pipeline.h" @@ -5394,6 +5394,11 @@ void dialog_refresh_all() gPieObject->needsArrange(); + if( gPieAttachment->getVisible() ) + { + gPieAttachment->arrange(); + } + LLFloaterProperties::dirtyAll(); LLFloaterInspect::dirty(); } diff --git a/indra/newview/llsidetray.cpp b/indra/newview/llsidetray.cpp new file mode 100644 index 0000000000000000000000000000000000000000..e7008abe605f27729ed6d4a3f97bae0654937aa5 --- /dev/null +++ b/indra/newview/llsidetray.cpp @@ -0,0 +1,746 @@ +/** + * @file llsidetray.cpp + * @brief SideBar implementation + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + * + * Copyright (c) 2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#include "llviewerprecompiledheaders.h" + +#include "lltextbox.h" + +#include "llsidetray.h" +#include "llviewerwindow.h" +#include "llaccordionpanel.h" +#include "llfocusmgr.h" +#include "llrootview.h" + +#include "llcollapsiblectrl.h" + +#include "llfloater.h" //for gFloaterView +#include "lliconctrl.h"//for Home tab icon +#include "llwindow.h"//for SetCursor +#include "llbottomtray.h"//for reshape + +//#include "llscrollcontainer.h" + +using namespace std; + +static LLRootViewRegistry::Register<LLSideTray> t1("side_tray"); +static LLDefaultWidgetRegistry::Register<LLSideTrayTab> t2("sidetray_tab"); + +static const std::string COLLAPSED_NAME = "<<"; +static const std::string EXPANDED_NAME = ">>"; + +static const std::string TAB_PANEL_CAPTION_NAME = "sidetray_tab_panel"; +static const std::string TAB_PANEL_CAPTION_TITLE_BOX = "sidetray_tab_title"; + +LLSideTray* LLSideTray::sInstance = 0; + +class LLSideTrayInfoPanel: public LLPanel +{ +protected: + LLSideTrayInfoPanel(){} +public: + static LLSideTrayInfoPanel* createInstance(const string& image, const string& name,const string& description) + { + LLSideTrayInfoPanel* panel = new LLSideTrayInfoPanel(); + LLUICtrlFactory::getInstance()->buildPanel(panel,"panel_sidetray_tab_info.xml"); + if(panel) + panel->setData(image, name,description); + panel->setBorderVisible(true); + return panel; + + } + void setData(const string& image, const string& name,const string& description) + { + getChild<LLTextBox>("tab_name",false,false)->setValue(name); + getChild<LLTextBox>("tab_description",false,false)->setValue(description); + getChild<LLIconCtrl>("tab_icon",false,false)->setValue(image); + } + + BOOL handleHover(S32 x, S32 y, MASK mask) + { + getWindow()->setCursor(UI_CURSOR_HAND); + return TRUE; + } + + BOOL handleMouseUp(S32 x, S32 y, MASK mask) + { + onCommit(); + return LLPanel::handleMouseUp(x,y,mask); + } + +}; + + +LLSideTray* LLSideTray::getInstance() +{ + if (!sInstance) + { + sInstance = LLUICtrlFactory::createFromFile<LLSideTray>("panel_side_tray.xml",gViewerWindow->getRootView()); + } + + return sInstance; +} + +bool LLSideTray::instanceCreated () +{ + return sInstance!=0; +} + +LLSideTrayTab::LLSideTrayTab(const Params& params):mAccordionPanel(0) + +{ + mImagePath = params.image_path; + mTabTitle = params.tab_title; + mDescription = params.tab_description; +} +LLSideTrayTab::~LLSideTrayTab() +{ +} + +void LLSideTrayTab::addPanel(LLPanel* panel) +{ + //addChild(panel,false); +} + +bool LLSideTrayTab::addChild(LLView* view, S32 tab_group) +{ + if(mAccordionPanel == 0) + { + mAccordionPanel = new LLAccordionPanel(); + mAccordionPanel->setVisible(TRUE); + LLPanel::addChild(mAccordionPanel,tab_group); + } + + + bool res = true; + if(TAB_PANEL_CAPTION_NAME != view->getName())//skip our caption panel + { + mAccordionPanel->addCollapsibleCtrl(view); + } + else + res = LLPanel::addChild(view,tab_group); + + return res; +} + + + +//virtual +BOOL LLSideTrayTab::postBuild() +{ + LLPanel* title_panel = LLUICtrlFactory::getInstance()->createFromFile<LLPanel>("panel_side_tray_tab_caption.xml",this); + string name = title_panel->getName(); + LLPanel::addChild(title_panel); + + title_panel->getChild<LLTextBox>(TAB_PANEL_CAPTION_TITLE_BOX)->setValue(mTabTitle); + + static LLUICachedControl<LLColor4> default_background_color ("FloaterDefaultBackgroundColor", *(new LLColor4)); + static LLUICachedControl<LLColor4> focus_background_color ("FloaterFocusBackgroundColor", *(new LLColor4)); + + setTransparentColor(default_background_color); + setBackgroundColor(focus_background_color); + + return true; +} + +S32 LLSideTrayTab::getMaxSideBarTabWidth() +{ + return (mAccordionPanel)?mAccordionPanel->getMaxPanelWidth():0; +} + +static const S32 splitter_margin = 1; + +//virtual +void LLSideTrayTab::arrange(S32 width, S32 height ) +{ + S32 offset = 0; + + LLView* title_panel = getChildView(TAB_PANEL_CAPTION_NAME, true, false); + + if(title_panel) + { + title_panel->setOrigin( 0, height - title_panel->getRect().getHeight() ); + offset = title_panel->getRect().getHeight(); + } + + LLRect sRect = mAccordionPanel->getRect(); + sRect.setLeftTopAndSize( splitter_margin, height - offset - splitter_margin, width - 2*splitter_margin, height - offset - 2*splitter_margin); + mAccordionPanel->setRect(sRect); + + mAccordionPanel->setMaxWidth(sRect.getWidth()); + mAccordionPanel->arrange(); +} + +void LLSideTrayTab::reshape (S32 width, S32 height, BOOL called_from_parent ) +{ + if(!mAccordionPanel) + return; + S32 offset = 0; + + LLView* title_panel = getChildView(TAB_PANEL_CAPTION_NAME, true, false); + + if(title_panel) + { + title_panel->setOrigin( 0, height - title_panel->getRect().getHeight() ); + title_panel->reshape(width,title_panel->getRect().getHeight()); + offset = title_panel->getRect().getHeight(); + } + + + + LLRect sRect = mAccordionPanel->getRect(); + sRect.setLeftTopAndSize( splitter_margin, height - offset - splitter_margin, width - 2*splitter_margin, height - offset - 2*splitter_margin); + mAccordionPanel->setMaxWidth(sRect.getWidth()); + mAccordionPanel->reshape(sRect.getWidth(), sRect.getHeight()); + + mAccordionPanel->setRect(sRect); + +} + +void LLSideTrayTab::draw() +{ + LLPanel::draw(); + + //border + gl_rect_2d(0,0,getRect().getWidth() - 1,getRect().getHeight() - 1,LLColor4::black,false); + + +} + +void LLSideTrayTab::onOpen (const LLSD& key) +{ + mAccordionPanel->onOpen(key); +} + +LLSideTrayTab* LLSideTrayTab::createInstance () +{ + LLSideTrayTab::Params tab_params; + tab_params.tab_title("Home"); + + LLSideTrayTab* tab = LLUICtrlFactory::create<LLSideTrayTab>(tab_params); + return tab; +} + + +//virtual +LLSideTray::LLSideTray(Params& params) + :mActiveTab(0) + ,mCollapsed(false) + ,mCollapseButton(0) + ,mMaxBarWidth(0) + ,mHomeTab(0) +{ + mCollapsed=params.collapsed; +} + + +BOOL LLSideTray::postBuild() +{ + calcMaxSideBarWidth(); + + createButtons(); + + createHomeTab(); + + arrange(); + selectTabByName("home_tab"); + + if(mCollapsed) + collapseSideBar(); + + setMouseOpaque(false); + return true; +} + +/** + * add new panel to tab with tab_name name + * @param tab_name - name of sidebar tab to add new panel + * @param panel - pointer to panel + */ +bool LLSideTray::addPanel ( const std::string& tab_name + ,LLPanel* panel ) +{ + return false; +} +/** + * Add new tab to side bar + * @param tab_name - name of the new tab + * @param image - image for new sidebar button + * @param title - title for new tab + */ +bool LLSideTray::addTab ( const std::string& tab_name + ,const std::string& image + ,const std::string& title) +{ + LLSideTrayTab::Params params; + params.image_path = image; + params.tab_title = title; + LLSideTrayTab* tab = LLUICtrlFactory::create<LLSideTrayTab> (params); + addChild(tab,1); + return true; +} + + +LLSideTrayTab* LLSideTray::getTab(const std::string& name) +{ + return getChild<LLSideTrayTab>(name,false,false); +} + + + +void LLSideTray::toggleTabButton (LLSideTrayTab* tab) +{ + if(tab == NULL) + return; + string name = tab->getName(); + std::map<std::string,LLButton*>::iterator tIt = mTabButtons.find(name); + if(tIt!=mTabButtons.end()) + tIt->second->setToggleState(!tIt->second->getToggleState()); +} + +bool LLSideTray::selectTabByIndex(size_t index) +{ + if(index>=mTabs.size()) + return false; + + LLSideTrayTab* sidebar_tab = dynamic_cast<LLSideTrayTab*>(mTabs[index]); + if(sidebar_tab == NULL) + return false; + return selectTabByName(sidebar_tab->getName()); +} + +bool LLSideTray::selectTabByName (const std::string& name) +{ + LLSideTrayTab* side_bar = getTab(name); + if(side_bar == 0 && name == "home_tab") + side_bar = mHomeTab; + + if(side_bar == NULL || side_bar == mActiveTab) + return false; + //deselect old tab + toggleTabButton(mActiveTab); + if(mActiveTab) + mActiveTab->setVisible(false); + + //select new tab + mActiveTab = side_bar; + toggleTabButton(mActiveTab); + LLSD key;//empty + mActiveTab->onOpen(key); + + mActiveTab->setVisible(true); + + //arrange(); + + //hide all tabs - show active tab + child_vector_const_iter_t child_it; + for ( child_it = mTabs.begin(); child_it != mTabs.end(); ++child_it) + { + LLSideTrayTab* sidebar_tab = dynamic_cast<LLSideTrayTab*>(*child_it); + if(sidebar_tab == NULL) + continue; + sidebar_tab->setVisible(sidebar_tab == mActiveTab); + } + return true; +} + +LLButton* LLSideTray::createButton (const std::string& name,const std::string& image,LLUICtrl::commit_callback_t callback) +{ + static LLSideTray::Params sidetray_params(LLUICtrlFactory::getDefaultParams<LLSideTray::Params>()); + + LLButton::Params bparams; + + LLRect rect; + rect.setOriginAndSize(0, 0, sidetray_params.default_button_width, sidetray_params.default_button_height); + + bparams.name(name); + bparams.follows.flags (FOLLOWS_LEFT | FOLLOWS_BOTTOM); + bparams.rect (rect); + bparams.tab_stop(false); + bparams.image_unselected.name(sidetray_params.tab_btn_image_normal); + bparams.image_selected.name(sidetray_params.tab_btn_image_selected); + bparams.image_disabled.name(sidetray_params.tab_btn_image_normal); + bparams.image_disabled_selected.name(sidetray_params.tab_btn_image_selected); + + LLButton* button = LLUICtrlFactory::create<LLButton> (bparams); + button->setLabel(name); + button->setClickedCallback(callback); + + if(image.length()) + { + button->setImageOverlay(image); + } + + addChildInBack(button); + + return button; +} + +bool LLSideTray::addChild(LLView* view, S32 tab_group) +{ + LLSideTrayTab* tab_panel = dynamic_cast<LLSideTrayTab*>(view); + + if (tab_panel) + { + mTabs.push_back(tab_panel); + } + + return LLUICtrl::addChild(view, tab_group); +} + + +void LLSideTray::createButtons () +{ + //create show/hide button + mCollapseButton = createButton(EXPANDED_NAME,"",boost::bind(&LLSideTray::onToggleCollapse, this)); + + //create buttons for tabs + child_vector_const_iter_t child_it; + + for ( child_it = mTabs.begin(); child_it != mTabs.end(); ++child_it) + { + LLSideTrayTab* sidebar_tab = dynamic_cast<LLSideTrayTab*>(*child_it); + if(sidebar_tab == NULL) + continue; + + string name = sidebar_tab->getName(); + + LLButton* button = createButton("",sidebar_tab->mImagePath,boost::bind(&LLSideTray::onTabButtonClick, this, sidebar_tab->getName())); + mTabButtons[sidebar_tab->getName()] = button; + } + +} + +void LLSideTray::onTabButtonClick(string name) +{ + + selectTabByName (name); + if(mCollapsed) + expandSideBar(); +} + +void LLSideTray::onToggleCollapse() +{ + if(mCollapsed) + { + expandSideBar(); + selectTabByName("home_tab"); + } + else + collapseSideBar(); +} + + +void LLSideTray::reflectCollapseChange() +{ + setPanelRect(); + + if(mCollapsed) + gFloaterView->setSnapOffsetRight(0); + else + gFloaterView->setSnapOffsetRight(mMaxBarWidth); + + gFloaterView->refresh(); + + setFocus( FALSE ); +} + +void LLSideTray::arrange () +{ + static LLSideTray::Params sidetray_params(LLUICtrlFactory::getDefaultParams<LLSideTray::Params>()); + + calcMaxSideBarWidth(); + + + + setPanelRect(); + + LLRect ctrl_rect; + ctrl_rect.setLeftTopAndSize(0,getRect().getHeight()-sidetray_params.default_button_width + ,sidetray_params.default_button_width + ,sidetray_params.default_button_height); + + mCollapseButton->setRect(ctrl_rect); + + //arrange tab buttons + //arrange tab buttons + child_vector_const_iter_t child_it; + int offset = (sidetray_params.default_button_height+sidetray_params.default_button_margin)*2; + for ( child_it = mTabs.begin(); child_it != mTabs.end(); ++child_it) + { + LLSideTrayTab* sidebar_tab = dynamic_cast<LLSideTrayTab*>(*child_it); + if(sidebar_tab == NULL) + continue; + + ctrl_rect.setLeftTopAndSize(0,getRect().getHeight()-offset + ,sidetray_params.default_button_width + ,sidetray_params.default_button_height); + + if(mTabButtons.find(sidebar_tab->getName()) == mTabButtons.end()) + continue; + + LLButton* btn = mTabButtons[sidebar_tab->getName()]; + + btn->setRect(ctrl_rect); + offset+=sidetray_params.default_button_height; + offset+=sidetray_params.default_button_margin; + + btn->setVisible(ctrl_rect.mBottom > 0); + } + + ctrl_rect.setLeftTopAndSize(sidetray_params.default_button_width,getRect().getHeight(),mMaxBarWidth,getRect().getHeight()); + + //arrange tabs + for ( child_it = mTabs.begin(); child_it != mTabs.end(); ++child_it) + { + LLSideTrayTab* sidebar_tab = dynamic_cast<LLSideTrayTab*>(*child_it); + if(sidebar_tab == NULL) + continue; + + sidebar_tab->setRect(ctrl_rect); + sidebar_tab->arrange(mMaxBarWidth,getRect().getHeight()); + } + + mHomeTab->setRect(ctrl_rect); + mHomeTab->arrange(mMaxBarWidth,getRect().getHeight()); + +} + +void LLSideTray::collapseSideBar () +{ + mCollapsed = true; + mCollapseButton->setLabel(COLLAPSED_NAME); + mActiveTab->setVisible(FALSE); + reflectCollapseChange(); + setFocus( FALSE ); + +} +void LLSideTray::expandSideBar () +{ + mCollapsed = false; + mCollapseButton->setLabel(EXPANDED_NAME); + mActiveTab->setVisible(TRUE); + + reflectCollapseChange(); + +} + +void LLSideTray::calcMaxSideBarWidth() +{ + + S32 max_bar_width = 0; + + + child_vector_const_iter_t child_it; + for ( child_it = mTabs.begin(); child_it != mTabs.end(); ++child_it) + { + LLSideTrayTab* sidebar_tab = dynamic_cast<LLSideTrayTab*>(*child_it); + if(sidebar_tab == NULL) + continue; + max_bar_width = llmax(max_bar_width,sidebar_tab->getMaxSideBarTabWidth()); + } + + if(max_bar_width > 0) + mMaxBarWidth = max_bar_width; + +} +void LLSideTray::highlightFocused() +{ + if(!mActiveTab) + return; + /* uncomment in case something change + BOOL dependent_has_focus = gFocusMgr.childHasKeyboardFocus(this); + setBackgroundOpaque( dependent_has_focus ); + mActiveTab->setBackgroundOpaque( dependent_has_focus ); + */ + mActiveTab->setBackgroundOpaque( true ); + + +} +//virtual +BOOL LLSideTray::handleMouseDown (S32 x, S32 y, MASK mask) +{ + BOOL ret = LLPanel::handleMouseDown(x,y,mask); + if(ret) + setFocus(true); + return ret; +} +void LLSideTray::reshape (S32 width, S32 height, BOOL called_from_parent) +{ + + LLPanel::reshape(width, height, called_from_parent); + if(!mActiveTab) + return; + + static LLSideTray::Params sidetray_params(LLUICtrlFactory::getDefaultParams<LLSideTray::Params>()); + + setPanelRect(); + + LLRect ctrl_rect; + ctrl_rect.setLeftTopAndSize(0 + ,getRect().getHeight()-sidetray_params.default_button_width + ,sidetray_params.default_button_width + ,sidetray_params.default_button_height); + + mCollapseButton->setRect(ctrl_rect); + + //arrange tab buttons + child_vector_const_iter_t child_it; + int offset = (sidetray_params.default_button_height+sidetray_params.default_button_margin)*2; + for ( child_it = mTabs.begin(); child_it != mTabs.end(); ++child_it) + { + LLSideTrayTab* sidebar_tab = dynamic_cast<LLSideTrayTab*>(*child_it); + if(sidebar_tab == NULL) + continue; + + ctrl_rect.setLeftTopAndSize(0,getRect().getHeight()-offset + ,sidetray_params.default_button_width + ,sidetray_params.default_button_height); + + if(mTabButtons.find(sidebar_tab->getName()) == mTabButtons.end()) + continue; + + LLButton* btn = mTabButtons[sidebar_tab->getName()]; + + btn->setRect(ctrl_rect); + offset+=sidetray_params.default_button_height; + offset+=sidetray_params.default_button_margin; + + btn->setVisible(ctrl_rect.mBottom > 0); + } + + //arrange tabs + + for ( child_it = mTabs.begin(); child_it != mTabs.end(); ++child_it) + { + LLSideTrayTab* sidebar_tab = dynamic_cast<LLSideTrayTab*>(*child_it); + if(sidebar_tab == NULL) + continue; + sidebar_tab->reshape(mMaxBarWidth,getRect().getHeight()); + ctrl_rect.setLeftTopAndSize(sidetray_params.default_button_width,getRect().getHeight(),mMaxBarWidth,getRect().getHeight()); + sidebar_tab->setRect(ctrl_rect); + + } + + mHomeTab->reshape(mMaxBarWidth,getRect().getHeight()); + ctrl_rect.setLeftTopAndSize(sidetray_params.default_button_width,getRect().getHeight(),mMaxBarWidth,getRect().getHeight()); + mHomeTab->setRect(ctrl_rect); + + +} + +/** + * Activate tab with "panel_name" panel + * if no such tab - return false, otherwise true + */ +bool LLSideTray::showPanel (const std::string& panel_name, const LLSD& params) +{ + //arrange tabs + child_vector_const_iter_t child_it; + for ( child_it = mTabs.begin(); child_it != mTabs.end(); ++child_it) + { + LLView* view = (*child_it)->getChildView(panel_name,true,false); + if(view) + { + onTabButtonClick((*child_it)->getName()); + LLPanel* panel = dynamic_cast<LLPanel*>(view); + if(panel) + panel->onOpen(params); + return true; + } + } + return false; +} + +void LLSideTray::createHomeTab() +{ + mHomeTab = LLSideTrayTab::createInstance(); + child_vector_iter_t child_it; + for ( child_it = mTabs.begin(); child_it != mTabs.end(); ++child_it) + { + LLSideTrayTab* sidebar_tab = dynamic_cast<LLSideTrayTab*>(*child_it); + if(sidebar_tab == NULL) + continue; + + LLPanel* panel = LLSideTrayInfoPanel::createInstance(sidebar_tab->mImagePath,sidebar_tab->getTabTitle(),sidebar_tab->getDescription()); + + panel->setCommitCallback(boost::bind(&LLSideTray::onTabButtonClick, this, sidebar_tab->getName())); + + LLCollapsibleCtrl::Params panel_params; + panel_params.display_children(true); + panel_params.collapsible(false); + panel_params.header_visible(false); + panel_params.can_resize(false); + panel_params.min_height(200); + panel_params.padding_left(10); + panel_params.padding_right(10); + panel_params.padding_top(5); + panel_params.padding_bottom(5); + + LLCollapsibleCtrl* ctrl = LLUICtrlFactory::create<LLCollapsibleCtrl>(panel_params); + + + ctrl->setPanel(panel); + ctrl->postBuild(); + mHomeTab->addChild(ctrl,0); + } + + mHomeTab->setBackgroundVisible(true); + mHomeTab->postBuild(); + + LLUICtrl::addChild(mHomeTab, 0); +} +static const S32 fake_offset = 132; +static const S32 fake_top_offset = 78; + +void LLSideTray::setPanelRect () +{ + static LLSideTray::Params sidetray_params(LLUICtrlFactory::getDefaultParams<LLSideTray::Params>()); + + const LLRect& parent_rect = gViewerWindow->getRootView()->getRect(); + + S32 panel_width = sidetray_params.default_button_width+sidetray_params.default_button_margin; + if(!mCollapsed) + panel_width+=mMaxBarWidth; + + S32 panel_height = parent_rect.getHeight()-fake_top_offset; + panel_height -= LLBottomTray::getInstance()->getRect().getHeight(); + + LLRect panel_rect; + panel_rect.setLeftTopAndSize( parent_rect.mRight-panel_width, parent_rect.mTop-fake_top_offset, panel_width, panel_height); + setRect(panel_rect); +} + +S32 LLSideTray::getTrayWidth() +{ + static LLSideTray::Params sidetray_params(LLUICtrlFactory::getDefaultParams<LLSideTray::Params>()); + return getRect().getWidth() - (sidetray_params.default_button_width + sidetray_params.default_button_margin); +} diff --git a/indra/newview/llsidetray.h b/indra/newview/llsidetray.h new file mode 100644 index 0000000000000000000000000000000000000000..7d269257535fa69ab674e915dc38dba64b35c444 --- /dev/null +++ b/indra/newview/llsidetray.h @@ -0,0 +1,240 @@ +/** + * @file LLSideTray.h + * @brief SideBar header file + * + * $LicenseInfo:firstyear=2004&license=viewergpl$ + * + * Copyright (c) 2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#ifndef LL_LLSIDETRAY_H_ +#define LL_LLSIDETRAY_H_ + +#include "llpanel.h" +#include "string" + +class LLSideTray; +class LLAccordionPanel; + +class LLSideTrayTab: public LLPanel +{ + friend class LLUICtrlFactory; + friend class LLSideTray; +public: + + struct Params + : public LLInitParam::Block<Params, LLPanel::Params> + { + // image name + Optional<std::string> image_path; + Optional<std::string> tab_title; + Optional<std::string> tab_description; + Params():image_path("image","") + ,tab_title("tab_title","no title") + ,tab_description("description","no description") + {}; + }; +protected: + LLSideTrayTab(const Params& params); + + + S32 getMaxSideBarTabWidth(); +public: + virtual ~LLSideTrayTab(); + + void addPanel (LLPanel* panel); + /*virtual*/ BOOL postBuild (); + /*virtual*/ bool addChild (LLView* view, S32 tab_group); + + + void arrange (S32 width, S32 height); + void reshape (S32 width, S32 height, BOOL called_from_parent = TRUE); + + static LLSideTrayTab* createInstance (); + + const std::string& getDescription () const { return mDescription;} + const std::string& getTabTitle() const { return mTabTitle;} + + void draw(); + + void onOpen (const LLSD& key); + +private: + std::string mTabTitle; + std::string mImagePath; + std::string mDescription; + + LLAccordionPanel* mAccordionPanel; +}; + + +class LLSideTray : public LLPanel +{ + friend class LLUICtrlFactory; +public: + + LOG_CLASS(LLSideTray); + + struct Params + : public LLInitParam::Block<Params, LLPanel::Params> + { + // initial state + Optional<bool> collapsed; + Optional<std::string> tab_btn_image_normal; + Optional<std::string> tab_btn_image_selected; + + Optional<S32> default_button_width; + Optional<S32> default_button_height; + Optional<S32> default_button_margin; + + Params(): + collapsed("collapsed",false) + ,tab_btn_image_normal("tab_btn_image","sidebar_tab_left.tga") + ,tab_btn_image_selected("tab_btn_image_selected","button_enabled_selected_32x128.tga") + ,default_button_width("tab_btn_width",32) + ,default_button_height("tab_btn_height",32) + ,default_button_margin("tab_btn_margin",0) + {}; + }; + + static LLSideTray* getInstance (); + static bool instanceCreated (); +protected: + LLSideTray(Params& params); + typedef std::vector<LLView*> child_vector_t; + typedef child_vector_t::iterator child_vector_iter_t; + typedef child_vector_t::const_iterator child_vector_const_iter_t; + typedef child_vector_t::reverse_iterator child_vector_reverse_iter_t; + typedef child_vector_t::const_reverse_iterator child_vector_const_reverse_iter_t; + +public: + + // interface functions + + /** + * Select tab with specific name and set it active + */ + bool selectTabByName (const std::string& name); + + /** + * Select tab with specific index and set it active + */ + bool selectTabByIndex(size_t index); + + /** + * add new panel to tab with tab_name name + * @param tab_name - name of sidebar tab to add new panel + * @param panel - pointer to panel + */ + bool addPanel ( const std::string& tab_name + ,LLPanel* panel ); + /** + * Add new tab to side bar + * @param tab_name - name of the new tab + * @param image - image for new sidebar button + * @param title - title for new tab + */ + bool addTab ( const std::string& tab_name + ,const std::string& image + ,const std::string& title); + + /** + * Activate tab with "panel_name" panel + * if no such tab - return false, otherwise true + */ + bool showPanel (const std::string& panel_name, const LLSD& params); + + /* + * collapse SideBar, hiding visible tab and moving tab buttons + * to the right corner of the screen + */ + void collapseSideBar (); + + /* + * expand SideBar + */ + void expandSideBar (); + + + /** + *hightlight if focused. manly copypaste from highlightFocusedFloater + */ + void highlightFocused(); + + void setVisible(BOOL visible) + { + LLPanel::setVisible(visible); + } + +public: + virtual ~LLSideTray(){}; + + virtual BOOL postBuild(); + + void onTabButtonClick(std::string name); + void onToggleCollapse(); + + bool addChild (LLView* view, S32 tab_group); + + BOOL handleMouseDown (S32 x, S32 y, MASK mask); + + void reshape (S32 width, S32 height, BOOL called_from_parent = TRUE); + S32 getTrayWidth(); + +protected: + LLSideTrayTab* getTab (const std::string& name); + + void createButtons (); + LLButton* createButton (const std::string& name,const std::string& image,LLUICtrl::commit_callback_t callback); + void createHomeTab (); + void arrange (); + void reflectCollapseChange(); + + void toggleTabButton (LLSideTrayTab* tab); + + + void calcMaxSideBarWidth(); + + void setPanelRect (); + + +private: + + std::map<std::string,LLButton*> mTabButtons; + child_vector_t mTabs; + LLSideTrayTab* mHomeTab; + LLSideTrayTab* mActiveTab; + + LLButton* mCollapseButton; + bool mCollapsed; + + S32 mMaxBarWidth; + + static LLSideTray* sInstance; +}; + +#endif + diff --git a/indra/newview/llspatialpartition.h b/indra/newview/llspatialpartition.h index b6b801866c1cf2bba856ad5acd0f259c54e973a9..8aec5c8377cb3f70a2cc1f64ea3bc09def51df18 100644 --- a/indra/newview/llspatialpartition.h +++ b/indra/newview/llspatialpartition.h @@ -400,7 +400,7 @@ class LLSpatialBridge : public LLDrawable, public LLSpatialPartition virtual void updateSpatialExtents(); virtual void updateBinRadius(); virtual void setVisible(LLCamera& camera_in, std::vector<LLDrawable*>* results = NULL, BOOL for_select = FALSE); - virtual void updateDistance(LLCamera& camera_in); + virtual void updateDistance(LLCamera& camera_in, bool force_update); virtual void makeActive(); virtual void move(LLDrawable *drawablep, LLSpatialGroup *curp, BOOL immediate = FALSE); virtual BOOL updateMove(); diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index 41568217c0b8f3541ab9ceb1c61469856edd45b4..d287f25181dd997609055396ca084669341ad87a 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -51,36 +51,37 @@ #endif #include "llares.h" +#include "lllandmark.h" #include "llcachename.h" -#include "llviewercontrol.h" #include "lldir.h" #include "llerrorcontrol.h" +#include "llfiltersd2xmlrpc.h" #include "llfloaterreg.h" #include "llfocusmgr.h" #include "llhttpsender.h" -#include "imageids.h" -#include "lllandmark.h" #include "lllocationhistory.h" #include "llloginflags.h" #include "llmd5.h" #include "llmemorystream.h" #include "llmessageconfig.h" #include "llmoveview.h" -#include "llteleporthistory.h" #include "llregionhandle.h" #include "llsd.h" #include "llsdserialize.h" -#include "llsdutil_math.h" +#include "llsdutil.h" #include "llsecondlifeurls.h" #include "llstring.h" #include "lluserrelations.h" #include "llversionviewer.h" +#include "llviewercontrol.h" #include "llvfs.h" #include "llxorcipher.h" // saved password, MAC address +#include "imageids.h" #include "message.h" #include "v3math.h" #include "llagent.h" +#include "llagentwearables.h" #include "llagentpilot.h" #include "llfloateravatarpicker.h" #include "llcallbacklist.h" @@ -100,7 +101,9 @@ #include "llfloatergesture.h" #include "llfloaterhud.h" #include "llfloaterland.h" +#include "llfloaterpreference.h" #include "llfloatertopobjects.h" +#include "llfloatertos.h" #include "llfloaterworldmap.h" #include "llgesturemgr.h" #include "llgroupmgr.h" @@ -108,13 +111,12 @@ #include "llhudmanager.h" #include "llhttpclient.h" #include "llimagebmp.h" +#include "llinventorybridge.h" #include "llinventorymodel.h" #include "llinventoryview.h" #include "llkeyboard.h" #include "llloginhandler.h" // gLoginHandler, SLURL support -#include "lllogininstance.h" // Host the login module. #include "llpanellogin.h" -#include "llprefsim.h" #include "llmutelist.h" #include "llnotify.h" #include "llpanelavatar.h" @@ -133,6 +135,7 @@ #include "llsecondlifeurls.h" #include "llselectmgr.h" #include "llsky.h" +#include "llsrv.h" #include "llstatview.h" #include "lltrans.h" #include "llstatusbar.h" // sendMoneyBalanceRequest(), owns L$ balance @@ -145,6 +148,7 @@ #include "llurlsimstring.h" #include "llurlhistory.h" #include "llurlwhitelist.h" +#include "lluserauth.h" #include "llvieweraudio.h" #include "llviewerassetstorage.h" #include "llviewercamera.h" @@ -164,6 +168,7 @@ #include "llviewerthrottle.h" #include "llviewerwindow.h" #include "llvoavatar.h" +#include "llvoavatarself.h" #include "llvoclouds.h" #include "llweb.h" #include "llworld.h" @@ -185,8 +190,6 @@ #include "llwearable.h" #include "llinventorybridge.h" -#include "lllogin.h" - #if LL_LIBXUL_ENABLED #include "llmozlib.h" #endif // LL_LIBXUL_ENABLED @@ -200,12 +203,12 @@ // exported globals // bool gAgentMovementCompleted = false; +std::string gInitialOutfit; +std::string gInitialOutfitGender; std::string SCREEN_HOME_FILENAME = "screen_home.bmp"; std::string SCREEN_LAST_FILENAME = "screen_last.bmp"; -LLPointer<LLImageGL> gStartImageGL; - // // Imported globals // @@ -215,6 +218,12 @@ extern S32 gStartImageHeight; // // local globals // + +LLPointer<LLImageGL> gStartImageGL; + +static LLHost gAgentSimHost; +static BOOL gSkipOptionalUpdate = FALSE; + static bool gGotUseCircuitCodeAck = false; static std::string sInitialOutfit; static std::string sInitialOutfitGender; // "male" or "female" @@ -223,17 +232,6 @@ static bool gUseCircuitCallbackCalled = false; EStartupState LLStartUp::gStartupState = STATE_FIRST; -// *NOTE:Mani - to reconcile with giab changes... -static std::string gFirstname; -static std::string gLastname; -static std::string gPassword; - -static U64 gFirstSimHandle = 0; -static LLHost gFirstSim; -static std::string gFirstSimSeedCap; -static LLVector3 gAgentStartLookAt(1.0f, 0.f, 0.f); -static std::string gAgentStartLocation = "safe"; - // // local function declaration @@ -246,6 +244,8 @@ void show_first_run_dialog(); bool first_run_dialog_callback(const LLSD& notification, const LLSD& response); void set_startup_status(const F32 frac, const std::string& string, const std::string& msg); bool login_alert_status(const LLSD& notification, const LLSD& response); +void update_app(BOOL mandatory, const std::string& message); +bool update_dialog_callback(const LLSD& notification, const LLSD& response); void login_packet_failed(void**, S32 result); void use_circuit_callback(void**, S32 result); void register_viewer_callbacks(LLMessageSystem* msg); @@ -255,7 +255,6 @@ void init_start_screen(S32 location_id); void release_start_screen(); void reset_login(); void apply_udp_blacklist(const std::string& csv); -bool process_login_success_response(); void callback_cache_name(const LLUUID& id, const std::string& firstname, const std::string& lastname, BOOL is_group) { @@ -312,6 +311,9 @@ void update_texture_fetch() gImageList.updateImages(0.10f); } +static std::vector<std::string> sAuthUris; +static S32 sAuthUriNum = -1; + // Returns false to skip other idle processing. Should only return // true when all initialization done. bool idle_startup() @@ -330,11 +332,23 @@ bool idle_startup() // auth/transform loop will do. static F32 progress = 0.10f; + static std::string auth_method; static std::string auth_desc; static std::string auth_message; + static std::string firstname; + static std::string lastname; + static LLUUID web_login_key; + static std::string password; + static std::vector<const char*> requested_options; + + static U64 first_sim_handle = 0; + static LLHost first_sim; + static std::string first_sim_seed_cap; static LLVector3 initial_sun_direction(1.f, 0.f, 0.f); static LLVector3 agent_start_position_region(10.f, 10.f, 10.f); // default for when no space server + static LLVector3 agent_start_look_at(1.0f, 0.f, 0.f); + static std::string agent_start_location = "safe"; // last location by default static S32 agent_location_id = START_LOCATION_ID_LAST; @@ -342,7 +356,7 @@ bool idle_startup() static bool show_connect_box = true; - //static bool stipend_since_login = false; + static bool stipend_since_login = false; // HACK: These are things from the main loop that usually aren't done // until initialization is complete, but need to be done here for things @@ -363,7 +377,12 @@ bool idle_startup() LLStringUtil::setLocale (LLTrans::getString(system)); - if (!gNoRender) + if (gNoRender) + { + // HACK, skip optional updates if you're running drones + gSkipOptionalUpdate = TRUE; + } + else { // Update images? gImageList.updateImages(0.01f); @@ -658,23 +677,24 @@ bool idle_startup() || !gLoginHandler.getWebLoginKey().isNull() ) { // We have at least some login information on a SLURL - gFirstname = gLoginHandler.getFirstName(); - gLastname = gLoginHandler.getLastName(); + firstname = gLoginHandler.getFirstName(); + lastname = gLoginHandler.getLastName(); + web_login_key = gLoginHandler.getWebLoginKey(); // Show the login screen if we don't have everything show_connect_box = - gFirstname.empty() || gLastname.empty(); + firstname.empty() || lastname.empty() || web_login_key.isNull(); } else if(gSavedSettings.getLLSD("UserLoginInfo").size() == 3) { LLSD cmd_line_login = gSavedSettings.getLLSD("UserLoginInfo"); - gFirstname = cmd_line_login[0].asString(); - gLastname = cmd_line_login[1].asString(); + firstname = cmd_line_login[0].asString(); + lastname = cmd_line_login[1].asString(); LLMD5 pass((unsigned char*)cmd_line_login[2].asString().c_str()); char md5pass[33]; /* Flawfinder: ignore */ pass.hex_digest(md5pass); - gPassword = md5pass; + password = md5pass; #ifdef USE_VIEWER_AUTH show_connect_box = true; @@ -685,9 +705,9 @@ bool idle_startup() } else if (gSavedSettings.getBOOL("AutoLogin")) { - gFirstname = gSavedSettings.getString("FirstName"); - gLastname = gSavedSettings.getString("LastName"); - gPassword = LLStartUp::loadPasswordFromDisk(); + firstname = gSavedSettings.getString("FirstName"); + lastname = gSavedSettings.getString("LastName"); + password = LLStartUp::loadPasswordFromDisk(); gSavedSettings.setBOOL("RememberPassword", TRUE); #ifdef USE_VIEWER_AUTH @@ -700,9 +720,9 @@ bool idle_startup() { // if not automatically logging in, display login dialog // a valid grid is selected - gFirstname = gSavedSettings.getString("FirstName"); - gLastname = gSavedSettings.getString("LastName"); - gPassword = LLStartUp::loadPasswordFromDisk(); + firstname = gSavedSettings.getString("FirstName"); + lastname = gSavedSettings.getString("LastName"); + password = LLStartUp::loadPasswordFromDisk(); show_connect_box = true; } @@ -739,7 +759,7 @@ bool idle_startup() // Load all the name information out of the login view // NOTE: Hits "Attempted getFields with no login view shown" warning, since we don't // show the login view until login_show() is called below. - // LLPanelLogin::getFields(gFirstname, gLastname, gPassword); + // LLPanelLogin::getFields(firstname, lastname, password); if (gNoRender) { @@ -751,7 +771,7 @@ bool idle_startup() // Show the login dialog login_show(); // connect dialog is already shown, so fill in the names - LLPanelLogin::setFields( gFirstname, gLastname, gPassword); + LLPanelLogin::setFields( firstname, lastname, password); LLPanelLogin::giveFocus(); @@ -808,31 +828,41 @@ bool idle_startup() if (STATE_LOGIN_CLEANUP == LLStartUp::getStartupState()) { + //reset the values that could have come in from a slurl + if (!gLoginHandler.getWebLoginKey().isNull()) + { + firstname = gLoginHandler.getFirstName(); + lastname = gLoginHandler.getLastName(); + web_login_key = gLoginHandler.getWebLoginKey(); + } + if (show_connect_box) { // TODO if not use viewer auth // Load all the name information out of the login view - LLPanelLogin::getFields(&gFirstname, &gLastname, &gPassword); + LLPanelLogin::getFields(&firstname, &lastname, &password); // end TODO // HACK: Try to make not jump on login gKeyboard->resetKeys(); } - if (!gFirstname.empty() && !gLastname.empty()) + if (!firstname.empty() && !lastname.empty()) { - gSavedSettings.setString("FirstName", gFirstname); - gSavedSettings.setString("LastName", gLastname); + gSavedSettings.setString("FirstName", firstname); + gSavedSettings.setString("LastName", lastname); - LL_INFOS("AppInit") << "Attempting login as: " << gFirstname << " " << gLastname << LL_ENDL; - gDebugInfo["LoginName"] = gFirstname + " " + gLastname; + LL_INFOS("AppInit") << "Attempting login as: " << firstname << " " << lastname << LL_ENDL; + gDebugInfo["LoginName"] = firstname + " " + lastname; } // create necessary directories // *FIX: these mkdir's should error check - gDirUtilp->setLindenUserDir(gFirstname, gLastname); + gDirUtilp->setLindenUserDir(firstname, lastname); LLFile::mkdir(gDirUtilp->getLindenUserDir()); + LLLocationHistory::getInstance()->load(); + // Set PerAccountSettingsFile to the default value. gSavedSettings.setString("PerAccountSettingsFile", gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, @@ -861,7 +891,7 @@ bool idle_startup() gDirUtilp->setChatLogsDir(gSavedPerAccountSettings.getString("InstantMessageLogPath")); } - gDirUtilp->setPerAccountChatLogsDir(gFirstname, gLastname); + gDirUtilp->setPerAccountChatLogsDir(firstname, lastname); LLFile::mkdir(gDirUtilp->getChatLogsDir()); LLFile::mkdir(gDirUtilp->getPerAccountChatLogsDir()); @@ -882,6 +912,13 @@ bool idle_startup() if (show_connect_box) { + if ( LLPanelLogin::isGridComboDirty() ) + { + // User picked a grid from the popup, so clear the + // stored uris and they will be reacquired from the grid choice. + sAuthUris.clear(); + } + std::string location; LLPanelLogin::getLocation( location ); LLURLSimString::setString( location ); @@ -911,7 +948,7 @@ bool idle_startup() agent_location_id = START_LOCATION_ID_URL; // doesn't really matter what location_which is, since - // gAgentStartLookAt will be overwritten when the + // agent_start_look_at will be overwritten when the // UserLoginLocationReply arrives location_which = START_LOCATION_ID_LAST; } @@ -944,115 +981,594 @@ bool idle_startup() gVFS->pokeFiles(); + // skipping over STATE_UPDATE_CHECK because that just waits for input LLStartUp::setStartupState( STATE_LOGIN_AUTH_INIT ); return FALSE; } + if (STATE_UPDATE_CHECK == LLStartUp::getStartupState()) + { + // wait for user to give input via dialog box + return FALSE; + } + if(STATE_LOGIN_AUTH_INIT == LLStartUp::getStartupState()) { +//#define LL_MINIMIAL_REQUESTED_OPTIONS gDebugInfo["GridName"] = LLViewerLogin::getInstance()->getGridLabel(); - // Update progress status and the display loop. + // *Note: this is where gUserAuth used to be created. + requested_options.clear(); + requested_options.push_back("inventory-root"); + requested_options.push_back("inventory-skeleton"); + //requested_options.push_back("inventory-meat"); + //requested_options.push_back("inventory-skel-targets"); +#if (!defined LL_MINIMIAL_REQUESTED_OPTIONS) + if(FALSE == gSavedSettings.getBOOL("NoInventoryLibrary")) + { + requested_options.push_back("inventory-lib-root"); + requested_options.push_back("inventory-lib-owner"); + requested_options.push_back("inventory-skel-lib"); + // requested_options.push_back("inventory-meat-lib"); + } + + requested_options.push_back("initial-outfit"); + requested_options.push_back("gestures"); + requested_options.push_back("event_categories"); + requested_options.push_back("event_notifications"); + requested_options.push_back("classified_categories"); + //requested_options.push_back("inventory-targets"); + requested_options.push_back("buddy-list"); + requested_options.push_back("ui-config"); +#endif + requested_options.push_back("tutorial_setting"); + requested_options.push_back("login-flags"); + requested_options.push_back("global-textures"); + if(gSavedSettings.getBOOL("ConnectAsGod")) + { + gSavedSettings.setBOOL("UseDebugMenus", TRUE); + requested_options.push_back("god-connect"); + } + std::vector<std::string> uris; + LLViewerLogin::getInstance()->getLoginURIs(uris); + std::vector<std::string>::const_iterator iter, end; + for (iter = uris.begin(), end = uris.end(); iter != end; ++iter) + { + std::vector<std::string> rewritten; + rewritten = LLSRV::rewriteURI(*iter); + sAuthUris.insert(sAuthUris.end(), + rewritten.begin(), rewritten.end()); + } + sAuthUriNum = 0; + auth_method = "login_to_simulator"; + auth_desc = LLTrans::getString("LoginInProgress"); + LLStartUp::setStartupState( STATE_LOGIN_AUTHENTICATE ); + } + + if (STATE_LOGIN_AUTHENTICATE == LLStartUp::getStartupState()) + { + LL_DEBUGS("AppInit") << "STATE_LOGIN_AUTHENTICATE" << LL_ENDL; set_startup_status(progress, auth_desc, auth_message); progress += 0.02f; display_startup(); - - // Setting initial values... - if(gNoRender) + + std::stringstream start; + if (LLURLSimString::parse()) { - // HACK, skip optional updates if you're running drones - LLLoginInstance::getInstance()->setSkipOptionalUpdate(true); + // a startup URL was specified + std::stringstream unescaped_start; + unescaped_start << "uri:" + << LLURLSimString::sInstance.mSimName << "&" + << LLURLSimString::sInstance.mX << "&" + << LLURLSimString::sInstance.mY << "&" + << LLURLSimString::sInstance.mZ; + start << xml_escape_string(unescaped_start.str()); + } + else + { + start << gSavedSettings.getString("LoginLocation"); + } + + char hashed_mac_string[MD5HEX_STR_SIZE]; /* Flawfinder: ignore */ + LLMD5 hashed_mac; + hashed_mac.update( gMACAddress, MAC_ADDRESS_BYTES ); + hashed_mac.finalize(); + hashed_mac.hex_digest(hashed_mac_string); + + // TODO if statement here to use web_login_key + sAuthUriNum = llclamp(sAuthUriNum, 0, (S32)sAuthUris.size()-1); + LLUserAuth::getInstance()->authenticate( + sAuthUris[sAuthUriNum], + auth_method, + firstname, + lastname, + password, // web_login_key, + start.str(), + gSkipOptionalUpdate, + gAcceptTOS, + gAcceptCriticalMessage, + gLastExecEvent, + requested_options, + hashed_mac_string, + LLAppViewer::instance()->getSerialNumber()); + + // reset globals + gAcceptTOS = FALSE; + gAcceptCriticalMessage = FALSE; + LLStartUp::setStartupState( STATE_LOGIN_NO_DATA_YET ); + return FALSE; + } - LLLoginInstance::getInstance()->setUserInteraction(show_connect_box); - - // This call to LLLoginInstance::connect() starts the - // authentication process. - LLSD credentials; - credentials["first"] = gFirstname; - credentials["last"] = gLastname; - credentials["passwd"] = gPassword; - LLLoginInstance::getInstance()->connect(credentials); + if(STATE_LOGIN_NO_DATA_YET == LLStartUp::getStartupState()) + { + LL_DEBUGS("AppInit") << "STATE_LOGIN_NO_DATA_YET" << LL_ENDL; + // If we get here we have gotten past the potential stall + // in curl, so take "may appear frozen" out of progress bar. JC + auth_desc = LLTrans::getString("LoginInProgressNoFrozen"); + set_startup_status(progress, auth_desc, auth_message); + // Process messages to keep from dropping circuit. + LLMessageSystem* msg = gMessageSystem; + while (msg->checkAllMessages(gFrameCount, gServicePump)) + { + } + msg->processAcks(); + LLUserAuth::UserAuthcode error = LLUserAuth::getInstance()->authResponse(); + if(LLUserAuth::E_NO_RESPONSE_YET == error) + { + LL_DEBUGS("AppInit") << "waiting..." << LL_ENDL; + return FALSE; + } + LLStartUp::setStartupState( STATE_LOGIN_DOWNLOADING ); + progress += 0.01f; + set_startup_status(progress, auth_desc, auth_message); + return FALSE; + } + if(STATE_LOGIN_DOWNLOADING == LLStartUp::getStartupState()) + { + LL_DEBUGS("AppInit") << "STATE_LOGIN_DOWNLOADING" << LL_ENDL; + // Process messages to keep from dropping circuit. + LLMessageSystem* msg = gMessageSystem; + while (msg->checkAllMessages(gFrameCount, gServicePump)) + { + } + msg->processAcks(); + LLUserAuth::UserAuthcode error = LLUserAuth::getInstance()->authResponse(); + if(LLUserAuth::E_DOWNLOADING == error) + { + LL_DEBUGS("AppInit") << "downloading..." << LL_ENDL; + return FALSE; + } LLStartUp::setStartupState( STATE_LOGIN_PROCESS_RESPONSE ); + progress += 0.01f; + set_startup_status(progress, LLTrans::getString("LoginProcessingResponse"), auth_message); return FALSE; } - if(STATE_LOGIN_PROCESS_RESPONSE == LLStartUp::getStartupState()) + if(STATE_LOGIN_PROCESS_RESPONSE == LLStartUp::getStartupState()) { - bool transitionBackToLoginPanel = false; + LL_DEBUGS("AppInit") << "STATE_LOGIN_PROCESS_RESPONSE" << LL_ENDL; std::ostringstream emsg; - if(LLLoginInstance::getInstance()->authFailure()) - { - // Still have error conditions that may need some - // sort of handling. - emsg << "Login failed.\n"; - std::string reason_response = LLLoginInstance::getInstance()->getResponse("reason"); - std::string message_response = LLLoginInstance::getInstance()->getResponse("message"); - - if(!message_response.empty()) + bool quit = false; + bool update = false; + std::string login_response; + std::string reason_response; + std::string message_response; + bool successful_login = false; + LLUserAuth::UserAuthcode error = LLUserAuth::getInstance()->authResponse(); + // reset globals + gAcceptTOS = FALSE; + gAcceptCriticalMessage = FALSE; + switch(error) + { + case LLUserAuth::E_OK: + login_response = LLUserAuth::getInstance()->getResponse("login"); + if(login_response == "true") { - // XUI: fix translation for strings returned during login - // We need a generic table for translations - std::string big_reason = LLAgent::sTeleportErrorMessages[ message_response ]; - if ( big_reason.size() == 0 ) + // Yay, login! + successful_login = true; + } + else if(login_response == "indeterminate") + { + LL_INFOS("AppInit") << "Indeterminate login..." << LL_ENDL; + sAuthUris = LLSRV::rewriteURI(LLUserAuth::getInstance()->getResponse("next_url")); + sAuthUriNum = 0; + auth_method = LLUserAuth::getInstance()->getResponse("next_method"); + auth_message = LLUserAuth::getInstance()->getResponse("message"); + if(auth_method.substr(0, 5) == "login") { - emsg << message_response; + auth_desc.assign(LLTrans::getString("LoginAuthenticating")); } else { - emsg << big_reason; + auth_desc.assign(LLTrans::getString("LoginMaintenance")); } + // ignoring the duration & options array for now. + // Go back to authenticate. + LLStartUp::setStartupState( STATE_LOGIN_AUTHENTICATE ); + return FALSE; } + else + { + emsg << "Login failed.\n"; + reason_response = LLUserAuth::getInstance()->getResponse("reason"); + message_response = LLUserAuth::getInstance()->getResponse("message"); - if(reason_response == "key") + if (!message_response.empty()) + { + // XUI: fix translation for strings returned during login + // We need a generic table for translations + std::string big_reason = LLAgent::sTeleportErrorMessages[ message_response ]; + if ( big_reason.size() == 0 ) + { + emsg << message_response; + } + else + { + emsg << big_reason; + } + } + + if(reason_response == "tos") + { + if (show_connect_box) + { + LL_DEBUGS("AppInit") << "Need tos agreement" << LL_ENDL; + LLStartUp::setStartupState( STATE_UPDATE_CHECK ); + LLFloaterTOS* tos_dialog = LLFloaterTOS::show(LLFloaterTOS::TOS_TOS, + message_response); + tos_dialog->startModal(); + // LLFloaterTOS deletes itself. + return false; + } + else + { + quit = true; + } + } + if(reason_response == "critical") + { + if (show_connect_box) + { + LL_DEBUGS("AppInit") << "Need critical message" << LL_ENDL; + LLStartUp::setStartupState( STATE_UPDATE_CHECK ); + LLFloaterTOS* tos_dialog = LLFloaterTOS::show(LLFloaterTOS::TOS_CRITICAL_MESSAGE, + message_response); + tos_dialog->startModal(); + // LLFloaterTOS deletes itself. + return false; + } + else + { + quit = true; + } + } + if(reason_response == "key") + { + // Couldn't login because user/password is wrong + // Clear the password + password = ""; + } + if(reason_response == "update") + { + auth_message = LLUserAuth::getInstance()->getResponse("message"); + update = true; + } + if(reason_response == "optional") + { + LL_DEBUGS("AppInit") << "Login got optional update" << LL_ENDL; + auth_message = LLUserAuth::getInstance()->getResponse("message"); + if (show_connect_box) + { + update_app(FALSE, auth_message); + LLStartUp::setStartupState( STATE_UPDATE_CHECK ); + gSkipOptionalUpdate = TRUE; + return false; + } + } + } + break; + case LLUserAuth::E_COULDNT_RESOLVE_HOST: + case LLUserAuth::E_SSL_PEER_CERTIFICATE: + case LLUserAuth::E_UNHANDLED_ERROR: + case LLUserAuth::E_SSL_CACERT: + case LLUserAuth::E_SSL_CONNECT_ERROR: + default: + if (sAuthUriNum >= (int) sAuthUris.size() - 1) { - // Couldn't login because user/password is wrong - // Clear the password - gPassword = ""; + emsg << "Unable to connect to " << LLAppViewer::instance()->getSecondLifeTitle() << ".\n"; + emsg << LLUserAuth::getInstance()->errorMessage(); + } else { + sAuthUriNum++; + std::ostringstream s; + LLStringUtil::format_map_t args; + args["[NUMBER]"] = llformat("%d", sAuthUriNum + 1); + auth_desc = LLTrans::getString("LoginAttempt", args); + LLStartUp::setStartupState( STATE_LOGIN_AUTHENTICATE ); + return FALSE; } + break; + } - if(reason_response == "update" - || reason_response == "optional") + if (update || gSavedSettings.getBOOL("ForceMandatoryUpdate")) + { + gSavedSettings.setBOOL("ForceMandatoryUpdate", FALSE); + update_app(TRUE, auth_message); + LLStartUp::setStartupState( STATE_UPDATE_CHECK ); + return false; + } + + // Version update and we're not showing the dialog + if(quit) + { + LLUserAuth::getInstance()->reset(); + LLAppViewer::instance()->forceQuit(); + return false; + } + + if(successful_login) + { + std::string text; + text = LLUserAuth::getInstance()->getResponse("udp_blacklist"); + if(!text.empty()) { - // In the case of a needed update, quit. - // Its either downloading or declined. - // If optional was skipped this case shouldn't - // be reached. - LLLoginInstance::getInstance()->disconnect(); - LLAppViewer::instance()->forceQuit(); + apply_udp_blacklist(text); + } + + // unpack login data needed by the application + text = LLUserAuth::getInstance()->getResponse("agent_id"); + if(!text.empty()) gAgentID.set(text); + gDebugInfo["AgentID"] = text; + + text = LLUserAuth::getInstance()->getResponse("session_id"); + if(!text.empty()) gAgentSessionID.set(text); + gDebugInfo["SessionID"] = text; + + text = LLUserAuth::getInstance()->getResponse("secure_session_id"); + if(!text.empty()) gAgent.mSecureSessionID.set(text); + + text = LLUserAuth::getInstance()->getResponse("first_name"); + if(!text.empty()) + { + // Remove quotes from string. Login.cgi sends these to force + // names that look like numbers into strings. + firstname.assign(text); + LLStringUtil::replaceChar(firstname, '"', ' '); + LLStringUtil::trim(firstname); + } + text = LLUserAuth::getInstance()->getResponse("last_name"); + if(!text.empty()) lastname.assign(text); + gSavedSettings.setString("FirstName", firstname); + gSavedSettings.setString("LastName", lastname); + + if (gSavedSettings.getBOOL("RememberPassword")) + { + // Successful login means the password is valid, so save it. + LLStartUp::savePasswordToDisk(password); } else { - transitionBackToLoginPanel = true; + // Don't leave password from previous session sitting around + // during this login session. + LLStartUp::deletePasswordFromDisk(); } - } - else if(LLLoginInstance::getInstance()->authSuccess()) - { - if(process_login_success_response()) + + // this is their actual ability to access content + text = LLUserAuth::getInstance()->getResponse("agent_access_max"); + if (!text.empty()) + { + // agent_access can be 'A', 'M', and 'PG'. + gAgent.setMaturity(text[0]); + } + + // this is the value of their preference setting for that content + // which will always be <= agent_access_max + text = LLUserAuth::getInstance()->getResponse("agent_region_access"); + if (!text.empty()) + { + int preferredMaturity = LLAgent::convertTextToMaturity(text[0]); + gSavedSettings.setU32("PreferredMaturity", preferredMaturity); + } + // During the AO transition, this flag will be true. Then the flag will + // go away. After the AO transition, this code and all the code that + // uses it can be deleted. + text = LLUserAuth::getInstance()->getResponse("ao_transition"); + if (!text.empty()) + { + if (text == "1") + { + gAgent.setAOTransition(); + } + } + + text = LLUserAuth::getInstance()->getResponse("start_location"); + if(!text.empty()) agent_start_location.assign(text); + text = LLUserAuth::getInstance()->getResponse("circuit_code"); + if(!text.empty()) + { + gMessageSystem->mOurCircuitCode = strtoul(text.c_str(), NULL, 10); + } + std::string sim_ip_str = LLUserAuth::getInstance()->getResponse("sim_ip"); + std::string sim_port_str = LLUserAuth::getInstance()->getResponse("sim_port"); + if(!sim_ip_str.empty() && !sim_port_str.empty()) + { + U32 sim_port = strtoul(sim_port_str.c_str(), NULL, 10); + first_sim.set(sim_ip_str, sim_port); + if (first_sim.isOk()) + { + gMessageSystem->enableCircuit(first_sim, TRUE); + } + } + std::string region_x_str = LLUserAuth::getInstance()->getResponse("region_x"); + std::string region_y_str = LLUserAuth::getInstance()->getResponse("region_y"); + if(!region_x_str.empty() && !region_y_str.empty()) + { + U32 region_x = strtoul(region_x_str.c_str(), NULL, 10); + U32 region_y = strtoul(region_y_str.c_str(), NULL, 10); + first_sim_handle = to_region_handle(region_x, region_y); + } + + const std::string look_at_str = LLUserAuth::getInstance()->getResponse("look_at"); + if (!look_at_str.empty()) + { + size_t len = look_at_str.size(); + LLMemoryStream mstr((U8*)look_at_str.c_str(), len); + LLSD sd = LLSDSerialize::fromNotation(mstr, len); + agent_start_look_at = ll_vector3_from_sd(sd); + } + + text = LLUserAuth::getInstance()->getResponse("seed_capability"); + if (!text.empty()) first_sim_seed_cap = text; + + text = LLUserAuth::getInstance()->getResponse("seconds_since_epoch"); + if(!text.empty()) + { + U32 server_utc_time = strtoul(text.c_str(), NULL, 10); + if(server_utc_time) + { + time_t now = time(NULL); + gUTCOffset = (server_utc_time - now); + } + } + + std::string home_location = LLUserAuth::getInstance()->getResponse("home"); + if(!home_location.empty()) { - // Pass the user information to the voice chat server interface. - gVoiceClient->userAuthorized(gFirstname, gLastname, gAgentID); - LLStartUp::setStartupState( STATE_WORLD_INIT); + size_t len = home_location.size(); + LLMemoryStream mstr((U8*)home_location.c_str(), len); + LLSD sd = LLSDSerialize::fromNotation(mstr, len); + S32 region_x = sd["region_handle"][0].asInteger(); + S32 region_y = sd["region_handle"][1].asInteger(); + U64 region_handle = to_region_handle(region_x, region_y); + LLVector3 position = ll_vector3_from_sd(sd["position"]); + gAgent.setHomePosRegion(region_handle, position); + } + + gAgent.mMOTD.assign(LLUserAuth::getInstance()->getResponse("message")); + LLUserAuth::options_t options; + if(LLUserAuth::getInstance()->getOptions("inventory-root", options)) + { + LLUserAuth::response_t::iterator it; + it = options[0].find("folder_id"); + if(it != options[0].end()) + { + gAgent.getInventoryRootID().set((*it).second); + //gInventory.mock(gAgent.getInventoryRootID()); + } + } + + options.clear(); + if(LLUserAuth::getInstance()->getOptions("login-flags", options)) + { + LLUserAuth::response_t::iterator it; + LLUserAuth::response_t::iterator no_flag = options[0].end(); + it = options[0].find("ever_logged_in"); + if(it != no_flag) + { + if((*it).second == "N") gAgent.setFirstLogin(TRUE); + else gAgent.setFirstLogin(FALSE); + } + it = options[0].find("stipend_since_login"); + if(it != no_flag) + { + if((*it).second == "Y") stipend_since_login = true; + } + it = options[0].find("gendered"); + if(it != no_flag) + { + if((*it).second == "Y") gAgent.setGenderChosen(TRUE); + } + it = options[0].find("daylight_savings"); + if(it != no_flag) + { + if((*it).second == "Y") gPacificDaylightTime = TRUE; + else gPacificDaylightTime = FALSE; + } + + //setup map of datetime strings to codes and slt & local time offset from utc + LLStringOps::setupDatetimeInfo (gPacificDaylightTime); + } + options.clear(); + if (LLUserAuth::getInstance()->getOptions("initial-outfit", options) + && !options.empty()) + { + LLUserAuth::response_t::iterator it; + LLUserAuth::response_t::iterator it_end = options[0].end(); + it = options[0].find("folder_name"); + if(it != it_end) + { + // Initial outfit is a folder in your inventory, + // must be an exact folder-name match. + sInitialOutfit = (*it).second; + } + it = options[0].find("gender"); + if (it != it_end) + { + sInitialOutfitGender = (*it).second; + } + } + + options.clear(); + if(LLUserAuth::getInstance()->getOptions("global-textures", options)) + { + // Extract sun and moon texture IDs. These are used + // in the LLVOSky constructor, but I can't figure out + // how to pass them in. JC + LLUserAuth::response_t::iterator it; + LLUserAuth::response_t::iterator no_texture = options[0].end(); + it = options[0].find("sun_texture_id"); + if(it != no_texture) + { + gSunTextureID.set((*it).second); + } + it = options[0].find("moon_texture_id"); + if(it != no_texture) + { + gMoonTextureID.set((*it).second); + } + it = options[0].find("cloud_texture_id"); + if(it != no_texture) + { + gCloudTextureID.set((*it).second); + } + } + + + // JC: gesture loading done below, when we have an asset system + // in place. Don't delete/clear user_credentials until then. + + if(gAgentID.notNull() + && gAgentSessionID.notNull() + && gMessageSystem->mOurCircuitCode + && first_sim.isOk() + && gAgent.getInventoryRootID().notNull()) + { + LLStartUp::setStartupState( STATE_WORLD_INIT ); } else { - transitionBackToLoginPanel = false; + if (gNoRender) + { + LL_WARNS("AppInit") << "Bad login - missing return values" << LL_ENDL; + LL_WARNS("AppInit") << emsg << LL_ENDL; + exit(0); + } + // Bounce back to the login screen. + LLSD args; + args["ERROR_MESSAGE"] = emsg.str(); + LLNotifications::instance().add("ErrorMessage", args, LLSD(), login_alert_done); + reset_login(); + gSavedSettings.setBOOL("AutoLogin", FALSE); + show_connect_box = true; } + + // Pass the user information to the voice chat server interface. + gVoiceClient->userAuthorized(firstname, lastname, gAgentID); } - else - { - // Still waiting for response. - // *TODO:Mani - Actually check for login progress. - // If we get here we have gotten past the potential stall - // in curl, so take "may appear frozen" out of progress bar. JC - auth_desc = LLTrans::getString("LoginInProgressNoFrozen"); - set_startup_status(progress, auth_desc, auth_message); - } - - if(transitionBackToLoginPanel) + else // if(successful_login) { if (gNoRender) { @@ -1060,12 +1576,11 @@ bool idle_startup() LL_WARNS("AppInit") << emsg << LL_ENDL; exit(0); } - // Bounce back to the login screen. LLSD args; args["ERROR_MESSAGE"] = emsg.str(); LLNotifications::instance().add("ErrorMessage", args, LLSD(), login_alert_done); - reset_login(); // calls LLStartUp::setStartupState( STATE_LOGIN_SHOW ); + reset_login(); gSavedSettings.setBOOL("AutoLogin", FALSE); show_connect_box = true; } @@ -1107,7 +1622,6 @@ bool idle_startup() LLWaterParamManager::initClass(); LLViewerObject::initVOClasses(); - LLWearable::initClass(); // Initialize all our tools. Must be done after saved settings loaded. // NOTE: This also is where gToolMgr used to be instantiated before being turned into a singleton. @@ -1129,14 +1643,14 @@ bool idle_startup() // This is necessary because creating objects before this is set will result in a // bad mPositionAgent cache. - gAgent.initOriginGlobal(from_region_handle(gFirstSimHandle)); + gAgent.initOriginGlobal(from_region_handle(first_sim_handle)); - LLWorld::getInstance()->addRegion(gFirstSimHandle, gFirstSim); + LLWorld::getInstance()->addRegion(first_sim_handle, first_sim); - LLViewerRegion *regionp = LLWorld::getInstance()->getRegionFromHandle(gFirstSimHandle); + LLViewerRegion *regionp = LLWorld::getInstance()->getRegionFromHandle(first_sim_handle); LL_INFOS("AppInit") << "Adding initial simulator " << regionp->getOriginGlobal() << LL_ENDL; - regionp->setSeedCapability(gFirstSimSeedCap); + regionp->setSeedCapability(first_sim_seed_cap); LL_DEBUGS("AppInit") << "Waiting for seed grant ...." << LL_ENDL; // Set agent's initial region to be the one we just created. @@ -1195,10 +1709,6 @@ bool idle_startup() gLoginMenuBarView->setVisible( FALSE ); gLoginMenuBarView->setEnabled( FALSE ); - // ProductEngine: Should be able to move this code near where we call loadSettingsFromDirectory() - LLTeleportHistory::getInstance()->load(); // *TODO: find a better place for doing this - LLLocationHistory::getInstance()->load(); // *TODO: find a better place for doing this - LLFloaterReg::showInitialVisibleInstances(); if (gSavedSettings.getBOOL("ShowCameraControls")) @@ -1289,15 +1799,8 @@ bool idle_startup() // Make sure agent knows correct aspect ratio // FOV limits depend upon aspect ratio so this needs to happen before initializing the FOV below - LLViewerCamera::getInstance()->setViewHeightInPixels(gViewerWindow->getWindowDisplayHeight()); - if (gViewerWindow->mWindow->getFullscreen()) - { - LLViewerCamera::getInstance()->setAspect(gViewerWindow->getDisplayAspectRatio()); - } - else - { - LLViewerCamera::getInstance()->setAspect( (F32) gViewerWindow->getWindowWidth() / (F32) gViewerWindow->getWindowHeight()); - } + LLViewerCamera::getInstance()->setViewHeightInPixels(gViewerWindow->getWorldViewHeight()); + LLViewerCamera::getInstance()->setAspect(gViewerWindow->getWorldViewAspectRatio()); // Initialize FOV LLViewerCamera::getInstance()->setDefaultFOV(gSavedSettings.getF32("CameraAngle")); @@ -1307,7 +1810,7 @@ bool idle_startup() // the coordinates handed to us to fit in the local region. gAgent.setPositionAgent(agent_start_position_region); - gAgent.resetAxes(gAgentStartLookAt); + gAgent.resetAxes(agent_start_look_at); gAgent.stopCameraAnimation(); gAgent.resetCamera(); @@ -1346,18 +1849,18 @@ bool idle_startup() LL_WARNS("AppInit") << "Attempting to connect to simulator with a zero circuit code!" << LL_ENDL; } - gUseCircuitCallbackCalled = false; + gUseCircuitCallbackCalled = FALSE; - msg->enableCircuit(gFirstSim, TRUE); + msg->enableCircuit(first_sim, TRUE); // now, use the circuit info to tell simulator about us! - LL_INFOS("AppInit") << "viewer: UserLoginLocationReply() Enabling " << gFirstSim << " with code " << msg->mOurCircuitCode << LL_ENDL; + LL_INFOS("AppInit") << "viewer: UserLoginLocationReply() Enabling " << first_sim << " with code " << msg->mOurCircuitCode << LL_ENDL; msg->newMessageFast(_PREHASH_UseCircuitCode); msg->nextBlockFast(_PREHASH_CircuitCode); msg->addU32Fast(_PREHASH_Code, msg->mOurCircuitCode); msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); msg->addUUIDFast(_PREHASH_ID, gAgent.getID()); msg->sendReliable( - gFirstSim, + first_sim, MAX_TIMEOUT_COUNT, FALSE, TIMEOUT_SECONDS, @@ -1468,113 +1971,105 @@ bool idle_startup() LLAgentLanguage::update(); // unpack thin inventory - LLSD response = LLLoginInstance::getInstance()->getResponse(); + LLUserAuth::options_t options; + options.clear(); //bool dump_buffer = false; - - LLSD inv_lib_root = response["inventory-lib-root"]; - if(inv_lib_root.isDefined()) + + if(LLUserAuth::getInstance()->getOptions("inventory-lib-root", options) + && !options.empty()) { // should only be one - LLSD id = inv_lib_root[0]["folder_id"]; - if(id.isDefined()) + LLUserAuth::response_t::iterator it; + it = options[0].find("folder_id"); + if(it != options[0].end()) { - gInventoryLibraryRoot = id.asUUID(); + gInventoryLibraryRoot.set((*it).second); } } - - LLSD inv_lib_owner = response["inventory-lib-owner"]; - if(inv_lib_owner.isDefined()) + options.clear(); + if(LLUserAuth::getInstance()->getOptions("inventory-lib-owner", options) + && !options.empty()) { // should only be one - LLSD id = inv_lib_owner[0]["agent_id"]; - if(id.isDefined()) + LLUserAuth::response_t::iterator it; + it = options[0].find("agent_id"); + if(it != options[0].end()) { - gInventoryLibraryOwner = id.asUUID(); + gInventoryLibraryOwner.set((*it).second); } } - - LLSD inv_skel_lib = response["inventory-skel-lib"]; - if(inv_skel_lib.isDefined() && gInventoryLibraryOwner.notNull()) + options.clear(); + if(LLUserAuth::getInstance()->getOptions("inventory-skel-lib", options) + && gInventoryLibraryOwner.notNull()) { - if(!gInventory.loadSkeleton(inv_skel_lib, gInventoryLibraryOwner)) + if(!gInventory.loadSkeleton(options, gInventoryLibraryOwner)) { LL_WARNS("AppInit") << "Problem loading inventory-skel-lib" << LL_ENDL; } } - - LLSD inv_skeleton = response["inventory-skeleton"]; - if(inv_skeleton.isDefined()) + options.clear(); + if(LLUserAuth::getInstance()->getOptions("inventory-skeleton", options)) { - if(!gInventory.loadSkeleton(inv_skeleton, gAgent.getID())) + if(!gInventory.loadSkeleton(options, gAgent.getID())) { LL_WARNS("AppInit") << "Problem loading inventory-skel-targets" << LL_ENDL; } } - LLSD buddy_list = response["buddy-list"]; - if(buddy_list.isDefined()) + options.clear(); + if(LLUserAuth::getInstance()->getOptions("buddy-list", options)) { + LLUserAuth::options_t::iterator it = options.begin(); + LLUserAuth::options_t::iterator end = options.end(); LLAvatarTracker::buddy_map_t list; LLUUID agent_id; S32 has_rights = 0, given_rights = 0; - for(LLSD::array_const_iterator it = buddy_list.beginArray(), - end = buddy_list.endArray(); it != end; ++it) + for (; it != end; ++it) { - LLSD buddy_id = (*it)["buddy_id"]; - if(buddy_id.isDefined()) + LLUserAuth::response_t::const_iterator option_it; + option_it = (*it).find("buddy_id"); + if(option_it != (*it).end()) { - agent_id = buddy_id.asUUID(); + agent_id.set((*option_it).second); } - - LLSD buddy_rights_has = (*it)["buddy_rights_has"]; - if(buddy_rights_has.isDefined()) + option_it = (*it).find("buddy_rights_has"); + if(option_it != (*it).end()) { - has_rights = buddy_rights_has.asInteger(); + has_rights = atoi((*option_it).second.c_str()); } - - LLSD buddy_rights_given = (*it)["buddy_rights_given"]; - if(buddy_rights_given.isDefined()) + option_it = (*it).find("buddy_rights_given"); + if(option_it != (*it).end()) { - given_rights = buddy_rights_given.asInteger(); + given_rights = atoi((*option_it).second.c_str()); } - list[agent_id] = new LLRelationship(given_rights, has_rights, false); } LLAvatarTracker::instance().addBuddyList(list); } - LLSD ui_config = response["ui-config"]; - if(ui_config.isDefined()) - { - for(LLSD::array_const_iterator it = ui_config.beginArray(), - end = ui_config.endArray(); it != end; ++it) - { - LLSD allow_first_life = (*it)["allow_first_life"]; - if(allow_first_life.asString() == "Y") - { - LLPanelAvatar::sAllowFirstLife = TRUE; - } - } - } + options.clear(); bool show_hud = false; - LLSD tutorial_setting = response["tutorial_setting"]; - if(tutorial_setting.isDefined()) + if(LLUserAuth::getInstance()->getOptions("tutorial_setting", options)) { - for(LLSD::array_const_iterator it = tutorial_setting.beginArray(), - end = tutorial_setting.endArray(); it != end; ++it) + LLUserAuth::options_t::iterator it = options.begin(); + LLUserAuth::options_t::iterator end = options.end(); + for (; it != end; ++it) { - LLSD tutorial_url = (*it)["tutorial_url"]; - if(tutorial_url.isDefined()) + LLUserAuth::response_t::const_iterator option_it; + option_it = (*it).find("tutorial_url"); + if(option_it != (*it).end()) { // Tutorial floater will append language code - gSavedSettings.setString("TutorialURL", tutorial_url.asString()); + gSavedSettings.setString("TutorialURL", option_it->second); } - - LLSD use_tutorial = (*it)["use_tutorial"]; - if(use_tutorial.asString() == "true") + option_it = (*it).find("use_tutorial"); + if(option_it != (*it).end()) { - show_hud = true; + if (option_it->second == "true") + { + show_hud = true; + } } } } @@ -1587,22 +2082,19 @@ bool idle_startup() LLFloaterHUD::showHUD(); } - LLSD event_categories = response["event_categories"]; - if(event_categories.isDefined()) + options.clear(); + if(LLUserAuth::getInstance()->getOptions("event_categories", options)) { - LLEventInfo::loadCategories(event_categories); + LLEventInfo::loadCategories(options); } - - LLSD event_notifications = response["event_notifications"]; - if(event_notifications.isDefined()) + if(LLUserAuth::getInstance()->getOptions("event_notifications", options)) { - gEventNotifier.load(event_notifications); + gEventNotifier.load(options); } - - LLSD classified_categories = response["classified_categories"]; - if(classified_categories.isDefined()) + options.clear(); + if(LLUserAuth::getInstance()->getOptions("classified_categories", options)) { - LLClassifiedInfo::loadCategories(classified_categories); + LLClassifiedInfo::loadCategories(options); } @@ -1659,7 +2151,7 @@ bool idle_startup() // This is actually a pessimistic computation, because TCP may not have enough // time to ramp up on the (small) default inventory file to truly measure max // bandwidth. JC - F64 rate_bps = LLLoginInstance::getInstance()->getLastTransferRateBPS(); + F64 rate_bps = LLUserAuth::getInstance()->getLastTransferRateBPS(); const F32 FAST_RATE_BPS = 600.f * 1024.f; const F32 FASTER_RATE_BPS = 750.f * 1024.f; F32 max_bandwidth = gViewerThrottle.getMaxBandwidth(); @@ -1706,20 +2198,34 @@ bool idle_startup() // JC: Initialize "active" gestures. This may also trigger // many gesture downloads, if this is the user's first // time on this machine or -purge has been run. - LLSD gesture_options - = LLLoginInstance::getInstance()->getResponse("gestures"); - if (gesture_options.isDefined()) + LLUserAuth::options_t gesture_options; + if (LLUserAuth::getInstance()->getOptions("gestures", gesture_options)) { LL_DEBUGS("AppInit") << "Gesture Manager loading " << gesture_options.size() << LL_ENDL; std::vector<LLUUID> item_ids; - for(LLSD::array_const_iterator resp_it = gesture_options.beginArray(), - end = gesture_options.endArray(); resp_it != end; ++resp_it) + LLUserAuth::options_t::iterator resp_it; + for (resp_it = gesture_options.begin(); + resp_it != gesture_options.end(); + ++resp_it) { - // If the id is not specifed in the LLSD, - // the LLSD operator[]() will return a null LLUUID. - LLUUID item_id = (*resp_it)["item_id"]; - LLUUID asset_id = (*resp_it)["asset_id"]; + const LLUserAuth::response_t& response = *resp_it; + LLUUID item_id; + LLUUID asset_id; + LLUserAuth::response_t::const_iterator option_it; + + option_it = response.find("item_id"); + if (option_it != response.end()) + { + const std::string& uuid_string = (*option_it).second; + item_id.set(uuid_string); + } + option_it = response.find("asset_id"); + if (option_it != response.end()) + { + const std::string& uuid_string = (*option_it).second; + asset_id.set(uuid_string); + } if (item_id.notNull() && asset_id.notNull()) { @@ -1775,8 +2281,8 @@ bool idle_startup() if (!gAgent.isFirstLogin()) { bool url_ok = LLURLSimString::sInstance.parse(); - if ((url_ok && gAgentStartLocation == "url") || - (!url_ok && ((gAgentStartLocation == gSavedSettings.getString("LoginLocation"))))) + if ((url_ok && agent_start_location == "url") || + (!url_ok && ((agent_start_location == gSavedSettings.getString("LoginLocation"))))) { // Start location is OK // Disabled code to restore camera location and focus if logging in to default location @@ -1818,7 +2324,7 @@ bool idle_startup() LLInventoryModel::findLostItems(); //DEV-10530. do cleanup. remove at some later date. jan-2009 - LLPrefsIM::cleanupBadSetting(); + LLFloaterPreference::cleanupBadSetting(); LLStartUp::setStartupState( STATE_PRECACHE ); timeout.reset(); @@ -1926,7 +2432,7 @@ bool idle_startup() else { // OK to just get the wearables - if ( gAgent.areWearablesLoaded() ) + if ( gAgentWearables.areWearablesLoaded() ) { // We have our clothing, proceed. //llinfos << "wearables loaded" << llendl; @@ -1970,7 +2476,7 @@ bool idle_startup() } // Start automatic replay if the flag is set. - if (gSavedSettings.getBOOL("StatsAutoRun")) + if (gSavedSettings.getBOOL("StatsAutoRun") || LLAgentPilot::sReplaySession) { LLUUID id; LL_DEBUGS("AppInit") << "Starting automatic playback" << LL_ENDL; @@ -1987,10 +2493,8 @@ bool idle_startup() // then the data is cached for the viewer's lifetime) LLProductInfoRequestManager::instance(); - // *FIX:Mani - What do I do here? - // Need we really clear the Auth response data? // Clean up the userauth stuff. - // LLUserAuth::getInstance()->reset(); + LLUserAuth::getInstance()->reset(); LLStartUp::setStartupState( STATE_STARTED ); @@ -2011,6 +2515,9 @@ bool idle_startup() LLAppViewer::instance()->handleLoginComplete(); + // reset timers now that we are running "logged in" logic + LLFastTimer::reset(); + return TRUE; } @@ -2275,6 +2782,194 @@ bool login_alert_status(const LLSD& notification, const LLSD& response) return false; } +void update_app(BOOL mandatory, const std::string& auth_msg) +{ + // store off config state, as we might quit soon + gSavedSettings.saveToFile(gSavedSettings.getString("ClientSettingsFile"), TRUE); + gSavedSkinSettings.saveToFile(gSavedSettings.getString("SkinningSettingsFile"), TRUE); + std::ostringstream message; + + std::string msg; + if (!auth_msg.empty()) + { + msg = "("+ auth_msg + ") \n"; + } + + LLSD args; + args["MESSAGE"] = msg; + + LLSD payload; + payload["mandatory"] = mandatory; + +/* + We're constructing one of the following 6 strings here: + "DownloadWindowsMandatory" + "DownloadWindowsReleaseForDownload" + "DownloadWindows" + "DownloadMacMandatory" + "DownloadMacReleaseForDownload" + "DownloadMac" + + I've called them out explicitly in this comment so that they can be grepped for. + + Also, we assume that if we're not Windows we're Mac. If we ever intend to support + Linux with autoupdate, this should be an explicit #elif LL_DARWIN, but + we'd rather deliver the wrong message than no message, so until Linux is supported + we'll leave it alone. + */ + std::string notification_name = "Download"; + +#if LL_WINDOWS + notification_name += "Windows"; +#else + notification_name += "Mac"; +#endif + + if (mandatory) + { + notification_name += "Mandatory"; + } + else + { +#if LL_RELEASE_FOR_DOWNLOAD + notification_name += "ReleaseForDownload"; +#endif + } + + LLNotifications::instance().add(notification_name, args, payload, update_dialog_callback); + +} + +bool update_dialog_callback(const LLSD& notification, const LLSD& response) +{ + S32 option = LLNotification::getSelectedOption(notification, response); + std::string update_exe_path; + bool mandatory = notification["payload"]["mandatory"].asBoolean(); + +#if !LL_RELEASE_FOR_DOWNLOAD + if (option == 2) + { + LLStartUp::setStartupState( STATE_LOGIN_AUTH_INIT ); + return false; + } +#endif + + if (option == 1) + { + // ...user doesn't want to do it + if (mandatory) + { + LLAppViewer::instance()->forceQuit(); + // Bump them back to the login screen. + //reset_login(); + } + else + { + LLStartUp::setStartupState( STATE_LOGIN_AUTH_INIT ); + } + return false; + } + + LLSD query_map = LLSD::emptyMap(); + // *TODO place os string in a global constant +#if LL_WINDOWS + query_map["os"] = "win"; +#elif LL_DARWIN + query_map["os"] = "mac"; +#elif LL_LINUX + query_map["os"] = "lnx"; +#elif LL_SOLARIS + query_map["os"] = "sol"; +#endif + // *TODO change userserver to be grid on both viewer and sim, since + // userserver no longer exists. + query_map["userserver"] = LLViewerLogin::getInstance()->getGridLabel(); + query_map["channel"] = gSavedSettings.getString("VersionChannelName"); + // *TODO constantize this guy + // *NOTE: This URL is also used in win_setup/lldownloader.cpp + LLURI update_url = LLURI::buildHTTP("secondlife.com", 80, "update.php", query_map); + + if(LLAppViewer::sUpdaterInfo) + { + delete LLAppViewer::sUpdaterInfo ; + } + LLAppViewer::sUpdaterInfo = new LLAppViewer::LLUpdaterInfo() ; + +#if LL_WINDOWS + LLAppViewer::sUpdaterInfo->mUpdateExePath = gDirUtilp->getTempFilename(); + if (LLAppViewer::sUpdaterInfo->mUpdateExePath.empty()) + { + delete LLAppViewer::sUpdaterInfo ; + LLAppViewer::sUpdaterInfo = NULL ; + + // We're hosed, bail + LL_WARNS("AppInit") << "LLDir::getTempFilename() failed" << LL_ENDL; + LLAppViewer::instance()->forceQuit(); + return false; + } + + LLAppViewer::sUpdaterInfo->mUpdateExePath += ".exe"; + + std::string updater_source = gDirUtilp->getAppRODataDir(); + updater_source += gDirUtilp->getDirDelimiter(); + updater_source += "updater.exe"; + + LL_DEBUGS("AppInit") << "Calling CopyFile source: " << updater_source + << " dest: " << LLAppViewer::sUpdaterInfo->mUpdateExePath + << LL_ENDL; + + + if (!CopyFileA(updater_source.c_str(), LLAppViewer::sUpdaterInfo->mUpdateExePath.c_str(), FALSE)) + { + delete LLAppViewer::sUpdaterInfo ; + LLAppViewer::sUpdaterInfo = NULL ; + + LL_WARNS("AppInit") << "Unable to copy the updater!" << LL_ENDL; + LLAppViewer::instance()->forceQuit(); + return false; + } + + // if a sim name was passed in via command line parameter (typically through a SLURL) + if ( LLURLSimString::sInstance.mSimString.length() ) + { + // record the location to start at next time + gSavedSettings.setString( "NextLoginLocation", LLURLSimString::sInstance.mSimString ); + }; + + LLAppViewer::sUpdaterInfo->mParams << "-url \"" << update_url.asString() << "\""; + + LL_DEBUGS("AppInit") << "Calling updater: " << LLAppViewer::sUpdaterInfo->mUpdateExePath << " " << LLAppViewer::sUpdaterInfo->mParams.str() << LL_ENDL; + + //Explicitly remove the marker file, otherwise we pass the lock onto the child process and things get weird. + LLAppViewer::instance()->removeMarkerFile(); // In case updater fails + +#elif LL_DARWIN + // if a sim name was passed in via command line parameter (typically through a SLURL) + if ( LLURLSimString::sInstance.mSimString.length() ) + { + // record the location to start at next time + gSavedSettings.setString( "NextLoginLocation", LLURLSimString::sInstance.mSimString ); + }; + + LLAppViewer::sUpdaterInfo->mUpdateExePath = "'"; + LLAppViewer::sUpdaterInfo->mUpdateExePath += gDirUtilp->getAppRODataDir(); + LLAppViewer::sUpdaterInfo->mUpdateExePath += "/mac-updater.app/Contents/MacOS/mac-updater' -url \""; + LLAppViewer::sUpdaterInfo->mUpdateExePath += update_url.asString(); + LLAppViewer::sUpdaterInfo->mUpdateExePath += "\" -name \""; + LLAppViewer::sUpdaterInfo->mUpdateExePath += LLAppViewer::instance()->getSecondLifeTitle(); + LLAppViewer::sUpdaterInfo->mUpdateExePath += "\" &"; + + LL_DEBUGS("AppInit") << "Calling updater: " << LLAppViewer::sUpdaterInfo->mUpdateExePath << LL_ENDL; + + // Run the auto-updater. + system(LLAppViewer::sUpdaterInfo->mUpdateExePath.c_str()); /* Flawfinder: ignore */ + +#elif LL_LINUX || LL_SOLARIS + OSMessageBox(LLTrans::getString("MBNoAutoUpdate"), LLStringUtil::null, OSMB_OK); +#endif + LLAppViewer::instance()->forceQuit(); + return false; +} void use_circuit_callback(void**, S32 result) { @@ -2331,7 +3026,7 @@ void register_viewer_callbacks(LLMessageSystem* msg) msg->setHandlerFuncFast(_PREHASH_AvatarAnimation, process_avatar_animation); msg->setHandlerFuncFast(_PREHASH_AvatarAppearance, process_avatar_appearance); msg->setHandlerFunc("AgentCachedTextureResponse", LLAgent::processAgentCachedTextureResponse); - msg->setHandlerFunc("RebakeAvatarTextures", LLVOAvatar::processRebakeAvatarTextures); + msg->setHandlerFunc("RebakeAvatarTextures", LLVOAvatarSelf::processRebakeAvatarTextures); msg->setHandlerFuncFast(_PREHASH_CameraConstraint, process_camera_constraint); msg->setHandlerFuncFast(_PREHASH_AvatarSitResponse, process_avatar_sit_response); msg->setHandlerFunc("SetFollowCamProperties", process_set_follow_cam_properties); @@ -2375,20 +3070,20 @@ void register_viewer_callbacks(LLMessageSystem* msg) LLViewerParcelMgr::processParcelDwellReply); msg->setHandlerFunc("AvatarPropertiesReply", - LLAvatarPropertiesProcessor::processAvatarPropertiesReply); + &LLAvatarPropertiesProcessor::processAvatarPropertiesReply); msg->setHandlerFunc("AvatarInterestsReply", - LLPanelAvatar::processAvatarInterestsReply); + &LLAvatarPropertiesProcessor::processAvatarInterestsReply); msg->setHandlerFunc("AvatarGroupsReply", - LLPanelAvatar::processAvatarGroupsReply); + &LLAvatarPropertiesProcessor::processAvatarGroupsReply); // ratings deprecated //msg->setHandlerFuncFast(_PREHASH_AvatarStatisticsReply, // LLPanelAvatar::processAvatarStatisticsReply); msg->setHandlerFunc("AvatarNotesReply", - LLPanelAvatar::processAvatarNotesReply); + &LLAvatarPropertiesProcessor::processAvatarNotesReply); msg->setHandlerFunc("AvatarPicksReply", - LLPanelAvatar::processAvatarPicksReply); - msg->setHandlerFunc("AvatarClassifiedReply", - LLPanelAvatar::processAvatarClassifiedReply); + &LLAvatarPropertiesProcessor::processAvatarPicksReply); + msg->setHandlerFunc("AvatarClassifiedReply", + &LLAvatarPropertiesProcessor::processAvatarClassifiedReply); msg->setHandlerFuncFast(_PREHASH_CreateGroupReply, LLGroupMgr::processCreateGroupReply); @@ -2406,7 +3101,7 @@ void register_viewer_callbacks(LLMessageSystem* msg) // LLFloaterRate::processReputationIndividualReply); msg->setHandlerFuncFast(_PREHASH_AgentWearablesUpdate, - LLAgent::processAgentInitialWearablesUpdate ); + LLAgentWearables::processAgentInitialWearablesUpdate ); msg->setHandlerFunc("ScriptControlChange", LLAgent::processScriptControlChange ); @@ -2462,9 +3157,9 @@ void register_viewer_callbacks(LLMessageSystem* msg) msg->setHandlerFunc("MapItemReply", LLWorldMap::processMapItemReply); msg->setHandlerFunc("EventInfoReply", LLPanelEvent::processEventInfoReply); - msg->setHandlerFunc("PickInfoReply", LLPanelPick::processPickInfoReply); + msg->setHandlerFunc("PickInfoReply", &LLAvatarPropertiesProcessor::processPickInfoReply); msg->setHandlerFunc("ClassifiedInfoReply", LLPanelClassified::processClassifiedInfoReply); - msg->setHandlerFunc("ParcelInfoReply", LLPanelPlace::processParcelInfoReply); + msg->setHandlerFunc("ParcelInfoReply", LLRemoteParcelInfoProcessor::processParcelInfoReply); msg->setHandlerFunc("ScriptDialog", process_script_dialog); msg->setHandlerFunc("LoadURL", process_load_url); msg->setHandlerFunc("ScriptTeleportRequest", process_script_teleport_request); @@ -2545,7 +3240,7 @@ void LLStartUp::loadInitialOutfit( const std::string& outfit_folder_name, has_name); if (0 == cat_array.count()) { - gAgent.createStandardWearables(gender); + gAgentWearables.createStandardWearables(gender); } else { @@ -2631,7 +3326,11 @@ std::string LLStartUp::startupStateToString(EStartupState state) RTNENUM( STATE_LOGIN_SHOW ); RTNENUM( STATE_LOGIN_WAIT ); RTNENUM( STATE_LOGIN_CLEANUP ); + RTNENUM( STATE_UPDATE_CHECK ); RTNENUM( STATE_LOGIN_AUTH_INIT ); + RTNENUM( STATE_LOGIN_AUTHENTICATE ); + RTNENUM( STATE_LOGIN_NO_DATA_YET ); + RTNENUM( STATE_LOGIN_DOWNLOADING ); RTNENUM( STATE_LOGIN_PROCESS_RESPONSE ); RTNENUM( STATE_WORLD_INIT ); RTNENUM( STATE_SEED_GRANTED_WAIT ); @@ -2692,7 +3391,7 @@ void LLStartUp::multimediaInit() { LL_DEBUGS("AppInit") << "Initializing Multimedia...." << LL_ENDL; std::string msg = LLTrans::getString("LoginInitializingMultimedia"); - set_startup_status(0.40f, msg.c_str(), gAgent.mMOTD.c_str()); + set_startup_status(0.42f, msg.c_str(), gAgent.mMOTD.c_str()); display_startup(); LLViewerMedia::initClass(); @@ -2772,252 +3471,3 @@ void apply_udp_blacklist(const std::string& csv) } -bool process_login_success_response() -{ - LLSD response = LLLoginInstance::getInstance()->getResponse(); - - std::string text(response["udp_blacklist"]); - if(!text.empty()) - { - apply_udp_blacklist(text); - } - - // unpack login data needed by the application - text = response["agent_id"].asString(); - if(!text.empty()) gAgentID.set(text); - gDebugInfo["AgentID"] = text; - - text = response["session_id"].asString(); - if(!text.empty()) gAgentSessionID.set(text); - gDebugInfo["SessionID"] = text; - - text = response["secure_session_id"].asString(); - if(!text.empty()) gAgent.mSecureSessionID.set(text); - - text = response["first_name"].asString(); - if(!text.empty()) - { - // Remove quotes from string. Login.cgi sends these to force - // names that look like numbers into strings. - gFirstname.assign(text); - LLStringUtil::replaceChar(gFirstname, '"', ' '); - LLStringUtil::trim(gFirstname); - } - text = response["last_name"].asString(); - if(!text.empty()) - { - gLastname.assign(text); - } - gSavedSettings.setString("FirstName", gFirstname); - gSavedSettings.setString("LastName", gLastname); - - if (gSavedSettings.getBOOL("RememberPassword")) - { - // Successful login means the password is valid, so save it. - LLStartUp::savePasswordToDisk(gPassword); - } - else - { - // Don't leave password from previous session sitting around - // during this login session. - LLStartUp::deletePasswordFromDisk(); - } - - // this is their actual ability to access content - text = response["agent_access_max"].asString(); - if (!text.empty()) - { - // agent_access can be 'A', 'M', and 'PG'. - gAgent.setMaturity(text[0]); - } - - // this is the value of their preference setting for that content - // which will always be <= agent_access_max - text = response["agent_region_access"].asString(); - if (!text.empty()) - { - int preferredMaturity = LLAgent::convertTextToMaturity(text[0]); - gSavedSettings.setU32("PreferredMaturity", preferredMaturity); - } - // During the AO transition, this flag will be true. Then the flag will - // go away. After the AO transition, this code and all the code that - // uses it can be deleted. - text = response["ao_transition"].asString(); - if (!text.empty()) - { - if (text == "1") - { - gAgent.setAOTransition(); - } - } - - text = response["start_location"].asString(); - if(!text.empty()) - { - gAgentStartLocation.assign(text); - } - - text = response["circuit_code"].asString(); - if(!text.empty()) - { - gMessageSystem->mOurCircuitCode = strtoul(text.c_str(), NULL, 10); - } - std::string sim_ip_str = response["sim_ip"]; - std::string sim_port_str = response["sim_port"]; - if(!sim_ip_str.empty() && !sim_port_str.empty()) - { - U32 sim_port = strtoul(sim_port_str.c_str(), NULL, 10); - gFirstSim.set(sim_ip_str, sim_port); - if (gFirstSim.isOk()) - { - gMessageSystem->enableCircuit(gFirstSim, TRUE); - } - } - std::string region_x_str = response["region_x"]; - std::string region_y_str = response["region_y"]; - if(!region_x_str.empty() && !region_y_str.empty()) - { - U32 region_x = strtoul(region_x_str.c_str(), NULL, 10); - U32 region_y = strtoul(region_y_str.c_str(), NULL, 10); - gFirstSimHandle = to_region_handle(region_x, region_y); - } - - const std::string look_at_str = response["look_at"]; - if (!look_at_str.empty()) - { - size_t len = look_at_str.size(); - LLMemoryStream mstr((U8*)look_at_str.c_str(), len); - LLSD sd = LLSDSerialize::fromNotation(mstr, len); - gAgentStartLookAt = ll_vector3_from_sd(sd); - } - - text = response["seed_capability"].asString(); - if (!text.empty()) gFirstSimSeedCap = text; - - text = response["seconds_since_epoch"].asString(); - if(!text.empty()) - { - U32 server_utc_time = strtoul(text.c_str(), NULL, 10); - if(server_utc_time) - { - time_t now = time(NULL); - gUTCOffset = (server_utc_time - now); - } - } - - std::string home_location = response["home"]; - if(!home_location.empty()) - { - size_t len = home_location.size(); - LLMemoryStream mstr((U8*)home_location.c_str(), len); - LLSD sd = LLSDSerialize::fromNotation(mstr, len); - S32 region_x = sd["region_handle"][0].asInteger(); - S32 region_y = sd["region_handle"][1].asInteger(); - U64 region_handle = to_region_handle(region_x, region_y); - LLVector3 position = ll_vector3_from_sd(sd["position"]); - gAgent.setHomePosRegion(region_handle, position); - } - - gAgent.mMOTD.assign(response["message"]); - - // Options... - // Each 'option' is an array of submaps. - // It appears that we only ever use the first element of the array. - LLUUID inv_root_folder_id = response["inventory-root"][0]["folder_id"]; - if(inv_root_folder_id.notNull()) - { - gAgent.mInventoryRootID = inv_root_folder_id; - //gInventory.mock(gAgent.getInventoryRootID()); - } - - LLSD login_flags = response["login-flags"][0]; - if(login_flags.size()) - { - std::string flag = login_flags["ever_logged_in"]; - if(!flag.empty()) - { - gAgent.setFirstLogin((flag == "N") ? TRUE : FALSE); - } - - /* Flag is currently ignored by the viewer. - flag = login_flags["stipend_since_login"]; - if(flag == "Y") - { - stipend_since_login = true; - } - */ - - flag = login_flags["gendered"].asString(); - if(flag == "Y") - { - gAgent.setGenderChosen(TRUE); - } - - flag = login_flags["daylight_savings"].asString(); - if(flag == "Y") - { - gPacificDaylightTime = (flag == "Y") ? TRUE : FALSE; - } - - //setup map of datetime strings to codes and slt & local time offset from utc - LLStringOps::setupDatetimeInfo (gPacificDaylightTime); - } - - LLSD initial_outfit = response["initial-outfit"][0]; - if(initial_outfit.size()) - { - std::string flag = initial_outfit["folder_name"]; - if(!flag.empty()) - { - // Initial outfit is a folder in your inventory, - // must be an exact folder-name match. - sInitialOutfit = flag; - } - - flag = initial_outfit["gender"].asString(); - if(!flag.empty()) - { - sInitialOutfitGender = flag; - } - } - - LLSD global_textures = response["global-textures"][0]; - if(global_textures.size()) - { - // Extract sun and moon texture IDs. These are used - // in the LLVOSky constructor, but I can't figure out - // how to pass them in. JC - LLUUID id = global_textures["sun_texture_id"]; - if(id.notNull()) - { - gSunTextureID = id; - } - - id = global_textures["moon_texture_id"]; - if(id.notNull()) - { - gMoonTextureID = id; - } - - id = global_textures["cloud_texture_id"]; - if(id.notNull()) - { - gCloudTextureID = id; - } - } - - - bool success = false; - // JC: gesture loading done below, when we have an asset system - // in place. Don't delete/clear user_credentials until then. - if(gAgentID.notNull() - && gAgentSessionID.notNull() - && gMessageSystem->mOurCircuitCode - && gFirstSim.isOk() - && gAgent.mInventoryRootID.notNull()) - { - success = true; - } - - return success; -} diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp index 364214b9e7cd6ea6cc03833f344a0a23c2449d89..8c2372ee74cff45c00a309f444284e618abfb906 100644 --- a/indra/newview/llstatusbar.cpp +++ b/indra/newview/llstatusbar.cpp @@ -61,7 +61,7 @@ #include "llviewerstats.h" #include "llviewerwindow.h" #include "llframetimer.h" -#include "llvoavatar.h" +#include "llvoavatarself.h" #include "llresmgr.h" #include "llworld.h" #include "llstatgraph.h" @@ -93,7 +93,7 @@ // Globals // LLStatusBar *gStatusBar = NULL; -S32 STATUS_BAR_HEIGHT = 0; +S32 STATUS_BAR_HEIGHT = 26; extern S32 MENU_BAR_HEIGHT; @@ -109,8 +109,6 @@ const F32 ICON_TIMER_EXPIRY = 3.f; // How long the balance and health icons sho const F32 ICON_FLASH_FREQUENCY = 2.f; const S32 TEXT_HEIGHT = 18; -static void onClickParcelInfo(void*); -static void onClickBalance(void*); static void onClickBuyCurrency(void*); static void onClickHealth(void*); static void onClickFly(void*); @@ -153,17 +151,16 @@ LLStatusBar::LLStatusBar(const LLRect& rect) // build date necessary data (must do after panel built) setupDate(); - mTextParcelName = getChild<LLTextBox>("ParcelNameText" ); - mTextBalance = getChild<LLTextBox>("BalanceText" ); - mTextHealth = getChild<LLTextBox>("HealthText" ); mTextTime = getChild<LLTextBox>("TimeText" ); + + mBtnBuyCurrency = getChild<LLButton>( "buycurrency" ); + mBtnBuyCurrency->setClickedCallback( onClickBuyCurrency, this ); childSetAction("scriptout", onClickScriptDebug, this); childSetAction("health", onClickHealth, this); childSetAction("no_fly", onClickFly, this); childSetAction("buyland", onClickBuyLand, this ); - childSetAction("buycurrency", onClickBuyCurrency, this ); childSetAction("no_build", onClickBuild, this ); childSetAction("no_scripts", onClickScripts, this ); childSetAction("restrictpush", onClickPush, this ); @@ -176,9 +173,6 @@ LLStatusBar::LLStatusBar(const LLRect& rect) childSetVisible("search_btn", gSavedSettings.getBOOL("ShowSearchBar")); childSetVisible("menubar_search_bevel_bg", gSavedSettings.getBOOL("ShowSearchBar")); - childSetActionTextbox("ParcelNameText", onClickParcelInfo ); - childSetActionTextbox("BalanceText", onClickBalance ); - // Adding Net Stat Graph S32 x = getRect().getWidth() - 2; S32 y = 0; @@ -254,13 +248,18 @@ void LLStatusBar::draw() // Per-frame updates of visibility void LLStatusBar::refresh() { - // Adding Net Stat Meter back in - F32 bwtotal = gViewerThrottle.getMaxBandwidth() / 1000.f; - mSGBandwidth->setMin(0.f); - mSGBandwidth->setMax(bwtotal*1.25f); - mSGBandwidth->setThreshold(0, bwtotal*0.75f); - mSGBandwidth->setThreshold(1, bwtotal); - mSGBandwidth->setThreshold(2, bwtotal); + bool net_stats_visible = gSavedSettings.getBOOL("ShowNetStats"); + + if (net_stats_visible) + { + // Adding Net Stat Meter back in + F32 bwtotal = gViewerThrottle.getMaxBandwidth() / 1000.f; + mSGBandwidth->setMin(0.f); + mSGBandwidth->setMax(bwtotal*1.25f); + mSGBandwidth->setThreshold(0, bwtotal*0.75f); + mSGBandwidth->setThreshold(1, bwtotal); + mSGBandwidth->setThreshold(2, bwtotal); + } // Get current UTC time, adjusted for the user's clock // being off. @@ -283,8 +282,6 @@ void LLStatusBar::refresh() S32 x = MENU_RIGHT + MENU_PARCEL_SPACING; S32 y = 0; - bool search_visible = gSavedSettings.getBOOL("ShowSearchBar"); - // reshape menu bar to its content's width if (MENU_RIGHT != gMenuBarView->getRect().getWidth()) { @@ -439,171 +436,8 @@ void LLStatusBar::refresh() x += buttonRect.getWidth(); } - std::string location_name; - if (region) - { - const LLVector3& agent_pos_region = gAgent.getPositionAgent(); - S32 pos_x = lltrunc( agent_pos_region.mV[VX] ); - S32 pos_y = lltrunc( agent_pos_region.mV[VY] ); - S32 pos_z = lltrunc( agent_pos_region.mV[VZ] ); - - // Round the numbers based on the velocity - LLVector3 agent_velocity = gAgent.getVelocity(); - F32 velocity_mag_sq = agent_velocity.magVecSquared(); - - const F32 FLY_CUTOFF = 6.f; // meters/sec - const F32 FLY_CUTOFF_SQ = FLY_CUTOFF * FLY_CUTOFF; - const F32 WALK_CUTOFF = 1.5f; // meters/sec - const F32 WALK_CUTOFF_SQ = WALK_CUTOFF * WALK_CUTOFF; - - if (velocity_mag_sq > FLY_CUTOFF_SQ) - { - pos_x -= pos_x % 4; - pos_y -= pos_y % 4; - } - else if (velocity_mag_sq > WALK_CUTOFF_SQ) - { - pos_x -= pos_x % 2; - pos_y -= pos_y % 2; - } - - mRegionDetails.mTime = mTextTime->getText(); - mRegionDetails.mBalance = mBalance; - mRegionDetails.mAccessString = region->getSimAccessString(); - if (parcel) - { - location_name = region->getName() - + llformat(" %d, %d, %d (%s) - %s", - pos_x, pos_y, pos_z, - region->getSimAccessString().c_str(), - parcel->getName().c_str()); - - // keep these around for the LCD to use - mRegionDetails.mRegionName = region->getName(); - mRegionDetails.mParcelName = parcel->getName(); - mRegionDetails.mX = pos_x; - mRegionDetails.mY = pos_y; - mRegionDetails.mZ = pos_z; - - mRegionDetails.mArea = parcel->getArea(); - mRegionDetails.mForSale = parcel->getForSale(); - mRegionDetails.mTraffic = LLViewerParcelMgr::getInstance()->getDwelling(); - - if (parcel->isPublic()) - { - mRegionDetails.mOwner = LLTrans::getString("Public"); - } - else - { - if (parcel->getIsGroupOwned()) - { - if(!parcel->getGroupID().isNull()) - { - gCacheName->getGroupName(parcel->getGroupID(), mRegionDetails.mOwner); - } - else - { - mRegionDetails.mOwner = LLTrans::getString("GroupOwned"); - } - } - else - { - // Figure out the owner's name - gCacheName->getFullName(parcel->getOwnerID(), mRegionDetails.mOwner); - } - } - } - else - { - location_name = region->getName() - + llformat(" %d, %d, %d (%s)", - pos_x, pos_y, pos_z, - region->getSimAccessString().c_str()); - // keep these around for the LCD to use - mRegionDetails.mRegionName = region->getName(); - mRegionDetails.mParcelName = LLTrans::getString("Unknown"); - - mRegionDetails.mX = pos_x; - mRegionDetails.mY = pos_y; - mRegionDetails.mZ = pos_z; - mRegionDetails.mArea = 0; - mRegionDetails.mForSale = FALSE; - mRegionDetails.mOwner = LLTrans::getString("Unknown"); - mRegionDetails.mTraffic = 0.0f; - } - } - else - { - // no region - location_name = LLTrans::getString("Unknown"); - // keep these around for the LCD to use - mRegionDetails.mRegionName = LLTrans::getString("Unknown"); - mRegionDetails.mParcelName = LLTrans::getString("Unknown"); - mRegionDetails.mAccessString = LLTrans::getString("Unknown"); - mRegionDetails.mX = 0; - mRegionDetails.mY = 0; - mRegionDetails.mZ = 0; - mRegionDetails.mArea = 0; - mRegionDetails.mForSale = FALSE; - mRegionDetails.mOwner = LLTrans::getString("Unknown"); - mRegionDetails.mTraffic = 0.0f; - } - - mTextParcelName->setText(location_name); - - - - // x = right edge - // loop through: stat graphs, search btn, search text editor, money, buy money, clock - // adjust rect - // finally adjust parcel name rect - - S32 new_right = getRect().getWidth(); - if (search_visible) - { - childGetRect("search_btn", r); - //r.translate( new_right - r.mRight, 0); - //childSetRect("search_btn", r); - new_right -= r.getWidth(); - - childGetRect("search_editor", r); - //r.translate( new_right - r.mRight, 0); - //childSetRect("search_editor", r); - new_right -= r.getWidth() + 6; - } - else - { - childGetRect("stat_btn", r); - r.translate( new_right - r.mRight, 0); - childSetRect("stat_btn", r); - new_right -= r.getWidth() + 6; - } - - // Set rects of money, buy money, time - childGetRect("BalanceText", r); - r.translate( new_right - r.mRight, 0); - childSetRect("BalanceText", r); - new_right -= r.getWidth() - 18; - - childGetRect("buycurrency", r); - r.translate( new_right - r.mRight, 0); - childSetRect("buycurrency", r); - new_right -= r.getWidth() + 6; - - childGetRect("TimeText", r); - // mTextTime->getTextPixelWidth(); - r.translate( new_right - r.mRight, 0); - childSetRect("TimeText", r); - // new_right -= r.getWidth() + MENU_PARCEL_SPACING; - - - // Adjust region name and parcel name - x += 8; - - const S32 PARCEL_RIGHT = llmin(mTextTime->getRect().mLeft, mTextParcelName->getTextPixelWidth() + x + 5); - r.set(x+4, getRect().getHeight() - 2, PARCEL_RIGHT, 0); - mTextParcelName->setRect(r); - + bool search_visible = gSavedSettings.getBOOL("ShowSearchBar"); + // Set search bar visibility if (gAgent.getCameraMode() != CAMERA_MODE_MOUSELOOK) @@ -615,16 +449,15 @@ void LLStatusBar::refresh() childSetVisible("menubar_search_bevel_bg", search_visible); } - mSGBandwidth->setVisible(! search_visible); - mSGPacketLoss->setVisible(! search_visible); - childSetEnabled("stat_btn", ! search_visible); + mSGBandwidth->setVisible(net_stats_visible); + mSGPacketLoss->setVisible(net_stats_visible); + childSetEnabled("stat_btn", net_stats_visible); } void LLStatusBar::setVisibleForMouselook(bool visible) { - mTextBalance->setVisible(visible); mTextTime->setVisible(visible); - childSetVisible("buycurrency", visible); + mBtnBuyCurrency->setVisible(visible); childSetVisible("search_editor", visible); childSetVisible("search_btn", visible); childSetVisible("menubar_search_bevel_bg", visible); @@ -648,7 +481,15 @@ void LLStatusBar::setBalance(S32 balance) std::string money_str = LLResMgr::getInstance()->getMonetaryString( balance ); std::string balance_str = "L$"; balance_str += money_str; - mTextBalance->setText( balance_str ); + mBtnBuyCurrency->setLabel( balance_str ); + + // Resize the balance button so that the label fits it, and the button expands to the left. + // *TODO: LLButton should have an option where to expand. + { + S32 saved_right = mBtnBuyCurrency->getRect().mRight; + mBtnBuyCurrency->autoResize(); + mBtnBuyCurrency->translate(saved_right - mBtnBuyCurrency->getRect().mRight, 0); + } if (mBalance && (fabs((F32)(mBalance - balance)) > gSavedSettings.getF32("UISndMoneyChangeThreshold"))) { @@ -752,18 +593,6 @@ S32 LLStatusBar::getSquareMetersLeft() const return mSquareMetersCredit - mSquareMetersCommitted; } -static void onClickParcelInfo(void* data) -{ - LLViewerParcelMgr::getInstance()->selectParcelAt(gAgent.getPositionGlobal()); - - LLFloaterLand::showInstance(); -} - -static void onClickBalance(void* data) -{ - onClickBuyCurrency(data); -} - static void onClickBuyCurrency(void* data) { LLFloaterBuyCurrency::buyCurrency(); @@ -903,7 +732,7 @@ void LLStatusBar::onClickSearch(void* data) // static void LLStatusBar::onClickStatGraph(void* data) { - LLFloaterLagMeter::showInstance(); + LLFloaterReg::showInstance("lagmeter"); } BOOL can_afford_transaction(S32 cost) diff --git a/indra/newview/llstatusbar.h b/indra/newview/llstatusbar.h index 727244164493a2ceaaa147563e04562e7d4df82f..84dd761930012361104990d21c7a801531f11c07 100644 --- a/indra/newview/llstatusbar.h +++ b/indra/newview/llstatusbar.h @@ -48,38 +48,6 @@ class LLUUID; class LLFrameTimer; class LLStatGraph; -// used by LCD screen -class LLRegionDetails -{ -public: - LLRegionDetails() : - mRegionName("Unknown"), - mParcelName("Unknown"), - mAccessString("Unknown"), - mX(0), - mY(0), - mZ(0), - mArea (0), - mForSale(FALSE), - mOwner("Unknown"), - mTraffic(0), - mBalance(0) - { - } - std::string mRegionName; - std::string mParcelName; - std::string mAccessString; - S32 mX; - S32 mY; - S32 mZ; - S32 mArea; - BOOL mForSale; - std::string mOwner; - F32 mTraffic; - S32 mBalance; - std::string mTime; -}; - class LLStatusBar : public LLPanel { @@ -114,7 +82,6 @@ class LLStatusBar S32 getSquareMetersCredit() const; S32 getSquareMetersCommitted() const; S32 getSquareMetersLeft() const; - LLRegionDetails mRegionDetails; private: // simple method to setup the part that holds the date @@ -125,12 +92,9 @@ class LLStatusBar static void onClickStatGraph(void* data); private: - LLTextBox *mTextBalance; LLTextBox *mTextHealth; LLTextBox *mTextTime; - LLTextBox* mTextParcelName; - LLStatGraph *mSGBandwidth; LLStatGraph *mSGPacketLoss; diff --git a/indra/newview/llsurface.cpp b/indra/newview/llsurface.cpp index 51b946b8c03c557cd8e08e26aba60a2c9a0f2e07..27a08e7d7ba3bf06f7eefe58e506d24582408bc2 100644 --- a/indra/newview/llsurface.cpp +++ b/indra/newview/llsurface.cpp @@ -628,6 +628,7 @@ void LLSurface::updatePatchVisibilities(LLAgent &agent) BOOL LLSurface::idleUpdate(F32 max_update_time) { + LLMemType mt_ius(LLMemType::MTYPE_IDLE_UPDATE_SURFACE); if (!gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_TERRAIN)) { return FALSE; diff --git a/indra/newview/llteleporthistory.cpp b/indra/newview/llteleporthistory.cpp index 8dd7d2456ebe0dce1ba04c748d41c210239d4f01..99389017cb117fcc854d8872bf0f7b899b09793e 100644 --- a/indra/newview/llteleporthistory.cpp +++ b/indra/newview/llteleporthistory.cpp @@ -70,18 +70,19 @@ LLSD LLTeleportHistoryItem::toLLSD() const LLTeleportHistory::LLTeleportHistory(): mCurrentItem(-1), - mHistoryTeleportInProgress(false), - mGotInitialUpdate(false), - mFilename("teleports.txt"), - mHistoryChangedCallback(NULL) + mRequestedItem(-1), + mGotInitialUpdate(false) { mTeleportFinishedConn = LLViewerParcelMgr::getInstance()-> setTeleportFinishedCallback(boost::bind(&LLTeleportHistory::updateCurrentLocation, this)); + mTeleportFailedConn = LLViewerParcelMgr::getInstance()-> + setTeleportFailedCallback(boost::bind(&LLTeleportHistory::onTeleportFailed, this)); } LLTeleportHistory::~LLTeleportHistory() { mTeleportFinishedConn.disconnect(); + mTeleportFailedConn.disconnect(); } void LLTeleportHistory::goToItem(int idx) @@ -102,18 +103,27 @@ void LLTeleportHistory::goToItem(int idx) return; } - // Make specified item current and teleport to it. - mCurrentItem = idx; - mHistoryTeleportInProgress = true; - onHistoryChanged(); - gAgent.teleportViaLocation(mItems[mCurrentItem].mGlobalPos); + // Attempt to teleport to the requested item. + gAgent.teleportViaLocation(mItems[idx].mGlobalPos); + mRequestedItem = idx; +} + +void LLTeleportHistory::onTeleportFailed() +{ + // Are we trying to teleport within the history? + if (mRequestedItem != -1) + { + // Not anymore. + mRequestedItem = -1; + } } void LLTeleportHistory::updateCurrentLocation() { - if (mHistoryTeleportInProgress) + if (mRequestedItem != -1) // teleport within the history in progress? { - mHistoryTeleportInProgress = false; + mCurrentItem = mRequestedItem; + mRequestedItem = -1; } else { @@ -131,16 +141,18 @@ void LLTeleportHistory::updateCurrentLocation() mItems.push_back(LLTeleportHistoryItem("", LLVector3d())); mCurrentItem++; } - } - // Update current history item. - if (mCurrentItem < 0 || mCurrentItem >= (int) mItems.size()) // sanity check - { - llwarns << "Invalid current item. (this should not happen)" << llendl; - return; + // Update current history item. + if (mCurrentItem < 0 || mCurrentItem >= (int) mItems.size()) // sanity check + { + llwarns << "Invalid current item. (this should not happen)" << llendl; + return; + } + mItems[mCurrentItem].mTitle = getCurrentLocationTitle(); + mItems[mCurrentItem].mGlobalPos = gAgent.getPositionGlobal(); + mItems[mCurrentItem].mRegionID = gAgent.getRegion()->getRegionID(); } - mItems[mCurrentItem].mTitle = getCurrentLocationTitle(); - mItems[mCurrentItem].mGlobalPos = gAgent.getPositionGlobal(); + dump(); if (!mGotInitialUpdate) @@ -150,80 +162,14 @@ void LLTeleportHistory::updateCurrentLocation() onHistoryChanged(); } -void LLTeleportHistory::save() const +boost::signals2::connection LLTeleportHistory::setHistoryChangedCallback(history_callback_t cb) { - // build filename for each user - std::string resolvedFilename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, mFilename); - - // open the history file for writing - llofstream file (resolvedFilename); - if (!file.is_open()) - { - llwarns << "can't open teleport history file \"" << mFilename << "\" for writing" << llendl; - return; - } - - for (size_t i=0; i<mItems.size(); i++) - { - LLSD s_item = mItems[i].toLLSD(); - s_item["is_current"] = (i == mCurrentItem); - file << LLSDOStreamer<LLSDNotationFormatter>(s_item) << std::endl; - } - - file.close(); -} - -// *TODO: clean this up -void LLTeleportHistory::load() -{ - // build filename for each user - std::string resolved_filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, mFilename); - - // open the history file for reading - llifstream file(resolved_filename); - if (!file.is_open()) - { - llwarns << "can't load teleport history from file \"" << mFilename << "\"" << llendl; - return; - } - - // remove current entries before we load over them - mItems.clear(); - mCurrentItem = -1; - - // the parser's destructor is protected so we cannot create in the stack. - LLPointer<LLSDParser> parser = new LLSDNotationParser(); - std::string line; - for (int i = 0; std::getline(file, line); i++) - { - LLSD s_item; - std::istringstream iss(line); - if (parser->parse(iss, s_item, line.length()) == LLSDParser::PARSE_FAILURE) - { - llinfos << "Parsing saved teleport history failed" << llendl; - break; - } - - mItems.push_back(s_item); - if (s_item["is_current"].asBoolean() == true) - mCurrentItem = i; - } - - file.close(); - onHistoryChanged(); -} - -void LLTeleportHistory::setHistoryChangedCallback(history_callback_t cb) -{ - mHistoryChangedCallback = cb; + return mHistoryChangedSignal.connect(cb); } void LLTeleportHistory::onHistoryChanged() { - if (mHistoryChangedCallback) - { - mHistoryChangedCallback(); - } + mHistoryChangedSignal(); } // static @@ -246,6 +192,7 @@ void LLTeleportHistory::dump() const std::stringstream line; line << ((i == mCurrentItem) ? " * " : " "); line << i << ": " << mItems[i].mTitle; + line << " REGION_ID: " << mItems[i].mRegionID; llinfos << line.str() << llendl; } } diff --git a/indra/newview/llteleporthistory.h b/indra/newview/llteleporthistory.h index fc061075c9e9f46ee42c18e9d4077f8ffb63e9a6..c68aabe9a19370b2916796d2d891eeebf8d3bc00 100644 --- a/indra/newview/llteleporthistory.h +++ b/indra/newview/llteleporthistory.h @@ -38,7 +38,7 @@ #include <vector> #include <string> #include <boost/function.hpp> -#include <boost/signals2/connection.hpp> +#include <boost/signals2.hpp> /** @@ -61,6 +61,7 @@ class LLTeleportHistoryItem std::string mTitle; // human-readable location title LLVector3d mGlobalPos; // global position + LLUUID mRegionID; // region ID for getting the region info }; /** @@ -79,6 +80,7 @@ class LLTeleportHistory: public LLSingleton<LLTeleportHistory> typedef std::vector<LLTeleportHistoryItem> slurl_list_t; typedef boost::function<void()> history_callback_t; + typedef boost::signals2::signal<void()> history_signal_t; LLTeleportHistory(); ~LLTeleportHistory(); @@ -120,18 +122,10 @@ class LLTeleportHistory: public LLSingleton<LLTeleportHistory> /** * Set a callback to be called upon history changes. + * + * Multiple callbacks can be set. */ - void setHistoryChangedCallback(history_callback_t cb); - - /** - * Save the history to a file, so that it can be restored upon next logon. - */ - void save() const; - - /** - * Load previously saved history from a file. - */ - void load(); + boost::signals2::connection setHistoryChangedCallback(history_callback_t cb); /** * Save history to a file so that we can restore it on startup. @@ -142,22 +136,33 @@ class LLTeleportHistory: public LLSingleton<LLTeleportHistory> private: + /** + * Called by when a teleport fails. + * + * Called via callback set on the LLViewerParcelMgr "teleport failed" signal. + * + * @see mTeleportFailedConn + */ + void onTeleportFailed(); + /** * Update current location. * * Called when a teleport finishes. + * Called via callback set on the LLViewerParcelMgr "teleport finished" signal. * - * Takes mHistoryTeleportInProgress into consideration: if it's false + * Takes mRequestedItem into consideration: if it's not -1 * (i.e. user is teleporting to an arbitrary location, not to a history item) - * we purge forward items. + * we purge forward items and append a new one, making it current. Otherwise + * we just modify mCurrentItem. * - * @see mHistoryTeleportInProgress + * @see mRequestedItem * @see mGotInitialUpdate */ void updateCurrentLocation(); /** - * Invokes mHistoryChangedCallback. + * Invokes the "history changed" callback(s). */ void onHistoryChanged(); @@ -174,14 +179,17 @@ class LLTeleportHistory: public LLSingleton<LLTeleportHistory> int mCurrentItem; /** - * Indicates whether teleport back/forward is currently in progress. + * Requested position within the history. * - * Helps to make sure we don't purge forward items - * when a teleport within history finishes. + * When a teleport succeeds, this is checked by updateCurrentLocation() to tell + * if this is a teleport within the history (mRequestedItem >=0) or not (-1). * + * Set by goToItem(); reset by onTeleportFailed() (if teleport fails). + * + * @see goToItem() * @see updateCurrentLocation() - */ - bool mHistoryTeleportInProgress; + */ + int mRequestedItem; /** * Have we received the initial location update? @@ -191,22 +199,26 @@ class LLTeleportHistory: public LLSingleton<LLTeleportHistory> bool mGotInitialUpdate; /** - * File to store the history to. - */ - std::string mFilename; - - /** - * Callback to be called when the history gets changed. + * Signal emitted when the history gets changed. + * + * Invokes callbacks set with setHistoryChangedCallback(). */ - history_callback_t mHistoryChangedCallback; + history_signal_t mHistoryChangedSignal; /** - * Teleport notification connection. + * Teleport success notification connection. * * Using this connection we get notified when a teleport finishes * or initial location update occurs. */ boost::signals2::connection mTeleportFinishedConn; + + /** + * Teleport failure notification connection. + * + * Using this connection we get notified when a teleport fails. + */ + boost::signals2::connection mTeleportFailedConn; }; #endif diff --git a/indra/newview/lltexglobalcolor.cpp b/indra/newview/lltexglobalcolor.cpp new file mode 100644 index 0000000000000000000000000000000000000000..e81c3731f76d6b42e528a272cc9b42e5c8325e2b --- /dev/null +++ b/indra/newview/lltexglobalcolor.cpp @@ -0,0 +1,150 @@ +/** + * @file lltexlayerglobalcolor.cpp + * @brief SERAPH - ADD IN + * + * $LicenseInfo:firstyear=2008&license=viewergpl$ + * + * Copyright (c) 2008-2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlife.com/developers/opensource/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at http://secondlife.com/developers/opensource/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#include "llviewerprecompiledheaders.h" +#include "llagent.h" +#include "lltexlayer.h" +#include "llvoavatar.h" +#include "lltexglobalcolor.h" + +//----------------------------------------------------------------------------- +// LLTexGlobalColor +//----------------------------------------------------------------------------- + +LLTexGlobalColor::LLTexGlobalColor(LLVOAvatar* avatar) + : + mAvatar(avatar), + mInfo(NULL) +{ +} + +LLTexGlobalColor::~LLTexGlobalColor() +{ + // mParamColorList are LLViewerVisualParam's and get deleted with ~LLCharacter() + //std::for_each(mParamColorList.begin(), mParamColorList.end(), DeletePointer()); +} + +BOOL LLTexGlobalColor::setInfo(LLTexGlobalColorInfo *info) +{ + llassert(mInfo == NULL); + mInfo = info; + //mID = info->mID; // No ID + + mParamGlobalColorList.reserve(mInfo->mParamColorInfoList.size()); + for (param_color_info_list_t::iterator iter = mInfo->mParamColorInfoList.begin(); + iter != mInfo->mParamColorInfoList.end(); + iter++) + { + LLTexParamGlobalColor* param_color = new LLTexParamGlobalColor(this); + if (!param_color->setInfo(*iter)) + { + mInfo = NULL; + return FALSE; + } + mParamGlobalColorList.push_back(param_color); + } + + return TRUE; +} + +LLColor4 LLTexGlobalColor::getColor() const +{ + // Sum of color params + if (mParamGlobalColorList.empty()) + return LLColor4(1.f, 1.f, 1.f, 1.f); + + LLColor4 net_color(0.f, 0.f, 0.f, 0.f); + LLTexLayer::calculateTexLayerColor(mParamGlobalColorList, net_color); + return net_color; +} + +const std::string& LLTexGlobalColor::getName() const +{ + return mInfo->mName; +} + +//----------------------------------------------------------------------------- +// LLTexParamGlobalColor +//----------------------------------------------------------------------------- +LLTexParamGlobalColor::LLTexParamGlobalColor(LLTexGlobalColor* tex_global_color) : + LLTexLayerParamColor((LLTexLayer*)NULL), + mTexGlobalColor(tex_global_color) +{ + mAvatar = tex_global_color->getAvatar(); +} + +void LLTexParamGlobalColor::onGlobalColorChanged(bool set_by_user) +{ + mAvatar->onGlobalColorChanged(mTexGlobalColor, set_by_user); +} + +//----------------------------------------------------------------------------- +// LLTexGlobalColorInfo +//----------------------------------------------------------------------------- + +LLTexGlobalColorInfo::LLTexGlobalColorInfo() +{ +} + + +LLTexGlobalColorInfo::~LLTexGlobalColorInfo() +{ + for_each(mParamColorInfoList.begin(), mParamColorInfoList.end(), DeletePointer()); +} + +BOOL LLTexGlobalColorInfo::parseXml(LLXmlTreeNode* node) +{ + // name attribute + static LLStdStringHandle name_string = LLXmlTree::addAttributeString("name"); + if (!node->getFastAttributeString(name_string, mName)) + { + llwarns << "<global_color> element is missing name attribute." << llendl; + return FALSE; + } + // <param> sub-element + for (LLXmlTreeNode* child = node->getChildByName("param"); + child; + child = node->getNextNamedChild()) + { + if (child->getChildByName("param_color")) + { + // <param><param_color/></param> + LLTexLayerParamColorInfo* info = new LLTexLayerParamColorInfo(); + if (!info->parseXml(child)) + { + delete info; + return FALSE; + } + mParamColorInfoList.push_back(info); + } + } + return TRUE; +} diff --git a/indra/newview/lltexglobalcolor.h b/indra/newview/lltexglobalcolor.h new file mode 100644 index 0000000000000000000000000000000000000000..154b8143922a0315f5c77ab8fb87e6ad577bba63 --- /dev/null +++ b/indra/newview/lltexglobalcolor.h @@ -0,0 +1,86 @@ +/** + * @file lltexglobalcolor.h + * @brief This is global texture color info used by llvoavatar. + * + * $LicenseInfo:firstyear=2008&license=viewergpl$ + * + * Copyright (c) 2008-2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlife.com/developers/opensource/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at http://secondlife.com/developers/opensource/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#ifndef LL_LLTEXGLOBALCOLOR_H +#define LL_LLTEXGLOBALCOLOR_H + +#include "lltexlayer.h" +#include "lltexlayerparams.h" + +class LLVOAvatar; +class LLTexGlobalColorInfo; + +class LLTexGlobalColor +{ +public: + LLTexGlobalColor( LLVOAvatar* avatar ); + ~LLTexGlobalColor(); + + LLTexGlobalColorInfo* getInfo() const { return mInfo; } + // This sets mInfo and calls initialization functions + BOOL setInfo(LLTexGlobalColorInfo *info); + + LLVOAvatar* getAvatar() const { return mAvatar; } + LLColor4 getColor() const; + const std::string& getName() const; + +private: + param_color_list_t mParamGlobalColorList; + LLVOAvatar* mAvatar; // just backlink, don't LLPointer + LLTexGlobalColorInfo *mInfo; +}; + +// Used by llvoavatar to determine skin/eye/hair color. +class LLTexGlobalColorInfo +{ + friend class LLTexGlobalColor; +public: + LLTexGlobalColorInfo(); + ~LLTexGlobalColorInfo(); + + BOOL parseXml(LLXmlTreeNode* node); + +private: + param_color_info_list_t mParamColorInfoList; + std::string mName; +}; + +class LLTexParamGlobalColor : public LLTexLayerParamColor +{ +public: + LLTexParamGlobalColor(LLTexGlobalColor *tex_color); +protected: + /*virtual*/ void onGlobalColorChanged(bool set_by_user); +private: + LLTexGlobalColor* mTexGlobalColor; +}; + +#endif diff --git a/indra/newview/lltexlayer.cpp b/indra/newview/lltexlayer.cpp index eea4acf053cd1a2683d41ae9212952518bd410a7..716ab8eef424510893bddde332d03adbd336b137 100644 --- a/indra/newview/lltexlayer.cpp +++ b/indra/newview/lltexlayer.cpp @@ -31,76 +31,56 @@ */ #include "llviewerprecompiledheaders.h" - -#include "imageids.h" #include "llagent.h" -#include "llcrc.h" -#include "lldir.h" -#include "llglheaders.h" -#include "llimagebmp.h" -#include "llimagej2c.h" -#include "llimagetga.h" -#include "llpolymorph.h" -#include "llquantize.h" #include "lltexlayer.h" -#include "llui.h" -#include "llvfile.h" -#include "llviewerimagelist.h" -#include "llviewerimagelist.h" -#include "llviewerregion.h" #include "llviewerstats.h" -#include "llviewerwindow.h" +#include "llviewerregion.h" #include "llvoavatar.h" -#include "llxmltree.h" +#include "llvoavatarself.h" #include "pipeline.h" -#include "v4coloru.h" -#include "llrender.h" #include "llassetuploadresponders.h" +#include "lltexlayerparams.h" +#include "llui.h" //#include "../tools/imdebug/imdebug.h" using namespace LLVOAvatarDefines; -// static -S32 LLTexLayerSetBuffer::sGLByteCount = 0; -S32 LLTexLayerSetBuffer::sGLBumpByteCount = 0; - //----------------------------------------------------------------------------- // LLBakedUploadData() //----------------------------------------------------------------------------- -LLBakedUploadData::LLBakedUploadData( LLVOAvatar* avatar, LLTexLayerSetBuffer* layerset_buffer, const LLUUID & id ) : - mAvatar( avatar ), - mLayerSetBuffer( layerset_buffer ), - mID(id) +LLBakedUploadData::LLBakedUploadData(const LLVOAvatarSelf* avatar, + LLTexLayerSet* layerset, + const LLUUID& id) : + mAvatar(avatar), + mTexLayerSet(layerset), + mID(id), + mStartTime(LLFrameTimer::getTotalTime()) // Record starting time { - mStartTime = LLFrameTimer::getTotalTime(); // Record starting time - for( S32 i = 0; i < WT_COUNT; i++ ) - { - LLWearable* wearable = gAgent.getWearable( (EWearableType)i); - if( wearable ) - { - mWearableAssets[i] = wearable->getID(); - } - } } //----------------------------------------------------------------------------- // LLTexLayerSetBuffer // The composite image that a LLTexLayerSet writes to. Each LLTexLayerSet has one. //----------------------------------------------------------------------------- -LLTexLayerSetBuffer::LLTexLayerSetBuffer( LLTexLayerSet* owner, S32 width, S32 height, BOOL has_bump ) - : + +// static +S32 LLTexLayerSetBuffer::sGLByteCount = 0; +S32 LLTexLayerSetBuffer::sGLBumpByteCount = 0; + +LLTexLayerSetBuffer::LLTexLayerSetBuffer(LLTexLayerSet* const owner, + S32 width, S32 height, + BOOL has_bump) : // ORDER_LAST => must render these after the hints are created. LLDynamicTexture( width, height, 4, LLDynamicTexture::ORDER_LAST, TRUE ), mNeedsUpdate( TRUE ), mNeedsUpload( FALSE ), mUploadPending( FALSE ), // Not used for any logic here, just to sync sending of updates - mTexLayerSet( owner ) + mTexLayerSet(owner), + mHasBump(has_bump), + mBumpTex(NULL) { LLTexLayerSetBuffer::sGLByteCount += getSize(); - mHasBump = has_bump ; - mBumpTex = NULL ; - createBumpTexture() ; } @@ -111,10 +91,11 @@ LLTexLayerSetBuffer::~LLTexLayerSetBuffer() if( mBumpTex.notNull()) { mBumpTex = NULL ; - LLImageGL::sGlobalTextureMemory -= mWidth * mHeight * 4; + LLImageGL::sGlobalTextureMemoryInBytes -= mWidth * mHeight * 4; LLTexLayerSetBuffer::sGLBumpByteCount -= mWidth * mHeight * 4; } } + //virtual void LLTexLayerSetBuffer::restoreGLTexture() { @@ -128,7 +109,7 @@ void LLTexLayerSetBuffer::destroyGLTexture() if( mBumpTex.notNull() ) { mBumpTex = NULL ; - LLImageGL::sGlobalTextureMemory -= mWidth * mHeight * 4; + LLImageGL::sGlobalTextureMemoryInBytes -= mWidth * mHeight * 4; LLTexLayerSetBuffer::sGLBumpByteCount -= mWidth * mHeight * 4; } @@ -159,7 +140,7 @@ void LLTexLayerSetBuffer::createBumpTexture() gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); - LLImageGL::sGlobalTextureMemory += mWidth * mHeight * 4; + LLImageGL::sGlobalTextureMemoryInBytes += mWidth * mHeight * 4; LLTexLayerSetBuffer::sGLBumpByteCount += mWidth * mHeight * 4; } } @@ -198,7 +179,7 @@ void LLTexLayerSetBuffer::cancelUpload() mUploadPending = FALSE; } -void LLTexLayerSetBuffer::pushProjection() +void LLTexLayerSetBuffer::pushProjection() const { glMatrixMode(GL_PROJECTION); gGL.pushMatrix(); @@ -210,7 +191,7 @@ void LLTexLayerSetBuffer::pushProjection() glLoadIdentity(); } -void LLTexLayerSetBuffer::popProjection() +void LLTexLayerSetBuffer::popProjection() const { glMatrixMode(GL_PROJECTION); gGL.popMatrix(); @@ -221,12 +202,12 @@ void LLTexLayerSetBuffer::popProjection() BOOL LLTexLayerSetBuffer::needsRender() { - LLVOAvatar* avatar = mTexLayerSet->getAvatar(); + const LLVOAvatarSelf* avatar = mTexLayerSet->getAvatar(); BOOL upload_now = mNeedsUpload && mTexLayerSet->isLocalTextureDataFinal(); - BOOL needs_update = gAgent.mNumPendingQueries == 0 && (mNeedsUpdate || upload_now) && !avatar->mAppearanceAnimating; + BOOL needs_update = gAgentQueryManager.hasNoPendingQueries() && (mNeedsUpdate || upload_now) && !avatar->mAppearanceAnimating; if (needs_update) { - BOOL invalid_skirt = avatar->getBakedTE(mTexLayerSet) == TEX_SKIRT_BAKED && !avatar->isWearingWearableType(WT_SKIRT); + BOOL invalid_skirt = avatar->getBakedTE(mTexLayerSet) == LLVOAvatarDefines::TEX_SKIRT_BAKED && !avatar->isWearingWearableType(WT_SKIRT); if (invalid_skirt) { // we were trying to create a skirt texture @@ -268,7 +249,7 @@ BOOL LLTexLayerSetBuffer::render() // do we need to upload, and do we have sufficient data to create an uploadable composite? // When do we upload the texture if gAgent.mNumPendingQueries is non-zero? - BOOL upload_now = (gAgent.mNumPendingQueries == 0 && mNeedsUpload && mTexLayerSet->isLocalTextureDataFinal()); + BOOL upload_now = (gAgentQueryManager.hasNoPendingQueries() && mNeedsUpload && mTexLayerSet->isLocalTextureDataFinal()); BOOL success = TRUE; // Composite bump @@ -308,7 +289,6 @@ BOOL LLTexLayerSetBuffer::render() { if (!success) { - delete [] baked_bump_data; llinfos << "Failed attempt to bake " << mTexLayerSet->getBodyRegion() << llendl; mUploadPending = FALSE; } @@ -326,6 +306,7 @@ BOOL LLTexLayerSetBuffer::render() mTexture->setGLTextureCreated(true); mNeedsUpdate = FALSE; + delete [] baked_bump_data; return success; } @@ -349,7 +330,7 @@ BOOL LLTexLayerSetBuffer::updateImmediate() return result; } -void LLTexLayerSetBuffer::readBackAndUpload(U8* baked_bump_data) +void LLTexLayerSetBuffer::readBackAndUpload(const U8* baked_bump_data) { // pointers for storing data to upload U8* baked_color_data = new U8[ mWidth * mHeight * 4 ]; @@ -371,10 +352,8 @@ void LLTexLayerSetBuffer::readBackAndUpload(U8* baked_bump_data) LLPointer<LLImageRaw> baked_mask_image = new LLImageRaw(mWidth, mHeight, 1 ); U8* baked_mask_data = baked_mask_image->getData(); - - mTexLayerSet->gatherAlphaMasks(baked_mask_data, mWidth, mHeight); -// imdebug("lum b=8 w=%d h=%d %p", mWidth, mHeight, baked_mask_data); - + + mTexLayerSet->gatherMorphMaskAlpha(baked_mask_data, mWidth, mHeight); // writes into baked_color_data const char* comment_text = NULL; @@ -383,13 +362,11 @@ void LLTexLayerSetBuffer::readBackAndUpload(U8* baked_bump_data) LLPointer<LLImageRaw> baked_image = new LLImageRaw( mWidth, mHeight, baked_image_components ); U8* baked_image_data = baked_image->getData(); + if( mBumpTex.notNull() ) { comment_text = LINDEN_J2C_COMMENT_PREFIX "RGBHM"; // 5 channels: rgb, heightfield/alpha, mask - // Hide the alpha for the eyelashes in a corner of the bump map - if (mTexLayerSet->getBodyRegion() == "head") - { S32 i = 0; for( S32 u = 0; u < mWidth; u++ ) { @@ -405,25 +382,6 @@ void LLTexLayerSetBuffer::readBackAndUpload(U8* baked_bump_data) } } else - { - S32 i = 0; - for( S32 u = 0; u < mWidth; u++ ) - { - for( S32 v = 0; v < mHeight; v++ ) - { - baked_image_data[5*i + 0] = baked_color_data[4*i + 0]; - baked_image_data[5*i + 1] = baked_color_data[4*i + 1]; - baked_image_data[5*i + 2] = baked_color_data[4*i + 2]; - baked_image_data[5*i + 3] = 255; // reserve for alpha - baked_image_data[5*i + 4] = baked_mask_data[i]; - i++; - } - } - } - } - else - { - if (mTexLayerSet->getBodyRegion() == "skirt" || mTexLayerSet->getBodyRegion() == "hair") { S32 i = 0; for( S32 u = 0; u < mWidth; u++ ) @@ -438,22 +396,6 @@ void LLTexLayerSetBuffer::readBackAndUpload(U8* baked_bump_data) } } } - else - { - S32 i = 0; - for( S32 u = 0; u < mWidth; u++ ) - { - for( S32 v = 0; v < mHeight; v++ ) - { - baked_image_data[4*i + 0] = baked_color_data[4*i + 0]; - baked_image_data[4*i + 1] = baked_color_data[4*i + 1]; - baked_image_data[4*i + 2] = baked_color_data[4*i + 2]; - baked_image_data[4*i + 3] = 255; // eyes should have no mask - reserve for alpha - i++; - } - } - } - } LLPointer<LLImageJ2C> compressedImage = new LLImageJ2C; compressedImage->setRate(0.f); @@ -485,7 +427,8 @@ void LLTexLayerSetBuffer::readBackAndUpload(U8* baked_bump_data) if( valid ) { // baked_upload_data is owned by the responder and deleted after the request completes - LLBakedUploadData* baked_upload_data = new LLBakedUploadData( gAgent.getAvatarObject(), this, asset_id ); + LLBakedUploadData* baked_upload_data = + new LLBakedUploadData(gAgent.getAvatarObject(), this->mTexLayerSet, asset_id); mUploadID = asset_id; // upload the image @@ -531,62 +474,74 @@ void LLTexLayerSetBuffer::readBackAndUpload(U8* baked_bump_data) } delete [] baked_color_data; - delete [] baked_bump_data; } // static -void LLTexLayerSetBuffer::onTextureUploadComplete(const LLUUID& uuid, void* userdata, S32 result, LLExtStat ext_status) // StoreAssetData callback (not fixed) +void LLTexLayerSetBuffer::onTextureUploadComplete(const LLUUID& uuid, + void* userdata, + S32 result, + LLExtStat ext_status) // StoreAssetData callback (not fixed) { LLBakedUploadData* baked_upload_data = (LLBakedUploadData*)userdata; - LLVOAvatar* avatar = gAgent.getAvatarObject(); + LLVOAvatarSelf* avatar = gAgent.getAvatarObject(); - if (0 == result && avatar && !avatar->isDead()) + if (0 == result && + avatar && + !avatar->isDead() && + baked_upload_data->mAvatar == avatar && // Sanity check: only the user's avatar should be uploading textures. + baked_upload_data->mTexLayerSet->hasComposite() + ) { - // Sanity check: only the user's avatar should be uploading textures. - if( baked_upload_data->mAvatar == avatar ) + LLTexLayerSetBuffer* layerset_buffer = baked_upload_data->mTexLayerSet->getComposite(); + + if (layerset_buffer->mUploadID.isNull()) { - // Because the avatar is still valid, it's layerset buffers should be valid also. - LLTexLayerSetBuffer* layerset_buffer = baked_upload_data->mLayerSetBuffer; + // The upload got canceled, we should be in the + // process of baking a new texture so request an + // upload with the new data + + // BAP: does this really belong in this callback, as + // opposed to where the cancellation takes place? + // suspect this does nothing. + layerset_buffer->requestUpload(); + } + else if (baked_upload_data->mID == layerset_buffer->mUploadID) + { + // This is the upload we're currently waiting for. + layerset_buffer->mUploadID.setNull(); layerset_buffer->mUploadPending = FALSE; - - if (layerset_buffer->mUploadID.isNull()) - { - // The upload got canceled, we should be in the process of baking a new texture - // so request an upload with the new data - layerset_buffer->requestUpload(); - } - else if( baked_upload_data->mID == layerset_buffer->mUploadID ) - { - // This is the upload we're currently waiting for. - layerset_buffer->mUploadID.setNull(); - if( result >= 0 ) - { - ETextureIndex baked_te = avatar->getBakedTE( layerset_buffer->mTexLayerSet ); - U64 now = LLFrameTimer::getTotalTime(); // Record starting time - llinfos << "Baked texture upload took " << (S32)((now - baked_upload_data->mStartTime) / 1000) << " ms" << llendl; - avatar->setNewBakedTexture( baked_te, uuid ); - } - else - { - llinfos << "Baked upload failed. Reason: " << result << llendl; - // *FIX: retry upload after n seconds, asset server could be busy - } + if (result >= 0) + { + LLVOAvatarDefines::ETextureIndex baked_te = avatar->getBakedTE(layerset_buffer->mTexLayerSet); + // Update baked texture info with the new UUID + U64 now = LLFrameTimer::getTotalTime(); // Record starting time + llinfos << "Baked texture upload took " << (S32)((now - baked_upload_data->mStartTime) / 1000) << " ms" << llendl; + avatar->setNewBakedTexture(baked_te, uuid); } else - { - llinfos << "Received baked texture out of date, ignored." << llendl; + { + // Avatar appearance is changing, ignore the upload results + llinfos << "Baked upload failed. Reason: " << result << llendl; + // *FIX: retry upload after n seconds, asset server could be busy } - - avatar->dirtyMesh(); } + else + { + llinfos << "Received baked texture out of date, ignored." << llendl; + } + + avatar->dirtyMesh(); } else { - // Baked texture failed to upload, but since we didn't set the new baked texture, it means that they'll - // try and rebake it at some point in the future (after login?) + // Baked texture failed to upload (in which case since we + // didn't set the new baked texture, it means that they'll try + // and rebake it at some point in the future (after login?)), + // or this response to upload is out of date, in which case a + // current response should be on the way or already processed. llwarns << "Baked upload failed" << llendl; } @@ -619,8 +574,7 @@ void LLTexLayerSetBuffer::bindBumpTexture( U32 stage ) // An ordered set of texture layers that get composited into a single texture. //----------------------------------------------------------------------------- -LLTexLayerSetInfo::LLTexLayerSetInfo( ) - : +LLTexLayerSetInfo::LLTexLayerSetInfo() : mBodyRegion( "" ), mWidth( 512 ), mHeight( 512 ), @@ -685,6 +639,19 @@ BOOL LLTexLayerSetInfo::parseXml(LLXmlTreeNode* node) return TRUE; } +// creates visual params without generating layersets or layers +void LLTexLayerSetInfo::createVisualParams(LLVOAvatar *avatar) +{ + //layer_info_list_t mLayerInfoList; + for (layer_info_list_t::iterator layer_iter = mLayerInfoList.begin(); + layer_iter != mLayerInfoList.end(); + layer_iter++) + { + LLTexLayerInfo *layer_info = *layer_iter; + layer_info->createVisualParams(avatar); + } +} + //----------------------------------------------------------------------------- // LLTexLayerSet // An ordered set of texture layers that get composited into a single texture. @@ -692,8 +659,7 @@ BOOL LLTexLayerSetInfo::parseXml(LLXmlTreeNode* node) BOOL LLTexLayerSet::sHasCaches = FALSE; -LLTexLayerSet::LLTexLayerSet( LLVOAvatar* avatar ) - : +LLTexLayerSet::LLTexLayerSet(LLVOAvatarSelf* const avatar) : mComposite( NULL ), mAvatar( avatar ), mUpdatesEnabled( FALSE ), @@ -704,7 +670,9 @@ LLTexLayerSet::LLTexLayerSet( LLVOAvatar* avatar ) LLTexLayerSet::~LLTexLayerSet() { + deleteCaches(); std::for_each(mLayerList.begin(), mLayerList.end(), DeletePointer()); + std::for_each(mMaskLayerList.begin(), mMaskLayerList.end(), DeletePointer()); delete mComposite; } @@ -712,15 +680,16 @@ LLTexLayerSet::~LLTexLayerSet() // setInfo //----------------------------------------------------------------------------- -BOOL LLTexLayerSet::setInfo(LLTexLayerSetInfo *info) +BOOL LLTexLayerSet::setInfo(const LLTexLayerSetInfo *info) { llassert(mInfo == NULL); mInfo = info; //mID = info->mID; // No ID - LLTexLayerSetInfo::layer_info_list_t::iterator iter; mLayerList.reserve(info->mLayerInfoList.size()); - for (iter = info->mLayerInfoList.begin(); iter != info->mLayerInfoList.end(); iter++) + for (LLTexLayerSetInfo::layer_info_list_t::const_iterator iter = info->mLayerInfoList.begin(); + iter != info->mLayerInfoList.end(); + iter++) { LLTexLayer* layer = new LLTexLayer( this ); if (!layer->setInfo(*iter)) @@ -728,8 +697,15 @@ BOOL LLTexLayerSet::setInfo(LLTexLayerSetInfo *info) mInfo = NULL; return FALSE; } + if (!layer->isVisibilityMask()) + { mLayerList.push_back( layer ); } + else + { + mMaskLayerList.push_back(layer); + } + } requestUpdate(); @@ -768,19 +744,26 @@ void LLTexLayerSet::deleteCaches() LLTexLayer* layer = *iter; layer->deleteCaches(); } + for (layer_list_t::iterator iter = mMaskLayerList.begin(); iter != mMaskLayerList.end(); iter++) + { + LLTexLayer* layer = *iter; + layer->deleteCaches(); + } } // Returns TRUE if at least one packet of data has been received for each of the textures that this layerset depends on. -BOOL LLTexLayerSet::isLocalTextureDataAvailable() +BOOL LLTexLayerSet::isLocalTextureDataAvailable() const { - return mAvatar->isLocalTextureDataAvailable( this ); + if (!mAvatar->isSelf()) return FALSE; + return ((LLVOAvatarSelf *)mAvatar)->isLocalTextureDataAvailable(this); } // Returns TRUE if all of the data for the textures that this layerset depends on have arrived. -BOOL LLTexLayerSet::isLocalTextureDataFinal() +BOOL LLTexLayerSet::isLocalTextureDataFinal() const { - return mAvatar->isLocalTextureDataFinal( this ); + if (!mAvatar->isSelf()) return FALSE; + return ((LLVOAvatarSelf *)mAvatar)->isLocalTextureDataFinal(this); } @@ -792,62 +775,26 @@ BOOL LLTexLayerSet::render( S32 x, S32 y, S32 width, S32 height ) LLGLDepthTest gls_depth(GL_FALSE, GL_FALSE); gGL.setColorMask(true, true); + BOOL render_morph = mAvatar->morphMaskNeedsUpdate(mBakedTexIndex); + // composite color layers for( layer_list_t::iterator iter = mLayerList.begin(); iter != mLayerList.end(); iter++ ) { LLTexLayer* layer = *iter; - if( layer->getRenderPass() == RP_COLOR ) + if (layer->getRenderPass() == LLTexLayer::RP_COLOR) { gGL.flush(); - success &= layer->render( x, y, width, height ); + success &= layer->render(x, y, width, height, render_morph); gGL.flush(); - } - } - - // (Optionally) replace alpha with a single component image from a tga file. - if( !getInfo()->mStaticAlphaFileName.empty() ) - { - LLGLSNoAlphaTest gls_no_alpha_test; - gGL.flush(); - gGL.setColorMask(false, true); - gGL.setSceneBlendType(LLRender::BT_REPLACE); - - { - LLImageGL* image_gl = gTexStaticImageList.getImageGL( getInfo()->mStaticAlphaFileName, TRUE ); - if( image_gl ) - { - LLGLSUIDefault gls_ui; - gGL.getTexUnit(0)->bind(image_gl); - gGL.getTexUnit(0)->setTextureBlendType( LLTexUnit::TB_REPLACE ); - gl_rect_2d_simple_tex( width, height ); - } - else + if (layer->isMorphValid()) { - success = FALSE; + mAvatar->setMorphMasksValid(TRUE, mBakedTexIndex); } } - gGL.flush(); - gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); - - gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT); - gGL.setColorMask(true, true); - gGL.setSceneBlendType(LLRender::BT_ALPHA); } - else - if( getInfo()->mClearAlpha ) - { - // Set the alpha channel to one (clean up after previous blending) - LLGLDisable no_alpha(GL_ALPHA_TEST); - gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); - gGL.color4f( 0.f, 0.f, 0.f, 1.f ); - gGL.flush(); - gGL.setColorMask(false, true); + + renderAlphaMaskTextures(width, height, false); - gl_rect_2d_simple( width, height ); - - gGL.flush(); - gGL.setColorMask(true, true); - } stop_glerror(); return success; @@ -865,9 +812,9 @@ BOOL LLTexLayerSet::renderBump( S32 x, S32 y, S32 width, S32 height ) for( layer_list_t::iterator iter = mLayerList.begin(); iter != mLayerList.end(); iter++ ) { LLTexLayer* layer = *iter; - if( layer->getRenderPass() == RP_BUMP ) + if (layer->getRenderPass() == LLTexLayer::RP_BUMP) { - success &= layer->render( x, y, width, height ); +// success &= layer->render(x, y, width, height); } } @@ -885,6 +832,16 @@ BOOL LLTexLayerSet::renderBump( S32 x, S32 y, S32 width, S32 height ) return success; } +BOOL LLTexLayerSet::isBodyRegion(const std::string& region) const +{ + return mInfo->mBodyRegion == region; +} + +const std::string LLTexLayerSet::getBodyRegion() const +{ + return mInfo->mBodyRegion; +} + void LLTexLayerSet::requestUpdate() { if( mUpdatesEnabled ) @@ -917,8 +874,9 @@ void LLTexLayerSet::createComposite() // Composite other avatars at reduced resolution if( !mAvatar->isSelf() ) { - width /= 2; - height /= 2; + // TODO: replace with sanity check to ensure not called for non-self avatars +// width /= 2; +// height /= 2; } mComposite = new LLTexLayerSetBuffer( this, width, height, mHasBump ); } @@ -951,12 +909,14 @@ LLTexLayerSetBuffer* LLTexLayerSet::getComposite() return mComposite; } -void LLTexLayerSet::gatherAlphaMasks(U8 *data, S32 width, S32 height) +void LLTexLayerSet::gatherMorphMaskAlpha(U8 *data, S32 width, S32 height) { S32 size = width * height; memset(data, 255, width * height); + BOOL render_morph = mAvatar->morphMaskNeedsUpdate(mBakedTexIndex); + for( layer_list_t::iterator iter = mLayerList.begin(); iter != mLayerList.end(); iter++ ) { LLTexLayer* layer = *iter; @@ -965,8 +925,10 @@ void LLTexLayerSet::gatherAlphaMasks(U8 *data, S32 width, S32 height) { LLColor4 net_color; layer->findNetColor( &net_color ); + // TODO: eliminate need for layer morph mask valid flag layer->invalidateMorphMasks(); - layer->renderAlphaMasks(mComposite->getOriginX(), mComposite->getOriginY(), width, height, &net_color); + mAvatar->invalidateMorphMasks(mBakedTexIndex); + layer->renderMorphMasks(mComposite->getOriginX(), mComposite->getOriginY(), width, height, net_color, render_morph); alphaData = layer->getAlphaData(); } if (alphaData) @@ -981,35 +943,111 @@ void LLTexLayerSet::gatherAlphaMasks(U8 *data, S32 width, S32 height) } } } + + // Set alpha back to that of our alpha masks. + renderAlphaMaskTextures(width, height, true); +} + +void LLTexLayerSet::renderAlphaMaskTextures(S32 width, S32 height, bool forceClear) +{ + const LLTexLayerSetInfo *info = getInfo(); + + gGL.setColorMask(false, true); + gGL.setSceneBlendType(LLRender::BT_REPLACE); + // (Optionally) replace alpha with a single component image from a tga file. + if (!info->mStaticAlphaFileName.empty() && mMaskLayerList.empty()) + { + LLGLSNoAlphaTest gls_no_alpha_test; + gGL.flush(); + { + LLImageGL* image_gl = LLTexLayerStaticImageList::getInstance()->getImageGL(info->mStaticAlphaFileName, TRUE); + if( image_gl ) + { + LLGLSUIDefault gls_ui; + gGL.getTexUnit(0)->bind(image_gl); + gGL.getTexUnit(0)->setTextureBlendType( LLTexUnit::TB_REPLACE ); + gl_rect_2d_simple_tex( width, height ); + } + } + gGL.flush(); + } + else if (forceClear || info->mClearAlpha || (mMaskLayerList.size() > 0)) + { + // Set the alpha channel to one (clean up after previous blending) + gGL.flush(); + LLGLDisable no_alpha(GL_ALPHA_TEST); + gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); + gGL.color4f( 0.f, 0.f, 0.f, 1.f ); + + gl_rect_2d_simple( width, height ); + + gGL.flush(); + } + + // (Optional) Mask out part of the baked texture with alpha masks + // will still have an effect even if mClearAlpha is set or the alpha component was replaced + if (mMaskLayerList.size() > 0) + { + gGL.setSceneBlendType(LLRender::BT_MULT_ALPHA); + gGL.getTexUnit(0)->setTextureBlendType( LLTexUnit::TB_REPLACE ); + for (layer_list_t::iterator iter = mMaskLayerList.begin(); iter != mMaskLayerList.end(); iter++) + { + LLTexLayer* layer = *iter; + gGL.flush(); + layer->blendAlphaTexture(width, height); + gGL.flush(); + } + + } + + gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); + + gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT); + gGL.setColorMask(true, true); + gGL.setSceneBlendType(LLRender::BT_ALPHA); } void LLTexLayerSet::applyMorphMask(U8* tex_data, S32 width, S32 height, S32 num_components) +{ + mAvatar->applyMorphMask(tex_data, width, height, num_components, mBakedTexIndex); +} + +//----------------------------------------------------------------------------- +// finds a specific layer based on a passed in name +//----------------------------------------------------------------------------- +LLTexLayer* LLTexLayerSet::findLayerByName(std::string name) { for( layer_list_t::iterator iter = mLayerList.begin(); iter != mLayerList.end(); iter++ ) { LLTexLayer* layer = *iter; - layer->applyMorphMask(tex_data, width, height, num_components); + + if (layer->getName().compare(name) == 0) + { + return layer; + } } + return NULL; } + //----------------------------------------------------------------------------- // LLTexLayerInfo //----------------------------------------------------------------------------- -LLTexLayerInfo::LLTexLayerInfo( ) - : +LLTexLayerInfo::LLTexLayerInfo() : mWriteAllChannels( FALSE ), - mRenderPass( RP_COLOR ), + mRenderPass(LLTexLayer::RP_COLOR), mFixedColor( 0.f, 0.f, 0.f, 0.f ), mLocalTexture( -1 ), mStaticImageIsMask( FALSE ), - mUseLocalTextureAlphaOnly( FALSE ) + mUseLocalTextureAlphaOnly(FALSE), + mIsVisibilityMask(FALSE) { } LLTexLayerInfo::~LLTexLayerInfo( ) { - std::for_each(mColorInfoList.begin(), mColorInfoList.end(), DeletePointer()); - std::for_each(mAlphaInfoList.begin(), mAlphaInfoList.end(), DeletePointer()); + std::for_each(mParamColorInfoList.begin(), mParamColorInfoList.end(), DeletePointer()); + std::for_each(mParamAlphaInfoList.begin(), mParamAlphaInfoList.end(), DeletePointer()); } BOOL LLTexLayerInfo::parseXml(LLXmlTreeNode* node) @@ -1032,7 +1070,7 @@ BOOL LLTexLayerInfo::parseXml(LLXmlTreeNode* node) { if( render_pass_name == "bump" ) { - mRenderPass = RP_BUMP; + mRenderPass = LLTexLayer::RP_BUMP; } } @@ -1041,6 +1079,14 @@ BOOL LLTexLayerInfo::parseXml(LLXmlTreeNode* node) static LLStdStringHandle global_color_string = LLXmlTree::addAttributeString("global_color"); node->getFastAttributeString( global_color_string, mGlobalColor ); + // Visibility mask (optional) + BOOL is_visibility; + static LLStdStringHandle visibility_mask_string = LLXmlTree::addAttributeString("visibility_mask"); + if (node->getFastAttributeBOOL(visibility_mask_string, is_visibility)) + { + mIsVisibilityMask = is_visibility; + } + // color attribute (optional) LLColor4U color4u; static LLStdStringHandle fixed_color_string = LLXmlTree::addAttributeString("fixed_color"); @@ -1054,7 +1100,7 @@ BOOL LLTexLayerInfo::parseXml(LLXmlTreeNode* node) texture_node; texture_node = node->getNextNamedChild()) { - std::string local_texture; + std::string local_texture_name; static LLStdStringHandle tga_file_string = LLXmlTree::addAttributeString("tga_file"); static LLStdStringHandle local_texture_string = LLXmlTree::addAttributeString("local_texture"); static LLStdStringHandle file_is_mask_string = LLXmlTree::addAttributeString("file_is_mask"); @@ -1063,73 +1109,27 @@ BOOL LLTexLayerInfo::parseXml(LLXmlTreeNode* node) { texture_node->getFastAttributeBOOL( file_is_mask_string, mStaticImageIsMask ); } - else if( texture_node->getFastAttributeString( local_texture_string, local_texture ) ) + else if (texture_node->getFastAttributeString(local_texture_string, local_texture_name)) { texture_node->getFastAttributeBOOL( local_texture_alpha_only_string, mUseLocalTextureAlphaOnly ); - if( "upper_shirt" == local_texture ) - { - mLocalTexture = TEX_UPPER_SHIRT; - } - else if( "upper_bodypaint" == local_texture ) - { - mLocalTexture = TEX_UPPER_BODYPAINT; - } - else if( "lower_pants" == local_texture ) - { - mLocalTexture = TEX_LOWER_PANTS; - } - else if( "lower_bodypaint" == local_texture ) - { - mLocalTexture = TEX_LOWER_BODYPAINT; - } - else if( "lower_shoes" == local_texture ) - { - mLocalTexture = TEX_LOWER_SHOES; - } - else if( "head_bodypaint" == local_texture ) - { - mLocalTexture = TEX_HEAD_BODYPAINT; - } - else if( "lower_socks" == local_texture ) - { - mLocalTexture = TEX_LOWER_SOCKS; - } - else if( "upper_jacket" == local_texture ) - { - mLocalTexture = TEX_UPPER_JACKET; - } - else if( "lower_jacket" == local_texture ) - { - mLocalTexture = TEX_LOWER_JACKET; - } - else if( "upper_gloves" == local_texture ) - { - mLocalTexture = TEX_UPPER_GLOVES; - } - else if( "upper_undershirt" == local_texture ) - { - mLocalTexture = TEX_UPPER_UNDERSHIRT; - } - else if( "lower_underpants" == local_texture ) + /* if ("upper_shirt" == local_texture_name) + mLocalTexture = TEX_UPPER_SHIRT; */ + mLocalTexture = TEX_NUM_INDICES; + for (LLVOAvatarDictionary::Textures::const_iterator iter = LLVOAvatarDictionary::getInstance()->getTextures().begin(); + iter != LLVOAvatarDictionary::getInstance()->getTextures().end(); + iter++) { - mLocalTexture = TEX_LOWER_UNDERPANTS; - } - else if( "eyes_iris" == local_texture ) + const LLVOAvatarDictionary::TextureEntry *texture_dict = iter->second; + if (local_texture_name == texture_dict->mName) { - mLocalTexture = TEX_EYES_IRIS; + mLocalTexture = iter->first; + break; } - else if( "skirt" == local_texture ) - { - mLocalTexture = TEX_SKIRT; - } - else if( "hair_grain" == local_texture ) - { - mLocalTexture = TEX_HAIR; } - else + if (mLocalTexture == TEX_NUM_INDICES) { - llwarns << "<texture> element has invalid local_texure attribute: " << mName << " " << local_texture << llendl; + llwarns << "<texture> element has invalid local_texure attribute: " << mName << " " << local_texture_name << llendl; return FALSE; } } @@ -1163,13 +1163,13 @@ BOOL LLTexLayerInfo::parseXml(LLXmlTreeNode* node) if( child->getChildByName( "param_color" ) ) { // <param><param_color/></param> - LLTexParamColorInfo* info = new LLTexParamColorInfo( ); + LLTexLayerParamColorInfo* info = new LLTexLayerParamColorInfo(); if (!info->parseXml(child)) { delete info; return FALSE; } - mColorInfoList.push_back( info ); + mParamColorInfoList.push_back(info); } else if( child->getChildByName( "param_alpha" ) ) { @@ -1180,13 +1180,47 @@ BOOL LLTexLayerInfo::parseXml(LLXmlTreeNode* node) delete info; return FALSE; } - mAlphaInfoList.push_back( info ); + mParamAlphaInfoList.push_back(info); } } return TRUE; } +BOOL LLTexLayerInfo::createVisualParams(LLVOAvatar *avatar) +{ + BOOL success = TRUE; + for (param_color_info_list_t::iterator color_info_iter = mParamColorInfoList.begin(); + color_info_iter != mParamColorInfoList.end(); + color_info_iter++) + { + LLTexLayerParamColorInfo * color_info = *color_info_iter; + LLTexLayerParamColor* param_color = new LLTexLayerParamColor(avatar); + if (!param_color->setInfo(color_info)) + { + llwarns << "NULL TexLayer Color Param could not be added to visual param list. Deleting." << llendl; + delete param_color; + success = FALSE; + } + } + + for (param_alpha_info_list_t::iterator alpha_info_iter = mParamAlphaInfoList.begin(); + alpha_info_iter != mParamAlphaInfoList.end(); + alpha_info_iter++) + { + LLTexLayerParamAlphaInfo * alpha_info = *alpha_info_iter; + LLTexLayerParamAlpha* param_alpha = new LLTexLayerParamAlpha(avatar); + if (!param_alpha->setInfo(alpha_info)) + { + llwarns << "NULL TexLayer Alpha Param could not be added to visual param list. Deleting." << llendl; + delete param_alpha; + success = FALSE; + } + } + + return success; +} + //----------------------------------------------------------------------------- // LLTexLayer // A single texture layer, consisting of: @@ -1200,12 +1234,12 @@ BOOL LLTexLayerInfo::parseXml(LLXmlTreeNode* node) // * a texture entry index (TE) // * (optional) one or more alpha parameters (weighted alpha textures) //----------------------------------------------------------------------------- -LLTexLayer::LLTexLayer( LLTexLayerSet* layer_set ) - : +LLTexLayer::LLTexLayer(LLTexLayerSet* layer_set) : mTexLayerSet( layer_set ), mMorphMasksValid( FALSE ), mStaticImageInvalid( FALSE ), - mInfo( NULL ) + mInfo(NULL), + mHasMorph(FALSE) { } @@ -1222,45 +1256,28 @@ LLTexLayer::~LLTexLayer() U8* alpha_data = iter->second; delete [] alpha_data; } + } //----------------------------------------------------------------------------- // setInfo //----------------------------------------------------------------------------- -BOOL LLTexLayer::setInfo(LLTexLayerInfo* info) +BOOL LLTexLayer::setInfo(const LLTexLayerInfo* info) { llassert(mInfo == NULL); mInfo = info; //mID = info->mID; // No ID - if (info->mRenderPass == RP_BUMP) + if (info->mRenderPass == LLTexLayer::RP_BUMP) mTexLayerSet->setBump(TRUE); + mParamColorList.reserve(mInfo->mParamColorInfoList.size()); + for (param_color_info_list_t::const_iterator iter = mInfo->mParamColorInfoList.begin(); + iter != mInfo->mParamColorInfoList.end(); + iter++) { - LLTexLayerInfo::morph_name_list_t::iterator iter; - for (iter = mInfo->mMorphNameList.begin(); iter != mInfo->mMorphNameList.end(); iter++) - { - // *FIX: we assume that the referenced visual param is a - // morph target, need a better way of actually looking - // this up. - LLPolyMorphTarget *morph_param; - std::string *name = &(iter->first); - morph_param = (LLPolyMorphTarget *)(getTexLayerSet()->getAvatar()->getVisualParam(name->c_str())); - if (morph_param) - { - BOOL invert = iter->second; - addMaskedMorph(morph_param, invert); - } - } - } - - { - LLTexLayerInfo::color_info_list_t::iterator iter; - mParamColorList.reserve(mInfo->mColorInfoList.size()); - for (iter = mInfo->mColorInfoList.begin(); iter != mInfo->mColorInfoList.end(); iter++) - { - LLTexParamColor* param_color = new LLTexParamColor( this ); + LLTexLayerParamColor* param_color = new LLTexLayerParamColor(this); if (!param_color->setInfo(*iter)) { mInfo = NULL; @@ -1268,11 +1285,11 @@ BOOL LLTexLayer::setInfo(LLTexLayerInfo* info) } mParamColorList.push_back( param_color ); } - } - { - LLTexLayerInfo::alpha_info_list_t::iterator iter; - mParamAlphaList.reserve(mInfo->mAlphaInfoList.size()); - for (iter = mInfo->mAlphaInfoList.begin(); iter != mInfo->mAlphaInfoList.end(); iter++) + + mParamAlphaList.reserve(mInfo->mParamAlphaInfoList.size()); + for (param_alpha_info_list_t::const_iterator iter = mInfo->mParamAlphaInfoList.begin(); + iter != mInfo->mParamAlphaInfoList.end(); + iter++) { LLTexLayerParamAlpha* param_alpha = new LLTexLayerParamAlpha( this ); if (!param_alpha->setInfo(*iter)) @@ -1282,84 +1299,83 @@ BOOL LLTexLayer::setInfo(LLTexLayerInfo* info) } mParamAlphaList.push_back( param_alpha ); } - } return TRUE; } -#if 0 // obsolete -//----------------------------------------------------------------------------- -// parseData -//----------------------------------------------------------------------------- -BOOL LLTexLayer::parseData( LLXmlTreeNode* node ) +//static +void LLTexLayer::calculateTexLayerColor(const param_color_list_t ¶m_list, LLColor4 &net_color) { - LLTexLayerInfo *info = new LLTexLayerInfo; - - if (!info->parseXml(node)) + for (param_color_list_t::const_iterator iter = param_list.begin(); + iter != param_list.end(); iter++) +{ + const LLTexLayerParamColor* param = *iter; + LLColor4 param_net = param->getNetColor(); + const LLTexLayerParamColorInfo *info = (LLTexLayerParamColorInfo *)param->getInfo(); + switch(info->getOperation()) { - delete info; - return FALSE; + case LLTexLayerParamColor::OP_ADD: + net_color += param_net; + break; + case LLTexLayerParamColor::OP_MULTIPLY: + net_color = net_color * param_net; + break; + case LLTexLayerParamColor::OP_BLEND: + net_color = lerp(net_color, param_net, param->getWeight()); + break; + default: + llassert(0); + break; } - if (!setInfo(info)) - { - delete info; - return FALSE; } - return TRUE; + net_color.clamp(); } -#endif - -//----------------------------------------------------------------------------- - void LLTexLayer::deleteCaches() { - for( alpha_list_t::iterator iter = mParamAlphaList.begin(); + for (param_alpha_list_t::iterator iter = mParamAlphaList.begin(); iter != mParamAlphaList.end(); iter++ ) { LLTexLayerParamAlpha* param = *iter; param->deleteCaches(); } - mStaticImageRaw = NULL; } -BOOL LLTexLayer::render( S32 x, S32 y, S32 width, S32 height ) +BOOL LLTexLayer::render(S32 x, S32 y, S32 width, S32 height, BOOL render_morph) { LLGLEnable color_mat(GL_COLOR_MATERIAL); gPipeline.disableLights(); - BOOL success = TRUE; - - BOOL color_specified = FALSE; - BOOL alpha_mask_specified = FALSE; - LLColor4 net_color; - color_specified = findNetColor( &net_color ); - + BOOL color_specified = findNetColor(&net_color); + if (mTexLayerSet->getAvatar()->mIsDummy) { color_specified = true; net_color = LLVOAvatar::getDummyColor(); } + BOOL success = TRUE; + // If you can't see the layer, don't render it. if( is_approx_zero( net_color.mV[VW] ) ) { return success; } - alpha_list_t::iterator iter = mParamAlphaList.begin(); + BOOL alpha_mask_specified = FALSE; + param_alpha_list_t::const_iterator iter = mParamAlphaList.begin(); if( iter != mParamAlphaList.end() ) { // If we have alpha masks, but we're skipping all of them, skip the whole layer. // However, we can't do this optimization if we have morph masks that need updating. - if( mMaskedMorphs.empty() ) + if (!mHasMorph) { BOOL skip_layer = TRUE; while( iter != mParamAlphaList.end() ) { - LLTexLayerParamAlpha* param = *iter; + const LLTexLayerParamAlpha* param = *iter; if( !param->getSkip() ) { @@ -1376,7 +1392,7 @@ BOOL LLTexLayer::render( S32 x, S32 y, S32 width, S32 height ) } } - renderAlphaMasks( x, y, width, height, &net_color ); + renderMorphMasks(x, y, width, height, net_color, render_morph); alpha_mask_specified = TRUE; gGL.flush(); gGL.blendFunc(LLRender::BF_DEST_ALPHA, LLRender::BF_ONE_MINUS_DEST_ALPHA); @@ -1421,7 +1437,7 @@ BOOL LLTexLayer::render( S32 x, S32 y, S32 width, S32 height ) if( !getInfo()->mStaticImageFileName.empty() ) { { - LLImageGL* image_gl = gTexStaticImageList.getImageGL( getInfo()->mStaticImageFileName, getInfo()->mStaticImageIsMask ); + LLImageGL* image_gl = LLTexLayerStaticImageList::getInstance()->getImageGL(getInfo()->mStaticImageFileName, getInfo()->mStaticImageIsMask); if( image_gl ) { gGL.getTexUnit(0)->bind(image_gl); @@ -1435,14 +1451,14 @@ BOOL LLTexLayer::render( S32 x, S32 y, S32 width, S32 height ) } } - if( ((-1 == getInfo()->mLocalTexture) || + if(((-1 == getInfo()->mLocalTexture) || getInfo()->mUseLocalTextureAlphaOnly) && getInfo()->mStaticImageFileName.empty() && color_specified ) { LLGLDisable no_alpha(GL_ALPHA_TEST); gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); - gGL.color4fv( net_color.mV); + gGL.color4fv( net_color.mV ); gl_rect_2d_simple( width, height ); } @@ -1467,9 +1483,9 @@ U8* LLTexLayer::getAlphaData() const LLUUID& uuid = mTexLayerSet->getAvatar()->getLocalTextureID((ETextureIndex)getInfo()->mLocalTexture); alpha_mask_crc.update((U8*)(&uuid.mData), UUID_BYTES); - for( alpha_list_t::iterator iter = mParamAlphaList.begin(); iter != mParamAlphaList.end(); iter++ ) + for (param_alpha_list_t::const_iterator iter = mParamAlphaList.begin(); iter != mParamAlphaList.end(); iter++) { - LLTexLayerParamAlpha* param = *iter; + const LLTexLayerParamAlpha* param = *iter; F32 param_weight = param->getWeight(); alpha_mask_crc.update((U8*)¶m_weight, sizeof(F32)); } @@ -1480,7 +1496,7 @@ U8* LLTexLayer::getAlphaData() return (iter2 == mAlphaCache.end()) ? 0 : iter2->second; } -BOOL LLTexLayer::findNetColor( LLColor4* net_color ) +BOOL LLTexLayer::findNetColor(LLColor4* net_color) const { // Color is either: // * one or more color parameters (weighted colors) (which may make use of a global color or fixed color) @@ -1494,8 +1510,7 @@ BOOL LLTexLayer::findNetColor( LLColor4* net_color ) { net_color->setVec( mTexLayerSet->getAvatar()->getGlobalColor( getInfo()->mGlobalColor ) ); } - else - if( getInfo()->mFixedColor.mV[VW] ) + else if (getInfo()->mFixedColor.mV[VW]) { net_color->setVec( getInfo()->mFixedColor ); } @@ -1504,30 +1519,7 @@ BOOL LLTexLayer::findNetColor( LLColor4* net_color ) net_color->setVec( 0.f, 0.f, 0.f, 0.f ); } - for( color_list_t::iterator iter = mParamColorList.begin(); - iter != mParamColorList.end(); iter++ ) - { - LLTexParamColor* param = *iter; - LLColor4 param_net = param->getNetColor(); - switch( param->getOperation() ) - { - case OP_ADD: - *net_color += param_net; - break; - case OP_MULTIPLY: - net_color->mV[VX] *= param_net.mV[VX]; - net_color->mV[VY] *= param_net.mV[VY]; - net_color->mV[VZ] *= param_net.mV[VZ]; - net_color->mV[VW] *= param_net.mV[VW]; - break; - case OP_BLEND: - net_color->setVec( lerp(*net_color, param_net, param->getWeight()) ); - break; - default: - llassert(0); - break; - } - } + calculateTexLayerColor(mParamColorList, *net_color); return TRUE; } @@ -1548,8 +1540,51 @@ BOOL LLTexLayer::findNetColor( LLColor4* net_color ) return FALSE; // No need to draw a separate colored polygon } +BOOL LLTexLayer::blendAlphaTexture(S32 width, S32 height) +{ + BOOL success = TRUE; + + gGL.flush(); + + if( !getInfo()->mStaticImageFileName.empty() ) + { + LLImageGL* image_gl = LLTexLayerStaticImageList::getInstance()->getImageGL( getInfo()->mStaticImageFileName, getInfo()->mStaticImageIsMask ); + if( image_gl ) + { + LLGLSNoAlphaTest gls_no_alpha_test; + gGL.getTexUnit(0)->bind(image_gl); + gl_rect_2d_simple_tex( width, height ); + gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); + } + else + { + success = FALSE; + } + } + else + { + if (getInfo()->mLocalTexture >=0 && getInfo()->mLocalTexture < TEX_NUM_INDICES) + { + LLImageGL* image_gl = NULL; + if (mTexLayerSet->getAvatar()->getLocalTextureGL((ETextureIndex)getInfo()->mLocalTexture, &image_gl)) + { + if (image_gl) + { + LLGLSNoAlphaTest gls_no_alpha_test; + gGL.getTexUnit(0)->bind(image_gl); + gl_rect_2d_simple_tex( width, height ); + gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); + success = TRUE; + } + } + } + } + + return success; +} + -BOOL LLTexLayer::renderAlphaMasks( S32 x, S32 y, S32 width, S32 height, LLColor4* colorp ) +BOOL LLTexLayer::renderMorphMasks(S32 x, S32 y, S32 width, S32 height, const LLColor4 &layer_color, BOOL render_morph) { BOOL success = TRUE; @@ -1557,9 +1592,7 @@ BOOL LLTexLayer::renderAlphaMasks( S32 x, S32 y, S32 width, S32 height, LLColor4 gGL.setColorMask(false, true); - alpha_list_t::iterator iter = mParamAlphaList.begin(); - LLTexLayerParamAlpha* first_param = *iter; - + LLTexLayerParamAlpha* first_param = *mParamAlphaList.begin(); // Note: if the first param is a mulitply, multiply against the current buffer's alpha if( !first_param || !first_param->getMultiplyBlend() ) { @@ -1577,8 +1610,7 @@ BOOL LLTexLayer::renderAlphaMasks( S32 x, S32 y, S32 width, S32 height, LLColor4 // Accumulate alphas LLGLSNoAlphaTest gls_no_alpha_test; gGL.color4f( 1.f, 1.f, 1.f, 1.f ); - - for( iter = mParamAlphaList.begin(); iter != mParamAlphaList.end(); iter++ ) + for (param_alpha_list_t::iterator iter = mParamAlphaList.begin(); iter != mParamAlphaList.end(); iter++) { LLTexLayerParamAlpha* param = *iter; success &= param->render( x, y, width, height ); @@ -1586,12 +1618,11 @@ BOOL LLTexLayer::renderAlphaMasks( S32 x, S32 y, S32 width, S32 height, LLColor4 // Approximates a min() function gGL.flush(); - gGL.blendFunc(LLRender::BF_DEST_ALPHA, LLRender::BF_ZERO); + gGL.setSceneBlendType(LLRender::BT_MULT_ALPHA); // Accumulate the alpha component of the texture if( getInfo()->mLocalTexture != -1 ) { - { LLImageGL* image_gl = NULL; if( mTexLayerSet->getAvatar()->getLocalTextureGL((ETextureIndex)getInfo()->mLocalTexture, &image_gl ) ) { @@ -1615,12 +1646,10 @@ BOOL LLTexLayer::renderAlphaMasks( S32 x, S32 y, S32 width, S32 height, LLColor4 success = FALSE; } } - } if( !getInfo()->mStaticImageFileName.empty() ) { - { - LLImageGL* image_gl = gTexStaticImageList.getImageGL( getInfo()->mStaticImageFileName, getInfo()->mStaticImageIsMask ); + LLImageGL* image_gl = LLTexLayerStaticImageList::getInstance()->getImageGL(getInfo()->mStaticImageFileName, getInfo()->mStaticImageIsMask); if( image_gl ) { if( (image_gl->getComponents() == 4) || @@ -1637,15 +1666,14 @@ BOOL LLTexLayer::renderAlphaMasks( S32 x, S32 y, S32 width, S32 height, LLColor4 success = FALSE; } } - } // Draw a rectangle with the layer color to multiply the alpha by that color's alpha. // Note: we're still using gGL.blendFunc( GL_DST_ALPHA, GL_ZERO ); - if( colorp->mV[VW] != 1.f ) + if (layer_color.mV[VW] != 1.f) { LLGLDisable no_alpha(GL_ALPHA_TEST); gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); - gGL.color4fv( colorp->mV ); + gGL.color4fv(layer_color.mV); gl_rect_2d_simple( width, height ); } @@ -1654,34 +1682,28 @@ BOOL LLTexLayer::renderAlphaMasks( S32 x, S32 y, S32 width, S32 height, LLColor4 gGL.setColorMask(true, true); - if (!mMorphMasksValid && !mMaskedMorphs.empty()) + if (render_morph && mHasMorph) { LLCRC alpha_mask_crc; const LLUUID& uuid = mTexLayerSet->getAvatar()->getLocalTextureID((ETextureIndex)getInfo()->mLocalTexture); alpha_mask_crc.update((U8*)(&uuid.mData), UUID_BYTES); - for( alpha_list_t::iterator iter = mParamAlphaList.begin(); iter != mParamAlphaList.end(); iter++ ) + for (param_alpha_list_t::const_iterator iter = mParamAlphaList.begin(); iter != mParamAlphaList.end(); iter++) { - LLTexLayerParamAlpha* param = *iter; + const LLTexLayerParamAlpha* param = *iter; F32 param_weight = param->getWeight(); alpha_mask_crc.update((U8*)¶m_weight, sizeof(F32)); } U32 cache_index = alpha_mask_crc.getCRC(); - - alpha_cache_t::iterator iter2 = mAlphaCache.find(cache_index); - U8* alpha_data; - if (iter2 != mAlphaCache.end()) - { - alpha_data = iter2->second; - } - else + U8* alpha_data = get_if_there(mAlphaCache,cache_index,(U8*)NULL); + if (!alpha_data) { // clear out a slot if we have filled our cache S32 max_cache_entries = getTexLayerSet()->getAvatar()->isSelf() ? 4 : 1; while ((S32)mAlphaCache.size() >= max_cache_entries) { - iter2 = mAlphaCache.begin(); // arbitrarily grab the first entry + alpha_cache_t::iterator iter2 = mAlphaCache.begin(); // arbitrarily grab the first entry alpha_data = iter2->second; delete [] alpha_data; mAlphaCache.erase(iter2); @@ -1694,28 +1716,12 @@ BOOL LLTexLayer::renderAlphaMasks( S32 x, S32 y, S32 width, S32 height, LLColor4 getTexLayerSet()->getAvatar()->dirtyMesh(); mMorphMasksValid = TRUE; - - for( morph_list_t::iterator iter3 = mMaskedMorphs.begin(); - iter3 != mMaskedMorphs.end(); iter3++ ) - { - LLMaskedMorph* maskedMorph = &(*iter3); - maskedMorph->mMorphTarget->applyMask(alpha_data, width, height, 1, maskedMorph->mInvert); - } + getTexLayerSet()->applyMorphMask(alpha_data, width, height, 1); } return success; } -void LLTexLayer::applyMorphMask(U8* tex_data, S32 width, S32 height, S32 num_components) -{ - for( morph_list_t::iterator iter = mMaskedMorphs.begin(); - iter != mMaskedMorphs.end(); iter++ ) - { - LLMaskedMorph* maskedMorph = &(*iter); - maskedMorph->mMorphTarget->applyMask(tex_data, width, height, num_components, maskedMorph->mInvert); - } -} - // Returns TRUE on success. BOOL LLTexLayer::renderImageRaw( U8* in_data, S32 in_width, S32 in_height, S32 in_components, S32 width, S32 height, BOOL is_mask ) { @@ -1792,666 +1798,54 @@ void LLTexLayer::requestUpdate() mTexLayerSet->requestUpdate(); } -void LLTexLayer::addMaskedMorph(LLPolyMorphTarget* morph_target, BOOL invert) -{ - mMaskedMorphs.push_front(LLMaskedMorph(morph_target, invert)); -} - -void LLTexLayer::invalidateMorphMasks() -{ - mMorphMasksValid = FALSE; -} - -//----------------------------------------------------------------------------- -// LLTexLayerParamAlphaInfo -//----------------------------------------------------------------------------- -LLTexLayerParamAlphaInfo::LLTexLayerParamAlphaInfo( ) - : - mMultiplyBlend( FALSE ), - mSkipIfZeroWeight( FALSE ), - mDomain( 0.f ) -{ -} - -BOOL LLTexLayerParamAlphaInfo::parseXml(LLXmlTreeNode* node) -{ - llassert( node->hasName( "param" ) && node->getChildByName( "param_alpha" ) ); - - if( !LLViewerVisualParamInfo::parseXml(node) ) - return FALSE; - - LLXmlTreeNode* param_alpha_node = node->getChildByName( "param_alpha" ); - if( !param_alpha_node ) - { - return FALSE; - } - - static LLStdStringHandle tga_file_string = LLXmlTree::addAttributeString("tga_file"); - if( param_alpha_node->getFastAttributeString( tga_file_string, mStaticImageFileName ) ) - { - // Don't load the image file until it's actually needed. - } -// else -// { -// llwarns << "<param_alpha> element is missing tga_file attribute." << llendl; -// } - - static LLStdStringHandle multiply_blend_string = LLXmlTree::addAttributeString("multiply_blend"); - param_alpha_node->getFastAttributeBOOL( multiply_blend_string, mMultiplyBlend ); - - static LLStdStringHandle skip_if_zero_string = LLXmlTree::addAttributeString("skip_if_zero"); - param_alpha_node->getFastAttributeBOOL( skip_if_zero_string, mSkipIfZeroWeight ); - - static LLStdStringHandle domain_string = LLXmlTree::addAttributeString("domain"); - param_alpha_node->getFastAttributeF32( domain_string, mDomain ); - - return TRUE; -} - -//----------------------------------------------------------------------------- -// LLTexLayerParamAlpha -//----------------------------------------------------------------------------- - -// static -LLTexLayerParamAlpha::param_alpha_ptr_list_t LLTexLayerParamAlpha::sInstances; - -// static -void LLTexLayerParamAlpha::dumpCacheByteCount() -{ - S32 gl_bytes = 0; - getCacheByteCount( &gl_bytes ); - llinfos << "Processed Alpha Texture Cache GL:" << (gl_bytes/1024) << "KB" << llendl; -} - -// static -void LLTexLayerParamAlpha::getCacheByteCount( S32* gl_bytes ) -{ - *gl_bytes = 0; - - for( param_alpha_ptr_list_t::iterator iter = sInstances.begin(); - iter != sInstances.end(); iter++ ) - { - LLTexLayerParamAlpha* instance = *iter; - LLImageGL* image_gl = instance->mCachedProcessedImageGL; - if( image_gl ) - { - S32 bytes = (S32)image_gl->getWidth() * image_gl->getHeight() * image_gl->getComponents(); - - if( image_gl->getHasGLTexture() ) - { - *gl_bytes += bytes; - } - } - } -} - -LLTexLayerParamAlpha::LLTexLayerParamAlpha( LLTexLayer* layer ) - : - mCachedProcessedImageGL( NULL ), - mTexLayer( layer ), - mNeedsCreateTexture( FALSE ), - mStaticImageInvalid( FALSE ), - mAvgDistortionVec(1.f, 1.f, 1.f), - mCachedEffectiveWeight(0.f) -{ - sInstances.push_front( this ); -} - -LLTexLayerParamAlpha::~LLTexLayerParamAlpha() -{ - deleteCaches(); - sInstances.remove( this ); -} - -//----------------------------------------------------------------------------- -// setInfo() -//----------------------------------------------------------------------------- -BOOL LLTexLayerParamAlpha::setInfo(LLTexLayerParamAlphaInfo *info) -{ - llassert(mInfo == NULL); - if (info->mID < 0) - return FALSE; - mInfo = info; - mID = info->mID; - - mTexLayer->getTexLayerSet()->getAvatar()->addVisualParam( this ); - setWeight(getDefaultWeight(), FALSE ); - - return TRUE; -} - -//----------------------------------------------------------------------------- - -void LLTexLayerParamAlpha::deleteCaches() -{ - mStaticImageTGA = NULL; // deletes image - mCachedProcessedImageGL = NULL; - mStaticImageRaw = NULL; - mNeedsCreateTexture = FALSE; -} - -void LLTexLayerParamAlpha::setWeight(F32 weight, BOOL set_by_user) -{ - if (mIsAnimating) - { - return; - } - F32 min_weight = getMinWeight(); - F32 max_weight = getMaxWeight(); - F32 new_weight = llclamp(weight, min_weight, max_weight); - U8 cur_u8 = F32_to_U8( mCurWeight, min_weight, max_weight ); - U8 new_u8 = F32_to_U8( new_weight, min_weight, max_weight ); - if( cur_u8 != new_u8) - { - mCurWeight = new_weight; - - LLVOAvatar* avatar = mTexLayer->getTexLayerSet()->getAvatar(); - if( avatar->getSex() & getSex() ) - { - if ( gAgent.cameraCustomizeAvatar() ) - { - set_by_user = FALSE; - } - avatar->invalidateComposite( mTexLayer->getTexLayerSet(), set_by_user ); - mTexLayer->invalidateMorphMasks(); - avatar->updateMeshTextures(); - } - } -} - -void LLTexLayerParamAlpha::setAnimationTarget(F32 target_value, BOOL set_by_user) +const std::string& LLTexLayer::getName() const { - mTargetWeight = target_value; - setWeight(target_value, set_by_user); - mIsAnimating = TRUE; - if (mNext) - { - mNext->setAnimationTarget(target_value, set_by_user); - } + return mInfo->mName; } -void LLTexLayerParamAlpha::animate(F32 delta, BOOL set_by_user) +LLTexLayer::ERenderPass LLTexLayer::getRenderPass() const { - if (mNext) - { - mNext->animate(delta, set_by_user); - } + return mInfo->mRenderPass; } - -BOOL LLTexLayerParamAlpha::getSkip() +const std::string& LLTexLayer::getGlobalColor() const { - LLVOAvatar *avatar = mTexLayer->getTexLayerSet()->getAvatar(); - - if( getInfo()->mSkipIfZeroWeight ) - { - F32 effective_weight = ( avatar->getSex() & getSex() ) ? mCurWeight : getDefaultWeight(); - if (is_approx_zero( effective_weight )) - { - return TRUE; - } - } - - EWearableType type = (EWearableType)getWearableType(); - if( (type != WT_INVALID) && !avatar->isWearingWearableType( type ) ) - { - return TRUE; - } - - return FALSE; + return mInfo->mGlobalColor; } - -BOOL LLTexLayerParamAlpha::render( S32 x, S32 y, S32 width, S32 height ) -{ - BOOL success = TRUE; - - F32 effective_weight = ( mTexLayer->getTexLayerSet()->getAvatar()->getSex() & getSex() ) ? mCurWeight : getDefaultWeight(); - BOOL weight_changed = effective_weight != mCachedEffectiveWeight; - if( getSkip() ) - { - return success; - } - - gGL.flush(); - if( getInfo()->mMultiplyBlend ) - { - gGL.blendFunc(LLRender::BF_DEST_ALPHA, LLRender::BF_ZERO); // Multiplication: approximates a min() function - } - else - { - gGL.setSceneBlendType(LLRender::BT_ADD); // Addition: approximates a max() function - } - - if( !getInfo()->mStaticImageFileName.empty() && !mStaticImageInvalid) - { - if( mStaticImageTGA.isNull() ) - { - // Don't load the image file until we actually need it the first time. Like now. - mStaticImageTGA = gTexStaticImageList.getImageTGA( getInfo()->mStaticImageFileName ); - // We now have something in one of our caches - LLTexLayerSet::sHasCaches |= mStaticImageTGA.notNull() ? TRUE : FALSE; - - if( mStaticImageTGA.isNull() ) - { - llwarns << "Unable to load static file: " << getInfo()->mStaticImageFileName << llendl; - mStaticImageInvalid = TRUE; // don't try again. - return FALSE; - } - } - - const S32 image_tga_width = mStaticImageTGA->getWidth(); - const S32 image_tga_height = mStaticImageTGA->getHeight(); - if( !mCachedProcessedImageGL || - (mCachedProcessedImageGL->getWidth() != image_tga_width) || - (mCachedProcessedImageGL->getHeight() != image_tga_height) || - (weight_changed) ) - { -// llinfos << "Building Cached Alpha: " << mName << ": (" << mStaticImageRaw->getWidth() << ", " << mStaticImageRaw->getHeight() << ") " << effective_weight << llendl; - mCachedEffectiveWeight = effective_weight; - - if( !mCachedProcessedImageGL ) - { - mCachedProcessedImageGL = new LLImageGL( image_tga_width, image_tga_height, 1, FALSE); - - // We now have something in one of our caches - LLTexLayerSet::sHasCaches |= mCachedProcessedImageGL ? TRUE : FALSE; - - mCachedProcessedImageGL->setExplicitFormat( GL_ALPHA8, GL_ALPHA ); - } - - // Applies domain and effective weight to data as it is decoded. Also resizes the raw image if needed. - mStaticImageRaw = NULL; - mStaticImageRaw = new LLImageRaw; - mStaticImageTGA->decodeAndProcess( mStaticImageRaw, getInfo()->mDomain, effective_weight ); - mNeedsCreateTexture = TRUE; - } - - if( mCachedProcessedImageGL ) - { - { - // Create the GL texture, and then hang onto it for future use. - if( mNeedsCreateTexture ) - { - mCachedProcessedImageGL->createGLTexture(0, mStaticImageRaw); - mNeedsCreateTexture = FALSE; - gGL.getTexUnit(0)->bind(mCachedProcessedImageGL); - mCachedProcessedImageGL->setAddressMode(LLTexUnit::TAM_CLAMP); - } - - LLGLSNoAlphaTest gls_no_alpha_test; - gGL.getTexUnit(0)->bind(mCachedProcessedImageGL); - gl_rect_2d_simple_tex( width, height ); - gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); - stop_glerror(); - } - } - - // Don't keep the cache for other people's avatars - // (It's not really a "cache" in that case, but the logic is the same) - if( !mTexLayer->getTexLayerSet()->getAvatar()->isSelf() ) - { - mCachedProcessedImageGL = NULL; - } - } - else - { - LLGLDisable no_alpha(GL_ALPHA_TEST); - gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); - gGL.color4f( 0.f, 0.f, 0.f, effective_weight ); - gl_rect_2d_simple( width, height ); - } - - return success; -} - -//----------------------------------------------------------------------------- -// LLTexGlobalColorInfo -//----------------------------------------------------------------------------- - -LLTexGlobalColorInfo::LLTexGlobalColorInfo() -{ -} - - -LLTexGlobalColorInfo::~LLTexGlobalColorInfo() -{ - for_each(mColorInfoList.begin(), mColorInfoList.end(), DeletePointer()); -} - -BOOL LLTexGlobalColorInfo::parseXml(LLXmlTreeNode* node) -{ - // name attribute - static LLStdStringHandle name_string = LLXmlTree::addAttributeString("name"); - if( !node->getFastAttributeString( name_string, mName ) ) - { - llwarns << "<global_color> element is missing name attribute." << llendl; - return FALSE; - } - // <param> sub-element - for (LLXmlTreeNode* child = node->getChildByName( "param" ); - child; - child = node->getNextNamedChild()) - { - if( child->getChildByName( "param_color" ) ) - { - // <param><param_color/></param> - LLTexParamColorInfo* info = new LLTexParamColorInfo(); - if (!info->parseXml(child)) - { - delete info; - return FALSE; - } - mColorInfoList.push_back( info ); - } - } - return TRUE; -} - -//----------------------------------------------------------------------------- -// LLTexGlobalColor -//----------------------------------------------------------------------------- - -LLTexGlobalColor::LLTexGlobalColor( LLVOAvatar* avatar ) - : - mAvatar( avatar ), - mInfo( NULL ) -{ -} - - -LLTexGlobalColor::~LLTexGlobalColor() -{ - // mParamList are LLViewerVisualParam's and get deleted with ~LLCharacter() - //std::for_each(mParamList.begin(), mParamList.end(), DeletePointer()); -} - -BOOL LLTexGlobalColor::setInfo(LLTexGlobalColorInfo *info) -{ - llassert(mInfo == NULL); - mInfo = info; - //mID = info->mID; // No ID - - LLTexGlobalColorInfo::color_info_list_t::iterator iter; - mParamList.reserve(mInfo->mColorInfoList.size()); - for (iter = mInfo->mColorInfoList.begin(); iter != mInfo->mColorInfoList.end(); iter++) - { - LLTexParamColor* param_color = new LLTexParamColor( this ); - if (!param_color->setInfo(*iter)) - { - mInfo = NULL; - return FALSE; - } - mParamList.push_back( param_color ); - } - - return TRUE; -} - -//----------------------------------------------------------------------------- - -LLColor4 LLTexGlobalColor::getColor() -{ - // Sum of color params - if( !mParamList.empty() ) - { - LLColor4 net_color( 0.f, 0.f, 0.f, 0.f ); - - for( param_list_t::iterator iter = mParamList.begin(); - iter != mParamList.end(); iter++ ) - { - LLTexParamColor* param = *iter; - LLColor4 param_net = param->getNetColor(); - switch( param->getOperation() ) - { - case OP_ADD: - net_color += param_net; - break; - case OP_MULTIPLY: - net_color.mV[VX] *= param_net.mV[VX]; - net_color.mV[VY] *= param_net.mV[VY]; - net_color.mV[VZ] *= param_net.mV[VZ]; - net_color.mV[VW] *= param_net.mV[VW]; - break; - case OP_BLEND: - net_color = lerp(net_color, param_net, param->getWeight()); - break; - default: - llassert(0); - break; - } - } - - net_color.mV[VX] = llclampf( net_color.mV[VX] ); - net_color.mV[VY] = llclampf( net_color.mV[VY] ); - net_color.mV[VZ] = llclampf( net_color.mV[VZ] ); - net_color.mV[VW] = llclampf( net_color.mV[VW] ); - - return net_color; - } - return LLColor4( 1.f, 1.f, 1.f, 1.f ); -} - -//----------------------------------------------------------------------------- -// LLTexParamColorInfo -//----------------------------------------------------------------------------- -LLTexParamColorInfo::LLTexParamColorInfo() - : - mOperation( OP_ADD ), - mNumColors( 0 ) -{ -} - -BOOL LLTexParamColorInfo::parseXml(LLXmlTreeNode *node) +void LLTexLayer::invalidateMorphMasks() { - llassert( node->hasName( "param" ) && node->getChildByName( "param_color" ) ); - - if (!LLViewerVisualParamInfo::parseXml(node)) - return FALSE; - - LLXmlTreeNode* param_color_node = node->getChildByName( "param_color" ); - if( !param_color_node ) - { - return FALSE; - } - - std::string op_string; - static LLStdStringHandle operation_string = LLXmlTree::addAttributeString("operation"); - if( param_color_node->getFastAttributeString( operation_string, op_string ) ) - { - LLStringUtil::toLower(op_string); - if ( op_string == "add" ) mOperation = OP_ADD; - else if ( op_string == "multiply" ) mOperation = OP_MULTIPLY; - else if ( op_string == "blend" ) mOperation = OP_BLEND; - } - - mNumColors = 0; - - LLColor4U color4u; - for (LLXmlTreeNode* child = param_color_node->getChildByName( "value" ); - child; - child = param_color_node->getNextNamedChild()) - { - if( (mNumColors < MAX_COLOR_VALUES) ) - { - static LLStdStringHandle color_string = LLXmlTree::addAttributeString("color"); - if( child->getFastAttributeColor4U( color_string, color4u ) ) - { - mColors[ mNumColors ].setVec(color4u); - mNumColors++; - } - } - } - if( !mNumColors ) - { - llwarns << "<param_color> is missing <value> sub-elements" << llendl; - return FALSE; + mMorphMasksValid = FALSE; } - if( (mOperation == OP_BLEND) && (mNumColors != 1) ) +BOOL LLTexLayer::isVisibilityMask() const { - llwarns << "<param_color> with operation\"blend\" must have exactly one <value>" << llendl; - return FALSE; - } - - return TRUE; + return mInfo->mIsVisibilityMask; } //----------------------------------------------------------------------------- -// LLTexParamColor +// LLTexLayerStaticImageList //----------------------------------------------------------------------------- -LLTexParamColor::LLTexParamColor( LLTexGlobalColor* tex_global_color ) - : - mAvgDistortionVec(1.f, 1.f, 1.f), - mTexGlobalColor( tex_global_color ), - mTexLayer( NULL ), - mAvatar( tex_global_color->getAvatar() ) -{ -} -LLTexParamColor::LLTexParamColor( LLTexLayer* layer ) - : - mAvgDistortionVec(1.f, 1.f, 1.f), - mTexGlobalColor( NULL ), - mTexLayer( layer ), - mAvatar( layer->getTexLayerSet()->getAvatar() ) +LLTexLayerStaticImageList::LLTexLayerStaticImageList() : + mGLBytes(0), + mTGABytes(0), + mImageNames(16384) { } - -LLTexParamColor::~LLTexParamColor() -{ -} - -//----------------------------------------------------------------------------- -// setInfo() -//----------------------------------------------------------------------------- - -BOOL LLTexParamColor::setInfo(LLTexParamColorInfo *info) -{ - llassert(mInfo == NULL); - if (info->mID < 0) - return FALSE; - mID = info->mID; - mInfo = info; - - mAvatar->addVisualParam( this ); - setWeight( getDefaultWeight(), FALSE ); - - return TRUE; -} - -LLColor4 LLTexParamColor::getNetColor() -{ - llassert( getInfo()->mNumColors >= 1 ); - - F32 effective_weight = ( mAvatar && (mAvatar->getSex() & getSex()) ) ? mCurWeight : getDefaultWeight(); - - S32 index_last = getInfo()->mNumColors - 1; - F32 scaled_weight = effective_weight * index_last; - S32 index_start = (S32) scaled_weight; - S32 index_end = index_start + 1; - if( index_start == index_last ) - { - return getInfo()->mColors[index_last]; - } - else - { - F32 weight = scaled_weight - index_start; - const LLColor4 *start = &getInfo()->mColors[ index_start ]; - const LLColor4 *end = &getInfo()->mColors[ index_end ]; - return LLColor4( - (1.f - weight) * start->mV[VX] + weight * end->mV[VX], - (1.f - weight) * start->mV[VY] + weight * end->mV[VY], - (1.f - weight) * start->mV[VZ] + weight * end->mV[VZ], - (1.f - weight) * start->mV[VW] + weight * end->mV[VW] ); - } -} - -void LLTexParamColor::setWeight(F32 weight, BOOL set_by_user) -{ - if (mIsAnimating) - { - return; - } - F32 min_weight = getMinWeight(); - F32 max_weight = getMaxWeight(); - F32 new_weight = llclamp(weight, min_weight, max_weight); - U8 cur_u8 = F32_to_U8( mCurWeight, min_weight, max_weight ); - U8 new_u8 = F32_to_U8( new_weight, min_weight, max_weight ); - if( cur_u8 != new_u8) - { - mCurWeight = new_weight; - - if( getInfo()->mNumColors <= 0 ) - { - // This will happen when we set the default weight the first time. - return; - } - - if( mAvatar->getSex() & getSex() ) - { - if( mTexGlobalColor ) - { - mAvatar->onGlobalColorChanged( mTexGlobalColor, set_by_user ); - } - else - if( mTexLayer ) - { - mAvatar->invalidateComposite( mTexLayer->getTexLayerSet(), set_by_user ); - } - } -// llinfos << "param " << mName << " = " << new_weight << llendl; - } -} - -void LLTexParamColor::setAnimationTarget(F32 target_value, BOOL set_by_user) -{ - // set value first then set interpolating flag to ignore further updates - mTargetWeight = target_value; - setWeight(target_value, set_by_user); - mIsAnimating = TRUE; - if (mNext) - { - mNext->setAnimationTarget(target_value, set_by_user); - } -} - -void LLTexParamColor::animate(F32 delta, BOOL set_by_user) -{ - if (mNext) - { - mNext->animate(delta, set_by_user); - } -} - - -//----------------------------------------------------------------------------- -// LLTexStaticImageList -//----------------------------------------------------------------------------- - -// static -LLTexStaticImageList gTexStaticImageList; -LLStringTable LLTexStaticImageList::sImageNames(16384); - -LLTexStaticImageList::LLTexStaticImageList() - : - mGLBytes( 0 ), - mTGABytes( 0 ) -{} - -LLTexStaticImageList::~LLTexStaticImageList() +LLTexLayerStaticImageList::~LLTexLayerStaticImageList() { deleteCachedImages(); } -void LLTexStaticImageList::dumpByteCount() +void LLTexLayerStaticImageList::dumpByteCount() { llinfos << "Avatar Static Textures " << "KB GL:" << (mGLBytes / 1024) << "KB TGA:" << (mTGABytes / 1024) << "KB" << llendl; } -void LLTexStaticImageList::deleteCachedImages() +void LLTexLayerStaticImageList::deleteCachedImages() { if( mGLBytes || mTGABytes ) { @@ -2475,10 +1869,10 @@ void LLTexStaticImageList::deleteCachedImages() // Returns an LLImageTGA that contains the encoded data from a tga file named file_name. // Caches the result to speed identical subsequent requests. -LLImageTGA* LLTexStaticImageList::getImageTGA(const std::string& file_name) +LLImageTGA* LLTexLayerStaticImageList::getImageTGA(const std::string& file_name) { - const char *namekey = sImageNames.addString(file_name); - image_tga_map_t::iterator iter = mStaticImageListTGA.find(namekey); + const char *namekey = mImageNames.addString(file_name); + image_tga_map_t::const_iterator iter = mStaticImageListTGA.find(namekey); if( iter != mStaticImageListTGA.end() ) { return iter->second; @@ -2501,16 +1895,14 @@ LLImageTGA* LLTexStaticImageList::getImageTGA(const std::string& file_name) } } - - // Returns a GL Image (without a backing ImageRaw) that contains the decoded data from a tga file named file_name. // Caches the result to speed identical subsequent requests. -LLImageGL* LLTexStaticImageList::getImageGL(const std::string& file_name, BOOL is_mask ) +LLImageGL* LLTexLayerStaticImageList::getImageGL(const std::string& file_name, BOOL is_mask) { LLPointer<LLImageGL> image_gl; - const char *namekey = sImageNames.addString(file_name); + const char *namekey = mImageNames.addString(file_name); - image_gl_map_t::iterator iter = mStaticImageListGL.find(namekey); + image_gl_map_t::const_iterator iter = mStaticImageListGL.find(namekey); if( iter != mStaticImageListGL.end() ) { image_gl = iter->second; @@ -2546,7 +1938,7 @@ LLImageGL* LLTexStaticImageList::getImageGL(const std::string& file_name, BOOL i // Reads a .tga file, decodes it, and puts the decoded data in image_raw. // Returns TRUE if successful. -BOOL LLTexStaticImageList::loadImageRaw( const std::string& file_name, LLImageRaw* image_raw ) +BOOL LLTexLayerStaticImageList::loadImageRaw(const std::string& file_name, LLImageRaw* image_raw) { BOOL success = FALSE; std::string path; @@ -2561,11 +1953,4 @@ BOOL LLTexStaticImageList::loadImageRaw( const std::string& file_name, LLImageRa return success; } -//----------------------------------------------------------------------------- -// LLMaskedMorph() -//----------------------------------------------------------------------------- -LLMaskedMorph::LLMaskedMorph( LLPolyMorphTarget *morph_target, BOOL invert ) : mMorphTarget(morph_target), mInvert(invert) -{ - morph_target->addPendingMorphMask(); -} diff --git a/indra/newview/lltexlayer.h b/indra/newview/lltexlayer.h index 18e6d6b24f5506fe7d73e2e14e7d6ef82287cbe8..589044010804dc003421a619ec10dc3abf4429c6 100644 --- a/indra/newview/lltexlayer.h +++ b/indra/newview/lltexlayer.h @@ -34,136 +34,94 @@ #define LL_LLTEXLAYER_H #include <deque> -#include "llassetstorage.h" #include "lldynamictexture.h" -#include "llrect.h" -#include "llstring.h" -#include "lluuid.h" -#include "llviewerimage.h" -#include "llviewervisualparam.h" #include "llwearable.h" -#include "v4color.h" -#include "llfloater.h" +#include "llvoavatardefines.h" -class LLTexLayerSetInfo; -class LLTexLayerSet; -class LLTexLayerInfo; -class LLTexLayer; +class LLVOAvatar; +class LLVOAvatarSelf; class LLImageGL; class LLImageTGA; -class LLTexGlobalColorInfo; -class LLTexLayerParamAlphaInfo; -class LLTexLayerParamAlpha; -class LLTexParamColorInfo; -class LLTexParamColor; -class LLPolyMesh; -class LLXmlTreeNode; class LLImageRaw; +class LLXmlTreeNode; class LLPolyMorphTarget; +class LLTexLayerSet; +class LLTexLayerSetInfo; +class LLTexLayerInfo; +class LLTexLayerSetBuffer; +class LLTexLayerParamColor; +class LLTexLayerParamColorInfo; +class LLTexLayerParamAlpha; +class LLTexLayerParamAlphaInfo; -class LLTextureCtrl; -class LLVOAvatar; - - -enum EColorOperation -{ - OP_ADD = 0, - OP_MULTIPLY = 1, - OP_BLEND = 2, - OP_COUNT = 3 // Number of operations -}; - +typedef std::vector<LLTexLayerParamColor *> param_color_list_t; +typedef std::vector<LLTexLayerParamAlpha *> param_alpha_list_t; +typedef std::vector<LLTexLayerParamColorInfo *> param_color_info_list_t; +typedef std::vector<LLTexLayerParamAlphaInfo *> param_alpha_info_list_t; //----------------------------------------------------------------------------- -// LLTexLayerParamAlphaInfo -//----------------------------------------------------------------------------- -class LLTexLayerParamAlphaInfo : public LLViewerVisualParamInfo +// LLTexLayer +// A single texture layer +// Only exists for llvoavatarself + +class LLTexLayer { - friend class LLTexLayerParamAlpha; public: - LLTexLayerParamAlphaInfo(); - /*virtual*/ ~LLTexLayerParamAlphaInfo() {}; + enum ERenderPass + { + RP_COLOR, + RP_BUMP, + RP_SHINE + }; + + LLTexLayer(LLTexLayerSet* const layer_set); + ~LLTexLayer(); - /*virtual*/ BOOL parseXml(LLXmlTreeNode* node); + const LLTexLayerInfo* getInfo() const { return mInfo; } + BOOL setInfo(const LLTexLayerInfo *info); // This sets mInfo and calls initialization functions + BOOL render(S32 x, S32 y, S32 width, S32 height, BOOL render_morph); + void requestUpdate(); + LLTexLayerSet* const getTexLayerSet() const { return mTexLayerSet; } -protected: - std::string mStaticImageFileName; - BOOL mMultiplyBlend; - BOOL mSkipIfZeroWeight; - F32 mDomain; -}; + void deleteCaches(); + U8* getAlphaData(); + void invalidateMorphMasks(); + void setHasMorph(BOOL newval) { mHasMorph = newval; } + BOOL isMorphValid() { return mMorphMasksValid; } -//----------------------------------------------------------------------------- -// LLTexParamColorInfo -//----------------------------------------------------------------------------- -class LLTexParamColorInfo : public LLViewerVisualParamInfo -{ - friend class LLTexParamColor; + const std::string& getName() const; + ERenderPass getRenderPass() const; + const std::string& getGlobalColor() const; -public: - LLTexParamColorInfo(); - virtual ~LLTexParamColorInfo() {}; - BOOL parseXml( LLXmlTreeNode* node ); - -protected: - enum { MAX_COLOR_VALUES = 20 }; - EColorOperation mOperation; - LLColor4 mColors[MAX_COLOR_VALUES]; - S32 mNumColors; -}; + BOOL findNetColor(LLColor4* color) const; + BOOL renderImageRaw(U8* in_data, S32 in_width, S32 in_height, S32 in_components, S32 width, S32 height, BOOL is_mask); + BOOL blendAlphaTexture(S32 width, S32 height); // Multiplies a single alpha texture against the frame buffer + BOOL renderMorphMasks(S32 x, S32 y, S32 width, S32 height, const LLColor4 &layer_color, BOOL render_morph); + BOOL hasAlphaParams() const { return !mParamAlphaList.empty(); } + BOOL isVisibilityMask() const; -//----------------------------------------------------------------------------- -// LLTexGlobalColorInfo -//----------------------------------------------------------------------------- -class LLTexGlobalColorInfo -{ - friend class LLTexGlobalColor; -public: - LLTexGlobalColorInfo(); - ~LLTexGlobalColorInfo(); + static void calculateTexLayerColor(const param_color_list_t ¶m_list, LLColor4 &net_color); - BOOL parseXml(LLXmlTreeNode* node); - -protected: - typedef std::vector<LLTexParamColorInfo *> color_info_list_t; - color_info_list_t mColorInfoList; - std::string mName; -}; +private: + LLTexLayerSet* const mTexLayerSet; -//----------------------------------------------------------------------------- -// LLTexLayerSetInfo -// Containes shared layer set data -//----------------------------------------------------------------------------- -class LLTexLayerSetInfo -{ - friend class LLTexLayerSet; -public: - LLTexLayerSetInfo(); - ~LLTexLayerSetInfo(); + // Layers can have either mParamColorList, mGlobalColor, or mFixedColor. They are looked for in that order. + param_color_list_t mParamColorList; + // mGlobalColor name stored in mInfo + // mFixedColor value stored in mInfo + param_alpha_list_t mParamAlphaList; - BOOL parseXml(LLXmlTreeNode* node); + BOOL mMorphMasksValid; + typedef std::map<U32, U8*> alpha_cache_t; + alpha_cache_t mAlphaCache; + BOOL mStaticImageInvalid; -protected: - std::string mBodyRegion; - S32 mWidth; - S32 mHeight; - std::string mStaticAlphaFileName; - BOOL mClearAlpha; // Set alpha to 1 for this layerset (if there is no mStaticAlphaFileName) - - typedef std::vector<LLTexLayerInfo*> layer_info_list_t; - layer_info_list_t mLayerInfoList; -}; + BOOL mHasMorph; -//----------------------------------------------------------------------------- -// LLTexLayerInfo -//----------------------------------------------------------------------------- -enum ERenderPass -{ - RP_COLOR, - RP_BUMP, - RP_SHINE + const LLTexLayerInfo *mInfo; }; +// Make private class LLTexLayerInfo { friend class LLTexLayer; @@ -172,12 +130,13 @@ class LLTexLayerInfo ~LLTexLayerInfo(); BOOL parseXml(LLXmlTreeNode* node); + BOOL createVisualParams(LLVOAvatar *avatar); -protected: +private: std::string mName; - BOOL mWriteAllChannels; // Don't use masking. Just write RGBA into buffer, - ERenderPass mRenderPass; + BOOL mWriteAllChannels; // Don't use masking. Just write RGBA into buffer, + LLTexLayer::ERenderPass mRenderPass; std::string mGlobalColor; LLColor4 mFixedColor; @@ -185,369 +144,200 @@ class LLTexLayerInfo S32 mLocalTexture; std::string mStaticImageFileName; BOOL mStaticImageIsMask; - BOOL mUseLocalTextureAlphaOnly; // Ignore RGB channels from the input texture. Use alpha as a mask + BOOL mUseLocalTextureAlphaOnly; // Ignore RGB channels from the input texture. Use alpha as a mask + BOOL mIsVisibilityMask; - typedef std::vector<std::pair<std::string,BOOL> > morph_name_list_t; - morph_name_list_t mMorphNameList; - - typedef std::vector<LLTexParamColorInfo*> color_info_list_t; - color_info_list_t mColorInfoList; - - typedef std::vector<LLTexLayerParamAlphaInfo*> alpha_info_list_t; - alpha_info_list_t mAlphaInfoList; - + typedef std::vector< std::pair< std::string,BOOL > > morph_name_list_t; + morph_name_list_t mMorphNameList; + param_color_info_list_t mParamColorInfoList; + param_alpha_info_list_t mParamAlphaInfoList; }; +// +// LLTexLayer //----------------------------------------------------------------------------- -// LLTexLayerSetBuffer -// The composite image that a LLTexLayerSet writes to. Each LLTexLayerSet has one. -//----------------------------------------------------------------------------- -class LLTexLayerSetBuffer : public LLDynamicTexture -{ -public: - LLTexLayerSetBuffer( LLTexLayerSet* owner, S32 width, S32 height, BOOL has_bump ); - virtual ~LLTexLayerSetBuffer(); - - virtual void preRender(BOOL clear_depth); - virtual void postRender(BOOL success); - virtual BOOL render(); - BOOL updateImmediate(); - void bindBumpTexture( U32 stage ); - bool isInitialized(void) const; - BOOL needsRender(); - void requestUpdate(); - void requestUpload(); - void cancelUpload(); - BOOL uploadPending() { return mUploadPending; } - BOOL render( S32 x, S32 y, S32 width, S32 height ); - void readBackAndUpload(U8* baked_bump_data); - void createBumpTexture() ; - - static void onTextureUploadComplete( const LLUUID& uuid, - void* userdata, - S32 result, LLExtStat ext_status); - static void dumpTotalByteCount(); - - virtual void restoreGLTexture() ; - virtual void destroyGLTexture() ; - -private: - void pushProjection(); - void popProjection(); - -private: - BOOL mHasBump ; - BOOL mNeedsUpdate; - BOOL mNeedsUpload; - BOOL mUploadPending; - LLUUID mUploadID; // Identifys the current upload process (null if none). Used to avoid overlaps (eg, when the user rapidly makes two changes outside of Face Edit) - LLTexLayerSet* mTexLayerSet; - LLPointer<LLImageGL> mBumpTex; // zero if none - - static S32 sGLByteCount; - static S32 sGLBumpByteCount; -}; //----------------------------------------------------------------------------- // LLTexLayerSet // An ordered set of texture layers that get composited into a single texture. -//----------------------------------------------------------------------------- +// Only exists for llvoavatarself + class LLTexLayerSet { + friend class LLTexLayerSetBuffer; public: - LLTexLayerSet( LLVOAvatar* avatar ); + LLTexLayerSet(LLVOAvatarSelf* const avatar); ~LLTexLayerSet(); - //BOOL parseData(LLXmlTreeNode* node); - LLTexLayerSetInfo* getInfo() const { return mInfo; } - // This sets mInfo and calls initialization functions - BOOL setInfo(LLTexLayerSetInfo *info); - - BOOL render( S32 x, S32 y, S32 width, S32 height ); - BOOL renderBump( S32 x, S32 y, S32 width,S32 height ); - BOOL isBodyRegion( const std::string& region ) { return mInfo->mBodyRegion == region; } + const LLTexLayerSetInfo* getInfo() const { return mInfo; } + BOOL setInfo(const LLTexLayerSetInfo *info); // This sets mInfo and calls initialization functions + + BOOL render(S32 x, S32 y, S32 width, S32 height); + BOOL renderBump(S32 x, S32 y, S32 width,S32 height); + + BOOL isBodyRegion(const std::string& region) const; LLTexLayerSetBuffer* getComposite(); void requestUpdate(); void requestUpload(); void cancelUpload(); - LLVOAvatar* getAvatar() { return mAvatar; } void updateComposite(); - BOOL isLocalTextureDataAvailable(); - BOOL isLocalTextureDataFinal(); + BOOL isLocalTextureDataAvailable() const; + BOOL isLocalTextureDataFinal() const; void createComposite(); void destroyComposite(); - void setUpdatesEnabled( BOOL b ); - BOOL getUpdatesEnabled() { return mUpdatesEnabled; } + void setUpdatesEnabled(BOOL b); + BOOL getUpdatesEnabled() const { return mUpdatesEnabled; } void deleteCaches(); - void gatherAlphaMasks(U8 *data, S32 width, S32 height); + void gatherMorphMaskAlpha(U8 *data, S32 width, S32 height); void applyMorphMask(U8* tex_data, S32 width, S32 height, S32 num_components); - const std::string getBodyRegion() { return mInfo->mBodyRegion; } - BOOL hasComposite() { return (mComposite != NULL); } - void setBump( BOOL b ) { mHasBump = b; } - BOOL hasBump() { return mHasBump; } + void renderAlphaMaskTextures(S32 width, S32 height, bool forceClear = false); + LLTexLayer* findLayerByName(std::string name); + + LLVOAvatarSelf* getAvatar() const { return mAvatar; } + const std::string getBodyRegion() const; + BOOL hasComposite() const { return (mComposite != NULL); } + void setBump(BOOL b) { mHasBump = b; } + BOOL hasBump() const { return mHasBump; } + LLVOAvatarDefines::EBakedTextureIndex getBakedTexIndex() { return mBakedTexIndex; } + void setBakedTexIndex( LLVOAvatarDefines::EBakedTextureIndex index) { mBakedTexIndex = index; } public: static BOOL sHasCaches; -protected: +private: typedef std::vector<LLTexLayer *> layer_list_t; layer_list_t mLayerList; + layer_list_t mMaskLayerList; LLTexLayerSetBuffer* mComposite; - // Backlink only; don't make this an LLPointer. - LLVOAvatar* mAvatar; + LLVOAvatarSelf* const mAvatar; // Backlink only; don't make this an LLPointer. BOOL mUpdatesEnabled; BOOL mHasBump; - LLTexLayerSetInfo *mInfo; -}; + LLVOAvatarDefines::EBakedTextureIndex mBakedTexIndex; -//----------------------------------------------------------------------------- -// LLMaskedMorph -//----------------------------------------------------------------------------- - -class LLMaskedMorph -{ -public: - LLMaskedMorph( LLPolyMorphTarget *morph_target, BOOL invert ); - -public: - LLPolyMorphTarget *mMorphTarget; - BOOL mInvert; + const LLTexLayerSetInfo *mInfo; }; -//----------------------------------------------------------------------------- -// LLTexLayer -// A single texture layer -//----------------------------------------------------------------------------- -class LLTexLayer +// Contains shared layer set data +class LLTexLayerSetInfo { + friend class LLTexLayerSet; public: - LLTexLayer( LLTexLayerSet* layer_set ); - ~LLTexLayer(); - - //BOOL parseData(LLXmlTreeNode* node); - LLTexLayerInfo* getInfo() const { return mInfo; } - // This sets mInfo and calls initialization functions - BOOL setInfo(LLTexLayerInfo *info); + LLTexLayerSetInfo(); + ~LLTexLayerSetInfo(); - BOOL render( S32 x, S32 y, S32 width, S32 height ); - void requestUpdate(); - LLTexLayerSet* getTexLayerSet() { return mTexLayerSet; } - - const std::string& getName() { return mInfo->mName; } - - void addMaskedMorph(LLPolyMorphTarget* morph_target, BOOL invert); - void deleteCaches(); - U8* getAlphaData(); - void applyMorphMask(U8* tex_data, S32 width, S32 height, S32 num_components); - - void invalidateMorphMasks(); - ERenderPass getRenderPass() { return mInfo->mRenderPass; } - const std::string& getGlobalColor() { return mInfo->mGlobalColor; } - BOOL findNetColor( LLColor4* color ); - BOOL renderImageRaw( U8* in_data, S32 in_width, S32 in_height, S32 in_components, S32 width, S32 height, BOOL is_mask ); - BOOL renderAlphaMasks( S32 x, S32 y, S32 width, S32 height, LLColor4* colorp ); - BOOL hasAlphaParams() { return (!mParamAlphaList.empty());} - -protected: - LLTexLayerSet* mTexLayerSet; - LLPointer<LLImageRaw> mStaticImageRaw; - - // Layers can have either mParamColorList, mGlobalColor, or mFixedColor. They are looked for in that order. - typedef std::vector<LLTexParamColor *> color_list_t; - color_list_t mParamColorList; - // mGlobalColor name stored in mInfo - // mFixedColor value stored in mInfo + BOOL parseXml(LLXmlTreeNode* node); + void createVisualParams(LLVOAvatar *avatar); - typedef std::vector<LLTexLayerParamAlpha *> alpha_list_t; - alpha_list_t mParamAlphaList; - +private: + std::string mBodyRegion; + S32 mWidth; + S32 mHeight; + std::string mStaticAlphaFileName; + BOOL mClearAlpha; // Set alpha to 1 for this layerset (if there is no mStaticAlphaFileName) - typedef std::deque<LLMaskedMorph> morph_list_t; - morph_list_t mMaskedMorphs; - typedef std::map<U32, U8*> alpha_cache_t; - alpha_cache_t mAlphaCache; - BOOL mMorphMasksValid; - BOOL mStaticImageInvalid; - - LLTexLayerInfo *mInfo; + typedef std::vector<LLTexLayerInfo*> layer_info_list_t; + layer_info_list_t mLayerInfoList; }; -//----------------------------------------------------------------------------- -// LLTexLayerParamAlpha -//----------------------------------------------------------------------------- -class LLTexLayerParamAlpha : public LLViewerVisualParam +// The composite image that a LLTexLayerSet writes to. Each LLTexLayerSet has one. +class LLTexLayerSetBuffer : public LLDynamicTexture { public: - LLTexLayerParamAlpha( LLTexLayer* layer ); - /*virtual*/ ~LLTexLayerParamAlpha(); + LLTexLayerSetBuffer(LLTexLayerSet* const owner, S32 width, S32 height, BOOL has_bump); + virtual ~LLTexLayerSetBuffer(); - // Special: These functions are overridden by child classes - LLTexLayerParamAlphaInfo* getInfo() const { return (LLTexLayerParamAlphaInfo*)mInfo; } - // This sets mInfo and calls initialization functions - BOOL setInfo(LLTexLayerParamAlphaInfo *info); - - // LLVisualParam Virtual functions - ///*virtual*/ BOOL parseData(LLXmlTreeNode* node); - /*virtual*/ void apply( ESex avatar_sex ) {} - /*virtual*/ void setWeight(F32 weight, BOOL set_by_user); - /*virtual*/ void setAnimationTarget(F32 target_value, BOOL set_by_user); - /*virtual*/ void animate(F32 delta, BOOL set_by_user); - - // LLViewerVisualParam Virtual functions - /*virtual*/ F32 getTotalDistortion() { return 1.f; } - /*virtual*/ const LLVector3& getAvgDistortion() { return mAvgDistortionVec; } - /*virtual*/ F32 getMaxDistortion() { return 3.f; } - /*virtual*/ LLVector3 getVertexDistortion(S32 index, LLPolyMesh *poly_mesh) { return LLVector3(1.f, 1.f, 1.f);} - /*virtual*/ const LLVector3* getFirstDistortion(U32 *index, LLPolyMesh **poly_mesh) { index = 0; poly_mesh = NULL; return &mAvgDistortionVec;}; - /*virtual*/ const LLVector3* getNextDistortion(U32 *index, LLPolyMesh **poly_mesh) { index = 0; poly_mesh = NULL; return NULL;}; - - // New functions + virtual void preRender(BOOL clear_depth); + virtual void postRender(BOOL success); + virtual BOOL render(); + BOOL updateImmediate(); + void bindBumpTexture(U32 stage); + bool isInitialized(void) const; + BOOL needsRender(); + void requestUpdate(); + void requestUpload(); + void cancelUpload(); + BOOL uploadPending() { return mUploadPending; } BOOL render( S32 x, S32 y, S32 width, S32 height ); - BOOL getSkip(); - void deleteCaches(); - LLTexLayer* getTexLayer() { return mTexLayer; } - BOOL getMultiplyBlend() { return getInfo()->mMultiplyBlend; } - -protected: - LLPointer<LLImageGL> mCachedProcessedImageGL; - LLTexLayer* mTexLayer; - LLPointer<LLImageTGA> mStaticImageTGA; - LLPointer<LLImageRaw> mStaticImageRaw; - BOOL mNeedsCreateTexture; - BOOL mStaticImageInvalid; - LLVector3 mAvgDistortionVec; - F32 mCachedEffectiveWeight; - -public: - // Global list of instances for gathering statistics - static void dumpCacheByteCount(); - static void getCacheByteCount( S32* gl_bytes ); + void readBackAndUpload(const U8* baked_bump_data); + void createBumpTexture(); - typedef std::list< LLTexLayerParamAlpha* > param_alpha_ptr_list_t; - static param_alpha_ptr_list_t sInstances; -}; + static void onTextureUploadComplete(const LLUUID& uuid, + void* userdata, + S32 result, LLExtStat ext_status); + static void dumpTotalByteCount(); + virtual void restoreGLTexture(); + virtual void destroyGLTexture(); -//----------------------------------------------------------------------------- -// LLTexGlobalColor -//----------------------------------------------------------------------------- -class LLTexGlobalColor -{ -public: - LLTexGlobalColor( LLVOAvatar* avatar ); - ~LLTexGlobalColor(); +private: + void pushProjection() const; + void popProjection() const; - //BOOL parseData(LLXmlTreeNode* node); - LLTexGlobalColorInfo* getInfo() const { return mInfo; } - // This sets mInfo and calls initialization functions - BOOL setInfo(LLTexGlobalColorInfo *info); - - void requstUpdate(); - LLVOAvatar* getAvatar() { return mAvatar; } - LLColor4 getColor(); - const std::string& getName() { return mInfo->mName; } +private: + const BOOL mHasBump; + LLTexLayerSet* const mTexLayerSet; -protected: - typedef std::vector<LLTexParamColor *> param_list_t; - param_list_t mParamList; - LLVOAvatar* mAvatar; // just backlink, don't LLPointer + BOOL mNeedsUpdate; + BOOL mNeedsUpload; + BOOL mUploadPending; + LLUUID mUploadID; // Identifys the current upload process (null if none). Used to avoid overlaps (eg, when the user rapidly makes two changes outside of Face Edit) + LLPointer<LLImageGL> mBumpTex; // zero if none - LLTexGlobalColorInfo *mInfo; + static S32 sGLByteCount; + static S32 sGLBumpByteCount; }; - -//----------------------------------------------------------------------------- -// LLTexParamColor +// +// LLTexLayerSet //----------------------------------------------------------------------------- -class LLTexParamColor : public LLViewerVisualParam -{ -public: - LLTexParamColor( LLTexGlobalColor* tex_color ); - LLTexParamColor( LLTexLayer* layer ); - /* virtual */ ~LLTexParamColor(); - - // Special: These functions are overridden by child classes - LLTexParamColorInfo* getInfo() const { return (LLTexParamColorInfo*)mInfo; } - // This sets mInfo and calls initialization functions - BOOL setInfo(LLTexParamColorInfo *info); - - // LLVisualParam Virtual functions - ///*virtual*/ BOOL parseData(LLXmlTreeNode* node); - /*virtual*/ void apply( ESex avatar_sex ) {} - /*virtual*/ void setWeight(F32 weight, BOOL set_by_user); - /*virtual*/ void setAnimationTarget(F32 target_value, BOOL set_by_user); - /*virtual*/ void animate(F32 delta, BOOL set_by_user); - - - // LLViewerVisualParam Virtual functions - /*virtual*/ F32 getTotalDistortion() { return 1.f; } - /*virtual*/ const LLVector3& getAvgDistortion() { return mAvgDistortionVec; } - /*virtual*/ F32 getMaxDistortion() { return 3.f; } - /*virtual*/ LLVector3 getVertexDistortion(S32 index, LLPolyMesh *poly_mesh) { return LLVector3(1.f, 1.f, 1.f); } - /*virtual*/ const LLVector3* getFirstDistortion(U32 *index, LLPolyMesh **poly_mesh) { index = 0; poly_mesh = NULL; return &mAvgDistortionVec;}; - /*virtual*/ const LLVector3* getNextDistortion(U32 *index, LLPolyMesh **poly_mesh) { index = 0; poly_mesh = NULL; return NULL;}; - - // New functions - LLColor4 getNetColor(); - EColorOperation getOperation() const { return getInfo()->mOperation; } - - -protected: - LLVector3 mAvgDistortionVec; - LLTexGlobalColor* mTexGlobalColor; // either has mTexGlobalColor or mTexLayer as its parent - LLTexLayer* mTexLayer; - LLVOAvatar* mAvatar; // redundant, but simplifies the code (don't LLPointer) -}; //----------------------------------------------------------------------------- -// LLTexStaticImageList -//----------------------------------------------------------------------------- +// LLTexLayerStaticImageList +// -class LLTexStaticImageList +class LLTexLayerStaticImageList : public LLSingleton<LLTexLayerStaticImageList> { public: - LLTexStaticImageList(); - ~LLTexStaticImageList(); + LLTexLayerStaticImageList(); + ~LLTexLayerStaticImageList(); - LLImageRaw* getImageRaw( const std::string& file_name ); - LLImageGL* getImageGL( const std::string& file_name, BOOL is_mask ); - LLImageTGA* getImageTGA( const std::string& file_name ); + LLImageGL* getImageGL(const std::string& file_name, BOOL is_mask); + LLImageTGA* getImageTGA(const std::string& file_name); void deleteCachedImages(); void dumpByteCount(); private: - BOOL loadImageRaw( const std::string& file_name, LLImageRaw* image_raw ); + BOOL loadImageRaw(const std::string& file_name, LLImageRaw* image_raw); private: - static LLStringTable sImageNames; + LLStringTable mImageNames; - typedef std::map< const char *, LLPointer<LLImageGL> > image_gl_map_t; - typedef std::map< const char *, LLPointer<LLImageTGA> > image_tga_map_t; + typedef std::map< const char*, LLPointer<LLImageGL> > image_gl_map_t; image_gl_map_t mStaticImageListGL; + typedef std::map< const char*, LLPointer<LLImageTGA> > image_tga_map_t; image_tga_map_t mStaticImageListTGA; -public: S32 mGLBytes; S32 mTGABytes; }; // Used by LLTexLayerSetBuffer for a callback. +// Note to anyone merging branches - this supercedes the previous fix +// for DEV-31590 "Heap corruption and crash after outfit changes", +// here and in lltexlayer.cpp. Equally correct and a bit simpler. class LLBakedUploadData { public: - LLBakedUploadData( LLVOAvatar* avatar, LLTexLayerSetBuffer* layerset_buffer, const LLUUID & id); + LLBakedUploadData(const LLVOAvatarSelf* avatar, LLTexLayerSet* layerset, const LLUUID& id); ~LLBakedUploadData() {} - LLUUID mID; - LLVOAvatar* mAvatar; // just backlink, don't LLPointer - LLTexLayerSetBuffer* mLayerSetBuffer; - LLUUID mWearableAssets[WT_COUNT]; - U64 mStartTime; // Used to measure time baked texture upload requires + const LLUUID mID; + const LLVOAvatarSelf* mAvatar; // just backlink, don't LLPointer + LLTexLayerSet* mTexLayerSet; + const U64 mStartTime; // Used to measure time baked texture upload requires }; -extern LLTexStaticImageList gTexStaticImageList; - #endif // LL_LLTEXLAYER_H diff --git a/indra/newview/lltexlayerparams.cpp b/indra/newview/lltexlayerparams.cpp new file mode 100644 index 0000000000000000000000000000000000000000..e00f6aeb04445908472b2b2ebe2f8b7dd73ef244 --- /dev/null +++ b/indra/newview/lltexlayerparams.cpp @@ -0,0 +1,541 @@ +/** + * @file lltexlayerparams.cpp + * @brief SERAPH - ADD IN + * + * $LicenseInfo:firstyear=2002&license=viewergpl$ + * + * Copyright (c) 2002-2007, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlife.com/developers/opensource/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at http://secondlife.com/developers/opensource/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#include "llviewerprecompiledheaders.h" +#include "llagent.h" +#include "lltexlayer.h" +#include "llvoavatarself.h" +#include "lltexlayerparams.h" +#include "llui.h" + +//----------------------------------------------------------------------------- +// LLTexLayerParam +//----------------------------------------------------------------------------- +LLTexLayerParam::LLTexLayerParam(LLTexLayer *layer) : + mTexLayer(layer), + mAvatar(NULL) +{ + if (mTexLayer != NULL) + { + mAvatar = mTexLayer->getTexLayerSet()->getAvatar(); + } +} + +LLTexLayerParam::LLTexLayerParam(LLVOAvatar *avatar) : + mTexLayer(NULL) +{ + mAvatar = avatar; +} + + +BOOL LLTexLayerParam::setInfo(LLViewerVisualParamInfo *info) +{ + LLViewerVisualParam::setInfo(info); + mAvatar->addVisualParam( this); + return TRUE; +} + + + +//----------------------------------------------------------------------------- +// LLTexLayerParamAlpha +//----------------------------------------------------------------------------- + +// static +LLTexLayerParamAlpha::param_alpha_ptr_list_t LLTexLayerParamAlpha::sInstances; + +// static +void LLTexLayerParamAlpha::dumpCacheByteCount() +{ + S32 gl_bytes = 0; + getCacheByteCount( &gl_bytes); + llinfos << "Processed Alpha Texture Cache GL:" << (gl_bytes/1024) << "KB" << llendl; +} + +// static +void LLTexLayerParamAlpha::getCacheByteCount(S32* gl_bytes) +{ + *gl_bytes = 0; + + for (param_alpha_ptr_list_t::iterator iter = sInstances.begin(); + iter != sInstances.end(); iter++) + { + LLTexLayerParamAlpha* instance = *iter; + LLImageGL* image_gl = instance->mCachedProcessedImageGL; + if (image_gl) + { + S32 bytes = (S32)image_gl->getWidth() * image_gl->getHeight() * image_gl->getComponents(); + + if (image_gl->getHasGLTexture()) + { + *gl_bytes += bytes; + } + } + } +} + +LLTexLayerParamAlpha::LLTexLayerParamAlpha(LLTexLayer* layer) : + LLTexLayerParam(layer), + mCachedProcessedImageGL(NULL), + mNeedsCreateTexture(FALSE), + mStaticImageInvalid(FALSE), + mAvgDistortionVec(1.f, 1.f, 1.f), + mCachedEffectiveWeight(0.f) +{ + sInstances.push_front(this); +} + +LLTexLayerParamAlpha::LLTexLayerParamAlpha(LLVOAvatar* avatar) : + LLTexLayerParam(avatar), + mCachedProcessedImageGL(NULL), + mNeedsCreateTexture(FALSE), + mStaticImageInvalid(FALSE), + mAvgDistortionVec(1.f, 1.f, 1.f), + mCachedEffectiveWeight(0.f) +{ + sInstances.push_front(this); +} + + +LLTexLayerParamAlpha::~LLTexLayerParamAlpha() +{ + deleteCaches(); + sInstances.remove(this); +} + +void LLTexLayerParamAlpha::deleteCaches() +{ + mStaticImageTGA = NULL; // deletes image + mCachedProcessedImageGL = NULL; + mStaticImageRaw = NULL; + mNeedsCreateTexture = FALSE; +} + +BOOL LLTexLayerParamAlpha::getMultiplyBlend() const +{ + return ((LLTexLayerParamAlphaInfo *)getInfo())->mMultiplyBlend; +} + +void LLTexLayerParamAlpha::setWeight(F32 weight, BOOL set_by_user) +{ + if (mIsAnimating || mTexLayer == NULL) + { + return; + } + F32 min_weight = getMinWeight(); + F32 max_weight = getMaxWeight(); + F32 new_weight = llclamp(weight, min_weight, max_weight); + U8 cur_u8 = F32_to_U8(mCurWeight, min_weight, max_weight); + U8 new_u8 = F32_to_U8(new_weight, min_weight, max_weight); + if (cur_u8 != new_u8) + { + mCurWeight = new_weight; + + LLVOAvatar* avatar = mTexLayer->getTexLayerSet()->getAvatar(); + if (avatar->getSex() & getSex()) + { + if (gAgent.cameraCustomizeAvatar()) + { + set_by_user = FALSE; + } + avatar->invalidateComposite(mTexLayer->getTexLayerSet(), set_by_user); + mTexLayer->invalidateMorphMasks(); + avatar->updateMeshTextures(); + } + } +} + +void LLTexLayerParamAlpha::setAnimationTarget(F32 target_value, BOOL set_by_user) +{ + mTargetWeight = target_value; + setWeight(target_value, set_by_user); + mIsAnimating = TRUE; + if (mNext) + { + mNext->setAnimationTarget(target_value, set_by_user); + } +} + +void LLTexLayerParamAlpha::animate(F32 delta, BOOL set_by_user) +{ + if (mNext) + { + mNext->animate(delta, set_by_user); + } +} + +BOOL LLTexLayerParamAlpha::getSkip() const +{ + if (!mTexLayer) + { + return TRUE; + } + + const LLVOAvatar *avatar = mTexLayer->getTexLayerSet()->getAvatar(); + + if (((LLTexLayerParamAlphaInfo *)getInfo())->mSkipIfZeroWeight) + { + F32 effective_weight = (avatar->getSex() & getSex()) ? mCurWeight : getDefaultWeight(); + if (is_approx_zero(effective_weight)) + { + return TRUE; + } + } + + EWearableType type = (EWearableType)getWearableType(); + if ((type != WT_INVALID) && !avatar->isWearingWearableType(type)) + { + return TRUE; + } + + return FALSE; +} + + +BOOL LLTexLayerParamAlpha::render(S32 x, S32 y, S32 width, S32 height) +{ + BOOL success = TRUE; + + if (!mTexLayer) + { + return success; + } + + F32 effective_weight = (mTexLayer->getTexLayerSet()->getAvatar()->getSex() & getSex()) ? mCurWeight : getDefaultWeight(); + BOOL weight_changed = effective_weight != mCachedEffectiveWeight; + if (getSkip()) + { + return success; + } + + LLTexLayerParamAlphaInfo *info = (LLTexLayerParamAlphaInfo *)getInfo(); + gGL.flush(); + if (info->mMultiplyBlend) + { + gGL.blendFunc(LLRender::BF_DEST_ALPHA, LLRender::BF_ZERO); // Multiplication: approximates a min() function + } + else + { + gGL.setSceneBlendType(LLRender::BT_ADD); // Addition: approximates a max() function + } + + if (!info->mStaticImageFileName.empty() && !mStaticImageInvalid) + { + if (mStaticImageTGA.isNull()) + { + // Don't load the image file until we actually need it the first time. Like now. + mStaticImageTGA = LLTexLayerStaticImageList::getInstance()->getImageTGA(info->mStaticImageFileName); + // We now have something in one of our caches + LLTexLayerSet::sHasCaches |= mStaticImageTGA.notNull() ? TRUE : FALSE; + + if (mStaticImageTGA.isNull()) + { + llwarns << "Unable to load static file: " << info->mStaticImageFileName << llendl; + mStaticImageInvalid = TRUE; // don't try again. + return FALSE; + } + } + + const S32 image_tga_width = mStaticImageTGA->getWidth(); + const S32 image_tga_height = mStaticImageTGA->getHeight(); + if (!mCachedProcessedImageGL || + (mCachedProcessedImageGL->getWidth() != image_tga_width) || + (mCachedProcessedImageGL->getHeight() != image_tga_height) || + (weight_changed)) + { +// llinfos << "Building Cached Alpha: " << mName << ": (" << mStaticImageRaw->getWidth() << ", " << mStaticImageRaw->getHeight() << ") " << effective_weight << llendl; + mCachedEffectiveWeight = effective_weight; + + if (!mCachedProcessedImageGL) + { + mCachedProcessedImageGL = new LLImageGL(image_tga_width, image_tga_height, 1, FALSE); + + // We now have something in one of our caches + LLTexLayerSet::sHasCaches |= mCachedProcessedImageGL ? TRUE : FALSE; + + mCachedProcessedImageGL->setExplicitFormat(GL_ALPHA8, GL_ALPHA); + } + + // Applies domain and effective weight to data as it is decoded. Also resizes the raw image if needed. + mStaticImageRaw = NULL; + mStaticImageRaw = new LLImageRaw; + mStaticImageTGA->decodeAndProcess(mStaticImageRaw, info->mDomain, effective_weight); + mNeedsCreateTexture = TRUE; + } + + if (mCachedProcessedImageGL) + { + { + // Create the GL texture, and then hang onto it for future use. + if (mNeedsCreateTexture) + { + mCachedProcessedImageGL->createGLTexture(0, mStaticImageRaw); + mNeedsCreateTexture = FALSE; + gGL.getTexUnit(0)->bind(mCachedProcessedImageGL); + mCachedProcessedImageGL->setAddressMode(LLTexUnit::TAM_CLAMP); + } + + LLGLSNoAlphaTest gls_no_alpha_test; + gGL.getTexUnit(0)->bind(mCachedProcessedImageGL); + gl_rect_2d_simple_tex(width, height); + gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); + stop_glerror(); + } + } + + // Don't keep the cache for other people's avatars + // (It's not really a "cache" in that case, but the logic is the same) + if (mAvatar->isSelf()) + { + mCachedProcessedImageGL = NULL; + } + } + else + { + LLGLDisable no_alpha(GL_ALPHA_TEST); + gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); + gGL.color4f(0.f, 0.f, 0.f, effective_weight); + gl_rect_2d_simple(width, height); + } + + return success; +} + +//----------------------------------------------------------------------------- +// LLTexLayerParamAlphaInfo +//----------------------------------------------------------------------------- +LLTexLayerParamAlphaInfo::LLTexLayerParamAlphaInfo() : + mMultiplyBlend(FALSE), + mSkipIfZeroWeight(FALSE), + mDomain(0.f) +{ +} + +BOOL LLTexLayerParamAlphaInfo::parseXml(LLXmlTreeNode* node) +{ + llassert(node->hasName("param") && node->getChildByName("param_alpha")); + + if (!LLViewerVisualParamInfo::parseXml(node)) + return FALSE; + + LLXmlTreeNode* param_alpha_node = node->getChildByName("param_alpha"); + if (!param_alpha_node) + { + return FALSE; + } + + static LLStdStringHandle tga_file_string = LLXmlTree::addAttributeString("tga_file"); + if (param_alpha_node->getFastAttributeString(tga_file_string, mStaticImageFileName)) + { + // Don't load the image file until it's actually needed. + } +// else +// { +// llwarns << "<param_alpha> element is missing tga_file attribute." << llendl; +// } + + static LLStdStringHandle multiply_blend_string = LLXmlTree::addAttributeString("multiply_blend"); + param_alpha_node->getFastAttributeBOOL(multiply_blend_string, mMultiplyBlend); + + static LLStdStringHandle skip_if_zero_string = LLXmlTree::addAttributeString("skip_if_zero"); + param_alpha_node->getFastAttributeBOOL(skip_if_zero_string, mSkipIfZeroWeight); + + static LLStdStringHandle domain_string = LLXmlTree::addAttributeString("domain"); + param_alpha_node->getFastAttributeF32(domain_string, mDomain); + + return TRUE; +} + + + + +LLTexLayerParamColor::LLTexLayerParamColor(LLTexLayer* layer) : + LLTexLayerParam(layer), + mAvgDistortionVec(1.f, 1.f, 1.f) +{ +} + +LLTexLayerParamColor::LLTexLayerParamColor(LLVOAvatar *avatar) : + LLTexLayerParam(avatar), + mAvgDistortionVec(1.f, 1.f, 1.f) +{ +} + +LLTexLayerParamColor::~LLTexLayerParamColor() +{ +} + +LLColor4 LLTexLayerParamColor::getNetColor() const +{ + const LLTexLayerParamColorInfo *info = (LLTexLayerParamColorInfo *)getInfo(); + + llassert(info->mNumColors >= 1); + + F32 effective_weight = (mAvatar && (mAvatar->getSex() & getSex())) ? mCurWeight : getDefaultWeight(); + + S32 index_last = info->mNumColors - 1; + F32 scaled_weight = effective_weight * index_last; + S32 index_start = (S32) scaled_weight; + S32 index_end = index_start + 1; + if (index_start == index_last) + { + return info->mColors[index_last]; + } + else + { + F32 weight = scaled_weight - index_start; + const LLColor4 *start = &info->mColors[ index_start ]; + const LLColor4 *end = &info->mColors[ index_end ]; + return LLColor4((1.f - weight) * start->mV[VX] + weight * end->mV[VX], + (1.f - weight) * start->mV[VY] + weight * end->mV[VY], + (1.f - weight) * start->mV[VZ] + weight * end->mV[VZ], + (1.f - weight) * start->mV[VW] + weight * end->mV[VW]); + } +} + +void LLTexLayerParamColor::setWeight(F32 weight, BOOL set_by_user) +{ + if (mIsAnimating) + { + return; + } + + const LLTexLayerParamColorInfo *info = (LLTexLayerParamColorInfo *)getInfo(); + F32 min_weight = getMinWeight(); + F32 max_weight = getMaxWeight(); + F32 new_weight = llclamp(weight, min_weight, max_weight); + U8 cur_u8 = F32_to_U8(mCurWeight, min_weight, max_weight); + U8 new_u8 = F32_to_U8(new_weight, min_weight, max_weight); + if (cur_u8 != new_u8) + { + mCurWeight = new_weight; + + if (info->mNumColors <= 0) + { + // This will happen when we set the default weight the first time. + return; + } + + if (mAvatar->getSex() & getSex()) + { + onGlobalColorChanged(set_by_user); + if (mTexLayer) + { + mAvatar->invalidateComposite(mTexLayer->getTexLayerSet(), set_by_user); + } + } +// llinfos << "param " << mName << " = " << new_weight << llendl; + } +} + +void LLTexLayerParamColor::setAnimationTarget(F32 target_value, BOOL set_by_user) +{ + // set value first then set interpolating flag to ignore further updates + mTargetWeight = target_value; + setWeight(target_value, set_by_user); + mIsAnimating = TRUE; + if (mNext) + { + mNext->setAnimationTarget(target_value, set_by_user); + } +} + +void LLTexLayerParamColor::animate(F32 delta, BOOL set_by_user) +{ + if (mNext) + { + mNext->animate(delta, set_by_user); + } +} + +//----------------------------------------------------------------------------- +// LLTexLayerParamColorInfo +//----------------------------------------------------------------------------- +LLTexLayerParamColorInfo::LLTexLayerParamColorInfo() : + mOperation(LLTexLayerParamColor::OP_ADD), + mNumColors(0) +{ +} + +BOOL LLTexLayerParamColorInfo::parseXml(LLXmlTreeNode *node) +{ + llassert(node->hasName("param") && node->getChildByName("param_color")); + + if (!LLViewerVisualParamInfo::parseXml(node)) + return FALSE; + + LLXmlTreeNode* param_color_node = node->getChildByName("param_color"); + if (!param_color_node) + { + return FALSE; + } + + std::string op_string; + static LLStdStringHandle operation_string = LLXmlTree::addAttributeString("operation"); + if (param_color_node->getFastAttributeString(operation_string, op_string)) + { + LLStringUtil::toLower(op_string); + if (op_string == "add") mOperation = LLTexLayerParamColor::OP_ADD; + else if (op_string == "multiply") mOperation = LLTexLayerParamColor::OP_MULTIPLY; + else if (op_string == "blend") mOperation = LLTexLayerParamColor::OP_BLEND; + } + + mNumColors = 0; + + LLColor4U color4u; + for (LLXmlTreeNode* child = param_color_node->getChildByName("value"); + child; + child = param_color_node->getNextNamedChild()) + { + if ((mNumColors < MAX_COLOR_VALUES)) + { + static LLStdStringHandle color_string = LLXmlTree::addAttributeString("color"); + if (child->getFastAttributeColor4U(color_string, color4u)) + { + mColors[ mNumColors ].setVec(color4u); + mNumColors++; + } + } + } + if (!mNumColors) + { + llwarns << "<param_color> is missing <value> sub-elements" << llendl; + return FALSE; + } + + if ((mOperation == LLTexLayerParamColor::OP_BLEND) && (mNumColors != 1)) + { + llwarns << "<param_color> with operation\"blend\" must have exactly one <value>" << llendl; + return FALSE; + } + + return TRUE; +} diff --git a/indra/newview/lltexlayerparams.h b/indra/newview/lltexlayerparams.h new file mode 100644 index 0000000000000000000000000000000000000000..8c01738317412092a2f156d5c6da38cfb99cefc4 --- /dev/null +++ b/indra/newview/lltexlayerparams.h @@ -0,0 +1,180 @@ +/** + * @file lltexlayerparams.h + * @brief Texture layer parameters, used by lltexlayer. + * + * $LicenseInfo:firstyear=2002&license=viewergpl$ + * + * Copyright (c) 2002-2007, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlife.com/developers/opensource/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at http://secondlife.com/developers/opensource/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#ifndef LL_LLTEXLAYERPARAMS_H +#define LL_LLTEXLAYERPARAMS_H + +#include "llviewervisualparam.h" + +class LLTexLayer; +class LLVOAvatar; + +class LLTexLayerParam : public LLViewerVisualParam +{ +public: + LLTexLayerParam(LLTexLayer *layer); + LLTexLayerParam(LLVOAvatar *avatar); + /* Virtual */ BOOL setInfo(LLViewerVisualParamInfo *info); +protected: + LLTexLayer* mTexLayer; + LLVOAvatar* mAvatar; +}; + +//----------------------------------------------------------------------------- +// LLTexLayerParamAlpha +// +class LLTexLayerParamAlpha : public LLTexLayerParam +{ +public: + LLTexLayerParamAlpha( LLTexLayer* layer ); + LLTexLayerParamAlpha( LLVOAvatar* avatar ); + /*virtual*/ ~LLTexLayerParamAlpha(); + + // LLVisualParam Virtual functions + ///*virtual*/ BOOL parseData(LLXmlTreeNode* node); + /*virtual*/ void apply( ESex avatar_sex ) {} + /*virtual*/ void setWeight(F32 weight, BOOL set_by_user); + /*virtual*/ void setAnimationTarget(F32 target_value, BOOL set_by_user); + /*virtual*/ void animate(F32 delta, BOOL set_by_user); + + // LLViewerVisualParam Virtual functions + /*virtual*/ F32 getTotalDistortion() { return 1.f; } + /*virtual*/ const LLVector3& getAvgDistortion() { return mAvgDistortionVec; } + /*virtual*/ F32 getMaxDistortion() { return 3.f; } + /*virtual*/ LLVector3 getVertexDistortion(S32 index, LLPolyMesh *poly_mesh) { return LLVector3(1.f, 1.f, 1.f);} + /*virtual*/ const LLVector3* getFirstDistortion(U32 *index, LLPolyMesh **poly_mesh) { index = 0; poly_mesh = NULL; return &mAvgDistortionVec;}; + /*virtual*/ const LLVector3* getNextDistortion(U32 *index, LLPolyMesh **poly_mesh) { index = 0; poly_mesh = NULL; return NULL;}; + + // New functions + BOOL render( S32 x, S32 y, S32 width, S32 height ); + BOOL getSkip() const; + void deleteCaches(); + BOOL getMultiplyBlend() const; + +private: + LLPointer<LLImageGL> mCachedProcessedImageGL; + LLPointer<LLImageTGA> mStaticImageTGA; + LLPointer<LLImageRaw> mStaticImageRaw; + BOOL mNeedsCreateTexture; + BOOL mStaticImageInvalid; + LLVector3 mAvgDistortionVec; + F32 mCachedEffectiveWeight; + +public: + // Global list of instances for gathering statistics + static void dumpCacheByteCount(); + static void getCacheByteCount( S32* gl_bytes ); + + typedef std::list< LLTexLayerParamAlpha* > param_alpha_ptr_list_t; + static param_alpha_ptr_list_t sInstances; +}; +class LLTexLayerParamAlphaInfo : public LLViewerVisualParamInfo +{ + friend class LLTexLayerParamAlpha; +public: + LLTexLayerParamAlphaInfo(); + /*virtual*/ ~LLTexLayerParamAlphaInfo() {}; + + /*virtual*/ BOOL parseXml(LLXmlTreeNode* node); + +private: + std::string mStaticImageFileName; + BOOL mMultiplyBlend; + BOOL mSkipIfZeroWeight; + F32 mDomain; +}; +// +// LLTexLayerParamAlpha +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +// LLTexLayerParamColor +// +class LLTexLayerParamColor : public LLTexLayerParam +{ +public: + enum EColorOperation + { + OP_ADD = 0, + OP_MULTIPLY = 1, + OP_BLEND = 2, + OP_COUNT = 3 // Number of operations + }; + + LLTexLayerParamColor( LLTexLayer* layer ); + LLTexLayerParamColor( LLVOAvatar* avatar ); + /* virtual */ ~LLTexLayerParamColor(); + + // LLVisualParam Virtual functions + ///*virtual*/ BOOL parseData(LLXmlTreeNode* node); + /*virtual*/ void apply( ESex avatar_sex ) {} + /*virtual*/ void setWeight(F32 weight, BOOL set_by_user); + /*virtual*/ void setAnimationTarget(F32 target_value, BOOL set_by_user); + /*virtual*/ void animate(F32 delta, BOOL set_by_user); + + + // LLViewerVisualParam Virtual functions + /*virtual*/ F32 getTotalDistortion() { return 1.f; } + /*virtual*/ const LLVector3& getAvgDistortion() { return mAvgDistortionVec; } + /*virtual*/ F32 getMaxDistortion() { return 3.f; } + /*virtual*/ LLVector3 getVertexDistortion(S32 index, LLPolyMesh *poly_mesh) { return LLVector3(1.f, 1.f, 1.f); } + /*virtual*/ const LLVector3* getFirstDistortion(U32 *index, LLPolyMesh **poly_mesh) { index = 0; poly_mesh = NULL; return &mAvgDistortionVec;}; + /*virtual*/ const LLVector3* getNextDistortion(U32 *index, LLPolyMesh **poly_mesh) { index = 0; poly_mesh = NULL; return NULL;}; + + // New functions + LLColor4 getNetColor() const; +protected: + virtual void onGlobalColorChanged(bool set_by_user) {} +private: + LLVector3 mAvgDistortionVec; +}; + +class LLTexLayerParamColorInfo : public LLViewerVisualParamInfo +{ + friend class LLTexLayerParamColor; + +public: + LLTexLayerParamColorInfo(); + virtual ~LLTexLayerParamColorInfo() {}; + BOOL parseXml( LLXmlTreeNode* node ); + LLTexLayerParamColor::EColorOperation getOperation() const { return mOperation; } +private: + enum { MAX_COLOR_VALUES = 20 }; + LLTexLayerParamColor::EColorOperation mOperation; + LLColor4 mColors[MAX_COLOR_VALUES]; + S32 mNumColors; +}; + +// +// LLTexLayerParamColor +//----------------------------------------------------------------------------- + +#endif diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp index 7a06f0df9ef2623de702884118a32bb3aa88caa3..3c9290aceab3f80fec26107045603f228f0a2201 100644 --- a/indra/newview/lltexturectrl.cpp +++ b/indra/newview/lltexturectrl.cpp @@ -351,7 +351,7 @@ BOOL LLFloaterTexturePicker::handleKeyHere(KEY key, MASK mask) root_folder->scrollToShowSelection(); // move focus to inventory proper - root_folder->setFocus(TRUE); + mInventoryPanel->setFocus(TRUE); // treat this as a user selection of the first filtered result commitIfImmediateSet(); @@ -359,7 +359,7 @@ BOOL LLFloaterTexturePicker::handleKeyHere(KEY key, MASK mask) return TRUE; } - if (root_folder->hasFocus() && key == KEY_UP) + if (mInventoryPanel->hasFocus() && key == KEY_UP) { mSearchEdit->focusFirstItem(TRUE); } @@ -858,7 +858,7 @@ void LLFloaterTexturePicker::onTextureSelect( const LLTextureEntry& te ) /////////////////////////////////////////////////////////////////////// // LLTextureCtrl -static LLRegisterWidget<LLTextureCtrl> r("texture_picker"); +static LLDefaultWidgetRegistry::Register<LLTextureCtrl> r("texture_picker"); LLTextureCtrl::LLTextureCtrl(const LLTextureCtrl::Params& p) : LLUICtrl(p), @@ -1001,6 +1001,9 @@ void LLTextureCtrl::setLabel(const std::string& label) void LLTextureCtrl::showPicker(BOOL take_focus) { + // show hourglass cursor when loading inventory window + // because inventory construction is slooow + getWindow()->setCursor(UI_CURSOR_WAIT); LLFloater* floaterp = mFloaterHandle.get(); // Show the dialog @@ -1020,7 +1023,9 @@ void LLTextureCtrl::showPicker(BOOL take_focus) mFloaterHandle = floaterp->getHandle(); - gFloaterView->getParentFloater(this)->addDependentFloater(floaterp); + LLFloater* root_floater = gFloaterView->getParentFloater(this); + if (root_floater) + root_floater->addDependentFloater(floaterp); floaterp->openFloater(); } diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp index e9dd7921cd3e8a469461b4de1e6a7dd9deb693f0..be535761fcd680ca48b0159865bfbef10ad3c8e4 100644 --- a/indra/newview/lltexturefetch.cpp +++ b/indra/newview/lltexturefetch.cpp @@ -1877,6 +1877,21 @@ bool LLTextureFetch::receiveImagePacket(const LLHost& host, const LLUUID& id, U1 } ////////////////////////////////////////////////////////////////////////////// +BOOL LLTextureFetch::isFromLocalCache(const LLUUID& id) +{ + BOOL from_cache = FALSE ; + + LLMutexLock lock(&mQueueMutex); + LLTextureFetchWorker* worker = getWorker(id); + if (worker) + { + worker->lockWorkData(); + from_cache = worker->mInLocalCache ; + worker->unlockWorkData(); + } + + return from_cache ; +} S32 LLTextureFetch::getFetchState(const LLUUID& id, F32& data_progress_p, F32& requested_priority_p, U32& fetch_priority_p, F32& fetch_dtime_p, F32& request_dtime_p) diff --git a/indra/newview/lltexturefetch.h b/indra/newview/lltexturefetch.h index 56650e721c9509acb5ae3d585e2db7aed0dc87d4..282fbb648149acf5eef75f10d71320d244a1b0be 100644 --- a/indra/newview/lltexturefetch.h +++ b/indra/newview/lltexturefetch.h @@ -67,6 +67,7 @@ class LLTextureFetch : public LLWorkerThread bool receiveImagePacket(const LLHost& host, const LLUUID& id, U16 packet_num, U16 data_size, U8* data); // Debug + BOOL isFromLocalCache(const LLUUID& id); S32 getFetchState(const LLUUID& id, F32& decode_progress_p, F32& requested_priority_p, U32& fetch_priority_p, F32& fetch_dtime_p, F32& request_dtime_p); void dump(); diff --git a/indra/newview/lltextureview.cpp b/indra/newview/lltextureview.cpp index a4fb9c4efc8bb135132f02e60eb870499a86e84a..50b73bfbc7b3c144dcc8aebf2f6d5303735cc1cc 100644 --- a/indra/newview/lltextureview.cpp +++ b/indra/newview/lltextureview.cpp @@ -400,10 +400,10 @@ class LLGLTexMemBar : public LLView void LLGLTexMemBar::draw() { - S32 bound_mem = (LLViewerImage::sBoundTextureMemory >> 20); - S32 max_bound_mem = LLViewerImage::sMaxBoundTextureMem; - S32 total_mem = (LLViewerImage::sTotalTextureMemory >> 20); - S32 max_total_mem = LLViewerImage::sMaxTotalTextureMem; + S32 bound_mem = BYTES_TO_MEGA_BYTES(LLViewerImage::sBoundTextureMemoryInBytes); + S32 max_bound_mem = LLViewerImage::sMaxBoundTextureMemInMegaBytes; + S32 total_mem = BYTES_TO_MEGA_BYTES(LLViewerImage::sTotalTextureMemoryInBytes); + S32 max_total_mem = LLViewerImage::sMaxTotalTextureMemInMegaBytes; F32 discard_bias = LLViewerImage::sDesiredDiscardBias; S32 line_height = (S32)(LLFontGL::getFontMonospace()->getLineHeight() + .5f); diff --git a/indra/newview/lltoolbar.cpp b/indra/newview/lltoolbar.cpp index 67348b2a058b80643d58d0a3bbb10e7d54515ed3..d27958c2ac03510eab68e8adb961b804393588cb 100644 --- a/indra/newview/lltoolbar.cpp +++ b/indra/newview/lltoolbar.cpp @@ -43,13 +43,14 @@ #include "llparcel.h" #include "llagent.h" +#include "llagentwearables.h" #include "llbutton.h" #include "llfocusmgr.h" #include "llviewercontrol.h" #include "llmenucommands.h" #include "llimview.h" #include "lluiconstants.h" -#include "llvoavatar.h" +#include "llvoavatarself.h" #include "lltooldraganddrop.h" #include "llinventoryview.h" #include "llfloaterchatterbox.h" @@ -94,7 +95,7 @@ F32 LLToolBar::sInventoryAutoOpenTime = 1.f; // LLToolBar::LLToolBar() - : LLPanel() +: LLPanel() #if LL_DARWIN , mResizeHandle(NULL) #endif // LL_DARWIN @@ -158,11 +159,14 @@ BOOL LLToolBar::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, LLInventoryView* active_inventory = LLInventoryView::getActiveInventory(); + LLRect button_screen_rect; + inventory_btn->localRectToScreen(inventory_btn->getRect(),&button_screen_rect); + if(active_inventory && active_inventory->getVisible()) { mInventoryAutoOpen = FALSE; } - else if (inventory_btn->getRect().pointInRect(x, y)) + else if (button_screen_rect.pointInRect(x, y)) { if (mInventoryAutoOpen) { @@ -185,7 +189,7 @@ BOOL LLToolBar::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, // static void LLToolBar::toggle(void*) { - BOOL show = gSavedSettings.getBOOL("ShowToolBar"); + BOOL show = gSavedSettings.getBOOL("ShowToolBar"); gSavedSettings.setBOOL("ShowToolBar", !show); gToolBar->setVisible(!show); } @@ -261,8 +265,8 @@ void LLToolBar::refresh() { gSavedSettings.setBOOL("FlyBtnEnabled", sitting ? false : true); } - - // Check to see if we're in build mode + + // Check to see if we're in build mode bool build_enabled = LLToolMgr::getInstance()->canEdit(); if (build_enabled) { @@ -270,17 +274,17 @@ void LLToolBar::refresh() bool build_mode = LLToolMgr::getInstance()->inEdit(); // HACK: Not in mouselook and not just clicking on a scripted object if (gAgent.cameraMouselook() || LLToolGrab::getInstance()->getHideBuildHighlight()) - { - build_mode = FALSE; - } - gSavedSettings.setBOOL("BuildBtnState", build_mode); + { + build_mode = FALSE; + } + gSavedSettings.setBOOL("BuildBtnState", build_mode); } else { gSavedSettings.setBOOL("BuildBtnEnabled", false); gSavedSettings.setBOOL("BuildBtnState", false); } - + if (isInVisibleChain()) { updateCommunicateList(); @@ -328,7 +332,7 @@ void LLToolBar::updateCommunicateList() communicate_button->addSeparator(ADD_TOP); communicate_button->add(getString("Redock Windows"), LLSD("redock"), ADD_TOP); communicate_button->addSeparator(ADD_TOP); - communicate_button->add(LLFloaterMute::getInstance()->getShortTitle(), LLSD("mute list"), ADD_TOP); + communicate_button->add(LLFloaterReg::getTypedInstance<LLFloaterMute>("mute")->getShortTitle(), LLSD("mute list"), ADD_TOP); std::set<LLHandle<LLFloater> >::const_iterator floater_handle_it; @@ -403,12 +407,12 @@ void LLToolBar::onClickCommunicate(LLUICtrl* ctrl, const LLSD& user_data) } else if (selected_option.asString() == "mute list") { - LLFloaterMute::showInstance(); + LLFloaterReg::showInstance("mute"); } else if (selected_option.isUndefined()) // user just clicked the communicate button, treat as toggle { LLFloaterReg::toggleInstance("communicate"); - } + } else // otherwise selection_option is undifined or a specific IM session id { LLFloaterReg::showInstance("communicate", selected_option); diff --git a/indra/newview/lltoolcomp.cpp b/indra/newview/lltoolcomp.cpp index b95b33439e7c63e81c1e31dd75b073f527a80917..cb964082b846c4a803f12ad802741a0c27e3ff40 100644 --- a/indra/newview/lltoolcomp.cpp +++ b/indra/newview/lltoolcomp.cpp @@ -65,6 +65,9 @@ const S32 HPAD = 4; extern LLControlGroup gSavedSettings; +// we use this in various places instead of NULL +static LLTool* sNullTool = new LLTool(std::string("null"), NULL); + //----------------------------------------------------------------------- // LLToolComposite @@ -88,7 +91,9 @@ void LLToolComposite::setCurrentTool( LLTool* new_tool ) LLToolComposite::LLToolComposite(const std::string& name) : LLTool(name), - mCur(NULL), mDefault(NULL), mSelected(FALSE), + mCur(sNullTool), + mDefault(sNullTool), + mSelected(FALSE), mMouseDown(FALSE), mManip(NULL), mSelectRect(NULL) { } @@ -637,7 +642,7 @@ LLToolCompGun::LLToolCompGun() { mGun = new LLToolGun(this); mGrab = new LLToolGrab(this); - mNull = new LLTool(std::string("null"), this); + mNull = sNullTool; setCurrentTool(mGun); mDefault = mGun; @@ -652,7 +657,8 @@ LLToolCompGun::~LLToolCompGun() delete mGrab; mGrab = NULL; - delete mNull; + // don't delete a static object + // delete mNull; mNull = NULL; } diff --git a/indra/newview/lltooldraganddrop.cpp b/indra/newview/lltooldraganddrop.cpp index 741492a88a948cfe8a96c0606f620e6a7e4f7072..0c0253a76a273ee9fe6b08f6e0b2367c5719ae50 100644 --- a/indra/newview/lltooldraganddrop.cpp +++ b/indra/newview/lltooldraganddrop.cpp @@ -40,6 +40,7 @@ #include "lldir.h" #include "llagent.h" +#include "llagentwearables.h" #include "llviewercontrol.h" #include "llfirstuse.h" #include "llfloater.h" @@ -48,6 +49,7 @@ #include "llgesturemgr.h" #include "llhudeffecttrail.h" #include "llhudmanager.h" +#include "llinventorybridge.h" #include "llinventorymodel.h" #include "llinventoryview.h" #include "llmutelist.h" @@ -64,11 +66,12 @@ #include "llviewerregion.h" #include "llviewerstats.h" #include "llviewerwindow.h" -#include "llvoavatar.h" +#include "llvoavatarself.h" #include "llvolume.h" #include "llworld.h" #include "object_flags.h" #include "llimview.h" +#include "llrootview.h" // MAX ITEMS is based on (sizeof(uuid)+2) * count must be < MTUBYTES @@ -847,7 +850,7 @@ void LLToolDragAndDrop::dragOrDrop( S32 x, S32 y, MASK mask, BOOL drop, { handled = TRUE; - LLView* root_view = gViewerWindow->getRootView(); + LLRootView* root_view = gViewerWindow->getRootView(); for (mCurItemIndex = 0; mCurItemIndex < (S32)mCargoIDs.size(); mCurItemIndex++) { @@ -1828,7 +1831,7 @@ BOOL LLToolDragAndDrop::isInventoryGiveAcceptable(LLInventoryItem* item) BOOL copyable = FALSE; if(item->getPermissions().allowCopyBy(gAgent.getID())) copyable = TRUE; - LLVOAvatar* my_avatar = gAgent.getAvatarObject(); + LLVOAvatarSelf* my_avatar = gAgent.getAvatarObject(); if(!my_avatar) { return FALSE; @@ -1848,7 +1851,7 @@ BOOL LLToolDragAndDrop::isInventoryGiveAcceptable(LLInventoryItem* item) break; case LLAssetType::AT_BODYPART: case LLAssetType::AT_CLOTHING: - if(!copyable && gAgent.isWearingItem(item->getUUID())) + if(!copyable && gAgentWearables.isWearingItem(item->getUUID())) { acceptable = FALSE; } @@ -1878,7 +1881,7 @@ BOOL LLToolDragAndDrop::isInventoryGroupGiveAcceptable(LLInventoryItem* item) return FALSE; } - LLVOAvatar* my_avatar = gAgent.getAvatarObject(); + LLVOAvatarSelf* my_avatar = gAgent.getAvatarObject(); if(!my_avatar) { return FALSE; @@ -1925,7 +1928,7 @@ EAcceptance LLToolDragAndDrop::willObjectAcceptInventory(LLViewerObject* obj, LL // gAgent.getGroupID()) // && (obj->mPermModify || obj->mFlagAllowInventoryAdd)); BOOL worn = FALSE; - LLVOAvatar* my_avatar = NULL; + LLVOAvatarSelf* my_avatar = NULL; switch(item->getType()) { case LLAssetType::AT_OBJECT: @@ -1937,7 +1940,7 @@ EAcceptance LLToolDragAndDrop::willObjectAcceptInventory(LLViewerObject* obj, LL break; case LLAssetType::AT_BODYPART: case LLAssetType::AT_CLOTHING: - if(gAgent.isWearingItem(item->getUUID())) + if(gAgentWearables.isWearingItem(item->getUUID())) { worn = TRUE; } @@ -2081,7 +2084,7 @@ EAcceptance LLToolDragAndDrop::dad3dRezAttachmentFromInv( } // must not be already wearing it - LLVOAvatar* avatar = gAgent.getAvatarObject(); + LLVOAvatarSelf* avatar = gAgent.getAvatarObject(); if( !avatar || avatar->isWearingAttachment(item->getUUID()) ) { return ACCEPT_NO; @@ -2123,7 +2126,7 @@ EAcceptance LLToolDragAndDrop::dad3dRezObjectOnLand( locateInventory(item, cat); if(!item || !item->isComplete()) return ACCEPT_NO; - LLVOAvatar* my_avatar = gAgent.getAvatarObject(); + LLVOAvatarSelf* my_avatar = gAgent.getAvatarObject(); if( !my_avatar || my_avatar->isWearingAttachment( item->getUUID() ) ) { return ACCEPT_NO; @@ -2186,7 +2189,7 @@ EAcceptance LLToolDragAndDrop::dad3dRezObjectOnObject( LLViewerInventoryCategory* cat; locateInventory(item, cat); if(!item || !item->isComplete()) return ACCEPT_NO; - LLVOAvatar* my_avatar = gAgent.getAvatarObject(); + LLVOAvatarSelf* my_avatar = gAgent.getAvatarObject(); if( !my_avatar || my_avatar->isWearingAttachment( item->getUUID() ) ) { return ACCEPT_NO; @@ -2384,7 +2387,7 @@ EAcceptance LLToolDragAndDrop::dad3dWearItem( { // Don't wear anything until initial wearables are loaded, can // destroy clothing items. - if (!gAgent.areWearablesLoaded()) + if (!gAgentWearables.areWearablesLoaded()) { LLNotifications::instance().add("CanNotChangeAppearanceUntilLoaded"); return ACCEPT_NO; @@ -2479,7 +2482,7 @@ EAcceptance LLToolDragAndDrop::dad3dWearCategory( { // Don't wear anything until initial wearables are loaded, can // destroy clothing items. - if (!gAgent.areWearablesLoaded()) + if (!gAgentWearables.areWearablesLoaded()) { LLNotifications::instance().add("CanNotChangeAppearanceUntilLoaded"); return ACCEPT_NO; @@ -2680,7 +2683,7 @@ EAcceptance LLToolDragAndDrop::dad3dGiveInventoryObject( // cannot give away no-transfer objects return ACCEPT_NO; } - LLVOAvatar* avatar = gAgent.getAvatarObject(); + LLVOAvatarSelf* avatar = gAgent.getAvatarObject(); if(avatar && avatar->isWearingAttachment( item->getUUID() ) ) { // You can't give objects that are attached to you diff --git a/indra/newview/lltoolfocus.cpp b/indra/newview/lltoolfocus.cpp index 4e8274a6ef72385560443ff0261cceeb302753fa..ca7807357529f6328e310ffe5a5f01695e4330cb 100644 --- a/indra/newview/lltoolfocus.cpp +++ b/indra/newview/lltoolfocus.cpp @@ -54,7 +54,7 @@ #include "llviewercamera.h" #include "llviewerobject.h" #include "llviewerwindow.h" -#include "llvoavatar.h" +#include "llvoavatarself.h" #include "llmorphview.h" // Globals diff --git a/indra/newview/lltoolgrab.cpp b/indra/newview/lltoolgrab.cpp index d9811dac6c04274c5e379f3643dbc65f27185471..409549a66b9a0e64ac92765014f0441b39eb78ec 100644 --- a/indra/newview/lltoolgrab.cpp +++ b/indra/newview/lltoolgrab.cpp @@ -61,7 +61,7 @@ #include "llviewerobjectlist.h" #include "llviewerregion.h" #include "llviewerwindow.h" -#include "llvoavatar.h" +#include "llvoavatarself.h" #include "llworld.h" const S32 SLOP_DIST_SQ = 4; @@ -885,7 +885,7 @@ void LLToolGrab::handleHoverInactive(S32 x, S32 y, MASK mask) // Look for cursor against the edge of the screen // Only works in fullscreen - if (gSavedSettings.getBOOL("FullScreen")) + if (!gSavedSettings.getBOOL("NotFullScreen")) { if (gAgent.cameraThirdPerson() ) { diff --git a/indra/newview/lltoolmgr.cpp b/indra/newview/lltoolmgr.cpp index 5a8dd62f8d1d426cb1a22ef9bfc5f37e639beb34..e3ee209030e01319cc3ee5f14da3a8ec0799fca6 100644 --- a/indra/newview/lltoolmgr.cpp +++ b/indra/newview/lltoolmgr.cpp @@ -83,6 +83,7 @@ LLToolMgr::LLToolMgr() mSelectedTool( NULL ), mCurrentToolset( NULL ) { + // Not a panel, register these callbacks globally. LLUICtrl::EnableCallbackRegistry::currentRegistrar().add("Build.Active", boost::bind(&LLToolMgr::inEdit, this)); LLUICtrl::EnableCallbackRegistry::currentRegistrar().add("Build.Enabled", boost::bind(&LLToolMgr::canEdit, this)); LLUICtrl::CommitCallbackRegistry::currentRegistrar().add("Build.Toggle", boost::bind(&LLToolMgr::toggleBuildMode, this)); diff --git a/indra/newview/lltoolmorph.cpp b/indra/newview/lltoolmorph.cpp index 4577fc7677a128491f0b0893c705c80be49daa36..af0d784a3eb31a6f6c5a051e13d9d537b805440a 100644 --- a/indra/newview/lltoolmorph.cpp +++ b/indra/newview/lltoolmorph.cpp @@ -61,7 +61,7 @@ #include "llviewerimagelist.h" #include "llviewerobject.h" #include "llviewerwindow.h" -#include "llvoavatar.h" +#include "llvoavatarself.h" #include "pipeline.h" @@ -144,7 +144,7 @@ BOOL LLVisualParamHint::needsRender() void LLVisualParamHint::preRender(BOOL clear_depth) { - LLVOAvatar* avatarp = gAgent.getAvatarObject(); + LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); mLastParamWeight = avatarp->getVisualParamWeight(mVisualParam); avatarp->setVisualParamWeight(mVisualParam, mVisualParamWeight); @@ -291,7 +291,7 @@ BOOL LLVisualParamReset::render() { if (sDirty) { - LLVOAvatar* avatarp = gAgent.getAvatarObject(); + LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); avatarp->updateComposites(); avatarp->updateVisualParams(); avatarp->updateGeometry(avatarp->mDrawable); diff --git a/indra/newview/lltoolobjpicker.cpp b/indra/newview/lltoolobjpicker.cpp index 8a66069584df6432dbe108daa9d2214b71efe6b8..b2088a8232c8a80d6a431d93cb6c238512a026f9 100644 --- a/indra/newview/lltoolobjpicker.cpp +++ b/indra/newview/lltoolobjpicker.cpp @@ -48,6 +48,7 @@ #include "llviewercamera.h" #include "llviewerwindow.h" #include "lldrawable.h" +#include "llrootview.h" LLToolObjPicker::LLToolObjPicker() @@ -62,7 +63,7 @@ LLToolObjPicker::LLToolObjPicker() // returns TRUE if an object was selected BOOL LLToolObjPicker::handleMouseDown(S32 x, S32 y, MASK mask) { - LLView* viewp = gViewerWindow->getRootView(); + LLRootView* viewp = gViewerWindow->getRootView(); BOOL handled = viewp->handleMouseDown(x, y, mask); mHitObjectID.setNull(); diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp index 171b03bc5fc3ec5a66d000926392e8b39d80c185..a6dcebc3b567fe0e5e07bb381f23530185becb12 100644 --- a/indra/newview/lltoolpie.cpp +++ b/indra/newview/lltoolpie.cpp @@ -63,7 +63,7 @@ #include "llviewerparcelmgr.h" #include "llviewerwindow.h" #include "llviewermedia.h" -#include "llvoavatar.h" +#include "llvoavatarself.h" #include "llworld.h" #include "llui.h" #include "llweb.h" diff --git a/indra/newview/lltoolpipette.h b/indra/newview/lltoolpipette.h index 533e8a7c95895d64eeb70d3d7b4827db38635b8f..3b6ebec67e97f95b70428de5f229044e86dab848 100644 --- a/indra/newview/lltoolpipette.h +++ b/indra/newview/lltoolpipette.h @@ -58,7 +58,7 @@ class LLToolPipette virtual BOOL handleHover(S32 x, S32 y, MASK mask); virtual BOOL handleToolTip(S32 x, S32 y, std::string& msg, LLRect *sticky_rect_screen); - // Note: Don't return connection; use boost::bind + boost::signal::trackable to disconnect slots + // Note: Don't return connection; use boost::bind + boost::signals2::trackable to disconnect slots typedef boost::signals2::signal<void (const LLTextureEntry& te)> signal_t; void setToolSelectCallback(const signal_t::slot_type& cb) { mSignal.connect(cb); } void setResult(BOOL success, const std::string& msg); diff --git a/indra/newview/lltoolselect.cpp b/indra/newview/lltoolselect.cpp index 23bb5bdd8bf53a4fd758175fc92a70a07c2f0f33..97e2865179a476a7835d07982bf53a57f5f0c015 100644 --- a/indra/newview/lltoolselect.cpp +++ b/indra/newview/lltoolselect.cpp @@ -48,7 +48,7 @@ #include "llviewerobjectlist.h" #include "llviewerregion.h" #include "llviewerwindow.h" -#include "llvoavatar.h" +#include "llvoavatarself.h" #include "llworld.h" // Globals diff --git a/indra/newview/lluploaddialog.cpp b/indra/newview/lluploaddialog.cpp index 2fddccfb36d31c00c5fb5f6af105e3dee8c3d1dc..f5160fd26c206dd27a67fcd6540c8cd83ea646bf 100644 --- a/indra/newview/lluploaddialog.cpp +++ b/indra/newview/lluploaddialog.cpp @@ -41,6 +41,7 @@ #include "llkeyboard.h" #include "llfocusmgr.h" #include "llviewercontrol.h" +#include "llrootview.h" // static LLUploadDialog* LLUploadDialog::sDialog = NULL; diff --git a/indra/newview/llviewercamera.cpp b/indra/newview/llviewercamera.cpp index a6d4dc13459bb7e0a7bf36329dae5d47d14d846d..3f3c10a7c79d21ea8a59bca9d0f7f90762fcf972 100644 --- a/indra/newview/llviewercamera.cpp +++ b/indra/newview/llviewercamera.cpp @@ -111,6 +111,7 @@ LLViewerCamera::LLViewerCamera() : LLCamera() mScreenPixelArea = 0; mZoomFactor = 1.f; mZoomSubregion = 1; + gSavedSettings.getControl("CameraAngle")->getCommitSignal()->connect(boost::bind(&LLViewerCamera::updateCameraAngle, this, _2)); } void LLViewerCamera::updateCameraLocation(const LLVector3 ¢er, @@ -457,8 +458,15 @@ BOOL LLViewerCamera::projectPosAgentToScreen(const LLVector3 &pos_agent, LLCoord } } + LLRect world_view_rect = gViewerWindow->getWorldViewRect(); + S32 viewport[4]; + viewport[0] = world_view_rect.mLeft; + viewport[1] = world_view_rect.mBottom; + viewport[2] = world_view_rect.getWidth(); + viewport[3] = world_view_rect.getHeight(); + if (GL_TRUE == gluProject(pos_agent.mV[VX], pos_agent.mV[VY], pos_agent.mV[VZ], - gGLModelView, gGLProjection, (GLint*)gGLViewport, + gGLModelView, gGLProjection, (GLint*)viewport, &x, &y, &z)) { // convert screen coordinates to virtual UI coordinates @@ -466,9 +474,9 @@ BOOL LLViewerCamera::projectPosAgentToScreen(const LLVector3 &pos_agent, LLCoord y /= gViewerWindow->getDisplayScale().mV[VY]; // should now have the x,y coords of grab_point in screen space - const LLRect& window_rect = gViewerWindow->getWindowRect(); + LLRect world_view_rect = gViewerWindow->getVirtualWorldViewRect(); - // ...sanity check + // convert to pixel coordinates S32 int_x = lltrunc(x); S32 int_y = lltrunc(y); @@ -476,14 +484,14 @@ BOOL LLViewerCamera::projectPosAgentToScreen(const LLVector3 &pos_agent, LLCoord if (clamp) { - if (int_x < window_rect.mLeft) + if (int_x < world_view_rect.mLeft) { - out_point.mX = window_rect.mLeft; + out_point.mX = world_view_rect.mLeft; valid = FALSE; } - else if (int_x > window_rect.mRight) + else if (int_x > world_view_rect.mRight) { - out_point.mX = window_rect.mRight; + out_point.mX = world_view_rect.mRight; valid = FALSE; } else @@ -491,14 +499,14 @@ BOOL LLViewerCamera::projectPosAgentToScreen(const LLVector3 &pos_agent, LLCoord out_point.mX = int_x; } - if (int_y < window_rect.mBottom) + if (int_y < world_view_rect.mBottom) { - out_point.mY = window_rect.mBottom; + out_point.mY = world_view_rect.mBottom; valid = FALSE; } - else if (int_y > window_rect.mTop) + else if (int_y > world_view_rect.mTop) { - out_point.mY = window_rect.mTop; + out_point.mY = world_view_rect.mTop; valid = FALSE; } else @@ -512,19 +520,19 @@ BOOL LLViewerCamera::projectPosAgentToScreen(const LLVector3 &pos_agent, LLCoord out_point.mX = int_x; out_point.mY = int_y; - if (int_x < window_rect.mLeft) + if (int_x < world_view_rect.mLeft) { valid = FALSE; } - else if (int_x > window_rect.mRight) + else if (int_x > world_view_rect.mRight) { valid = FALSE; } - if (int_y < window_rect.mBottom) + if (int_y < world_view_rect.mBottom) { valid = FALSE; } - else if (int_y > window_rect.mTop) + else if (int_y > world_view_rect.mTop) { valid = FALSE; } @@ -553,24 +561,30 @@ BOOL LLViewerCamera::projectPosAgentToScreenEdge(const LLVector3 &pos_agent, in_front = FALSE; } + LLRect world_view_rect = gViewerWindow->getWorldViewRect(); + S32 viewport[4]; + viewport[0] = world_view_rect.mLeft; + viewport[1] = world_view_rect.mBottom; + viewport[2] = world_view_rect.getWidth(); + viewport[3] = world_view_rect.getHeight(); GLdouble x, y, z; // object's window coords, GL-style if (GL_TRUE == gluProject(pos_agent.mV[VX], pos_agent.mV[VY], pos_agent.mV[VZ], gGLModelView, - gGLProjection, (GLint*)gGLViewport, + gGLProjection, (GLint*)viewport, &x, &y, &z)) { x /= gViewerWindow->getDisplayScale().mV[VX]; y /= gViewerWindow->getDisplayScale().mV[VY]; // should now have the x,y coords of grab_point in screen space - const LLRect& window_rect = gViewerWindow->getVirtualWindowRect(); + const LLRect& world_rect = gViewerWindow->getVirtualWorldViewRect(); // ...sanity check S32 int_x = lltrunc(x); S32 int_y = lltrunc(y); // find the center - GLdouble center_x = (GLdouble)(0.5f * (window_rect.mLeft + window_rect.mRight)); - GLdouble center_y = (GLdouble)(0.5f * (window_rect.mBottom + window_rect.mTop)); + GLdouble center_x = (GLdouble)world_rect.getCenterX(); + GLdouble center_y = (GLdouble)world_rect.getCenterY(); if (x == center_x && y == center_y) { @@ -591,41 +605,41 @@ BOOL LLViewerCamera::projectPosAgentToScreenEdge(const LLVector3 &pos_agent, // the slope of the line is undefined if (line_y > 0.f) { - int_y = window_rect.mTop; + int_y = world_rect.mTop; } else { - int_y = window_rect.mBottom; + int_y = world_rect.mBottom; } } - else if (0 == window_rect.getWidth()) + else if (0 == world_rect.getWidth()) { // the diagonal slope of the view is undefined - if (y < window_rect.mBottom) + if (y < world_rect.mBottom) { - int_y = window_rect.mBottom; + int_y = world_rect.mBottom; } - else if ( y > window_rect.mTop) + else if ( y > world_rect.mTop) { - int_y = window_rect.mTop; + int_y = world_rect.mTop; } } else { F32 line_slope = (F32)(line_y / line_x); - F32 rect_slope = ((F32)window_rect.getHeight()) / ((F32)window_rect.getWidth()); + F32 rect_slope = ((F32)world_rect.getHeight()) / ((F32)world_rect.getWidth()); if (fabs(line_slope) > rect_slope) { if (line_y < 0.f) { // bottom - int_y = window_rect.mBottom; + int_y = world_rect.mBottom; } else { // top - int_y = window_rect.mTop; + int_y = world_rect.mTop; } int_x = lltrunc(((GLdouble)int_y - center_y) / line_slope + center_x); } @@ -634,12 +648,12 @@ BOOL LLViewerCamera::projectPosAgentToScreenEdge(const LLVector3 &pos_agent, if (line_x < 0.f) { // left - int_x = window_rect.mLeft; + int_x = world_rect.mLeft; } else { // right - int_x = window_rect.mRight; + int_x = world_rect.mRight; } int_y = lltrunc(((GLdouble)int_x - center_x) * line_slope + center_y); } @@ -648,29 +662,30 @@ BOOL LLViewerCamera::projectPosAgentToScreenEdge(const LLVector3 &pos_agent, // exactly parallel ==> push to the corners if (line_x > 0.f) { - int_x = window_rect.mRight; + int_x = world_rect.mRight; } else { - int_x = window_rect.mLeft; + int_x = world_rect.mLeft; } if (line_y > 0.0f) { - int_y = window_rect.mTop; + int_y = world_rect.mTop; } else { - int_y = window_rect.mBottom; + int_y = world_rect.mBottom; } } } if (!in_front) { - int_x = window_rect.mLeft + window_rect.mRight - int_x; - int_y = window_rect.mBottom + window_rect.mTop - int_y; + int_x = world_rect.mLeft + world_rect.mRight - int_x; + int_y = world_rect.mBottom + world_rect.mTop - int_y; } - out_point.mX = int_x; - out_point.mY = int_y; + + out_point.mX = int_x + world_rect.mLeft; + out_point.mY = int_y + world_rect.mBottom; return TRUE; } return FALSE; @@ -777,7 +792,7 @@ BOOL LLViewerCamera::areVertsVisible(LLViewerObject* volumep, BOOL all_verts) // changes local camera and broadcasts change /* virtual */ void LLViewerCamera::setView(F32 vertical_fov_rads) { - F32 old_fov = LLViewerCamera::getInstance()->getDefaultFOV(); + F32 old_fov = LLViewerCamera::getInstance()->getView(); // cap the FoV vertical_fov_rads = llclamp(vertical_fov_rads, getMinView(), getMaxView()); @@ -808,3 +823,11 @@ void LLViewerCamera::setDefaultFOV(F32 vertical_fov_rads) { mCameraFOVDefault = vertical_fov_rads; } + +// static +void LLViewerCamera::updateCameraAngle( void* user_data, const LLSD& value) +{ + LLViewerCamera* self=(LLViewerCamera*)user_data; + self->setDefaultFOV(value.asReal()); +} + diff --git a/indra/newview/llviewercamera.h b/indra/newview/llviewercamera.h index 6a0c42beecda541e7643946615793b9371c97be0..9615d00200854256e827d6e294ed03b355c6b0f0 100644 --- a/indra/newview/llviewercamera.h +++ b/indra/newview/llviewercamera.h @@ -61,6 +61,7 @@ class LLViewerCamera : public LLCamera, public LLSingleton<LLViewerCamera> const LLVector3 &point_of_interest); static void updateFrustumPlanes(LLCamera& camera, BOOL ortho = FALSE, BOOL zflip = FALSE, BOOL no_hacks = FALSE); + static void updateCameraAngle(void* user_data, const LLSD& value); void setPerspective(BOOL for_selection, S32 x, S32 y_from_bot, S32 width, S32 height, BOOL limit_select_distance, F32 z_near = 0, F32 z_far = 0); const LLMatrix4 &getProjection() const; diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp index ed280073ee83d6c2da2019a8dd1e15376e4f5c6b..320b950649cce63521787103c982d6863b586afa 100644 --- a/indra/newview/llviewercontrol.cpp +++ b/indra/newview/llviewercontrol.cpp @@ -46,14 +46,13 @@ #include "llflexibleobject.h" #include "llfeaturemanager.h" #include "llviewershadermgr.h" -#include "llpanelgeneral.h" -#include "llpanelinput.h" + #include "llsky.h" #include "llvieweraudio.h" #include "llviewerimagelist.h" #include "llviewerthrottle.h" #include "llviewerwindow.h" -#include "llvoavatar.h" +#include "llvoavatarself.h" #include "llvoiceclient.h" #include "llvosky.h" #include "llvotree.h" @@ -122,7 +121,7 @@ static bool handleSetShaderChanged(const LLSD& newvalue) static bool handleSetSelfInvisible( const LLSD& newvalue) { - LLVOAvatar::onChangeSelfInvisible( newvalue.asBoolean() ); + LLVOAvatarSelf::onChangeSelfInvisible( newvalue.asBoolean() ); return true; } @@ -379,7 +378,7 @@ static bool handleRenderUseImpostorsChanged(const LLSD& newvalue) static bool handleRenderDebugGLChanged(const LLSD& newvalue) { - gDebugGL = newvalue.asBoolean(); + gDebugGL = newvalue.asBoolean() || gDebugSession; gGL.clearErrors(); return true; } diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp index e3f70db23884cc9f148c77cae22325ab3c7925ce..a340514e3b5c7b3a9db2cac6d614027798520097 100644 --- a/indra/newview/llviewerdisplay.cpp +++ b/indra/newview/llviewerdisplay.cpp @@ -64,7 +64,7 @@ #include "llviewerobjectlist.h" #include "llviewerparcelmgr.h" #include "llviewerwindow.h" -#include "llvoavatar.h" +#include "llvoavatarself.h" #include "llvograss.h" #include "llworld.h" #include "pipeline.h" @@ -164,6 +164,7 @@ void display_startup() void display_update_camera() { + LLMemType mt_uc(LLMemType::MTYPE_DISPLAY_UPDATE_CAMERA); llpushcallstacks ; // TODO: cut draw distance down if customizing avatar? // TODO: cut draw distance on per-parcel basis? @@ -210,6 +211,7 @@ void display_stats() // Paint the display! void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) { + LLMemType mt_render(LLMemType::MTYPE_RENDER); LLFastTimer t(LLFastTimer::FTM_RENDER); if (LLPipeline::sRenderFrameTest) @@ -227,8 +229,12 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) LLGLState::checkStates(); LLGLState::checkTextureChannels(); + stop_glerror(); + gPipeline.disableLights(); + stop_glerror(); + // Don't draw if the window is hidden or minimized. // In fact, must explicitly check the minimized state before drawing. // Attempting to draw into a minimized window causes a GL error. JC @@ -239,10 +245,14 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) // Clean up memory the pools may have allocated if (rebuild) { + stop_glerror(); gPipeline.rebuildPools(); + stop_glerror(); } + stop_glerror(); gViewerWindow->returnEmptyPicks(); + stop_glerror(); return; } @@ -503,17 +513,23 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) } } - gViewerWindow->setupViewport(); + gViewerWindow->setup3DViewport(); gPipeline.resetFrameStats(); // Reset per-frame statistics. if (!gDisconnected) { + LLMemType mt_du(LLMemType::MTYPE_DISPLAY_UPDATE); LLAppViewer::instance()->pingMainloopTimeout("Display:Update"); if (gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_HUD)) { //don't draw hud objects in this frame gPipeline.toggleRenderType(LLPipeline::RENDER_TYPE_HUD); } - + + if (gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_HUD_PARTICLES)) + { //don't draw hud particles in this frame + gPipeline.toggleRenderType(LLPipeline::RENDER_TYPE_HUD_PARTICLES); + } + //upkeep gl name pools LLGLNamePool::upkeepPools(); @@ -522,15 +538,21 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) stop_glerror(); // *TODO: merge these two methods - LLHUDManager::getInstance()->updateEffects(); - LLHUDObject::updateAll(); - stop_glerror(); - - const F32 max_geom_update_time = 0.005f*10.f*gFrameIntervalSeconds; // 50 ms/second update time - gPipeline.createObjects(max_geom_update_time); - gPipeline.updateGeom(max_geom_update_time); - stop_glerror(); - + { + LLMemType mt_uh(LLMemType::MTYPE_DISPLAY_UPDATE_HUD); + LLHUDManager::getInstance()->updateEffects(); + LLHUDObject::updateAll(); + stop_glerror(); + } + + { + LLMemType mt_ug(LLMemType::MTYPE_DISPLAY_UPDATE_GEOM); + const F32 max_geom_update_time = 0.005f*10.f*gFrameIntervalSeconds; // 50 ms/second update time + gPipeline.createObjects(max_geom_update_time); + gPipeline.updateGeom(max_geom_update_time); + stop_glerror(); + } + S32 water_clip = 0; if ((LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_ENVIRONMENT) > 1) && gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_WATER)) @@ -544,7 +566,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) water_clip = 1; } } - + LLAppViewer::instance()->pingMainloopTimeout("Display:Cull"); //Increment drawable frame counter @@ -593,6 +615,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) LLAppViewer::instance()->pingMainloopTimeout("Display:Swap"); { + LLMemType mt_ds(LLMemType::MTYPE_DISPLAY_SWAP); { LLFastTimer ftm(LLFastTimer::FTM_CLIENT_COPY); LLVertexBuffer::clientCopy(0.016); @@ -635,7 +658,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) glLoadMatrixf(proj.m); glMatrixMode(GL_MODELVIEW); glLoadMatrixf(mod.m); - gViewerWindow->setupViewport(); + gViewerWindow->setup3DViewport(); LLGLState::checkStates(); LLGLState::checkTextureChannels(); @@ -647,6 +670,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) if (!for_snapshot) { + LLMemType mt_gw(LLMemType::MTYPE_DISPLAY_GEN_REFLECTION); LLAppViewer::instance()->pingMainloopTimeout("Display:Imagery"); gPipeline.generateWaterReflection(*LLViewerCamera::getInstance()); } @@ -663,6 +687,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) llpushcallstacks ; { + LLMemType mt_iu(LLMemType::MTYPE_DISPLAY_IMAGE_UPDATE); LLFastTimer t(LLFastTimer::FTM_IMAGE_UPDATE); LLViewerImage::updateClass(LLViewerCamera::getInstance()->getVelocityStat()->getMean(), @@ -685,6 +710,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) // LLAppViewer::instance()->pingMainloopTimeout("Display:StateSort"); { + LLMemType mt_ss(LLMemType::MTYPE_DISPLAY_STATE_SORT); gPipeline.stateSort(*LLViewerCamera::getInstance(), result); stop_glerror(); @@ -703,6 +729,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) LLPipeline::sUseOcclusion = occlusion; { + LLMemType mt_ds(LLMemType::MTYPE_DISPLAY_SKY); LLAppViewer::instance()->pingMainloopTimeout("Display:Sky"); LLFastTimer t(LLFastTimer::FTM_UPDATE_SKY); gSky.updateSky(); @@ -781,7 +808,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) if (!(LLAppViewer::instance()->logoutRequestSent() && LLAppViewer::instance()->hasSavedFinalSnapshot()) && !gRestoreGL) { - + LLMemType mt_rg(LLMemType::MTYPE_DISPLAY_RENDER_GEOM); gGL.setColorMask(true, false); if (LLPipeline::sRenderDeferred && !LLPipeline::sUnderWaterRender) { @@ -807,6 +834,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) if (to_texture) { + LLMemType mt_rf(LLMemType::MTYPE_DISPLAY_RENDER_FLUSH); if (LLPipeline::sRenderDeferred && !LLPipeline::sUnderWaterRender) { gPipeline.mDeferredScreen.flush(); @@ -857,6 +885,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) void render_hud_attachments() { + LLMemType mt_ra(LLMemType::MTYPE_DISPLAY_RENDER_ATTACHMENTS); glMatrixMode(GL_PROJECTION); glPushMatrix(); glMatrixMode(GL_MODELVIEW); @@ -877,16 +906,26 @@ void render_hud_attachments() hud_cam.setOrigin(-1.f,0,0); hud_cam.setAxes(LLVector3(1,0,0), LLVector3(0,1,0), LLVector3(0,0,1)); LLViewerCamera::updateFrustumPlanes(hud_cam, TRUE); + + bool render_particles = gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_PARTICLES) && gSavedSettings.getBOOL("RenderHUDParticles"); //only render hud objects U32 mask = gPipeline.getRenderTypeMask(); + // turn off everything gPipeline.setRenderTypeMask(0); - if (!gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_HUD)) + // turn on HUD + gPipeline.toggleRenderType(LLPipeline::RENDER_TYPE_HUD); + // turn on HUD particles + gPipeline.toggleRenderType(LLPipeline::RENDER_TYPE_HUD_PARTICLES); + + // if particles are off, turn off hud-particles as well + if (!render_particles) { - gPipeline.toggleRenderType(LLPipeline::RENDER_TYPE_HUD); + // turn back off HUD particles + gPipeline.toggleRenderType(LLPipeline::RENDER_TYPE_HUD_PARTICLES); } - BOOL has_ui = gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_UI); + bool has_ui = gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_UI); if (has_ui) { gPipeline.toggleRenderDebugFeature((void*) LLPipeline::RENDER_DEBUG_FEATURE_UI); @@ -1005,6 +1044,7 @@ BOOL setup_hud_matrices(const LLRect& screen_region) void render_ui(F32 zoom_factor, int subfield) { + LLMemType mt_ru(LLMemType::MTYPE_DISPLAY_RENDER_UI); LLGLState::checkStates(); glPushMatrix(); diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp index 95fd8961383b2332f1c6d064d8b6dd09318b2f3e..03c4915e66f3ea6a036735939f6ec64831042485 100644 --- a/indra/newview/llviewerfloaterreg.cpp +++ b/indra/newview/llviewerfloaterreg.cpp @@ -38,18 +38,30 @@ #include "llviewerfloaterreg.h" #include "llcompilequeue.h" +#include "llfloaterabout.h" +#include "llfloaterauction.h" +#include "llfloateraddlandmark.h" #include "llfloateravatarinfo.h" +#include "llfloaterbuildoptions.h" +#include "llfloaterbump.h" #include "llfloaterchat.h" #include "llfloaterchatterbox.h" #include "llfloaterdirectory.h" #include "llfloaterjoystick.h" +#include "llfloaternotificationsconsole.h" +#include "llfloaterlagmeter.h" #include "llfloatermap.h" #include "llfloatermemleak.h" +#include "llfloatermute.h" #include "llfloaterpreference.h" #include "llfloatersnapshot.h" +#include "llfloatersettingsdebug.h" #include "llfloatertools.h" +#include "llfloateruipreview.h" +#include "llfloatervoicedevicesettings.h" #include "llfloaterworldmap.h" #include "llinventoryview.h" +#include "llnearbychathistory.h" #include "llpreviewanim.h" #include "llpreviewgesture.h" @@ -58,21 +70,38 @@ #include "llpreviewscript.h" #include "llpreviewsound.h" #include "llpreviewtexture.h" +#include "llfloaterminiinspector.h" void LLViewerFloaterReg::registerFloaters() { + LLFloaterReg::add("mini_inspector", "panel_mini_inspector.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterMiniInspector>); LLFloaterReg::add("preferences", "floater_preferences.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPreference>); + LLFloaterReg::add("sl_about", "floater_about.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAbout>); LLFloaterReg::add("snapshot", "floater_snapshot.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSnapshot>); LLFloaterReg::add("search", "floater_directory.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterDirectory>); LLFloaterReg::add("build", "floater_tools.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterTools>); LLFloaterReg::add("world_map", "floater_world_map.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterWorldMap>); LLFloaterReg::add("mini_map", "floater_map.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterMap>); LLFloaterReg::add("inventory", "floater_inventory.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLInventoryView>); + LLFloaterReg::add("add_landmark", "floater_add_landmark.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAddLandmark>); + LLFloaterReg::add("mute", "floater_mute.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterMute>); + + LLFloaterReg::add("auction", "floater_auction.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAuction>); + LLFloaterReg::add("build_options", "floater_build_options.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterBuildOptions>); + LLFloaterReg::add("bumps", "floater_bumps.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterBump>); + LLFloaterReg::add("notifications_console", "floater_notifications_console.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterNotificationConsole>); + LLFloaterReg::add("settings_debug", "floater_settings_debug.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSettingsDebug>); + LLFloaterReg::add("lagmeter", "floater_lagmeter.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterLagMeter>); + LLFloaterReg::add("ui_preview", "floater_ui_preview.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterUIPreview>); + LLFloaterReg::add("test_widgets", "floater_test_widgets.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloater>); + LLFloaterReg::add("pref_joystick", "floater_joystick.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterJoystick>); + LLFloaterReg::add("pref_voicedevicesettings", "floater_device_settings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterVoiceDeviceSettings>); LLFloaterReg::add("communicate", "floater_chatterbox.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterChatterBox>); LLFloaterReg::add("chat", "floater_chat_history.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterChat>); + LLFloaterReg::add("nearby_chat", "floater_nearby_chat.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLNearbyChatHistory>); LLFloaterReg::add("contacts", "floater_my_friends.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterMyFriends>); LLFloaterReg::add("compile_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterCompileQueue>); @@ -81,6 +110,7 @@ void LLViewerFloaterReg::registerFloaters() LLFloaterReg::add("stop_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterNotRunQueue>); LLFloaterReg::add("preview_avatar", "floater_profile.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAvatarInfo>); + LLFloaterReg::add("me_profile", "floater_me.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAvatarInfo>); LLFloaterReg::add("preview_anim", "floater_preview_animation.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLPreviewAnim>, "preview"); LLFloaterReg::add("preview_gesture", "floater_preview_gesture.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLPreviewGesture>, "preview"); diff --git a/indra/newview/llviewergesture.cpp b/indra/newview/llviewergesture.cpp index 168f9af1d125bbb62e174a29c83df1ebf56b0e14..2fb56fbcb82f8878a37859041258359d72851c81 100644 --- a/indra/newview/llviewergesture.cpp +++ b/indra/newview/llviewergesture.cpp @@ -47,6 +47,7 @@ #include "llviewermessage.h" // send_guid_sound_trigger #include "llviewernetwork.h" #include "llagent.h" +#include "llbottomtray.h" // Globals LLViewerGestureList gGestureList; @@ -136,7 +137,7 @@ void LLViewerGesture::doTrigger( BOOL send_chat ) { // Don't play nodding animation, since that might not blend // with the gesture animation. - gChatBar->sendChatFromViewer(mOutputString, CHAT_TYPE_NORMAL, FALSE); + LLBottomTray::getInstance()->sendChatFromViewer(mOutputString, CHAT_TYPE_NORMAL, FALSE); } } diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp index b1482d5ce494ad65c2feb55b41f666f2e4b496d2..45d24ee7e83c29b819770b3d450a394c320d13d4 100644 --- a/indra/newview/llviewerinventory.cpp +++ b/indra/newview/llviewerinventory.cpp @@ -44,6 +44,7 @@ #include "llimview.h" #include "llgesturemgr.h" +#include "llinventorybridge.h" #include "llinventoryview.h" #include "llviewerregion.h" @@ -308,8 +309,8 @@ bool LLViewerInventoryItem::exportFileLocal(LLFILE* fp) const fprintf(fp, "\t\tparent_id\t%s\n", uuid_str.c_str()); mPermissions.exportFile(fp); fprintf(fp, "\t\ttype\t%s\n", LLAssetType::lookup(mType)); - const char* inv_type_str = LLInventoryType::lookup(mInventoryType); - if(inv_type_str) fprintf(fp, "\t\tinv_type\t%s\n", inv_type_str); + const std::string inv_type_str = LLInventoryType::lookup(mInventoryType); + if(!inv_type_str.empty()) fprintf(fp, "\t\tinv_type\t%s\n", inv_type_str.c_str()); fprintf(fp, "\t\tname\t%s|\n", mName.c_str()); fprintf(fp, "\t\tcreation_date\t%d\n", (S32) mCreationDate); fprintf(fp,"\t}\n"); @@ -798,3 +799,187 @@ void copy_inventory_from_notecard(const LLUUID& object_id, const LLUUID& notecar viewer_region->getCapAPI().post(request); } + +void create_new_item(const std::string& name, + const LLUUID& parent_id, + LLAssetType::EType asset_type, + LLInventoryType::EType inv_type, + U32 next_owner_perm) +{ + std::string desc; + LLAssetType::generateDescriptionFor(asset_type, desc); + next_owner_perm = (next_owner_perm) ? next_owner_perm : PERM_MOVE | PERM_TRANSFER; + + + if (inv_type == LLInventoryType::IT_GESTURE) + { + LLPointer<LLInventoryCallback> cb = new CreateGestureCallback(); + create_inventory_item(gAgent.getID(), gAgent.getSessionID(), + parent_id, LLTransactionID::tnull, name, desc, asset_type, inv_type, + NOT_WEARABLE, next_owner_perm, cb); + } + else + { + LLPointer<LLInventoryCallback> cb = NULL; + create_inventory_item(gAgent.getID(), gAgent.getSessionID(), + parent_id, LLTransactionID::tnull, name, desc, asset_type, inv_type, + NOT_WEARABLE, next_owner_perm, cb); + } + +} + +const std::string NEW_LSL_NAME = "New Script"; // *TODO:Translate? (probably not) +const std::string NEW_NOTECARD_NAME = "New Note"; // *TODO:Translate? (probably not) +const std::string NEW_GESTURE_NAME = "New Gesture"; // *TODO:Translate? (probably not) + +void menu_create_inventory_item(LLFolderView* folder, LLFolderBridge *bridge, const LLSD& userdata) +{ + std::string type = userdata.asString(); + + if ("category" == type) + { + LLUUID category; + if (bridge) + { + category = gInventory.createNewCategory(bridge->getUUID(), LLAssetType::AT_NONE, LLStringUtil::null); + } + else + { + category = gInventory.createNewCategory(gAgent.getInventoryRootID(), LLAssetType::AT_NONE, LLStringUtil::null); + } + gInventory.notifyObservers(); + folder->setSelectionByID(category, TRUE); + } + else if ("lsl" == type) + { + LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_LSL_TEXT); + create_new_item(NEW_LSL_NAME, + parent_id, + LLAssetType::AT_LSL_TEXT, + LLInventoryType::IT_LSL, + PERM_MOVE | PERM_TRANSFER); + } + else if ("notecard" == type) + { + LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_NOTECARD); + create_new_item(NEW_NOTECARD_NAME, + parent_id, + LLAssetType::AT_NOTECARD, + LLInventoryType::IT_NOTECARD, + PERM_ALL); + } + else if ("gesture" == type) + { + LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_GESTURE); + create_new_item(NEW_GESTURE_NAME, + parent_id, + LLAssetType::AT_GESTURE, + LLInventoryType::IT_GESTURE, + PERM_ALL); + } + else if ("shirt" == type) + { + LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_CLOTHING); + LLFolderBridge::createWearable(parent_id, WT_SHIRT); + } + else if ("pants" == type) + { + LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_CLOTHING); + LLFolderBridge::createWearable(parent_id, WT_PANTS); + } + else if ("shoes" == type) + { + LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_CLOTHING); + LLFolderBridge::createWearable(parent_id, WT_SHOES); + } + else if ("socks" == type) + { + LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_CLOTHING); + LLFolderBridge::createWearable(parent_id, WT_SOCKS); + } + else if ("jacket" == type) + { + LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_CLOTHING); + LLFolderBridge::createWearable(parent_id, WT_JACKET); + } + else if ("skirt" == type) + { + LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_CLOTHING); + LLFolderBridge::createWearable(parent_id, WT_SKIRT); + } + else if ("gloves" == type) + { + LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_CLOTHING); + LLFolderBridge::createWearable(parent_id, WT_GLOVES); + } + else if ("undershirt" == type) + { + LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_CLOTHING); + LLFolderBridge::createWearable(parent_id, WT_UNDERSHIRT); + } + else if ("underpants" == type) + { + LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_CLOTHING); + LLFolderBridge::createWearable(parent_id, WT_UNDERPANTS); + } + else if ("shape" == type) + { + LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_BODYPART); + LLFolderBridge::createWearable(parent_id, WT_SHAPE); + } + else if ("skin" == type) + { + LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_BODYPART); + LLFolderBridge::createWearable(parent_id, WT_SKIN); + } + else if ("hair" == type) + { + LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_BODYPART); + LLFolderBridge::createWearable(parent_id, WT_HAIR); + } + else if ("eyes" == type) + { + LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_BODYPART); + LLFolderBridge::createWearable(parent_id, WT_EYES); + } + + folder->setNeedsAutoRename(TRUE); +} + +LLAssetType::EType LLViewerInventoryItem::getType() const +{ + if (mType == LLAssetType::AT_LINK) + { + LLInventoryItem *linked_item = gInventory.getItem(mAssetUUID); + if (linked_item) + { + return linked_item->getType(); + } + } + return LLInventoryItem::getType(); +} + +const LLUUID& LLViewerInventoryItem::getAssetUUID() const +{ + if (mType == LLAssetType::AT_LINK) + { + LLInventoryItem *linked_item = gInventory.getItem(mAssetUUID); + if (linked_item) + { + return linked_item->getAssetUUID(); + } + } + + return LLInventoryItem::getAssetUUID(); +} + +const std::string& LLViewerInventoryItem::getName() const +{ + if (mType == LLAssetType::AT_LINK) + { + return LLInventoryItem::getName(); //+" link"; + } + + return LLInventoryItem::getName(); +} + diff --git a/indra/newview/llviewerinventory.h b/indra/newview/llviewerinventory.h index 1ddf8a58f9cb933332bf0d22830d658b035c526b..8318931dde1bad52b5aa6a345bc3ce8a7ad38ad2 100644 --- a/indra/newview/llviewerinventory.h +++ b/indra/newview/llviewerinventory.h @@ -37,6 +37,9 @@ #include "llframetimer.h" #include "llwearable.h" +class LLFolderView; +class LLFolderBridge; + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Class LLViewerInventoryItem // @@ -53,6 +56,10 @@ class LLViewerInventoryItem : public LLInventoryItem ~LLViewerInventoryItem( void ); // ref counted public: + virtual LLAssetType::EType getType() const; + virtual const LLUUID& getAssetUUID() const; + virtual const std::string& getName() const; + // construct a complete viewer inventory item LLViewerInventoryItem(const LLUUID& uuid, const LLUUID& parent_uuid, const LLPermissions& permissions, @@ -286,4 +293,8 @@ void copy_inventory_from_notecard(const LLUUID& object_id, U32 callback_id = 0); +void menu_create_inventory_item(LLFolderView* folder, + LLFolderBridge* bridge, + const LLSD& userdata); + #endif // LL_LLVIEWERINVENTORY_H diff --git a/indra/newview/llviewerjointattachment.h b/indra/newview/llviewerjointattachment.h index 4847ac7a720d040c50c6a5cc7b8bdb7d9d20140c..c0035796844dd88672a15a9548de441b99ba59f0 100644 --- a/indra/newview/llviewerjointattachment.h +++ b/indra/newview/llviewerjointattachment.h @@ -71,20 +71,20 @@ class LLViewerJointAttachment : void setPieSlice(S32 pie_slice) { mPieSlice = pie_slice; } void setVisibleInFirstPerson(BOOL visibility) { mVisibleInFirst = visibility; } - BOOL getVisibleInFirstPerson() { return mVisibleInFirst; } + BOOL getVisibleInFirstPerson() const { return mVisibleInFirst; } void setGroup(S32 group) { mGroup = group; } void setOriginalPosition(LLVector3 &position); void setAttachmentVisibility(BOOL visible); void setIsHUDAttachment(BOOL is_hud) { mIsHUDAttachment = is_hud; } - BOOL getIsHUDAttachment() { return mIsHUDAttachment; } + BOOL getIsHUDAttachment() const { return mIsHUDAttachment; } - BOOL isAnimatable() { return FALSE; } + BOOL isAnimatable() const { return FALSE; } - S32 getGroup() { return mGroup; } - S32 getPieSlice() { return mPieSlice; } - LLViewerObject *getObject() { return mAttachedObject; } - S32 getNumObjects() { return (mAttachedObject ? 1 : 0); } - const LLUUID& getItemID() { return mItemID; } + S32 getGroup() const { return mGroup; } + S32 getPieSlice() const { return mPieSlice; } + LLViewerObject *getObject() const { return mAttachedObject; } + S32 getNumObjects() const { return (mAttachedObject ? 1 : 0); } + const LLUUID& getItemID() const { return mItemID; } // // unique methods diff --git a/indra/newview/llviewerkeyboard.cpp b/indra/newview/llviewerkeyboard.cpp index bbcb6240b6200e0474e1e3c2c6eb00c83b30308c..ab5cdeba4438256edb91081898f7ff96c7668c5c 100644 --- a/indra/newview/llviewerkeyboard.cpp +++ b/indra/newview/llviewerkeyboard.cpp @@ -43,7 +43,7 @@ #include "llmoveview.h" #include "lltoolfocus.h" #include "llviewerwindow.h" -#include "llvoavatar.h" +#include "llvoavatarself.h" // // Constants @@ -500,7 +500,8 @@ void stop_moving( EKeystate s ) void start_chat( EKeystate s ) { // start chat - gChatBar->startChat(NULL); + LLChatBar::startChat(NULL); +// gChatBar->startChat(NULL); } void start_gesture( EKeystate s ) @@ -508,16 +509,18 @@ void start_gesture( EKeystate s ) if (KEYSTATE_UP == s && !(gFocusMgr.getKeyboardFocus() && gFocusMgr.getKeyboardFocus()->acceptsTextInput())) { - if (gChatBar->getCurrentChat().empty()) - { - // No existing chat in chat editor, insert '/' - gChatBar->startChat("/"); - } - else - { - // Don't overwrite existing text in chat editor - gChatBar->startChat(NULL); - } + //TODO* remove DUMMY chatbar + LLChatBar::startChat(NULL); +// if (gChatBar->getCurrentChat().empty()) +// { +// // No existing chat in chat editor, insert '/' +// gChatBar->startChat("/"); +// } +// else +// { +// // Don't overwrite existing text in chat editor +// gChatBar->startChat(NULL); +// } } } diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 5647b6889b0d31e006ae0dbd83e33d9714109a2d..826aca5e64b1350420dd2f92f6ce564b40df093c 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -66,7 +66,7 @@ // newview includes #include "llagent.h" - +#include "llagentwearables.h" #include "llagentpilot.h" #include "llbox.h" #include "llcallingcard.h" @@ -86,7 +86,6 @@ #include "llfloaterbuycurrency.h" #include "llfloateractivespeakers.h" #include "llfloateranimpreview.h" -#include "llfloateravatarinfo.h" #include "llfloateravatartextures.h" #include "llfloaterbeacons.h" #include "llfloaterbuildoptions.h" @@ -101,7 +100,6 @@ #include "llfloaterdaycycle.h" #include "llfloaterdirectory.h" #include "llfloaterchatterbox.h" -#include "llfloaterfriends.h" #include "llfloaterfonttest.h" #include "llfloatergesture.h" #include "llfloatergodtools.h" @@ -123,6 +121,7 @@ #include "llfloaterperms.h" #include "llfloaterpostprocess.h" #include "llfloaterpreference.h" +#include "llfloaterreg.h" #include "llfloaterregioninfo.h" #include "llfloaterreporter.h" #include "llfloaterscriptdebug.h" @@ -134,6 +133,7 @@ #include "llfloaterworldmap.h" #include "llfloatermemleak.h" #include "llfasttimerview.h" +#include "llfriendactions.h" #include "llmemoryview.h" #include "llgivemoney.h" #include "llgroupmgr.h" @@ -144,6 +144,7 @@ #include "llimagebmp.h" #include "llimagej2c.h" #include "llimagetga.h" +#include "llinventorybridge.h" #include "llinventorymodel.h" #include "llinventoryview.h" #include "llkeyboard.h" @@ -158,6 +159,7 @@ #include "llparcel.h" #include "llprimitive.h" #include "llresmgr.h" +#include "llrootview.h" #include "llselectmgr.h" #include "llsky.h" #include "llstatusbar.h" @@ -177,13 +179,14 @@ #include "lltrans.h" #include "lluictrlfactory.h" #include "lluploaddialog.h" +#include "lluserauth.h" #include "lluuid.h" #include "llviewercamera.h" #include "llviewergenericmessage.h" #include "llviewergesture.h" #include "llviewerimagelist.h" // gImageList #include "llviewerinventory.h" -#include "llviewermenufile.h"// init_menu_file() +#include "llviewermenufile.h" // init_menu_file() #include "llviewermessage.h" #include "llviewernetwork.h" #include "llviewerobjectlist.h" @@ -193,6 +196,7 @@ #include "llviewerstats.h" #include "llviewerwindow.h" #include "llvoavatar.h" +#include "llvoavatarself.h" #include "llvolume.h" #include "llweb.h" #include "llworld.h" @@ -205,11 +209,11 @@ #include "llwlanimator.h" #include "llwlparammanager.h" #include "llwaterparammanager.h" +#include "llfloaternotificationsconsole.h" #include "lltexlayer.h" using namespace LLVOAvatarDefines; -using namespace LLOldEvents; BOOL enable_land_build(void*); BOOL enable_object_build(void*); @@ -276,6 +280,7 @@ void handle_dump_group_info(void *); void handle_dump_capabilities_info(void *); void handle_dump_focus(void*); +// Advanced->Consoles menu void handle_region_dump_settings(void*); void handle_region_dump_temp_asset_data(void*); void handle_region_clear_temp_asset_data(void*); @@ -524,7 +529,7 @@ void init_menus() gPieAvatar->setBackgroundColor( context_menu_color ); gPieObject->setBackgroundColor( context_menu_color ); gPieAttachment->setBackgroundColor( context_menu_color ); - + gPieLand->setBackgroundColor( context_menu_color ); color = gSavedSkinSettings.getColor( "MenuPopupBgColor" ); @@ -607,6 +612,11 @@ class LLAdvancedToggleConsole : public view_listener_t toggle_visibility( (void*)gDebugView->mMemoryView ); } #endif + else if ("notifications" == console_type) + { + //LLFloaterNotificationConsole::showInstance(); + LLFloaterReg::showInstance("notifications_console"); + } return true; } }; @@ -1107,7 +1117,7 @@ class LLAdvancedCheckFrameTest : public view_listener_t }; -// + // ///////////////////////////// //// HIDE SELECTED OBJECTS // ///////////////////////////// @@ -1121,7 +1131,7 @@ class LLAdvancedCheckFrameTest : public view_listener_t // return true; // } //}; -// + // //class LLAdvancedCheckHideSelectedObjects : public view_listener_t //{ // bool handleEvent(const LLSD& userdata) @@ -1192,14 +1202,14 @@ class LLAdvancedCheckDisableTextures : public view_listener_t ////////////////////////// // DUMP SCRIPTED CAMERA // ////////////////////////// - + class LLAdvancedDumpScriptedCamera : public view_listener_t { bool handleEvent(const LLSD& userdata) { handle_dump_followcam(NULL); return true; - } +} }; @@ -1212,7 +1222,7 @@ class LLAdvancedDumpScriptedCamera : public view_listener_t class LLAdvancedDumpRegionObjectCache : public view_listener_t { bool handleEvent(const LLSD& userdata) - { +{ handle_dump_region_object_cache(NULL); return true; } @@ -1226,9 +1236,9 @@ class LLAdvancedWebBrowserTest : public view_listener_t return true; } }; - + class LLAdvancedBuyCurrencyTest : public view_listener_t -{ + { bool handleEvent(const LLSD& userdata) { handle_buy_currency_test(NULL); @@ -1251,7 +1261,7 @@ class LLAdvancedToggleEditableUI : public view_listener_t } }; - + ///////////////////// // DUMP SELECT MGR // ///////////////////// @@ -1287,7 +1297,7 @@ class LLAdvancedDumpInventory : public view_listener_t /////////////////////// // DUMP FOCUS HOLDER // /////////////////////// - + class LLAdvancedDumpFocusHolder : public view_listener_t { @@ -1299,7 +1309,7 @@ class LLAdvancedDumpFocusHolder : public view_listener_t }; - + //////////////////////////////// // PRINT SELECTED OBJECT INFO // //////////////////////////////// @@ -1459,7 +1469,7 @@ class LLAdvancedToggleDebugKeys : public view_listener_t return true; } }; - + class LLAdvancedCheckDebugKeys : public view_listener_t { bool handleEvent(const LLSD& userdata) @@ -1468,7 +1478,7 @@ class LLAdvancedCheckDebugKeys : public view_listener_t return new_value; } }; - + /////////////////////// @@ -1486,7 +1496,7 @@ class LLAdvancedToggleDebugWindowProc : public view_listener_t }; class LLAdvancedCheckDebugWindowProc : public view_listener_t -{ + { bool handleEvent(const LLSD& userdata) { bool new_value = gDebugWindowProc; @@ -1517,7 +1527,7 @@ class LLAdvancedLoadUIFromXML : public view_listener_t { handle_load_from_xml(NULL); return true; - } +} }; @@ -1533,7 +1543,7 @@ class LLAdvancedSaveUIToXML : public view_listener_t { handle_save_to_xml(NULL); return true; - } +} }; @@ -1595,7 +1605,7 @@ class LLAdvancedGrabBakedTexture : public view_listener_t else if ("hair" == texture_type) { handle_grab_texture( (void*)TEX_HAIR_BAKED ); - } +} return true; } @@ -1604,7 +1614,7 @@ class LLAdvancedGrabBakedTexture : public view_listener_t class LLAdvancedEnableGrabBakedTexture : public view_listener_t { bool handleEvent(const LLSD& userdata) - { +{ std::string texture_type = userdata.asString(); bool new_value = false; @@ -1628,9 +1638,9 @@ class LLAdvancedEnableGrabBakedTexture : public view_listener_t { new_value = enable_grab_texture( (void*)TEX_SKIRT_BAKED ); } - + return new_value; - } +} }; /////////////////////// @@ -1660,13 +1670,13 @@ class LLAdvancedToggleCharacterGeometry : public view_listener_t { handle_god_request_avatar_geometry(NULL); return true; - } +} }; class LLEnableGodCustomerService : public view_listener_t { bool handleEvent(const LLSD& userdata) - { +{ bool new_value = enable_god_customer_service(NULL); return new_value; } @@ -1674,7 +1684,7 @@ class LLEnableGodCustomerService : public view_listener_t -///////////////////////////// + ///////////////////////////// // TEST MALE / TEST FEMALE // ///////////////////////////// @@ -1881,7 +1891,7 @@ class LLAdvancedToggleDisableLOD : public view_listener_t return true; } }; - + class LLAdvancedCheckDisableLOD : public view_listener_t { bool handleEvent(const LLSD& userdata) @@ -1921,7 +1931,7 @@ class LLAdvancedCheckDebugCharacterVis : public view_listener_t // DUMP ATTACHMENTS // ////////////////////// - + class LLAdvancedDumpAttachments : public view_listener_t { bool handleEvent(const LLSD& userdata) @@ -1932,12 +1942,12 @@ class LLAdvancedDumpAttachments : public view_listener_t }; - + ///////////////////// // REBAKE TEXTURES // ///////////////////// - - + + class LLAdvancedRebakeTextures : public view_listener_t { bool handleEvent(const LLSD& userdata) @@ -1946,8 +1956,8 @@ class LLAdvancedRebakeTextures : public view_listener_t return true; } }; - - + + #ifndef LL_RELEASE_FOR_DOWNLOAD /////////////////////////// // DEBUG AVATAR TEXTURES // @@ -1990,7 +2000,7 @@ class LLAdvancedMemoryLeakingSimulation : public view_listener_t }; #endif - + ///////////////// // MESSAGE LOG // ///////////////// @@ -2137,7 +2147,8 @@ class LLAdvancedShowDebugSettings : public view_listener_t { bool handleEvent(const LLSD& userdata) { - LLFloaterSettingsDebug::showInstance(userdata); + // LLFloaterSettingsDebug::showInstance(userdata); + LLFloaterReg::showInstance("settings_debug",userdata); return true; } }; @@ -2174,10 +2185,10 @@ class LLAdvancedEnableObjectObjectOcclusion: public view_listener_t { bool handleEvent(const LLSD& userdata) { - + bool new_value = gGLManager.mHasOcclusionQuery && LLFeatureManager::getInstance()->isFeatureAvailable(userdata.asString()); return new_value; - } +} }; @@ -2269,7 +2280,7 @@ class LLAdvancedForceErrorDisconnectViewer : public view_listener_t { handle_disconnect_viewer(NULL); return true; - } +} }; @@ -2364,7 +2375,7 @@ class LLAdminHandleObjectAssetIDs: public view_listener_t { handle_object_asset_ids(NULL); return true; - } + } }; //Admin >Parcel @@ -2418,7 +2429,7 @@ class LLAdminOnSaveState: public view_listener_t { LLPanelRegionTools::onSaveState(NULL); return true; - } +} }; @@ -2541,15 +2552,18 @@ class LLObjectEnableTouch : public view_listener_t bool new_value = obj && obj->flagHandleTouch(); // Update label based on the node touch name if available. + std::string touch_text; LLSelectNode* node = LLSelectMgr::getInstance()->getSelection()->getFirstRootNode(); if (node && node->mValid && !node->mTouchName.empty()) { - gMenuHolder->childSetText("Object Touch", node->mTouchName); + touch_text = node->mTouchName; } else { - gMenuHolder->childSetText("Object Touch", userdata.asString()); + touch_text = userdata.asString(); } + gMenuHolder->childSetText("Object Touch", touch_text); + gMenuHolder->childSetText("Attachment Object Touch", touch_text); return new_value; } @@ -2616,7 +2630,7 @@ class LLViewJoystickFlycam : public view_listener_t class LLViewCheckJoystickFlycam : public view_listener_t { bool handleEvent(const LLSD& userdata) - { + { bool new_value = LLViewerJoystick::getInstance()->getOverrideCamera(); return new_value; } @@ -2680,15 +2694,15 @@ class LLObjectEdit : public view_listener_t { // zoom in on object center instead of where we clicked, as we need to see the manipulator handles gAgent.setFocusGlobal(selected_objectp->getPositionGlobal(), selected_objectp->getID()); - gAgent.cameraZoomIn(0.666f); - gAgent.cameraOrbitOver( 30.f * DEG_TO_RAD ); - gViewerWindow->moveCursorToCenter(); - } + gAgent.cameraZoomIn(0.666f); + gAgent.cameraOrbitOver( 30.f * DEG_TO_RAD ); + gViewerWindow->moveCursorToCenter(); } } + } LLFloaterReg::showInstance("build"); - + LLToolMgr::getInstance()->setCurrentToolset(gBasicToolset); gFloaterTools->setEditTool( LLToolCompTranslate::getInstance() ); @@ -2817,7 +2831,7 @@ class LLSelfRemoveAllAttachments : public view_listener_t { bool handleEvent(const LLSD& userdata) { - LLAgent::userRemoveAllAttachments(NULL); + LLAgentWearables::userRemoveAllAttachments(NULL); return true; } }; @@ -2831,7 +2845,7 @@ class LLSelfEnableRemoveAllAttachments : public view_listener_t { LLVOAvatar* avatarp = gAgent.getAvatarObject(); for (LLVOAvatar::attachment_map_t::iterator iter = avatarp->mAttachmentPoints.begin(); - iter != avatarp->mAttachmentPoints.end(); ) + iter != avatarp->mAttachmentPoints.end(); ) { LLVOAvatar::attachment_map_t::iterator curiter = iter++; LLViewerJointAttachment* attachment = curiter->second; @@ -2893,7 +2907,7 @@ class LLObjectMute : public view_listener_t { LLViewerObject* object = LLSelectMgr::getInstance()->getSelection()->getPrimaryObject(); if (!object) return true; - + LLUUID id; std::string name; LLMute::EType type; @@ -2910,7 +2924,7 @@ class LLObjectMute : public view_listener_t name += " "; name += lastname->getString(); } - + type = LLMute::AGENT; } else @@ -2923,10 +2937,10 @@ class LLObjectMute : public view_listener_t { name = node->mName; } - + type = LLMute::OBJECT; } - + LLMute mute(id, name, type); if (LLMuteList::getInstance()->isMuted(mute.mID, mute.mName)) { @@ -2935,9 +2949,9 @@ class LLObjectMute : public view_listener_t else { LLMuteList::getInstance()->add(mute); - LLFloaterMute::showInstance(); + LLFloaterReg::showInstance("mute"); } - + return true; } }; @@ -3086,7 +3100,10 @@ class LLAvatarDebug : public view_listener_t LLVOAvatar* avatar = find_avatar_from_object( LLSelectMgr::getInstance()->getSelection()->getPrimaryObject() ); if( avatar ) { - avatar->dumpLocalTextures(); + if (avatar->isSelf()) + { + ((LLVOAvatarSelf *)avatar)->dumpLocalTextures(); + } llinfos << "Dumping temporary asset data to simulator logs for avatar " << avatar->getID() << llendl; std::vector<std::string> strings; strings.push_back(avatar->getID().asString()); @@ -3313,7 +3330,7 @@ bool callback_leave_group(const LLSD& notification, const LLSD& response) msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID() ); msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); msg->nextBlockFast(_PREHASH_GroupData); - msg->addUUIDFast(_PREHASH_GroupID, gAgent.mGroupID ); + msg->addUUIDFast(_PREHASH_GroupID, gAgent.getGroupID() ); gAgent.sendReliableMessage(); } return false; @@ -3325,17 +3342,17 @@ void append_aggregate(std::string& string, const LLAggregatePermissions& ag_perm std::string buffer; switch(val) { - case LLAggregatePermissions::AP_NONE: + case LLAggregatePermissions::AP_NONE: buffer = llformat( "* %s None\n", txt); break; - case LLAggregatePermissions::AP_SOME: + case LLAggregatePermissions::AP_SOME: buffer = llformat( "* %s Some\n", txt); break; - case LLAggregatePermissions::AP_ALL: + case LLAggregatePermissions::AP_ALL: buffer = llformat( "* %s All\n", txt); break; - case LLAggregatePermissions::AP_EMPTY: - default: + case LLAggregatePermissions::AP_EMPTY: + default: break; } string.append(buffer); @@ -3343,22 +3360,22 @@ void append_aggregate(std::string& string, const LLAggregatePermissions& ag_perm BOOL enable_buy(void*) { - // In order to buy, there must only be 1 purchaseable object in - // the selection manger. + // In order to buy, there must only be 1 purchaseable object in + // the selection manger. if(LLSelectMgr::getInstance()->getSelection()->getRootObjectCount() != 1) return FALSE; - LLViewerObject* obj = NULL; - LLSelectNode* node = LLSelectMgr::getInstance()->getSelection()->getFirstRootNode(); + LLViewerObject* obj = NULL; + LLSelectNode* node = LLSelectMgr::getInstance()->getSelection()->getFirstRootNode(); if(node) - { - obj = node->getObject(); - if(!obj) return FALSE; + { + obj = node->getObject(); + if(!obj) return FALSE; if(node->mSaleInfo.isForSale() && node->mPermissions->getMaskOwner() & PERM_TRANSFER && (node->mPermissions->getMaskOwner() & PERM_COPY || node->mSaleInfo.getSaleType() != LLSaleInfo::FS_COPY)) { if(obj->permAnyOwner()) return TRUE; } - } + } return FALSE; } @@ -3401,7 +3418,7 @@ void handle_buy_object(LLSaleInfo sale_info) } S32 price = sale_info.getSalePrice(); - + if (price > 0 && price > gStatusBar->getBalance()) { LLFloaterBuyCurrency::buyCurrency("This object costs", price); @@ -3451,11 +3468,7 @@ void handle_region_dump_settings(void*) void handle_dump_group_info(void *) { - llinfos << "group " << gAgent.mGroupName << llendl; - llinfos << "ID " << gAgent.mGroupID << llendl; - llinfos << "powers " << gAgent.mGroupPowers << llendl; - llinfos << "title " << gAgent.mGroupTitle << llendl; - //llinfos << "insig " << gAgent.mGroupInsigniaID << llendl; + gAgent.dumpGroupInfo(); } void handle_dump_capabilities_info(void *) @@ -3541,13 +3554,13 @@ void set_god_level(U8 god_level) // inventory in items may change in god mode gObjectList.dirtyAllObjectInventory(); - if(gViewerWindow) - { - gViewerWindow->setMenuBackgroundColor(god_level > GOD_NOT, - LLViewerLogin::getInstance()->isInProductionGrid()); - } - - LLSD args; + if(gViewerWindow) + { + gViewerWindow->setMenuBackgroundColor(god_level > GOD_NOT, + LLViewerLogin::getInstance()->isInProductionGrid()); + } + + LLSD args; if(god_level > GOD_NOT) { args["LEVEL"] = llformat("%d",(S32)god_level); @@ -3678,7 +3691,7 @@ void request_friendship(const LLUUID& dest_id) } if (!fullname.empty()) { - LLPanelFriends::requestFriendshipDialog(dest_id, fullname); + LLFriendActions::requestFriendshipDialog(dest_id, fullname); } else { @@ -3692,7 +3705,7 @@ class LLEditEnableCustomizeAvatar : public view_listener_t { bool handleEvent(const LLSD& userdata) { - bool new_value = gAgent.areWearablesLoaded(); + bool new_value = gAgentWearables.areWearablesLoaded(); return new_value; } }; @@ -3759,7 +3772,7 @@ class LLLandSit : public view_listener_t LLViewerParcelMgr::getInstance()->deselectLand(); LLVector3d posGlobal = LLToolPie::getInstance()->getPick().mPosGlobal; - + LLQuaternion target_rot; if (gAgent.getAvatarObject()) { @@ -3774,51 +3787,6 @@ class LLLandSit : public view_listener_t } }; -// ---legacy functions for landmark , not using anymore - angela --- -//void manage_landmarks(void*) -//{ -// LLFloaterLandmark::showInstance(1); -//} -// -//void create_new_landmark(void*) -//{ -// // Note this is temporary cut and paste of legacy functionality. -// // TODO: Make this spawn a floater allowing user customize before creating the inventory object -// -// LLViewerRegion* agent_region = gAgent.getRegion(); -// if(!agent_region) -// { -// llwarns << "No agent region" << llendl; -// return; -// } -// LLParcel* agent_parcel = LLViewerParcelMgr::getInstance()->getAgentParcel(); -// if (!agent_parcel) -// { -// llwarns << "No agent parcel" << llendl; -// return; -// } -// if (!agent_parcel->getAllowLandmark() -// && !LLViewerParcelMgr::isParcelOwnedByAgent(agent_parcel, GP_LAND_ALLOW_LANDMARK)) -// { -// gViewerWindow->alertXml("CannotCreateLandmarkNotOwner"); -// return; -// } -// -// LLUUID folder_id; -// folder_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_LANDMARK); -// std::string pos_string; -// gAgent.buildLocationString(pos_string); -// -// create_inventory_item(gAgent.getID(), gAgent.getSessionID(), -// folder_id, LLTransactionID::tnull, -// pos_string, pos_string, // name, desc -// LLAssetType::AT_LANDMARK, -// LLInventoryType::IT_LANDMARK, -// NOT_WEARABLE, PERM_ALL, -// NULL); -//} - - //------------------------------------------------------------------- // Help menu functions //------------------------------------------------------------------- @@ -4108,12 +4076,12 @@ void derez_objects(EDeRezDestination dest, const LLUUID& dest_id) std::string error; LLDynamicArray<LLViewerObject*> derez_objects; - + // Check conditions that we can't deal with, building a list of // everything that we'll actually be derezzing. LLViewerRegion* first_region = NULL; for (LLObjectSelection::valid_root_iterator iter = LLSelectMgr::getInstance()->getSelection()->valid_root_begin(); - iter != LLSelectMgr::getInstance()->getSelection()->valid_root_end(); iter++) + iter != LLSelectMgr::getInstance()->getSelection()->valid_root_end(); iter++) { LLSelectNode* node = *iter; LLViewerObject* object = node->getObject(); @@ -4128,7 +4096,7 @@ void derez_objects(EDeRezDestination dest, const LLUUID& dest_id) { // Derez doesn't work at all if the some of the objects // are in regions besides the first object selected. - + // ...crosses region boundaries error = "AcquireErrorObjectSpan"; break; @@ -4172,7 +4140,7 @@ void derez_objects(EDeRezDestination dest, const LLUUID& dest_id) default: if((node->mPermissions->allowTransferTo(gAgent.getID()) && object->permCopy()) - || gAgent.isGodlike()) + || gAgent.isGodlike()) { can_derez_current = TRUE; } @@ -4271,7 +4239,7 @@ class LLObjectReturn : public view_listener_t bool handleEvent(const LLSD& userdata) { if (LLSelectMgr::getInstance()->getSelection()->isEmpty()) return true; - + mObjectSelection = LLSelectMgr::getInstance()->getEditSelection(); LLNotifications::instance().add("ReturnToOwner", LLSD(), LLSD(), boost::bind(&LLObjectReturn::onReturnToOwner, this, _1, _2)); @@ -4357,13 +4325,13 @@ void handle_take() { return; } - + BOOL you_own_everything = TRUE; BOOL locked_but_takeable_object = FALSE; LLUUID category_id; - + for (LLObjectSelection::root_iterator iter = LLSelectMgr::getInstance()->getSelection()->root_begin(); - iter != LLSelectMgr::getInstance()->getSelection()->root_end(); iter++) + iter != LLSelectMgr::getInstance()->getSelection()->root_end(); iter++) { LLSelectNode* node = *iter; LLViewerObject* object = node->getObject(); @@ -4405,7 +4373,7 @@ void handle_take() } if(category_id.notNull()) { - // check trash + // check trash LLUUID trash; trash = gInventory.findCategoryUUIDForType(LLAssetType::AT_TRASH); if(category_id == trash || gInventory.isObjectDescendentOf(category_id, trash)) @@ -4433,7 +4401,7 @@ void handle_take() params.functor.function(confirm_take); if(locked_but_takeable_object || - !you_own_everything) + !you_own_everything) { if(locked_but_takeable_object && you_own_everything) { @@ -4477,7 +4445,7 @@ BOOL enable_take() } for (LLObjectSelection::valid_root_iterator iter = LLSelectMgr::getInstance()->getSelection()->valid_root_begin(); - iter != LLSelectMgr::getInstance()->getSelection()->valid_root_end(); iter++) + iter != LLSelectMgr::getInstance()->getSelection()->valid_root_end(); iter++) { LLSelectNode* node = *iter; LLViewerObject* object = node->getObject(); @@ -4492,14 +4460,14 @@ BOOL enable_take() #else # ifdef TOGGLE_HACKED_GODLIKE_VIEWER if (!LLViewerLogin::getInstance()->isInProductionGrid() - && gAgent.isGodlike()) + && gAgent.isGodlike()) { return TRUE; } # endif if((node->mPermissions->allowTransferTo(gAgent.getID()) && object->permModify()) - || (node->mPermissions->getOwner() == gAgent.getID())) + || (node->mPermissions->getOwner() == gAgent.getID())) { return TRUE; } @@ -4591,7 +4559,7 @@ class LLToolsEnableBuyOrTake : public view_listener_t BOOL is_selection_buy_not_take() { for (LLObjectSelection::root_iterator iter = LLSelectMgr::getInstance()->getSelection()->root_begin(); - iter != LLSelectMgr::getInstance()->getSelection()->root_end(); iter++) + iter != LLSelectMgr::getInstance()->getSelection()->root_end(); iter++) { LLSelectNode* node = *iter; LLViewerObject* obj = node->getObject(); @@ -4609,7 +4577,7 @@ S32 selection_price() { S32 total_price = 0; for (LLObjectSelection::root_iterator iter = LLSelectMgr::getInstance()->getSelection()->root_begin(); - iter != LLSelectMgr::getInstance()->getSelection()->root_end(); iter++) + iter != LLSelectMgr::getInstance()->getSelection()->root_end(); iter++) { LLSelectNode* node = *iter; LLViewerObject* obj = node->getObject(); @@ -4745,7 +4713,7 @@ class LLToolsSnapObjectXY : public view_listener_t F64 snap_size = (F64)gSavedSettings.getF32("GridResolution"); for (LLObjectSelection::root_iterator iter = LLSelectMgr::getInstance()->getSelection()->root_begin(); - iter != LLSelectMgr::getInstance()->getSelection()->root_end(); iter++) + iter != LLSelectMgr::getInstance()->getSelection()->root_end(); iter++) { LLSelectNode* node = *iter; LLViewerObject* obj = node->getObject(); @@ -5018,7 +4986,7 @@ class LLObjectEnableDelete : public view_listener_t #else # ifdef TOGGLE_HACKED_GODLIKE_VIEWER (!LLViewerLogin::getInstance()->isInProductionGrid() - && gAgent.isGodlike()) || + && gAgent.isGodlike()) || # endif LLSelectMgr::getInstance()->canDoDelete(); #endif @@ -5188,11 +5156,6 @@ void show_debug_menus() { BOOL debug = gSavedSettings.getBOOL("UseDebugMenus"); - if(debug) - { - LLFirstUse::useDebugMenus(); - } - gMenuBarView->setItemVisible("Advanced", debug); gMenuBarView->setItemEnabled("Advanced", debug); @@ -5201,18 +5164,28 @@ void show_debug_menus() gMenuBarView->setItemVisible("Develop", debug); gMenuBarView->setItemEnabled("Develop", debug); - + // Server ('Admin') menu hidden when not in godmode. const bool show_server_menu = debug && (gAgent.getGodLevel() > GOD_NOT); gMenuBarView->setItemVisible("Admin", show_server_menu); gMenuBarView->setItemEnabled("Admin", show_server_menu); } + if (gLoginMenuBarView) + { + BOOL debug = gSavedSettings.getBOOL("UseDebugMenus"); + gLoginMenuBarView->setItemVisible("Debug", debug); + gLoginMenuBarView->setItemEnabled("Debug", debug); + } } void toggle_debug_menus(void*) { BOOL visible = ! gSavedSettings.getBOOL("UseDebugMenus"); gSavedSettings.setBOOL("UseDebugMenus", visible); + if(visible) + { + LLFirstUse::useDebugMenus(); + } show_debug_menus(); } @@ -5347,14 +5320,14 @@ class LLWorldSetBusy : public view_listener_t bool can_create_landmark() { BOOL can = FALSE; - + LLParcel* agent_parcel = LLViewerParcelMgr::getInstance()->getAgentParcel(); if (agent_parcel) - { +{ if (agent_parcel->getAllowLandmark() || LLViewerParcelMgr::isParcelOwnedByAgent(agent_parcel, GP_LAND_ALLOW_LANDMARK)) - { + { can = TRUE; } } @@ -5366,24 +5339,7 @@ class LLWorldCreateLandmark : public view_listener_t { bool handleEvent(const LLSD& userdata) { - if (!can_create_landmark()) - { - LLNotifications::instance().add("CannotCreateLandmarkNotOwner"); - return true; - } - - LLUUID folder_id; - folder_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_LANDMARK); - std::string pos_string; - gAgent.buildLocationString(pos_string); - - create_inventory_item(gAgent.getID(), gAgent.getSessionID(), - folder_id, LLTransactionID::tnull, - pos_string, pos_string, // name, desc - LLAssetType::AT_LANDMARK, - LLInventoryType::IT_LANDMARK, - NOT_WEARABLE, PERM_ALL, - NULL); + LLFloaterReg::showInstance("add_landmark"); return true; } }; @@ -5429,7 +5385,7 @@ void callback_invite_to_group(LLUUID group_id, LLUUID dest_id) { std::vector<LLUUID> agent_ids; agent_ids.push_back(dest_id); - + LLFloaterGroupInvite::showForGroup(group_id, &agent_ids); } @@ -5647,7 +5603,7 @@ class LLShowFloater : public view_listener_t } else if (floater_name == "appearance") { - if (gAgent.areWearablesLoaded()) + if (gAgentWearables.areWearablesLoaded()) { gAgent.changeCameraToCustomizeAvatar(); } @@ -5658,7 +5614,7 @@ class LLShowFloater : public view_listener_t } else if (floater_name == "mute list") { - LLFloaterMute::toggleInstance(); + LLFloaterReg::toggleInstance("mute"); } else if (floater_name == "camera controls") { @@ -5691,12 +5647,12 @@ class LLShowFloater : public view_listener_t { LLViewerParcelMgr::getInstance()->selectParcelAt(gAgent.getPositionGlobal()); } - + LLViewerParcelMgr::getInstance()->startBuyLand(); } else if (floater_name == "grid options") { - LLFloaterBuildOptions::showInstance(); + LLFloaterReg::showInstance("build_options"); } else if (floater_name == "script errors") { @@ -5720,12 +5676,13 @@ class LLShowFloater : public view_listener_t { if (!gNoRender) { - LLFloaterBump::showInstance(); + //LLFloaterBump::showInstance(); + LLFloaterReg::showInstance("bumps"); } } else if (floater_name == "lag meter") { - LLFloaterLagMeter::showInstance(); + LLFloaterReg::showInstance("lagmeter"); } else if (floater_name == "buy currency") { @@ -5733,7 +5690,7 @@ class LLShowFloater : public view_listener_t } else if (floater_name == "about") { - LLFloaterAbout::showInstance(); + LLFloaterReg::showInstance("sl_about"); } else if (floater_name == "active speakers") { @@ -5767,7 +5724,7 @@ class LLFloaterVisible : public view_listener_t } else if (floater_name == "mute list") { - new_value = LLFloaterMute::instanceVisible(); + new_value = LLFloaterReg::instanceVisible("mute"); } else if (floater_name == "camera controls") { @@ -5895,7 +5852,7 @@ class LLShowAgentProfile : public view_listener_t LLVOAvatar* avatar = find_avatar_from_object(agent_id); if (avatar) { - LLFloaterAvatarInfo::show( avatar->getID() ); + LLFriendActions::showProfile(avatar->getID()); } return true; } @@ -5984,7 +5941,7 @@ void near_attach_object(BOOL success, void *user_data) if (success) { LLViewerJointAttachment *attachment = (LLViewerJointAttachment *)user_data; - + U8 attachment_id = 0; if (attachment) { @@ -6026,7 +5983,7 @@ void confirm_replace_attachment(S32 option, void* user_data) } LLVector3 walkToSpot = selectedObject->getPositionAgent(); - + // make sure we stop in front of the object LLVector3 delta = walkToSpot - gAgent.getPositionAgent(); delta.normVec(); @@ -6088,24 +6045,24 @@ class LLAttachmentDrop : public view_listener_t class LLAttachmentDetachFromPoint : public view_listener_t { bool handleEvent(const LLSD& user_data) - { +{ LLViewerJointAttachment *attachment = get_if_there(gAgent.getAvatarObject()->mAttachmentPoints, user_data.asInteger(), (LLViewerJointAttachment*)NULL); - + LLViewerObject* attached_object = attachment ? attachment->getObject() : NULL; - if (attached_object) - { - gMessageSystem->newMessage("ObjectDetach"); - gMessageSystem->nextBlockFast(_PREHASH_AgentData); - gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID() ); - gMessageSystem->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); + if (attached_object) + { + gMessageSystem->newMessage("ObjectDetach"); + gMessageSystem->nextBlockFast(_PREHASH_AgentData); + gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID() ); + gMessageSystem->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); - gMessageSystem->nextBlockFast(_PREHASH_ObjectData); - gMessageSystem->addU32Fast(_PREHASH_ObjectLocalID, attached_object->getLocalID()); - gMessageSystem->sendReliable( gAgent.getRegionHost() ); - } - return true; + gMessageSystem->nextBlockFast(_PREHASH_ObjectData); + gMessageSystem->addU32Fast(_PREHASH_ObjectLocalID, attached_object->getLocalID()); + gMessageSystem->sendReliable( gAgent.getRegionHost() ); } + return true; +} }; static bool onEnableAttachmentLabel(LLUICtrl* ctrl, const LLSD& data) @@ -6115,20 +6072,20 @@ static bool onEnableAttachmentLabel(LLUICtrl* ctrl, const LLSD& data) if (menu) { LLViewerJointAttachment *attachmentp = get_if_there(gAgent.getAvatarObject()->mAttachmentPoints, data["index"].asInteger(), (LLViewerJointAttachment*)NULL); - if (attachmentp) - { + if (attachmentp) + { label = data["label"].asString(); - if (attachmentp->getObject()) + if (attachmentp->getObject()) + { + LLViewerInventoryItem* itemp = gInventory.getItem(attachmentp->getItemID()); + if (itemp) { - LLViewerInventoryItem* itemp = gInventory.getItem(attachmentp->getItemID()); - if (itemp) - { - label += std::string(" (") + itemp->getName() + std::string(")"); - } + label += std::string(" (") + itemp->getName() + std::string(")"); } } - menu->setLabel(label); } + menu->setLabel(label); +} return true; } @@ -6224,7 +6181,7 @@ class LLAttachmentEnableDrop : public view_listener_t if ( object ) { - S32 attachmentID = ATTACHMENT_ID_FROM_STATE(object->getState()); + S32 attachmentID = ATTACHMENT_ID_FROM_STATE(object->getState()); attachment_pt = get_if_there(gAgent.getAvatarObject()->mAttachmentPoints, attachmentID, (LLViewerJointAttachment*)NULL); if ( attachment_pt ) @@ -6232,7 +6189,7 @@ class LLAttachmentEnableDrop : public view_listener_t // make sure item is in your inventory (it could be a delayed attach message being sent from the sim) // so check to see if the item is in the inventory already item = gInventory.getItem(attachment_pt->getItemID()); - + if ( !item ) { // Item does not exist, make an observer to enable the pie menu @@ -6243,13 +6200,13 @@ class LLAttachmentEnableDrop : public view_listener_t LLInventoryFetchObserver::item_ref_t items; //add item to the inventory item to be fetched items.push_back(attachment_pt->getItemID()); - + wornItemFetched->fetchItems(items); gInventory.addObserver(wornItemFetched); } } } - + //now check to make sure that the item is actually in the inventory before we enable dropping it bool new_value = enable_detach() && can_build && item; @@ -6293,7 +6250,7 @@ BOOL object_selected_and_point_valid(const LLSD&) { LLObjectSelectionHandle selection = LLSelectMgr::getInstance()->getSelection(); for (LLObjectSelection::root_iterator iter = selection->root_begin(); - iter != selection->root_end(); iter++) + iter != selection->root_end(); iter++) { LLSelectNode* node = *iter; LLViewerObject* object = node->getObject(); @@ -6329,7 +6286,7 @@ BOOL object_is_wearable() } LLObjectSelectionHandle selection = LLSelectMgr::getInstance()->getSelection(); for (LLObjectSelection::valid_root_iterator iter = LLSelectMgr::getInstance()->getSelection()->valid_root_begin(); - iter != LLSelectMgr::getInstance()->getSelection()->valid_root_end(); iter++) + iter != LLSelectMgr::getInstance()->getSelection()->valid_root_end(); iter++) { LLSelectNode* node = *iter; if (node->mPermissions->getOwner() == gAgent.getID()) @@ -6357,11 +6314,11 @@ class LLAttachmentPointFilled : public view_listener_t bool enable = false; LLVOAvatar::attachment_map_t::iterator found_it = gAgent.getAvatarObject()->mAttachmentPoints.find(user_data.asInteger()); if (found_it != gAgent.getAvatarObject()->mAttachmentPoints.end()) - { +{ enable = found_it->second->getObject() != NULL; } return enable; - } +} }; class LLAvatarSendIM : public view_listener_t @@ -6502,10 +6459,10 @@ class LLToolsSelectedScriptAction : public view_listener_t void handle_selected_texture_info(void*) { for (LLObjectSelection::valid_iterator iter = LLSelectMgr::getInstance()->getSelection()->valid_begin(); - iter != LLSelectMgr::getInstance()->getSelection()->valid_end(); iter++) + iter != LLSelectMgr::getInstance()->getSelection()->valid_end(); iter++) { LLSelectNode* node = *iter; - + std::string msg; msg.assign("Texture info for: "); msg.append(node->mName); @@ -6579,7 +6536,7 @@ void handle_dump_attachments(void*) } for (LLVOAvatar::attachment_map_t::iterator iter = avatar->mAttachmentPoints.begin(); - iter != avatar->mAttachmentPoints.end(); ) + iter != avatar->mAttachmentPoints.end(); ) { LLVOAvatar::attachment_map_t::iterator curiter = iter++; LLViewerJointAttachment* attachment = curiter->second; @@ -6618,7 +6575,7 @@ class LLCheckControl : public view_listener_t std::string callback_data = userdata.asString(); bool new_value = gSavedSettings.getBOOL(callback_data); return new_value; - } +} }; @@ -6638,15 +6595,15 @@ class LLAdvancedHandleAttchedLightParticles: public view_listener_t { std::string control_name = userdata.asString(); if (control_name == "RenderAttachedLights") - { +{ menu_toggle_attached_lights(NULL); - } +} else if (control_name == "RenderAttachedParticles") - { +{ menu_toggle_attached_particles(NULL); - } +} return true; - } +} }; class LLSomethingSelected : public view_listener_t @@ -6705,26 +6662,26 @@ class LLToolsEnableTakeCopy : public view_listener_t { if (!LLSelectMgr::getInstance()->getSelection()->isEmpty()) { - all_valid = true; + all_valid = true; #ifndef HACKED_GODLIKE_VIEWER # ifdef TOGGLE_HACKED_GODLIKE_VIEWER - if (LLViewerLogin::getInstance()->isInProductionGrid() - || !gAgent.isGodlike()) + if (LLViewerLogin::getInstance()->isInProductionGrid() + || !gAgent.isGodlike()) # endif + { + struct f : public LLSelectedObjectFunctor { - struct f : public LLSelectedObjectFunctor + virtual bool apply(LLViewerObject* obj) { - virtual bool apply(LLViewerObject* obj) - { - return (!obj->permCopy() || obj->isAttachment()); - } - } func; - const bool firstonly = true; - bool any_invalid = LLSelectMgr::getInstance()->getSelection()->applyToRootObjects(&func, firstonly); - all_valid = !any_invalid; - } -#endif // HACKED_GODLIKE_VIEWER + return (!obj->permCopy() || obj->isAttachment()); + } + } func; + const bool firstonly = true; + bool any_invalid = LLSelectMgr::getInstance()->getSelection()->applyToRootObjects(&func, firstonly); + all_valid = !any_invalid; } +#endif // HACKED_GODLIKE_VIEWER + } } return all_valid; @@ -6901,7 +6858,7 @@ BOOL enable_god_basic(void*) void toggle_show_xui_names(void *) { BOOL showXUINames = gSavedSettings.getBOOL("ShowXUINames"); - + showXUINames = !showXUINames; gSavedSettings.setBOOL("ShowXUINames", showXUINames); } @@ -6994,11 +6951,7 @@ void reload_vertex_shader(void *) void handle_dump_avatar_local_textures(void*) { - LLVOAvatar* avatar = gAgent.getAvatarObject(); - if( avatar ) - { - avatar->dumpLocalTextures(); - } + gAgent.getAvatarObject()->dumpLocalTextures(); } void handle_debug_avatar_textures(void*) @@ -7013,7 +6966,7 @@ void handle_debug_avatar_textures(void*) void handle_grab_texture(void* data) { ETextureIndex index = (ETextureIndex)((intptr_t)data); - LLVOAvatar* avatar = gAgent.getAvatarObject(); + const LLVOAvatarSelf* avatar = gAgent.getAvatarObject(); if ( avatar ) { const LLUUID& asset_id = avatar->grabLocalTexture(index); @@ -7023,32 +6976,14 @@ void handle_grab_texture(void* data) LLUUID folder_id(gInventory.findCategoryUUIDForType(asset_type)); if(folder_id.notNull()) { - std::string name = "Baked "; - switch (index) + std::string name = "Unknown"; + const LLVOAvatarDictionary::TextureEntry *texture_dict = LLVOAvatarDictionary::getInstance()->getTexture(index); + if (texture_dict->mIsBakedTexture) { - case TEX_EYES_BAKED: - name.append("Iris"); - break; - case TEX_HEAD_BAKED: - name.append("Head"); - break; - case TEX_UPPER_BAKED: - name.append("Upper Body"); - break; - case TEX_LOWER_BAKED: - name.append("Lower Body"); - break; - case TEX_SKIRT_BAKED: - name.append("Skirt"); - break; - case TEX_HAIR_BAKED: - name.append("Hair"); - break; - default: - name.append("Unknown"); - break; + EBakedTextureIndex baked_index = texture_dict->mBakedTextureIndex; + name = "Baked " + LLVOAvatarDictionary::getInstance()->getBakedTexture(baked_index)->mNameCapitalized; } - name.append(" Texture"); + name += " Texture"; LLUUID item_id; item_id.generate(); @@ -7106,7 +7041,7 @@ void handle_grab_texture(void* data) BOOL enable_grab_texture(void* data) { ETextureIndex index = (ETextureIndex)((intptr_t)data); - LLVOAvatar* avatar = gAgent.getAvatarObject(); + const LLVOAvatarSelf* avatar = gAgent.getAvatarObject(); if ( avatar ) { return avatar->canGrabLocalTexture(index); @@ -7128,8 +7063,7 @@ LLVOAvatar* find_avatar_from_object( LLViewerObject* object ) } while( object && !object->isAvatar() ); } - else - if( !object->isAvatar() ) + else if( !object->isAvatar() ) { object = NULL; } @@ -7154,27 +7088,27 @@ void handle_disconnect_viewer(void *) void force_error_breakpoint(void *) { - LLAppViewer::instance()->forceErrorBreakpoint(); + LLAppViewer::instance()->forceErrorBreakpoint(); } void force_error_llerror(void *) { - LLAppViewer::instance()->forceErrorLLError(); + LLAppViewer::instance()->forceErrorLLError(); } void force_error_bad_memory_access(void *) { - LLAppViewer::instance()->forceErrorBadMemoryAccess(); + LLAppViewer::instance()->forceErrorBadMemoryAccess(); } void force_error_infinite_loop(void *) { - LLAppViewer::instance()->forceErrorInifiniteLoop(); + LLAppViewer::instance()->forceErrorInifiniteLoop(); } void force_error_software_exception(void *) { - LLAppViewer::instance()->forceErrorSoftwareException(); + LLAppViewer::instance()->forceErrorSoftwareException(); } void force_error_driver_crash(void *) @@ -7307,7 +7241,7 @@ void handle_buy_currency_test(void*) // *TODO: Replace with call to LLUI::getLanguage() after windows-setup // branch merges in. JC - std::string language = "en-us"; + std::string language = "en"; language = gSavedSettings.getString("Language"); if (language.empty() || language == "default") { @@ -7319,7 +7253,7 @@ void handle_buy_currency_test(void*) } if (language.empty() || language == "default") { - language = "en-us"; + language = "en"; } replace["[LANGUAGE]"] = language; @@ -7335,7 +7269,7 @@ void handle_buy_currency_test(void*) void handle_rebake_textures(void*) { - LLVOAvatar* avatar = gAgent.getAvatarObject(); + LLVOAvatarSelf* avatar = gAgent.getAvatarObject(); if (!avatar) return; // Slam pending upload count to "unstick" things @@ -7587,39 +7521,47 @@ class LLEditEnableTakeOff : public view_listener_t bool new_value = false; if (clothing == "shirt") { - new_value = LLAgent::selfHasWearable((void *)WT_SHIRT); + new_value = LLAgentWearables::selfHasWearable((void *)WT_SHIRT); } if (clothing == "pants") { - new_value = LLAgent::selfHasWearable((void *)WT_PANTS); + new_value = LLAgentWearables::selfHasWearable((void *)WT_PANTS); } if (clothing == "shoes") { - new_value = LLAgent::selfHasWearable((void *)WT_SHOES); + new_value = LLAgentWearables::selfHasWearable((void *)WT_SHOES); } if (clothing == "socks") { - new_value = LLAgent::selfHasWearable((void *)WT_SOCKS); + new_value = LLAgentWearables::selfHasWearable((void *)WT_SOCKS); } if (clothing == "jacket") { - new_value = LLAgent::selfHasWearable((void *)WT_JACKET); + new_value = LLAgentWearables::selfHasWearable((void *)WT_JACKET); } if (clothing == "gloves") { - new_value = LLAgent::selfHasWearable((void *)WT_GLOVES); + new_value = LLAgentWearables::selfHasWearable((void *)WT_GLOVES); } if (clothing == "undershirt") { - new_value = LLAgent::selfHasWearable((void *)WT_UNDERSHIRT); + new_value = LLAgentWearables::selfHasWearable((void *)WT_UNDERSHIRT); } if (clothing == "underpants") { - new_value = LLAgent::selfHasWearable((void *)WT_UNDERPANTS); + new_value = LLAgentWearables::selfHasWearable((void *)WT_UNDERPANTS); } if (clothing == "skirt") { - new_value = LLAgent::selfHasWearable((void *)WT_SKIRT); + new_value = LLAgentWearables::selfHasWearable((void *)WT_SKIRT); + } + if (clothing == "alpha") + { + new_value = LLAgentWearables::selfHasWearable((void *)WT_ALPHA); + } + if (clothing == "tattoo") + { + new_value = LLAgentWearables::selfHasWearable((void *)WT_TATTOO); } return new_value; } @@ -7632,43 +7574,51 @@ class LLEditTakeOff : public view_listener_t std::string clothing = userdata.asString(); if (clothing == "shirt") { - LLAgent::userRemoveWearable((void*)WT_SHIRT); + LLAgentWearables::userRemoveWearable((void*)WT_SHIRT); } else if (clothing == "pants") { - LLAgent::userRemoveWearable((void*)WT_PANTS); + LLAgentWearables::userRemoveWearable((void*)WT_PANTS); } else if (clothing == "shoes") { - LLAgent::userRemoveWearable((void*)WT_SHOES); + LLAgentWearables::userRemoveWearable((void*)WT_SHOES); } else if (clothing == "socks") { - LLAgent::userRemoveWearable((void*)WT_SOCKS); + LLAgentWearables::userRemoveWearable((void*)WT_SOCKS); } else if (clothing == "jacket") { - LLAgent::userRemoveWearable((void*)WT_JACKET); + LLAgentWearables::userRemoveWearable((void*)WT_JACKET); } else if (clothing == "gloves") { - LLAgent::userRemoveWearable((void*)WT_GLOVES); + LLAgentWearables::userRemoveWearable((void*)WT_GLOVES); } else if (clothing == "undershirt") { - LLAgent::userRemoveWearable((void*)WT_UNDERSHIRT); + LLAgentWearables::userRemoveWearable((void*)WT_UNDERSHIRT); } else if (clothing == "underpants") { - LLAgent::userRemoveWearable((void*)WT_UNDERPANTS); + LLAgentWearables::userRemoveWearable((void*)WT_UNDERPANTS); } else if (clothing == "skirt") { - LLAgent::userRemoveWearable((void*)WT_SKIRT); + LLAgentWearables::userRemoveWearable((void*)WT_SKIRT); + } + else if (clothing == "alpha") + { + LLAgentWearables::userRemoveWearable((void*)WT_ALPHA); + } + else if (clothing == "tattoo") + { + LLAgentWearables::userRemoveWearable((void*)WT_TATTOO); } else if (clothing == "all") { - LLAgent::userRemoveAllClothes(NULL); + LLAgentWearables::userRemoveAllClothes(NULL); } return true; } @@ -7710,7 +7660,7 @@ class LLWorldEnvSettings : public view_listener_t { std::string tod = userdata.asString(); LLVector3 sun_direction; - + if (tod == "editor") { // if not there or is hidden, show it @@ -7726,7 +7676,7 @@ class LLWorldEnvSettings : public view_listener_t } return true; } - + if (tod == "sunrise") { // set the value, turn off animation @@ -7851,7 +7801,7 @@ void initialize_menus() // Agent commit.add("Agent.toggleFlying", boost::bind(&LLAgent::toggleFlying)); enable.add("Agent.emableFlying", boost::bind(&LLAgent::enableFlying)); - + // File menu init_menu_file(); @@ -7919,7 +7869,7 @@ void initialize_menus() view_listener_t::addMenu(new LLWorldEnableBuyLand(), "World.EnableBuyLand"); view_listener_t::addMenu(new LLWorldCheckAlwaysRun(), "World.CheckAlwaysRun"); - + view_listener_t::addMenu(new LLWorldEnvSettings(), "World.EnvSettings"); view_listener_t::addMenu(new LLWorldWaterSettings(), "World.WaterSettings"); view_listener_t::addMenu(new LLWorldPostProcess(), "World.PostProcess"); @@ -8131,7 +8081,7 @@ void initialize_menus() view_listener_t::addMenu(new LLSelfEnableStandUp(), "Self.EnableStandUp"); view_listener_t::addMenu(new LLSelfEnableRemoveAllAttachments(), "Self.EnableRemoveAllAttachments"); - // Avatar pie menu + // Avatar pie menu view_listener_t::addMenu(new LLObjectMute(), "Avatar.Mute"); view_listener_t::addMenu(new LLAvatarAddFriend(), "Avatar.AddFriend"); view_listener_t::addMenu(new LLAvatarFreeze(), "Avatar.Freeze"); diff --git a/indra/newview/llviewermenufile.cpp b/indra/newview/llviewermenufile.cpp index 1352f2c72f0c85f61ce8e15ac0a23218be6e6ba3..6576ea81ede31a354fdd033e9e5f077b2bdeb99b 100644 --- a/indra/newview/llviewermenufile.cpp +++ b/indra/newview/llviewermenufile.cpp @@ -49,6 +49,7 @@ #include "llviewercontrol.h" // gSavedSettings #include "llviewerimagelist.h" #include "lluictrlfactory.h" +#include "llviewerinventory.h" #include "llviewermenu.h" // gMenuHolder #include "llviewerregion.h" #include "llviewerstats.h" @@ -71,8 +72,6 @@ // system libraries #include <boost/tokenizer.hpp> -using namespace LLOldEvents; - class LLFileEnableSaveAs : public view_listener_t { bool handleEvent(const LLSD& userdata) diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index d02e667d193336264d7cf283881a3b4cab5d291b..a05bd3060046cb1a241190009a5363078dfe9218 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -126,7 +126,7 @@ #include "llviewerthrottle.h" #include "llviewerwindow.h" #include "llvlmanager.h" -#include "llvoavatar.h" +#include "llvoavatarself.h" #include "llvotextbubble.h" #include "llweb.h" #include "llworld.h" @@ -137,6 +137,7 @@ #include "llkeythrottle.h" #include <boost/tokenizer.hpp> +#include <boost/algorithm/string/split.hpp> #if LL_WINDOWS // For Windows specific error handler #include "llwindebug.h" // For the invalid message handler @@ -892,7 +893,14 @@ void open_offer(const std::vector<LLUUID>& items, const std::string& from_name) LLFloaterReg::showInstance("preview_notecard", LLSD(id), take_focus); break; case LLAssetType::AT_LANDMARK: - LLFloaterReg::showInstance("preview_landmark", LLSD(id), take_focus); + { + // *TODO: Embed a link to the Places panel so that user can edit the landmark right away. + LLInventoryCategory* parent_folder = gInventory.getCategory(item->getParentUUID()); + LLSD args; + args["LANDMARK_NAME"] = item->getName(); + args["FOLDER_NAME"] = std::string(parent_folder ? parent_folder->getName() : "unnkown"); + LLNotifications::instance().add("LandmarkCreated", args); + } break; case LLAssetType::AT_TEXTURE: LLFloaterReg::showInstance("preview_texture", LLSD(id), take_focus); @@ -977,8 +985,8 @@ void inventory_offer_mute_callback(const LLUUID& blocked_id, LLMute mute(blocked_id, from_name, type); if (LLMuteList::getInstance()->add(mute)) { - LLFloaterMute::showInstance(); - LLFloaterMute::getInstance()->selectMute(blocked_id); + LLFloaterReg::showInstance("mute"); + LLFloaterReg::getTypedInstance<LLFloaterMute>("mute")->selectMute(blocked_id); } // purge the message queue of any previously queued inventory offers from the same source. @@ -2405,8 +2413,7 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) // T * * * F Yes Yes chat.mMuted = is_muted && !is_linden; - - + if (!visible_in_chat_bubble && (is_linden || !is_busy || is_owned_by_me)) { @@ -2889,12 +2896,45 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**) { LLSD payload; payload["message"] = version_channel; - LLNotifications::instance().add("ServerVersionChanged", LLSD(), payload); + LLNotifications::instance().add("ServerVersionChanged", LLSD(), payload, server_version_changed_callback); } gLastVersionChannel = version_channel; } +bool server_version_changed_callback(const LLSD& notification, const LLSD& response) +{ + if(notification["payload"]["message"].asString() =="") + return false; + std::string url ="http://wiki.secondlife.com/wiki/Release_Notes/"; + //parse the msg string + std::string server_version = notification["payload"]["message"].asString(); + std::vector<std::string> s_vect; + boost::algorithm::split(s_vect, server_version, isspace); + for(U32 i = 0; i < s_vect.size(); i++) + { + if (i != (s_vect.size() - 1)) + { + if(i != (s_vect.size() - 2)) + { + url += s_vect[i] + "_"; + } + else + { + url += s_vect[i] + "/"; + } + } + else + { + url += s_vect[i].substr(0,4); + } + } + + LLWeb::loadURL(url); + return false; +} + + void process_crossed_region(LLMessageSystem* msg, void**) { LLUUID agent_id; @@ -3791,7 +3831,7 @@ void process_avatar_sit_response(LLMessageSystem *mesgsys, void **user_data) gAgent.setSitCamera(sitObjectID, camera_eye, camera_at); } - gAgent.mForceMouselook = force_mouselook; + gAgent.setForceMouselook(force_mouselook); LLViewerObject* object = gObjectList.findObject(sitObjectID); if (object) @@ -4355,8 +4395,8 @@ void handle_show_mean_events(void *) { return; } - - LLFloaterBump::showInstance(); + LLFloaterReg::showInstance("bumps"); + //LLFloaterBump::showInstance(); } void mean_name_callback(const LLUUID &id, const std::string& first, const std::string& last, BOOL always_false) @@ -4855,7 +4895,14 @@ void container_inventory_arrived(LLViewerObject* object, // method to format the time. std::string formatted_time(const time_t& the_time) { - std::string dateStr = LLTrans::getString("ViewerMsgGenericTime"); + std::string dateStr = "["+LLTrans::getString("LTimeWeek")+"] [" + +LLTrans::getString("LTimeMonth")+"] [" + +LLTrans::getString("LTimeDay")+"] [" + +LLTrans::getString("LTimeHour")+"]:[" + +LLTrans::getString("LTimeMin")+"]:[" + +LLTrans::getString("LTimeSec")+"] [" + +LLTrans::getString("LTimeYear")+"]"; + LLSD substitution; substitution["datetime"] = (S32) the_time; LLStringUtil::format (dateStr, substitution); @@ -4927,6 +4974,9 @@ void process_teleport_failed(LLMessageSystem *msg, void**) LLNotifications::instance().add("CouldNotTeleportReason", args); + // Let the interested parties know that teleport failed. + LLViewerParcelMgr::getInstance()->onTeleportFailed(); + if( gAgent.getTeleportState() != LLAgent::TELEPORT_NONE ) { gAgent.setTeleportState( LLAgent::TELEPORT_NONE ); @@ -4956,6 +5006,9 @@ void process_teleport_local(LLMessageSystem *msg,void**) gAgent.setTeleportState( LLAgent::TELEPORT_NONE ); } + // Let the interested parties know we've teleported. + LLViewerParcelMgr::getInstance()->onTeleportFinished(); + // Sim tells us whether the new position is off the ground if (teleport_flags & TELEPORT_FLAGS_IS_FLYING) { @@ -5083,13 +5136,13 @@ void handle_lure(const LLUUID& invitee) } // Prompt for a message to the invited user. -void handle_lure(std::vector<LLUUID>& ids) +void handle_lure(const std::vector<LLUUID>& ids) { LLSD edit_args; edit_args["REGION"] = gAgent.getRegion()->getName(); LLSD payload; - for (LLDynamicArray<LLUUID>::iterator it = ids.begin(); + for (LLDynamicArray<LLUUID>::const_iterator it = ids.begin(); it != ids.end(); ++it) { @@ -5256,6 +5309,7 @@ void process_script_dialog(LLMessageSystem* msg, void**) S32 button_count = msg->getNumberOfBlocks("Buttons"); if (button_count > SCRIPT_DIALOG_MAX_BUTTONS) { + llwarns << "Too many script dialog buttons - omitting some" << llendl; button_count = SCRIPT_DIALOG_MAX_BUTTONS; } @@ -5465,10 +5519,25 @@ void process_covenant_reply(LLMessageSystem* msg, void**) LLFloaterBuyLand::updateEstateName(estate_name); // standard message, not from system - std::string last_modified = LLTrans::getString("last_modified"); - LLSD substitution; - substitution["datetime"] = (S32) covenant_timestamp; - LLStringUtil::format (last_modified, substitution); + std::string last_modified; + if (covenant_timestamp == 0) + { + last_modified = LLTrans::getString("covenant_last_modified")+LLTrans::getString("never_text"); + } + else + { + last_modified = LLTrans::getString("covenant_last_modified")+"[" + +LLTrans::getString("LTimeWeek")+"] [" + +LLTrans::getString("LTimeMonth")+"] [" + +LLTrans::getString("LTimeDay")+"] [" + +LLTrans::getString("LTimeHour")+"]:[" + +LLTrans::getString("LTimeMin")+"]:[" + +LLTrans::getString("LTimeSec")+"] [" + +LLTrans::getString("LTimeYear")+"]"; + LLSD substitution; + substitution["datetime"] = (S32) covenant_timestamp; + LLStringUtil::format (last_modified, substitution); + } LLPanelEstateCovenant::updateLastModified(last_modified); LLPanelLandCovenant::updateLastModified(last_modified); diff --git a/indra/newview/llviewermessage.h b/indra/newview/llviewermessage.h index 40e64f1ebeb4c9b2c5432d5645cd2cd54c06f8db..90a54e2b9cf3c830b80c5821fc3b19b8025d9f96 100644 --- a/indra/newview/llviewermessage.h +++ b/indra/newview/llviewermessage.h @@ -130,6 +130,7 @@ void container_inventory_arrived(LLViewerObject* object, // agent movement void send_complete_agent_movement(const LLHost& sim_host); void process_agent_movement_complete(LLMessageSystem* msg, void**); +bool server_version_changed_callback(const LLSD& notification, const LLSD& response); void process_crossed_region(LLMessageSystem* msg, void**); void process_teleport_start(LLMessageSystem* msg, void**); void process_teleport_progress(LLMessageSystem* msg, void**); @@ -151,7 +152,7 @@ void send_group_notice(const LLUUID& group_id, const LLInventoryItem* item); void handle_lure(const LLUUID& invitee); -void handle_lure(std::vector<LLUUID>& ids); +void handle_lure(const std::vector<LLUUID>& ids); // always from gAgent and // routes through the gAgent's current simulator diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index f0693c1b79d0707fb14f3dfbe9fc1e332f12ea19..dc4f2b2990e917f033d30bd09390b9e82102d0b2 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -79,6 +79,7 @@ #include "llviewertextureanim.h" #include "llviewerwindow.h" // For getSpinAxis #include "llvoavatar.h" +#include "llvoavatarself.h" #include "llvoclouds.h" #include "llvograss.h" #include "llvoground.h" @@ -124,7 +125,18 @@ LLViewerObject *LLViewerObject::createObject(const LLUUID &id, const LLPCode pco case LL_PCODE_VOLUME: res = new LLVOVolume(id, pcode, regionp); break; case LL_PCODE_LEGACY_AVATAR: - res = new LLVOAvatar(id, pcode, regionp); break; + { + if (id == gAgentID) + { + res = new LLVOAvatarSelf(id, pcode, regionp); + } + else + { + res = new LLVOAvatar(id, pcode, regionp); + } + static_cast<LLVOAvatar*>(res)->initInstance(); + break; + } case LL_PCODE_LEGACY_GRASS: res = new LLVOGrass(id, pcode, regionp); break; case LL_PCODE_LEGACY_PART_SYS: @@ -2745,7 +2757,7 @@ void LLViewerObject::setPixelAreaAndAngle(LLAgent &agent) F32 mid_scale = getMidScale(); F32 min_scale = getMinScale(); - // IW: esitmate - when close to large objects, computing range based on distance from center is no good + // IW: estimate - when close to large objects, computing range based on distance from center is no good // to try to get a min distance from face, subtract min_scale/2 from the range. // This means we'll load too much detail sometimes, but that's better than not enough // I don't think there's a better way to do this without calculating distance per-poly @@ -3730,7 +3742,6 @@ S32 LLViewerObject::setTEColor(const U8 te, const LLColor4& color) else if (color != tep->getColor()) { retval = LLPrimitive::setTEColor(te, color); - //setChanged(TEXTURE); if (mDrawable.notNull() && retval) { // These should only happen on updates which are not the initial update. @@ -3777,6 +3788,22 @@ S32 LLViewerObject::setTETexGen(const U8 te, const U8 texgen) return retval; } +S32 LLViewerObject::setTEMediaTexGen(const U8 te, const U8 media) +{ + S32 retval = 0; + const LLTextureEntry *tep = getTE(te); + if (!tep) + { + llwarns << "No texture entry for te " << (S32)te << ", object " << mID << llendl; + } + else if (media != tep->getMediaTexGen()) + { + retval = LLPrimitive::setTEMediaTexGen(te, media); + setChanged(TEXTURE); + } + return retval; +} + S32 LLViewerObject::setTEShiny(const U8 te, const U8 shiny) { S32 retval = 0; diff --git a/indra/newview/llviewerobject.h b/indra/newview/llviewerobject.h index 5ef2b960d420aeb2a841834c91d1a46260713207..21a99c58d9e58debd3f8a1e77b16fb6bc50622d5 100644 --- a/indra/newview/llviewerobject.h +++ b/indra/newview/llviewerobject.h @@ -305,6 +305,7 @@ class LLViewerObject : public LLPrimitive, public LLRefCount /*virtual*/ S32 setTERotation(const U8 te, const F32 r); /*virtual*/ S32 setTEBumpmap(const U8 te, const U8 bump ); /*virtual*/ S32 setTETexGen(const U8 te, const U8 texgen ); + /*virtual*/ S32 setTEMediaTexGen(const U8 te, const U8 media ); // *FIXME: this confusingly acts upon a superset of setTETexGen's flags without absorbing its semantics /*virtual*/ S32 setTEShiny(const U8 te, const U8 shiny ); /*virtual*/ S32 setTEFullbright(const U8 te, const U8 fullbright ); /*virtual*/ S32 setTEMediaFlags(const U8 te, const U8 media_flags ); diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp index 926c5040fc8593cc7b450531e2c7facfbcc4512c..8e9c798aca7bb5b989a60f5790cc9eda05fdce5c 100644 --- a/indra/newview/llviewerobjectlist.cpp +++ b/indra/newview/llviewerobjectlist.cpp @@ -61,6 +61,7 @@ #include "llresmgr.h" #include "llviewerregion.h" #include "llviewerstats.h" +#include "llvoavatarself.h" #include "lltoolmgr.h" #include "lltoolpie.h" #include "llkeyboard.h" @@ -211,6 +212,7 @@ void LLViewerObjectList::processUpdateCore(LLViewerObject* objectp, LLDataPacker* dpp, BOOL just_created) { + LLMemType mt(LLMemType::MTYPE_OBJECT_PROCESS_UPDATE_CORE); LLMessageSystem* msg = gMessageSystem; // ignore returned flags @@ -261,6 +263,7 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys, const EObjectUpdateType update_type, bool cached, bool compressed) { + LLMemType mt(LLMemType::MTYPE_OBJECT_PROCESS_UPDATE); LLFastTimer t(LLFastTimer::FTM_PROCESS_OBJECTS); LLVector3d camera_global = gAgent.getCameraPositionGlobal(); diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp index 224ccf41b608a95718886d357eccafa9391e6e58..bcb3853106fcf2667e89a81ebff1e8544ca32513 100644 --- a/indra/newview/llviewerparcelmgr.cpp +++ b/indra/newview/llviewerparcelmgr.cpp @@ -58,7 +58,6 @@ #include "llparcelselection.h" #include "llresmgr.h" #include "llsdutil.h" -#include "llsdutil_math.h" #include "llstatusbar.h" #include "llui.h" #include "llviewerimage.h" @@ -2403,6 +2402,11 @@ boost::signals2::connection LLViewerParcelMgr::setTeleportFinishedCallback(parce return mTeleportFinishedSignal.connect(cb); } +boost::signals2::connection LLViewerParcelMgr::setTeleportFailedCallback(parcel_changed_callback_t cb) +{ + return mTeleportFailedSignal.connect(cb); +} + /* Ok, we're notified that teleport has been finished. * We should now propagate the notification via mTeleportFinishedSignal * to all interested parties. @@ -2413,3 +2417,8 @@ void LLViewerParcelMgr::onTeleportFinished() { mTeleportInProgress = TRUE; } + +void LLViewerParcelMgr::onTeleportFailed() +{ + mTeleportFailedSignal(); +} diff --git a/indra/newview/llviewerparcelmgr.h b/indra/newview/llviewerparcelmgr.h index 3426fda636a8326b387eff289ffe749363632543..dc6c2a628734dd01b81df035d91e9275856e5112 100644 --- a/indra/newview/llviewerparcelmgr.h +++ b/indra/newview/llviewerparcelmgr.h @@ -42,7 +42,6 @@ #include <boost/function.hpp> #include <boost/signals2.hpp> -#include <boost/signals2/connection.hpp> class LLUUID; class LLMessageSystem; @@ -83,7 +82,7 @@ class LLViewerParcelMgr : public LLSingleton<LLViewerParcelMgr> { public: - typedef boost::function <void()> parcel_changed_callback_t; + typedef boost::function<void()> parcel_changed_callback_t; typedef boost::signals2::signal<void()> parcel_changed_signal_t; LLViewerParcelMgr(); @@ -265,7 +264,9 @@ class LLViewerParcelMgr : public LLSingleton<LLViewerParcelMgr> boost::signals2::connection setAgentParcelChangedCallback(parcel_changed_callback_t cb); boost::signals2::connection setTeleportFinishedCallback(parcel_changed_callback_t cb); + boost::signals2::connection setTeleportFailedCallback(parcel_changed_callback_t cb); void onTeleportFinished(); + void onTeleportFailed(); static BOOL isParcelOwnedByAgent(const LLParcel* parcelp, U64 group_proxy_power); static BOOL isParcelModifiableByAgent(const LLParcel* parcelp, U64 group_proxy_power); @@ -316,6 +317,7 @@ class LLViewerParcelMgr : public LLSingleton<LLViewerParcelMgr> BOOL mTeleportInProgress; parcel_changed_signal_t mTeleportFinishedSignal; + parcel_changed_signal_t mTeleportFailedSignal; parcel_changed_signal_t mAgentParcelChangedSignal; // Array of pieces of parcel edges to potentially draw diff --git a/indra/newview/llviewerparceloverlay.cpp b/indra/newview/llviewerparceloverlay.cpp index d76ec0dedbc250faaee48b74e73e541a4b72c7d0..5b60ed5a2725bbe72937aa16613e3d1ca1feac0d 100644 --- a/indra/newview/llviewerparceloverlay.cpp +++ b/indra/newview/llviewerparceloverlay.cpp @@ -224,7 +224,7 @@ void LLViewerParcelOverlay::updateOverlayTexture() { U8 ownership = mOwnership[i]; - U8 r,g,b,a; + F32 r,g,b,a; // Color stored in low three bits switch( ownership & 0x7 ) @@ -273,10 +273,10 @@ void LLViewerParcelOverlay::updateOverlayTexture() break; } - raw[pixel_index + 0] = r; - raw[pixel_index + 1] = g; - raw[pixel_index + 2] = b; - raw[pixel_index + 3] = a; + raw[pixel_index + 0] = (U8)r; + raw[pixel_index + 1] = (U8)g; + raw[pixel_index + 2] = (U8)b; + raw[pixel_index + 3] = (U8)a; pixel_index += OVERLAY_IMG_COMPONENTS; } @@ -712,6 +712,7 @@ void LLViewerParcelOverlay::setDirty() void LLViewerParcelOverlay::idleUpdate(bool force_update) { + LLMemType mt_iup(LLMemType::MTYPE_IDLE_UPDATE_PARCEL_OVERLAY); if (gGLManager.mIsDisabled) { return; diff --git a/indra/newview/llviewerprecompiledheaders.h b/indra/newview/llviewerprecompiledheaders.h index b85edc4f589e5a5cc94bef1533d4e14b6792479b..02963273787fdd2e4fec7d2bfff4db7f39324c52 100644 --- a/indra/newview/llviewerprecompiledheaders.h +++ b/indra/newview/llviewerprecompiledheaders.h @@ -69,10 +69,12 @@ // Library headers from llcommon project: #include "bitpack.h" +#include "lldeleteutils.h" #include "imageids.h" #include "indra_constants.h" //#include "linden_common.h" //#include "llpreprocessor.h" +#include "llallocator.h" #include "llapp.h" #include "llapr.h" #include "llcriticaldamp.h" @@ -218,9 +220,6 @@ #include "llvolumemgr.h" #include "material_codes.h" -// Library includes from llxml -#include "llxmlnode.h" - // Library includes from llvfs #include "llassettype.h" #include "lldir.h" diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index 89ebe0cec843a8f75f23820fb75c0c06537f840d..fd3dc1674518d4c3ad7cb6f9c3e8da15995c4183 100644 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -639,6 +639,7 @@ void LLViewerRegion::dirtyHeights() BOOL LLViewerRegion::idleUpdate(F32 max_update_time) { + LLMemType mt_ivr(LLMemType::MTYPE_IDLE_UPDATE_VIEWER_REGION); // did_update returns TRUE if we did at least one significant update BOOL did_update = mLandp->idleUpdate(max_update_time); diff --git a/indra/newview/llviewerstats.cpp b/indra/newview/llviewerstats.cpp index 3382adaec5ac6a2c7bd35f5b87b294aaf241ddfb..c79ded1dced0e7c8ec008973a9c2a18f16396732 100644 --- a/indra/newview/llviewerstats.cpp +++ b/indra/newview/llviewerstats.cpp @@ -47,6 +47,7 @@ #include "llviewerobjectlist.h" #include "llviewerimagelist.h" #include "lltexlayer.h" +#include "lltexlayerparams.h" #include "llsurface.h" #include "llvlmanager.h" #include "llagent.h" @@ -57,6 +58,7 @@ #include "llfasttimerview.h" #include "llviewerregion.h" #include "llvoavatar.h" +#include "llvoavatarself.h" #include "llfloaterhtml.h" #include "llviewerwindow.h" // *TODO: remove, only used for width/height #include "llworld.h" @@ -423,8 +425,8 @@ void output_statistics(void*) llinfos << "Number of orphans: " << gObjectList.getOrphanCount() << llendl; llinfos << "Number of dead objects: " << gObjectList.mNumDeadObjects << llendl; llinfos << "Num images: " << gImageList.getNumImages() << llendl; - llinfos << "Texture usage: " << LLImageGL::sGlobalTextureMemory << llendl; - llinfos << "Texture working set: " << LLImageGL::sBoundTextureMemory << llendl; + llinfos << "Texture usage: " << LLImageGL::sGlobalTextureMemoryInBytes << llendl; + llinfos << "Texture working set: " << LLImageGL::sBoundTextureMemoryInBytes << llendl; llinfos << "Raw usage: " << LLImageRaw::sGlobalRawMemory << llendl; llinfos << "Formatted usage: " << LLImageFormatted::sGlobalFormattedMemory << llendl; llinfos << "Zombie Viewer Objects: " << LLViewerObject::getNumZombieObjects() << llendl; @@ -507,10 +509,10 @@ void output_statistics(void*) llinfos << "--------------------------------" << llendl; llinfos << "Avatar Memory (partly overlaps with above stats):" << llendl; - gTexStaticImageList.dumpByteCount(); - LLVOAvatar::dumpScratchTextureByteCount(); + LLTexLayerStaticImageList::getInstance()->dumpByteCount(); + LLVOAvatarSelf::dumpScratchTextureByteCount(); LLTexLayerSetBuffer::dumpTotalByteCount(); - LLVOAvatar::dumpTotalLocalTextureByteCount(); + LLVOAvatarSelf::dumpTotalLocalTextureByteCount(); LLTexLayerParamAlpha::dumpCacheByteCount(); LLVOAvatar::dumpBakedStatus(); @@ -592,7 +594,7 @@ void update_statistics(U32 frame_count) LLViewerStats::getInstance()->setStat(LLViewerStats::ST_SHADER_AVATAR, (F64)gSavedSettings.getBOOL("VertexShaderLevelAvatar")); LLViewerStats::getInstance()->setStat(LLViewerStats::ST_SHADER_ENVIRONMENT, (F64)gSavedSettings.getBOOL("VertexShaderLevelEnvironment")); #endif - LLViewerStats::getInstance()->setStat(LLViewerStats::ST_FRAME_SECS, gDebugView->mFastTimerView->getTime(LLFastTimer::FTM_FRAME)); + LLViewerStats::getInstance()->setStat(LLViewerStats::ST_FRAME_SECS, gDebugView->mFastTimerView->getTime(LLFastTimer::NamedTimer::getRootNamedTimer().getFrameState())); F64 idle_secs = gDebugView->mFastTimerView->getTime(LLFastTimer::FTM_IDLE); F64 network_secs = gDebugView->mFastTimerView->getTime(LLFastTimer::FTM_NETWORK); LLViewerStats::getInstance()->setStat(LLViewerStats::ST_UPDATE_SECS, idle_secs - network_secs); diff --git a/indra/newview/llviewertexteditor.cpp b/indra/newview/llviewertexteditor.cpp index 290e6f50ffdb97cbe69b34b226c95a9787695128..f4989ec4fef6fc4fd56e472ccaf812029a9bec25 100644 --- a/indra/newview/llviewertexteditor.cpp +++ b/indra/newview/llviewertexteditor.cpp @@ -64,7 +64,7 @@ #include "llappviewer.h" // for gPacificDaylightTime -static LLRegisterWidget<LLViewerTextEditor> r("text_editor"); +static LLDefaultWidgetRegistry::Register<LLViewerTextEditor> r("text_editor"); ///---------------------------------------------------------------------------- /// Class LLEmbeddedNotecardOpener @@ -1212,8 +1212,9 @@ std::string LLViewerTextEditor::appendTime(bool prepend_newline) { time_t utc_time; utc_time = time_corrected(); + std::string timeStr ="[["+ LLTrans::getString("TimeHour")+"]:[" + +LLTrans::getString("TimeMin")+"]] "; - std::string timeStr = LLTrans::getString("TextEditorTimeStr"); LLSD substitution; substitution["datetime"] = (S32) utc_time; diff --git a/indra/newview/llviewervisualparam.cpp b/indra/newview/llviewervisualparam.cpp index 8c7700eb651759dfa45e939cc5aaf4a6a23c650e..7d717ed6dc5a76aa0d26c5264d35fb45ed1beb94 100644 --- a/indra/newview/llviewervisualparam.cpp +++ b/indra/newview/llviewervisualparam.cpp @@ -76,7 +76,7 @@ BOOL LLViewerVisualParamInfo::parseXml(LLXmlTreeNode *node) static LLStdStringHandle wearable_string = LLXmlTree::addAttributeString("wearable"); if( node->getFastAttributeString( wearable_string, wearable) ) { - mWearableType = LLWearable::typeNameToType( wearable ); + mWearableType = LLWearableDictionary::typeNameToType( wearable ); } static LLStdStringHandle edit_group_string = LLXmlTree::addAttributeString("edit_group"); @@ -119,12 +119,6 @@ LLViewerVisualParam::LLViewerVisualParam() { } -/* -//============================================================================= -// These virtual functions should always be overridden, -// but are included here for use as templates -//============================================================================= - //----------------------------------------------------------------------------- // setInfo() //----------------------------------------------------------------------------- @@ -140,6 +134,12 @@ BOOL LLViewerVisualParam::setInfo(LLViewerVisualParamInfo *info) return TRUE; } +/* +//============================================================================= +// These virtual functions should always be overridden, +// but are included here for use as templates +//============================================================================= + //----------------------------------------------------------------------------- // parseData() //----------------------------------------------------------------------------- diff --git a/indra/newview/llviewervisualparam.h b/indra/newview/llviewervisualparam.h index 48d28cebf34ec7bcd607fde5471041db2456aac3..77a95db5649ffe41696b035f2266cc74c6c6596d 100644 --- a/indra/newview/llviewervisualparam.h +++ b/indra/newview/llviewervisualparam.h @@ -90,7 +90,7 @@ class LLViewerVisualParam : public LLVisualParam virtual const LLVector3* getNextDistortion(U32 *index, LLPolyMesh **mesh) = 0; // interface methods - F32 getDisplayOrder() { return getInfo()->mEditGroupDisplayOrder; } + F32 getDisplayOrder() const { return getInfo()->mEditGroupDisplayOrder; } S32 getWearableType() const { return getInfo()->mWearableType; } const std::string& getEditGroup() const { return getInfo()->mEditGroup; } diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 4a58f7d9559e693855fb6e9bef77d234365ec850..fb501b023f6d46b3745957eca842e6a062675130 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -58,6 +58,7 @@ #include "audioengine.h" // mute on minimize #include "indra_constants.h" #include "llassetstorage.h" +#include "llerrorcontrol.h" #include "llfontgl.h" #include "llmousehandler.h" #include "llrect.h" @@ -128,7 +129,9 @@ #include "llpreviewtexture.h" #include "llprogressview.h" #include "llresmgr.h" +#include "llsidetray.h" #include "llselectmgr.h" +#include "llrootview.h" #include "llrendersphere.h" #include "llstartup.h" #include "llstatusbar.h" @@ -169,7 +172,7 @@ #include "llviewerregion.h" #include "llviewershadermgr.h" #include "llviewerstats.h" -#include "llvoavatar.h" +#include "llvoavatarself.h" #include "llvovolume.h" #include "llworld.h" #include "llworldmapview.h" @@ -181,9 +184,12 @@ #include "llviewerjoystick.h" #include "llviewernetwork.h" #include "llpostprocess.h" +#include "llbottomtray.h" #include "llfloaternotificationsconsole.h" +#include "llnearbychathistory.h" + #if LL_WINDOWS #include <tchar.h> // For Unicode conversion methods #endif @@ -245,23 +251,27 @@ std::string LLViewerWindow::sMovieBaseName; extern void toggle_debug_menus(void*); - -class LLBottomPanel : public LLPanel +class RecordToChatConsole : public LLError::Recorder, public LLSingleton<RecordToChatConsole> { public: - LLBottomPanel(const LLRect& rect); - void setFocusIndicator(LLView * indicator); - LLView * getFocusIndicator() { return mIndicator; } - /*virtual*/ void draw(); - - static void* createHUD(void* data); - static void* createOverlayBar(void* data); - static void* createToolBar(void* data); + virtual void recordMessage(LLError::ELevel level, + const std::string& message) + { + // only log warnings to chat console + if (level == LLError::LEVEL_WARN) + { + LLFloaterChat* chat_floater = LLFloaterReg::findTypedInstance<LLFloaterChat>("chat"); + if (chat_floater && gSavedSettings.getBOOL("WarningsAsChat")) + { + LLChat chat; + chat.mText = message; + chat.mSourceType = CHAT_SOURCE_SYSTEM; -protected: - LLView * mIndicator; + chat_floater->addChat(chat, FALSE, FALSE); + } + } + } }; -LLBottomPanel* gBottomPanel = NULL; //////////////////////////////////////////////////////////////////////////// // @@ -1235,6 +1245,7 @@ LLViewerWindow::LLViewerWindow( mShowFullscreenProgress(FALSE), mWindowRect(0, height, width, 0), mVirtualWindowRect(0, height, width, 0), + mWorldViewRect(0, height, width, 0), mLeftMouseDown(FALSE), mMiddleMouseDown(FALSE), mRightMouseDown(FALSE), @@ -1340,7 +1351,6 @@ LLViewerWindow::LLViewerWindow( mInitAlert = "DisplaySettingsNoShaders"; LLFeatureManager::getInstance()->setGraphicsLevel(0, false); gSavedSettings.setU32("RenderQualityPerformance", 0); - } // Init the image list. Must happen after GL is initialized and before the images that @@ -1364,7 +1374,7 @@ LLViewerWindow::LLViewerWindow( rvp.rect(mVirtualWindowRect); rvp.mouse_opaque(false); rvp.follows.flags(FOLLOWS_NONE); - mRootView = LLUICtrlFactory::create<LLView>(rvp); + mRootView = LLUICtrlFactory::create<LLRootView>(rvp); LLUI::setRootView(mRootView); // Make avatar head look forward at start @@ -1440,21 +1450,9 @@ void LLViewerWindow::initBase() // Constrain floaters to inside the menu and status bar regions. LLRect floater_view_rect = full_window; - // make space for menu bar if we have one + // make space for menu bar floater_view_rect.mTop -= MENU_BAR_HEIGHT; - // make space for nav bar - floater_view_rect.mTop -= NAVIGATION_BAR_HEIGHT; - - // TODO: Eliminate magic constants - please used named constants if changing this - floater_view_rect.mBottom += STATUS_BAR_HEIGHT + 12 + 16 + 2; - - // Check for non-first startup - S32 floater_view_bottom = gSavedSettings.getS32("FloaterViewBottom"); - if (floater_view_bottom >= 0) - { - floater_view_rect.mBottom = floater_view_bottom; - } LLFloaterView::Params fvparams; fvparams.name("Floater View"); fvparams.rect(floater_view_rect); @@ -1475,35 +1473,27 @@ void LLViewerWindow::initBase() // Console llassert( !gConsole ); - LLRect console_rect = full_window; - console_rect.mTop -= 24; - - console_rect.mBottom += getChatConsoleBottomPad(); - - // TODO: Eliminate magic constants - please used named constants if changing this - don't be a programmer hater - console_rect.mLeft += 24; //gSavedSettings.getS32("StatusBarButtonWidth") + gSavedSettings.getS32("StatusBarPad"); - - if (gSavedSettings.getBOOL("ChatFullWidth")) - { - console_rect.mRight -= 10; - } - else - { - // Make console rect somewhat narrow so having inventory open is - // less of a problem. - console_rect.mRight = console_rect.mLeft + 2 * width / 3; - } - LLConsole::Params cp; cp.name("console"); cp.max_lines(gSavedSettings.getS32("ConsoleBufferSize")); - cp.rect(console_rect); + cp.rect(getChatConsoleRect()); cp.persist_time(gSavedSettings.getF32("ChatPersistTime")); cp.font_size_index(gSavedSettings.getS32("ChatFontSize")); cp.follows.flags(FOLLOWS_LEFT | FOLLOWS_RIGHT | FOLLOWS_BOTTOM); gConsole = LLUICtrlFactory::create<LLConsole>(cp); mRootView->addChild(gConsole); + // optionally forward warnings to chat console/chat floater + // for qa runs and dev builds +#if !LL_RELEASE_FOR_DOWNLOAD + LLError::addRecorder(RecordToChatConsole::getInstance()); +#else + if(gSavedSettings.getBOOL("QAMode")) + { + LLError::addRecorder(RecordToChatConsole::getInstance()); + } +#endif + // Debug view over the console LLDebugView::Params debug_p; debug_p.name("DebugView"); @@ -1519,8 +1509,6 @@ void LLViewerWindow::initBase() // notify above floaters! LLRect notify_rect = floater_view_rect; - //notify_rect.mTop -= 24; - notify_rect.mBottom += STATUS_BAR_HEIGHT; LLNotifyBoxView::Params p; p.name("notify_container"); p.rect(notify_rect); @@ -1559,87 +1547,115 @@ void LLViewerWindow::initWorldUI() S32 width = mRootView->getRect().getWidth(); LLRect full_window(0, height, width, 0); - if ( gBottomPanel == NULL ) // Don't re-enter if objects are alreay created - { - // panel containing chatbar, toolbar, and overlay, over floaters - gBottomPanel = new LLBottomPanel(mRootView->getRect()); - mRootView->addChild(gBottomPanel); - - // View for hover information - LLHoverView::Params hvp; - hvp.name("gHoverview"); - hvp.rect(full_window); - gHoverView = LLUICtrlFactory::create<LLHoverView>(hvp); - mRootView->addChild(gHoverView); - - // Pre initialize instance communicate instance; - // currently needs to happen before initializing chat or IM - LLFloaterReg::getInstance("communicate"); - - gIMMgr = LLIMMgr::getInstance(); + gIMMgr = LLIMMgr::getInstance(); - if ( gSavedPerAccountSettings.getBOOL("LogShowHistory") ) - { - LLFloaterChat::loadHistory(); - } + // new bottom panel + LLRect rc = LLBottomTray::getInstance()->getRect(); + rc.mLeft = 0; + rc.mRight = mRootView->getRect().getWidth(); + mRootView->addChild(LLBottomTray::getInstance()); + LLBottomTray::getInstance()->reshape(rc.getWidth(),rc.getHeight(),FALSE); + LLBottomTray::getInstance()->setRect(rc); - LLRect morph_view_rect = full_window; - morph_view_rect.stretch( -STATUS_BAR_HEIGHT ); - morph_view_rect.mTop = full_window.mTop - 32; - LLMorphView::Params mvp; - mvp.name("MorphView"); - mvp.rect(morph_view_rect); - mvp.visible(false); - gMorphView = LLUICtrlFactory::create<LLMorphView>(mvp); - mRootView->addChild(gMorphView); + // Updating of bottom boundary of gConsole to avoid overlapping + if (gConsole) + { + LLRect cr = gConsole->getRect(); + cr.mBottom += LLBottomTray::getInstance()->getRect().getHeight(); + gConsole->setRect(cr); + } - // *Note: this is where gFloaterMute used to be initialized. + // View for hover information + LLHoverView::Params hvp; + hvp.name("gHoverview"); + hvp.rect(full_window); + gHoverView = LLUICtrlFactory::create<LLHoverView>(hvp); + mRootView->addChild(gHoverView); - LLWorldMapView::initClass(); - - // Force gFloaterWorldMap to initialize - LLFloaterReg::getInstance("world_map"); - LLFloaterReg::hideInstance("world_map"); - - // Force gFloaterTools to initialize - LLFloaterReg::getInstance("build"); - LLFloaterReg::hideInstance("build"); - - // Status bar - S32 menu_bar_height = gMenuBarView->getRect().getHeight(); - LLRect root_rect = getRootView()->getRect(); - LLRect status_rect(0, root_rect.getHeight(), root_rect.getWidth(), root_rect.getHeight() - menu_bar_height); - gStatusBar = new LLStatusBar(status_rect); - gStatusBar->setFollows(FOLLOWS_LEFT | FOLLOWS_RIGHT | FOLLOWS_TOP); - - gStatusBar->reshape(root_rect.getWidth(), gStatusBar->getRect().getHeight(), TRUE); - gStatusBar->translate(0, root_rect.getHeight() - gStatusBar->getRect().getHeight()); - // sync bg color with menu bar - gStatusBar->setBackgroundColor( gMenuBarView->getBackgroundColor().get() ); - - // Navigation bar - - LLNavigationBar* navbar = LLNavigationBar::getInstance(); - navbar->reshape(root_rect.getWidth(), navbar->getRect().getHeight(), TRUE); // *TODO: redundant? - navbar->translate(0, root_rect.getHeight() - menu_bar_height - navbar->getRect().getHeight()); // FIXME - navbar->setBackgroundColor(gMenuBarView->getBackgroundColor().get()); - - getRootView()->addChild(gStatusBar); - getRootView()->addChild(navbar); + // Pre initialize instance communicate instance; + // currently needs to happen before initializing chat or IM + LLFloaterReg::getInstance("communicate"); - // menu holder appears on top to get first pass at all mouse events - getRootView()->sendChildToFront(gMenuHolder); + if ( gSavedPerAccountSettings.getBOOL("LogShowHistory") ) + { + LLFloaterChat::loadHistory(); } + + LLRect morph_view_rect = full_window; + morph_view_rect.stretch( -STATUS_BAR_HEIGHT ); + morph_view_rect.mTop = full_window.mTop - 32; + LLMorphView::Params mvp; + mvp.name("MorphView"); + mvp.rect(morph_view_rect); + mvp.visible(false); + gMorphView = LLUICtrlFactory::create<LLMorphView>(mvp); + mRootView->addChild(gMorphView); + + // Make space for nav bar. + LLRect floater_view_rect = gFloaterView->getRect(); + LLRect notify_view_rect = gNotifyBoxView->getRect(); + floater_view_rect.mTop -= NAVIGATION_BAR_HEIGHT; + floater_view_rect.mBottom += LLBottomTray::getInstance()->getRect().getHeight(); + notify_view_rect.mTop -= NAVIGATION_BAR_HEIGHT; + notify_view_rect.mBottom += LLBottomTray::getInstance()->getRect().getHeight(); + gFloaterView->setRect(floater_view_rect); + gNotifyBoxView->setRect(notify_view_rect); + + // *Note: this is where gFloaterMute used to be initialized. + + LLWorldMapView::initClass(); + + // Force gFloaterWorldMap to initialize + LLFloaterReg::getInstance("world_map"); + LLFloaterReg::hideInstance("world_map"); + + // Force gFloaterTools to initialize + LLFloaterReg::getInstance("build"); + LLFloaterReg::hideInstance("build"); + + // Status bar + S32 menu_bar_height = gMenuBarView->getRect().getHeight(); + LLRect root_rect = getRootView()->getRect(); + LLRect status_rect(0, root_rect.getHeight(), root_rect.getWidth(), root_rect.getHeight() - menu_bar_height); + gStatusBar = new LLStatusBar(status_rect); + gStatusBar->setFollows(FOLLOWS_LEFT | FOLLOWS_RIGHT | FOLLOWS_TOP); + + gStatusBar->reshape(root_rect.getWidth(), gStatusBar->getRect().getHeight(), TRUE); + gStatusBar->translate(0, root_rect.getHeight() - gStatusBar->getRect().getHeight()); + // sync bg color with menu bar + gStatusBar->setBackgroundColor( gMenuBarView->getBackgroundColor().get() ); + + // Navigation bar + + LLNavigationBar* navbar = LLNavigationBar::getInstance(); + navbar->reshape(root_rect.getWidth(), navbar->getRect().getHeight(), TRUE); // *TODO: redundant? + navbar->translate(0, root_rect.getHeight() - menu_bar_height - navbar->getRect().getHeight()); // FIXME + navbar->setBackgroundColor(gMenuBarView->getBackgroundColor().get()); + + getRootView()->addChild(gStatusBar); + getRootView()->addChild(navbar); + + // side tray + getRootView()->addChild(LLSideTray::getInstance()); + + //sidetray + //then notify area + //then menu + getRootView()->sendChildToFront(LLSideTray::getInstance()); + getRootView()->sendChildToFront(gNotifyBoxView); + // menu holder appears on top to get first pass at all mouse events + getRootView()->sendChildToFront(gMenuHolder); } // Destroy the UI void LLViewerWindow::shutdownViews() { + // clean up warning logger + LLError::removeRecorder(RecordToChatConsole::getInstance()); + delete mDebugText; mDebugText = NULL; - gSavedSettings.setS32("FloaterViewBottom", gFloaterView->getRect().mBottom); - // Cleanup global views if (gMorphView) { @@ -1752,8 +1768,8 @@ void LLViewerWindow::sendShapeToSim() msg->addU32Fast(_PREHASH_CircuitCode, gMessageSystem->mOurCircuitCode); msg->nextBlockFast(_PREHASH_HeightWidthBlock); msg->addU32Fast(_PREHASH_GenCounter, 0); - U16 height16 = (U16) mWindowRect.getHeight(); - U16 width16 = (U16) mWindowRect.getWidth(); + U16 height16 = (U16) mWorldViewRect.getHeight(); + U16 width16 = (U16) mWorldViewRect.getWidth(); msg->addU16Fast(_PREHASH_Height, height16); msg->addU16Fast(_PREHASH_Width, width16); gAgent.sendReliableMessage(); @@ -1774,25 +1790,18 @@ void LLViewerWindow::reshape(S32 width, S32 height) return; } - glViewport(0, 0, width, height ); + // update our window rectangle + mWindowRect.mRight = mWindowRect.mLeft + width; + mWindowRect.mTop = mWindowRect.mBottom + height; + + //glViewport(0, 0, width, height ); if (height > 0) { - LLViewerCamera::getInstance()->setViewHeightInPixels( height ); - if (mWindow->getFullscreen()) - { - // force to 4:3 aspect for odd resolutions - LLViewerCamera::getInstance()->setAspect( getDisplayAspectRatio() ); - } - else - { - LLViewerCamera::getInstance()->setAspect( width / (F32) height); - } + LLViewerCamera::getInstance()->setViewHeightInPixels( mWorldViewRect.getHeight() ); + LLViewerCamera::getInstance()->setAspect( getWorldViewAspectRatio() ); } - // update our window rectangle - mWindowRect.mRight = mWindowRect.mLeft + width; - mWindowRect.mTop = mWindowRect.mBottom + height; calcDisplayScale(); BOOL display_scale_changed = mDisplayScale != LLUI::sGLScaleFactor; @@ -1802,7 +1811,7 @@ void LLViewerWindow::reshape(S32 width, S32 height) mVirtualWindowRect.mRight = mVirtualWindowRect.mLeft + llround((F32)width / mDisplayScale.mV[VX]); mVirtualWindowRect.mTop = mVirtualWindowRect.mBottom + llround((F32)height / mDisplayScale.mV[VY]); - setupViewport(); + setup2DViewport(); // Inform lower views of the change // round up when converting coordinates to make sure there are no gaps at edge of window @@ -1820,7 +1829,7 @@ void LLViewerWindow::reshape(S32 width, S32 height) // store the mode the user wants (even if not there yet) - gSavedSettings.setBOOL("FullScreen", mWantFullscreen); + gSavedSettings.setBOOL("NotFullScreen", !mWantFullscreen); // store new settings for the mode we are in, regardless if (!mWindow->getFullscreen()) @@ -1840,7 +1849,6 @@ void LLViewerWindow::reshape(S32 width, S32 height) LLViewerStats::getInstance()->setStat(LLViewerStats::ST_WINDOW_WIDTH, (F64)width); LLViewerStats::getInstance()->setStat(LLViewerStats::ST_WINDOW_HEIGHT, (F64)height); - gResizeScreenTexture = TRUE; } } @@ -1848,11 +1856,8 @@ void LLViewerWindow::reshape(S32 width, S32 height) // Hide normal UI when a logon fails void LLViewerWindow::setNormalControlsVisible( BOOL visible ) { - if ( gBottomPanel ) - { - gBottomPanel->setVisible( visible ); - gBottomPanel->setEnabled( visible ); - } + LLBottomTray::getInstance()->setVisible(visible); + LLBottomTray::getInstance()->setEnabled(visible); if ( gMenuBarView ) { @@ -1908,7 +1913,6 @@ void LLViewerWindow::setMenuBackgroundColor(bool god_mode, bool dev_grid) { gStatusBar->setBackgroundColor( new_bg_color ); gStatusBar->getChild<LLTextBox>("HealthText")->setBackgroundColor(new_bg_color); - gStatusBar->getChild<LLTextBox>("ParcelNameText")->setBackgroundColor(new_bg_color); } } @@ -2120,15 +2124,15 @@ BOOL LLViewerWindow::handleKey(KEY key, MASK mask) } } - // Debugging view for unified notifications: Control-Alt-N because - // Ctrl-Shift-N maps to Nighttime under windlight. - // Ctrl-Alt-Shift-N is Show beacons - if (!(MASK_SHIFT & mask) - && (MASK_CONTROL & mask) - && (MASK_ALT & mask) - && ('N' == key || 'n' == key)) + // Debugging view for unified notifications: CTRL-SHIFT-5 + // *FIXME: Having this special-cased right here (just so this can be invoked from the login screen) sucks. + if ((MASK_SHIFT & mask) + && (!(MASK_ALT & mask)) + && (MASK_CONTROL & mask) + && ('5' == key)) { - LLFloaterNotificationConsole::showInstance(); + //LLFloaterNotificationConsole::showInstance(); + LLFloaterReg::showInstance("notifications_console"); return TRUE; } @@ -2369,8 +2373,8 @@ void LLViewerWindow::handleScrollWheel(S32 clicks) void LLViewerWindow::moveCursorToCenter() { - S32 x = mVirtualWindowRect.getWidth() / 2; - S32 y = mVirtualWindowRect.getHeight() / 2; + S32 x = mWorldViewRect.getWidth() / 2; + S32 y = mWorldViewRect.getHeight() / 2; //on a forced move, all deltas get zeroed out to prevent jumping mCurrentMousePoint.set(x,y); @@ -2391,6 +2395,8 @@ void LLViewerWindow::updateUI() { static std::string last_handle_msg; + updateWorldViewRect(); + LLView::sMouseHandlerMessage.clear(); S32 x = mCurrentMousePoint.mX; @@ -2423,42 +2429,59 @@ void LLViewerWindow::updateUI() root_view = mRootView; } - for (LLView::tree_iterator_t it = root_view->beginTree(); - it != root_view->endTree(); - ++it) + // aggregate visible views that contain mouse cursor in display order + + // while the top_ctrl contains the mouse cursor, only it and its descendants will receive onMouseEnter events + if (top_ctrl && top_ctrl->calcScreenBoundingRect().pointInRect(x, y)) { - LLView* viewp = *it; - // calculating the screen rect involves traversing the parent, so this is less than optimal - if (!viewp->getVisible() - || !viewp->calcScreenBoundingRect().pointInRect(x, y)) + // iterator over contents of top_ctrl, and throw into mouse_hover_set + for (LLView::tree_iterator_t it = top_ctrl->beginTree(); + it != top_ctrl->endTree(); + ++it) { - // skip this view and all of its children - it.skipChildren(); - continue; + LLView* viewp = *it; + if (viewp->getVisible() + && viewp->calcScreenBoundingRect().pointInRect(x, y)) + { + // we have a view that contains the mouse, add it to the set + mouse_hover_set.insert(viewp->getHandle()); + } + else + { + // skip this view and all of its children + it.skipDescendants(); + } } - - // we have a view that contains the mouse, add it to the set - mouse_hover_set.insert(viewp->getHandle()); } - - // now do the same aggregation for the "top" ctrl, whose parent does not necessarily contain the mouse - if (top_ctrl) + else { - for (LLView::tree_iterator_t it = top_ctrl->beginTree(); - it != root_view->endTree(); + // walk UI tree in depth-first order + LLView::tree_iterator_t end_it; + for (LLView::tree_iterator_t it = root_view->beginTree(); + it != end_it; ++it) { LLView* viewp = *it; - if (!viewp->getVisible() - || !viewp->calcScreenBoundingRect().pointInRect(x, y)) + // calculating the screen rect involves traversing the parent, so this is less than optimal + if (viewp->getVisible() + && viewp->calcScreenBoundingRect().pointInRect(x, y)) + { + + // if this view is mouse opaque, nothing behind it should be in mouse_hover_set + if (viewp->getMouseOpaque()) + { + // constrain further iteration to children of this widget + it = viewp->beginTree(); + } + + // we have a view that contains the mouse, add it to the set + mouse_hover_set.insert(viewp->getHandle()); + } + else { // skip this view and all of its children - it.skipChildren(); - continue; + it.skipDescendants(); } - - // we have a view that contains the mouse, add it to the set - mouse_hover_set.insert(viewp->getHandle()); } } @@ -2750,81 +2773,6 @@ void LLViewerWindow::updateLayout() } gMenuBarView->setItemVisible("BuildTools", gFloaterTools->getVisible()); } - - if (gToolBar) - { - gToolBar->refresh(); - } - - if (gChatBar) - { - gChatBar->refresh(); - } - - if (gOverlayBar) - { - gOverlayBar->refresh(); - } - - // Update rectangles for the various toolbars - if (gOverlayBar && gNotifyBoxView && gConsole && gToolBar) - { - LLRect bar_rect(-1, STATUS_BAR_HEIGHT, getWindowWidth()+1, -1); - - LLRect notify_box_rect = gNotifyBoxView->getRect(); - notify_box_rect.mBottom = bar_rect.mBottom; - gNotifyBoxView->reshape(notify_box_rect.getWidth(), notify_box_rect.getHeight()); - gNotifyBoxView->setRect(notify_box_rect); - - // make sure floaters snap to visible rect by adjusting floater view rect - LLRect floater_rect = gFloaterView->getRect(); - if (floater_rect.mBottom != bar_rect.mBottom+1) - { - floater_rect.mBottom = bar_rect.mBottom+1; - // Don't bounce the floaters up and down. - gFloaterView->reshapeFloater(floater_rect.getWidth(), floater_rect.getHeight(), - TRUE, ADJUST_VERTICAL_NO); - gFloaterView->setRect(floater_rect); - } - - // snap floaters to top of chat bar/button strip - LLView* chatbar_and_buttons = gOverlayBar->getChild<LLView>("chatbar_and_buttons", TRUE); - // find top of chatbar and state buttons, if either are visible - if (chatbar_and_buttons && !chatbar_and_buttons->getLocalBoundingRect().isNull()) - { - // convert top/left corner of chatbar/buttons container to gFloaterView-relative coordinates - S32 top, left; - chatbar_and_buttons->localPointToOtherView( - chatbar_and_buttons->getLocalBoundingRect().mLeft, - chatbar_and_buttons->getLocalBoundingRect().mTop, - &left, - &top, - gFloaterView); - gFloaterView->setSnapOffsetBottom(top); - } - else if (gToolBar->getVisible()) - { - S32 top, left; - gToolBar->localPointToOtherView( - gToolBar->getLocalBoundingRect().mLeft, - gToolBar->getLocalBoundingRect().mTop, - &left, - &top, - gFloaterView); - gFloaterView->setSnapOffsetBottom(top); - } - else - { - gFloaterView->setSnapOffsetBottom(0); - } - - // Always update console - LLRect console_rect = gConsole->getRect(); - console_rect.mBottom = gHUDView->getRect().mBottom + getChatConsoleBottomPad(); - gConsole->reshape(console_rect.getWidth(), console_rect.getHeight()); - gConsole->setRect(console_rect); - } - } void LLViewerWindow::updateMouseDelta() @@ -2939,6 +2887,10 @@ void LLViewerWindow::updateKeyboardFocus() gFloaterView->syncFloaterTabOrder(); } + if(LLSideTray::instanceCreated())//just getInstance will create sidetray. we don't want this + LLSideTray::getInstance()->highlightFocused(); + + if (gSavedSettings.getBOOL("ChatBarStealsFocus") && gChatBar && gFocusMgr.getKeyboardFocus() == NULL @@ -2950,6 +2902,38 @@ void LLViewerWindow::updateKeyboardFocus() } +void LLViewerWindow::updateWorldViewRect() +{ + if (!LLSideTray::instanceCreated()) return; + + LLRect new_world_rect = mWindowRect; + + // pull in right side of world view based on sidetray + LLSideTray* sidetray = LLSideTray::getInstance(); + if (sidetray->getVisible()) + { + new_world_rect.mRight -= llround((F32)sidetray->getTrayWidth() * mDisplayScale.mV[VX]); + } + + // push top of world view below nav bar + if (LLNavigationBar::getInstance()->getVisible()) + { + LLNavigationBar* barp = LLNavigationBar::getInstance(); + LLRect nav_bar_rect; + if(barp->localRectToOtherView(barp->getLocalRect(), &nav_bar_rect, mRootView)) + { + new_world_rect.mTop = llround((F32)LLNavigationBar::getInstance()->getRect().mBottom * mDisplayScale.mV[VY]); + } + } + + if (mWorldViewRect != new_world_rect) + { + mWorldViewRect = new_world_rect; + gResizeScreenTexture = TRUE; + LLViewerCamera::getInstance()->setViewHeightInPixels( mWorldViewRect.getHeight() ); + LLViewerCamera::getInstance()->setAspect( getWorldViewAspectRatio() ); + } +} /* static */ void LLViewerWindow::hoverPickCallback(const LLPickInfo& pick_info) @@ -3226,10 +3210,10 @@ void LLViewerWindow::pickAsync(S32 x, S32 y_from_bot, MASK mask, void (*callback { mPickScreenRegion.setCenterAndSize(x, y_from_bot, PICK_DIAMETER, PICK_DIAMETER); - if (mPickScreenRegion.mLeft < 0) mPickScreenRegion.translate(-mPickScreenRegion.mLeft, 0); - if (mPickScreenRegion.mBottom < 0) mPickScreenRegion.translate(0, -mPickScreenRegion.mBottom); - if (mPickScreenRegion.mRight > mWindowRect.getWidth() ) mPickScreenRegion.translate(mWindowRect.getWidth() - mPickScreenRegion.mRight, 0); - if (mPickScreenRegion.mTop > mWindowRect.getHeight() ) mPickScreenRegion.translate(0, mWindowRect.getHeight() - mPickScreenRegion.mTop); + if (mPickScreenRegion.mLeft < mWorldViewRect.mLeft) mPickScreenRegion.translate(mWorldViewRect.mLeft - mPickScreenRegion.mLeft, 0); + if (mPickScreenRegion.mBottom < mWorldViewRect.mBottom) mPickScreenRegion.translate(0, mWorldViewRect.mBottom - mPickScreenRegion.mBottom); + if (mPickScreenRegion.mRight > mWorldViewRect.mRight ) mPickScreenRegion.translate(mWorldViewRect.mRight - mPickScreenRegion.mRight, 0); + if (mPickScreenRegion.mTop > mWorldViewRect.mTop ) mPickScreenRegion.translate(0, mWorldViewRect.mTop - mPickScreenRegion.mTop); } // set frame buffer region for picking results @@ -3257,77 +3241,6 @@ void LLViewerWindow::schedulePick(LLPickInfo& pick_info) llassert_always(pick_info.mScreenRegion.notNull()); mPicks.push_back(pick_info); - /*S32 scaled_x = llround((F32)pick_info.mMousePt.mX * mDisplayScale.mV[VX]); - S32 scaled_y = llround((F32)pick_info.mMousePt.mY * mDisplayScale.mV[VY]); - - // Default to not hitting anything - LLCamera pick_camera; - pick_camera.setOrigin(LLViewerCamera::getInstance()->getOrigin()); - pick_camera.setOriginAndLookAt(LLViewerCamera::getInstance()->getOrigin(), - LLViewerCamera::getInstance()->getUpAxis(), - LLViewerCamera::getInstance()->getOrigin() + mouseDirectionGlobal(pick_info.mMousePt.mX, pick_info.mMousePt.mY)); - pick_camera.setView(0.5f*DEG_TO_RAD); - pick_camera.setNear(LLViewerCamera::getInstance()->getNear()); - pick_camera.setFar(LLViewerCamera::getInstance()->getFar()); - pick_camera.setAspect(1.f); - - // save our drawing state - // *TODO: should we be saving using the new method here using - // glh_get_current_projection/glh_set_current_projection? -brad - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glLoadIdentity(); - - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - - // clear work area - { - LLGLState scissor_state(GL_SCISSOR_TEST); - scissor_state.enable(); - glScissor(pick_info.mScreenRegion.mLeft, pick_info.mScreenRegion.mBottom, pick_info.mScreenRegion.getWidth(), pick_info.mScreenRegion.getHeight()); - glClearColor(0.f, 0.f, 0.f, 0.f); - glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); - //glClear(GL_COLOR_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); - } - - // build perspective transform and picking viewport - // Perform pick on a PICK_DIAMETER x PICK_DIAMETER pixel region around cursor point. - // Don't limit the select distance for this pick. - LLViewerCamera::getInstance()->setPerspective(FOR_SELECTION, scaled_x - PICK_HALF_WIDTH, scaled_y - PICK_HALF_WIDTH, PICK_DIAMETER, PICK_DIAMETER, FALSE); - - // render for object picking - - // make viewport big enough to handle antialiased frame buffers - gGLViewport[0] = pick_info.mScreenRegion.mLeft; - gGLViewport[1] = pick_info.mScreenRegion.mBottom; - gGLViewport[2] = pick_info.mScreenRegion.getWidth(); - gGLViewport[3] = pick_info.mScreenRegion.getHeight(); - - glViewport(gGLViewport[0], gGLViewport[1], gGLViewport[2], gGLViewport[3]); - LLViewerCamera::updateFrustumPlanes(pick_camera); - stop_glerror(); - - // Draw the objects so the user can select them. - // The starting ID is 1, since land is zero. - LLRect pick_region; - pick_region.setOriginAndSize(pick_info.mMousePt.mX - PICK_HALF_WIDTH, - pick_info.mMousePt.mY - PICK_HALF_WIDTH, PICK_DIAMETER, PICK_DIAMETER); - gObjectList.renderObjectsForSelect(pick_camera, pick_region, FALSE, pick_info.mPickTransparent); - - stop_glerror(); - - // restore drawing state - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - glPopMatrix(); - - setup3DRender(); - setup2DRender(); - setupViewport();*/ - // delay further event processing until we receive results of pick mWindow->delayInputProcessing(); } @@ -3496,16 +3409,16 @@ LLVector3 LLViewerWindow::mouseDirectionGlobal(const S32 x, const S32 y) const // find vertical field of view F32 fov = LLViewerCamera::getInstance()->getView(); - // find screen resolution - S32 height = getWindowHeight(); - S32 width = getWindowWidth(); + // find world view center + F32 center_x = (F32)getWorldViewRect().getCenterX(); + F32 center_y = (F32)getWorldViewRect().getCenterY(); // calculate pixel distance to screen - F32 distance = (height / 2.f) / (tan(fov / 2.f)); + F32 distance = (getWorldViewHeight() / 2.f) / (tan(fov / 2.f)); // calculate click point relative to middle of screen - F32 click_x = x - width / 2.f; - F32 click_y = y - height / 2.f; + F32 click_x = x - center_x; + F32 click_y = y - center_y; // compute mouse vector LLVector3 mouse_vector = distance * LLViewerCamera::getInstance()->getAtAxis() @@ -3520,12 +3433,15 @@ LLVector3 LLViewerWindow::mouseDirectionGlobal(const S32 x, const S32 y) const LLVector3 LLViewerWindow::mousePointHUD(const S32 x, const S32 y) const { // find screen resolution - S32 height = getWindowHeight(); - S32 width = getWindowWidth(); + S32 height = getWorldViewHeight(); + + // find world view center + F32 center_x = (F32)getWorldViewRect().getCenterX(); + F32 center_y = (F32)getWorldViewRect().getCenterY(); // remap with uniform scale (1/height) so that top is -0.5, bottom is +0.5 - F32 hud_x = -((F32)x - (F32)width/2.f) / height; - F32 hud_y = ((F32)y - (F32)height/2.f) / height; + F32 hud_x = -((F32)x - center_x) / height; + F32 hud_y = ((F32)y - center_y) / height; return LLVector3(0.f, hud_x/gAgent.mHUDCurZoom, hud_y/gAgent.mHUDCurZoom); } @@ -3539,12 +3455,16 @@ LLVector3 LLViewerWindow::mouseDirectionCamera(const S32 x, const S32 y) const F32 fov_width = fov_height * LLViewerCamera::getInstance()->getAspect(); // find screen resolution - S32 height = getWindowHeight(); - S32 width = getWindowWidth(); + S32 height = getWorldViewHeight(); + S32 width = getWorldViewWidth(); + + // find world view center + F32 center_x = (F32)getWorldViewRect().getCenterX(); + F32 center_y = (F32)getWorldViewRect().getCenterY(); // calculate click point relative to middle of screen - F32 click_x = (((F32)x / (F32)width) - 0.5f) * fov_width * -1.f; - F32 click_y = (((F32)y / (F32)height) - 0.5f) * fov_height; + F32 click_x = (((F32)x - center_x) / (F32)width) * fov_width * -1.f; + F32 click_y = (((F32)y - center_y) / (F32)height) * fov_height; // compute mouse vector LLVector3 mouse_vector = LLVector3(0.f, 0.f, -1.f); @@ -3888,7 +3808,6 @@ BOOL LLViewerWindow::thumbnailSnapshot(LLImageRaw *raw, S32 preview_width, S32 p glClearColor(0.f, 0.f, 0.f, 0.f); glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); setup3DRender(); - setupViewport(); LLFontGL::setFontDisplay(FALSE) ; LLHUDText::setDisplayText(FALSE) ; @@ -3949,7 +3868,6 @@ BOOL LLViewerWindow::thumbnailSnapshot(LLImageRaw *raw, S32 preview_width, S32 p mDisplayScale.setVec(display_scale) ; mWindowRect = window_rect; setup3DRender(); - setupViewport(); gDisplaySwapBuffers = FALSE; gDepthDirty = TRUE; @@ -4117,7 +4035,6 @@ BOOL LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_hei LLViewerCamera::getInstance()->setZoomParameters(scale_factor, subimage_x+(subimage_y*llceil(scale_factor))); setup3DRender(); - setupViewport(); gObjectList.renderPickList(gViewerWindow->getVirtualWindowRect(), FALSE, FALSE); } else @@ -4268,8 +4185,8 @@ void LLViewerWindow::drawMouselookInstructions() const S32 INSTRUCTIONS_PAD = 5; LLRect instructions_rect; instructions_rect.setLeftTopAndSize( - INSTRUCTIONS_PAD, - getWindowHeight() - INSTRUCTIONS_PAD, + mWorldViewRect.mLeft + INSTRUCTIONS_PAD, + mWorldViewRect.mTop - INSTRUCTIONS_PAD, font->getWidth( instructions ) + 2 * INSTRUCTIONS_PAD, llround(font->getLineHeight() + 2 * INSTRUCTIONS_PAD)); @@ -4313,6 +4230,31 @@ void LLViewerWindow::focusClient() const return mWindow->focusClient(); } +LLRootView* LLViewerWindow::getRootView() const +{ + return mRootView; +} + +LLRect LLViewerWindow::getVirtualWorldViewRect() const +{ + LLRect world_view_rect = mWorldViewRect; + world_view_rect.mLeft = llround((F32)world_view_rect.mLeft / mDisplayScale.mV[VX]); + world_view_rect.mRight = llround((F32)world_view_rect.mRight / mDisplayScale.mV[VX]); + world_view_rect.mBottom = llround((F32)world_view_rect.mBottom / mDisplayScale.mV[VY]); + world_view_rect.mTop = llround((F32)world_view_rect.mTop / mDisplayScale.mV[VY]); + return world_view_rect; +} + +S32 LLViewerWindow::getWorldViewHeight() const +{ + return mWorldViewRect.getHeight(); +} + +S32 LLViewerWindow::getWorldViewWidth() const +{ + return mWorldViewRect.getWidth(); +} + S32 LLViewerWindow::getWindowDisplayHeight() const { return mWindowRect.getHeight(); @@ -4323,27 +4265,48 @@ S32 LLViewerWindow::getWindowDisplayWidth() const return mWindowRect.getWidth(); } -void LLViewerWindow::setupViewport(S32 x_offset, S32 y_offset) +void LLViewerWindow::setup2DRender() { - gGLViewport[0] = x_offset; - gGLViewport[1] = y_offset; + // setup ortho camera + gl_state_for_2d(mWindowRect.getWidth(), mWindowRect.getHeight()); + setup2DViewport(); +} + +void LLViewerWindow::setup2DViewport(S32 x_offset, S32 y_offset) +{ + gGLViewport[0] = mWindowRect.mLeft + x_offset; + gGLViewport[1] = mWindowRect.mBottom + y_offset; gGLViewport[2] = mWindowRect.getWidth(); gGLViewport[3] = mWindowRect.getHeight(); glViewport(gGLViewport[0], gGLViewport[1], gGLViewport[2], gGLViewport[3]); } + void LLViewerWindow::setup3DRender() { - LLViewerCamera::getInstance()->setPerspective(NOT_FOR_SELECTION, 0, 0, mWindowRect.getWidth(), mWindowRect.getHeight(), FALSE, LLViewerCamera::getInstance()->getNear(), MAX_FAR_CLIP*2.f); + // setup perspective camera + LLViewerCamera::getInstance()->setPerspective(NOT_FOR_SELECTION, mWorldViewRect.mLeft, mWorldViewRect.mBottom, mWorldViewRect.getWidth(), mWorldViewRect.getHeight(), FALSE, LLViewerCamera::getInstance()->getNear(), MAX_FAR_CLIP*2.f); + setup3DViewport(); } -void LLViewerWindow::setup2DRender() +void LLViewerWindow::setup3DViewport(S32 x_offset, S32 y_offset) { - gl_state_for_2d(mWindowRect.getWidth(), mWindowRect.getHeight()); + if (LLRenderTarget::getCurrentBoundTarget() != NULL) + { + // don't use translation component of mWorldViewRect, as we are already in a properly sized render target + gGLViewport[0] = x_offset; + gGLViewport[1] = y_offset; + } + else + { + gGLViewport[0] = mWorldViewRect.mLeft + x_offset; + gGLViewport[1] = mWorldViewRect.mBottom + y_offset; + } + gGLViewport[2] = mWorldViewRect.getWidth(); + gGLViewport[3] = mWorldViewRect.getHeight(); + glViewport(gGLViewport[0], gGLViewport[1], gGLViewport[2], gGLViewport[3]); } - - void LLViewerWindow::setShowProgress(const BOOL show) { if (mProgressView) @@ -4357,6 +4320,10 @@ BOOL LLViewerWindow::getShowProgress() const return (mProgressView && mProgressView->getVisible()); } +void LLViewerWindow::handleLoginComplete() +{ + LLNavigationBar::getInstance()->handleLoginComplete(); +} void LLViewerWindow::moveProgressViewToFront() { @@ -4467,7 +4434,7 @@ void LLViewerWindow::stopGL(BOOL save_state) gGLManager.mIsDisabled = TRUE; stop_glerror(); - llinfos << "Remaining allocated texture memory: " << LLImageGL::sGlobalTextureMemory << " bytes" << llendl; + llinfos << "Remaining allocated texture memory: " << LLImageGL::sGlobalTextureMemoryInBytes << " bytes" << llendl; } } @@ -4605,7 +4572,7 @@ BOOL LLViewerWindow::checkSettings() // force aspect ratio if (mIsFullscreenChecked) { - LLViewerCamera::getInstance()->setAspect( getDisplayAspectRatio() ); + LLViewerCamera::getInstance()->setAspect( getWorldViewAspectRatio() ); } mResDirty = false; @@ -4676,9 +4643,9 @@ BOOL LLViewerWindow::changeDisplaySettings(BOOL fullscreen, LLCoordScreen size, BOOL was_maximized = gSavedSettings.getBOOL("WindowMaximized"); mWantFullscreen = fullscreen; mShowFullscreenProgress = show_progress_bar; - gSavedSettings.setBOOL("FullScreen", mWantFullscreen); + gSavedSettings.setBOOL("NotFullScreen", !mWantFullscreen); - gResizeScreenTexture = TRUE; + //gResizeScreenTexture = TRUE; BOOL old_fullscreen = mWindow->getFullscreen(); if (!old_fullscreen && fullscreen && !LLStartUp::canGoFullscreen()) @@ -4824,6 +4791,21 @@ F32 LLViewerWindow::getDisplayAspectRatio() const } +F32 LLViewerWindow::getWorldViewAspectRatio() const +{ + F32 world_aspect = (F32)mWorldViewRect.getWidth() / (F32)mWorldViewRect.getHeight(); + //F32 window_aspect = (F32)mWindowRect.getWidth() / (F32)mWindowRect.getHeight(); + if (mWindow->getFullscreen()) + { + return world_aspect * mWindow->getPixelAspectRatio(); + } + else + { + llinfos << "World aspect ratio: " << world_aspect << llendl; + return world_aspect; + } +} + void LLViewerWindow::drawPickBuffer() const { mHoverPick.drawPickBuffer(); @@ -4877,6 +4859,33 @@ S32 LLViewerWindow::getChatConsoleBottomPad() return offset; } +LLRect LLViewerWindow::getChatConsoleRect() +{ + LLRect full_window(0, getWindowHeight(), getWindowWidth(), 0); + LLRect console_rect = full_window; + + const S32 CONSOLE_PADDING_TOP = 24; + const S32 CONSOLE_PADDING_LEFT = 24; + const S32 CONSOLE_PADDING_RIGHT = 10; + + console_rect.mTop -= CONSOLE_PADDING_TOP; + console_rect.mBottom += getChatConsoleBottomPad(); + + console_rect.mLeft += CONSOLE_PADDING_LEFT; + + if (gSavedSettings.getBOOL("ChatFullWidth")) + { + console_rect.mRight -= CONSOLE_PADDING_RIGHT; + } + else + { + // Make console rect somewhat narrow so having inventory open is + // less of a problem. + console_rect.mRight = console_rect.mLeft + 2 * getWindowWidth() / 3; + } + + return console_rect; +} //---------------------------------------------------------------------------- @@ -4903,64 +4912,6 @@ bool LLViewerWindow::onAlert(const LLSD& notify) } //////////////////////////////////////////////////////////////////////////// - -LLBottomPanel::LLBottomPanel(const LLRect &rect) : - LLPanel(), - mIndicator(NULL) -{ - setRect(rect); - // bottom panel is focus root, so Tab moves through the toolbar and button bar, and overlay - setFocusRoot(TRUE); - // flag this panel as chrome so buttons don't grab keyboard focus - setIsChrome(TRUE); - - mFactoryMap["toolbar"] = LLCallbackMap(createToolBar, NULL); - mFactoryMap["overlay"] = LLCallbackMap(createOverlayBar, NULL); - mFactoryMap["hud"] = LLCallbackMap(createHUD, NULL); - LLUICtrlFactory::getInstance()->buildPanel(this, "panel_bars.xml"); - - setOrigin(rect.mLeft, rect.mBottom); - reshape(rect.getWidth(), rect.getHeight()); -} - -void LLBottomPanel::setFocusIndicator(LLView * indicator) -{ - mIndicator = indicator; -} - -void LLBottomPanel::draw() -{ - if(mIndicator) - { - BOOL hasFocus = gFocusMgr.childHasKeyboardFocus(this); - mIndicator->setVisible(hasFocus); - mIndicator->setEnabled(hasFocus); - } - LLPanel::draw(); -} - -void* LLBottomPanel::createHUD(void* data) -{ - delete gHUDView; - gHUDView = new LLHUDView(); - return gHUDView; -} - - -void* LLBottomPanel::createOverlayBar(void* data) -{ - delete gOverlayBar; - gOverlayBar = new LLOverlayBar(); - return gOverlayBar; -} - -void* LLBottomPanel::createToolBar(void* data) -{ - delete gToolBar; - gToolBar = new LLToolBar(); - return gToolBar; -} - // // LLPickInfo // @@ -5032,8 +4983,8 @@ void LLPickInfo::fetchResults() // find pick region that is fully onscreen LLCoordGL scaled_pick_point;; - scaled_pick_point.mX = llclamp(llround((F32)mMousePt.mX * gViewerWindow->getDisplayScale().mV[VX]), PICK_HALF_WIDTH, gViewerWindow->getWindowDisplayWidth() - PICK_HALF_WIDTH); - scaled_pick_point.mY = llclamp(llround((F32)mMousePt.mY * gViewerWindow->getDisplayScale().mV[VY]), PICK_HALF_WIDTH, gViewerWindow->getWindowDisplayHeight() - PICK_HALF_WIDTH); + scaled_pick_point.mX = llclamp(llround((F32)mMousePt.mX * gViewerWindow->getDisplayScale().mV[VX]), PICK_HALF_WIDTH, gViewerWindow->getWorldViewWidth() - PICK_HALF_WIDTH); + scaled_pick_point.mY = llclamp(llround((F32)mMousePt.mY * gViewerWindow->getDisplayScale().mV[VY]), PICK_HALF_WIDTH, gViewerWindow->getWorldViewHeight() - PICK_HALF_WIDTH); //S32 pixel_index = PICK_HALF_WIDTH * PICK_DIAMETER + PICK_HALF_WIDTH; //S32 pick_id = (U32)mPickBuffer[(pixel_index * 4) + 0] << 16 | (U32)mPickBuffer[(pixel_index * 4) + 1] << 8 | (U32)mPickBuffer[(pixel_index * 4) + 2]; //F32 depth = mPickDepthBuffer[pixel_index]; diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h index 01ef91e7b2f54f9fb8c1a669a1241c28e3b8eb2e..eae1bf0343b4edac513e6009a3d0e2607e233911 100644 --- a/indra/newview/llviewerwindow.h +++ b/indra/newview/llviewerwindow.h @@ -61,6 +61,7 @@ class LLTextBox; class LLImageRaw; class LLHUDIcon; class LLWindow; +class LLRootView; #define PICK_HALF_WIDTH 5 #define PICK_DIAMETER (2 * PICK_HALF_WIDTH + 1) @@ -126,7 +127,7 @@ class LLPickInfo }; -#define MAX_IMAGE_SIZE 6144 //6 * 1024, max snapshot image size 6144 * 6144 +static const U32 MAX_SNAPSHOT_IMAGE_SIZE = 6 * 1024; // max snapshot image size 6144 * 6144 class LLViewerWindow : public LLWindowCallbacks { @@ -189,10 +190,15 @@ class LLViewerWindow : public LLWindowCallbacks // // ACCESSORS // - LLView* getRootView() const { return mRootView; } + LLRootView* getRootView() const; // Window in raw pixels as seen on screen. const LLRect& getWindowRect() const { return mWindowRect; }; + // portion of window that shows 3d world + const LLRect& getWorldViewRect() const { return mWorldViewRect; }; + LLRect getVirtualWorldViewRect() const; + S32 getWorldViewHeight() const; + S32 getWorldViewWidth() const; S32 getWindowDisplayHeight() const; S32 getWindowDisplayWidth() const; @@ -224,7 +230,8 @@ class LLViewerWindow : public LLWindowCallbacks const LLPickInfo& getLastPick() const { return mLastPick; } const LLPickInfo& getHoverPick() const { return mHoverPick; } - void setupViewport(S32 x_offset = 0, S32 y_offset = 0); + void setup2DViewport(S32 x_offset = 0, S32 y_offset = 0); + void setup3DViewport(S32 x_offset = 0, S32 y_offset = 0); void setup3DRender(); void setup2DRender(); @@ -261,6 +268,7 @@ class LLViewerWindow : public LLWindowCallbacks void setProgressMessage(const std::string& msg); void setProgressCancelButtonVisible( BOOL b, const std::string& label = LLStringUtil::null ); LLProgressView *getProgressView() const; + void handleLoginComplete(); void updateObjectUnderCursor(); @@ -270,6 +278,8 @@ class LLViewerWindow : public LLWindowCallbacks void updateKeyboardFocus(); void updatePicking(S32 x, S32 y, MASK mask); + void updateWorldViewRect(); + BOOL handleKey(KEY key, MASK mask); void handleScrollWheel (S32 clicks); @@ -362,6 +372,7 @@ class LLViewerWindow : public LLWindowCallbacks BOOL changeDisplaySettings(BOOL fullscreen, LLCoordScreen size, BOOL disable_vsync, BOOL show_progress_bar); BOOL getIgnoreDestroyWindow() { return mIgnoreActivate; } F32 getDisplayAspectRatio() const; + F32 getWorldViewAspectRatio() const; const LLVector2& getDisplayScale() const { return mDisplayScale; } void calcDisplayScale(); @@ -379,6 +390,7 @@ class LLViewerWindow : public LLWindowCallbacks void initFonts(F32 zoom_factor = 1.f); void schedulePick(LLPickInfo& pick_info); S32 getChatConsoleBottomPad(); // Vertical padding for child console rect, varied by bottom clutter + LLRect getChatConsoleRect(); // Get optimal cosole rect. public: LLWindow* mWindow; // graphical window object @@ -389,7 +401,8 @@ class LLViewerWindow : public LLWindowCallbacks BOOL mShowFullscreenProgress; LLRect mWindowRect; LLRect mVirtualWindowRect; - LLView* mRootView; // a view of size mWindowRect, containing all child views + LLRect mWorldViewRect; // specifies area of screen where we render the 3D world + LLRootView* mRootView; // a view of size mWindowRect, containing all child views LLVector2 mDisplayScale; LLCoordGL mCurrentMousePoint; // last mouse position in GL coords diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 0612277b324316af447416592e1a3a343c0fec93..176f8fb37bae65f2c94d454ff5137c3c13b8a95d 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -1,5 +1,5 @@ /** - * @file llvoavatar.cpp + * @File llvoavatar.cpp * @brief Implementation of LLVOAvatar class which is a derivation fo LLViewerObject * * $LicenseInfo:firstyear=2001&license=viewergpl$ @@ -41,6 +41,8 @@ #include "noise.h" #include "llagent.h" // Get state values from here +#include "llagentwearables.h" +#include "llanimationstates.h" #include "llviewercontrol.h" #include "lldrawpoolavatar.h" #include "lldriverparam.h" @@ -63,8 +65,6 @@ #include "llsprite.h" #include "lltargetingmotion.h" #include "lltexlayer.h" -#include "lltoolgrab.h" // for needsRenderBeam -#include "lltoolmgr.h" // for needsRenderBeam #include "lltoolmorph.h" #include "llviewercamera.h" #include "llviewerimagelist.h" @@ -72,6 +72,7 @@ #include "llviewerobjectlist.h" #include "llviewerparcelmgr.h" #include "llviewerstats.h" +#include "llvoavatarself.h" #include "llvovolume.h" #include "llworld.h" #include "pipeline.h" @@ -138,8 +139,7 @@ const S32 MIN_REQUIRED_PIXEL_AREA_PELVIS_FIX = 40; const S32 TEX_IMAGE_SIZE_SELF = 512; const S32 TEX_IMAGE_AREA_SELF = TEX_IMAGE_SIZE_SELF * TEX_IMAGE_SIZE_SELF; -const S32 TEX_IMAGE_SIZE_OTHER = TEX_IMAGE_SIZE_SELF / 4; // The size of local textures for other (!mIsSelf) avatars -const S32 TEX_IMAGE_AREA_OTHER = TEX_IMAGE_SIZE_OTHER * TEX_IMAGE_SIZE_OTHER; +const S32 TEX_IMAGE_SIZE_OTHER = 512 / 4; // The size of local textures for other (!isSelf()) avatars const F32 HEAD_MOVEMENT_AVG_TIME = 0.9f; @@ -177,25 +177,20 @@ enum ERenderName //----------------------------------------------------------------------------- // Callback data //----------------------------------------------------------------------------- -struct LLAvatarTexData -{ - LLAvatarTexData( const LLUUID& id, ETextureIndex index ) - : mAvatarID(id), mIndex(index) {} - LLUUID mAvatarID; - ETextureIndex mIndex; -}; struct LLTextureMaskData { - LLTextureMaskData( const LLUUID& id ) - : mAvatarID(id), mLastDiscardLevel(S32_MAX) {} + LLTextureMaskData( const LLUUID& id ) : + mAvatarID(id), + mLastDiscardLevel(S32_MAX) + {} LLUUID mAvatarID; S32 mLastDiscardLevel; }; /********************************************************************************* ** ** - ** Begin LLVOAvatar Support classes + ** Begin private LLVOAvatar Support classes ** **/ @@ -251,85 +246,6 @@ class LLVOAvatarSkeletonInfo bone_info_list_t mBoneInfoList; }; - -//------------------------------------------------------------------------ -// LLVOAvatarXmlInfo -// One instance (in LLVOAvatar) with common data parsed from the XML files -//------------------------------------------------------------------------ -class LLVOAvatarXmlInfo -{ - friend class LLVOAvatar; -public: - LLVOAvatarXmlInfo(); - ~LLVOAvatarXmlInfo(); - -private: - BOOL parseXmlSkeletonNode(LLXmlTreeNode* root); - BOOL parseXmlMeshNodes(LLXmlTreeNode* root); - BOOL parseXmlColorNodes(LLXmlTreeNode* root); - BOOL parseXmlLayerNodes(LLXmlTreeNode* root); - BOOL parseXmlDriverNodes(LLXmlTreeNode* root); - - struct LLVOAvatarMeshInfo - { - typedef std::pair<LLPolyMorphTargetInfo*,BOOL> morph_info_pair_t; - typedef std::vector<morph_info_pair_t> morph_info_list_t; - - LLVOAvatarMeshInfo() : mLOD(0), mMinPixelArea(.1f) {} - ~LLVOAvatarMeshInfo() - { - morph_info_list_t::iterator iter; - for (iter = mPolyMorphTargetInfoList.begin(); iter != mPolyMorphTargetInfoList.end(); iter++) - { - delete iter->first; - } - mPolyMorphTargetInfoList.clear(); - } - - std::string mType; - S32 mLOD; - std::string mMeshFileName; - std::string mReferenceMeshName; - F32 mMinPixelArea; - morph_info_list_t mPolyMorphTargetInfoList; - }; - typedef std::vector<LLVOAvatarMeshInfo*> mesh_info_list_t; - mesh_info_list_t mMeshInfoList; - - typedef std::vector<LLPolySkeletalDistortionInfo*> skeletal_distortion_info_list_t; - skeletal_distortion_info_list_t mSkeletalDistortionInfoList; - - struct LLVOAvatarAttachmentInfo - { - LLVOAvatarAttachmentInfo() - : mGroup(-1), mAttachmentID(-1), mPieMenuSlice(-1), mVisibleFirstPerson(FALSE), - mIsHUDAttachment(FALSE), mHasPosition(FALSE), mHasRotation(FALSE) {} - std::string mName; - std::string mJointName; - LLVector3 mPosition; - LLVector3 mRotationEuler; - S32 mGroup; - S32 mAttachmentID; - S32 mPieMenuSlice; - BOOL mVisibleFirstPerson; - BOOL mIsHUDAttachment; - BOOL mHasPosition; - BOOL mHasRotation; - }; - typedef std::vector<LLVOAvatarAttachmentInfo*> attachment_info_list_t; - attachment_info_list_t mAttachmentInfoList; - - LLTexGlobalColorInfo *mTexSkinColorInfo; - LLTexGlobalColorInfo *mTexHairColorInfo; - LLTexGlobalColorInfo *mTexEyeColorInfo; - - typedef std::vector<LLTexLayerSetInfo*> layer_info_list_t; - layer_info_list_t mLayerInfoList; - - typedef std::vector<LLDriverParamInfo*> driver_info_list_t; - driver_info_list_t mDriverInfoList; -}; - //----------------------------------------------------------------------------- // class LLBodyNoiseMotion //----------------------------------------------------------------------------- @@ -494,7 +410,7 @@ class LLBreatheMotionRot : virtual LLMotionInitStatus onInitialize(LLCharacter *character) { mCharacter = character; - bool success = true; + BOOL success = true; if ( !mChestState->setJoint( character->getJoint( "mChest" ) ) ) { success = false; } @@ -654,13 +570,10 @@ class LLPelvisFixMotion : LLXmlTree LLVOAvatar::sXMLTree; LLXmlTree LLVOAvatar::sSkeletonXMLTree; LLVOAvatarSkeletonInfo* LLVOAvatar::sAvatarSkeletonInfo = NULL; -LLVOAvatarXmlInfo* LLVOAvatar::sAvatarXmlInfo = NULL; +LLVOAvatar::LLVOAvatarXmlInfo* LLVOAvatar::sAvatarXmlInfo = NULL; LLVOAvatarDictionary *LLVOAvatar::sAvatarDictionary = NULL; S32 LLVOAvatar::sFreezeCounter = 0; S32 LLVOAvatar::sMaxVisible = 50; -LLMap< LLGLenum, LLGLuint*> LLVOAvatar::sScratchTexNames; -LLMap< LLGLenum, F32*> LLVOAvatar::sScratchTexLastBindTime; -S32 LLVOAvatar::sScratchTexBytes = 0; F32 LLVOAvatar::sRenderDistance = 256.f; S32 LLVOAvatar::sNumVisibleAvatars = 0; S32 LLVOAvatar::sNumLODChangesThisFrame = 0; @@ -731,8 +644,6 @@ LLVOAvatar::LLVOAvatar(const LLUUID& id, mNameMute(FALSE), mRenderGroupTitles(sRenderGroupTitles), mNameAppearance(FALSE), - mLastRegionHandle(0), - mRegionCrossingCount(0), mFirstTEMessageReceived( FALSE ), mFirstAppearanceMessageReceived( FALSE ), mCulled( FALSE ), @@ -743,37 +654,29 @@ LLVOAvatar::LLVOAvatar(const LLUUID& id, mNeedsSkin(FALSE), mUpdatePeriod(1), mFullyLoadedInitialized(FALSE), - mHasBakedHair( FALSE ), - mDebugAvatarRotation (LLCachedControl<bool>(gSavedSettings, "DebugAvatarRotation", FALSE)) - + mSupportsAlphaLayers(FALSE) { LLMemType mt(LLMemType::MTYPE_AVATAR); //VTResume(); // VTune // mVoiceVisualizer is created by the hud effects manager and uses the HUD Effects pipeline - const bool needsSendToSim = false; // currently, this HUD effect doesn't need to pack and unpack data to do its job + const BOOL needsSendToSim = false; // currently, this HUD effect doesn't need to pack and unpack data to do its job mVoiceVisualizer = ( LLVoiceVisualizer *)LLHUDManager::getInstance()->createViewerEffect( LLHUDObject::LL_HUD_EFFECT_VOICE_VISUALIZER, needsSendToSim ); lldebugs << "LLVOAvatar Constructor (0x" << this << ") id:" << mID << llendl; mPelvisp = NULL; - for( S32 i=0; i<TEX_NUM_INDICES; i++ ) - { - if (isIndexLocalTexture((ETextureIndex)i)) - { - mLocalTextureData[(ETextureIndex)i] = LocalTextureData(); - } - } - - mBakedTextureData.resize(BAKED_NUM_INDICES); - for (U32 i = 0; i < mBakedTextureData.size(); i++ ) + mBakedTextureDatas.resize(BAKED_NUM_INDICES); + for (U32 i = 0; i < mBakedTextureDatas.size(); i++ ) { - mBakedTextureData[i].mLastTextureIndex = IMG_DEFAULT_AVATAR; - mBakedTextureData[i].mTexLayerSet = NULL; - mBakedTextureData[i].mIsLoaded = false; - mBakedTextureData[i].mMaskTexName = 0; - mBakedTextureData[i].mTextureIndex = getTextureIndex((EBakedTextureIndex)i); + mBakedTextureDatas[i].mLastTextureIndex = IMG_DEFAULT_AVATAR; + mBakedTextureDatas[i].mTexLayerSet = NULL; + mBakedTextureDatas[i].mIsLoaded = false; + mBakedTextureDatas[i].mIsUsed = false; + mBakedTextureDatas[i].mMaskTexName = 0; + mBakedTextureDatas[i].mTextureIndex = LLVOAvatarDictionary::bakedToLocalTextureIndex((EBakedTextureIndex)i); + mBakedTextureDatas[i].mMorphMasksValid = FALSE; } mDirtyMesh = TRUE; // Dirty geometry, need to regenerate. @@ -785,7 +688,6 @@ LLVOAvatar::LLVOAvatar(const LLUUID& id, mNumJoints = 0; mSkeleton = NULL; - mScreenp = NULL; mNumCollisionVolumes = 0; mCollisionVolumes = NULL; @@ -794,17 +696,6 @@ LLVOAvatar::LLVOAvatar(const LLUUID& id, mSpeed = 0.f; setAnimationData("Speed", &mSpeed); - if (id == gAgentID) - { - mIsSelf = TRUE; - gAgent.setAvatarObject(this); - lldebugs << "Marking avatar as self " << id << llendl; - } - else - { - mIsSelf = FALSE; - } - mNeedsImpostorUpdate = TRUE; mNeedsAnimUpdate = TRUE; @@ -839,145 +730,6 @@ LLVOAvatar::LLVOAvatar(const LLUUID& id, mOohMorph = NULL; mAahMorph = NULL; - //------------------------------------------------------------------------- - // initialize joint, mesh and shape members - //------------------------------------------------------------------------- - mRoot.setName( "mRoot" ); - - for (LLVOAvatarDictionary::mesh_map_t::const_iterator iter = LLVOAvatarDictionary::getInstance()->getMeshes().begin(); - iter != LLVOAvatarDictionary::getInstance()->getMeshes().end(); - iter++) - { - const EMeshIndex mesh_index = iter->first; - const LLVOAvatarDictionary::MeshDictionaryEntry *mesh_dict = iter->second; - - LLViewerJoint* joint = new LLViewerJoint(); - joint->setName(mesh_dict->mName); - joint->setMeshID(mesh_index); - mMeshLOD.push_back(joint); - - /* mHairLOD.setName("mHairLOD"); - mHairMesh0.setName("mHairMesh0"); - mHairMesh0.setMeshID(MESH_ID_HAIR); - mHairMesh1.setName("mHairMesh1"); */ - for (U32 lod = 0; lod < mesh_dict->mLOD; lod++) - { - LLViewerJointMesh* mesh = new LLViewerJointMesh(); - std::string mesh_name = "m" + mesh_dict->mName + boost::lexical_cast<std::string>(lod); - // We pre-pended an m - need to capitalize first character for camelCase - mesh_name[1] = toupper(mesh_name[1]); - mesh->setName(mesh_name); - mesh->setMeshID(mesh_index); - mesh->setPickName(mesh_dict->mPickName); - switch((int)mesh_index) - { - case MESH_ID_HAIR: - mesh->setIsTransparent(TRUE); - break; - case MESH_ID_SKIRT: - mesh->setIsTransparent(TRUE); - break; - case MESH_ID_EYEBALL_LEFT: - case MESH_ID_EYEBALL_RIGHT: - mesh->setSpecular( LLColor4( 1.0f, 1.0f, 1.0f, 1.0f ), 1.f ); - break; - } - - joint->mMeshParts.push_back(mesh); - } - } - - //------------------------------------------------------------------------- - // associate baked textures with meshes - //------------------------------------------------------------------------- - for (LLVOAvatarDictionary::mesh_map_t::const_iterator iter = LLVOAvatarDictionary::getInstance()->getMeshes().begin(); - iter != LLVOAvatarDictionary::getInstance()->getMeshes().end(); - iter++) - { - const EMeshIndex mesh_index = iter->first; - const LLVOAvatarDictionary::MeshDictionaryEntry *mesh_dict = iter->second; - const EBakedTextureIndex baked_texture_index = mesh_dict->mBakedID; - - // Skip it if there's no associated baked texture. - if (baked_texture_index == BAKED_NUM_INDICES) continue; - - for (std::vector<LLViewerJointMesh* >::iterator iter = mMeshLOD[mesh_index]->mMeshParts.begin(); - iter != mMeshLOD[mesh_index]->mMeshParts.end(); iter++) - { - LLViewerJointMesh* mesh = (LLViewerJointMesh*) *iter; - mBakedTextureData[(int)baked_texture_index].mMeshes.push_back(mesh); - } - } - - - //------------------------------------------------------------------------- - // register motions - //------------------------------------------------------------------------- - if (LLCharacter::sInstances.size() == 1) - { - LLKeyframeMotion::setVFS(gStaticVFS); - registerMotion( ANIM_AGENT_BUSY, LLNullMotion::create ); - registerMotion( ANIM_AGENT_CROUCH, LLKeyframeStandMotion::create ); - registerMotion( ANIM_AGENT_CROUCHWALK, LLKeyframeWalkMotion::create ); - registerMotion( ANIM_AGENT_EXPRESS_AFRAID, LLEmote::create ); - registerMotion( ANIM_AGENT_EXPRESS_ANGER, LLEmote::create ); - registerMotion( ANIM_AGENT_EXPRESS_BORED, LLEmote::create ); - registerMotion( ANIM_AGENT_EXPRESS_CRY, LLEmote::create ); - registerMotion( ANIM_AGENT_EXPRESS_DISDAIN, LLEmote::create ); - registerMotion( ANIM_AGENT_EXPRESS_EMBARRASSED, LLEmote::create ); - registerMotion( ANIM_AGENT_EXPRESS_FROWN, LLEmote::create ); - registerMotion( ANIM_AGENT_EXPRESS_KISS, LLEmote::create ); - registerMotion( ANIM_AGENT_EXPRESS_LAUGH, LLEmote::create ); - registerMotion( ANIM_AGENT_EXPRESS_OPEN_MOUTH, LLEmote::create ); - registerMotion( ANIM_AGENT_EXPRESS_REPULSED, LLEmote::create ); - registerMotion( ANIM_AGENT_EXPRESS_SAD, LLEmote::create ); - registerMotion( ANIM_AGENT_EXPRESS_SHRUG, LLEmote::create ); - registerMotion( ANIM_AGENT_EXPRESS_SMILE, LLEmote::create ); - registerMotion( ANIM_AGENT_EXPRESS_SURPRISE, LLEmote::create ); - registerMotion( ANIM_AGENT_EXPRESS_TONGUE_OUT, LLEmote::create ); - registerMotion( ANIM_AGENT_EXPRESS_TOOTHSMILE, LLEmote::create ); - registerMotion( ANIM_AGENT_EXPRESS_WINK, LLEmote::create ); - registerMotion( ANIM_AGENT_EXPRESS_WORRY, LLEmote::create ); - registerMotion( ANIM_AGENT_RUN, LLKeyframeWalkMotion::create ); - registerMotion( ANIM_AGENT_STAND, LLKeyframeStandMotion::create ); - registerMotion( ANIM_AGENT_STAND_1, LLKeyframeStandMotion::create ); - registerMotion( ANIM_AGENT_STAND_2, LLKeyframeStandMotion::create ); - registerMotion( ANIM_AGENT_STAND_3, LLKeyframeStandMotion::create ); - registerMotion( ANIM_AGENT_STAND_4, LLKeyframeStandMotion::create ); - registerMotion( ANIM_AGENT_STANDUP, LLKeyframeFallMotion::create ); - registerMotion( ANIM_AGENT_TURNLEFT, LLKeyframeWalkMotion::create ); - registerMotion( ANIM_AGENT_TURNRIGHT, LLKeyframeWalkMotion::create ); - registerMotion( ANIM_AGENT_WALK, LLKeyframeWalkMotion::create ); - - // motions without a start/stop bit - registerMotion( ANIM_AGENT_BODY_NOISE, LLBodyNoiseMotion::create ); - registerMotion( ANIM_AGENT_BREATHE_ROT, LLBreatheMotionRot::create ); - registerMotion( ANIM_AGENT_EDITING, LLEditingMotion::create ); - registerMotion( ANIM_AGENT_EYE, LLEyeMotion::create ); - registerMotion( ANIM_AGENT_FEMALE_WALK, LLKeyframeWalkMotion::create ); - registerMotion( ANIM_AGENT_FLY_ADJUST, LLFlyAdjustMotion::create ); - registerMotion( ANIM_AGENT_HAND_MOTION, LLHandMotion::create ); - registerMotion( ANIM_AGENT_HEAD_ROT, LLHeadRotMotion::create ); - registerMotion( ANIM_AGENT_PELVIS_FIX, LLPelvisFixMotion::create ); - registerMotion( ANIM_AGENT_SIT_FEMALE, LLKeyframeMotion::create ); - registerMotion( ANIM_AGENT_TARGET, LLTargetingMotion::create ); - registerMotion( ANIM_AGENT_WALK_ADJUST, LLWalkAdjustMotion::create ); - - } - - if (gNoRender) - { - return; - } - buildCharacter(); - - // preload specific motions here - createMotion( ANIM_AGENT_CUSTOMIZE); - createMotion( ANIM_AGENT_CUSTOMIZE_DONE); - - //VTPause(); // VTune - - mVoiceVisualizer->setVoiceEnabled( gVoiceClient->getVoiceEnabled( mID ) ); mCurrentGesticulationLevel = 0; } @@ -989,46 +741,43 @@ LLVOAvatar::~LLVOAvatar() { lldebugs << "LLVOAvatar Destructor (0x" << this << ") id:" << mID << llendl; - if (mIsSelf) + if (isSelf()) { gAgent.setAvatarObject(NULL); } mRoot.removeAllChildren(); - delete [] mSkeleton; - mSkeleton = NULL; - - delete mScreenp; - mScreenp = NULL; - - delete [] mCollisionVolumes; - mCollisionVolumes = NULL; - + deleteAndClearArray(mSkeleton); + deleteAndClearArray(mCollisionVolumes); mNumJoints = 0; - for (U32 i = 0; i < mBakedTextureData.size(); i++) + for (U32 i = 0; i < mBakedTextureDatas.size(); i++) { - delete mBakedTextureData[i].mTexLayerSet; - mBakedTextureData[i].mTexLayerSet = NULL; + deleteAndClear(mBakedTextureDatas[i].mTexLayerSet); + mBakedTextureDatas[i].mMeshes.clear(); + + for (morph_list_t::iterator iter2 = mBakedTextureDatas[i].mMaskedMorphs.begin(); + iter2 != mBakedTextureDatas[i].mMaskedMorphs.end(); iter2++) + { + LLMaskedMorph* masked_morph = (*iter2); + delete masked_morph; + } } std::for_each(mAttachmentPoints.begin(), mAttachmentPoints.end(), DeletePairedPointer()); mAttachmentPoints.clear(); - delete mTexSkinColor; - mTexSkinColor = NULL; - delete mTexHairColor; - mTexHairColor = NULL; - delete mTexEyeColor; - mTexEyeColor = NULL; + deleteAndClear(mTexSkinColor); + deleteAndClear(mTexHairColor); + deleteAndClear(mTexEyeColor); std::for_each(mMeshes.begin(), mMeshes.end(), DeletePairedPointer()); mMeshes.clear(); for (std::vector<LLViewerJoint*>::iterator jointIter = mMeshLOD.begin(); - jointIter != mMeshLOD.end(); jointIter++) + jointIter != mMeshLOD.end(); jointIter++) { LLViewerJoint* joint = (LLViewerJoint *) *jointIter; std::for_each(joint->mMeshParts.begin(), joint->mMeshParts.end(), DeletePointer()); @@ -1039,9 +788,6 @@ LLVOAvatar::~LLVOAvatar() mDead = TRUE; - // Clean up class data - LLVOAvatar::cullAvatarsByPixelArea(); - mAnimationSources.clear(); lldebugs << "LLVOAvatar Destructor end" << llendl; @@ -1055,10 +801,7 @@ void LLVOAvatar::markDead() mNameText = NULL; sNumVisibleChatBubbles--; } - mVoiceVisualizer->markDead(); - - mBeam = NULL; LLViewerObject::markDead(); } @@ -1068,9 +811,9 @@ BOOL LLVOAvatar::isFullyBaked() if (mIsDummy) return TRUE; if (getNumTEs() == 0) return FALSE; - for (U32 i = 0; i < mBakedTextureData.size(); i++) + for (U32 i = 0; i < mBakedTextureDatas.size(); i++) { - if (!isTextureDefined(mBakedTextureData[i].mTextureIndex) + if (!isTextureDefined(mBakedTextureDatas[i].mTextureIndex) && ( (i != BAKED_SKIRT) || isWearingWearableType(WT_SKIRT) ) ) { return FALSE; @@ -1081,19 +824,21 @@ BOOL LLVOAvatar::isFullyBaked() void LLVOAvatar::deleteLayerSetCaches(bool clearAll) { - for (U32 i = 0; i < mBakedTextureData.size(); i++) + for (U32 i = 0; i < mBakedTextureDatas.size(); i++) { - if (mBakedTextureData[i].mTexLayerSet) + if (mBakedTextureDatas[i].mTexLayerSet) { - if ((i != BAKED_HAIR || mIsSelf) && !clearAll) // Backwards compatibility - can be removed after hair baking is mandatory on the grid + // ! BACKWARDS COMPATIBILITY ! + // Can be removed after hair baking is mandatory on the grid + if ((i != BAKED_HAIR || isSelf()) && !clearAll) { - mBakedTextureData[i].mTexLayerSet->deleteCaches(); + mBakedTextureDatas[i].mTexLayerSet->deleteCaches(); } } - if (mBakedTextureData[i].mMaskTexName) + if (mBakedTextureDatas[i].mMaskTexName) { - glDeleteTextures(1, (GLuint*)&(mBakedTextureData[i].mMaskTexName)); - mBakedTextureData[i].mMaskTexName = 0 ; + glDeleteTextures(1, (GLuint*)&(mBakedTextureDatas[i].mMaskTexName)); + mBakedTextureDatas[i].mMaskTexName = 0 ; } } } @@ -1104,20 +849,14 @@ BOOL LLVOAvatar::areAllNearbyInstancesBaked(S32& grey_avatars) BOOL res = TRUE; grey_avatars = 0; for (std::vector<LLCharacter*>::iterator iter = LLCharacter::sInstances.begin(); - iter != LLCharacter::sInstances.end(); ++iter) + iter != LLCharacter::sInstances.end(); ++iter) { LLVOAvatar* inst = (LLVOAvatar*) *iter; if( inst->isDead() ) { continue; } -// else -// if( inst->getPixelArea() < MIN_PIXEL_AREA_FOR_COMPOSITE ) -// { -// return res; // Assumes sInstances is sorted by pixel area. -// } - else - if( !inst->isFullyBaked() ) + else if( !inst->isFullyBaked() ) { res = FALSE; if (inst->mHasGrey) @@ -1129,19 +868,13 @@ BOOL LLVOAvatar::areAllNearbyInstancesBaked(S32& grey_avatars) return res; } -// static -void LLVOAvatar::dumpScratchTextureByteCount() -{ - llinfos << "Scratch Texture GL: " << (sScratchTexBytes/1024) << "KB" << llendl; -} - // static void LLVOAvatar::dumpBakedStatus() { LLVector3d camera_pos_global = gAgent.getCameraPositionGlobal(); for (std::vector<LLCharacter*>::iterator iter = LLCharacter::sInstances.begin(); - iter != LLCharacter::sInstances.end(); ++iter) + iter != LLCharacter::sInstances.end(); ++iter) { LLVOAvatar* inst = (LLVOAvatar*) *iter; llinfos << "Avatar "; @@ -1193,18 +926,17 @@ void LLVOAvatar::dumpBakedStatus() { llcont << " Unbaked ("; - for (LLVOAvatarDictionary::baked_map_t::const_iterator iter = LLVOAvatarDictionary::getInstance()->getBakedTextures().begin(); + for (LLVOAvatarDictionary::BakedTextures::const_iterator iter = LLVOAvatarDictionary::getInstance()->getBakedTextures().begin(); iter != LLVOAvatarDictionary::getInstance()->getBakedTextures().end(); iter++) { - const LLVOAvatarDictionary::BakedDictionaryEntry *baked_dict = iter->second; + const LLVOAvatarDictionary::BakedEntry *baked_dict = iter->second; const ETextureIndex index = baked_dict->mTextureIndex; if (!inst->isTextureDefined(index)) { llcont << " " << LLVOAvatarDictionary::getInstance()->getTexture(index)->mName; } } - llcont << " ) " << inst->getUnbakedPixelAreaRank(); if( inst->isCulled() ) { @@ -1218,17 +950,15 @@ void LLVOAvatar::dumpBakedStatus() //static void LLVOAvatar::restoreGL() { - for (std::vector<LLCharacter*>::iterator iter = LLCharacter::sInstances.begin(); - iter != LLCharacter::sInstances.end(); ++iter) + LLVOAvatar* self = gAgent.getAvatarObject(); + if (!self) + return; + self->setCompositeUpdatesEnabled(TRUE); + for (U32 i = 0; i < self->mBakedTextureDatas.size(); i++) { - LLVOAvatar* inst = (LLVOAvatar*) *iter; - inst->setCompositeUpdatesEnabled( TRUE ); - for (U32 i = 0; i < inst->mBakedTextureData.size(); i++) - { - inst->invalidateComposite( inst->mBakedTextureData[i].mTexLayerSet, FALSE ); - } - inst->updateMeshTextures(); + self->invalidateComposite(self->mBakedTextureDatas[i].mTexLayerSet, FALSE); } + self->updateMeshTextures(); } //static @@ -1243,7 +973,7 @@ void LLVOAvatar::destroyGL() void LLVOAvatar::resetImpostors() { for (std::vector<LLCharacter*>::iterator iter = LLCharacter::sInstances.begin(); - iter != LLCharacter::sInstances.end(); ++iter) + iter != LLCharacter::sInstances.end(); ++iter) { LLVOAvatar* avatar = (LLVOAvatar*) *iter; avatar->mImpostor.release(); @@ -1257,33 +987,15 @@ void LLVOAvatar::deleteCachedImages(bool clearAll) { lldebugs << "Deleting layer set caches" << llendl; for (std::vector<LLCharacter*>::iterator iter = LLCharacter::sInstances.begin(); - iter != LLCharacter::sInstances.end(); ++iter) + iter != LLCharacter::sInstances.end(); ++iter) { LLVOAvatar* inst = (LLVOAvatar*) *iter; inst->deleteLayerSetCaches(clearAll); } LLTexLayerSet::sHasCaches = FALSE; } - - for( LLGLuint* namep = sScratchTexNames.getFirstData(); - namep; - namep = sScratchTexNames.getNextData() ) - { - LLImageGL::deleteTextures(1, (U32 *)namep ); - stop_glerror(); - } - - if( sScratchTexBytes ) - { - lldebugs << "Clearing Scratch Textures " << (sScratchTexBytes/1024) << "KB" << llendl; - - sScratchTexNames.deleteAllData(); - LLVOAvatar::sScratchTexLastBindTime.deleteAllData(); - LLImageGL::sGlobalTextureMemory -= sScratchTexBytes; - sScratchTexBytes = 0; - } - - gTexStaticImageList.deleteCachedImages(); + LLVOAvatarSelf::deleteScratchTextures(); + LLTexLayerStaticImageList::getInstance()->deleteCachedImages(); } @@ -1385,57 +1097,205 @@ void LLVOAvatar::initClass() { llerrs << "Error parsing skeleton node in avatar XML file: " << skeleton_path << llendl; } - + if (!sAvatarXmlInfo->parseXmlMorphNodes(root)) + { + llerrs << "Error parsing skeleton node in avatar XML file: " << skeleton_path << llendl; + } } void LLVOAvatar::cleanupClass() { - delete sAvatarXmlInfo; - sAvatarXmlInfo = NULL; - delete sAvatarSkeletonInfo; - sAvatarSkeletonInfo = NULL; + deleteAndClear(sAvatarXmlInfo); sSkeletonXMLTree.cleanup(); sXMLTree.cleanup(); } -const LLVector3 LLVOAvatar::getRenderPosition() const -{ - if (mDrawable.isNull() || mDrawable->getGeneration() < 0) - { - return getPositionAgent(); - } - else if (isRoot()) - { - return mDrawable->getPositionAgent(); - } - else - { - return getPosition() * mDrawable->getParent()->getRenderMatrix(); - } -} - -void LLVOAvatar::updateDrawable(BOOL force_damped) -{ - clearChanged(SHIFTED); -} - -void LLVOAvatar::onShift(const LLVector3& shift_vector) -{ - mLastAnimExtents[0] += shift_vector; - mLastAnimExtents[1] += shift_vector; - mNeedsImpostorUpdate = TRUE; - mNeedsAnimUpdate = TRUE; -} - -void LLVOAvatar::updateSpatialExtents(LLVector3& newMin, LLVector3 &newMax) +void LLVOAvatar::initInstance(void) { - if (isImpostor() && !needsImpostorUpdate()) + //------------------------------------------------------------------------- + // initialize joint, mesh and shape members + //------------------------------------------------------------------------- + mRoot.setName( "mRoot" ); + + for (LLVOAvatarDictionary::Meshes::const_iterator iter = LLVOAvatarDictionary::getInstance()->getMeshes().begin(); + iter != LLVOAvatarDictionary::getInstance()->getMeshes().end(); + iter++) { - LLVector3 delta = getRenderPosition() - - ((LLVector3(mDrawable->getPositionGroup())-mImpostorOffset)); + const EMeshIndex mesh_index = iter->first; + const LLVOAvatarDictionary::MeshEntry *mesh_dict = iter->second; + LLViewerJoint* joint = new LLViewerJoint(); + joint->setName(mesh_dict->mName); + joint->setMeshID(mesh_index); + mMeshLOD.push_back(joint); - newMin = mLastAnimExtents[0] + delta; + /* mHairLOD.setName("mHairLOD"); + mHairMesh0.setName("mHairMesh0"); + mHairMesh0.setMeshID(MESH_ID_HAIR); + mHairMesh1.setName("mHairMesh1"); */ + for (U32 lod = 0; lod < mesh_dict->mLOD; lod++) + { + LLViewerJointMesh* mesh = new LLViewerJointMesh(); + std::string mesh_name = "m" + mesh_dict->mName + boost::lexical_cast<std::string>(lod); + // We pre-pended an m - need to capitalize first character for camelCase + mesh_name[1] = toupper(mesh_name[1]); + mesh->setName(mesh_name); + mesh->setMeshID(mesh_index); + mesh->setPickName(mesh_dict->mPickName); + mesh->setIsTransparent(FALSE); + switch((int)mesh_index) + { + case MESH_ID_HAIR: + mesh->setIsTransparent(TRUE); + break; + case MESH_ID_SKIRT: + mesh->setIsTransparent(TRUE); + break; + case MESH_ID_EYEBALL_LEFT: + case MESH_ID_EYEBALL_RIGHT: + mesh->setSpecular( LLColor4( 1.0f, 1.0f, 1.0f, 1.0f ), 1.f ); + break; + } + + joint->mMeshParts.push_back(mesh); + } + } + + //------------------------------------------------------------------------- + // associate baked textures with meshes + //------------------------------------------------------------------------- + for (LLVOAvatarDictionary::Meshes::const_iterator iter = LLVOAvatarDictionary::getInstance()->getMeshes().begin(); + iter != LLVOAvatarDictionary::getInstance()->getMeshes().end(); + iter++) + { + const EMeshIndex mesh_index = iter->first; + const LLVOAvatarDictionary::MeshEntry *mesh_dict = iter->second; + const EBakedTextureIndex baked_texture_index = mesh_dict->mBakedID; + // Skip it if there's no associated baked texture. + if (baked_texture_index == BAKED_NUM_INDICES) continue; + + for (std::vector<LLViewerJointMesh* >::iterator iter = mMeshLOD[mesh_index]->mMeshParts.begin(); + iter != mMeshLOD[mesh_index]->mMeshParts.end(); iter++) + { + LLViewerJointMesh* mesh = (LLViewerJointMesh*) *iter; + mBakedTextureDatas[(int)baked_texture_index].mMeshes.push_back(mesh); + } + } + + + //------------------------------------------------------------------------- + // register motions + //------------------------------------------------------------------------- + if (LLCharacter::sInstances.size() == 1) + { + LLKeyframeMotion::setVFS(gStaticVFS); + registerMotion( ANIM_AGENT_BUSY, LLNullMotion::create ); + registerMotion( ANIM_AGENT_CROUCH, LLKeyframeStandMotion::create ); + registerMotion( ANIM_AGENT_CROUCHWALK, LLKeyframeWalkMotion::create ); + registerMotion( ANIM_AGENT_EXPRESS_AFRAID, LLEmote::create ); + registerMotion( ANIM_AGENT_EXPRESS_ANGER, LLEmote::create ); + registerMotion( ANIM_AGENT_EXPRESS_BORED, LLEmote::create ); + registerMotion( ANIM_AGENT_EXPRESS_CRY, LLEmote::create ); + registerMotion( ANIM_AGENT_EXPRESS_DISDAIN, LLEmote::create ); + registerMotion( ANIM_AGENT_EXPRESS_EMBARRASSED, LLEmote::create ); + registerMotion( ANIM_AGENT_EXPRESS_FROWN, LLEmote::create ); + registerMotion( ANIM_AGENT_EXPRESS_KISS, LLEmote::create ); + registerMotion( ANIM_AGENT_EXPRESS_LAUGH, LLEmote::create ); + registerMotion( ANIM_AGENT_EXPRESS_OPEN_MOUTH, LLEmote::create ); + registerMotion( ANIM_AGENT_EXPRESS_REPULSED, LLEmote::create ); + registerMotion( ANIM_AGENT_EXPRESS_SAD, LLEmote::create ); + registerMotion( ANIM_AGENT_EXPRESS_SHRUG, LLEmote::create ); + registerMotion( ANIM_AGENT_EXPRESS_SMILE, LLEmote::create ); + registerMotion( ANIM_AGENT_EXPRESS_SURPRISE, LLEmote::create ); + registerMotion( ANIM_AGENT_EXPRESS_TONGUE_OUT, LLEmote::create ); + registerMotion( ANIM_AGENT_EXPRESS_TOOTHSMILE, LLEmote::create ); + registerMotion( ANIM_AGENT_EXPRESS_WINK, LLEmote::create ); + registerMotion( ANIM_AGENT_EXPRESS_WORRY, LLEmote::create ); + registerMotion( ANIM_AGENT_RUN, LLKeyframeWalkMotion::create ); + registerMotion( ANIM_AGENT_STAND, LLKeyframeStandMotion::create ); + registerMotion( ANIM_AGENT_STAND_1, LLKeyframeStandMotion::create ); + registerMotion( ANIM_AGENT_STAND_2, LLKeyframeStandMotion::create ); + registerMotion( ANIM_AGENT_STAND_3, LLKeyframeStandMotion::create ); + registerMotion( ANIM_AGENT_STAND_4, LLKeyframeStandMotion::create ); + registerMotion( ANIM_AGENT_STANDUP, LLKeyframeFallMotion::create ); + registerMotion( ANIM_AGENT_TURNLEFT, LLKeyframeWalkMotion::create ); + registerMotion( ANIM_AGENT_TURNRIGHT, LLKeyframeWalkMotion::create ); + registerMotion( ANIM_AGENT_WALK, LLKeyframeWalkMotion::create ); + + // motions without a start/stop bit + registerMotion( ANIM_AGENT_BODY_NOISE, LLBodyNoiseMotion::create ); + registerMotion( ANIM_AGENT_BREATHE_ROT, LLBreatheMotionRot::create ); + registerMotion( ANIM_AGENT_EDITING, LLEditingMotion::create ); + registerMotion( ANIM_AGENT_EYE, LLEyeMotion::create ); + registerMotion( ANIM_AGENT_FEMALE_WALK, LLKeyframeWalkMotion::create ); + registerMotion( ANIM_AGENT_FLY_ADJUST, LLFlyAdjustMotion::create ); + registerMotion( ANIM_AGENT_HAND_MOTION, LLHandMotion::create ); + registerMotion( ANIM_AGENT_HEAD_ROT, LLHeadRotMotion::create ); + registerMotion( ANIM_AGENT_PELVIS_FIX, LLPelvisFixMotion::create ); + registerMotion( ANIM_AGENT_SIT_FEMALE, LLKeyframeMotion::create ); + registerMotion( ANIM_AGENT_TARGET, LLTargetingMotion::create ); + registerMotion( ANIM_AGENT_WALK_ADJUST, LLWalkAdjustMotion::create ); + + } + + if (gNoRender) + { + return; + } + + buildCharacter(); + + if (gNoRender) + { + return; + } + + // preload specific motions here + createMotion( ANIM_AGENT_CUSTOMIZE); + createMotion( ANIM_AGENT_CUSTOMIZE_DONE); + + //VTPause(); // VTune + + mVoiceVisualizer->setVoiceEnabled( gVoiceClient->getVoiceEnabled( mID ) ); +} + +const LLVector3 LLVOAvatar::getRenderPosition() const +{ + if (mDrawable.isNull() || mDrawable->getGeneration() < 0) + { + return getPositionAgent(); + } + else if (isRoot()) + { + return mDrawable->getPositionAgent(); + } + else + { + return getPosition() * mDrawable->getParent()->getRenderMatrix(); + } +} + +void LLVOAvatar::updateDrawable(BOOL force_damped) +{ + clearChanged(SHIFTED); +} + +void LLVOAvatar::onShift(const LLVector3& shift_vector) +{ + mLastAnimExtents[0] += shift_vector; + mLastAnimExtents[1] += shift_vector; + mNeedsImpostorUpdate = TRUE; + mNeedsAnimUpdate = TRUE; +} + +void LLVOAvatar::updateSpatialExtents(LLVector3& newMin, LLVector3 &newMax) +{ + if (isImpostor() && !needsImpostorUpdate()) + { + LLVector3 delta = getRenderPosition() - + ((LLVector3(mDrawable->getPositionGroup())-mImpostorOffset)); + + newMin = mLastAnimExtents[0] + delta; newMax = mLastAnimExtents[1] + delta; } else @@ -1455,6 +1315,7 @@ void LLVOAvatar::getSpatialExtents(LLVector3& newMin, LLVector3& newMax) LLVector3 pos = getRenderPosition(); newMin = pos - buffer; newMax = pos + buffer; + float max_attachment_span = DEFAULT_MAX_PRIM_SCALE * 5.0f; //stretch bounding box by joint positions for (polymesh_map_t::iterator i = mMeshes.begin(); i != mMeshes.end(); ++i) @@ -1463,7 +1324,7 @@ void LLVOAvatar::getSpatialExtents(LLVector3& newMin, LLVector3& newMax) for (S32 joint_num = 0; joint_num < mesh->mJointRenderData.count(); joint_num++) { update_min_max(newMin, newMax, - mesh->mJointRenderData[joint_num]->mWorldMatrix->getTranslation()); + mesh->mJointRenderData[joint_num]->mWorldMatrix->getTranslation()); } } @@ -1471,8 +1332,8 @@ void LLVOAvatar::getSpatialExtents(LLVector3& newMin, LLVector3& newMax) //stretch bounding box by attachments for (attachment_map_t::iterator iter = mAttachmentPoints.begin(); - iter != mAttachmentPoints.end(); - ++iter) + iter != mAttachmentPoints.end(); + ++iter) { LLViewerJointAttachment* attachment = iter->second; @@ -1491,8 +1352,18 @@ void LLVOAvatar::getSpatialExtents(LLVector3& newMin, LLVector3& newMax) if (bridge) { const LLVector3* ext = bridge->getSpatialExtents(); - update_min_max(newMin,newMax,ext[0]); - update_min_max(newMin,newMax,ext[1]); + LLVector3 distance = (ext[1] - ext[0]); + + // Only add the prim to spatial extents calculations if it isn't a megaprim. + // max_attachment_span calculated at the start of the function + // (currently 5 times our max prim size) + if (distance.mV[0] < max_attachment_span + && distance.mV[1] < max_attachment_span + && distance.mV[2] < max_attachment_span) + { + update_min_max(newMin,newMax,ext[0]); + update_min_max(newMin,newMax,ext[1]); + } } } } @@ -1527,11 +1398,9 @@ BOOL LLVOAvatar::lineSegmentIntersect(const LLVector3& start, const LLVector3& e LLVector3* intersection, LLVector2* tex_coord, LLVector3* normal, - LLVector3* bi_normal - ) + LLVector3* bi_normal) { - - if (mIsSelf && !gAgent.needsRenderAvatar() || !LLPipeline::sPickAvatar) + if (isSelf() && !gAgent.needsRenderAvatar() || !LLPipeline::sPickAvatar) { return FALSE; } @@ -1660,7 +1529,6 @@ BOOL LLVOAvatar::setupBone(const LLVOAvatarBoneInfo* info, LLViewerJoint* parent return FALSE; } joint = (LLViewerJoint*)(&mCollisionVolumes[volume_num]); - joint->setName( info->mName ); } @@ -1671,10 +1539,8 @@ BOOL LLVOAvatar::setupBone(const LLVOAvatarBoneInfo* info, LLViewerJoint* parent } joint->setPosition(info->mPos); - joint->setRotation(mayaQ(info->mRot.mV[VX], info->mRot.mV[VY], info->mRot.mV[VZ], LLQuaternion::XYZ)); - joint->setScale(info->mScale); @@ -1743,18 +1609,6 @@ BOOL LLVOAvatar::buildSkeleton(const LLVOAvatarSkeletonInfo *info) } } - // add special-purpose "screen" joint - if (mIsSelf) - { - mScreenp = new LLViewerJoint("mScreen", NULL); - // for now, put screen at origin, as it is only used during special - // HUD rendering mode - F32 aspect = LLViewerCamera::getInstance()->getAspect(); - LLVector3 scale(1.f, aspect, 1.f); - mScreenp->setScale(scale); - mScreenp->setWorldPosition(LLVector3::zero); - } - return TRUE; } @@ -1803,11 +1657,11 @@ void LLVOAvatar::buildCharacter() // clear mesh data //------------------------------------------------------------------------- for (std::vector<LLViewerJoint*>::iterator jointIter = mMeshLOD.begin(); - jointIter != mMeshLOD.end(); jointIter++) + jointIter != mMeshLOD.end(); jointIter++) { LLViewerJoint* joint = (LLViewerJoint*) *jointIter; for (std::vector<LLViewerJointMesh*>::iterator meshIter = joint->mMeshParts.begin(); - meshIter != joint->mMeshParts.end(); meshIter++) + meshIter != joint->mMeshParts.end(); meshIter++) { LLViewerJointMesh * mesh = (LLViewerJointMesh *) *meshIter; mesh->setMesh(NULL); @@ -1831,9 +1685,9 @@ void LLVOAvatar::buildCharacter() // gPrintMessagesThisFrame = TRUE; lldebugs << "Avatar load took " << timer.getElapsedTimeF32() << " seconds." << llendl; - if ( ! status ) + if (!status) { - if ( mIsSelf ) + if (isSelf()) { llerrs << "Unable to load user's avatar" << llendl; } @@ -1870,23 +1724,23 @@ void LLVOAvatar::buildCharacter() // Make sure "well known" pointers exist //------------------------------------------------------------------------- if (!(mPelvisp && - mTorsop && - mChestp && - mNeckp && - mHeadp && - mSkullp && - mHipLeftp && - mHipRightp && - mKneeLeftp && - mKneeRightp && - mAnkleLeftp && - mAnkleRightp && - mFootLeftp && - mFootRightp && - mWristLeftp && - mWristRightp && - mEyeLeftp && - mEyeRightp)) + mTorsop && + mChestp && + mNeckp && + mHeadp && + mSkullp && + mHipLeftp && + mHipRightp && + mKneeLeftp && + mKneeRightp && + mAnkleLeftp && + mAnkleRightp && + mFootLeftp && + mFootRightp && + mWristLeftp && + mWristRightp && + mEyeLeftp && + mEyeRightp)) { llerrs << "Failed to create avatar." << llendl; return; @@ -1932,414 +1786,97 @@ void LLVOAvatar::buildCharacter() mIsBuilt = TRUE; stop_glerror(); - //------------------------------------------------------------------------- - // build the attach and detach menus - //------------------------------------------------------------------------- - if (mIsSelf) - { - gAttachBodyPartPieMenus[0] = NULL; + mMeshValid = TRUE; +} - LLContextMenu::Params params; - params.label(LLTrans::getString("BodyPartsRightArm") + " >"); - params.name(params.label); - params.visible(false); - gAttachBodyPartPieMenus[1] = LLUICtrlFactory::create<LLContextMenu> (params); - params.label(LLTrans::getString("BodyPartsHead") + " >"); - params.name(params.label); - gAttachBodyPartPieMenus[2] = LLUICtrlFactory::create<LLContextMenu> (params); +//----------------------------------------------------------------------------- +// releaseMeshData() +//----------------------------------------------------------------------------- +void LLVOAvatar::releaseMeshData() +{ + LLMemType mt(LLMemType::MTYPE_AVATAR); + + if (sInstances.size() < AVATAR_RELEASE_THRESHOLD || mIsDummy) + { + return; + } - params.label(LLTrans::getString("BodyPartsLeftArm") + " >"); - params.name(params.label); - gAttachBodyPartPieMenus[3] = LLUICtrlFactory::create<LLContextMenu> (params); + //llinfos << "Releasing" << llendl; - gAttachBodyPartPieMenus[4] = NULL; + // cleanup mesh data + for (std::vector<LLViewerJoint*>::iterator iter = mMeshLOD.begin(); + iter != mMeshLOD.end(); iter++) + { + LLViewerJoint* joint = (LLViewerJoint*) *iter; + joint->setValid(FALSE, TRUE); + } - params.label(LLTrans::getString("BodyPartsLeftLeg") + " >"); - params.name(params.label); - gAttachBodyPartPieMenus[5] = LLUICtrlFactory::create<LLContextMenu> (params); + //cleanup data + if (mDrawable.notNull()) + { + LLFace* facep = mDrawable->getFace(0); + facep->setSize(0, 0); + for(S32 i = mNumInitFaces ; i < mDrawable->getNumFaces(); i++) + { + facep = mDrawable->getFace(i); + facep->setSize(0, 0); + } + } + + for (attachment_map_t::iterator iter = mAttachmentPoints.begin(); + iter != mAttachmentPoints.end(); ) + { + attachment_map_t::iterator curiter = iter++; + LLViewerJointAttachment* attachment = curiter->second; + if (!attachment->getIsHUDAttachment()) + { + attachment->setAttachmentVisibility(FALSE); + } + } + mMeshValid = FALSE; +} - params.label(LLTrans::getString("BodyPartsTorso") + " >"); - params.name(params.label); - gAttachBodyPartPieMenus[6] = LLUICtrlFactory::create<LLContextMenu> (params); +//----------------------------------------------------------------------------- +// restoreMeshData() +//----------------------------------------------------------------------------- +// virtual +void LLVOAvatar::restoreMeshData() +{ + llassert(!isSelf()); + LLMemType mt(LLMemType::MTYPE_AVATAR); + + //llinfos << "Restoring" << llendl; + mMeshValid = TRUE; + updateJointLODs(); - params.label(LLTrans::getString("BodyPartsRightLeg") + " >"); - params.name(params.label); - gAttachBodyPartPieMenus[7] = LLUICtrlFactory::create<LLContextMenu> (params); + for (attachment_map_t::iterator iter = mAttachmentPoints.begin(); + iter != mAttachmentPoints.end(); ) + { + attachment_map_t::iterator curiter = iter++; + LLViewerJointAttachment* attachment = curiter->second; + if (!attachment->getIsHUDAttachment()) + { + attachment->setAttachmentVisibility(TRUE); + } + } - gDetachBodyPartPieMenus[0] = NULL; + // force mesh update as LOD might not have changed to trigger this + gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_GEOMETRY, TRUE); +} - params.label(LLTrans::getString("BodyPartsRightArm") + " >"); - params.name(params.label); - gDetachBodyPartPieMenus[1] = LLUICtrlFactory::create<LLContextMenu> (params); +//----------------------------------------------------------------------------- +// updateMeshData() +//----------------------------------------------------------------------------- +void LLVOAvatar::updateMeshData() +{ + if (mDrawable.notNull()) + { + stop_glerror(); - params.label(LLTrans::getString("BodyPartsHead") + " >"); - params.name(params.label); - gDetachBodyPartPieMenus[2] = LLUICtrlFactory::create<LLContextMenu> (params); - - params.label(LLTrans::getString("BodyPartsLeftArm") + " >"); - params.name(params.label); - gDetachBodyPartPieMenus[3] = LLUICtrlFactory::create<LLContextMenu> (params); - - gDetachBodyPartPieMenus[4] = NULL; - - params.label(LLTrans::getString("BodyPartsLeftLeg") + " >"); - params.name(params.label); - gDetachBodyPartPieMenus[5] = LLUICtrlFactory::create<LLContextMenu> (params); - - params.label(LLTrans::getString("BodyPartsTorso") + " >"); - params.name(params.label); - gDetachBodyPartPieMenus[6] = LLUICtrlFactory::create<LLContextMenu> (params); - - params.label(LLTrans::getString("BodyPartsRightLeg") + " >"); - params.name(params.label); - gDetachBodyPartPieMenus[7] = LLUICtrlFactory::create<LLContextMenu> (params); - - for (S32 i = 0; i < 8; i++) - { - if (gAttachBodyPartPieMenus[i]) - { - gAttachPieMenu->appendContextSubMenu( gAttachBodyPartPieMenus[i] ); - } - else - { - BOOL attachment_found = FALSE; - for (attachment_map_t::iterator iter = mAttachmentPoints.begin(); - iter != mAttachmentPoints.end(); ) - { - attachment_map_t::iterator curiter = iter++; - LLViewerJointAttachment* attachment = curiter->second; - if (attachment->getGroup() == i) - { - LLMenuItemCallGL::Params item_params; - - std::string sub_piemenu_name = attachment->getName(); - if (LLTrans::getString(sub_piemenu_name) != "") - { - item_params.label = LLTrans::getString(sub_piemenu_name); - } - else - { - item_params.label = sub_piemenu_name; - } - item_params.name =(item_params.label ); - item_params.on_click.function_name = "Object.AttachToAvatar"; - item_params.on_click.parameter = curiter->first; - item_params.on_enable.function_name = "Object.EnableWear"; - item_params.on_enable.parameter = curiter->first; - LLMenuItemCallGL* item = LLUICtrlFactory::create<LLMenuItemCallGL>(item_params); - - gAttachPieMenu->addChild(item); - - attachment_found = TRUE; - break; - - } - } - - if (!attachment_found) - { - gAttachPieMenu->addSeparator(); - } - } - - if (gDetachBodyPartPieMenus[i]) - { - gDetachPieMenu->appendContextSubMenu( gDetachBodyPartPieMenus[i] ); - } - else - { - BOOL attachment_found = FALSE; - for (attachment_map_t::iterator iter = mAttachmentPoints.begin(); - iter != mAttachmentPoints.end(); ) - { - attachment_map_t::iterator curiter = iter++; - LLViewerJointAttachment* attachment = curiter->second; - if (attachment->getGroup() == i) - { - LLMenuItemCallGL::Params item_params; - std::string sub_piemenu_name = attachment->getName(); - if (LLTrans::getString(sub_piemenu_name) != "") - { - item_params.label = LLTrans::getString(sub_piemenu_name); - } - else - { - item_params.label = sub_piemenu_name; - } - item_params.name =(item_params.label ); - item_params.on_click.function_name = "Attachment.Detach"; - item_params.on_click.parameter = curiter->first; - item_params.on_enable.function_name = "Attachment.EnableDetach"; - item_params.on_enable.parameter = curiter->first; - LLMenuItemCallGL* item = LLUICtrlFactory::create<LLMenuItemCallGL>(item_params); - - gDetachPieMenu->addChild(item); - - attachment_found = TRUE; - break; - } - } - - if (!attachment_found) - { - gDetachPieMenu->addSeparator(); - } - } - } - - // add screen attachments - for (attachment_map_t::iterator iter = mAttachmentPoints.begin(); - iter != mAttachmentPoints.end(); ) - { - attachment_map_t::iterator curiter = iter++; - LLViewerJointAttachment* attachment = curiter->second; - if (attachment->getGroup() == 8) - { - LLMenuItemCallGL::Params item_params; - std::string sub_piemenu_name = attachment->getName(); - if (LLTrans::getString(sub_piemenu_name) != "") - { - item_params.label = LLTrans::getString(sub_piemenu_name); - } - else - { - item_params.label = sub_piemenu_name; - } - item_params.name =(item_params.label ); - item_params.on_click.function_name = "Object.AttachToAvatar"; - item_params.on_click.parameter = curiter->first; - item_params.on_enable.function_name = "Object.EnableWear"; - item_params.on_enable.parameter = curiter->first; - LLMenuItemCallGL* item = LLUICtrlFactory::create<LLMenuItemCallGL>(item_params); - gAttachScreenPieMenu->addChild(item); - - item_params.on_click.function_name = "Attachment.DetachFromPoint"; - item_params.on_click.parameter = curiter->first; - item_params.on_enable.function_name = "Attachment.PointFilled"; - item_params.on_enable.parameter = curiter->first; - item = LLUICtrlFactory::create<LLMenuItemCallGL>(item_params); - gDetachScreenPieMenu->addChild(item); - } - } - - for (S32 pass = 0; pass < 2; pass++) - { - // *TODO: Skinning - gAttachSubMenu is an awful, awful hack - if (!gAttachSubMenu) - { - break; - } - for (attachment_map_t::iterator iter = mAttachmentPoints.begin(); - iter != mAttachmentPoints.end(); ) - { - attachment_map_t::iterator curiter = iter++; - LLViewerJointAttachment* attachment = curiter->second; - if (attachment->getIsHUDAttachment() != (pass == 1)) - { - continue; - } - LLMenuItemCallGL::Params item_params; - std::string sub_piemenu_name = attachment->getName(); - if (LLTrans::getString(sub_piemenu_name) != "") - { - item_params.label = LLTrans::getString(sub_piemenu_name); - } - else - { - item_params.label = sub_piemenu_name; - } - item_params.name =(item_params.label ); - item_params.on_click.function_name = "Object.AttachToAvatar"; - item_params.on_click.parameter = curiter->first; - item_params.on_enable.function_name = "Object.EnableWear"; - item_params.on_enable.parameter = curiter->first; - //* TODO: Skinning: - //LLSD params; - //params["index"] = curiter->first; - //params["label"] = attachment->getName(); - //item->addEventHandler("on_enable", LLMenuItemCallGL::MenuCallback().function_name("Attachment.Label").parameter(params)); - - LLMenuItemCallGL* item = LLUICtrlFactory::create<LLMenuItemCallGL>(item_params); - gAttachSubMenu->addChild(item); - - item_params.on_click.function_name = "Attachment.DetachFromPoint"; - item_params.on_click.parameter = curiter->first; - item_params.on_enable.function_name = "Attachment.PointFilled"; - item_params.on_enable.parameter = curiter->first; - //* TODO: Skinning: item->addEventHandler("on_enable", LLMenuItemCallGL::MenuCallback().function_name("Attachment.Label").parameter(params)); - - item = LLUICtrlFactory::create<LLMenuItemCallGL>(item_params); - gDetachSubMenu->addChild(item); - } - if (pass == 0) - { - // put separator between non-hud and hud attachments - gAttachSubMenu->addSeparator(); - gDetachSubMenu->addSeparator(); - } - } - - for (S32 group = 0; group < 8; group++) - { - // skip over groups that don't have sub menus - if (!gAttachBodyPartPieMenus[group] || !gDetachBodyPartPieMenus[group]) - { - continue; - } - - std::multimap<S32, S32> attachment_pie_menu_map; - - // gather up all attachment points assigned to this group, and throw into map sorted by pie slice number - for (attachment_map_t::iterator iter = mAttachmentPoints.begin(); - iter != mAttachmentPoints.end(); ) - { - attachment_map_t::iterator curiter = iter++; - LLViewerJointAttachment* attachment = curiter->second; - if(attachment->getGroup() == group) - { - // use multimap to provide a partial order off of the pie slice key - S32 pie_index = attachment->getPieSlice(); - attachment_pie_menu_map.insert(std::make_pair(pie_index, curiter->first)); - } - } - - // add in requested order to pie menu, inserting separators as necessary - S32 cur_pie_slice = 0; - for (std::multimap<S32, S32>::iterator attach_it = attachment_pie_menu_map.begin(); - attach_it != attachment_pie_menu_map.end(); ++attach_it) - { - S32 requested_pie_slice = attach_it->first; - S32 attach_index = attach_it->second; - while (cur_pie_slice < requested_pie_slice) - { - gAttachBodyPartPieMenus[group]->addSeparator(); - gDetachBodyPartPieMenus[group]->addSeparator(); - cur_pie_slice++; - } - - LLViewerJointAttachment* attachment = get_if_there(mAttachmentPoints, attach_index, (LLViewerJointAttachment*)NULL); - if (attachment) - { - LLMenuItemCallGL::Params item_params; - item_params.name = attachment->getName(); - item_params.label = attachment->getName(); - item_params.on_click.function_name = "Object.AttachToAvatar"; - item_params.on_click.parameter = attach_index; - item_params.on_enable.function_name = "Object.EnableWear"; - item_params.on_enable.parameter = attach_index; - - LLMenuItemCallGL* item = LLUICtrlFactory::create<LLMenuItemCallGL>(item_params); - gAttachBodyPartPieMenus[group]->addChild(item); - - item_params.on_click.function_name = "Attachment.DetachFromPoint"; - item_params.on_click.parameter = attach_index; - item_params.on_enable.function_name = "Attachment.PointFilled"; - item_params.on_enable.parameter = attach_index; - item = LLUICtrlFactory::create<LLMenuItemCallGL>(item_params); - gDetachBodyPartPieMenus[group]->addChild(item); - cur_pie_slice++; - } - } - } - } - - mMeshValid = TRUE; -} - - -//----------------------------------------------------------------------------- -// releaseMeshData() -//----------------------------------------------------------------------------- -void LLVOAvatar::releaseMeshData() -{ - LLMemType mt(LLMemType::MTYPE_AVATAR); - - if (sInstances.size() < AVATAR_RELEASE_THRESHOLD || mIsDummy) - { - return; - } - - //llinfos << "Releasing" << llendl; - - // cleanup mesh data - for (std::vector<LLViewerJoint*>::iterator iter = mMeshLOD.begin(); - iter != mMeshLOD.end(); iter++) - { - LLViewerJoint* joint = (LLViewerJoint*) *iter; - joint->setValid(FALSE, TRUE); - } - - //cleanup data - if (mDrawable.notNull()) - { - LLFace* facep = mDrawable->getFace(0); - facep->setSize(0, 0); - for(S32 i = mNumInitFaces ; i < mDrawable->getNumFaces(); i++) - { - facep = mDrawable->getFace(i); - facep->setSize(0, 0); - } - } - - for (attachment_map_t::iterator iter = mAttachmentPoints.begin(); - iter != mAttachmentPoints.end(); ) - { - attachment_map_t::iterator curiter = iter++; - LLViewerJointAttachment* attachment = curiter->second; - if (!attachment->getIsHUDAttachment()) - { - attachment->setAttachmentVisibility(FALSE); - } - } - mMeshValid = FALSE; -} - -//----------------------------------------------------------------------------- -// restoreMeshData() -//----------------------------------------------------------------------------- -void LLVOAvatar::restoreMeshData() -{ - LLMemType mt(LLMemType::MTYPE_AVATAR); - - //llinfos << "Restoring" << llendl; - mMeshValid = TRUE; - updateJointLODs(); - - if (mIsSelf) - { - updateAttachmentVisibility(gAgent.getCameraMode()); - } - else - { - for (attachment_map_t::iterator iter = mAttachmentPoints.begin(); - iter != mAttachmentPoints.end(); ) - { - attachment_map_t::iterator curiter = iter++; - LLViewerJointAttachment* attachment = curiter->second; - if (!attachment->getIsHUDAttachment()) - { - attachment->setAttachmentVisibility(TRUE); - } - } - } - - // force mesh update as LOD might not have changed to trigger this - gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_GEOMETRY, TRUE); -} - -//----------------------------------------------------------------------------- -// updateMeshData() -//----------------------------------------------------------------------------- -void LLVOAvatar::updateMeshData() -{ - if (mDrawable.notNull()) - { - stop_glerror(); - - S32 f_num = 0 ; - const U32 VERTEX_NUMBER_THRESHOLD = 128 ;//small number of this means each part of an avatar has its own vertex buffer. - const S32 num_parts = mMeshLOD.size(); + S32 f_num = 0 ; + const U32 VERTEX_NUMBER_THRESHOLD = 128 ;//small number of this means each part of an avatar has its own vertex buffer. + const S32 num_parts = mMeshLOD.size(); // this order is determined by number of LODS // if a mesh earlier in this list changed LODs while a later mesh doesn't, @@ -2506,9 +2043,9 @@ void LLVOAvatar::computeBodySize() // LLVOAvatar::processUpdateMessage() //------------------------------------------------------------------------ U32 LLVOAvatar::processUpdateMessage(LLMessageSystem *mesgsys, - void **user_data, - U32 block_num, const EObjectUpdateType update_type, - LLDataPacker *dp) + void **user_data, + U32 block_num, const EObjectUpdateType update_type, + LLDataPacker *dp) { LLMemType mt(LLMemType::MTYPE_AVATAR); @@ -2547,9 +2084,6 @@ S32 LLVOAvatar::setTETexture(const U8 te, const LLUUID& uuid) } } - -// setTEImage - //------------------------------------------------------------------------ // idleUpdate() //------------------------------------------------------------------------ @@ -2604,7 +2138,7 @@ BOOL LLVOAvatar::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time) // set alpha flag depending on state //-------------------------------------------------------------------- - if (mIsSelf) + if (isSelf()) { LLViewerObject::idleUpdate(agent, world, time); @@ -2628,8 +2162,8 @@ BOOL LLVOAvatar::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time) // animate the character // store off last frame's root position to be consistent with camera position LLVector3 root_pos_last = mRoot.getWorldPosition(); - bool detailed_update = updateCharacter(agent); - bool voice_enabled = gVoiceClient->getVoiceEnabled( mID ) && gVoiceClient->inProximalChannel(); + BOOL detailed_update = updateCharacter(agent); + BOOL voice_enabled = gVoiceClient->getVoiceEnabled( mID ) && gVoiceClient->inProximalChannel(); if (gNoRender) { @@ -2652,13 +2186,13 @@ BOOL LLVOAvatar::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time) void LLVOAvatar::idleUpdateVoiceVisualizer(bool voice_enabled) { // disable voice visualizer when in mouselook - mVoiceVisualizer->setVoiceEnabled( voice_enabled && !(mIsSelf && gAgent.cameraMouselook()) ); + mVoiceVisualizer->setVoiceEnabled( voice_enabled && !(isSelf() && gAgent.cameraMouselook()) ); if ( voice_enabled ) { //---------------------------------------------------------------- // Only do gesture triggering for your own avatar, and only when you're in a proximal channel. //---------------------------------------------------------------- - if( mIsSelf ) + if( isSelf() ) { //---------------------------------------------------------------------------------------- // The following takes the voice signal and uses that to trigger gesticulations. @@ -2684,7 +2218,7 @@ void LLVOAvatar::idleUpdateVoiceVisualizer(bool voice_enabled) } } - } //if( mIsSelf ) + } //if( isSelf() ) //----------------------------------------------------------------------------------------------------------------- // If the avatar is speaking, then the voice amplitude signal is passed to the voice visualizer. @@ -2693,9 +2227,9 @@ void LLVOAvatar::idleUpdateVoiceVisualizer(bool voice_enabled) // Notice the calls to "gAwayTimer.reset()". This resets the timer that determines how long the avatar has been // "away", so that the avatar doesn't lapse into away-mode (and slump over) while the user is still talking. //----------------------------------------------------------------------------------------------------------------- - if ( gVoiceClient->getIsSpeaking( mID ) ) + if (gVoiceClient->getIsSpeaking( mID )) { - if ( ! mVoiceVisualizer->getCurrentlySpeaking() ) + if (!mVoiceVisualizer->getCurrentlySpeaking()) { mVoiceVisualizer->setStartSpeaking(); @@ -2704,7 +2238,7 @@ void LLVOAvatar::idleUpdateVoiceVisualizer(bool voice_enabled) mVoiceVisualizer->setSpeakingAmplitude( gVoiceClient->getCurrentPower( mID ) ); - if( mIsSelf ) + if( isSelf() ) { gAgent.clearAFK(); } @@ -2767,8 +2301,8 @@ void LLVOAvatar::idleUpdateMisc(bool detailed_update) LLViewerObject *attached_object = attachment->getObject(); BOOL visibleAttachment = visible || (attached_object && - !(attached_object->mDrawable->getSpatialBridge() && - attached_object->mDrawable->getSpatialBridge()->getRadius() < 2.0)); + !(attached_object->mDrawable->getSpatialBridge() && + attached_object->mDrawable->getSpatialBridge()->getRadius() < 2.0)); if (visibleAttachment && attached_object && !attached_object->isDead() && attachment->getValid()) { @@ -2864,7 +2398,7 @@ void LLVOAvatar::idleUpdateAppearanceAnimation() } } updateVisualParams(); - if (mIsSelf) + if (isSelf()) { gAgent.sendAgentSetAppearance(); } @@ -3060,16 +2594,16 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last) BOOL visible_avatar = isVisible() || mNeedsAnimUpdate; BOOL visible_chat = gSavedSettings.getBOOL("UseChatBubbles") && (mChats.size() || mTyping); BOOL render_name = visible_chat || - (visible_avatar && - ((sRenderName == RENDER_NAME_ALWAYS) || - (sRenderName == RENDER_NAME_FADE && time_visible < NAME_SHOW_TIME))); + (visible_avatar && + ((sRenderName == RENDER_NAME_ALWAYS) || + (sRenderName == RENDER_NAME_FADE && time_visible < NAME_SHOW_TIME))); // If it's your own avatar, don't draw in mouselook, and don't // draw if we're specifically hiding our own name. - if (mIsSelf) + if (isSelf()) { render_name = render_name - && !gAgent.cameraMouselook() - && (visible_chat || !gSavedSettings.getBOOL("RenderNameHideSelf")); + && !gAgent.cameraMouselook() + && (visible_chat || !gSavedSettings.getBOOL("RenderNameHideSelf")); } if ( render_name ) @@ -3169,7 +2703,7 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last) BOOL is_busy = mSignaledAnimations.find(ANIM_AGENT_BUSY) != mSignaledAnimations.end(); BOOL is_appearance = mSignaledAnimations.find(ANIM_AGENT_CUSTOMIZE) != mSignaledAnimations.end(); BOOL is_muted; - if (mIsSelf) + if (isSelf()) { is_muted = FALSE; } @@ -3282,15 +2816,15 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last) LLFontGL::StyleFlags style; switch(chat_iter->mChatType) { - case CHAT_TYPE_WHISPER: - style = LLFontGL::ITALIC; - break; - case CHAT_TYPE_SHOUT: - style = LLFontGL::BOLD; - break; - default: - style = LLFontGL::NORMAL; - break; + case CHAT_TYPE_WHISPER: + style = LLFontGL::ITALIC; + break; + case CHAT_TYPE_SHOUT: + style = LLFontGL::BOLD; + break; + default: + style = LLFontGL::NORMAL; + break; } if (chat_fade_amt < 1.f) { @@ -3315,15 +2849,15 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last) S32 dot_count = (llfloor(mTypingTimer.getElapsedTimeF32() * 3.f) + 2) % 3 + 1; switch(dot_count) { - case 1: - mNameText->addLine(".", new_chat); - break; - case 2: - mNameText->addLine("..", new_chat); - break; - case 3: - mNameText->addLine("...", new_chat); - break; + case 1: + mNameText->addLine(".", new_chat); + break; + case 2: + mNameText->addLine("..", new_chat); + break; + case 3: + mNameText->addLine("...", new_chat); + break; } } @@ -3357,75 +2891,12 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last) } } +//-------------------------------------------------------------------- +// draw tractor beam when editing objects +//-------------------------------------------------------------------- +// virtual void LLVOAvatar::idleUpdateTractorBeam() { - //-------------------------------------------------------------------- - // draw tractor beam when editing objects - //-------------------------------------------------------------------- - if (!mIsSelf) - { - return; - } - - // This is only done for yourself (maybe it should be in the agent?) - if (!needsRenderBeam() || !mIsBuilt) - { - mBeam = NULL; - } - else if (!mBeam || mBeam->isDead()) - { - // VEFFECT: Tractor Beam - mBeam = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM); - mBeam->setColor(LLColor4U(gAgent.getEffectColor())); - mBeam->setSourceObject(this); - mBeamTimer.reset(); - } - - if (!mBeam.isNull()) - { - LLObjectSelectionHandle selection = LLSelectMgr::getInstance()->getSelection(); - - if (gAgent.mPointAt.notNull()) - { - // get point from pointat effect - mBeam->setPositionGlobal(gAgent.mPointAt->getPointAtPosGlobal()); - mBeam->triggerLocal(); - } - else if (selection->getFirstRootObject() && - selection->getSelectType() != SELECT_TYPE_HUD) - { - LLViewerObject* objectp = selection->getFirstRootObject(); - mBeam->setTargetObject(objectp); - } - else - { - mBeam->setTargetObject(NULL); - LLTool *tool = LLToolMgr::getInstance()->getCurrentTool(); - if (tool->isEditing()) - { - if (tool->getEditingObject()) - { - mBeam->setTargetObject(tool->getEditingObject()); - } - else - { - mBeam->setPositionGlobal(tool->getEditingPointGlobal()); - } - } - else - { - const LLPickInfo& pick = gViewerWindow->getLastPick(); - mBeam->setPositionGlobal(pick.mPosGlobal); - } - - } - if (mBeamTimer.getElapsedTimeF32() > 0.25f) - { - mBeam->setColor(LLColor4U(gAgent.getEffectColor())); - mBeam->setNeedsSendToSim(TRUE); - mBeamTimer.reset(); - } - } } void LLVOAvatar::idleUpdateBelowWater() @@ -3457,16 +2928,6 @@ void LLVOAvatar::slamPosition() BOOL LLVOAvatar::updateCharacter(LLAgent &agent) { LLMemType mt(LLMemType::MTYPE_AVATAR); - // update screen joint size - - if (mScreenp) - { - F32 aspect = LLViewerCamera::getInstance()->getAspect(); - LLVector3 scale(1.f, aspect, 1.f); - mScreenp->setScale(scale); - mScreenp->updateWorldMatrixChildren(); - resetHUDAttachments(); - } // clear debug text mDebugText.clear(); @@ -3499,7 +2960,7 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent) if (gNoRender) { // Hack if we're running drones... - if (mIsSelf) + if (isSelf()) { gAgent.setPositionAgent(getPositionAgent()); } @@ -3528,7 +2989,7 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent) // the rest should only be done occasionally for far away avatars //-------------------------------------------------------------------- - if (visible && !mIsSelf && !mIsDummy && sUseImpostors && !mNeedsAnimUpdate && !sFreezeCounter) + if (visible && !isSelf() && !mIsDummy && sUseImpostors && !mNeedsAnimUpdate && !sFreezeCounter) { F32 impostor_area = 256.f*512.f*(8.125f - LLVOAvatar::sLODFactor*8.f); if (LLMuteList::getInstance()->isMuted(getID())) @@ -3570,7 +3031,7 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent) } // change animation time quanta based on avatar render load - if (!mIsSelf && !mIsDummy) + if (!isSelf() && !mIsDummy) { F32 time_quantum = clamp_rescale((F32)sInstances.size(), 10.f, 35.f, 0.f, 0.25f); F32 pixel_area_scale = clamp_rescale(mPixelArea, 100, 5000, 1.f, 0.f); @@ -3639,7 +3100,7 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent) LLVector3d root_pos; LLVector3d ground_under_pelvis; - if (mIsSelf) + if (isSelf()) { gAgent.setPositionAgent(getRenderPosition()); } @@ -3648,8 +3109,8 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent) resolveHeightGlobal(root_pos, ground_under_pelvis, normal); F32 foot_to_ground = (F32) (root_pos.mdV[VZ] - mPelvisToFoot - ground_under_pelvis.mdV[VZ]); - BOOL in_air = ( (!LLWorld::getInstance()->getRegionFromPosGlobal(ground_under_pelvis)) || - foot_to_ground > FOOT_GROUND_COLLISION_TOLERANCE); + BOOL in_air = ((!LLWorld::getInstance()->getRegionFromPosGlobal(ground_under_pelvis)) || + foot_to_ground > FOOT_GROUND_COLLISION_TOLERANCE); if (in_air && !mInAir) { @@ -3684,7 +3145,7 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent) // more than 90 from the view, if necessary, flip the velocity vector. LLVector3 primDir; - if (mIsSelf) + if (isSelf()) { primDir = agent.getAtAxis() - projected_vec(agent.getAtAxis(), agent.getReferenceUpVector()); primDir.normalize(); @@ -3704,7 +3165,7 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent) } } LLVector3 fwdDir = lerp(primDir, velDir, clamp_rescale(speed, 0.5f, 2.0f, 0.0f, 1.0f)); - if (mIsSelf && gAgent.cameraMouselook()) + if (isSelf() && gAgent.cameraMouselook()) { // make sure fwdDir stays in same general direction as primdir if (gAgent.getFlying()) @@ -3732,18 +3193,10 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent) F32 root_roll, root_pitch, root_yaw; root_rotation.getEulerAngles(&root_roll, &root_pitch, &root_yaw); - if (mDebugAvatarRotation) - { - llinfos << "root_roll " << RAD_TO_DEG * root_roll - << " root_pitch " << RAD_TO_DEG * root_pitch - << " root_yaw " << RAD_TO_DEG * root_yaw - << llendl; - } - // When moving very slow, the pelvis is allowed to deviate from the // forward direction to allow it to hold it's position while the torso // and head turn. Once in motion, it must conform however. - BOOL self_in_mouselook = mIsSelf && gAgent.cameraMouselook(); + BOOL self_in_mouselook = isSelf() && gAgent.cameraMouselook(); LLVector3 pelvisDir( mRoot.getWorldMatrix().getFwdRow4().mV ); F32 pelvis_rot_threshold = clamp_rescale(speed, 0.1f, 1.0f, PELVIS_ROT_THRESHOLD_SLOW, PELVIS_ROT_THRESHOLD_FAST); @@ -3760,7 +3213,7 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent) // from the forward direction, but if roll or pitch are off even // a little bit we need to correct the rotation. if(root_roll < 1.f * DEG_TO_RAD - && root_pitch < 5.f * DEG_TO_RAD) + && root_pitch < 5.f * DEG_TO_RAD) { // smaller correction vector means pelvis follows prim direction more closely if (!mTurning && angle > pelvis_rot_threshold*0.75f) @@ -3794,7 +3247,7 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent) fwdDir = leftDir % upDir; LLQuaternion wQv( fwdDir, leftDir, upDir ); - if (mIsSelf && mTurning) + if (isSelf() && mTurning) { if ((fwdDir % pelvisDir) * upDir > 0.f) { @@ -4003,9 +3456,9 @@ void LLVOAvatar::updateVisibility() visible = FALSE; } - if( mIsSelf ) + if(isSelf()) { - if( !gAgent.areWearablesLoaded()) + if (!gAgentWearables.areWearablesLoaded()) { visible = FALSE; } @@ -4110,27 +3563,6 @@ void LLVOAvatar::updateVisibility() mVisible = visible; } -//------------------------------------------------------------------------ -// needsRenderBeam() -//------------------------------------------------------------------------ -BOOL LLVOAvatar::needsRenderBeam() -{ - if (gNoRender) - { - return FALSE; - } - LLTool *tool = LLToolMgr::getInstance()->getCurrentTool(); - - BOOL is_touching_or_grabbing = (tool == LLToolGrab::getInstance() && LLToolGrab::getInstance()->isEditing()); - if (LLToolGrab::getInstance()->getEditingObject() && - LLToolGrab::getInstance()->getEditingObject()->isAttachment()) - { - // don't render selection beam on hud objects - is_touching_or_grabbing = FALSE; - } - return is_touching_or_grabbing || (mState & AGENT_STATE_EDITING && LLSelectMgr::getInstance()->shouldShowSelection()); -} - //----------------------------------------------------------------------------- // renderSkinned() //----------------------------------------------------------------------------- @@ -4164,7 +3596,7 @@ U32 LLVOAvatar::renderSkinned(EAvatarRenderPass pass) mMeshLOD[MESH_ID_SKIRT]->updateJointGeometry(); } - if (!mIsSelf || gAgent.needsRenderHead() || LLPipeline::sShadowRender) + if (!isSelf() || gAgent.needsRenderHead() || LLPipeline::sShadowRender) { mMeshLOD[MESH_ID_EYELASH]->updateJointGeometry(); mMeshLOD[MESH_ID_HEAD]->updateJointGeometry(); @@ -4214,7 +3646,7 @@ U32 LLVOAvatar::renderSkinned(EAvatarRenderPass pass) return num_indices; } - if (mIsSelf && !gAgent.needsRenderAvatar()) + if (isSelf() && !gAgent.needsRenderAvatar()) { return num_indices; } @@ -4264,13 +3696,10 @@ U32 LLVOAvatar::renderSkinned(EAvatarRenderPass pass) if (pass == AVATAR_RENDER_PASS_SINGLE) { - const bool should_alpha_mask = mHasBakedHair && isTextureDefined(TEX_HEAD_BAKED) && isTextureDefined(TEX_UPPER_BAKED) - && isTextureDefined(TEX_LOWER_BAKED) && mBakedTextureData[BAKED_HEAD].mIsLoaded - && mBakedTextureData[BAKED_UPPER].mIsLoaded && mBakedTextureData[BAKED_LOWER].mIsLoaded - && !LLDrawPoolAlpha::sShowDebugAlpha; // Don't alpha mask if "Highlight Transparent" checked + const bool should_alpha_mask = mSupportsAlphaLayers && !LLDrawPoolAlpha::sShowDebugAlpha; // Don't alpha mask if "Highlight Transparent" checked LLGLState test(GL_ALPHA_TEST, should_alpha_mask); - + if (should_alpha_mask) { gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.5f); @@ -4279,7 +3708,7 @@ U32 LLVOAvatar::renderSkinned(EAvatarRenderPass pass) BOOL first_pass = TRUE; if (!LLDrawPoolAvatar::sSkipOpaque) { - if (!mIsSelf || gAgent.needsRenderHead() || LLPipeline::sShadowRender) + if (!isSelf() || gAgent.needsRenderHead() || LLPipeline::sShadowRender) { if (isTextureVisible(TEX_HEAD_BAKED) || mIsDummy) { @@ -4304,11 +3733,8 @@ U32 LLVOAvatar::renderSkinned(EAvatarRenderPass pass) if (!LLDrawPoolAvatar::sSkipTransparent || LLPipeline::sImpostorRender) { - if (!mIsDummy) - { - LLGLEnable blend(GL_BLEND); - LLGLEnable test(GL_ALPHA_TEST); - } + LLGLState blend(GL_BLEND, !mIsDummy); + LLGLState test(GL_ALPHA_TEST, !mIsDummy); num_indices += renderTransparent(first_pass); } } @@ -4333,7 +3759,7 @@ U32 LLVOAvatar::renderTransparent(BOOL first_pass) gGL.setAlphaRejectSettings(LLRender::CF_DEFAULT); } - if (!mIsSelf || gAgent.needsRenderHead() || LLPipeline::sShadowRender) + if (!isSelf() || gAgent.needsRenderHead() || LLPipeline::sShadowRender) { if (LLPipeline::sImpostorRender) { @@ -4347,7 +3773,7 @@ U32 LLVOAvatar::renderTransparent(BOOL first_pass) } // Can't test for baked hair being defined, since that won't always be the case (not all viewers send baked hair) // TODO: 1.25 will be able to switch this logic back to calling isTextureVisible(); - if (getTEImage(TEX_HAIR_BAKED)->getID() != IMG_INVISIBLE || LLDrawPoolAlpha::sShowDebugAlpha) + if (getImage(TEX_HAIR_BAKED)->getID() != IMG_INVISIBLE || LLDrawPoolAlpha::sShowDebugAlpha) { num_indices += mMeshLOD[MESH_ID_HAIR]->render(mAdjustedPixelArea, first_pass, mIsDummy); first_pass = FALSE; @@ -4373,7 +3799,7 @@ U32 LLVOAvatar::renderRigid() return 0; } - if (mIsSelf && (!gAgent.needsRenderAvatar() || !gAgent.needsRenderHead())) + if (isSelf() && (!gAgent.needsRenderAvatar() || !gAgent.needsRenderHead())) { return 0; } @@ -4386,7 +3812,8 @@ U32 LLVOAvatar::renderRigid() if (isTextureVisible(TEX_EYES_BAKED) || mIsDummy) { // If the meshes need to be drawn, enable alpha masking but not blending - bool should_alpha_mask = mHasBakedHair && mBakedTextureData[BAKED_EYES].mIsLoaded; + bool should_alpha_mask = mSupportsAlphaLayers && !LLDrawPoolAlpha::sShowDebugAlpha; + LLGLState test(GL_ALPHA_TEST, should_alpha_mask); if (should_alpha_mask) @@ -4412,7 +3839,7 @@ U32 LLVOAvatar::renderFootShadows() return 0; } - if (mIsSelf && (!gAgent.needsRenderAvatar() || !gAgent.needsRenderHead())) + if (isSelf() && (!gAgent.needsRenderAvatar() || !gAgent.needsRenderHead())) { return 0; } @@ -4424,7 +3851,7 @@ U32 LLVOAvatar::renderFootShadows() // Don't render foot shadows if your lower body is completely invisible. // (non-humanoid avatars rule!) - if (! isTextureVisible(TEX_LOWER_BAKED)) + if (!isTextureVisible(TEX_LOWER_BAKED)) { return 0; } @@ -4499,7 +3926,7 @@ void LLVOAvatar::updateTextures(LLAgent &agent) return; } - if( mIsSelf ) + if( isSelf() ) { render_avatar = TRUE; } @@ -4508,66 +3935,32 @@ void LLVOAvatar::updateTextures(LLAgent &agent) render_avatar = isVisible() && !mCulled; } - std::vector<bool> layer_baked; - for (U32 i = 0; i < mBakedTextureData.size(); i++) + std::vector<BOOL> layer_baked; + for (U32 i = 0; i < mBakedTextureDatas.size(); i++) { - layer_baked.push_back(isTextureDefined(mBakedTextureData[i].mTextureIndex)); + layer_baked.push_back(isTextureDefined(mBakedTextureDatas[i].mTextureIndex)); // bind the texture so that they'll be decoded slightly // inefficient, we can short-circuit this if we have to - if( render_avatar && !gGLManager.mIsDisabled ) - { - if (layer_baked[i] && !mBakedTextureData[i].mIsLoaded) - { - gGL.getTexUnit(0)->bind(getTEImage( mBakedTextureData[i].mTextureIndex )); - } - } - } - - /* - // JAMESDEBUG - if (mIsSelf) - { - S32 null_count = 0; - S32 default_count = 0; - for (U32 i = 0; i < getNumTEs(); i++) + if (render_avatar && !gGLManager.mIsDisabled) { - const LLTextureEntry* te = getTE(i); - if (te) + if (layer_baked[i] && !mBakedTextureDatas[i].mIsLoaded) { - if (te->getID() == LLUUID::null) - { - null_count++; - } - else if (te->getID() == IMG_DEFAULT_AVATAR) - { - default_count++; - } + gGL.getTexUnit(0)->bind(getImage(mBakedTextureDatas[i].mTextureIndex)); } } - llinfos << "JAMESDEBUG my avatar TE null " << null_count << " default " << default_count << llendl; } - */ mMaxPixelArea = 0.f; mMinPixelArea = 99999999.f; mHasGrey = FALSE; // debug for (U32 index = 0; index < getNumTEs(); index++) { - LLViewerImage *imagep = getTEImage(index); + LLViewerImage *imagep = getImage(index); if (imagep) { - // Debugging code - maybe non-self avatars are downloading textures? - //llinfos << "avatar self " << mIsSelf << " tex " << i - // << " decode " << imagep->getDecodePriority() - // << " boost " << boost_avatar - // << " size " << imagep->getWidth() << "x" << imagep->getHeight() - // << " discard " << imagep->getDiscardLevel() - // << " desired " << imagep->getDesiredDiscardLevel() - // << llendl; - const LLTextureEntry *te = getTE(index); - F32 texel_area_ratio = fabs(te->mScaleS * te->mScaleT); - S32 boost_level = mIsSelf ? LLViewerImage::BOOST_AVATAR_BAKED_SELF : LLViewerImage::BOOST_AVATAR_BAKED; + const F32 texel_area_ratio = fabs(te->mScaleS * te->mScaleT); + const S32 boost_level = getAvatarBakedBoostLevel(); // Spam if this is a baked texture, not set to default image, without valid host info if (isIndexBakedTexture((ETextureIndex)index) @@ -4575,15 +3968,15 @@ void LLVOAvatar::updateTextures(LLAgent &agent) && !imagep->getTargetHost().isOk()) { LL_WARNS_ONCE("Texture") << "LLVOAvatar::updateTextures No host for texture " - << imagep->getID() << " for avatar " - << (mIsSelf ? "<myself>" : getID().asString()) - << " on host " << getRegion()->getHost() << llendl; + << imagep->getID() << " for avatar " + << (isSelf() ? "<myself>" : getID().asString()) + << " on host " << getRegion()->getHost() << llendl; } /* switch(index) case TEX_HEAD_BODYPAINT: addLocalTextureStats( LOCTEX_HEAD_BODYPAINT, imagep, texel_area_ratio, render_avatar, head_baked ); */ - const LLVOAvatarDictionary::TextureDictionaryEntry *texture_dict = LLVOAvatarDictionary::getInstance()->getTexture((ETextureIndex)index); + const LLVOAvatarDictionary::TextureEntry *texture_dict = LLVOAvatarDictionary::getInstance()->getTexture((ETextureIndex)index); if (texture_dict->mIsUsedByBakedTexture) { const EBakedTextureIndex baked_index = texture_dict->mBakedTextureIndex; @@ -4614,38 +4007,11 @@ void LLVOAvatar::updateTextures(LLAgent &agent) } -void LLVOAvatar::addLocalTextureStats( ETextureIndex idx, LLViewerImage* imagep, - F32 texel_area_ratio, BOOL render_avatar, BOOL covered_by_baked ) +void LLVOAvatar::addLocalTextureStats(ETextureIndex idx, LLViewerImage* imagep, + F32 texel_area_ratio, BOOL render_avatar, BOOL covered_by_baked, U32 index) { - if (!isIndexLocalTexture(idx)) return; - - if (!covered_by_baked && render_avatar) // render_avatar is always true if mIsSelf - { - if (getLocalTextureID(idx) != IMG_DEFAULT_AVATAR) - { - F32 desired_pixels; - if( mIsSelf ) - { - desired_pixels = llmin(mPixelArea, (F32)TEX_IMAGE_AREA_SELF ); - imagep->setBoostLevel(LLViewerImage::BOOST_AVATAR_SELF); - } - else - { - desired_pixels = llmin(mPixelArea, (F32)TEX_IMAGE_AREA_OTHER ); - imagep->setBoostLevel(LLViewerImage::BOOST_AVATAR); - } - imagep->addTextureStats( desired_pixels / texel_area_ratio ); - if (imagep->getDiscardLevel() < 0) - { - mHasGrey = TRUE; // for statistics gathering - } - } - else - { - // texture asset is missing - mHasGrey = TRUE; // for statistics gathering - } - } + // No local texture stats for non-self avatars + return; } @@ -4657,6 +4023,29 @@ void LLVOAvatar::addBakedTextureStats( LLViewerImage* imagep, F32 pixel_area, F3 imagep->setBoostLevel(boost_level); } +//virtual +void LLVOAvatar::setImage(const U8 te, LLViewerImage *imagep) +{ + setTEImage(te, imagep); +} + +//virtual +LLViewerImage* LLVOAvatar::getImage(const U8 te) const +{ + return getTEImage(te); +} +//virtual +const LLTextureEntry* LLVOAvatar::getTexEntry(const U8 te_num) const +{ + return getTE(te_num); +} + +//virtual +void LLVOAvatar::setTexEntry(const U8 index, const LLTextureEntry &te) +{ + setTE(index, te); +} + //----------------------------------------------------------------------------- // resolveHeight() //----------------------------------------------------------------------------- @@ -4798,7 +4187,7 @@ void LLVOAvatar::processAnimationStateChanges() } // clear source information for animations which have been stopped - if (mIsSelf) + if (isSelf()) { AnimSourceIterator source_it = mAnimationSources.begin(); @@ -4840,7 +4229,7 @@ BOOL LLVOAvatar::processSingleAnimationStateChange( const LLUUID& anim_id, BOOL { // RN: uncomment this to play on typing sound at fixed volume once sound engine is fixed // to support both spatialized and non-spatialized instances of the same sound - //if (mIsSelf) + //if (isSelf()) //{ // gAudiop->triggerSound(LLUUID(gSavedSettings.getString("UISndTyping")), 1.0f, LLAudioEngine::AUDIO_TYPE_UI); //} @@ -4883,7 +4272,7 @@ BOOL LLVOAvatar::processSingleAnimationStateChange( const LLUUID& anim_id, BOOL //----------------------------------------------------------------------------- // isAnyAnimationSignaled() //----------------------------------------------------------------------------- -BOOL LLVOAvatar::isAnyAnimationSignaled(const LLUUID *anim_array, const S32 num_anims) +BOOL LLVOAvatar::isAnyAnimationSignaled(const LLUUID *anim_array, const S32 num_anims) const { for (S32 i = 0; i < num_anims; i++) { @@ -4926,7 +4315,7 @@ BOOL LLVOAvatar::startMotion(const LLUUID& id, F32 time_offset) } } - if (mIsSelf && id == ANIM_AGENT_AWAY) + if (isSelf() && id == ANIM_AGENT_AWAY) { gAgent.setAFK(); } @@ -4939,7 +4328,7 @@ BOOL LLVOAvatar::startMotion(const LLUUID& id, F32 time_offset) //----------------------------------------------------------------------------- BOOL LLVOAvatar::stopMotion(const LLUUID& id, BOOL stop_immediate) { - if (mIsSelf) + if (isSelf()) { gAgent.onAnimStop(id); } @@ -4959,25 +4348,9 @@ BOOL LLVOAvatar::stopMotion(const LLUUID& id, BOOL stop_immediate) //----------------------------------------------------------------------------- // stopMotionFromSource() //----------------------------------------------------------------------------- +// virtual void LLVOAvatar::stopMotionFromSource(const LLUUID& source_id) { - if (!mIsSelf) - { - return; - } - AnimSourceIterator motion_it; - - for(motion_it = mAnimationSources.find(source_id); motion_it != mAnimationSources.end();) - { - gAgent.sendAnimationRequest( motion_it->second, ANIM_REQUEST_STOP ); - mAnimationSources.erase(motion_it++); - } - - LLViewerObject* object = gObjectList.findObject(source_id); - if (object) - { - object->mFlags &= ~FLAGS_ANIM_SOURCE; - } } //----------------------------------------------------------------------------- @@ -5025,7 +4398,7 @@ S32 LLVOAvatar::getCollisionVolumeID(std::string &name) //----------------------------------------------------------------------------- // addDebugText() //----------------------------------------------------------------------------- - void LLVOAvatar::addDebugText(const std::string& text) +void LLVOAvatar::addDebugText(const std::string& text) { mDebugText.append(1, '\n'); mDebugText.append(text); @@ -5045,15 +4418,7 @@ const LLUUID& LLVOAvatar::getID() // RN: avatar joints are multi-rooted to include screen-based attachments LLJoint *LLVOAvatar::getJoint( const std::string &name ) { - LLJoint* jointp = NULL; - if (mScreenp) - { - jointp = mScreenp->findJoint(name); - } - if (!jointp) - { - jointp = mRoot.findJoint(name); - } + LLJoint* jointp = mRoot.findJoint(name); return jointp; } @@ -5183,8 +4548,7 @@ LLVector3 LLVOAvatar::getPosAgentFromGlobal(const LLVector3d &position) //----------------------------------------------------------------------------- BOOL LLVOAvatar::allocateCharacterJoints( U32 num ) { - delete [] mSkeleton; - mSkeleton = NULL; + deleteAndClearArray(mSkeleton); mNumJoints = 0; mSkeleton = new LLViewerJoint[num]; @@ -5208,8 +4572,7 @@ BOOL LLVOAvatar::allocateCharacterJoints( U32 num ) //----------------------------------------------------------------------------- BOOL LLVOAvatar::allocateCollisionVolumes( U32 num ) { - delete [] mCollisionVolumes; - mCollisionVolumes = NULL; + deleteAndClearArray(mCollisionVolumes); mNumCollisionVolumes = 0; mCollisionVolumes = new LLViewerJointCollisionVolume[num]; @@ -5239,14 +4602,10 @@ LLJoint *LLVOAvatar::getCharacterJoint( U32 num ) //----------------------------------------------------------------------------- // requestStopMotion() //----------------------------------------------------------------------------- +// virtual void LLVOAvatar::requestStopMotion( LLMotion* motion ) { // Only agent avatars should handle the stop motion notifications. - if ( mIsSelf ) - { - // Notify agent that motion has stopped - gAgent.requestStopMotion( motion ); - } } //----------------------------------------------------------------------------- @@ -5325,62 +4684,55 @@ BOOL LLVOAvatar::loadAvatar() if (sAvatarXmlInfo->mLayerInfoList.empty()) { llwarns << "avatar file: missing <layer_set> node" << llendl; + return FALSE; } - else + + if (sAvatarXmlInfo->mMorphMaskInfoList.empty()) + { + llwarns << "avatar file: missing <morph_masks> node" << llendl; + return FALSE; + } + + // avatar_lad.xml : <morph_masks> + for (LLVOAvatarXmlInfo::morph_info_list_t::iterator iter = sAvatarXmlInfo->mMorphMaskInfoList.begin(); + iter != sAvatarXmlInfo->mMorphMaskInfoList.end(); + iter++) { - LLVOAvatarXmlInfo::layer_info_list_t::iterator iter; - for (iter = sAvatarXmlInfo->mLayerInfoList.begin(); - iter != sAvatarXmlInfo->mLayerInfoList.end(); iter++) + LLVOAvatarXmlInfo::LLVOAvatarMorphInfo *info = *iter; + + EBakedTextureIndex baked = LLVOAvatarDictionary::findBakedByRegionName(info->mRegion); + if (baked != BAKED_NUM_INDICES) { - LLTexLayerSetInfo *info = *iter; - LLTexLayerSet* layer_set = new LLTexLayerSet( this ); - if (!layer_set->setInfo(info)) - { - stop_glerror(); - delete layer_set; - llwarns << "avatar file: layer_set->parseData() failed" << llendl; - return FALSE; - } - bool found_baked_entry = false; - for (LLVOAvatarDictionary::baked_map_t::const_iterator baked_iter = LLVOAvatarDictionary::getInstance()->getBakedTextures().begin(); - baked_iter != LLVOAvatarDictionary::getInstance()->getBakedTextures().end(); - baked_iter++) - { - const LLVOAvatarDictionary::BakedDictionaryEntry *baked_dict = baked_iter->second; - if (layer_set->isBodyRegion(baked_dict->mName)) - { - mBakedTextureData[baked_iter->first].mTexLayerSet = layer_set; - found_baked_entry = true; - break; - } - } - if (!found_baked_entry) + LLPolyMorphTarget *morph_param; + const std::string *name = &info->mName; + morph_param = (LLPolyMorphTarget *)(getVisualParam(name->c_str())); + if (morph_param) { - llwarns << "<layer_set> has invalid body_region attribute" << llendl; - delete layer_set; - return FALSE; + BOOL invert = info->mInvert; + addMaskedMorph(baked, morph_param, invert, info->mLayer); } } + } + + loadLayersets(); // avatar_lad.xml : <driver_parameters> + for (LLVOAvatarXmlInfo::driver_info_list_t::iterator iter = sAvatarXmlInfo->mDriverInfoList.begin(); + iter != sAvatarXmlInfo->mDriverInfoList.end(); + iter++) { - LLVOAvatarXmlInfo::driver_info_list_t::iterator iter; - for (iter = sAvatarXmlInfo->mDriverInfoList.begin(); - iter != sAvatarXmlInfo->mDriverInfoList.end(); iter++) + LLDriverParamInfo *info = *iter; + LLDriverParam* driver_param = new LLDriverParam( this ); + if (driver_param->setInfo(info)) { - LLDriverParamInfo *info = *iter; - LLDriverParam* driver_param = new LLDriverParam( this ); - if (driver_param->setInfo(info)) - { - addVisualParam( driver_param ); - } - else - { - delete driver_param; - llwarns << "avatar file: driver_param->parseData() failed" << llendl; - return FALSE; - } + addVisualParam( driver_param ); + } + else + { + delete driver_param; + llwarns << "avatar file: driver_param->parseData() failed" << llendl; + return FALSE; } } @@ -5395,7 +4747,7 @@ BOOL LLVOAvatar::loadSkeletonNode () mRoot.addChild( &mSkeleton[0] ); for (std::vector<LLViewerJoint *>::iterator iter = mMeshLOD.begin(); - iter != mMeshLOD.end(); iter++) + iter != mMeshLOD.end(); iter++) { LLViewerJoint *joint = (LLViewerJoint *) *iter; joint->mUpdateXform = FALSE; @@ -5546,12 +4898,12 @@ BOOL LLVOAvatar::loadMeshNodes() switch(lod) case 0: mesh = &mHairMesh0; */ - for (LLVOAvatarDictionary::mesh_map_t::const_iterator mesh_iter = LLVOAvatarDictionary::getInstance()->getMeshes().begin(); + for (LLVOAvatarDictionary::Meshes::const_iterator mesh_iter = LLVOAvatarDictionary::getInstance()->getMeshes().begin(); mesh_iter != LLVOAvatarDictionary::getInstance()->getMeshes().end(); mesh_iter++) { const EMeshIndex mesh_index = mesh_iter->first; - const LLVOAvatarDictionary::MeshDictionaryEntry *mesh_dict = mesh_iter->second; + const LLVOAvatarDictionary::MeshEntry *mesh_dict = mesh_iter->second; if (type.compare(mesh_dict->mName) == 0) { mesh_id = mesh_index; @@ -5646,6 +4998,23 @@ BOOL LLVOAvatar::loadMeshNodes() return TRUE; } +//----------------------------------------------------------------------------- +// loadLayerSets() +//----------------------------------------------------------------------------- +BOOL LLVOAvatar::loadLayersets() +{ + BOOL success = TRUE; + for (LLVOAvatarXmlInfo::layer_info_list_t::const_iterator layerset_iter = sAvatarXmlInfo->mLayerInfoList.begin(); + layerset_iter != sAvatarXmlInfo->mLayerInfoList.end(); + layerset_iter++) + { + // Construct a layerset for each one specified in avatar_lad.xml and initialize it as such. + LLTexLayerSetInfo *layerset_info = *layerset_iter; + layerset_info->createVisualParams(this); + } + return success; +} + //----------------------------------------------------------------------------- // updateVisualParams() //----------------------------------------------------------------------------- @@ -5710,9 +5079,9 @@ void LLVOAvatar::setPixelAreaAndAngle(LLAgent &agent) } // We always want to look good to ourselves - if( mIsSelf ) + if( isSelf() ) { - mPixelArea = llmax( mPixelArea, F32(TEX_IMAGE_SIZE_SELF / 16) ); + mPixelArea = llmax( mPixelArea, F32(getTexImageSize() / 16) ); } } @@ -5728,7 +5097,7 @@ BOOL LLVOAvatar::updateJointLODs() F32 area_scale = 0.16f; { - if (mIsSelf) + if (isSelf()) { if(gAgent.cameraCustomizeAvatar() || gAgent.cameraMouselook()) { @@ -5857,7 +5226,7 @@ void LLVOAvatar::updateShadowFaces() // this only does a ray straight down from the foot, as our client-side ray-tracing is very limited now // but we make an explicit ray trace call in expectation of future improvements resolveRayCollisionAgent(gAgent.getPosGlobalFromAgent(joint_world_pos), - gAgent.getPosGlobalFromAgent(gSky.getSunDirection() + joint_world_pos), shadow_pos, normal); + gAgent.getPosGlobalFromAgent(gSky.getSunDirection() + joint_world_pos), shadow_pos, normal); shadow_pos_agent = gAgent.getPosAgentFromGlobal(shadow_pos); foot_height = joint_world_pos.mV[VZ] - shadow_pos_agent.mV[VZ]; @@ -5866,7 +5235,7 @@ void LLVOAvatar::updateShadowFaces() // Render sprite sprite.setNormal(normal); - if (mIsSelf && gAgent.getCameraMode() == CAMERA_MODE_MOUSELOOK) + if (isSelf() && gAgent.getCameraMode() == CAMERA_MODE_MOUSELOOK) { sprite.setColor(0.f, 0.f, 0.f, 0.f); } @@ -5890,7 +5259,7 @@ void LLVOAvatar::updateShadowFaces() // this only does a ray straight down from the foot, as our client-side ray-tracing is very limited now // but we make an explicit ray trace call in expectation of future improvements resolveRayCollisionAgent(gAgent.getPosGlobalFromAgent(joint_world_pos), - gAgent.getPosGlobalFromAgent(gSky.getSunDirection() + joint_world_pos), shadow_pos, normal); + gAgent.getPosGlobalFromAgent(gSky.getSunDirection() + joint_world_pos), shadow_pos, normal); shadow_pos_agent = gAgent.getPosAgentFromGlobal(shadow_pos); foot_height = joint_world_pos.mV[VZ] - shadow_pos_agent.mV[VZ]; @@ -5899,7 +5268,7 @@ void LLVOAvatar::updateShadowFaces() // Render sprite sprite.setNormal(normal); - if (mIsSelf && gAgent.getCameraMode() == CAMERA_MODE_MOUSELOOK) + if (isSelf() && gAgent.getCameraMode() == CAMERA_MODE_MOUSELOOK) { sprite.setColor(0.f, 0.f, 0.f, 0.f); } @@ -5924,9 +5293,9 @@ void LLVOAvatar::updateShadowFaces() //----------------------------------------------------------------------------- void LLVOAvatar::updateSexDependentLayerSets( BOOL set_by_user ) { - invalidateComposite( mBakedTextureData[BAKED_HEAD].mTexLayerSet, set_by_user ); - invalidateComposite( mBakedTextureData[BAKED_UPPER].mTexLayerSet, set_by_user ); - invalidateComposite( mBakedTextureData[BAKED_LOWER].mTexLayerSet, set_by_user ); + invalidateComposite( mBakedTextureDatas[BAKED_HEAD].mTexLayerSet, set_by_user ); + invalidateComposite( mBakedTextureDatas[BAKED_UPPER].mTexLayerSet, set_by_user ); + invalidateComposite( mBakedTextureDatas[BAKED_LOWER].mTexLayerSet, set_by_user ); updateMeshTextures(); } @@ -5946,27 +5315,6 @@ void LLVOAvatar::hideSkirt() mMeshLOD[MESH_ID_SKIRT]->setVisible(FALSE, TRUE); } - -//----------------------------------------------------------------------------- -// requestLayerSetUpdate() -//----------------------------------------------------------------------------- -void LLVOAvatar::requestLayerSetUpdate(ETextureIndex index ) -{ - /* switch(index) - case LOCTEX_UPPER_BODYPAINT: - case LOCTEX_UPPER_SHIRT: - if( mUpperBodyLayerSet ) - mUpperBodyLayerSet->requestUpdate(); */ - const LLVOAvatarDictionary::TextureDictionaryEntry *texture_dict = LLVOAvatarDictionary::getInstance()->getTexture(index); - if (!texture_dict->mIsLocalTexture || !texture_dict->mIsUsedByBakedTexture) - return; - const EBakedTextureIndex baked_index = texture_dict->mBakedTextureIndex; - if (mBakedTextureData[baked_index].mTexLayerSet) - { - mBakedTextureData[baked_index].mTexLayerSet->requestUpdate(); - } -} - void LLVOAvatar::setParent(LLViewerObject* parent) { if (parent == NULL) @@ -6021,13 +5369,13 @@ LLViewerJointAttachment* LLVOAvatar::getTargetAttachmentPoint(LLViewerObject* vi //----------------------------------------------------------------------------- // attachObject() //----------------------------------------------------------------------------- -BOOL LLVOAvatar::attachObject(LLViewerObject *viewer_object) +LLViewerJointAttachment *LLVOAvatar::attachObject(LLViewerObject *viewer_object) { LLViewerJointAttachment* attachment = getTargetAttachmentPoint(viewer_object); if (!attachment || !attachment->addObject(viewer_object)) { - return FALSE; + return 0; } if (viewer_object->isSelected()) @@ -6036,16 +5384,7 @@ BOOL LLVOAvatar::attachObject(LLViewerObject *viewer_object) LLSelectMgr::getInstance()->updatePointAt(); } - if (mIsSelf) - { - updateAttachmentVisibility(gAgent.getCameraMode()); - - // Then make sure the inventory is in sync with the avatar. - gInventory.addChangedMask( LLInventoryObserver::LABEL, attachment->getItemID() ); - gInventory.notifyObservers(); - } - - return TRUE; + return attachment; } //----------------------------------------------------------------------------- @@ -6103,7 +5442,7 @@ BOOL LLVOAvatar::detachObject(LLViewerObject *viewer_object) { LLUUID item_id = attachment->getItemID(); attachment->removeObject(viewer_object); - if (mIsSelf) + if (isSelf()) { // the simulator should automatically handle // permission revocation @@ -6125,7 +5464,7 @@ BOOL LLVOAvatar::detachObject(LLViewerObject *viewer_object) } lldebugs << "Detaching object " << viewer_object->mID << " from " << attachment->getName() << llendl; - if (mIsSelf) + if (isSelf()) { // Then make sure the inventory is in sync with the avatar. gInventory.addChangedMask(LLInventoryObserver::LABEL, item_id); @@ -6135,7 +5474,6 @@ BOOL LLVOAvatar::detachObject(LLViewerObject *viewer_object) } } - return FALSE; } @@ -6165,7 +5503,7 @@ void LLVOAvatar::sitOnObject(LLViewerObject *sit_object) stopMotion(ANIM_AGENT_BODY_NOISE); - if (mIsSelf) + if (isSelf()) { // Might be first sit LLFirstUse::useSit(); @@ -6177,7 +5515,10 @@ void LLVOAvatar::sitOnObject(LLViewerObject *sit_object) // make sure we are not trying to autopilot gAgent.stopAutoPilot(); gAgent.setupSitCamera(); - if (gAgent.mForceMouselook) gAgent.changeCameraToMouselook(); + if (gAgent.getForceMouselook()) + { + gAgent.changeCameraToMouselook(); + } } } @@ -6227,7 +5568,7 @@ void LLVOAvatar::getOffObject() startMotion(ANIM_AGENT_BODY_NOISE); - if (mIsSelf) + if (isSelf()) { LLQuaternion av_rot = gAgent.getFrameAgent().getQuaternion(); LLQuaternion obj_rot = sit_object ? sit_object->getRenderRotation() : LLQuaternion::DEFAULT; @@ -6268,146 +5609,24 @@ LLVOAvatar* LLVOAvatar::findAvatarFromAttachment( LLViewerObject* obj ) return NULL; } -//----------------------------------------------------------------------------- -// isWearingAttachment() -//----------------------------------------------------------------------------- -BOOL LLVOAvatar::isWearingAttachment( const LLUUID& inv_item_id ) -{ - for (attachment_map_t::iterator iter = mAttachmentPoints.begin(); - iter != mAttachmentPoints.end(); ) - { - attachment_map_t::iterator curiter = iter++; - LLViewerJointAttachment* attachment = curiter->second; - if( attachment->getItemID() == inv_item_id ) - { - return TRUE; - } - } - return FALSE; -} - -//----------------------------------------------------------------------------- -// getWornAttachment() -//----------------------------------------------------------------------------- -LLViewerObject* LLVOAvatar::getWornAttachment( const LLUUID& inv_item_id ) -{ - for (attachment_map_t::iterator iter = mAttachmentPoints.begin(); - iter != mAttachmentPoints.end(); ) - { - attachment_map_t::iterator curiter = iter++; - LLViewerJointAttachment* attachment = curiter->second; - if( attachment->getItemID() == inv_item_id ) - { - return attachment->getObject(); - } - } - return NULL; -} - -const std::string LLVOAvatar::getAttachedPointName(const LLUUID& inv_item_id) -{ - for (attachment_map_t::iterator iter = mAttachmentPoints.begin(); - iter != mAttachmentPoints.end(); ) - { - attachment_map_t::iterator curiter = iter++; - LLViewerJointAttachment* attachment = curiter->second; - if( attachment->getItemID() == inv_item_id ) - { - return attachment->getName(); - } - } - - return LLStringUtil::null; -} - - -//----------------------------------------------------------------------------- -// static -// onLocalTextureLoaded() -//----------------------------------------------------------------------------- - -void LLVOAvatar::onLocalTextureLoaded( BOOL success, LLViewerImage *src_vi, LLImageRaw* src_raw, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata ) -{ - //llinfos << "onLocalTextureLoaded: " << src_vi->getID() << llendl; - - const LLUUID& src_id = src_vi->getID(); - LLAvatarTexData *data = (LLAvatarTexData *)userdata; - if (success) - { - LLVOAvatar *self = (LLVOAvatar *)gObjectList.findObject(data->mAvatarID); - if (self) - { - ETextureIndex index = data->mIndex; - if (!self->isIndexLocalTexture(index)) return; - LocalTextureData &local_tex_data = self->mLocalTextureData[index]; - if(!local_tex_data.mIsBakedReady && - local_tex_data.mImage.notNull() && - (local_tex_data.mImage->getID() == src_id) && - discard_level < local_tex_data.mDiscard) - { - local_tex_data.mDiscard = discard_level; - if ( self->isSelf() && !gAgent.cameraCustomizeAvatar() ) - { - self->requestLayerSetUpdate( index ); - } - else if( self->isSelf() && gAgent.cameraCustomizeAvatar() ) - { - LLVisualParamHint::requestHintUpdates(); - } - self->updateMeshTextures(); - } - } - } - else if (final) - { - LLVOAvatar *self = (LLVOAvatar *)gObjectList.findObject(data->mAvatarID); - if (self) - { - ETextureIndex index = data->mIndex; - if (!self->isIndexLocalTexture(index)) return; - LocalTextureData &local_tex_data = self->mLocalTextureData[index]; - // Failed: asset is missing - if(!local_tex_data.mIsBakedReady && - local_tex_data.mImage.notNull() && - local_tex_data.mImage->getID() == src_id) - { - local_tex_data.mDiscard = 0; - self->requestLayerSetUpdate( index ); - self->updateMeshTextures(); - } - } - } - - if( final || !success ) - { - delete data; - } -} - -void LLVOAvatar::updateComposites() +// warning: order(N) not order(1) +S32 LLVOAvatar::getAttachmentCount() { - for (U32 i = 0; i < mBakedTextureData.size(); i++) - { - if ( mBakedTextureData[i].mTexLayerSet - && ((i != BAKED_SKIRT) || isWearingWearableType( WT_SKIRT )) ) - { - mBakedTextureData[i].mTexLayerSet->updateComposite(); - } - } + S32 count = mAttachmentPoints.size(); + return count; } -LLColor4 LLVOAvatar::getGlobalColor( const std::string& color_name ) +LLColor4 LLVOAvatar::getGlobalColor( const std::string& color_name ) const { - if( color_name=="skin_color" && mTexSkinColor ) + if (color_name=="skin_color" && mTexSkinColor) { return mTexSkinColor->getColor(); } - else - if( color_name=="hair_color" && mTexHairColor ) + else if(color_name=="hair_color" && mTexHairColor) { return mTexHairColor->getColor(); } - if( color_name=="eye_color" && mTexEyeColor ) + if(color_name=="eye_color" && mTexEyeColor) { return mTexEyeColor->getColor(); } @@ -6418,274 +5637,57 @@ LLColor4 LLVOAvatar::getGlobalColor( const std::string& color_name ) } } - +// virtual void LLVOAvatar::invalidateComposite( LLTexLayerSet* layerset, BOOL set_by_user ) { - if( !layerset || !layerset->getUpdatesEnabled() ) - { - return; - } - - /* Debug spam. JC - const char* layer_name = ""; - if (layerset == mHeadLayerSet) - { - layer_name = "head"; - } - else if (layerset == mUpperBodyLayerSet) - { - layer_name = "upperbody"; - } - else if (layerset == mLowerBodyLayerSet) - { - layer_name = "lowerbody"; - } - else if (layerset == mEyesLayerSet) - { - layer_name = "eyes"; - } - else if (layerset == mHairLayerSet) - { - layer_name = "hair"; - } - else if (layerset == mSkirtLayerSet) - { - layer_name = "skirt"; - } - else - { - layer_name = "unknown"; - } - llinfos << "LLVOAvatar::invalidComposite() " << layer_name << llendl; - */ - - layerset->requestUpdate(); - - if( set_by_user ) - { - llassert( mIsSelf ); - - ETextureIndex baked_te = getBakedTE( layerset ); - setTEImage( baked_te, gImageList.getImage(IMG_DEFAULT_AVATAR) ); - layerset->requestUpload(); - } } void LLVOAvatar::invalidateAll() { - for (U32 i = 0; i < mBakedTextureData.size(); i++) - { - invalidateComposite(mBakedTextureData[i].mTexLayerSet, TRUE); - } - updateMeshTextures(); } -void LLVOAvatar::onGlobalColorChanged( LLTexGlobalColor* global_color, BOOL set_by_user ) +// virtual +void LLVOAvatar::setCompositeUpdatesEnabled( BOOL b ) +{ +} + +void LLVOAvatar::onGlobalColorChanged(const LLTexGlobalColor* global_color, BOOL set_by_user ) { - if( global_color == mTexSkinColor ) + if (global_color == mTexSkinColor) { -// llinfos << "invalidateComposite cause: onGlobalColorChanged( skin color )" << llendl; - invalidateComposite( mBakedTextureData[BAKED_HEAD].mTexLayerSet, set_by_user ); - invalidateComposite( mBakedTextureData[BAKED_UPPER].mTexLayerSet, set_by_user ); - invalidateComposite( mBakedTextureData[BAKED_LOWER].mTexLayerSet, set_by_user ); + invalidateComposite( mBakedTextureDatas[BAKED_HEAD].mTexLayerSet, set_by_user ); + invalidateComposite( mBakedTextureDatas[BAKED_UPPER].mTexLayerSet, set_by_user ); + invalidateComposite( mBakedTextureDatas[BAKED_LOWER].mTexLayerSet, set_by_user ); } - else - if( global_color == mTexHairColor ) + else if (global_color == mTexHairColor) { -// llinfos << "invalidateComposite cause: onGlobalColorChanged( hair color )" << llendl; - invalidateComposite( mBakedTextureData[BAKED_HEAD].mTexLayerSet, set_by_user ); - invalidateComposite( mBakedTextureData[BAKED_HAIR].mTexLayerSet, set_by_user ); + invalidateComposite( mBakedTextureDatas[BAKED_HEAD].mTexLayerSet, set_by_user ); + invalidateComposite( mBakedTextureDatas[BAKED_HAIR].mTexLayerSet, set_by_user ); // ! BACKWARDS COMPATIBILITY ! // Fix for dealing with avatars from viewers that don't bake hair. - if (!isTextureDefined(mBakedTextureData[BAKED_HAIR].mTextureIndex)) + if (!isTextureDefined(mBakedTextureDatas[BAKED_HAIR].mTextureIndex)) { LLColor4 color = mTexHairColor->getColor(); - for (U32 i = 0; i < mBakedTextureData[BAKED_HAIR].mMeshes.size(); i++) + for (U32 i = 0; i < mBakedTextureDatas[BAKED_HAIR].mMeshes.size(); i++) { - mBakedTextureData[BAKED_HAIR].mMeshes[i]->setColor( color.mV[VX], color.mV[VY], color.mV[VZ], color.mV[VW] ); + mBakedTextureDatas[BAKED_HAIR].mMeshes[i]->setColor( color.mV[VX], color.mV[VY], color.mV[VZ], color.mV[VW] ); } } - } - else - if( global_color == mTexEyeColor ) + } + else if (global_color == mTexEyeColor) { // llinfos << "invalidateComposite cause: onGlobalColorChanged( eyecolor )" << llendl; - invalidateComposite( mBakedTextureData[BAKED_EYES].mTexLayerSet, set_by_user ); + invalidateComposite( mBakedTextureDatas[BAKED_EYES].mTexLayerSet, set_by_user ); } updateMeshTextures(); } -void LLVOAvatar::forceBakeAllTextures(bool slam_for_debug) +BOOL LLVOAvatar::isVisible() const { - llinfos << "TAT: forced full rebake. " << llendl; - - for (U32 i = 0; i < mBakedTextureData.size(); i++) - { - ETextureIndex baked_index = mBakedTextureData[i].mTextureIndex; - LLTexLayerSet* layer_set = getLayerSet(baked_index); - if (layer_set) - { - if (slam_for_debug) - { - layer_set->setUpdatesEnabled(TRUE); - layer_set->cancelUpload(); - } - - BOOL set_by_user = TRUE; - invalidateComposite(layer_set, set_by_user); - LLViewerStats::getInstance()->incStat(LLViewerStats::ST_TEX_REBAKES); - } - else - { - llwarns << "TAT: NO LAYER SET FOR " << (S32)baked_index << llendl; - } - } - - // Don't know if this is needed - updateMeshTextures(); -} - - -// static -void LLVOAvatar::processRebakeAvatarTextures(LLMessageSystem* msg, void**) -{ - LLUUID texture_id; - msg->getUUID("TextureData", "TextureID", texture_id); - - LLVOAvatar* self = gAgent.getAvatarObject(); - if (!self) return; - - // If this is a texture corresponding to one of our baked entries, - // just rebake that layer set. - BOOL found = FALSE; - - /* ETextureIndex baked_texture_indices[BAKED_NUM_INDICES] = - TEX_HEAD_BAKED, - TEX_UPPER_BAKED, */ - for (LLVOAvatarDictionary::texture_map_t::const_iterator iter = LLVOAvatarDictionary::getInstance()->getTextures().begin(); - iter != LLVOAvatarDictionary::getInstance()->getTextures().end(); - iter++) - { - const ETextureIndex index = iter->first; - const LLVOAvatarDictionary::TextureDictionaryEntry *text_dict = iter->second; - if (text_dict->mIsBakedTexture) - { - if (texture_id == self->getTEImage(index)->getID()) - { - LLTexLayerSet* layer_set = self->getLayerSet(index); - if (layer_set) - { - llinfos << "TAT: rebake - matched entry " << (S32)index << llendl; - // Apparently set_by_user == force upload - BOOL set_by_user = TRUE; - self->invalidateComposite(layer_set, set_by_user); - found = TRUE; - LLViewerStats::getInstance()->incStat(LLViewerStats::ST_TEX_REBAKES); - } - } - } - } - - // If texture not found, rebake all entries. - if (!found) - { - self->forceBakeAllTextures(); - } - else - { - // Not sure if this is necessary, but forceBakeAllTextures() does it. - self->updateMeshTextures(); - } -} - - -BOOL LLVOAvatar::getLocalTextureRaw(ETextureIndex index, LLImageRaw* image_raw) -{ - if (!isIndexLocalTexture(index)) return FALSE; - - BOOL success = FALSE; - - if (getLocalTextureID(index) == IMG_DEFAULT_AVATAR) - { - success = TRUE; - } - else - { - LocalTextureData &local_tex_data = mLocalTextureData[index]; - if(local_tex_data.mImage->readBackRaw(-1, image_raw, false)) - { - success = TRUE; - } - else - { - // No data loaded yet - setLocalTexture( (ETextureIndex)index, getTEImage( index ), FALSE ); - } - } - return success; -} - -BOOL LLVOAvatar::getLocalTextureGL(ETextureIndex index, LLImageGL** image_gl_pp) -{ - if (!isIndexLocalTexture(index)) return FALSE; - - BOOL success = FALSE; - *image_gl_pp = NULL; - - if (getLocalTextureID(index) == IMG_DEFAULT_AVATAR) - { - success = TRUE; - } - else - { - LocalTextureData &local_tex_data = mLocalTextureData[index]; - *image_gl_pp = local_tex_data.mImage; - success = TRUE; - } - - if( !success ) - { -// llinfos << "getLocalTextureGL(" << index << ") had no data" << llendl; - } - return success; -} - -const LLUUID& LLVOAvatar::getLocalTextureID(ETextureIndex index) -{ - if (!isIndexLocalTexture(index)) return IMG_DEFAULT_AVATAR; - - if (mLocalTextureData[index].mImage.notNull()) - { - return mLocalTextureData[index].mImage->getID(); - } - else - { - return IMG_DEFAULT_AVATAR; - } -} - -// static -void LLVOAvatar::dumpTotalLocalTextureByteCount() -{ - S32 total_gl_bytes = 0; - for (std::vector<LLCharacter*>::iterator iter = LLCharacter::sInstances.begin(); - iter != LLCharacter::sInstances.end(); ++iter) - { - LLVOAvatar* cur = (LLVOAvatar*) *iter; - S32 gl_bytes = 0; - cur->getLocalTextureByteCount(&gl_bytes ); - total_gl_bytes += gl_bytes; - } - llinfos << "Total Avatar LocTex GL:" << (total_gl_bytes/1024) << "KB" << llendl; -} - -BOOL LLVOAvatar::isVisible() -{ - return mDrawable.notNull() - && (mDrawable->isVisible() || mIsDummy); -} - + return mDrawable.notNull() + && (mDrawable->isVisible() || mIsDummy); +} // call periodically to keep isFullyLoaded up to date. // returns true if the value has changed. @@ -6693,7 +5695,6 @@ BOOL LLVOAvatar::updateIsFullyLoaded() { // a "heuristic" to determine if we have enough avatar data to render // (to avoid rendering a "Ruth" - DEV-3168) - BOOL loading = FALSE; // do we have a shape? @@ -6702,48 +5703,18 @@ BOOL LLVOAvatar::updateIsFullyLoaded() loading = TRUE; } - // - if (mIsSelf) - { - if (!isTextureDefined(TEX_HAIR)) - { - loading = TRUE; - } - } - else if (!isTextureDefined(TEX_LOWER_BAKED) || !isTextureDefined(TEX_UPPER_BAKED) || !isTextureDefined(TEX_HEAD_BAKED)) + if (!isTextureDefined(TEX_LOWER_BAKED) || + !isTextureDefined(TEX_UPPER_BAKED) || + !isTextureDefined(TEX_HEAD_BAKED)) { loading = TRUE; } - // special case to keep nudity off orientation island - - // this is fragilely dependent on the compositing system, - // which gets available textures in the following order: - // - // 1) use the baked texture - // 2) use the layerset - // 3) use the previously baked texture - // - // on orientation island case (3) can show naked skin. - // so we test for that here: - // - // if we were previously unloaded, and we don't have enough - // texture info for our shirt/pants, stay unloaded: - if (!mPreviousFullyLoaded) - { - if ((!isLocalTextureDataAvailable(mBakedTextureData[BAKED_LOWER].mTexLayerSet)) && - (!isTextureDefined(TEX_LOWER_BAKED))) - { - loading = TRUE; - } - - if ((!isLocalTextureDataAvailable(mBakedTextureData[BAKED_UPPER].mTexLayerSet)) && - (!isTextureDefined(TEX_UPPER_BAKED))) - { - loading = TRUE; - } - } + return processFullyLoadedChange(loading); +} - +BOOL LLVOAvatar::processFullyLoadedChange(bool loading) +{ // we wait a little bit before giving the all clear, // to let textures settle down const F32 PAUSE = 1.f; @@ -6767,8 +5738,7 @@ BOOL LLVOAvatar::updateIsFullyLoaded() return changed; } - -BOOL LLVOAvatar::isFullyLoaded() +BOOL LLVOAvatar::isFullyLoaded() const { if (gSavedSettings.getBOOL("RenderUnloadedAvatar")) return TRUE; @@ -6780,177 +5750,11 @@ BOOL LLVOAvatar::isFullyLoaded() //----------------------------------------------------------------------------- // findMotion() //----------------------------------------------------------------------------- -LLMotion* LLVOAvatar::findMotion(const LLUUID& id) +LLMotion* LLVOAvatar::findMotion(const LLUUID& id) const { return mMotionController.findMotion(id); } -// Counts the memory footprint of local textures. -void LLVOAvatar::getLocalTextureByteCount( S32* gl_bytes ) -{ - *gl_bytes = 0; - for( S32 i = 0; i < TEX_NUM_INDICES; i++ ) - { - if (!isIndexLocalTexture((ETextureIndex)i)) continue; - LLViewerImage* image_gl = mLocalTextureData[(ETextureIndex)i].mImage; - if( image_gl ) - { - S32 bytes = (S32)image_gl->getWidth() * image_gl->getHeight() * image_gl->getComponents(); - - if( image_gl->getHasGLTexture() ) - { - *gl_bytes += bytes; - } - } - } -} - - -BOOL LLVOAvatar::bindScratchTexture( LLGLenum format ) -{ - U32 texture_bytes = 0; - GLuint gl_name = getScratchTexName( format, &texture_bytes ); - if( gl_name ) - { - gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_TEXTURE, gl_name); - stop_glerror(); - - F32* last_bind_time = LLVOAvatar::sScratchTexLastBindTime.getIfThere( format ); - if( last_bind_time ) - { - if( *last_bind_time != LLImageGL::sLastFrameTime ) - { - *last_bind_time = LLImageGL::sLastFrameTime; - LLImageGL::updateBoundTexMem(texture_bytes); - } - } - else - { - LLImageGL::updateBoundTexMem(texture_bytes); - LLVOAvatar::sScratchTexLastBindTime.addData( format, new F32(LLImageGL::sLastFrameTime) ); - } - - - return TRUE; - } - else - { - return FALSE; - } -} - - -LLGLuint LLVOAvatar::getScratchTexName( LLGLenum format, U32* texture_bytes ) -{ - S32 components; - GLenum internal_format; - switch( format ) - { - case GL_LUMINANCE: components = 1; internal_format = GL_LUMINANCE8; break; - case GL_ALPHA: components = 1; internal_format = GL_ALPHA8; break; - case GL_COLOR_INDEX: components = 1; internal_format = GL_COLOR_INDEX8_EXT; break; - case GL_LUMINANCE_ALPHA: components = 2; internal_format = GL_LUMINANCE8_ALPHA8; break; - case GL_RGB: components = 3; internal_format = GL_RGB8; break; - case GL_RGBA: components = 4; internal_format = GL_RGBA8; break; - default: llassert(0); components = 4; internal_format = GL_RGBA8; break; - } - - *texture_bytes = components * SCRATCH_TEX_WIDTH * SCRATCH_TEX_HEIGHT; - - if( LLVOAvatar::sScratchTexNames.checkData( format ) ) - { - return *( LLVOAvatar::sScratchTexNames.getData( format ) ); - } - else - { - - LLGLSUIDefault gls_ui; - - U32 name = 0; - LLImageGL::generateTextures(1, &name ); - stop_glerror(); - - gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_TEXTURE, name); - stop_glerror(); - - LLImageGL::setManualImage( - GL_TEXTURE_2D, 0, internal_format, - SCRATCH_TEX_WIDTH, SCRATCH_TEX_HEIGHT, - format, GL_UNSIGNED_BYTE, NULL ); - stop_glerror(); - - gGL.getTexUnit(0)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR); - gGL.getTexUnit(0)->setTextureAddressMode(LLTexUnit::TAM_CLAMP); - stop_glerror(); - - gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); - stop_glerror(); - - LLVOAvatar::sScratchTexNames.addData( format, new LLGLuint( name ) ); - - LLVOAvatar::sScratchTexBytes += *texture_bytes; - LLImageGL::sGlobalTextureMemory += *texture_bytes; - return name; - } -} - - - -//----------------------------------------------------------------------------- -// setLocalTextureTE() -//----------------------------------------------------------------------------- -void LLVOAvatar::setLocTexTE( U8 te, LLViewerImage* image, BOOL set_by_user ) -{ - if( !mIsSelf ) - { - llassert( 0 ); - return; - } - - if( te >= TEX_NUM_INDICES ) - { - llassert(0); - return; - } - - if( getTEImage( te )->getID() == image->getID() ) - { - return; - } - - if (isIndexBakedTexture((ETextureIndex)te)) - { - llassert(0); - return; - } - - LLTexLayerSet* layer_set = getLayerSet((ETextureIndex)te); - if (layer_set) - { - invalidateComposite(layer_set, set_by_user); - } - - setTEImage( te, image ); - updateMeshTextures(); - - if( gAgent.cameraCustomizeAvatar() ) - { - LLVisualParamHint::requestHintUpdates(); - } -} - -void LLVOAvatar::setupComposites() -{ - for (U32 i = 0; i < mBakedTextureData.size(); i++) - { - bool layer_baked = isTextureDefined(mBakedTextureData[i].mTextureIndex); - if (mBakedTextureData[i].mTexLayerSet) - { - mBakedTextureData[i].mTexLayerSet->setUpdatesEnabled( !layer_baked ); - } - } -} - //----------------------------------------------------------------------------- // updateMeshTextures() // Uses the current TE values to set the meshes' and layersets' textures. @@ -6963,25 +5767,25 @@ void LLVOAvatar::updateMeshTextures() // if user has never specified a texture, assign the default for (U32 i=0; i < getNumTEs(); i++) { - const LLViewerImage* te_image = getTEImage(i); + const LLViewerImage* te_image = getImage(i); if(!te_image || te_image->getID().isNull() || (te_image->getID() == IMG_DEFAULT)) { - setTEImage(i, gImageList.getImage(i == TEX_HAIR ? IMG_DEFAULT : IMG_DEFAULT_AVATAR)); // IMG_DEFAULT_AVATAR = a special texture that's never rendered. + setImage(i, gImageList.getImage(i == TEX_HAIR ? IMG_DEFAULT : IMG_DEFAULT_AVATAR)); // IMG_DEFAULT_AVATAR = a special texture that's never rendered. } } - const BOOL self_customizing = mIsSelf && gAgent.cameraCustomizeAvatar(); // During face edit mode, we don't use baked textures - const BOOL other_culled = !mIsSelf && mCulled; + const BOOL self_customizing = isSelf() && gAgent.cameraCustomizeAvatar(); // During face edit mode, we don't use baked textures + const BOOL other_culled = !isSelf() && mCulled; - std::vector<bool> is_layer_baked; - is_layer_baked.resize(mBakedTextureData.size(), false); + std::vector<BOOL> is_layer_baked; + is_layer_baked.resize(mBakedTextureDatas.size(), false); - std::vector<bool> use_lkg_baked_layer; // lkg = "last known good" - use_lkg_baked_layer.resize(mBakedTextureData.size(), false); + std::vector<BOOL> use_lkg_baked_layer; // lkg = "last known good" + use_lkg_baked_layer.resize(mBakedTextureDatas.size(), false); - for (U32 i=0; i < mBakedTextureData.size(); i++) + for (U32 i=0; i < mBakedTextureDatas.size(); i++) { - is_layer_baked[i] = isTextureDefined(mBakedTextureData[i].mTextureIndex); + is_layer_baked[i] = isTextureDefined(mBakedTextureDatas[i].mTextureIndex); if (!other_culled) { @@ -6989,21 +5793,21 @@ void LLVOAvatar::updateMeshTextures() // use the last-known good baked texture until it finish the first // render of the new layerset. use_lkg_baked_layer[i] = (!is_layer_baked[i] - && (mBakedTextureData[i].mLastTextureIndex != IMG_DEFAULT_AVATAR) - && mBakedTextureData[i].mTexLayerSet - && !mBakedTextureData[i].mTexLayerSet->getComposite()->isInitialized()); + && (mBakedTextureDatas[i].mLastTextureIndex != IMG_DEFAULT_AVATAR) + && mBakedTextureDatas[i].mTexLayerSet + && !mBakedTextureDatas[i].mTexLayerSet->getComposite()->isInitialized()); if (use_lkg_baked_layer[i]) { - mBakedTextureData[i].mTexLayerSet->setUpdatesEnabled(TRUE); + mBakedTextureDatas[i].mTexLayerSet->setUpdatesEnabled(TRUE); } } else { use_lkg_baked_layer[i] = (!is_layer_baked[i] - && mBakedTextureData[i].mLastTextureIndex != IMG_DEFAULT_AVATAR); - if (mBakedTextureData[i].mTexLayerSet) + && mBakedTextureDatas[i].mLastTextureIndex != IMG_DEFAULT_AVATAR); + if (mBakedTextureDatas[i].mTexLayerSet) { - mBakedTextureData[i].mTexLayerSet->destroyComposite(); + mBakedTextureDatas[i].mTexLayerSet->destroyComposite(); } } @@ -7016,27 +5820,28 @@ void LLVOAvatar::updateMeshTextures() llwarns << "updateMeshTextures: invalid host for object: " << getID() << llendl; } - for (U32 i=0; i < mBakedTextureData.size(); i++) + for (U32 i=0; i < mBakedTextureDatas.size(); i++) { if (use_lkg_baked_layer[i] && !self_customizing ) { - LLViewerImage* baked_img = gImageList.getImageFromHost( mBakedTextureData[i].mLastTextureIndex, target_host ); - for (U32 k=0; k < mBakedTextureData[i].mMeshes.size(); k++) + LLViewerImage* baked_img = gImageList.getImageFromHost( mBakedTextureDatas[i].mLastTextureIndex, target_host ); + mBakedTextureDatas[i].mIsUsed = TRUE; + for (U32 k=0; k < mBakedTextureDatas[i].mMeshes.size(); k++) { - mBakedTextureData[i].mMeshes[k]->setTexture( baked_img ); + mBakedTextureDatas[i].mMeshes[k]->setTexture( baked_img ); } } else if (!self_customizing && is_layer_baked[i]) { - LLViewerImage* baked_img = getTEImage( mBakedTextureData[i].mTextureIndex ); - if( baked_img->getID() == mBakedTextureData[i].mLastTextureIndex ) + LLViewerImage* baked_img = getImage( mBakedTextureDatas[i].mTextureIndex ); + if( baked_img->getID() == mBakedTextureDatas[i].mLastTextureIndex ) { // Even though the file may not be finished loading, we'll consider it loaded and use it (rather than doing compositing). useBakedTexture( baked_img->getID() ); } else { - mBakedTextureData[i].mIsLoaded = FALSE; + mBakedTextureDatas[i].mIsLoaded = FALSE; if ( (i == BAKED_HEAD) || (i == BAKED_UPPER) || (i == BAKED_LOWER) ) { baked_img->setLoadedCallback(onBakedTextureMasksLoaded, MORPH_MASK_REQUESTED_DISCARD, TRUE, TRUE, new LLTextureMaskData( mID )); @@ -7044,136 +5849,63 @@ void LLVOAvatar::updateMeshTextures() baked_img->setLoadedCallback(onBakedTextureLoaded, SWITCH_TO_BAKED_DISCARD, FALSE, FALSE, new LLUUID( mID ) ); } } - else if (mBakedTextureData[i].mTexLayerSet + else if (mBakedTextureDatas[i].mTexLayerSet && !other_culled - && (i != BAKED_HAIR || is_layer_baked[i] || mIsSelf)) // ! BACKWARDS COMPATIBILITY ! workaround for old viewers. + && (i != BAKED_HAIR || is_layer_baked[i] || isSelf())) // ! BACKWARDS COMPATIBILITY ! workaround for old viewers. { - mBakedTextureData[i].mTexLayerSet->createComposite(); - mBakedTextureData[i].mTexLayerSet->setUpdatesEnabled( TRUE ); - for (U32 k=0; k < mBakedTextureData[i].mMeshes.size(); k++) + mBakedTextureDatas[i].mTexLayerSet->createComposite(); + mBakedTextureDatas[i].mTexLayerSet->setUpdatesEnabled( TRUE ); + mBakedTextureDatas[i].mIsUsed = FALSE; + for (U32 k=0; k < mBakedTextureDatas[i].mMeshes.size(); k++) { - mBakedTextureData[i].mMeshes[k]->setLayerSet( mBakedTextureData[i].mTexLayerSet ); + mBakedTextureDatas[i].mMeshes[k]->setLayerSet( mBakedTextureDatas[i].mTexLayerSet ); } } } // ! BACKWARDS COMPATIBILITY ! // Workaround for viewing avatars from old viewers that haven't baked hair textures. - // if (!isTextureDefined(mBakedTextureData[BAKED_HAIR].mTextureIndex)) - if (!is_layer_baked[BAKED_HAIR]) + if (!is_layer_baked[BAKED_HAIR] || self_customizing) { const LLColor4 color = mTexHairColor ? mTexHairColor->getColor() : LLColor4(1,1,1,1); - LLViewerImage* hair_img = getTEImage( TEX_HAIR ); - for (U32 i = 0; i < mBakedTextureData[BAKED_HAIR].mMeshes.size(); i++) + LLViewerImage* hair_img = getImage( TEX_HAIR ); + for (U32 i = 0; i < mBakedTextureDatas[BAKED_HAIR].mMeshes.size(); i++) { - mBakedTextureData[BAKED_HAIR].mMeshes[i]->setColor( color.mV[VX], color.mV[VY], color.mV[VZ], color.mV[VW] ); - mBakedTextureData[BAKED_HAIR].mMeshes[i]->setTexture( hair_img ); + mBakedTextureDatas[BAKED_HAIR].mMeshes[i]->setColor( color.mV[VX], color.mV[VY], color.mV[VZ], color.mV[VW] ); + mBakedTextureDatas[BAKED_HAIR].mMeshes[i]->setTexture( hair_img ); } - mHasBakedHair = FALSE; } - else - { - for (U32 i = 0; i < mBakedTextureData[BAKED_HAIR].mMeshes.size(); i++) - { - mBakedTextureData[BAKED_HAIR].mMeshes[i]->setColor( 1.f, 1.f, 1.f, 1.f ); - } - mHasBakedHair = TRUE; - } - /* // Head - BOOL head_baked_ready = (is_layer_baked[BAKED_HEAD] && mBakedTextureData[BAKED_HEAD].mIsLoaded) || other_culled; - setLocalTexture( TEX_HEAD_BODYPAINT, getTEImage( TEX_HEAD_BODYPAINT ), head_baked_ready ); */ - for (LLVOAvatarDictionary::baked_map_t::const_iterator baked_iter = LLVOAvatarDictionary::getInstance()->getBakedTextures().begin(); + // Turn on alpha masking correctly for yourself and other avatars on 1.23+ + mSupportsAlphaLayers = isSelf() || is_layer_baked[BAKED_HAIR]; + + for (LLVOAvatarDictionary::BakedTextures::const_iterator baked_iter = LLVOAvatarDictionary::getInstance()->getBakedTextures().begin(); baked_iter != LLVOAvatarDictionary::getInstance()->getBakedTextures().end(); baked_iter++) { const EBakedTextureIndex baked_index = baked_iter->first; - const LLVOAvatarDictionary::BakedDictionaryEntry *baked_dict = baked_iter->second; + const LLVOAvatarDictionary::BakedEntry *baked_dict = baked_iter->second; for (texture_vec_t::const_iterator local_tex_iter = baked_dict->mLocalTextures.begin(); local_tex_iter != baked_dict->mLocalTextures.end(); local_tex_iter++) { const ETextureIndex texture_index = *local_tex_iter; - const BOOL is_baked_ready = (is_layer_baked[baked_index] && mBakedTextureData[baked_index].mIsLoaded) || other_culled; - setLocalTexture(texture_index, getTEImage(texture_index), is_baked_ready ); + const BOOL is_baked_ready = (is_layer_baked[baked_index] && mBakedTextureDatas[baked_index].mIsLoaded) || other_culled; + setLocalTexture(texture_index, getImage(texture_index), is_baked_ready ); } } removeMissingBakedTextures(); } +// virtual //----------------------------------------------------------------------------- // setLocalTexture() //----------------------------------------------------------------------------- -void LLVOAvatar::setLocalTexture( ETextureIndex index, LLViewerImage* tex, BOOL baked_version_ready ) -{ - if (!isIndexLocalTexture(index)) return; - - S32 desired_discard = mIsSelf ? 0 : 2; - LocalTextureData &local_tex_data = mLocalTextureData[index]; - if (!baked_version_ready) - { - if (tex != local_tex_data.mImage || local_tex_data.mIsBakedReady) - { - local_tex_data.mDiscard = MAX_DISCARD_LEVEL+1; - } - if (tex->getID() != IMG_DEFAULT_AVATAR) - { - if (local_tex_data.mDiscard > desired_discard) - { - S32 tex_discard = tex->getDiscardLevel(); - if (tex_discard >= 0 && tex_discard <= desired_discard) - { - local_tex_data.mDiscard = tex_discard; - if( mIsSelf && !gAgent.cameraCustomizeAvatar() ) - { - requestLayerSetUpdate( index ); - } - else if( mIsSelf && gAgent.cameraCustomizeAvatar() ) - { - LLVisualParamHint::requestHintUpdates(); - } - } - else - { - tex->setLoadedCallback( onLocalTextureLoaded, desired_discard, TRUE, FALSE, new LLAvatarTexData(getID(), index) ); - } - } - tex->setMinDiscardLevel(desired_discard); - } - } - local_tex_data.mIsBakedReady = baked_version_ready; - local_tex_data.mImage = tex; -} - -//----------------------------------------------------------------------------- -// requestLayerSetUploads() -//----------------------------------------------------------------------------- -void LLVOAvatar::requestLayerSetUploads() +void LLVOAvatar::setLocalTexture(ETextureIndex type, LLViewerImage* tex, BOOL baked_version_exists, U32 index) { - for (U32 i = 0; i < mBakedTextureData.size(); i++) - { - bool layer_baked = isTextureDefined(mBakedTextureData[i].mTextureIndex); - if ( !layer_baked && mBakedTextureData[i].mTexLayerSet ) - { - mBakedTextureData[i].mTexLayerSet->requestUpload(); - } - } -} - - -//----------------------------------------------------------------------------- -// setCompositeUpdatesEnabled() -//----------------------------------------------------------------------------- -void LLVOAvatar::setCompositeUpdatesEnabled( BOOL b ) -{ - for (U32 i = 0; i < mBakedTextureData.size(); i++) - { - if (mBakedTextureData[i].mTexLayerSet ) - { - mBakedTextureData[i].mTexLayerSet->setUpdatesEnabled( b ); - } - } + // invalid for anyone but self + llassert(0); } void LLVOAvatar::addChat(const LLChat& chat) @@ -7205,313 +5937,171 @@ void LLVOAvatar::clearChat() mChats.clear(); } -S32 LLVOAvatar::getLocalDiscardLevel( ETextureIndex index ) +// adds a morph mask to the appropriate baked texture structure +void LLVOAvatar::addMaskedMorph(EBakedTextureIndex index, LLPolyMorphTarget* morph_target, BOOL invert, std::string layer) { - if (!isIndexLocalTexture(index)) return FALSE; - - LocalTextureData &local_tex_data = mLocalTextureData[index]; - if (index >= 0 - && getLocalTextureID(index) != IMG_DEFAULT_AVATAR - && !local_tex_data.mImage->isMissingAsset()) + if (index < BAKED_NUM_INDICES) { - return local_tex_data.mImage->getDiscardLevel(); - } - else - { - // We don't care about this (no image associated with the layer) treat as fully loaded. - return 0; + LLMaskedMorph *morph = new LLMaskedMorph(morph_target, invert, layer); + mBakedTextureDatas[index].mMaskedMorphs.push_front(morph); } } -//----------------------------------------------------------------------------- -// isLocalTextureDataFinal() -// Returns true if the highest quality discard level exists for every texture -// in the layerset. -//----------------------------------------------------------------------------- -BOOL LLVOAvatar::isLocalTextureDataFinal( LLTexLayerSet* layerset ) +// invalidates morph masks for a given layer. Don't pass a parameter to invalidate all morph masks. +void LLVOAvatar::invalidateMorphMasks(LLVOAvatarDefines::EBakedTextureIndex index) { - for (U32 i = 0; i < mBakedTextureData.size(); i++) - { - if (layerset == mBakedTextureData[i].mTexLayerSet) - { - const LLVOAvatarDictionary::BakedDictionaryEntry *baked_dict = LLVOAvatarDictionary::getInstance()->getBakedTexture((EBakedTextureIndex)i); - for (texture_vec_t::const_iterator local_tex_iter = baked_dict->mLocalTextures.begin(); - local_tex_iter != baked_dict->mLocalTextures.end(); - local_tex_iter++) - { - if (getLocalDiscardLevel(*local_tex_iter) != 0) - { - return FALSE; - } - } - return TRUE; - } - } - - llassert(0); - return FALSE; + setMorphMasksValid(FALSE, index); } -//----------------------------------------------------------------------------- -// isLocalTextureDataAvailable() -// Returns true if at least the lowest quality discard level exists for every texture -// in the layerset. -//----------------------------------------------------------------------------- -BOOL LLVOAvatar::isLocalTextureDataAvailable( LLTexLayerSet* layerset ) +// updates morph masks to be a value for a given layer. Don't pass an argument to set value for all morph masks +void LLVOAvatar::setMorphMasksValid(BOOL new_status, LLVOAvatarDefines::EBakedTextureIndex index) { - /* if( layerset == mBakedTextureData[BAKED_HEAD].mTexLayerSet ) - return getLocalDiscardLevel( TEX_HEAD_BODYPAINT ) >= 0; */ - for (LLVOAvatarDictionary::baked_map_t::const_iterator baked_iter = LLVOAvatarDictionary::getInstance()->getBakedTextures().begin(); - baked_iter != LLVOAvatarDictionary::getInstance()->getBakedTextures().end(); - baked_iter++) + if (index == BAKED_NUM_INDICES) { - const EBakedTextureIndex baked_index = baked_iter->first; - if (layerset == mBakedTextureData[baked_index].mTexLayerSet) + for (U8 tex = 0; tex < (U8)BAKED_NUM_INDICES; tex++) { - bool ret = true; - const LLVOAvatarDictionary::BakedDictionaryEntry *baked_dict = baked_iter->second; - for (texture_vec_t::const_iterator local_tex_iter = baked_dict->mLocalTextures.begin(); - local_tex_iter != baked_dict->mLocalTextures.end(); - local_tex_iter++) - { - ret &= (getLocalDiscardLevel(*local_tex_iter) >= 0); - } - return ret; + mBakedTextureDatas[tex].mMorphMasksValid = new_status; } - } - llassert(0); - return FALSE; -} - - -//----------------------------------------------------------------------------- -// getBakedTE() -// Used by the LayerSet. (Layer sets don't in general know what textures depend on them.) -//----------------------------------------------------------------------------- -ETextureIndex LLVOAvatar::getBakedTE( LLTexLayerSet* layerset ) -{ - for (U32 i = 0; i < mBakedTextureData.size(); i++) + } + else if (index < BAKED_NUM_INDICES) { - if (layerset == mBakedTextureData[i].mTexLayerSet ) - { - return mBakedTextureData[i].mTextureIndex; - } + mBakedTextureDatas[index].mMorphMasksValid = new_status; } - - llassert(0); - return TEX_HEAD_BAKED; } -//----------------------------------------------------------------------------- -// setNewBakedTexture() -// A new baked texture has been successfully uploaded and we can start using it now. -//----------------------------------------------------------------------------- -void LLVOAvatar::setNewBakedTexture( ETextureIndex te, const LLUUID& uuid ) +// returns TRUE if morph masks are present and not valid for a given baked texture, FALSE otherwise +BOOL LLVOAvatar::morphMaskNeedsUpdate(LLVOAvatarDefines::EBakedTextureIndex index) { - // Baked textures live on other sims. - LLHost target_host = getObjectHost(); - setTEImage( te, gImageList.getImageFromHost( uuid, target_host ) ); - updateMeshTextures(); - dirtyMesh(); - - - LLVOAvatar::cullAvatarsByPixelArea(); - - /* switch(te) - case TEX_HEAD_BAKED: - llinfos << "New baked texture: HEAD" << llendl; */ - const LLVOAvatarDictionary::TextureDictionaryEntry *text_dict = LLVOAvatarDictionary::getInstance()->getTexture(te); - if (text_dict->mIsBakedTexture) - { - llinfos << "New baked texture: " << text_dict->mName << " UUID: " << uuid <<llendl; - mBakedTextureData[text_dict->mBakedTextureIndex].mTexLayerSet->requestUpdate(); - } - else + if (index >= BAKED_NUM_INDICES) { - llwarns << "New baked texture: unknown te " << te << llendl; + return FALSE; } - - // dumpAvatarTEs( "setNewBakedTexture() send" ); - // RN: throttle uploads - if (!hasPendingBakedUploads()) + + if (!mBakedTextureDatas[index].mMaskedMorphs.empty() && !mBakedTextureDatas[index].mMorphMasksValid) { - gAgent.sendAgentSetAppearance(); + return TRUE; } + + return FALSE; } -bool LLVOAvatar::hasPendingBakedUploads() +void LLVOAvatar::applyMorphMask(U8* tex_data, S32 width, S32 height, S32 num_components, LLVOAvatarDefines::EBakedTextureIndex index) { - for (U32 i = 0; i < mBakedTextureData.size(); i++) + if (index >= BAKED_NUM_INDICES) { - bool upload_pending = (mBakedTextureData[i].mTexLayerSet && mBakedTextureData[i].mTexLayerSet->getComposite()->uploadPending()); - if (upload_pending) - { - return true; - } + llwarns << "invalid baked texture index passed to applyMorphMask" << llendl; + return; } - return false; -} -//----------------------------------------------------------------------------- -// setCachedBakedTexture() -// A baked texture id was received from a cache query, make it active -//----------------------------------------------------------------------------- -void LLVOAvatar::setCachedBakedTexture( ETextureIndex te, const LLUUID& uuid ) -{ - setTETexture( te, uuid ); - - /* switch(te) - case TEX_HEAD_BAKED: - if( mHeadLayerSet ) - mHeadLayerSet->cancelUpload(); */ - for (U32 i = 0; i < mBakedTextureData.size(); i++) + for (morph_list_t::const_iterator iter = mBakedTextureDatas[index].mMaskedMorphs.begin(); + iter != mBakedTextureDatas[index].mMaskedMorphs.end(); iter++) { - if ( mBakedTextureData[i].mTextureIndex == te && mBakedTextureData[i].mTexLayerSet) - { - mBakedTextureData[i].mTexLayerSet->cancelUpload(); - } + const LLMaskedMorph* maskedMorph = (*iter); + maskedMorph->mMorphTarget->applyMask(tex_data, width, height, num_components, maskedMorph->mInvert); } } + //----------------------------------------------------------------------------- -// releaseUnneccesaryTextures() +// releaseComponentTextures() // release any component texture UUIDs for which we have a baked texture +// ! BACKWARDS COMPATIBILITY ! +// This is only called for non-self avatars, it can be taken out once component +// textures aren't communicated by non-self avatars. //----------------------------------------------------------------------------- -void LLVOAvatar::releaseUnnecessaryTextures() +void LLVOAvatar::releaseComponentTextures() { - // Backwards Compat: detect if the baked hair texture actually wasn't sent, and if so set to default - if (isTextureDefined(TEX_HAIR_BAKED) && getTEImage(TEX_HAIR_BAKED)->getID() == getTEImage(TEX_SKIRT_BAKED)->getID()) + // ! BACKWARDS COMPATIBILITY ! + // Detect if the baked hair texture actually wasn't sent, and if so set to default + if (isTextureDefined(TEX_HAIR_BAKED) && getImage(TEX_HAIR_BAKED)->getID() == getImage(TEX_SKIRT_BAKED)->getID()) { - if (getTEImage(TEX_HAIR_BAKED)->getID() != IMG_INVISIBLE) + if (getImage(TEX_HAIR_BAKED)->getID() != IMG_INVISIBLE) { // Regression case of messaging system. Expected 21 textures, received 20. last texture is not valid so set to default setTETexture(TEX_HAIR_BAKED, IMG_DEFAULT_AVATAR); - } - } - - for (U8 baked_index = 0; baked_index < BAKED_NUM_INDICES; baked_index++) - { - const LLVOAvatarDictionary::BakedDictionaryEntry * bakedDicEntry = LLVOAvatarDictionary::getInstance()->getBakedTexture((EBakedTextureIndex)baked_index); - // skip if this is a skirt and av is not wearing one, or if we don't have a baked texture UUID - if (!isTextureDefined(bakedDicEntry->mTextureIndex) - && ( (baked_index != BAKED_SKIRT) || isWearingWearableType(WT_SKIRT) )) - { - continue; - } - - for (U8 texture = 0; texture < bakedDicEntry->mLocalTextures.size(); texture++) - { - const U8 te = (ETextureIndex)bakedDicEntry->mLocalTextures[texture]; - setTETexture(te, IMG_DEFAULT_AVATAR); - } - } -} - -//----------------------------------------------------------------------------- -// static -// onCustomizeStart() -//----------------------------------------------------------------------------- -void LLVOAvatar::onCustomizeStart() -{ - // We're no longer doing any baking or invalidating on entering - // appearance editing mode. Leaving function in place in case - // further changes require us to do something at this point - Nyx -} - -//----------------------------------------------------------------------------- -// static -// onCustomizeEnd() -//----------------------------------------------------------------------------- -void LLVOAvatar::onCustomizeEnd() -{ - LLVOAvatar *avatarp = gAgent.getAvatarObject(); - if (avatarp) - { - avatarp->invalidateAll(); - avatarp->requestLayerSetUploads(); + } } -} -void LLVOAvatar::onChangeSelfInvisible(BOOL newvalue) -{ - LLVOAvatar *avatarp = gAgent.getAvatarObject(); - if (avatarp) + for (U8 baked_index = 0; baked_index < BAKED_NUM_INDICES; baked_index++) { - if (newvalue) + const LLVOAvatarDictionary::BakedEntry * bakedDicEntry = LLVOAvatarDictionary::getInstance()->getBakedTexture((EBakedTextureIndex)baked_index); + // skip if this is a skirt and av is not wearing one, or if we don't have a baked texture UUID + if (!isTextureDefined(bakedDicEntry->mTextureIndex) + && ( (baked_index != BAKED_SKIRT) || isWearingWearableType(WT_SKIRT) )) { - // we have just requested to set the avatar's baked textures to invisible - avatarp->setInvisible(TRUE); + continue; } - else + + for (U8 texture = 0; texture < bakedDicEntry->mLocalTextures.size(); texture++) { - avatarp->setInvisible(FALSE); + const U8 te = (ETextureIndex)bakedDicEntry->mLocalTextures[texture]; + setTETexture(te, IMG_DEFAULT_AVATAR); } } } - BOOL LLVOAvatar::teToColorParams( ETextureIndex te, const char* param_name[3] ) { switch( te ) { - case TEX_UPPER_SHIRT: - param_name[0] = "shirt_red"; - param_name[1] = "shirt_green"; - param_name[2] = "shirt_blue"; - break; - - case TEX_LOWER_PANTS: - param_name[0] = "pants_red"; - param_name[1] = "pants_green"; - param_name[2] = "pants_blue"; - break; - - case TEX_LOWER_SHOES: - param_name[0] = "shoes_red"; - param_name[1] = "shoes_green"; - param_name[2] = "shoes_blue"; - break; - - case TEX_LOWER_SOCKS: - param_name[0] = "socks_red"; - param_name[1] = "socks_green"; - param_name[2] = "socks_blue"; - break; - - case TEX_UPPER_JACKET: - case TEX_LOWER_JACKET: - param_name[0] = "jacket_red"; - param_name[1] = "jacket_green"; - param_name[2] = "jacket_blue"; - break; - - case TEX_UPPER_GLOVES: - param_name[0] = "gloves_red"; - param_name[1] = "gloves_green"; - param_name[2] = "gloves_blue"; - break; - - case TEX_UPPER_UNDERSHIRT: - param_name[0] = "undershirt_red"; - param_name[1] = "undershirt_green"; - param_name[2] = "undershirt_blue"; - break; + case TEX_UPPER_SHIRT: + param_name[0] = "shirt_red"; + param_name[1] = "shirt_green"; + param_name[2] = "shirt_blue"; + break; + + case TEX_LOWER_PANTS: + param_name[0] = "pants_red"; + param_name[1] = "pants_green"; + param_name[2] = "pants_blue"; + break; + + case TEX_LOWER_SHOES: + param_name[0] = "shoes_red"; + param_name[1] = "shoes_green"; + param_name[2] = "shoes_blue"; + break; + + case TEX_LOWER_SOCKS: + param_name[0] = "socks_red"; + param_name[1] = "socks_green"; + param_name[2] = "socks_blue"; + break; + + case TEX_UPPER_JACKET: + case TEX_LOWER_JACKET: + param_name[0] = "jacket_red"; + param_name[1] = "jacket_green"; + param_name[2] = "jacket_blue"; + break; + + case TEX_UPPER_GLOVES: + param_name[0] = "gloves_red"; + param_name[1] = "gloves_green"; + param_name[2] = "gloves_blue"; + break; + + case TEX_UPPER_UNDERSHIRT: + param_name[0] = "undershirt_red"; + param_name[1] = "undershirt_green"; + param_name[2] = "undershirt_blue"; + break; - case TEX_LOWER_UNDERPANTS: - param_name[0] = "underpants_red"; - param_name[1] = "underpants_green"; - param_name[2] = "underpants_blue"; - break; - - case TEX_SKIRT: - param_name[0] = "skirt_red"; - param_name[1] = "skirt_green"; - param_name[2] = "skirt_blue"; - break; - - default: - llassert(0); - return FALSE; + case TEX_LOWER_UNDERPANTS: + param_name[0] = "underpants_red"; + param_name[1] = "underpants_green"; + param_name[2] = "underpants_blue"; + break; + + case TEX_SKIRT: + param_name[0] = "skirt_red"; + param_name[1] = "skirt_green"; + param_name[2] = "skirt_blue"; + break; + + default: + llassert(0); + return FALSE; } return TRUE; @@ -7541,141 +6131,53 @@ LLColor4 LLVOAvatar::getClothesColor( ETextureIndex te ) return color; } - - +// static +LLColor4 LLVOAvatar::getDummyColor() +{ + return DUMMY_COLOR; +} void LLVOAvatar::dumpAvatarTEs( const std::string& context ) { /* const char* te_name[] = { "TEX_HEAD_BODYPAINT ", "TEX_UPPER_SHIRT ", */ - llinfos << (mIsSelf ? "Self: " : "Other: ") << context << llendl; - for (LLVOAvatarDictionary::texture_map_t::const_iterator iter = LLVOAvatarDictionary::getInstance()->getTextures().begin(); + llinfos << (isSelf() ? "Self: " : "Other: ") << context << llendl; + for (LLVOAvatarDictionary::Textures::const_iterator iter = LLVOAvatarDictionary::getInstance()->getTextures().begin(); iter != LLVOAvatarDictionary::getInstance()->getTextures().end(); iter++) { - const LLVOAvatarDictionary::TextureDictionaryEntry *text_dict = iter->second; - const LLViewerImage* te_image = getTEImage(iter->first); + const LLVOAvatarDictionary::TextureEntry *texture_dict = iter->second; + const LLViewerImage* te_image = getImage(iter->first); if( !te_image ) { - llinfos << " " << text_dict->mName << ": null ptr" << llendl; + llinfos << " " << texture_dict->mName << ": null ptr" << llendl; } else if( te_image->getID().isNull() ) { - llinfos << " " << text_dict->mName << ": null UUID" << llendl; + llinfos << " " << texture_dict->mName << ": null UUID" << llendl; } else if( te_image->getID() == IMG_DEFAULT ) { - llinfos << " " << text_dict->mName << ": IMG_DEFAULT" << llendl; + llinfos << " " << texture_dict->mName << ": IMG_DEFAULT" << llendl; } else if( te_image->getID() == IMG_DEFAULT_AVATAR ) { - llinfos << " " << text_dict->mName << ": IMG_DEFAULT_AVATAR" << llendl; - } - else - { - llinfos << " " << text_dict->mName << ": " << te_image->getID() << llendl; - } - } -} - -//----------------------------------------------------------------------------- -// updateAttachmentVisibility() -//----------------------------------------------------------------------------- -void LLVOAvatar::updateAttachmentVisibility(U32 camera_mode) -{ - for (attachment_map_t::iterator iter = mAttachmentPoints.begin(); - iter != mAttachmentPoints.end(); ) - { - attachment_map_t::iterator curiter = iter++; - LLViewerJointAttachment* attachment = curiter->second; - if (attachment->getIsHUDAttachment()) - { - attachment->setAttachmentVisibility(TRUE); + llinfos << " " << texture_dict->mName << ": IMG_DEFAULT_AVATAR" << llendl; } else { - switch (camera_mode) - { - case CAMERA_MODE_MOUSELOOK: - if (LLVOAvatar::sVisibleInFirstPerson && attachment->getVisibleInFirstPerson()) - { - attachment->setAttachmentVisibility(TRUE); - } - else - { - attachment->setAttachmentVisibility(FALSE); - } - break; - default: - attachment->setAttachmentVisibility(TRUE); - break; - } - } - } -} - -// Given a texture entry, determine which wearable type owns it. - -// static -LLUUID LLVOAvatar::getDefaultTEImageID(ETextureIndex index ) -{ - /* switch( index ) - case TEX_UPPER_SHIRT: return LLUUID( gSavedSettings.getString("UIImgDefaultShirtUUID") ); */ - const LLVOAvatarDictionary::TextureDictionaryEntry *text_dict = LLVOAvatarDictionary::getInstance()->getTexture(index); - const std::string &default_image_name = text_dict->mDefaultImageName; - if (default_image_name == "") - { - return IMG_DEFAULT_AVATAR; - } - else - { - return LLUUID(gSavedSettings.getString(default_image_name)); - } -} - - -void LLVOAvatar::setInvisible(BOOL newvalue) -{ - if (newvalue) - { - setCompositeUpdatesEnabled(FALSE); - for (U32 i = 0; i < mBakedTextureData.size(); i++ ) - { - setNewBakedTexture(mBakedTextureData[i].mTextureIndex, IMG_INVISIBLE); + llinfos << " " << texture_dict->mName << ": " << te_image->getID() << llendl; } - gAgent.sendAgentSetAppearance(); - } - else - { - setCompositeUpdatesEnabled(TRUE); - invalidateAll(); - requestLayerSetUploads(); - gAgent.sendAgentSetAppearance(); } } -LLColor4 LLVOAvatar::getDummyColor() -{ - return DUMMY_COLOR; -} - -// Given a texture entry, determine which wearable type owns it. -// static -EWearableType LLVOAvatar::getTEWearableType(ETextureIndex index ) -{ - /* switch(index) - case TEX_UPPER_SHIRT: - return WT_SHIRT; */ - return LLVOAvatarDictionary::getInstance()->getTexture(index)->mWearableType; -} - // Unlike most wearable functions, this works for both self and other. -BOOL LLVOAvatar::isWearingWearableType( EWearableType type ) +BOOL LLVOAvatar::isWearingWearableType(EWearableType type) const { if (mIsDummy) return TRUE; - switch( type ) + switch(type) { case WT_SHAPE: case WT_SKIN: @@ -7689,16 +6191,16 @@ BOOL LLVOAvatar::isWearingWearableType( EWearableType type ) /* switch(type) case WT_SHIRT: indicator_te = TEX_UPPER_SHIRT; */ - for (LLVOAvatarDictionary::texture_map_t::const_iterator tex_iter = LLVOAvatarDictionary::getInstance()->getTextures().begin(); + for (LLVOAvatarDictionary::Textures::const_iterator tex_iter = LLVOAvatarDictionary::getInstance()->getTextures().begin(); tex_iter != LLVOAvatarDictionary::getInstance()->getTextures().end(); tex_iter++) { const LLVOAvatarDefines::ETextureIndex index = tex_iter->first; - const LLVOAvatarDictionary::TextureDictionaryEntry *text_dict = tex_iter->second; - if (text_dict->mWearableType == type) + const LLVOAvatarDictionary::TextureEntry *texture_dict = tex_iter->second; + if (texture_dict->mWearableType == type) { // If you're checking your own clothing, check the component texture - if (mIsSelf) + if (isSelf()) { if (isTextureDefined(index)) { @@ -7715,23 +6217,10 @@ BOOL LLVOAvatar::isWearingWearableType( EWearableType type ) // NOTE: this is a poor substitute if you actually want to know about individual pieces of clothing // this works for detecting a skirt (most important), but is ineffective at any piece of clothing that // gets baked into a texture that always exists (upper or lower). - const std::string name = text_dict->mName; - for (LLVOAvatarDictionary::baked_map_t::const_iterator iter = LLVOAvatarDictionary::getInstance()->getBakedTextures().begin(); - iter != LLVOAvatarDictionary::getInstance()->getBakedTextures().end(); - iter++) + if (texture_dict->mIsUsedByBakedTexture) { - const LLVOAvatarDictionary::BakedDictionaryEntry *baked_dict = iter->second; - if (baked_dict->mName == name) - { - if (isTextureDefined(baked_dict->mTextureIndex)) - { - return TRUE; - } - else - { - return FALSE; - } - } + const EBakedTextureIndex baked_index = texture_dict->mBakedTextureIndex; + return isTextureDefined(LLVOAvatarDictionary::getInstance()->getBakedTexture(baked_index)->mTextureIndex); } return FALSE; } @@ -7739,41 +6228,6 @@ BOOL LLVOAvatar::isWearingWearableType( EWearableType type ) return FALSE; } -//----------------------------------------------------------------------------- -// updatedWearable( EWearableType type ) -// forces an update to any baked textures relevant to type. -// Should be called only on saving the wearable -//----------------------------------------------------------------------------- -void LLVOAvatar::wearableUpdated( EWearableType type ) -{ - for (LLVOAvatarDictionary::wearable_map_t::const_iterator wearable_iter = LLVOAvatarDictionary::getInstance()->getWearables().begin(); - wearable_iter != LLVOAvatarDictionary::getInstance()->getWearables().end(); - wearable_iter++) - { - const LLVOAvatarDictionary::WearableDictionaryEntry *wearable_dict = wearable_iter->second; - const LLVOAvatarDefines::EBakedTextureIndex index = wearable_iter->first; - if (wearable_dict) - { - for (LLVOAvatarDefines::wearables_vec_t::const_iterator type_iter = wearable_dict->mWearablesVec.begin(); - type_iter != wearable_dict->mWearablesVec.end(); - type_iter++) - { - const EWearableType comp_type = *type_iter; - if (comp_type == type) - { - if (mBakedTextureData[index].mTexLayerSet) - { - mBakedTextureData[index].mTexLayerSet->requestUpdate(); - mBakedTextureData[index].mTexLayerSet->requestUpload(); - } - break; - } - } - } - } -} - - //----------------------------------------------------------------------------- // clampAttachmentPositions() //----------------------------------------------------------------------------- @@ -7852,16 +6306,16 @@ void LLVOAvatar::onFirstTEMessageReceived() { mFirstTEMessageReceived = TRUE; - for (U32 i = 0; i < mBakedTextureData.size(); i++) + for (U32 i = 0; i < mBakedTextureDatas.size(); i++) { - bool layer_baked = isTextureDefined(mBakedTextureData[i].mTextureIndex); + const BOOL layer_baked = isTextureDefined(mBakedTextureDatas[i].mTextureIndex); // Use any baked textures that we have even if they haven't downloaded yet. // (That is, don't do a transition from unbaked to baked.) if (layer_baked) { - LLViewerImage* image = getTEImage( mBakedTextureData[i].mTextureIndex ); - mBakedTextureData[i].mLastTextureIndex = image->getID(); + LLViewerImage* image = getImage( mBakedTextureDatas[i].mTextureIndex ); + mBakedTextureDatas[i].mLastTextureIndex = image->getID(); // If we have more than one texture for the other baked layers, we'll want to call this for them too. if ( (i == BAKED_HEAD) || (i == BAKED_UPPER) || (i == BAKED_LOWER) ) { @@ -7887,13 +6341,13 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys ) } LLMemType mt(LLMemType::MTYPE_AVATAR); - + // llinfos << "processAvatarAppearance start " << mID << llendl; BOOL is_first_appearance_message = !mFirstAppearanceMessageReceived; mFirstAppearanceMessageReceived = TRUE; - if( mIsSelf ) + if( isSelf() ) { llwarns << "Received AvatarAppearance for self" << llendl; if( mFirstTEMessageReceived ) @@ -7910,19 +6364,23 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys ) ESex old_sex = getSex(); -// llinfos << "ady LLVOAvatar::processAvatarAppearance()" << llendl; +// llinfos << "LLVOAvatar::processAvatarAppearance()" << llendl; // dumpAvatarTEs( "PRE processAvatarAppearance()" ); unpackTEMessage(mesgsys, _PREHASH_ObjectData); // dumpAvatarTEs( "POST processAvatarAppearance()" ); - //llinfos << "Received AvatarAppearance: " << (mIsSelf ? "(self): " : "(other): ") << std::endl << - // (isTextureDefined(TEX_HEAD_BAKED) ? "HEAD " : "head " ) << (getTEImage(TEX_HEAD_BAKED)->getID()) << std::endl << - // (isTextureDefined(TEX_UPPER_BAKED) ? "UPPER " : "upper " ) << (getTEImage(TEX_UPPER_BAKED)->getID()) << std::endl << - // (isTextureDefined(TEX_LOWER_BAKED) ? "LOWER " : "lower " ) << (getTEImage(TEX_LOWER_BAKED)->getID()) << std::endl << - // (isTextureDefined(TEX_SKIRT_BAKED) ? "SKIRT " : "skirt " ) << (getTEImage(TEX_SKIRT_BAKED)->getID()) << std::endl << - // (isTextureDefined(TEX_HAIR_BAKED) ? "HAIR" : "hair " ) << (getTEImage(TEX_HAIR_BAKED)->getID()) << std::endl << - // (isTextureDefined(TEX_EYES_BAKED) ? "EYES" : "eyes" ) << (getTEImage(TEX_EYES_BAKED)->getID()) << llendl ; - + // prevent the overwriting of valid baked textures with invalid baked textures + for (U8 baked_index = 0; baked_index < mBakedTextureDatas.size(); baked_index++) + { + if (!isTextureDefined(mBakedTextureDatas[baked_index].mTextureIndex) + && mBakedTextureDatas[baked_index].mLastTextureIndex != IMG_DEFAULT + && baked_index != BAKED_SKIRT) + { + setTEImage(mBakedTextureDatas[baked_index].mTextureIndex, gImageList.getImage(mBakedTextureDatas[baked_index].mLastTextureIndex)); + } + } + + if( !mFirstTEMessageReceived ) { onFirstTEMessageReceived(); @@ -7930,9 +6388,11 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys ) setCompositeUpdatesEnabled( FALSE ); - if (!mIsSelf) + // ! BACKWARDS COMPATIBILITY ! + // Non-self avatars will no longer have component textures + if (!isSelf()) { - releaseUnnecessaryTextures(); + releaseComponentTextures(); } updateMeshTextures(); // enables updates for laysets without baked textures. @@ -8092,39 +6552,32 @@ void LLVOAvatar::onBakedTextureMasksLoaded( BOOL success, LLViewerImage *src_vi, gGL.getTexUnit(0)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR); /* if( id == head_baked->getID() ) - if (self->mBakedTextureData[BAKED_HEAD].mTexLayerSet) + if (self->mBakedTextureDatas[BAKED_HEAD].mTexLayerSet) //llinfos << "onBakedTextureMasksLoaded for head " << id << " discard = " << discard_level << llendl; - self->mBakedTextureData[BAKED_HEAD].mTexLayerSet->applyMorphMask(aux_src->getData(), aux_src->getWidth(), aux_src->getHeight(), 1); + self->mBakedTextureDatas[BAKED_HEAD].mTexLayerSet->applyMorphMask(aux_src->getData(), aux_src->getWidth(), aux_src->getHeight(), 1); maskData->mLastDiscardLevel = discard_level; */ - bool found_texture_id = false; - for (LLVOAvatarDictionary::texture_map_t::const_iterator iter = LLVOAvatarDictionary::getInstance()->getTextures().begin(); + BOOL found_texture_id = false; + for (LLVOAvatarDictionary::Textures::const_iterator iter = LLVOAvatarDictionary::getInstance()->getTextures().begin(); iter != LLVOAvatarDictionary::getInstance()->getTextures().end(); iter++) { - const LLVOAvatarDictionary::TextureDictionaryEntry *text_dict = iter->second; - if (text_dict->mIsUsedByBakedTexture) + const LLVOAvatarDictionary::TextureEntry *texture_dict = iter->second; + if (texture_dict->mIsUsedByBakedTexture) { const ETextureIndex texture_index = iter->first; - const LLViewerImage *baked_img = self->getTEImage(texture_index); + const LLViewerImage *baked_img = self->getImage(texture_index); if (id == baked_img->getID()) { - const EBakedTextureIndex baked_index = text_dict->mBakedTextureIndex; - if (self->mBakedTextureData[baked_index].mTexLayerSet) - { - //llinfos << "onBakedTextureMasksLoaded for " << text_dict->mName << " " << id << " discard = " << discard_level << llendl; - self->mBakedTextureData[baked_index].mTexLayerSet->applyMorphMask(aux_src->getData(), aux_src->getWidth(), aux_src->getHeight(), 1); - maskData->mLastDiscardLevel = discard_level; - if (self->mBakedTextureData[baked_index].mMaskTexName) - { - LLImageGL::deleteTextures(1, &(self->mBakedTextureData[baked_index].mMaskTexName)); - } - self->mBakedTextureData[baked_index].mMaskTexName = gl_name; - } - else + const EBakedTextureIndex baked_index = texture_dict->mBakedTextureIndex; + self->applyMorphMask(aux_src->getData(), aux_src->getWidth(), aux_src->getHeight(), 1, baked_index); + maskData->mLastDiscardLevel = discard_level; + if (self->mBakedTextureDatas[baked_index].mMaskTexName) { - llwarns << "onBakedTextureMasksLoaded: no LayerSet for " << text_dict->mName << "." << llendl; + LLImageGL::deleteTextures(1, &(self->mBakedTextureDatas[baked_index].mMaskTexName)); } + + self->mBakedTextureDatas[baked_index].mMaskTexName = gl_name; found_texture_id = true; break; } @@ -8199,27 +6652,39 @@ void LLVOAvatar::useBakedTexture( const LLUUID& id ) mLastHeadBakedID = id; mHeadMesh0.setTexture( head_baked ); mHeadMesh1.setTexture( head_baked ); */ - for (U32 i = 0; i < mBakedTextureData.size(); i++) + for (U32 i = 0; i < mBakedTextureDatas.size(); i++) { - LLViewerImage* image_baked = getTEImage( mBakedTextureData[i].mTextureIndex ); + LLViewerImage* image_baked = getImage( mBakedTextureDatas[i].mTextureIndex ); if (id == image_baked->getID()) { - mBakedTextureData[i].mIsLoaded = true; - mBakedTextureData[i].mLastTextureIndex = id; - for (U32 k = 0; k < mBakedTextureData[i].mMeshes.size(); k++) + mBakedTextureDatas[i].mIsLoaded = true; + mBakedTextureDatas[i].mLastTextureIndex = id; + mBakedTextureDatas[i].mIsUsed = true; + for (U32 k = 0; k < mBakedTextureDatas[i].mMeshes.size(); k++) { - mBakedTextureData[i].mMeshes[k]->setTexture( image_baked ); + mBakedTextureDatas[i].mMeshes[k]->setTexture( image_baked ); } - if (mBakedTextureData[i].mTexLayerSet) + if (mBakedTextureDatas[i].mTexLayerSet) { - mBakedTextureData[i].mTexLayerSet->destroyComposite(); + mBakedTextureDatas[i].mTexLayerSet->destroyComposite(); } - const LLVOAvatarDictionary::BakedDictionaryEntry *baked_dict = LLVOAvatarDictionary::getInstance()->getBakedTexture((EBakedTextureIndex)i); + const LLVOAvatarDictionary::BakedEntry *baked_dict = LLVOAvatarDictionary::getInstance()->getBakedTexture((EBakedTextureIndex)i); for (texture_vec_t::const_iterator local_tex_iter = baked_dict->mLocalTextures.begin(); local_tex_iter != baked_dict->mLocalTextures.end(); local_tex_iter++) { - setLocalTexture(*local_tex_iter, getTEImage(*local_tex_iter), TRUE); + setLocalTexture(*local_tex_iter, getImage(*local_tex_iter), TRUE); + } + + // ! BACKWARDS COMPATIBILITY ! + // Workaround for viewing avatars from old viewers that haven't baked hair textures. + // This is paired with similar code in updateMeshTextures that sets hair mesh color. + if (i == BAKED_HAIR) + { + for (U32 i = 0; i < mBakedTextureDatas[BAKED_HAIR].mMeshes.size(); i++) + { + mBakedTextureDatas[BAKED_HAIR].mMeshes[i]->setColor( 1.f, 1.f, 1.f, 1.f ); + } } } } @@ -8234,7 +6699,7 @@ void LLVOAvatar::dumpArchetypeXML( void* ) LLAPRFile outfile ; outfile.open(gDirUtilp->getExpandedFilename(LL_PATH_CHARACTER,"new archetype.xml"), LL_APR_WB ); apr_file_t* file = outfile.getFileHandle() ; - if( !file ) + if (!file) { return; } @@ -8244,27 +6709,27 @@ void LLVOAvatar::dumpArchetypeXML( void* ) apr_file_printf( file, "\n\t<archetype name=\"???\">\n" ); // only body parts, not clothing. - for( S32 type = WT_SHAPE; type <= WT_EYES; type++ ) + for (S32 type = WT_SHAPE; type <= WT_EYES; type++) { - const std::string& wearable_name = LLWearable::typeToTypeName( (EWearableType) type ); + const std::string& wearable_name = LLWearableDictionary::getTypeName((EWearableType)type); apr_file_printf( file, "\n\t\t<!-- wearable: %s -->\n", wearable_name.c_str() ); - for( LLVisualParam* param = avatar->getFirstVisualParam(); param; param = avatar->getNextVisualParam() ) + for (LLVisualParam* param = avatar->getFirstVisualParam(); param; param = avatar->getNextVisualParam()) { LLViewerVisualParam* viewer_param = (LLViewerVisualParam*)param; if( (viewer_param->getWearableType() == type) && (viewer_param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE) ) { - apr_file_printf( file, "\t\t<param id=\"%d\" name=\"%s\" value=\"%.3f\"/>\n", - viewer_param->getID(), viewer_param->getName().c_str(), viewer_param->getWeight() ); + apr_file_printf(file, "\t\t<param id=\"%d\" name=\"%s\" value=\"%.3f\"/>\n", + viewer_param->getID(), viewer_param->getName().c_str(), viewer_param->getWeight()); } } - for(U8 te = 0; te < TEX_NUM_INDICES; te++) + for (U8 te = 0; te < TEX_NUM_INDICES; te++) { - if( LLVOAvatar::getTEWearableType((ETextureIndex)te) == type ) + if (LLVOAvatarDictionary::getTEWearableType((ETextureIndex)te) == type) { - LLViewerImage* te_image = avatar->getTEImage((ETextureIndex)te); + LLViewerImage* te_image = avatar->getImage((ETextureIndex)te); if( te_image ) { std::string uuid_str; @@ -8279,18 +6744,13 @@ void LLVOAvatar::dumpArchetypeXML( void* ) } -U32 LLVOAvatar::getVisibilityRank() -{ - return mVisibilityRank; -} - void LLVOAvatar::setVisibilityRank(U32 rank) { if (mDrawable.isNull() || mDrawable->isDead()) - { //do nothing + { + // do nothing return; } - mVisibilityRank = rank; } @@ -8299,15 +6759,14 @@ S32 LLVOAvatar::getUnbakedPixelAreaRank() { S32 rank = 1; for (std::vector<LLCharacter*>::iterator iter = LLCharacter::sInstances.begin(); - iter != LLCharacter::sInstances.end(); ++iter) + iter != LLCharacter::sInstances.end(); ++iter) { LLVOAvatar* inst = (LLVOAvatar*) *iter; - if( inst == this ) + if (inst == this) { return rank; } - else - if( !inst->isDead() && !inst->isFullyBaked() ) + else if (!inst->isDead() && !inst->isFullyBaked()) { rank++; } @@ -8319,7 +6778,7 @@ S32 LLVOAvatar::getUnbakedPixelAreaRank() struct CompareScreenAreaGreater { - bool operator()(const LLCharacter* const& lhs, const LLCharacter* const& rhs) + BOOL operator()(const LLCharacter* const& lhs, const LLCharacter* const& rhs) { return lhs->getPixelArea() > rhs->getPixelArea(); } @@ -8333,7 +6792,7 @@ void LLVOAvatar::cullAvatarsByPixelArea() // Update the avatars that have changed status U32 rank = 0; for (std::vector<LLCharacter*>::iterator iter = LLCharacter::sInstances.begin(); - iter != LLCharacter::sInstances.end(); ++iter) + iter != LLCharacter::sInstances.end(); ++iter) { LLVOAvatar* inst = (LLVOAvatar*) *iter; BOOL culled; @@ -8364,7 +6823,7 @@ void LLVOAvatar::cullAvatarsByPixelArea() } S32 grey_avatars = 0; - if ( LLVOAvatar::areAllNearbyInstancesBaked(grey_avatars) ) + if (LLVOAvatar::areAllNearbyInstancesBaked(grey_avatars)) { LLVOAvatar::deleteCachedImages(false); } @@ -8386,144 +6845,6 @@ void LLVOAvatar::cullAvatarsByPixelArea() } } -const LLUUID& LLVOAvatar::grabLocalTexture(ETextureIndex index) -{ - if (canGrabLocalTexture(index)) - { - return getTEImage( index )->getID(); - } - return LLUUID::null; -} - -BOOL LLVOAvatar::canGrabLocalTexture(ETextureIndex index) -{ - // Check if the texture hasn't been baked yet. - if (!isTextureDefined(index)) - { - lldebugs << "getTEImage( " << (U32) index << " )->getID() == IMG_DEFAULT_AVATAR" << llendl; - return FALSE; - } - - if (gAgent.isGodlike()) - return TRUE; - - // Check permissions of textures that show up in the - // baked texture. We don't want people copying people's - // work via baked textures. - /* switch(index) - case TEX_EYES_BAKED: - textures.push_back(TEX_EYES_IRIS); */ - const LLVOAvatarDictionary::TextureDictionaryEntry *text_dict = LLVOAvatarDictionary::getInstance()->getTexture(index); - if (!text_dict->mIsUsedByBakedTexture) return FALSE; - - const EBakedTextureIndex baked_index = text_dict->mBakedTextureIndex; - const LLVOAvatarDictionary::BakedDictionaryEntry *baked_dict = LLVOAvatarDictionary::getInstance()->getBakedTexture(baked_index); - for (texture_vec_t::const_iterator iter = baked_dict->mLocalTextures.begin(); - iter != baked_dict->mLocalTextures.end(); - iter++) - { - const ETextureIndex t_index = (*iter); - lldebugs << "Checking index " << (U32) t_index << llendl; - const LLUUID& texture_id = getTEImage( t_index )->getID(); - if (texture_id != IMG_DEFAULT_AVATAR) - { - // Search inventory for this texture. - LLViewerInventoryCategory::cat_array_t cats; - LLViewerInventoryItem::item_array_t items; - LLAssetIDMatches asset_id_matches(texture_id); - gInventory.collectDescendentsIf(LLUUID::null, - cats, - items, - LLInventoryModel::INCLUDE_TRASH, - asset_id_matches); - - BOOL can_grab = FALSE; - lldebugs << "item count for asset " << texture_id << ": " << items.count() << llendl; - if (items.count()) - { - // search for full permissions version - for (S32 i = 0; i < items.count(); i++) - { - LLInventoryItem* itemp = items[i]; - LLPermissions item_permissions = itemp->getPermissions(); - if ( item_permissions.allowOperationBy( - PERM_MODIFY, gAgent.getID(), gAgent.getGroupID()) && - item_permissions.allowOperationBy( - PERM_COPY, gAgent.getID(), gAgent.getGroupID()) && - item_permissions.allowOperationBy( - PERM_TRANSFER, gAgent.getID(), gAgent.getGroupID()) ) - { - can_grab = TRUE; - break; - } - } - } - if (!can_grab) return FALSE; - } - } - - return TRUE; -} - -void LLVOAvatar::dumpLocalTextures() -{ - llinfos << "Local Textures:" << llendl; - - /* ETextureIndex baked_equiv[] = { - TEX_UPPER_BAKED, - if (isTextureDefined(baked_equiv[i])) */ - for (LLVOAvatarDictionary::texture_map_t::const_iterator iter = LLVOAvatarDictionary::getInstance()->getTextures().begin(); - iter != LLVOAvatarDictionary::getInstance()->getTextures().end(); - iter++) - { - const LLVOAvatarDictionary::TextureDictionaryEntry *text_dict = iter->second; - if (!text_dict->mIsLocalTexture || !text_dict->mIsUsedByBakedTexture) - continue; - - const EBakedTextureIndex baked_index = text_dict->mBakedTextureIndex; - const ETextureIndex baked_equiv = LLVOAvatarDictionary::getInstance()->getBakedTexture(baked_index)->mTextureIndex; - - const std::string &name = text_dict->mName; - const LocalTextureData &local_tex_data = mLocalTextureData[iter->first]; - if (isTextureDefined(baked_equiv)) - { -#if LL_RELEASE_FOR_DOWNLOAD - // End users don't get to trivially see avatar texture IDs, makes textures - // easier to steal. JC - llinfos << "LocTex " << name << ": Baked " << llendl; -#else - llinfos << "LocTex " << name << ": Baked " << getTEImage( baked_equiv )->getID() << llendl; -#endif - } - else if (local_tex_data.mImage.notNull()) - { - if( local_tex_data.mImage->getID() == IMG_DEFAULT_AVATAR ) - { - llinfos << "LocTex " << name << ": None" << llendl; - } - else - { - const LLViewerImage* image = local_tex_data.mImage; - - llinfos << "LocTex " << name << ": " - << "Discard " << image->getDiscardLevel() << ", " - << "(" << image->getWidth() << ", " << image->getHeight() << ") " -#if !LL_RELEASE_FOR_DOWNLOAD - // End users don't get to trivially see avatar texture IDs, - // makes textures easier to steal - << image->getID() << " " -#endif - << "Priority: " << image->getDecodePriority() - << llendl; - } - } - else - { - llinfos << "LocTex " << name << ": No LLViewerImage" << llendl; - } - } -} - void LLVOAvatar::startAppearanceAnimation(BOOL set_by_user, BOOL play_sound) { if(!mAppearanceAnimating) @@ -8535,53 +6856,31 @@ void LLVOAvatar::startAppearanceAnimation(BOOL set_by_user, BOOL play_sound) } } - +// virtual void LLVOAvatar::removeMissingBakedTextures() { - if (!mIsSelf) return; - - BOOL removed = FALSE; - for (U32 i = 0; i < mBakedTextureData.size(); i++) - { - const S32 te = mBakedTextureData[i].mTextureIndex; - if (getTEImage(te)->isMissingAsset()) - { - setTEImage(te, gImageList.getImage(IMG_DEFAULT_AVATAR)); - removed = TRUE; - } - } - - if (removed) - { - for(U32 i = 0; i < mBakedTextureData.size(); i++) - { - invalidateComposite(mBakedTextureData[i].mTexLayerSet, FALSE); - } - updateMeshTextures(); - requestLayerSetUploads(); - } } - //----------------------------------------------------------------------------- // LLVOAvatarXmlInfo //----------------------------------------------------------------------------- -LLVOAvatarXmlInfo::LLVOAvatarXmlInfo() +LLVOAvatar::LLVOAvatarXmlInfo::LLVOAvatarXmlInfo() : mTexSkinColorInfo(0), mTexHairColorInfo(0), mTexEyeColorInfo(0) { } -LLVOAvatarXmlInfo::~LLVOAvatarXmlInfo() +LLVOAvatar::LLVOAvatarXmlInfo::~LLVOAvatarXmlInfo() { std::for_each(mMeshInfoList.begin(), mMeshInfoList.end(), DeletePointer()); std::for_each(mSkeletalDistortionInfoList.begin(), mSkeletalDistortionInfoList.end(), DeletePointer()); std::for_each(mAttachmentInfoList.begin(), mAttachmentInfoList.end(), DeletePointer()); - delete mTexSkinColorInfo; - delete mTexHairColorInfo; - delete mTexEyeColorInfo; + deleteAndClear(mTexSkinColorInfo); + deleteAndClear(mTexHairColorInfo); + deleteAndClear(mTexEyeColorInfo); std::for_each(mLayerInfoList.begin(), mLayerInfoList.end(), DeletePointer()); - std::for_each(mDriverInfoList.begin(), mDriverInfoList.end(), DeletePointer()); + std::for_each(mDriverInfoList.begin(), mDriverInfoList.end(), DeletePointer()); + std::for_each(mMorphMaskInfoList.begin(), mMorphMaskInfoList.end(), DeletePointer()); } //----------------------------------------------------------------------------- @@ -8693,7 +6992,7 @@ BOOL LLVOAvatarSkeletonInfo::parseXml(LLXmlTreeNode* node) //----------------------------------------------------------------------------- // parseXmlSkeletonNode(): parses <skeleton> nodes from XML tree //----------------------------------------------------------------------------- -BOOL LLVOAvatarXmlInfo::parseXmlSkeletonNode(LLXmlTreeNode* root) +BOOL LLVOAvatar::LLVOAvatarXmlInfo::parseXmlSkeletonNode(LLXmlTreeNode* root) { LLXmlTreeNode* node = root->getChildByName( "skeleton" ); if( !node ) @@ -8799,7 +7098,7 @@ BOOL LLVOAvatarXmlInfo::parseXmlSkeletonNode(LLXmlTreeNode* root) //----------------------------------------------------------------------------- // parseXmlMeshNodes(): parses <mesh> nodes from XML tree //----------------------------------------------------------------------------- -BOOL LLVOAvatarXmlInfo::parseXmlMeshNodes(LLXmlTreeNode* root) +BOOL LLVOAvatar::LLVOAvatarXmlInfo::parseXmlMeshNodes(LLXmlTreeNode* root) { for (LLXmlTreeNode* node = root->getChildByName( "mesh" ); node; @@ -8889,7 +7188,7 @@ BOOL LLVOAvatarXmlInfo::parseXmlMeshNodes(LLXmlTreeNode* root) //----------------------------------------------------------------------------- // parseXmlColorNodes(): parses <global_color> nodes from XML tree //----------------------------------------------------------------------------- -BOOL LLVOAvatarXmlInfo::parseXmlColorNodes(LLXmlTreeNode* root) +BOOL LLVOAvatar::LLVOAvatarXmlInfo::parseXmlColorNodes(LLXmlTreeNode* root) { for (LLXmlTreeNode* color_node = root->getChildByName( "global_color" ); color_node; @@ -8909,7 +7208,7 @@ BOOL LLVOAvatarXmlInfo::parseXmlColorNodes(LLXmlTreeNode* root) mTexSkinColorInfo = new LLTexGlobalColorInfo; if( !mTexSkinColorInfo->parseXml( color_node ) ) { - delete mTexSkinColorInfo; mTexSkinColorInfo = 0; + deleteAndClear(mTexSkinColorInfo); llwarns << "avatar file: mTexSkinColor->parseXml() failed" << llendl; return FALSE; } @@ -8924,7 +7223,7 @@ BOOL LLVOAvatarXmlInfo::parseXmlColorNodes(LLXmlTreeNode* root) mTexHairColorInfo = new LLTexGlobalColorInfo; if( !mTexHairColorInfo->parseXml( color_node ) ) { - delete mTexHairColorInfo; mTexHairColorInfo = 0; + deleteAndClear(mTexHairColorInfo); llwarns << "avatar file: mTexHairColor->parseXml() failed" << llendl; return FALSE; } @@ -8951,7 +7250,7 @@ BOOL LLVOAvatarXmlInfo::parseXmlColorNodes(LLXmlTreeNode* root) //----------------------------------------------------------------------------- // parseXmlLayerNodes(): parses <layer_set> nodes from XML tree //----------------------------------------------------------------------------- -BOOL LLVOAvatarXmlInfo::parseXmlLayerNodes(LLXmlTreeNode* root) +BOOL LLVOAvatar::LLVOAvatarXmlInfo::parseXmlLayerNodes(LLXmlTreeNode* root) { for (LLXmlTreeNode* layer_node = root->getChildByName( "layer_set" ); layer_node; @@ -8975,7 +7274,7 @@ BOOL LLVOAvatarXmlInfo::parseXmlLayerNodes(LLXmlTreeNode* root) //----------------------------------------------------------------------------- // parseXmlDriverNodes(): parses <driver_parameters> nodes from XML tree //----------------------------------------------------------------------------- -BOOL LLVOAvatarXmlInfo::parseXmlDriverNodes(LLXmlTreeNode* root) +BOOL LLVOAvatar::LLVOAvatarXmlInfo::parseXmlDriverNodes(LLXmlTreeNode* root) { LLXmlTreeNode* driver = root->getChildByName( "driver_parameters" ); if( driver ) @@ -9003,36 +7302,60 @@ BOOL LLVOAvatarXmlInfo::parseXmlDriverNodes(LLXmlTreeNode* root) return TRUE; } -// warning: order(N) not order(1) -S32 LLVOAvatar::getAttachmentCount() +//----------------------------------------------------------------------------- +// parseXmlDriverNodes(): parses <driver_parameters> nodes from XML tree +//----------------------------------------------------------------------------- +BOOL LLVOAvatar::LLVOAvatarXmlInfo::parseXmlMorphNodes(LLXmlTreeNode* root) { - S32 count = mAttachmentPoints.size(); - return count; -} + LLXmlTreeNode* masks = root->getChildByName( "morph_masks" ); + if( !masks ) + { + return FALSE; + } -//virtual -void LLVOAvatar::updateRegion(LLViewerRegion *regionp) -{ - if (mIsSelf) + for (LLXmlTreeNode* grand_child = masks->getChildByName( "mask" ); + grand_child; + grand_child = masks->getNextNamedChild()) { - if (regionp->getHandle() != mLastRegionHandle) + LLVOAvatarMorphInfo* info = new LLVOAvatarMorphInfo(); + + static LLStdStringHandle name_string = LLXmlTree::addAttributeString("morph_name"); + if (!grand_child->getFastAttributeString(name_string, info->mName)) { - if (mLastRegionHandle != 0) - { - ++mRegionCrossingCount; - F64 delta = (F64)mRegionCrossingTimer.getElapsedTimeF32(); - F64 avg = (mRegionCrossingCount == 1) ? 0 : LLViewerStats::getInstance()->getStat(LLViewerStats::ST_CROSSING_AVG); - F64 delta_avg = (delta + avg*(mRegionCrossingCount-1)) / mRegionCrossingCount; - LLViewerStats::getInstance()->setStat(LLViewerStats::ST_CROSSING_AVG, delta_avg); + llwarns << "No name supplied for morph mask." << llendl; + delete info; + continue; + } - F64 max = (mRegionCrossingCount == 1) ? 0 : LLViewerStats::getInstance()->getStat(LLViewerStats::ST_CROSSING_MAX); - max = llmax(delta, max); - LLViewerStats::getInstance()->setStat(LLViewerStats::ST_CROSSING_MAX, max); - } - mLastRegionHandle = regionp->getHandle(); + static LLStdStringHandle region_string = LLXmlTree::addAttributeString("body_region"); + if (!grand_child->getFastAttributeString(region_string, info->mRegion)) + { + llwarns << "No region supplied for morph mask." << llendl; + delete info; + continue; + } + + static LLStdStringHandle layer_string = LLXmlTree::addAttributeString("layer"); + if (!grand_child->getFastAttributeString(layer_string, info->mLayer)) + { + llwarns << "No layer supplied for morph mask." << llendl; + delete info; + continue; } - mRegionCrossingTimer.reset(); + + // optional parameter. don't throw a warning if not present. + static LLStdStringHandle invert_string = LLXmlTree::addAttributeString("invert"); + grand_child->getFastAttributeBOOL(invert_string, info->mInvert); + + mMorphMaskInfoList.push_back(info); } + + return TRUE; +} + +//virtual +void LLVOAvatar::updateRegion(LLViewerRegion *regionp) +{ } std::string LLVOAvatar::getFullname() const @@ -9051,21 +7374,6 @@ std::string LLVOAvatar::getFullname() const return name; } -LLTexLayerSet* LLVOAvatar::getLayerSet(ETextureIndex index) const -{ - /* switch(index) - case TEX_HEAD_BAKED: - case TEX_HEAD_BODYPAINT: - return mHeadLayerSet; */ - const LLVOAvatarDictionary::TextureDictionaryEntry *text_dict = LLVOAvatarDictionary::getInstance()->getTexture(index); - if (text_dict->mIsUsedByBakedTexture) - { - const EBakedTextureIndex baked_index = text_dict->mBakedTextureIndex; - return mBakedTextureData[baked_index].mTexLayerSet; - } - return NULL; -} - LLHost LLVOAvatar::getObjectHost() const { LLViewerRegion* region = getRegion(); @@ -9104,7 +7412,7 @@ BOOL LLVOAvatar::updateLOD() if (facep->mVertexBuffer.isNull() || LLVertexBuffer::sEnableVBOs && ((facep->mVertexBuffer->getUsage() == GL_STATIC_DRAW ? TRUE : FALSE) != - (facep->getPool()->getVertexShaderLevel() > 0 ? TRUE : FALSE))) + (facep->getPool()->getVertexShaderLevel() > 0 ? TRUE : FALSE))) { mDirtyMesh = TRUE; } @@ -9123,7 +7431,8 @@ BOOL LLVOAvatar::updateLOD() } U32 LLVOAvatar::getPartitionType() const -{ //avatars merely exist as drawables in the bridge partition +{ + // Avatars merely exist as drawables in the bridge partition return LLViewerRegion::PARTITION_BRIDGE; } @@ -9131,10 +7440,9 @@ U32 LLVOAvatar::getPartitionType() const void LLVOAvatar::updateImpostors() { for (std::vector<LLCharacter*>::iterator iter = LLCharacter::sInstances.begin(); - iter != LLCharacter::sInstances.end(); ++iter) + iter != LLCharacter::sInstances.end(); ++iter) { LLVOAvatar* avatar = (LLVOAvatar*) *iter; - if (!avatar->isDead() && avatar->needsImpostorUpdate() && avatar->isVisible() && avatar->isImpostor()) { gPipeline.generateImpostor(avatar); @@ -9198,10 +7506,9 @@ void LLVOAvatar::idleUpdateRenderCost() std::set<LLUUID> textures; - attachment_map_t::const_iterator iter; - for (iter = mAttachmentPoints.begin(); - iter != mAttachmentPoints.end(); - ++iter) + for (attachment_map_t::const_iterator iter = mAttachmentPoints.begin(); + iter != mAttachmentPoints.end(); + ++iter) { LLViewerJointAttachment* attachment = iter->second; LLViewerObject* object = attachment->getObject(); @@ -9246,15 +7553,15 @@ const std::string LLVOAvatar::getBakedStatusForPrintout() const { std::string line; - for (LLVOAvatarDictionary::texture_map_t::const_iterator iter = LLVOAvatarDictionary::getInstance()->getTextures().begin(); + for (LLVOAvatarDictionary::Textures::const_iterator iter = LLVOAvatarDictionary::getInstance()->getTextures().begin(); iter != LLVOAvatarDictionary::getInstance()->getTextures().end(); iter++) { const ETextureIndex index = iter->first; - const LLVOAvatarDictionary::TextureDictionaryEntry *text_dict = iter->second; - if (text_dict->mIsBakedTexture) + const LLVOAvatarDictionary::TextureEntry *texture_dict = iter->second; + if (texture_dict->mIsBakedTexture) { - line += text_dict->mName; + line += texture_dict->mName; if (isTextureDefined(index)) { line += "_baked"; @@ -9370,6 +7677,12 @@ U32 calc_shame(LLVOVolume* volume, std::set<LLUUID> &textures) return shame; } +//virtual +S32 LLVOAvatar::getTexImageSize() const +{ + return TEX_IMAGE_SIZE_OTHER; +} + //----------------------------------------------------------------------------- // Utility functions //----------------------------------------------------------------------------- @@ -9378,3 +7691,16 @@ F32 calc_bouncy_animation(F32 x) { return -(cosf(x * F_PI * 2.5f - F_PI_BY_TWO))*(0.4f + x * -0.1f) + x * 1.3f; } + +//virtual +BOOL LLVOAvatar::isTextureDefined(LLVOAvatarDefines::ETextureIndex te, U32 index ) const +{ + if (isIndexLocalTexture(te)) + { + return FALSE; + } + + return (getImage(te)->getID() != IMG_DEFAULT_AVATAR && + getImage(te)->getID() != IMG_DEFAULT); +} + diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h index c48d509f264aca2514d112d16875fda77b4fe18a..301c032b25453cbe110e14fb19ccf786ed054140 100644 --- a/indra/newview/llvoavatar.h +++ b/indra/newview/llvoavatar.h @@ -46,9 +46,9 @@ #include "llviewerjointmesh.h" #include "llviewerjointattachment.h" #include "llrendertarget.h" -#include "llwearable.h" #include "llvoavatardefines.h" -#include "llcontrol.h" +#include "lltexglobalcolor.h" +#include "lldriverparam.h" extern const LLUUID ANIM_AGENT_BODY_NOISE; extern const LLUUID ANIM_AGENT_BREATHE_ROT; @@ -66,10 +66,8 @@ class LLVoiceVisualizer; class LLHUDText; class LLHUDEffectSpiral; class LLTexGlobalColor; - class LLVOAvatarBoneInfo; class LLVOAvatarSkeletonInfo; -class LLVOAvatarXmlInfo; //------------------------------------------------------------------------ // LLVOAvatar @@ -78,686 +76,938 @@ class LLVOAvatar : public LLViewerObject, public LLCharacter { +public: + friend class LLVOAvatarSelf; protected: - virtual ~LLVOAvatar(); + struct LLVOAvatarXmlInfo; + struct LLMaskedMorph; + +/******************************************************************************** + ** ** + ** INITIALIZATION + **/ public: LLVOAvatar(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp); - /*virtual*/ void markDead(); - void startDefaultMotions(); + virtual void markDead(); + static void initClass(); // Initialize data that's only init'd once per class. + static void cleanupClass(); // Cleanup data that's only init'd once per class. + void initInstance(); // Called after construction to initialize the class. +protected: + virtual ~LLVOAvatar(); + BOOL loadSkeletonNode(); + BOOL loadMeshNodes(); + virtual BOOL loadLayersets(); + +/** Initialization + ** ** + *******************************************************************************/ + +/******************************************************************************** + ** ** + ** INHERITED + **/ + + //-------------------------------------------------------------------- + // LLViewerObject interface and related + //-------------------------------------------------------------------- +public: + virtual U32 processUpdateMessage(LLMessageSystem *mesgsys, + void **user_data, + U32 block_num, + const EObjectUpdateType update_type, + LLDataPacker *dp); + virtual BOOL idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time); + virtual BOOL updateLOD(); + BOOL updateJointLODs(); + virtual BOOL isActive() const; // Whether this object needs to do an idleUpdate. + virtual void updateTextures(LLAgent &agent); + virtual S32 setTETexture(const U8 te, const LLUUID& uuid); // If setting a baked texture, need to request it from a non-local sim. + virtual void onShift(const LLVector3& shift_vector); + virtual U32 getPartitionType() const; + virtual const LLVector3 getRenderPosition() const; + virtual void updateDrawable(BOOL force_damped); + virtual LLDrawable* createDrawable(LLPipeline *pipeline); + virtual BOOL updateGeometry(LLDrawable *drawable); + virtual void setPixelAreaAndAngle(LLAgent &agent); + virtual void updateRegion(LLViewerRegion *regionp); + virtual void updateSpatialExtents(LLVector3& newMin, LLVector3 &newMax); + virtual void getSpatialExtents(LLVector3& newMin, LLVector3& newMax); + virtual BOOL lineSegmentIntersect(const LLVector3& start, const LLVector3& end, + S32 face = -1, // which face to check, -1 = ALL_SIDES + BOOL pick_transparent = FALSE, + S32* face_hit = NULL, // which face was hit + LLVector3* intersection = NULL, // return the intersection point + LLVector2* tex_coord = NULL, // return the texture coordinates of the intersection point + LLVector3* normal = NULL, // return the surface normal at the intersection point + LLVector3* bi_normal = NULL); // return the surface bi-normal at the intersection point + + //-------------------------------------------------------------------- + // LLCharacter interface and related + //-------------------------------------------------------------------- +public: + virtual LLVector3 getCharacterPosition(); + virtual LLQuaternion getCharacterRotation(); + virtual LLVector3 getCharacterVelocity(); + virtual LLVector3 getCharacterAngularVelocity(); + virtual LLJoint* getCharacterJoint(U32 num); + virtual BOOL allocateCharacterJoints(U32 num); + + virtual BOOL startMotion(const LLUUID& id, F32 time_offset = 0.f); + virtual BOOL stopMotion(const LLUUID& id, BOOL stop_immediate = FALSE); + virtual void stopMotionFromSource(const LLUUID& source_id); + virtual void requestStopMotion(LLMotion* motion); + LLMotion* findMotion(const LLUUID& id) const; + void startDefaultMotions(); + + virtual LLJoint* getJoint(const std::string &name); + virtual LLJoint* getRootJoint() { return &mRoot; } + + virtual const char* getAnimationPrefix() { return "avatar"; } + virtual const LLUUID& getID(); + virtual LLVector3 getVolumePos(S32 joint_index, LLVector3& volume_offset); + virtual LLJoint* findCollisionVolume(U32 volume_id); + virtual S32 getCollisionVolumeID(std::string &name); + virtual void addDebugText(const std::string& text); + virtual F32 getTimeDilation(); + virtual void getGround(const LLVector3 &inPos, LLVector3 &outPos, LLVector3 &outNorm); + virtual F32 getPixelArea() const; + virtual LLPolyMesh* getHeadMesh(); + virtual LLPolyMesh* getUpperBodyMesh(); + virtual LLVector3d getPosGlobalFromAgent(const LLVector3 &position); + virtual LLVector3 getPosAgentFromGlobal(const LLVector3d &position); + virtual void updateVisualParams(); + + +/** Inherited + ** ** + *******************************************************************************/ + +/******************************************************************************** + ** ** + ** STATE + **/ + +public: + virtual bool isSelf() const { return false; } // True if this avatar is for this viewer's agent +private: + BOOL mSupportsAlphaLayers; // For backwards compatibility, TRUE for 1.23+ clients - static void updateImpostors(); + //-------------------------------------------------------------------- + // Updates + //-------------------------------------------------------------------- +public: + virtual BOOL updateCharacter(LLAgent &agent); + void idleUpdateVoiceVisualizer(bool voice_enabled); + void idleUpdateMisc(bool detailed_update); + void idleUpdateAppearanceAnimation(); + void idleUpdateLipSync(bool voice_enabled); + void idleUpdateLoadingEffect(); + void idleUpdateWindEffect(); + void idleUpdateNameTag(const LLVector3& root_pos_last); + void idleUpdateRenderCost(); + void idleUpdateTractorBeam(); + void idleUpdateBelowWater(); //-------------------------------------------------------------------- - // LLViewerObject interface - //-------------------------------------------------------------------- -public: - static void initClass(); // Initialize data that's only init'd once per class. - static void cleanupClass(); // Cleanup data that's only init'd once per class. - static BOOL parseSkeletonFile(const std::string& filename); - virtual U32 processUpdateMessage(LLMessageSystem *mesgsys, - void **user_data, - U32 block_num, - const EObjectUpdateType update_type, - LLDataPacker *dp); - /*virtual*/ BOOL idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time); - void idleUpdateVoiceVisualizer(bool voice_enabled); - void idleUpdateMisc(bool detailed_update); - void idleUpdateAppearanceAnimation(); - void idleUpdateLipSync(bool voice_enabled); - void idleUpdateLoadingEffect(); - void idleUpdateWindEffect(); - void idleUpdateNameTag(const LLVector3& root_pos_last); - void idleUpdateRenderCost(); - void idleUpdateTractorBeam(); - void idleUpdateBelowWater(); - -public: - virtual BOOL updateLOD(); - /*virtual*/ BOOL isActive() const; // Whether this object needs to do an idleUpdate. - - // Graphical stuff for objects - maybe broken out into render class later? - U32 renderFootShadows(); - U32 renderImpostor(LLColor4U color = LLColor4U(255,255,255,255)); - U32 renderRigid(); - U32 renderSkinned(EAvatarRenderPass pass); - U32 renderTransparent(BOOL first_pass); - void renderCollisionVolumes(); - - /*virtual*/ BOOL lineSegmentIntersect(const LLVector3& start, const LLVector3& end, - S32 face = -1, // which face to check, -1 = ALL_SIDES - BOOL pick_transparent = FALSE, - S32* face_hit = NULL, // which face was hit - LLVector3* intersection = NULL, // return the intersection point - LLVector2* tex_coord = NULL, // return the texture coordinates of the intersection point - LLVector3* normal = NULL, // return the surface normal at the intersection point - LLVector3* bi_normal = NULL // return the surface bi-normal at the intersection point - ); - - /*virtual*/ void updateTextures(LLAgent &agent); - // If setting a baked texture, need to request it from a non-local sim. - /*virtual*/ S32 setTETexture(const U8 te, const LLUUID& uuid); - /*virtual*/ void onShift(const LLVector3& shift_vector); - virtual U32 getPartitionType() const; + // Static preferences (controlled by user settings/menus) + //-------------------------------------------------------------------- +public: + static S32 sRenderName; + static BOOL sRenderGroupTitles; + static S32 sMaxVisible; + static F32 sRenderDistance; //distance at which avatars will render (affected by control "RenderAvatarMaxVisible") + static BOOL sShowAnimationDebug; // show animation debug info + static BOOL sUseImpostors; //use impostors for far away avatars + static BOOL sShowFootPlane; // show foot collision plane reported by server + static BOOL sShowCollisionVolumes; // show skeletal collision volumes + static BOOL sVisibleInFirstPerson; + static S32 sNumLODChangesThisFrame; + static S32 sNumVisibleChatBubbles; + static BOOL sDebugInvisible; + static BOOL sShowAttachmentPoints; + static F32 sLODFactor; // user-settable LOD factor + static BOOL sJointDebug; // output total number of joints being touched for each avatar + static BOOL sDebugAvatarRotation; + + //-------------------------------------------------------------------- + // Region state + //-------------------------------------------------------------------- +public: + LLHost getObjectHost() const; + + //-------------------------------------------------------------------- + // Loading state + //-------------------------------------------------------------------- +public: + BOOL isFullyLoaded() const; + virtual BOOL updateIsFullyLoaded(); + BOOL processFullyLoadedChange(bool loading); +private: + BOOL mFullyLoaded; + BOOL mPreviousFullyLoaded; + BOOL mFullyLoadedInitialized; + S32 mFullyLoadedFrameCounter; + LLFrameTimer mFullyLoadedTimer; + +/** State + ** ** + *******************************************************************************/ + +/******************************************************************************** + ** ** + ** SKELETON + **/ + +public: + void updateHeadOffset(); + F32 getPelvisToFoot() const { return mPelvisToFoot; } + LLVector3 mHeadOffset; // current head position + LLViewerJoint mRoot; +protected: + static BOOL parseSkeletonFile(const std::string& filename); + void buildCharacter(); + BOOL loadAvatar(); + BOOL setupBone(const LLVOAvatarBoneInfo* info, LLViewerJoint* parent, S32 ¤t_volume_num, S32 ¤t_joint_num); + BOOL buildSkeleton(const LLVOAvatarSkeletonInfo *info); +private: + BOOL mIsBuilt; // state of deferred character building + S32 mNumJoints; + LLViewerJoint* mSkeleton; - void updateVisibility(); - void updateAttachmentVisibility(U32 camera_mode); - void clampAttachmentPositions(); - S32 getAttachmentCount(); // Warning: order(N) not order(1) + //-------------------------------------------------------------------- + // Pelvis height adjustment members. + //-------------------------------------------------------------------- +public: + LLVector3 mBodySize; + S32 mLastSkeletonSerialNum; +private: + F32 mPelvisToFoot; - // HUD functions - BOOL hasHUDAttachment() const; - LLBBox getHUDBBox() const; - void rebuildHUD(); + //-------------------------------------------------------------------- + // Cached pointers to well known joints + //-------------------------------------------------------------------- +public: + LLViewerJoint* mPelvisp; + LLViewerJoint* mTorsop; + LLViewerJoint* mChestp; + LLViewerJoint* mNeckp; + LLViewerJoint* mHeadp; + LLViewerJoint* mSkullp; + LLViewerJoint* mEyeLeftp; + LLViewerJoint* mEyeRightp; + LLViewerJoint* mHipLeftp; + LLViewerJoint* mHipRightp; + LLViewerJoint* mKneeLeftp; + LLViewerJoint* mKneeRightp; + LLViewerJoint* mAnkleLeftp; + LLViewerJoint* mAnkleRightp; + LLViewerJoint* mFootLeftp; + LLViewerJoint* mFootRightp; + LLViewerJoint* mWristLeftp; + LLViewerJoint* mWristRightp; - /*virtual*/ LLDrawable* createDrawable(LLPipeline *pipeline); - /*virtual*/ BOOL updateGeometry(LLDrawable *drawable); + //-------------------------------------------------------------------- + // XML parse tree + //-------------------------------------------------------------------- +private: + static LLXmlTree sXMLTree; // avatar config file + static LLXmlTree sSkeletonXMLTree; // avatar skeleton file + +/** Skeleton + ** ** + *******************************************************************************/ + +/******************************************************************************** + ** ** + ** RENDERING + **/ + +public: + U32 renderFootShadows(); + U32 renderImpostor(LLColor4U color = LLColor4U(255,255,255,255)); + U32 renderRigid(); + U32 renderSkinned(EAvatarRenderPass pass); + U32 renderTransparent(BOOL first_pass); + void renderCollisionVolumes(); + static void deleteCachedImages(bool clearAll=true); + static void destroyGL(); + static void restoreGL(); + BOOL mIsDummy; // for special views + S32 mSpecialRenderMode; // special lighting +private: + BOOL mNeedsSkin; // avatar has been animated and verts have not been updated + S32 mUpdatePeriod; + S32 mNumInitFaces; //number of faces generated when creating the avatar drawable, does not inculde splitted faces due to long vertex buffer. - /*virtual*/ void setPixelAreaAndAngle(LLAgent &agent); - BOOL updateJointLODs(); + //-------------------------------------------------------------------- + // Morph masks + //-------------------------------------------------------------------- +public: + void invalidateMorphMasks(LLVOAvatarDefines::EBakedTextureIndex index = LLVOAvatarDefines::BAKED_NUM_INDICES); + BOOL morphMaskNeedsUpdate(LLVOAvatarDefines::EBakedTextureIndex index = LLVOAvatarDefines::BAKED_NUM_INDICES); + void addMaskedMorph(LLVOAvatarDefines::EBakedTextureIndex index, LLPolyMorphTarget* morph_target, BOOL invert, std::string layer); + void setMorphMasksValid(BOOL new_status, LLVOAvatarDefines::EBakedTextureIndex index = LLVOAvatarDefines::BAKED_NUM_INDICES); + void applyMorphMask(U8* tex_data, S32 width, S32 height, S32 num_components, LLVOAvatarDefines::EBakedTextureIndex index = LLVOAvatarDefines::BAKED_NUM_INDICES); - virtual void updateRegion(LLViewerRegion *regionp); + //-------------------------------------------------------------------- + // Visibility + //-------------------------------------------------------------------- +protected: + void updateVisibility(); +private: + U32 mVisibilityRank; + BOOL mVisible; - virtual const LLVector3 getRenderPosition() const; - virtual void updateDrawable(BOOL force_damped); - void updateSpatialExtents(LLVector3& newMin, LLVector3 &newMax); - void getSpatialExtents(LLVector3& newMin, LLVector3& newMax); - BOOL isImpostor() const; - BOOL needsImpostorUpdate() const; + //-------------------------------------------------------------------- + // Shadowing + //-------------------------------------------------------------------- +public: + void updateShadowFaces(); + LLDrawable* mShadow; +private: + LLFace* mShadow0Facep; + LLFace* mShadow1Facep; + LLPointer<LLViewerImage> mShadowImagep; + + //-------------------------------------------------------------------- + // Impostors + //-------------------------------------------------------------------- +public: + BOOL isImpostor() const; + BOOL needsImpostorUpdate() const; const LLVector3& getImpostorOffset() const; const LLVector2& getImpostorDim() const; - void getImpostorValues(LLVector3* extents, LLVector3& angle, F32& distance) const; - void cacheImpostorValues(); - void setImpostorDim(const LLVector2& dim); - - //-------------------------------------------------------------------- - // LLCharacter interface - //-------------------------------------------------------------------- -public: - virtual const char *getAnimationPrefix() { return "avatar"; } - virtual LLJoint *getRootJoint() { return &mRoot; } - virtual LLVector3 getCharacterPosition(); - virtual LLQuaternion getCharacterRotation(); - virtual LLVector3 getCharacterVelocity(); - virtual LLVector3 getCharacterAngularVelocity(); - virtual F32 getTimeDilation(); - virtual void getGround(const LLVector3 &inPos, LLVector3 &outPos, LLVector3 &outNorm); - virtual BOOL allocateCharacterJoints( U32 num ); - virtual LLJoint *getCharacterJoint( U32 num ); - virtual void requestStopMotion( LLMotion* motion ); - virtual F32 getPixelArea() const; - virtual LLPolyMesh* getHeadMesh(); - virtual LLPolyMesh* getUpperBodyMesh(); - virtual LLVector3d getPosGlobalFromAgent(const LLVector3 &position); - virtual LLVector3 getPosAgentFromGlobal(const LLVector3d &position); - virtual void updateVisualParams(); - virtual BOOL startMotion(const LLUUID& id, F32 time_offset = 0.f); - virtual BOOL stopMotion(const LLUUID& id, BOOL stop_immediate = FALSE); - virtual void stopMotionFromSource(const LLUUID& source_id); - virtual LLVector3 getVolumePos(S32 joint_index, LLVector3& volume_offset); - virtual LLJoint* findCollisionVolume(U32 volume_id); - virtual S32 getCollisionVolumeID(std::string &name); - virtual void addDebugText(const std::string& text); - virtual const LLUUID& getID(); - virtual LLJoint *getJoint( const std::string &name ); - - //-------------------------------------------------------------------- - // Other public functions - //-------------------------------------------------------------------- -public: - static void onCustomizeStart(); - static void onCustomizeEnd(); - -public: - static void dumpTotalLocalTextureByteCount(); -protected: - void getLocalTextureByteCount( S32* gl_byte_count ); + void getImpostorValues(LLVector3* extents, LLVector3& angle, F32& distance) const; + void cacheImpostorValues(); + void setImpostorDim(const LLVector2& dim); + static void resetImpostors(); + static void updateImpostors(); + LLRenderTarget mImpostor; + BOOL mNeedsImpostorUpdate; +private: + LLVector3 mImpostorOffset; + LLVector2 mImpostorDim; + BOOL mNeedsAnimUpdate; + LLVector3 mImpostorExtents[2]; + LLVector3 mImpostorAngle; + F32 mImpostorDistance; + F32 mImpostorPixelArea; + LLVector3 mLastAnimExtents[2]; + //-------------------------------------------------------------------- + // Wind rippling in clothes + //-------------------------------------------------------------------- public: - LLMotion* findMotion(const LLUUID& id); - - BOOL isVisible(); - BOOL isSelf() const { return mIsSelf; } - BOOL isCulled() const { return mCulled; } + LLVector4 mWindVec; + F32 mRipplePhase; + BOOL mBelowWater; +private: + F32 mWindFreq; + LLFrameTimer mRippleTimer; + F32 mRippleTimeLast; + LLVector3 mRippleAccel; + LLVector3 mLastVel; + //-------------------------------------------------------------------- + // Culling + //-------------------------------------------------------------------- public: - static void cullAvatarsByPixelArea(); - void setVisibilityRank(U32 rank); - U32 getVisibilityRank(); // unused -protected: - S32 getUnbakedPixelAreaRank(); + static void cullAvatarsByPixelArea(); + BOOL isCulled() const { return mCulled; } +private: + BOOL mCulled; + //-------------------------------------------------------------------- + // Freeze counter + //-------------------------------------------------------------------- public: - void dumpLocalTextures(); - const LLUUID& grabLocalTexture(LLVOAvatarDefines::ETextureIndex index); - BOOL canGrabLocalTexture(LLVOAvatarDefines::ETextureIndex index); - BOOL isTextureDefined(U8 te) const; - BOOL isTextureVisible(U8 te) const; - void startAppearanceAnimation(BOOL set_by_user, BOOL play_sound); - - void setCompositeUpdatesEnabled(BOOL b); - - void addChat(const LLChat& chat); - void clearChat(); - void startTyping() { mTyping = TRUE; mTypingTimer.reset(); } - void stopTyping() { mTyping = FALSE; } + static void updateFreezeCounter(S32 counter = 0); +private: + static S32 sFreezeCounter; - // Returns "FirstName LastName" - std::string getFullname() const; + //-------------------------------------------------------------------- + // Constants + //-------------------------------------------------------------------- +public: + virtual LLViewerImage::EBoostLevel getAvatarBoostLevel() const { return LLViewerImage::BOOST_AVATAR; } + virtual LLViewerImage::EBoostLevel getAvatarBakedBoostLevel() const { return LLViewerImage::BOOST_AVATAR_BAKED; } + virtual S32 getTexImageSize() const; + virtual S32 getTexImageArea() const { return getTexImageSize()*getTexImageSize(); } - BOOL updateCharacter(LLAgent &agent); - void updateHeadOffset(); +/** Rendering + ** ** + *******************************************************************************/ - F32 getPelvisToFoot() const { return mPelvisToFoot; } +/******************************************************************************** + ** ** + ** TEXTURES + **/ + //-------------------------------------------------------------------- + // Loading status + //-------------------------------------------------------------------- public: - BOOL isAnyAnimationSignaled(const LLUUID *anim_array, const S32 num_anims); - void processAnimationStateChanges(); + virtual BOOL isTextureDefined(LLVOAvatarDefines::ETextureIndex type, U32 index = 0) const; + BOOL isTextureVisible(LLVOAvatarDefines::ETextureIndex index) const; protected: - BOOL processSingleAnimationStateChange(const LLUUID &anim_id, BOOL start); - void resetAnimations(); + BOOL isFullyBaked(); + static BOOL areAllNearbyInstancesBaked(S32& grey_avatars); + //-------------------------------------------------------------------- + // Baked textures + //-------------------------------------------------------------------- public: - void resolveHeightGlobal(const LLVector3d &inPos, LLVector3d &outPos, LLVector3 &outNorm); - void resolveHeightAgent(const LLVector3 &inPos, LLVector3 &outPos, LLVector3 &outNorm); - void resolveRayCollisionAgent(const LLVector3d start_pt, const LLVector3d end_pt, LLVector3d &out_pos, LLVector3 &out_norm); - - void slamPosition(); // Slam position to transmitted position (for teleport); + void releaseComponentTextures(); // ! BACKWARDS COMPATIBILITY ! +protected: + static void onBakedTextureMasksLoaded(BOOL success, LLViewerImage *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata); + static void onInitialBakedTextureLoaded(BOOL success, LLViewerImage *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata); + static void onBakedTextureLoaded(BOOL success, LLViewerImage *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata); + virtual void removeMissingBakedTextures(); + void useBakedTexture(const LLUUID& id); - // morph targets and such - void processAvatarAppearance( LLMessageSystem* mesgsys ); - void onFirstTEMessageReceived(); - void updateSexDependentLayerSets( BOOL set_by_user ); - void dirtyMesh(); // Dirty the avatar mesh - void hideSkirt(); + typedef std::deque<LLMaskedMorph *> morph_list_t; + struct BakedTextureData + { + LLUUID mLastTextureIndex; + LLTexLayerSet* mTexLayerSet; // Only exists for self + bool mIsLoaded; + bool mIsUsed; + LLVOAvatarDefines::ETextureIndex mTextureIndex; + U32 mMaskTexName; + // Stores pointers to the joint meshes that this baked texture deals with + std::vector< LLViewerJointMesh * > mMeshes; // std::vector<LLViewerJointMesh> mJoints[i]->mMeshParts + morph_list_t mMaskedMorphs; + BOOL mMorphMasksValid; + }; + typedef std::vector<BakedTextureData> bakedtexturedata_vec_t; + bakedtexturedata_vec_t mBakedTextureDatas; - virtual void setParent(LLViewerObject* parent); - virtual void addChild(LLViewerObject *childp); - virtual void removeChild(LLViewerObject *childp); + //-------------------------------------------------------------------- + // Local Textures + //-------------------------------------------------------------------- +protected: + virtual void setLocalTexture(LLVOAvatarDefines::ETextureIndex type, LLViewerImage* tex, BOOL baked_version_exits, U32 index = 0); + virtual void addLocalTextureStats(LLVOAvatarDefines::ETextureIndex type, LLViewerImage* imagep, F32 texel_area_ratio, BOOL rendered, BOOL covered_by_baked, U32 index = 0); - LLViewerJointAttachment* getTargetAttachmentPoint(LLViewerObject* viewer_object); - BOOL attachObject(LLViewerObject *viewer_object); - BOOL detachObject(LLViewerObject *viewer_object); - void lazyAttach(); - - void sitOnObject(LLViewerObject *sit_object); - void getOffObject(); - - BOOL isWearingAttachment( const LLUUID& inv_item_id ); - LLViewerObject* getWornAttachment( const LLUUID& inv_item_id ); - const std::string getAttachedPointName(const LLUUID& inv_item_id); - - static LLVOAvatar* findAvatarFromAttachment( LLViewerObject* obj ); - - void updateMeshTextures(); - - //-------------------------------------------------------------------- - // texture compositing (used only by the LLTexLayer series of classes) - //-------------------------------------------------------------------- -public: - LLColor4 getGlobalColor( const std::string& color_name ); - BOOL isLocalTextureDataAvailable( LLTexLayerSet* layerset ); - BOOL isLocalTextureDataFinal( LLTexLayerSet* layerset ); - LLVOAvatarDefines::ETextureIndex getBakedTE( LLTexLayerSet* layerset ); - void updateComposites(); - void onGlobalColorChanged( LLTexGlobalColor* global_color, BOOL set_by_user ); - BOOL getLocalTextureRaw( LLVOAvatarDefines::ETextureIndex index, LLImageRaw* image_raw_pp ); - BOOL getLocalTextureGL( LLVOAvatarDefines::ETextureIndex index, LLImageGL** image_gl_pp ); - const LLUUID& getLocalTextureID( LLVOAvatarDefines::ETextureIndex index ); - LLGLuint getScratchTexName( LLGLenum format, U32* texture_bytes ); - BOOL bindScratchTexture( LLGLenum format ); - void invalidateComposite( LLTexLayerSet* layerset, BOOL set_by_user ); - void invalidateAll(); - void forceBakeAllTextures(bool slam_for_debug = false); - static void processRebakeAvatarTextures(LLMessageSystem* msg, void**); - void setNewBakedTexture( LLVOAvatarDefines::ETextureIndex i, const LLUUID& uuid ); - void setCachedBakedTexture( LLVOAvatarDefines::ETextureIndex i, const LLUUID& uuid ); - void releaseUnnecessaryTextures(); - void requestLayerSetUploads(); - bool hasPendingBakedUploads(); - static void onLocalTextureLoaded( BOOL succcess, LLViewerImage *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata ); - static void dumpArchetypeXML( void* ); - static void dumpScratchTextureByteCount(); - static void dumpBakedStatus(); - static void deleteCachedImages(bool clearAll=true); - static void destroyGL(); - static void restoreGL(); - static void resetImpostors(); - static enum EWearableType getTEWearableType(LLVOAvatarDefines::ETextureIndex te ); - static LLUUID getDefaultTEImageID(LLVOAvatarDefines::ETextureIndex te ); - static void onChangeSelfInvisible(BOOL newvalue); - void setInvisible(BOOL newvalue); - static LLColor4 getDummyColor(); + //-------------------------------------------------------------------- + // Texture accessors + //-------------------------------------------------------------------- +private: + virtual void setImage(const U8 te, LLViewerImage *imagep); + virtual LLViewerImage* getImage(const U8 te) const; + virtual const LLTextureEntry* getTexEntry(const U8 te_num) const; + virtual void setTexEntry(const U8 index, const LLTextureEntry &te); //-------------------------------------------------------------------- - // Clothing colors (conventience functions to access visual parameters + // Layers //-------------------------------------------------------------------- -public: - void setClothesColor( LLVOAvatarDefines::ETextureIndex te, const LLColor4& new_color, BOOL set_by_user ); - LLColor4 getClothesColor( LLVOAvatarDefines::ETextureIndex te ); - BOOL teToColorParams( LLVOAvatarDefines::ETextureIndex te, const char* param_name[3] ); +protected: + void deleteLayerSetCaches(bool clearAll = true); + void addBakedTextureStats(LLViewerImage* imagep, F32 pixel_area, F32 texel_area_ratio, S32 boost_level); - BOOL isWearingWearableType( EWearableType type ); - void wearableUpdated( EWearableType type ); + //-------------------------------------------------------------------- + // Composites + //-------------------------------------------------------------------- +public: + virtual void invalidateComposite(LLTexLayerSet* layerset, BOOL set_by_user); + virtual void invalidateAll(); + virtual void setCompositeUpdatesEnabled(BOOL b); //-------------------------------------------------------------------- - // texture compositing + // Static texture/mesh/baked dictionary //-------------------------------------------------------------------- public: - void setLocTexTE( U8 te, LLViewerImage* image, BOOL set_by_user ); - void setupComposites(); + static BOOL isIndexLocalTexture(LLVOAvatarDefines::ETextureIndex i); + static BOOL isIndexBakedTexture(LLVOAvatarDefines::ETextureIndex i); +private: + static const LLVOAvatarDefines::LLVOAvatarDictionary *getDictionary() { return sAvatarDictionary; } + static LLVOAvatarDefines::LLVOAvatarDictionary* sAvatarDictionary; + static LLVOAvatarSkeletonInfo* sAvatarSkeletonInfo; + static LLVOAvatarXmlInfo* sAvatarXmlInfo; //-------------------------------------------------------------------- - // Handling partially loaded avatars (Ruth) + // Messaging //-------------------------------------------------------------------- public: - BOOL isFullyLoaded(); - BOOL updateIsFullyLoaded(); + void onFirstTEMessageReceived(); +private: + BOOL mFirstTEMessageReceived; + BOOL mFirstAppearanceMessageReceived; + +/** Textures + ** ** + *******************************************************************************/ + +/******************************************************************************** + ** ** + ** MESHES + **/ + +public: + void updateMeshTextures(); + void updateSexDependentLayerSets(BOOL set_by_user); + void dirtyMesh(); // Dirty the avatar mesh + void updateMeshData(); +protected: + void releaseMeshData(); + /*virtual*/ void restoreMeshData(); private: - BOOL mFullyLoaded; - BOOL mPreviousFullyLoaded; - BOOL mFullyLoadedInitialized; - S32 mFullyLoadedFrameCounter; - LLFrameTimer mFullyLoadedTimer; + BOOL mDirtyMesh; + + typedef std::multimap<std::string, LLPolyMesh*> polymesh_map_t; + polymesh_map_t mMeshes; + std::vector<LLViewerJoint *> mMeshLOD; + + //-------------------------------------------------------------------- + // Destroy invisible mesh + //-------------------------------------------------------------------- +protected: + BOOL mMeshValid; + LLFrameTimer mMeshInvisibleTime; - LLCachedControl<bool> mDebugAvatarRotation; // show animation debug info +/** Meshes + ** ** + *******************************************************************************/ + +/******************************************************************************** + ** ** + ** APPEARANCE + **/ + +public: + void processAvatarAppearance(LLMessageSystem* mesgsys); + void hideSkirt(); + void startAppearanceAnimation(BOOL set_by_user, BOOL play_sound); //-------------------------------------------------------------------- - // Collision Volumes + // Appearance morphing //-------------------------------------------------------------------- public: - S32 mNumCollisionVolumes; - LLViewerJointCollisionVolume* mCollisionVolumes; + BOOL mAppearanceAnimating; +private: + LLFrameTimer mAppearanceMorphTimer; + BOOL mAppearanceAnimSetByUser; + F32 mLastAppearanceBlendTime; //-------------------------------------------------------------------- - // cached pointers to well known joints + // Clothing colors (convenience functions to access visual parameters) //-------------------------------------------------------------------- public: - LLViewerJoint* mPelvisp; - LLViewerJoint* mTorsop; - LLViewerJoint* mChestp; - LLViewerJoint* mNeckp; - LLViewerJoint* mHeadp; - LLViewerJoint* mSkullp; - LLViewerJoint* mEyeLeftp; - LLViewerJoint* mEyeRightp; - LLViewerJoint* mHipLeftp; - LLViewerJoint* mHipRightp; - LLViewerJoint* mKneeLeftp; - LLViewerJoint* mKneeRightp; - LLViewerJoint* mAnkleLeftp; - LLViewerJoint* mAnkleRightp; - LLViewerJoint* mFootLeftp; - LLViewerJoint* mFootRightp; - LLViewerJoint* mWristLeftp; - LLViewerJoint* mWristRightp; + void setClothesColor(LLVOAvatarDefines::ETextureIndex te, const LLColor4& new_color, BOOL set_by_user); + LLColor4 getClothesColor(LLVOAvatarDefines::ETextureIndex te); + BOOL teToColorParams(LLVOAvatarDefines::ETextureIndex te, const char* param_name[3]); //-------------------------------------------------------------------- - // impostor state + // Global colors //-------------------------------------------------------------------- public: - LLRenderTarget mImpostor; - BOOL mNeedsImpostorUpdate; + LLColor4 getGlobalColor(const std::string& color_name ) const; + void onGlobalColorChanged(const LLTexGlobalColor* global_color, BOOL set_by_user); private: - LLVector3 mImpostorOffset; - LLVector2 mImpostorDim; - BOOL mNeedsAnimUpdate; - LLVector3 mImpostorExtents[2]; - LLVector3 mImpostorAngle; - F32 mImpostorDistance; - F32 mImpostorPixelArea; - LLVector3 mLastAnimExtents[2]; + LLTexGlobalColor* mTexSkinColor; + LLTexGlobalColor* mTexHairColor; + LLTexGlobalColor* mTexEyeColor; //-------------------------------------------------------------------- - // Misc Render State + // Visibility //-------------------------------------------------------------------- public: - BOOL mIsDummy; // For special views - S32 mSpecialRenderMode; // Special lighting + BOOL isVisible() const; + void setVisibilityRank(U32 rank); + U32 getVisibilityRank() const { return mVisibilityRank; } // unused + static S32 sNumVisibleAvatars; // Number of instances of this class + static LLColor4 getDummyColor(); +/** Appearance + ** ** + *******************************************************************************/ + +/******************************************************************************** + ** ** + ** WEARABLES + **/ +public: + BOOL isWearingWearableType(EWearableType type ) const; + //-------------------------------------------------------------------- - // animation state data + // Attachments //-------------------------------------------------------------------- public: - typedef std::map<LLUUID, S32>::iterator AnimIterator; - - std::map<LLUUID, S32> mSignaledAnimations; // requested state of Animation name/value - std::map<LLUUID, S32> mPlayingAnimations; // current state of Animation name/value - - typedef std::multimap<LLUUID, LLUUID> AnimationSourceMap; - typedef AnimationSourceMap::iterator AnimSourceIterator; - AnimationSourceMap mAnimationSources; // object ids that triggered anim ids + void clampAttachmentPositions(); + virtual LLViewerJointAttachment* attachObject(LLViewerObject *viewer_object); + BOOL detachObject(LLViewerObject *viewer_object); + static LLVOAvatar* findAvatarFromAttachment(LLViewerObject* obj); +protected: + LLViewerJointAttachment* getTargetAttachmentPoint(LLViewerObject* viewer_object); + void lazyAttach(); //-------------------------------------------------------------------- - // Shadowing + // Map of attachment points, by ID //-------------------------------------------------------------------- public: - void updateShadowFaces(); - LLDrawable* mShadow; -private: - LLFace* mShadow0Facep; - LLFace* mShadow1Facep; - LLPointer<LLViewerImage> mShadowImagep; + S32 getAttachmentCount(); // Warning: order(N) not order(1) // currently used only by -self + typedef std::map<S32, LLViewerJointAttachment*> attachment_map_t; + attachment_map_t mAttachmentPoints; + std::vector<LLPointer<LLViewerObject> > mPendingAttachment; //-------------------------------------------------------------------- - // Keeps track of foot step state for generating sounds + // HUD functions //-------------------------------------------------------------------- public: - void setFootPlane(const LLVector4 &plane) { mFootPlane = plane; } - LLVector4 mFootPlane; -private: - BOOL mWasOnGroundLeft; - BOOL mWasOnGroundRight; + BOOL hasHUDAttachment() const; + LLBBox getHUDBBox() const; + void rebuildHUD(); + void resetHUDAttachments(); + +/** Wearables + ** ** + *******************************************************************************/ + +/******************************************************************************** + ** ** + ** ACTIONS + **/ //-------------------------------------------------------------------- - // Pelvis height adjustment members. + // Animations //-------------------------------------------------------------------- public: - LLVector3 mBodySize; - S32 mLastSkeletonSerialNum; + BOOL isAnyAnimationSignaled(const LLUUID *anim_array, const S32 num_anims) const; + void processAnimationStateChanges(); +protected: + BOOL processSingleAnimationStateChange(const LLUUID &anim_id, BOOL start); + void resetAnimations(); private: - F32 mPelvisToFoot; + LLTimer mAnimTimer; + F32 mTimeLast; //-------------------------------------------------------------------- - // Display the name, then optionally fade it out + // Animation state data //-------------------------------------------------------------------- public: - LLFrameTimer mChatTimer; - LLPointer<LLHUDText> mNameText; -private: - LLFrameTimer mTimeVisible; - std::deque<LLChat> mChats; - BOOL mTyping; - LLFrameTimer mTypingTimer; + typedef std::map<LLUUID, S32>::iterator AnimIterator; + std::map<LLUUID, S32> mSignaledAnimations; // requested state of Animation name/value + std::map<LLUUID, S32> mPlayingAnimations; // current state of Animation name/value + + typedef std::multimap<LLUUID, LLUUID> AnimationSourceMap; + typedef AnimationSourceMap::iterator AnimSourceIterator; + AnimationSourceMap mAnimationSources; // object ids that triggered anim ids //-------------------------------------------------------------------- - // wind rippling in clothes + // Chat //-------------------------------------------------------------------- public: - LLVector4 mWindVec; - F32 mRipplePhase; - BOOL mBelowWater; + void addChat(const LLChat& chat); + void clearChat(); + void startTyping() { mTyping = TRUE; mTypingTimer.reset(); } + void stopTyping() { mTyping = FALSE; } private: - F32 mWindFreq; - LLFrameTimer mRippleTimer; - F32 mRippleTimeLast; - LLVector3 mRippleAccel; - LLVector3 mLastVel; + BOOL mVisibleChat; //-------------------------------------------------------------------- - // appearance morphing + // Lip synch morphs //-------------------------------------------------------------------- -public: - BOOL mAppearanceAnimating; private: - LLFrameTimer mAppearanceMorphTimer; - BOOL mAppearanceAnimSetByUser; - F32 mLastAppearanceBlendTime; + bool mLipSyncActive; // we're morphing for lip sync + LLVisualParam* mOohMorph; // cached pointers morphs for lip sync + LLVisualParam* mAahMorph; // cached pointers morphs for lip sync //-------------------------------------------------------------------- - // Attachments + // Flight //-------------------------------------------------------------------- public: - // map of attachment points, by ID - typedef std::map<S32, LLViewerJointAttachment*> attachment_map_t; - attachment_map_t mAttachmentPoints; - std::vector<LLPointer<LLViewerObject> > mPendingAttachment; + BOOL mInAir; + LLFrameTimer mTimeInAir; + +/** Actions + ** ** + *******************************************************************************/ + +/******************************************************************************** + ** ** + ** PHYSICS + **/ + +private: + F32 mSpeedAccum; // measures speed (for diagnostics mostly). + BOOL mTurning; // controls hysteresis on avatar rotation + F32 mSpeed; // misc. animation repeated state //-------------------------------------------------------------------- - // static preferences that are controlled by user settings/menus + // Collision volumes //-------------------------------------------------------------------- public: - static S32 sRenderName; - static BOOL sRenderGroupTitles; - static S32 sMaxVisible; - static F32 sRenderDistance; //distance at which avatars will render (affected by control "RenderAvatarMaxVisible") - static BOOL sShowAnimationDebug; // show animation debug info - static BOOL sUseImpostors; //use impostors for far away avatars - static BOOL sShowFootPlane; // show foot collision plane reported by server - static BOOL sVisibleInFirstPerson; - static S32 sNumLODChangesThisFrame; - static S32 sNumVisibleChatBubbles; - static BOOL sDebugInvisible; - static BOOL sShowAttachmentPoints; - static F32 sLODFactor; // user-settable LOD factor - static BOOL sJointDebug; // output total number of joints being touched for each avatar + S32 mNumCollisionVolumes; + LLViewerJointCollisionVolume* mCollisionVolumes; +protected: + BOOL allocateCollisionVolumes(U32 num); - static S32 sNumVisibleAvatars; // Number of instances of this class - //-------------------------------------------------------------------- - // Miscellaneous public variables. + // Dimensions //-------------------------------------------------------------------- public: - BOOL mInAir; - LLFrameTimer mTimeInAir; - LLVector3 mHeadOffset; // current head position - LLViewerJoint mRoot; // avatar skeleton - BOOL mIsSitting; // sitting state + void resolveHeightGlobal(const LLVector3d &inPos, LLVector3d &outPos, LLVector3 &outNorm); + void resolveHeightAgent(const LLVector3 &inPos, LLVector3 &outPos, LLVector3 &outNorm); + void resolveRayCollisionAgent(const LLVector3d start_pt, const LLVector3d end_pt, LLVector3d &out_pos, LLVector3 &out_norm); + void slamPosition(); // Slam position to transmitted position (for teleport); +protected: + void computeBodySize(); //-------------------------------------------------------------------- - // Private member variables. + // Material being stepped on //-------------------------------------------------------------------- private: - BOOL mIsSelf; // True if this avatar is for this viewer's agent + BOOL mStepOnLand; + U8 mStepMaterial; + LLVector3 mStepObjectVelocity; - LLViewerJoint *mScreenp; // special purpose joint for HUD attachments - BOOL mIsBuilt; // state of deferred character building - F32 mSpeedAccum; // measures speed (for diagnostics mostly). - - - // LLFrameTimer mUpdateLODTimer; // controls frequency of LOD change calculations - BOOL mDirtyMesh; - BOOL mTurning; // controls hysteresis on avatar rotation - F32 mSpeed; // misc. animation repeated state +/** Physics + ** ** + *******************************************************************************/ - // Keep track of the material being stepped on - BOOL mStepOnLand; - U8 mStepMaterial; - LLVector3 mStepObjectVelocity; +/******************************************************************************** + ** ** + ** HIERARCHY + **/ - // Destroy mesh data after being invisible for a while - BOOL mMeshValid; - BOOL mVisible; - LLFrameTimer mMeshInvisibleTime; +public: + virtual void setParent(LLViewerObject* parent); + virtual void addChild(LLViewerObject *childp); + virtual void removeChild(LLViewerObject *childp); - // Lip synch morph stuff - bool mLipSyncActive; // we're morphing for lip sync - LLVisualParam* mOohMorph; // cached pointers morphs for lip sync - LLVisualParam* mAahMorph; // cached pointers morphs for lip sync + //-------------------------------------------------------------------- + // Sitting + //-------------------------------------------------------------------- +public: + void sitOnObject(LLViewerObject *sit_object); + void getOffObject(); + BOOL mIsSitting; - // Skeleton for skinned avatar - S32 mNumJoints; - LLViewerJoint* mSkeleton; +/** Hierarchy + ** ** + *******************************************************************************/ - // Scratch textures used for compositing - static LLMap< LLGLenum, LLGLuint*> sScratchTexNames; - static LLMap< LLGLenum, F32*> sScratchTexLastBindTime; - static S32 sScratchTexBytes; +/******************************************************************************** + ** ** + ** NAME + **/ - // Global table of sound ids per material, and the ground - const static LLUUID sStepSounds[LL_MCODE_END]; - const static LLUUID sStepSoundOnLand; - - // Xml parse tree of avatar config file - static LLXmlTree sXMLTree; - // Xml parse tree of avatar skeleton file - static LLXmlTree sSkeletonXMLTree; +public: + std::string getFullname() const; // Returns "FirstName LastName" +protected: + static void getAnimLabels(LLDynamicArray<std::string>* labels); + static void getAnimNames(LLDynamicArray<std::string>* names); +private: + LLWString mNameString; + std::string mTitle; + BOOL mNameAway; + BOOL mNameBusy; + BOOL mNameMute; + BOOL mNameAppearance; + BOOL mRenderGroupTitles; - // Voice Visualizer is responsible for detecting the user's voice signal, and when the - // user speaks, it puts a voice symbol over the avatar's head, and triggering gesticulations - LLVoiceVisualizer* mVoiceVisualizer; - int mCurrentGesticulationLevel; - - // Animation timer - LLTimer mAnimTimer; - F32 mTimeLast; - - LLPointer<LLHUDEffectSpiral> mBeam; - LLFrameTimer mBeamTimer; - - F32 mAdjustedPixelArea; - - LLWString mNameString; - std::string mTitle; - BOOL mNameAway; - BOOL mNameBusy; - BOOL mNameMute; - BOOL mNameAppearance; - BOOL mVisibleChat; - BOOL mRenderGroupTitles; - - std::string mDebugText; - U64 mLastRegionHandle; - LLFrameTimer mRegionCrossingTimer; - S32 mRegionCrossingCount; - //-------------------------------------------------------------------- - // local textures for compositing. + // Display the name (then optionally fade it out) //-------------------------------------------------------------------- +public: + LLFrameTimer mChatTimer; + LLPointer<LLHUDText> mNameText; private: - LLUUID mSavedTE[ LLVOAvatarDefines::TEX_NUM_INDICES ]; - BOOL mFirstTEMessageReceived; - BOOL mFirstAppearanceMessageReceived; - BOOL mHasBakedHair; - - BOOL mCulled; - U32 mVisibilityRank; - F32 mMinPixelArea; // debug - F32 mMaxPixelArea; // debug - BOOL mHasGrey; // debug - + LLFrameTimer mTimeVisible; + std::deque<LLChat> mChats; + BOOL mTyping; + LLFrameTimer mTypingTimer; + +/** Name + ** ** + *******************************************************************************/ + +/******************************************************************************** + ** ** + ** SOUNDS + **/ + //-------------------------------------------------------------------- - // Global Colors + // Voice visualizer //-------------------------------------------------------------------- -private: - LLTexGlobalColor* mTexSkinColor; - LLTexGlobalColor* mTexHairColor; - LLTexGlobalColor* mTexEyeColor; - - BOOL mNeedsSkin; //if TRUE, avatar has been animated and verts have not been updated - S32 mUpdatePeriod; +public: + // Responsible for detecting the user's voice signal (and when the + // user speaks, it puts a voice symbol over the avatar's head) and gesticulations + LLVoiceVisualizer* mVoiceVisualizer; + int mCurrentGesticulationLevel; //-------------------------------------------------------------------- - // Internal functions + // Step sound //-------------------------------------------------------------------- protected: - void buildCharacter(); - void releaseMeshData(); - void restoreMeshData(); - void updateMeshData(); - void computeBodySize(); - const LLUUID& getStepSound() const; - BOOL needsRenderBeam(); - - BOOL allocateCollisionVolumes( U32 num ); - void resetHUDAttachments(); - static void getAnimLabels( LLDynamicArray<std::string>* labels ); - static void getAnimNames( LLDynamicArray<std::string>* names ); + const LLUUID& getStepSound() const; +private: + // Global table of sound ids per material, and the ground + const static LLUUID sStepSounds[LL_MCODE_END]; + const static LLUUID sStepSoundOnLand; //-------------------------------------------------------------------- - // Textures and Layers + // Foot step state (for generating sounds) //-------------------------------------------------------------------- -protected: - BOOL loadSkeletonNode(); - BOOL loadMeshNodes(); - BOOL isFullyBaked(); - void deleteLayerSetCaches(bool clearAll = true); - static BOOL areAllNearbyInstancesBaked(S32& grey_avatars); - static void onBakedTextureMasksLoaded(BOOL success, LLViewerImage *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata); - void setLocalTexture(LLVOAvatarDefines::ETextureIndex i, LLViewerImage* tex, BOOL baked_version_exits); - void requestLayerSetUpdate(LLVOAvatarDefines::ETextureIndex i); - void addLocalTextureStats(LLVOAvatarDefines::ETextureIndex i, LLViewerImage* imagep, F32 texel_area_ratio, BOOL rendered, BOOL covered_by_baked); - void addBakedTextureStats( LLViewerImage* imagep, F32 pixel_area, F32 texel_area_ratio, S32 boost_level); - static void onInitialBakedTextureLoaded( BOOL success, LLViewerImage *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata ); - static void onBakedTextureLoaded(BOOL success, LLViewerImage *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata); - void useBakedTexture(const LLUUID& id); - void dumpAvatarTEs(const std::string& context); - void removeMissingBakedTextures(); - LLTexLayerSet* getLayerSet(LLVOAvatarDefines::ETextureIndex index) const; - LLHost getObjectHost() const; - S32 getLocalDiscardLevel(LLVOAvatarDefines::ETextureIndex index); public: - static void updateFreezeCounter(S32 counter = 0 ); + void setFootPlane(const LLVector4 &plane) { mFootPlane = plane; } + LLVector4 mFootPlane; private: - static S32 sFreezeCounter; + BOOL mWasOnGroundLeft; + BOOL mWasOnGroundRight; + +/** Sounds + ** ** + *******************************************************************************/ + +/******************************************************************************** + ** ** + ** DIAGNOSTICS + **/ - //----------------------------------------------------------------------------------------------- - // Avatar skeleton setup. - //----------------------------------------------------------------------------------------------- -private: - BOOL loadAvatar(); - BOOL setupBone(const LLVOAvatarBoneInfo* info, LLViewerJoint* parent, S32 ¤t_volume_num, S32 ¤t_joint_num); - BOOL buildSkeleton(const LLVOAvatarSkeletonInfo *info); - - //----------------------------------------------------------------------------------------------- - // Per-avatar information about texture data. - // To-do: Move this to private implementation class - //----------------------------------------------------------------------------------------------- +public: + static void dumpArchetypeXML(void*); + static void dumpBakedStatus(); + const std::string getBakedStatusForPrintout() const; + void dumpAvatarTEs(const std::string& context); + + static F32 sUnbakedTime; // Total seconds with >=1 unbaked avatars + static F32 sUnbakedUpdateTime; // Last time stats were updated (to prevent multiple updates per frame) + static F32 sGreyTime; // Total seconds with >=1 grey avatars + static F32 sGreyUpdateTime; // Last time stats were updated (to prevent multiple updates per frame) +protected: + S32 getUnbakedPixelAreaRank(); + BOOL mHasGrey; private: - struct BakedTextureData + F32 mMinPixelArea; + F32 mMaxPixelArea; + F32 mAdjustedPixelArea; + std::string mDebugText; + +/** Diagnostics + ** ** + *******************************************************************************/ + +/******************************************************************************** + ** ** + ** SUPPORT CLASSES + **/ + +protected: // Shared with LLVOAvatarSelf + + struct LLVOAvatarXmlInfo { - LLUUID mLastTextureIndex; - LLTexLayerSet* mTexLayerSet; - bool mIsLoaded; - LLVOAvatarDefines::ETextureIndex mTextureIndex; - U32 mMaskTexName; - // Stores pointers to the joint meshes that this baked texture deals with - std::vector< LLViewerJointMesh * > mMeshes; // std::vector<LLViewerJointMesh> mJoints[i]->mMeshParts + LLVOAvatarXmlInfo(); + ~LLVOAvatarXmlInfo(); + + BOOL parseXmlSkeletonNode(LLXmlTreeNode* root); + BOOL parseXmlMeshNodes(LLXmlTreeNode* root); + BOOL parseXmlColorNodes(LLXmlTreeNode* root); + BOOL parseXmlLayerNodes(LLXmlTreeNode* root); + BOOL parseXmlDriverNodes(LLXmlTreeNode* root); + BOOL parseXmlMorphNodes(LLXmlTreeNode* root); + + struct LLVOAvatarMeshInfo + { + typedef std::pair<LLPolyMorphTargetInfo*,BOOL> morph_info_pair_t; + typedef std::vector<morph_info_pair_t> morph_info_list_t; + + LLVOAvatarMeshInfo() : mLOD(0), mMinPixelArea(.1f) {} + ~LLVOAvatarMeshInfo() + { + morph_info_list_t::iterator iter; + for (iter = mPolyMorphTargetInfoList.begin(); iter != mPolyMorphTargetInfoList.end(); iter++) + { + delete iter->first; + } + mPolyMorphTargetInfoList.clear(); + } + + std::string mType; + S32 mLOD; + std::string mMeshFileName; + std::string mReferenceMeshName; + F32 mMinPixelArea; + morph_info_list_t mPolyMorphTargetInfoList; + }; + typedef std::vector<LLVOAvatarMeshInfo*> mesh_info_list_t; + mesh_info_list_t mMeshInfoList; + + typedef std::vector<LLPolySkeletalDistortionInfo*> skeletal_distortion_info_list_t; + skeletal_distortion_info_list_t mSkeletalDistortionInfoList; + + struct LLVOAvatarAttachmentInfo + { + LLVOAvatarAttachmentInfo() + : mGroup(-1), mAttachmentID(-1), mPieMenuSlice(-1), mVisibleFirstPerson(FALSE), + mIsHUDAttachment(FALSE), mHasPosition(FALSE), mHasRotation(FALSE) {} + std::string mName; + std::string mJointName; + LLVector3 mPosition; + LLVector3 mRotationEuler; + S32 mGroup; + S32 mAttachmentID; + S32 mPieMenuSlice; + BOOL mVisibleFirstPerson; + BOOL mIsHUDAttachment; + BOOL mHasPosition; + BOOL mHasRotation; + }; + typedef std::vector<LLVOAvatarAttachmentInfo*> attachment_info_list_t; + attachment_info_list_t mAttachmentInfoList; + + LLTexGlobalColorInfo *mTexSkinColorInfo; + LLTexGlobalColorInfo *mTexHairColorInfo; + LLTexGlobalColorInfo *mTexEyeColorInfo; + + typedef std::vector<LLTexLayerSetInfo*> layer_info_list_t; + layer_info_list_t mLayerInfoList; + + typedef std::vector<LLDriverParamInfo*> driver_info_list_t; + driver_info_list_t mDriverInfoList; + + struct LLVOAvatarMorphInfo + { + LLVOAvatarMorphInfo() + : mInvert(FALSE) {} + std::string mName; + std::string mRegion; + std::string mLayer; + BOOL mInvert; + }; + + typedef std::vector<LLVOAvatarMorphInfo*> morph_info_list_t; + morph_info_list_t mMorphMaskInfoList; }; - typedef std::vector<BakedTextureData> bakedtexturedata_vec_t; - bakedtexturedata_vec_t mBakedTextureData; - struct LocalTextureData + struct LLMaskedMorph { - LocalTextureData() : mIsBakedReady(FALSE), mDiscard(MAX_DISCARD_LEVEL+1), mImage(NULL) - {} - LLPointer<LLViewerImage> mImage; - BOOL mIsBakedReady; - S32 mDiscard; + LLMaskedMorph(LLPolyMorphTarget *morph_target, BOOL invert, std::string layer) : + mMorphTarget(morph_target), + mInvert(invert), + mLayer(layer) + { + morph_target->addPendingMorphMask(); + } + + LLPolyMorphTarget *mMorphTarget; + BOOL mInvert; + std::string mLayer; }; - typedef std::map<LLVOAvatarDefines::ETextureIndex, LocalTextureData> localtexture_map_t; - localtexture_map_t mLocalTextureData; - - typedef std::multimap<std::string, LLPolyMesh*> polymesh_map_t; - polymesh_map_t mMeshes; - std::vector<LLViewerJoint *> mMeshLOD; - S32 mNumInitFaces ; //number of faces generated when creating the avatar drawable, does not inculde splitted faces due to long vertex buffer. - - //----------------------------------------------------------------------------------------------- - // Static texture/mesh/baked dictionary for avatars - //----------------------------------------------------------------------------------------------- -public: - static BOOL isIndexLocalTexture(LLVOAvatarDefines::ETextureIndex i); - static BOOL isIndexBakedTexture(LLVOAvatarDefines::ETextureIndex i); -private: - static const LLVOAvatarDefines::LLVOAvatarDictionary *getDictionary() { return sAvatarDictionary; } - static LLVOAvatarDefines::LLVOAvatarDictionary *sAvatarDictionary; - static LLVOAvatarSkeletonInfo* sAvatarSkeletonInfo; - static LLVOAvatarXmlInfo* sAvatarXmlInfo; - //----------------------------------------------------------------------------------------------- - // Diagnostics - //----------------------------------------------------------------------------------------------- -public: - static F32 sUnbakedTime; // Total seconds with >=1 unbaked avatars - static F32 sUnbakedUpdateTime; // Last time stats were updated (to prevent multiple updates per frame) - static F32 sGreyTime; // Total seconds with >=1 grey avatars - static F32 sGreyUpdateTime; // Last time stats were updated (to prevent multiple updates per frame) +/** Support classes + ** ** + *******************************************************************************/ - const std::string getBakedStatusForPrintout() const; -}; +}; // LLVOAvatar -//----------------------------------------------------------------------------------------------- +//------------------------------------------------------------------------ // Inlines -//----------------------------------------------------------------------------------------------- -inline BOOL LLVOAvatar::isTextureDefined(U8 te) const -{ - return (getTEImage(te)->getID() != IMG_DEFAULT_AVATAR && getTEImage(te)->getID() != IMG_DEFAULT); -} - -inline BOOL LLVOAvatar::isTextureVisible(U8 te) const +//------------------------------------------------------------------------ +inline BOOL LLVOAvatar::isTextureVisible(LLVOAvatarDefines::ETextureIndex te) const { return ((isTextureDefined(te) || isSelf()) && (getTEImage(te)->getID() != IMG_INVISIBLE diff --git a/indra/newview/llvoavatardefines.cpp b/indra/newview/llvoavatardefines.cpp index 371ecbb7ab5eacdb57d81795cc6b87cf22930174..978a61972f805d894a1e5228cbcd90692f36a524 100644 --- a/indra/newview/llvoavatardefines.cpp +++ b/indra/newview/llvoavatardefines.cpp @@ -32,6 +32,7 @@ #include "llviewerprecompiledheaders.h" #include "llvoavatardefines.h" +#include "llviewercontrol.h" // gSavedSettings const S32 LLVOAvatarDefines::SCRATCH_TEX_WIDTH = 512; const S32 LLVOAvatarDefines::SCRATCH_TEX_HEIGHT = 512; @@ -42,56 +43,87 @@ using namespace LLVOAvatarDefines; /********************************************************************************* * Edit this function to add/remove/change textures and mesh definitions for avatars. */ -void LLVOAvatarDictionary::initData() + +LLVOAvatarDictionary::Textures::Textures() { - // Textures - mTextureMap[TEX_HEAD_BODYPAINT] = new TextureDictionaryEntry("head bodypaint", TRUE, BAKED_NUM_INDICES, "", WT_SKIN); - mTextureMap[TEX_UPPER_SHIRT] = new TextureDictionaryEntry("shirt", TRUE, BAKED_NUM_INDICES, "UIImgDefaultShirtUUID", WT_SHIRT); - mTextureMap[TEX_LOWER_PANTS] = new TextureDictionaryEntry("pants", TRUE, BAKED_NUM_INDICES, "UIImgDefaultPantsUUID", WT_PANTS); - mTextureMap[TEX_EYES_IRIS] = new TextureDictionaryEntry("iris", TRUE, BAKED_NUM_INDICES, "UIImgDefaultEyesUUID", WT_EYES); - mTextureMap[TEX_HAIR] = new TextureDictionaryEntry("hair", TRUE, BAKED_NUM_INDICES, "UIImgDefaultHairUUID", WT_HAIR); - mTextureMap[TEX_UPPER_BODYPAINT] = new TextureDictionaryEntry("upper bodypaint", TRUE, BAKED_NUM_INDICES, "", WT_SKIN); - mTextureMap[TEX_LOWER_BODYPAINT] = new TextureDictionaryEntry("lower bodypaint", TRUE, BAKED_NUM_INDICES, "", WT_SKIN); - mTextureMap[TEX_LOWER_SHOES] = new TextureDictionaryEntry("shoes", TRUE, BAKED_NUM_INDICES, "UIImgDefaultShoesUUID", WT_SHOES); - mTextureMap[TEX_LOWER_SOCKS] = new TextureDictionaryEntry("socks", TRUE, BAKED_NUM_INDICES, "UIImgDefaultSocksUUID", WT_SOCKS); - mTextureMap[TEX_UPPER_JACKET] = new TextureDictionaryEntry("upper jacket", TRUE, BAKED_NUM_INDICES, "UIImgDefaultJacketUUID", WT_JACKET); - mTextureMap[TEX_LOWER_JACKET] = new TextureDictionaryEntry("lower jacket", TRUE, BAKED_NUM_INDICES, "UIImgDefaultJacketUUID", WT_JACKET); - mTextureMap[TEX_UPPER_GLOVES] = new TextureDictionaryEntry("gloves", TRUE, BAKED_NUM_INDICES, "UIImgDefaultGlovesUUID", WT_GLOVES); - mTextureMap[TEX_UPPER_UNDERSHIRT] = new TextureDictionaryEntry("undershirt", TRUE, BAKED_NUM_INDICES, "UIImgDefaultUnderwearUUID", WT_UNDERSHIRT); - mTextureMap[TEX_LOWER_UNDERPANTS] = new TextureDictionaryEntry("underpants", TRUE, BAKED_NUM_INDICES, "UIImgDefaultUnderwearUUID", WT_UNDERPANTS); - mTextureMap[TEX_SKIRT] = new TextureDictionaryEntry("skirt", TRUE, BAKED_NUM_INDICES, "UIImgDefaultSkirtUUID", WT_SKIRT); - mTextureMap[TEX_HEAD_BAKED] = new TextureDictionaryEntry("head-baked", FALSE, BAKED_HEAD); - mTextureMap[TEX_UPPER_BAKED] = new TextureDictionaryEntry("upper-baked", FALSE, BAKED_UPPER); - mTextureMap[TEX_LOWER_BAKED] = new TextureDictionaryEntry("lower-baked", FALSE, BAKED_LOWER); - mTextureMap[TEX_EYES_BAKED] = new TextureDictionaryEntry("eyes-baked", FALSE, BAKED_EYES); - mTextureMap[TEX_HAIR_BAKED] = new TextureDictionaryEntry("hair-baked", FALSE, BAKED_HAIR); - mTextureMap[TEX_SKIRT_BAKED] = new TextureDictionaryEntry("skirt-baked", FALSE, BAKED_SKIRT); + addEntry(TEX_HEAD_BODYPAINT, new TextureEntry("head_bodypaint", TRUE, BAKED_NUM_INDICES, "", WT_SKIN)); + addEntry(TEX_UPPER_SHIRT, new TextureEntry("upper_shirt", TRUE, BAKED_NUM_INDICES, "UIImgDefaultShirtUUID", WT_SHIRT)); + addEntry(TEX_LOWER_PANTS, new TextureEntry("lower_pants", TRUE, BAKED_NUM_INDICES, "UIImgDefaultPantsUUID", WT_PANTS)); + addEntry(TEX_EYES_IRIS, new TextureEntry("eyes_iris", TRUE, BAKED_NUM_INDICES, "UIImgDefaultEyesUUID", WT_EYES)); + addEntry(TEX_HAIR, new TextureEntry("hair_grain", TRUE, BAKED_NUM_INDICES, "UIImgDefaultHairUUID", WT_HAIR)); + addEntry(TEX_UPPER_BODYPAINT, new TextureEntry("upper_bodypaint", TRUE, BAKED_NUM_INDICES, "", WT_SKIN)); + addEntry(TEX_LOWER_BODYPAINT, new TextureEntry("lower_bodypaint", TRUE, BAKED_NUM_INDICES, "", WT_SKIN)); + addEntry(TEX_LOWER_SHOES, new TextureEntry("lower_shoes", TRUE, BAKED_NUM_INDICES, "UIImgDefaultShoesUUID", WT_SHOES)); + addEntry(TEX_LOWER_SOCKS, new TextureEntry("lower_socks", TRUE, BAKED_NUM_INDICES, "UIImgDefaultSocksUUID", WT_SOCKS)); + addEntry(TEX_UPPER_JACKET, new TextureEntry("upper_jacket", TRUE, BAKED_NUM_INDICES, "UIImgDefaultJacketUUID", WT_JACKET)); + addEntry(TEX_LOWER_JACKET, new TextureEntry("lower_jacket", TRUE, BAKED_NUM_INDICES, "UIImgDefaultJacketUUID", WT_JACKET)); + addEntry(TEX_UPPER_GLOVES, new TextureEntry("upper_gloves", TRUE, BAKED_NUM_INDICES, "UIImgDefaultGlovesUUID", WT_GLOVES)); + addEntry(TEX_UPPER_UNDERSHIRT, new TextureEntry("upper_undershirt", TRUE, BAKED_NUM_INDICES, "UIImgDefaultUnderwearUUID", WT_UNDERSHIRT)); + addEntry(TEX_LOWER_UNDERPANTS, new TextureEntry("lower_underpants", TRUE, BAKED_NUM_INDICES, "UIImgDefaultUnderwearUUID", WT_UNDERPANTS)); + addEntry(TEX_SKIRT, new TextureEntry("skirt", TRUE, BAKED_NUM_INDICES, "UIImgDefaultSkirtUUID", WT_SKIRT)); + addEntry(TEX_LOWER_ALPHA, new TextureEntry("lower_alpha", TRUE, BAKED_NUM_INDICES, "UIImgDefaultAlphaUUID", WT_ALPHA)); + addEntry(TEX_UPPER_ALPHA, new TextureEntry("upper_alpha", TRUE, BAKED_NUM_INDICES, "UIImgDefaultAlphaUUID", WT_ALPHA)); + addEntry(TEX_HEAD_ALPHA, new TextureEntry("head_alpha", TRUE, BAKED_NUM_INDICES, "UIImgDefaultAlphaUUID", WT_ALPHA)); + addEntry(TEX_EYES_ALPHA, new TextureEntry("eyes_alpha", TRUE, BAKED_NUM_INDICES, "UIImgDefaultAlphaUUID", WT_ALPHA)); + addEntry(TEX_HAIR_ALPHA, new TextureEntry("hair_alpha", TRUE, BAKED_NUM_INDICES, "UIImgDefaultAlphaUUID", WT_ALPHA)); + addEntry(TEX_HEAD_TATTOO, new TextureEntry("head_tattoo", TRUE, BAKED_NUM_INDICES, "UIImgDefaultTattooUUID", WT_TATTOO)); + addEntry(TEX_UPPER_TATTOO, new TextureEntry("upper_tattoo", TRUE, BAKED_NUM_INDICES, "UIImgDefaultTattooUUID", WT_TATTOO)); + addEntry(TEX_LOWER_TATTOO, new TextureEntry("lower_tattoo", TRUE, BAKED_NUM_INDICES, "UIImgDefaultTattooUUID", WT_TATTOO)); + addEntry(TEX_HEAD_BAKED, new TextureEntry("head-baked", FALSE, BAKED_HEAD)); + addEntry(TEX_UPPER_BAKED, new TextureEntry("upper-baked", FALSE, BAKED_UPPER)); + addEntry(TEX_LOWER_BAKED, new TextureEntry("lower-baked", FALSE, BAKED_LOWER)); + addEntry(TEX_EYES_BAKED, new TextureEntry("eyes-baked", FALSE, BAKED_EYES)); + addEntry(TEX_HAIR_BAKED, new TextureEntry("hair-baked", FALSE, BAKED_HAIR)); + addEntry(TEX_SKIRT_BAKED, new TextureEntry("skirt-baked", FALSE, BAKED_SKIRT)); +} +LLVOAvatarDictionary::BakedTextures::BakedTextures() +{ // Baked textures - mBakedTextureMap[BAKED_HEAD] = new BakedDictionaryEntry(TEX_HEAD_BAKED, "head", 1, TEX_HEAD_BODYPAINT); - mBakedTextureMap[BAKED_UPPER] = new BakedDictionaryEntry(TEX_UPPER_BAKED, "upper_body", 5, TEX_UPPER_SHIRT,TEX_UPPER_BODYPAINT,TEX_UPPER_JACKET,TEX_UPPER_GLOVES,TEX_UPPER_UNDERSHIRT); - mBakedTextureMap[BAKED_LOWER] = new BakedDictionaryEntry(TEX_LOWER_BAKED, "lower_body", 6, TEX_LOWER_PANTS,TEX_LOWER_BODYPAINT,TEX_LOWER_SHOES,TEX_LOWER_SOCKS,TEX_LOWER_JACKET,TEX_LOWER_UNDERPANTS); - mBakedTextureMap[BAKED_EYES] = new BakedDictionaryEntry(TEX_EYES_BAKED, "eyes", 1, TEX_EYES_IRIS); - mBakedTextureMap[BAKED_SKIRT] = new BakedDictionaryEntry(TEX_SKIRT_BAKED, "skirt", 1, TEX_SKIRT); - mBakedTextureMap[BAKED_HAIR] = new BakedDictionaryEntry(TEX_HAIR_BAKED, "hair", 1, TEX_HAIR); - + addEntry(BAKED_HEAD, new BakedEntry(TEX_HEAD_BAKED, + "head", "18ded8d6-bcfc-e415-8539-944c0f5ea7a6", + 3, TEX_HEAD_BODYPAINT, TEX_HEAD_TATTOO, TEX_HEAD_ALPHA, + 5, WT_SHAPE, WT_SKIN, WT_HAIR, WT_TATTOO, WT_ALPHA)); + + addEntry(BAKED_UPPER, new BakedEntry(TEX_UPPER_BAKED, + "upper_body", "338c29e3-3024-4dbb-998d-7c04cf4fa88f", + 7, TEX_UPPER_SHIRT,TEX_UPPER_BODYPAINT, TEX_UPPER_JACKET, + TEX_UPPER_GLOVES, TEX_UPPER_UNDERSHIRT, TEX_UPPER_TATTOO, TEX_UPPER_ALPHA, + 8, WT_SHAPE, WT_SKIN, WT_SHIRT, WT_JACKET, WT_GLOVES, WT_UNDERSHIRT, WT_TATTOO, WT_ALPHA)); + + addEntry(BAKED_LOWER, new BakedEntry(TEX_LOWER_BAKED, + "lower_body", "91b4a2c7-1b1a-ba16-9a16-1f8f8dcc1c3f", + 8, TEX_LOWER_PANTS,TEX_LOWER_BODYPAINT,TEX_LOWER_SHOES, TEX_LOWER_SOCKS, + TEX_LOWER_JACKET, TEX_LOWER_UNDERPANTS, TEX_LOWER_TATTOO, TEX_LOWER_ALPHA, + 9, WT_SHAPE, WT_SKIN, WT_PANTS, WT_SHOES, WT_SOCKS, WT_JACKET, WT_UNDERPANTS, WT_TATTOO, WT_ALPHA)); + + addEntry(BAKED_EYES, new BakedEntry(TEX_EYES_BAKED, + "eyes", "b2cf28af-b840-1071-3c6a-78085d8128b5", + 2, TEX_EYES_IRIS, TEX_EYES_ALPHA, + 2, WT_EYES, WT_ALPHA)); + + addEntry(BAKED_SKIRT, new BakedEntry(TEX_SKIRT_BAKED, + "skirt", "ea800387-ea1a-14e0-56cb-24f2022f969a", + 1, TEX_SKIRT, + 1, WT_SKIRT)); + + addEntry(BAKED_HAIR, new BakedEntry(TEX_HAIR_BAKED, + "hair", "0af1ef7c-ad24-11dd-8790-001f5bf833e8", + 2, TEX_HAIR, TEX_HAIR_ALPHA, + 2, WT_HAIR, WT_ALPHA)); +} + +LLVOAvatarDictionary::Meshes::Meshes() +{ // Meshes - mMeshMap[MESH_ID_HAIR] = new MeshDictionaryEntry(BAKED_HAIR, "hairMesh", 6, LLViewerJoint::PN_4); - mMeshMap[MESH_ID_HEAD] = new MeshDictionaryEntry(BAKED_HEAD, "headMesh", 5, LLViewerJoint::PN_5); - mMeshMap[MESH_ID_EYELASH] = new MeshDictionaryEntry(BAKED_HEAD, "eyelashMesh", 1, LLViewerJoint::PN_0); // no baked mesh associated currently - mMeshMap[MESH_ID_UPPER_BODY] = new MeshDictionaryEntry(BAKED_UPPER, "upperBodyMesh", 5, LLViewerJoint::PN_1); - mMeshMap[MESH_ID_LOWER_BODY] = new MeshDictionaryEntry(BAKED_LOWER, "lowerBodyMesh", 5, LLViewerJoint::PN_2); - mMeshMap[MESH_ID_EYEBALL_LEFT] = new MeshDictionaryEntry(BAKED_EYES, "eyeBallLeftMesh", 2, LLViewerJoint::PN_3); - mMeshMap[MESH_ID_EYEBALL_RIGHT] = new MeshDictionaryEntry(BAKED_EYES, "eyeBallRightMesh", 2, LLViewerJoint::PN_3); - mMeshMap[MESH_ID_SKIRT] = new MeshDictionaryEntry(BAKED_SKIRT, "skirtMesh", 5, LLViewerJoint::PN_5); - - // Wearables - mWearableMap[BAKED_HEAD] = new WearableDictionaryEntry("18ded8d6-bcfc-e415-8539-944c0f5ea7a6", 3, WT_SHAPE, WT_SKIN, WT_HAIR); - mWearableMap[BAKED_UPPER] = new WearableDictionaryEntry("338c29e3-3024-4dbb-998d-7c04cf4fa88f", 6, WT_SHAPE, WT_SKIN, WT_SHIRT, WT_JACKET, WT_GLOVES, WT_UNDERSHIRT); - mWearableMap[BAKED_LOWER] = new WearableDictionaryEntry("91b4a2c7-1b1a-ba16-9a16-1f8f8dcc1c3f", 7, WT_SHAPE, WT_SKIN, WT_PANTS, WT_SHOES, WT_SOCKS, WT_JACKET, WT_UNDERPANTS); - mWearableMap[BAKED_EYES] = new WearableDictionaryEntry("b2cf28af-b840-1071-3c6a-78085d8128b5", 1, WT_EYES); - mWearableMap[BAKED_SKIRT] = new WearableDictionaryEntry("ea800387-ea1a-14e0-56cb-24f2022f969a", 1, WT_SKIRT); - mWearableMap[BAKED_HAIR] = new WearableDictionaryEntry("0af1ef7c-ad24-11dd-8790-001f5bf833e8", 1, WT_HAIR); + addEntry(MESH_ID_HAIR, new MeshEntry(BAKED_HAIR, "hairMesh", 6, LLViewerJoint::PN_4)); + addEntry(MESH_ID_HEAD, new MeshEntry(BAKED_HEAD, "headMesh", 5, LLViewerJoint::PN_5)); + addEntry(MESH_ID_EYELASH, new MeshEntry(BAKED_HEAD, "eyelashMesh", 1, LLViewerJoint::PN_0)); // no baked mesh associated currently + addEntry(MESH_ID_UPPER_BODY, new MeshEntry(BAKED_UPPER, "upperBodyMesh", 5, LLViewerJoint::PN_1)); + addEntry(MESH_ID_LOWER_BODY, new MeshEntry(BAKED_LOWER, "lowerBodyMesh", 5, LLViewerJoint::PN_2)); + addEntry(MESH_ID_EYEBALL_LEFT, new MeshEntry(BAKED_EYES, "eyeBallLeftMesh", 2, LLViewerJoint::PN_3)); + addEntry(MESH_ID_EYEBALL_RIGHT, new MeshEntry(BAKED_EYES, "eyeBallRightMesh", 2, LLViewerJoint::PN_3)); + addEntry(MESH_ID_SKIRT, new MeshEntry(BAKED_SKIRT, "skirtMesh", 5, LLViewerJoint::PN_5)); } /* @@ -100,18 +132,22 @@ void LLVOAvatarDictionary::initData() LLVOAvatarDictionary::LLVOAvatarDictionary() { - initData(); createAssociations(); } +//virtual +LLVOAvatarDictionary::~LLVOAvatarDictionary() +{ +} + // Baked textures are composites of textures; for each such composited texture, // map it to the baked texture. void LLVOAvatarDictionary::createAssociations() { - for (baked_map_t::const_iterator iter = mBakedTextureMap.begin(); iter != mBakedTextureMap.end(); iter++) + for (BakedTextures::const_iterator iter = mBakedTextures.begin(); iter != mBakedTextures.end(); iter++) { const EBakedTextureIndex baked_index = (iter->first); - const BakedDictionaryEntry *dict = (iter->second); + const BakedEntry *dict = (iter->second); // For each texture that this baked texture index affects, associate those textures // with this baked texture index. @@ -120,19 +156,19 @@ void LLVOAvatarDictionary::createAssociations() local_texture_iter++) { const ETextureIndex local_texture_index = (ETextureIndex) *local_texture_iter; - mTextureMap[local_texture_index]->mIsUsedByBakedTexture = true; - mTextureMap[local_texture_index]->mBakedTextureIndex = baked_index; + mTextures[local_texture_index]->mIsUsedByBakedTexture = true; + mTextures[local_texture_index]->mBakedTextureIndex = baked_index; } } } -LLVOAvatarDictionary::TextureDictionaryEntry::TextureDictionaryEntry(const std::string &name, - bool is_local_texture, - EBakedTextureIndex baked_texture_index, - const std::string &default_image_name, - EWearableType wearable_type) : - mName(name), +LLVOAvatarDictionary::TextureEntry::TextureEntry(const std::string &name, + bool is_local_texture, + EBakedTextureIndex baked_texture_index, + const std::string &default_image_name, + EWearableType wearable_type) : + LLDictionaryEntry(name), mIsLocalTexture(is_local_texture), mIsBakedTexture(!is_local_texture), mIsUsedByBakedTexture(baked_texture_index != BAKED_NUM_INDICES), @@ -142,87 +178,93 @@ LLVOAvatarDictionary::TextureDictionaryEntry::TextureDictionaryEntry(const std:: { } -LLVOAvatarDictionary::MeshDictionaryEntry::MeshDictionaryEntry(EBakedTextureIndex baked_index, - const std::string &name, - U8 level, - LLViewerJoint::PickName pick) : +LLVOAvatarDictionary::MeshEntry::MeshEntry(EBakedTextureIndex baked_index, + const std::string &name, + U8 level, + LLViewerJoint::PickName pick) : + LLDictionaryEntry(name), mBakedID(baked_index), - mName(name), mLOD(level), mPickName(pick) { } -LLVOAvatarDictionary::BakedDictionaryEntry::BakedDictionaryEntry(ETextureIndex tex_index, - const std::string &name, - U32 num_local_textures, ... ) : - mName(name), +LLVOAvatarDictionary::BakedEntry::BakedEntry(ETextureIndex tex_index, + const std::string &name, + const std::string &hash_name, + U32 num_local_textures, + ... ) : + LLDictionaryEntry(name), + mWearablesHashID(LLUUID(hash_name)), mTextureIndex(tex_index) - { va_list argp; + va_start(argp, num_local_textures); + + // Read in local textures for (U8 i=0; i < num_local_textures; i++) { ETextureIndex t = (ETextureIndex)va_arg(argp,int); mLocalTextures.push_back(t); } -} -LLVOAvatarDictionary::WearableDictionaryEntry::WearableDictionaryEntry(const std::string &hash_name, - U32 num_wearables, ... ) : - mHashID(LLUUID(hash_name)) -{ - va_list argp; - va_start(argp, num_wearables); + // Read in number of wearables + const U32 num_wearables = (U32)va_arg(argp,int); + // Read in wearables for (U8 i=0; i < num_wearables; i++) { EWearableType t = (EWearableType)va_arg(argp,int); - mWearablesVec.push_back(t); + mWearables.push_back(t); } } -//virtual -LLVOAvatarDictionary::~LLVOAvatarDictionary() +// static +ETextureIndex LLVOAvatarDictionary::bakedToLocalTextureIndex(EBakedTextureIndex index) { - for (mesh_map_t::iterator iter = mMeshMap.begin(); iter != mMeshMap.end(); iter++) - delete (iter->second); - for (baked_map_t::iterator iter = mBakedTextureMap.begin(); iter != mBakedTextureMap.end(); iter++) - delete (iter->second); - for (texture_map_t::iterator iter = mTextureMap.begin(); iter != mTextureMap.end(); iter++) - delete (iter->second); -} - -const LLVOAvatarDictionary::MeshDictionaryEntry *LLVOAvatarDictionary::getMesh(EMeshIndex index) const -{ - mesh_map_t::const_iterator mesh_iter = mMeshMap.find(index); - if (mesh_iter == mMeshMap.end()) return NULL; - return mesh_iter->second; + return LLVOAvatarDictionary::getInstance()->getBakedTexture(index)->mTextureIndex; } -const LLVOAvatarDictionary::BakedDictionaryEntry *LLVOAvatarDictionary::getBakedTexture(EBakedTextureIndex index) const +//static +EBakedTextureIndex LLVOAvatarDictionary::findBakedByRegionName(std::string name) { - baked_map_t::const_iterator baked_iter = mBakedTextureMap.find(index); - if (baked_iter == mBakedTextureMap.end()) return NULL; - return baked_iter->second; + U8 index = 0; + while (index < BAKED_NUM_INDICES) + { + const BakedEntry *be = LLVOAvatarDictionary::getInstance()->getBakedTexture((EBakedTextureIndex) index); + if (be && be->mName.compare(name) == 0) + { + // baked texture found + return (EBakedTextureIndex) index; + } + index++; + } + // baked texture could not be found + return BAKED_NUM_INDICES; } -const LLVOAvatarDictionary::TextureDictionaryEntry *LLVOAvatarDictionary::getTexture(ETextureIndex index) const +//static +const LLUUID LLVOAvatarDictionary::getDefaultTextureImageID(ETextureIndex index) { - texture_map_t::const_iterator texture_iter = mTextureMap.find(index); - if (texture_iter == mTextureMap.end()) return NULL; - return texture_iter->second; + /* switch( index ) + case TEX_UPPER_SHIRT: return LLUUID( gSavedSettings.getString("UIImgDefaultShirtUUID") ); */ + const TextureEntry *texture_dict = getInstance()->getTexture(index); + const std::string &default_image_name = texture_dict->mDefaultImageName; + if (default_image_name == "") + { + return IMG_DEFAULT_AVATAR; + } + else + { + return LLUUID(gSavedSettings.getString(default_image_name)); + } } -const LLVOAvatarDictionary::WearableDictionaryEntry *LLVOAvatarDictionary::getWearable(EBakedTextureIndex index) const +// static +EWearableType LLVOAvatarDictionary::getTEWearableType(ETextureIndex index ) { - wearable_map_t::const_iterator wearable_iter = mWearableMap.find(index); - if (wearable_iter == mWearableMap.end()) return NULL; - return wearable_iter->second; + /* switch(index) + case TEX_UPPER_SHIRT: + return WT_SHIRT; */ + return getInstance()->getTexture(index)->mWearableType; } - - -ETextureIndex LLVOAvatarDefines::getTextureIndex(EBakedTextureIndex index) -{ - return LLVOAvatarDictionary::getInstance()->getBakedTexture(index)->mTextureIndex; -} diff --git a/indra/newview/llvoavatardefines.h b/indra/newview/llvoavatardefines.h index 1da27b0fe048854b26bae4be81090ecded640ee2..cf3d3181597048f1237b3a9599e5a64ffc3fffec 100644 --- a/indra/newview/llvoavatardefines.h +++ b/indra/newview/llvoavatardefines.h @@ -37,6 +37,7 @@ #include <vector> #include "llwearable.h" #include "llviewerjoint.h" +#include "lldictionary.h" namespace LLVOAvatarDefines { @@ -46,7 +47,7 @@ extern const S32 SCRATCH_TEX_HEIGHT; extern const S32 IMPOSTOR_PERIOD; //-------------------------------------------------------------------- -// texture entry assignment +// Enums //-------------------------------------------------------------------- enum ETextureIndex { @@ -58,9 +59,9 @@ enum ETextureIndex TEX_UPPER_BODYPAINT, TEX_LOWER_BODYPAINT, TEX_LOWER_SHOES, - TEX_HEAD_BAKED, // Pre-composited - TEX_UPPER_BAKED, // Pre-composited - TEX_LOWER_BAKED, // Pre-composited + TEX_HEAD_BAKED, // Pre-composited + TEX_UPPER_BAKED, // Pre-composited + TEX_LOWER_BAKED, // Pre-composited TEX_EYES_BAKED, // Pre-composited TEX_LOWER_SOCKS, TEX_UPPER_JACKET, @@ -69,14 +70,19 @@ enum ETextureIndex TEX_UPPER_UNDERSHIRT, TEX_LOWER_UNDERPANTS, TEX_SKIRT, - TEX_SKIRT_BAKED, // Pre-composited + TEX_SKIRT_BAKED, // Pre-composited TEX_HAIR_BAKED, // Pre-composited + TEX_LOWER_ALPHA, + TEX_UPPER_ALPHA, + TEX_HEAD_ALPHA, + TEX_EYES_ALPHA, + TEX_HAIR_ALPHA, + TEX_HEAD_TATTOO, + TEX_UPPER_TATTOO, + TEX_LOWER_TATTOO, TEX_NUM_INDICES -}; // "Note: if TEX_NUM_ENTRIES changes, update AGENT_TEXTURES in llagentinfo.h, mTextureIndexBaked, and BAKED_TEXTURE_COUNT" -// Seraph - Above comment about order is probably obsolete. +}; -typedef std::vector<ETextureIndex> texture_vec_t; - enum EBakedTextureIndex { BAKED_HEAD = 0, @@ -87,7 +93,6 @@ enum EBakedTextureIndex BAKED_HAIR, BAKED_NUM_INDICES }; -typedef std::vector<EBakedTextureIndex> bakedtexture_vec_t; // Reference IDs for each mesh. Used as indices for vector of joints enum EMeshIndex @@ -102,19 +107,15 @@ enum EMeshIndex MESH_ID_SKIRT, MESH_ID_NUM_INDICES }; -typedef std::vector<EMeshIndex> mesh_vec_t; +//-------------------------------------------------------------------- +// Vector Types +//-------------------------------------------------------------------- +typedef std::vector<ETextureIndex> texture_vec_t; +typedef std::vector<EBakedTextureIndex> bakedtexture_vec_t; +typedef std::vector<EMeshIndex> mesh_vec_t; typedef std::vector<EWearableType> wearables_vec_t; -//-------------------------------------------------------------------------------- -// Convenience Functions -//-------------------------------------------------------------------------------- - -// Convert from baked texture to associated texture; e.g. BAKED_HEAD -> TEX_HEAD_BAKED -ETextureIndex getTextureIndex(EBakedTextureIndex t); - - - //------------------------------------------------------------------------ // LLVOAvatarDictionary // @@ -125,86 +126,109 @@ ETextureIndex getTextureIndex(EBakedTextureIndex t); //------------------------------------------------------------------------ class LLVOAvatarDictionary : public LLSingleton<LLVOAvatarDictionary> { + //-------------------------------------------------------------------- + // Constructors and Destructors + //-------------------------------------------------------------------- public: LLVOAvatarDictionary(); virtual ~LLVOAvatarDictionary(); +private: + void createAssociations(); - struct TextureDictionaryEntry + //-------------------------------------------------------------------- + // Local and baked textures + //-------------------------------------------------------------------- +public: + struct TextureEntry : public LLDictionaryEntry { - TextureDictionaryEntry(const std::string &name, - bool is_local_texture, - EBakedTextureIndex baked_texture_index = BAKED_NUM_INDICES, - const std::string &default_image_name = "", - EWearableType wearable_type = WT_INVALID); - const std::string mName; - const std::string mDefaultImageName; + TextureEntry(const std::string &name, // this must match the xml name used by LLTexLayerInfo::parseXml + bool is_local_texture, + EBakedTextureIndex baked_texture_index = BAKED_NUM_INDICES, + const std::string& default_image_name = "", + EWearableType wearable_type = WT_INVALID); + const std::string mDefaultImageName; const EWearableType mWearableType; // It's either a local texture xor baked - BOOL mIsLocalTexture; - BOOL mIsBakedTexture; + BOOL mIsLocalTexture; + BOOL mIsBakedTexture; // If it's a local texture, it may be used by a baked texture - BOOL mIsUsedByBakedTexture; - EBakedTextureIndex mBakedTextureIndex; + BOOL mIsUsedByBakedTexture; + EBakedTextureIndex mBakedTextureIndex; }; + + struct Textures : public LLDictionary<ETextureIndex, TextureEntry> + { + Textures(); + } mTextures; + const TextureEntry* getTexture(ETextureIndex index) const { return mTextures.lookup(index); } + const Textures& getTextures() const { return mTextures; } - struct MeshDictionaryEntry + //-------------------------------------------------------------------- + // Meshes + //-------------------------------------------------------------------- +public: + struct MeshEntry : public LLDictionaryEntry { - MeshDictionaryEntry(EBakedTextureIndex baked_index, - const std::string &name, - U8 level, - LLViewerJoint::PickName pick); - const std::string mName; // names of mesh types as they are used in avatar_lad.xml + MeshEntry(EBakedTextureIndex baked_index, + const std::string &name, // names of mesh types as they are used in avatar_lad.xml + U8 level, + LLViewerJoint::PickName pick); // Levels of Detail for each mesh. Must match levels of detail present in avatar_lad.xml // Otherwise meshes will be unable to be found, or levels of detail will be ignored - const U8 mLOD; - const EBakedTextureIndex mBakedID; - const LLViewerJoint::PickName mPickName; + const U8 mLOD; + const EBakedTextureIndex mBakedID; + const LLViewerJoint::PickName mPickName; }; - struct BakedDictionaryEntry + struct Meshes : public LLDictionary<EMeshIndex, MeshEntry> { - BakedDictionaryEntry(ETextureIndex tex_index, - const std::string &name, - U32 num_local_textures, ... ); - const ETextureIndex mTextureIndex; - const std::string mName; - texture_vec_t mLocalTextures; - }; - - struct WearableDictionaryEntry + Meshes(); + } mMeshes; + const MeshEntry* getMesh(EMeshIndex index) const { return mMeshes.lookup(index); } + const Meshes& getMeshes() const { return mMeshes; } + + //-------------------------------------------------------------------- + // Baked Textures + //-------------------------------------------------------------------- +public: + struct BakedEntry : public LLDictionaryEntry { - WearableDictionaryEntry(const std::string &hash_name, - U32 num_wearables, ... ); - const LLUUID mHashID; - wearables_vec_t mWearablesVec; + BakedEntry(ETextureIndex tex_index, + const std::string &name, // unused, but necessary for templating. + const std::string &hash_name, + U32 num_local_textures, ... ); // # local textures, local texture list, # wearables, wearable list + // Local Textures + const ETextureIndex mTextureIndex; + texture_vec_t mLocalTextures; + // Wearables + const LLUUID mWearablesHashID; + wearables_vec_t mWearables; }; - typedef std::map<EBakedTextureIndex, BakedDictionaryEntry*> baked_map_t; - typedef std::map<ETextureIndex, TextureDictionaryEntry*> texture_map_t; - typedef std::map<EMeshIndex, MeshDictionaryEntry*> mesh_map_t; - typedef std::map<EBakedTextureIndex, WearableDictionaryEntry*> wearable_map_t; + struct BakedTextures: public LLDictionary<EBakedTextureIndex, BakedEntry> + { + BakedTextures(); + } mBakedTextures; + const BakedEntry* getBakedTexture(EBakedTextureIndex index) const { return mBakedTextures.lookup(index); } + const BakedTextures& getBakedTextures() const { return mBakedTextures; } + + //-------------------------------------------------------------------- + // Convenience Functions + //-------------------------------------------------------------------- +public: + // Convert from baked texture to associated texture; e.g. BAKED_HEAD -> TEX_HEAD_BAKED + static ETextureIndex bakedToLocalTextureIndex(EBakedTextureIndex t); - const MeshDictionaryEntry *getMesh(EMeshIndex index) const; - const BakedDictionaryEntry *getBakedTexture(EBakedTextureIndex index) const; - const TextureDictionaryEntry *getTexture(ETextureIndex index) const; - const WearableDictionaryEntry *getWearable(EBakedTextureIndex index) const; + // find a baked texture index based on its name + static EBakedTextureIndex findBakedByRegionName(std::string name); - const texture_map_t &getTextures() const { return mTextureMap; } - const baked_map_t &getBakedTextures() const { return mBakedTextureMap; } - const mesh_map_t &getMeshes() const { return mMeshMap; } - const wearable_map_t &getWearables() const { return mWearableMap; } - -private: - void initData(); - void createAssociations(); + static const LLUUID getDefaultTextureImageID(ETextureIndex index); - texture_map_t mTextureMap; - baked_map_t mBakedTextureMap; - mesh_map_t mMeshMap; - wearable_map_t mWearableMap; + // Given a texture entry, determine which wearable type owns it. + static EWearableType getTEWearableType(ETextureIndex index); }; // End LLVOAvatarDictionary } // End namespace LLVOAvatarDefines -#endif +#endif //LL_VO_AVATARDEFINES_H diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp new file mode 100644 index 0000000000000000000000000000000000000000..d629767bbe9497f53bd8ca24ef319d35bf304c03 --- /dev/null +++ b/indra/newview/llvoavatarself.cpp @@ -0,0 +1,2016 @@ +/** + * @file llvoavatar.cpp + * @brief Implementation of LLVOAvatar class which is a derivation fo LLViewerObject + * + * $LicenseInfo:firstyear=2001&license=viewergpl$ + * + * Copyright (c) 2001-2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#include "llviewerprecompiledheaders.h" + +#include "llvoavatarself.h" +#include "llvoavatar.h" + +#include <stdio.h> +#include <ctype.h> + +#include "audioengine.h" +#include "noise.h" + +// TODO: Seraph - Remove unnecessary headers. These are copied from llvoavatar.h. +#include "llagent.h" // Get state values from here +#include "llagentwearables.h" +#include "llviewercontrol.h" +#include "lldrawpoolavatar.h" +#include "lldriverparam.h" +#include "lleditingmotion.h" +#include "llemote.h" +#include "llface.h" +#include "llfirstuse.h" +#include "llheadrotmotion.h" +#include "llhudeffecttrail.h" +#include "llhudmanager.h" +#include "llinventoryview.h" +#include "llkeyframefallmotion.h" +#include "llkeyframestandmotion.h" +#include "llkeyframewalkmotion.h" +#include "llmutelist.h" +#include "llselectmgr.h" +#include "llsprite.h" +#include "lltargetingmotion.h" +#include "lltexlayer.h" +#include "lltexglobalcolor.h" +#include "lltoolgrab.h" // for needsRenderBeam +#include "lltoolmgr.h" // for needsRenderBeam +#include "lltoolmorph.h" +#include "lltrans.h" +#include "llviewercamera.h" +#include "llviewerimagelist.h" +#include "llviewermenu.h" +#include "llviewerobjectlist.h" +#include "llviewerparcelmgr.h" +#include "llviewerstats.h" +#include "llvovolume.h" +#include "llworld.h" +#include "pipeline.h" +#include "llviewershadermgr.h" +#include "llsky.h" +#include "llanimstatelabels.h" +#include "llgesturemgr.h" //needed to trigger the voice gesticulations +#include "llvoiceclient.h" +#include "llvoicevisualizer.h" // Ventrella + +#include "boost/lexical_cast.hpp" + +using namespace LLVOAvatarDefines; + +/********************************************************************************* + ** ** + ** Begin private LLVOAvatarSelf Support classes + ** + **/ + +struct LocalTextureData +{ + LocalTextureData() : + mIsBakedReady(FALSE), + mDiscard(MAX_DISCARD_LEVEL+1), + mImage(NULL), + mWearableID(IMG_DEFAULT_AVATAR), + mTexEntry(NULL) + {} + LLPointer<LLViewerImage> mImage; + BOOL mIsBakedReady; + S32 mDiscard; + LLUUID mWearableID; // UUID of the wearable that this texture belongs to, not of the image itself + LLTextureEntry *mTexEntry; +}; + +//----------------------------------------------------------------------------- +// Callback data +//----------------------------------------------------------------------------- +struct LLAvatarTexData +{ + LLAvatarTexData(const LLUUID& id, ETextureIndex index) : + mAvatarID(id), + mIndex(index) + {} + LLUUID mAvatarID; + ETextureIndex mIndex; +}; + +/** + ** + ** End LLVOAvatarSelf Support classes + ** ** + *********************************************************************************/ + + +//----------------------------------------------------------------------------- +// Static Data +//----------------------------------------------------------------------------- +S32 LLVOAvatarSelf::sScratchTexBytes = 0; +LLMap< LLGLenum, LLGLuint*> LLVOAvatarSelf::sScratchTexNames; +LLMap< LLGLenum, F32*> LLVOAvatarSelf::sScratchTexLastBindTime; + + +/********************************************************************************* + ** ** + ** Begin LLVOAvatarSelf Constructor routines + ** + **/ + +LLVOAvatarSelf::LLVOAvatarSelf(const LLUUID& id, + const LLPCode pcode, + LLViewerRegion* regionp) : + LLVOAvatar(id, pcode, regionp), + mScreenp(NULL), + mLastRegionHandle(0), + mRegionCrossingCount(0) +{ + gAgent.setAvatarObject(this); + gAgentWearables.setAvatarObject(this); + + lldebugs << "Marking avatar as self " << id << llendl; + + for (U32 i = 0; i < TEX_NUM_INDICES; i++) + { + mLocalTextureDatas[(ETextureIndex)i].push_back(new LocalTextureData); + } + + BOOL status = TRUE; + status &= loadAvatarSelf(); + status &= buildMenus(); + if (!status) + { + llerrs << "Unable to load user's avatar" << llendl; + return; + } +} + +// virtual +void LLVOAvatarSelf::markDead() +{ + mBeam = NULL; + LLVOAvatar::markDead(); +} + +BOOL LLVOAvatarSelf::loadAvatarSelf() +{ + BOOL success = TRUE; + // avatar_skeleton.xml + if (!buildSkeletonSelf(sAvatarSkeletonInfo)) + { + llwarns << "avatar file: buildSkeleton() failed" << llendl; + return FALSE; + } + // TODO: make loadLayersets() called only by self. + //success &= loadLayersets(); + + return success; +} + +BOOL LLVOAvatarSelf::buildSkeletonSelf(const LLVOAvatarSkeletonInfo *info) +{ + LLMemType mt(LLMemType::MTYPE_AVATAR); + + // add special-purpose "screen" joint + mScreenp = new LLViewerJoint("mScreen", NULL); + // for now, put screen at origin, as it is only used during special + // HUD rendering mode + F32 aspect = LLViewerCamera::getInstance()->getAspect(); + LLVector3 scale(1.f, aspect, 1.f); + mScreenp->setScale(scale); + mScreenp->setWorldPosition(LLVector3::zero); + return TRUE; +} + +BOOL LLVOAvatarSelf::buildMenus() +{ + //------------------------------------------------------------------------- + // build the attach and detach menus + //------------------------------------------------------------------------- + gAttachBodyPartPieMenus[0] = NULL; + + LLContextMenu::Params params; + params.label(LLTrans::getString("BodyPartsRightArm") + " >"); + params.name(params.label); + params.visible(false); + gAttachBodyPartPieMenus[1] = LLUICtrlFactory::create<LLContextMenu> (params); + + params.label(LLTrans::getString("BodyPartsHead") + " >"); + params.name(params.label); + gAttachBodyPartPieMenus[2] = LLUICtrlFactory::create<LLContextMenu> (params); + + params.label(LLTrans::getString("BodyPartsLeftArm") + " >"); + params.name(params.label); + gAttachBodyPartPieMenus[3] = LLUICtrlFactory::create<LLContextMenu> (params); + + gAttachBodyPartPieMenus[4] = NULL; + + params.label(LLTrans::getString("BodyPartsLeftLeg") + " >"); + params.name(params.label); + gAttachBodyPartPieMenus[5] = LLUICtrlFactory::create<LLContextMenu> (params); + + params.label(LLTrans::getString("BodyPartsTorso") + " >"); + params.name(params.label); + gAttachBodyPartPieMenus[6] = LLUICtrlFactory::create<LLContextMenu> (params); + + params.label(LLTrans::getString("BodyPartsRightLeg") + " >"); + params.name(params.label); + gAttachBodyPartPieMenus[7] = LLUICtrlFactory::create<LLContextMenu> (params); + + gDetachBodyPartPieMenus[0] = NULL; + + params.label(LLTrans::getString("BodyPartsRightArm") + " >"); + params.name(params.label); + gDetachBodyPartPieMenus[1] = LLUICtrlFactory::create<LLContextMenu> (params); + + params.label(LLTrans::getString("BodyPartsHead") + " >"); + params.name(params.label); + gDetachBodyPartPieMenus[2] = LLUICtrlFactory::create<LLContextMenu> (params); + + params.label(LLTrans::getString("BodyPartsLeftArm") + " >"); + params.name(params.label); + gDetachBodyPartPieMenus[3] = LLUICtrlFactory::create<LLContextMenu> (params); + + gDetachBodyPartPieMenus[4] = NULL; + + params.label(LLTrans::getString("BodyPartsLeftLeg") + " >"); + params.name(params.label); + gDetachBodyPartPieMenus[5] = LLUICtrlFactory::create<LLContextMenu> (params); + + params.label(LLTrans::getString("BodyPartsTorso") + " >"); + params.name(params.label); + gDetachBodyPartPieMenus[6] = LLUICtrlFactory::create<LLContextMenu> (params); + + params.label(LLTrans::getString("BodyPartsRightLeg") + " >"); + params.name(params.label); + gDetachBodyPartPieMenus[7] = LLUICtrlFactory::create<LLContextMenu> (params); + + for (S32 i = 0; i < 8; i++) + { + if (gAttachBodyPartPieMenus[i]) + { + gAttachPieMenu->appendContextSubMenu( gAttachBodyPartPieMenus[i] ); + } + else + { + BOOL attachment_found = FALSE; + for (attachment_map_t::iterator iter = mAttachmentPoints.begin(); + iter != mAttachmentPoints.end(); ) + { + attachment_map_t::iterator curiter = iter++; + LLViewerJointAttachment* attachment = curiter->second; + if (attachment->getGroup() == i) + { + LLMenuItemCallGL::Params item_params; + + std::string sub_piemenu_name = attachment->getName(); + if (LLTrans::getString(sub_piemenu_name) != "") + { + item_params.label = LLTrans::getString(sub_piemenu_name); + } + else + { + item_params.label = sub_piemenu_name; + } + item_params.name =(item_params.label ); + item_params.on_click.function_name = "Object.AttachToAvatar"; + item_params.on_click.parameter = curiter->first; + item_params.on_enable.function_name = "Object.EnableWear"; + item_params.on_enable.parameter = curiter->first; + LLMenuItemCallGL* item = LLUICtrlFactory::create<LLMenuItemCallGL>(item_params); + + gAttachPieMenu->addChild(item); + + attachment_found = TRUE; + break; + + } + } + + if (!attachment_found) + { + gAttachPieMenu->addSeparator(); + } + } + + if (gDetachBodyPartPieMenus[i]) + { + gDetachPieMenu->appendContextSubMenu( gDetachBodyPartPieMenus[i] ); + } + else + { + BOOL attachment_found = FALSE; + for (attachment_map_t::iterator iter = mAttachmentPoints.begin(); + iter != mAttachmentPoints.end(); ) + { + attachment_map_t::iterator curiter = iter++; + LLViewerJointAttachment* attachment = curiter->second; + if (attachment->getGroup() == i) + { + LLMenuItemCallGL::Params item_params; + std::string sub_piemenu_name = attachment->getName(); + if (LLTrans::getString(sub_piemenu_name) != "") + { + item_params.label = LLTrans::getString(sub_piemenu_name); + } + else + { + item_params.label = sub_piemenu_name; + } + item_params.name =(item_params.label ); + item_params.on_click.function_name = "Attachment.Detach"; + item_params.on_click.parameter = curiter->first; + item_params.on_enable.function_name = "Attachment.EnableDetach"; + item_params.on_enable.parameter = curiter->first; + LLMenuItemCallGL* item = LLUICtrlFactory::create<LLMenuItemCallGL>(item_params); + + gDetachPieMenu->addChild(item); + + attachment_found = TRUE; + break; + } + } + + if (!attachment_found) + { + gDetachPieMenu->addSeparator(); + } + } + } + + // add screen attachments + for (attachment_map_t::iterator iter = mAttachmentPoints.begin(); + iter != mAttachmentPoints.end(); ) + { + attachment_map_t::iterator curiter = iter++; + LLViewerJointAttachment* attachment = curiter->second; + if (attachment->getGroup() == 8) + { + LLMenuItemCallGL::Params item_params; + std::string sub_piemenu_name = attachment->getName(); + if (LLTrans::getString(sub_piemenu_name) != "") + { + item_params.label = LLTrans::getString(sub_piemenu_name); + } + else + { + item_params.label = sub_piemenu_name; + } + item_params.name =(item_params.label ); + item_params.on_click.function_name = "Object.AttachToAvatar"; + item_params.on_click.parameter = curiter->first; + item_params.on_enable.function_name = "Object.EnableWear"; + item_params.on_enable.parameter = curiter->first; + LLMenuItemCallGL* item = LLUICtrlFactory::create<LLMenuItemCallGL>(item_params); + gAttachScreenPieMenu->addChild(item); + + item_params.on_click.function_name = "Attachment.DetachFromPoint"; + item_params.on_click.parameter = curiter->first; + item_params.on_enable.function_name = "Attachment.PointFilled"; + item_params.on_enable.parameter = curiter->first; + item = LLUICtrlFactory::create<LLMenuItemCallGL>(item_params); + gDetachScreenPieMenu->addChild(item); + } + } + + for (S32 pass = 0; pass < 2; pass++) + { + // *TODO: Skinning - gAttachSubMenu is an awful, awful hack + if (!gAttachSubMenu) + { + break; + } + for (attachment_map_t::iterator iter = mAttachmentPoints.begin(); + iter != mAttachmentPoints.end(); ) + { + attachment_map_t::iterator curiter = iter++; + LLViewerJointAttachment* attachment = curiter->second; + if (attachment->getIsHUDAttachment() != (pass == 1)) + { + continue; + } + LLMenuItemCallGL::Params item_params; + std::string sub_piemenu_name = attachment->getName(); + if (LLTrans::getString(sub_piemenu_name) != "") + { + item_params.label = LLTrans::getString(sub_piemenu_name); + } + else + { + item_params.label = sub_piemenu_name; + } + item_params.name =(item_params.label ); + item_params.on_click.function_name = "Object.AttachToAvatar"; + item_params.on_click.parameter = curiter->first; + item_params.on_enable.function_name = "Object.EnableWear"; + item_params.on_enable.parameter = curiter->first; + //* TODO: Skinning: + //LLSD params; + //params["index"] = curiter->first; + //params["label"] = attachment->getName(); + //item->addEventHandler("on_enable", LLMenuItemCallGL::MenuCallback().function_name("Attachment.Label").parameter(params)); + + LLMenuItemCallGL* item = LLUICtrlFactory::create<LLMenuItemCallGL>(item_params); + gAttachSubMenu->addChild(item); + + item_params.on_click.function_name = "Attachment.DetachFromPoint"; + item_params.on_click.parameter = curiter->first; + item_params.on_enable.function_name = "Attachment.PointFilled"; + item_params.on_enable.parameter = curiter->first; + //* TODO: Skinning: item->addEventHandler("on_enable", LLMenuItemCallGL::MenuCallback().function_name("Attachment.Label").parameter(params)); + + item = LLUICtrlFactory::create<LLMenuItemCallGL>(item_params); + gDetachSubMenu->addChild(item); + } + if (pass == 0) + { + // put separator between non-hud and hud attachments + gAttachSubMenu->addSeparator(); + gDetachSubMenu->addSeparator(); + } + } + + for (S32 group = 0; group < 8; group++) + { + // skip over groups that don't have sub menus + if (!gAttachBodyPartPieMenus[group] || !gDetachBodyPartPieMenus[group]) + { + continue; + } + + std::multimap<S32, S32> attachment_pie_menu_map; + + // gather up all attachment points assigned to this group, and throw into map sorted by pie slice number + for (attachment_map_t::iterator iter = mAttachmentPoints.begin(); + iter != mAttachmentPoints.end(); ) + { + attachment_map_t::iterator curiter = iter++; + LLViewerJointAttachment* attachment = curiter->second; + if(attachment->getGroup() == group) + { + // use multimap to provide a partial order off of the pie slice key + S32 pie_index = attachment->getPieSlice(); + attachment_pie_menu_map.insert(std::make_pair(pie_index, curiter->first)); + } + } + + // add in requested order to pie menu, inserting separators as necessary + S32 cur_pie_slice = 0; + for (std::multimap<S32, S32>::iterator attach_it = attachment_pie_menu_map.begin(); + attach_it != attachment_pie_menu_map.end(); ++attach_it) + { + S32 requested_pie_slice = attach_it->first; + S32 attach_index = attach_it->second; + while (cur_pie_slice < requested_pie_slice) + { + gAttachBodyPartPieMenus[group]->addSeparator(); + gDetachBodyPartPieMenus[group]->addSeparator(); + cur_pie_slice++; + } + + LLViewerJointAttachment* attachment = get_if_there(mAttachmentPoints, attach_index, (LLViewerJointAttachment*)NULL); + if (attachment) + { + LLMenuItemCallGL::Params item_params; + item_params.name = attachment->getName(); + item_params.label = attachment->getName(); + item_params.on_click.function_name = "Object.AttachToAvatar"; + item_params.on_click.parameter = attach_index; + item_params.on_enable.function_name = "Object.EnableWear"; + item_params.on_enable.parameter = attach_index; + + LLMenuItemCallGL* item = LLUICtrlFactory::create<LLMenuItemCallGL>(item_params); + gAttachBodyPartPieMenus[group]->addChild(item); + + item_params.on_click.function_name = "Attachment.DetachFromPoint"; + item_params.on_click.parameter = attach_index; + item_params.on_enable.function_name = "Attachment.PointFilled"; + item_params.on_enable.parameter = attach_index; + item = LLUICtrlFactory::create<LLMenuItemCallGL>(item_params); + gDetachBodyPartPieMenus[group]->addChild(item); + cur_pie_slice++; + } + } + } + return TRUE; +} + +LLVOAvatarSelf::~LLVOAvatarSelf() +{ + gAgent.setAvatarObject(NULL); + gAgentWearables.setAvatarObject(NULL); + delete mScreenp; + mScreenp = NULL; + + for (localtexture_map_t::iterator iter = mLocalTextureDatas.begin(); + iter != mLocalTextureDatas.end(); + iter++) + { + localtexture_vec_t &local_textures = iter->second; + for (U32 i = 0; i < local_textures.size(); i++) + { + LocalTextureData* loc_tex_data = local_textures[i]; + delete loc_tex_data; + local_textures[i] = NULL; + } + } +} + +/** + ** + ** End LLVOAvatarSelf Constructor routines + ** ** + *********************************************************************************/ + +//virtual +BOOL LLVOAvatarSelf::loadLayersets() +{ + BOOL success = TRUE; + for (LLVOAvatarXmlInfo::layer_info_list_t::const_iterator iter = sAvatarXmlInfo->mLayerInfoList.begin(); + iter != sAvatarXmlInfo->mLayerInfoList.end(); + iter++) + { + // Construct a layerset for each one specified in avatar_lad.xml and initialize it as such. + const LLTexLayerSetInfo *info = *iter; + LLTexLayerSet* layer_set = new LLTexLayerSet( this ); + + if (!layer_set->setInfo(info)) + { + stop_glerror(); + delete layer_set; + llwarns << "avatar file: layer_set->parseData() failed" << llendl; + return FALSE; + } + + // scan baked textures and associate the layerset with the appropriate one + EBakedTextureIndex baked_index = BAKED_NUM_INDICES; + for (LLVOAvatarDictionary::BakedTextures::const_iterator baked_iter = LLVOAvatarDictionary::getInstance()->getBakedTextures().begin(); + baked_iter != LLVOAvatarDictionary::getInstance()->getBakedTextures().end(); + baked_iter++) + { + const LLVOAvatarDictionary::BakedEntry *baked_dict = baked_iter->second; + if (layer_set->isBodyRegion(baked_dict->mName)) + { + baked_index = baked_iter->first; + // ensure both structures are aware of each other + mBakedTextureDatas[baked_index].mTexLayerSet = layer_set; + layer_set->setBakedTexIndex(baked_index); + break; + } + } + // if no baked texture was found, warn and cleanup + if (baked_index == BAKED_NUM_INDICES) + { + llwarns << "<layer_set> has invalid body_region attribute" << llendl; + delete layer_set; + return FALSE; + } + + // scan morph masks and let any affected layers know they have an associated morph + for (LLVOAvatar::morph_list_t::const_iterator morph_iter = mBakedTextureDatas[baked_index].mMaskedMorphs.begin(); + morph_iter != mBakedTextureDatas[baked_index].mMaskedMorphs.end(); + morph_iter++) + { + LLMaskedMorph *morph = *morph_iter; + LLTexLayer * layer = layer_set->findLayerByName(morph->mLayer); + if (layer) + { + layer->setHasMorph(TRUE); + } + else + { + llwarns << "Could not find layer named " << morph->mLayer << " to set morph flag" << llendl; + success = FALSE; + } + } + } + return success; +} +// virtual +BOOL LLVOAvatarSelf::updateCharacter(LLAgent &agent) +{ + LLMemType mt(LLMemType::MTYPE_AVATAR); + + // update screen joint size + if (mScreenp) + { + F32 aspect = LLViewerCamera::getInstance()->getAspect(); + LLVector3 scale(1.f, aspect, 1.f); + mScreenp->setScale(scale); + mScreenp->updateWorldMatrixChildren(); + resetHUDAttachments(); + } + return LLVOAvatar::updateCharacter(agent); +} + +// virtual +LLJoint *LLVOAvatarSelf::getJoint(const std::string &name) +{ + if (mScreenp) + { + LLJoint* jointp = mScreenp->findJoint(name); + if (jointp) return jointp; + } + return LLVOAvatar::getJoint(name); +} + +// virtual +void LLVOAvatarSelf::requestStopMotion(LLMotion* motion) +{ + // Only agent avatars should handle the stop motion notifications. + + // Notify agent that motion has stopped + gAgent.requestStopMotion(motion); +} + +// virtual +void LLVOAvatarSelf::stopMotionFromSource(const LLUUID& source_id) +{ + for (AnimSourceIterator motion_it = mAnimationSources.find(source_id); motion_it != mAnimationSources.end(); ) + { + gAgent.sendAnimationRequest(motion_it->second, ANIM_REQUEST_STOP); + mAnimationSources.erase(motion_it++); + } + + LLViewerObject* object = gObjectList.findObject(source_id); + if (object) + { + object->mFlags &= ~FLAGS_ANIM_SOURCE; + } +} + +// virtual +void LLVOAvatarSelf::setLocalTextureTE(U8 te, LLViewerImage* image, BOOL set_by_user, U32 index) +{ + if (te >= TEX_NUM_INDICES) + { + llassert(0); + return; + } + + if (getTEImage(te)->getID() == image->getID()) + { + return; + } + + if (isIndexBakedTexture((ETextureIndex)te)) + { + llassert(0); + return; + } + + LLTexLayerSet* layer_set = getLayerSet((ETextureIndex)te); + if (layer_set) + { + invalidateComposite(layer_set, set_by_user); + } + + setTEImage(te, image); + updateMeshTextures(); + + if (gAgent.cameraCustomizeAvatar()) + { + LLVisualParamHint::requestHintUpdates(); + } +} + +//virtual +void LLVOAvatarSelf::removeMissingBakedTextures() +{ + BOOL removed = FALSE; + for (U32 i = 0; i < mBakedTextureDatas.size(); i++) + { + const S32 te = mBakedTextureDatas[i].mTextureIndex; + if (getTEImage(te)->isMissingAsset()) + { + setTEImage(te, gImageList.getImage(IMG_DEFAULT_AVATAR)); + removed = TRUE; + } + } + + if (removed) + { + for (U32 i = 0; i < mBakedTextureDatas.size(); i++) + { + invalidateComposite(mBakedTextureDatas[i].mTexLayerSet, FALSE); + } + updateMeshTextures(); + requestLayerSetUploads(); + } +} + +//virtual +void LLVOAvatarSelf::updateRegion(LLViewerRegion *regionp) +{ + if (regionp->getHandle() != mLastRegionHandle) + { + if (mLastRegionHandle != 0) + { + ++mRegionCrossingCount; + F64 delta = (F64)mRegionCrossingTimer.getElapsedTimeF32(); + F64 avg = (mRegionCrossingCount == 1) ? 0 : LLViewerStats::getInstance()->getStat(LLViewerStats::ST_CROSSING_AVG); + F64 delta_avg = (delta + avg*(mRegionCrossingCount-1)) / mRegionCrossingCount; + LLViewerStats::getInstance()->setStat(LLViewerStats::ST_CROSSING_AVG, delta_avg); + + F64 max = (mRegionCrossingCount == 1) ? 0 : LLViewerStats::getInstance()->getStat(LLViewerStats::ST_CROSSING_MAX); + max = llmax(delta, max); + LLViewerStats::getInstance()->setStat(LLViewerStats::ST_CROSSING_MAX, max); + } + mLastRegionHandle = regionp->getHandle(); + } + mRegionCrossingTimer.reset(); +} + +//-------------------------------------------------------------------- +// draw tractor beam when editing objects +//-------------------------------------------------------------------- +//virtual +void LLVOAvatarSelf::idleUpdateTractorBeam() +{ + // This is only done for yourself (maybe it should be in the agent?) + if (!needsRenderBeam() || !mIsBuilt) + { + mBeam = NULL; + } + else if (!mBeam || mBeam->isDead()) + { + // VEFFECT: Tractor Beam + mBeam = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM); + mBeam->setColor(LLColor4U(gAgent.getEffectColor())); + mBeam->setSourceObject(this); + mBeamTimer.reset(); + } + + if (!mBeam.isNull()) + { + LLObjectSelectionHandle selection = LLSelectMgr::getInstance()->getSelection(); + + if (gAgent.mPointAt.notNull()) + { + // get point from pointat effect + mBeam->setPositionGlobal(gAgent.mPointAt->getPointAtPosGlobal()); + mBeam->triggerLocal(); + } + else if (selection->getFirstRootObject() && + selection->getSelectType() != SELECT_TYPE_HUD) + { + LLViewerObject* objectp = selection->getFirstRootObject(); + mBeam->setTargetObject(objectp); + } + else + { + mBeam->setTargetObject(NULL); + LLTool *tool = LLToolMgr::getInstance()->getCurrentTool(); + if (tool->isEditing()) + { + if (tool->getEditingObject()) + { + mBeam->setTargetObject(tool->getEditingObject()); + } + else + { + mBeam->setPositionGlobal(tool->getEditingPointGlobal()); + } + } + else + { + const LLPickInfo& pick = gViewerWindow->getLastPick(); + mBeam->setPositionGlobal(pick.mPosGlobal); + } + + } + if (mBeamTimer.getElapsedTimeF32() > 0.25f) + { + mBeam->setColor(LLColor4U(gAgent.getEffectColor())); + mBeam->setNeedsSendToSim(TRUE); + mBeamTimer.reset(); + } + } +} + +//----------------------------------------------------------------------------- +// restoreMeshData() +//----------------------------------------------------------------------------- +// virtual +void LLVOAvatarSelf::restoreMeshData() +{ + LLMemType mt(LLMemType::MTYPE_AVATAR); + + //llinfos << "Restoring" << llendl; + mMeshValid = TRUE; + updateJointLODs(); + updateAttachmentVisibility(gAgent.getCameraMode()); + + // force mesh update as LOD might not have changed to trigger this + gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_GEOMETRY, TRUE); +} + + + +//----------------------------------------------------------------------------- +// updateAttachmentVisibility() +//----------------------------------------------------------------------------- +void LLVOAvatarSelf::updateAttachmentVisibility(U32 camera_mode) +{ + for (attachment_map_t::iterator iter = mAttachmentPoints.begin(); + iter != mAttachmentPoints.end(); ) + { + attachment_map_t::iterator curiter = iter++; + LLViewerJointAttachment* attachment = curiter->second; + if (attachment->getIsHUDAttachment()) + { + attachment->setAttachmentVisibility(TRUE); + } + else + { + switch (camera_mode) + { + case CAMERA_MODE_MOUSELOOK: + if (LLVOAvatar::sVisibleInFirstPerson && attachment->getVisibleInFirstPerson()) + { + attachment->setAttachmentVisibility(TRUE); + } + else + { + attachment->setAttachmentVisibility(FALSE); + } + break; + default: + attachment->setAttachmentVisibility(TRUE); + break; + } + } + } +} + +//----------------------------------------------------------------------------- +// updatedWearable( EWearableType type ) +// forces an update to any baked textures relevant to type. +// Should be called only on saving the wearable +//----------------------------------------------------------------------------- +void LLVOAvatarSelf::wearableUpdated( EWearableType type ) +{ + for (LLVOAvatarDictionary::BakedTextures::const_iterator baked_iter = LLVOAvatarDictionary::getInstance()->getBakedTextures().begin(); + baked_iter != LLVOAvatarDictionary::getInstance()->getBakedTextures().end(); + baked_iter++) + { + const LLVOAvatarDictionary::BakedEntry *baked_dict = baked_iter->second; + const LLVOAvatarDefines::EBakedTextureIndex index = baked_iter->first; + if (baked_dict) + { + for (LLVOAvatarDefines::wearables_vec_t::const_iterator type_iter = baked_dict->mWearables.begin(); + type_iter != baked_dict->mWearables.end(); + type_iter++) + { + const EWearableType comp_type = *type_iter; + if (comp_type == type) + { + if (mBakedTextureDatas[index].mTexLayerSet) + { + mBakedTextureDatas[index].mTexLayerSet->requestUpdate(); + mBakedTextureDatas[index].mTexLayerSet->requestUpload(); + } + break; + } + } + } + } +} + +//----------------------------------------------------------------------------- +// isWearingAttachment() +//----------------------------------------------------------------------------- +BOOL LLVOAvatarSelf::isWearingAttachment( const LLUUID& inv_item_id ) +{ + for (attachment_map_t::iterator iter = mAttachmentPoints.begin(); + iter != mAttachmentPoints.end(); ) + { + attachment_map_t::iterator curiter = iter++; + LLViewerJointAttachment* attachment = curiter->second; + if( attachment->getItemID() == inv_item_id ) + { + return TRUE; + } + } + return FALSE; +} + +//----------------------------------------------------------------------------- +// getWornAttachment() +//----------------------------------------------------------------------------- +LLViewerObject* LLVOAvatarSelf::getWornAttachment( const LLUUID& inv_item_id ) const +{ + for (attachment_map_t::const_iterator iter = mAttachmentPoints.begin(); + iter != mAttachmentPoints.end(); ) + { + attachment_map_t::const_iterator curiter = iter++; + const LLViewerJointAttachment* attachment = curiter->second; + if( attachment->getItemID() == inv_item_id ) + { + return attachment->getObject(); + } + } + return NULL; +} + +const std::string LLVOAvatarSelf::getAttachedPointName(const LLUUID& inv_item_id) const +{ + for (attachment_map_t::const_iterator iter = mAttachmentPoints.begin(); + iter != mAttachmentPoints.end(); ) + { + attachment_map_t::const_iterator curiter = iter++; + const LLViewerJointAttachment* attachment = curiter->second; + if( attachment->getItemID() == inv_item_id ) + { + return attachment->getName(); + } + } + + return LLStringUtil::null; +} + +//virtual +LLViewerJointAttachment *LLVOAvatarSelf::attachObject(LLViewerObject *viewer_object) +{ + LLViewerJointAttachment *attachment = LLVOAvatar::attachObject(viewer_object); + if (!attachment) + { + return 0; + } + + updateAttachmentVisibility(gAgent.getCameraMode()); + + // Then make sure the inventory is in sync with the avatar. + gInventory.addChangedMask(LLInventoryObserver::LABEL, attachment->getItemID()); + gInventory.notifyObservers(); + + return attachment; +} + +// virtual +void LLVOAvatarSelf::localTextureLoaded(BOOL success, LLViewerImage *src_vi, LLImageRaw* src_raw, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata) +{ + //llinfos << "onLocalTextureLoaded: " << src_vi->getID() << llendl; + + const LLUUID& src_id = src_vi->getID(); + LLAvatarTexData *data = (LLAvatarTexData *)userdata; + if (success) + { + ETextureIndex index = data->mIndex; + if (!isIndexLocalTexture(index)) return; + LocalTextureData *local_tex_data = getLocalTextureData(index,0); + if (!local_tex_data->mIsBakedReady && + local_tex_data->mImage.notNull() && + (local_tex_data->mImage->getID() == src_id) && + discard_level < local_tex_data->mDiscard) + { + local_tex_data->mDiscard = discard_level; + if (!gAgent.cameraCustomizeAvatar()) + { + requestLayerSetUpdate(index); + } + else if (gAgent.cameraCustomizeAvatar()) + { + LLVisualParamHint::requestHintUpdates(); + } + updateMeshTextures(); + } + } + else if (final) + { + ETextureIndex index = data->mIndex; + if (!isIndexLocalTexture(index)) return; + LocalTextureData *local_tex_data = getLocalTextureData(index,0); + // Failed: asset is missing + if (!local_tex_data->mIsBakedReady && + local_tex_data->mImage.notNull() && + local_tex_data->mImage->getID() == src_id) + { + local_tex_data->mDiscard = 0; + requestLayerSetUpdate(index); + updateMeshTextures(); + } + } +} + +// virtual +/* //unused +BOOL LLVOAvatarSelf::getLocalTextureRaw(ETextureIndex index, LLImageRaw* image_raw) const +{ + if (!isIndexLocalTexture(index)) return FALSE; + if (getLocalTextureID(index) == IMG_DEFAULT_AVATAR) return TRUE; + + const LocalTextureData *local_tex_data = getLocalTextureData(index)[0]; + if (local_tex_data->mImage->readBackRaw(-1, image_raw, false)) + { + + return TRUE; + } + + // No data loaded yet + setLocalTexture((ETextureIndex)index, getTEImage(index), FALSE); // <-- non-const, move this elsewhere + return FALSE; +} +*/ + +// virtual +BOOL LLVOAvatarSelf::getLocalTextureGL(ETextureIndex type, LLImageGL** image_gl_pp, U32 index) const +{ + *image_gl_pp = NULL; + + if (!isIndexLocalTexture(type)) return FALSE; + if (getLocalTextureID(type, index) == IMG_DEFAULT_AVATAR) return TRUE; + + const LocalTextureData *local_tex_data = getLocalTextureData(type, index); + if (!local_tex_data) + { + return FALSE; + } + *image_gl_pp = local_tex_data->mImage; + return TRUE; +} + +const LLUUID& LLVOAvatarSelf::getLocalTextureID(ETextureIndex type, U32 index) const +{ + if (!isIndexLocalTexture(type)) return IMG_DEFAULT_AVATAR; + + const LocalTextureData *local_tex_data = getLocalTextureData(type,index); + if (local_tex_data && local_tex_data->mImage.notNull()) + { + return local_tex_data->mImage->getID(); + } + return IMG_DEFAULT_AVATAR; +} + +//----------------------------------------------------------------------------- +// isLocalTextureDataAvailable() +// Returns true if at least the lowest quality discard level exists for every texture +// in the layerset. +//----------------------------------------------------------------------------- +BOOL LLVOAvatarSelf::isLocalTextureDataAvailable(const LLTexLayerSet* layerset) const +{ + /* if (layerset == mBakedTextureDatas[BAKED_HEAD].mTexLayerSet) + return getLocalDiscardLevel(TEX_HEAD_BODYPAINT) >= 0; */ + for (LLVOAvatarDictionary::BakedTextures::const_iterator baked_iter = LLVOAvatarDictionary::getInstance()->getBakedTextures().begin(); + baked_iter != LLVOAvatarDictionary::getInstance()->getBakedTextures().end(); + baked_iter++) + { + const EBakedTextureIndex baked_index = baked_iter->first; + if (layerset == mBakedTextureDatas[baked_index].mTexLayerSet) + { + BOOL ret = true; + const LLVOAvatarDictionary::BakedEntry *baked_dict = baked_iter->second; + for (texture_vec_t::const_iterator local_tex_iter = baked_dict->mLocalTextures.begin(); + local_tex_iter != baked_dict->mLocalTextures.end(); + local_tex_iter++) + { + const ETextureIndex tex_index = *local_tex_iter; + ret &= (getLocalDiscardLevel(tex_index) >= 0); + } + return ret; + } + } + llassert(0); + return FALSE; +} + +//----------------------------------------------------------------------------- +// virtual +// isLocalTextureDataFinal() +// Returns true if the highest quality discard level exists for every texture +// in the layerset. +//----------------------------------------------------------------------------- +BOOL LLVOAvatarSelf::isLocalTextureDataFinal(const LLTexLayerSet* layerset) const +{ + for (U32 i = 0; i < mBakedTextureDatas.size(); i++) + { + if (layerset == mBakedTextureDatas[i].mTexLayerSet) + { + const LLVOAvatarDictionary::BakedEntry *baked_dict = LLVOAvatarDictionary::getInstance()->getBakedTexture((EBakedTextureIndex)i); + for (texture_vec_t::const_iterator local_tex_iter = baked_dict->mLocalTextures.begin(); + local_tex_iter != baked_dict->mLocalTextures.end(); + local_tex_iter++) + { + if (getLocalDiscardLevel(*local_tex_iter) != 0) + { + return FALSE; + } + } + return TRUE; + } + } + llassert(0); + return FALSE; +} + +BOOL LLVOAvatarSelf::isTextureDefined(LLVOAvatarDefines::ETextureIndex type, U32 index) const +{ + LLUUID id; + if (isIndexLocalTexture(type)) + { + id = getLocalTextureID(type, index); + } + else + { + id = getTEImage(type)->getID(); + } + + return (id != IMG_DEFAULT_AVATAR && + id != IMG_DEFAULT); +} + +//----------------------------------------------------------------------------- +// virtual +// requestLayerSetUploads() +//----------------------------------------------------------------------------- +void LLVOAvatarSelf::requestLayerSetUploads() +{ + for (U32 i = 0; i < mBakedTextureDatas.size(); i++) + { + BOOL layer_baked = isTextureDefined(mBakedTextureDatas[i].mTextureIndex); + if (!layer_baked && mBakedTextureDatas[i].mTexLayerSet) + { + mBakedTextureDatas[i].mTexLayerSet->requestUpload(); + } + } +} + +bool LLVOAvatarSelf::areTexturesCurrent() const +{ + return !hasPendingBakedUploads() && gAgentWearables.areWearablesLoaded(); +} + +// virtual +bool LLVOAvatarSelf::hasPendingBakedUploads() const +{ + for (U32 i = 0; i < mBakedTextureDatas.size(); i++) + { + BOOL upload_pending = (mBakedTextureDatas[i].mTexLayerSet && mBakedTextureDatas[i].mTexLayerSet->getComposite()->uploadPending()); + if (upload_pending) + { + return true; + } + } + return false; +} + +void LLVOAvatarSelf::invalidateComposite( LLTexLayerSet* layerset, BOOL set_by_user ) +{ + if( !layerset || !layerset->getUpdatesEnabled() ) + { + return; + } + // llinfos << "LLVOAvatar::invalidComposite() " << layerset->getBodyRegion() << llendl; + + invalidateMorphMasks(layerset->getBakedTexIndex()); + layerset->requestUpdate(); + + if( set_by_user ) + { + llassert(isSelf()); + + ETextureIndex baked_te = getBakedTE( layerset ); + setTEImage( baked_te, gImageList.getImage(IMG_DEFAULT_AVATAR) ); + layerset->requestUpload(); + } +} + +void LLVOAvatarSelf::invalidateAll() +{ + for (U32 i = 0; i < mBakedTextureDatas.size(); i++) + { + invalidateComposite(mBakedTextureDatas[i].mTexLayerSet, TRUE); + } + updateMeshTextures(); +} + +//----------------------------------------------------------------------------- +// setCompositeUpdatesEnabled() +//----------------------------------------------------------------------------- +void LLVOAvatarSelf::setCompositeUpdatesEnabled( BOOL b ) +{ + for (U32 i = 0; i < mBakedTextureDatas.size(); i++) + { + if (mBakedTextureDatas[i].mTexLayerSet ) + { + mBakedTextureDatas[i].mTexLayerSet->setUpdatesEnabled( b ); + } + } +} + +void LLVOAvatarSelf::setupComposites() +{ + for (U32 i = 0; i < mBakedTextureDatas.size(); i++) + { + BOOL layer_baked = isTextureDefined(mBakedTextureDatas[i].mTextureIndex); + if (mBakedTextureDatas[i].mTexLayerSet) + { + mBakedTextureDatas[i].mTexLayerSet->setUpdatesEnabled(!layer_baked); + } + } +} + +void LLVOAvatarSelf::updateComposites() +{ + for (U32 i = 0; i < mBakedTextureDatas.size(); i++) + { + if (mBakedTextureDatas[i].mTexLayerSet + && ((i != BAKED_SKIRT) || isWearingWearableType(WT_SKIRT))) + { + mBakedTextureDatas[i].mTexLayerSet->updateComposite(); + } + } +} + +// virtual +S32 LLVOAvatarSelf::getLocalDiscardLevel(ETextureIndex type, U32 index) const +{ + if (!isIndexLocalTexture(type)) return FALSE; + + const LocalTextureData *local_tex_data = getLocalTextureData(type,index); + if (local_tex_data) + { + if (type >= 0 + && getLocalTextureID(type,index) != IMG_DEFAULT_AVATAR + && !local_tex_data->mImage->isMissingAsset()) + { + return local_tex_data->mImage->getDiscardLevel(); + } + else + { + // We don't care about this (no image associated with the layer) treat as fully loaded. + return 0; + } + } + return 0; +} + +// virtual +// Counts the memory footprint of local textures. +void LLVOAvatarSelf::getLocalTextureByteCount(S32* gl_bytes) const +{ + *gl_bytes = 0; + for (S32 type = 0; type < TEX_NUM_INDICES; type++) + { + if (!isIndexLocalTexture((ETextureIndex)type)) continue; + const localtexture_vec_t & local_tex_vec = getLocalTextureData((ETextureIndex)type); + for (U32 num = 0; num < local_tex_vec.size(); num++) + { + const LocalTextureData *local_tex_data = local_tex_vec[num]; + if (local_tex_data) + { + const LLViewerImage* image_gl = local_tex_data->mImage; + if (image_gl) + { + S32 bytes = (S32)image_gl->getWidth() * image_gl->getHeight() * image_gl->getComponents(); + + if (image_gl->getHasGLTexture()) + { + *gl_bytes += bytes; + } + } + } + } + } +} + +// virtual +void LLVOAvatarSelf::setLocalTexture(ETextureIndex type, LLViewerImage* tex, BOOL baked_version_ready, U32 index) +{ + if (!isIndexLocalTexture(type)) return; + + S32 desired_discard = isSelf() ? 0 : 2; + LocalTextureData *local_tex_data = getLocalTextureData(type,index); + if (!baked_version_ready) + { + if (tex != local_tex_data->mImage || local_tex_data->mIsBakedReady) + { + local_tex_data->mDiscard = MAX_DISCARD_LEVEL+1; + } + if (tex->getID() != IMG_DEFAULT_AVATAR) + { + if (local_tex_data->mDiscard > desired_discard) + { + S32 tex_discard = tex->getDiscardLevel(); + if (tex_discard >= 0 && tex_discard <= desired_discard) + { + local_tex_data->mDiscard = tex_discard; + if (isSelf() && !gAgent.cameraCustomizeAvatar()) + { + requestLayerSetUpdate(type); + } + else if (isSelf() && gAgent.cameraCustomizeAvatar()) + { + LLVisualParamHint::requestHintUpdates(); + } + } + else + { + tex->setLoadedCallback(onLocalTextureLoaded, desired_discard, TRUE, FALSE, new LLAvatarTexData(getID(), type)); + } + } + tex->setMinDiscardLevel(desired_discard); + } + } + local_tex_data->mIsBakedReady = baked_version_ready; + local_tex_data->mImage = tex; +} + +// virtual +void LLVOAvatarSelf::dumpLocalTextures() const +{ + llinfos << "Local Textures:" << llendl; + + /* ETextureIndex baked_equiv[] = { + TEX_UPPER_BAKED, + if (isTextureDefined(baked_equiv[i])) */ + for (LLVOAvatarDictionary::Textures::const_iterator iter = LLVOAvatarDictionary::getInstance()->getTextures().begin(); + iter != LLVOAvatarDictionary::getInstance()->getTextures().end(); + iter++) + { + const LLVOAvatarDictionary::TextureEntry *texture_dict = iter->second; + if (!texture_dict->mIsLocalTexture || !texture_dict->mIsUsedByBakedTexture) + continue; + + const EBakedTextureIndex baked_index = texture_dict->mBakedTextureIndex; + const ETextureIndex baked_equiv = LLVOAvatarDictionary::getInstance()->getBakedTexture(baked_index)->mTextureIndex; + + const std::string &name = texture_dict->mName; + const LocalTextureData *local_tex_data = getLocalTextureData(iter->first,0); + if (isTextureDefined(baked_equiv)) + { +#if LL_RELEASE_FOR_DOWNLOAD + // End users don't get to trivially see avatar texture IDs, makes textures + // easier to steal. JC + llinfos << "LocTex " << name << ": Baked " << llendl; +#else + llinfos << "LocTex " << name << ": Baked " << getTEImage(baked_equiv)->getID() << llendl; +#endif + } + else if (local_tex_data->mImage.notNull()) + { + if (local_tex_data->mImage->getID() == IMG_DEFAULT_AVATAR) + { + llinfos << "LocTex " << name << ": None" << llendl; + } + else + { + const LLViewerImage* image = local_tex_data->mImage; + + llinfos << "LocTex " << name << ": " + << "Discard " << image->getDiscardLevel() << ", " + << "(" << image->getWidth() << ", " << image->getHeight() << ") " +#if !LL_RELEASE_FOR_DOWNLOAD + // End users don't get to trivially see avatar texture IDs, + // makes textures easier to steal + << image->getID() << " " +#endif + << "Priority: " << image->getDecodePriority() + << llendl; + } + } + else + { + llinfos << "LocTex " << name << ": No LLViewerImage" << llendl; + } + } +} + +//----------------------------------------------------------------------------- +// static +// onLocalTextureLoaded() +//----------------------------------------------------------------------------- + +void LLVOAvatarSelf::onLocalTextureLoaded(BOOL success, LLViewerImage *src_vi, LLImageRaw* src_raw, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata) +{ + LLAvatarTexData *data = (LLAvatarTexData *)userdata; + LLVOAvatarSelf *self = (LLVOAvatarSelf *)gObjectList.findObject(data->mAvatarID); + if (self) + { + // We should only be handling local textures for ourself + self->localTextureLoaded(success, src_vi, src_raw, aux_src, discard_level, final, userdata); + } + // ensure data is cleaned up + if (final || !success) + { + delete data; + } +} + + +const LLVOAvatarSelf::localtexture_vec_t &LLVOAvatarSelf::getLocalTextureData(LLVOAvatarDefines::ETextureIndex type) const +{ + localtexture_map_t::const_iterator found_localtexture = mLocalTextureDatas.find(type); + if (found_localtexture != mLocalTextureDatas.end()) + { + const localtexture_vec_t &local_tex_data = found_localtexture->second; + return local_tex_data; + } + llassert(0); + static localtexture_vec_t ret; + return ret; +} + +const LocalTextureData* LLVOAvatarSelf::getLocalTextureData(LLVOAvatarDefines::ETextureIndex type, U32 index ) const +{ + const localtexture_vec_t &local_tex_array = getLocalTextureData(type); + + if (index >= local_tex_array.size()) + { + return NULL; + } + + return local_tex_array[index]; +} + +LLVOAvatarSelf::localtexture_vec_t &LLVOAvatarSelf::getLocalTextureData(LLVOAvatarDefines::ETextureIndex type) +{ + localtexture_map_t::iterator found_localtexture = mLocalTextureDatas.find(type); + if (found_localtexture != mLocalTextureDatas.end()) + { + localtexture_vec_t &local_tex_data = found_localtexture->second; + return local_tex_data; + } + llassert(0); + static localtexture_vec_t ret; + return ret; +} + +LocalTextureData* LLVOAvatarSelf::getLocalTextureData(LLVOAvatarDefines::ETextureIndex type, U32 index ) +{ + localtexture_vec_t &local_tex_array = getLocalTextureData(type); + + if (index >= local_tex_array.size()) + { + return NULL; + } + + return local_tex_array[index]; +} + +// static +void LLVOAvatarSelf::dumpTotalLocalTextureByteCount() +{ + S32 gl_bytes = 0; + gAgent.getAvatarObject()->getLocalTextureByteCount(&gl_bytes); + llinfos << "Total Avatar LocTex GL:" << (gl_bytes/1024) << "KB" << llendl; +} + +BOOL LLVOAvatarSelf::updateIsFullyLoaded() +{ + BOOL loading = FALSE; + + // do we have a shape? + if (visualParamWeightsAreDefault()) + { + loading = TRUE; + } + + if (!isTextureDefined(TEX_HAIR)) + { + loading = TRUE; + } + + if (!mPreviousFullyLoaded) + { + if (!isLocalTextureDataAvailable(mBakedTextureDatas[BAKED_LOWER].mTexLayerSet) && + (!isTextureDefined(TEX_LOWER_BAKED))) + { + loading = TRUE; + } + + if (!isLocalTextureDataAvailable(mBakedTextureDatas[BAKED_UPPER].mTexLayerSet) && + (!isTextureDefined(TEX_UPPER_BAKED))) + { + loading = TRUE; + } + + for (U32 i = 0; i < mBakedTextureDatas.size(); i++) + { + if (i == BAKED_SKIRT && !isWearingWearableType(WT_SKIRT)) + continue; + + BakedTextureData& texture_data = mBakedTextureDatas[i]; + if (!isTextureDefined(texture_data.mTextureIndex)) + continue; + + // Check for the case that texture is defined but not sufficiently loaded to display anything. + LLViewerImage* baked_img = getImage( texture_data.mTextureIndex ); + if (!baked_img || !baked_img->getHasGLTexture()) + { + loading = TRUE; + } + + } + + } + return processFullyLoadedChange(loading); +} + +const LLUUID& LLVOAvatarSelf::grabLocalTexture(ETextureIndex type, U32 index) const +{ + if (canGrabLocalTexture(type, index)) + { + return getTEImage( type )->getID(); + } + return LLUUID::null; +} + +BOOL LLVOAvatarSelf::canGrabLocalTexture(ETextureIndex type, U32 index) const +{ + // Check if the texture hasn't been baked yet. + if (!isTextureDefined(type)) + { + lldebugs << "getTEImage( " << (U32) type << " )->getID() == IMG_DEFAULT_AVATAR" << llendl; + return FALSE; + } + + if (gAgent.isGodlike()) + return TRUE; + + // Check permissions of textures that show up in the + // baked texture. We don't want people copying people's + // work via baked textures. + /* switch(type) + case TEX_EYES_BAKED: + textures.push_back(TEX_EYES_IRIS); */ + const LLVOAvatarDictionary::TextureEntry *texture_dict = LLVOAvatarDictionary::getInstance()->getTexture(type); + if (!texture_dict->mIsUsedByBakedTexture) return FALSE; + + const EBakedTextureIndex baked_index = texture_dict->mBakedTextureIndex; + const LLVOAvatarDictionary::BakedEntry *baked_dict = LLVOAvatarDictionary::getInstance()->getBakedTexture(baked_index); + for (texture_vec_t::const_iterator iter = baked_dict->mLocalTextures.begin(); + iter != baked_dict->mLocalTextures.end(); + iter++) + { + const ETextureIndex t_index = (*iter); + lldebugs << "Checking index " << (U32) t_index << llendl; + const LLUUID& texture_id = getTEImage( t_index )->getID(); + if (texture_id != IMG_DEFAULT_AVATAR) + { + // Search inventory for this texture. + LLViewerInventoryCategory::cat_array_t cats; + LLViewerInventoryItem::item_array_t items; + LLAssetIDMatches asset_id_matches(texture_id); + gInventory.collectDescendentsIf(LLUUID::null, + cats, + items, + LLInventoryModel::INCLUDE_TRASH, + asset_id_matches); + + BOOL can_grab = FALSE; + lldebugs << "item count for asset " << texture_id << ": " << items.count() << llendl; + if (items.count()) + { + // search for full permissions version + for (S32 i = 0; i < items.count(); i++) + { + LLInventoryItem* itemp = items[i]; + LLPermissions item_permissions = itemp->getPermissions(); + if ( item_permissions.allowOperationBy( + PERM_MODIFY, gAgent.getID(), gAgent.getGroupID()) && + item_permissions.allowOperationBy( + PERM_COPY, gAgent.getID(), gAgent.getGroupID()) && + item_permissions.allowOperationBy( + PERM_TRANSFER, gAgent.getID(), gAgent.getGroupID()) ) + { + can_grab = TRUE; + break; + } + } + } + if (!can_grab) return FALSE; + } + } + + return TRUE; +} + +void LLVOAvatarSelf::addLocalTextureStats( ETextureIndex type, LLViewerImage* imagep, + F32 texel_area_ratio, BOOL render_avatar, BOOL covered_by_baked, U32 index ) +{ + if (!isIndexLocalTexture(type)) return; + + if (!covered_by_baked) + { + if (getLocalTextureID(type, index) != IMG_DEFAULT_AVATAR) + { + F32 desired_pixels; + desired_pixels = llmin(mPixelArea, (F32)getTexImageArea()); + imagep->setBoostLevel(getAvatarBoostLevel()); + imagep->addTextureStats( desired_pixels / texel_area_ratio ); + if (imagep->getDiscardLevel() < 0) + { + mHasGrey = TRUE; // for statistics gathering + } + } + else + { + // texture asset is missing + mHasGrey = TRUE; // for statistics gathering + } + } +} + +//----------------------------------------------------------------------------- +// getBakedTE() +// Used by the LayerSet. (Layer sets don't in general know what textures depend on them.) +//----------------------------------------------------------------------------- +ETextureIndex LLVOAvatarSelf::getBakedTE( const LLTexLayerSet* layerset ) const +{ + for (U32 i = 0; i < mBakedTextureDatas.size(); i++) + { + if (layerset == mBakedTextureDatas[i].mTexLayerSet ) + { + return mBakedTextureDatas[i].mTextureIndex; + } + } + llassert(0); + return TEX_HEAD_BAKED; +} + + +//----------------------------------------------------------------------------- +// setNewBakedTexture() +// A new baked texture has been successfully uploaded and we can start using it now. +//----------------------------------------------------------------------------- +void LLVOAvatarSelf::setNewBakedTexture( ETextureIndex te, const LLUUID& uuid ) +{ + // Baked textures live on other sims. + LLHost target_host = getObjectHost(); + setTEImage( te, gImageList.getImageFromHost( uuid, target_host ) ); + updateMeshTextures(); + dirtyMesh(); + + LLVOAvatar::cullAvatarsByPixelArea(); + + /* switch(te) + case TEX_HEAD_BAKED: + llinfos << "New baked texture: HEAD" << llendl; */ + const LLVOAvatarDictionary::TextureEntry *texture_dict = LLVOAvatarDictionary::getInstance()->getTexture(te); + if (texture_dict->mIsBakedTexture) + { + llinfos << "New baked texture: " << texture_dict->mName << " UUID: " << uuid <<llendl; + } + else + { + llwarns << "New baked texture: unknown te " << te << llendl; + } + + // dumpAvatarTEs( "setNewBakedTexture() send" ); + // RN: throttle uploads + if (!hasPendingBakedUploads()) + { + gAgent.sendAgentSetAppearance(); + } +} + +//----------------------------------------------------------------------------- +// setCachedBakedTexture() +// A baked texture id was received from a cache query, make it active +//----------------------------------------------------------------------------- +void LLVOAvatarSelf::setCachedBakedTexture( ETextureIndex te, const LLUUID& uuid ) +{ + setTETexture( te, uuid ); + + /* switch(te) + case TEX_HEAD_BAKED: + if( mHeadLayerSet ) + mHeadLayerSet->cancelUpload(); */ + for (U32 i = 0; i < mBakedTextureDatas.size(); i++) + { + if ( mBakedTextureDatas[i].mTextureIndex == te && mBakedTextureDatas[i].mTexLayerSet) + { + mBakedTextureDatas[i].mTexLayerSet->cancelUpload(); + } + } +} + +// static +void LLVOAvatarSelf::processRebakeAvatarTextures(LLMessageSystem* msg, void**) +{ + LLUUID texture_id; + msg->getUUID("TextureData", "TextureID", texture_id); + + LLVOAvatarSelf* self = gAgent.getAvatarObject(); + if (!self) return; + + // If this is a texture corresponding to one of our baked entries, + // just rebake that layer set. + BOOL found = FALSE; + + /* ETextureIndex baked_texture_indices[BAKED_NUM_INDICES] = + TEX_HEAD_BAKED, + TEX_UPPER_BAKED, */ + for (LLVOAvatarDictionary::Textures::const_iterator iter = LLVOAvatarDictionary::getInstance()->getTextures().begin(); + iter != LLVOAvatarDictionary::getInstance()->getTextures().end(); + iter++) + { + const ETextureIndex index = iter->first; + const LLVOAvatarDictionary::TextureEntry *texture_dict = iter->second; + if (texture_dict->mIsBakedTexture) + { + if (texture_id == self->getTEImage(index)->getID()) + { + LLTexLayerSet* layer_set = self->getLayerSet(index); + if (layer_set) + { + llinfos << "TAT: rebake - matched entry " << (S32)index << llendl; + // Apparently set_by_user == force upload + BOOL set_by_user = TRUE; + self->invalidateComposite(layer_set, set_by_user); + found = TRUE; + LLViewerStats::getInstance()->incStat(LLViewerStats::ST_TEX_REBAKES); + } + } + } + } + + // If texture not found, rebake all entries. + if (!found) + { + self->forceBakeAllTextures(); + } + else + { + // Not sure if this is necessary, but forceBakeAllTextures() does it. + self->updateMeshTextures(); + } +} + +void LLVOAvatarSelf::forceBakeAllTextures(bool slam_for_debug) +{ + llinfos << "TAT: forced full rebake. " << llendl; + + for (U32 i = 0; i < mBakedTextureDatas.size(); i++) + { + ETextureIndex baked_index = mBakedTextureDatas[i].mTextureIndex; + LLTexLayerSet* layer_set = getLayerSet(baked_index); + if (layer_set) + { + if (slam_for_debug) + { + layer_set->setUpdatesEnabled(TRUE); + layer_set->cancelUpload(); + } + + BOOL set_by_user = TRUE; + invalidateComposite(layer_set, set_by_user); + LLViewerStats::getInstance()->incStat(LLViewerStats::ST_TEX_REBAKES); + } + else + { + llwarns << "TAT: NO LAYER SET FOR " << (S32)baked_index << llendl; + } + } + + // Don't know if this is needed + updateMeshTextures(); +} + +//----------------------------------------------------------------------------- +// requestLayerSetUpdate() +//----------------------------------------------------------------------------- +void LLVOAvatarSelf::requestLayerSetUpdate(ETextureIndex index ) +{ + /* switch(index) + case LOCTEX_UPPER_BODYPAINT: + case LOCTEX_UPPER_SHIRT: + if( mUpperBodyLayerSet ) + mUpperBodyLayerSet->requestUpdate(); */ + const LLVOAvatarDictionary::TextureEntry *texture_dict = LLVOAvatarDictionary::getInstance()->getTexture(index); + if (!texture_dict->mIsLocalTexture || !texture_dict->mIsUsedByBakedTexture) + return; + const EBakedTextureIndex baked_index = texture_dict->mBakedTextureIndex; + if (mBakedTextureDatas[baked_index].mTexLayerSet) + { + mBakedTextureDatas[baked_index].mTexLayerSet->requestUpdate(); + } +} + +LLTexLayerSet* LLVOAvatarSelf::getLayerSet(ETextureIndex index) const +{ + /* switch(index) + case TEX_HEAD_BAKED: + case TEX_HEAD_BODYPAINT: + return mHeadLayerSet; */ + const LLVOAvatarDictionary::TextureEntry *texture_dict = LLVOAvatarDictionary::getInstance()->getTexture(index); + if (texture_dict->mIsUsedByBakedTexture) + { + const EBakedTextureIndex baked_index = texture_dict->mBakedTextureIndex; + return mBakedTextureDatas[baked_index].mTexLayerSet; + } + return NULL; +} + +// static +void LLVOAvatarSelf::onCustomizeStart() +{ + // We're no longer doing any baking or invalidating on entering + // appearance editing mode. Leaving function in place in case + // further changes require us to do something at this point - Nyx +} + +// static +void LLVOAvatarSelf::onCustomizeEnd() +{ + LLVOAvatarSelf *avatarp = gAgent.getAvatarObject(); + if (avatarp) + { + avatarp->invalidateAll(); + avatarp->requestLayerSetUploads(); + } +} + +// static +void LLVOAvatarSelf::onChangeSelfInvisible(BOOL newvalue) +{ + LLVOAvatarSelf *avatarp = gAgent.getAvatarObject(); + if (avatarp) + { + if (newvalue) + { + // we have just requested to set the avatar's baked textures to invisible + avatarp->setInvisible(TRUE); + } + else + { + avatarp->setInvisible(FALSE); + } + } +} + +void LLVOAvatarSelf::setInvisible(BOOL newvalue) +{ + if (newvalue) + { + setCompositeUpdatesEnabled(FALSE); + for (U32 i = 0; i < mBakedTextureDatas.size(); i++ ) + { + setNewBakedTexture(mBakedTextureDatas[i].mTextureIndex, IMG_INVISIBLE); + } + gAgent.sendAgentSetAppearance(); + } + else + { + setCompositeUpdatesEnabled(TRUE); + invalidateAll(); + requestLayerSetUploads(); + gAgent.sendAgentSetAppearance(); + } +} + +//------------------------------------------------------------------------ +// needsRenderBeam() +//------------------------------------------------------------------------ +BOOL LLVOAvatarSelf::needsRenderBeam() +{ + if (gNoRender) + { + return FALSE; + } + LLTool *tool = LLToolMgr::getInstance()->getCurrentTool(); + + BOOL is_touching_or_grabbing = (tool == LLToolGrab::getInstance() && LLToolGrab::getInstance()->isEditing()); + if (LLToolGrab::getInstance()->getEditingObject() && + LLToolGrab::getInstance()->getEditingObject()->isAttachment()) + { + // don't render selection beam on hud objects + is_touching_or_grabbing = FALSE; + } + return is_touching_or_grabbing || (mState & AGENT_STATE_EDITING && LLSelectMgr::getInstance()->shouldShowSelection()); +} + +// static +void LLVOAvatarSelf::deleteScratchTextures() +{ + for( LLGLuint* namep = sScratchTexNames.getFirstData(); + namep; + namep = sScratchTexNames.getNextData() ) + { + LLImageGL::deleteTextures(1, (U32 *)namep ); + stop_glerror(); + } + + if( sScratchTexBytes ) + { + lldebugs << "Clearing Scratch Textures " << (sScratchTexBytes/1024) << "KB" << llendl; + + sScratchTexNames.deleteAllData(); + sScratchTexLastBindTime.deleteAllData(); + LLImageGL::sGlobalTextureMemoryInBytes -= sScratchTexBytes; + sScratchTexBytes = 0; + } +} + +BOOL LLVOAvatarSelf::bindScratchTexture( LLGLenum format ) +{ + U32 texture_bytes = 0; + GLuint gl_name = getScratchTexName( format, &texture_bytes ); + if( gl_name ) + { + gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_TEXTURE, gl_name); + stop_glerror(); + + F32* last_bind_time = sScratchTexLastBindTime.getIfThere( format ); + if( last_bind_time ) + { + if( *last_bind_time != LLImageGL::sLastFrameTime ) + { + *last_bind_time = LLImageGL::sLastFrameTime; + LLImageGL::updateBoundTexMem(texture_bytes); + } + } + else + { + LLImageGL::updateBoundTexMem(texture_bytes); + sScratchTexLastBindTime.addData( format, new F32(LLImageGL::sLastFrameTime) ); + } + return TRUE; + } + return FALSE; +} + +LLGLuint LLVOAvatarSelf::getScratchTexName( LLGLenum format, U32* texture_bytes ) +{ + S32 components; + GLenum internal_format; + switch( format ) + { + case GL_LUMINANCE: components = 1; internal_format = GL_LUMINANCE8; break; + case GL_ALPHA: components = 1; internal_format = GL_ALPHA8; break; + case GL_COLOR_INDEX: components = 1; internal_format = GL_COLOR_INDEX8_EXT; break; + case GL_LUMINANCE_ALPHA: components = 2; internal_format = GL_LUMINANCE8_ALPHA8; break; + case GL_RGB: components = 3; internal_format = GL_RGB8; break; + case GL_RGBA: components = 4; internal_format = GL_RGBA8; break; + default: llassert(0); components = 4; internal_format = GL_RGBA8; break; + } + + *texture_bytes = components * SCRATCH_TEX_WIDTH * SCRATCH_TEX_HEIGHT; + + if( sScratchTexNames.checkData( format ) ) + { + return *( sScratchTexNames.getData( format ) ); + } + + LLGLSUIDefault gls_ui; + + U32 name = 0; + LLImageGL::generateTextures(1, &name ); + stop_glerror(); + + gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_TEXTURE, name); + stop_glerror(); + + LLImageGL::setManualImage( + GL_TEXTURE_2D, 0, internal_format, + SCRATCH_TEX_WIDTH, SCRATCH_TEX_HEIGHT, + format, GL_UNSIGNED_BYTE, NULL ); + stop_glerror(); + + gGL.getTexUnit(0)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR); + gGL.getTexUnit(0)->setTextureAddressMode(LLTexUnit::TAM_CLAMP); + stop_glerror(); + + gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); + stop_glerror(); + + sScratchTexNames.addData( format, new LLGLuint( name ) ); + + sScratchTexBytes += *texture_bytes; + LLImageGL::sGlobalTextureMemoryInBytes += *texture_bytes; + return name; +} + +// static +void LLVOAvatarSelf::dumpScratchTextureByteCount() +{ + llinfos << "Scratch Texture GL: " << (sScratchTexBytes/1024) << "KB" << llendl; +} diff --git a/indra/newview/llvoavatarself.h b/indra/newview/llvoavatarself.h new file mode 100644 index 0000000000000000000000000000000000000000..431c814382b8ec8d3f299fb478992218e5dd07b9 --- /dev/null +++ b/indra/newview/llvoavatarself.h @@ -0,0 +1,321 @@ +/** + * @file llvoavatarself.h + * @brief Declaration of LLVOAvatar class which is a derivation fo + * LLViewerObject + * + * $LicenseInfo:firstyear=2001&license=viewergpl$ + * + * Copyright (c) 2001-2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#ifndef LL_LLVOAVATARSELF_H +#define LL_LLVOAVATARSELF_H + +#include "llvoavatar.h" + +struct LocalTextureData; + +//------------------------------------------------------------------------ +// LLVOAvatarSelf +//------------------------------------------------------------------------ +class LLVOAvatarSelf : + public LLVOAvatar +{ + +/******************************************************************************** + ** ** + ** INITIALIZATION + **/ + +public: + LLVOAvatarSelf(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp); + virtual ~LLVOAvatarSelf(); + virtual void markDead(); +protected: + BOOL loadAvatarSelf(); + BOOL buildSkeletonSelf(const LLVOAvatarSkeletonInfo *info); + BOOL buildMenus(); + /*virtual*/ BOOL loadLayersets(); + +/** Initialization + ** ** + *******************************************************************************/ + +/******************************************************************************** + ** ** + ** INHERITED + **/ + + //-------------------------------------------------------------------- + // LLViewerObject interface and related + //-------------------------------------------------------------------- +public: + /*virtual*/ void updateRegion(LLViewerRegion *regionp); + + //-------------------------------------------------------------------- + // LLCharacter interface and related + //-------------------------------------------------------------------- +public: + /*virtual*/ void stopMotionFromSource(const LLUUID& source_id); + /*virtual*/ void requestStopMotion(LLMotion* motion); + /*virtual*/ LLJoint* getJoint(const std::string &name); + +/** Initialization + ** ** + *******************************************************************************/ + +/******************************************************************************** + ** ** + ** STATE + **/ + +public: + /*virtual*/ bool isSelf() const { return true; } + + //-------------------------------------------------------------------- + // Updates + //-------------------------------------------------------------------- +public: + /*virtual*/ BOOL updateCharacter(LLAgent &agent); + /*virtual*/ void idleUpdateTractorBeam(); + + //-------------------------------------------------------------------- + // Loading state + //-------------------------------------------------------------------- +public: + /*virtual*/ BOOL updateIsFullyLoaded(); +private: + BOOL mIsBaked; // are the stored baked textures up to date? + + //-------------------------------------------------------------------- + // Region state + //-------------------------------------------------------------------- +private: + U64 mLastRegionHandle; + LLFrameTimer mRegionCrossingTimer; + S32 mRegionCrossingCount; + +/** State + ** ** + *******************************************************************************/ + +/******************************************************************************** + ** ** + ** RENDERING + **/ + + //-------------------------------------------------------------------- + // Render beam + //-------------------------------------------------------------------- +protected: + BOOL needsRenderBeam(); +private: + LLPointer<LLHUDEffectSpiral> mBeam; + LLFrameTimer mBeamTimer; + + //-------------------------------------------------------------------- + // LLVOAvatar Constants + //-------------------------------------------------------------------- +public: + /*virtual*/ LLViewerImage::EBoostLevel getAvatarBoostLevel() const { return LLViewerImage::BOOST_AVATAR_SELF; } + /*virtual*/ LLViewerImage::EBoostLevel getAvatarBakedBoostLevel() const { return LLViewerImage::BOOST_AVATAR_BAKED_SELF; } + /*virtual*/ S32 getTexImageSize() const { return LLVOAvatar::getTexImageSize()*4; } + +/** Rendering + ** ** + *******************************************************************************/ + +/******************************************************************************** + ** ** + ** TEXTURES + **/ + + //-------------------------------------------------------------------- + // Loading status + //-------------------------------------------------------------------- +public: + /*virtual*/ bool hasPendingBakedUploads() const; + S32 getLocalDiscardLevel(LLVOAvatarDefines::ETextureIndex type, U32 index = 0) const; + bool areTexturesCurrent() const; + BOOL isLocalTextureDataAvailable(const LLTexLayerSet* layerset) const; + BOOL isLocalTextureDataFinal(const LLTexLayerSet* layerset) const; + /*virtual*/ BOOL isTextureDefined(LLVOAvatarDefines::ETextureIndex type, U32 index = 0) const; + + //-------------------------------------------------------------------- + // Local Textures + //-------------------------------------------------------------------- +public: + BOOL getLocalTextureGL(LLVOAvatarDefines::ETextureIndex type, LLImageGL** image_gl_pp, U32 index = 0) const; + const LLUUID& getLocalTextureID(LLVOAvatarDefines::ETextureIndex type, U32 index = 0) const; + void setLocalTextureTE(U8 te, LLViewerImage* image, BOOL set_by_user, U32 index = 0); + const LLUUID& grabLocalTexture(LLVOAvatarDefines::ETextureIndex type, U32 index = 0) const; + BOOL canGrabLocalTexture(LLVOAvatarDefines::ETextureIndex type, U32 index = 0) const; +protected: + /*virtual*/ void setLocalTexture(LLVOAvatarDefines::ETextureIndex type, LLViewerImage* tex, BOOL baked_version_exits, U32 index = 0); + void localTextureLoaded(BOOL succcess, LLViewerImage *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata); + void getLocalTextureByteCount(S32* gl_byte_count) const; + /*virtual*/ void addLocalTextureStats(LLVOAvatarDefines::ETextureIndex i, LLViewerImage* imagep, F32 texel_area_ratio, BOOL rendered, BOOL covered_by_baked, U32 index = 0); +private: + static void onLocalTextureLoaded(BOOL succcess, LLViewerImage *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata); + + //-------------------------------------------------------------------- + // Baked textures + //-------------------------------------------------------------------- +public: + LLVOAvatarDefines::ETextureIndex getBakedTE(const LLTexLayerSet* layerset ) const; + void setNewBakedTexture(LLVOAvatarDefines::ETextureIndex i, const LLUUID& uuid); + void setCachedBakedTexture(LLVOAvatarDefines::ETextureIndex i, const LLUUID& uuid); + void forceBakeAllTextures(bool slam_for_debug = false); + static void processRebakeAvatarTextures(LLMessageSystem* msg, void**); +protected: + /*virtual*/ void removeMissingBakedTextures(); + + //-------------------------------------------------------------------- + // Layers + //-------------------------------------------------------------------- +public: + void requestLayerSetUploads(); + void requestLayerSetUpdate(LLVOAvatarDefines::ETextureIndex i); +protected: + LLTexLayerSet* getLayerSet(LLVOAvatarDefines::ETextureIndex index) const; + + //-------------------------------------------------------------------- + // Composites + //-------------------------------------------------------------------- +public: + /* virtual */ void invalidateComposite(LLTexLayerSet* layerset, BOOL set_by_user); + /* virtual */ void invalidateAll(); + /* virtual */ void setCompositeUpdatesEnabled(BOOL b); // only works for self + void setupComposites(); + void updateComposites(); + + //-------------------------------------------------------------------- + // Scratch textures (used for compositing) + //-------------------------------------------------------------------- +public: + BOOL bindScratchTexture(LLGLenum format); + static void deleteScratchTextures(); +protected: + LLGLuint getScratchTexName(LLGLenum format, U32* texture_bytes); +private: + static S32 sScratchTexBytes; + static LLMap< LLGLenum, LLGLuint*> sScratchTexNames; + static LLMap< LLGLenum, F32*> sScratchTexLastBindTime; + + //-------------------------------------------------------------------- + // Texture Data + //-------------------------------------------------------------------- +private: + typedef std::vector<LocalTextureData*> localtexture_vec_t; // all textures of a certain TE + typedef std::map<LLVOAvatarDefines::ETextureIndex, localtexture_vec_t> localtexture_map_t; // texture TE vectors arranged by texture type + localtexture_map_t mLocalTextureDatas; + + const localtexture_vec_t& getLocalTextureData(LLVOAvatarDefines::ETextureIndex index) const; // const accessor into mLocalTextureDatas + const LocalTextureData* getLocalTextureData(LLVOAvatarDefines::ETextureIndex type, U32 index) const; // const accessor to individual LocalTextureData + + localtexture_vec_t& getLocalTextureData(LLVOAvatarDefines::ETextureIndex index); // accessor into mLocalTextureDatas + LocalTextureData* getLocalTextureData(LLVOAvatarDefines::ETextureIndex type, U32 index); // accessor to individual LocalTextureData + +/** Textures + ** ** + *******************************************************************************/ + +/******************************************************************************** + ** ** + ** MESHES + **/ +protected: + /*virtual*/ void restoreMeshData(); + +/** Meshes + ** ** + *******************************************************************************/ + +/******************************************************************************** + ** ** + ** WEARABLES + **/ + +public: + void wearableUpdated(EWearableType type); + + //-------------------------------------------------------------------- + // Attachments + //-------------------------------------------------------------------- +public: + void updateAttachmentVisibility(U32 camera_mode); + BOOL isWearingAttachment(const LLUUID& inv_item_id); + LLViewerObject* getWornAttachment(const LLUUID& inv_item_id ) const; + const std::string getAttachedPointName(const LLUUID& inv_item_id) const; + /*virtual*/ LLViewerJointAttachment *attachObject(LLViewerObject *viewer_object); + + //-------------------------------------------------------------------- + // HUDs + //-------------------------------------------------------------------- +private: + LLViewerJoint* mScreenp; // special purpose joint for HUD attachments + +/** Attachments + ** ** + *******************************************************************************/ + +/******************************************************************************** + ** ** + ** APPEARANCE + **/ + +public: + static void onCustomizeStart(); + static void onCustomizeEnd(); + + //-------------------------------------------------------------------- + // Visibility + //-------------------------------------------------------------------- +public: + static void onChangeSelfInvisible(BOOL newvalue); + void setInvisible(BOOL newvalue); + +/** Appearance + ** ** + *******************************************************************************/ + +/******************************************************************************** + ** ** + ** DIAGNOSTICS + **/ + +public: + static void dumpTotalLocalTextureByteCount(); + void dumpLocalTextures() const; + static void dumpScratchTextureByteCount(); + +/** Diagnostics + ** ** + *******************************************************************************/ + +}; + +#endif // LL_VO_AVATARSELF_H diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp index 47487a6da2f63dc05991835e8c524428ba674e2b..082dcb50a2f3bf7003e429963ab1b745f9d02996 100644 --- a/indra/newview/llvoiceclient.cpp +++ b/indra/newview/llvoiceclient.cpp @@ -62,6 +62,7 @@ #include "llfirstuse.h" #include "llviewerwindow.h" #include "llviewercamera.h" +#include "llvoavatarself.h" #include "llfloaterfriends.h" //VIVOX, inorder to refresh communicate panel #include "llfloaterchat.h" // for LLFloaterChat::addChat() diff --git a/indra/newview/llvopartgroup.cpp b/indra/newview/llvopartgroup.cpp index 82003daaf46a4a95d9ba6a8064706a5435e5959a..29036f4947bf0e7717846a3f7e2644aa304fb736 100644 --- a/indra/newview/llvopartgroup.cpp +++ b/indra/newview/llvopartgroup.cpp @@ -365,7 +365,7 @@ LLParticlePartition::LLParticlePartition() LLHUDParticlePartition::LLHUDParticlePartition() : LLParticlePartition() { - mDrawableType = LLPipeline::RENDER_TYPE_HUD; + mDrawableType = LLPipeline::RENDER_TYPE_HUD_PARTICLES; mPartitionType = LLViewerRegion::PARTITION_HUD_PARTICLE; } @@ -509,7 +509,7 @@ LLDrawable* LLVOHUDPartGroup::createDrawable(LLPipeline *pipeline) { pipeline->allocDrawable(this); mDrawable->setLit(FALSE); - mDrawable->setRenderType(LLPipeline::RENDER_TYPE_HUD); + mDrawable->setRenderType(LLPipeline::RENDER_TYPE_HUD_PARTICLES); return mDrawable; } diff --git a/indra/newview/llvosky.cpp b/indra/newview/llvosky.cpp index e747ab585f7b3e11ce905f319700ed12ea5fbcf2..d99758edf81496340626200ca8aa99766878b4b0 100644 --- a/indra/newview/llvosky.cpp +++ b/indra/newview/llvosky.cpp @@ -1197,8 +1197,6 @@ LLDrawable *LLVOSky::createDrawable(LLPipeline *pipeline) LLDrawPoolSky *poolp = (LLDrawPoolSky*) gPipeline.getPool(LLDrawPool::POOL_SKY); poolp->setSkyTex(mSkyTex); - poolp->setSun(&mSun); - poolp->setMoon(&mMoon); mDrawable->setRenderType(LLPipeline::RENDER_TYPE_SKY); for (S32 i = 0; i < 6; ++i) @@ -1215,7 +1213,7 @@ LLDrawable *LLVOSky::createDrawable(LLPipeline *pipeline) //by bao //fake vertex buffer updating -//to guaranttee at least updating one VBO buffer every frame +//to guarantee at least updating one VBO buffer every frame //to walk around the bug caused by ATI card --> DEV-3855 // void LLVOSky::createDummyVertexBuffer() diff --git a/indra/newview/llvotree.cpp b/indra/newview/llvotree.cpp index fecffd72ad66c0766b91580afdee5ab229e31339..b602b930256443dab9611ecd801e86e7f5c8e513 100644 --- a/indra/newview/llvotree.cpp +++ b/indra/newview/llvotree.cpp @@ -329,6 +329,9 @@ U32 LLVOTree::processUpdateMessage(LLMessageSystem *mesgsys, mBillboardRatio = sSpeciesTable[mSpecies]->mBillboardRatio; mTrunkAspect = sSpeciesTable[mSpecies]->mTrunkAspect; mBranchAspect = sSpeciesTable[mSpecies]->mBranchAspect; + + // position change not caused by us, etc. make sure to rebuild. + gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_ALL); return retval; } @@ -397,6 +400,31 @@ BOOL LLVOTree::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time) { gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_ALL, FALSE); } + else + { + // we're not animating but we may *still* need to + // regenerate the mesh if we moved, since position + // and rotation are baked into the mesh. + // *TODO: I don't know what's so special about trees + // that they don't get REBUILD_POSITION automatically + // at a higher level. + const LLVector3 &this_position = getPositionAgent(); + if (this_position != mLastPosition) + { + gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_POSITION); + mLastPosition = this_position; + } + else + { + const LLQuaternion &this_rotation = getRotation(); + + if (this_rotation != mLastRotation) + { + gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_POSITION); + mLastRotation = this_rotation; + } + } + } } mTrunkLOD = trunk_LOD; diff --git a/indra/newview/llvotree.h b/indra/newview/llvotree.h index 473f1c340ec84379592fbda74d3bcb0db7a1556e..42a6d54f6239b79d7bf8279aa7634e9f1a357168 100644 --- a/indra/newview/llvotree.h +++ b/indra/newview/llvotree.h @@ -179,6 +179,11 @@ class LLVOTree : public LLViewerObject F32 mTrunkAspect; // Ratio between width/length of trunk F32 mBranchAspect; // Ratio between width/length of branch F32 mRandomLeafRotate; // How much to randomly rotate leaves about arbitrary axis + + // cache last position+rotation so we can detect the need for a + // complete rebuild when not animating + LLVector3 mLastPosition; + LLQuaternion mLastRotation; U32 mFrameCount; diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 5f2c67efdf171e10cc8ae36ce10421a72efac9ba..aff8fe8f1d77e5d3ebf32eabd305cc4d10f98a60 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -512,6 +512,7 @@ void LLVOVolume::updateTextures() mSculptTexture->addTextureStats(2.f * tex_size * tex_size); mSculptTexture->setBoostLevel(llmax((S32)mSculptTexture->getBoostLevel(), (S32)LLViewerImage::BOOST_SCULPTED)); + mSculptTexture->setForSculpt() ; } S32 texture_discard = mSculptTexture->getDiscardLevel(); //try to match the texture @@ -653,7 +654,8 @@ LLDrawable *LLVOVolume::createDrawable(LLPipeline *pipeline) } updateRadius(); - mDrawable->updateDistance(*LLViewerCamera::getInstance()); + bool force_update = true; // avoid non-alpha mDistance update being optimized away + mDrawable->updateDistance(*LLViewerCamera::getInstance(), force_update); return mDrawable; } @@ -780,6 +782,11 @@ void LLVOVolume::sculpt() sculpt_width = 0; sculpt_height = 0; sculpt_data = NULL ; + + if(LLViewerImage::sTesterp) + { + LLViewerImage::sTesterp->updateGrayTextureBinding(); + } } else { @@ -788,6 +795,11 @@ void LLVOVolume::sculpt() << " < " << sculpt_height << " x " << sculpt_width << " x " <<sculpt_components << llendl; sculpt_data = raw_image->getData(); + + if(LLViewerImage::sTesterp) + { + mSculptTexture->updateBindStats() ; + } } getVolume()->sculpt(sculpt_width, sculpt_height, sculpt_components, sculpt_data, discard_level); } @@ -1271,15 +1283,28 @@ S32 LLVOVolume::setTEColor(const U8 te, const LLColor3& color) S32 LLVOVolume::setTEColor(const U8 te, const LLColor4& color) { - S32 res = LLViewerObject::setTEColor(te, color); - if (res && mDrawable.notNull()) + S32 retval = 0; + const LLTextureEntry *tep = getTE(te); + if (!tep) { - //gPipeline.markTextured(mDrawable); - mDrawable->setState(LLDrawable::REBUILD_COLOR); - dirtyMesh(); - //mFaceMappingChanged = TRUE; + llwarns << "No texture entry for te " << (S32)te << ", object " << mID << llendl; } - return res; + else if (color != tep->getColor()) + { + if (color.mV[3] != tep->getColor().mV[3]) + { + gPipeline.markTextured(mDrawable); + } + retval = LLPrimitive::setTEColor(te, color); + if (mDrawable.notNull() && retval) + { + // These should only happen on updates which are not the initial update. + mDrawable->setState(LLDrawable::REBUILD_COLOR); + dirtyMesh(); + } + } + + return retval; } S32 LLVOVolume::setTEBumpmap(const U8 te, const U8 bumpmap) @@ -1304,6 +1329,17 @@ S32 LLVOVolume::setTETexGen(const U8 te, const U8 texgen) return res; } +S32 LLVOVolume::setTEMediaTexGen(const U8 te, const U8 media) +{ + S32 res = LLViewerObject::setTEMediaTexGen(te, media); + if (res) + { + gPipeline.markTextured(mDrawable); + mFaceMappingChanged = TRUE; + } + return res; +} + S32 LLVOVolume::setTEShiny(const U8 te, const U8 shiny) { S32 res = LLViewerObject::setTEShiny(te, shiny); @@ -1326,6 +1362,17 @@ S32 LLVOVolume::setTEFullbright(const U8 te, const U8 fullbright) return res; } +S32 LLVOVolume::setTEBumpShinyFullbright(const U8 te, const U8 bump) +{ + S32 res = LLViewerObject::setTEBumpShinyFullbright(te, bump); + if (res) + { + gPipeline.markTextured(mDrawable); + mFaceMappingChanged = TRUE; + } + return res; +} + S32 LLVOVolume::setTEMediaFlags(const U8 te, const U8 media_flags) { S32 res = LLViewerObject::setTEMediaFlags(te, media_flags); @@ -2811,7 +2858,7 @@ LLHUDPartition::LLHUDPartition() mPartitionType = LLViewerRegion::PARTITION_HUD; mDrawableType = LLPipeline::RENDER_TYPE_HUD; mSlopRatio = 0.f; - mLODPeriod = 16; + mLODPeriod = 1; } void LLHUDPartition::shift(const LLVector3 &offset) diff --git a/indra/newview/llwearable.cpp b/indra/newview/llwearable.cpp index af2ed1d1ab16093c4d47e9c6f263d021cea871de..1e35a31cb6c57b10965b48307149073a6b82dde2 100644 --- a/indra/newview/llwearable.cpp +++ b/indra/newview/llwearable.cpp @@ -32,82 +32,27 @@ #include "llviewerprecompiledheaders.h" -#include "imageids.h" -#include "llassetstorage.h" -#include "lldbstrings.h" -#include "lldir.h" -#include "llquantize.h" - #include "llagent.h" -#include "llassetuploadresponders.h" -#include "llviewerwindow.h" +#include "llagentwearables.h" #include "llfloatercustomize.h" -#include "llinventorymodel.h" #include "llviewerimagelist.h" -#include "llviewerinventory.h" +#include "llinventorymodel.h" #include "llviewerregion.h" #include "llvoavatar.h" +#include "llvoavatarself.h" +#include "llvoavatardefines.h" #include "llwearable.h" +#include "lldictionary.h" #include "lltrans.h" using namespace LLVOAvatarDefines; // static S32 LLWearable::sCurrentDefinitionVersion = 1; -std::string LLWearable::sTypeLabel [WT_COUNT+1]; - -// static -const std::string LLWearable::sTypeName[ WT_COUNT+1 ] = -{ - "shape", - "skin", - "hair", - "eyes", - "shirt", - "pants", - "shoes", - "socks", - "jacket", - "gloves", - "undershirt", - "underpants", - "skirt", - "invalid" -}; - -void LLWearable::initClass () -{ - for (int i = 0; i <= WT_COUNT; i++) - { - sTypeLabel[i] = LLTrans::getString(sTypeName[i]); - } -} - -// static -LLAssetType::EType LLWearable::typeToAssetType(EWearableType wearable_type) -{ - switch( wearable_type ) - { - case WT_SHAPE: - case WT_SKIN: - case WT_HAIR: - case WT_EYES: - return LLAssetType::AT_BODYPART; - case WT_SHIRT: - case WT_PANTS: - case WT_SHOES: - case WT_SOCKS: - case WT_JACKET: - case WT_GLOVES: - case WT_UNDERSHIRT: - case WT_UNDERPANTS: - case WT_SKIRT: - return LLAssetType::AT_CLOTHING; - default: - return LLAssetType::AT_NONE; - } -} +// Private local functions +static std::string terse_F32_to_string(F32 f); +static std::string asset_id_to_filename(const LLUUID &asset_id); LLWearable::LLWearable(const LLTransactionID& transaction_id) : mDefinitionVersion(LLWearable::sCurrentDefinitionVersion), @@ -129,56 +74,22 @@ LLWearable::~LLWearable() { } - -// static -EWearableType LLWearable::typeNameToType( const std::string& type_name ) +const std::string& LLWearable::getTypeLabel() const { - for( S32 i = 0; i < WT_COUNT; i++ ) - { - if( type_name == LLWearable::sTypeName[ i ] ) - { - return (EWearableType)i; - } - } - return WT_INVALID; + return LLWearableDictionary::getTypeLabel(mType); } - -std::string terse_F32_to_string( F32 f ) +const std::string& LLWearable::getTypeName() const { - std::string r = llformat( "%.2f", f ); - - // "1.20" -> "1.2" - // "24.00" -> "24." - S32 len = r.length(); - while( len > 0 && '0' == r[len - 1] ) - { - r.erase(len-1, 1); - len--; - } - - if( '.' == r[len - 1] ) - { - // "24." -> "24" - r.erase(len-1, 1); - } - else - if( ('-' == r[0]) && ('0' == r[1]) ) - { - // "-0.59" -> "-.59" - r.erase(1, 1); - } - else - if( '0' == r[0] ) - { - // "0.59" -> ".59" - r.erase(0, 1); - } + return LLWearableDictionary::getTypeName(mType); +} - return r; +LLAssetType::EType LLWearable::getAssetType() const +{ + return LLWearableDictionary::getAssetType(mType); } -BOOL LLWearable::exportFile( LLFILE* file ) +BOOL LLWearable::exportFile(LLFILE* file) const { // header and version if( fprintf( file, "LLWearable version %d\n", mDefinitionVersion ) < 0 ) @@ -224,7 +135,7 @@ BOOL LLWearable::exportFile( LLFILE* file ) return FALSE; } - for (param_map_t::iterator iter = mVisualParamMap.begin(); + for (param_map_t::const_iterator iter = mVisualParamMap.begin(); iter != mVisualParamMap.end(); ++iter) { S32 param_id = iter->first; @@ -242,22 +153,18 @@ BOOL LLWearable::exportFile( LLFILE* file ) return FALSE; } - for (te_map_t::iterator iter = mTEMap.begin(); - iter != mTEMap.end(); ++iter) + for (te_map_t::const_iterator iter = mTEMap.begin(); iter != mTEMap.end(); ++iter) { S32 te = iter->first; - LLUUID& image_id = iter->second; + const LLUUID& image_id = iter->second; if( fprintf( file, "%d %s\n", te, image_id.asString().c_str()) < 0 ) { return FALSE; } } - return TRUE; } - - BOOL LLWearable::importFile( LLFILE* file ) { // *NOTE: changing the type or size of this buffer will require @@ -453,7 +360,7 @@ BOOL LLWearable::importFile( LLFILE* file ) // Avatar parameter and texture definitions can change over time. // This function returns true if parameters or textures have been added or removed // since this wearable was created. -BOOL LLWearable::isOldVersion() +BOOL LLWearable::isOldVersion() const { LLVOAvatar* avatar = gAgent.getAvatarObject(); llassert( avatar ); @@ -496,7 +403,7 @@ BOOL LLWearable::isOldVersion() S32 te_count = 0; for( S32 te = 0; te < TEX_NUM_INDICES; te++ ) { - if( LLVOAvatar::getTEWearableType((ETextureIndex) te ) == mType ) + if (LLVOAvatarDictionary::getTEWearableType((ETextureIndex) te) == mType) { te_count++; if( !is_in_map(mTEMap, te ) ) @@ -520,7 +427,7 @@ BOOL LLWearable::isOldVersion() // * If parameters or textures have been ADDED since the wearable was created, // they are taken to have default values, so we consider the wearable clean // only if those values are the same as the defaults. -BOOL LLWearable::isDirty() +BOOL LLWearable::isDirty() const { LLVOAvatar* avatar = gAgent.getAvatarObject(); llassert( avatar ); @@ -550,7 +457,7 @@ BOOL LLWearable::isDirty() for( S32 te = 0; te < TEX_NUM_INDICES; te++ ) { - if( LLVOAvatar::getTEWearableType((ETextureIndex) te ) == mType ) + if (LLVOAvatarDictionary::getTEWearableType((ETextureIndex) te) == mType) { LLViewerImage* avatar_image = avatar->getTEImage( te ); if( !avatar_image ) @@ -558,7 +465,7 @@ BOOL LLWearable::isDirty() llassert( 0 ); continue; } - const LLUUID& image_id = get_if_there(mTEMap, te, LLVOAvatar::getDefaultTEImageID((ETextureIndex) te ) ); + const LLUUID& image_id = get_if_there(mTEMap, te, LLVOAvatarDictionary::getDefaultTextureImageID((ETextureIndex) te)); if( avatar_image->getID() != image_id ) { return TRUE; @@ -602,9 +509,9 @@ void LLWearable::setTexturesToDefaults() mTEMap.clear(); for( S32 te = 0; te < TEX_NUM_INDICES; te++ ) { - if( LLVOAvatar::getTEWearableType((ETextureIndex) te ) == mType ) + if (LLVOAvatarDictionary::getTEWearableType((ETextureIndex) te) == mType) { - mTEMap[te] = LLVOAvatar::getDefaultTEImageID((ETextureIndex) te ); + mTEMap[te] = LLVOAvatarDictionary::getDefaultTextureImageID((ETextureIndex) te); } } } @@ -612,7 +519,7 @@ void LLWearable::setTexturesToDefaults() // Updates the user's avatar's appearance void LLWearable::writeToAvatar( BOOL set_by_user ) { - LLVOAvatar* avatar = gAgent.getAvatarObject(); + LLVOAvatarSelf* avatar = gAgent.getAvatarObject(); llassert( avatar ); if( !avatar ) { @@ -649,11 +556,11 @@ void LLWearable::writeToAvatar( BOOL set_by_user ) // Pull texture entries for( S32 te = 0; te < TEX_NUM_INDICES; te++ ) { - if( LLVOAvatar::getTEWearableType((ETextureIndex) te ) == mType ) + if (LLVOAvatarDictionary::getTEWearableType((ETextureIndex) te) == mType) { - const LLUUID& image_id = get_if_there(mTEMap, te, LLVOAvatar::getDefaultTEImageID((ETextureIndex) te ) ); + const LLUUID& image_id = get_if_there(mTEMap, te, LLVOAvatarDictionary::getDefaultTextureImageID((ETextureIndex) te)); LLViewerImage* image = gImageList.getImage( image_id ); - avatar->setLocTexTE( te, image, set_by_user ); + avatar->setLocalTextureTE(te, image, set_by_user); } } @@ -662,7 +569,8 @@ void LLWearable::writeToAvatar( BOOL set_by_user ) if( gFloaterCustomize ) { LLViewerInventoryItem* item; - item = (LLViewerInventoryItem*)gInventory.getItem(gAgent.getWearableItem(mType)); + // MULTI_WEARABLE: + item = (LLViewerInventoryItem*)gInventory.getItem(gAgentWearables.getWearableItem(mType,0)); U32 perm_mask = PERM_NONE; BOOL is_complete = FALSE; if(item) @@ -696,7 +604,7 @@ void LLWearable::writeToAvatar( BOOL set_by_user ) // static void LLWearable::removeFromAvatar( EWearableType type, BOOL set_by_user ) { - LLVOAvatar* avatar = gAgent.getAvatarObject(); + LLVOAvatarSelf* avatar = gAgent.getAvatarObject(); llassert( avatar ); if( !avatar ) { @@ -726,9 +634,9 @@ void LLWearable::removeFromAvatar( EWearableType type, BOOL set_by_user ) LLViewerImage* image = gImageList.getImage( IMG_DEFAULT_AVATAR ); for( S32 te = 0; te < TEX_NUM_INDICES; te++ ) { - if( LLVOAvatar::getTEWearableType((ETextureIndex) te ) == type ) + if (LLVOAvatarDictionary::getTEWearableType((ETextureIndex) te) == type) { - avatar->setLocTexTE( te, image, set_by_user ); + avatar->setLocalTextureTE(te, image, set_by_user); } } @@ -772,7 +680,7 @@ void LLWearable::readFromAvatar() mTEMap.clear(); for( S32 te = 0; te < TEX_NUM_INDICES; te++ ) { - if( LLVOAvatar::getTEWearableType((ETextureIndex) te ) == mType ) + if (LLVOAvatarDictionary::getTEWearableType((ETextureIndex) te) == mType) { LLViewerImage* image = avatar->getTEImage( te ); if( image ) @@ -790,7 +698,7 @@ void LLWearable::readFromAvatar() // Does not copy mAssetID. // Definition version is current: removes obsolete enties and creates default values for new ones. -void LLWearable::copyDataFrom( LLWearable* src ) +void LLWearable::copyDataFrom(const LLWearable* src) { LLVOAvatar* avatar = gAgent.getAvatarObject(); llassert( avatar ); @@ -823,9 +731,9 @@ void LLWearable::copyDataFrom( LLWearable* src ) // Deep copy of mTEMap (copies only those tes that are current, filling in defaults where needed) for( S32 te = 0; te < TEX_NUM_INDICES; te++ ) { - if( LLVOAvatar::getTEWearableType((ETextureIndex) te ) == mType ) + if (LLVOAvatarDictionary::getTEWearableType((ETextureIndex) te) == mType) { - const LLUUID& image_id = get_if_there(src->mTEMap, te, LLVOAvatar::getDefaultTEImageID((ETextureIndex) te ) ); + const LLUUID& image_id = get_if_there(src->mTEMap, te, LLVOAvatarDictionary::getDefaultTextureImageID((ETextureIndex) te)); mTEMap[te] = image_id; } } @@ -836,15 +744,12 @@ struct LLWearableSaveData EWearableType mType; }; -void LLWearable::saveNewAsset() +void LLWearable::saveNewAsset() const { // llinfos << "LLWearable::saveNewAsset() type: " << getTypeName() << llendl; //llinfos << *this << llendl; - std::string new_asset_id_string; - mAssetID.toString(new_asset_id_string); - std::string filename; - filename = gDirUtilp->getExpandedFilename(LL_PATH_CACHE,new_asset_id_string) + ".wbl"; + const std::string filename = asset_id_to_filename(mAssetID); LLFILE* fp = LLFile::fopen(filename, "wb"); /* Flawfinder: ignore */ BOOL successful_save = FALSE; if(fp && exportFile(fp)) @@ -899,7 +804,7 @@ void LLWearable::saveNewAsset() void LLWearable::onSaveNewAssetComplete(const LLUUID& new_asset_id, void* userdata, S32 status, LLExtStat ext_status) // StoreAssetData callback (fixed) { LLWearableSaveData* data = (LLWearableSaveData*)userdata; - const std::string& type_name = LLWearable::typeToTypeName(data->mType); + const std::string& type_name = LLWearableDictionary::getTypeName(data->mType); if(0 == status) { // Success @@ -915,28 +820,16 @@ void LLWearable::onSaveNewAssetComplete(const LLUUID& new_asset_id, void* userda } // Delete temp file - std::string new_asset_id_string; - new_asset_id.toString(new_asset_id_string); - std::string src_filename; - src_filename = gDirUtilp->getExpandedFilename(LL_PATH_CACHE,new_asset_id_string) + ".wbl"; + const std::string src_filename = asset_id_to_filename(new_asset_id); LLFile::remove(src_filename); // delete the context data delete data; } -BOOL LLWearable::isMatchedToInventoryItem( LLViewerInventoryItem* item ) -{ - return - ( mName == item->getName() ) && - ( mDescription == item->getDescription() ) && - ( mPermissions == item->getPermissions() ) && - ( mSaleInfo == item->getSaleInfo() ); -} - std::ostream& operator<<(std::ostream &s, const LLWearable &w) { - s << "wearable " << LLWearable::typeToTypeName( w.mType ) << "\n"; + s << "wearable " << LLWearableDictionary::getTypeName(w.mType) << "\n"; s << " Name: " << w.mName << "\n"; s << " Desc: " << w.mDescription << "\n"; //w.mPermissions @@ -963,3 +856,40 @@ std::ostream& operator<<(std::ostream &s, const LLWearable &w) } +std::string terse_F32_to_string(F32 f) +{ + std::string r = llformat("%.2f", f); + S32 len = r.length(); + + // "1.20" -> "1.2" + // "24.00" -> "24." + while (len > 0 && ('0' == r[len - 1])) + { + r.erase(len-1, 1); + len--; + } + if ('.' == r[len - 1]) + { + // "24." -> "24" + r.erase(len-1, 1); + } + else if (('-' == r[0]) && ('0' == r[1])) + { + // "-0.59" -> "-.59" + r.erase(1, 1); + } + else if ('0' == r[0]) + { + // "0.59" -> ".59" + r.erase(0, 1); + } + return r; +} + +std::string asset_id_to_filename(const LLUUID &asset_id) +{ + std::string asset_id_string; + asset_id.toString(asset_id_string); + std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_CACHE,asset_id_string) + ".wbl"; + return filename; +} diff --git a/indra/newview/llwearable.h b/indra/newview/llwearable.h index 8fa609c57bf16a1879e49b16d88e468438886d8e..7ebdd788ce1f5cc5b5c963ff50d7b557dd6ec07d 100644 --- a/indra/newview/llwearable.h +++ b/indra/newview/llwearable.h @@ -19,7 +19,7 @@ * in the file doc/FLOSS-exception.txt in this software distribution, or * online at * http://secondlifegrid.net/programs/open_source/licensing/flossexception - * + * * By copying, modifying or distributing this software, you acknowledge * that you have read and understood your obligations described above, * and agree to abide by those obligations. @@ -38,93 +38,69 @@ #include "llpermissions.h" #include "llsaleinfo.h" #include "llassetstorage.h" +#include "llwearabledictionary.h" class LLViewerInventoryItem; -enum EWearableType // If you change this, update LLWearable::getTypeName(), getTypeLabel(), and LLVOAvatar::getTEWearableType() -{ - WT_SHAPE = 0, - WT_SKIN = 1, - WT_HAIR = 2, - WT_EYES = 3, - WT_SHIRT = 4, - WT_PANTS = 5, - WT_SHOES = 6, - WT_SOCKS = 7, - WT_JACKET = 8, - WT_GLOVES = 9, - WT_UNDERSHIRT = 10, - WT_UNDERPANTS = 11, - WT_SKIRT = 12, - WT_COUNT = 13, - WT_INVALID = 255 -}; - class LLWearable { friend class LLWearableList; + + //-------------------------------------------------------------------- + // Constructors and destructors + //-------------------------------------------------------------------- +private: + // Private constructors used by LLWearableList + LLWearable(const LLTransactionID& transactionID); + LLWearable(const LLAssetID& assetID); public: - ~LLWearable(); + virtual ~LLWearable(); + //-------------------------------------------------------------------- + // Accessors + //-------------------------------------------------------------------- +public: const LLAssetID& getID() const { return mAssetID; } const LLTransactionID& getTransactionID() const { return mTransactionID; } + EWearableType getType() const { return mType; } + void setType(EWearableType type) { mType = type; } + const std::string& getName() const { return mName; } + void setName(const std::string& name) { mName = name; } + const std::string& getDescription() const { return mDescription; } + void setDescription(const std::string& desc) { mDescription = desc; } + const LLPermissions& getPermissions() const { return mPermissions; } + void setPermissions(const LLPermissions& p) { mPermissions = p; } + const LLSaleInfo& getSaleInfo() const { return mSaleInfo; } + void setSaleInfo(const LLSaleInfo& info) { mSaleInfo = info; } + const std::string& getTypeLabel() const; + const std::string& getTypeName() const; + LLAssetType::EType getAssetType() const; - BOOL isDirty(); - BOOL isOldVersion(); +public: + BOOL isDirty() const; + BOOL isOldVersion() const; void writeToAvatar( BOOL set_by_user ); void readFromAvatar(); void removeFromAvatar( BOOL set_by_user ) { LLWearable::removeFromAvatar( mType, set_by_user ); } static void removeFromAvatar( EWearableType type, BOOL set_by_user ); - BOOL exportFile(LLFILE* file); + BOOL exportFile(LLFILE* file) const; BOOL importFile(LLFILE* file); - - static void initClass (); - EWearableType getType() const { return mType; } - void setType( EWearableType type ) { mType = type; } - - void setName( const std::string& name ) { mName = name; } - const std::string& getName() const { return mName; } - - void setDescription( const std::string& desc ) { mDescription = desc; } - const std::string& getDescription() const { return mDescription; } - - void setPermissions( const LLPermissions& p ) { mPermissions = p; } - const LLPermissions& getPermissions() const { return mPermissions; } - - void setSaleInfo( const LLSaleInfo& info ) { mSaleInfo = info; } - const LLSaleInfo& getSaleInfo() const { return mSaleInfo; } - - const std::string& getTypeLabel() const { return LLWearable::sTypeLabel[ mType ]; } - const std::string& getTypeName() const { return LLWearable::sTypeName[ mType ]; } - + void setParamsToDefaults(); void setTexturesToDefaults(); - LLAssetType::EType getAssetType() const { return LLWearable::typeToAssetType( mType ); } - - static EWearableType typeNameToType( const std::string& type_name ); - static const std::string& typeToTypeName( EWearableType type ) { return LLWearable::sTypeName[llmin(type,WT_COUNT)]; } - static const std::string& typeToTypeLabel( EWearableType type ) { return LLWearable::sTypeLabel[llmin(type,WT_COUNT)]; } - static LLAssetType::EType typeToAssetType( EWearableType wearable_type ); - - void saveNewAsset(); + void saveNewAsset() const; static void onSaveNewAssetComplete( const LLUUID& asset_uuid, void* user_data, S32 status, LLExtStat ext_status ); - BOOL isMatchedToInventoryItem( LLViewerInventoryItem* item ); - - void copyDataFrom( LLWearable* src ); + void copyDataFrom(const LLWearable* src); static void setCurrentDefinitionVersion( S32 version ) { LLWearable::sCurrentDefinitionVersion = version; } friend std::ostream& operator<<(std::ostream &s, const LLWearable &w); private: - // Private constructor used by LLWearableList - LLWearable(const LLTransactionID& transactionID); - LLWearable(const LLAssetID& assetID); - static S32 sCurrentDefinitionVersion; // Depends on the current state of the avatar_lad.xml. S32 mDefinitionVersion; // Depends on the state of the avatar_lad.xml when this asset was created. std::string mName; @@ -139,9 +115,6 @@ class LLWearable param_map_t mVisualParamMap; // maps visual param id to weight typedef std::map<S32, LLUUID> te_map_t; te_map_t mTEMap; // maps TE to Image ID - - static const std::string sTypeName[ WT_COUNT+1 ]; - static std::string sTypeLabel[ WT_COUNT+1 ]; }; #endif // LL_LLWEARABLE_H diff --git a/indra/newview/llwearablelist.cpp b/indra/newview/llwearablelist.cpp index 480c8e42bf94ad3aaa58db8f2ebe2e76df378197..92de94636bf659b957c5cc1e43f4477c0f589fb9 100644 --- a/indra/newview/llwearablelist.cpp +++ b/indra/newview/llwearablelist.cpp @@ -39,22 +39,18 @@ #include "llagent.h" #include "llvoavatar.h" #include "llviewerinventory.h" -//#include "llfloaterchat.h" #include "llviewerstats.h" #include "llnotify.h" +#include "llinventorymodel.h" #include "lltrans.h" -// Globals -LLWearableList gWearableList; // Globally constructed; be careful that there's no dependency with gAgent. - +// Callback struct struct LLWearableArrivedData { - LLWearableArrivedData( - LLAssetType::EType asset_type, + LLWearableArrivedData(LLAssetType::EType asset_type, const std::string& wearable_name, void(*asset_arrived_callback)(LLWearable*, void* userdata), - void* userdata ) - : + void* userdata) : mAssetType( asset_type ), mCallback( asset_arrived_callback ), mUserdata( userdata ), @@ -69,8 +65,6 @@ struct LLWearableArrivedData S32 mRetries; }; - - //////////////////////////////////////////////////////////////////////////// // LLWearableList @@ -80,8 +74,18 @@ LLWearableList::~LLWearableList() mList.clear(); } -void LLWearableList::getAsset( const LLAssetID& assetID, const std::string& wearable_name, LLAssetType::EType asset_type, void(*asset_arrived_callback)(LLWearable*, void* userdata), void* userdata ) +void LLWearableList::getAsset(const LLAssetID& _assetID, const std::string& wearable_name, LLAssetType::EType asset_type, void(*asset_arrived_callback)(LLWearable*, void* userdata), void* userdata) { + LLAssetID assetID = _assetID; + if (asset_type == LLAssetType::AT_LINK) + { + LLInventoryItem *linked_item = gInventory.getItem(_assetID); + if (linked_item) + { + assetID = linked_item->getAssetUUID(); + asset_type = linked_item->getType(); + } + } llassert( (asset_type == LLAssetType::AT_CLOTHING) || (asset_type == LLAssetType::AT_BODYPART) ); LLWearable* instance = get_if_there(mList, assetID, (LLWearable*)NULL ); if( instance ) @@ -90,8 +94,7 @@ void LLWearableList::getAsset( const LLAssetID& assetID, const std::string& wear } else { - gAssetStorage->getAssetData( - assetID, + gAssetStorage->getAssetData(assetID, asset_type, LLWearableList::processGetAssetReply, (void*)new LLWearableArrivedData( asset_type, wearable_name, asset_arrived_callback, userdata ), @@ -110,8 +113,7 @@ void LLWearableList::processGetAssetReply( const char* filename, const LLAssetID { LL_WARNS("Wearable") << "Bad Wearable Asset: missing file." << LL_ENDL; } - else - if( status >= 0 ) + else if (status >= 0) { // read the file LLFILE* fp = LLFile::fopen(std::string(filename), "rb"); /*Flawfinder: ignore*/ @@ -180,7 +182,7 @@ void LLWearableList::processGetAssetReply( const char* filename, const LLAssetID if (wearable) // success { - gWearableList.mList[ uuid ] = wearable; + LLWearableList::instance().mList[ uuid ] = wearable; LL_DEBUGS("Wearable") << "processGetAssetReply()" << LL_ENDL; LL_DEBUGS("Wearable") << wearable << LL_ENDL; } @@ -213,42 +215,13 @@ void LLWearableList::processGetAssetReply( const char* filename, const LLAssetID } -// Creates a new wearable just like the old_wearable but with data copied over from item -LLWearable* LLWearableList::createWearableMatchedToInventoryItem( LLWearable* old_wearable, LLViewerInventoryItem* item ) -{ - lldebugs << "LLWearableList::createWearableMatchedToInventoryItem()" << llendl; - - LLTransactionID tid; - LLAssetID new_asset_id; - new_asset_id = tid.makeAssetID(gAgent.getSecureSessionID()); - - LLWearable* wearable = new LLWearable( tid ); - wearable->copyDataFrom( old_wearable ); - - wearable->setName( item->getName() ); - wearable->setDescription( item->getDescription() ); - wearable->setPermissions( item->getPermissions() ); - wearable->setSaleInfo( item->getSaleInfo() ); - - mList[ new_asset_id ] = wearable; - - // Send to the dataserver - wearable->saveNewAsset(); - - return wearable; -} - -LLWearable* LLWearableList::createCopyFromAvatar( LLWearable* old_wearable, const std::string& new_name ) +LLWearable* LLWearableList::createCopyFromAvatar(const LLWearable* old_wearable, const std::string& new_name) { lldebugs << "LLWearableList::createCopyFromAvatar()" << llendl; - LLTransactionID tid; - LLAssetID new_asset_id; - tid.generate(); - new_asset_id = tid.makeAssetID(gAgent.getSecureSessionID()); - - LLWearable* wearable = new LLWearable( tid ); + LLWearable *wearable = generateNewWearable(); wearable->copyDataFrom( old_wearable ); + LLPermissions perm(old_wearable->getPermissions()); perm.setOwnerAndGroup(LLUUID::null, gAgent.getID(), LLUUID::null, true); wearable->setPermissions(perm); @@ -256,8 +229,6 @@ LLWearable* LLWearableList::createCopyFromAvatar( LLWearable* old_wearable, cons if (!new_name.empty()) wearable->setName(new_name); - mList[ new_asset_id ] = wearable; - // Send to the dataserver wearable->saveNewAsset(); @@ -265,21 +236,16 @@ LLWearable* LLWearableList::createCopyFromAvatar( LLWearable* old_wearable, cons } -LLWearable* LLWearableList::createCopy( LLWearable* old_wearable ) +LLWearable* LLWearableList::createCopy(const LLWearable* old_wearable) { lldebugs << "LLWearableList::createCopy()" << llendl; - LLTransactionID tid; - LLAssetID new_asset_id; - tid.generate(); - new_asset_id = tid.makeAssetID(gAgent.getSecureSessionID()); + LLWearable *wearable = generateNewWearable(); + wearable->copyDataFrom(old_wearable); - LLWearable* wearable = new LLWearable( tid ); - wearable->copyDataFrom( old_wearable ); LLPermissions perm(old_wearable->getPermissions()); perm.setOwnerAndGroup(LLUUID::null, gAgent.getID(), LLUUID::null, true); wearable->setPermissions(perm); - mList[ new_asset_id ] = wearable; // Send to the dataserver wearable->saveNewAsset(); @@ -291,12 +257,7 @@ LLWearable* LLWearableList::createNewWearable( EWearableType type ) { lldebugs << "LLWearableList::createNewWearable()" << llendl; - LLTransactionID tid; - LLAssetID new_asset_id; - tid.generate(); - new_asset_id = tid.makeAssetID(gAgent.getSecureSessionID()); - - LLWearable* wearable = new LLWearable( tid ); + LLWearable *wearable = generateNewWearable(); wearable->setType( type ); std::string name = "New "; @@ -313,10 +274,19 @@ LLWearable* LLWearableList::createNewWearable( EWearableType type ) wearable->setParamsToDefaults(); wearable->setTexturesToDefaults(); - mList[ new_asset_id ] = wearable; - // Send to the dataserver wearable->saveNewAsset(); return wearable; } + +LLWearable *LLWearableList::generateNewWearable() +{ + LLTransactionID tid; + tid.generate(); + LLAssetID new_asset_id = tid.makeAssetID(gAgent.getSecureSessionID()); + + LLWearable* wearable = new LLWearable(tid); + mList[new_asset_id] = wearable; + return wearable; +} diff --git a/indra/newview/llwearablelist.h b/indra/newview/llwearablelist.h index cda0cb11f9e2799641a197577d9f6b9b1af067b6..f844c0f44390a2448fed7e06e424d3d789787674 100644 --- a/indra/newview/llwearablelist.h +++ b/indra/newview/llwearablelist.h @@ -33,37 +33,37 @@ #ifndef LL_LLWEARABLELIST_H #define LL_LLWEARABLELIST_H +#include "llmemory.h" #include "llwearable.h" #include "lluuid.h" #include "llassetstorage.h" -class LLWearableList +// Globally constructed; be careful that there's no dependency with gAgent. +class LLWearableList : public LLSingleton<LLWearableList> { public: LLWearableList() {} ~LLWearableList(); - S32 getLength() { return mList.size(); } + S32 getLength() const { return mList.size(); } - void getAsset( - const LLAssetID& assetID, - const std::string& wearable_name, - LLAssetType::EType asset_type, - void(*asset_arrived_callback)(LLWearable*, void* userdata), - void* userdata ); + void getAsset(const LLAssetID& assetID, + const std::string& wearable_name, + LLAssetType::EType asset_type, + void(*asset_arrived_callback)(LLWearable*, void* userdata), + void* userdata); - LLWearable* createWearableMatchedToInventoryItem( LLWearable* old_wearable, LLViewerInventoryItem* item ); - LLWearable* createCopyFromAvatar( LLWearable* old_wearable, const std::string& new_name = std::string() ); - LLWearable* createCopy( LLWearable* old_wearable ); - LLWearable* createNewWearable( EWearableType type ); + LLWearable* createCopyFromAvatar(const LLWearable* old_wearable, const std::string& new_name = std::string()); + LLWearable* createCopy(const LLWearable* old_wearable); + LLWearable* createNewWearable(EWearableType type); // Callback static void processGetAssetReply(const char* filename, const LLAssetID& assetID, void* user_data, S32 status, LLExtStat ext_status); protected: - std::map< LLUUID, LLWearable* > mList; + LLWearable* generateNewWearable(); // used for the create... functions +private: + std::map<LLUUID, LLWearable*> mList; }; -extern LLWearableList gWearableList; - #endif // LL_LLWEARABLELIST_H diff --git a/indra/newview/llworld.cpp b/indra/newview/llworld.cpp index 3fdef295400d510a1c7f2cae9f9ffc3000ac0e40..692efd2b7a5732c9bbdb7951bd1d7ef77a46ab61 100644 --- a/indra/newview/llworld.cpp +++ b/indra/newview/llworld.cpp @@ -632,6 +632,7 @@ void LLWorld::updateVisibilities() void LLWorld::updateRegions(F32 max_update_time) { + LLMemType mt_ur(LLMemType::MTYPE_IDLE_UPDATE_REGIONS); LLTimer update_timer; BOOL did_one = FALSE; diff --git a/indra/newview/llworldmap.cpp b/indra/newview/llworldmap.cpp index 915ff043447e707889069b1a0a74fe424d279fee..827f12d19e42ba7916fcad85415e363b0c2d075b 100644 --- a/indra/newview/llworldmap.cpp +++ b/indra/newview/llworldmap.cpp @@ -758,7 +758,9 @@ void LLWorldMap::processMapItemReply(LLMessageSystem* msg, void**) case MAP_ITEM_MATURE_EVENT: case MAP_ITEM_ADULT_EVENT: { - std::string timeStr = LLTrans::getString ("WorldMapTimeStr"); + std::string timeStr = "["+ LLTrans::getString ("TimeHour")+"]:[" + +LLTrans::getString ("TimeMin")+"] [" + +LLTrans::getString ("TimeAMPM")+"]"; LLSD substitution; substitution["datetime"] = (S32) extra; LLStringUtil::format (timeStr, substitution); diff --git a/indra/newview/llworldmapview.cpp b/indra/newview/llworldmapview.cpp index d80cd317c35aa4089ac2ff12cf8802303fb46dfa..9ac758433c57982fe453db8b9c3143a370ab7e7f 100644 --- a/indra/newview/llworldmapview.cpp +++ b/indra/newview/llworldmapview.cpp @@ -177,8 +177,10 @@ LLWorldMapView::LLWorldMapView() { sPixelsPerMeter = gMapScale / REGION_WIDTH_METERS; clearLastClick(); +} - LLUICtrlFactory::getInstance()->buildPanel(this, "panel_worldmap.xml"); +BOOL LLWorldMapView::postBuild() +{ mTextBoxNorth = getChild<LLTextBox> ("floater_map_north"); mTextBoxEast = getChild<LLTextBox> ("floater_map_east"); mTextBoxWest = getChild<LLTextBox> ("floater_map_west"); @@ -205,6 +207,8 @@ LLWorldMapView::LLWorldMapView() mTextBoxNorthEast ->reshapeToFitText(); mTextBoxSouthWest->reshapeToFitText(); mTextBoxNorthWest ->reshapeToFitText(); + + return true; } @@ -294,8 +298,8 @@ void LLWorldMapView::draw() const S32 width = getRect().getWidth(); const S32 height = getRect().getHeight(); - const S32 half_width = width / 2; - const S32 half_height = height / 2; + const F32 half_width = F32(width) / 2.0f; + const F32 half_height = F32(height) / 2.0f; LLVector3d camera_global = gAgent.getCameraPositionGlobal(); LLLocalClipRect clip(getLocalRect()); @@ -339,8 +343,8 @@ void LLWorldMapView::draw() // Find x and y position relative to camera's center. LLVector3d rel_region_pos = origin_global - camera_global; - S32 relative_x = lltrunc((rel_region_pos.mdV[0] / REGION_WIDTH_METERS) * gMapScale); - S32 relative_y = lltrunc((rel_region_pos.mdV[1] / REGION_WIDTH_METERS) * gMapScale); + F32 relative_x = (rel_region_pos.mdV[0] / REGION_WIDTH_METERS) * gMapScale; + F32 relative_y = (rel_region_pos.mdV[1] / REGION_WIDTH_METERS) * gMapScale; F32 pix_width = gMapScale*(layer->LayerExtents.getWidth() + 1); F32 pix_height = gMapScale*(layer->LayerExtents.getHeight() + 1); @@ -445,8 +449,8 @@ void LLWorldMapView::draw() // Find x and y position relative to camera's center. LLVector3d rel_region_pos = origin_global - camera_global; - S32 relative_x = lltrunc((rel_region_pos.mdV[0] / REGION_WIDTH_METERS) * gMapScale); - S32 relative_y = lltrunc((rel_region_pos.mdV[1] / REGION_WIDTH_METERS) * gMapScale); + F32 relative_x = (rel_region_pos.mdV[0] / REGION_WIDTH_METERS) * gMapScale; + F32 relative_y = (rel_region_pos.mdV[1] / REGION_WIDTH_METERS) * gMapScale; // When the view isn't panned, 0,0 = center of rectangle F32 bottom = sPanY + half_height + relative_y; diff --git a/indra/newview/llworldmapview.h b/indra/newview/llworldmapview.h index 5b36e308dd5daa85ac870065ace3bc971c3f7cb0..dd64da1371f65833eb426674bb0dd47ef5858add 100644 --- a/indra/newview/llworldmapview.h +++ b/indra/newview/llworldmapview.h @@ -62,7 +62,9 @@ class LLWorldMapView : public LLPanel LLWorldMapView(); virtual ~LLWorldMapView(); - + + virtual BOOL postBuild(); + virtual void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE ); virtual void setVisible(BOOL visible); diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 49083c59275b0e6a283257d0c2710dd9c2fa6723..25ed853146fe9d024e2a8047d3306d6746ce2093 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -82,7 +82,7 @@ #include "llviewerparcelmgr.h" #include "llviewerregion.h" // for audio debugging. #include "llviewerwindow.h" // For getSpinAxis -#include "llvoavatar.h" +#include "llvoavatarself.h" #include "llvoground.h" #include "llvosky.h" #include "llvotree.h" @@ -316,7 +316,7 @@ LLPipeline::LLPipeline() : void LLPipeline::init() { - LLMemType mt(LLMemType::MTYPE_PIPELINE); + LLMemType mt(LLMemType::MTYPE_PIPELINE_INIT); sDynamicLOD = gSavedSettings.getBOOL("RenderDynamicLOD"); sRenderBump = gSavedSettings.getBOOL("RenderObjectBump"); @@ -465,8 +465,8 @@ void LLPipeline::resizeScreenTexture() { if (gPipeline.canUseVertexShaders() && assertInitialized()) { - GLuint resX = gViewerWindow->getWindowDisplayWidth(); - GLuint resY = gViewerWindow->getWindowDisplayHeight(); + GLuint resX = gViewerWindow->getWorldViewWidth(); + GLuint resY = gViewerWindow->getWorldViewHeight(); U32 res_mod = gSavedSettings.getU32("RenderResolutionDivisor"); if (res_mod > 1 && res_mod < resX && res_mod < resY) @@ -576,6 +576,7 @@ void LLPipeline::releaseGLBuffers() void LLPipeline::createGLBuffers() { + LLMemType mt_cb(LLMemType::MTYPE_PIPELINE_CREATE_BUFFERS); assertInitialized(); updateRenderDeferred(); @@ -591,6 +592,9 @@ void LLPipeline::createGLBuffers() stop_glerror(); + GLuint resX = gViewerWindow->getWorldViewWidth(); + GLuint resY = gViewerWindow->getWorldViewHeight(); + if (LLPipeline::sRenderGlow) { //screen space glow buffers const U32 glow_res = llmax(1, @@ -600,13 +604,10 @@ void LLPipeline::createGLBuffers() { mGlow[i].allocate(512,glow_res,GL_RGBA,FALSE,FALSE); } - } - GLuint resX = gViewerWindow->getWindowDisplayWidth(); - GLuint resY = gViewerWindow->getWindowDisplayHeight(); + allocateScreenBuffer(resX,resY); + } - allocateScreenBuffer(resX,resY); - if (sRenderDeferred) { mSunShadow[0].allocate(1024,1024, 0, TRUE, FALSE); @@ -638,6 +639,7 @@ void LLPipeline::createGLBuffers() void LLPipeline::restoreGL() { + LLMemType mt_cb(LLMemType::MTYPE_PIPELINE_RESTORE_GL); assertInitialized(); if (mVertexShadersEnabled) @@ -692,6 +694,7 @@ BOOL LLPipeline::canUseWindLightShadersOnObjects() const void LLPipeline::unloadShaders() { + LLMemType mt_us(LLMemType::MTYPE_PIPELINE_UNLOAD_SHADERS); LLViewerShaderMgr::instance()->unloadShaders(); mVertexShadersLoaded = 0; @@ -723,6 +726,7 @@ S32 LLPipeline::getMaxLightingDetail() const S32 LLPipeline::setLightingDetail(S32 level) { + LLMemType mt_ld(LLMemType::MTYPE_PIPELINE_LIGHTING_DETAIL); assertInitialized(); if (level < 0) @@ -910,7 +914,7 @@ LLDrawPool* LLPipeline::getPoolFromTE(const LLTextureEntry* te, LLViewerImage* i //static U32 LLPipeline::getPoolTypeFromTE(const LLTextureEntry* te, LLViewerImage* imagep) { - LLMemType mt(LLMemType::MTYPE_PIPELINE); + LLMemType mt_gpt(LLMemType::MTYPE_PIPELINE_GET_POOL_TYPE); if (!te || !imagep) { @@ -940,7 +944,7 @@ U32 LLPipeline::getPoolTypeFromTE(const LLTextureEntry* te, LLViewerImage* image void LLPipeline::addPool(LLDrawPool *new_poolp) { - LLMemType mt(LLMemType::MTYPE_PIPELINE); + LLMemType mt_a(LLMemType::MTYPE_PIPELINE_ADD_POOL); assertInitialized(); mPools.insert(new_poolp); addToQuickLookup( new_poolp ); @@ -948,7 +952,7 @@ void LLPipeline::addPool(LLDrawPool *new_poolp) void LLPipeline::allocDrawable(LLViewerObject *vobj) { - LLMemType mt(LLMemType::MTYPE_DRAWABLE); + LLMemType mt_ad(LLMemType::MTYPE_PIPELINE_ALLOCATE_DRAWABLE); LLDrawable *drawable = new LLDrawable(); vobj->mDrawable = drawable; @@ -1009,6 +1013,7 @@ void LLPipeline::unlinkDrawable(LLDrawable *drawable) U32 LLPipeline::addObject(LLViewerObject *vobj) { + LLMemType mt_ao(LLMemType::MTYPE_PIPELINE_ADD_OBJECT); if (gNoRender) { return 0; @@ -1029,7 +1034,7 @@ U32 LLPipeline::addObject(LLViewerObject *vobj) void LLPipeline::createObjects(F32 max_dtime) { LLFastTimer ftm(LLFastTimer::FTM_GEO_UPDATE); - LLMemType mt(LLMemType::MTYPE_DRAWABLE); + LLMemType mt(LLMemType::MTYPE_PIPELINE_CREATE_OBJECTS); LLTimer update_timer; @@ -1197,7 +1202,7 @@ void LLPipeline::updateMovedList(LLDrawable::drawable_vector_t& moved_list) void LLPipeline::updateMove() { LLFastTimer t(LLFastTimer::FTM_UPDATE_MOVE); - LLMemType mt(LLMemType::MTYPE_PIPELINE); + LLMemType mt_um(LLMemType::MTYPE_PIPELINE_UPDATE_MOVE); if (gSavedSettings.getBOOL("FreezeTime")) { @@ -1351,7 +1356,7 @@ BOOL LLPipeline::getVisibleExtents(LLCamera& camera, LLVector3& min, LLVector3& void LLPipeline::updateCull(LLCamera& camera, LLCullResult& result, S32 water_clip) { LLFastTimer t(LLFastTimer::FTM_CULL); - LLMemType mt(LLMemType::MTYPE_PIPELINE); + LLMemType mt_uc(LLMemType::MTYPE_PIPELINE_UPDATE_CULL); grabReferences(result); @@ -1562,7 +1567,7 @@ BOOL LLPipeline::updateDrawableGeom(LLDrawable* drawablep, BOOL priority) void LLPipeline::updateGeom(F32 max_dtime) { LLTimer update_timer; - LLMemType mt(LLMemType::MTYPE_PIPELINE); + LLMemType mt(LLMemType::MTYPE_PIPELINE_UPDATE_GEOM); LLPointer<LLDrawable> drawablep; LLFastTimer t(LLFastTimer::FTM_GEO_UPDATE); @@ -1665,7 +1670,7 @@ void LLPipeline::updateGeom(F32 max_dtime) void LLPipeline::markVisible(LLDrawable *drawablep, LLCamera& camera) { - LLMemType mt(LLMemType::MTYPE_PIPELINE); + LLMemType mt(LLMemType::MTYPE_PIPELINE_MARK_VISIBLE); if(!drawablep || drawablep->isDead()) { return; @@ -1685,7 +1690,7 @@ void LLPipeline::markVisible(LLDrawable *drawablep, LLCamera& camera) void LLPipeline::markMoved(LLDrawable *drawablep, BOOL damped_motion) { - LLMemType mt(LLMemType::MTYPE_PIPELINE); + LLMemType mt_mm(LLMemType::MTYPE_PIPELINE_MARK_MOVED); if (!drawablep) { @@ -1731,7 +1736,7 @@ void LLPipeline::markMoved(LLDrawable *drawablep, BOOL damped_motion) void LLPipeline::markShift(LLDrawable *drawablep) { - LLMemType mt(LLMemType::MTYPE_PIPELINE); + LLMemType mt(LLMemType::MTYPE_PIPELINE_MARK_SHIFT); if (!drawablep || drawablep->isDead()) { @@ -1754,7 +1759,7 @@ void LLPipeline::markShift(LLDrawable *drawablep) void LLPipeline::shiftObjects(const LLVector3 &offset) { - LLMemType mt(LLMemType::MTYPE_PIPELINE); + LLMemType mt(LLMemType::MTYPE_PIPELINE_SHIFT_OBJECTS); assertInitialized(); @@ -1794,7 +1799,7 @@ void LLPipeline::shiftObjects(const LLVector3 &offset) void LLPipeline::markTextured(LLDrawable *drawablep) { - LLMemType mt(LLMemType::MTYPE_PIPELINE); + LLMemType mt(LLMemType::MTYPE_PIPELINE_MARK_TEXTURED); if (drawablep && !drawablep->isDead() && assertInitialized()) { @@ -1804,7 +1809,7 @@ void LLPipeline::markTextured(LLDrawable *drawablep) void LLPipeline::markRebuild(LLDrawable *drawablep, LLDrawable::EDrawableFlags flag, BOOL priority) { - LLMemType mt(LLMemType::MTYPE_PIPELINE); + LLMemType mt(LLMemType::MTYPE_PIPELINE_MARK_REBUILD); if (drawablep && !drawablep->isDead() && assertInitialized()) { @@ -1850,7 +1855,7 @@ void LLPipeline::stateSort(LLCamera& camera, LLCullResult &result) } LLFastTimer ftm(LLFastTimer::FTM_STATESORT); - LLMemType mt(LLMemType::MTYPE_PIPELINE); + LLMemType mt(LLMemType::MTYPE_PIPELINE_STATE_SORT); //LLVertexBuffer::unbind(); @@ -1927,7 +1932,7 @@ void LLPipeline::stateSort(LLCamera& camera, LLCullResult &result) void LLPipeline::stateSort(LLSpatialGroup* group, LLCamera& camera) { - LLMemType mt(LLMemType::MTYPE_PIPELINE); + LLMemType mt(LLMemType::MTYPE_PIPELINE_STATE_SORT); if (!sSkipUpdate && group->changeLOD()) { for (LLSpatialGroup::element_iter i = group->getData().begin(); i != group->getData().end(); ++i) @@ -1941,16 +1946,17 @@ void LLPipeline::stateSort(LLSpatialGroup* group, LLCamera& camera) void LLPipeline::stateSort(LLSpatialBridge* bridge, LLCamera& camera) { - LLMemType mt(LLMemType::MTYPE_PIPELINE); + LLMemType mt(LLMemType::MTYPE_PIPELINE_STATE_SORT); if (!sSkipUpdate && bridge->getSpatialGroup()->changeLOD()) { - bridge->updateDistance(camera); + bool force_update = false; + bridge->updateDistance(camera, force_update); } } void LLPipeline::stateSort(LLDrawable* drawablep, LLCamera& camera) { - LLMemType mt(LLMemType::MTYPE_PIPELINE); + LLMemType mt(LLMemType::MTYPE_PIPELINE_STATE_SORT); if (!drawablep || drawablep->isDead() @@ -2005,11 +2011,13 @@ void LLPipeline::stateSort(LLDrawable* drawablep, LLCamera& camera) { if (!drawablep->isActive()) { - drawablep->updateDistance(camera); + bool force_update = false; + drawablep->updateDistance(camera, force_update); } else if (drawablep->isAvatar()) { - drawablep->updateDistance(camera); // calls vobj->updateLOD() which calls LLVOAvatar::updateVisibility() + bool force_update = false; + drawablep->updateDistance(camera, force_update); // calls vobj->updateLOD() which calls LLVOAvatar::updateVisibility() } } } @@ -2177,7 +2185,7 @@ void renderSoundHighlights(LLDrawable* drawablep) void LLPipeline::postSort(LLCamera& camera) { - LLMemType mt(LLMemType::MTYPE_PIPELINE); + LLMemType mt(LLMemType::MTYPE_PIPELINE_POST_SORT); LLFastTimer ftm(LLFastTimer::FTM_STATESORT_POSTSORT); assertInitialized(); @@ -2371,6 +2379,7 @@ void LLPipeline::postSort(LLCamera& camera) void render_hud_elements() { + LLMemType mt_rhe(LLMemType::MTYPE_PIPELINE_RENDER_HUD_ELS); LLFastTimer t(LLFastTimer::FTM_RENDER_UI); gPipeline.disableLights(); @@ -2415,7 +2424,7 @@ void render_hud_elements() void LLPipeline::renderHighlights() { - LLMemType mt(LLMemType::MTYPE_PIPELINE); + LLMemType mt(LLMemType::MTYPE_PIPELINE_RENDER_HL); assertInitialized(); @@ -2483,7 +2492,7 @@ void LLPipeline::renderHighlights() void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate) { - LLMemType mt(LLMemType::MTYPE_PIPELINE); + LLMemType mt(LLMemType::MTYPE_PIPELINE_RENDER_GEOM); LLFastTimer t(LLFastTimer::FTM_RENDER_GEOMETRY); assertInitialized(); @@ -2567,9 +2576,6 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate) stop_glerror(); LLAppViewer::instance()->pingMainloopTimeout("Pipeline:RenderDrawPools"); - - LLAppViewer::instance()->pingMainloopTimeout("Pipeline:RenderForSelect"); - LLAppViewer::instance()->pingMainloopTimeout("Pipeline:RenderDeferred"); for (pool_set_t::iterator iter = mPools.begin(); iter != mPools.end(); ++iter) { LLDrawPool *poolp = *iter; @@ -2581,6 +2587,7 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate) if (gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_PICKING)) { + LLAppViewer::instance()->pingMainloopTimeout("Pipeline:RenderForSelect"); gObjectList.renderObjectsForSelect(camera, gViewerWindow->getVirtualWindowRect()); } else @@ -2644,6 +2651,10 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate) glGetIntegerv(GL_MODELVIEW_STACK_DEPTH, &depth); if (depth > 3) { + if (gDebugSession) + { + ll_fail("GL matrix stack corrupted."); + } llerrs << "GL matrix stack corrupted!" << llendl; } std::string msg = llformat("%s pass %d", gPoolNames[cur_type].c_str(), i); @@ -2744,6 +2755,9 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate) void LLPipeline::renderGeomDeferred(LLCamera& camera) { + LLAppViewer::instance()->pingMainloopTimeout("Pipeline:RenderGeomDeferred"); + + LLMemType mt_rgd(LLMemType::MTYPE_PIPELINE_RENDER_GEOM_DEFFERRED); LLFastTimer t(LLFastTimer::FTM_RENDER_GEOMETRY); LLFastTimer t2(LLFastTimer::FTM_POOLS); @@ -2845,6 +2859,7 @@ void LLPipeline::renderGeomDeferred(LLCamera& camera) void LLPipeline::renderGeomPostDeferred(LLCamera& camera) { + LLMemType mt_rgpd(LLMemType::MTYPE_PIPELINE_RENDER_GEOM_POST_DEF); LLFastTimer t(LLFastTimer::FTM_POOLS); U32 cur_type = 0; @@ -2956,6 +2971,7 @@ void LLPipeline::renderGeomPostDeferred(LLCamera& camera) void LLPipeline::renderGeomShadow(LLCamera& camera) { + LLMemType mt_rgs(LLMemType::MTYPE_PIPELINE_RENDER_GEOM_SHADOW); U32 cur_type = 0; LLGLEnable cull(GL_CULL_FACE); @@ -3217,7 +3233,7 @@ void LLPipeline::renderForSelect(std::set<LLViewerObject*>& objects, BOOL render stateSort((*iter)->mDrawable, *LLViewerCamera::getInstance()); } - LLMemType mt(LLMemType::MTYPE_PIPELINE); + LLMemType mt(LLMemType::MTYPE_PIPELINE_RENDER_SELECT); @@ -3382,7 +3398,7 @@ void LLPipeline::renderForSelect(std::set<LLViewerObject*>& objects, BOOL render void LLPipeline::rebuildPools() { - LLMemType mt(LLMemType::MTYPE_PIPELINE); + LLMemType mt(LLMemType::MTYPE_PIPELINE_REBUILD_POOLS); assertInitialized(); @@ -3422,7 +3438,7 @@ void LLPipeline::rebuildPools() void LLPipeline::addToQuickLookup( LLDrawPool* new_poolp ) { - LLMemType mt(LLMemType::MTYPE_PIPELINE); + LLMemType mt(LLMemType::MTYPE_PIPELINE_QUICK_LOOKUP); assertInitialized(); @@ -4093,18 +4109,21 @@ void LLPipeline::setupHWLights(LLDrawPool* pool) void LLPipeline::enableLights(U32 mask) { assertInitialized(); + if (mLightingDetail == 0) { mask &= 0xf003; // sun and backlight only (and fullbright bit) } if (mLightMask != mask) { + stop_glerror(); if (!mLightMask) { glEnable(GL_LIGHTING); } if (mask) { + stop_glerror(); for (S32 i=0; i<8; i++) { if (mask & (1<<i)) @@ -4118,14 +4137,17 @@ void LLPipeline::enableLights(U32 mask) glLightfv(GL_LIGHT0 + i, GL_DIFFUSE, LLColor4::black.mV); } } + stop_glerror(); } else { glDisable(GL_LIGHTING); } + stop_glerror(); mLightMask = mask; LLColor4 ambient = gSky.getTotalAmbientColor(); glLightModelfv(GL_LIGHT_MODEL_AMBIENT,ambient.mV); + stop_glerror(); } } @@ -4868,6 +4890,7 @@ void LLPipeline::resetVertexBuffers() void LLPipeline::renderObjects(U32 type, U32 mask, BOOL texture) { + LLMemType mt_ro(LLMemType::MTYPE_PIPELINE_RENDER_OBJECTS); assertInitialized(); glLoadMatrixd(gGLModelView); gGLLastMatrix = NULL; @@ -4956,6 +4979,7 @@ void LLPipeline::bindScreenToTexture() void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield) { + LLMemType mt_ru(LLMemType::MTYPE_PIPELINE_RENDER_BLOOM); if (!(gPipeline.canUseVertexShaders() && sRenderGlow)) { @@ -4976,8 +5000,8 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield) U32 res_mod = gSavedSettings.getU32("RenderResolutionDivisor"); LLVector2 tc1(0,0); - LLVector2 tc2((F32) gViewerWindow->getWindowDisplayWidth()*2, - (F32) gViewerWindow->getWindowDisplayHeight()*2); + LLVector2 tc2((F32) gViewerWindow->getWorldViewWidth()*2, + (F32) gViewerWindow->getWorldViewHeight()*2); if (res_mod > 1) { @@ -5179,7 +5203,11 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield) glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); } - gViewerWindow->setupViewport(); + gGLViewport[0] = gViewerWindow->getWorldViewRect().mLeft; + gGLViewport[1] = gViewerWindow->getWorldViewRect().mBottom; + gGLViewport[2] = gViewerWindow->getWorldViewRect().getWidth(); + gGLViewport[3] = gViewerWindow->getWorldViewRect().getHeight(); + glViewport(gGLViewport[0], gGLViewport[1], gGLViewport[2], gGLViewport[3]); gGL.flush(); @@ -5188,8 +5216,8 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield) - tc2.setVec((F32) gViewerWindow->getWindowDisplayWidth(), - (F32) gViewerWindow->getWindowDisplayHeight()); + tc2.setVec((F32) gViewerWindow->getWorldViewWidth(), + (F32) gViewerWindow->getWorldViewHeight()); if (res_mod > 1) { @@ -5782,15 +5810,15 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in) { if (LLPipeline::sWaterReflections && assertInitialized() && LLDrawPoolWater::sNeedsReflectionUpdate) { - LLVOAvatar* agent = gAgent.getAvatarObject(); + LLVOAvatarSelf* avatar = gAgent.getAvatarObject(); if (gAgent.getCameraAnimating() || gAgent.getCameraMode() != CAMERA_MODE_MOUSELOOK) { - agent = NULL; + avatar = NULL; } - if (agent) + if (avatar) { - agent->updateAttachmentVisibility(CAMERA_MODE_THIRD_PERSON); + avatar->updateAttachmentVisibility(CAMERA_MODE_THIRD_PERSON); } LLVertexBuffer::unbind(); @@ -5980,7 +6008,7 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in) } glClearColor(0.f, 0.f, 0.f, 0.f); - gViewerWindow->setupViewport(); + gViewerWindow->setup3DViewport(); mRenderTypeMask = type_mask; LLDrawPoolWater::sNeedsReflectionUpdate = FALSE; LLDrawPoolWater::sNeedsDistortionUpdate = FALSE; @@ -5991,9 +6019,9 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in) LLGLState::checkTextureChannels(); LLGLState::checkClientArrays(); - if (agent) + if (avatar) { - agent->updateAttachmentVisibility(gAgent.getCameraMode()); + avatar->updateAttachmentVisibility(gAgent.getCameraMode()); } } } @@ -6425,6 +6453,7 @@ void LLPipeline::renderGroups(LLRenderPass* pass, U32 type, U32 mask, BOOL textu void LLPipeline::generateImpostor(LLVOAvatar* avatar) { + LLMemType mt_gi(LLMemType::MTYPE_PIPELINE_GENERATE_IMPOSTOR); LLGLState::checkStates(); LLGLState::checkTextureChannels(); LLGLState::checkClientArrays(); @@ -6665,3 +6694,4 @@ LLCullResult::sg_list_t::iterator LLPipeline::endAlphaGroups() return sCull->endAlphaGroups(); } + diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h index 5e14260a6d6c053a1c171f650b7888202a77d278..c017e9b64f9fcfee289e74bc1709d0f54d4dc683 100644 --- a/indra/newview/pipeline.h +++ b/indra/newview/pipeline.h @@ -322,6 +322,7 @@ class LLPipeline RENDER_TYPE_VOLUME, RENDER_TYPE_PARTICLES, RENDER_TYPE_CLOUDS, + RENDER_TYPE_HUD_PARTICLES }; enum LLRenderDebugFeatureMask diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml index 4c76c73e77991da3dc88b59a05c166aff5b92a06..49ea0bc8aa79e5b5d1b0c90c0a7402a66df425a5 100644 --- a/indra/newview/skins/default/colors.xml +++ b/indra/newview/skins/default/colors.xml @@ -113,22 +113,6 @@ <real>1.0</real> </array> </map> - <key>BalanceTextColor</key> - <map> - <key>Comment</key> - <string>Balance Text Color</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>0</real> - <real>1</real> - <real>0</real> - <real>1</real> - </array> - </map> <key>ButtonBorderColor</key> <map> <key>Comment</key> @@ -2372,22 +2356,6 @@ <real>1</real> </array> </map> - <key>ParcelTextColor</key> - <map> - <key>Comment</key> - <string>Parcel Text Color</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Color4</string> - <key>Value</key> - <array> - <real>0.56</real> - <real>0.65</real> - <real>0.82</real> - <real>1</real> - </array> - </map> <key>PieMenuBgColor</key> <map> <key>Comment</key> diff --git a/indra/newview/skins/default/textures/show_btn.tga b/indra/newview/skins/default/textures/show_btn.tga new file mode 100644 index 0000000000000000000000000000000000000000..5f05f377e31714b3c1b80d673c32cda4f4a28824 Binary files /dev/null and b/indra/newview/skins/default/textures/show_btn.tga differ diff --git a/indra/newview/skins/default/textures/show_btn_selected.tga b/indra/newview/skins/default/textures/show_btn_selected.tga new file mode 100644 index 0000000000000000000000000000000000000000..00a2f34a37ea70acb34c6d5a7cf8b7c169f8a82d Binary files /dev/null and b/indra/newview/skins/default/textures/show_btn_selected.tga differ diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index 19f283e99db0dd20ce6d6201158dba3373a93210..84dd3ffd7a849ea01823173ed1ce431a57581424 100644 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -323,10 +323,15 @@ <texture name="cloud-particle.j2c" use_mips="true"/> <texture name="skin_thumbnail_default.png" preload="true" /> - <texture name="skin_thumbnail_silver.png" preload="true" /> <texture name="default_land_picture.j2c"/> <texture name="default_profile_picture.j2c"/> <texture name="locked_image.j2c"/> <texture name="menu_separator" file_name="menu_separator.png"/> + + <texture name="sidebar_tab_left.tga" preload="true" scale.left="16" scale.top="8" scale.right="112" scale.bottom="9"/> + <texture name="sidebar_tab_left_selected.tga" preload="true" scale.left="16" scale.top="8" scale.right="112" scale.bottom="9"/> + + <texture name="teleport_history_backward.tga" preload="true"/> + <texture name="teleport_history_forward.tga" preload="true"/> </textures> diff --git a/indra/newview/skins/default/xui/da/floater_about_land.xml b/indra/newview/skins/default/xui/da/floater_about_land.xml index 355e8a1d75557a08babb0c4b5e8d179a41ff52b9..15ebffa302ffe95140338621c9b6a6a329f5b439 100644 --- a/indra/newview/skins/default/xui/da/floater_about_land.xml +++ b/indra/newview/skins/default/xui/da/floater_about_land.xml @@ -1,80 +1,83 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floaterland" title="Om land"> <tab_container name="landtab"> <panel label="Generelt" name="land_general_panel"> - <text type="string" length="1" name="Name:"> + <text length="1" name="Name:" type="string"> Navn: </text> - <text type="string" length="1" name="Description:"> + <text length="1" name="Description:" type="string"> Beskrivelse: </text> - <text type="string" length="1" name="Owner:"> + <text name="LandType"> + Type: + </text> + <text name="LandTypeText"> + Mainland / Homestead + </text> + <text name="ContentRating"> + Rating: + </text> + <text name="ContentRatingText"> + Adult + </text> + <text length="1" name="Owner:" type="string"> Ejer: </text> - <text type="string" length="1" name="OwnerText"> + <text length="1" name="OwnerText" type="string"> Leyla Linden </text> - <button label="Profil..." label_selected="Profil..." name="Profile..." /> - <text type="string" length="1" name="Group:"> + <button label="Profil..." label_selected="Profil..." name="Profile..."/> + <text length="1" name="Group:" type="string"> Gruppe: </text> - <button label="Vælg..." label_selected="Vælg..." name="Set..." /> - <check_box label="Tillad dedikering til gruppe" name="check deed" - tool_tip="En gruppe administrator kan dedikere denne jord til gruppen, sÃ¥ det vil blive støttet af gruppen's jord tildeling." /> - <button label="Dedikér..." label_selected="Dedikér..." name="Deed..." - tool_tip="Du kan kun dedikere jord, hvis du er en administrator i den valgte gruppe." /> - <check_box label="Ejer bidrager ved dedikering" name="check contrib" - tool_tip="NÃ¥r land dedikeres til gruppe, kan den tidligere bidrage med nok land til at dække krav." /> - <text type="string" length="1" name="For Sale:"> + <button label="Vælg..." label_selected="Vælg..." name="Set..."/> + <check_box label="Tillad dedikering til gruppe" name="check deed" tool_tip="En gruppe administrator kan dedikere denne jord til gruppen, sÃ¥ det vil blive støttet af gruppen's jord tildeling."/> + <button label="Dedikér..." label_selected="Dedikér..." name="Deed..." tool_tip="Du kan kun dedikere jord, hvis du er en administrator i den valgte gruppe."/> + <check_box label="Ejer bidrager ved dedikering" name="check contrib" tool_tip="NÃ¥r land dedikeres til gruppe, kan den tidligere bidrage med nok land til at dække krav."/> + <text length="1" name="For Sale:" type="string"> Til salg: </text> - <text type="string" length="1" name="Not for sale."> + <text length="1" name="Not for sale." type="string"> Ikke til salg. </text> - <text type="string" length="1" name="For Sale: Price L$[PRICE]."> - Pris: L$[PRICE]. + <text length="1" name="For Sale: Price L$[PRICE]." type="string"> + Pris: L$[PRICE] (L$[PRICE_PER_SQM]/m²). </text> - <button label="Sælg land..." label_selected="Sælg land..." name="Sell Land..." /> - <text type="string" length="1" name="For sale to"> + <button label="Sælg land..." label_selected="Sælg land..." name="Sell Land..."/> + <text length="1" name="For sale to" type="string"> Til salg til: [BUYER] </text> - <text type="string" length="1" name="Sell with landowners objects in parcel."> + <text length="1" name="Sell with landowners objects in parcel." type="string"> Objekter er inkluderet i salg. </text> - <text type="string" length="1" name="Selling with no objects in parcel."> + <text length="1" name="Selling with no objects in parcel." type="string"> Objekter er ikke inkluderet i salg. </text> - <button label="Annullér salg af land" label_selected="Annullér salg af land" - name="Cancel Land Sale" /> - <text type="string" length="1" name="Claimed:"> + <button label="Annullér salg af land" label_selected="Annullér salg af land" name="Cancel Land Sale"/> + <text length="1" name="Claimed:" type="string"> Købt: </text> - <text type="string" length="1" name="DateClaimText"> + <text length="1" name="DateClaimText" type="string"> Tue Aug 15 13:47:25 2006 </text> - <text type="string" length="1" name="PriceLabel"> + <text length="1" name="PriceLabel" type="string"> OmrÃ¥de: </text> - <text type="string" length="1" name="PriceText"> + <text length="1" name="PriceText" type="string"> 4048 m² </text> - <text type="string" length="1" name="Traffic:"> + <text length="1" name="Traffic:" type="string"> Trafik: </text> - <text type="string" length="1" name="DwellText"> + <text length="1" name="DwellText" type="string"> 0 </text> - <button label="Køb land..." label_selected="Køb land..." name="Buy Land..." /> - <button label="Køb til gruppe..." label_selected="Køb til gruppe..." - name="Buy For Group..." /> - <button label="Køb adgang..." label_selected="Køb adgang..." name="Buy Pass..." - tool_tip="Giver adgang til midlertidig adgang til dette omrÃ¥de." /> - <button label="Efterlad land..." label_selected="Efterlad land..." - name="Abandon Land..." /> - <button label="Kræv tilbage..." label_selected="Kræv tilbage..." - name="Reclaim Land..." /> - <button label="Linden lalg..." label_selected="Linden lalg..." name="Linden salg..." - tool_tip="Land skal være ejet og ikke allerede pÃ¥ auktion" /> + <button label="Køb land..." label_selected="Køb land..." name="Buy Land..."/> + <button label="Køb til gruppe..." label_selected="Køb til gruppe..." name="Buy For Group..."/> + <button label="Køb adgang..." label_selected="Køb adgang..." name="Buy Pass..." tool_tip="Giver adgang til midlertidig adgang til dette omrÃ¥de."/> + <button label="Efterlad land..." label_selected="Efterlad land..." name="Abandon Land..."/> + <button label="Kræv tilbage..." label_selected="Kræv tilbage..." name="Reclaim Land..."/> + <button label="Linden salg..." label_selected="Linden salg..." name="Linden Sale..." tool_tip="Land skal være ejet, indholdsrating sat og ikke allerede pÃ¥ auktion."/> <string name="new users only"> Kun nye brugere </string> @@ -117,36 +120,60 @@ GÃ¥ til 'Verden' > 'Om land' eller vælg en anden parcel </string> </panel> <panel label="Regler" name="land_covenant_panel"> - <text type="string" length="1" name="covenant_timestamp_text"> + <text name="estate_section_lbl"> + Estate: + </text> + <text length="1" name="estate_name_lbl" type="string"> + Navn: + </text> + <text length="1" name="estate_name_text" type="string"> + Hovedland + </text> + <text length="1" name="estate_owner_lbl" type="string"> + Ejer: + </text> + <text length="1" name="estate_owner_text" type="string"> + (ingen) + </text> + <text_editor length="1" name="covenant_editor" type="string"> + Der er ikke angivet specielle regler for denne Estate + </text_editor> + <text length="1" name="covenant_timestamp_text" type="string"> Sidst rettet Wed Dec 31 16:00:00 1969 </text> - <text type="string" length="1" name="region_name_lbl"> + <text name="region_section_lbl"> Region: </text> - <text type="string" length="1" name="region_name_text"> + <text length="1" name="region_name_lbl" type="string"> + Navn: + </text> + <text length="1" name="region_name_text" type="string"> leyla </text> - <text type="string" length="1" name="estate_name_lbl"> - Estate: + <text name="region_landtype_lbl"> + Type: </text> - <text type="string" length="1" name="estate_name_text"> - Hovedland + <text name="region_landtype_text"> + Mainland / Homestead </text> - <text type="string" length="1" name="estate_owner_lbl"> - Estate ejer: + <text name="region_maturity_lbl"> + Rating: </text> - <text type="string" length="1" name="estate_owner_text"> - (ingen) + <text name="region_maturity_text"> + Adult </text> - <text type="string" length="1" name="resellable_clause"> - Købt jord i denne region mÃ¥ ikke videresælges. + <text name="resellable_lbl"> + Videresalg: </text> - <text type="string" length="1" name="changeable_clause"> - Købt jord i denne region mÃ¥ gerne samles eller opdeles. + <text length="1" name="resellable_clause" type="string"> + Land i denne region mÃ¥ ikke sælges videre. + </text> + <text name="changeable_lbl"> + Opdel: + </text> + <text length="1" name="changeable_clause" type="string"> + Land i denne region mÃ¥ ikke samles/opdeles. </text> - <text_editor type="string" length="1" name="covenant_editor"> - Der er ikke angivet specielle regler for denne Estate - </text_editor> <string name="can_resell"> Købt land i denne region mÃ¥ sælges videre </string> @@ -161,13 +188,13 @@ GÃ¥ til 'Verden' > 'Om land' eller vælg en anden parcel </string> </panel> <panel label="Objekter" name="land_objects_panel"> - <text type="string" length="1" name="parcel_object_bonus"> + <text length="1" name="parcel_object_bonus" type="string"> Region objekt bonus faktor: [BONUS] </text> - <text type="string" length="1" name="Simulator primitive usage:"> + <text length="1" name="Simulator primitive usage:" type="string"> Prims brugt i denne Sim: </text> - <text type="string" length="1" name="objects_available"> + <text length="1" name="objects_available" type="string"> [COUNT] ud af [MAX] ([AVAILABLE] ledige) </text> <string name="objects_available_text"> @@ -176,100 +203,142 @@ GÃ¥ til 'Verden' > 'Om land' eller vælg en anden parcel <string name="objects_deleted_text"> [COUNT] ud af [MAX] ([DELETED] bliver slettet) </string> - <text type="string" length="1" name="Primitives parcel supports:"> + <text length="1" name="Primitives parcel supports:" type="string"> Prims til rÃ¥dighed: </text> - <text type="string" length="1" name="object_contrib_text"> + <text length="1" name="object_contrib_text" type="string"> [COUNT] </text> - <text type="string" length="1" name="Primitives on parcel:"> + <text length="1" name="Primitives on parcel:" type="string"> Prims brugt pÃ¥ parcel: </text> - <text type="string" length="1" name="total_objects_text"> + <text length="1" name="total_objects_text" type="string"> [COUNT] </text> - <text type="string" length="1" name="Owned by parcel owner:"> + <text length="1" name="Owned by parcel owner:" type="string"> Ejet af Parcel ejer: </text> - <text type="string" length="1" name="owner_objects_text"> + <text length="1" name="owner_objects_text" type="string"> [COUNT] </text> - <button label="Vis" label_selected="Vis" name="ShowOwner" /> - <button label="Returnér..." label_selected="Returnér..." name="ReturnOwner..." - tool_tip="Returnér objekter til deres ejere." /> - <text type="string" length="1" name="Set to group:"> + <button label="Vis" label_selected="Vis" name="ShowOwner"/> + <button label="Returnér..." label_selected="Returnér..." name="ReturnOwner..." tool_tip="Returnér objekter til deres ejere."/> + <text length="1" name="Set to group:" type="string"> Sat til gruppe: </text> - <text type="string" length="1" name="group_objects_text"> + <text length="1" name="group_objects_text" type="string"> [COUNT] </text> - <button label="Vis" label_selected="Vis" name="ShowGroup" /> - <button label="Returnér..." label_selected="Returnér..." name="ReturnGroup..." - tool_tip="Returnér objekter til deres ejere." /> - <text type="string" length="1" name="Owned by others:"> + <button label="Vis" label_selected="Vis" name="ShowGroup"/> + <button label="Returnér..." label_selected="Returnér..." name="ReturnGroup..." tool_tip="Returnér objekter til deres ejere."/> + <text length="1" name="Owned by others:" type="string"> Ejet af andre: </text> - <text type="string" length="1" name="other_objects_text"> + <text length="1" name="other_objects_text" type="string"> [COUNT] </text> - <button label="Vis" label_selected="Vis" name="ShowOther" /> - <button label="Returnér..." label_selected="Returnér..." name="ReturnOther..." - tool_tip="Returnér objekter til deres ejere." /> - <text type="string" length="1" name="Selected / sat upon:"> + <button label="Vis" label_selected="Vis" name="ShowOther"/> + <button label="Returnér..." label_selected="Returnér..." name="ReturnOther..." tool_tip="Returnér objekter til deres ejere."/> + <text length="1" name="Selected / sat upon:" type="string"> Valgt/siddet pÃ¥: </text> - <text type="string" length="1" name="selected_objects_text"> + <text length="1" name="selected_objects_text" type="string"> [COUNT] </text> - <text type="string" length="1" name="Autoreturn"> + <text length="1" name="Autoreturn" type="string"> Autoreturnér andres objekter efter (minutter, 0 = aldrig): </text> - <text type="string" length="1" name="Object Owners:"> + <text length="1" name="Object Owners:" type="string"> Objekt ejere: </text> - <button label="Gentegn liste" label_selected="Gentegn liste" name="Refresh List" /> - <button label="Returnér objekter..." label_selected="Returnér objekter..." - name="Return objects..." /> + <button label="Gentegn liste" label_selected="Gentegn liste" name="Refresh List"/> + <button label="Returnér objekter..." label_selected="Returnér objekter..." name="Return objects..."/> <name_list name="owner list"> - <column label="Type" name="type" /> - <column label="Navn" name="name" /> - <column label="Antal" name="count" /> - <column label="Nyeste" name="mostrecent" /> + <column label="Type" name="type"/> + <column label="Navn" name="name"/> + <column label="Antal" name="count"/> + <column label="Nyeste" name="mostrecent"/> </name_list> </panel> <panel label="Indstillinger" name="land_options_panel"> - <text type="string" length="1" name="allow_label"> + <text length="1" name="allow_label" type="string"> Tillad andre beboere at: </text> - <check_box label="Redigere terræn" name="edit land check" - tool_tip="Hvis dette er valg, kan enhver redigere dit land. Det er bedst ikke at vælge her, da det altid er muligt for dig som ejer at ændre terræn pÃ¥ dit eget land." /> - <check_box label="Lave landemærker" name="check landmark" /> - <check_box label="Flyve" name="check fly" - tool_tip="Hvis valgt, kan beboere flyve pÃ¥ dit land. Hvis ikke valgt kan beboere kun flyve ind pÃ¥ dit land og over dit land." /> - <text type="string" length="1" name="allow_label2"> + <check_box label="Redigere terræn" name="edit land check" tool_tip="Hvis dette er valg, kan enhver redigere dit land. Det er bedst ikke at vælge her, da det altid er muligt for dig som ejer at ændre terræn pÃ¥ dit eget land."/> + <check_box label="Lave landemærker" name="check landmark"/> + <check_box label="Flyve" name="check fly" tool_tip="Hvis valgt, kan beboere flyve pÃ¥ dit land. Hvis ikke valgt kan beboere kun flyve ind pÃ¥ dit land og over dit land."/> + <text length="1" name="allow_label2" type="string" left="194"> Lave objekter: </text> - <check_box label="Alle beboere" name="edit objects check" /> - <check_box label="Gruppe" name="edit group objects check" /> - <text type="string" length="1" name="allow_label3"> + <check_box label="Alle beboere" name="edit objects check"/> + <check_box label="Gruppe" name="edit group objects check"/> + <text length="1" name="allow_label3" type="string" left="170"> Anbringe objekter: </text> - <check_box label="Alle beboere" name="all object entry check" /> - <check_box label="Gruppe" name="group object entry check" /> - <text type="string" length="1" name="allow_label4"> + <check_box label="Alle beboere" name="all object entry check"/> + <check_box label="Gruppe" name="group object entry check"/> + <text length="1" name="allow_label4" type="string" left="200"> Køre scripts: </text> - <check_box label="Alle beboere" name="check other scripts" /> - <check_box label="Gruppe" name="check group scripts" /> - <text type="string" length="1" name="land_options_label"> + <check_box label="Alle beboere" name="check other scripts"/> + <check_box label="Gruppe" name="check group scripts"/> + <text length="1" name="land_options_label" type="string"> Land instillinger: </text> - <check_box label="Sikker (ingen skade)" name="check safe" - tool_tip="Hvis valgt, er det ikke muligt at forÃ¥rsage skade pÃ¥ andre beboere. Hvis fravalgt er det muligt at fÃ¥ skader (f.eks. ved kamp)." /> - <check_box label="Skub forbudt" name="PushRestrictCheck" - tool_tip="Forhindrer scripts i at skubbe. Valg af denne mulighed, kan være nyttigt for at forhindre forstyrrende adfærd pÃ¥ dit land." /> - <check_box label="Vis sted i søgning (L$30/uge) i kategorien:" name="ShowDirectoryCheck" - tool_tip="Lad dit parcel blive vist i søge resultaterne" /> + <check_box label="Sikker (ingen skade)" name="check safe" tool_tip="Hvis valgt, er det ikke muligt at forÃ¥rsage skade pÃ¥ andre beboere. Hvis fravalgt er det muligt at fÃ¥ skader (f.eks. ved kamp)."/> + <check_box label="Skub forbudt" name="PushRestrictCheck" tool_tip="Forhindrer scripts i at skubbe. Valg af denne mulighed, kan være nyttigt for at forhindre forstyrrende adfærd pÃ¥ dit land."/> + <check_box label="Vis sted i søgning (L$30/uge) i kategorien:" name="ShowDirectoryCheck" tool_tip="Lad dit parcel blive vist i søge resultaterne"/> + <string name="search_enabled_tooltip"> + Lad beboere se denne parcel i søgeresultater + </string> + <string name="search_disabled_small_tooltip"> + Denne mulighed er ikke til stede da parcellens omrÃ¥de er 128 m² eller mindre. +Kun større parceller kan vises i søgning. + </string> + <string name="search_disabled_permissions_tooltip"> + Dette valg er lukket da du ikke kan ændre pÃ¥ denne parcels opsætning. + </string> + <combo_box name="land category with adult"> + <combo_item name="AnyCategory"> + Enhver kategori + </combo_item> + <combo_item name="LindenLocation"> + Linden sted + </combo_item> + <combo_item name="Adult"> + Adult + </combo_item> + <combo_item name="Arts&Culture"> + Kunst & kultur + </combo_item> + <combo_item name="Business"> + Business + </combo_item> + <combo_item name="Educational"> + Uddannelse + </combo_item> + <combo_item name="Gaming"> + Spil + </combo_item> + <combo_item name="Hangout"> + Opholdssteder + </combo_item> + <combo_item name="NewcomerFriendly"> + Nybegynder venligt + </combo_item> + <combo_item name="Parks&Nature"> + Parker & natur + </combo_item> + <combo_item name="Residential"> + Beboelse + </combo_item> + <combo_item name="Shopping"> + Shopping + </combo_item> + <combo_item name="Other"> + Andet + </combo_item> + </combo_box> <combo_box name="land category"> <combo_box.item name="AnyCategory" label="Alle kategorier" /> <combo_box.item name="LindenLocation" label="Linden Location" /> @@ -284,23 +353,33 @@ GÃ¥ til 'Verden' > 'Om land' eller vælg en anden parcel <combo_box.item name="Shopping" label="Indkøb" /> <combo_box.item name="Other" label="Andet" /> </combo_box> - <button label="?" label_selected="?" name="?" /> - <check_box name="MatureCheck" /> - <text type="string" length="1" name="Snapshot:"> + <button label="?" label_selected="?" name="?"/> + <check_box label="Mature indhold" name="MatureCheck" tool_tip=""/> + <string name="mature_check_mature"> + Mature indhold + </string> + <string name="mature_check_adult"> + Adult indhold + </string> + <string name="mature_check_mature_tooltip"> + Din parcel information eller indhold anses for at være 'adult'. + </string> + <string name="mature_check_adult_tooltip"> + Din parcel information eller indhold anses for at være 'adult'. + </string> + <text length="1" name="Snapshot:" type="string"> Foto: </text> - <texture_picker label="" name="snapshot_ctrl" tool_tip="Klik for at vælge et billede" /> - <text type="string" length="1" name="landing_point"> + <texture_picker label="" name="snapshot_ctrl" tool_tip="Klik for at vælge et billede"/> + <text length="1" name="landing_point" type="string"> Landingspunkt: [LANDING] </text> <string name="landing_point_none"> (ingen) </string> - <button label="Vælg" label_selected="Vælg" name="Set" - tool_tip="Indstiller landingspunkt, hvor de besøgende ankommer. Sættes til din avatars aktuelle placering i denne parcel." /> - <button label="Fjern" label_selected="Fjern" name="Clear" - tool_tip="Fjerner oplysning om landingspunkt." /> - <text type="string" length="1" name="Teleport Routing: "> + <button label="Vælg" label_selected="Vælg" name="Set" tool_tip="Indstiller landingspunkt, hvor de besøgende ankommer. Sættes til din avatars aktuelle placering i denne parcel."/> + <button label="Fjern" label_selected="Fjern" name="Clear" tool_tip="Fjerner oplysning om landingspunkt."/> + <text length="1" name="Teleport Routing: " type="string"> Teleport valg: </text> <combo_box name="landing type" tool_tip="Vælg hvordan du vil hÃ¥ndtere teleporteringer til dit land."> @@ -316,109 +395,91 @@ GÃ¥ til 'Verden' > 'Om land' eller vælg en anden parcel </string> </panel> <panel label="Medier" name="land_media_panel"> - <text type="string" length="1" name="with media:"> + <text length="1" name="with media:" type="string" left="4"> Medie type: </text> - <combo_box name="media type" - tool_tip="Specificer om URL-adressen er til en film, hjemmeside eller et andet medie." /> - <text type="string" length="1" name="at URL:"> + <combo_box name="media type" tool_tip="Specificer om URL-adressen er til en film, hjemmeside eller et andet medie."/> + <text length="1" name="at URL:" type="string" left="4"> Medie URL: </text> - <button label="Vælg..." label_selected="Vælg..." name="set_media_url" /> - <text type="string" length="1" name="Description:"> + <button label="Vælg..." label_selected="Vælg..." name="set_media_url"/> + <text length="1" name="Description:" type="string" left="4"> Beskrivelse: </text> - <line_editor name="url_description" tool_tip="Tekst vist ved siden af Afspil/Hent knappen" /> - <text type="string" length="1" name="Media texture:"> + <line_editor name="url_description" tool_tip="Tekst vist ved siden af Afspil/Hent knappen"/> + <text length="1" name="Media texture:" type="string" left="4"> Erstat tekstur: </text> - <texture_picker label="" name="media texture" tool_tip="Klik for at vælge billede" /> - <text type="string" length="1" name="replace_texture_help"> + <texture_picker label="" name="media texture" tool_tip="Klik for at vælge billede"/> + <text length="1" name="replace_texture_help" type="string"> (Objekter der har denne tekstur vil vise filmen eller web-siden, efter du klikker pÃ¥ play knappen.) </text> - <text type="string" length="1" name="Options:"> + <text length="1" name="Options:" type="string"> Medie valg: </text> - <check_box label="Auto skalér" name="media_auto_scale" - tool_tip="Vælg denne mulighed for at skalere indholdet for dette parcel automatisk. Det kan være lidt langsommere og have lavere kvalitet, men ingen anden tekstur skalering eller tilpasning vil være nødvendigt." /> - <check_box label="Gentag afspil" name="media_loop" - tool_tip="Gentager automatisk medie, nÃ¥r det er færdigt med at spille starter det automatisk forfra." /> - <check_box label="Skjul medie URL" name="hide_media_url" - tool_tip="Klik her for at skjule medie adressen sÃ¥ det kun er dig og evt. parcel gruppens ejer/administratorer der kan se den." /> - <check_box label="Skjul musik URL" name="hide_music_url" - tool_tip="Klik her for at skjule musik adressen sÃ¥ det kun er dig og evt. parcel gruppens ejer/administratorer der kan se den." /> - <text type="string" length="1" name="media_size" - tool_tip="Størrelse for rendering af Web medie, benyt 0 for standard." width="105"> + <check_box label="Auto skalér" name="media_auto_scale" tool_tip="Vælg denne mulighed for at skalere indholdet for dette parcel automatisk. Det kan være lidt langsommere og have lavere kvalitet, men ingen anden tekstur skalering eller tilpasning vil være nødvendigt."/> + <check_box label="Gentag afspil" name="media_loop" tool_tip="Gentager automatisk medie, nÃ¥r det er færdigt med at spille starter det automatisk forfra."/> + <check_box label="Skjul medie URL" name="hide_media_url" tool_tip="Klik her for at skjule medie adressen sÃ¥ det kun er dig og evt. parcel gruppens ejer/administratorer der kan se den."/> + <check_box label="Skjul musik URL" name="hide_music_url" tool_tip="Klik her for at skjule musik adressen sÃ¥ det kun er dig og evt. parcel gruppens ejer/administratorer der kan se den."/> + <text length="1" name="media_size" tool_tip="Størrelse for rendering af Web medie, benyt 0 for standard." type="string" width="105"> Medie Størrelse: </text> - <spinner name="media_size_width" left_delta="89" - tool_tip="Størrelse for rendering af Web medie, benyt 0 for standard." /> - <spinner name="media_size_height" - tool_tip="Størrelse for rendering af Web medie, benyt 0 for standard." /> - <text type="string" length="1" name="pixels"> + <spinner left_delta="89" name="media_size_width" tool_tip="Størrelse for rendering af Web medie, benyt 0 for standard."/> + <spinner name="media_size_height" tool_tip="Størrelse for rendering af Web medie, benyt 0 for standard."/> + <text length="1" name="pixels" type="string"> pixels </text> - <text type="string" length="1" name="MusicURL:"> + <text length="1" name="MusicURL:" type="string"> Musik URL: </text> - <text type="string" length="1" name="Sound:"> + <text length="1" name="Sound:" type="string"> Lyd: </text> - <check_box label="Isolér lyde til denne parcel" name="check sound local" /> - <text type="string" length="1" name="Voice settings:"> + <check_box label="Begræns lyde fra bevægelser og objekter til denne parcel" name="check sound local"/> + <button label="?" label_selected="?" name="?" left="400"/> + <text length="1" name="Voice settings:" type="string"> Stemme: </text> <radio_group name="parcel_voice_channel"> - <radio_item type="string" length="1" name="Estate"> - Brug Estate kanalen - </radio_item> - <radio_item type="string" length="1" name="Private"> - Brug en privat kanal - </radio_item> - <radio_item type="string" length="1" name="Disabled"> - SlÃ¥ stemme chat fra pÃ¥ denne parcel - </radio_item> + <radio_item type="string" length="1" name="Estate" label="Brug Estate kanalen" /> + <radio_item type="string" length="1" name="Private" label="Brug en privat kanal" /> + <radio_item type="string" length="1" name="Disabled" label="SlÃ¥ stemme chat fra pÃ¥ denne parcel" /> </radio_group> </panel> <panel label="Adgang" name="land_access_panel"> - <text type="string" length="1" name="Limit access to this parcel to:"> + <text length="1" name="Limit access to this parcel to:" type="string"> Adgang til denne parcel </text> - <check_box label="Tillad offentlig adgang" name="public_access" /> - <text type="string" length="1" name="Only Allow"> + <check_box label="Tillad offentlig adgang" name="public_access"/> + <text length="1" name="Only Allow" type="string"> Blokér adgang for: </text> - <check_box label="Beboere der ikke har givet betalings oplysninger til Linden Lab" - name="limit_payment" - tool_tip="Blokér beboere der ikke har afgivet identifikationsoplysninger." /> - <check_box label="Beboere der ikke er godkendt som voksne" name="limit_age_verified" - tool_tip="Blokér beboere der ikke har verificeret deres alder. Se support.secondlife.com for mere information." /> + <check_box label="Beboere der ikke har givet betalings oplysninger til Linden Lab" name="limit_payment" tool_tip="Blokér beboere der ikke har afgivet identifikationsoplysninger."/> + <check_box label="Beboere der ikke er godkendt som voksne" name="limit_age_verified" tool_tip="Blokér beboere der ikke har verificeret deres alder. Se support.secondlife.com for mere information."/> <string name="estate_override"> En eller flere af disse valg er indstillet pÃ¥ estate niveau </string> - <check_box label="Tillad adgang til gruppen: [GROUP]" name="GroupCheck" - tool_tip="Vælg gruppe under fanen 'generelt'." /> - <check_box label="Sælg adgang til:" name="PassCheck" - tool_tip="Tillader midlertidig adgang til denne parcel" /> + <check_box label="Tillad adgang til gruppen: [GROUP]" name="GroupCheck" tool_tip="Vælg gruppe under fanen 'generelt'."/> + <check_box label="Sælg adgang til:" name="PassCheck" tool_tip="Tillader midlertidig adgang til denne parcel"/> <combo_box name="pass_combo"> <combo_box.item name="Anyone" label="Alle" /> <combo_box.item name="Group" label="Gruppe" /> </combo_box> - <spinner label="Pris i L$:" name="PriceSpin" /> - <spinner label="Timers adgang:" name="HoursSpin" /> + <spinner label="Pris i L$:" name="PriceSpin"/> + <spinner label="Timers adgang:" name="HoursSpin"/> <text label="Tillad altid" name="AllowedText"> Altid godkendte beboere </text> - <name_list name="AccessList" tool_tip="([LISTED] vist, [MAX] max)" /> - <button label="Tilføj..." label_selected="Tilføj..." name="add_allowed" /> - <button label="Fjern" label_selected="Fjern" name="remove_allowed" /> + <name_list name="AccessList" tool_tip="([LISTED] vist, [MAX] max)"/> + <button label="Tilføj..." label_selected="Tilføj..." name="add_allowed"/> + <button label="Fjern" label_selected="Fjern" name="remove_allowed"/> <text label="Blokér" name="BanCheck"> Blokerede beboere </text> - <name_list name="BannedList" tool_tip="([LISTED] vist, [MAX] max)" /> - <button label="Tilføj..." label_selected="Tilføj..." name="add_banned" /> - <button label="Fjern" label_selected="Fjern" name="remove_banned" /> + <name_list name="BannedList" tool_tip="([LISTED] vist, [MAX] max)"/> + <button label="Tilføj..." label_selected="Tilføj..." name="add_banned"/> + <button label="Fjern" label_selected="Fjern" name="remove_banned"/> </panel> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/da/floater_animation_preview.xml b/indra/newview/skins/default/xui/da/floater_animation_preview.xml index e60292636d77611b879867eec38fd5e936c5c9ca..8cb0eee601e44facbcf53044f988376f59fe9850 100644 --- a/indra/newview/skins/default/xui/da/floater_animation_preview.xml +++ b/indra/newview/skins/default/xui/da/floater_animation_preview.xml @@ -9,15 +9,14 @@ <spinner label="Prioritet" name="priority" tool_tip="Vælg hvilke andre animationer der har lavere prioritet end denne." /> <check_box label="Gentag" name="loop_check" tool_tip="Gentager animationen konstant." /> - <spinner label="Ind(%)" name="loop_in_point" - tool_tip="Sætter punktet hvor gentagelsen genstarter fra." /> + <spinner left="76" label_width="40" width="105" label="Ind(%)" name="loop_in_point" tool_tip="Sætter punktet hvor gentagelsen genstarter fra."/> <spinner label="Ud (%)" name="loop_out_point" tool_tip="Sætter punktet i animationen der afslutter gentagelsen." /> <text name="hand_label"> HÃ¥nd posering </text> <combo_box label="" name="hand_pose_combo" - tool_tip="Kontrollerer hvad hænderne gÃ¥r i løbet af animationen."> + tool_tip="Kontrollerer hvad hænderne gÃ¥r i løbet af animationen." width="140"> <combo_box.item name="Spread" label="Spredt" /> <combo_box.item name="Relaxed" label="Afslappet" /> <combo_box.item name="PointBoth" label="Peg begge" /> @@ -36,7 +35,7 @@ Ansigtsudtryk </text> <combo_box label="" name="emote_combo" - tool_tip="Angiver hvad ansigtet gør under animationen"> + tool_tip="Angiver hvad ansigtet gør under animationen" width="140"> <combo_box.item name="[None]" label="Intet]" /> <combo_box.item name="Aaaaah" label="Aaaaah" /> <combo_box.item name="Afraid" label="Bange" /> @@ -62,7 +61,7 @@ Vis mens </text> <combo_box label="" name="preview_base_anim" - tool_tip="Se hvordan animation ser ud i forskellige typiske avatar-situationer."> + tool_tip="Se hvordan animation ser ud i forskellige typiske avatar-situationer." width="140"> <combo_box.item name="Standing" label="StÃ¥r" /> <combo_box.item name="Walking" label="GÃ¥r" /> <combo_box.item name="Sitting" label="Sidder" /> @@ -77,8 +76,8 @@ <slider label="" name="playback_slider" /> <text name="bad_animation_text"> Kan ikke læse animations fil. - - Vi anbefaler BVH filer der er exporteret fra Poser 4. + +Vi anbefaler BVH filer der er exporteret fra Poser 4. </text> <button label="Annullér" name="cancel_btn" /> <button label="Hent (L$[AMOUNT])" name="ok_btn" /> diff --git a/indra/newview/skins/default/xui/da/floater_buy_land.xml b/indra/newview/skins/default/xui/da/floater_buy_land.xml index 2c5411e26b4442c74aa76bd8e3b6be76443e8343..1d42ffb45a856bbdac9819fef141671816d9cd7d 100644 --- a/indra/newview/skins/default/xui/da/floater_buy_land.xml +++ b/indra/newview/skins/default/xui/da/floater_buy_land.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="buy land" title="Køb land"> <text name="region_name_label"> Region: @@ -6,6 +6,12 @@ <text name="region_name_text"> (ukendt) </text> + <text name="region_type_label"> + Type: + </text> + <text name="region_type_text"> + (ukendt) + </text> <text name="estate_name_label"> Estate: </text> @@ -22,35 +28,38 @@ Købt land i denne region: </text> <text name="resellable_clause"> - Købt land i denne region kan eller kan ikke videresælges. + Kan eller kan ikke videresælges. </text> <text name="changeable_clause"> - kan eller kan ikke samles eller opdeles. + MÃ¥ eller mÃ¥ ikke samles eller opdeles. </text> <text name="covenant_text"> Du skal acceptere Estate reglerne: </text> + <text left="470" name="covenant_timestamp_text"/> <text_editor name="covenant_editor"> Indlæser... </text_editor> - <check_box label="Jeg acceptere betingelserne der er beskrevet." name="agree_covenant" /> + <check_box label="Jeg acceptere betingelserne der er beskrevet." name="agree_covenant"/> <text name="info_parcel_label"> Parcel: </text> - <text name="info_parcel" left_delta="62"> + <text left_delta="62" name="info_parcel"> Scotopteryx 138,204 </text> <text name="info_size_label" width="60"> Størrelse: </text> - <text name="info_size" left_delta="62"> + <text left_delta="62" name="info_size"> 1024 m² </text> <text name="info_price_label"> Pris: </text> - <text name="info_price" left_delta="62"> - L$ 1500, objekter inkluderet + <text left_delta="62" name="info_price"> + L$ 1500 +(L$ 1.1/m²) +sælges med objekter </text> <text name="info_action"> Køb af dette land vil: @@ -58,7 +67,7 @@ <text name="error_message"> Noget er ikke rigtigt. </text> - <button label="Go to website" name="error_web" /> + <button label="Go to website" name="error_web"/> <text name="account_action"> Opgrader dig til premium medlemsskab. </text> @@ -74,8 +83,8 @@ Forøg dine mÃ¥nedlige arealanvendelse gebyrer til US $ 40/mÃ¥ned. </text> <text name="land_use_reason"> - Du har 1.309 kvadratmeter jord. -Dette parcel er pÃ¥ 512 kvadratmeter jord. + You hold 1309 m² of land. +This parcel is 512 m² of land. </text> <text name="purchase_action"> Betal Joe Resident L$ 4000 dette areal @@ -95,10 +104,9 @@ Dette parcel er pÃ¥ 512 kvadratmeter jord. <text name="currency_balance"> Du har L$2,100. </text> - <check_box label="Fjern [AMOUNT] kvadratmeter af bidrag fra gruppe." - name="remove_contribution" /> - <button label="Køb" name="buy_btn" /> - <button label="Annullér" name="cancel_btn" /> + <check_box label="Fjern [AMOUNT] kvadratmeter af bidrag fra gruppe." name="remove_contribution"/> + <button label="Køb" name="buy_btn"/> + <button label="Annullér" name="cancel_btn"/> <string name="can_resell"> Kan videresælges. </string> @@ -155,7 +163,7 @@ Prøv at vælge et mindre omrÃ¥de. Køb af dette areal vil: </string> <string name="buying_for_group"> - Køb jord til gruppe: + Køb af dette areal vil: </string> <string name="cannot_buy_now"> Kan ikke købe nu: @@ -173,30 +181,38 @@ Prøv at vælge et mindre omrÃ¥de. Din konto kan eje jord. </string> <string name="land_holdings"> - Du har [BUYER] kvadratmeter jord. + Du har [BUYER] m² jord. </string> <string name="pay_to_for_land"> Betal L$ [AMOUNT] til [SELLER] for dette stykke jord </string> <string name="buy_for_US"> - Køb L$ [AMOUNT] for omkring US$ [AMOUNT2] , + Køb L$ [AMOUNT] for ca. US$ [AMOUNT2], </string> <string name="parcel_meters"> - Dette parcel er [AMOUNT] kvadratmeter. + Denne parcel er [AMOUNT] m². </string> <string name="premium_land"> - Dette stykke jord er premium, og vil tælle som [AMOUNT] kvadratmeter. + Dette stykke jord er premium, og vil tælle som [AMOUNT] m². </string> <string name="discounted_land"> - Dette stykke jord er pÃ¥ tilbud, og vil tælle som [AMOUNT] kvadratmeter. + Dette stykke jord er pÃ¥ tilbud, og vil tælle som [AMOUNT] m². </string> <string name="meters_supports_object"> [AMOUNT] m² -indeholder [AMOUNT2] objekter +kan indeholder [AMOUNT2] objekter </string> <string name="sold_with_objects"> solgt med objekter </string> + <string name="sold_without_objects"> + objekter ikke inkluderet + </string> + <string name="info_price_string"> + L$ [PRICE] +(L$ [PRICE_PER_SQM]/m²) +[SOLD_WITH_OBJECTS] + </string> <string name="insufficient_land_credits"> Gruppen [GROUP] skal bruge nok tildelt jord brugs kredit for at dække dette parcel før købet vil blive diff --git a/indra/newview/skins/default/xui/da/floater_customize.xml b/indra/newview/skins/default/xui/da/floater_customize.xml index 0f6a59eb4a05b7a4a017a8d145d3e83430c33c12..aa6b8cb0436e706bcf891458a3946632ab501381 100644 --- a/indra/newview/skins/default/xui/da/floater_customize.xml +++ b/indra/newview/skins/default/xui/da/floater_customize.xml @@ -1,447 +1,479 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="floater customize" title="Appearance"> - <tab_container name="customize tab container"> - <panel label="Krops Dele" name="body_parts_placeholder" /> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater customize" title="Appearance" width="509"> + <tab_container name="customize tab container" width="507"> + <panel label="Krops Dele" name="body_parts_placeholder"/> <panel label="Kropsbygning" name="Shape"> - <button label="Annullér" label_selected="Annullér" name="Revert" /> - <button label="Krop" label_selected="Krop" name="Body" /> - <button label="Hoved" label_selected="Hoved" name="Head" /> - <button label="Øjne" label_selected="Øjne" name="Eyes" /> - <button label="Ører" label_selected="Ører" name="Ears" /> - <button label="Næse" label_selected="Næse" name="Nose" /> - <button label="Mund" label_selected="Mund" name="Mouth" /> - <button label="Kinder" label_selected="Kinder" name="Chin" /> - <button label="Overkrop" label_selected="Overkrop" name="Torso" /> - <button label="Ben" label_selected="Ben" name="Legs" /> + <button label="Annullér" label_selected="Annullér" name="Revert"/> + <button label="Krop" label_selected="Krop" name="Body"/> + <button label="Hoved" label_selected="Hoved" name="Head"/> + <button label="Øjne" label_selected="Øjne" name="Eyes"/> + <button label="Ører" label_selected="Ører" name="Ears"/> + <button label="Næse" label_selected="Næse" name="Nose"/> + <button label="Mund" label_selected="Mund" name="Mouth"/> + <button label="Kinder" label_selected="Kinder" name="Chin"/> + <button label="Overkrop" label_selected="Overkrop" name="Torso"/> + <button label="Ben" label_selected="Ben" name="Legs"/> <radio_group name="sex radio"> - <radio_item type="string" length="1" name="radio"> - Kvinde - </radio_item> - <radio_item type="string" length="1" name="radio2"> - Mand - </radio_item> + <radio_item type="string" length="1" name="radio" label="Kvinde" /> + <radio_item type="string" length="1" name="radio2" label="Mand" /> </radio_group> - <button label="Tilfældig" label_selected="Tilfældig" name="Randomize" /> - <text type="string" length="1" name="title"> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: Kan ikke redigeres </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: indlæser... </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: ikke bÃ¥ret </text> - <text type="string" length="1" name="path"> + <text length="1" name="path" type="string"> Fundet i [PATH] </text> - <text type="string" length="1" name="not worn instructions"> + <text length="1" name="not worn instructions" type="string"> Vælg en ny krop ved at trække en sÃ¥dan fra din beholdning -over pÃ¥ din avatar. Du kan ogsÃ¥ oprette en fra bunden og bagefter 'tage den pÃ¥'. +over pÃ¥ din avatar. Du kan ogsÃ¥ oprette en fra bunden +og bagefter 'tage den pÃ¥'. </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> Du har ikke rettigheder til at redigere denne del. </text> - <button label="Lav ny krop" label_selected="Lav ny krop" name="Create New" /> - <button label="Tag af" label_selected="Tag af" name="Take Off" /> - <button label="Gem" label_selected="Gem" name="Save" /> - <button label="Gem som" label_selected="Gem som" name="Save As" /> + <text name="Item Action Label"> + Figur: + </text> + <button label="Lav ny krop" label_selected="Lav ny krop" name="Create New"/> + <button label="Gem" label_selected="Gem" name="Save"/> + <button label="Gem som..." label_selected="Gem som..." name="Save As"/> </panel> <panel label="Hud" name="Skin"> - <button label="Hudfarve" label_selected="Hudfarve" name="Skin Color" /> - <button label="Detaljer" label_selected="Detaljer" name="Face Detail" /> - <button label="Sminke" label_selected="Sminke" name="Makeup" /> - <button label="Kropsdetaljer" label_selected="Kropsdetaljer" name="Body Detail" /> - <text type="string" length="1" name="title"> + <button label="Hudfarve" label_selected="Hudfarve" name="Skin Color"/> + <button label="Detaljer" label_selected="Detaljer" name="Face Detail"/> + <button label="Sminke" label_selected="Sminke" name="Makeup"/> + <button label="Kropsdetaljer" label_selected="Kropsdetaljer" name="Body Detail"/> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: Kan ikke redigeres </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: indlæser... </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: ikke bÃ¥ret </text> - <text type="string" length="1" name="path"> + <text length="1" name="path" type="string"> Fundet i [PATH] </text> - <text type="string" length="1" name="not worn instructions"> + <text length="1" name="not worn instructions" type="string"> Tag en ny hud pÃ¥ ved at trække en sÃ¥dan fra din beholdning -over pÃ¥ din avatar. Du kan ogsÃ¥ oprette en hud fra bunden og bagefter 'tage den pÃ¥'. +over pÃ¥ din avatar. Du kan ogsÃ¥ oprette en hud fra bunden +og bagefter 'tage den pÃ¥'. </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> Du har ikke rettigheder til at redigere denne del. </text> - <texture_picker label="Tatoveringer hoved" name="Head Tattoos" /> - <texture_picker label="Tatoveringer overkrop" name="Upper Tattoos" /> - <texture_picker label="Tatoveringer underkrop" name="Lower Tattoos" /> - <button label="Tilfældig" label_selected="Tilfældig" name="Randomize" /> - <button label="Lav ny hud" label_selected="Lav nyt hud" name="Create New" /> - <button label="Tag af" label_selected="Tag af" name="Take Off" /> - <button label="Gem" label_selected="Gem" name="Save" /> - <button label="Gem som" label_selected="Gem som" name="Save As" /> - <button label="Annullér" label_selected="Annullér" name="Revert" /> + <text name="Item Action Label"> + Hud: + </text> + <texture_picker width="98" label="Tatoveringer hoved" name="Head Tattoos" tool_tip="Klik for at vælge et billede"/> + <texture_picker width="98" label="Tatover. overkrop" name="Upper Tattoos" tool_tip="Klik for at vælge et billede"/> + <texture_picker width="98" label="Tatover. underkrop" name="Lower Tattoos" tool_tip="Klik for at vælge et billede"/> + <button label="Lav ny hud" label_selected="Lav nyt hud" name="Create New"/> + <button label="Gem" label_selected="Gem" name="Save"/> + <button label="Gem som..." label_selected="Gem som..." name="Save As"/> + <button label="Annullér" label_selected="Annullér" name="Revert"/> </panel> <panel label="HÃ¥r" name="Hair"> - <button label="Farve" label_selected="Farve" name="Color" /> - <button label="Stil" label_selected="Stil" name="Style" /> - <button label="Øjenbryn" label_selected="Øjenbryn" name="Eyebrows" /> - <button label="Skæg" label_selected="Skæg" name="Facial" /> - <text type="string" length="1" name="title"> + <button label="Farve" label_selected="Farve" name="Color"/> + <button label="Stil" label_selected="Stil" name="Style"/> + <button label="Øjenbryn" label_selected="Øjenbryn" name="Eyebrows"/> + <button label="Skæg" label_selected="Skæg" name="Facial"/> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: kan ikke redigeres </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: indlæser... </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: ikke bÃ¥ret </text> - <text type="string" length="1" name="path"> + <text length="1" name="path" type="string"> Fundet i [PATH] </text> - <text type="string" length="1" name="not worn instructions"> + <text length="1" name="not worn instructions" type="string"> Tag et ny hÃ¥r pÃ¥ ved at trække et fra din beholdning -over pÃ¥ din avatar. Du kan ogsÃ¥ oprette et nyt hÃ¥r fra bunden og bagefter 'tage det pÃ¥'. +over pÃ¥ din avatar. Du kan ogsÃ¥ oprette et nyt hÃ¥r fra bunden +og bagefter 'tage det pÃ¥'. </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> Du har ikke rettigheder til at redigere denne del. </text> - <texture_picker label="Tekstur" name="Texture" /> - <button label="Tilfældig" label_selected="Tilfældig" name="Randomize" /> - <button label="Lav nyt hÃ¥r" label_selected="Lav nyt hÃ¥r" name="Create New" /> - <button label="Tag af" label_selected="Tag af" name="Take Off" /> - <button label="Gem" label_selected="Gem" name="Save" /> - <button label="Gem som" label_selected="Gem som" name="Save As" /> - <button label="Annullér" label_selected="Annullér" name="Revert" /> + <text name="Item Action Label"> + HÃ¥r: + </text> + <texture_picker label="Tekstur" name="Texture" tool_tip="Klik for at vælge et billede"/> + <button label="Lav nyt hÃ¥r" label_selected="Lav nyt hÃ¥r" name="Create New"/> + <button label="Gem" label_selected="Gem" name="Save"/> + <button label="Gem som..." label_selected="Gem som..." name="Save As"/> + <button label="Annullér" label_selected="Annullér" name="Revert"/> </panel> <panel label="Øjne" name="Eyes"> - <text type="string" length="1" name="title"> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: Kan ikke redigeres </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: indlæser... </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: ikke bÃ¥ret </text> - <text type="string" length="1" name="path"> + <text length="1" name="path" type="string"> Fundet i [PATH] </text> - <text type="string" length="1" name="not worn instructions"> + <text length="1" name="not worn instructions" type="string"> Tag et ny sæt øjne pÃ¥ ved at trække et sæt fra din beholdning -over pÃ¥ din avatar. Du kan ogsÃ¥ oprette et nyt sæt øjne fra bunden og bagefter 'tage dem pÃ¥'. +over pÃ¥ din avatar. Du kan ogsÃ¥ oprette et nyt sæt øjne fra bunden +og bagefter 'tage dem pÃ¥'. </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> Du har ikke rettigheder til at redigere denne del. </text> - <texture_picker label="Iris" name="Iris" /> - <button label="Tilfældig" label_selected="Tilfældig" name="Randomize" /> - <button label="Lav nye øjne" label_selected="Lav nye øjne" name="Create New" /> - <button label="Tag af" label_selected="Tag af" name="Take Off" /> - <button label="Gem" label_selected="Gem" name="Save" /> - <button label="Gem som" label_selected="Gem som" name="Save As" /> - <button label="Annullér" label_selected="Annullér" name="Revert" /> + <text name="Item Action Label"> + Øjne: + </text> + <texture_picker label="Iris" name="Iris" tool_tip="Klik for at vælge et billede"/> + <button label="Lav nye øjne" label_selected="Lav nye øjne" name="Create New"/> + <button label="Gem" label_selected="Gem" name="Save"/> + <button label="Gem som..." label_selected="Gem som..." name="Save As"/> + <button label="Annullér" label_selected="Annullér" name="Revert"/> </panel> - <panel label="Tøje" name="clothes_placeholder" /> + <panel label="Tøje" name="clothes_placeholder"/> <panel label="Trøje" name="Shirt"> - <texture_picker label="Stof" name="Fabric" /> - <color_swatch label="Farve" name="Color/Tint" /> - <button label="Lav ny trøje" label_selected="Lav ny trøje" name="Create New" /> - <button label="Tag af" label_selected="Tag af" name="Take Off" /> - <button label="Gem" label_selected="Gem" name="Save" /> - <button label="Gem som" label_selected="Gem som" name="Save As" /> - <button label="Annullér" label_selected="Annullér" name="Revert" /> - <text type="string" length="1" name="title"> + <texture_picker label="Stof" name="Fabric" tool_tip="Klik for at vælge et billede"/> + <color_swatch label="Farve" name="Color/Tint" tool_tip="Klik for at Ã¥bne farvevælger"/> + <button label="Lav ny trøje" label_selected="Lav ny trøje" name="Create New"/> + <button label="Tag af" label_selected="Tag af" name="Take Off"/> + <button label="Gem" label_selected="Gem" name="Save"/> + <button label="Gem som..." label_selected="Gem som..." name="Save As"/> + <button label="Annullér" label_selected="Annullér" name="Revert"/> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: Kan ikke redigeres </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: indlæser... </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: ikke bÃ¥ret </text> - <text type="string" length="1" name="path"> + <text length="1" name="path" type="string"> Fundet i [PATH] </text> - <text type="string" length="1" name="not worn instructions"> - Tag en ny Tøje pÃ¥ ved at trække en fra din beholdning -over pÃ¥ din avatar. + <text length="1" name="not worn instructions" type="string"> + Tag en ny Tøje pÃ¥ ved at trække en fra din beholdning over pÃ¥ din avatar. Du kan ogsÃ¥ oprette en ny Tøje fra bunden og bagefter 'tage den pÃ¥'. </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> Du har ikke rettigheder til at redigere denne del. </text> + <text name="Item Action Label"> + Trøje: + </text> </panel> <panel label="Bukser" name="Pants"> - <texture_picker label="Stof" name="Fabric" /> - <color_swatch label="Farve" name="Color/Tint" /> - <button label="Lav nye bukser" label_selected="Lav nye bukser" name="Create New" /> - <button label="Tag af" label_selected="Tag af" name="Take Off" /> - <button label="Gem" label_selected="Gem" name="Save" /> - <button label="Gem som" label_selected="Gem som" name="Save As" /> - <button label="Annullér" label_selected="Annullér" name="Revert" /> - <text type="string" length="1" name="title"> + <texture_picker label="Stof" name="Fabric" tool_tip="Klik for at vælge et billede"/> + <color_swatch label="Farve" name="Color/Tint" tool_tip="Klik for at Ã¥bne farvevælger"/> + <button label="Lav nye bukser" label_selected="Lav nye bukser" name="Create New"/> + <button label="Tag af" label_selected="Tag af" name="Take Off"/> + <button label="Gem" label_selected="Gem" name="Save"/> + <button label="Gem som..." label_selected="Gem som..." name="Save As"/> + <button label="Annullér" label_selected="Annullér" name="Revert"/> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: Kan ikke redigeres </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: indlæser... </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: ikke bÃ¥ret </text> - <text type="string" length="1" name="path"> + <text length="1" name="path" type="string"> Fundet i [PATH] </text> - <text type="string" length="1" name="not worn instructions"> - Tag nyr bukser pÃ¥ ved at trække dem fra din beholdning -over pÃ¥ din avatar. -Du kan ogsÃ¥ oprette ny bukser fra bunden og bagefter 'tage dem pÃ¥'. + <text length="1" name="not worn instructions" type="string"> + Tag nyr bukser pÃ¥ ved at trække dem fra din beholdning over pÃ¥ +din avatar. Du kan ogsÃ¥ oprette ny bukser fra bunden og bagefter +'tage dem pÃ¥'. </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> Du har ikke rettigheder til at redigere denne del. </text> + <text name="Item Action Label"> + Bukser: + </text> </panel> <panel label="Sko" name="Shoes"> - <text type="string" length="1" name="title"> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: Kan ikke redigeres </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: indlæser... </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: ikke bÃ¥ret </text> - <text type="string" length="1" name="path"> + <text length="1" name="path" type="string"> Fundet i [PATH] </text> - <text type="string" length="1" name="not worn instructions"> + <text length="1" name="not worn instructions" type="string"> Tag et ny par sko pÃ¥ ved at trække dem fra din beholdning -over pÃ¥ din avatar. Du kan ogsÃ¥ oprette et nyt par sko fra bunden og bagefter 'tage dem pÃ¥'. +over pÃ¥ din avatar. Du kan ogsÃ¥ oprette et nyt par sko fra bunden +og bagefter 'tage dem pÃ¥'. </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> Du har ikke rettigheder til at redigere denne del. </text> - <texture_picker label="Stof" name="Fabric" /> - <color_swatch label="Farve" name="Color/Tint" /> - <button label="Lav nye sko" label_selected="Lav nye sko" name="Create New" /> - <button label="Tag af" label_selected="Tag af" name="Take Off" /> - <button label="Gem" label_selected="Gem" name="Save" /> - <button label="Gem som" label_selected="Gem som" name="Save As" /> - <button label="Annullér" label_selected="Annullér" name="Revert" /> + <text name="Item Action Label"> + Sko: + </text> + <texture_picker label="Stof" name="Fabric" tool_tip="Klik for at vælge et billede"/> + <color_swatch label="Farve" name="Color/Tint" tool_tip="Klik for at Ã¥bne farvevælger"/> + <button label="Lav nye sko" label_selected="Lav nye sko" name="Create New"/> + <button label="Tag af" label_selected="Tag af" name="Take Off"/> + <button label="Gem" label_selected="Gem" name="Save"/> + <button label="Gem som..." label_selected="Gem som..." name="Save As"/> + <button label="Annullér" label_selected="Annullér" name="Revert"/> </panel> <panel label="Strømper" name="Socks"> - <text type="string" length="1" name="title"> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: Kan ikke redigeres </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: indlæser... </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: ikke bÃ¥ret </text> - <text type="string" length="1" name="path"> + <text length="1" name="path" type="string"> Fundet i [PATH] </text> - <text type="string" length="1" name="not worn instructions"> + <text length="1" name="not worn instructions" type="string"> Tag et ny par Strømper pÃ¥ ved at trække dem fra din beholdning -over pÃ¥ din avatar. Du kan ogsÃ¥ oprette et nyt par Strømper fra bunden og bagefter 'tage dem pÃ¥'. +over pÃ¥ din avatar. Du kan ogsÃ¥ oprette et nyt par Strømper fra bunden +og bagefter 'tage dem pÃ¥'. </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> Du har ikke rettigheder til at redigere denne del. </text> - <texture_picker label="Stof" name="Fabric" /> - <color_swatch label="Farve" name="Color/Tint" /> - <button label="Lav nye strømper" label_selected="Lav nye strømper" name="Create New" /> - <button label="Tag af" label_selected="Tag af" name="Take Off" /> - <button label="Gem" label_selected="Gem" name="Save" /> - <button label="Gem som" label_selected="Gem som" name="Save As" /> - <button label="Annullér" label_selected="Annullér" name="Revert" /> + <text name="Item Action Label"> + Strømper: + </text> + <texture_picker label="Stof" name="Fabric" tool_tip="Klik for at vælge et billede"/> + <color_swatch label="Farve" name="Color/Tint" tool_tip="Klik for at Ã¥bne farvevælger"/> + <button label="Lav nye strømper" label_selected="Lav nye strømper" name="Create New"/> + <button label="Tag af" label_selected="Tag af" name="Take Off"/> + <button label="Gem" label_selected="Gem" name="Save"/> + <button label="Gem som..." label_selected="Gem som..." name="Save As"/> + <button label="Annullér" label_selected="Annullér" name="Revert"/> </panel> <panel label="Jakke" name="Jacket"> - <text type="string" length="1" name="title"> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: Kan ikke redigeres </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: indlæser... </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: ikke bÃ¥ret </text> - <text type="string" length="1" name="path"> + <text length="1" name="path" type="string"> Fundet i [PATH] </text> - <text type="string" length="1" name="not worn instructions"> - Tag en ny jakke pÃ¥ ved at trække en fra din beholdning -over pÃ¥ din avatar. + <text length="1" name="not worn instructions" type="string"> + Tag en ny jakke pÃ¥ ved at trække en fra din beholdning over pÃ¥ din avatar. Du kan ogsÃ¥ oprette en ny jakke fra bunden og bagefter 'tage den pÃ¥'. </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> Du har ikke rettigheder til at redigere denne del. </text> - <texture_picker label="Stof øverst" name="Upper Fabric" /> - <texture_picker label="Stof nederst" name="Lower Fabric" /> - <color_swatch label="Farve" name="Color/Tint" /> - <button label="Lav ny jakke" label_selected="Lav ny jakke" name="Create New" /> - <button label="Tag af" label_selected="Tag af" name="Take Off" /> - <button label="Gem" label_selected="Gem" name="Save" /> - <button label="Gem som" label_selected="Gem som" name="Save As" /> - <button label="Annullér" label_selected="Annullér" name="Revert" /> + <text name="Item Action Label"> + Jakke: + </text> + <texture_picker label="Stof øverst" name="Upper Fabric" tool_tip="Klik for at vælge et billede"/> + <texture_picker label="Stof nederst" name="Lower Fabric" tool_tip="Klik for at vælge et billede"/> + <color_swatch label="Farve" name="Color/Tint" tool_tip="Klik for at Ã¥bne farvevælger"/> + <button label="Lav ny jakke" label_selected="Lav ny jakke" name="Create New"/> + <button label="Tag af" label_selected="Tag af" name="Take Off"/> + <button label="Gem" label_selected="Gem" name="Save"/> + <button label="Gem som..." label_selected="Gem som..." name="Save As"/> + <button label="Annullér" label_selected="Annullér" name="Revert"/> </panel> <panel label="Handsker" name="Gloves"> - <text type="string" length="1" name="title"> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: Kan ikke redigeres </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: indlæser... </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: ikke bÃ¥ret </text> - <text type="string" length="1" name="path"> + <text length="1" name="path" type="string"> Fundet i [PATH] </text> - <text type="string" length="1" name="not worn instructions"> - Tag nye handsker pÃ¥ ved at trække et par fra din beholdning -over pÃ¥ din avatar. -Du kan ogsÃ¥ oprette nye handsker fra bunden og bagefter 'tage dem pÃ¥'. + <text length="1" name="not worn instructions" type="string"> + Tag nye handsker pÃ¥ ved at trække et par fra din beholdning over pÃ¥ +din avatar. Du kan ogsÃ¥ oprette nye handsker fra bunden +og bagefter 'tage dem pÃ¥'. </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> Du har ikke rettigheder til at redigere denne del. </text> - <texture_picker label="Stof" name="Fabric" /> - <color_swatch label="Farve" name="Color/Tint" /> - <button label="Lav nye handsker" label_selected="Lav nye handsker" name="Create New" /> - <button label="Tag af" label_selected="Tag af" name="Take Off" /> - <button label="Gem" label_selected="Gem" name="Save" /> - <button label="Gem som" label_selected="Gem som" name="Save As" /> - <button label="Annullér" label_selected="Annullér" name="Revert" /> + <text name="Item Action Label"> + Handsker: + </text> + <texture_picker label="Stof" name="Fabric" tool_tip="Klik for at vælge et billede"/> + <color_swatch label="Farve" name="Color/Tint" tool_tip="Klik for at Ã¥bne farvevælger"/> + <button label="Lav nye handsker" label_selected="Lav nye handsker" name="Create New"/> + <button label="Tag af" label_selected="Tag af" name="Take Off"/> + <button label="Gem" label_selected="Gem" name="Save"/> + <button label="Gem som..." label_selected="Gem som..." name="Save As"/> + <button label="Annullér" label_selected="Annullér" name="Revert"/> </panel> <panel label="Undertrøje" name="Undershirt"> - <text type="string" length="1" name="title"> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: Kan ikke redigeres </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: indlæser... </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: ikke bÃ¥ret </text> - <text type="string" length="1" name="path"> + <text length="1" name="path" type="string"> Fundet i [PATH] </text> - <text type="string" length="1" name="not worn instructions"> - Tag en ny undertrøje pÃ¥ ved at trække en fra din beholdning -over pÃ¥ din avatar. -Du kan ogsÃ¥ oprette en ny undertrøje fra bunden og bagefter 'tage den pÃ¥'. + <text length="1" name="not worn instructions" type="string"> + Tag en ny undertrøje pÃ¥ ved at trække en fra din beholdning over pÃ¥ +din avatar. Du kan ogsÃ¥ oprette en ny undertrøje fra bunden +og bagefter 'tage den pÃ¥'. </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> Du har ikke rettigheder til at redigere denne del. </text> - <texture_picker label="Stof" name="Fabric" /> - <color_swatch label="Farve" name="Color/Tint" /> - <button label="Lav ny undertrøje" label_selected="Lav ny undertrøje" name="Create New" /> - <button label="Tag af" label_selected="Tag af" name="Take Off" /> - <button label="Gem" label_selected="Gem" name="Save" /> - <button label="Gem som" label_selected="Gem som" name="Save As" /> - <button label="Annullér" label_selected="Annullér" name="Revert" /> + <text name="Item Action Label"> + Undertrøje: + </text> + <texture_picker label="Stof" name="Fabric" tool_tip="Klik for at vælge et billede"/> + <color_swatch label="Farve" name="Color/Tint" tool_tip="Klik for at Ã¥bne farvevælger"/> + <button label="Lav ny undertrøje" label_selected="Lav ny undertrøje" name="Create New"/> + <button label="Tag af" label_selected="Tag af" name="Take Off"/> + <button label="Gem" label_selected="Gem" name="Save"/> + <button label="Gem som..." label_selected="Gem som..." name="Save As"/> + <button label="Annullér" label_selected="Annullér" name="Revert"/> </panel> <panel label="Underbukser" name="Underpants"> - <text type="string" length="1" name="title"> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: Kan ikke redigeres </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: indlæser... </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: ikke bÃ¥ret </text> - <text type="string" length="1" name="path"> + <text length="1" name="path" type="string"> Fundet i [PATH] </text> - <text type="string" length="1" name="not worn instructions"> - Tag nye underbukser pÃ¥ ved at trække dem fra din beholdning -over pÃ¥ din avatar. -Du kan ogsÃ¥ oprette en par nye underbukser fra bunden og bagefter 'tage dem pÃ¥'. + <text length="1" name="not worn instructions" type="string"> + Tag nye underbukser pÃ¥ ved at trække dem fra din beholdning over pÃ¥ +din avatar. Du kan ogsÃ¥ oprette en par nye underbukser fra bunden +og bagefter 'tage dem pÃ¥'. </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> Du har ikke rettigheder til at redigere denne del. </text> - <texture_picker label="Stof" name="Fabric" /> - <color_swatch label="Farve" name="Color/Tint" /> - <button label="Lav nye underbukser" label_selected="Lav nye underbukser" name="Create New" /> - <button label="Tag af" label_selected="Tag af" name="Take Off" /> - <button label="Gem" label_selected="Gem" name="Save" /> - <button label="Gem som" label_selected="Gem som" name="Save As" /> - <button label="Annullér" label_selected="Annullér" name="Revert" /> + <text name="Item Action Label"> + Underbukser: + </text> + <texture_picker label="Stof" name="Fabric" tool_tip="Klik for at vælge et billede"/> + <color_swatch label="Farve" name="Color/Tint" tool_tip="Klik for at Ã¥bne farvevælger"/> + <button label="Lav nye underbukser" label_selected="Lav nye underbukser" name="Create New"/> + <button label="Tag af" label_selected="Tag af" name="Take Off"/> + <button label="Gem" label_selected="Gem" name="Save"/> + <button label="Gem som..." label_selected="Gem som..." name="Save As"/> + <button label="Annullér" label_selected="Annullér" name="Revert"/> </panel> <panel label="Nederdel" name="Skirt"> - <text type="string" length="1" name="title"> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: Kan ikke redigeres </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: indlæser... </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: ikke bÃ¥ret </text> - <text type="string" length="1" name="path"> + <text length="1" name="path" type="string"> Fundet i [PATH] </text> - <text type="string" length="1" name="not worn instructions"> - Tag en ny nederdel pÃ¥ ved at trække en fra din beholdning -over pÃ¥ din avatar. -Du kan ogsÃ¥ oprette en ny nederdel fra bunden og bagefter 'tage den pÃ¥'. + <text length="1" name="not worn instructions" type="string"> + Tag en ny nederdel pÃ¥ ved at trække en fra din beholdning over pÃ¥ +din avatar. Du kan ogsÃ¥ oprette en ny nederdel fra bunden +og bagefter 'tage den pÃ¥'. </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> Du har ikke rettigheder til at redigere denne del. </text> - <texture_picker label="Stof" name="Fabric" /> - <color_swatch label="Farve" name="Color/Tint" /> - <button label="Lav ny nederdel" label_selected="Lav ny nederdel" name="Create New" /> - <button label="Tag af" label_selected="Tag af" name="Take Off" /> - <button label="Gem" label_selected="Gem" name="Save" /> - <button label="Gem som" label_selected="Gem som" name="Save As" /> - <button label="Annullér" label_selected="Annullér" name="Revert" /> + <text name="Item Action Label"> + Nederdel: + </text> + <texture_picker label="Stof" name="Fabric" tool_tip="Klik for at vælge et billede"/> + <color_swatch label="Farve" name="Color/Tint" tool_tip="Klik for at Ã¥bne farvevælger"/> + <button label="Lav ny nederdel" label_selected="Lav ny nederdel" name="Create New"/> + <button label="Tag af" label_selected="Tag af" name="Take Off"/> + <button label="Gem" label_selected="Gem" name="Save"/> + <button label="Gem som..." label_selected="Gem som..." name="Save As"/> + <button label="Annullér" label_selected="Annullér" name="Revert"/> </panel> </tab_container> - <button label="Luk" label_selected="Luk" name="Close" /> - <button label="Gem alt" label_selected="Gem alt" name="Save All" /> - <button label="Opret sæt" label_selected="Opret sæt" name="Make Outfit" /> + <scroll_container left="212" name="panel_container"/> + <button label="Annullér" label_selected="Annullér" name="Cancel"/> + <button label="OK" label_selected="OK" name="Ok"/> + <button label="Opret sæt..." label_selected="Opret sæt..." name="Make Outfit"/> </floater> diff --git a/indra/newview/skins/default/xui/da/floater_env_settings.xml b/indra/newview/skins/default/xui/da/floater_env_settings.xml index 1a0dea790b3b064e7e3e2c62912b4f34329d75e4..04b804b36228199590da17e1d46865ff5477069f 100644 --- a/indra/newview/skins/default/xui/da/floater_env_settings.xml +++ b/indra/newview/skins/default/xui/da/floater_env_settings.xml @@ -1,26 +1,26 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="Environment Editor Floater" title="Redigering af omgivelser"> - <text type="string" length="1" name="EnvTimeText"> - Tid pÃ¥ dagen - </text> - <text type="string" length="1" name="EnvTimeText2"> - 00:00 - </text> - <slider label="" name="EnvTimeSlider" /> - <text type="string" length="1" name="EnvCloudText"> - Skydække - </text> - <slider label="" name="EnvCloudSlider" /> - <text type="string" length="1" name="EnvWaterColorText"> - Farve pÃ¥ vand - </text> - <color_swatch label="" name="EnvWaterColor" tool_tip="Klik for at Ã¥bne farvevælger" /> - <text type="string" length="1" name="EnvWaterFogText"> - TÃ¥ge pÃ¥ vand - </text> - <slider label="" name="EnvWaterFogSlider" /> - <button label="Benyt tid fra estate" name="EnvUseEstateTimeButton" /> - <button label="Avanceret himmel" name="EnvAdvancedSkyButton" /> - <button label="Avanceret vand" name="EnvAdvancedWaterButton" /> - <button label="?" name="EnvSettingsHelpButton" /> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater name="Environment Editor Floater" title="Redigering af omgivelser"> + <text type="string" length="1" name="EnvTimeText"> + Tid pÃ¥ dagen + </text> + <text type="string" length="1" name="EnvTimeText2"> + 00:00 + </text> + <slider label="" name="EnvTimeSlider" /> + <text type="string" length="1" name="EnvCloudText"> + Skydække + </text> + <slider label="" name="EnvCloudSlider" /> + <text type="string" length="1" name="EnvWaterColorText"> + Farve pÃ¥ vand + </text> + <color_swatch label="" name="EnvWaterColor" tool_tip="Klik for at Ã¥bne farvevælger" /> + <text type="string" length="1" name="EnvWaterFogText"> + TÃ¥ge pÃ¥ vand + </text> + <slider label="" name="EnvWaterFogSlider" /> + <button label="Benyt tid fra estate" name="EnvUseEstateTimeButton" /> + <button label="Avanceret himmel" name="EnvAdvancedSkyButton" /> + <button label="Avanceret vand" name="EnvAdvancedWaterButton" /> + <button label="?" name="EnvSettingsHelpButton" /> +</floater> diff --git a/indra/newview/skins/default/xui/da/floater_gesture.xml b/indra/newview/skins/default/xui/da/floater_gesture.xml index c8ea010ea91b14c76409d22bf737cb7bdfba79a2..800693ea8c38e4e30709b90685ebdf96aa48acc3 100644 --- a/indra/newview/skins/default/xui/da/floater_gesture.xml +++ b/indra/newview/skins/default/xui/da/floater_gesture.xml @@ -1,16 +1,16 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="gestures" title="Aktive bevægelser"> - <text name="help_label"> - Dobbelt-klik pÃ¥ en bevægelse for at afspille animation og lyd. - </text> - <scroll_list name="gesture_list"> - <column label="Genvej" name="trigger" /> - <column label="Taste" name="shortcut" /> - <column label="" name="key" /> - <column label="Navn" name="name" /> - </scroll_list> - <button label="Ny" name="new_gesture_btn" /> - <button label="Redigér" name="edit_btn" /> - <button label="Afspil" name="play_btn" /> - <button label="Stop" name="stop_btn" /> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater name="gestures" title="Aktive bevægelser"> + <text name="help_label"> + Dobbelt-klik pÃ¥ en bevægelse for at afspille animation og lyd. + </text> + <scroll_list name="gesture_list"> + <column label="Genvej" name="trigger" /> + <column label="Taste" name="shortcut" /> + <column label="" name="key" /> + <column label="Navn" name="name" /> + </scroll_list> + <button label="Ny" name="new_gesture_btn" /> + <button label="Redigér" name="edit_btn" /> + <button label="Afspil" name="play_btn" /> + <button label="Stop" name="stop_btn" /> +</floater> diff --git a/indra/newview/skins/default/xui/da/floater_hardware_settings.xml b/indra/newview/skins/default/xui/da/floater_hardware_settings.xml index 41688ec4f917675b54cdca3112bf06902e8bfa89..488660853f82e26b946600139a6cecdbead548cc 100644 --- a/indra/newview/skins/default/xui/da/floater_hardware_settings.xml +++ b/indra/newview/skins/default/xui/da/floater_hardware_settings.xml @@ -1,30 +1,30 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="Hardware Settings Floater" title="Hardware opsætning"> - <text type="string" length="1" name="Filtering:"> - Filtrering: - </text> - <check_box label="Anisotropic filtrering (langsommere nÃ¥r aktiveret)" name="ani" /> - <text type="string" length="1" name="Antialiasing:"> - Antialiasing: - </text> - <combo_box label="Antialiasing" name="fsaa"> - <combo_box.item name="FSAADisabled" label="SlÃ¥et fra"/> - <combo_box.item name="2x" label="2x"/> - <combo_box.item name="4x" label="4x"/> - <combo_box.item name="8x" label="8x"/> - <combo_box.item name="16x" label="16x"/> - </combo_box> - <spinner label="Gamma:" name="gamma" /> - <text type="string" length="1" name="(brightness, lower is brighter)"> - (Lysstyrke, lavere er lysere, 0=benyt standard) - </text> - <text type="string" length="1" name="Enable VBO:"> - Aktivér VBO: - </text> - <check_box label="Aktivér OpenGL Vertex Buffer objekter" name="vbo" - tool_tip="Aktivér af dette pÃ¥ nyere hardware giver performance forbedring. PÃ¥ ældre hardware kan aktivering medfø nedbrud." /> - <slider label="Tekstur hukommelse (MB):" name="GrapicsCardTextureMemory" - tool_tip="Mængde hukommelse der skal allokeres til teksturer (textures). Standardindstilling er hukommelse pÃ¥ grafikkortet. Reduktion kan medfø bedre ydeevne, men kan samtidig gøre teksturer mere udflydende." /> - <spinner label="TÃ¥ge: afstandsforhold:" name="fog" /> - <button label="OK" label_selected="OK" name="OK" /> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater name="Hardware Settings Floater" title="Hardware opsætning"> + <text type="string" length="1" name="Filtering:"> + Filtrering: + </text> + <check_box label="Anisotropic filtrering (langsommere nÃ¥r aktiveret)" name="ani" /> + <text type="string" length="1" name="Antialiasing:"> + Antialiasing: + </text> + <combo_box label="Antialiasing" name="fsaa" width="100"> + <combo_box.item name="FSAADisabled" label="SlÃ¥et fra"/> + <combo_box.item name="2x" label="2x"/> + <combo_box.item name="4x" label="4x"/> + <combo_box.item name="8x" label="8x"/> + <combo_box.item name="16x" label="16x"/> + </combo_box> + <spinner label="Gamma:" name="gamma" /> + <text type="string" length="1" name="(brightness, lower is brighter)"> + (Lysstyrke, lavere er lysere, 0=benyt standard) + </text> + <text type="string" length="1" name="Enable VBO:"> + Aktivér VBO: + </text> + <check_box label="Aktivér OpenGL Vertex Buffer objekter" name="vbo" + tool_tip="Aktivér af dette pÃ¥ nyere hardware giver performance forbedring. PÃ¥ ældre hardware kan aktivering medfø nedbrud." /> + <slider label="Tekstur hukommelse (MB):" name="GrapicsCardTextureMemory" + tool_tip="Mængde hukommelse der skal allokeres til teksturer (textures). Standardindstilling er hukommelse pÃ¥ grafikkortet. Reduktion kan medfø bedre ydeevne, men kan samtidig gøre teksturer mere udflydende." /> + <spinner label="TÃ¥ge: afstandsforhold:" name="fog" /> + <button label="OK" label_selected="OK" name="OK" /> +</floater> diff --git a/indra/newview/skins/default/xui/da/floater_hud.xml b/indra/newview/skins/default/xui/da/floater_hud.xml index adf9cae60abe8a249c98bbc6dc4c1fbcbd493157..0f11e2346da2ae942bb38cd89aed9cf05d767418 100644 --- a/indra/newview/skins/default/xui/da/floater_hud.xml +++ b/indra/newview/skins/default/xui/da/floater_hud.xml @@ -1,2 +1,2 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="floater_hud" title="Tutorial" /> +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater name="floater_hud" title="Tutorial" /> diff --git a/indra/newview/skins/default/xui/da/floater_im.xml b/indra/newview/skins/default/xui/da/floater_im.xml index ced5118eef7e7d571ff6919955c6bff8d468eeac..0b42b787065456cae57896732b2f0814e9d45cc4 100644 --- a/indra/newview/skins/default/xui/da/floater_im.xml +++ b/indra/newview/skins/default/xui/da/floater_im.xml @@ -1,45 +1,45 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<multi_floater name="im_floater" title="Personlig samtale (IM)"> - <string name="only_user_message"> - Du er den eneste deltager i denne samtale - </string> - <string name="offline_message"> - [FIRST] [LAST] er ikke logget pÃ¥. - </string> - <string name="invite_message"> - Tryk pÃ¥ [BUTTON NAME] knappen for at acceptére/tilslutte til denne stemme chat. - </string> - <string name="muted_message"> - Du har blokeret denne beboer. Hvis du starter en samtale vil denne blokering automatisk blive fjernet. - </string> - <string name="generic_request_error"> - Kunne ikke etablere forbindelse, prøv igen senere - </string> - <string name="insufficient_perms_error"> - Du har ikke de fornødne rettigheder. - </string> - <string name="session_does_not_exist_error"> - Denne samtale er lukket ned - </string> - <string name="no_ability_error"> - Du har ikke den mulighed. - </string> - <string name="not_a_mod_error"> - Du er ikke moderator for denne samtale. - </string> - <string name="muted_error"> - Du er blevet "blokeret". - </string> - <string name="add_session_event"> - Ikke muligt at tilføge brugere til samtale med [RECIPIENT]. - </string> - <string name="message_session_event"> - Ikke muligt at sende din besked til samtalen med [RECIPIENT]. - </string> - <string name="removed_from_group"> - Du er blevet fjernet fra gruppen. - </string> - <string name="close_on_no_ability"> - Du har ikke længere mulighed for at deltage i samtalen - </string> -</multi_floater> +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<multi_floater name="im_floater" title="Personlig samtale (IM)"> + <string name="only_user_message"> + Du er den eneste deltager i denne samtale + </string> + <string name="offline_message"> + [FIRST] [LAST] er ikke logget pÃ¥. + </string> + <string name="invite_message"> + Tryk pÃ¥ [BUTTON NAME] knappen for at acceptére/tilslutte til denne stemme chat. + </string> + <string name="muted_message"> + Du har blokeret denne beboer. Hvis du starter en samtale vil denne blokering automatisk blive fjernet. + </string> + <string name="generic_request_error"> + Kunne ikke etablere forbindelse, prøv igen senere + </string> + <string name="insufficient_perms_error"> + Du har ikke de fornødne rettigheder. + </string> + <string name="session_does_not_exist_error"> + Denne samtale er lukket ned + </string> + <string name="no_ability_error"> + Du har ikke den mulighed. + </string> + <string name="not_a_mod_error"> + Du er ikke moderator for denne samtale. + </string> + <string name="muted_error"> + Du er blevet "blokeret". + </string> + <string name="add_session_event"> + Ikke muligt at tilføge brugere til samtale med [RECIPIENT]. + </string> + <string name="message_session_event"> + Ikke muligt at sende din besked til samtalen med [RECIPIENT]. + </string> + <string name="removed_from_group"> + Du er blevet fjernet fra gruppen. + </string> + <string name="close_on_no_ability"> + Du har ikke længere mulighed for at deltage i samtalen + </string> +</multi_floater> diff --git a/indra/newview/skins/default/xui/da/floater_image_preview.xml b/indra/newview/skins/default/xui/da/floater_image_preview.xml index 23218052fca6bab7dd55a82aaed7cb2489915e51..345c9aa6d1409bb165a27aca6c517d948b3a5417 100644 --- a/indra/newview/skins/default/xui/da/floater_image_preview.xml +++ b/indra/newview/skins/default/xui/da/floater_image_preview.xml @@ -1,32 +1,32 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="Image Preview" title=""> - <text name="name_label"> - Navn: - </text> - <text name="description_label"> - Beskrivelse: - </text> - <text name="preview_label"> - Se billede som: - </text> - <combo_box label="Tøj type" name="clothing_type_combo"> - <combo_box.item name="Image" label="Billede"/> - <combo_box.item name="Hair" label="HÃ¥r"/> - <combo_box.item name="FemaleHead" label="Kvinde - hoved"/> - <combo_box.item name="FemaleUpperBody" label="Kvinde - overkrop"/> - <combo_box.item name="FemaleLowerBody" label="Kvinde - underkrop"/> - <combo_box.item name="MaleHead" label="Mand - hoved"/> - <combo_box.item name="MaleUpperBody" label="Mand - overkrop"/> - <combo_box.item name="MaleLowerBody" label="Mand - underkrop"/> - <combo_box.item name="Skirt" label="Nederdel"/> - <combo_box.item name="SculptedPrim" label="Sculpted prim"/> - </combo_box> - <text name="bad_image_text"> - Kunne ikke læse billede. - -Prøv at gemme billede som en 24 bit Targa fil (.tga). - </text> - <check_box label="Benyt komprimering uden tab" name="lossless_check" /> - <button label="Annullér" name="cancel_btn" /> - <button label="Hent (L$[AMOUNT])" name="ok_btn" /> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater name="Image Preview" title=""> + <text name="name_label"> + Navn: + </text> + <text name="description_label"> + Beskrivelse: + </text> + <text name="preview_label"> + Se billede som: + </text> + <combo_box label="Tøj type" name="clothing_type_combo"> + <combo_box.item name="Image" label="Billede"/> + <combo_box.item name="Hair" label="HÃ¥r"/> + <combo_box.item name="FemaleHead" label="Kvinde - hoved"/> + <combo_box.item name="FemaleUpperBody" label="Kvinde - overkrop"/> + <combo_box.item name="FemaleLowerBody" label="Kvinde - underkrop"/> + <combo_box.item name="MaleHead" label="Mand - hoved"/> + <combo_box.item name="MaleUpperBody" label="Mand - overkrop"/> + <combo_box.item name="MaleLowerBody" label="Mand - underkrop"/> + <combo_box.item name="Skirt" label="Nederdel"/> + <combo_box.item name="SculptedPrim" label="Sculpted prim"/> + </combo_box> + <text name="bad_image_text"> + Kunne ikke læse billede. + +Prøv at gemme billede som en 24 bit Targa fil (.tga). + </text> + <check_box label="Benyt komprimering uden tab" name="lossless_check" /> + <button label="Annullér" name="cancel_btn" /> + <button label="Hent (L$[AMOUNT])" name="ok_btn" /> +</floater> diff --git a/indra/newview/skins/default/xui/da/floater_inspect.xml b/indra/newview/skins/default/xui/da/floater_inspect.xml index 68ff50cc742b1ea5a91798c8b7a82579fa1df1c8..8361733e23eaf2f7ad0d793db9ab2b9bb158a5bf 100644 --- a/indra/newview/skins/default/xui/da/floater_inspect.xml +++ b/indra/newview/skins/default/xui/da/floater_inspect.xml @@ -1,13 +1,13 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="inspect" > - <scroll_list name="object_list" tool_tip="Vælg et objekt fra listen for at markere det"> - <column label="Objekt navn" name="object_name" /> - <column label="Objekt ejer" name="owner_name" /> - <column label="Bygget af" name="creator_name" /> - <column label="Lavet den " name="creation_date" /> - </scroll_list> - <button label="Se profil for ejer..." label_selected="" name="button owner" - tool_tip="Se profilen for ejeren af det markerede objekt pÃ¥ listen" /> - <button label="Se profil for bygger..." label_selected="" name="button creator" - tool_tip="Se profilen for den beboer der har bygget det markerede objekt pÃ¥ listen" /> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater name="inspect" > + <scroll_list name="object_list" tool_tip="Vælg et objekt fra listen for at markere det"> + <column label="Objekt navn" name="object_name" /> + <column label="Objekt ejer" name="owner_name" /> + <column label="Bygget af" name="creator_name" /> + <column label="Lavet den " name="creation_date" /> + </scroll_list> + <button label="Se profil for ejer..." label_selected="" name="button owner" + tool_tip="Se profilen for ejeren af det markerede objekt pÃ¥ listen" /> + <button label="Se profil for bygger..." label_selected="" name="button creator" + tool_tip="Se profilen for den beboer der har bygget det markerede objekt pÃ¥ listen" /> +</floater> diff --git a/indra/newview/skins/default/xui/da/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/da/floater_inventory_item_properties.xml index 96039c844424d8173debd8ec1e476672dba4f339..9f28440fb0c162b9961d88e4595ab278a74ff627 100644 --- a/indra/newview/skins/default/xui/da/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/da/floater_inventory_item_properties.xml @@ -60,12 +60,8 @@ </text> <check_box label="Til salg" name="CheckPurchase" /> <radio_group name="RadioSaleType"> - <radio_item name="radio"> - Original - </radio_item> - <radio_item name="radio2"> - Kopi - </radio_item> + <radio_item name="radio" label="Original" /> + <radio_item name="radio2" label="Kopi" /> </radio_group> <text name="TextPrice"> Pris: L$ diff --git a/indra/newview/skins/default/xui/da/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/da/floater_inventory_view_finder.xml index 29d9f7c0c4b45049d5f590035468c70b0c3f51ea..8eb39f2f7982d0a62561016ee29fd687e1f42517 100644 --- a/indra/newview/skins/default/xui/da/floater_inventory_view_finder.xml +++ b/indra/newview/skins/default/xui/da/floater_inventory_view_finder.xml @@ -1,24 +1,24 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="Inventory Finder" title="inventory_recent_items"> - <check_box label="Animation" name="check_animation" /> - <check_box label="Visitkort" name="check_calling_card" /> - <check_box label="Tøj" name="check_clothing" /> - <check_box label="Bevægelser" name="check_gesture" /> - <check_box label="Landemærke" name="check_landmark" /> - <check_box label="Note" name="check_notecard" /> - <check_box label="Objekter" name="check_object" /> - <check_box label="Scripts" name="check_script" /> - <check_box label="Lyde" name="check_sound" /> - <check_box label="Teksturer" name="check_texture" /> - <check_box label="Foto's" name="check_snapshot" /> - <button label="Alle" label_selected="Alle" name="All" /> - <button label="Ingen" label_selected="Ingen" name="None" /> - <check_box label="Vis altid mapper" name="check_show_empty" /> - <check_box label="Siden sidste logoff" name="check_since_logoff" /> - <text type="string" length="1" name="- OR -"> - - ELLER - - </text> - <spinner label="Timer siden" name="spin_hours_ago" /> - <spinner label="Dage siden" name="spin_days_ago" /> - <button label="Luk" label_selected="Luk" name="Close" /> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater name="Inventory Finder" title="inventory_recent_items"> + <check_box label="Animation" name="check_animation" /> + <check_box label="Visitkort" name="check_calling_card" /> + <check_box label="Tøj" name="check_clothing" /> + <check_box label="Bevægelser" name="check_gesture" /> + <check_box label="Landemærke" name="check_landmark" /> + <check_box label="Note" name="check_notecard" /> + <check_box label="Objekter" name="check_object" /> + <check_box label="Scripts" name="check_script" /> + <check_box label="Lyde" name="check_sound" /> + <check_box label="Teksturer" name="check_texture" /> + <check_box label="Foto's" name="check_snapshot" /> + <button label="Alle" label_selected="Alle" name="All" /> + <button label="Ingen" label_selected="Ingen" name="None" /> + <check_box label="Vis altid mapper" name="check_show_empty" /> + <check_box label="Siden sidste logoff" name="check_since_logoff" /> + <text type="string" length="1" name="- OR -"> + - ELLER - + </text> + <spinner label="Timer siden" name="spin_hours_ago" /> + <spinner label="Dage siden" name="spin_days_ago" /> + <button label="Luk" label_selected="Luk" name="Close" /> +</floater> diff --git a/indra/newview/skins/default/xui/da/floater_mem_leaking.xml b/indra/newview/skins/default/xui/da/floater_mem_leaking.xml index 71aaa919963eec4f9e6a5f642c09de71be1024e5..6d5b5bc0cec2ea0259409ce546d56bac21edf0f7 100644 --- a/indra/newview/skins/default/xui/da/floater_mem_leaking.xml +++ b/indra/newview/skins/default/xui/da/floater_mem_leaking.xml @@ -1,18 +1,18 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="MemLeak" title="Memory Leaking Simulation"> - <spinner label="Leaking Speed (bytes per frame):" name="leak_speed" /> - <spinner label="Max Leaked Memory (MB):" name="max_leak" /> - <text name="total_leaked_label"> - Current leaked memory: [SIZE] KB - </text> - <text name="note_label_1"> - [NOTE1] - </text> - <text name="note_label_2"> - [NOTE2] - </text> - <button label="Start" name="start_btn" /> - <button label="Stop" name="stop_btn" /> - <button label="Slip" name="release_btn" /> - <button label="Luk" name="close_btn" /> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater name="MemLeak" title="Memory Leaking Simulation"> + <spinner label="Leaking Speed (bytes per frame):" name="leak_speed" /> + <spinner label="Max Leaked Memory (MB):" name="max_leak" /> + <text name="total_leaked_label"> + Current leaked memory: [SIZE] KB + </text> + <text name="note_label_1"> + [NOTE1] + </text> + <text name="note_label_2"> + [NOTE2] + </text> + <button label="Start" name="start_btn" /> + <button label="Stop" name="stop_btn" /> + <button label="Slip" name="release_btn" /> + <button label="Luk" name="close_btn" /> +</floater> diff --git a/indra/newview/skins/default/xui/da/floater_preview_gesture.xml b/indra/newview/skins/default/xui/da/floater_preview_gesture.xml index cf3445e1a6e4369762efad8e04577b62843952a4..0053cb852f7c3fb71d3ad79a3e9f506ddc16505f 100644 --- a/indra/newview/skins/default/xui/da/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/da/floater_preview_gesture.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="gesture_preview"> <string name="stop_txt"> Stop @@ -15,42 +15,42 @@ <text name="trigger_label"> Udløser: </text> - <text name="replace_text" - tool_tip="Replace the trigger word(s) with these words. For example, trigger 'hello' replace with 'howdy' will turn the chat 'I wanted to say hello' into 'I wanted to say howdy' as well as playing the gesture!"> + <text name="replace_text" tool_tip="Replace the trigger word(s) with these words. For example, trigger 'hello' replace with 'howdy' will turn the chat 'I wanted to say hello' into 'I wanted to say howdy' as well as playing the gesture!"> Erstat med: </text> - <line_editor name="replace_editor" - tool_tip="Replace the trigger word(s) with these words. For example, trigger 'hello' replace with 'howdy' will turn the chat 'I wanted to say hello' into 'I wanted to say howdy' as well as playing the gesture" /> + <line_editor name="replace_editor" tool_tip="Replace the trigger word(s) with these words. For example, trigger 'hello' replace with 'howdy' will turn the chat 'I wanted to say hello' into 'I wanted to say howdy' as well as playing the gesture"/> <text name="key_label"> Genvejstast: </text> - <combo_box label="Ingen" name="modifier_combo" /> - <combo_box label="Ingen" name="key_combo" /> + <combo_box label="Ingen" name="modifier_combo" width="60"/> + <combo_box label="Ingen" name="key_combo" left_delta="70" width="60"/> <text name="library_label"> Type: </text> <text name="steps_label"> Trin: </text> - <button label="Tilføj >>" name="add_btn" /> - <button label="Flyt op" name="up_btn" /> - <button label="Flyt ned" name="down_btn" /> - <button label="Fjern" name="delete_btn" /> + <scroll_list name="library_list"> + Animation +Lyd +Chat +Vent + </scroll_list> + <button label="Tilføj >>" name="add_btn"/> + <button label="Flyt op" name="up_btn"/> + <button label="Flyt ned" name="down_btn"/> + <button label="Fjern" name="delete_btn"/> <text name="help_label"> Alle trin vil ske samtidigt, medmindre du tilføjer vente trin. </text> <radio_group name="animation_trigger_type"> - <radio_item name="start"> - Start - </radio_item> - <radio_item name="stop"> - Stop - </radio_item> + <radio_item name="start" label="Start" /> + <radio_item name="stop" label="Stop" /> </radio_group> - <check_box label="Indtil animation er færdig" name="wait_anim_check" /> - <check_box label="tid i sekunder" name="wait_time_check" /> - <check_box label="Aktiv" name="active_check" /> - <button label="Vis" name="preview_btn" /> - <button label="Gem" name="save_btn" /> + <check_box label="Indtil animation er færdig" name="wait_anim_check"/> + <check_box label="tid i sekunder" name="wait_time_check"/> + <check_box label="Aktiv" name="active_check" tool_tip="Aktive bevægelser kan blive aktiveret ved at skrive deress udløser tekst eller ved at trykke pÃ¥ genvejstaste. Bevægelser vil normalt være inaktive hvis der allerede findes en tilsvarende genvejstaste."/> + <button label="Vis" name="preview_btn"/> + <button label="Gem" name="save_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/da/floater_region_info.xml b/indra/newview/skins/default/xui/da/floater_region_info.xml index 306d566b02b2fd7ff17a7de4ef3a5e42c390fb8c..9f6e326cf338a5570bc687184dc659b6d4acc7e6 100644 --- a/indra/newview/skins/default/xui/da/floater_region_info.xml +++ b/indra/newview/skins/default/xui/da/floater_region_info.xml @@ -1,2 +1,2 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="regioninfo" title="Region/Estate" /> +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater name="regioninfo" title="Region/Estate" /> diff --git a/indra/newview/skins/default/xui/da/floater_report_abuse.xml b/indra/newview/skins/default/xui/da/floater_report_abuse.xml index 688aa8adc5ee17e5e213f16596d8445f6d41d058..804051e62c8c53433b5b1359f72e46df0630816b 100644 --- a/indra/newview/skins/default/xui/da/floater_report_abuse.xml +++ b/indra/newview/skins/default/xui/da/floater_report_abuse.xml @@ -1,7 +1,7 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_report_abuse" title="Rapportér misbrug"> - <texture_picker label="" name="screenshot" /> - <check_box label="Inkludér billede" name="screen_check" /> + <texture_picker label="" name="screenshot"/> + <check_box label="Inkludér billede" name="screen_check"/> <text name="reporter_title"> Anmelder: </text> @@ -23,28 +23,26 @@ <text name="select_object_label"> Klik pÃ¥ knappen derefter objektet: </text> - <button label="" label_selected="" name="pick_btn" - tool_tip="Objekt vælger - Identificér et objekt denne rapport omhandler" /> + <button label="" label_selected="" name="pick_btn" tool_tip="Objekt vælger - Identificér et objekt denne rapport omhandler"/> <text name="object_name_label"> Navn: </text> - <text name="object_name"> + <text name="object_name" left_delta="64" width="140"> Consetetur Sadipscing </text> <text name="owner_name_label"> Ejer: </text> - <text name="owner_name"> + <text name="owner_name" left_delta="64"> Hendrerit Vulputate </text> - <combo_box name="category_combo" - tool_tip="Kategori -- Vælg en kategori der passer bedst pÃ¥ denne rapport"> + <combo_box name="category_combo" tool_tip="Kategori -- Vælg en kategori der passer bedst pÃ¥ denne rapport"> <combo_box.item name="Select_category" label="Vælg kategori"/> <combo_box.item name="Age__Age_play" label="Alder > Falsk alder"/> <combo_box.item name="Age__Adult_resident_on_Teen_Second_Life" label="Alder > Voksen beboer pÃ¥ Teen Second Life"/> - - - + <combo_item name="Age__Underage_resident_outside_of_Teen_Second_Life"> + Alder > MindreÃ¥rig beboer udenfor Teen Second Life + </combo_item> <combo_box.item name="Assault__Combat_sandbox___unsafe_area" label="Overfald > Kamp sandkasse / Usikkert omrÃ¥de"/> <combo_box.item name="Assault__Safe_area" label="Overfald > Sikkert omrÃ¥de"/> <combo_box.item name="Assault__Weapons_testing_sandbox" label="Overfald > Sandkasse til vÃ¥bentest"/> @@ -68,13 +66,13 @@ <combo_box.item name="Harassment__Solicting_inciting_others_to_violate_ToS" label="Chikane > Opfordrer/kræver at andre overtræder licensbetingelser"/> <combo_box.item name="Harassment__Verbal_abuse" label="Chikane > Verbalt chikane"/> <combo_box.item name="Indecency__Broadly_offensive_content_or_conduct" label="Uanstændighed > Meget stødende indhold eller adfærd"/> - - - <combo_box.item name="Indecency__Inappropriate_avatar_name" label="Uanstændighed > Upassende avatar navn"/> - - - + <combo_item name="Indecency__Mature_content_in_PG_region"> + Usømmelighed > Upassende inhold eller opførsel i en 'PG' region + </combo_item> + <combo_item name="Indecency__Inappropriate_content_in_Mature_region"> + Usømmelighed > Upassende inhold eller opførsel i en 'Mature' region + </combo_item> <combo_box.item name="Intellectual_property_infringement_Content_Removal" label="Krænkelse af intellektuelle ejendomsrettigheder > Indholds fjernelse"/> <combo_box.item name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit" label="Krænkelse af intellektuelle ejendomsrettigheder > CopyBot eller omgÃ¥else af rettighedsbeskyttelse"/> <combo_box.item name="Intolerance" label="Intolerance"/> @@ -88,10 +86,8 @@ <text name="abuser_name_title"> Udøvers navn: </text> - <button label="Vælg beboer" label_selected="" name="select_abuser" - tool_tip="Vælg navnet pÃ¥ udøveren fra denne liste" /> - <check_box label="Kender ikke udøvers navn" name="omit_abuser_name" - tool_tip="Afkryds her, hvis du ikke kender navn pÃ¥ udøvers" /> + <button label="Vælg beboer" label_selected="" name="select_abuser" tool_tip="Vælg navnet pÃ¥ udøveren fra denne liste"/> + <check_box label="Kender ikke udøvers navn" name="omit_abuser_name" tool_tip="Afkryds her, hvis du ikke kender navn pÃ¥ udøvers"/> <text name="abuser_name_title2"> Sted for misbrug/overgreb: </text> @@ -102,11 +98,12 @@ Detaljer: </text> <text name="bug_aviso"> - Vær venligst præcis omkring dato, sted, overgrebets natur, relevant chat/IM og vælg objekt hvis muligt. + Vær venligst præcis omkring dato, sted, overgrebets +natur, relevant chat/IM og vælg objekt hvis muligt. </text> <text name="incomplete_title"> Note: Ufuldstændige rapporter vil ikke blive undersøgt. </text> - <button label="Annullér" label_selected="Annullér" name="cancel_btn" /> - <button label="Rapporter misbrug" label_selected="Rapporter misbrug" name="send_btn" /> + <button label="Annullér" label_selected="Annullér" name="cancel_btn"/> + <button label="Rapporter misbrug" label_selected="Rapporter misbrug" name="send_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/da/floater_sell_land.xml b/indra/newview/skins/default/xui/da/floater_sell_land.xml index 6793af0d2a0b616c1122cac3d54304285243a204..fc88b3d49a32d6b6bd9eac4ec23ddb521c0271fc 100644 --- a/indra/newview/skins/default/xui/da/floater_sell_land.xml +++ b/indra/newview/skins/default/xui/da/floater_sell_land.xml @@ -46,12 +46,8 @@ Dine objekter der kan videregives sælges med jorden. </text> <radio_group name="sell_objects"> - <radio_item name="no"> - Nej, behold ejerskab til objekterne - </radio_item> - <radio_item name="yes"> - Ja, sælg objekter med jorden - </radio_item> + <radio_item name="no" label="Nej, behold ejerskab til objekterne" /> + <radio_item name="yes" label="Ja, sælg objekter med jorden" /> </radio_group> <button label="Vis objekter" name="show_objects" /> <text name="nag_message_label"> diff --git a/indra/newview/skins/default/xui/da/floater_snapshot.xml b/indra/newview/skins/default/xui/da/floater_snapshot.xml index df1a124a9fd512622c707c5aed0d89011569588d..ed715bdb3929715aa69acdf8dc84b1b05eef6659 100644 --- a/indra/newview/skins/default/xui/da/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/da/floater_snapshot.xml @@ -1,29 +1,30 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Snapshot" title="Se foto"> <text name="type_label"> Hvor skal foto hen? </text> <radio_group label="Snapshot type" name="snapshot_type_radio"> - <radio_item name="postcard"> - Send via e-mail - </radio_item> - <radio_item name="texture"> - Gem i din beholdning (L$[AMOUNT]) - </radio_item> - <radio_item name="local"> - Gem pÃ¥ din computer - </radio_item> + <radio_item name="postcard" label="Send via e-mail" /> + <radio_item name="texture" label="Gem i din beholdning (L$[AMOUNT])" /> + <radio_item name="local" label="Gem pÃ¥ din computer" /> </radio_group> <text name="file_size_label"> Fil størrelse: [SIZE] KB </text> - <button label="Tag nyt foto" name="new_snapshot_btn" /> - <button label="Send" name="send_btn" /> - <button label="Gem (L$[AMOUNT])" name="upload_btn" /> - <flyout_button label="Gem" name="save_btn" /> - <button label="Annullér" name="discard_btn" /> - <button label="Mere >>" name="more_btn" /> - <button label="<< Mindre" name="less_btn" /> + <button label="Tag nyt foto" name="new_snapshot_btn"/> + <button label="Send" name="send_btn"/> + <button label="Gem (L$[AMOUNT])" name="upload_btn"/> + <flyout_button label="Gem" name="save_btn" tool_tip="Gem billede i pÃ¥ din computer"> + <flyout_button_item name="save_item"> + Gem + </flyout_button_item> + <flyout_button_item name="saveas_item"> + Gem som... + </flyout_button_item> + </flyout_button> + <button label="Annullér" name="discard_btn"/> + <button label="Mere >>" name="more_btn" tool_tip="Avancerede valg"/> + <button label="<< Mindre" name="less_btn" tool_tip="Avancerede valg"/> <text name="type_label2"> Størrelse </text> @@ -54,15 +55,15 @@ <combo_box.item name="1600x1200" label="1600x1200"/> <combo_box.item name="Custom" label="Manuelt"/> </combo_box> - <combo_box label="Fil-format" name="local_format_combo"> + <combo_box label="Fil-format" name="local_format_combo" width="76"> <combo_box.item name="PNG" label="PNG"/> <combo_box.item name="JPEG" label="JPEG"/> <combo_box.item name="BMP" label="BMP"/> </combo_box> - <spinner label="Bredde" name="snapshot_width" /> - <spinner label="Højde" name="snapshot_height" /> - <check_box label="Fasthold proportioner" name="keep_aspect_check" /> - <slider label="Billed-kvalitet" name="image_quality_slider" /> + <spinner label="Bredde" name="snapshot_width" label_width="41" width="101"/> + <spinner label="Højde" name="snapshot_height" label_width="32" width="92" left="117"/> + <check_box label="Fasthold proportioner" name="keep_aspect_check"/> + <slider label="Billed-kvalitet" name="image_quality_slider"/> <text name="layer_type_label"> Benyt: </text> @@ -71,9 +72,12 @@ <combo_box.item name="Depth" label="Dybde"/> <combo_box.item name="ObjectMattes" label="Materinger"/> </combo_box> - <check_box label="Vis brugerflade pÃ¥ foto" name="ui_check" /> - <check_box label="Vis HUD objekter pÃ¥ foto" name="hud_check" /> - <check_box label="Luk ikke vindue ved gemning" name="keep_open_check" /> - <check_box label="Frys billede og vis" name="freeze_frame_check" /> - <check_box label="Auto-opdater" name="auto_snapshot_check" /> + <check_box label="Vis brugerflade pÃ¥ foto" name="ui_check"/> + <check_box label="Vis HUD objekter pÃ¥ foto" name="hud_check"/> + <check_box label="Luk ikke vindue ved gemning" name="keep_open_check"/> + <check_box label="Frys billede og vis" name="freeze_frame_check"/> + <check_box label="Auto-opdater" name="auto_snapshot_check"/> + <string name="unknown"> + ukendt + </string> </floater> diff --git a/indra/newview/skins/default/xui/da/floater_tools.xml b/indra/newview/skins/default/xui/da/floater_tools.xml index 918999eedd1b78a4f6cf6570eb2398ccc188d8ce..ccb8c67b687166ddd9552249ae77beec324d7ba4 100644 --- a/indra/newview/skins/default/xui/da/floater_tools.xml +++ b/indra/newview/skins/default/xui/da/floater_tools.xml @@ -1,21 +1,21 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="toolbox floater" title=""> - <button label="" label_selected="" name="button focus" tool_tip="Fokus" /> - <button label="" label_selected="" name="button move" tool_tip="Flyt" /> - <button label="" label_selected="" name="button edit" tool_tip="Redigér" /> - <button label="" label_selected="" name="button create" tool_tip="Opret" /> - <button label="" label_selected="" name="button land" tool_tip="Land" /> - <check_box label="Zoom" name="radio zoom" /> - <check_box label="Kredsløb (Ctrl)" name="radio orbit" /> - <check_box label="Panorér (Ctrl-Shift)" name="radio pan" /> - <check_box label="Flyt" name="radio move" /> - <check_box label="Løft (Ctrl)" name="radio lift" /> - <check_box label="Spin (Ctrl-Shift)" name="radio spin" /> - <check_box label="Position" name="radio position" /> - <check_box label="Rotér (Ctrl)" name="radio rotate" /> - <check_box label="Stræk (Ctrl-Shift)" name="radio stretch" /> - <check_box label="Vælg tekstur" name="radio select face" /> - <check_box label="Redigér sammenlænkede dele" name="checkbox edit linked parts" /> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="toolbox floater" title="" short_title="Byg"> + <button label="" label_selected="" name="button focus" tool_tip="Fokus"/> + <button label="" label_selected="" name="button move" tool_tip="Flyt"/> + <button label="" label_selected="" name="button edit" tool_tip="Redigér"/> + <button label="" label_selected="" name="button create" tool_tip="Opret"/> + <button label="" label_selected="" name="button land" tool_tip="Land"/> + <check_box label="Zoom" name="radio zoom"/> + <check_box label="Kredsløb (Ctrl)" name="radio orbit"/> + <check_box label="Panorér (Ctrl-Shift)" name="radio pan"/> + <check_box label="Flyt" name="radio move"/> + <check_box label="Løft (Ctrl)" name="radio lift"/> + <check_box label="Spin (Ctrl-Shift)" name="radio spin"/> + <check_box label="Position" name="radio position"/> + <check_box label="Rotér (Ctrl)" name="radio rotate"/> + <check_box label="Stræk (Ctrl-Shift)" name="radio stretch"/> + <check_box label="Vælg tekstur" name="radio select face"/> + <check_box label="Redigér sammenlænkede dele" name="checkbox edit linked parts"/> <text name="text ruler mode"> Lineal: </text> @@ -24,10 +24,10 @@ <combo_box.item name="Local" label="Lokal"/> <combo_box.item name="Reference" label="Reference"/> </combo_box> - <check_box label="Stræk begge sider" name="checkbox uniform" /> - <check_box label="Stræk teksturer" name="checkbox stretch textures" /> - <check_box label="Benyt gitter" name="checkbox snap to grid" /> - <button label="Valg..." label_selected="Valg..." name="Options..." /> + <check_box label="Stræk begge sider" name="checkbox uniform"/> + <check_box label="Stræk teksturer" name="checkbox stretch textures"/> + <check_box label="Benyt gitter" name="checkbox snap to grid"/> + <button label="Valg..." label_selected="Valg..." name="Options..." height="18" bottom_delta="-15"/> <text name="text status"> Træk for at flytte, shift+træk for at kopiere </text> @@ -48,28 +48,35 @@ <button label="" label_selected="" name="ToolGrass" tool_tip="Græs" /> <check_box label="Hold værktøjet valgt" name="checkbox sticky" /> <check_box label="Kopiér valgte" name="checkbox copy selection" /> - <check_box label="Centréret kopi" name="checkbox copy centers" /> - <check_box label="Rotér kopi" name="checkbox copy rotates" /> - <check_box label="Vælg land" name="radio select land" /> - <check_box label="Udflad land" name="radio flatten" /> - <check_box label="Hæv land" name="radio raise" /> - <check_box label="Sænk land" name="radio lower" /> - <check_box label="Udjævn land" name="radio smooth" /> - <check_box label="Gør land ujævnt" name="radio noise" /> + <check_box label="Centreret kopi" name="checkbox copy centers" /> + <check_box label="Rotér" name="checkbox copy rotates" /> + <check_box label="Vælg" name="radio select land" /> + <check_box label="Udflad" name="radio flatten" /> + <check_box label="Hæv" name="radio raise" /> + <check_box label="Sænk" name="radio lower" /> + <check_box label="Udjævn" name="radio smooth" /> + <check_box label="Gør ujævnt" name="radio noise" /> <check_box label="Tilbagefør" name="radio revert" /> <combo_box name="combobox brush size"> <combo_box.item name="Small" label="Lille"/> - <combo_box.item name="Medium" label="Mellem"/> + <combo_box.item name ="Medium" label="Mellem"/> <combo_box.item name="Large" label="Stor"/> </combo_box> <text type="string" length="1" name="Strength:"> Styrke: </text> - <button label="Anvend pÃ¥ valgte" label_selected="Anvend pÃ¥ valgte" - name="button apply to selection" tool_tip="Redigér valgt land" /> - <check_box label="Vis ejere" name="checkbox show owners" /> - <button label="Mere >>" name="button more" tool_tip="Adancerede valgmuligheder" /> - <button label="<< Mindre" name="button less" tool_tip="Adancerede valgmuligheder" /> + <text name="Dozer Size:"> + Størrelse + </text> + <text length="1" name="Strength:" type="string"> + Styrke + </text> + <text name="obj_count"> + Valgte objekter: [COUNT] + </text> + <text name="prim_count"> + prims: [COUNT] + </text> <tab_container name="Object Info Tabs"> <panel label="Generelt" name="General"> <text name="Name:"> @@ -84,65 +91,53 @@ <text name="Creator Name"> Thrax Linden </text> - <button label="Profil..." label_selected="Profil..." name="button creator profile" /> + <button label="Profil..." label_selected="Profil..." name="button creator profile"/> <text name="Owner:"> Ejer: </text> <text name="Owner Name"> Thrax Linden </text> - <button label="Profil..." label_selected="Profil..." name="button owner profile" /> + <button label="Profil..." label_selected="Profil..." name="button owner profile"/> <text name="Group:"> Gruppe: </text> <text name="Group Name Proxy"> The Lindens </text> - <button label="Sæt..." label_selected="Sæt..." name="button set group" /> - <text name="prim info"> - 1 Objekt, 1 Prim - </text> + <button label="Sæt..." label_selected="Sæt..." name="button set group"/> <text name="Permissions:"> Tilladelser: </text> <text name="perm_modify"> Du kan redigére dette objekt. </text> - <check_box label="Del med gruppe" name="checkbox share with group" - tool_tip="Tillad gruppemedlemmer at flytte, ændre, kopiere og slette." /> + <check_box label="Del med gruppe" name="checkbox share with group" tool_tip="Tillad gruppemedlemmer at flytte, ændre, kopiere og slette."/> <string name="text deed continued"> Deed... </string> <string name="text deed"> Deed </string> - <button label="Dedikér..." label_selected="Dedikér..." name="button deed" - tool_tip="Gruppedelte genstande kan dedikeres af en gruppeadministrator." /> - <check_box label="Tillad enhver at flytte" name="checkbox allow everyone move" /> - <check_box label="Tillad enhver at kopiére" name="checkbox allow everyone copy" /> - <check_box label="Vis i søgning" name="search_check" - tool_tip="Lad folk se dette objekt i søgeresultater" /> - <check_box label="Til salg" name="checkbox for sale" /> + <button label="Dedikér..." label_selected="Dedikér..." name="button deed" tool_tip="Gruppedelte genstande kan dedikeres af en gruppeadministrator."/> + <check_box label="Tillad enhver at flytte" name="checkbox allow everyone move"/> + <check_box label="Tillad enhver at kopiére" name="checkbox allow everyone copy"/> + <check_box label="Vis i søgning" name="search_check" tool_tip="Lad folk se dette objekt i søgeresultater"/> + <check_box label="Til salg" name="checkbox for sale"/> <text name="Cost"> Pris: L$ </text> <radio_group name="sale type"> - <radio_item name="Original"> - Original - </radio_item> - <radio_item name="Copy"> - Kopi - </radio_item> - <radio_item name="Contents"> - Indhold - </radio_item> + <radio_item name="Original" label="Original" /> + <radio_item name="Copy" label="Kopi" /> + <radio_item name="Contents" label="Indhold" /> </radio_group> <text name="Next owner can:"> Næste ejer kan: </text> - <check_box label="Redigére" name="checkbox next owner can modify" /> - <check_box label="Kopiére" name="checkbox next owner can copy" /> - <check_box label="Sælge/Give væk" name="checkbox next owner can transfer" /> + <check_box label="Redigére" name="checkbox next owner can modify"/> + <check_box label="Kopiére" name="checkbox next owner can copy" left_delta="80"/> + <check_box label="Sælge/Give væk" name="checkbox next owner can transfer" left_delta="67"/> <text name="label click action"> NÃ¥r der venstreklikkes: </text> @@ -173,6 +168,36 @@ <text name="F:"> F: </text> + <string name="text modify info 1"> + Du kan redigere dette objekt + </string> + <string name="text modify info 2"> + Du kan redigere disse objekter + </string> + <string name="text modify info 3"> + Du kan ikke redigere dette objekt. + </string> + <string name="text modify info 4"> + Du kan ikke redigere disse objekter. + </string> + <string name="text modify warning"> + Du skal vælge hele objektet for at sætte rettigheder. + </string> + <string name="Cost Default"> + Pris: L$ + </string> + <string name="Cost Total"> + Total pris: L$ + </string> + <string name="Cost Per Unit"> + Pris Pr: L$ + </string> + <string name="Cost Mixed"> + Blandet pris + </string> + <string name="Sale Mixed"> + Blandet salg + </string> </panel> <panel label="Objekt" name="Object"> <text name="select_single"> @@ -181,32 +206,28 @@ <text name="edit_object"> Ret objektets indstillinger: </text> - <check_box label="LÃ¥st" name="checkbox locked" - tool_tip="Forhindrer objektet i at blive flyttet eller slettet. Ofte brugbar under byggeri for at forhindre utilsigtet ændring." /> - <check_box label="Fysisk" name="Physical Checkbox Ctrl" - tool_tip="Tillader objekter at blive skubbet og at være pÃ¥virkelig af tyngdekraften" /> - <check_box label="Temporær" name="Temporary Checkbox Ctrl" - tool_tip="MedfÃ¥rer at objekter bliver slettet 1 minut efter de er skabt." /> - <check_box label="Uden masse" name="Phantom Checkbox Ctrl" - tool_tip="FÃ¥r objektet til ikke at kollidere med andre objekter eller personer" /> + <check_box label="LÃ¥st" name="checkbox locked" tool_tip="Forhindrer objektet i at blive flyttet eller slettet. Ofte brugbar under byggeri for at forhindre utilsigtet ændring."/> + <check_box label="Fysisk" name="Physical Checkbox Ctrl" tool_tip="Tillader objekter at blive skubbet og at være pÃ¥virkelig af tyngdekraften"/> + <check_box label="Temporær" name="Temporary Checkbox Ctrl" tool_tip="MedfÃ¥rer at objekter bliver slettet 1 minut efter de er skabt."/> + <check_box label="Uden masse" name="Phantom Checkbox Ctrl" tool_tip="FÃ¥r objektet til ikke at kollidere med andre objekter eller personer"/> <text name="label position"> Position (meter) </text> - <spinner label="X" name="Pos X" /> - <spinner label="Y" name="Pos Y" /> - <spinner label="Z" name="Pos Z" /> + <spinner label="X" name="Pos X"/> + <spinner label="Y" name="Pos Y"/> + <spinner label="Z" name="Pos Z"/> <text name="label size"> Størrelse (meter) </text> - <spinner label="X" name="Scale X" /> - <spinner label="Y" name="Scale Y" /> - <spinner label="Z" name="Scale Z" /> + <spinner label="X" name="Scale X"/> + <spinner label="Y" name="Scale Y"/> + <spinner label="Z" name="Scale Z"/> <text name="label rotation"> Rotation (grader) </text> - <spinner label="X" name="Rot X" /> - <spinner label="Y" name="Rot Y" /> - <spinner label="Z" name="Rot Z" /> + <spinner label="X" name="Rot X"/> + <spinner label="Y" name="Rot Y"/> + <spinner label="Z" name="Rot Z"/> <text name="label material"> Materiale </text> @@ -235,8 +256,8 @@ <text name="text cut"> Snit begynd og slut </text> - <spinner label="B" name="cut begin" /> - <spinner label="E" name="cut end" /> + <spinner label="B" name="cut begin"/> + <spinner label="S" name="cut end"/> <text name="text hollow"> Hul </text> @@ -253,48 +274,48 @@ <combo_box.item name="Triangle" label="Trekant"/> </combo_box> <text name="text twist"> - Vrid - start og slut + Vrid begynd og slut </text> - <spinner label="B" name="Twist Begin" /> - <spinner label="E" name="Twist End" /> + <spinner label="B" name="Twist Begin"/> + <spinner label="S" name="Twist End"/> <text name="scale_taper"> Konus </text> <text name="scale_hole"> Hulstørrelse </text> - <spinner label="X" name="Taper Scale X" /> - <spinner label="Y" name="Taper Scale Y" /> + <spinner label="X" name="Taper Scale X"/> + <spinner label="Y" name="Taper Scale Y"/> <text name="text topshear"> Topforskydning </text> - <spinner label="X" name="Shear X" /> - <spinner label="Y" name="Shear Y" /> + <spinner label="X" name="Shear X"/> + <spinner label="Y" name="Shear Y"/> <text name="advanced_cut"> - Profilsnit - begynd og slut + Profilsnit begynd og slut </text> <text name="advanced_dimple"> - Fordybning - begynd og slut + Fordybning begynd og slut </text> - <spinner label="B" name="Path Limit Begin" /> - <spinner label="E" name="Path Limit End" /> + <text name="advanced_slice"> + Snit begynd og slut + </text> + <spinner label="B" name="Path Limit Begin"/> + <spinner label="S" name="Path Limit End"/> <text name="text taper2"> Konus </text> - <spinner label="X" name="Taper X" /> - <spinner label="Y" name="Taper Y" /> + <spinner label="X" name="Taper X"/> + <spinner label="Y" name="Taper Y"/> <text name="text radius delta"> Radius </text> <text name="text revolutions"> Omdrejninger </text> - <texture_picker label="Sculpt tekstur" name="sculpt texture control" - tool_tip="Klik her for at vælge billede" /> - <check_box label="Spejlet" name="sculpt mirror control" - tool_tip="Spejler sculpted prim omkring X aksen." /> - <check_box label="Vrangen ud" name="sculpt invert control" - tool_tip="Vender 'vrangen' ud pÃ¥ sculpted prim." /> + <texture_picker label="Sculpt tekstur" name="sculpt texture control" tool_tip="Klik her for at vælge billede"/> + <check_box label="Spejlet" name="sculpt mirror control" tool_tip="Spejler sculpted prim omkring X aksen."/> + <check_box label="Vrangen ud" name="sculpt invert control" tool_tip="Vender 'vrangen' ud pÃ¥ sculpted prim."/> <text name="label sculpt type"> Sting type </text> @@ -313,36 +334,36 @@ <text name="edit_object"> Redigér objektets egenskaber: </text> - <check_box label="Fleksibel/blød" name="Flexible1D Checkbox Ctrl" - tool_tip="Tillader objektet at ændre form omkring Z-aksen. (Kun pÃ¥ klient-siden)" /> - <spinner label="Blødhed" name="FlexNumSections" /> - <spinner label="Tyngdekraft" name="FlexGravity" /> - <spinner label="Træk" name="FlexFriction" /> - <spinner label="Vind" name="FlexWind" /> - <spinner label="Spændstighed" name="FlexTension" /> - <spinner label="Kraft X" name="FlexForceX" /> - <spinner label="Kraft Y" name="FlexForceY" /> - <spinner label="Kraft Z" name="FlexForceZ" /> - <check_box label="Lys" name="Light Checkbox Ctrl" - tool_tip="MedfÃ¥rer at objektet afgiver lys" /> + <check_box label="Fleksibel/blød" name="Flexible1D Checkbox Ctrl" tool_tip="Tillader objektet at ændre form omkring Z-aksen. (Kun pÃ¥ klient-siden)"/> + <spinner label_width="78" width="141" label="Blødhed" name="FlexNumSections"/> + <spinner label_width="78" width="141" label="Tyngdekraft" name="FlexGravity"/> + <spinner label_width="78" width="141" label="Træk" name="FlexFriction"/> + <spinner label_width="78" width="141" label="Vind" name="FlexWind"/> + <spinner label_width="78" width="141" label="Spændstighed" name="FlexTension"/> + <spinner label_width="78" width="141" label="Kraft X" name="FlexForceX"/> + <spinner label_width="78" width="141" label="Kraft Y" name="FlexForceY"/> + <spinner label_width="78" width="141" label="Kraft Z" name="FlexForceZ"/> + <check_box label="Lys" name="Light Checkbox Ctrl" tool_tip="MedfÃ¥rer at objektet afgiver lys"/> <text name="label color"> Farve </text> - <color_swatch label="" name="colorswatch" tool_tip="Klik for at Ã¥bne farvevælger" /> - <spinner label="Intensitet" name="Light Intensity" /> - <spinner label="Radius" name="Light Radius" /> - <spinner label="Udfasning" name="Light Falloff" /> + <color_swatch label="" name="colorswatch" tool_tip="Klik for at Ã¥bne farvevælger"/> + <spinner label="Intensitet" name="Light Intensity"/> + <spinner label="Radius" name="Light Radius"/> + <spinner label="Udfasning" name="Light Falloff"/> </panel> <panel label="Tekstur" name="Texture"> - <texture_picker label="Tekstur" name="texture control" tool_tip="Klik for at vælge billede" /> - <color_swatch label="Farve" name="colorswatch" tool_tip="Klik for at Ã¥bne farvevælger" /> - <text name="color trans"> - Gennemsigtighed % + <texture_picker label="Tekstur" name="texture control" tool_tip="Klik for at vælge billede"/> + <color_swatch label="Farve" name="colorswatch" tool_tip="Klik for at Ã¥bne farvevælger"/> + <text name="color trans" left="170" width="105"> + Gennemsigtighed% </text> - <text name="glow label"> + <spinner left="171" name="ColorTrans"/> + <text name="glow label" left="170"> Glød </text> - <check_box label="Selvlysende" name="checkbox fullbright" /> + <spinner left="170" name="glow"/> + <check_box label="Selvlysende" name="checkbox fullbright" left="170"/> <text name="tex gen"> Afbildning </text> @@ -385,10 +406,10 @@ <text name="tex scale"> Gentagelser pr. overflade </text> - <spinner label="Vandret (U)" name="TexScaleU" /> - <check_box label="Vend" name="checkbox flip s" /> - <spinner label="Lodret (V)" name="TexScaleV" /> - <check_box label="Vend" name="checkbox flip t" /> + <spinner label="Vandret (U)" name="TexScaleU"/> + <check_box label="Vend" name="checkbox flip s"/> + <spinner label="Lodret (V)" name="TexScaleV"/> + <check_box label="Vend" name="checkbox flip t"/> <text name="tex rotate"> Rotation (grader) </text> @@ -401,34 +422,86 @@ <text name="rpt"> Gentagelser pr. meter </text> - <button label="Gem" label_selected="Gem" name="button apply" /> + <spinner left="125" name="TexRot" width="55" /> + <spinner left="125" name="rptctrl" width="55" /> + <button label="Gem" label_selected="Gem" name="button apply" left_delta="62"/> <text name="tex offset"> Offset </text> - <spinner label="Vandret (U)" name="TexOffsetU" /> - <spinner label="Lodret (V)" name="TexOffsetV" /> + <spinner label="Vandret (U)" name="TexOffsetU"/> + <spinner label="Lodret (V)" name="TexOffsetV"/> <text name="textbox autofix"> Rette medie tekstur ind (skal indlæses først) </text> - <button label="Ret ind" label_selected="Ret ind" name="button align" /> + <button label="Ret ind" label_selected="Ret ind" name="button align" left="160"/> </panel> <panel label="Indhold" name="Contents"> - <button label="Nyt script..." label_selected="Nyt script..." name="button new script" /> + <button label="Nyt script" label_selected="Nyt script..." name="button new script"/> + <button label="Rettigheder..." name="button permissions"/> </panel> </tab_container> <panel name="land info panel"> + <text name="label_parcel_info"> + Parcel information + </text> <text name="label_area_price"> Pris: L$[PRICE] for [AREA] m². </text> <text name="label_area"> OmrÃ¥de: [AREA] m². </text> - <button label="Køb land..." label_selected="Køb land..." name="button buy land" /> - <button label="Flyt fra land..." label_selected="Flyt fra land..." - name="button abandon land" /> - <button label="Opdel..." label_selected="Opdel..." name="button subdivide land" /> - <button label="Saml..." label_selected="Saml..." name="button join land" /> - <button label="Om land..." label_selected="Om land..." name="button about land" /> + <button label="Om land..." label_selected="Om land..." name="button about land"/> + <check_box label="Vis ejere" name="checkbox show owners" tool_tip="Farver grunde afhængigt af ejerskab"/> + <button label="?" label_selected="?" name="button show owners help"/> + <text name="label_parcel_modify"> + Redigere grund + </text> + <button label="Opdel..." label_selected="Opdel..." name="button subdivide land"/> + <button label="Saml..." label_selected="Saml..." name="button join land"/> + <text name="label_parcel_trans"> + Transaktioner for land + </text> + <button label="Køb land..." label_selected="Køb land..." name="button buy land"/> + <button label="Flyt fra land..." label_selected="Flyt fra land..." name="button abandon land"/> </panel> + <string name="status_rotate"> + Træk i de farvede bÃ¥nd for at rotere objekt + </string> + <string name="status_scale"> + Klik og træk for at strække valgte side + </string> + <string name="status_move"> + Træk for at flytte, hold shift nede for at kopiere + </string> + <string name="status_modifyland"> + Klik og hold for at redigere land + </string> + <string name="status_camera"> + Klik og træk for at ændre synsvinkel + </string> + <string name="status_grab"> + Træk for at flytte objekter, Ctrl for at løfte, Ctrl-Shift for at rotere + </string> + <string name="status_place"> + Klik et sted i verden for at bygge + </string> + <string name="status_selectland"> + Klik og træk for at vælge land + </string> + <string name="grid_screen_text"> + Skærm + </string> + <string name="grid_local_text"> + Lokalt + </string> + <string name="grid_world_text"> + Verden + </string> + <string name="grid_reference_text"> + Reference + </string> + <string name="grid_attachment_text"> + Vedhæng + </string> </floater> diff --git a/indra/newview/skins/default/xui/da/floater_top_objects.xml b/indra/newview/skins/default/xui/da/floater_top_objects.xml index d5ba563b841b3d7ab08f0693536cbb134e163d21..dc4605cc121f357eed2e14223170c7639ef1afdf 100644 --- a/indra/newview/skins/default/xui/da/floater_top_objects.xml +++ b/indra/newview/skins/default/xui/da/floater_top_objects.xml @@ -1,55 +1,55 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="top_objects" title="Indlæser..."> - <text name="title_text"> - Henter... - </text> - <scroll_list name="objects_list"> - <column label="Point" name="score" /> - <column label="Navn" name="name" /> - <column label="Ejer" name="owner" /> - <column label="Lokation" name="location" /> - <column label="Tid" name="time" /> - <column label="Mono tid" name="mono_time" /> - </scroll_list> - <text name="id_text"> - Objekt ID: - </text> - <button label="Vis pejlelys" name="show_beacon_btn" /> - <text name="obj_name_text"> - Objekt navn: - </text> - <button label="Filter" name="filter_object_btn" /> - <text name="owner_name_text"> - Ejers navn: - </text> - <button label="Filter" name="filter_owner_btn" /> - <button label="Returnér valgte" name="return_selected_btn" /> - <button label="Returnér alle" name="return_all_btn" /> - <button label="Afbryd valgte" name="disable_selected_btn" /> - <button label="Afbryd alle" name="disable_all_btn" /> - <button label="Genopfrisk" name="refresh_btn" /> - <string name="top_scripts_title"> - Mest krævende scripts - </string> - <string name="top_scripts_text"> - [COUNT] scripts bruger ialt [TIME] ms - </string> - <string name="scripts_score_label"> - Tid - </string> - <string name="scripts_mono_time_label"> - Mono tid - </string> - <string name="top_colliders_title"> - Mest kolliderende - </string> - <string name="top_colliders_text"> - Top [COUNT] genstande der potentielt har mange kollisioner - </string> - <string name="colliders_score_label"> - Point - </string> - <string name="none_descriptor"> - Ingen fundet - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater name="top_objects" title="Indlæser..."> + <text name="title_text"> + Henter... + </text> + <scroll_list name="objects_list"> + <column label="Point" name="score" /> + <column label="Navn" name="name" /> + <column label="Ejer" name="owner" /> + <column label="Lokation" name="location" /> + <column label="Tid" name="time" /> + <column label="Mono tid" name="mono_time" /> + </scroll_list> + <text name="id_text"> + Objekt ID: + </text> + <button label="Vis pejlelys" name="show_beacon_btn" /> + <text name="obj_name_text"> + Objekt navn: + </text> + <button label="Filter" name="filter_object_btn" /> + <text name="owner_name_text"> + Ejers navn: + </text> + <button label="Filter" name="filter_owner_btn" /> + <button label="Returnér valgte" name="return_selected_btn" /> + <button label="Returnér alle" name="return_all_btn" /> + <button label="Afbryd valgte" name="disable_selected_btn" /> + <button label="Afbryd alle" name="disable_all_btn" /> + <button label="Genopfrisk" name="refresh_btn" /> + <string name="top_scripts_title"> + Mest krævende scripts + </string> + <string name="top_scripts_text"> + [COUNT] scripts bruger ialt [TIME] ms + </string> + <string name="scripts_score_label"> + Tid + </string> + <string name="scripts_mono_time_label"> + Mono tid + </string> + <string name="top_colliders_title"> + Mest kolliderende + </string> + <string name="top_colliders_text"> + Top [COUNT] genstande der potentielt har mange kollisioner + </string> + <string name="colliders_score_label"> + Point + </string> + <string name="none_descriptor"> + Ingen fundet + </string> +</floater> diff --git a/indra/newview/skins/default/xui/da/floater_url_entry.xml b/indra/newview/skins/default/xui/da/floater_url_entry.xml index d74c035d3c5ebcf49c9782106cda81559e551370..30b3b7184bced0cedff353db3bbb8c0e0114055f 100644 --- a/indra/newview/skins/default/xui/da/floater_url_entry.xml +++ b/indra/newview/skins/default/xui/da/floater_url_entry.xml @@ -1,12 +1,12 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="url_entry" title=""> - <text name="media_label"> - Medie URL: - </text> - <button label="OK" name="ok_btn" /> - <button label="Annullér" name="cancel_btn" /> - <button label="Ryd" name="clear_btn" /> - <text name="loading_label"> - Indlæser... - </text> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater name="url_entry" title=""> + <text name="media_label"> + Medie URL: + </text> + <button label="OK" name="ok_btn" /> + <button label="Annullér" name="cancel_btn" /> + <button label="Ryd" name="clear_btn" /> + <text name="loading_label"> + Indlæser... + </text> +</floater> diff --git a/indra/newview/skins/default/xui/da/floater_water.xml b/indra/newview/skins/default/xui/da/floater_water.xml index c28f9b48bcfd4e3b243fc87cd5aee550dd341106..aa04fd805a652ad5363f2091598cad4829cba175 100644 --- a/indra/newview/skins/default/xui/da/floater_water.xml +++ b/indra/newview/skins/default/xui/da/floater_water.xml @@ -1,103 +1,103 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="Water Floater" title="Avanceret opsætning af vand"> - <text type="string" length="1" name="KeyFramePresetsText"> - Vand opsætninger: - </text> - <button label="Ny" label_selected="Ny" name="WaterNewPreset" /> - <button label="Gem" label_selected="Gem" name="WaterSavePreset" /> - <button label="Slet" label_selected="Slet" name="WaterDeletePreset" /> - <tab_container name="Water Tabs"> - <panel label="Opsætning" name="Settings"> - <text type="string" length="1" name="BHText"> - VandtÃ¥ge farve - </text> - <button label="?" name="WaterFogColorHelp" /> - <color_swatch label="" name="WaterFogColor" tool_tip="Click to open Color Picker" /> - <text type="string" length="1" name="WaterFogDensText"> - TÃ¥ge tæthedskarakteristik - </text> - <button label="?" name="WaterFogDensityHelp" /> - <slider label="" name="WaterFogDensity" /> - <text type="string" length="1" name="WaterUnderWaterFogModText"> - Tilretning undervandstÃ¥ge - </text> - <button label="?" name="WaterUnderWaterFogModHelp" /> - <slider label="" name="WaterUnderWaterFogMod" /> - <text type="string" length="1" name="BDensText"> - Lille bølge reflektionsskala - </text> - <button label="?" name="WaterNormalScaleHelp" /> - <text type="string" length="1" name="BHText2"> - 1 - </text> - <text type="string" length="1" name="BHText3"> - 2 - </text> - <text type="string" length="1" name="BHText4"> - 3 - </text> - <slider label="" name="WaterNormalScaleX" /> - <slider label="" name="WaterNormalScaleY" /> - <slider label="" name="WaterNormalScaleZ" /> - <text type="string" length="1" name="HDText"> - Spredningsskala - </text> - <button label="?" name="WaterFresnelScaleHelp" /> - <slider label="" name="WaterFresnelScale" /> - <text type="string" length="1" name="FresnelOffsetText"> - Spredning offset - </text> - <button label="?" name="WaterFresnelOffsetHelp" /> - <slider label="" name="WaterFresnelOffset" /> - <text type="string" length="1" name="DensMultText"> - Lysbrydning fra oven - </text> - <button label="?" name="WaterScaleAboveHelp" /> - <slider label="" name="WaterScaleAbove" /> - <text type="string" length="1" name="WaterScaleBelowText"> - Lysbrydning fra neden - </text> - <button label="?" name="WaterScaleBelowHelp" /> - <slider label="" name="WaterScaleBelow" /> - <text type="string" length="1" name="MaxAltText"> - Udviskning - </text> - <button label="?" name="WaterBlurMultiplierHelp" /> - <slider label="" name="WaterBlurMult" /> - </panel> - <panel label="Billede" name="Waves"> - <text type="string" length="1" name="BHText"> - Retning for store bølger - </text> - <button label="?" name="WaterWave1Help" /> - <text type="string" length="1" name="WaterWave1DirXText"> - X - </text> - <text type="string" length="1" name="WaterWave1DirYText"> - Y - </text> - <slider label="" name="WaterWave1DirX" /> - <slider label="" name="WaterWave1DirY" /> - <text type="string" length="1" name="BHText2"> - Retning for smÃ¥ bølger - </text> - <button label="?" name="WaterWave2Help" /> - <text type="string" length="1" name="WaterWave2DirXText"> - X - </text> - <text type="string" length="1" name="WaterWave2DirYText"> - Y - </text> - <slider label="" name="WaterWave2DirX" /> - <slider label="" name="WaterWave2DirY" /> - <text type="string" length="1" name="BHText3"> - Tekstur map - </text> - <button label="?" name="WaterNormalMapHelp" /> - <texture_picker label="" name="WaterNormalMap" /> - </panel> - </tab_container> - <string name="WLDefaultWaterNames"> - Default:Glassy:Pond:Murky:Second Plague:SNAKE!!!:Valdez - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater name="Water Floater" title="Avanceret opsætning af vand"> + <text type="string" length="1" name="KeyFramePresetsText"> + Vand opsætninger: + </text> + <button label="Ny" label_selected="Ny" name="WaterNewPreset" /> + <button label="Gem" label_selected="Gem" name="WaterSavePreset" /> + <button label="Slet" label_selected="Slet" name="WaterDeletePreset" /> + <tab_container name="Water Tabs"> + <panel label="Opsætning" name="Settings"> + <text type="string" length="1" name="BHText"> + VandtÃ¥ge farve + </text> + <button label="?" name="WaterFogColorHelp" /> + <color_swatch label="" name="WaterFogColor" tool_tip="Click to open Color Picker" /> + <text type="string" length="1" name="WaterFogDensText"> + TÃ¥ge tæthedskarakteristik + </text> + <button label="?" name="WaterFogDensityHelp" /> + <slider label="" name="WaterFogDensity" /> + <text type="string" length="1" name="WaterUnderWaterFogModText"> + Tilretning undervandstÃ¥ge + </text> + <button label="?" name="WaterUnderWaterFogModHelp" /> + <slider label="" name="WaterUnderWaterFogMod" /> + <text type="string" length="1" name="BDensText"> + Lille bølge reflektionsskala + </text> + <button label="?" name="WaterNormalScaleHelp" /> + <text type="string" length="1" name="BHText2"> + 1 + </text> + <text type="string" length="1" name="BHText3"> + 2 + </text> + <text type="string" length="1" name="BHText4"> + 3 + </text> + <slider label="" name="WaterNormalScaleX" /> + <slider label="" name="WaterNormalScaleY" /> + <slider label="" name="WaterNormalScaleZ" /> + <text type="string" length="1" name="HDText"> + Spredningsskala + </text> + <button label="?" name="WaterFresnelScaleHelp" /> + <slider label="" name="WaterFresnelScale" /> + <text type="string" length="1" name="FresnelOffsetText"> + Spredning offset + </text> + <button label="?" name="WaterFresnelOffsetHelp" /> + <slider label="" name="WaterFresnelOffset" /> + <text type="string" length="1" name="DensMultText"> + Lysbrydning fra oven + </text> + <button label="?" name="WaterScaleAboveHelp" /> + <slider label="" name="WaterScaleAbove" /> + <text type="string" length="1" name="WaterScaleBelowText"> + Lysbrydning fra neden + </text> + <button label="?" name="WaterScaleBelowHelp" /> + <slider label="" name="WaterScaleBelow" /> + <text type="string" length="1" name="MaxAltText"> + Udviskning + </text> + <button label="?" name="WaterBlurMultiplierHelp" /> + <slider label="" name="WaterBlurMult" /> + </panel> + <panel label="Billede" name="Waves"> + <text type="string" length="1" name="BHText"> + Retning for store bølger + </text> + <button label="?" name="WaterWave1Help" /> + <text type="string" length="1" name="WaterWave1DirXText"> + X + </text> + <text type="string" length="1" name="WaterWave1DirYText"> + Y + </text> + <slider label="" name="WaterWave1DirX" /> + <slider label="" name="WaterWave1DirY" /> + <text type="string" length="1" name="BHText2"> + Retning for smÃ¥ bølger + </text> + <button label="?" name="WaterWave2Help" /> + <text type="string" length="1" name="WaterWave2DirXText"> + X + </text> + <text type="string" length="1" name="WaterWave2DirYText"> + Y + </text> + <slider label="" name="WaterWave2DirX" /> + <slider label="" name="WaterWave2DirY" /> + <text type="string" length="1" name="BHText3"> + Tekstur map + </text> + <button label="?" name="WaterNormalMapHelp" /> + <texture_picker label="" name="WaterNormalMap" /> + </panel> + </tab_container> + <string name="WLDefaultWaterNames"> + Default:Glassy:Pond:Murky:Second Plague:SNAKE!!!:Valdez + </string> +</floater> diff --git a/indra/newview/skins/default/xui/da/floater_windlight_options.xml b/indra/newview/skins/default/xui/da/floater_windlight_options.xml index 9a020be5edd3c2691a319c13f758b84cbbd6ada7..ecb8b77c52188fbbba93151b712e42bf68380cb9 100644 --- a/indra/newview/skins/default/xui/da/floater_windlight_options.xml +++ b/indra/newview/skins/default/xui/da/floater_windlight_options.xml @@ -1,228 +1,228 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="WindLight floater" title="Avanceret opsætning for himmel"> - <text type="string" length="1" name="KeyFramePresetsText"> - Faste indstillinger: - </text> - <button label="Ny" label_selected="Ny" name="WLNewPreset" /> - <button label="Gem" label_selected="Gem" name="WLSavePreset" /> - <button label="Slet" label_selected="Slet" name="WLDeletePreset" /> - <button label="Dags cyklus" label_selected="Dags cyklus" name="WLDayCycleMenuButton" /> - <tab_container name="WindLight Tabs"> - <panel label="Atmosfære" name="Atmosphere"> - <text type="string" length="1" name="BHText"> - BlÃ¥ - horisont - </text> - <button label="?" name="WLBlueHorizonHelp" /> - <text type="string" length="1" name="BHText2"> - R - </text> - <text type="string" length="1" name="BHText3"> - G - </text> - <text type="string" length="1" name="BHText4"> - B - </text> - <text type="string" length="1" name="BHText5"> - I - </text> - <slider label="" name="WLBlueHorizonR" /> - <slider label="" name="WLBlueHorizonG" /> - <slider label="" name="WLBlueHorizonB" /> - <slider label="" name="WLBlueHorizonI" /> - <text type="string" length="1" name="BDensText"> - Dis - horisont - </text> - <button label="?" name="WLHazeHorizonHelp" /> - <slider label="" name="WLHazeHorizon" /> - <text type="string" length="1" name="BDensText2"> - BlÃ¥ - tæthed - </text> - <button label="?" name="WLBlueDensityHelp" /> - <text type="string" length="1" name="BHText6"> - R - </text> - <text type="string" length="1" name="BHText7"> - G - </text> - <text type="string" length="1" name="BHText8"> - B - </text> - <text type="string" length="1" name="BHText9"> - I - </text> - <slider label="" name="WLBlueDensityR" /> - <slider label="" name="WLBlueDensityG" /> - <slider label="" name="WLBlueDensityB" /> - <slider label="" name="WLBlueDensityI" /> - <text type="string" length="1" name="HDText"> - Dis - intensitet - </text> - <button label="?" name="WLHazeDensityHelp" /> - <slider label="" name="WLHazeDensity" /> - <text type="string" length="1" name="DensMultText"> - Densitet faktor - </text> - <button label="?" name="WLDensityMultHelp" /> - <slider label="" name="WLDensityMult" /> - <text type="string" length="1" name="WLDistanceMultText"> - Distance faktor - </text> - <button label="?" name="WLDistanceMultHelp" /> - <slider label="" name="WLDistanceMult" /> - <text type="string" length="1" name="MaxAltText"> - Maximum højde - </text> - <button label="?" name="WLMaxAltitudeHelp" /> - <slider label="" name="WLMaxAltitude" /> - </panel> - <panel label="Lys" name="Lighting"> - <text type="string" length="1" name="SLCText"> - Sol/MÃ¥ne farve - </text> - <button label="?" name="WLSunlightColorHelp" /> - <text type="string" length="1" name="BHText"> - R - </text> - <text type="string" length="1" name="BHText2"> - G - </text> - <text type="string" length="1" name="BHText3"> - B - </text> - <text type="string" length="1" name="BHText4"> - I - </text> - <slider label="" name="WLSunlightR" /> - <slider label="" name="WLSunlightG" /> - <slider label="" name="WLSunlightB" /> - <slider label="" name="WLSunlightI" /> - <text type="string" length="1" name="TODText"> - Sol/MÃ¥ne position - </text> - <button label="?" name="WLTimeOfDayHelp" /> - <slider label="" name="WLSunAngle" /> - <text type="string" length="1" name="WLAmbientText"> - Omgivende - </text> - <button label="?" name="WLAmbientHelp" /> - <text type="string" length="1" name="BHText5"> - R - </text> - <text type="string" length="1" name="BHText6"> - G - </text> - <text type="string" length="1" name="BHText7"> - B - </text> - <text type="string" length="1" name="BHText8"> - I - </text> - <slider label="" name="WLAmbientR" /> - <slider label="" name="WLAmbientG" /> - <slider label="" name="WLAmbientB" /> - <slider label="" name="WLAmbientI" /> - <text type="string" length="1" name="WLEastAngleText"> - Øst vinkel - </text> - <button label="?" name="WLEastAngleHelp" /> - <slider label="" name="WLEastAngle" /> - <text type="string" length="1" name="SunGlowText"> - Sol glød - </text> - <button label="?" name="WLSunGlowHelp" /> - <slider label="Fokus " name="WLGlowB" /> - <slider label="Størr. " name="WLGlowR" /> - <text type="string" length="1" name="SceneGammaText"> - Lysintensitet (gamma) - </text> - <button label="?" name="WLSceneGammaHelp" /> - <slider label="" name="WLGamma" /> - <text type="string" length="1" name="WLStarText"> - Stjerne intensitet - </text> - <button label="?" name="WLStarBrightnessHelp" /> - <slider label="" name="WLStarAlpha" /> - </panel> - <panel label="Skyer" name="Clouds"> - <text type="string" length="1" name="WLCloudColorText"> - Farve pÃ¥ skyer - </text> - <button label="?" name="WLCloudColorHelp" /> - <text type="string" length="1" name="BHText"> - R - </text> - <text type="string" length="1" name="BHText2"> - G - </text> - <text type="string" length="1" name="BHText3"> - B - </text> - <text type="string" length="1" name="BHText4"> - I - </text> - <slider label="" name="WLCloudColorR" /> - <slider label="" name="WLCloudColorG" /> - <slider label="" name="WLCloudColorB" /> - <slider label="" name="WLCloudColorI" /> - <text type="string" length="1" name="WLCloudColorText2"> - Skyer XY/Tæthed - </text> - <button label="?" name="WLCloudDensityHelp" /> - <text type="string" length="1" name="BHText5"> - X - </text> - <text type="string" length="1" name="BHText6"> - Y - </text> - <text type="string" length="1" name="BHText7"> - T - </text> - <slider label="" name="WLCloudX" /> - <slider label="" name="WLCloudY" /> - <slider label="" name="WLCloudDensity" /> - <text type="string" length="1" name="WLCloudCoverageText"> - Skydække - </text> - <button label="?" name="WLCloudCoverageHelp" /> - <slider label="" name="WLCloudCoverage" /> - <text type="string" length="1" name="WLCloudScaleText"> - Skystørrelse - </text> - <button label="?" name="WLCloudScaleHelp" /> - <slider label="" name="WLCloudScale" /> - <text type="string" length="1" name="WLCloudDetailText"> - Sky detaljer(XY/tæthed) - </text> - <button label="?" name="WLCloudDetailHelp" /> - <text type="string" length="1" name="BHText8"> - X - </text> - <text type="string" length="1" name="BHText9"> - Y - </text> - <text type="string" length="1" name="BHText10"> - T - </text> - <slider label="" name="WLCloudDetailX" /> - <slider label="" name="WLCloudDetailY" /> - <slider label="" name="WLCloudDetailDensity" /> - <text type="string" length="1" name="WLCloudScrollXText"> - Sky drift X - </text> - <button label="?" name="WLCloudScrollXHelp" /> - <check_box label="LÃ¥s" name="WLCloudLockX" /> - <slider label="" name="WLCloudScrollX" /> - <text type="string" length="1" name="WLCloudScrollYText"> - Sky drift Y - </text> - <button label="?" name="WLCloudScrollYHelp" /> - <check_box label="LÃ¥s" name="WLCloudLockY" /> - <slider label="" name="WLCloudScrollY" /> - <check_box label="Benyt simple skyer" name="DrawClassicClouds" /> - <button label="?" name="WLClassicCloudsHelp" /> - </panel> - </tab_container> - <string name="WLDefaultSkyNames"> - A-12AM:A-12PM:A-3AM:A-3PM:A-4.30PM:A-6AM:A-6PM:A-9AM:A-9PM:Barcelona:Blizzard:Blue Midday:Coastal Afternoon:Coastal Sunset:Default:Desert Sunset:Fine Day:Fluffy Big Clouds:Foggy:Funky Funky:Funky Funky Funky:Gelatto:Ghost:Incongruent Truths:Midday 1:Midday 2:Midday 3:Midday 4:Night:Pirate:Purple:Sailor's Delight:Sheer Sensuality - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater name="WindLight floater" title="Avanceret opsætning for himmel"> + <text type="string" length="1" name="KeyFramePresetsText"> + Faste indstillinger: + </text> + <button label="Ny" label_selected="Ny" name="WLNewPreset" /> + <button label="Gem" label_selected="Gem" name="WLSavePreset" /> + <button label="Slet" label_selected="Slet" name="WLDeletePreset" /> + <button label="Dags cyklus" label_selected="Dags cyklus" name="WLDayCycleMenuButton" /> + <tab_container name="WindLight Tabs"> + <panel label="Atmosfære" name="Atmosphere"> + <text type="string" length="1" name="BHText"> + BlÃ¥ - horisont + </text> + <button label="?" name="WLBlueHorizonHelp" /> + <text type="string" length="1" name="BHText2"> + R + </text> + <text type="string" length="1" name="BHText3"> + G + </text> + <text type="string" length="1" name="BHText4"> + B + </text> + <text type="string" length="1" name="BHText5"> + I + </text> + <slider label="" name="WLBlueHorizonR" /> + <slider label="" name="WLBlueHorizonG" /> + <slider label="" name="WLBlueHorizonB" /> + <slider label="" name="WLBlueHorizonI" /> + <text type="string" length="1" name="BDensText"> + Dis - horisont + </text> + <button label="?" name="WLHazeHorizonHelp" /> + <slider label="" name="WLHazeHorizon" /> + <text type="string" length="1" name="BDensText2"> + BlÃ¥ - tæthed + </text> + <button label="?" name="WLBlueDensityHelp" /> + <text type="string" length="1" name="BHText6"> + R + </text> + <text type="string" length="1" name="BHText7"> + G + </text> + <text type="string" length="1" name="BHText8"> + B + </text> + <text type="string" length="1" name="BHText9"> + I + </text> + <slider label="" name="WLBlueDensityR" /> + <slider label="" name="WLBlueDensityG" /> + <slider label="" name="WLBlueDensityB" /> + <slider label="" name="WLBlueDensityI" /> + <text type="string" length="1" name="HDText"> + Dis - intensitet + </text> + <button label="?" name="WLHazeDensityHelp" /> + <slider label="" name="WLHazeDensity" /> + <text type="string" length="1" name="DensMultText"> + Densitet faktor + </text> + <button label="?" name="WLDensityMultHelp" /> + <slider label="" name="WLDensityMult" /> + <text type="string" length="1" name="WLDistanceMultText"> + Distance faktor + </text> + <button label="?" name="WLDistanceMultHelp" /> + <slider label="" name="WLDistanceMult" /> + <text type="string" length="1" name="MaxAltText"> + Maximum højde + </text> + <button label="?" name="WLMaxAltitudeHelp" /> + <slider label="" name="WLMaxAltitude" /> + </panel> + <panel label="Lys" name="Lighting"> + <text type="string" length="1" name="SLCText"> + Sol/MÃ¥ne farve + </text> + <button label="?" name="WLSunlightColorHelp" /> + <text type="string" length="1" name="BHText"> + R + </text> + <text type="string" length="1" name="BHText2"> + G + </text> + <text type="string" length="1" name="BHText3"> + B + </text> + <text type="string" length="1" name="BHText4"> + I + </text> + <slider label="" name="WLSunlightR" /> + <slider label="" name="WLSunlightG" /> + <slider label="" name="WLSunlightB" /> + <slider label="" name="WLSunlightI" /> + <text type="string" length="1" name="TODText"> + Sol/MÃ¥ne position + </text> + <button label="?" name="WLTimeOfDayHelp" /> + <slider label="" name="WLSunAngle" /> + <text type="string" length="1" name="WLAmbientText"> + Omgivende + </text> + <button label="?" name="WLAmbientHelp" /> + <text type="string" length="1" name="BHText5"> + R + </text> + <text type="string" length="1" name="BHText6"> + G + </text> + <text type="string" length="1" name="BHText7"> + B + </text> + <text type="string" length="1" name="BHText8"> + I + </text> + <slider label="" name="WLAmbientR" /> + <slider label="" name="WLAmbientG" /> + <slider label="" name="WLAmbientB" /> + <slider label="" name="WLAmbientI" /> + <text type="string" length="1" name="WLEastAngleText"> + Øst vinkel + </text> + <button label="?" name="WLEastAngleHelp" /> + <slider label="" name="WLEastAngle" /> + <text type="string" length="1" name="SunGlowText"> + Sol glød + </text> + <button label="?" name="WLSunGlowHelp" /> + <slider label="Fokus " name="WLGlowB" /> + <slider label="Størr. " name="WLGlowR" /> + <text type="string" length="1" name="SceneGammaText"> + Lysintensitet (gamma) + </text> + <button label="?" name="WLSceneGammaHelp" /> + <slider label="" name="WLGamma" /> + <text type="string" length="1" name="WLStarText"> + Stjerne intensitet + </text> + <button label="?" name="WLStarBrightnessHelp" /> + <slider label="" name="WLStarAlpha" /> + </panel> + <panel label="Skyer" name="Clouds"> + <text type="string" length="1" name="WLCloudColorText"> + Farve pÃ¥ skyer + </text> + <button label="?" name="WLCloudColorHelp" /> + <text type="string" length="1" name="BHText"> + R + </text> + <text type="string" length="1" name="BHText2"> + G + </text> + <text type="string" length="1" name="BHText3"> + B + </text> + <text type="string" length="1" name="BHText4"> + I + </text> + <slider label="" name="WLCloudColorR" /> + <slider label="" name="WLCloudColorG" /> + <slider label="" name="WLCloudColorB" /> + <slider label="" name="WLCloudColorI" /> + <text type="string" length="1" name="WLCloudColorText2"> + Skyer XY/Tæthed + </text> + <button label="?" name="WLCloudDensityHelp" /> + <text type="string" length="1" name="BHText5"> + X + </text> + <text type="string" length="1" name="BHText6"> + Y + </text> + <text type="string" length="1" name="BHText7"> + T + </text> + <slider label="" name="WLCloudX" /> + <slider label="" name="WLCloudY" /> + <slider label="" name="WLCloudDensity" /> + <text type="string" length="1" name="WLCloudCoverageText"> + Skydække + </text> + <button label="?" name="WLCloudCoverageHelp" /> + <slider label="" name="WLCloudCoverage" /> + <text type="string" length="1" name="WLCloudScaleText"> + Skystørrelse + </text> + <button label="?" name="WLCloudScaleHelp" /> + <slider label="" name="WLCloudScale" /> + <text type="string" length="1" name="WLCloudDetailText"> + Sky detaljer(XY/tæthed) + </text> + <button label="?" name="WLCloudDetailHelp" /> + <text type="string" length="1" name="BHText8"> + X + </text> + <text type="string" length="1" name="BHText9"> + Y + </text> + <text type="string" length="1" name="BHText10"> + T + </text> + <slider label="" name="WLCloudDetailX" /> + <slider label="" name="WLCloudDetailY" /> + <slider label="" name="WLCloudDetailDensity" /> + <text type="string" length="1" name="WLCloudScrollXText"> + Sky drift X + </text> + <button label="?" name="WLCloudScrollXHelp" /> + <check_box label="LÃ¥s" name="WLCloudLockX" /> + <slider label="" name="WLCloudScrollX" /> + <text type="string" length="1" name="WLCloudScrollYText"> + Sky drift Y + </text> + <button label="?" name="WLCloudScrollYHelp" /> + <check_box label="LÃ¥s" name="WLCloudLockY" /> + <slider label="" name="WLCloudScrollY" /> + <check_box label="Benyt simple skyer" name="DrawClassicClouds" /> + <button label="?" name="WLClassicCloudsHelp" /> + </panel> + </tab_container> + <string name="WLDefaultSkyNames"> + A-12AM:A-12PM:A-3AM:A-3PM:A-4.30PM:A-6AM:A-6PM:A-9AM:A-9PM:Barcelona:Blizzard:Blue Midday:Coastal Afternoon:Coastal Sunset:Default:Desert Sunset:Fine Day:Fluffy Big Clouds:Foggy:Funky Funky:Funky Funky Funky:Gelatto:Ghost:Incongruent Truths:Midday 1:Midday 2:Midday 3:Midday 4:Night:Pirate:Purple:Sailor's Delight:Sheer Sensuality + </string> +</floater> diff --git a/indra/newview/skins/default/xui/da/floater_world_map.xml b/indra/newview/skins/default/xui/da/floater_world_map.xml index c35fd9b2e6a4f45295542cc7f3681ca23b7eb757..f058cf046810be592306e3e49d27003100b2cf38 100644 --- a/indra/newview/skins/default/xui/da/floater_world_map.xml +++ b/indra/newview/skins/default/xui/da/floater_world_map.xml @@ -1,77 +1,57 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="worldmap" title="Verdenskort"> <tab_container name="maptab"> - <panel label="Objekter" name="objects_mapview" /> - <panel label="Terræn" name="terrain_mapview" /> + <panel label="Objekter" name="objects_mapview"/> + <panel label="Terræn" name="terrain_mapview"/> </tab_container> - <text name="land_for_sale_label"> - Land til salg - </text> - <text name="auction_label"> - Auktion - </text> <text name="you_label"> Dig </text> <text name="home_label"> Hjem </text> - <button label="Tag hjem" label_selected="Tag hjem" name="Go Home" - tool_tip="Teleporter til dit hjem" /> - <text name="person_label"> - Person - </text> - <check_box label=" " name="people_chk" /> - <text name="infohub_label"> - Infohub - </text> - <check_box label="" name="infohub_chk" /> - <text name="telehub_label"> - Telehub + <text name="auction_label"> + Auktion </text> - <check_box label="" name="telehubchk" /> - <text name="land_for_sale_label2"> + <text name="land_for_sale_label"> Land til salg </text> - <check_box label="" name="land_for_sale_chk" /> + <button label="Tag hjem" label_selected="Tag hjem" name="Go Home" tool_tip="Teleporter til dit hjem"/> + <check_box label="Beboer" name="people_chk"/> + <check_box label="Infohub" name="infohub_chk"/> + <check_box label="Telehub" name="telehubchk"/> + <check_box label="Land til salg" name="land_for_sale_chk"/> <text name="events_label"> - Events + Events: </text> - <check_box label="" name="event_chk" /> - <text name="events_mature_label" /> - <check_box label="" name="event_mature_chk" /> - <combo_box label="Venner online" name="friend combo" - tool_tip="Ven der skal vises pÃ¥ kortet"> + <check_box label="PG" name="event_chk"/> + <check_box label="Mature" name="event_mature_chk"/> + <check_box label="Adult" name="event_adult_chk"/> + <combo_box label="Venner online" name="friend combo" tool_tip="Ven der skal vises pÃ¥ kortet"> <combo_box.item name="none_selected" label="Venner online" /> </combo_box> - <combo_box label="Landemærker" name="landmark combo" - tool_tip="Landemærke der skal vises pÃ¥ kortet"> + <combo_box label="Landemærker" name="landmark combo" tool_tip="Landemærke der skal vises pÃ¥ kortet"> <combo_box.item name="none_selected" label="Landemærker" /> </combo_box> - <line_editor label="Søg pÃ¥ region navn" name="location" - tool_tip="Skriv navnet pÃ¥ en region" /> - <button label="Søg" name="DoSearch" tool_tip="Søg efter en region" /> + <line_editor label="Søg pÃ¥ region navn" name="location" tool_tip="Skriv navnet pÃ¥ en region"/> + <button label="Søg" name="DoSearch" tool_tip="Søg efter en region"/> <text name="search_label"> Søgeresultater: </text> <scroll_list name="search_results"> - <column label="" name="icon" /> - <column label="" name="sim_name" /> + <column label="" name="icon"/> + <column label="" name="sim_name"/> </scroll_list> <text name="location_label"> Lokation: </text> - <spinner name="spin x" tool_tip="X koordinat for lokation der skal vises pÃ¥ kortet" /> - <spinner name="spin y" tool_tip="Y koordinat for lokation der skal vises pÃ¥ kortet" /> - <spinner name="spin z" tool_tip="Z koordinat for lokation der skal vises pÃ¥ kortet" /> - <button label="Teleport" label_selected="Teleport" name="Teleport" - tool_tip="Teleportér til den valgte lokation" /> - <button label="Vis destination" label_selected="Vis destination" - name="Show Destination" tool_tip="Centrér kortet pÃ¥ valgte lokation" /> - <button label="Slet" label_selected="Slet" name="Clear" tool_tip="Stop søg" /> - <button label="Vis min position" label_selected="Vis min position" - name="Show My Location" tool_tip="Centrer kortet pÃ¥ din avatars lokation" /> - <button label="Kopiér SLURL til udklipsholder" name="copy_slurl" - tool_tip="Kopierer den nuværende lokation som et SLURL, sÃ¥ det kan bruges pÃ¥ nettet." /> - <slider label="Zoom" name="zoom slider" /> + <spinner name="spin x" tool_tip="X koordinat for lokation der skal vises pÃ¥ kortet"/> + <spinner name="spin y" tool_tip="Y koordinat for lokation der skal vises pÃ¥ kortet"/> + <spinner name="spin z" tool_tip="Z koordinat for lokation der skal vises pÃ¥ kortet"/> + <button label="Teleport" label_selected="Teleport" name="Teleport" tool_tip="Teleportér til den valgte lokation"/> + <button label="Vis destination" label_selected="Vis destination" name="Show Destination" tool_tip="Centrér kortet pÃ¥ valgte lokation"/> + <button label="Slet" label_selected="Slet" name="Clear" tool_tip="Stop søg"/> + <button label="Vis min position" label_selected="Vis min position" name="Show My Location" tool_tip="Centrer kortet pÃ¥ din avatars lokation"/> + <button label="Kopiér SLURL til udklipsholder" name="copy_slurl" tool_tip="Kopierer den nuværende lokation som et SLURL, sÃ¥ det kan bruges pÃ¥ nettet."/> + <slider label="Zoom" name="zoom slider"/> </floater> diff --git a/indra/newview/skins/default/xui/da/mime_types.xml b/indra/newview/skins/default/xui/da/mime_types.xml index 8ffee47fb3469a45be3abd4714acea6fa010252a..0b00a29f07170d62a314b35ca3cc10f883f7692c 100644 --- a/indra/newview/skins/default/xui/da/mime_types.xml +++ b/indra/newview/skins/default/xui/da/mime_types.xml @@ -1,230 +1,230 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<mimetypes name="default"> - <widgetset name="web"> - <label name="web_label"> - Web indhold - </label> - <tooltip name="web_tooltip"> - Dette sted har web-indhold - </tooltip> - <playtip name="web_playtip"> - Vis web indhold - </playtip> - </widgetset> - <widgetset name="movie"> - <label name="movie_label"> - Film - </label> - <tooltip name="movie_tooltip"> - Der er ingen film til afspilning her - </tooltip> - <playtip name="movie_playtip"> - Afspil film - </playtip> - </widgetset> - <widgetset name="none"> - <label name="none_label"> - Intet indhold - </label> - <tooltip name="none_tooltip"> - Intet medie - </tooltip> - </widgetset> - <widgetset name="image"> - <label name="image_label"> - Billede - </label> - <tooltip name="image_tooltip"> - Dette sted har et billede - </tooltip> - <playtip name="image_playtip"> - Vis billedet for dette sted - </playtip> - </widgetset> - <widgetset name="audio"> - <label name="audio_label"> - Lyd - </label> - <tooltip name="audio_tooltip"> - Der er ingen lyd til afspilning her - </tooltip> - <playtip name="audio_playtip"> - Afspil denne lokations lyd/musik - </playtip> - </widgetset> - <scheme name="rtsp"> - <label name="rtsp_label"> - Realtidsafspilning - </label> - </scheme> - <mimetype name="blank"> - <label name="blank_label"> - - ingen - - </label> - </mimetype> - <mimetype name="none/none"> - <label name="none/none_label"> - - None - - </label> - </mimetype> - <mimetype name="audio/*"> - <label name="audio2_label"> - Lyd - </label> - </mimetype> - <mimetype name="video/*"> - <label name="video2_label"> - Video - </label> - </mimetype> - <mimetype name="image/*"> - <label name="image2_label"> - Billede - </label> - </mimetype> - <mimetype name="video/vnd.secondlife.qt.legacy"> - <label name="vnd.secondlife.qt.legacy_label"> - Film (QuickTime) - </label> - </mimetype> - <mimetype name="application/javascript"> - <label name="application/javascript_label"> - Javascript - </label> - </mimetype> - <mimetype name="application/ogg"> - <label name="application/ogg_label"> - Ogg Lyd/Video - </label> - </mimetype> - <mimetype name="application/pdf"> - <label name="application/pdf_label"> - PDF dokument - </label> - </mimetype> - <mimetype name="application/postscript"> - <label name="application/postscript_label"> - Postscript dokument - </label> - </mimetype> - <mimetype name="application/rtf"> - <label name="application/rtf_label"> - Rich Text (RTF) - </label> - </mimetype> - <mimetype name="application/smil"> - <label name="application/smil_label"> - Synchronized Multimedia Integration Language (SMIL) - </label> - </mimetype> - <mimetype name="application/xhtml+xml"> - <label name="application/xhtml+xml_label"> - Web side (XHTML) - </label> - </mimetype> - <mimetype name="application/x-director"> - <label name="application/x-director_label"> - Macromedia Director - </label> - </mimetype> - <mimetype name="application/x-shockwave-flash"> - <label name="application/x-shockwave-flash_label"> - Flash - </label> - </mimetype> - <mimetype name="audio/mid"> - <label name="audio/mid_label"> - Lyd (MIDI) - </label> - </mimetype> - <mimetype name="audio/mpeg"> - <label name="audio/mpeg_label"> - Lyd (MP3) - </label> - </mimetype> - <mimetype name="audio/x-aiff"> - <label name="audio/x-aiff_label"> - Lyd (AIFF) - </label> - </mimetype> - <mimetype name="audio/x-wav"> - <label name="audio/x-wav_label"> - Lyd (WAV) - </label> - </mimetype> - <mimetype name="image/bmp"> - <label name="image/bmp_label"> - Billed (BMP) - </label> - </mimetype> - <mimetype name="image/gif"> - <label name="image/gif_label"> - Billede (GIF) - </label> - </mimetype> - <mimetype name="image/jpeg"> - <label name="image/jpeg_label"> - Billede (JPEG) - </label> - </mimetype> - <mimetype name="image/png"> - <label name="image/png_label"> - Billed (PNG) - </label> - </mimetype> - <mimetype name="image/svg+xml"> - <label name="image/svg+xml_label"> - Billede (SVG) - </label> - </mimetype> - <mimetype name="image/tiff"> - <label name="image/tiff_label"> - Billede (TIFF) - </label> - </mimetype> - <mimetype name="text/html"> - <label name="text/html_label"> - Web side - </label> - </mimetype> - <mimetype name="text/plain"> - <label name="text/plain_label"> - Tekst - </label> - </mimetype> - <mimetype name="text/xml"> - <label name="text/xml_label"> - XML - </label> - </mimetype> - <mimetype name="video/mpeg"> - <label name="video/mpeg_label"> - Film (MPEG) - </label> - </mimetype> - <mimetype name="video/mp4"> - <label name="video/mp4_label"> - Film (MP4) - </label> - </mimetype> - <mimetype name="video/quicktime"> - <label name="video/quicktime_label"> - Film (QuickTime) - </label> - </mimetype> - <mimetype name="video/x-ms-asf"> - <label name="video/x-ms-asf_label"> - Film (Windows Media ASF) - </label> - </mimetype> - <mimetype name="video/x-ms-wmv"> - <label name="video/x-ms-wmv_label"> - Film (Windows Media WMV) - </label> - </mimetype> - <mimetype name="video/x-msvideo"> - <label name="video/x-msvideo_label"> - Film (AVI) - </label> - </mimetype> -</mimetypes> +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<mimetypes name="default"> + <widgetset name="web"> + <label name="web_label"> + Web indhold + </label> + <tooltip name="web_tooltip"> + Dette sted har web-indhold + </tooltip> + <playtip name="web_playtip"> + Vis web indhold + </playtip> + </widgetset> + <widgetset name="movie"> + <label name="movie_label"> + Film + </label> + <tooltip name="movie_tooltip"> + Der er ingen film til afspilning her + </tooltip> + <playtip name="movie_playtip"> + Afspil film + </playtip> + </widgetset> + <widgetset name="none"> + <label name="none_label"> + Intet indhold + </label> + <tooltip name="none_tooltip"> + Intet medie + </tooltip> + </widgetset> + <widgetset name="image"> + <label name="image_label"> + Billede + </label> + <tooltip name="image_tooltip"> + Dette sted har et billede + </tooltip> + <playtip name="image_playtip"> + Vis billedet for dette sted + </playtip> + </widgetset> + <widgetset name="audio"> + <label name="audio_label"> + Lyd + </label> + <tooltip name="audio_tooltip"> + Der er ingen lyd til afspilning her + </tooltip> + <playtip name="audio_playtip"> + Afspil denne lokations lyd/musik + </playtip> + </widgetset> + <scheme name="rtsp"> + <label name="rtsp_label"> + Realtidsafspilning + </label> + </scheme> + <mimetype name="blank"> + <label name="blank_label"> + - ingen - + </label> + </mimetype> + <mimetype name="none/none"> + <label name="none/none_label"> + - None - + </label> + </mimetype> + <mimetype name="audio/*"> + <label name="audio2_label"> + Lyd + </label> + </mimetype> + <mimetype name="video/*"> + <label name="video2_label"> + Video + </label> + </mimetype> + <mimetype name="image/*"> + <label name="image2_label"> + Billede + </label> + </mimetype> + <mimetype name="video/vnd.secondlife.qt.legacy"> + <label name="vnd.secondlife.qt.legacy_label"> + Film (QuickTime) + </label> + </mimetype> + <mimetype name="application/javascript"> + <label name="application/javascript_label"> + Javascript + </label> + </mimetype> + <mimetype name="application/ogg"> + <label name="application/ogg_label"> + Ogg Lyd/Video + </label> + </mimetype> + <mimetype name="application/pdf"> + <label name="application/pdf_label"> + PDF dokument + </label> + </mimetype> + <mimetype name="application/postscript"> + <label name="application/postscript_label"> + Postscript dokument + </label> + </mimetype> + <mimetype name="application/rtf"> + <label name="application/rtf_label"> + Rich Text (RTF) + </label> + </mimetype> + <mimetype name="application/smil"> + <label name="application/smil_label"> + Synchronized Multimedia Integration Language (SMIL) + </label> + </mimetype> + <mimetype name="application/xhtml+xml"> + <label name="application/xhtml+xml_label"> + Web side (XHTML) + </label> + </mimetype> + <mimetype name="application/x-director"> + <label name="application/x-director_label"> + Macromedia Director + </label> + </mimetype> + <mimetype name="application/x-shockwave-flash"> + <label name="application/x-shockwave-flash_label"> + Flash + </label> + </mimetype> + <mimetype name="audio/mid"> + <label name="audio/mid_label"> + Lyd (MIDI) + </label> + </mimetype> + <mimetype name="audio/mpeg"> + <label name="audio/mpeg_label"> + Lyd (MP3) + </label> + </mimetype> + <mimetype name="audio/x-aiff"> + <label name="audio/x-aiff_label"> + Lyd (AIFF) + </label> + </mimetype> + <mimetype name="audio/x-wav"> + <label name="audio/x-wav_label"> + Lyd (WAV) + </label> + </mimetype> + <mimetype name="image/bmp"> + <label name="image/bmp_label"> + Billed (BMP) + </label> + </mimetype> + <mimetype name="image/gif"> + <label name="image/gif_label"> + Billede (GIF) + </label> + </mimetype> + <mimetype name="image/jpeg"> + <label name="image/jpeg_label"> + Billede (JPEG) + </label> + </mimetype> + <mimetype name="image/png"> + <label name="image/png_label"> + Billed (PNG) + </label> + </mimetype> + <mimetype name="image/svg+xml"> + <label name="image/svg+xml_label"> + Billede (SVG) + </label> + </mimetype> + <mimetype name="image/tiff"> + <label name="image/tiff_label"> + Billede (TIFF) + </label> + </mimetype> + <mimetype name="text/html"> + <label name="text/html_label"> + Web side + </label> + </mimetype> + <mimetype name="text/plain"> + <label name="text/plain_label"> + Tekst + </label> + </mimetype> + <mimetype name="text/xml"> + <label name="text/xml_label"> + XML + </label> + </mimetype> + <mimetype name="video/mpeg"> + <label name="video/mpeg_label"> + Film (MPEG) + </label> + </mimetype> + <mimetype name="video/mp4"> + <label name="video/mp4_label"> + Film (MP4) + </label> + </mimetype> + <mimetype name="video/quicktime"> + <label name="video/quicktime_label"> + Film (QuickTime) + </label> + </mimetype> + <mimetype name="video/x-ms-asf"> + <label name="video/x-ms-asf_label"> + Film (Windows Media ASF) + </label> + </mimetype> + <mimetype name="video/x-ms-wmv"> + <label name="video/x-ms-wmv_label"> + Film (Windows Media WMV) + </label> + </mimetype> + <mimetype name="video/x-msvideo"> + <label name="video/x-msvideo_label"> + Film (AVI) + </label> + </mimetype> +</mimetypes> diff --git a/indra/newview/skins/default/xui/da/notifications.xml b/indra/newview/skins/default/xui/da/notifications.xml index 5e274fc4545f31dddc8c59aacd5e6bb671ad5a7a..eedc5884496d4470135a0930ff63ce1af9221ce0 100644 --- a/indra/newview/skins/default/xui/da/notifications.xml +++ b/indra/newview/skins/default/xui/da/notifications.xml @@ -1,1782 +1,1782 @@ -<?xml version="1.0" ?><notifications> - - <global name="skipnexttime"> - - Vis ikke dette igen - </global> - - <global name="alwayschoose"> - - Vælg altid dette - </global> - - <template name="okbutton"> - <form> - <button - name="OK" - text="$yestext"/> - </form> - </template> - - <template name="okignore"> - <form> - <button - name="OK" - text="$yestext"/> - <ignore text="$ignoretext"/> - </form> - </template> - - <template name="okcancelbuttons"> - <form> - <button - name="OK" - text="$yestext"/> - <button - name="Cancel" - text="$notext"/> - </form> - </template> - - <template name="okcancelignore"> - <form> - <button - name="OK" - text="$yestext"/> - <button - name="Cancel" - text="$notext"/> - <ignore text="$ignoretext"/> - </form> - </template> - - <template name="okhelpbuttons"> - <form> - <button - name="OK" - text="$yestext"/> - <button - name="Help" - text="$helptext"/> - </form> - </template> - - <template name="yesnocancelbuttons"> - <form> - <button - name="Yes" - text="$yestext"/> - <button - name="No" - text="$notext"/> - <button - name="Cancel" - text="$canceltext"/> - </form> - </template> - - <notification - functor="GenericAcknowledge" - - name="MissingAlert" - > -'[_NAME]' mangler fra notifications.xml. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="FloaterNotFound" - > -Floater error: Kunne ikke finde følgende kontrol: - -[CONTROLS] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="TutorialNotFound" - > -Der er i øjeblikket ingen tilgængelig guide. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="GenericAlert" - > -[MESSAGE] - </notification> - - <notification - - name="GenericAlertYesCancel" - > -[MESSAGE] - <usetemplate - name="okcancelbuttons" - notext="Annullér" - yestext="Ja"/> - </notification> - - <notification - - name="WearableSave" - > -Gem ændringer til nuværende tøj/krops del? - <usetemplate - canceltext="Annullér" - name="yesnocancelbuttons" - notext="Gem ikke" - yestext="Gem"/> - </notification> - - <notification - - name="CompileQueueSaveText" - > -Der var problemer med upload af teksten til et script af følgende Ã¥rsager: [REASON]. Prøv igen senere. - </notification> - - <notification - - name="CompileQueueSaveBytecode" - > -Der var problemer med at uploade den kompileret script af følgende Ã¥rsager: [REASON]. Prøv igen senere. - </notification> - - <notification - - name="WriteAnimationFail" - > -Der var et problem med skrivning af animations data. Prøv igen senere. - </notification> - - <notification - - name="UploadAuctionSnapshotFail" - > -Der var problemer med at uploade billedet til auktionen af følgende Ã¥rsager: [REASON] - </notification> - - <notification - - name="UnableToViewContentsMoreThanOne" - > -Ude af stand til at se indholdet af mere end ét element ad gangen. -Vælg kun en genstand, og prøv igen. - </notification> - - <notification - - name="SaveClothingBodyChanges" - > -Gem alle ændringer til tøj/krops dele? - <usetemplate - canceltext="Annullér" - name="yesnocancelbuttons" - notext="Gem Ikke" - yestext="Gem Alt"/> - </notification> - - <notification - - name="GrantModifyRights" - > -At give redigerings rettigheder til en anden beboer, giver dem mulighed for at ændre, slette eller tage alle genstande, du mÃ¥tte have i verden. Vær meget forsigtig nÃ¥r uddeler denne tilladelse. -Ønsker du at ændre rettigheder for [FIRST_NAME] [LAST_NAME]? - <usetemplate - name="okcancelbuttons" - notext="Nej" - yestext="Ja"/> - </notification> - - <notification - - name="GrantModifyRightsMultiple" - > -At give redigerings rettigheder til en anden beboer, giver dem mulighed for at ændre, slette eller tage alle genstande, du mÃ¥tte have i verden. Vær meget forsigtig nÃ¥r uddeler denne tilladelse. -Ønsker du at ændre rettigheder for de valgte beboere? - <usetemplate - name="okcancelbuttons" - notext="Nej" - yestext="Ja"/> - </notification> - - <notification - - name="RevokeModifyRights" - > -Vil du tilbagekalde rettighederne for [FIRST_NAME] [LAST_NAME]? - <usetemplate - name="okcancelbuttons" - notext="Nej" - yestext="Ja"/> - </notification> - - <notification - - name="RevokeModifyRightsMultiple" - > -Vil du tilbagekalde rettighederne for de valgte beboere? - <usetemplate - name="okcancelbuttons" - notext="Nej" - yestext="Ja"/> - </notification> - - <notification - - name="UnableToCreateGroup" - > -Kunne ikke oprette gruppe. -[MESSAGE] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="PanelGroupApply" - > -[NEEDS_APPLY_MESSAGE] -[WANT_APPLY_MESSAGE] - <usetemplate - canceltext="Annullér" - name="yesnocancelbuttons" - notext="Ignorer Ændringer" - yestext="Godkend Ændringer"/> - </notification> - - <notification - - name="MustSpecifyGroupNoticeSubject" - > -Du skal angive et emne for at sende en gruppe besked. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="AddGroupOwnerWarning" - > -Du er ved at tilføje medlemmer til rollen som [ROLE_NAME]. -Medlemmer ikke kan fjernes fra denne rolle. -Medlemmerne skal fratræde sin rolle selv. -Er du sikker pÃ¥ du vil fortsætte? - <usetemplate - ignoretext="NÃ¥r du tilføjer medlemmer til ejer rollen" - name="okcancelignore" - notext="Nej" - yestext="Ja"/> - </notification> - - <notification - - name="AssignDangerousActionWarning" - > -Du er ved at tilføje muligheden for '[ACTION_NAME]' til -rollen '[ROLE_NAME]'. - -*ADVARSEL* -Ethvert medlem i en rolle med denne evne kan tildele sig selv -- og et andet medlem - roller med flere beføjelser, end de har i øjeblikket, potentielt kan de ophøje sig selv til nær-Ejer magt. Være sikker pÃ¥, at du ved, hvad du laver, før tildeling af denne evne. - -Add this Ability to '[ROLE_NAME]'? - <usetemplate - name="okcancelbuttons" - notext="Nej" - yestext="Ja"/> - </notification> - - <notification - - name="ClickPublishHelpAvatar" - > -Hvis du vælger "Vis i Søgning" Vises: -- Din profil i søgeresultater -- Et link til din profile i de offentlige gruppe sider - </notification> - - <notification - - name="ClickWebProfileHelpAvatar" - > -Hvis en beboer har en hjemmeside adresse kan du: - * Klikke 'Load' for at side deres side her. - * Klikke Load > 'I ekstern browser' for at se siden i din standard browser. - * Klikke Load > 'Hjemme URL' for at returnere til denne beboers side hvis du har navigeret væk. - -NÃ¥r du ser din egen profil, kan du skrive hvilken som helst adresse og klikke ok for at fÃ¥ den vist i din egen profil. -Andre beboere kan besøge den adresse du har sat, nÃ¥r de besøger din profil. - </notification> - - <notification - - name="JoinGroupCannotAfford" - > -Tilmelding til denne gruppe koster L$[COST]. -Du har ikke nok L$ til denne tilmelding. - </notification> - - <notification - - name="PromptMissingSubjMsg" - > -E-mail dette billede med standard emne eller besked? - <usetemplate - name="okcancelbuttons" - notext="Annullér" - yestext="OK"/> - </notification> - - <notification - - name="ErrorUploadingPostcard" - > -Der var et problem med at sende billedet pÃ¥ grund af følgende: [REASON] - </notification> - - <notification - - name="MustHaveAccountToLogIn" - > -Ups! Noget var tomt. -Du skal skrive bÃ¥de fornavn og efternavn pÃ¥ din figur. - -Du har brug for en konto for at logge ind i [SECOND_LIFE]. Vil du oprette en nu? - <usetemplate - name="okcancelbuttons" - notext="Prøv igen" - yestext="Lav ny konto"/> - </notification> - - <notification - - name="ResetShowNextTimeDialogs" - > -Vil du gerne genaktivere alle disse popups, som du tidligere har bedt om ikke at fÃ¥ vist? - <usetemplate - name="okcancelbuttons" - notext="Annullér" - yestext="OK"/> - </notification> - - <notification - - name="SkipShowNextTimeDialogs" - > -Vil du deaktivere alle popups som kan undværes? - <usetemplate - name="okcancelbuttons" - notext="Annullér" - yestext="OK"/> - </notification> - - <notification - - name="ChangeSkin" - > -Det nye udseende vil vises efter du har genstartet [SECOND_LIFE]. - </notification> - - <notification - - name="UnsupportedHardware" - > - <form name="form"> - <ignore name="ignore" - text="Ved opdagelse af ikke supporteret hardware"/> - </form> - </notification> - - <notification - - name="UnknownGPU" - > - <form name="form"> - <ignore name="ignore" - text="Ved opdagelse af et ukendt grafikkort"/> - </form> - </notification> - - <notification - - name="CannotGiveCategory" - > -Du har ikke tilladelse til at videreføre den valgte mappe. - </notification> - - <notification - - name="CannotBuyLandNoRegion" - > -Ikke i stand til at købe land: -Kan ikke finde region som dette land er i. - </notification> - - <notification - - name="YouHaveBeenLoggedOut" - > -Du er blevet logget ud af [SECOND_LIFE]: - [MESSAGE] -Du kan stadig se eksiterende PB'er og chat ved at klikke'Se PB & Chat'. Ellers, klik 'Afslut' for at afslutte [SECOND_LIFE] nu. - <usetemplate - name="okcancelbuttons" - notext="Quit" - yestext="Se IM & Chat"/> - </notification> - - <notification - - label="Add Friend" - name="AddFriend" - > -Venner kan give tilladelse til at følge hinanden -pÃ¥ Verdenskortet eller modtage status opdateringer. - -Tilbyd venskab til [NAME]? - <usetemplate - name="okcancelbuttons" - notext="Annullér" - yestext="OK"/> - </notification> - - <notification - - label="Add Friend" - name="AddFriendWithMessage" - > -Venner kan give tilladelse til at følge hinanden -pÃ¥ Verdenskortet eller modtage status opdateringer. - -Tilbyd venskab til [NAME]? - <form name="form"> - <input name="message" type="text"> -Vil du være min ven? - </input> - <button - - - name="Offer" - text="OK"/> - <button - - name="Cancel" - text="Annullér"/> - </form> - </notification> - - <notification - - name="NotEnoughCurrency" - > -[NAME] L$ [PRICE] Du har ikke nok L$ til dette. - </notification> - - <notification - - name="HelpReportAbuseEmailLL" - > -Brug dette værktøj for at rapportere brud pÃ¥ de almindelige bestemmelser og fællesskabs Standarder. Se: - -http://secondlife.com/corporate/tos.php -http://secondlife.com/corporate/cs.php - -Alle rapporterede brud pÃ¥ almindelige bestemmelser og fællesskabs Standarder bliver undersøgt og løst. Du kan følge løsningen pÃ¥ din anmeldselse pÃ¥: - -http://secondlife.com/support/incidentreport.php - </notification> - - <notification - - name="HelpReportAbuseContainsCopyright" - > -Dear Resident, - -Du ser ud til at være ved at rapportere noget vedr. krænkelse af intellektuelle ejendomsrettigheder. Sørg for, at du rapporterer dette korrekt: - -(1) Misbrugs processen. Du kan indsende en misbrugs rapport, hvis du mener, at en Beboer udnytter Second Life's rettigheds system, for eksempel ved hjælp af en CopyBot eller lignende kopierings værktøjer, at de krænker intellektuelle ejendomsrettigheder. Det team vil undersøge og spørgsmÃ¥l passende disciplinære sanktioner for adfærd, der overtræder Second Life EF-standarderne eller ServicevilkÃ¥r. Men det team vil ikke hÃ¥ndtere og vil ikke reagere pÃ¥ anmodninger om at fjerne indhold fra Second Life's verden. - -(2) DMCA eller Indholds fjernelses processen. For at anmode om fjernelse af indhold fra Second Life, skal du sende en gyldig anmeldelse af overtrædelsen som beskrevet i vores DMCA-politik pÃ¥ http://secondlife.com/corporate/dmca.php. - -Hvis du stadig ønsker at fortsætte med misbrugs processen, luk da venligst dette vindue og færdiggør indsendelsen af din rapport. Du kan være nødt til at vælge den særlige kategori »CopyBot eller Tilladelses Ydnyttelse. - -Mange tak, - -Linden Lab - </notification> - - <notification - - name="ConfirmClearCookies" - > -Er du sikker pÃ¥ du vil slette alle cookies? - </notification> - - <notification - - name="ChatterBoxSessionStartError" - > -Ikke i stand til at start chat med [RECIPIENT]. -[REASON] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="Cannot_Purchase_an_Attachment" - > -Ting kan ikke købes imens de er en del af tilbehør. - </notification> - - <notification - - name="NewWaterPreset" - > - <form name="form"> - <input name="message" type="text"> -Ny forudindstilling - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Annullér"/> - </form> - </notification> - - <notification - - name="NewSkyPreset" - > - <form name="form"> - <input name="message" type="text"> -Ny forudindstilling - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Annullér"/> - </form> - </notification> - - <notification - - name="OfferTeleport" - > - <form name="form"> - <input name="message" type="text"> -Mød mig i [REGION] - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Annullér"/> - </form> - </notification> - - <notification - - name="SystemMessageTip" - > -[MESSAGE] - </notification> - - <notification - - name="Cancelled" - > -Annulléret - </notification> - - <notification - - name="CancelledSit" - > -Annulléret sid - </notification> - - <notification - - name="CancelledAttach" - > -Annulléreret vedhæft - </notification> - - <notification - - name="ReplacedMissingWearable" - > -Erstattet manglende tøj/kropsdele med standard. - </notification> - - <notification - - name="FriendOnline" - > -[FIRST] [LAST] er Online - </notification> - - <notification - - name="FriendOffline" - > -[FIRST] [LAST] er Offline - </notification> - - <notification - - name="AddSelfFriend" - > -Du kan ikke tilføje dig selv som ven. - </notification> - - <notification - - name="UploadingAuctionSnapshot" - > -Uploader billeder fra verdenen og www... -(Tager omkring 5 minutter.) - </notification> - - <notification - - name="UploadPayment" - > -Du betalte L$[AMOUNT] for at uploade. - </notification> - - <notification - - name="UploadWebSnapshotDone" - > -Billeder fra www er uploadet. - </notification> - - <notification - - name="UploadSnapshotDone" - > -Billeder fra verdenen er uploadet - </notification> - - <notification - - name="TerrainDownloaded" - > -Terrain.raw downloadet - </notification> - - <notification - - name="GestureMissing" - > -Gestus [NAME] mangler i databasen. - </notification> - - <notification - - name="UnableToLoadGesture" - > -Ikke muligt at indlæse gestus [NAME]. -Prøv venligst igen. - </notification> - - <notification - - name="LandmarkMissing" - > -Landmærke mangler i databasen. - </notification> - - <notification - - name="UnableToLoadLandmark" - > -Ikke muligt at indlæse landmærke. Prøv venligst igen. - </notification> - - <notification - - name="CapsKeyOn" - > -Du har slÃ¥et store bogstaver til. -Da det vil have betydning nÃ¥r du indtaster kodeordet, vil du højest sandsynlig slÃ¥ dem fra. - </notification> - - <notification - - name="NotecardMissing" - > -Note mangler i databasen. - </notification> - - <notification - - name="NotecardNoPermissions" - > -Utilstrækkelige tilladelser til at se note. - </notification> - - <notification - - name="RezItemNoPermissions" - > -Utilstrækkelige tilladelser til at danne genstanden. - </notification> - - <notification - - name="UnableToLoadNotecard" - > -Ikke muligt at indlæse note. -Prøv venligst igen. - </notification> - - <notification - - name="ScriptMissing" - > -Script mangler i databasen. - </notification> - - <notification - - name="ScriptNoPermissions" - > -Utilstrækkelige tilladelser til at se script. - </notification> - - <notification - - name="UnableToLoadScript" - > -Ikke muligt at indlæse script. Prøv venligst igen. - </notification> - - <notification - - name="IncompleteInventory" - > -Det komplette indhold, du tilbyder, er ikke endnu tilgængelig lokalt. Prøv venligst at tilbyde tingene igen om lidt. - </notification> - - <notification - - name="CannotModifyProtectedCategories" - > -Du kan ikke ændre beskyttede kategorier. - </notification> - - <notification - - name="CannotRemoveProtectedCategories" - > -Du kan ikke fjerne beskyttede kategorier. - </notification> - - <notification - - name="OfferedCard" - > -Du har tilbudt et visitkort til [FIRST] [LAST] - </notification> - - <notification - - name="OfferedFriendship" - > -Du har tilbudt venskab til [FIRST] [LAST] - </notification> - - <notification - - name="UnableToBuyWhileDownloading" - > -Ikke muligt at købe, imens genstandens data hentes. -Prøv venligst igen. - </notification> - - <notification - - name="UnableToLinkWhileDownloading" - > -Ikke muligt at lænke imens genstandens data hentes. -Prøv venligst igen. - </notification> - - <notification - - name="CannotBuyObjectsFromDifferentOwners" - > -Kan ikke købe genstande fra forskellige ejere pÃ¥ samme tid. -Prøv venligst at vælge en enkelt genstand. - </notification> - - <notification - - name="ObjectNotForSale" - > -Genstanden ser ikke ud til at være til salg. - </notification> - - <notification - - name="EnteringGodMode" - > -Starter gud-tilstand, niveau [LEVEL] - </notification> - - <notification - - name="LeavingGodMode" - > -Stopper gud-tilstand, niveau [LEVEL] - </notification> - - <notification - - name="CopyFailed" - > -Kopiering lykkedes ikke fordi du ikke har nok tilladelser til at kopiere - </notification> - - <notification - - name="InventoryAccepted" - > -[NAME] accepterede det du tilbød fra din beholdning. - </notification> - - <notification - - name="InventoryDeclined" - > -[NAME] afviste det du tilbød fra din beholdning. - </notification> - - <notification - - name="ObjectMessage" - > -[NAME]: [MESSAGE] - </notification> - - <notification - - name="CallingCardAccepted" - > -Dit visitkort blev accepteret. - </notification> - - <notification - - name="CallingCardDeclined" - > -Dit visitkort blev afvist. - </notification> - - <notification - - name="TeleportToLandmark" - > -Nu hvor du er nÃ¥et frem til hovedlandet, kan du teleportere til steder som '[NAME]' ved at klikke pÃ¥ Beholdning-knappen i nederste højre side af skærmen hvorefter du vælger Landmærke-mappen. -Dobbeltklik pÃ¥ landmærket og klik pÃ¥ Teleportér, for at rejse derhen. - </notification> - - <notification - - name="TeleportToPerson" - > -Nu hvor du har nÃ¥et frem til hovedlandet, kan du kontakte indbyggere som '[NAME]' ved at klikke pÃ¥ Beholdning-knappen i nederste højre side af skærmen, hvorefter du vælger Visitkort-mappen. -Dobbeltklik pÃ¥ kortet, klik pÃ¥ IM og skriv beskeden. - </notification> - - <notification - - name="CantSelectLandFromMultipleRegions" - > -Kan ikke vælge land pÃ¥ tværs af grænser. -Prøv at vælge mindre stykker land. - </notification> - - <notification - - name="GroupVote" - > -[NAME] har forslÃ¥et at stemme for: -[MESSAGE] - <form name="form"> - <button - - name="VoteNow" - text="Stem nu"/> - <button - - name="Later" - text="Senere"/> - </form> - </notification> - - <notification - - name="SystemMessage" - > -[MESSAGE] - </notification> - - <notification - - name="EventNotification" - > -Besked om begivenhed: - -[NAME] -[DATE] - <form name="form"> - <button - - name="Teleport" - text="Teleportér"/> - <button - - name="Description" - text="Beskrivelse"/> - <button - - name="Cancel" - text="Annullér"/> - </form> - </notification> - - <notification - - name="TransferObjectsHighlighted" - > -Alle genstande pÃ¥ denne grund, som vil blive overført til køberen af denne grund, er nu oplyst. - -* Træer og græs, der vil blive overført, er ikke fremhævet. - <form name="form"> - <button - - name="Done" - text="Færdig"/> - </form> - </notification> - - <notification - - name="DeactivatedGesturesTrigger" - > -Deaktiverede bevægelser med samme udløser: [NAMES] - </notification> - - <notification - - name="NoQuickTime" - > -Apple's QuickTime ser ikke ud til at være installeret pÃ¥ computeren. -Hvis du vil se live transmitteret medie pÃ¥ grunde, der understøtter det, skal du gÃ¥ ind pÃ¥ QuickTime-siden (http://www.apple.dk/quicktime) og installere QuickTime afspilleren. - </notification> - - <notification - - name="OwnedObjectsReturned" - > -De genstande du ejer pÃ¥ det valgte stykke land er blevet returneret til din beholdning. - </notification> - - <notification - - name="OtherObjectsReturned" - > -Genstandene pÃ¥ det valgte stykke land der er ejet af [FIRST] [LAST] er blevet returneret til hans eller hendes beholdning. - </notification> - - <notification - - name="OtherObjectsReturned2" - > -Genstandene pÃ¥ det valgte stykke land der er ejet af beboeren '[NAME]' er blevet returneret til deres ejere. - </notification> - - <notification - - name="GroupObjectsReturned" - > -Genstandene pÃ¥ det valgte stykke land, delt med gruppen [GROUPNAME], er blevet returneret til deres ejeres beholdninger. -Genstande, som er dedikerede og som kan overføres, er blevet returneret til deres forrige ejere. -Genstande, der ikke kan overføres og som er dedikeret til gruppen, er blevet slettet. - </notification> - - <notification - - name="UnOwnedObjectsReturned" - > -Genstandene pÃ¥ det valgte stykke land, der IKKE er ejet af dig, er blevet returneret til deres ejere. - </notification> - - <notification - - name="NotSafe" - > -Dette land har sat skade til ('ikke sikker'). -Du kan komme til skade her. Hvis du dør, vil du blive teleporteret til din hjem-lokalitet. - </notification> - - <notification - - name="NoFly" - > -Dette land har slÃ¥et flyvning fra ('ingen flyvning'). -Du kan ikke flyve her. - </notification> - - <notification - - name="PushRestricted" - > -Dette land giver ikke mulighed for at 'skubbe' andre, med mindre du ejer landet. - </notification> - - <notification - - name="NoVoice" - > -Dette land har ikke mulighed for at bruge stemme. - </notification> - - <notification - - name="NoBuild" - > -Dette land giver ikke mulighed for at bygge ('byggeri forbudt'). -Du kan ikke skabe genstande her. - </notification> - - <notification - - name="ScriptsStopped" - > -En administrator har midlertidig stoppet scripts i denne region. - </notification> - - <notification - - name="ScriptsNotRunning" - > -Denne region kører ikke nogen scripts. - </notification> - - <notification - - name="NoOutsideScripts" - > -Dette land har eksterne scripts slÃ¥et fra -('ingen eksterne scripts'). -Ingen scripts vil køre pÃ¥ nær dem, som tilhører ejeren af landet. - </notification> - - <notification - - name="ClaimPublicLand" - > -Du kan kun gøre krav pÃ¥ offentlig land i den region, du befinder dig i. - </notification> - - <notification - - name="ObjectGiveItem" - > -En genstand med navnet [OBJECTFROMNAME], ejet af [FIRST] [LAST], har givet dig en/et [OBJECTTYPE] med navnet [OBJECTNAME]. - <form name="form"> - <button - - name="Keep" - text="Behold"/> - <button - - name="Discard" - text="Smid væk"/> - <button - - name="Mute" - text="Blokér"/> - </form> - </notification> - - <notification - - name="ObjectGiveItemUnknownUser" - > -En genstand med navnet [OBJECTFROMNAME], ejet af (en ukendt bruger), har givet dig en/et [OBJECTTYPE] med navnet [OBJECTNAME]. - <form name="form"> - <button - - name="Keep" - text="Behold"/> - <button - - name="Discard" - text="Smid væk"/> - <button - - name="Mute" - text="Blokér"/> - </form> - </notification> - - <notification - - name="UserGiveItem" - > -[NAME] har givet dig en/et [OBJECTTYPE] med navnet '[OBJECTNAME]'. - <form name="form"> - <button - - name="Keep" - text="Behold"/> - <button - - name="Discard" - text="Smid væk"/> - <button - - name="Mute" - text="Blokér"/> - </form> - </notification> - - <notification - - name="GodMessage" - > -[NAME] -[MESSAGE] - </notification> - - <notification - - name="JoinGroup" - > -[MESSAGE] - <form name="form"> - <button - - name="Join" - text="Indmeld"/> - <button - - name="Decline" - text="Afvis"/> - <button - - name="Info" - text="Information"/> - </form> - </notification> - - <notification - - name="TeleportOffered" - > -[NAME] har tilbudt at teleportere dig til hans eller hendes lokalitet: - -[MESSAGE] - <form name="form"> - <button - - name="Teleport" - text="Teleportér"/> - <button - - name="Cancel" - text="Annullér"/> - </form> - </notification> - - <notification - - name="GotoURL" - > -[MESSAGE] -[URL] - <form name="form"> - <button - - name="Later" - text="Senere"/> - <button - - name="GoNow..." - text="GÃ¥ nu..."/> - </form> - </notification> - - <notification - - name="OfferFriendship" - > -[NAME] tilbyder venskab. - -Som standard vil du kunne se andres onlinestatus. - <form name="form"> - <button - - name="Accept" - text="Acceptér"/> - <button - - name="Decline" - text="Afvis"/> - </form> - </notification> - - <notification - - name="FriendshipAccepted" - > -[NAME] accepterede dit tilbud om venskab. - </notification> - - <notification - - name="FriendshipDeclined" - > -[NAME] afviste dit tilbud om venskab. - </notification> - - <notification - - name="OfferCallingCard" - > -[FIRST] [LAST] tilbyder vedkommendes visitkort. -Dette vil tilføje et bogmærke i din beholdning, sÃ¥ du hurtigt kan sende en personlig besked (IM) til denne beboer. - <form name="form"> - <button - - name="Accept" - text="Acceptér"/> - <button - - name="Decline" - text="Afvis"/> - </form> - </notification> - - <notification - - name="RegionRestartMinutes" - - - > -Regionen genstarter om [MINUTES] minutter. -Hvis du bliver i denne region, vil du blive logget af. - </notification> - - <notification - - name="RegionRestartSeconds" - - - > -Regionen genstarter om [SECONDS] sekunder. -Hvis du bliver i denne region, vil du blive logget af. - </notification> - - <notification - - name="LoadWebPage" - > -Indlæs internetside [URL]? - -[MESSAGE] - -Fra genstand: [OBJECTNAME], ejer: [NAME]? - <form name="form"> - <button - - name="Gotopage" - text="GÃ¥ til side"/> - <button - - name="Cancel" - text="Afbryd"/> - </form> - </notification> - - <notification - - name="FailedToFindWearableUnnamed" - > -Det lykkedes ikke at finde [TYPE] i databasen. - </notification> - - <notification - - name="FailedToFindWearable" - > -Det lykkedes ikke at finde [TYPE] med navnet [DESC] i databasen. - </notification> - - <notification - - name="ScriptQuestion" - > -'[OBJECTNAME]', en genstand, ejet af '[NAME]', vil gerne: - [QUESTIONS] -Er det iorden? - <form name="form"> - <button - - name="Yes" - text="Ja"/> - <button - - name="No" - text="Nej"/> - <button - - name="Mute" - text="Blokér"/> - </form> - </notification> - - <notification - - name="ScriptQuestionCaution" - > -'[OBJECTNAME]', en genstand, ejet af '[NAME]', vil gerne: - -[QUESTIONS] -Hvis du ikke har tillid til denne genstand og dens skaber, bør du afvise denne forespørgsel. For yderligere information klik pÃ¥ Detaljer-knappen. - -Imødekom denne forespørgsel? - <form name="form"> - <button - - name="Grant" - text="Imødekom"/> - <button - - name="Deny" - text="Afvis"/> - <button - - name="Details" - text="Detaljer..."/> - </form> - </notification> - - <notification - - name="ScriptDialog" - > -[FIRST] [LAST]'s '[TITLE]' -[MESSAGE] - <form name="form"> - <button - - name="Ignore" - text="Ignorér"/> - </form> - </notification> - - <notification - - name="ScriptDialogGroup" - > -[GROUPNAME]'s '[TITLE]' -[MESSAGE] - <form name="form"> - <button - - name="Ignore" - text="Ignorér"/> - </form> - </notification> - - <notification - - name="FirstBalanceIncrease" - > -Du har lige modtaget L$[AMOUNT]. -Genstande og andre brugere kan give dig L$. -Din saldo er vist i øverste højre hjørne af skærmen. - </notification> - - <notification - - name="FirstBalanceDecrease" - > -Du har lige modtaget L$[AMOUNT]. -Din saldo er vist i øverste højre hjørne af skærmen. - </notification> - - <notification - - name="FirstSit" - > -Du sidder. -Brug piletasterne (eller AWSD) for at ændre hvilken vej du ser. -Klik pÃ¥ 'StÃ¥ op'-knappen for at rejse dig op. - </notification> - - <notification - - name="FirstMap" - > -Klik og træk for at flytte kortvisningen. -Dobbelt-klik for at teleportere. -Brug kontrollerne til højre for at finde ting og se forskellige baggrunde. - </notification> - - <notification - - name="FirstBuild" - > -Du kan bygge nye genstande i nogle omrÃ¥der af [SECOND_LIFE]. -Brug værktøjet øverst til venstre for at bygge, og prøv at holde Ctrl eller Alt nede for hurtigt at skifte imellem værktøjerne. -Tryk Esc for at stoppe med at bygge. - </notification> - - <notification - - name="FirstLeftClickNoHit" - > -Venstre-klik interagerer med specielle genstande. -Hvis musemarkøren ændrer sig til en hÃ¥nd, kan du interagere med genstanden. -Højre-klik viser altid en menu med ting du kan gøre. - </notification> - - <notification - - name="FirstTeleport" - > -Du har lige teleporteret. -Du er ved info-standen nærmest ved din destination. -Din destination er markeret med en stor rød lyskegle. - </notification> - - <notification - - name="FirstOverrideKeys" - > -Dine bevælgelsestaster bliver nu hÃ¥ndteret af et objekt. -Brug piletasterne eller AWSD for at se, hvad de gør. -Nogle genstande (som skydevÃ¥ben) kræver at du gÃ¥r ind i musevisning for at bruge dem. -Tryk pÃ¥ 'M' for at gÃ¥re det. - </notification> - - <notification - - name="FirstAppearance" - > -Du tilretter dit udseende. -For at rotere og zoome brug piletasterne. -NÃ¥r du er færdig, tryk pÃ¥ 'Gem alt' for at gemme dit udseende og lukke. -Du kan rette dit udseende sÃ¥ tit du vil. - </notification> - - <notification - - name="FirstInventory" - > -Dette er din beholdning, der indeholder objekter, noter, tøj og andre ting du ejer. -* For at bære et objekt eller en mappe med tøj, træk den over pÃ¥ dig selv. -* For at fÃ¥ et objekt frem i verdenen, træk den ud pÃ¥ jorden. -* For at læse en note, dobbeltklik pÃ¥ den. - </notification> - - <notification - - name="FirstSandbox" - > -Dette er sandkasseomrÃ¥det. -Genstande, der er skabt her, vil blive slettet efter du har forladt omrÃ¥det. Sandkasser renses jævnligt. Se venligst informationen øverst pÃ¥ skærmen, lige ved siden af omrÃ¥denavnet. - -SandkasseomrÃ¥der er ikke almindelige. De er mærket med skilte. - </notification> - - <notification - - name="FirstFlexible" - > -Denne genstand er fleksibel. -Fleksible genstande er ikke fysiske og man kan gÃ¥ igennem dem, indtil fleksibel-punktet ikke er afkrydset. - </notification> - - <notification - - name="FirstDebugMenus" - > -Du har sat avanceret menu til. -Denne menu indeholder funktioner brugbare for udviklere, der udbedrer fejl i Second Life. -For at vise denne menu, skal man i Windows trykke Ctrl-Alt-D. PÃ¥ Mac tryk Cmd-Opt-Shift-D. - </notification> - - <notification - - name="FirstSculptedPrim" - > -Du retter en sculpted prim. -Sculpted prims kræver et specielt tekstur for at specificere deres form. -Du kan finde eksempler pÃ¥ sculptede teksturer i din beholdning. - </notification> - - <notification - - name="FirstMedia" - > -Du er begyndt at afspille medie. Medie kan sættes til automatisk af blive afspillet under Indstillinger, Lyd / Video. Vær opmærksom pÃ¥, at der kan være en sikkerhedsrisiko for medie-steder, du ikke stoler pÃ¥. - </notification> - - <notification - - name="MaxListSelectMessage" - > -Du mÃ¥ kun vælge op til [MAX_SELECT] genstande pÃ¥ denne liste. - </notification> - - <notification - - name="VoiceInviteP2P" - > -[NAME] inviterer dig til en stemme-chat. -Klik for at acceptere at koble dig pÃ¥ samtalen eller Afvis for at afvise invitationen. Klik pÃ¥ SlÃ¥ fra for at blokere denne opkalder. - <form name="form"> - <button - - name="Accept" - text="Acceptér"/> - <button - - name="Decline" - text="Afvis"/> - <button - - name="Mute" - text="Blokér"/> - </form> - </notification> - - <notification - - name="AutoUnmuteByIM" - > -[FIRST] [LAST] har fÃ¥et en personlig besked (IM) og er automatisk ikke blokeret mere. - </notification> - - <notification - - name="AutoUnmuteByMoney" - > -[FIRST] [LAST] har fÃ¥et penge og er automatisk ikke blokeret mere. - </notification> - - <notification - - name="AutoUnmuteByInventory" - > -[FIRST] [LAST] har fÃ¥et tilbudt genstande og er automatisk ikke blokeret mere. - </notification> - - <notification - - name="VoiceInviteGroup" - > -[NAME] har tilsluttet sig stemme-chat med gruppen [GROUP]. -Klik Acceptér for at slutte dig til samtalen eller Afvis for at afvise invitationen. Klik SlÃ¥ fra for at blokere denne opkalder. - <form name="form"> - <button - - name="Accept" - text="Acceptér"/> - <button - - name="Decline" - text="Afvis"/> - <button - - name="Mute" - text="Blokér"/> - </form> - </notification> - - <notification - - name="VoiceInviteAdHoc" - > -[NAME] har tilsluttet sig stemme-chat med en konference-chat. -Klik Acceptér for at slutte dig til samtalen eller Afvis for at afvise invitationen. Klik SlÃ¥ fra for at blokere denne opkalder. - <form name="form"> - <button - - name="Accept" - text="Acceptér"/> - <button - - name="Decline" - text="Afvis"/> - <button - - name="Mute" - text="Blokér"/> - </form> - </notification> - - <notification - - name="InviteAdHoc" - > -[NAME] inviterer dig til en konference-chat. -Klik Acceptér for at slutte dig til samtalen eller Afvis for at afvise invitationen. Klik SlÃ¥ fra for at blokere denne opkalder. - <form name="form"> - <button - - name="Accept" - text="Acceptér"/> - <button - - name="Decline" - text="Afvis"/> - <button - - name="Mute" - text="Blokeret"/> - </form> - </notification> - - <notification - - name="VoiceChannelFull" - > -Den stemme-chat, du prøver at tilslutte dig, [VOICE_CHANNEL_NAME], har nÃ¥et maksiumum kapacitet. Prøv venligst igen senere. - </notification> - - <notification - - name="ProximalVoiceChannelFull" - > -Vi beklager. Dette omrÃ¥de har nÃ¥et sin maksimale kapacitet for stemme-chat. Prøv venligst at benytte stemme i et andet omrÃ¥de. - </notification> - - <notification - - name="VoiceChannelDisconnected" - > -Du er blevet koblet af [VOICE_CHANNEL_NAME]. Du vil nu blive koblet op pÃ¥ en lokal stemme-chat. - </notification> - - <notification - - name="VoiceChannelDisconnectedP2P" - > -[VOICE_CHANNEL_NAME] har afsluttet opkaldet. Du vil nu blive koblet op pÃ¥ en lokal stemme-chat. - </notification> - - <notification - - name="P2PCallDeclined" - > -[VOICE_CHANNEL_NAME] har afvist dit opkald. Du vil nu blive koblet op pÃ¥ en lokal stemme-chat. - </notification> - - <notification - - name="P2PCallNoAnswer" - > -[VOICE_CHANNEL_NAME] har ikke mulighed for at besvare dit opkald. Du vil nu blive koblet op pÃ¥ en lokal chat. - </notification> - - <notification - - name="VoiceChannelJoinFailed" - > -Det lykkedes ikke at koble op til [VOICE_CHANNEL_NAME]. Prøv venligst igen senere. - </notification> - - <notification - - name="VoiceLoginRetry" - > -Vi laver en stemmekanal til dig. Det kan tage op til et minut. - </notification> - - <notification - - name="Cannot enter parcel: not a group member" - > -Du kan ikke komme ind pÃ¥ omrÃ¥det. Du er ikke medlem af den nødvendige gruppe. - </notification> - - <notification - - name="Cannot enter parcel: banned" - > -Du kan ikke komme ind pÃ¥ omrÃ¥det. Du er blevet udelukket. - </notification> - - <notification - - name="Cannot enter parcel: not on access list" - > -Du kan ikke komme ind pÃ¥ omrÃ¥det. Du er ikke pÃ¥ adgangslisten. - </notification> - - <notification - - name="VoiceNotAllowed" - > -Du har ikke tilladelse til at tilslutte dig stemme-chat pÃ¥ [VOICE_CHANNEL_NAME]. - </notification> - - <notification - - name="VoiceCallGenericError" - > -En fejl er opstÃ¥et under forsøget pÃ¥ at koble sig pÃ¥ stemme chatten [VOICE_CHANNEL_NAME]. PrÃ¥v venligst senere. - </notification> - - <notification - - name="ServerVersionChanged" - > -Det omrÃ¥de, du er kommet ind pÃ¥, kører en anden simulatorversion. Klik pÃ¥ denne besked for detaljer. - </notification> - - <notification - - name="UnableToOpenCommandURL" - > -Www-adressen, du har klikket pÃ¥, kan ikke Ã¥bnes fra denne internetbrowser. - </notification> -</notifications> - +<?xml version="1.0" ?><notifications> + + <global name="skipnexttime"> + + Vis ikke dette igen + </global> + + <global name="alwayschoose"> + + Vælg altid dette + </global> + + <template name="okbutton"> + <form> + <button + name="OK" + text="$yestext"/> + </form> + </template> + + <template name="okignore"> + <form> + <button + name="OK" + text="$yestext"/> + <ignore text="$ignoretext"/> + </form> + </template> + + <template name="okcancelbuttons"> + <form> + <button + name="OK" + text="$yestext"/> + <button + name="Cancel" + text="$notext"/> + </form> + </template> + + <template name="okcancelignore"> + <form> + <button + name="OK" + text="$yestext"/> + <button + name="Cancel" + text="$notext"/> + <ignore text="$ignoretext"/> + </form> + </template> + + <template name="okhelpbuttons"> + <form> + <button + name="OK" + text="$yestext"/> + <button + name="Help" + text="$helptext"/> + </form> + </template> + + <template name="yesnocancelbuttons"> + <form> + <button + name="Yes" + text="$yestext"/> + <button + name="No" + text="$notext"/> + <button + name="Cancel" + text="$canceltext"/> + </form> + </template> + + <notification + functor="GenericAcknowledge" + + name="MissingAlert" + > +'[_NAME]' mangler fra notifications.xml. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + + name="FloaterNotFound" + > +Floater error: Kunne ikke finde følgende kontrol: + +[CONTROLS] + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + + name="TutorialNotFound" + > +Der er i øjeblikket ingen tilgængelig guide. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + + name="GenericAlert" + > +[MESSAGE] + </notification> + + <notification + + name="GenericAlertYesCancel" + > +[MESSAGE] + <usetemplate + name="okcancelbuttons" + notext="Annullér" + yestext="Ja"/> + </notification> + + <notification + + name="WearableSave" + > +Gem ændringer til nuværende tøj/krops del? + <usetemplate + canceltext="Annullér" + name="yesnocancelbuttons" + notext="Gem ikke" + yestext="Gem"/> + </notification> + + <notification + + name="CompileQueueSaveText" + > +Der var problemer med upload af teksten til et script af følgende Ã¥rsager: [REASON]. Prøv igen senere. + </notification> + + <notification + + name="CompileQueueSaveBytecode" + > +Der var problemer med at uploade den kompileret script af følgende Ã¥rsager: [REASON]. Prøv igen senere. + </notification> + + <notification + + name="WriteAnimationFail" + > +Der var et problem med skrivning af animations data. Prøv igen senere. + </notification> + + <notification + + name="UploadAuctionSnapshotFail" + > +Der var problemer med at uploade billedet til auktionen af følgende Ã¥rsager: [REASON] + </notification> + + <notification + + name="UnableToViewContentsMoreThanOne" + > +Ude af stand til at se indholdet af mere end ét element ad gangen. +Vælg kun en genstand, og prøv igen. + </notification> + + <notification + + name="SaveClothingBodyChanges" + > +Gem alle ændringer til tøj/krops dele? + <usetemplate + canceltext="Annullér" + name="yesnocancelbuttons" + notext="Gem Ikke" + yestext="Gem Alt"/> + </notification> + + <notification + + name="GrantModifyRights" + > +At give redigerings rettigheder til en anden beboer, giver dem mulighed for at ændre, slette eller tage alle genstande, du mÃ¥tte have i verden. Vær meget forsigtig nÃ¥r uddeler denne tilladelse. +Ønsker du at ændre rettigheder for [FIRST_NAME] [LAST_NAME]? + <usetemplate + name="okcancelbuttons" + notext="Nej" + yestext="Ja"/> + </notification> + + <notification + + name="GrantModifyRightsMultiple" + > +At give redigerings rettigheder til en anden beboer, giver dem mulighed for at ændre, slette eller tage alle genstande, du mÃ¥tte have i verden. Vær meget forsigtig nÃ¥r uddeler denne tilladelse. +Ønsker du at ændre rettigheder for de valgte beboere? + <usetemplate + name="okcancelbuttons" + notext="Nej" + yestext="Ja"/> + </notification> + + <notification + + name="RevokeModifyRights" + > +Vil du tilbagekalde rettighederne for [FIRST_NAME] [LAST_NAME]? + <usetemplate + name="okcancelbuttons" + notext="Nej" + yestext="Ja"/> + </notification> + + <notification + + name="RevokeModifyRightsMultiple" + > +Vil du tilbagekalde rettighederne for de valgte beboere? + <usetemplate + name="okcancelbuttons" + notext="Nej" + yestext="Ja"/> + </notification> + + <notification + + name="UnableToCreateGroup" + > +Kunne ikke oprette gruppe. +[MESSAGE] + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + + name="PanelGroupApply" + > +[NEEDS_APPLY_MESSAGE] +[WANT_APPLY_MESSAGE] + <usetemplate + canceltext="Annullér" + name="yesnocancelbuttons" + notext="Ignorer Ændringer" + yestext="Godkend Ændringer"/> + </notification> + + <notification + + name="MustSpecifyGroupNoticeSubject" + > +Du skal angive et emne for at sende en gruppe besked. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + + name="AddGroupOwnerWarning" + > +Du er ved at tilføje medlemmer til rollen som [ROLE_NAME]. +Medlemmer ikke kan fjernes fra denne rolle. +Medlemmerne skal fratræde sin rolle selv. +Er du sikker pÃ¥ du vil fortsætte? + <usetemplate + ignoretext="NÃ¥r du tilføjer medlemmer til ejer rollen" + name="okcancelignore" + notext="Nej" + yestext="Ja"/> + </notification> + + <notification + + name="AssignDangerousActionWarning" + > +Du er ved at tilføje muligheden for '[ACTION_NAME]' til +rollen '[ROLE_NAME]'. + +*ADVARSEL* +Ethvert medlem i en rolle med denne evne kan tildele sig selv -- og et andet medlem - roller med flere beføjelser, end de har i øjeblikket, potentielt kan de ophøje sig selv til nær-Ejer magt. Være sikker pÃ¥, at du ved, hvad du laver, før tildeling af denne evne. + +Add this Ability to '[ROLE_NAME]'? + <usetemplate + name="okcancelbuttons" + notext="Nej" + yestext="Ja"/> + </notification> + + <notification + + name="ClickPublishHelpAvatar" + > +Hvis du vælger "Vis i Søgning" Vises: +- Din profil i søgeresultater +- Et link til din profile i de offentlige gruppe sider + </notification> + + <notification + + name="ClickWebProfileHelpAvatar" + > +Hvis en beboer har en hjemmeside adresse kan du: + * Klikke 'Load' for at side deres side her. + * Klikke Load > 'I ekstern browser' for at se siden i din standard browser. + * Klikke Load > 'Hjemme URL' for at returnere til denne beboers side hvis du har navigeret væk. + +NÃ¥r du ser din egen profil, kan du skrive hvilken som helst adresse og klikke ok for at fÃ¥ den vist i din egen profil. +Andre beboere kan besøge den adresse du har sat, nÃ¥r de besøger din profil. + </notification> + + <notification + + name="JoinGroupCannotAfford" + > +Tilmelding til denne gruppe koster L$[COST]. +Du har ikke nok L$ til denne tilmelding. + </notification> + + <notification + + name="PromptMissingSubjMsg" + > +E-mail dette billede med standard emne eller besked? + <usetemplate + name="okcancelbuttons" + notext="Annullér" + yestext="OK"/> + </notification> + + <notification + + name="ErrorUploadingPostcard" + > +Der var et problem med at sende billedet pÃ¥ grund af følgende: [REASON] + </notification> + + <notification + + name="MustHaveAccountToLogIn" + > +Ups! Noget var tomt. +Du skal skrive bÃ¥de fornavn og efternavn pÃ¥ din figur. + +Du har brug for en konto for at logge ind i [SECOND_LIFE]. Vil du oprette en nu? + <usetemplate + name="okcancelbuttons" + notext="Prøv igen" + yestext="Lav ny konto"/> + </notification> + + <notification + + name="ResetShowNextTimeDialogs" + > +Vil du gerne genaktivere alle disse popups, som du tidligere har bedt om ikke at fÃ¥ vist? + <usetemplate + name="okcancelbuttons" + notext="Annullér" + yestext="OK"/> + </notification> + + <notification + + name="SkipShowNextTimeDialogs" + > +Vil du deaktivere alle popups som kan undværes? + <usetemplate + name="okcancelbuttons" + notext="Annullér" + yestext="OK"/> + </notification> + + <notification + + name="ChangeSkin" + > +Det nye udseende vil vises efter du har genstartet [SECOND_LIFE]. + </notification> + + <notification + + name="UnsupportedHardware" + > + <form name="form"> + <ignore name="ignore" + text="Ved opdagelse af ikke supporteret hardware"/> + </form> + </notification> + + <notification + + name="UnknownGPU" + > + <form name="form"> + <ignore name="ignore" + text="Ved opdagelse af et ukendt grafikkort"/> + </form> + </notification> + + <notification + + name="CannotGiveCategory" + > +Du har ikke tilladelse til at videreføre den valgte mappe. + </notification> + + <notification + + name="CannotBuyLandNoRegion" + > +Ikke i stand til at købe land: +Kan ikke finde region som dette land er i. + </notification> + + <notification + + name="YouHaveBeenLoggedOut" + > +Du er blevet logget ud af [SECOND_LIFE]: + [MESSAGE] +Du kan stadig se eksiterende PB'er og chat ved at klikke'Se PB & Chat'. Ellers, klik 'Afslut' for at afslutte [SECOND_LIFE] nu. + <usetemplate + name="okcancelbuttons" + notext="Quit" + yestext="Se IM & Chat"/> + </notification> + + <notification + + label="Add Friend" + name="AddFriend" + > +Venner kan give tilladelse til at følge hinanden +pÃ¥ Verdenskortet eller modtage status opdateringer. + +Tilbyd venskab til [NAME]? + <usetemplate + name="okcancelbuttons" + notext="Annullér" + yestext="OK"/> + </notification> + + <notification + + label="Add Friend" + name="AddFriendWithMessage" + > +Venner kan give tilladelse til at følge hinanden +pÃ¥ Verdenskortet eller modtage status opdateringer. + +Tilbyd venskab til [NAME]? + <form name="form"> + <input name="message" type="text"> +Vil du være min ven? + </input> + <button + + + name="Offer" + text="OK"/> + <button + + name="Cancel" + text="Annullér"/> + </form> + </notification> + + <notification + + name="NotEnoughCurrency" + > +[NAME] L$ [PRICE] Du har ikke nok L$ til dette. + </notification> + + <notification + + name="HelpReportAbuseEmailLL" + > +Brug dette værktøj for at rapportere brud pÃ¥ de almindelige bestemmelser og fællesskabs Standarder. Se: + +http://secondlife.com/corporate/tos.php +http://secondlife.com/corporate/cs.php + +Alle rapporterede brud pÃ¥ almindelige bestemmelser og fællesskabs Standarder bliver undersøgt og løst. Du kan følge løsningen pÃ¥ din anmeldselse pÃ¥: + +http://secondlife.com/support/incidentreport.php + </notification> + + <notification + + name="HelpReportAbuseContainsCopyright" + > +Dear Resident, + +Du ser ud til at være ved at rapportere noget vedr. krænkelse af intellektuelle ejendomsrettigheder. Sørg for, at du rapporterer dette korrekt: + +(1) Misbrugs processen. Du kan indsende en misbrugs rapport, hvis du mener, at en Beboer udnytter Second Life's rettigheds system, for eksempel ved hjælp af en CopyBot eller lignende kopierings værktøjer, at de krænker intellektuelle ejendomsrettigheder. Det team vil undersøge og spørgsmÃ¥l passende disciplinære sanktioner for adfærd, der overtræder Second Life EF-standarderne eller ServicevilkÃ¥r. Men det team vil ikke hÃ¥ndtere og vil ikke reagere pÃ¥ anmodninger om at fjerne indhold fra Second Life's verden. + +(2) DMCA eller Indholds fjernelses processen. For at anmode om fjernelse af indhold fra Second Life, skal du sende en gyldig anmeldelse af overtrædelsen som beskrevet i vores DMCA-politik pÃ¥ http://secondlife.com/corporate/dmca.php. + +Hvis du stadig ønsker at fortsætte med misbrugs processen, luk da venligst dette vindue og færdiggør indsendelsen af din rapport. Du kan være nødt til at vælge den særlige kategori »CopyBot eller Tilladelses Ydnyttelse. + +Mange tak, + +Linden Lab + </notification> + + <notification + + name="ConfirmClearCookies" + > +Er du sikker pÃ¥ du vil slette alle cookies? + </notification> + + <notification + + name="ChatterBoxSessionStartError" + > +Ikke i stand til at start chat med [RECIPIENT]. +[REASON] + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + + name="Cannot_Purchase_an_Attachment" + > +Ting kan ikke købes imens de er en del af tilbehør. + </notification> + + <notification + + name="NewWaterPreset" + > + <form name="form"> + <input name="message" type="text"> +Ny forudindstilling + </input> + <button + + + name="OK" + text="OK"/> + <button + + name="Cancel" + text="Annullér"/> + </form> + </notification> + + <notification + + name="NewSkyPreset" + > + <form name="form"> + <input name="message" type="text"> +Ny forudindstilling + </input> + <button + + + name="OK" + text="OK"/> + <button + + name="Cancel" + text="Annullér"/> + </form> + </notification> + + <notification + + name="OfferTeleport" + > + <form name="form"> + <input name="message" type="text"> +Mød mig i [REGION] + </input> + <button + + + name="OK" + text="OK"/> + <button + + name="Cancel" + text="Annullér"/> + </form> + </notification> + + <notification + + name="SystemMessageTip" + > +[MESSAGE] + </notification> + + <notification + + name="Cancelled" + > +Annulléret + </notification> + + <notification + + name="CancelledSit" + > +Annulléret sid + </notification> + + <notification + + name="CancelledAttach" + > +Annulléreret vedhæft + </notification> + + <notification + + name="ReplacedMissingWearable" + > +Erstattet manglende tøj/kropsdele med standard. + </notification> + + <notification + + name="FriendOnline" + > +[FIRST] [LAST] er Online + </notification> + + <notification + + name="FriendOffline" + > +[FIRST] [LAST] er Offline + </notification> + + <notification + + name="AddSelfFriend" + > +Du kan ikke tilføje dig selv som ven. + </notification> + + <notification + + name="UploadingAuctionSnapshot" + > +Uploader billeder fra verdenen og www... +(Tager omkring 5 minutter.) + </notification> + + <notification + + name="UploadPayment" + > +Du betalte L$[AMOUNT] for at uploade. + </notification> + + <notification + + name="UploadWebSnapshotDone" + > +Billeder fra www er uploadet. + </notification> + + <notification + + name="UploadSnapshotDone" + > +Billeder fra verdenen er uploadet + </notification> + + <notification + + name="TerrainDownloaded" + > +Terrain.raw downloadet + </notification> + + <notification + + name="GestureMissing" + > +Gestus [NAME] mangler i databasen. + </notification> + + <notification + + name="UnableToLoadGesture" + > +Ikke muligt at indlæse gestus [NAME]. +Prøv venligst igen. + </notification> + + <notification + + name="LandmarkMissing" + > +Landmærke mangler i databasen. + </notification> + + <notification + + name="UnableToLoadLandmark" + > +Ikke muligt at indlæse landmærke. Prøv venligst igen. + </notification> + + <notification + + name="CapsKeyOn" + > +Du har slÃ¥et store bogstaver til. +Da det vil have betydning nÃ¥r du indtaster kodeordet, vil du højest sandsynlig slÃ¥ dem fra. + </notification> + + <notification + + name="NotecardMissing" + > +Note mangler i databasen. + </notification> + + <notification + + name="NotecardNoPermissions" + > +Utilstrækkelige tilladelser til at se note. + </notification> + + <notification + + name="RezItemNoPermissions" + > +Utilstrækkelige tilladelser til at danne genstanden. + </notification> + + <notification + + name="UnableToLoadNotecard" + > +Ikke muligt at indlæse note. +Prøv venligst igen. + </notification> + + <notification + + name="ScriptMissing" + > +Script mangler i databasen. + </notification> + + <notification + + name="ScriptNoPermissions" + > +Utilstrækkelige tilladelser til at se script. + </notification> + + <notification + + name="UnableToLoadScript" + > +Ikke muligt at indlæse script. Prøv venligst igen. + </notification> + + <notification + + name="IncompleteInventory" + > +Det komplette indhold, du tilbyder, er ikke endnu tilgængelig lokalt. Prøv venligst at tilbyde tingene igen om lidt. + </notification> + + <notification + + name="CannotModifyProtectedCategories" + > +Du kan ikke ændre beskyttede kategorier. + </notification> + + <notification + + name="CannotRemoveProtectedCategories" + > +Du kan ikke fjerne beskyttede kategorier. + </notification> + + <notification + + name="OfferedCard" + > +Du har tilbudt et visitkort til [FIRST] [LAST] + </notification> + + <notification + + name="OfferedFriendship" + > +Du har tilbudt venskab til [FIRST] [LAST] + </notification> + + <notification + + name="UnableToBuyWhileDownloading" + > +Ikke muligt at købe, imens genstandens data hentes. +Prøv venligst igen. + </notification> + + <notification + + name="UnableToLinkWhileDownloading" + > +Ikke muligt at lænke imens genstandens data hentes. +Prøv venligst igen. + </notification> + + <notification + + name="CannotBuyObjectsFromDifferentOwners" + > +Kan ikke købe genstande fra forskellige ejere pÃ¥ samme tid. +Prøv venligst at vælge en enkelt genstand. + </notification> + + <notification + + name="ObjectNotForSale" + > +Genstanden ser ikke ud til at være til salg. + </notification> + + <notification + + name="EnteringGodMode" + > +Starter gud-tilstand, niveau [LEVEL] + </notification> + + <notification + + name="LeavingGodMode" + > +Stopper gud-tilstand, niveau [LEVEL] + </notification> + + <notification + + name="CopyFailed" + > +Kopiering lykkedes ikke fordi du ikke har nok tilladelser til at kopiere + </notification> + + <notification + + name="InventoryAccepted" + > +[NAME] accepterede det du tilbød fra din beholdning. + </notification> + + <notification + + name="InventoryDeclined" + > +[NAME] afviste det du tilbød fra din beholdning. + </notification> + + <notification + + name="ObjectMessage" + > +[NAME]: [MESSAGE] + </notification> + + <notification + + name="CallingCardAccepted" + > +Dit visitkort blev accepteret. + </notification> + + <notification + + name="CallingCardDeclined" + > +Dit visitkort blev afvist. + </notification> + + <notification + + name="TeleportToLandmark" + > +Nu hvor du er nÃ¥et frem til hovedlandet, kan du teleportere til steder som '[NAME]' ved at klikke pÃ¥ Beholdning-knappen i nederste højre side af skærmen hvorefter du vælger Landmærke-mappen. +Dobbeltklik pÃ¥ landmærket og klik pÃ¥ Teleportér, for at rejse derhen. + </notification> + + <notification + + name="TeleportToPerson" + > +Nu hvor du har nÃ¥et frem til hovedlandet, kan du kontakte indbyggere som '[NAME]' ved at klikke pÃ¥ Beholdning-knappen i nederste højre side af skærmen, hvorefter du vælger Visitkort-mappen. +Dobbeltklik pÃ¥ kortet, klik pÃ¥ IM og skriv beskeden. + </notification> + + <notification + + name="CantSelectLandFromMultipleRegions" + > +Kan ikke vælge land pÃ¥ tværs af grænser. +Prøv at vælge mindre stykker land. + </notification> + + <notification + + name="GroupVote" + > +[NAME] har forslÃ¥et at stemme for: +[MESSAGE] + <form name="form"> + <button + + name="VoteNow" + text="Stem nu"/> + <button + + name="Later" + text="Senere"/> + </form> + </notification> + + <notification + + name="SystemMessage" + > +[MESSAGE] + </notification> + + <notification + + name="EventNotification" + > +Besked om begivenhed: + +[NAME] +[DATE] + <form name="form"> + <button + + name="Teleport" + text="Teleportér"/> + <button + + name="Description" + text="Beskrivelse"/> + <button + + name="Cancel" + text="Annullér"/> + </form> + </notification> + + <notification + + name="TransferObjectsHighlighted" + > +Alle genstande pÃ¥ denne grund, som vil blive overført til køberen af denne grund, er nu oplyst. + +* Træer og græs, der vil blive overført, er ikke fremhævet. + <form name="form"> + <button + + name="Done" + text="Færdig"/> + </form> + </notification> + + <notification + + name="DeactivatedGesturesTrigger" + > +Deaktiverede bevægelser med samme udløser: [NAMES] + </notification> + + <notification + + name="NoQuickTime" + > +Apple's QuickTime ser ikke ud til at være installeret pÃ¥ computeren. +Hvis du vil se live transmitteret medie pÃ¥ grunde, der understøtter det, skal du gÃ¥ ind pÃ¥ QuickTime-siden (http://www.apple.dk/quicktime) og installere QuickTime afspilleren. + </notification> + + <notification + + name="OwnedObjectsReturned" + > +De genstande du ejer pÃ¥ det valgte stykke land er blevet returneret til din beholdning. + </notification> + + <notification + + name="OtherObjectsReturned" + > +Genstandene pÃ¥ det valgte stykke land der er ejet af [FIRST] [LAST] er blevet returneret til hans eller hendes beholdning. + </notification> + + <notification + + name="OtherObjectsReturned2" + > +Genstandene pÃ¥ det valgte stykke land der er ejet af beboeren '[NAME]' er blevet returneret til deres ejere. + </notification> + + <notification + + name="GroupObjectsReturned" + > +Genstandene pÃ¥ det valgte stykke land, delt med gruppen [GROUPNAME], er blevet returneret til deres ejeres beholdninger. +Genstande, som er dedikerede og som kan overføres, er blevet returneret til deres forrige ejere. +Genstande, der ikke kan overføres og som er dedikeret til gruppen, er blevet slettet. + </notification> + + <notification + + name="UnOwnedObjectsReturned" + > +Genstandene pÃ¥ det valgte stykke land, der IKKE er ejet af dig, er blevet returneret til deres ejere. + </notification> + + <notification + + name="NotSafe" + > +Dette land har sat skade til ('ikke sikker'). +Du kan komme til skade her. Hvis du dør, vil du blive teleporteret til din hjem-lokalitet. + </notification> + + <notification + + name="NoFly" + > +Dette land har slÃ¥et flyvning fra ('ingen flyvning'). +Du kan ikke flyve her. + </notification> + + <notification + + name="PushRestricted" + > +Dette land giver ikke mulighed for at 'skubbe' andre, med mindre du ejer landet. + </notification> + + <notification + + name="NoVoice" + > +Dette land har ikke mulighed for at bruge stemme. + </notification> + + <notification + + name="NoBuild" + > +Dette land giver ikke mulighed for at bygge ('byggeri forbudt'). +Du kan ikke skabe genstande her. + </notification> + + <notification + + name="ScriptsStopped" + > +En administrator har midlertidig stoppet scripts i denne region. + </notification> + + <notification + + name="ScriptsNotRunning" + > +Denne region kører ikke nogen scripts. + </notification> + + <notification + + name="NoOutsideScripts" + > +Dette land har eksterne scripts slÃ¥et fra +('ingen eksterne scripts'). +Ingen scripts vil køre pÃ¥ nær dem, som tilhører ejeren af landet. + </notification> + + <notification + + name="ClaimPublicLand" + > +Du kan kun gøre krav pÃ¥ offentlig land i den region, du befinder dig i. + </notification> + + <notification + + name="ObjectGiveItem" + > +En genstand med navnet [OBJECTFROMNAME], ejet af [FIRST] [LAST], har givet dig en/et [OBJECTTYPE] med navnet [OBJECTNAME]. + <form name="form"> + <button + + name="Keep" + text="Behold"/> + <button + + name="Discard" + text="Smid væk"/> + <button + + name="Mute" + text="Blokér"/> + </form> + </notification> + + <notification + + name="ObjectGiveItemUnknownUser" + > +En genstand med navnet [OBJECTFROMNAME], ejet af (en ukendt bruger), har givet dig en/et [OBJECTTYPE] med navnet [OBJECTNAME]. + <form name="form"> + <button + + name="Keep" + text="Behold"/> + <button + + name="Discard" + text="Smid væk"/> + <button + + name="Mute" + text="Blokér"/> + </form> + </notification> + + <notification + + name="UserGiveItem" + > +[NAME] har givet dig en/et [OBJECTTYPE] med navnet '[OBJECTNAME]'. + <form name="form"> + <button + + name="Keep" + text="Behold"/> + <button + + name="Discard" + text="Smid væk"/> + <button + + name="Mute" + text="Blokér"/> + </form> + </notification> + + <notification + + name="GodMessage" + > +[NAME] +[MESSAGE] + </notification> + + <notification + + name="JoinGroup" + > +[MESSAGE] + <form name="form"> + <button + + name="Join" + text="Indmeld"/> + <button + + name="Decline" + text="Afvis"/> + <button + + name="Info" + text="Information"/> + </form> + </notification> + + <notification + + name="TeleportOffered" + > +[NAME] har tilbudt at teleportere dig til hans eller hendes lokalitet: + +[MESSAGE] + <form name="form"> + <button + + name="Teleport" + text="Teleportér"/> + <button + + name="Cancel" + text="Annullér"/> + </form> + </notification> + + <notification + + name="GotoURL" + > +[MESSAGE] +[URL] + <form name="form"> + <button + + name="Later" + text="Senere"/> + <button + + name="GoNow..." + text="GÃ¥ nu..."/> + </form> + </notification> + + <notification + + name="OfferFriendship" + > +[NAME] tilbyder venskab. + +Som standard vil du kunne se andres onlinestatus. + <form name="form"> + <button + + name="Accept" + text="Acceptér"/> + <button + + name="Decline" + text="Afvis"/> + </form> + </notification> + + <notification + + name="FriendshipAccepted" + > +[NAME] accepterede dit tilbud om venskab. + </notification> + + <notification + + name="FriendshipDeclined" + > +[NAME] afviste dit tilbud om venskab. + </notification> + + <notification + + name="OfferCallingCard" + > +[FIRST] [LAST] tilbyder vedkommendes visitkort. +Dette vil tilføje et bogmærke i din beholdning, sÃ¥ du hurtigt kan sende en personlig besked (IM) til denne beboer. + <form name="form"> + <button + + name="Accept" + text="Acceptér"/> + <button + + name="Decline" + text="Afvis"/> + </form> + </notification> + + <notification + + name="RegionRestartMinutes" + + + > +Regionen genstarter om [MINUTES] minutter. +Hvis du bliver i denne region, vil du blive logget af. + </notification> + + <notification + + name="RegionRestartSeconds" + + + > +Regionen genstarter om [SECONDS] sekunder. +Hvis du bliver i denne region, vil du blive logget af. + </notification> + + <notification + + name="LoadWebPage" + > +Indlæs internetside [URL]? + +[MESSAGE] + +Fra genstand: [OBJECTNAME], ejer: [NAME]? + <form name="form"> + <button + + name="Gotopage" + text="GÃ¥ til side"/> + <button + + name="Cancel" + text="Afbryd"/> + </form> + </notification> + + <notification + + name="FailedToFindWearableUnnamed" + > +Det lykkedes ikke at finde [TYPE] i databasen. + </notification> + + <notification + + name="FailedToFindWearable" + > +Det lykkedes ikke at finde [TYPE] med navnet [DESC] i databasen. + </notification> + + <notification + + name="ScriptQuestion" + > +'[OBJECTNAME]', en genstand, ejet af '[NAME]', vil gerne: + [QUESTIONS] +Er det iorden? + <form name="form"> + <button + + name="Yes" + text="Ja"/> + <button + + name="No" + text="Nej"/> + <button + + name="Mute" + text="Blokér"/> + </form> + </notification> + + <notification + + name="ScriptQuestionCaution" + > +'[OBJECTNAME]', en genstand, ejet af '[NAME]', vil gerne: + +[QUESTIONS] +Hvis du ikke har tillid til denne genstand og dens skaber, bør du afvise denne forespørgsel. For yderligere information klik pÃ¥ Detaljer-knappen. + +Imødekom denne forespørgsel? + <form name="form"> + <button + + name="Grant" + text="Imødekom"/> + <button + + name="Deny" + text="Afvis"/> + <button + + name="Details" + text="Detaljer..."/> + </form> + </notification> + + <notification + + name="ScriptDialog" + > +[FIRST] [LAST]'s '[TITLE]' +[MESSAGE] + <form name="form"> + <button + + name="Ignore" + text="Ignorér"/> + </form> + </notification> + + <notification + + name="ScriptDialogGroup" + > +[GROUPNAME]'s '[TITLE]' +[MESSAGE] + <form name="form"> + <button + + name="Ignore" + text="Ignorér"/> + </form> + </notification> + + <notification + + name="FirstBalanceIncrease" + > +Du har lige modtaget L$[AMOUNT]. +Genstande og andre brugere kan give dig L$. +Din saldo er vist i øverste højre hjørne af skærmen. + </notification> + + <notification + + name="FirstBalanceDecrease" + > +Du har lige modtaget L$[AMOUNT]. +Din saldo er vist i øverste højre hjørne af skærmen. + </notification> + + <notification + + name="FirstSit" + > +Du sidder. +Brug piletasterne (eller AWSD) for at ændre hvilken vej du ser. +Klik pÃ¥ 'StÃ¥ op'-knappen for at rejse dig op. + </notification> + + <notification + + name="FirstMap" + > +Klik og træk for at flytte kortvisningen. +Dobbelt-klik for at teleportere. +Brug kontrollerne til højre for at finde ting og se forskellige baggrunde. + </notification> + + <notification + + name="FirstBuild" + > +Du kan bygge nye genstande i nogle omrÃ¥der af [SECOND_LIFE]. +Brug værktøjet øverst til venstre for at bygge, og prøv at holde Ctrl eller Alt nede for hurtigt at skifte imellem værktøjerne. +Tryk Esc for at stoppe med at bygge. + </notification> + + <notification + + name="FirstLeftClickNoHit" + > +Venstre-klik interagerer med specielle genstande. +Hvis musemarkøren ændrer sig til en hÃ¥nd, kan du interagere med genstanden. +Højre-klik viser altid en menu med ting du kan gøre. + </notification> + + <notification + + name="FirstTeleport" + > +Du har lige teleporteret. +Du er ved info-standen nærmest ved din destination. +Din destination er markeret med en stor rød lyskegle. + </notification> + + <notification + + name="FirstOverrideKeys" + > +Dine bevælgelsestaster bliver nu hÃ¥ndteret af et objekt. +Brug piletasterne eller AWSD for at se, hvad de gør. +Nogle genstande (som skydevÃ¥ben) kræver at du gÃ¥r ind i musevisning for at bruge dem. +Tryk pÃ¥ 'M' for at gÃ¥re det. + </notification> + + <notification + + name="FirstAppearance" + > +Du tilretter dit udseende. +For at rotere og zoome brug piletasterne. +NÃ¥r du er færdig, tryk pÃ¥ 'Gem alt' for at gemme dit udseende og lukke. +Du kan rette dit udseende sÃ¥ tit du vil. + </notification> + + <notification + + name="FirstInventory" + > +Dette er din beholdning, der indeholder objekter, noter, tøj og andre ting du ejer. +* For at bære et objekt eller en mappe med tøj, træk den over pÃ¥ dig selv. +* For at fÃ¥ et objekt frem i verdenen, træk den ud pÃ¥ jorden. +* For at læse en note, dobbeltklik pÃ¥ den. + </notification> + + <notification + + name="FirstSandbox" + > +Dette er sandkasseomrÃ¥det. +Genstande, der er skabt her, vil blive slettet efter du har forladt omrÃ¥det. Sandkasser renses jævnligt. Se venligst informationen øverst pÃ¥ skærmen, lige ved siden af omrÃ¥denavnet. + +SandkasseomrÃ¥der er ikke almindelige. De er mærket med skilte. + </notification> + + <notification + + name="FirstFlexible" + > +Denne genstand er fleksibel. +Fleksible genstande er ikke fysiske og man kan gÃ¥ igennem dem, indtil fleksibel-punktet ikke er afkrydset. + </notification> + + <notification + + name="FirstDebugMenus" + > +Du har sat avanceret menu til. +Denne menu indeholder funktioner brugbare for udviklere, der udbedrer fejl i Second Life. +For at vise denne menu, skal man i Windows trykke Ctrl-Alt-D. PÃ¥ Mac tryk Cmd-Opt-Shift-D. + </notification> + + <notification + + name="FirstSculptedPrim" + > +Du retter en sculpted prim. +Sculpted prims kræver et specielt tekstur for at specificere deres form. +Du kan finde eksempler pÃ¥ sculptede teksturer i din beholdning. + </notification> + + <notification + + name="FirstMedia" + > +Du er begyndt at afspille medie. Medie kan sættes til automatisk af blive afspillet under Indstillinger, Lyd / Video. Vær opmærksom pÃ¥, at der kan være en sikkerhedsrisiko for medie-steder, du ikke stoler pÃ¥. + </notification> + + <notification + + name="MaxListSelectMessage" + > +Du mÃ¥ kun vælge op til [MAX_SELECT] genstande pÃ¥ denne liste. + </notification> + + <notification + + name="VoiceInviteP2P" + > +[NAME] inviterer dig til en stemme-chat. +Klik for at acceptere at koble dig pÃ¥ samtalen eller Afvis for at afvise invitationen. Klik pÃ¥ SlÃ¥ fra for at blokere denne opkalder. + <form name="form"> + <button + + name="Accept" + text="Acceptér"/> + <button + + name="Decline" + text="Afvis"/> + <button + + name="Mute" + text="Blokér"/> + </form> + </notification> + + <notification + + name="AutoUnmuteByIM" + > +[FIRST] [LAST] har fÃ¥et en personlig besked (IM) og er automatisk ikke blokeret mere. + </notification> + + <notification + + name="AutoUnmuteByMoney" + > +[FIRST] [LAST] har fÃ¥et penge og er automatisk ikke blokeret mere. + </notification> + + <notification + + name="AutoUnmuteByInventory" + > +[FIRST] [LAST] har fÃ¥et tilbudt genstande og er automatisk ikke blokeret mere. + </notification> + + <notification + + name="VoiceInviteGroup" + > +[NAME] har tilsluttet sig stemme-chat med gruppen [GROUP]. +Klik Acceptér for at slutte dig til samtalen eller Afvis for at afvise invitationen. Klik SlÃ¥ fra for at blokere denne opkalder. + <form name="form"> + <button + + name="Accept" + text="Acceptér"/> + <button + + name="Decline" + text="Afvis"/> + <button + + name="Mute" + text="Blokér"/> + </form> + </notification> + + <notification + + name="VoiceInviteAdHoc" + > +[NAME] har tilsluttet sig stemme-chat med en konference-chat. +Klik Acceptér for at slutte dig til samtalen eller Afvis for at afvise invitationen. Klik SlÃ¥ fra for at blokere denne opkalder. + <form name="form"> + <button + + name="Accept" + text="Acceptér"/> + <button + + name="Decline" + text="Afvis"/> + <button + + name="Mute" + text="Blokér"/> + </form> + </notification> + + <notification + + name="InviteAdHoc" + > +[NAME] inviterer dig til en konference-chat. +Klik Acceptér for at slutte dig til samtalen eller Afvis for at afvise invitationen. Klik SlÃ¥ fra for at blokere denne opkalder. + <form name="form"> + <button + + name="Accept" + text="Acceptér"/> + <button + + name="Decline" + text="Afvis"/> + <button + + name="Mute" + text="Blokeret"/> + </form> + </notification> + + <notification + + name="VoiceChannelFull" + > +Den stemme-chat, du prøver at tilslutte dig, [VOICE_CHANNEL_NAME], har nÃ¥et maksiumum kapacitet. Prøv venligst igen senere. + </notification> + + <notification + + name="ProximalVoiceChannelFull" + > +Vi beklager. Dette omrÃ¥de har nÃ¥et sin maksimale kapacitet for stemme-chat. Prøv venligst at benytte stemme i et andet omrÃ¥de. + </notification> + + <notification + + name="VoiceChannelDisconnected" + > +Du er blevet koblet af [VOICE_CHANNEL_NAME]. Du vil nu blive koblet op pÃ¥ en lokal stemme-chat. + </notification> + + <notification + + name="VoiceChannelDisconnectedP2P" + > +[VOICE_CHANNEL_NAME] har afsluttet opkaldet. Du vil nu blive koblet op pÃ¥ en lokal stemme-chat. + </notification> + + <notification + + name="P2PCallDeclined" + > +[VOICE_CHANNEL_NAME] har afvist dit opkald. Du vil nu blive koblet op pÃ¥ en lokal stemme-chat. + </notification> + + <notification + + name="P2PCallNoAnswer" + > +[VOICE_CHANNEL_NAME] har ikke mulighed for at besvare dit opkald. Du vil nu blive koblet op pÃ¥ en lokal chat. + </notification> + + <notification + + name="VoiceChannelJoinFailed" + > +Det lykkedes ikke at koble op til [VOICE_CHANNEL_NAME]. Prøv venligst igen senere. + </notification> + + <notification + + name="VoiceLoginRetry" + > +Vi laver en stemmekanal til dig. Det kan tage op til et minut. + </notification> + + <notification + + name="Cannot enter parcel: not a group member" + > +Du kan ikke komme ind pÃ¥ omrÃ¥det. Du er ikke medlem af den nødvendige gruppe. + </notification> + + <notification + + name="Cannot enter parcel: banned" + > +Du kan ikke komme ind pÃ¥ omrÃ¥det. Du er blevet udelukket. + </notification> + + <notification + + name="Cannot enter parcel: not on access list" + > +Du kan ikke komme ind pÃ¥ omrÃ¥det. Du er ikke pÃ¥ adgangslisten. + </notification> + + <notification + + name="VoiceNotAllowed" + > +Du har ikke tilladelse til at tilslutte dig stemme-chat pÃ¥ [VOICE_CHANNEL_NAME]. + </notification> + + <notification + + name="VoiceCallGenericError" + > +En fejl er opstÃ¥et under forsøget pÃ¥ at koble sig pÃ¥ stemme chatten [VOICE_CHANNEL_NAME]. PrÃ¥v venligst senere. + </notification> + + <notification + + name="ServerVersionChanged" + > +Det omrÃ¥de, du er kommet ind pÃ¥, kører en anden simulatorversion. Klik pÃ¥ denne besked for detaljer. + </notification> + + <notification + + name="UnableToOpenCommandURL" + > +Www-adressen, du har klikket pÃ¥, kan ikke Ã¥bnes fra denne internetbrowser. + </notification> +</notifications> + diff --git a/indra/newview/skins/default/xui/da/panel_audio_device.xml b/indra/newview/skins/default/xui/da/panel_audio_device.xml index 8b18a78a01f01d9309e3beea98687b2dd87feac9..6e6bfe39ffd7274e200a61710b99f6e170e3ce0d 100644 --- a/indra/newview/skins/default/xui/da/panel_audio_device.xml +++ b/indra/newview/skins/default/xui/da/panel_audio_device.xml @@ -1,25 +1,25 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<panel name="device_settings"> - <text type="string" length="1" name="Audio Devices"> - Lydenheder - </text> - <text type="string" length="1" name="Input device (microphone):"> - Input enhed (mikrofon): - </text> - <text type="string" length="1" name="Output device (speakers):"> - Output enhed (højtalere): - </text> - <text type="string" length="1" name="Input level:"> - Input niveau - </text> - <text_editor type="string" length="1" name="voice_intro_text1"> - Med denne skyder kan du regulere hvor højt du lyder i forhold til andre beboere. for at test input niveau kan du blot tale i mikrofon. - </text_editor> - <volume_slider name="mic_volume_slider" tool_tip="Ændre lydstyrke med denne skyder" /> - <text name="wait_text"> - Vent venligst - </text> - <string name="default_text"> - Standard - </string> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel name="device_settings"> + <text type="string" length="1" name="Audio Devices"> + Lydenheder + </text> + <text type="string" length="1" name="Input device (microphone):"> + Input enhed (mikrofon): + </text> + <text type="string" length="1" name="Output device (speakers):"> + Output enhed (højtalere): + </text> + <text type="string" length="1" name="Input level:"> + Input niveau + </text> + <text_editor type="string" length="1" name="voice_intro_text1"> + Med denne skyder kan du regulere hvor højt du lyder i forhold til andre beboere. for at test input niveau kan du blot tale i mikrofon. + </text_editor> + <volume_slider name="mic_volume_slider" tool_tip="Ændre lydstyrke med denne skyder" /> + <text name="wait_text"> + Vent venligst + </text> + <string name="default_text"> + Standard + </string> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_friends.xml b/indra/newview/skins/default/xui/da/panel_friends.xml index 48fa38731ec768ae72e340a3eb90a61fed7c4c07..2644b809686406f1dd5fc1668023f1642c281c5e 100644 --- a/indra/newview/skins/default/xui/da/panel_friends.xml +++ b/indra/newview/skins/default/xui/da/panel_friends.xml @@ -1,26 +1,26 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<panel name="friends"> - <string name="Multiple"> - Flere venner... - </string> - <scroll_list name="friend_list" - tool_tip="Hold Shift eller Ctrl nede imens du klikker for at vælge flere venner"> - <column name="icon_online_status" tool_tip="Online status" /> - <column label="Name" name="friend_name" tool_tip="Navn" /> - <column name="icon_visible_online" tool_tip="Venner kan se at du er online" /> - <column name="icon_visible_map" tool_tip="Venner kan finde dig pÃ¥ kortet" /> - <column name="icon_edit_mine" - tool_tip="Venner kan rette i, slette eller tage dine objekter" /> - <column name="icon_edit_theirs" tool_tip="Du kan rette i denne vens objekter" /> - </scroll_list> - <button label="IM" name="im_btn" tool_tip="Skriv en personlig besked (IM)" /> - <button label="Profil" name="profile_btn" - tool_tip="Vis billede, grupper og anden information" /> - <button label="Teleport..." name="offer_teleport_btn" - tool_tip="Tilbyd denne ven at blive teleporteret til din nuværende position" /> - <button label="Betal..." name="pay_btn" - tool_tip="Giv Linden dollars (L$) til denne ven" /> - <button label="Fjern..." name="remove_btn" - tool_tip="Fjern denne beboer fra din venneliste" /> - <button label="Tilføj..." name="add_btn" tool_tip="Tilbyd venskab til denne beboer" /> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel name="friends"> + <string name="Multiple"> + Flere venner... + </string> + <scroll_list name="friend_list" + tool_tip="Hold Shift eller Ctrl nede imens du klikker for at vælge flere venner"> + <column name="icon_online_status" tool_tip="Online status" /> + <column label="Name" name="friend_name" tool_tip="Navn" /> + <column name="icon_visible_online" tool_tip="Venner kan se at du er online" /> + <column name="icon_visible_map" tool_tip="Venner kan finde dig pÃ¥ kortet" /> + <column name="icon_edit_mine" + tool_tip="Venner kan rette i, slette eller tage dine objekter" /> + <column name="icon_edit_theirs" tool_tip="Du kan rette i denne vens objekter" /> + </scroll_list> + <button label="IM" name="im_btn" tool_tip="Skriv en personlig besked (IM)" /> + <button label="Profil" name="profile_btn" + tool_tip="Vis billede, grupper og anden information" /> + <button label="Teleport..." name="offer_teleport_btn" + tool_tip="Tilbyd denne ven at blive teleporteret til din nuværende position" /> + <button label="Betal..." name="pay_btn" + tool_tip="Giv Linden dollars (L$) til denne ven" /> + <button label="Fjern..." name="remove_btn" + tool_tip="Fjern denne beboer fra din venneliste" /> + <button label="Tilføj..." name="add_btn" tool_tip="Tilbyd venskab til denne beboer" /> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_group_general.xml b/indra/newview/skins/default/xui/da/panel_group_general.xml index c6cf92095a637a189b73bfefdabb60e9d8994de0..393ac49725d76ce663b971cbf4835cce4832063a 100644 --- a/indra/newview/skins/default/xui/da/panel_group_general.xml +++ b/indra/newview/skins/default/xui/da/panel_group_general.xml @@ -1,79 +1,79 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<panel label="Generelt" name="general_tab"> - <string name="help_text"> - Generel-fanen indeholder generel information om -denne gruppe, en liste med ejere og synlige medlemmer, -generel-gruppeindstillinger og medlemsmuligheder. - -Bevæg din mus over mulighederne for mere hjælp. - </string> - <string name="group_info_unchanged"> - Generel gruppeinformation er ændret. - </string> - <button label="?" label_selected="?" name="help_button" /> - <line_editor label="Indtast nyt gruppenavn her" name="group_name_editor" /> - <text name="group_name"> - Skriv det nye gruppenavn her - </text> - <text name="prepend_founded_by"> - Grundlagt af - </text> - <text name="founder_name"> - (venter) - </text> - <text name="group_charter_label"> - Gruppens formÃ¥l - </text> - <texture_picker label="Gruppe distinktioner" name="insignia" - tool_tip="Klik for at vælge et billede" /> - <text_editor name="charter"> - Gruppens formÃ¥l - </text_editor> - <button label="Tilmeld (L$0)" label_selected="Tilmeld (L$0)" name="join_button" /> - <button label="Detaljeret visning" label_selected="Detaljeret visning" - name="info_button" /> - <text name="text_owners_and_visible_members"> - Ejere & synlige medlemmer - </text> - <text name="text_owners_are_shown_in_bold"> - (Ejere er vist med fed skrift) - </text> - <name_list name="visible_members"> - <column label="Medlemsnavn" name="name" /> - <column label="Titel" name="title" /> - <column label="Senest pÃ¥ d." name="online" /> - </name_list> - <text name="text_group_preferences"> - Gruppeindstillinger - </text> - <panel name="preferences_container"> - <check_box label="Vis i søgning" name="show_in_group_list" - tool_tip="Lad folk se denne gruppe i søgeresultater." /> - <check_box label="Ã…ben tilmelding" name="open_enrollement" - tool_tip="Angiver om denne gruppe tillader nye medlemmer at tilmelde sig, uden de er inviteret." /> - <check_box label="Tilmeldingsgebyr: L$" name="check_enrollment_fee" - tool_tip="Angiver om der kræves et gebyr, for at tilmelde sig gruppen." /> - <spinner name="spin_enrollment_fee" - tool_tip="Nye medlemmer skal betale dette gebyr for at tilmelde sig gruppen, nÃ¥r Tilmeldingsgebyr er valgt." /> - - <panel name="title_container"> - <text name="active_title_label"> - Min aktive titel - </text> - <combo_box length="150" name="active_title" - tool_tip="Angiver den titel der vises i din avatars navnefelt, nÃ¥r denne gruppe er aktiv." /> - </panel> - <check_box label="Modtag gruppeinformationer" name="receive_notices" - tool_tip="Angiver om du vil modtage informationer fra denne gruppe. Fjern markeringen i boksen hvis gruppen spammer dig." /> - <check_box label="Vis gruppen i min profil" name="list_groups_in_profile" - tool_tip="Angiver om du vil vise denne gruppe i dine profilinformationer" /> - </panel> - <string name="incomplete_member_data_str"> - Henter medlemsinformationer - </string> - <string name="confirm_group_create_str"> - Creating this group will cost L$100. -Er du virkelig, virkelig, VIRKELIG sikker pÃ¥, at du vil bruge L$100 pÃ¥ at lave denne gruppe? -Du skal være opmærksom pÃ¥, at hvis ingen andre indmelder sig i denne gruppe indenfor 48 timer, sÃ¥ vil gruppen blive opløst, og gruppens navn vil ikke være tilgængelig i fremtiden. - </string> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel label="Generelt" name="general_tab"> + <string name="help_text"> + Generel-fanen indeholder generel information om +denne gruppe, en liste med ejere og synlige medlemmer, +generel-gruppeindstillinger og medlemsmuligheder. + +Bevæg din mus over mulighederne for mere hjælp. + </string> + <string name="group_info_unchanged"> + Generel gruppeinformation er ændret. + </string> + <button label="?" label_selected="?" name="help_button" /> + <line_editor label="Indtast nyt gruppenavn her" name="group_name_editor" /> + <text name="group_name"> + Skriv det nye gruppenavn her + </text> + <text name="prepend_founded_by"> + Grundlagt af + </text> + <text name="founder_name"> + (venter) + </text> + <text name="group_charter_label"> + Gruppens formÃ¥l + </text> + <texture_picker label="Gruppe distinktioner" name="insignia" + tool_tip="Klik for at vælge et billede" /> + <text_editor name="charter"> + Gruppens formÃ¥l + </text_editor> + <button label="Tilmeld (L$0)" label_selected="Tilmeld (L$0)" name="join_button" /> + <button label="Detaljeret visning" label_selected="Detaljeret visning" + name="info_button" /> + <text name="text_owners_and_visible_members"> + Ejere & synlige medlemmer + </text> + <text name="text_owners_are_shown_in_bold"> + (Ejere er vist med fed skrift) + </text> + <name_list name="visible_members"> + <column label="Medlemsnavn" name="name" /> + <column label="Titel" name="title" /> + <column label="Senest pÃ¥ d." name="online" /> + </name_list> + <text name="text_group_preferences"> + Gruppeindstillinger + </text> + <panel name="preferences_container"> + <check_box label="Vis i søgning" name="show_in_group_list" + tool_tip="Lad folk se denne gruppe i søgeresultater." /> + <check_box label="Ã…ben tilmelding" name="open_enrollement" + tool_tip="Angiver om denne gruppe tillader nye medlemmer at tilmelde sig, uden de er inviteret." /> + <check_box label="Tilmeldingsgebyr: L$" name="check_enrollment_fee" + tool_tip="Angiver om der kræves et gebyr, for at tilmelde sig gruppen." /> + <spinner name="spin_enrollment_fee" + tool_tip="Nye medlemmer skal betale dette gebyr for at tilmelde sig gruppen, nÃ¥r Tilmeldingsgebyr er valgt." /> + + <panel name="title_container"> + <text name="active_title_label"> + Min aktive titel + </text> + <combo_box length="150" name="active_title" + tool_tip="Angiver den titel der vises i din avatars navnefelt, nÃ¥r denne gruppe er aktiv." /> + </panel> + <check_box label="Modtag gruppeinformationer" name="receive_notices" + tool_tip="Angiver om du vil modtage informationer fra denne gruppe. Fjern markeringen i boksen hvis gruppen spammer dig." /> + <check_box label="Vis gruppen i min profil" name="list_groups_in_profile" + tool_tip="Angiver om du vil vise denne gruppe i dine profilinformationer" /> + </panel> + <string name="incomplete_member_data_str"> + Henter medlemsinformationer + </string> + <string name="confirm_group_create_str"> + Creating this group will cost L$100. +Er du virkelig, virkelig, VIRKELIG sikker pÃ¥, at du vil bruge L$100 pÃ¥ at lave denne gruppe? +Du skal være opmærksom pÃ¥, at hvis ingen andre indmelder sig i denne gruppe indenfor 48 timer, sÃ¥ vil gruppen blive opløst, og gruppens navn vil ikke være tilgængelig i fremtiden. + </string> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_group_invite.xml b/indra/newview/skins/default/xui/da/panel_group_invite.xml index 8050784dfe4945251158fcf59525bc0852486f58..6efc93daac5b8d020c9779091f2583ceda2f7dd0 100644 --- a/indra/newview/skins/default/xui/da/panel_group_invite.xml +++ b/indra/newview/skins/default/xui/da/panel_group_invite.xml @@ -1,30 +1,30 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<panel label="Invitér et medlem" name="invite_panel"> - <text name="help_text"> - Du kan invitere flere beboere til at -blive medlem af din gruppe. Klik 'Ã…ben -personvælger' for at begynde. - </text> - <button label="Ã…ben personvælger" name="add_button" /> - <name_list name="invitee_list" - tool_tip="Hold Ctrl-tasten nede og klik pÃ¥ beboere for at vælge flere." /> - <button label="Fjern valgte fra listen" name="remove_button" - tool_tip="Fjerner beboere, der er valgt pÃ¥ ovenstÃ¥ende invitationsliste." /> - <text name="role_text"> - Vælg hvilken rolle, du vil tildele dem: - </text> - <combo_box name="role_name" - tool_tip="Vælg fra listen med roller, du har tilladelse til at tildele medlemmerne." /> - <button label="Send invitationer" name="ok_button" /> - <button label="Annullér" name="cancel_button" /> - <string name="confirm_invite_owner_str"> - Er du sikker pÃ¥, at du vil invitere ny(e) ejer(e)? Denne handling er permanent! - </string> - <!--button bottom="25" font="SansSerifSmall" halign="center" height="20" - label="Send invitationer" left="65" name="ok_button" width="140" /> - <button bottom_delta="-22" font="SansSerifSmall" halign="center" height="20" - label="Annullér" left_delta="0" name="cancel_button" width="140" /--> - <string name="loading"> - (indlæser...) - </string> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel label="Invitér et medlem" name="invite_panel"> + <text name="help_text"> + Du kan invitere flere beboere til at +blive medlem af din gruppe. Klik 'Ã…ben +personvælger' for at begynde. + </text> + <button label="Ã…ben personvælger" name="add_button" /> + <name_list name="invitee_list" + tool_tip="Hold Ctrl-tasten nede og klik pÃ¥ beboere for at vælge flere." /> + <button label="Fjern valgte fra listen" name="remove_button" + tool_tip="Fjerner beboere, der er valgt pÃ¥ ovenstÃ¥ende invitationsliste." /> + <text name="role_text"> + Vælg hvilken rolle, du vil tildele dem: + </text> + <combo_box name="role_name" + tool_tip="Vælg fra listen med roller, du har tilladelse til at tildele medlemmerne." /> + <button label="Send invitationer" name="ok_button" /> + <button label="Annullér" name="cancel_button" /> + <string name="confirm_invite_owner_str"> + Er du sikker pÃ¥, at du vil invitere ny(e) ejer(e)? Denne handling er permanent! + </string> + <!--button bottom="25" font="SansSerifSmall" halign="center" height="20" + label="Send invitationer" left="65" name="ok_button" width="140" /> + <button bottom_delta="-22" font="SansSerifSmall" halign="center" height="20" + label="Annullér" left_delta="0" name="cancel_button" width="140" /--> + <string name="loading"> + (indlæser...) + </string> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_group_land_money.xml b/indra/newview/skins/default/xui/da/panel_group_land_money.xml index f048090f52a72275c2d878a2976715bcda803a8b..2ab89356092fb8c0689cc1cc21300044dfd4fa76 100644 --- a/indra/newview/skins/default/xui/da/panel_group_land_money.xml +++ b/indra/newview/skins/default/xui/da/panel_group_land_money.xml @@ -1,80 +1,80 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<panel label="Land & L$" name="land_money_tab"> - <string name="help_text"> - Grunde ejet af gruppen er vist sammen med bidragsdetaljer. En advarsel vises indtil Total land i brug er mindre end eller lig med det totale -bidrag. Planlægning, detaljer og salgsfaneblade viser information om gruppens økonomi. - </string> - <button label="?" name="help_button" /> - <string name="cant_view_group_land_text"> - Du har ikke tilladelse til at se gruppeejet land. - </string> - <string name="cant_view_group_accounting_text"> - Du har ikke tilladelse til at se gruppens økonomiinformationer. - </string> - <string name="loading_txt"> - Indlæser... - </string> - <text name="group_land_heading"> - Gruppeejet land - </text> - <scroll_list name="group_parcel_list"> - <column label="Grundens navn" name="name" /> - <column label="Region" name="location" /> - <column label="OmrÃ¥de" name="area" /> - <column label="" name="hidden" /> - </scroll_list> - <button label="Vis pÃ¥ kort" label_selected="Vis pÃ¥ kort" name="map_button" /> - <text name="total_contributed_land_label"> - Total bidrag: - </text> - <text name="total_contributed_land_value"> - [AREA] kvadratmeter - </text> - <text name="total_land_in_use_label"> - Total land i brug: - </text> - <text name="total_land_in_use_value"> - [AREA] kvadratmeter - </text> - <text name="land_available_label"> - Tilgængeligt land: - </text> - <text name="land_available_value"> - [AREA] kvadratmeter - </text> - <text name="your_contribution_label"> - Dit bidrag: - </text> - <string name="land_contrib_error"> - Ikke muligt at lave dit bidrag til landet. - </string> - <text name="your_contribution_max_value"> - kvadratmeter ([AMOUNT] maks.) - </text> - <text name="group_over_limit_text"> - Gruppemedlemmer mÃ¥ bidrag med mere, for at understøtte med det land der bliver brugt. - </text> - <text name="group_money_heading"> - Gruppe L$ - </text> - <tab_container name="group_money_tab_container"> - <panel label="Detaljer" name="group_money_details_tab"> - <text_editor name="group_money_details_text"> - Beregner... - </text_editor> - <button label="< Før" label_selected="< Før" name="earlier_details_button" - tool_tip="GÃ¥ tilbage i tid" /> - <button label="Efter >" label_selected="Efter >" name="later_details_button" - tool_tip="GÃ¥ frem i tid" /> - </panel> - <panel label="Salg" name="group_money_sales_tab"> - <text_editor name="group_money_sales_text"> - Beregner... - </text_editor> - <button label="< Før" label_selected="< Før" name="earlier_sales_button" - tool_tip="GÃ¥ tilbage i tid" /> - <button label="Efter >" label_selected="Efter >" name="later_sales_button" - tool_tip="GÃ¥ frem i tid" /> - </panel> - </tab_container> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel label="Land & L$" name="land_money_tab"> + <string name="help_text"> + Grunde ejet af gruppen er vist sammen med bidragsdetaljer. En advarsel vises indtil Total land i brug er mindre end eller lig med det totale +bidrag. Planlægning, detaljer og salgsfaneblade viser information om gruppens økonomi. + </string> + <button label="?" name="help_button" /> + <string name="cant_view_group_land_text"> + Du har ikke tilladelse til at se gruppeejet land. + </string> + <string name="cant_view_group_accounting_text"> + Du har ikke tilladelse til at se gruppens økonomiinformationer. + </string> + <string name="loading_txt"> + Indlæser... + </string> + <text name="group_land_heading"> + Gruppeejet land + </text> + <scroll_list name="group_parcel_list"> + <column label="Grundens navn" name="name" /> + <column label="Region" name="location" /> + <column label="OmrÃ¥de" name="area" /> + <column label="" name="hidden" /> + </scroll_list> + <button label="Vis pÃ¥ kort" label_selected="Vis pÃ¥ kort" name="map_button" /> + <text name="total_contributed_land_label"> + Total bidrag: + </text> + <text name="total_contributed_land_value"> + [AREA] kvadratmeter + </text> + <text name="total_land_in_use_label"> + Total land i brug: + </text> + <text name="total_land_in_use_value"> + [AREA] kvadratmeter + </text> + <text name="land_available_label"> + Tilgængeligt land: + </text> + <text name="land_available_value"> + [AREA] kvadratmeter + </text> + <text name="your_contribution_label"> + Dit bidrag: + </text> + <string name="land_contrib_error"> + Ikke muligt at lave dit bidrag til landet. + </string> + <text name="your_contribution_max_value"> + kvadratmeter ([AMOUNT] maks.) + </text> + <text name="group_over_limit_text"> + Gruppemedlemmer mÃ¥ bidrag med mere, for at understøtte med det land der bliver brugt. + </text> + <text name="group_money_heading"> + Gruppe L$ + </text> + <tab_container name="group_money_tab_container"> + <panel label="Detaljer" name="group_money_details_tab"> + <text_editor name="group_money_details_text"> + Beregner... + </text_editor> + <button label="< Før" label_selected="< Før" name="earlier_details_button" + tool_tip="GÃ¥ tilbage i tid" /> + <button label="Efter >" label_selected="Efter >" name="later_details_button" + tool_tip="GÃ¥ frem i tid" /> + </panel> + <panel label="Salg" name="group_money_sales_tab"> + <text_editor name="group_money_sales_text"> + Beregner... + </text_editor> + <button label="< Før" label_selected="< Før" name="earlier_sales_button" + tool_tip="GÃ¥ tilbage i tid" /> + <button label="Efter >" label_selected="Efter >" name="later_sales_button" + tool_tip="GÃ¥ frem i tid" /> + </panel> + </tab_container> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_group_notices.xml b/indra/newview/skins/default/xui/da/panel_group_notices.xml index dcef15bbb63d945d8c48ba1e8b515478fe75427b..103404e47beec5579ebaf24c9d446735cc2f04b3 100644 --- a/indra/newview/skins/default/xui/da/panel_group_notices.xml +++ b/indra/newview/skins/default/xui/da/panel_group_notices.xml @@ -1,73 +1,73 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<panel label="Beskeder" name="notices_tab"> - <string name="help_text"> - Beskeder er en hurtig mÃ¥de at kommunikere pÃ¥ -pÃ¥ tværs i gruppen ved at sende en meddelelse eller en -eventuel vedlagt genstand. beskeder sendes kun til -gruppemedlemmer i roller som giver evnen til at -modtage dem. Du kan slÃ¥ beskeder fra i -Generel-fanebladet. - </string> - <string name="no_notices_text"> - Der er ingen tidligere beskeder. - </string> - <button label="?" label_selected="?" name="help_button" /> - <text name="lbl"> - Arkiv med gruppebeskeder - </text> - <text name="lbl2"> - Beskeder er gemt i 14 dage. Klik pÃ¥ den besked herunder, du ønsker at se. -Klik pÃ¥ 'Genopfrisk'-knappen for at se, om nye beskeder er modtaget. -Listen er begrænset til 200 beskeder pr. gruppe hver dag. - </text> - <scroll_list name="notice_list"> - <column label="" name="icon" /> - <column label="Emne" name="subject" /> - <column label="Fra" name="from" /> - <column label="Dato" name="date" /> - </scroll_list> - <text name="notice_list_none_found"> - Ingen fundet. - </text> - <button label="Lav ny besked" label_selected="Lav ny besked" name="create_new_notice" /> - <button label="Genopfrisk" label_selected="Genopfrisk liste" name="refresh_notices" /> - <panel label="Lav ny besked" name="panel_create_new_notice"> - <text name="lbl"> - Lav en besked - </text> - <text name="lbl2"> - Du skal skrive et emne for at sende beskeden. Du kan tilføje et -bilag til beskeden ved at trække den fra beholdningen til -dette felt. Vedhæftede objekter skal være sat til at kunne -kopieres og overføres, og du kan ikke sende en mappe. - </text> - <text name="lbl3"> - Emne: - </text> - <text name="lbl4"> - Besked: - </text> - <text name="lbl5"> - Vedhæft: - </text> - <button label="Fjern bilag" label_selected="Fjern bilag" name="remove_attachment" /> - <button label="Afsend" label_selected="Afsend" name="send_notice" /> - <panel name="drop_target" - tool_tip="Træk en genstand fra beholdningen over pÃ¥ denne boks for at sende den sammen med beskeden. Du skal have tilladelse til at kopiere og overføre genstanden, for at kunne sende den med beskeden." /> - </panel> - <panel label="Se tidligere beskeder" name="panel_view_past_notice"> - <text name="lbl"> - Arkiverede beskeder - </text> - <text name="lbl2"> - For at sende en ny besked, klik pÃ¥ 'Lav ny besked'-knappen foroven. - </text> - <text name="lbl3"> - Emne: - </text> - <text name="lbl4"> - Besked: - </text> - <button label="Ã¥ben bilag" label_selected="Ã¥ben bilag" name="open_attachment" /> - </panel> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel label="Beskeder" name="notices_tab"> + <string name="help_text"> + Beskeder er en hurtig mÃ¥de at kommunikere pÃ¥ +pÃ¥ tværs i gruppen ved at sende en meddelelse eller en +eventuel vedlagt genstand. beskeder sendes kun til +gruppemedlemmer i roller som giver evnen til at +modtage dem. Du kan slÃ¥ beskeder fra i +Generel-fanebladet. + </string> + <string name="no_notices_text"> + Der er ingen tidligere beskeder. + </string> + <button label="?" label_selected="?" name="help_button" /> + <text name="lbl"> + Arkiv med gruppebeskeder + </text> + <text name="lbl2"> + Beskeder er gemt i 14 dage. Klik pÃ¥ den besked herunder, du ønsker at se. +Klik pÃ¥ 'Genopfrisk'-knappen for at se, om nye beskeder er modtaget. +Listen er begrænset til 200 beskeder pr. gruppe hver dag. + </text> + <scroll_list name="notice_list"> + <column label="" name="icon" /> + <column label="Emne" name="subject" /> + <column label="Fra" name="from" /> + <column label="Dato" name="date" /> + </scroll_list> + <text name="notice_list_none_found"> + Ingen fundet. + </text> + <button label="Lav ny besked" label_selected="Lav ny besked" name="create_new_notice" /> + <button label="Genopfrisk" label_selected="Genopfrisk liste" name="refresh_notices" /> + <panel label="Lav ny besked" name="panel_create_new_notice"> + <text name="lbl"> + Lav en besked + </text> + <text name="lbl2"> + Du skal skrive et emne for at sende beskeden. Du kan tilføje et +bilag til beskeden ved at trække den fra beholdningen til +dette felt. Vedhæftede objekter skal være sat til at kunne +kopieres og overføres, og du kan ikke sende en mappe. + </text> + <text name="lbl3"> + Emne: + </text> + <text name="lbl4"> + Besked: + </text> + <text name="lbl5"> + Vedhæft: + </text> + <button label="Fjern bilag" label_selected="Fjern bilag" name="remove_attachment" /> + <button label="Afsend" label_selected="Afsend" name="send_notice" /> + <panel name="drop_target" + tool_tip="Træk en genstand fra beholdningen over pÃ¥ denne boks for at sende den sammen med beskeden. Du skal have tilladelse til at kopiere og overføre genstanden, for at kunne sende den med beskeden." /> + </panel> + <panel label="Se tidligere beskeder" name="panel_view_past_notice"> + <text name="lbl"> + Arkiverede beskeder + </text> + <text name="lbl2"> + For at sende en ny besked, klik pÃ¥ 'Lav ny besked'-knappen foroven. + </text> + <text name="lbl3"> + Emne: + </text> + <text name="lbl4"> + Besked: + </text> + <button label="Ã¥ben bilag" label_selected="Ã¥ben bilag" name="open_attachment" /> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_group_roles.xml b/indra/newview/skins/default/xui/da/panel_group_roles.xml index 1159c41c4ae7d2adfeaf9c0fb06579df1d50621f..2af84858a1ca84e7b29c3584b2b800b49b822f8c 100644 --- a/indra/newview/skins/default/xui/da/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/da/panel_group_roles.xml @@ -1,161 +1,161 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<panel label="Medlemmer & roller" name="roles_tab"> - <string name="default_needs_apply_text"> - Der er ændringer her, der ikke er gemt. - </string> - <string name="want_apply_text"> - Vil du gemme disse ændringer? - </string> - <button label="?" name="help_button" /> - <panel name="members_header"> - <text name="static"> - Medlemmer & roller - </text> - <text name="static2"> - Gruppemedlemmer fÃ¥r tildelt roller med rettigheder. Disse indstillinger kan -let tilpasses efter ønske, sÃ¥ gruppen kan vokse og blive mere fleksibel. - </text> - </panel> - <panel name="roles_header"> - <text name="static"> - Roller - </text> - <text name="role_properties_modifiable"> - Vælg en rolle nedenfor. Du kan ændre dens navn, beskrivelse og medlemstitel. - </text> - <text name="role_properties_not_modifiable"> - Vælg rolle forneden for at se dens egenskaber, medlemmer og rettigheder. - </text> - <text name="role_actions_modifiable"> - Du kan ogsÃ¥ tildele rettigheder til rollen. - </text> - <text name="role_actions_not_modifiable"> - Du kan se, men ikke ændre, tildelte rettigheder. - </text> - </panel> - <panel name="actions_header"> - <text name="static"> - Rettigheder - </text> - <text name="static2"> - Du kan se en rettigheds beskrivelse og hvilke roller og medlemmer, -der har denne rettighed. - </text> - </panel> - <tab_container name="roles_tab_container"> - <panel label="Medlemmer" name="members_sub_tab" tool_tip="Medlemmer"> - <button label="Søg" name="search_button" /> - <button label="Vis alle" name="show_all_button" /> - <name_list name="member_list"> - <column label="Medlemsnavn" name="name" /> - <column label="Doneret leje" name="donated" /> - <column label="Sidst pÃ¥ den" name="online" /> - </name_list> - <button label="Inviter ny person ..." name="member_invite" /> - <button label="Udmeld" name="member_eject" /> - <string name="help_text"> - Du kan tilføje eller fjerne roller, der er tildelt medlemmerne. -Vælg flere medlemmer ved at holde Ctrl-tasten nede og -klik pÃ¥ deres navne. - </string> - </panel> - <panel label="Roller" name="roles_sub_tab"> - <button label="Søg" name="search_button" /> - <button label="Vis alle" name="show_all_button" /> - <scroll_list name="role_list"> - <column label="Rollenavn" name="name" /> - <column label="Titel" name="title" /> - <column label="Medlemmer" name="members" /> - </scroll_list> - <button label="Opret ny rolle ..." name="role_create" /> - <button label="Slet rolle" name="role_delete" /> - <string name="help_text"> - Roller har en titel og en tilladelsesliste med rettigheder, -som medlemmerne kan bruge. Medlemmer kan høre til -en eller flere roller. En gruppe kan have op til 10 roller, -inkluderet alle- og ejerroller. - </string> - <string name="cant_delete_role"> - 'Alle-' og 'Ejerroller' er specielle og kan ikke slettes. - </string> - </panel> - <panel label="Rettigheder" name="actions_sub_tab"> - <button label="Søg" name="search_button" /> - <button label="Vis alle" name="show_all_button" /> - <scroll_list name="action_list" tool_tip="Vælg en rettighed for at se flere detaljer"> - <column label="" name="icon" /> - <column label="" name="action" /> - </scroll_list> - <string name="help_text"> - Rettigheder giver medlemmer i roller mulighed for at gøre specifikke -ting i denne gruppe. Der er en bred vifte af rettigheder. - </string> - </panel> - </tab_container> - <panel name="members_footer"> - <text name="static"> - Tildelte roller - </text> - <text name="static2"> - Tilladte rettigheder - </text> - <scroll_list name="member_assigned_roles"> - <column label="" name="checkbox" /> - <column label="" name="role" /> - </scroll_list> - <scroll_list name="member_allowed_actions" - tool_tip="For detaljer om hver tilladte rettighed, se rettighedsfanebladet."> - <column label="" name="icon" /> - <column label="" name="action" /> - </scroll_list> - </panel> - <panel name="roles_footer"> - <text name="static"> - Navn - </text> - <text name="static2"> - Beskrivelse - </text> - <line_editor name="role_name"> - Ansatte - </line_editor> - <text name="static3"> - Titel - </text> - <line_editor name="role_title"> - (venter) - </line_editor> - <text_editor name="role_description"> - (venter) - </text_editor> - <text name="static4"> - Tildelte medlemmer - </text> - <text name="static5" - tool_tip="A list of Abilities the currently selected role can perform."> - Tilladte rettigheder - </text> - <check_box label="Medlemmer er synlige" name="role_visible_in_list" - tool_tip=" Angiver om medlemmer med denne rolle er synlige i fanen 'Generelt' for avatarer uden for gruppen." /> - <scroll_list name="role_allowed_actions" - tool_tip="For detaljer om hver rettighed se under rettigheder fanebladet."> - <column label="" name="icon" /> - <column label="" name="checkbox" /> - <column label="" name="action" /> - </scroll_list> - </panel> - <panel name="actions_footer"> - <text name="static"> - Beskrivelse - </text> - <text_editor name="action_description"> - Denne rettigheder 'Udmeld medlemmer fra denne gruppe'. Kun en ejer kan udmelde en anden ejer. - </text_editor> - <text name="static2"> - Roller med rettighed - </text> - <text name="static3"> - Medlemmer med rettighed - </text> - </panel> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel label="Medlemmer & roller" name="roles_tab"> + <string name="default_needs_apply_text"> + Der er ændringer her, der ikke er gemt. + </string> + <string name="want_apply_text"> + Vil du gemme disse ændringer? + </string> + <button label="?" name="help_button" /> + <panel name="members_header"> + <text name="static"> + Medlemmer & roller + </text> + <text name="static2"> + Gruppemedlemmer fÃ¥r tildelt roller med rettigheder. Disse indstillinger kan +let tilpasses efter ønske, sÃ¥ gruppen kan vokse og blive mere fleksibel. + </text> + </panel> + <panel name="roles_header"> + <text name="static"> + Roller + </text> + <text name="role_properties_modifiable"> + Vælg en rolle nedenfor. Du kan ændre dens navn, beskrivelse og medlemstitel. + </text> + <text name="role_properties_not_modifiable"> + Vælg rolle forneden for at se dens egenskaber, medlemmer og rettigheder. + </text> + <text name="role_actions_modifiable"> + Du kan ogsÃ¥ tildele rettigheder til rollen. + </text> + <text name="role_actions_not_modifiable"> + Du kan se, men ikke ændre, tildelte rettigheder. + </text> + </panel> + <panel name="actions_header"> + <text name="static"> + Rettigheder + </text> + <text name="static2"> + Du kan se en rettigheds beskrivelse og hvilke roller og medlemmer, +der har denne rettighed. + </text> + </panel> + <tab_container name="roles_tab_container"> + <panel label="Medlemmer" name="members_sub_tab" tool_tip="Medlemmer"> + <button label="Søg" name="search_button" /> + <button label="Vis alle" name="show_all_button" /> + <name_list name="member_list"> + <column label="Medlemsnavn" name="name" /> + <column label="Doneret leje" name="donated" /> + <column label="Sidst pÃ¥ den" name="online" /> + </name_list> + <button label="Inviter ny person ..." name="member_invite" /> + <button label="Udmeld" name="member_eject" /> + <string name="help_text"> + Du kan tilføje eller fjerne roller, der er tildelt medlemmerne. +Vælg flere medlemmer ved at holde Ctrl-tasten nede og +klik pÃ¥ deres navne. + </string> + </panel> + <panel label="Roller" name="roles_sub_tab"> + <button label="Søg" name="search_button" /> + <button label="Vis alle" name="show_all_button" /> + <scroll_list name="role_list"> + <column label="Rollenavn" name="name" /> + <column label="Titel" name="title" /> + <column label="Medlemmer" name="members" /> + </scroll_list> + <button label="Opret ny rolle ..." name="role_create" /> + <button label="Slet rolle" name="role_delete" /> + <string name="help_text"> + Roller har en titel og en tilladelsesliste med rettigheder, +som medlemmerne kan bruge. Medlemmer kan høre til +en eller flere roller. En gruppe kan have op til 10 roller, +inkluderet alle- og ejerroller. + </string> + <string name="cant_delete_role"> + 'Alle-' og 'Ejerroller' er specielle og kan ikke slettes. + </string> + </panel> + <panel label="Rettigheder" name="actions_sub_tab"> + <button label="Søg" name="search_button" /> + <button label="Vis alle" name="show_all_button" /> + <scroll_list name="action_list" tool_tip="Vælg en rettighed for at se flere detaljer"> + <column label="" name="icon" /> + <column label="" name="action" /> + </scroll_list> + <string name="help_text"> + Rettigheder giver medlemmer i roller mulighed for at gøre specifikke +ting i denne gruppe. Der er en bred vifte af rettigheder. + </string> + </panel> + </tab_container> + <panel name="members_footer"> + <text name="static"> + Tildelte roller + </text> + <text name="static2"> + Tilladte rettigheder + </text> + <scroll_list name="member_assigned_roles"> + <column label="" name="checkbox" /> + <column label="" name="role" /> + </scroll_list> + <scroll_list name="member_allowed_actions" + tool_tip="For detaljer om hver tilladte rettighed, se rettighedsfanebladet."> + <column label="" name="icon" /> + <column label="" name="action" /> + </scroll_list> + </panel> + <panel name="roles_footer"> + <text name="static"> + Navn + </text> + <text name="static2"> + Beskrivelse + </text> + <line_editor name="role_name"> + Ansatte + </line_editor> + <text name="static3"> + Titel + </text> + <line_editor name="role_title"> + (venter) + </line_editor> + <text_editor name="role_description"> + (venter) + </text_editor> + <text name="static4"> + Tildelte medlemmer + </text> + <text name="static5" + tool_tip="A list of Abilities the currently selected role can perform."> + Tilladte rettigheder + </text> + <check_box label="Medlemmer er synlige" name="role_visible_in_list" + tool_tip=" Angiver om medlemmer med denne rolle er synlige i fanen 'Generelt' for avatarer uden for gruppen." /> + <scroll_list name="role_allowed_actions" + tool_tip="For detaljer om hver rettighed se under rettigheder fanebladet."> + <column label="" name="icon" /> + <column label="" name="checkbox" /> + <column label="" name="action" /> + </scroll_list> + </panel> + <panel name="actions_footer"> + <text name="static"> + Beskrivelse + </text> + <text_editor name="action_description"> + Denne rettigheder 'Udmeld medlemmer fra denne gruppe'. Kun en ejer kan udmelde en anden ejer. + </text_editor> + <text name="static2"> + Roller med rettighed + </text> + <text name="static3"> + Medlemmer med rettighed + </text> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_groups.xml b/indra/newview/skins/default/xui/da/panel_groups.xml index ae95c382d3f8dfbf05417bea0573f9cfc0282d0c..b3a09b00827344426270dc16f4cfd51e8a7275a5 100644 --- a/indra/newview/skins/default/xui/da/panel_groups.xml +++ b/indra/newview/skins/default/xui/da/panel_groups.xml @@ -1,18 +1,18 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<panel name="groups"> - <scroll_list name="group list"> - <column label="" name="name" /> - </scroll_list> - <text type="string" length="1" name="groupdesc"> - Din nuværende aktive gruppe er fremhævet i listen. - </text> - <text type="string" length="1" name="groupcount"> - Du er medlem i [COUNT] grupper (ud af maksimalt [MAX]). - </text> - <button label="IM/Opkald" name="IM" tool_tip="Ã…bner IM session" /> - <button label="Info" name="Info" /> - <button label="Aktivér" name="Activate" /> - <button label="Forlad" name="Leave" /> - <button label="Opret..." name="Create" /> - <button label="Søg..." name="Search..." /> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel name="groups"> + <scroll_list name="group list"> + <column label="" name="name" /> + </scroll_list> + <text type="string" length="1" name="groupdesc"> + Din nuværende aktive gruppe er fremhævet i listen. + </text> + <text type="string" length="1" name="groupcount"> + Du er medlem i [COUNT] grupper (ud af maksimalt [MAX]). + </text> + <button label="IM/Opkald" name="IM" tool_tip="Ã…bner IM session" /> + <button label="Info" name="Info" /> + <button label="Aktivér" name="Activate" /> + <button label="Forlad" name="Leave" /> + <button label="Opret..." name="Create" /> + <button label="Søg..." name="Search..." /> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_preferences_chat.xml b/indra/newview/skins/default/xui/da/panel_preferences_chat.xml index 254cd6ddb9ed2613f90e840c31c4a022baee8931..e57b1515115deb825671353ab377a53475e35cd5 100644 --- a/indra/newview/skins/default/xui/da/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/da/panel_preferences_chat.xml @@ -4,15 +4,9 @@ Chat skriftstørrelse: </text> <radio_group name="chat_font_size"> - <radio_item type="string" length="1" name="radio"> - Lille - </radio_item> - <radio_item type="string" length="1" name="radio2"> - Mellem - </radio_item> - <radio_item type="string" length="1" name="radio3"> - Stor - </radio_item> + <radio_item type="string" length="1" name="radio" label="Lille" /> + <radio_item type="string" length="1" name="radio2" label="Mellem" /> + <radio_item type="string" length="1" name="radio3" label="Stor" /> </radio_group> <text type="string" length="1" name="text_box2"> Chat farve: diff --git a/indra/newview/skins/default/xui/da/panel_preferences_general.xml b/indra/newview/skins/default/xui/da/panel_preferences_general.xml index a800002448a3b7828238a4e7c06ccabedf4a4946..df27d05643182c8f9683ffc9842ef372b78092dc 100644 --- a/indra/newview/skins/default/xui/da/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/da/panel_preferences_general.xml @@ -1,58 +1,68 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Generelt" name="general_panel"> <radio_group name="default_start_location"> - <radio_item name="MyHome" tool_tip="Log ind til min hjemme lokation som standard."> - Mit hjem - </radio_item> - <radio_item name="MyLastLocation" tool_tip="Log ind til min sidste lokation som standard."> - Min sidste lokation - </radio_item> + <radio_item name="MyHome" tool_tip="Log ind til min hjemme lokation som standard." label="Mit hjem" /> + <radio_item name="MyLastLocation" tool_tip="Log ind til min sidste lokation som standard." label="Min sidste lokation" /> </radio_group> - <check_box label="Vis start lokation pÃ¥ login billedet" name="show_location_checkbox" /> + <check_box label="Vis start lokation pÃ¥ login billedet" name="show_location_checkbox"/> <combo_box name="fade_out_combobox"> <combo_box.item name="Never" label="Aldrig"/> <combo_box.item name="Show Temporarily" label="Vis midlertidigt"/> <combo_box.item name="Always" label="Altid"/> </combo_box> - <check_box label="SmÃ¥ avatar navne" name="small_avatar_names_checkbox" /> - <check_box label="Skjul mit navn pÃ¥ min skærm" name="show_my_name_checkbox" /> - <text type="string" length="1" name="group_titles_textbox"> + <check_box label="SmÃ¥ avatar navne" name="small_avatar_names_checkbox"/> + <check_box label="Skjul mit navn pÃ¥ min skærm" name="show_my_name_checkbox"/> + <text length="1" name="group_titles_textbox" type="string"> Gruppe titler: </text> - <check_box label="Skjul alle gruppe titler" name="show_all_title_checkbox" /> - <check_box label="Gem min gruppe titel" name="show_my_title_checkbox" /> - <color_swatch label="" name="effect_color_swatch" tool_tip="Klik for at Ã¥bne farvevælger" /> - <text type="string" length="1" name="UI Size:"> + <check_box label="Skjul alle gruppe titler" name="show_all_title_checkbox"/> + <check_box label="Gem min gruppe titel" name="show_my_title_checkbox"/> + <color_swatch label="" name="effect_color_swatch" tool_tip="Klik for at Ã¥bne farvevælger"/> + <text length="1" name="UI Size:" type="string"> UI Størrelse: </text> - <check_box label="Brug opløsnings uafhængig skalering" name="ui_auto_scale" /> - <spinner label="Tid før inaktiv:" name="afk_timeout_spinner" /> - <check_box label="Rotér mini-kort" name="rotate_mini_map_checkbox" /> - <check_box label="Giv besked nÃ¥r Linden dollars (L$) bliver brugt eller modtaget" - name="notify_money_change_checkbox" /> - <check_box label="Brug standard farve vælger" name="use_system_color_picker_checkbox" - tool_tip="Brug dit systems standard farve vælger i stedet for den der er indbygget i Second Life." /> - <check_box label="Vis Søg i øverste højre hjørne" name="show_search_panel" - tool_tip="Vis indbygget søgepanel." /> - <text type="string" length="1" name="start_location_textbox"> + <check_box label="Brug opløsnings uafhængig skalering" name="ui_auto_scale"/> + <spinner label="Tid før inaktiv:" name="afk_timeout_spinner"/> + <check_box label="Giv besked nÃ¥r Linden dollars (L$) bliver brugt eller modtaget" name="notify_money_change_checkbox"/> + <text name="maturity_desired_label"> + Rating: + </text> + <text name="maturity_desired_prompt"> + Jeg ønsker adgang til inhold med rating: + </text> + <combo_box name="maturity_desired_combobox" left="360" width="135"> + <combo_item name="Desired_Adult"> + PG, Mature og Adult + </combo_item> + <combo_item name="Desired_Mature"> + PG and Mature + </combo_item> + <combo_item name="Desired_PG"> + PG only + </combo_item> + </combo_box> + <text name="maturity_desired_textbox" left="360"> + PG only + </text> + <text length="1" name="start_location_textbox" type="string"> Start lokation: </text> - <text type="string" length="1" name="show_names_textbox"> + <text length="1" name="show_names_textbox" type="string"> Vis navne: </text> - <text type="string" length="1" name="effects_color_textbox"> + <text length="1" name="effects_color_textbox" type="string"> Farve til mine effekter: </text> - <text type="string" length="1" name="seconds_textbox"> + <text length="1" name="seconds_textbox" type="string"> sekunder </text> - <text type="string" length="1" name="crash_report_textbox"> + <text length="1" name="crash_report_textbox" type="string"> Nedbrudsrapporter: </text> - <text type="string" length="1" name="language_textbox"> + <text length="1" name="language_textbox" type="string"> Sprog: </text> - <text type="string" length="1" name="language_textbox2"> + <text length="1" name="language_textbox2" type="string"> (Kræver genstart for at virke optimalt) </text> <string name="region_name_prompt"> @@ -77,6 +87,5 @@ <combo_box.item type="string" length="1" name="(Japanese)" label="日本語 (Japansk) - Beta"/> <combo_box.item type="string" length="1" name="(Korean)" label="한êµì–´ (Koreansk) - Beta"/> </combo_box> - <check_box label="Del sprog med objekter" name="language_is_public" - tool_tip="Dette lader objekter i verden vide hvad dit foretrukne sprog er." /> + <check_box label="Del sprog med objekter" name="language_is_public" tool_tip="Dette lader objekter i verden vide hvad dit foretrukne sprog er."/> </panel> diff --git a/indra/newview/skins/default/xui/da/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/da/panel_preferences_graphics1.xml index 669513d1201b5a63920d1f25dc8f55132f174501..86c506a0fd1cb7c6989deed70d2a8eb4d56102ac 100644 --- a/indra/newview/skins/default/xui/da/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/da/panel_preferences_graphics1.xml @@ -69,18 +69,10 @@ Spejlnings detaljer: </text> <radio_group name="ReflectionDetailRadio"> - <radio_item type="string" length="1" name="0"> - Terræn og træer - </radio_item> - <radio_item type="string" length="1" name="1"> - Alle statiske objekter - </radio_item> - <radio_item type="string" length="1" name="2"> - Alle avatarer og objekter - </radio_item> - <radio_item type="string" length="1" name="3"> - Alt - </radio_item> + <radio_item type="string" length="1" name="0" label="Terræn og træer" /> + <radio_item type="string" length="1" name="1" label="Alle statiske objekter" /> + <radio_item type="string" length="1" name="2" label="Alle avatarer og objekter" /> + <radio_item type="string" length="1" name="3" label="Alt" /> </radio_group> <text type="string" length="1" name="AvatarRenderingText"> Avatar gengivelse @@ -131,23 +123,15 @@ Lys detaljer: </text> <radio_group name="LightingDetailRadio"> - <radio_item type="string" length="1" name="SunMoon"> - Kun sol og mÃ¥ne - </radio_item> - <radio_item type="string" length="1" name="LocalLights"> - Lys i nærheden - </radio_item> + <radio_item type="string" length="1" name="SunMoon" label="Kun sol og mÃ¥ne" /> + <radio_item type="string" length="1" name="LocalLights" label="Lys i nærheden" /> </radio_group> <text type="string" length="1" name="TerrainDetailText"> Terræn detaljer: </text> <radio_group name="TerrainDetailRadio"> - <radio_item type="string" length="1" name="0"> - Lav - </radio_item> - <radio_item type="string" length="1" name="2"> - Høj - </radio_item> + <radio_item type="string" length="1" name="0" label="Lav" /> + <radio_item type="string" length="1" name="2" label="Høj" /> </radio_group> <button label="Anbefalede indstillinger" name="Defaults" /> <button label="Hardware valg" label_selected="Hardware Options" diff --git a/indra/newview/skins/default/xui/da/panel_region_covenant.xml b/indra/newview/skins/default/xui/da/panel_region_covenant.xml index c3dcac52c5df63f16fcd29163be5ce0ca186c00b..63a2f90e365ac0b37870108fff118d78b1a3abdf 100644 --- a/indra/newview/skins/default/xui/da/panel_region_covenant.xml +++ b/indra/newview/skins/default/xui/da/panel_region_covenant.xml @@ -1,50 +1,50 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<panel label="Covenant" name="Covenant"> - <text name="covenant_help_text"> - Ændringer i regel information vil blive vist i alle parceller til denne estate. - </text> - <text name="region_name_lbl"> - Region: - </text> - <text name="region_name_text"> - (ukendt) - </text> - <text name="estate_name_lbl"> - Estate: - </text> - <text name="estate_name_text"> - (ukendt) - </text> - <text name="estate_owner_lbl"> - Estate ejer: - </text> - <text name="estate_owner_text"> - (ukendt) - </text> - <text name="resellable_clause"> - Valgfrit om købt land i denne region mÃ¥ sælges videre - </text> - <text name="changeable_clause"> - Valgfrit om købt land i denne region mÃ¥ deles eller samles. - </text> - <text name="covenent_instructions"> - Træk og slip et notecard her for at ændre regler for dette estate. - </text> - <text_editor name="covenant_editor"> - Henter... - </text_editor> - <button label="Reset" name="reset_covenant" /> - <string name="can_resell"> - Købt land i denne region mÃ¥ sælges videre - </string> - <string name="can_not_resell"> - Købt land i denne region mÃ¥ ikke sælges videre - </string> - <string name="can_change"> - Købt land i denne region mÃ¥ deles eller samles. - </string> - <string name="can_not_change"> - Købt land i denne region mÃ¥ ikke deles eller samles. - </string> - <button label="?" name="covenant_help" /> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel label="Covenant" name="Covenant"> + <text name="covenant_help_text"> + Ændringer i regel information vil blive vist i alle parceller til denne estate. + </text> + <text name="region_name_lbl"> + Region: + </text> + <text name="region_name_text"> + (ukendt) + </text> + <text name="estate_name_lbl"> + Estate: + </text> + <text name="estate_name_text"> + (ukendt) + </text> + <text name="estate_owner_lbl"> + Estate ejer: + </text> + <text name="estate_owner_text"> + (ukendt) + </text> + <text name="resellable_clause"> + Valgfrit om købt land i denne region mÃ¥ sælges videre + </text> + <text name="changeable_clause"> + Valgfrit om købt land i denne region mÃ¥ deles eller samles. + </text> + <text name="covenent_instructions"> + Træk og slip et notecard her for at ændre regler for dette estate. + </text> + <text_editor name="covenant_editor"> + Henter... + </text_editor> + <button label="Reset" name="reset_covenant" /> + <string name="can_resell"> + Købt land i denne region mÃ¥ sælges videre + </string> + <string name="can_not_resell"> + Købt land i denne region mÃ¥ ikke sælges videre + </string> + <string name="can_change"> + Købt land i denne region mÃ¥ deles eller samles. + </string> + <string name="can_not_change"> + Købt land i denne region mÃ¥ ikke deles eller samles. + </string> + <button label="?" name="covenant_help" /> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_region_debug.xml b/indra/newview/skins/default/xui/da/panel_region_debug.xml index f0558abbb2c85250de5afa72fc17ed73cecdbcd4..07e857163ac0ea9793cee06604c4b7bf6d77712d 100644 --- a/indra/newview/skins/default/xui/da/panel_region_debug.xml +++ b/indra/newview/skins/default/xui/da/panel_region_debug.xml @@ -1,51 +1,51 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<panel label="Debug" name="Debug"> - <text name="region_text_lbl"> - Region: - </text> - <text name="region_text"> - ukendt - </text> - <check_box label="Deaktivér scripts" name="disable_scripts_check" - tool_tip="Deaktivér alle scripts i denne region" /> - <button label="?" name="disable_scripts_help" /> - <check_box label="Deaktivér kollisioner" name="disable_collisions_check" - tool_tip="Deaktivér kollisioner mellem objekter i denne region" /> - <button label="?" name="disable_collisions_help" /> - <check_box label="Deaktivér fysik" name="disable_physics_check" - tool_tip="Deaktivér alt fysik i denne region" /> - <button label="?" name="disable_physics_help" /> - <button label="Gem" name="apply_btn" /> - <text name="objret_text_lbl"> - Returnér objekter - </text> - <text name="resident_text_lbl"> - Beboer: - </text> - <line_editor name="target_avatar_name"> - (ingen) - </line_editor> - <button label="Vælg..." name="choose_avatar_btn" /> - <text name="options_text_lbl"> - Valg: - </text> - <check_box label="Returnér kun objekter med script" name="return_scripts" - tool_tip="Returnér kun objekter med scripts." /> - <check_box label="Returnér kun objekter pÃ¥ andre brugeres land" name="return_other_land" - tool_tip="returnér kun objekter pÃ¥ land som tilhører andre" /> - <check_box label="Returnér objekter fra alle regioner i denne estate" - name="return_estate_wide" - tool_tip="Returnér objekter i alle regioner der tilhører denne estate" /> - <button label="Returnér" name="return_btn" /> - <button label="Mest kolliderende..." name="top_colliders_btn" - tool_tip="Liste med de objekter der oplever flest kollissioner" /> - <button label="?" name="top_colliders_help" /> - <button label="Mest krævende scripts..." name="top_scripts_btn" - tool_tip="Liste med de objekter der kræver mest script tid" /> - <button label="?" name="top_scripts_help" /> - <button label="Genstart region" name="restart_btn" - tool_tip="Genstart region om 2 minutter (sender advarsel først)" /> - <button label="?" name="restart_help" /> - <button label="Udskyd genstart" name="cancel_restart_btn" - tool_tip="Udsæt genstart med en time" /> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel label="Debug" name="Debug"> + <text name="region_text_lbl"> + Region: + </text> + <text name="region_text"> + ukendt + </text> + <check_box label="Deaktivér scripts" name="disable_scripts_check" + tool_tip="Deaktivér alle scripts i denne region" /> + <button label="?" name="disable_scripts_help" /> + <check_box label="Deaktivér kollisioner" name="disable_collisions_check" + tool_tip="Deaktivér kollisioner mellem objekter i denne region" /> + <button label="?" name="disable_collisions_help" /> + <check_box label="Deaktivér fysik" name="disable_physics_check" + tool_tip="Deaktivér alt fysik i denne region" /> + <button label="?" name="disable_physics_help" /> + <button label="Gem" name="apply_btn" /> + <text name="objret_text_lbl"> + Returnér objekter + </text> + <text name="resident_text_lbl"> + Beboer: + </text> + <line_editor name="target_avatar_name"> + (ingen) + </line_editor> + <button label="Vælg..." name="choose_avatar_btn" /> + <text name="options_text_lbl"> + Valg: + </text> + <check_box label="Returnér kun objekter med script" name="return_scripts" + tool_tip="Returnér kun objekter med scripts." /> + <check_box label="Returnér kun objekter pÃ¥ andre brugeres land" name="return_other_land" + tool_tip="returnér kun objekter pÃ¥ land som tilhører andre" /> + <check_box label="Returnér objekter fra alle regioner i denne estate" + name="return_estate_wide" + tool_tip="Returnér objekter i alle regioner der tilhører denne estate" /> + <button label="Returnér" name="return_btn" /> + <button label="Mest kolliderende..." name="top_colliders_btn" + tool_tip="Liste med de objekter der oplever flest kollissioner" /> + <button label="?" name="top_colliders_help" /> + <button label="Mest krævende scripts..." name="top_scripts_btn" + tool_tip="Liste med de objekter der kræver mest script tid" /> + <button label="?" name="top_scripts_help" /> + <button label="Genstart region" name="restart_btn" + tool_tip="Genstart region om 2 minutter (sender advarsel først)" /> + <button label="?" name="restart_help" /> + <button label="Udskyd genstart" name="cancel_restart_btn" + tool_tip="Udsæt genstart med en time" /> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_region_estate.xml b/indra/newview/skins/default/xui/da/panel_region_estate.xml index b2600e9d29b97b7817065ebcaceba74cfb46e355..108763d544d385e3009e8963334190a5265a481b 100644 --- a/indra/newview/skins/default/xui/da/panel_region_estate.xml +++ b/indra/newview/skins/default/xui/da/panel_region_estate.xml @@ -1,71 +1,71 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<panel label="Estate" name="Estate"> - <text name="estate_help_text"> - Ændringer i dette afsnit vil pÃ¥virke alle -regioner i dette estate. - </text> - <text name="estate_text"> - Estate: - </text> - <text name="estate_name"> - (ukendt) - </text> - <text name="owner_text"> - Ejer: - </text> - <text name="estate_owner"> - (ukendt) - </text> - <check_box label="Brug global tid" name="use_global_time_check" /> - <button label="?" name="use_global_time_help" /> - <check_box label="Sol i fast position" name="fixed_sun_check" /> - <button label="?" name="fixed_sun_help" /> - <slider label="Fase" name="sun_hour_slider" /> - <check_box label="Tillad offentlig adgang" name="externally_visible_check" /> - <button label="?" name="externally_visible_help" /> - <text type="string" length="1" name="Only Allow"> - Begræns adgang til: - </text> - <check_box label="Beboere med betalingsoplysninger" name="limit_payment" - tool_tip="Blokér for brugere uden identifikation" /> - <check_box label="Beboere der er godkendt som voksne" name="limit_age_verified" - tool_tip="Blokér for brugere der ikke har verificéret deres alder. Se support.secondlife.com for mere information." /> - <check_box label="Tillad stemme chat" name="voice_chat_check" /> - <button label="?" name="voice_chat_help" /> - <check_box label="Tillad direkte teleport" name="allow_direct_teleport" /> - <button label="?" name="allow_direct_teleport_help" /> - <text name="abuse_email_text"> - Send beskeder misbrug til email adresse: - </text> - <string name="email_unsupported"> - Ikke supporteret - </string> - <button label="?" name="abuse_email_address_help" /> - <button label="Gem" name="apply_btn" /> - <button label="Smid bruger ud fra estate..." name="kick_user_from_estate_btn" /> - <button label="Send besked til estate..." name="message_estate_btn" /> - <text name="estate_manager_label"> - Administratorer: - </text> - <button label="?" name="estate_manager_help" /> - <button label="Fjern..." name="remove_estate_manager_btn" /> - <button label="Tilføj..." name="add_estate_manager_btn" /> - <text name="allow_resident_label"> - Godkendte beboere: - </text> - <button label="?" name="allow_resident_help" /> - <button label="Fjern..." name="remove_allowed_avatar_btn" /> - <button label="Tilføj..." name="add_allowed_avatar_btn" /> - <text name="allow_group_label"> - Tilladte grupper: - </text> - <button label="?" name="allow_group_help" /> - <button label="Fjern..." name="remove_allowed_group_btn" /> - <button label="Tilføj..." name="add_allowed_group_btn" /> - <text name="ban_resident_label"> - Blokérede beboere: - </text> - <button label="?" name="ban_resident_help" /> - <button label="Fjern..." name="remove_banned_avatar_btn" /> - <button label="Tilføj..." name="add_banned_avatar_btn" /> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel label="Estate" name="Estate"> + <text name="estate_help_text"> + Ændringer i dette afsnit vil pÃ¥virke alle +regioner i dette estate. + </text> + <text name="estate_text"> + Estate: + </text> + <text name="estate_name"> + (ukendt) + </text> + <text name="owner_text"> + Ejer: + </text> + <text name="estate_owner"> + (ukendt) + </text> + <check_box label="Brug global tid" name="use_global_time_check" /> + <button label="?" name="use_global_time_help" /> + <check_box label="Sol i fast position" name="fixed_sun_check" /> + <button label="?" name="fixed_sun_help" /> + <slider label="Fase" name="sun_hour_slider" /> + <check_box label="Tillad offentlig adgang" name="externally_visible_check" /> + <button label="?" name="externally_visible_help" /> + <text type="string" length="1" name="Only Allow"> + Begræns adgang til: + </text> + <check_box label="Beboere med betalingsoplysninger" name="limit_payment" + tool_tip="Blokér for brugere uden identifikation" /> + <check_box label="Beboere der er godkendt som voksne" name="limit_age_verified" + tool_tip="Blokér for brugere der ikke har verificéret deres alder. Se support.secondlife.com for mere information." /> + <check_box label="Tillad stemme chat" name="voice_chat_check" /> + <button label="?" name="voice_chat_help" /> + <check_box label="Tillad direkte teleport" name="allow_direct_teleport" /> + <button label="?" name="allow_direct_teleport_help" /> + <text name="abuse_email_text"> + Send beskeder misbrug til email adresse: + </text> + <string name="email_unsupported"> + Ikke supporteret + </string> + <button label="?" name="abuse_email_address_help" /> + <button label="Gem" name="apply_btn" /> + <button label="Smid bruger ud fra estate..." name="kick_user_from_estate_btn" /> + <button label="Send besked til estate..." name="message_estate_btn" /> + <text name="estate_manager_label"> + Administratorer: + </text> + <button label="?" name="estate_manager_help" /> + <button label="Fjern..." name="remove_estate_manager_btn" /> + <button label="Tilføj..." name="add_estate_manager_btn" /> + <text name="allow_resident_label"> + Godkendte beboere: + </text> + <button label="?" name="allow_resident_help" /> + <button label="Fjern..." name="remove_allowed_avatar_btn" /> + <button label="Tilføj..." name="add_allowed_avatar_btn" /> + <text name="allow_group_label"> + Tilladte grupper: + </text> + <button label="?" name="allow_group_help" /> + <button label="Fjern..." name="remove_allowed_group_btn" /> + <button label="Tilføj..." name="add_allowed_group_btn" /> + <text name="ban_resident_label"> + Blokérede beboere: + </text> + <button label="?" name="ban_resident_help" /> + <button label="Fjern..." name="remove_banned_avatar_btn" /> + <button label="Tilføj..." name="add_banned_avatar_btn" /> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_region_general.xml b/indra/newview/skins/default/xui/da/panel_region_general.xml index 3965a5b0dc9518d8a9292587512e1a9b66df556c..5f0e71f63da7828775c95e39f6fb76a645aefc21 100644 --- a/indra/newview/skins/default/xui/da/panel_region_general.xml +++ b/indra/newview/skins/default/xui/da/panel_region_general.xml @@ -1,46 +1,46 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<panel label="Region" name="General"> - <text name="region_text_lbl"> - Region: - </text> - <text name="region_text"> - ukendt - </text> - <text name="version_channel_text_lbl"> - Version: - </text> - <text name="version_channel_text"> - ukendt - </text> - <check_box label="Blokér for redigering af terræn" name="block_terraform_check" /> - <button label="?" name="terraform_help" /> - <check_box label="Blokér for flyvning" name="block_fly_check" /> - <button label="?" name="fly_help" /> - <check_box label="Tillad skader" name="allow_damage_check" /> - <button label="?" name="damage_help" /> - <check_box label="Begræns skubning" name="restrict_pushobject" /> - <button label="?" name="restrict_pushobject_help" /> - <check_box label="Tillad at sælge land" name="allow_land_resell_check" /> - <button label="?" name="land_resell_help" /> - <check_box label="Tillad at samle/dele land" name="allow_parcel_changes_check" /> - <button label="?" name="parcel_changes_help" /> - <check_box label="Blokér visning af land i Søgning" name="block_parcel_search_check" - tool_tip="Lad beboere se denne region og dens parceller i søgeresultater" /> - <button label="?" name="parcel_search_help" /> - <spinner label="Max besøgende" name="agent_limit_spin" /> - <button label="?" name="agent_limit_help" /> - <spinner label="Objekt bonus" name="object_bonus_spin" /> - <button label="?" name="object_bonus_help" /> - <text label="Indhold" name="access_text"> - Indhold: - </text> - - - - <button label="?" name="access_help" /> - <button label="Gem" name="apply_btn" /> - <button label="Send en beboer hjem ..." name="kick_btn" /> - <button label="Send alle beboere hjem..." name="kick_all_btn" /> - <button label="Send besked til region..." name="im_btn" /> - <button label="Vedligehold telehub..." name="manage_telehub_btn" /> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel label="Region" name="General"> + <text name="region_text_lbl"> + Region: + </text> + <text name="region_text"> + ukendt + </text> + <text name="version_channel_text_lbl"> + Version: + </text> + <text name="version_channel_text"> + ukendt + </text> + <check_box label="Blokér for redigering af terræn" name="block_terraform_check" /> + <button label="?" name="terraform_help" /> + <check_box label="Blokér for flyvning" name="block_fly_check" /> + <button label="?" name="fly_help" /> + <check_box label="Tillad skader" name="allow_damage_check" /> + <button label="?" name="damage_help" /> + <check_box label="Begræns skubning" name="restrict_pushobject" /> + <button label="?" name="restrict_pushobject_help" /> + <check_box label="Tillad at sælge land" name="allow_land_resell_check" /> + <button label="?" name="land_resell_help" /> + <check_box label="Tillad at samle/dele land" name="allow_parcel_changes_check" /> + <button label="?" name="parcel_changes_help" /> + <check_box label="Blokér visning af land i Søgning" name="block_parcel_search_check" + tool_tip="Lad beboere se denne region og dens parceller i søgeresultater" /> + <button label="?" name="parcel_search_help" /> + <spinner label="Max besøgende" name="agent_limit_spin" /> + <button label="?" name="agent_limit_help" /> + <spinner label="Objekt bonus" name="object_bonus_spin" /> + <button label="?" name="object_bonus_help" /> + <text label="Indhold" name="access_text"> + Indhold: + </text> + + + + <button label="?" name="access_help" /> + <button label="Gem" name="apply_btn" /> + <button label="Send en beboer hjem ..." name="kick_btn" /> + <button label="Send alle beboere hjem..." name="kick_all_btn" /> + <button label="Send besked til region..." name="im_btn" /> + <button label="Vedligehold telehub..." name="manage_telehub_btn" /> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_region_terrain.xml b/indra/newview/skins/default/xui/da/panel_region_terrain.xml index a5ce042892c4f135d8e8161cb52aeb693e6a4139..4ff81112d3a15a624e18a6cdf735fe0d0cb4b2b3 100644 --- a/indra/newview/skins/default/xui/da/panel_region_terrain.xml +++ b/indra/newview/skins/default/xui/da/panel_region_terrain.xml @@ -1,30 +1,30 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<panel label="Terræn" name="Terrain"> - <text name="region_text_lbl"> - Region: - </text> - <text name="region_text"> - ukendt - </text> - <spinner label="Vand højde" name="water_height_spin" /> - <button label="?" name="water_height_help" /> - <spinner label="Max. hævning af land" name="terrain_raise_spin" /> - <button label="?" name="terrain_raise_help" /> - <spinner label="Max sænkning af land" name="terrain_lower_spin" /> - <button label="?" name="terrain_lower_help" /> - <check_box label="Benyt solopsætning fra estate" name="use_estate_sun_check" /> - <button label="?" name="use_estate_sun_help" /> - <check_box label="Fast sol-position" name="fixed_sun_check" /> - <button label="?" name="fixed_sun_help" /> - <slider label="Fase" name="sun_hour_slider" /> - <button label="Gem" name="apply_btn" /> - <button label="Download RAW terræn fil..." name="download_raw_btn" - tool_tip="Kun tilgængelig for ejer af estate - ikke for administratorer" /> - <button label="?" name="download_raw_help" /> - <button label="Upload RAW terræn fil..." name="upload_raw_btn" - tool_tip="Kun tilgængelig for ejer af estate - ikke for administratorer" /> - <button label="?" name="upload_raw_help" /> - <button label="Gem terræn" name="bake_terrain_btn" - tool_tip="Lav det nuværende terræn som base for begrænsning af fremtidige hævninger og sænkninger af terræn" /> - <button label="?" name="bake_terrain_help" /> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel label="Terræn" name="Terrain"> + <text name="region_text_lbl"> + Region: + </text> + <text name="region_text"> + ukendt + </text> + <spinner label="Vand højde" name="water_height_spin" /> + <button label="?" name="water_height_help" /> + <spinner label="Max. hævning af land" name="terrain_raise_spin" /> + <button label="?" name="terrain_raise_help" /> + <spinner label="Max sænkning af land" name="terrain_lower_spin" /> + <button label="?" name="terrain_lower_help" /> + <check_box label="Benyt solopsætning fra estate" name="use_estate_sun_check" /> + <button label="?" name="use_estate_sun_help" /> + <check_box label="Fast sol-position" name="fixed_sun_check" /> + <button label="?" name="fixed_sun_help" /> + <slider label="Fase" name="sun_hour_slider" /> + <button label="Gem" name="apply_btn" /> + <button label="Download RAW terræn fil..." name="download_raw_btn" + tool_tip="Kun tilgængelig for ejer af estate - ikke for administratorer" /> + <button label="?" name="download_raw_help" /> + <button label="Upload RAW terræn fil..." name="upload_raw_btn" + tool_tip="Kun tilgængelig for ejer af estate - ikke for administratorer" /> + <button label="?" name="upload_raw_help" /> + <button label="Gem terræn" name="bake_terrain_btn" + tool_tip="Lav det nuværende terræn som base for begrænsning af fremtidige hævninger og sænkninger af terræn" /> + <button label="?" name="bake_terrain_help" /> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_region_texture.xml b/indra/newview/skins/default/xui/da/panel_region_texture.xml index 8fab436940a73160c468bcb8b4bdba0332acb926..65c4743da0355412d671d3dd0b1a032b81282016 100644 --- a/indra/newview/skins/default/xui/da/panel_region_texture.xml +++ b/indra/newview/skins/default/xui/da/panel_region_texture.xml @@ -1,57 +1,57 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<panel label="Terræn textures" name="Textures"> - <text name="region_text_lbl"> - Region: - </text> - <text name="region_text"> - ukendt - </text> - <text name="detail_texture_text"> - Terræn teksturer (kræver 512x512, 24 bit .tga filer) - </text> - <text name="height_text_lbl"> - 1 (Lav) - </text> - <text name="height_text_lbl2"> - 2 - </text> - <text name="height_text_lbl3"> - 3 - </text> - <text name="height_text_lbl4"> - 4 (Høj) - </text> - <text name="height_text_lbl5"> - Texture højde intervaller - </text> - <text name="height_text_lbl6"> - Sydvest - </text> - <text name="height_text_lbl7"> - Nordvest - </text> - <text name="height_text_lbl8"> - Sydøst - </text> - <text name="height_text_lbl9"> - Nordøst - </text> - <spinner label="Lav" name="height_start_spin_0" /> - <spinner label="Lav" name="height_start_spin_1" /> - <spinner label="Lav" name="height_start_spin_2" /> - <spinner label="Lav" name="height_start_spin_3" /> - <spinner label="Høj" name="height_range_spin_0" /> - <spinner label="Høj" name="height_range_spin_1" /> - <spinner label="Høj" name="height_range_spin_2" /> - <spinner label="Høj" name="height_range_spin_3" /> - <text name="height_text_lbl10"> - Disse værdier repræsenterer overgange for texturerne ovenfor mÃ¥lt i meter - </text> - <text name="height_text_lbl11"> - LAV værdien er MAKSIMUM højde for texture nummer 1, - </text> - <text name="height_text_lbl12"> - og HØJ værdien er MIMIMUM højde for texture nummer 4. - </text> - <button label="Gem" name="apply_btn" /> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel label="Terræn textures" name="Textures"> + <text name="region_text_lbl"> + Region: + </text> + <text name="region_text"> + ukendt + </text> + <text name="detail_texture_text"> + Terræn teksturer (kræver 512x512, 24 bit .tga filer) + </text> + <text name="height_text_lbl"> + 1 (Lav) + </text> + <text name="height_text_lbl2"> + 2 + </text> + <text name="height_text_lbl3"> + 3 + </text> + <text name="height_text_lbl4"> + 4 (Høj) + </text> + <text name="height_text_lbl5"> + Texture højde intervaller + </text> + <text name="height_text_lbl6"> + Sydvest + </text> + <text name="height_text_lbl7"> + Nordvest + </text> + <text name="height_text_lbl8"> + Sydøst + </text> + <text name="height_text_lbl9"> + Nordøst + </text> + <spinner label="Lav" name="height_start_spin_0" /> + <spinner label="Lav" name="height_start_spin_1" /> + <spinner label="Lav" name="height_start_spin_2" /> + <spinner label="Lav" name="height_start_spin_3" /> + <spinner label="Høj" name="height_range_spin_0" /> + <spinner label="Høj" name="height_range_spin_1" /> + <spinner label="Høj" name="height_range_spin_2" /> + <spinner label="Høj" name="height_range_spin_3" /> + <text name="height_text_lbl10"> + Disse værdier repræsenterer overgange for texturerne ovenfor mÃ¥lt i meter + </text> + <text name="height_text_lbl11"> + LAV værdien er MAKSIMUM højde for texture nummer 1, + </text> + <text name="height_text_lbl12"> + og HØJ værdien er MIMIMUM højde for texture nummer 4. + </text> + <button label="Gem" name="apply_btn" /> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_scrolling_param.xml b/indra/newview/skins/default/xui/da/panel_scrolling_param.xml index c8d2954defaec93ee85c2b009bbbf8a7bba8405c..5309ca589fef3ade79aa5107fd27d4418f401a7a 100644 --- a/indra/newview/skins/default/xui/da/panel_scrolling_param.xml +++ b/indra/newview/skins/default/xui/da/panel_scrolling_param.xml @@ -1,12 +1,12 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<panel name="LLScrollingPanelParam"> - <text type="string" length="1" name="Loading..."> - Henter... - </text> - <text type="string" length="1" name="Loading...2"> - Henter... - </text> - <button label="" label_selected="" name="less" /> - <button label="" label_selected="" name="more" /> - <slider label="[DESC]" name="param slider" /> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel name="LLScrollingPanelParam"> + <text type="string" length="1" name="Loading..."> + Henter... + </text> + <text type="string" length="1" name="Loading...2"> + Henter... + </text> + <button label="" label_selected="" name="less" /> + <button label="" label_selected="" name="more" /> + <slider label="[DESC]" name="param slider" /> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_status_bar.xml b/indra/newview/skins/default/xui/da/panel_status_bar.xml index a13d3faa66b8346f0f6acf86d276aa7f77cba2f9..7bc66b11015d2ca6d99c08c5f5622b6b7100c78f 100644 --- a/indra/newview/skins/default/xui/da/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/da/panel_status_bar.xml @@ -1,44 +1,44 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<panel name="status"> - <text type="string" length="1" name="ParcelNameText" - tool_tip="Navn pÃ¥ det land/parcel som du stÃ¥r pÃ¥. Klik pÃ¥ teksten for yderligere info."> - parcel name goes here - </text> - <text type="string" length="1" name="BalanceText" tool_tip="Konto balance"> - Henter... - </text> - <button label="" label_selected="" name="buycurrency" tool_tip="Køb valuta" /> - <text type="string" length="12" name="TimeText" tool_tip="Nuværende Second Life tid"> - 12:00 - </text> - <string name="StatBarDaysOfWeek"> - Søndag:Mandag:Tirsdag:Onsdag:Torsdag:Fredag:Lørdag - </string> - <string name="StatBarMonthsOfYear"> - Januar:Februar:Marts:April:Maj:Juni:Juli:August:September:Oktober:November:December - </string> - <button label="" label_selected="" name="scriptout" tool_tip="Script advarsler og fejl" /> - <button label="" label_selected="" name="health" tool_tip="Helbred" /> - <text type="string" length="1" name="HealthText" tool_tip="Helbred"> - 100% - </text> - <button label="" label_selected="" name="no_fly" tool_tip="Flyvning ikke tilladt" /> - <button label="" label_selected="" name="no_build" - tool_tip="Bygning og placering af objekter ikke tilladt" /> - <button label="" label_selected="" name="no_scripts" - tool_tip="Afvikling af scripts ikke tilladt" /> - <button label="" label_selected="" name="restrictpush" - tool_tip="Ikke tilladt at skubbe" /> - <button label="" label_selected="" name="status_no_voice" - tool_tip="Stemme chat ikke tilgængelig" /> - <button label="" label_selected="" name="buyland" tool_tip="Køb denne parcel" /> - <button label="" name="menubar_search_bevel_bg" /> - <line_editor label="Søg" name="search_editor" tool_tip="Søg Second Life" /> - <button label="" label_selected="" name="search_btn" tool_tip="Søg Second Life" /> - <string name="packet_loss_tooltip"> - Packet Loss - </string> - <string name="bandwidth_tooltip"> - BÃ¥ndbredde - </string> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel name="status"> + <text type="string" length="1" name="ParcelNameText" + tool_tip="Navn pÃ¥ det land/parcel som du stÃ¥r pÃ¥. Klik pÃ¥ teksten for yderligere info."> + parcel name goes here + </text> + <text type="string" length="1" name="BalanceText" tool_tip="Konto balance"> + Henter... + </text> + <button label="" label_selected="" name="buycurrency" tool_tip="Køb valuta" /> + <text type="string" length="12" name="TimeText" tool_tip="Nuværende Second Life tid"> + 12:00 + </text> + <string name="StatBarDaysOfWeek"> + Søndag:Mandag:Tirsdag:Onsdag:Torsdag:Fredag:Lørdag + </string> + <string name="StatBarMonthsOfYear"> + Januar:Februar:Marts:April:Maj:Juni:Juli:August:September:Oktober:November:December + </string> + <button label="" label_selected="" name="scriptout" tool_tip="Script advarsler og fejl" /> + <button label="" label_selected="" name="health" tool_tip="Helbred" /> + <text type="string" length="1" name="HealthText" tool_tip="Helbred"> + 100% + </text> + <button label="" label_selected="" name="no_fly" tool_tip="Flyvning ikke tilladt" /> + <button label="" label_selected="" name="no_build" + tool_tip="Bygning og placering af objekter ikke tilladt" /> + <button label="" label_selected="" name="no_scripts" + tool_tip="Afvikling af scripts ikke tilladt" /> + <button label="" label_selected="" name="restrictpush" + tool_tip="Ikke tilladt at skubbe" /> + <button label="" label_selected="" name="status_no_voice" + tool_tip="Stemme chat ikke tilgængelig" /> + <button label="" label_selected="" name="buyland" tool_tip="Køb denne parcel" /> + <button label="" name="menubar_search_bevel_bg" /> + <line_editor label="Søg" name="search_editor" tool_tip="Søg Second Life" /> + <button label="" label_selected="" name="search_btn" tool_tip="Søg Second Life" /> + <string name="packet_loss_tooltip"> + Packet Loss + </string> + <string name="bandwidth_tooltip"> + BÃ¥ndbredde + </string> +</panel> diff --git a/indra/newview/skins/default/xui/da/role_actions.xml b/indra/newview/skins/default/xui/da/role_actions.xml index f2d1a3508bac685d3cdbc6a0ad009f943de800b6..e4c8c4b93bdcf166cb24f490b4579a96d4b691e7 100644 --- a/indra/newview/skins/default/xui/da/role_actions.xml +++ b/indra/newview/skins/default/xui/da/role_actions.xml @@ -1,201 +1,201 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<role_actions> - <action_set - description="Disse rettigheder inkluderer adgang til at tilføje og fjerne gruppe medlemmer og tillade nye medlemmer at melde sig ind uden invitation" - name="Membership"> - <action description="Invitér personer til denne gruppe" - longdescription="Invitér personer til denne gruppe via 'Invitér ny person...' knappen i fanen: medlemmer & roller > underfanen: medlemmer" - name="member invite" /> - <action description="Fjern medlemmer fra denne gruppe" - longdescription="Fjern medlemmer i denne gruppe via 'Fjern fra gruppe' knappen i fanen: medlemmer & roller > underfanen: medlemmer. En ejer kan fjerne alle undtagen en anden ejer. Hvis du ikke er en ejer, kan et medlem kun fjernes fra gruppen hvis, og kun hvis, medlemmet kun findes i Alle rollen, og ikke i andre roller. for at fjerne medlemmer fra roller, skal du have rettigheden 'Fjern medlemmer fra roller'" - name="member eject" /> - <action - description="Ã…ben eller luk for 'fri tilmelding' og ændre 'tilmeldingsgebyr'" - longdescription="Ã…ben for 'fri tilmelding' sÃ¥ alle kan blive medlem af gruppen, eller luk for 'fri tilmelding' sÃ¥ kun inveterede kan blive medlem. ændre 'tilmeldingsgebyr' i gruppe opsætningsbilledet sektionen i Generelt fanen" - name="member options" /> - </action_set> - <action_set - description="Disse rettigheder inkluderer adgang til at tilføje, fjerne og ændre gruppe-roller, tilføje og fjerne medlemmer i roller, og give rettigheder til roller" - name="Roles"> - <action description="Opret nye roller" - longdescription="Opret nye roller i fanen: Medlemmer & roller > under-fanen: Roller." - name="role create" /> - <action description="Slet roller" - longdescription="Slet roller i roller i fanen: Medlemmer & roller > under-fanen: Roller." - name="role delete" /> - <action - description="Ændre rolle navne, titler, beskrivelser og angivelse af om rollemedlemmer kan ses af andre udenfor gruppen" - longdescription="Ændre rolle navne, titler, beskrivelser og angivelse af om rollemedlemmer kan ses af andre udenfor gruppen. Dette hÃ¥ndteres i bunden af fanen:: Medlemmer & roller > under-fanen: Roller efter at have valgt en rolle." - name="role properties" /> - <action description="Tildel andre samme roller som dig selv" - longdescription="Tildel andre medlemmer til roller i Tildelte roller sektionen pÃ¥ fanen: Medlemmer & roller > under-fanen: Medlemmer. Et medlem med denne rettighed kan kun tildele andre medlemmer en rolle som tildeleren allerede selv har." - name="role assign member limited" /> - <action description="Tildele medlemmer enhver rolle" - longdescription="Tildel andre medlemmer til en hvilken som helst rolle i Tildelte roller sektionen pÃ¥ fanen: Medlemmer & roller > under-fanen: Medlemmer. *ADVARSEL* Ethvert medlem i en rolle med denne rettighed kan tildele sig selv - og enhver anden - roller som giver dem flere rettigheder end de havde tidligere, og dermed potentielt fÃ¥ næsten samme magt som ejer. Vær sikker pÃ¥ at vide hvad du ør inden du tildeler denne rettighed." - name="role assign member" /> - <action description="Fjern medlemmer fra roller" - longdescription="Fjern medlemmer fra roller i in Tildelte roller sektionen pÃ¥ fanen: Medlemmer & roller > under-fanen: Medlemmer. Ejere kan ikke fjernes." - name="role remove member" /> - <action description="Tildel og fjern rettigheder for roller" - longdescription="Tildel og fjern rettigheder for roller i tilladte rettigheder sektionen pÃ¥ fanen: Medlemmer & roller > under-fanen: Roller. *ADVARSEL* Ethvert medlem i en rolle med denne rettighed kan tildele sig selv - og enhver anden - rettigheder som giver dem flere rettigheder end de havde tidligere, og dermed potentielt fÃ¥ næsten samme magt som ejer. Vær sikker pÃ¥ at vide hvad du gør inden du tildeler denne rettighed." - name="role change actions" /> - </action_set> - <action_set - description="Disse rettigheder inkluderer adgang til at ændre denne gruppes identitetsoplysninger, som f.eks. om gruppen kan ses af andre, gruppens fundats og billede." - name="Group Identity"> - <action description="Ændre fundats, billede og 'Vis i søgning'" - longdescription="Ændre fundats og 'Vis i søgning'. Dette gøres under fanen Generelt." - name="group change identity" /> - </action_set> - <action_set - description="Disse rettigheder inkluderer adgang til dedikere, ændre og sælge land fra denne gruppes besiddelser. For at Ã¥bne 'Om land...' vinduet, højre-klik pÃ¥ jorden og vælg 'Om land...', eller klik pÃ¥ 'Om land...' i 'Verden' menuen." - name="Parcel Management"> - <action description="Dedikér eller køb land til gruppen" - longdescription="Dedikér eller køb land til gruppen. Dette gøres i fanen Generelt i 'Om land...'." - name="land deed" /> - <action description="Forlad land og overgiv det til guvernør Linden" - longdescription="Forlad land og overgiv det til guvernør Linden. *ADVARSEL* Ethvert medlem med en rolle med denne rettighed kan overdrage gruppe-ejet land via fanen Generelt i 'Om land...' til Lindens ejerskab uden salg! Vær sikker pÃ¥ at vide hvad du ør inden du tildeler denne rettighed." - name="land release" /> - <action description="Sæt land til salg" - longdescription="Sæt land til salg. *ADVARSEL* Ethvert medlem med en rolle med denne rettighed kan sælge gruppe-ejet land via fanen Generelt i 'Om land...'! Vær sikker pÃ¥ at vide hvad du ør inden du tildeler denne rettighed." - name="land set sale info" /> - <action description="Opdel og saml parceller" - longdescription="Opdel og saml parceller. Dette gøres ved at højreklikke pÃ¥ jorden og vælge 'Redigér terræn'" - name="land divide join" /> - </action_set> - <action_set - description="Disse rettigheder inkluderer adgang til at ændre parcel navn og en række parametre om f.eks. landingspunkt, teleports m.v.." - name="Parcel Identity"> - <action - description="Angive om sted skal vises i 'vis i Søg steder' og angivelse af kategori" - longdescription="Angive om sted skal vises i 'vis i Søg steder' og angivelse af kategori i 'Om land...' > Indstillinger fanen." - name="land find places" /> - <action - description="Ændre parcel navn, beskrivelse, og 'Vis i Søg' opsætning" - longdescription="Ændre parcel navn, beskrivelse, og 'Vis i Søg' opsætning. Dette hÃ¥ndteres i 'Om land...'> Opsætning fanen." - name="land change identity" /> - <action description="Sæt landingspunkt og teleport muligheder" - longdescription="PÃ¥ en gruppe-ejet parcel kan medlemmer, med en rolle med denne rettighed, sætte landingspunktet og dermed angive hvor indkommende teleporte skal ankomme og desuden angive dealjer om teleporte. Dette hÃ¥ndteres i 'Om land...'> Opsætning fanen." - name="land set landing point" /> - </action_set> - <action_set - description="Disse rettigheder inkluderer adgang til at opsætte parcel indstillinger som f.eks. 'Lave objekter', 'Redigere terræn', samt musik og media indstillinger." - name="Parcel Settings"> - <action description="Ændre musik og media indstillinger" - longdescription="Ændre oplysninger om streaming musik og film i 'Om land...' > Media fanen." - name="land change media" /> - <action description="Ændre rettighed til 'Redigere terræn'" - longdescription="Ændre rettighed til 'Redigere terræn'. *ADVARSEL*: Redigere terræn' kan give alle og enhver ret til at ændre terræn og opsætte og flytte Linden planter. Vær sikker pÃ¥ at vide hvad du ør inden du tildeler denne rettighed." - name="land edit" /> - <action - description="Ændre diverse andre indstillinger i 'Om land...'> indstillinger fanen" - longdescription="Giv adgang til at ændre 'Sikker (ingen skade)', 'Flyve', og tillad andre beboere at: 'Lave objekter', 'Redigere terræn', 'Lave landemærker', og 'Køre scripts' pÃ¥ gruppe-ejet land via About Land > Indstillinger fanen." - name="land options" /> - </action_set> - <action_set - description="Disse rettigheder inkluderer adgang til at medlemmer kan omgÃ¥ restriktioner pÃ¥ gruppe-ejede parceller." - name="Parcel Powers"> - <action description="Tillad altid 'Rediger Terræn'" - longdescription="Medlemmer med denne rolle har adgang til at redigere terræn pÃ¥ gruppe-ejede parceller, ogsÃ¥ selvom denne mulighed ikke er aktiveret pÃ¥ 'Om land...' > Indstillinger fanen." - name="land allow edit land" /> - <action description="Tillad altid at 'Flyve'" - longdescription="Medlemmer med denne rolle har adgang til at flyve pÃ¥ gruppe-ejede parceller, ogsÃ¥ selvom denne mulighed ikke er aktiveret pÃ¥ 'Om land...' > Indstillinger fanen." - name="land allow fly" /> - <action description="Tillad altid 'Lave objekter'" - longdescription="Medlemmer med denne rolle har adgang til at lave nye objekter pÃ¥ gruppe-ejede parceller, ogsÃ¥ selvom denne mulighed ikke er aktiveret pÃ¥ 'Om land...' > Indstillinger fanen." - name="land allow create" /> - <action description="Tillad altid at 'Lave landemærker'" - longdescription="Medlemmer med denne rolle har adgang til at lave landemærker pÃ¥ gruppe-ejede parceller, ogsÃ¥ selvom denne mulighed ikke er aktiveret pÃ¥ 'Om land...' > Indstillinger fanen." - name="land allow landmark" /> - <action description="Tillad altid 'sæt til hjem' pÃ¥ gruppe-ejet land" - longdescription="Medlemmer med denne rolle har adgang til at benytte 'Verden' menuen og vælge 'sæt til hjem' pÃ¥ en parcel der er dedikeret til gruppen." - name="land allow set home" /> - </action_set> - <action_set - description="Disse rettigheder inkluderer adgang til at medlemmer kan tillade eller forbyde adgang til gruppe-ejede parceller, inkluderende at 'fryse' og udsmide beboere." - name="Parcel Access"> - <action description="Administrér adgangsregler for parceller" - longdescription="Administrér adgangsregler for parceller i 'Om land' > 'Adgang' fanen." - name="land manage allowed" /> - <action description="Administrér liste med blokerede beboere pÃ¥ parceller" - longdescription="Administrér liste med blokerede beboere pÃ¥ parceller i 'Om land' > 'Adgang' fanen." - name="land manage banned" /> - <action - description="Ændre indstillinger for at 'Sælge adgang til' parceller" - longdescription="Ændre indstillinger for at 'Sælge adgang til' parceller i 'Om land' > 'Adgang' fanen." - name="land manage passes" /> - <action - description="Adgang til at smide beboere ud og 'fryse' beboere pÃ¥ parceller" - longdescription="Medlermmer med denne rolle kan hÃ¥ndtere beboere som ikke er velkomne pÃ¥ gruppe-ejet parceller ved at højreklikke pÃ¥ dem, vælge Mere>, og vælge 'Smid ud...' eller 'Frys...'." - name="land admin" /> - </action_set> - <action_set - description="Disse rettigheder inkluderer mulighed til at tillade beboere at returnere objekter og placere og flytte Linden planter. Dette er brugbart for at medlemmer kan holde orden og tilpasse landskabet. Denne mulighed skal benyttes med varsomhed, da der ikke er mulighed for at fortryde returnering af objekter og ændringer i landskabet." - name="Parcel Content"> - <action description="Returnere objekter ejet af gruppen" - longdescription="Returne objekter pÃ¥ gruppe-ejede parceller der er ejet af gruppen. Dette hÃ¥ndteres i 'Om land...'> 'Objekter' fanen." - name="land return group owned" /> - <action description="Returnere objekter der er sat til 'gruppe'" - longdescription="Returnere objekter pÃ¥ gruppe-ejede parceller, der er 'sat til gruppe' i 'Om land...'> 'Objekter' fanen." - name="land return group set" /> - <action description="Returnere objekter der ikke er ejet af andre" - longdescription="Returnere objekter pÃ¥ gruppe-ejede parceller, der er 'Ejet af andre' i 'Om land...'> 'Objekter' fanen." - name="land return non group" /> - <action description="Ændre landskab med Linden planter" - longdescription="Mulighed for at ændre landskabet ved at placere og flytte Linden træer, planter, og græs. Disse genstande kan findes i din beholdnings Library > Objects mappe eller de kan oprettes via 'Byg' knappen." - name="land gardening" /> - </action_set> - <action_set - description="Disse rettigheder inkluderer mulighed til at dedikere, ændre og sælge gruppe-ejede objekter. Disse ændringer sker i 'Rediger'> 'Generelt' fanen." - name="Object Management"> - <action description="Dediker objekter til gruppe" - longdescription="Dediker objekter til gruppe i 'Rediger'> 'Generelt' fanen." - name="object deed" /> - <action description="Manipulér (flyt, kopiér, ændre) gruppe-ejede objekter" - longdescription="Manipulér (flyt, kopiér, ændre) gruppe-ejede objekter i 'Rediger'> 'Generelt' fanen." - name="object manipulate" /> - <action description="Sæt gruppe-ejede objekter til salg" - longdescription="Sæt gruppe-ejede objekter til salg i 'Rediger'> 'Generelt' fanen." - name="object set sale" /> - </action_set> - <action_set - description="Disse rettigheder inkluderer mulighed til at hÃ¥ndtere betalinger for gruppen og styre adgang til gruppens kontobevægelser." - name="Accounting"> - <action description="Betale gruppe regninger og modtage gruppe udbytte" - longdescription="Medlemmer med denne rolle vil automatisk betale gruppe regninger og modtage gruppe udbytte. Det betyder at de vil modtager en andel af indtægter fra salg af gruppe-ejet land og bidrage til betaling af gruppe-relaterede betalinger, som f.eks. betaling for at paceller vises i lister. " - name="accounting accountable" /> - </action_set> - <action_set - description="Disse rettigheder inkluderer adgang til at kunne sende, modtage og se gruppe beskeder." - name="Notices"> - <action description="Send beskeder" - longdescription="Medlemmer med denne rolle kan sende beskeder i 'Beskeder' fanen." - name="notices send" /> - <action description="Modtage og se tidligere beskeder" - longdescription="Medlemmer med denne rolle kan modtage og se tidligere beskeder i 'Beskeder' fanen." - name="notices receive" /> - </action_set> - <action_set - description="Disse rettigheder inkluderer adgang til at kunne oprette forslag, stemme pÃ¥ forslag og se historik med forslag." - name="Proposals"> - <action description="Opret forslag" - longdescription="Medlemmer med denne rolle kan oprette forslag som der kan stemmes om i 'Forslag' fanen." - name="proposal start" /> - <action description="Stem pÃ¥ forslag" - longdescription="Medlemmer med denne rolle kan stemme pÃ¥ forslag i 'Forslag' fanen." - name="proposal vote" /> - </action_set> - <action_set - description="Disse rettigheder styrer hvem der kan deltage i gruppe-chat og gruppe stemme-chat." - name="Chat"> - <action description="Deltage i gruppe-chat" - longdescription="Medlemmer med denne rolle kan deltage i gruppe-chat sessioner" - name="join group chat" /> - <action description="Deltag i gruppe stemme-chat" - longdescription="Medlemmer med denne rolle kan deltage i gruppe stemme-chat sessioner. BEMÆRK: Medlemmet skal ogsÃ¥ have rollen 'Deltage i gruppe-chat' for at denne rolle har effekt." - name="join voice chat" /> - <action description="Styr gruppe-chat" - longdescription="Medlemmer med denne rolle kan kontrollere adgang og deltagelse i gruppe-chat og gruppe stemme-chat sessioner." - name="moderate group chat" /> - </action_set> -</role_actions> +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<role_actions> + <action_set + description="Disse rettigheder inkluderer adgang til at tilføje og fjerne gruppe medlemmer og tillade nye medlemmer at melde sig ind uden invitation" + name="Membership"> + <action description="Invitér personer til denne gruppe" + longdescription="Invitér personer til denne gruppe via 'Invitér ny person...' knappen i fanen: medlemmer & roller > underfanen: medlemmer" + name="member invite" /> + <action description="Fjern medlemmer fra denne gruppe" + longdescription="Fjern medlemmer i denne gruppe via 'Fjern fra gruppe' knappen i fanen: medlemmer & roller > underfanen: medlemmer. En ejer kan fjerne alle undtagen en anden ejer. Hvis du ikke er en ejer, kan et medlem kun fjernes fra gruppen hvis, og kun hvis, medlemmet kun findes i Alle rollen, og ikke i andre roller. for at fjerne medlemmer fra roller, skal du have rettigheden 'Fjern medlemmer fra roller'" + name="member eject" /> + <action + description="Ã…ben eller luk for 'fri tilmelding' og ændre 'tilmeldingsgebyr'" + longdescription="Ã…ben for 'fri tilmelding' sÃ¥ alle kan blive medlem af gruppen, eller luk for 'fri tilmelding' sÃ¥ kun inveterede kan blive medlem. ændre 'tilmeldingsgebyr' i gruppe opsætningsbilledet sektionen i Generelt fanen" + name="member options" /> + </action_set> + <action_set + description="Disse rettigheder inkluderer adgang til at tilføje, fjerne og ændre gruppe-roller, tilføje og fjerne medlemmer i roller, og give rettigheder til roller" + name="Roles"> + <action description="Opret nye roller" + longdescription="Opret nye roller i fanen: Medlemmer & roller > under-fanen: Roller." + name="role create" /> + <action description="Slet roller" + longdescription="Slet roller i roller i fanen: Medlemmer & roller > under-fanen: Roller." + name="role delete" /> + <action + description="Ændre rolle navne, titler, beskrivelser og angivelse af om rollemedlemmer kan ses af andre udenfor gruppen" + longdescription="Ændre rolle navne, titler, beskrivelser og angivelse af om rollemedlemmer kan ses af andre udenfor gruppen. Dette hÃ¥ndteres i bunden af fanen:: Medlemmer & roller > under-fanen: Roller efter at have valgt en rolle." + name="role properties" /> + <action description="Tildel andre samme roller som dig selv" + longdescription="Tildel andre medlemmer til roller i Tildelte roller sektionen pÃ¥ fanen: Medlemmer & roller > under-fanen: Medlemmer. Et medlem med denne rettighed kan kun tildele andre medlemmer en rolle som tildeleren allerede selv har." + name="role assign member limited" /> + <action description="Tildele medlemmer enhver rolle" + longdescription="Tildel andre medlemmer til en hvilken som helst rolle i Tildelte roller sektionen pÃ¥ fanen: Medlemmer & roller > under-fanen: Medlemmer. *ADVARSEL* Ethvert medlem i en rolle med denne rettighed kan tildele sig selv - og enhver anden - roller som giver dem flere rettigheder end de havde tidligere, og dermed potentielt fÃ¥ næsten samme magt som ejer. Vær sikker pÃ¥ at vide hvad du ør inden du tildeler denne rettighed." + name="role assign member" /> + <action description="Fjern medlemmer fra roller" + longdescription="Fjern medlemmer fra roller i in Tildelte roller sektionen pÃ¥ fanen: Medlemmer & roller > under-fanen: Medlemmer. Ejere kan ikke fjernes." + name="role remove member" /> + <action description="Tildel og fjern rettigheder for roller" + longdescription="Tildel og fjern rettigheder for roller i tilladte rettigheder sektionen pÃ¥ fanen: Medlemmer & roller > under-fanen: Roller. *ADVARSEL* Ethvert medlem i en rolle med denne rettighed kan tildele sig selv - og enhver anden - rettigheder som giver dem flere rettigheder end de havde tidligere, og dermed potentielt fÃ¥ næsten samme magt som ejer. Vær sikker pÃ¥ at vide hvad du gør inden du tildeler denne rettighed." + name="role change actions" /> + </action_set> + <action_set + description="Disse rettigheder inkluderer adgang til at ændre denne gruppes identitetsoplysninger, som f.eks. om gruppen kan ses af andre, gruppens fundats og billede." + name="Group Identity"> + <action description="Ændre fundats, billede og 'Vis i søgning'" + longdescription="Ændre fundats og 'Vis i søgning'. Dette gøres under fanen Generelt." + name="group change identity" /> + </action_set> + <action_set + description="Disse rettigheder inkluderer adgang til dedikere, ændre og sælge land fra denne gruppes besiddelser. For at Ã¥bne 'Om land...' vinduet, højre-klik pÃ¥ jorden og vælg 'Om land...', eller klik pÃ¥ 'Om land...' i 'Verden' menuen." + name="Parcel Management"> + <action description="Dedikér eller køb land til gruppen" + longdescription="Dedikér eller køb land til gruppen. Dette gøres i fanen Generelt i 'Om land...'." + name="land deed" /> + <action description="Forlad land og overgiv det til guvernør Linden" + longdescription="Forlad land og overgiv det til guvernør Linden. *ADVARSEL* Ethvert medlem med en rolle med denne rettighed kan overdrage gruppe-ejet land via fanen Generelt i 'Om land...' til Lindens ejerskab uden salg! Vær sikker pÃ¥ at vide hvad du ør inden du tildeler denne rettighed." + name="land release" /> + <action description="Sæt land til salg" + longdescription="Sæt land til salg. *ADVARSEL* Ethvert medlem med en rolle med denne rettighed kan sælge gruppe-ejet land via fanen Generelt i 'Om land...'! Vær sikker pÃ¥ at vide hvad du ør inden du tildeler denne rettighed." + name="land set sale info" /> + <action description="Opdel og saml parceller" + longdescription="Opdel og saml parceller. Dette gøres ved at højreklikke pÃ¥ jorden og vælge 'Redigér terræn'" + name="land divide join" /> + </action_set> + <action_set + description="Disse rettigheder inkluderer adgang til at ændre parcel navn og en række parametre om f.eks. landingspunkt, teleports m.v.." + name="Parcel Identity"> + <action + description="Angive om sted skal vises i 'vis i Søg steder' og angivelse af kategori" + longdescription="Angive om sted skal vises i 'vis i Søg steder' og angivelse af kategori i 'Om land...' > Indstillinger fanen." + name="land find places" /> + <action + description="Ændre parcel navn, beskrivelse, og 'Vis i Søg' opsætning" + longdescription="Ændre parcel navn, beskrivelse, og 'Vis i Søg' opsætning. Dette hÃ¥ndteres i 'Om land...'> Opsætning fanen." + name="land change identity" /> + <action description="Sæt landingspunkt og teleport muligheder" + longdescription="PÃ¥ en gruppe-ejet parcel kan medlemmer, med en rolle med denne rettighed, sætte landingspunktet og dermed angive hvor indkommende teleporte skal ankomme og desuden angive dealjer om teleporte. Dette hÃ¥ndteres i 'Om land...'> Opsætning fanen." + name="land set landing point" /> + </action_set> + <action_set + description="Disse rettigheder inkluderer adgang til at opsætte parcel indstillinger som f.eks. 'Lave objekter', 'Redigere terræn', samt musik og media indstillinger." + name="Parcel Settings"> + <action description="Ændre musik og media indstillinger" + longdescription="Ændre oplysninger om streaming musik og film i 'Om land...' > Media fanen." + name="land change media" /> + <action description="Ændre rettighed til 'Redigere terræn'" + longdescription="Ændre rettighed til 'Redigere terræn'. *ADVARSEL*: Redigere terræn' kan give alle og enhver ret til at ændre terræn og opsætte og flytte Linden planter. Vær sikker pÃ¥ at vide hvad du ør inden du tildeler denne rettighed." + name="land edit" /> + <action + description="Ændre diverse andre indstillinger i 'Om land...'> indstillinger fanen" + longdescription="Giv adgang til at ændre 'Sikker (ingen skade)', 'Flyve', og tillad andre beboere at: 'Lave objekter', 'Redigere terræn', 'Lave landemærker', og 'Køre scripts' pÃ¥ gruppe-ejet land via About Land > Indstillinger fanen." + name="land options" /> + </action_set> + <action_set + description="Disse rettigheder inkluderer adgang til at medlemmer kan omgÃ¥ restriktioner pÃ¥ gruppe-ejede parceller." + name="Parcel Powers"> + <action description="Tillad altid 'Rediger Terræn'" + longdescription="Medlemmer med denne rolle har adgang til at redigere terræn pÃ¥ gruppe-ejede parceller, ogsÃ¥ selvom denne mulighed ikke er aktiveret pÃ¥ 'Om land...' > Indstillinger fanen." + name="land allow edit land" /> + <action description="Tillad altid at 'Flyve'" + longdescription="Medlemmer med denne rolle har adgang til at flyve pÃ¥ gruppe-ejede parceller, ogsÃ¥ selvom denne mulighed ikke er aktiveret pÃ¥ 'Om land...' > Indstillinger fanen." + name="land allow fly" /> + <action description="Tillad altid 'Lave objekter'" + longdescription="Medlemmer med denne rolle har adgang til at lave nye objekter pÃ¥ gruppe-ejede parceller, ogsÃ¥ selvom denne mulighed ikke er aktiveret pÃ¥ 'Om land...' > Indstillinger fanen." + name="land allow create" /> + <action description="Tillad altid at 'Lave landemærker'" + longdescription="Medlemmer med denne rolle har adgang til at lave landemærker pÃ¥ gruppe-ejede parceller, ogsÃ¥ selvom denne mulighed ikke er aktiveret pÃ¥ 'Om land...' > Indstillinger fanen." + name="land allow landmark" /> + <action description="Tillad altid 'sæt til hjem' pÃ¥ gruppe-ejet land" + longdescription="Medlemmer med denne rolle har adgang til at benytte 'Verden' menuen og vælge 'sæt til hjem' pÃ¥ en parcel der er dedikeret til gruppen." + name="land allow set home" /> + </action_set> + <action_set + description="Disse rettigheder inkluderer adgang til at medlemmer kan tillade eller forbyde adgang til gruppe-ejede parceller, inkluderende at 'fryse' og udsmide beboere." + name="Parcel Access"> + <action description="Administrér adgangsregler for parceller" + longdescription="Administrér adgangsregler for parceller i 'Om land' > 'Adgang' fanen." + name="land manage allowed" /> + <action description="Administrér liste med blokerede beboere pÃ¥ parceller" + longdescription="Administrér liste med blokerede beboere pÃ¥ parceller i 'Om land' > 'Adgang' fanen." + name="land manage banned" /> + <action + description="Ændre indstillinger for at 'Sælge adgang til' parceller" + longdescription="Ændre indstillinger for at 'Sælge adgang til' parceller i 'Om land' > 'Adgang' fanen." + name="land manage passes" /> + <action + description="Adgang til at smide beboere ud og 'fryse' beboere pÃ¥ parceller" + longdescription="Medlermmer med denne rolle kan hÃ¥ndtere beboere som ikke er velkomne pÃ¥ gruppe-ejet parceller ved at højreklikke pÃ¥ dem, vælge Mere>, og vælge 'Smid ud...' eller 'Frys...'." + name="land admin" /> + </action_set> + <action_set + description="Disse rettigheder inkluderer mulighed til at tillade beboere at returnere objekter og placere og flytte Linden planter. Dette er brugbart for at medlemmer kan holde orden og tilpasse landskabet. Denne mulighed skal benyttes med varsomhed, da der ikke er mulighed for at fortryde returnering af objekter og ændringer i landskabet." + name="Parcel Content"> + <action description="Returnere objekter ejet af gruppen" + longdescription="Returne objekter pÃ¥ gruppe-ejede parceller der er ejet af gruppen. Dette hÃ¥ndteres i 'Om land...'> 'Objekter' fanen." + name="land return group owned" /> + <action description="Returnere objekter der er sat til 'gruppe'" + longdescription="Returnere objekter pÃ¥ gruppe-ejede parceller, der er 'sat til gruppe' i 'Om land...'> 'Objekter' fanen." + name="land return group set" /> + <action description="Returnere objekter der ikke er ejet af andre" + longdescription="Returnere objekter pÃ¥ gruppe-ejede parceller, der er 'Ejet af andre' i 'Om land...'> 'Objekter' fanen." + name="land return non group" /> + <action description="Ændre landskab med Linden planter" + longdescription="Mulighed for at ændre landskabet ved at placere og flytte Linden træer, planter, og græs. Disse genstande kan findes i din beholdnings Library > Objects mappe eller de kan oprettes via 'Byg' knappen." + name="land gardening" /> + </action_set> + <action_set + description="Disse rettigheder inkluderer mulighed til at dedikere, ændre og sælge gruppe-ejede objekter. Disse ændringer sker i 'Rediger'> 'Generelt' fanen." + name="Object Management"> + <action description="Dediker objekter til gruppe" + longdescription="Dediker objekter til gruppe i 'Rediger'> 'Generelt' fanen." + name="object deed" /> + <action description="Manipulér (flyt, kopiér, ændre) gruppe-ejede objekter" + longdescription="Manipulér (flyt, kopiér, ændre) gruppe-ejede objekter i 'Rediger'> 'Generelt' fanen." + name="object manipulate" /> + <action description="Sæt gruppe-ejede objekter til salg" + longdescription="Sæt gruppe-ejede objekter til salg i 'Rediger'> 'Generelt' fanen." + name="object set sale" /> + </action_set> + <action_set + description="Disse rettigheder inkluderer mulighed til at hÃ¥ndtere betalinger for gruppen og styre adgang til gruppens kontobevægelser." + name="Accounting"> + <action description="Betale gruppe regninger og modtage gruppe udbytte" + longdescription="Medlemmer med denne rolle vil automatisk betale gruppe regninger og modtage gruppe udbytte. Det betyder at de vil modtager en andel af indtægter fra salg af gruppe-ejet land og bidrage til betaling af gruppe-relaterede betalinger, som f.eks. betaling for at paceller vises i lister. " + name="accounting accountable" /> + </action_set> + <action_set + description="Disse rettigheder inkluderer adgang til at kunne sende, modtage og se gruppe beskeder." + name="Notices"> + <action description="Send beskeder" + longdescription="Medlemmer med denne rolle kan sende beskeder i 'Beskeder' fanen." + name="notices send" /> + <action description="Modtage og se tidligere beskeder" + longdescription="Medlemmer med denne rolle kan modtage og se tidligere beskeder i 'Beskeder' fanen." + name="notices receive" /> + </action_set> + <action_set + description="Disse rettigheder inkluderer adgang til at kunne oprette forslag, stemme pÃ¥ forslag og se historik med forslag." + name="Proposals"> + <action description="Opret forslag" + longdescription="Medlemmer med denne rolle kan oprette forslag som der kan stemmes om i 'Forslag' fanen." + name="proposal start" /> + <action description="Stem pÃ¥ forslag" + longdescription="Medlemmer med denne rolle kan stemme pÃ¥ forslag i 'Forslag' fanen." + name="proposal vote" /> + </action_set> + <action_set + description="Disse rettigheder styrer hvem der kan deltage i gruppe-chat og gruppe stemme-chat." + name="Chat"> + <action description="Deltage i gruppe-chat" + longdescription="Medlemmer med denne rolle kan deltage i gruppe-chat sessioner" + name="join group chat" /> + <action description="Deltag i gruppe stemme-chat" + longdescription="Medlemmer med denne rolle kan deltage i gruppe stemme-chat sessioner. BEMÆRK: Medlemmet skal ogsÃ¥ have rollen 'Deltage i gruppe-chat' for at denne rolle har effekt." + name="join voice chat" /> + <action description="Styr gruppe-chat" + longdescription="Medlemmer med denne rolle kan kontrollere adgang og deltagelse i gruppe-chat og gruppe stemme-chat sessioner." + name="moderate group chat" /> + </action_set> +</role_actions> diff --git a/indra/newview/skins/default/xui/da/teleport_strings.xml b/indra/newview/skins/default/xui/da/teleport_strings.xml index 6ef3b6227ed5f11e128a83481b9ab4b095559489..78052b4ef594364c81b389abb4a847aacc0b4fbd 100644 --- a/indra/newview/skins/default/xui/da/teleport_strings.xml +++ b/indra/newview/skins/default/xui/da/teleport_strings.xml @@ -1,88 +1,88 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<teleport_messages> - <message_set name="errors"> - <message name="invalid_tport"> - Der er problemer med at hÃ¥ndtere din teleport. -Det kan være nødvendigt at logge ud og ind for at kunne skifte teleportere. -Hvis du bliver ved med at have problemet kan du checke teknisk support pÃ¥: -www.secondlife.com/support. - </message> - <message name="invalid_region_handoff"> - Problem registreret i forbindelse med skift til ny region. -Det kan være nødvendigt at logge ud og ind for at kunne skifte regioner. -Hvis du bliver ved med at have problemet kan du checke teknisk support pÃ¥: -www.secondlife.com/support. - </message> - <message name="blocked_tport"> - Beklager, teleport er blokeret lige nu. Prøv igen senere. -Hvis du stadig ikke kan teleporte, prøv venligst at logge ud og ligge -ind for at løse dette problem. - </message> - <message name="nolandmark_tport"> - Beklager, systemet kunne ikke finde landmærke destinationen. - </message> - <message name="timeout_tport"> - Beklager, systemet kunne ikke fuldføre teleport forbindelse. -Prøv igen om lidt. - </message> - <message name="noaccess_tport"> - Beklager, du har ikke adgang til denne teleport destination. - </message> - <message name="missing_attach_tport"> - Dine vedhæng er ikke ankommet endnu. Prøv at vente lidt endnu -eller log ud og ind igen før du prøver at teleporte igen. - </message> - <message name="too_many_uploads_tport"> - Tekniske problemer hindrer at din teleport kan gennemføres. -Prøv venligst igen om lidt eller vælg et mindre travlt omrÃ¥de. - </message> - <message name="expired_tport"> - Beklager, men systemet kunne ikke fuldføre din teleport -i rimelig tid. Prøv venligst igen om lidt. - </message> - <message name="expired_region_handoff"> - Beklager, men systemet kunne ikke fuldføre skift til anden region -i rimelig tid. Prøv venligst igen om lidt. - </message> - <message name="no_host"> - Ikke muligt at fine teleport destination. Destinationen kan -være midlertidig utilgængelig eller findes ikke mere. -Prøv evt. igen om lidt. - </message> - <message name="no_inventory_host"> - Beholdningssystemet er ikke tilgængelig lige nu. - </message> - </message_set> - <message_set name="progress"> - <message name="sending_dest"> - Sender til destination. - </message> - <message name="redirecting"> - Omdirigerer til en anden lokation. - </message> - <message name="relaying"> - Overfører til destination. - </message> - <message name="sending_home"> - Sender forespørgsel pÃ¥ hjem-position. - </message> - <message name="sending_landmark"> - Semder anmodning om landmærke. - </message> - <message name="completing"> - Fuldfører teleport. - </message> - <message name="resolving"> - Finder destination. - </message> - <message name="contacting"> - Kontakter ny region. - </message> - <message name="arriving"> - Ankommer... - </message> - <message name="requesting"> - Anmoder om teleport... - </message> - </message_set> -</teleport_messages> +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<teleport_messages> + <message_set name="errors"> + <message name="invalid_tport"> + Der er problemer med at hÃ¥ndtere din teleport. +Det kan være nødvendigt at logge ud og ind for at kunne skifte teleportere. +Hvis du bliver ved med at have problemet kan du checke teknisk support pÃ¥: +www.secondlife.com/support. + </message> + <message name="invalid_region_handoff"> + Problem registreret i forbindelse med skift til ny region. +Det kan være nødvendigt at logge ud og ind for at kunne skifte regioner. +Hvis du bliver ved med at have problemet kan du checke teknisk support pÃ¥: +www.secondlife.com/support. + </message> + <message name="blocked_tport"> + Beklager, teleport er blokeret lige nu. Prøv igen senere. +Hvis du stadig ikke kan teleporte, prøv venligst at logge ud og ligge +ind for at løse dette problem. + </message> + <message name="nolandmark_tport"> + Beklager, systemet kunne ikke finde landmærke destinationen. + </message> + <message name="timeout_tport"> + Beklager, systemet kunne ikke fuldføre teleport forbindelse. +Prøv igen om lidt. + </message> + <message name="noaccess_tport"> + Beklager, du har ikke adgang til denne teleport destination. + </message> + <message name="missing_attach_tport"> + Dine vedhæng er ikke ankommet endnu. Prøv at vente lidt endnu +eller log ud og ind igen før du prøver at teleporte igen. + </message> + <message name="too_many_uploads_tport"> + Tekniske problemer hindrer at din teleport kan gennemføres. +Prøv venligst igen om lidt eller vælg et mindre travlt omrÃ¥de. + </message> + <message name="expired_tport"> + Beklager, men systemet kunne ikke fuldføre din teleport +i rimelig tid. Prøv venligst igen om lidt. + </message> + <message name="expired_region_handoff"> + Beklager, men systemet kunne ikke fuldføre skift til anden region +i rimelig tid. Prøv venligst igen om lidt. + </message> + <message name="no_host"> + Ikke muligt at fine teleport destination. Destinationen kan +være midlertidig utilgængelig eller findes ikke mere. +Prøv evt. igen om lidt. + </message> + <message name="no_inventory_host"> + Beholdningssystemet er ikke tilgængelig lige nu. + </message> + </message_set> + <message_set name="progress"> + <message name="sending_dest"> + Sender til destination. + </message> + <message name="redirecting"> + Omdirigerer til en anden lokation. + </message> + <message name="relaying"> + Overfører til destination. + </message> + <message name="sending_home"> + Sender forespørgsel pÃ¥ hjem-position. + </message> + <message name="sending_landmark"> + Semder anmodning om landmærke. + </message> + <message name="completing"> + Fuldfører teleport. + </message> + <message name="resolving"> + Finder destination. + </message> + <message name="contacting"> + Kontakter ny region. + </message> + <message name="arriving"> + Ankommer... + </message> + <message name="requesting"> + Anmoder om teleport... + </message> + </message_set> +</teleport_messages> diff --git a/indra/newview/skins/default/xui/de/floater_about.xml b/indra/newview/skins/default/xui/de/floater_about.xml index 238dfd5baf7bcd3f9d64c27858bb33b307f2ff33..c3935882af678cfb65529e97541a02849e845f97 100644 --- a/indra/newview/skins/default/xui/de/floater_about.xml +++ b/indra/newview/skins/default/xui/de/floater_about.xml @@ -20,13 +20,14 @@ SDL Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga SSLeay Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) xmlrpc-epi Copyright (C) 2000 Epinions, Inc. zlib Copyright (C) 1995-2002 Jean-loup Gailly und Mark Adler. +google-perftools Copyright (c) 2005, Google Inc. Alle Rechte vorbehalten. Details siehe licenses.txt. Voice-Chat-Audiocoding: Polycom(R) Siren14(TM) (ITU-T Empf.G.722.1 Anhang C) -I get by with a little help from my friends. (etwa: Ich überlebe mit ein bisschen Unterstützung von meinen Freunden.) --Richard Starkey +Um im Geschäftsleben erfolreich zu sein, sei kühn, sei schnell, sei anders. --Henry Marchant </text_editor> <text name="you_are_at"> Sie befinden sich in [POSITION] 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 eec6a76e57bf5982aee6a5bb372ab78630daf5fb..93e7297fd230ab5bb4b9ce8fb57f0957392cd619 100644 --- a/indra/newview/skins/default/xui/de/floater_about_land.xml +++ b/indra/newview/skins/default/xui/de/floater_about_land.xml @@ -8,6 +8,18 @@ <text name="Description:"> Beschreibung: </text> + <text name="LandType"> + Typ: + </text> + <text name="LandTypeText"> + Mainland / Homestead + </text> + <text name="ContentRating"> + Einstufung: + </text> + <text name="ContentRatingText"> + Adult + </text> <text name="Owner:"> Eigentümer: </text> @@ -29,9 +41,10 @@ Nicht zu verkaufen. </text> <text name="For Sale: Price L$[PRICE]."> - Preis: [PRICE] L$. + Preis: [PRICE] L$ ([PRICE_PER_SQM] L$/qm.). </text> - <button label="Land verkaufen..." label_selected="Land verkaufen..." name="Sell Land..." bottom="-200"/> + <text name="SalePending"/> + <button bottom="-222" label="Land verkaufen..." label_selected="Land verkaufen..." name="Sell Land..."/> <text name="For sale to"> Zum Verkauf an: [BUYER] </text> @@ -41,7 +54,7 @@ <text name="Selling with no objects in parcel." width="237"> Objekte sind im Verkauf nicht eingeschlossen. </text> - <button label="Landverkauf abbrechen" label_selected="Landverkauf abbrechen" name="Cancel Land Sale" bottom="-204"/> + <button bottom="-222" label="Landverkauf abbrechen" label_selected="Landverkauf abbrechen" name="Cancel Land Sale"/> <text name="Claimed:"> Gekauft am: </text> @@ -52,7 +65,7 @@ Gebiet: </text> <text name="PriceText"> - 4048 qm + 4048 qm. </text> <text name="Traffic:"> Traffic: @@ -76,7 +89,7 @@ Gebiet: </string> <string name="area_size_text"> - [AREA] qm + [AREA] qm. </string> <string name="auction_id_text"> Auktions-ID: [ID] @@ -108,17 +121,11 @@ </string> </panel> <panel label="Vertrag" name="land_covenant_panel"> - <text name="covenant_timestamp_text"> - Letzte Änderung am Mittwoch, den 31. Dez. 1969, 16:00:00 - </text> - <text name="region_name_lbl"> - Region: - </text> - <text name="region_name_text"> - leyla + <text name="estate_section_lbl"> + Grundstück: </text> <text name="estate_name_lbl"> - Grundstück: + Name: </text> <text name="estate_name_text"> Mainland @@ -129,15 +136,46 @@ <text name="estate_owner_text"> (keiner) </text> + <text_editor name="covenant_editor"> + Für dieses Grundstück fehlt der Vertrag. + </text_editor> + <text name="covenant_timestamp_text"> + Letzte Änderung am Mittwoch, den 31. Dez. 1969, 16:00:00 + </text> + <text name="region_section_lbl"> + Region: + </text> + <text name="region_name_lbl"> + Name: + </text> + <text name="region_name_text"> + leyla + </text> + <text name="region_landtype_lbl"> + Typ: + </text> + <text name="region_landtype_text"> + Mainland / Homestead + </text> + <text name="region_maturity_lbl"> + Einstufung: + </text> + <text name="region_maturity_text"> + Adult + </text> + <text name="resellable_lbl"> + Wiederverkauf: + </text> <text name="resellable_clause"> - Gekauftes Land in dieser Region kann nicht wiederverkauft werden. + Land in dieser Region kann nicht wiederverkauft werden. + </text> + <text name="changeable_lbl"> + Unterteilen: </text> <text name="changeable_clause"> - Gekauftes Land in dieser Region kann nicht zusammengelegt/geteilt werden. + Land in dieser Region kann nicht zusammengelegt/geteilt +werden. </text> - <text_editor name="covenant_editor"> - Für dieses Grundstück fehlt der Vertrag. - </text_editor> <string name="can_resell"> Gekauftes Land in dieser Region kann wiederverkauft werden. </string> @@ -145,10 +183,12 @@ Gekauftes Land in dieser Region kann nicht wiederverkauft werden. </string> <string name="can_change"> - Gekauftes Land in dieser Region kann zusammengelegt und geteilt werden. + Gekauftes Land in dieser Region kann zusammengelegt und +geteilt werden. </string> <string name="can_not_change"> - Gekauftes Land in dieser Region kann nicht zusammengelegt und geteilt werden. + Gekauftes Land in dieser Region kann nicht zusammengelegt +und geteilt werden. </string> </panel> <panel label="Objekte" name="land_objects_panel"> @@ -170,49 +210,49 @@ <text name="Primitives parcel supports:" width="200"> Von Parzelle unterstützte Primitiva: </text> - <text name="object_contrib_text" left="204" width="152"> + <text left="204" name="object_contrib_text" width="152"> [COUNT] </text> <text name="Primitives on parcel:"> Primitiva auf Parzelle: </text> - <text name="total_objects_text" left="204" width="48"> + <text left="204" name="total_objects_text" width="48"> [COUNT] </text> - <text name="Owned by parcel owner:" left="14" width="200"> + <text left="14" name="Owned by parcel owner:" width="200"> Im Eigentum des Parzellenbesitzers: </text> - <text name="owner_objects_text" left="204" width="48"> + <text left="204" name="owner_objects_text" width="48"> [COUNT] </text> <button label="Anzeigen" label_selected="Anzeigen" name="ShowOwner" right="-135" width="60"/> - <button label="Zurückgeben..." label_selected="Zurückgeben..." name="ReturnOwner..." tool_tip="Objekte an ihre Eigentümer zurückgeben." right="-10" width="119"/> - <text name="XXXXSet to group:" left="14" width="200"> - Der Gruppe übereignen: + <button label="Zurückgeben..." label_selected="Zurückgeben..." name="ReturnOwner..." right="-10" tool_tip="Objekte an ihre Eigentümer zurückgeben." width="119"/> + <text left="14" name="Set to group:"> + Der Gruppe zugeordnet: </text> - <text name="group_objects_text" left="204" width="48"> + <text left="204" name="group_objects_text" width="48"> [COUNT] </text> - <button label="Anzeigen" label_selected="Anzeigen" name="ShowGroup" width="60" right="-135" /> - <button label="Zurückgeben..." label_selected="Zurückgeben..." name="ReturnGroup..." tool_tip="Objekte an ihre Eigentümer zurückgeben." right="-10" width="119"/> - <text name="Owned by others:" left="14" width="128"> + <button label="Anzeigen" label_selected="Anzeigen" name="ShowGroup" right="-135" width="60"/> + <button label="Zurückgeben..." label_selected="Zurückgeben..." name="ReturnGroup..." right="-10" tool_tip="Objekte an ihre Eigentümer zurückgeben." width="119"/> + <text left="14" name="Owned by others:" width="128"> Im Eigentum anderer: </text> - <text name="other_objects_text" left="204" width="48"> + <text left="204" name="other_objects_text" width="48"> [COUNT] </text> <button label="Anzeigen" label_selected="Anzeigen" name="ShowOther" right="-135" width="60"/> - <button label="Zurückgeben..." label_selected="Zurückgeben..." name="ReturnOther..." tool_tip="Objekte an ihre Eigentümer zurückgeben." right="-10" width="119"/> - <text name="Selected / sat upon:" left="14" width="140"> + <button label="Zurückgeben..." label_selected="Zurückgeben..." name="ReturnOther..." right="-10" tool_tip="Objekte an ihre Eigentümer zurückgeben." width="119"/> + <text left="14" name="Selected / sat upon:" width="140"> Ausgewählt/gesessen auf: </text> - <text name="selected_objects_text" left="204" width="48"> + <text left="204" name="selected_objects_text" width="48"> [COUNT] </text> - <text name="Autoreturn" width="380" left="4" > + <text left="4" name="Autoreturn" width="380"> Objekte anderer Einwohner automatisch zurückgeben (Minuten, 0 für aus): </text> - <line_editor name="clean other time" right="-10" width="56" /> + <line_editor name="clean other time" right="-10" width="56"/> <text name="Object Owners:"> Objekteigentümer: </text> @@ -253,23 +293,109 @@ <check_box label="Sicher (kein Schaden)" name="check safe" tool_tip="Falls aktiviert, wird Land auf Option „Sicher“ eingestellt, Kampfschäden sind deaktiviert. Falls nicht aktiviert, sind Kampfschäden aktiviert."/> <check_box label="Kein Stoßen" name="PushRestrictCheck" tool_tip="Verhindert Skripte am Stoßen. Durch Aktivieren dieser Option verhindern Sie störendes Verhalten auf Ihrem Land."/> <check_box label="Ort in Suche anzeigen (30 L$/Woche) unter" name="ShowDirectoryCheck" tool_tip="Diese Parzelle in Suchergebnissen anzeigen."/> - <combo_box name="land category" left="266" width="130"> - <combo_box.item name="AnyCategory" label="Alle Kategorien"/> - <combo_box.item name="LindenLocation" label="Lindenort"/> - - <combo_box.item name="Arts&Culture" label="Kunst und Kultur"/> - <combo_box.item name="Business" label="Business"/> - <combo_box.item name="Educational" label="Bildung"/> - <combo_box.item name="Gaming" label="Spielen"/> - <combo_box.item name="Hangout" label="Treffpunkt"/> - <combo_box.item name="NewcomerFriendly" label="Anfängergerecht"/> - <combo_box.item name="Parks&Nature" label="Parks und Natur"/> - <combo_box.item name="Residential" label="Wohngebiet"/> - <combo_box.item name="Shopping" label="Shopping"/> - <combo_box.item name="Other" label="Sonstige"/> + <string name="search_enabled_tooltip"> + Diese Parzelle in Suchergebnissen anzeigen. + </string> + <string name="search_disabled_small_tooltip"> + Diese Option ist nicht aktiviert, da diese Parzelle nicht größer als 128 qm ist. +Nur große Parzellen können in der Suche aufgeführt werden. + </string> + <string name="search_disabled_permissions_tooltip"> + Diese Option ist nicht aktiviert, da Sie die Parzellenoptionen nicht verändern können. + </string> + <combo_box name="land category with adult"> + <combo_item name="AnyCategory"> + Alle Kategorien + </combo_item> + <combo_item name="LindenLocation"> + Lindenort + </combo_item> + <combo_item name="Adult"> + Adult + </combo_item> + <combo_item name="Arts&Culture"> + Kunst & Kultur + </combo_item> + <combo_item name="Business"> + Business + </combo_item> + <combo_item name="Educational"> + Bildung + </combo_item> + <combo_item name="Gaming"> + Spielen + </combo_item> + <combo_item name="Hangout"> + Treffpunkt + </combo_item> + <combo_item name="NewcomerFriendly"> + Anfängergerecht + </combo_item> + <combo_item name="Parks&Nature"> + Parks und Natur + </combo_item> + <combo_item name="Residential"> + Wohngebiet + </combo_item> + <combo_item name="Shopping"> + Shopping + </combo_item> + <combo_item name="Other"> + Sonstige + </combo_item> + </combo_box> + <combo_box left="266" name="land category" width="130"> + <combo_item name="AnyCategory"> + Alle Kategorien + </combo_item> + <combo_item name="LindenLocation"> + Lindenort + </combo_item> + <combo_item name="Arts&Culture"> + Kunst und Kultur + </combo_item> + <combo_item name="Business"> + Business + </combo_item> + <combo_item name="Educational"> + Bildung + </combo_item> + <combo_item name="Gaming"> + Spielen + </combo_item> + <combo_item name="Hangout"> + Treffpunkt + </combo_item> + <combo_item name="NewcomerFriendly"> + Anfängergerecht + </combo_item> + <combo_item name="Parks&Nature"> + Parks und Natur + </combo_item> + <combo_item name="Residential"> + Wohngebiet + </combo_item> + <combo_item name="Shopping"> + Shopping + </combo_item> + <combo_item name="Other"> + Sonstige + </combo_item> </combo_box> <button label="?" label_selected="?" name="?"/> - <check_box name="MatureCheck" /> + <check_box label="Mature-Inhalt" name="MatureCheck" tool_tip=""/> + <string name="mature_check_mature"> + Mature-Inhalt + </string> + <string name="mature_check_adult"> + Adult-Inhalt + </string> + <string name="mature_check_mature_tooltip"> + Die Informationen oder Inhalte Ihrer Parzelle sind „Mature“. + </string> + <string name="mature_check_adult_tooltip"> + Die Informationen oder Inhalte Ihrer Parzelle sind „Adult“. + </string> <text name="Snapshot:"> Foto: </text> @@ -280,15 +406,21 @@ <string name="landing_point_none"> (keiner) </string> - <button label="Festlegen" label_selected="Festlegen" name="Set" tool_tip="Legt den Landepunkt fest, an dem Besucher ankommen. Legt die Position Ihres Avatars innerhalb dieser Parzelle fest." width="70" left="234"/> - <button label="Löschen" label_selected="Löschen" name="Clear" tool_tip="Landepunkt löschen." width="70" left="312"/> + <button label="Festlegen" label_selected="Festlegen" left="234" name="Set" tool_tip="Legt den Landepunkt fest, an dem Besucher ankommen. Legt die Position Ihres Avatars innerhalb dieser Parzelle fest." width="70"/> + <button label="Löschen" label_selected="Löschen" left="312" name="Clear" tool_tip="Landepunkt löschen." width="70"/> <text name="Teleport Routing: "> Teleport-Route: </text> - <combo_box name="landing type" tool_tip="Teleport-Route -- festlegen, wie Teleports auf Ihrem Land gehandhabt werden sollen." > - <combo_box.item name="Blocked" label="Blockiert"/> - <combo_box.item name="LandingPoint" label="Landepunkt"/> - <combo_box.item name="Anywhere" label="Überall"/> + <combo_box name="landing type" tool_tip="Teleport-Route -- festlegen, wie Teleports auf Ihrem Land gehandhabt werden sollen."> + <combo_item name="Blocked"> + Blockiert + </combo_item> + <combo_item name="LandingPoint"> + Landepunkt + </combo_item> + <combo_item name="Anywhere"> + Überall + </combo_item> </combo_box> <string name="push_restrict_text"> Kein Stoßen @@ -341,21 +473,14 @@ Optionen: <text name="Sound:"> Sound: </text> - <check_box label="Umgebungssound auf diese Parzelle beschränken" name="check sound local"/> + <check_box label="Gesten- und Objektgeräusche auf diese Parzelle beschränken" name="check sound local"/> + <button label="?" label_selected="?" left="418" name="?"/> <text name="Voice settings:"> Voice: </text> - <radio_group name="parcel_voice_channel" width="310"> - <radio_item name="Estate"> - Voice-Channel des Grundstücks verwenden - </radio_item> - <radio_item name="Private"> - Einen privaten Voice-Channel verwenden - </radio_item> - <radio_item name="Disabled"> - Umgebungssound auf dieser Parzelle deaktivieren - </radio_item> - </radio_group> + <check_box label="Voice-Chat aktivieren" name="parcel_enable_voice_channel"/> + <check_box label="Voice-Chat aktivieren (vom Grundstück festgelegt)" name="parcel_enable_voice_channel_is_estate_disabled"/> + <check_box label="Voice-Chat auf diese Parzelle beschränken" name="parcel_enable_voice_channel_parcel"/> </panel> <panel label="Zugang" name="land_access_panel"> <text name="Limit access to this parcel to:"> @@ -373,8 +498,12 @@ Optionen: <check_box label="Gruppenzugang erlauben: [GROUP]" name="GroupCheck" tool_tip="Gruppe im Register „Allgemein“ festlegen."/> <check_box label="Pässe verkaufen an:" name="PassCheck" tool_tip="Ermöglicht befristeten Zugang zu dieser Parzelle"/> <combo_box name="pass_combo"> - <combo_box.item name="Anyone" label="Jeden"/> - <combo_box.item name="Group" label="Gruppe"/> + <combo_item name="Anyone"> + Jeden + </combo_item> + <combo_item name="Group"> + Gruppe + </combo_item> </combo_box> <spinner label="Preis in L$:" name="PriceSpin"/> <spinner label="Online-Zeit:" name="HoursSpin"/> diff --git a/indra/newview/skins/default/xui/de/floater_avatar_picker.xml b/indra/newview/skins/default/xui/de/floater_avatar_picker.xml index b6b879234536e82815ccef83d8c0cf6d90e61a9c..c546d91d72c6ebafd859f57e007845ec051d149d 100644 --- a/indra/newview/skins/default/xui/de/floater_avatar_picker.xml +++ b/indra/newview/skins/default/xui/de/floater_avatar_picker.xml @@ -1,17 +1,45 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="avatarpicker" title="Einwohner auswählen"> - <text name="instruct_search_resident_name" height="32" bottom="-56"> -Geben Sie einen Teil des Namens des + <tab_container name="ResidentChooserTabs"> + <panel label="Suchen" name="SearchPanel"> + <text name="InstructSearchResidentName"> + Geben Sie einen Teil des Namens des Einwohners ein: - </text> - <button label="Suchen" label_selected="Suchen" name="Find" /> - <scroll_list name="Names" height="138" bottom_delta="-144"/> - <text name="Or select their calling card:"> - Oder wählen Sie eine Visitenkarte: - </text> - <button label="Auswählen" label_selected="Auswählen" name="Select" /> - <button label="Schließen" label_selected="Schließen" name="Close" /> - <text name="NotFound"> + </text> + <line_editor bottom_delta="-36" name="Edit" /> + <button label="Suchen" label_selected="Suchen" name="Find"/> + <scroll_list height="74" name="SearchResults" bottom_delta="-79"/> + </panel> + <panel label="Visitenkarten" name="CallingCardsPanel"> + <text name="InstructSelectCallingCard"> + Wählen Sie eine Visitenkarte: + </text> + </panel> + <panel label="In meiner Nähe" name="NearMePanel"> + <text name="InstructSelectResident"> + Einwohner in der Nähe +auswählen: + </text> + <button font="SansSerifSmall" label="Liste aktualisieren" label_selected="Liste aktualisieren" name="Refresh" left_delta="10" width="105"/> + <slider label="Bereich" name="near_me_range" bottom_delta="-36"/> + <text name="meters"> + Meter + </text> + <scroll_list bottom_delta="-169" height="159" name="NearMe" /> + </panel> + </tab_container> + <button label="Auswählen" label_selected="Auswählen" name="Select"/> + <button label="Abbrechen" label_selected="Abbrechen" name="Cancel"/> + <string name="not_found"> „[TEXT]“ nicht gefunden - </text> + </string> + <string name="no_one_near"> + Niemand in der Nähe + </string> + <string name="no_results"> + Keine Ergebnisse + </string> + <string name="searching"> + Suchen... + </string> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_avatar_textures.xml b/indra/newview/skins/default/xui/de/floater_avatar_textures.xml index 13c41560b796a2e6b6d814fab1a854afa1838bca..823d6de78b82b9d1911463390e6c476130e0ae19 100644 --- a/indra/newview/skins/default/xui/de/floater_avatar_textures.xml +++ b/indra/newview/skins/default/xui/de/floater_avatar_textures.xml @@ -1,30 +1,31 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="avatar_texture_debug" title="Avatar-Texturen"> - <text name="baked_label" width="128"> + <text name="label"> Gebackene Texturen </text> <text name="composite_label" width="150"> Zusammengesetzte Texturen </text> - <texture_picker label="Kopf" name="baked_head" /> - <texture_picker label="Make-Up" name="head_bodypaint" /> - <texture_picker label="Haar" name="hair" /> - <button label="Abladen" label_selected="Abladen" name="Dump" /> - <texture_picker label="Augen" name="baked_eyes" /> - <texture_picker label="Auge" name="eye_texture" /> - <texture_picker label="Oberkörper" name="baked_upper_body" /> - <texture_picker label="Oberkörpertattoo" name="upper_bodypaint" /> - <texture_picker label="Unterhemd" name="undershirt" /> - <texture_picker label="Handschuhe" name="gloves" /> - <texture_picker label="Hemd" name="shirt" /> - <texture_picker label="Oberjacke" name="upper_jacket" /> - <texture_picker label="Unterkörper" name="baked_lower_body" /> - <texture_picker label="Unterkörpertattoo" name="lower_bodypaint" /> - <texture_picker label="Unterhose" name="underpants" /> - <texture_picker label="Socken" name="socks" /> - <texture_picker label="Schuhe" name="shoes" /> - <texture_picker label="Hose" name="pants" /> - <texture_picker label="Jacke" name="jacket" /> - <texture_picker label="Rock" name="baked_skirt" /> - <texture_picker label="Rock" name="skirt_texture" /> + <button label="Läd IDs in Konsole ab" label_selected="Abladen" name="Dump"/> + <texture_picker label="Haare" name="hair-baked"/> + <texture_picker label="Haar" name="hair"/> + <texture_picker label="Kopf" name="head-baked"/> + <texture_picker label="Make-Uup" name="head bodypaint"/> + <texture_picker label="Augen" name="eyes-baked"/> + <texture_picker label="Auge" name="iris"/> + <texture_picker label="Oberkörper" name="upper-baked"/> + <texture_picker label="Oberkörpertattoo" name="upper bodypaint"/> + <texture_picker label="Unterhemd" name="undershirt"/> + <texture_picker label="Handschuhe" name="gloves"/> + <texture_picker label="Hemd" name="shirt"/> + <texture_picker label="Oberjacke" name="upper jacket"/> + <texture_picker label="Unterkörper" name="lower-baked"/> + <texture_picker label="Unterkörper-Tätowierung" name="lower bodypaint"/> + <texture_picker label="Unterhose" name="underpants"/> + <texture_picker label="Socken" name="socks"/> + <texture_picker label="Schuhe" name="shoes"/> + <texture_picker label="Hose" name="pants"/> + <texture_picker label="Jacke" name="lower jacket"/> + <texture_picker label="Rock" name="skirt-baked"/> + <texture_picker label="Rock" name="skirt"/> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_bulk_perms.xml b/indra/newview/skins/default/xui/de/floater_bulk_perms.xml new file mode 100644 index 0000000000000000000000000000000000000000..f058a0ed96725e360875f3c4b040feb5cf09a6f9 --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_bulk_perms.xml @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floaterbulkperms" title="Mehrere Inhaltsberechtigungen ändern"> + <text name="applyto"> + Inhaltsarten + </text> + <check_box label="Animation" name="check_animation"/> + <check_box label="Körperteile" name="check_bodypart"/> + <check_box label="Kleidung" name="check_clothing"/> + <check_box label="Gesten" name="check_gesture"/> + <check_box label="Landmarken" name="check_landmark"/> + <check_box label="Notizkarten" name="check_notecard"/> + <check_box label="Objekte" name="check_object"/> + <check_box label="Skripts" name="check_script"/> + <check_box label="Sounds" name="check_sound"/> + <check_box label="Texturen" name="check_texture"/> + <button label="Alle auswählen" label_selected="Alle" name="check_all"/> + <button label="Keine" label_selected="Keine" name="check_none"/> + <text name="newperms"> + Neue Berechtigungen + </text> + <check_box label="Mit Gruppe teilen" name="share_with_group"/> + <check_box label="Kopieren allen erlauben" name="everyone_copy"/> + <text name="NextOwnerLabel"> + Nächster Eigentümer kann: + </text> + <check_box label="Bearbeiten" name="next_owner_modify"/> + <check_box label="Kopieren" name="next_owner_copy"/> + <check_box label="Verkaufen/Weggeben" name="next_owner_transfer"/> + <button label="Hilfe" name="help"/> + <button label="Übernehmen" name="apply"/> + <button label="Schließen" name="close"/> + <string name="nothing_to_modify_text"> + Auswahl enthält keinen Inhalt, der bearbeitet werden kann. + </string> + <string name="status_text"> + Berechtigungen werden eingestellt auf [NAME] + </string> + <string name="start_text"> + Start: Anforderung auf Änderung der Berechtigung... + </string> + <string name="done_text"> + Ende: Anforderung auf Änderung der Berechtigung. + </string> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_buy_land.xml b/indra/newview/skins/default/xui/de/floater_buy_land.xml index 57d573e6fdda3776653caef42f681b750f671a58..e0abf8fae9789acead658e3ab9b840dd3091745f 100644 --- a/indra/newview/skins/default/xui/de/floater_buy_land.xml +++ b/indra/newview/skins/default/xui/de/floater_buy_land.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="buy land" title="Land kaufen"> <text name="region_name_label"> Region: @@ -6,6 +6,12 @@ <text left="580" name="region_name_text"> (unbekannt) </text> + <text name="region_type_label"> + Typ: + </text> + <text left="580" name="region_type_text"> + (unbekannt) + </text> <text name="estate_name_label"> Grundstück: </text> @@ -22,18 +28,19 @@ Gekauftes Land in dieser Region: </text> <text name="resellable_clause"> - Gekauftes Land in dieser Region kann oder kann nicht wiederverkauft werden. + Wiederverkauf möglich oder nicht möglich. </text> <text name="changeable_clause"> - kann oder kann nicht zusammengelegt/unterteilt werden. + Darft oder darf nicht zusammengelegt/unterteilt werden. </text> <text name="covenant_text"> Sie müssen dem Grundstücksvertrag zustimmen: </text> + <text left="470" name="covenant_timestamp_text"/> <text_editor name="covenant_editor"> Wird geladen... </text_editor> - <check_box label="Ich stimme dem obigen Vertrag zu." name="agree_covenant" /> + <check_box label="Ich stimme dem obigen Vertrag zu." name="agree_covenant"/> <text name="info_parcel_label"> Parzelle: </text> @@ -44,21 +51,23 @@ Größe: </text> <text name="info_size"> - 1024 qm + 1024 qm. </text> <text name="info_price_label"> Preis: </text> <text name="info_price"> - 1500 L$, Objekte eingeschlossen + 1500 L$ +(L$ 1,1 L$/qm) +Objekte im Verkauf eingeschlossen </text> - <text name="info_action" width="275"> + <text name="info_action"> Bei Landkauf: </text> <text name="error_message"> Irgendetwas stimmt nicht. </text> - <button label="Gehe zu Website" name="error_web" /> + <button label="Gehe zu Website" name="error_web"/> <text name="account_action"> Macht Sie zum Premium-Mitglied. </text> @@ -74,7 +83,7 @@ Erhöhen Sie Ihre monatlichen Landnutzungsgebühren auf 40 US$/month. </text> <text name="land_use_reason"> - Sie besitzen 1.309 qm Land. + Sie besitzen 1309 qm Land. Diese Parzelle ist 512 qm groß. </text> <text name="purchase_action"> @@ -95,127 +104,134 @@ Diese Parzelle ist 512 qm groß. <text name="currency_balance"> Sie haben 2.100 L$. </text> - <check_box label="[AMOUNT] Quadratmeter des Beitrags von Gruppe nehmen." - name="remove_contribution" /> - <button label="Kaufen" name="buy_btn" /> - <button label="Abbrechen" name="cancel_btn" /> - <text name="can_resell"> + <check_box label="[AMOUNT] Quadratmeter des Beitrags von Gruppe nehmen." name="remove_contribution"/> + <button label="Kaufen" name="buy_btn"/> + <button label="Abbrechen" name="cancel_btn"/> + <string name="can_resell"> Verkauf möglich. - </text> - <text name="can_not_resell"> + </string> + <string name="can_not_resell"> Verkauf nicht möglich. - </text> - <text name="can_change"> + </string> + <string name="can_change"> Zusammenlegen/unterteilen möglich. - </text> - <text name="can_not_change"> + </string> + <string name="can_not_change"> Zusammenlegen/unterteilen nicht möglich. - </text> - <text name="cant_buy_for_group"> + </string> + <string name="cant_buy_for_group"> Sie sind nicht berechtigt, Land für die aktive Gruppe zu kaufen. - </text> - <text name="no_land_selected"> + </string> + <string name="no_land_selected"> Kein Land ausgewählt. - </text> - <text name="multiple_parcels_selected"> + </string> + <string name="multiple_parcels_selected"> Mehrere unterschiedliche Parzellen ausgewählt. Verkleinern Sie Ihre Auswahl. - </text> - <text name="no_permission"> + </string> + <string name="no_permission"> Sie sind nicht berechtigt, Land für die aktive Gruppe zu kaufen. - </text> - <text name="parcel_not_for_sale"> + </string> + <string name="parcel_not_for_sale"> Die ausgewählte Parzelle steht nicht zum Verkauf. - </text> - <text name="group_already_owns"> + </string> + <string name="group_already_owns"> Die Parzelle befindet sich bereits in Gruppenbesitz. - </text> - <text name="you_already_own"> + </string> + <string name="you_already_own"> Die Parzelle gehört Ihnen bereits. - </text> - <text name="set_to_sell_to_other"> + </string> + <string name="set_to_sell_to_other"> Die ausgewählte Parzelle steht zum Verkauf an Dritte. - </text> - <text name="no_public_land"> + </string> + <string name="no_public_land"> Das ausgewählte Land beinhaltet kein öffentliches Land. - </text> - <text name="not_owned_by_you"> + </string> + <string name="not_owned_by_you"> Sie haben Land ausgewählt, das einer anderen Person gehört. Verkleinern Sie Ihre Auswahl. - </text> - <text name="processing"> + </string> + <string name="processing"> Kauf wird abgewickelt... (Dies kann 1 bis 2 Minuten dauern.) - </text> - <text name="fetching_error"> + </string> + <string name="fetching_error"> Fehler bei Abfrage der Landkauf-Informationen. - </text> - <text name="buying_will"> + </string> + <string name="buying_will"> Bei Landkauf: - </text> - <text name="buying_for_group"> - Kaufe Land für Gruppe: - </text> - <text name="cannot_buy_now"> + </string> + <string name="buying_for_group"> + Landkauf für Gruppe: + </string> + <string name="cannot_buy_now"> Kaufen jetzt nicht möglich: - </text> - <text name="not_for_sale"> + </string> + <string name="not_for_sale"> Nicht zu verkaufen: - </text> - <text name="none_needed"> + </string> + <string name="none_needed"> nicht benötigt - </text> - <text name="must_upgrade"> + </string> + <string name="must_upgrade"> Sie müssen Ihr Konto upgraden, um Land kaufen zu können. - </text> - <text name="cant_own_land"> + </string> + <string name="cant_own_land"> Mit Ihrem Konto können Sie Land kaufen. - </text> - <text name="land_holdings"> + </string> + <string name="land_holdings"> Sie besitzen [BUYER] qm Land. - </text> - <text name="pay_to_for_land"> + </string> + <string name="pay_to_for_land"> [SELLER] [AMOUNT] L$ für das Land bezahlen - </text> - <text name="buy_for_US"> - [AMOUNT] L$ für ca. [AMOUNT2] US$ kaufen , - </text> - <text name="parcel_meters"> + </string> + <string name="buy_for_US"> + [AMOUNT] L$ für circa [AMOUNT2] US$ kaufen, + </string> + <string name="parcel_meters"> Diese Parzelle ist [AMOUNT] qm groß. - </text> - <text name="premium_land"> - Für dieses Land gilt ein Aufschlag. Es wird mit [AMOUNT] qm angesetzt. - </text> - <text name="discounted_land"> - Für dieses Land gilt ein Rabatt. Es wird mit [AMOUNT] qm angesetzt. - </text> - <text name="meters_supports_object"> - [AMOUNT] qm + </string> + <string name="premium_land"> + Dieses Land ist eine Premium-Immobilie. Es wird mit [AMOUNT] qm angesetzt. + </string> + <string name="discounted_land"> + Dieses Land ist im Angebot. Es wird mit [AMOUNT] qm angesetzt. + </string> + <string name="meters_supports_object"> + [AMOUNT] qm. unterstützt [AMOUNT2] Objekte - </text> - <text name="sold_with_objects"> + </string> + <string name="sold_with_objects"> mit Objekten verkauft - </text> - <text name="insufficient_land_credits"> - Die Gruppe [GROUP] benötigt ausreichende Landnutzungsrechte für diese Parzelle, um den Kauf abzuschließen. - </text> - <text name="have_enough_lindens"> + </string> + <string name="sold_without_objects"> + Objekte nicht im Verkauf mit eingeschlossen + </string> + <string name="info_price_string"> + [PRICE] L$ +([PRICE_PER_SQM] L$/qm) +[SOLD_WITH_OBJECTS] + </string> + <string name="insufficient_land_credits"> + Die Gruppe [GROUP] benötigt ausreichende gespendete Landnutzungsrechte, um die Parzelle abzudecken, bevor der Kauf abgeschlossen werden kann. + </string> + <string name="have_enough_lindens"> Sie haben [AMOUNT] L$, genug zum Kauf dieses Landes. - </text> - <text name="not_enough_lindens"> + </string> + <string name="not_enough_lindens"> Sie haben nur [AMOUNT] L$, brauchen aber mindestens [AMOUNT2] L$. - </text> - <text name="balance_left"> + </string> + <string name="balance_left"> Nach dem Einkauf verbleiben Ihnen noch [AMOUNT] L$. - </text> - <text name="balance_needed"> + </string> + <string name="balance_needed"> Für dieses Land müssen Sie mindestens [AMOUNT] L$ kaufen. - </text> - <text name="no_parcel_selected"> + </string> + <string name="no_parcel_selected"> (keine Parzelle ausgewählt) - </text> - <text name="buy_currency"> + </string> + <string name="buy_currency"> [LINDENS] L$ für ca. [USD] US$ kaufen - </text> + </string> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_customize.xml b/indra/newview/skins/default/xui/de/floater_customize.xml index 7ceb7bd3ae0d16e175831a880936c9084f1e3c78..b27e5d22b4fbe00a5a21a3d77a115ff1b4fd79d2 100644 --- a/indra/newview/skins/default/xui/de/floater_customize.xml +++ b/indra/newview/skins/default/xui/de/floater_customize.xml @@ -1,534 +1,484 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater customize" title="Aussehen"> <tab_container name="customize tab container"> - <panel label="Körperteile" /> - <panel label="Körperteile" name="body_parts_placeholder" /> + <panel label="Körperteile" name="body_parts_placeholder"/> <panel label="Form" name="Shape"> - <button font="SansSerifSmall" label="Zurücksetzen" label_selected="Zurücksetzen" - name="Revert" /> - <button label="Körper" label_selected="Körper" name="Body" /> - <button label="Kopf" label_selected="Kopf" name="Head" /> - <button label="Augen" label_selected="Augen" name="Eyes" /> - <button label="Ohren" label_selected="Ohren" name="Ears" /> - <button label="Nase" label_selected="Nase" name="Nose" /> - <button label="Mund" label_selected="Mund" name="Mouth" /> - <button label="Kinn" label_selected="Kinn" name="Chin" /> - <button label="Oberkörper" label_selected="Oberkörper" name="Torso" /> - <button label="Beine" label_selected="Beine" name="Legs" /> + <button font="SansSerifSmall" label="Zurücksetzen" label_selected="Zurücksetzen" name="Revert"/> + <button label="Körper" label_selected="Körper" name="Body"/> + <button label="Kopf" label_selected="Kopf" name="Head"/> + <button label="Augen" label_selected="Augen" name="Eyes"/> + <button label="Ohren" label_selected="Ohren" name="Ears"/> + <button label="Nase" label_selected="Nase" name="Nose"/> + <button label="Mund" label_selected="Mund" name="Mouth"/> + <button label="Kinn" label_selected="Kinn" name="Chin"/> + <button label="Oberkörper" label_selected="Oberkörper" name="Torso"/> + <button label="Beine" label_selected="Beine" name="Legs"/> <radio_group name="sex radio"> - <radio_item type="string" length="1" name="radio"> + <radio_item length="1" name="radio" type="string"> Weiblich </radio_item> - <radio_item type="string" length="1" name="radio2"> + <radio_item length="1" name="radio2" type="string"> Männlich </radio_item> </radio_group> - <button label="Zufällig" label_selected="Zufällig" name="Randomize" /> - <text type="string" length="1" name="title"> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: bearbeiten nicht möglich </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: wird geladen... </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: nicht getragen </text> - <text type="string" length="1" name="path"> + <text length="1" name="path" type="string"> In [PATH] </text> - <text type="string" length="1" name="not worn instructions"> + <text length="1" name="not worn instructions" type="string"> Ziehen Sie eine Körperform aus dem Inventar auf Ihren Avatar, um sie zu tragen. Sie können auch eine neue Körperform erstellen und diese anziehen. </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. </text> - <button label="Neue Form/Gestalt" label_selected="Neue Form/Gestalt" name="Create New" /> - <button font="SansSerifSmall" label="Ausziehen" label_selected="Ausziehen" left="19" - name="Take Off" /> - <button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" - name="Save" /> - <button font="SansSerifSmall" label="Speichern unter" label_selected="Speichern unter" - left="194" name="Save As" width="100" /> + <text name="Item Action Label" right="100"> + Form: + </text> + <button label="Neue Form/Gestalt" label_selected="Neue Form/Gestalt" name="Create New"/> + <button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" name="Save"/> + <button font="SansSerifSmall" label="Speichern unter..." label_selected="Speichern unter..." left="194" name="Save As" width="105"/> </panel> <panel label="Haut" name="Skin"> - <button label="Hautfarbe" label_selected="Hautfarbe" left="2" name="Skin Color" - width="92" /> - <button label="Gesichtsdetails" label_selected="Gesichtsdetails" left="2" - name="Face Detail" width="92" /> - <button label="Make-Uup" label_selected="Make-Uup" left="2" name="Makeup" width="92" /> - <button label="Körperdetails" label_selected="Körperdetails" left="2" - name="Body Detail" width="92" /> - <text type="string" length="1" name="title"> + <button label="Hautfarbe" label_selected="Hautfarbe" left="2" name="Skin Color" width="92"/> + <button label="Gesichtsdetails" label_selected="Gesichtsdetails" left="2" name="Face Detail" width="92"/> + <button label="Make-Uup" label_selected="Make-Uup" left="2" name="Makeup" width="92"/> + <button label="Körperdetails" label_selected="Körperdetails" left="2" name="Body Detail" width="92"/> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: bearbeiten nicht möglich </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: wird geladen... </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: nicht getragen </text> - <text type="string" length="1" name="path"> + <text length="1" name="path" type="string"> In [PATH] </text> - <text type="string" length="1" name="not worn instructions"> + <text length="1" name="not worn instructions" type="string"> Ziehen Sie eine Haut aus dem Inventar auf Ihren Avatar, um sie zu tragen. Sie können auch eine neue Haut erstellen und diese anziehen. </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. </text> - <texture_picker label="Kopftattoo" name="Head Tattoos" - tool_tip="Klicken Sie hier, um ein Bild auszuwählen" /> - <texture_picker label="Obere Tattoos" name="Upper Tattoos" - tool_tip="Klicken Sie hier, um ein Bild auszuwählen" /> - <texture_picker label="Untere Tattoos" name="Lower Tattoos" - tool_tip="Klicken Sie hier, um ein Bild auszuwählen" /> - <button label="Zufällig" label_selected="Zufällig" left="2" name="Randomize" - width="92" /> - <button label="Neue Haut" label_selected="Neue Haut" name="Create New" /> - <button font="SansSerifSmall" label="Ausziehen" label_selected="Ausziehen" left="19" - name="Take Off" /> - <button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" - name="Save" /> - <button font="SansSerifSmall" label="Speichern unter" label_selected="Speichern unter" - left="194" name="Save As" width="100" /> - <button font="SansSerifSmall" label="Zurücksetzen" label_selected="Zurücksetzen" - name="Revert" /> + <text name="Item Action Label" right="100"> + Haut: + </text> + <texture_picker label="Kopftattoo" name="Head Tattoos" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/> + <texture_picker label="Obere Tattoos" name="Upper Tattoos" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/> + <texture_picker label="Untere Tattoos" name="Lower Tattoos" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/> + <button label="Neue Haut" label_selected="Neue Haut" name="Create New"/> + <button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" name="Save"/> + <button font="SansSerifSmall" label="Speichern unter..." label_selected="Speichern unter..." left="194" name="Save As" width="105"/> + <button font="SansSerifSmall" label="Zurücksetzen" label_selected="Zurücksetzen" name="Revert"/> </panel> <panel label="Haar" name="Hair"> - <button label="Farbe" label_selected="Farbe" name="Color" /> - <button label="Stil" label_selected="Stil" name="Style" /> - <button label="Augenbrauen" label_selected="Augenbrauen" name="Eyebrows" /> - <button label="Gesichtshaar" label_selected="Gesichtshaar" name="Facial" /> - <text type="string" length="1" name="title"> + <button label="Farbe" label_selected="Farbe" name="Color"/> + <button label="Stil" label_selected="Stil" name="Style"/> + <button label="Augenbrauen" label_selected="Augenbrauen" name="Eyebrows"/> + <button label="Gesichtshaar" label_selected="Gesichtshaar" name="Facial"/> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: bearbeiten nicht möglich </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: wird geladen... </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: nicht getragen </text> - <text type="string" length="1" name="path"> + <text length="1" name="path" type="string"> In [PATH] </text> - <text type="string" length="1" name="not worn instructions"> + <text length="1" name="not worn instructions" type="string"> Ziehen Sie Haare aus dem Inventar auf Ihren Avatar, um sie zu tragen. Sie können auch neue Haare erstellen und diese anziehen. </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. </text> - <texture_picker label="Textur" name="Texture" - tool_tip="Klicken Sie hier, um ein Bild auszuwählen" /> - <button label="Zufällig" label_selected="Zufällig" name="Randomize" /> - <button label="Neue Haare" label_selected="Neue Haare" name="Create New" /> - <button font="SansSerifSmall" label="Ausziehen" label_selected="Ausziehen" left="19" - name="Take Off" /> - <button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" - name="Save" /> - <button font="SansSerifSmall" label="Speichern unter" label_selected="Speichern unter" - left="194" name="Save As" width="100" /> - <button font="SansSerifSmall" label="Zurücksetzen" label_selected="Zurücksetzen" - name="Revert" /> + <text name="Item Action Label" right="100"> + Haare: + </text> + <texture_picker label="Textur" name="Texture" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/> + <button label="Neue Haare" label_selected="Neue Haare" name="Create New"/> + <button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" name="Save"/> + <button font="SansSerifSmall" label="Speichern unter..." label_selected="Speichern unter..." left="194" name="Save As" width="105"/> + <button font="SansSerifSmall" label="Zurücksetzen" label_selected="Zurücksetzen" name="Revert"/> </panel> <panel label="Augen" name="Eyes"> - <text type="string" length="1" name="title"> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: bearbeiten nicht möglich </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: wird geladen... </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: nicht getragen </text> - <text type="string" length="1" name="path"> + <text length="1" name="path" type="string"> In [PATH] </text> - <text type="string" length="1" name="not worn instructions"> + <text length="1" name="not worn instructions" type="string"> Ziehen Sie Augen aus dem Inventar auf Ihren Avatar, um sie zu tragen. Sie können auch neue Augen erstellen und diese anziehen. </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. </text> - <texture_picker label="Iris" name="Iris" tool_tip="Klicken Sie hier, um ein Bild auszuwählen" /> - <button label="Zufällig" label_selected="Zufällig" name="Randomize" /> - <button label="Neue Augen" label_selected="Neue Augen" name="Create New" /> - <button font="SansSerifSmall" label="Ausziehen" label_selected="Ausziehen" left="19" - name="Take Off" /> - <button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" - name="Save" /> - <button font="SansSerifSmall" label="Speichern unter" label_selected="Speichern unter" - left="194" name="Save As" width="100" /> - <button font="SansSerifSmall" label="Zurücksetzen" label_selected="Zurücksetzen" - name="Revert" /> + <text name="Item Action Label" right="100"> + Augen: + </text> + <texture_picker label="Iris" name="Iris" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/> + <button label="Neue Augen" label_selected="Neue Augen" name="Create New"/> + <button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" name="Save"/> + <button font="SansSerifSmall" label="Speichern unter..." label_selected="Speichern unter..." left="194" name="Save As" width="105"/> + <button font="SansSerifSmall" label="Zurücksetzen" label_selected="Zurücksetzen" name="Revert"/> </panel> - <panel label="Kleidung" /> - <panel label="Kleidung" name="clothes_placeholder" /> + <panel label="Kleidung" name="clothes_placeholder"/> <panel label="Hemd" name="Shirt"> - <texture_picker label="Stoff" name="Fabric" - tool_tip="Klicken Sie hier, um ein Bild auszuwählen" /> - <color_swatch label="Farbe/Ton" name="Color/Tint" - tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen" /> - <button label="Neues Hemd" label_selected="Neues Hemd" name="Create New" /> - <button font="SansSerifSmall" label="Ausziehen" label_selected="Ausziehen" left="19" - name="Take Off" /> - <button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" - name="Save" /> - <button font="SansSerifSmall" label="Speichern unter" label_selected="Speichern unter" - left="194" name="Save As" width="100" /> - <button font="SansSerifSmall" label="Zurücksetzen" label_selected="Zurücksetzen" - name="Revert" /> - <text type="string" length="1" name="title"> + <texture_picker label="Stoff" name="Fabric" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/> + <color_swatch label="Farbe/Ton" name="Color/Tint" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/> + <button label="Neues Hemd" label_selected="Neues Hemd" name="Create New"/> + <button font="SansSerifSmall" label="Ausziehen" label_selected="Ausziehen" name="Take Off"/> + <button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" name="Save"/> + <button font="SansSerifSmall" label="Speichern unter..." label_selected="Speichern unter..." left="194" name="Save As" width="105"/> + <button font="SansSerifSmall" label="Zurücksetzen" label_selected="Zurücksetzen" name="Revert"/> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: bearbeiten nicht möglich </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: wird geladen... </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: nicht getragen </text> - <text type="string" length="1" name="path"> + <text length="1" name="path" type="string"> In [PATH] </text> - <text type="string" length="1" name="not worn instructions"> + <text length="1" name="not worn instructions" type="string"> Ziehen Sie ein Hemd aus dem Inventar auf Ihren Avatar, um es zu tragen. Sie können auch ein neues Hemd erstellen und dieses anziehen. </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. </text> + <text name="Item Action Label" right="100"> + Hemd: + </text> </panel> <panel label="Hose" name="Pants"> - <texture_picker label="Stoff" name="Fabric" - tool_tip="Klicken Sie hier, um ein Bild auszuwählen" /> - <color_swatch label="Farbe/Ton" name="Color/Tint" - tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen" /> - <button label="Neue Hose" label_selected="Neue Hose" name="Create New" /> - <button font="SansSerifSmall" label="Ausziehen" label_selected="Ausziehen" left="19" - name="Take Off" /> - <button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" - name="Save" /> - <button font="SansSerifSmall" label="Speichern unter" label_selected="Speichern unter" - left="194" name="Save As" width="100" /> - <button font="SansSerifSmall" label="Zurücksetzen" label_selected="Zurücksetzen" - name="Revert" /> - <text type="string" length="1" name="title"> + <texture_picker label="Stoff" name="Fabric" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/> + <color_swatch label="Farbe/Ton" name="Color/Tint" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/> + <button label="Neue Hose" label_selected="Neue Hose" name="Create New"/> + <button font="SansSerifSmall" label="Ausziehen" label_selected="Ausziehen" name="Take Off"/> + <button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" name="Save"/> + <button font="SansSerifSmall" label="Speichern unter..." label_selected="Speichern unter..." left="194" name="Save As" width="105"/> + <button font="SansSerifSmall" label="Zurücksetzen" label_selected="Zurücksetzen" name="Revert"/> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: bearbeiten nicht möglich </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: wird geladen... </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: nicht getragen </text> - <text type="string" length="1" name="path"> + <text length="1" name="path" type="string"> In [PATH] </text> - <text type="string" length="1" name="not worn instructions"> + <text length="1" name="not worn instructions" type="string"> Ziehen Sie eine Hose aus dem Inventar auf Ihren Avatar, um sie zu tragen. Sie können auch eine neue Hose erstellen und diese anziehen. </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. </text> + <text name="Item Action Label" right="100"> + Hose: + </text> </panel> <panel label="Schuhe" name="Shoes"> - <text type="string" length="1" name="title"> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: bearbeiten nicht möglich </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: wird geladen... </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: nicht getragen </text> - <text type="string" length="1" name="path"> + <text length="1" name="path" type="string"> In [PATH] </text> - <text type="string" length="1" name="not worn instructions"> + <text length="1" name="not worn instructions" type="string"> Ziehen Sie Schuhe aus dem Inventar auf Ihren Avatar, um sie zu tragen. Sie können auch neue Schuhe erstellen und diese anziehen. </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. </text> - <texture_picker label="Stoff" name="Fabric" - tool_tip="Klicken Sie hier, um ein Bild auszuwählen" /> - <color_swatch label="Farbe/Ton" name="Color/Tint" - tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen" /> - <button label="Neue Schuhe" label_selected="Neue Schuhe" name="Create New" /> - <button font="SansSerifSmall" label="Ausziehen" label_selected="Ausziehen" left="19" - name="Take Off" /> - <button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" - name="Save" /> - <button font="SansSerifSmall" label="Speichern unter" label_selected="Speichern unter" - left="194" name="Save As" width="100" /> - <button font="SansSerifSmall" label="Zurücksetzen" label_selected="Zurücksetzen" - name="Revert" /> + <text name="Item Action Label" right="100"> + Schuhe: + </text> + <texture_picker label="Stoff" name="Fabric" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/> + <color_swatch label="Farbe/Ton" name="Color/Tint" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/> + <button label="Neue Schuhe" label_selected="Neue Schuhe" name="Create New"/> + <button font="SansSerifSmall" label="Ausziehen" label_selected="Ausziehen" name="Take Off"/> + <button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" name="Save"/> + <button font="SansSerifSmall" label="Speichern unter..." label_selected="Speichern unter..." left="194" name="Save As" width="105"/> + <button font="SansSerifSmall" label="Zurücksetzen" label_selected="Zurücksetzen" name="Revert"/> </panel> <panel label="Socken" name="Socks"> - <text type="string" length="1" name="title"> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: bearbeiten nicht möglich </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: wird geladen... </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: nicht getragen </text> - <text type="string" length="1" name="path"> + <text length="1" name="path" type="string"> In [PATH] </text> - <text type="string" length="1" name="not worn instructions"> + <text length="1" name="not worn instructions" type="string"> Ziehen Sie Socken aus dem Inventar auf Ihren Avatar, um sie zu tragen. Sie können auch neue Socken erstellen und diese anziehen. </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. </text> - <texture_picker label="Stoff" name="Fabric" - tool_tip="Klicken Sie hier, um ein Bild auszuwählen" /> - <color_swatch label="Farbe/Ton" name="Color/Tint" - tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen" /> - <button label="Neue Socken" label_selected="Neue Socken" name="Create New" /> - <button font="SansSerifSmall" label="Ausziehen" label_selected="Ausziehen" left="19" - name="Take Off" /> - <button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" - name="Save" /> - <button font="SansSerifSmall" label="Speichern unter" label_selected="Speichern unter" - left="194" name="Save As" width="100" /> - <button font="SansSerifSmall" label="Zurücksetzen" label_selected="Zurücksetzen" - name="Revert" /> + <text name="Item Action Label" right="100"> + Socken: + </text> + <texture_picker label="Stoff" name="Fabric" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/> + <color_swatch label="Farbe/Ton" name="Color/Tint" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/> + <button label="Neue Socken" label_selected="Neue Socken" name="Create New"/> + <button font="SansSerifSmall" label="Ausziehen" label_selected="Ausziehen" name="Take Off"/> + <button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" name="Save"/> + <button font="SansSerifSmall" label="Speichern unter..." label_selected="Speichern unter..." left="194" name="Save As" width="105"/> + <button font="SansSerifSmall" label="Zurücksetzen" label_selected="Zurücksetzen" name="Revert"/> </panel> <panel label="Jacke" name="Jacket"> - <text type="string" length="1" name="title"> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: bearbeiten nicht möglich </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: wird geladen... </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: nicht getragen </text> - <text type="string" length="1" name="path"> + <text length="1" name="path" type="string"> In [PATH] </text> - <text type="string" length="1" name="not worn instructions"> + <text length="1" name="not worn instructions" type="string"> Ziehen Sie eine Jacke aus dem Inventar auf Ihren Avatar, um sie zu tragen. Sie können auch eine neue Jacke erstellen und diese anziehen. </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. </text> - <texture_picker label="Oberstoff" name="Upper Fabric" - tool_tip="Klicken Sie hier, um ein Bild auszuwählen" /> - <texture_picker label="Unterstoff" name="Lower Fabric" - tool_tip="Klicken Sie hier, um ein Bild auszuwählen" /> - <color_swatch label="Farbe/Ton" name="Color/Tint" - tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen" /> - <button label="Neue Jacke" label_selected="Neue Jacke" name="Create New" /> - <button font="SansSerifSmall" label="Ausziehen" label_selected="Ausziehen" left="19" - name="Take Off" /> - <button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" - name="Save" /> - <button font="SansSerifSmall" label="Speichern unter" label_selected="Speichern unter" - left="194" name="Save As" width="100" /> - <button font="SansSerifSmall" label="Zurücksetzen" label_selected="Zurücksetzen" - name="Revert" /> + <text name="Item Action Label" right="100"> + Jacke: + </text> + <texture_picker label="Oberstoff" name="Upper Fabric" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/> + <texture_picker label="Unterstoff" name="Lower Fabric" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/> + <color_swatch label="Farbe/Ton" name="Color/Tint" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/> + <button label="Neue Jacke" label_selected="Neue Jacke" name="Create New"/> + <button font="SansSerifSmall" label="Ausziehen" label_selected="Ausziehen" name="Take Off"/> + <button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" name="Save"/> + <button font="SansSerifSmall" label="Speichern unter..." label_selected="Speichern unter..." left="194" name="Save As" width="105"/> + <button font="SansSerifSmall" label="Zurücksetzen" label_selected="Zurücksetzen" name="Revert"/> </panel> <panel label="Handschuhe" name="Gloves"> - <text type="string" length="1" name="title"> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: bearbeiten nicht möglich </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: wird geladen... </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: nicht getragen </text> - <text type="string" length="1" name="path"> + <text length="1" name="path" type="string"> In [PATH] </text> - <text type="string" length="1" name="not worn instructions"> + <text length="1" name="not worn instructions" type="string"> Ziehen Sie Handschuhe aus dem Inventar auf Ihren Avatar, um sie zu tragen. Sie können auch neue Handschuhe erstellen und diese anziehen. </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. </text> - <texture_picker label="Stoff" name="Fabric" - tool_tip="Klicken Sie hier, um ein Bild auszuwählen" /> - <color_swatch label="Farbe/Ton" name="Color/Tint" - tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen" /> - <button label="Neue Handschuhe" label_selected="Neue Handschuhe" name="Create New" /> - <button font="SansSerifSmall" label="Ausziehen" label_selected="Ausziehen" left="19" - name="Take Off" /> - <button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" - name="Save" /> - <button font="SansSerifSmall" label="Speichern unter" label_selected="Speichern unter" - left="194" name="Save As" width="100" /> - <button font="SansSerifSmall" label="Zurücksetzen" label_selected="Zurücksetzen" - name="Revert" /> + <text name="Item Action Label" right="100"> + Handschuhe: + </text> + <texture_picker label="Stoff" name="Fabric" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/> + <color_swatch label="Farbe/Ton" name="Color/Tint" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/> + <button label="Neue Handschuhe" label_selected="Neue Handschuhe" name="Create New"/> + <button font="SansSerifSmall" label="Ausziehen" label_selected="Ausziehen" name="Take Off"/> + <button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" name="Save"/> + <button font="SansSerifSmall" label="Speichern unter..." label_selected="Speichern unter..." left="194" name="Save As" width="105"/> + <button font="SansSerifSmall" label="Zurücksetzen" label_selected="Zurücksetzen" name="Revert"/> </panel> <panel label="Unterhemd" name="Undershirt"> - <text type="string" length="1" name="title"> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: bearbeiten nicht möglich </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: wird geladen... </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: nicht getragen </text> - <text type="string" length="1" name="path"> + <text length="1" name="path" type="string"> In [PATH] </text> - <text type="string" length="1" name="not worn instructions"> + <text length="1" name="not worn instructions" type="string"> Ziehen Sie ein Unterhemd aus dem Inventar auf Ihren Avatar, um es zu tragen. Sie können auch ein neues Unterhemd erstellen und dieses anziehen. </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. </text> - <texture_picker label="Stoff" name="Fabric" - tool_tip="Klicken Sie hier, um ein Bild auszuwählen" /> - <color_swatch label="Farbe/Ton" name="Color/Tint" - tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen" /> - <button label="Neues Unterhemd" label_selected="Neues Unterhemd" name="Create New" /> - <button font="SansSerifSmall" label="Ausziehen" label_selected="Ausziehen" left="19" - name="Take Off" /> - <button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" - name="Save" /> - <button font="SansSerifSmall" label="Speichern unter" label_selected="Speichern unter" - left="194" name="Save As" width="100" /> - <button font="SansSerifSmall" label="Zurücksetzen" label_selected="Zurücksetzen" - name="Revert" /> + <text name="Item Action Label" right="100"> + Unterhemd: + </text> + <texture_picker label="Stoff" name="Fabric" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/> + <color_swatch label="Farbe/Ton" name="Color/Tint" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/> + <button label="Neues Unterhemd" label_selected="Neues Unterhemd" name="Create New"/> + <button font="SansSerifSmall" label="Ausziehen" label_selected="Ausziehen" name="Take Off"/> + <button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" name="Save"/> + <button font="SansSerifSmall" label="Speichern unter..." label_selected="Speichern unter..." left="194" name="Save As" width="105"/> + <button font="SansSerifSmall" label="Zurücksetzen" label_selected="Zurücksetzen" name="Revert"/> </panel> <panel label="Unterhose" name="Underpants"> - <text type="string" length="1" name="title"> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: bearbeiten nicht möglich </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: wird geladen... </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: nicht getragen </text> - <text type="string" length="1" name="path"> + <text length="1" name="path" type="string"> In [PATH] </text> - <text type="string" length="1" name="not worn instructions"> + <text length="1" name="not worn instructions" type="string"> Ziehen Sie eine Unterhose aus dem Inventar auf Ihren Avatar, um sie zu tragen. Sie können auch eine neue Unterhose erstellen und diese anziehen. </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. </text> - <texture_picker label="Stoff" name="Fabric" - tool_tip="Klicken Sie hier, um ein Bild auszuwählen" /> - <color_swatch label="Farbe/Ton" name="Color/Tint" - tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen" /> - <button label="Neue Unterhose" label_selected="Neue Unterhose" name="Create New" /> - <button font="SansSerifSmall" label="Ausziehen" label_selected="Ausziehen" left="19" - name="Take Off" /> - <button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" - name="Save" /> - <button font="SansSerifSmall" label="Speichern unter" label_selected="Speichern unter" - left="194" name="Save As" width="100" /> - <button font="SansSerifSmall" label="Zurücksetzen" label_selected="Zurücksetzen" - name="Revert" /> + <text name="Item Action Label" right="100"> + Unterhose: + </text> + <texture_picker label="Stoff" name="Fabric" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/> + <color_swatch label="Farbe/Ton" name="Color/Tint" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/> + <button label="Neue Unterhose" label_selected="Neue Unterhose" name="Create New"/> + <button font="SansSerifSmall" label="Ausziehen" label_selected="Ausziehen" name="Take Off"/> + <button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" name="Save"/> + <button font="SansSerifSmall" label="Speichern unter..." label_selected="Speichern unter..." left="194" name="Save As" width="105"/> + <button font="SansSerifSmall" label="Zurücksetzen" label_selected="Zurücksetzen" name="Revert"/> </panel> <panel label="Rock" name="Skirt"> - <text type="string" length="1" name="title"> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: bearbeiten nicht möglich </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: wird geladen... </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: nicht getragen </text> - <text type="string" length="1" name="path"> + <text length="1" name="path" type="string"> In [PATH] </text> - <text type="string" length="1" name="not worn instructions"> + <text length="1" name="not worn instructions" type="string"> Ziehen Sie einen Rock aus dem Inventar auf Ihren Avatar, um ihn zu tragen. Sie können auch einen neuen Rock erstellen und diesen anziehen. </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. </text> - <texture_picker label="Stoff" name="Fabric" - tool_tip="Klicken Sie hier, um ein Bild auszuwählen" /> - <color_swatch label="Farbe/Ton" name="Color/Tint" - tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen" /> - <button label="Neuer Rock" label_selected="Neuer Rock" name="Create New" /> - <button font="SansSerifSmall" label="Ausziehen" label_selected="Ausziehen" left="19" - name="Take Off" /> - <button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" - name="Save" /> - <button font="SansSerifSmall" label="Speichern unter" label_selected="Speichern unter" - left="194" name="Save As" width="100" /> - <button font="SansSerifSmall" label="Zurücksetzen" label_selected="Zurücksetzen" - name="Revert" /> + <text name="Item Action Label" right="100"> + Rock: + </text> + <texture_picker label="Stoff" name="Fabric" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/> + <color_swatch label="Farbe/Ton" name="Color/Tint" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/> + <button label="Neuer Rock" label_selected="Neuer Rock" name="Create New"/> + <button font="SansSerifSmall" label="Ausziehen" label_selected="Ausziehen" name="Take Off"/> + <button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" name="Save"/> + <button font="SansSerifSmall" label="Speichern unter..." label_selected="Speichern unter..." left="194" name="Save As" width="105"/> + <button font="SansSerifSmall" label="Zurücksetzen" label_selected="Zurücksetzen" name="Revert"/> </panel> </tab_container> - <button label="Outfit erstellen" label_selected="Outfit erstellen" name="Make Outfit" /> - <button label="Alles speichern" label_selected="Alles speichern" name="Save All" /> - <button label="Schließen" label_selected="Schließen" name="Close" /> + <button label="Abbrechen" label_selected="Abbrechen" name="Cancel"/> + <button label="OK" label_selected="OK" name="Ok"/> + <button label="Outfit erstellen..." label_selected="Outfit erstellen..." name="Make Outfit" width="115"/> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_font_test.xml b/indra/newview/skins/default/xui/de/floater_font_test.xml new file mode 100644 index 0000000000000000000000000000000000000000..54278fc094a775d99d3bb4acc8b38e39fe6f2a85 --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_font_test.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="contents" title="Schriftart-Test"> + <text name="linea"> + OverrideTest, sollte hier als Times angezeigt werden. (Aus default/xui/en-us) + </text> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/de/floater_inventory_item_properties.xml index 0028f1da13313b818328c6da2a6df4ea2e207881..3e79a31abd0e7e6c3c0a699f4b34291d62ff58bf 100644 --- a/indra/newview/skins/default/xui/de/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/de/floater_inventory_item_properties.xml @@ -60,12 +60,8 @@ </text> <check_box label="Zum Verkauf" name="CheckPurchase" /> <radio_group name="RadioSaleType" left_delta="85" width="245" > - <radio_item name="radio"> - Original - </radio_item> - <radio_item name="radio2"> - Kopieren - </radio_item> + <radio_item name="radio" label="Original" /> + <radio_item name="radio2" label="Kopieren" /> </radio_group> <text name="TextPrice"> Preis: L$ diff --git a/indra/newview/skins/default/xui/de/floater_joystick.xml b/indra/newview/skins/default/xui/de/floater_joystick.xml index bf3083a14b2b8f24cd54a84200a1a1033afb7a48..407556bf2c1f2f76f50bf8aec2a6cdf86d921740 100644 --- a/indra/newview/skins/default/xui/de/floater_joystick.xml +++ b/indra/newview/skins/default/xui/de/floater_joystick.xml @@ -1,23 +1,31 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Joystick" title="Joystick-Konfiguration"> - <check_box name="enable_joystick" width="80" >Joystick aktivieren:</check_box> - <text name="joystick_type" left="140" width="360"></text> - <spinner label="X-Achse" name="JoystickAxis1" /> - <spinner label="Y-Achse" name="JoystickAxis2" /> - <spinner label="Z-Achse" name="JoystickAxis0" /> - <spinner label="Neigungswinkel" name="JoystickAxis4" /> - <spinner label="Gierwinkel" name="JoystickAxis5" /> - <spinner label="Rollwinkel" name="JoystickAxis3" /> - <spinner label="Zoom" name="JoystickAxis6" /> - <check_box label="Direkt-Zoom" name="ZoomDirect" /> - <check_box label="3D-Cursor" left="300" name="Cursor3D" /> - <check_box label="Automatisch ausrichten" left="390" name="AutoLeveling" /> + <check_box name="enable_joystick" width="80"> + Joystick aktivieren: + </check_box> + <text left="140" name="joystick_type" width="360"/> + <spinner label="X-Achse" name="JoystickAxis1"/> + <spinner label="Y-Achse" name="JoystickAxis2"/> + <spinner label="Z-Achse" name="JoystickAxis0"/> + <spinner label="Neigungswinkel" name="JoystickAxis4"/> + <spinner label="Gierwinkel" name="JoystickAxis5"/> + <spinner label="Rollwinkel" name="JoystickAxis3"/> + <spinner label="Zoom" name="JoystickAxis6"/> + <check_box label="Direkt-Zoom" name="ZoomDirect"/> + <check_box label="3D-Cursor" left="300" name="Cursor3D"/> + <check_box label="Automatisch ausrichten" left="390" name="AutoLeveling"/> <text name="Control Modes:"> Steuermodi: </text> - <check_box name="JoystickAvatarEnabled">Avatar</check_box> - <check_box name="JoystickBuildEnabled">Bauen</check_box> - <check_box name="JoystickFlycamEnabled">Flycam</check_box> + <check_box name="JoystickAvatarEnabled"> + Avatar + </check_box> + <check_box name="JoystickBuildEnabled"> + Bauen + </check_box> + <check_box name="JoystickFlycamEnabled"> + Flycam + </check_box> <text name="XScale"> X-Skala </text> @@ -63,7 +71,9 @@ <text name="ZoomDeadZone"> Zoom-Totzone </text> - <button label="SpaceNavigator-Standards" name="SpaceNavigatorDefaults" /> + <button label="SpaceNavigator-Standards" name="SpaceNavigatorDefaults"/> + <button label="OK" label_selected="OK" name="ok_btn"/> + <button label="Abbrechen" label_selected="Abbrechen" name="cancel_btn"/> <string name="JoystickMonitor"> Joystick-Monitor </string> diff --git a/indra/newview/skins/default/xui/de/floater_land_holdings.xml b/indra/newview/skins/default/xui/de/floater_land_holdings.xml index 25944895a2752d883364a599a9ec425a54a2e2f6..685490338295eef0a635d2d04364d5aecbaf28aa 100644 --- a/indra/newview/skins/default/xui/de/floater_land_holdings.xml +++ b/indra/newview/skins/default/xui/de/floater_land_holdings.xml @@ -1,21 +1,20 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="land holdings floater" title="Mein Land"> <scroll_list name="parcel list"> - <column label="Name" name="name" /> - <column label="Lage" name="location" /> - <column label="Gebiet" name="area" /> - <column label="" name="hidden" /> + <column label="Parzellenname" name="name"/> + <column label="Region" name="location"/> + <column label="Typ" name="type"/> + <column label="Gebiet" name="area"/> + <column label="" name="hidden"/> </scroll_list> - <button label="Teleportieren" label_selected="Teleportieren" name="Teleport" - tool_tip="Zum Mittelpunkt dieses Landes teleportieren." /> - <button label="Auf Karte" label_selected="Auf Karte" name="Show on Map" - tool_tip="Dieses Land auf der Weltkarte anzeigen." /> + <button label="Teleportieren" label_selected="Teleportieren" name="Teleport" tool_tip="Zum Mittelpunkt dieses Landes teleportieren."/> + <button label="Auf Karte" label_selected="Auf Karte" name="Show on Map" tool_tip="Dieses Land auf der Weltkarte anzeigen."/> <text name="contrib_label"> Beiträge zu Ihren Gruppen: </text> <scroll_list name="grant list"> - <column label="Gruppe" name="group" /> - <column label="Gebiet" name="area" /> + <column label="Gruppe" name="group"/> + <column label="Gebiet" name="area"/> </scroll_list> <text name="allowed_label"> Zulässiger Landbesitz bei aktuellem Zahlungsplan: diff --git a/indra/newview/skins/default/xui/de/floater_notification.xml b/indra/newview/skins/default/xui/de/floater_notification.xml new file mode 100644 index 0000000000000000000000000000000000000000..48ff900d5a9d84fa9a5ea99b688ec66ea6f7320c --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_notification.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="notification" title="Konsole: Meldungen"> + <text_editor name="payload"> + Wird geladen... + </text_editor> + <combo_box label="Antwort" name="response"/> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_notifications_console.xml b/indra/newview/skins/default/xui/de/floater_notifications_console.xml new file mode 100644 index 0000000000000000000000000000000000000000..a1cd69899c4e87a16e29f0ba016de3c423fc564b --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_notifications_console.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="notifications_console" title="Konsole: Meldungen"> + <combo_box label="Meldungsart auswählen" name="notification_types" width="412" /> + <button label="Hinzufügen" name="add_notification" left="417" width="78" /> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_perm_prefs.xml b/indra/newview/skins/default/xui/de/floater_perm_prefs.xml new file mode 100644 index 0000000000000000000000000000000000000000..83ec725487fb47ae535f30e7c92037f6a072f524 --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_perm_prefs.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="perm prefs" title="Hochlade-Berechtigungen (Standard)"> + <panel label="Berechtigungen" name="permissions"> + <button label="?" label_selected="?" name="help"/> + <check_box label="Mit Gruppe teilen" name="share_with_group"/> + <check_box label="Kopieren allen erlauben" name="everyone_copy"/> + <text name="NextOwnerLabel"> + Nächster Eigentümer kann: + </text> + <check_box label="Bearbeiten" name="next_owner_modify"/> + <check_box label="Kopieren" name="next_owner_copy"/> + <check_box label="Verkaufen/Weggeben" name="next_owner_transfer" left_delta="80"/> + </panel> + <button label="OK" label_selected="OK" name="ok"/> + <button label="Abbrechen" label_selected="Abbrechen" name="cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_preview_gesture.xml b/indra/newview/skins/default/xui/de/floater_preview_gesture.xml index 327d0b70f1342056645de4859032fc8d5bf7db85..d72dceec90bf2c8c07a91cd8886da319c9518102 100644 --- a/indra/newview/skins/default/xui/de/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/de/floater_preview_gesture.xml @@ -46,12 +46,8 @@ Zeit, außer Sie fügen Warteschritte ein. </text> <radio_group name="animation_trigger_type"> - <radio_item name="start"> - Start - </radio_item> - <radio_item name="stop"> - Stopp - </radio_item> + <radio_item name="start" label="Start" /> + <radio_item name="stop" label="Stopp" /> </radio_group> <check_box label="bis alle Animationen beendet sind" name="wait_anim_check"/> <check_box label="Zeit in Sekunden" name="wait_time_check"/> diff --git a/indra/newview/skins/default/xui/de/floater_report_abuse.xml b/indra/newview/skins/default/xui/de/floater_report_abuse.xml index ca573083fa2a4aa56e325a59273d080b473592af..af7145003a55030bbc9b566f26cf34629e48c448 100644 --- a/indra/newview/skins/default/xui/de/floater_report_abuse.xml +++ b/indra/newview/skins/default/xui/de/floater_report_abuse.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_report_abuse" title="Missbrauch melden"> <texture_picker label="" name="screenshot"/> - <check_box label="Screenshot einschließen" name="screen_check" bottom_delta="-20"/> + <check_box bottom_delta="-20" label="Screenshot einschließen" name="screen_check"/> <text name="reporter_title"> Melder: </text> @@ -41,9 +41,9 @@ dann auf das Objekt: <combo_box.item name="Select_category" label="Kategorie auswählen"/> <combo_box.item name="Age__Age_play" label="Alter> Age-Play"/> <combo_box.item name="Age__Adult_resident_on_Teen_Second_Life" label="Alter> Erwachsener Einwohner in Teen Second Life"/> - - - + <combo_item name="Age__Underage_resident_outside_of_Teen_Second_Life"> + Alter > Minderjähriger Einwohner außerhalb Teen Second Life + </combo_item> <combo_box.item name="Assault__Combat_sandbox___unsafe_area" label="Angriff> Kampf-Sandbox / unsichere Region"/> <combo_box.item name="Assault__Safe_area" label="Angriff> Sichere Region"/> <combo_box.item name="Assault__Weapons_testing_sandbox" label="Angriff > Sandbox für Waffentest"/> @@ -67,13 +67,13 @@ dann auf das Objekt: <combo_box.item name="Harassment__Solicting_inciting_others_to_violate_ToS" label="Belästigung > Anstiften Dritter zur Missachtung der Nutzungsbedingungen"/> <combo_box.item name="Harassment__Verbal_abuse" label="Belästigung > Beschimpfung"/> <combo_box.item name="Indecency__Broadly_offensive_content_or_conduct" label="Unanständigkeit > Anstößige Inhalte oder Handlungen in der Öffentlichkeit"/> - - - <combo_box.item name="Indecency__Inappropriate_avatar_name" label="Unanständigkeit > Anstößiger Avatarname"/> - - - + <combo_item name="Indecency__Mature_content_in_PG_region"> + Unanständigkeit > Unangemessener Inhalt oder unangemessenes Verhalten in PG-Region + </combo_item> + <combo_item name="Indecency__Inappropriate_content_in_Mature_region"> + Unanständigkeit > Unangemessener Inhalt oder unangemessenes Verhalten in Mature-Region + </combo_item> <combo_box.item name="Intellectual_property_infringement_Content_Removal" label="Urheberrechtsverletzung > Entfernen von Inhalten"/> <combo_box.item name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit" label="Urheberrechtsverletzung > CopyBot oder Berechtigungs-Exploit"/> <combo_box.item name="Intolerance" label="Intoleranz"/> @@ -103,8 +103,8 @@ dann auf das Objekt: Missbrauchs, relevantem Chat/IM und wählen Sie das Objekt, wenn möglich. </text> - <text_editor bottom_delta="-136" height="130" name="details_edit" /> - <text name="incomplete_title" bottom_delta="-20"> + <text_editor bottom_delta="-136" height="130" name="details_edit"/> + <text bottom_delta="-20" name="incomplete_title"> Hinweis: Unvollständige Meldungen werden nicht bearbeitet. </text> <button label="Abbrechen" label_selected="Abbrechen" name="cancel_btn"/> diff --git a/indra/newview/skins/default/xui/de/floater_sell_land.xml b/indra/newview/skins/default/xui/de/floater_sell_land.xml index 4bbcbe3df92d64ff8afa5bbf78c25ff4549be5ce..c34252d8a7da7598af04270010427623e9bd046b 100644 --- a/indra/newview/skins/default/xui/de/floater_sell_land.xml +++ b/indra/newview/skins/default/xui/de/floater_sell_land.xml @@ -1,26 +1,22 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater name="sell land" title="Land verkaufen"> - <text bottom_delta="119" follows="top|left" font="SansSerifSmall" left="16" - name="info_parcel_label" text_color="white" width="64"> + <text name="info_parcel_label"> Parzelle: </text> - <text bottom_delta="-5" follows="top|left" font="SansSerif" height="16" left="64" - name="info_parcel" text_color="white"> + <text bottom_delta="-5" height="16" name="info_parcel"> PARZELLENNAME </text> <text name="info_size_label"> Größe: </text> - <text bottom_delta="-21" follows="top|left" font="SansSerif" height="32" left="56" - name="info_size" text_color="white"> + <text bottom_delta="-21" height="32" name="info_size"> [AREA] qm </text> - <text follows="top|left" font="SansSerifHuge" height="28" left="16" - name="info_action" text_color="white" bottom_delta="-32" width="200"> + <text height="28" name="info_action" bottom_delta="-57"> Zum Verkauf dieser Parzelle: </text> - <icon bottom_delta="-76" name="step_price" /> + <icon bottom_delta="-80" name="step_price" /> <text name="price_label"> Preis festlegen: </text> @@ -33,17 +29,15 @@ dieser Parzelle: <text name="price_per_m"> ([PER_METER] L$ pro Quadratmeter) </text> - <icon follows="top|left" height="64" image_name="badge_note.tga" left="0" - name="step_sell_to" width="64" /> - <text bottom_delta="38" follows="top|left" height="16" left="72" name="sell_to_label" - right="-20" text_color="white"> + <icon height="64" left="0" name="step_sell_to" width="64" /> + <text bottom_delta="38" left="72" name="sell_to_label" right="-20"> Land verkaufen an: </text> - <text follows="top|left" height="16" left="72" name="sell_to_text" bottom_delta="-16" right="-10"> + <text height="16" left="72" name="sell_to_text" bottom_delta="-16" right="-10"> Wählen Sie, ob der Verkauf offen oder auf eine bestimmte Person beschränkt ist. </text> - <combo_box follows="top|right" height="16" left="72" name="sell_to" bottom_delta="-32" width="140"> + <combo_box height="16" left="72" name="sell_to" bottom_delta="-32" width="140"> <combo_box.item name="--selectone--" label="select one --" /> <combo_box.item name="Anyone" label="Jeder" /> <combo_box.item name="Specificuser:" label="Bestimmter Benutzer:" /> @@ -57,15 +51,11 @@ beschränkt ist. wechseln den Eigentümer. </text> <radio_group bottom_delta="-58" name="sell_objects"> - <radio_item name="no"> - Nein, Objekte behalten - </radio_item> - <radio_item name="yes"> - Ja, Objekte mit Land verkaufen - </radio_item> + <radio_item name="no" label="Nein, Objekte behalten" /> + <radio_item name="yes" label="Ja, Objekte mit Land verkaufen" /> </radio_group> - <button label="Objekte anzeigen" name="show_objects" /> - <text name="nag_message_label"> + <button label="Objekte anzeigen" name="show_objects" width="116"/> + <text name="nag_message_label"> ACHTUNG: Verkäufe sind endgültig. </text> <button label="Land zum Verkauf freigeben" width="180" name="sell_btn" /> diff --git a/indra/newview/skins/default/xui/de/floater_snapshot.xml b/indra/newview/skins/default/xui/de/floater_snapshot.xml index ffd59af64a037f783ffe1a531e9cf65b7e5ca915..e94e22d9b86009cdef266851030f00075688c72b 100644 --- a/indra/newview/skins/default/xui/de/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/de/floater_snapshot.xml @@ -8,7 +8,7 @@ Per E-Mail senden </radio_item> <radio_item name="texture"> - Im Inventar speichern (L$10) + Im Inventar speichern ([AMOUNT] L$) </radio_item> <radio_item name="local"> Auf Festplatte speichern @@ -19,7 +19,7 @@ </text> <button label="Foto aktualisieren" name="new_snapshot_btn"/> <button label="Senden" name="send_btn"/> - <button label="Speichern (L$10)" name="upload_btn"/> + <button label="Speichern ([AMOUNT] L$)" name="upload_btn"/> <flyout_button label="Speichern" name="save_btn" tool_tip="Bild als Datei speichern"> <flyout_button.item name="save_item"> Speichern diff --git a/indra/newview/skins/default/xui/de/floater_sound_preview.xml b/indra/newview/skins/default/xui/de/floater_sound_preview.xml index cf2c979daa5ce03b6e44043190524f72f7c78b3e..1e5ac179b5bf5fa186cf6b8cc02991188d8a3913 100644 --- a/indra/newview/skins/default/xui/de/floater_sound_preview.xml +++ b/indra/newview/skins/default/xui/de/floater_sound_preview.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="Name/Description" title="sound.wav"> +<floater name="Sound Preview" title="sound.wav"> <text name="name_label"> Name: </text> @@ -7,22 +7,14 @@ Beschreibung: </text> <button label="Abbrechen" label_selected="Abbrechen" name="cancel_btn" /> - <button label="Hochladen (10 L$)" label_selected="Hochladen (10 L$)" name="ok_btn" /> + <button label="Hochladen ([AMOUNT] L$)" label_selected="Hochladen ([AMOUNT] L$)" name="ok_btn" /> <text name="text"> Bitrate (kbit/s): </text> <radio_group name="bitrate"> - <radio_item name="32"> - 32 - </radio_item> - <radio_item name="64"> - 64 - </radio_item> - <radio_item name="96"> - 96 - </radio_item> - <radio_item name="128"> - 128 - </radio_item> + <radio_item name="32" label="32" /> + <radio_item name="64" label="64" /> + <radio_item name="96" label="96" /> + <radio_item name="128" label="128" /> </radio_group> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_statistics.xml b/indra/newview/skins/default/xui/de/floater_statistics.xml new file mode 100644 index 0000000000000000000000000000000000000000..26e976a59c154e0c4541a776e573bf5438077b98 --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_statistics.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="stats floater" title="Statistikleiste"/> diff --git a/indra/newview/skins/default/xui/de/floater_tools.xml b/indra/newview/skins/default/xui/de/floater_tools.xml index 483b8c454b03388d764f2850759de7acba73a6f1..cef204eb5fc753c76cf092888218b19273d4871d 100644 --- a/indra/newview/skins/default/xui/de/floater_tools.xml +++ b/indra/newview/skins/default/xui/de/floater_tools.xml @@ -1,89 +1,84 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="toolbox floater" title=""> - <button label="" label_selected="" name="button focus" tool_tip="Fokus" /> - <text name="tool label" /> - <button label="" label_selected="" name="button move" tool_tip="Verschieben" /> - <text left="40" name="tool label2" width="70" /> - <button label="" label_selected="" name="button edit" tool_tip="Bearbeiten" /> - <text left="92" name="tool label3" width="70" /> - <button label="" label_selected="" name="button create" tool_tip="Erstellen" /> - <text left="170" name="tool label4" width="70" /> - <button label="" label_selected="" name="button land" tool_tip="Land" /> - <text left="240" name="tool label5" /> - <radio_group name="focus_radio_group"> - <radio_item label="Zoom" name="radio zoom" /> - <radio_item label="Orbit (Strg)" name="radio orbit" /> - <radio_item label="Schwenken (Strg-Umschalt)" name="radio pan" /> - </radio_group> - <radio_group name="move_radio_group"> - <radio_item label="Verschieben" name="radio move" /> - <radio_item label="Heben (Strg)" name="radio lift" /> - <radio_item label="Rotieren (Strg-Umschalt)" name="radio spin" /> - </radio_group> - <radio_group name="edit_radio_group"> - <radio_item label="Position" name="radio position" /> - <radio_item label="Drehen (Strg)" name="radio rotate" /> - <radio_item label="Dehnen (Strg-Umschalt)" name="radio stretch" /> - <radio_item label="Textur auswählen" name="radio select face" /> - </radio_group> - <check_box label="Verknüpfte Teile bearbeiten" name="checkbox edit linked parts" /> - <check_box label="Raster verwenden" name="checkbox snap to grid" /> - <button label="Optionen..." label_selected="Optionen..." name="Options..." /> - <check_box label="Beide Seiten dehnen" name="checkbox uniform" /> - <check_box label="Texturen dehnen" name="checkbox stretch textures" /> + <button label="" label_selected="" name="button focus" tool_tip="Fokus"/> + <button label="" label_selected="" name="button move" tool_tip="Verschieben"/> + <button label="" label_selected="" name="button edit" tool_tip="Bearbeiten"/> + <button label="" label_selected="" name="button create" tool_tip="Erstellen"/> + <button label="" label_selected="" name="button land" tool_tip="Land"/> + <check_box label="Zoom" name="radio zoom"/> + <check_box label="Orbit (Strg)" name="radio orbit"/> + <check_box label="Schwenken (Strg-Umschalt)" name="radio pan"/> + <check_box label="Verschieben" name="radio move"/> + <check_box label="Heben (Strg)" name="radio lift"/> + <check_box label="Rotieren (Strg-Umschalt)" name="radio spin"/> + <check_box label="Position" name="radio position"/> + <check_box label="Drehen (Strg)" name="radio rotate"/> + <check_box label="Dehnen (Strg-Umschalt)" name="radio stretch"/> + <check_box label="Textur auswählen" name="radio select face"/> + <check_box label="Verknüpfte Teile bearbeiten" name="checkbox edit linked parts"/> <text name="text ruler mode"> - Linealmodus: + Lineal: </text> + <combo_box name="combobox grid mode"> + <combo_item name="World"> + Welt + </combo_item> + <combo_item name="Local"> + Lokal + </combo_item> + <combo_item name="Reference"> + Referenz + </combo_item> + </combo_box> + <check_box label="Beide Seiten dehnen" name="checkbox uniform"/> + <check_box label="Texturen dehnen" name="checkbox stretch textures"/> + <check_box label="Raster verwenden" name="checkbox snap to grid"/> + <button label="Optionen..." label_selected="Optionen..." name="Options..."/> <text name="text status"> Zum Verschieben ziehen, zum Kopieren Umschalttaste-Ziehen </text> - <combo_box name="combobox grid mode"> - <combo_box.item name="World" label="Welt" /> - <combo_box.item name="Local" label="Lokal" /> - <combo_box.item name="Reference" label="Referenz" /> - </combo_box> - <button label="" label_selected="" name="ToolCube" tool_tip="Würfel" /> - <button label="" label_selected="" name="ToolPrism" tool_tip="Prisma" /> - <button label="" label_selected="" name="ToolPyramid" tool_tip="Pyramide" /> - <button label="" label_selected="" name="ToolTetrahedron" tool_tip="Tetraeder" /> - <button label="" label_selected="" name="ToolCylinder" tool_tip="Zylinder" /> - <button label="" label_selected="" name="ToolHemiCylinder" tool_tip="Halbzylinder" /> - <button label="" label_selected="" name="ToolCone" tool_tip="Kegel" /> - <button label="" label_selected="" name="ToolHemiCone" tool_tip="Halbkegel" /> - <button label="" label_selected="" name="ToolSphere" tool_tip="Kugel" /> - <button label="" label_selected="" name="ToolHemiSphere" tool_tip="Halbkugel" /> - <check_box label="Kopierauswahl" name="checkbox copy selection" /> - <button label="" label_selected="" name="ToolTorus" tool_tip="Torus" /> - <button label="" label_selected="" name="ToolTube" tool_tip="Rohr" /> - <button label="" label_selected="" name="ToolRing" tool_tip="Ring" /> - <button label="" label_selected="" name="ToolTree" tool_tip="Baum" /> - <button label="" label_selected="" name="ToolGrass" tool_tip="Gras" /> - <check_box label="Tool ausgewählt lassen" name="checkbox sticky" /> - <check_box label="Kopie zentrieren" name="checkbox copy centers" /> - <check_box label="Kopie drehen" name="checkbox copy rotates" /> - - <radio_group name="land_radio_group"> - <radio_item label="Land auswählen" name="radio select land" /> - <radio_item label="Land einebnen" name="radio flatten" /> - <radio_item label="Land anheben" name="radio raise" /> - <radio_item label="Land absenken" name="radio lower" /> - <radio_item label="Land glätten" name="radio smooth" /> - <radio_item label="Land rau machen" name="radio noise" /> - <radio_item label="Land zurückführen" name="radio revert" /> - </radio_group> - <combo_box name="combobox brush size"> - <combo_box.item name="Small" label="Klein" /> - <combo_box.item name="Medium" label="Mittel" /> - <combo_box.item name="Large" label="Groß" /> - </combo_box> + <button label="" label_selected="" name="ToolCube" tool_tip="Würfel"/> + <button label="" label_selected="" name="ToolPrism" tool_tip="Prisma"/> + <button label="" label_selected="" name="ToolPyramid" tool_tip="Pyramide"/> + <button label="" label_selected="" name="ToolTetrahedron" tool_tip="Tetraeder"/> + <button label="" label_selected="" name="ToolCylinder" tool_tip="Zylinder"/> + <button label="" label_selected="" name="ToolHemiCylinder" tool_tip="Halbzylinder"/> + <button label="" label_selected="" name="ToolCone" tool_tip="Kegel"/> + <button label="" label_selected="" name="ToolHemiCone" tool_tip="Halbkegel"/> + <button label="" label_selected="" name="ToolSphere" tool_tip="Kugel"/> + <button label="" label_selected="" name="ToolHemiSphere" tool_tip="Halbkugel"/> + <button label="" label_selected="" name="ToolTorus" tool_tip="Torus"/> + <button label="" label_selected="" name="ToolTube" tool_tip="Rohr"/> + <button label="" label_selected="" name="ToolRing" tool_tip="Ring"/> + <button label="" label_selected="" name="ToolTree" tool_tip="Baum"/> + <button label="" label_selected="" name="ToolGrass" tool_tip="Gras"/> + <check_box label="Auswahl behalten" name="checkbox sticky"/> + <check_box label="Auswahl kopieren" name="checkbox copy selection"/> + <check_box label="Zentrieren" name="checkbox copy centers"/> + <check_box label="Drehen" name="checkbox copy rotates"/> + <check_box label="Land auswählen" name="radio select land"/> + <check_box label="Einebnen" name="radio flatten"/> + <check_box label="Anheben" name="radio raise"/> + <check_box label="Absenken" name="radio lower"/> + <check_box label="Glätten" name="radio smooth"/> + <check_box label="Aufrauen" name="radio noise"/> + <check_box label="Zurücksetzen" name="radio revert"/> + <button label="Übernehmen" label_selected="Übernehmen" name="button apply to selection" tool_tip="Ausgewähltes Land ändern"/> + <text name="Bulldozer:"> + Planierraupe: + </text> + <text name="Dozer Size:"> + Größe + </text> <text name="Strength:"> - Stärke: + Stärke + </text> + <text name="obj_count"> + Ausgewählte Objekte: [COUNT] + </text> + <text name="prim_count"> + Primitive: [COUNT] </text> - <button label="Auf Auswahl anwenden" label_selected="Auf Auswahl anwenden" - name="button apply to selection" tool_tip="Ausgewähltes Land ändern" /> - <check_box label="Eigentümer anzeigen" name="checkbox show owners" /> - <button label="Mehr >>" name="button more" tool_tip="Erweiterte Optionen" /> - <button label="<< Weniger" name="button less" tool_tip="Erweiterte Optionen" /> <tab_container name="Object Info Tabs" tab_max_width="150" tab_min_width="30"> <panel label="Allgemein" name="General"> <text name="Name:"> @@ -98,50 +93,39 @@ <text name="Creator Name"> Thrax Linden </text> - <button label="Profil..." label_selected="Profil..." name="button creator profile" /> + <button label="Profil..." label_selected="Profil..." name="button creator profile"/> <text name="Owner:"> Eigentümer: </text> <text name="Owner Name"> Thrax Linden </text> - <button label="Profil..." label_selected="Profil..." name="button owner profile" /> + <button label="Profil..." label_selected="Profil..." name="button owner profile"/> <text name="Group:"> Gruppe: </text> <text name="Group Name Proxy"> Die Lindens </text> - <button label="Festlegen..." label_selected="Festlegen..." name="button set group" /> - <text name="prim info"> - 1 Objekt, 1 Primitivum - </text> + <button label="Festlegen..." label_selected="Festlegen..." name="button set group"/> <text name="Permissions:"> Berechtigungen: </text> <text name="perm_modify"> Sie können dieses Objekt ändern. </text> - <check_box label="Mit Gruppe teilen" left="6" name="checkbox share with group" - tool_tip="Gruppenmitgliedern Verschieben, Ändern, Kopieren und Löschen gestatten." /> - <text name="text deed continued"> + <check_box label="Mit Gruppe teilen" left="6" name="checkbox share with group" tool_tip="Allen Mitgliedern der zugeordneten Gruppe die Erlaubnis erteilen, Ihre Berechtigungen für dieses Objekt zu teilen und zu verwenden. Sie müssen Übereignen, um Rollenbeschränkungen zu aktivieren."/> + <string name="text deed continued"> Übertragung... - </text> - <text name="text deed"> + </string> + <string name="text deed"> Übertragung - </text> - <button label="Übertragung..." label_selected="Übertragung..." name="button deed" - tool_tip="In der Gruppe gemeinsam verwendete Objekte können von einem Gruppenfunktionär übertragen werden." /> - <check_box label="Verschieben durch beliebige Personen zulassen" left="6" - name="checkbox allow everyone move" /> - <check_box label="Kopieren durch beliebige Personen zulassen" left="6" - name="checkbox allow everyone copy" /> - <check_box label="In Suche anzeigen" left="6" name="search_check" - tool_tip="Dieses Objekt in Suchergebnissen anzeigen" /> - <check_box label="Zu verkaufen" left="6" name="checkbox for sale" /> - <text name="Price: L$"> - Preis: L$ - </text> + </string> + <button label="Übertragung..." label_selected="Übertragung..." name="button deed" tool_tip="In der Gruppe gemeinsam verwendete Objekte können von einem Gruppenfunktionär übertragen werden."/> + <check_box label="Verschieben durch beliebige Personen zulassen" left="6" name="checkbox allow everyone move"/> + <check_box label="Kopieren durch beliebige Personen zulassen" left="6" name="checkbox allow everyone copy"/> + <check_box label="In Suche anzeigen" left="6" name="search_check" tool_tip="Dieses Objekt in Suchergebnissen anzeigen"/> + <check_box label="Zu verkaufen" left="6" name="checkbox for sale"/> <text name="Cost"> Preis:L$ </text> @@ -159,20 +143,34 @@ <text name="Next owner can:"> Nächster Eigentümer kann: </text> - <check_box label="Ändern" name="checkbox next owner can modify" /> - <check_box label="Kopieren" name="checkbox next owner can copy" /> - <check_box label="Wiederverkaufen" left_delta="75" name="checkbox next owner can transfer" /> + <check_box label="Ändern" name="checkbox next owner can modify"/> + <check_box label="Kopieren" name="checkbox next owner can copy"/> + <check_box label="Wiederverkaufen" left_delta="75" name="checkbox next owner can transfer"/> <text name="label click action"> Bei Linksklicken: </text> <combo_box name="clickaction" width="178"> - <combo_box.item name="Touch/grab(default)" label="Berühren/Greifen (Standard)" /> - <combo_box.item name="Sitonobject" label="Auf Objekt sitzen" /> - <combo_box.item name="Buyobject" label="Objekt kaufen" /> - <combo_box.item name="Payobject" label="Objekt bezahlen" /> - <combo_box.item name="Open" label="Öffnen" /> - <combo_box.item name="Play" label="Parzellenmedien wiedergeben" /> - <combo_box.item name="Opemmedia" label="Parzellenmedien öffnen" /> + <combo_item name="Touch/grab(default)"> + Berühren/Greifen (Standard) + </combo_item> + <combo_item name="Sitonobject"> + Auf Objekt sitzen + </combo_item> + <combo_item name="Buyobject"> + Objekt kaufen + </combo_item> + <combo_item name="Payobject"> + Objekt bezahlen + </combo_item> + <combo_item name="Open"> + Öffnen + </combo_item> + <combo_item name="Play"> + Parzellenmedien wiedergeben + </combo_item> + <combo_item name="Opemmedia"> + Parzellenmedien öffnen + </combo_item> </combo_box> <text name="B:"> B: @@ -192,21 +190,21 @@ <text name="F:"> F: </text> - <text name="text modify info 1"> + <string name="text modify info 1"> Sie können dieses Objekt ändern. - </text> - <text name="text modify info 2"> + </string> + <string name="text modify info 2"> Sie können diese Objekte ändern. - </text> - <text name="text modify info 3"> + </string> + <string name="text modify info 3"> Sie können dieses Objekt nicht ändern. - </text> - <text name="text modify info 4"> + </string> + <string name="text modify info 4"> Sie können diese Objekte nicht ändern. - </text> - <text name="text modify warning"> + </string> + <string name="text modify warning"> Gesamtes Objekt muss gewählt werden, um Berechtigungen festzulegen. - </text> + </string> <string name="Cost Default"> Preis:L$ </string> @@ -230,132 +228,177 @@ <text name="edit_object"> Objektparameter bearbeiten: </text> - <check_box label="Gesperrt" name="checkbox locked" - tool_tip="Verhindert, dass Objekt verschoben oder gelöscht wird. Oft beim Bauen nützlich, um unbeabsichtigte Bearbeitungen zu vermeiden." /> - <check_box label="Physisch" name="Physical Checkbox Ctrl" - tool_tip="Gestattet, das Objekt geschoben und von Schwerkraft beeinflusst wird" /> - <check_box label="Temporär" name="Temporary Checkbox Ctrl" - tool_tip="Verursacht, dass Objekt 1 Minute nach Erstellung gelöscht wird." /> - <check_box label="Phantom" name="Phantom Checkbox Ctrl" - tool_tip="Verursacht, dass Objekt nicht mit anderen Objekten oder Avataren kollidiert" /> + <check_box label="Gesperrt" name="checkbox locked" tool_tip="Verhindert, dass Objekt verschoben oder gelöscht wird. Oft beim Bauen nützlich, um unbeabsichtigte Bearbeitungen zu vermeiden."/> + <check_box label="Physisch" name="Physical Checkbox Ctrl" tool_tip="Gestattet, das Objekt geschoben und von Schwerkraft beeinflusst wird"/> + <check_box label="Temporär" name="Temporary Checkbox Ctrl" tool_tip="Verursacht, dass Objekt 1 Minute nach Erstellung gelöscht wird."/> + <check_box label="Phantom" name="Phantom Checkbox Ctrl" tool_tip="Verursacht, dass Objekt nicht mit anderen Objekten oder Avataren kollidiert"/> <text name="label position"> Position (Meter) </text> - <spinner label="X" name="Pos X" /> - <spinner label="Y" name="Pos Y" /> - <spinner label="Z" name="Pos Z" /> + <spinner label="X" name="Pos X"/> + <spinner label="Y" name="Pos Y"/> + <spinner label="Z" name="Pos Z"/> <text name="label size"> Größe (Meter) </text> - <spinner label="X" name="Scale X" /> - <spinner label="Y" name="Scale Y" /> - <spinner label="Z" name="Scale Z" /> + <spinner label="X" name="Scale X"/> + <spinner label="Y" name="Scale Y"/> + <spinner label="Z" name="Scale Z"/> <text name="label rotation"> Rotation (Grad) </text> - <spinner label="X" name="Rot X" /> - <spinner label="Y" name="Rot Y" /> - <spinner label="Z" name="Rot Z" /> + <spinner label="X" name="Rot X"/> + <spinner label="Y" name="Rot Y"/> + <spinner label="Z" name="Rot Z"/> <text name="label material"> Material </text> <combo_box name="material"> - <combo_box.item name="Stone" label="Stein" /> - <combo_box.item name="Metal" label="Metall" /> - <combo_box.item name="Glass" label="Glas" /> - <combo_box.item name="Wood" label="Holz" /> - <combo_box.item name="Flesh" label="Fleisch" /> - <combo_box.item name="Plastic" label="Kunststoff" /> - <combo_box.item name="Rubber" label="Gummi" /> + <combo_item name="Stone"> + Stein + </combo_item> + <combo_item name="Metal"> + Metall + </combo_item> + <combo_item name="Glass"> + Glas + </combo_item> + <combo_item name="Wood"> + Holz + </combo_item> + <combo_item name="Flesh"> + Fleisch + </combo_item> + <combo_item name="Plastic"> + Kunststoff + </combo_item> + <combo_item name="Rubber"> + Gummi + </combo_item> </combo_box> <text left="115" name="label basetype"> Bausteintyp </text> <combo_box left="115" name="comboBaseType"> - <combo_box.item name="Box" label="Quader" /> - <combo_box.item name="Cylinder" label="Zylinder" /> - <combo_box.item name="Prism" label="Prisma" /> - <combo_box.item name="Sphere" label="Kugel" /> - <combo_box.item name="Torus" label="Torus" /> - <combo_box.item name="Tube" label="Rohr" /> - <combo_box.item name="Ring" label="Ring" /> - <combo_box.item name="Sculpted" label="Geformt" /> + <combo_item name="Box"> + Quader + </combo_item> + <combo_item name="Cylinder"> + Zylinder + </combo_item> + <combo_item name="Prism"> + Prisma + </combo_item> + <combo_item name="Sphere"> + Kugel + </combo_item> + <combo_item name="Torus"> + Torus + </combo_item> + <combo_item name="Tube"> + Rohr + </combo_item> + <combo_item name="Ring"> + Ring + </combo_item> + <combo_item name="Sculpted"> + Geformt + </combo_item> </combo_box> <text left="115" name="text cut" width="146"> Pfadschnitt Beginn und Ende </text> - <spinner label="B" left="115" name="cut begin" /> - <spinner label="E" left="115" name="cut end" /> + <spinner label="B" left="115" name="cut begin"/> + <spinner label="E" left="115" name="cut end"/> <text left="115" name="text hollow"> Hohl </text> <text left="115" name="text skew"> Versatz </text> - <spinner left="115" name="Scale 1" /> - <spinner left="115" name="Skew" /> + <spinner left="115" name="Scale 1"/> + <spinner left="115" name="Skew"/> <text left="115" name="Hollow Shape"> Hohlform </text> <combo_box left="115" name="hole"> - <combo_box.item name="Default" label="Standard" /> - <combo_box.item name="Circle" label="Kreis" /> - <combo_box.item name="Square" label="Quadrat" /> - <combo_box.item name="Triangle" label="Dreieck" /> + <combo_item name="Default"> + Standard + </combo_item> + <combo_item name="Circle"> + Kreis + </combo_item> + <combo_item name="Square"> + Quadrat + </combo_item> + <combo_item name="Triangle"> + Dreieck + </combo_item> </combo_box> <text left="115" name="text twist"> Torsion </text> - <spinner label="B" left="115" name="Twist Begin" /> - <spinner label="E" left="115" name="Twist End" /> + <spinner label="B" left="115" name="Twist Begin"/> + <spinner label="E" left="115" name="Twist End"/> <text left="115" name="scale_taper"> Verjüngung </text> <text left="115" name="scale_hole"> Lochgröße </text> - <spinner label="X" left="115" name="Taper Scale X" /> - <spinner label="Y" left="115" name="Taper Scale Y" /> + <spinner label="X" left="115" name="Taper Scale X"/> + <spinner label="Y" left="115" name="Taper Scale Y"/> <text left="115" name="text topshear"> Verscherung </text> - <spinner label="X" left="115" name="Shear X" /> - <spinner label="Y" left="115" name="Shear Y" /> - <text name="advanced_cut" left="115" width="153"> + <spinner label="X" left="115" name="Shear X"/> + <spinner label="Y" left="115" name="Shear Y"/> + <text left="115" name="advanced_cut" width="153"> Profilschnitt-Beginn und Ende </text> - <text name="advanced_dimple" left="115"> + <text left="115" name="advanced_dimple"> Vertiefung-Beginn und Ende </text> - <spinner label="B" name="Path Limit Begin" left="115"/> - <spinner label="E" name="Path Limit End" /> - <text name="text taper2" left="115"> + <text name="advanced_slice"> + Anfang/Ende abschneiden + </text> + <spinner label="B" left="115" name="Path Limit Begin"/> + <spinner label="E" name="Path Limit End"/> + <text left="115" name="text taper2"> Verjüngung </text> - <spinner label="X" name="Taper X" left="115"/> - <spinner label="Y" name="Taper Y" /> - <text name="text radius delta" left="115"> + <spinner label="X" left="115" name="Taper X"/> + <spinner label="Y" name="Taper Y"/> + <text left="115" name="text radius delta"> Radius </text> <text name="text revolutions" width="74"> Umdrehungen </text> - <spinner left="115" name="Radius Offset" /> - <texture_picker label="Textur für gestaltetes Primitiv" name="sculpt texture control" - tool_tip="Klicken Sie hier, um ein Bild auszuwählen" /> - <check_box label="Spiegeln" name="sculpt mirror control" - tool_tip="Geformtes Primitiv entlang der X-Achse spiegeln." bottom_delta="-34" /> - <check_box label="Wenden" name="sculpt invert control" - tool_tip="Dreht die Normalen des geformten Primitivs von innen nach außen." /> + <spinner left="115" name="Radius Offset"/> + <texture_picker label="Textur für gestaltetes +Primitiv" name="sculpt texture control" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/> + <check_box bottom_delta="-34" label="Spiegeln" name="sculpt mirror control" tool_tip="Geformtes Primitiv entlang der X-Achse spiegeln."/> + <check_box label="Wenden" name="sculpt invert control" tool_tip="Dreht die Normalen des geformten Primitivs von innen nach außen."/> <text name="label sculpt type"> Naht </text> <combo_box name="sculpt type control"> - <combo_box.item name="None" label="keiner)" /> - <combo_box.item name="Sphere" label="Kugel" /> - <combo_box.item name="Torus" label="Torus" /> - <combo_box.item name="Plane" label="Fläche" /> - <combo_box.item name="Cylinder" label="Zylinder" /> + <combo_item name="None"> + (keiner) + </combo_item> + <combo_item name="Sphere"> + Kugel + </combo_item> + <combo_item name="Torus"> + Torus + </combo_item> + <combo_item name="Plane"> + Fläche + </combo_item> + <combo_item name="Cylinder"> + Zylinder + </combo_item> </combo_box> </panel> <panel label="Eigenschaften" name="Features"> @@ -365,165 +408,218 @@ <text name="edit_object"> Objekteigenschaften bearbeiten: </text> - <check_box label="Flexibler Weg" name="Flexible1D Checkbox Ctrl" - tool_tip="Gestattet, dass Objekt um die Z-Achse gebogen wird. (nur Client-Seite)" /> - <spinner label="Weichheit" name="FlexNumSections" /> - <spinner label="Schwerkraft" name="FlexGravity" /> - <spinner label="Ziehen" name="FlexFriction" /> - <spinner label="Wind" name="FlexWind" /> - <spinner label="Spannung" name="FlexTension" /> - <spinner label="Erzwingen X" name="FlexForceX" /> - <spinner label="Erzwingen Y" name="FlexForceY" /> - <spinner label="Erzwingen Z" name="FlexForceZ" /> - <check_box label="Licht" name="Light Checkbox Ctrl" - tool_tip="Verursacht, dass Objekt Licht emittiert" /> + <check_box label="Flexibler Weg" name="Flexible1D Checkbox Ctrl" tool_tip="Gestattet, dass Objekt um die Z-Achse gebogen wird. (nur Client-Seite)"/> + <spinner label="Weichheit" name="FlexNumSections"/> + <spinner label="Schwerkraft" name="FlexGravity"/> + <spinner label="Ziehen" name="FlexFriction"/> + <spinner label="Wind" name="FlexWind"/> + <spinner label="Spannung" name="FlexTension"/> + <spinner label="Erzwingen X" name="FlexForceX"/> + <spinner label="Erzwingen Y" name="FlexForceY"/> + <spinner label="Erzwingen Z" name="FlexForceZ"/> + <check_box label="Licht" name="Light Checkbox Ctrl" tool_tip="Verursacht, dass Objekt Licht emittiert"/> <text name="label color"> Farbe </text> - <color_swatch label="" name="colorswatch" tool_tip="Klicken, um Farbauswahl zu öffnen" /> - <spinner label="Intensität" name="Light Intensity" /> - <spinner label="Radius" name="Light Radius" /> - <spinner label="Abnehmend" name="Light Falloff" /> + <color_swatch label="" name="colorswatch" tool_tip="Klicken, um Farbauswahl zu öffnen"/> + <spinner label="Intensität" name="Light Intensity"/> + <spinner label="Radius" name="Light Radius"/> + <spinner label="Abnehmend" name="Light Falloff"/> </panel> <panel label="Textur" name="Texture"> - <texture_picker label="Textur" name="texture control" - tool_tip="Klicken, um ein Bild zu wählen" /> - <color_swatch label="Farbe" name="colorswatch" tool_tip="Klicken, um Farbauswahl zu öffnen" /> + <texture_picker label="Textur" name="texture control" tool_tip="Klicken, um ein Bild zu wählen"/> + <color_swatch label="Farbe" name="colorswatch" tool_tip="Klicken, um Farbauswahl zu öffnen"/> <text name="color trans"> Transparenz % </text> <text name="glow label"> Leuchten </text> - <check_box label="Ganz hell" name="checkbox fullbright" /> + <check_box label="Ganz hell" name="checkbox fullbright"/> <text name="tex gen"> Zuordnung </text> <combo_box name="combobox texgen"> - <combo_box.item name="Default" label="Standard" /> - <combo_box.item name="Planar" label="Eben" /> + <combo_item name="Default"> + Standard + </combo_item> + <combo_item name="Planar"> + Eben + </combo_item> </combo_box> <text name="label shininess"> Glanz </text> <combo_box name="combobox shininess"> - <combo_box.item name="None" label="Kein" /> - <combo_box.item name="Low" label="Niedrig" /> - <combo_box.item name="Medium" label="Mittel" /> - <combo_box.item name="High" label="Hoch" /> + <combo_item name="None"> + Kein + </combo_item> + <combo_item name="Low"> + Niedrig + </combo_item> + <combo_item name="Medium"> + Mittel + </combo_item> + <combo_item name="High"> + Hoch + </combo_item> </combo_box> <text name="label bumpiness"> Holprigkeit </text> <combo_box name="combobox bumpiness"> - <combo_box.item name="None" label="Keine" /> - <combo_box.item name="Brightness" label="Helligkeit" /> - <combo_box.item name="Darkness" label="Dunkelheit" /> - <combo_box.item name="woodgrain" label="Holzmaserung" /> - <combo_box.item name="bark" label="Rinde" /> - <combo_box.item name="bricks" label="Ziegel" /> - <combo_box.item name="checker" label="Karo" /> - <combo_box.item name="concrete" label="Beton" /> - <combo_box.item name="crustytile" label="verkrustete Fliesen" /> - <combo_box.item name="cutstone" label="Steinplatten" /> - <combo_box.item name="discs" label="Scheiben" /> - <combo_box.item name="gravel" label="Kies" /> - <combo_box.item name="petridish" label="Petrischale" /> - <combo_box.item name="siding" label="Verkleidung" /> - <combo_box.item name="stonetile" label="Steinfliesen" /> - <combo_box.item name="stucco" label="Stuck" /> - <combo_box.item name="suction" label="Saugen" /> - <combo_box.item name="weave" label="gewoben" /> + <combo_item name="None"> + Keine + </combo_item> + <combo_item name="Brightness"> + Helligkeit + </combo_item> + <combo_item name="Darkness"> + Dunkelheit + </combo_item> + <combo_item name="woodgrain"> + Holzmaserung + </combo_item> + <combo_item name="bark"> + Rinde + </combo_item> + <combo_item name="bricks"> + Ziegel + </combo_item> + <combo_item name="checker"> + Karo + </combo_item> + <combo_item name="concrete"> + Beton + </combo_item> + <combo_item name="crustytile"> + verkrustete Fliesen + </combo_item> + <combo_item name="cutstone"> + Steinplatten + </combo_item> + <combo_item name="discs"> + Scheiben + </combo_item> + <combo_item name="gravel"> + Kies + </combo_item> + <combo_item name="petridish"> + Petrischale + </combo_item> + <combo_item name="siding"> + Verkleidung + </combo_item> + <combo_item name="stonetile"> + Steinfliesen + </combo_item> + <combo_item name="stucco"> + Stuck + </combo_item> + <combo_item name="suction"> + Saugen + </combo_item> + <combo_item name="weave"> + gewoben + </combo_item> </combo_box> <text name="tex scale"> Wiederholungen </text> - <spinner label="Horizontal (U)" name="TexScaleU" /> - <check_box label="Umkehren" name="checkbox flip s" /> - <spinner label="Vertikal (V)" name="TexScaleV" /> - <check_box label="Umkehren" name="checkbox flip t" /> + <spinner label="Horizontal (U)" name="TexScaleU"/> + <check_box label="Umkehren" name="checkbox flip s"/> + <spinner label="Vertikal (V)" name="TexScaleV"/> + <check_box label="Umkehren" name="checkbox flip t"/> <text name="tex rotate"> Rotation (Grad) </text> - <text name="string repeats per meter"> + <string name="string repeats per meter"> Kacheln pro Meter - </text> - <text name="string repeats per face"> + </string> + <string name="string repeats per face"> Wiederholungen pro Fläche - </text> + </string> <text name="rpt"> Kacheln pro Meter </text> - <button label="Übernehmen" label_selected="Übernehmen" name="button apply" /> + <button label="Übernehmen" label_selected="Übernehmen" name="button apply"/> <text name="tex offset"> Versatz </text> - <spinner label="Horizontal (U)" name="TexOffsetU" /> - <spinner label="Vertikal (V)" name="TexOffsetV" /> + <spinner label="Horizontal (U)" name="TexOffsetU"/> + <spinner label="Vertikal (V)" name="TexOffsetV"/> <text name="textbox autofix"> Medientextur ausrichten (zuerst laden) </text> - <button label="Ausrichten" label_selected="Ausrichten" name="button align" /> + <button label="Ausrichten" label_selected="Ausrichten" name="button align"/> </panel> <panel label="Inhalt" name="Contents"> - <button label="Neues Skript..." label_selected="Neues Skript..." - name="button new script" /> + <button label="Neues Skript" label_selected="Neues Skript..." name="button new script"/> + <button label="Berechtigungen..." name="button permissions" width="118"/> </panel> </tab_container> <panel name="land info panel"> + <text name="label_parcel_info"> + Parzelleninformation + </text> <text name="label_area_price"> Preis: L$ [PRICE] für [AREA] m2. </text> <text name="label_area"> Fläche: [AREA] m2 </text> - <button label="Land kaufen..." label_selected="Land kaufen..." name="button buy land" width="110" /> - <button label="Land aufgeben..." label_selected="Land aufgeben..." width="110" - name="button abandon land" /> - <button label="Unterteilen..." label_selected="Unterteilen..." width="110" - name="button subdivide land" /> - <button label="Zusammenlegen" label_selected="Zusammenlegen" name="button join land" width="110" /> - <button label="Info zu Land..." label_selected="Info zu Land..." width="110" - name="button about land" /> + <button label="Info zu Land..." label_selected="Info zu Land..." name="button about land" width="110"/> + <check_box label="Eigentümer anzeigen" name="checkbox show owners" tool_tip="Parzellen nach Eigentümer farbig kennzeichnen"/> + <button label="?" label_selected="?" name="button show owners help" left_delta="130"/> + <text name="label_parcel_modify"> + Parzelle ändern + </text> + <button label="Unterteilen..." label_selected="Unterteilen..." name="button subdivide land" width="110"/> + <button label="Zusammenlegen" label_selected="Zusammenlegen" name="button join land" width="110"/> + <text name="label_parcel_trans"> + Land-Transaktionen + </text> + <button label="Land kaufen..." label_selected="Land kaufen..." name="button buy land" width="110"/> + <button label="Land aufgeben..." label_selected="Land aufgeben..." name="button abandon land" width="110"/> </panel> - <text name="status_rotate"> + <string name="status_rotate"> An den farbigen Bändern ziehen, um das Objekt zu drehen - </text> - <text name="status_scale"> + </string> + <string name="status_scale"> Klicken und ziehen, um die ausgewählte Seite zu dehnen - </text> - <text name="status_move"> + </string> + <string name="status_move"> Maus verschiebt, Umschalt-Taste und Maus kopiert - </text> - <text name="status_modifyland"> + </string> + <string name="status_modifyland"> Klicken und halten, um das Land zu bearbeiten - </text> - <text name="status_camera"> + </string> + <string name="status_camera"> Klicken und ziehen, um die Ansicht zu ändern - </text> - <text name="status_grab"> - Objekt neu positionieren - </text> - <text name="status_place"> - Mausklick erstellt, Umschalt-Mausklick wählt aus - </text> - <text name="status_selectland"> + </string> + <string name="status_grab"> + Ziehen, um Objekte zu verschieben, Strg zum Heben, Strg-Umschalt zum Drehen + </string> + <string name="status_place"> + Inworld klicken, um zu bauen. + </string> + <string name="status_selectland"> Klicken und ziehen, um Land auszuwählen - </text> - <text name="grid_screen_text"> + </string> + <string name="grid_screen_text"> Bildschirm - </text> - <text name="grid_local_text"> + </string> + <string name="grid_local_text"> Lokal - </text> - <text name="grid_world_text"> + </string> + <string name="grid_world_text"> Welt - </text> - <text name="grid_reference_text"> + </string> + <string name="grid_reference_text"> Referenz - </text> - <text name="grid_attachment_text"> + </string> + <string name="grid_attachment_text"> Anhang - </text> + </string> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_tos.xml b/indra/newview/skins/default/xui/de/floater_tos.xml index 42f48fad4d7516dc3a8de248dd23608546683827..780dc29edc709d65269bd973fa41be564c3ed2f6 100644 --- a/indra/newview/skins/default/xui/de/floater_tos.xml +++ b/indra/newview/skins/default/xui/de/floater_tos.xml @@ -3,12 +3,8 @@ <button label="Weiter" label_selected="Weiter" name="Continue" /> <button label="Abbrechen" label_selected="Abbrechen" name="Cancel" /> <radio_group name="tos_agreement"> - <radio_item name="radio_disagree"> - Ich stimme den Nutzungsbedingungen nicht zu - </radio_item> - <radio_item name="radio_agree"> - Ich stimme den Nutzungsbedingungen zu - </radio_item> + <radio_item name="radio_disagree" label="Ich stimme den Nutzungsbedingungen nicht zu" /> + <radio_item name="radio_agree" label="Ich stimme den Nutzungsbedingungen zu" /> </radio_group> <text name="tos_title"> Nutzungsvereinbarung diff --git a/indra/newview/skins/default/xui/de/floater_world_map.xml b/indra/newview/skins/default/xui/de/floater_world_map.xml index 52f87fc32bddee1008503a6314c29097d60fb476..555b78b8373f5d9b3625110e7f91199e611f36f4 100644 --- a/indra/newview/skins/default/xui/de/floater_world_map.xml +++ b/indra/newview/skins/default/xui/de/floater_world_map.xml @@ -4,43 +4,29 @@ <panel label="Objekte" name="objects_mapview"/> <panel label="Terrain" name="terrain_mapview"/> </tab_container> - <text font="SansSerifSmall" name="land_for_sale_label"> - Land erhaeltlich - </text> - <text name="auction_label"> - Auktion - </text> <text name="you_label"> Sie </text> <text name="home_label"> Zuhause </text> - <button label="Nach Hause" label_selected="Nach Hause" name="Go Home" tool_tip="Nach Hause teleportieren"/> - <text name="person_label"> - Person - </text> - <check_box label=" " name="people_chk"/> - <text name="infohub_label"> - Infohub - </text> - <check_box label=" " name="infohub_chk"/> - <text name="telehub_label"> - Telehub + <text name="auction_label"> + Auktion </text> - <check_box label=" " name="telehubchk"/> - <text font="SansSerifSmall" name="land_for_sale_label2"> + <text font="SansSerifSmall" name="land_for_sale_label"> Land erhaeltlich </text> - <check_box label=" " name="land_for_sale_chk"/> + <button label="Nach Hause" label_selected="Nach Hause" name="Go Home" tool_tip="Nach Hause teleportieren"/> + <check_box label="Einwohner" name="people_chk"/> + <check_box label="Infohub" name="infohub_chk"/> + <check_box label="Telehub" name="telehubchk"/> + <check_box label="Land zu verkaufen" name="land_for_sale_chk"/> <text name="events_label"> - Events + Events: </text> - <check_box label=" " name="event_chk"/> - - - - <check_box label=" " name="event_mature_chk"/> + <check_box label="PG" name="event_chk"/> + <check_box label="Mature" name="event_mature_chk"/> + <check_box label="Adult" name="event_adult_chk"/> <combo_box label="Online-Freunde" name="friend combo" tool_tip="Freund, der auf Karte angezeigt werden soll"> <combo_box.item name="none_selected" label="Online-Freunde" /> </combo_box> diff --git a/indra/newview/skins/default/xui/de/menu_inventory.xml b/indra/newview/skins/default/xui/de/menu_inventory.xml index 97b47dd5699c858cbee3a22dcd8320d2a21ff801..e05b2e9f1a39454e530ae548769fd372af6ab3e3 100644 --- a/indra/newview/skins/default/xui/de/menu_inventory.xml +++ b/indra/newview/skins/default/xui/de/menu_inventory.xml @@ -1,65 +1,66 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="Popup"> - <menu_item_call label="Kaufen" name="Task Buy" /> - <menu_item_call label="Öffnen" name="Task Open" /> - <menu_item_call label="Wiedergeben/Abspielen" name="Task Play" /> - <menu_item_call label="Eigenschaften" name="Task Properties" /> - <menu_item_call label="Umbenennen" name="Task Rename" /> - <menu_item_call label="Löschen" name="Task Remove" /> - <menu_item_call label="Papierkorb ausleeren" name="Empty Trash" /> - <menu_item_call label="Fundstücke ausleeren" name="Empty Lost And Found" /> - <menu_item_call label="Neuer Ordner" name="New Folder" /> - <menu_item_call label="Neues Skript" name="New Script" /> - <menu_item_call label="Neue Notiz" name="New Note" /> - <menu_item_call label="Neue Geste" name="New Gesture" /> + <menu_item_call label="Kaufen" name="Task Buy"/> + <menu_item_call label="Öffnen" name="Task Open"/> + <menu_item_call label="Wiedergeben/Abspielen" name="Task Play"/> + <menu_item_call label="Eigenschaften" name="Task Properties"/> + <menu_item_call label="Umbenennen" name="Task Rename"/> + <menu_item_call label="Löschen" name="Task Remove"/> + <menu_item_call label="Papierkorb ausleeren" name="Empty Trash"/> + <menu_item_call label="Fundstücke ausleeren" name="Empty Lost And Found"/> + <menu_item_call label="Neuer Ordner" name="New Folder"/> + <menu_item_call label="Neues Skript" name="New Script"/> + <menu_item_call label="Neue Notiz" name="New Note"/> + <menu_item_call label="Neue Geste" name="New Gesture"/> <menu name="New Clothes"> - <menu_item_call label="Neues Hemd" name="New Shirt" /> - <menu_item_call label="Neue Hose" name="New Pants" /> - <menu_item_call label="Neue Schuhe" name="New Shoes" /> - <menu_item_call label="Neue Socken" name="New Socks" /> - <menu_item_call label="Neue Jacke" name="New Jacket" /> - <menu_item_call label="Neuer Rock" name="New Skirt" /> - <menu_item_call label="Neue Handschuhe" name="New Gloves" /> - <menu_item_call label="Neues Unterhemd" name="New Undershirt" /> - <menu_item_call label="Neue Unterhose" name="New Underpants" /> + <menu_item_call label="Neues Hemd" name="New Shirt"/> + <menu_item_call label="Neue Hose" name="New Pants"/> + <menu_item_call label="Neue Schuhe" name="New Shoes"/> + <menu_item_call label="Neue Socken" name="New Socks"/> + <menu_item_call label="Neue Jacke" name="New Jacket"/> + <menu_item_call label="Neuer Rock" name="New Skirt"/> + <menu_item_call label="Neue Handschuhe" name="New Gloves"/> + <menu_item_call label="Neues Unterhemd" name="New Undershirt"/> + <menu_item_call label="Neue Unterhose" name="New Underpants"/> </menu> <menu name="New Body Parts"> - <menu_item_call label="Neue Form/Gestalt" name="New Shape" /> - <menu_item_call label="Neue Haut" name="New Skin" /> - <menu_item_call label="Neues Haar" name="New Hair" /> - <menu_item_call label="Neue Augen" name="New Eyes" /> + <menu_item_call label="Neue Form/Gestalt" name="New Shape"/> + <menu_item_call label="Neue Haut" name="New Skin"/> + <menu_item_call label="Neues Haar" name="New Hair"/> + <menu_item_call label="Neue Augen" name="New Eyes"/> </menu> - <menu_item_call label="Teleportieren" name="Landmark Open" /> - <menu_item_call label="Öffnen" name="Animation Open" /> - <menu_item_call label="Öffnen" name="Sound Open" /> - <menu_item_call label="Objekt löschen" name="Purge Item" /> - <menu_item_call label="Objekt wiederherstellen" name="Restore Item" /> - <menu_item_call label="Öffnen" name="Open" /> - <menu_item_call label="Eigenschaften" name="Properties" /> - <menu_item_call label="Umbenennen" name="Rename" /> - <menu_item_call label="Asset-UUID kopieren" name="Copy Asset UUID" /> - <menu_item_call label="Kopieren" name="Copy" /> - <menu_item_call label="Einfügen" name="Paste" /> - <menu_item_call label="Löschen" name="Delete" /> - <menu_item_call label="Zum Outfit hinzufügen" name="Add To Outfit" /> - <menu_item_call label="Outfit ersetzen" name="Replace Outfit" /> - <menu_item_call label="Objekte abnehmen" name="Take Off Items" /> - <menu_item_call label="Konferenz-Chat starten" name="Conference Chat Folder" /> - <menu_item_call label="Wiedergeben/Abspielen" name="Sound Play" /> - <menu_item_call label="Landmarken-Info" name="Teleport To Landmark" /> - <menu_item_call label="In Welt abspielen" name="Animation Play" /> - <menu_item_call label="Lokal wiedergeben" name="Animation Audition" /> - <menu_item_call label="Instant Message senden" name="Send Instant Message" /> - <menu_item_call label="Teleport anbieten..." name="Offer Teleport..." /> - <menu_item_call label="Konferenz-Chat starten" name="Conference Chat" /> - <menu_item_call label="Aktivieren" name="Activate" /> - <menu_item_call label="Deaktivieren" name="Deactivate" /> - <menu_item_call label="Von Körper abnehmen" name="Detach From Yourself" /> - <menu_item_call label="Anziehen" name="Object Wear" /> - <menu label="Anhängen an" name="Attach To" /> - <menu label="An HUD hängen" name="Attach To HUD" /> - <menu_item_call label="Anziehen" name="Wearable Wear" /> - <menu_item_call label="Bearbeiten" name="Wearable Edit" /> - <menu_item_call label="Ausziehen" name="Take Off" /> - <menu_item_call label="--keine Optionen--" name="--no options--" /> + <menu_item_call label="Teleportieren" name="Landmark Open"/> + <menu_item_call label="Öffnen" name="Animation Open"/> + <menu_item_call label="Öffnen" name="Sound Open"/> + <menu_item_call label="Objekt löschen" name="Purge Item"/> + <menu_item_call label="Objekt wiederherstellen" name="Restore Item"/> + <menu_item_call label="Öffnen" name="Open"/> + <menu_item_call label="Eigenschaften" name="Properties"/> + <menu_item_call label="Umbenennen" name="Rename"/> + <menu_item_call label="Asset-UUID kopieren" name="Copy Asset UUID"/> + <menu_item_call label="Kopieren" name="Copy"/> + <menu_item_call label="Einfügen" name="Paste"/> + <menu_item_call label="Löschen" name="Delete"/> + <menu_item_call label="Objekte abnehmen" name="Take Off Items"/> + <menu_item_call label="Zum Outfit hinzufügen" name="Add To Outfit"/> + <menu_item_call label="Outfit ersetzen" name="Replace Outfit"/> + <menu_item_call label="Konferenz-Chat starten" name="Conference Chat Folder"/> + <menu_item_call label="Wiedergeben/Abspielen" name="Sound Play"/> + <menu_item_call label="Landmarken-Info" name="Teleport To Landmark"/> + <menu_item_call label="In Welt abspielen" name="Animation Play"/> + <menu_item_call label="Lokal wiedergeben" name="Animation Audition"/> + <menu_item_call label="Instant Message senden" name="Send Instant Message"/> + <menu_item_call label="Teleport anbieten..." name="Offer Teleport..."/> + <menu_item_call label="Konferenz-Chat starten" name="Conference Chat"/> + <menu_item_call label="Aktivieren" name="Activate"/> + <menu_item_call label="Deaktivieren" name="Deactivate"/> + <menu_item_call label="Von Körper abnehmen" name="Detach From Yourself"/> + <menu_item_call label="Zu letzter Position zurücksetzen" name="Restore to Last Position"/> + <menu_item_call label="Anziehen" name="Object Wear"/> + <menu label="Anhängen an" name="Attach To"/> + <menu label="An HUD hängen" name="Attach To HUD"/> + <menu_item_call label="Bearbeiten" name="Wearable Edit"/> + <menu_item_call label="Anziehen" name="Wearable Wear"/> + <menu_item_call label="Ausziehen" name="Take Off"/> + <menu_item_call label="--keine Optionen--" name="--no options--"/> </menu> diff --git a/indra/newview/skins/default/xui/de/menu_mini_map.xml b/indra/newview/skins/default/xui/de/menu_mini_map.xml new file mode 100644 index 0000000000000000000000000000000000000000..9b7117cf42c5c76416ab04c919965a2c3afda344 --- /dev/null +++ b/indra/newview/skins/default/xui/de/menu_mini_map.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="popup"> + <menu_item_call label="Zoom Nah" name="Zoom Close"/> + <menu_item_call label="Zoom Mittel" name="Zoom Medium"/> + <menu_item_call label="Zoom Weit" name="Zoom Far"/> + <menu_item_call label="Verfolgung abschalten" name="Stop Tracking"/> + <menu_item_call label="Profil..." name="Profile"/> +</menu> diff --git a/indra/newview/skins/default/xui/de/menu_viewer.xml b/indra/newview/skins/default/xui/de/menu_viewer.xml index 9305d0731a39496160932414ef9220854eccb44b..279024616af42e1104fb436d63f6e6bd2aa42dd6 100644 --- a/indra/newview/skins/default/xui/de/menu_viewer.xml +++ b/indra/newview/skins/default/xui/de/menu_viewer.xml @@ -2,10 +2,14 @@ <menu_bar name="Main Menu"> <menu label="Datei" name="File"> <tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/> - <menu_item_call label="Bild hochladen ([COST] L$)..." name="Upload Image"/> - <menu_item_call label="Sound hochladen ([COST] L$)..." name="Upload Sound"/> - <menu_item_call label="Animation hochladen ([COST] L$)..." name="Upload Animation"/> - <menu_item_call label="Mehrfach-Upload ([COST] L$ pro Datei)..." name="Bulk Upload"/> + <menu label="Hochladen" name="upload"> + <menu_item_call label="Bild ([COST] L$)..." name="Upload Image"/> + <menu_item_call label="Sound ([COST] L$)..." name="Upload Sound"/> + <menu_item_call label="Animation ([COST] L$)..." name="Upload Animation"/> + <menu_item_call label="Mehrfach-Upload ([COST] L$ pro Datei)..." name="Bulk Upload"/> + <menu_item_separator label="-----------" name="separator"/> + <menu_item_call label="Standard-Berechtigungen einstellen..." name="perm prefs"/> + </menu> <menu_item_separator label="-----------" name="separator"/> <menu_item_call label="Fenster schließen" name="Close Window"/> <menu_item_call label="Alle Fenster schließen" name="Close All Windows"/> @@ -19,7 +23,7 @@ </menu> <menu label="Bearbeiten" name="Edit"> <menu_item_call label="Rückgängig" name="Undo"/> - <menu_item_call label="Neu" name="Redo"/> + <menu_item_call label="Wiederherstellen" name="Redo"/> <menu_item_separator label="-----------" name="separator"/> <menu_item_call label="Ausschneiden" name="Cut"/> <menu_item_call label="Kopieren" name="Copy"/> @@ -68,7 +72,7 @@ <menu_item_check label="Symbolleiste" name="Toolbar"/> <menu_item_check label="Lokaler Chat" name="Chat History"/> <menu_item_check label="Unterhalten" name="Instant Message"/> - <menu_item_call label="Inventar" name="Inventory"/> + <menu_item_check label="Inventar" name="Inventory"/> <menu_item_check label="Aktive Sprecher" name="Active Speakers"/> <menu_item_check label="Stummschalten-Liste" name="Mute List"/> <menu_item_separator label="-----------" name="separator2"/> @@ -79,6 +83,7 @@ <menu_item_separator label="-----------" name="separator3"/> <menu_item_check label="Statistikleiste" name="Statistics Bar"/> <menu_item_check label="Grundstücksgrenzen" name="Property Lines"/> + <menu_item_check label="Absperrungen" name="Banlines"/> <menu_item_check label="Landeigentümer" name="Land Owners"/> <menu_item_separator label="-----------" name="separator4"/> <menu label="Schwebe-Tipps" name="Hover Tips"> @@ -111,14 +116,14 @@ <menu_item_separator label="-----------" name="separator3"/> <menu_item_call label="Als abwesend anzeigen" name="Set Away"/> <menu_item_call label="Als beschäftigt anzeigen" name="Set Busy"/> - <menu_item_call label="Alle Animationen stoppen" name="Stop All Animations"/> + <menu_item_call label="Avatar nicht mehr animieren" name="Stop Animating My Avatar"/> <menu_item_call label="Tasten freigeben" name="Release Keys"/> <menu_item_separator label="-----------" name="separator4"/> <menu_item_call label="Kontostatistik..." name="Account History..."> - <on_click name="AccountHistory_url" userdata="WebLaunchAccountHistory,http://secondlife.com/account/transactions.php?lang=de" /> + <on_click name="AccountHistory_url" userdata="WebLaunchAccountHistory,http://secondlife.com/account/transactions.php?lang=de"/> </menu_item_call> <menu_item_call label="Mein Konto verwalten..." name="Manage My Account..."> - <on_click name="ManageMyAccount_url" userdata="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=de" /> + <on_click name="ManageMyAccount_url" userdata="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=de"/> </menu_item_call> <menu_item_call label="L$ kaufen..." name="Buy and Sell L$..."/> <menu_item_separator label="-----------" name="separator5"/> @@ -166,7 +171,6 @@ <menu_item_call label="Auf Auswahl zoomen" name="Zoom to Selection"/> <menu_item_call label="Objekt kaufen" name="Menu Object Take"/> <menu_item_call label="Kopie nehmen/machen" name="Take Copy"/> - <menu_item_call label="Objekt wieder im Inventar speichern" name="Save Object Back to My Inventory"/> <menu_item_call label="Objekt wieder in Objektinhalt speichern" name="Save Object Back to Object Contents"/> <menu_item_separator label="-----------" name="separator6"/> <menu_item_call label="Skriptwarnung/Fehlerfenster anzeigen" name="Show Script Warning/Error Window"/> @@ -184,7 +188,9 @@ <menu_item_separator label="-----------" name="separator"/> <menu_item_call label="Offizielles Linden-Blog..." name="Official Linden Blog..."/> <menu_item_separator label="-----------" name="separator2"/> - <menu_item_call label="Scripting-Portal..." name="Scripting Portal..."/> + <menu_item_call label="Scripting-Portal..." name="Scripting Portal..."> + <on_click name="ScriptingPortal_url" userdata="WebLaunchLSLWiki,http://wiki.secondlife.com/wiki/LSL_Portal/de" /> + </menu_item_call> <menu_item_separator label="-----------" name="separator3"/> <menu_item_call label="Missbrauch melden..." name="Report Abuse..."/> <menu_item_call label="Rempler, Stöße und Schläge..." name="Bumps, Pushes &amp; Hits..."/> @@ -192,14 +198,15 @@ <menu_item_separator label="-----------" name="separator7"/> <menu label="Fehlermeldungen" name="Bug Reporting"> <menu_item_call label="Allgemeiner Probleme-Tracker..." name="Public Issue Tracker..."/> - <menu_item_call label="Hilfe zum Allgemeinen Probleme-Tracker..." name="Publc Issue Tracker Help..."/> + <menu_item_call label="Hilfe zum Allgemeinen Probleme-Tracker..." name="Publc Issue Tracker Help..."> + <on_click name="PublicIssueTrackerHelp_url" userdata="WebLaunchPublicIssueHelp,http://wiki.secondlife.com/wiki/Issue_tracker/de" /> + </menu_item_call> <menu_item_separator label="-----------" name="separator7"/> <menu_item_call label="Fehlermeldungs-1x1..." name="Bug Reporing 101..."> - <on_click function="PromptShowURL" name="BugReporting101_url" - userdata="WebLaunchBugReport101,http://wiki.secondlife.com/wiki/Bug_Reporting_101" /> + <on_click name="BugReporting101_url" userdata="WebLaunchBugReport101,http://wiki.secondlife.com/wiki/Bug_Reporting_101/de"/> </menu_item_call> <menu_item_call label="Sicherheitsfragen..." name="Security Issues..."> - <on_click name="SecurityIssues_url" userdata="WebLaunchSecurityIssues,http://wiki.secondlife.com/wiki/Security_issues/de" /> + <on_click name="SecurityIssues_url" userdata="WebLaunchSecurityIssues,http://wiki.secondlife.com/wiki/Security_issues/de"/> </menu_item_call> <menu_item_call label="QA-Wiki..." name="QA Wiki..."/> <menu_item_separator label="-----------" name="separator9"/> diff --git a/indra/newview/skins/default/xui/de/notifications.xml b/indra/newview/skins/default/xui/de/notifications.xml index 3d474a7c70e06619b2e4ed28381937a44280be4a..e920b2451f5c985e7940cc6b6c2145d24862bc3e 100644 --- a/indra/newview/skins/default/xui/de/notifications.xml +++ b/indra/newview/skins/default/xui/de/notifications.xml @@ -1,5770 +1,3014 @@ -<?xml version="1.0" ?><notifications> - - <global name="skipnexttime"> - - Nicht mehr anzeigen - </global> - - <global name="alwayschoose"> - - Diese Option immer auswählen - </global> - - <template name="okbutton"> - <form> - <button - - - name="OK" - text="$yestext"/> - </form> - </template> - - <template name="okignore"> - <form> - <button - - - name="OK" - text="$yestext"/> - <ignore text="$ignoretext"/> - </form> - </template> - - <template name="okcancelbuttons"> - <form> - <button - - - name="OK" - text="$yestext"/> - <button - - name="Cancel" - text="$notext"/> - </form> - </template> - - <template name="okcancelignore"> - <form> - <button - - - name="OK" - text="$yestext"/> - <button - - name="Cancel" - text="$notext"/> - <ignore text="$ignoretext"/> - </form> - </template> - - <template name="okhelpbuttons"> - <form> - <button - - - name="OK" - text="$yestext"/> - <button - - name="Help" - text="$helptext"/> - </form> - </template> - - <template name="yesnocancelbuttons"> - <form> - <button - - - name="Yes" - text="$yestext"/> - <button - - name="No" - text="$notext"/> - <button - - name="Cancel" - text="$canceltext"/> - </form> - </template> - - <notification - functor="GenericAcknowledge" - - name="MissingAlert" - > -Der Fehler „[_NAME]“ fehlt in notifications.xml. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="FloaterNotFound" - > -Floater-Fehler: Folgende Steuerelemente wurden nicht gefunden: - -[CONTROLS] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="TutorialNotFound" - > -Derzeit ist kein Tutorial verfügbar. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="GenericAlert" - > -[MESSAGE] - </notification> - - <notification - - name="GenericAlertYesCancel" - > -[MESSAGE] - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="Ja"/> - </notification> - - <notification - - name="WearableSave" - > -Änderung an aktueller Kleidung/Körperteil speichern? - <usetemplate - canceltext="Abbrechen" - name="yesnocancelbuttons" - notext="Nicht speichern" - yestext="Speichern"/> - </notification> - - <notification - - name="CompileQueueSaveText" - > -Der Text für ein Skript konnte aus folgendem Grund nicht hochgeladen werden: [REASON]. Bitte versuchen Sie es erneut. - </notification> - - <notification - - name="CompileQueueSaveBytecode" - > -Eine kompiliertes Skript konnte aus folgendem Grund nicht hochgeladen werden: [REASON]. Bitte versuchen Sie es erneut. - </notification> - - <notification - - name="WriteAnimationFail" - > -Fehler beim Schreiben von Animationsdaten. Bitte versuchen Sie es erneut. - </notification> - - <notification - - name="UploadAuctionSnapshotFail" - > -Eine Auktions-Screenshot konnte aus folgendem Grund nicht hochgeladen werden: [REASON] - </notification> - - <notification - - name="UnableToViewContentsMoreThanOne" - > -Es kann nur jeweils der Inhalt von einem Objekt angezeigt werden. -Wählen Sie ein einzelnes Objekt aus und versuchen Sie es erneut. - </notification> - - <notification - - name="SaveClothingBodyChanges" - > -Änderung an Kleidung/Körperteilen speichern? - <usetemplate - canceltext="Abbrechen" - name="yesnocancelbuttons" - notext="Nicht speichern" - yestext="Alles speichern"/> - </notification> - - <notification - - name="GrantModifyRights" - > -Die Gewährung von Änderungsrechten an andere Einwohner ermöglicht es diesen, JEDES BELIEBIGE Objekt zu ändern oder an sich zu nehmen, das Sie in der Second Life-Welt besitzen. Seien Sie SEHR vorsichtig beim Erteilen dieser Erlaubnis. -Möchten Sie [FIRST_NAME] [LAST_NAME] Änderungsrechte gewähren? - <usetemplate - name="okcancelbuttons" - notext="Nein" - yestext="Ja"/> - </notification> - - <notification - - name="GrantModifyRightsMultiple" - > -Die Gewährung von Änderungsrechten an andere Einwohner ermöglicht es diesen, JEDES BELIEBIGE Objekt zu ändern, das Sie in der Second Life-Welt besitzen. Seien Sie SEHR vorsichtig beim Erteilen dieser Erlaubnis. -Möchten Sie den ausgewählten Einwohnern Änderungsrechte gewähren? - <usetemplate - name="okcancelbuttons" - notext="Nein" - yestext="Ja"/> - </notification> - - <notification - - name="RevokeModifyRights" - > -Möchten Sie [FIRST_NAME] [LAST_NAME] die Änderungsrechte entziehen? - <usetemplate - name="okcancelbuttons" - notext="Nein" - yestext="Ja"/> - </notification> - - <notification - - name="RevokeModifyRightsMultiple" - > -Möchten Sie den ausgewählten Einwohnern die Änderungsrechte entziehen? - <usetemplate - name="okcancelbuttons" - notext="Nein" - yestext="Ja"/> - </notification> - - <notification - - name="UnableToCreateGroup" - > -Gruppe konnte nicht erstellt werden. -[MESSAGE] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="PanelGroupApply" - > -[NEEDS_APPLY_MESSAGE] -[WANT_APPLY_MESSAGE] - <usetemplate - canceltext="Abbrechen" - name="yesnocancelbuttons" - notext="Änderungen verwerfen" - yestext="Änderungen übernehmen"/> - </notification> - - <notification - - name="MustSpecifyGroupNoticeSubject" - > -Geben Sie einen Betreff für die Gruppenmitteilung ein. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="AddGroupOwnerWarning" - > -Sie sind im Begriff, Gruppenmitgliedern die Rolle [ROLE_NAME] zuzuweisen. -Diese Rolle kann Mitgliedern nicht mehr entzogen werden. -Sie müssen die Rolle selbst niederlegen. -Möchten Sie fortfahren? - <usetemplate - ignoretext="Beim Hinzufügen von Gruppenmitgliedern zur Eigentümerrolle" - name="okcancelignore" - notext="Nein" - yestext="Ja"/> - </notification> - - <notification - - name="AssignDangerousActionWarning" - > -Sie sind im Begriff, der Rolle „[ROLE_NAME]“ die Fähigkeit „[ACTION_NAME]“ zuzuweisen. - - *ACHTUNG* - Mitglieder in einer Rolle mit dieser Fähigkeit können sich selbst - - und allen anderen Mitgliedern – Rollen zuweisen, die mehr Rechte - beinhalten als sie derzeit haben, und damit nahezu - Eigentümerrechte erreichen. Überlegen Sie sich, wem Sie diese Fähigkeit - verleihen. - -Der Rolle „[ROLE_NAME]“ diese Fähigkeit zuweisen? - <usetemplate - name="okcancelbuttons" - notext="Nein" - yestext="Ja"/> - </notification> - - <notification - - name="AssignDangerousAbilityWarning" - > -Sie sind im Begriff, der Rolle „[ROLE_NAME]“ die Fähigkeit „[ACTION_NAME]“ zuzuweisen. - - *ACHTUNG* - Mitglieder in einer Rolle mit dieser Fähigkeit können sich selbst - - und allen anderen Mitgliedern – alle Fähigkeiten zuweisen und - damit fast Eigentümerrechte erreichen. - -Der Rolle „[ROLE_NAME]“ diese Fähigkeit zuweisen? - <usetemplate - name="okcancelbuttons" - notext="Nein" - yestext="Ja"/> - </notification> - - <notification - - name="ClickPublishHelpLand" - > -Auswahl von „In Suche veröffentlichen“ -Dieses Kontrollkästchen zeigt Folgendes an: -- diese Parzelle in den Suchergebnissen -- die öffentlichen Objekte dieser Parzelle -- diese Parzelle in der Websuche - </notification> - - <notification - - name="ClickPublishHelpLandDisabled" - > -Diese Parzelle kann nicht in der Suche angezeigt werden, da sie sich in einer Region befindet, die das verbietet. - </notification> - - <notification - - name="ClickPublishHelpAvatar" - > -Auswahl von „In Suche anzeigen“ zeigt Folgendes an: -- Ihr Profil in den Suchergebnissen -- einen Link auf Ihr Profil in den öffentlichen Gruppenseiten - </notification> - - <notification - - name="ClickPartnerHelpAvatar" - > -Auf der [SECOND_LIFE] Website können Sie anderen Einwohnern eine Partnerschaft vorschlagen und bestehende Partnerschaften lösen. - -Die Second Life Website für weitere Informationen über Partnerschaften öffnen? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="Gehe zu Seite"/> - </notification> - - <notification - - name="ClickWebProfileHelpAvatar" - > -Wenn dieser Einwohner einen Webprofil-URL angegeben hat, können Sie: - * Auf „Laden“ klicken und die Seite in dieser Web-Registerkarte anzeigen. - * Auf Laden > „In externem Browser“ klicken und die Seite im Standard-Browser anzeigen. - * Auf Laden > „Start-URL“ klicken und zum Webprofil des Bewohners zurückkehren. - -In Ihrem eigenen Profil können Sie jeden beliebigen URL als Ihr Webprofil eingeben und mit OK übernehmen. -Wenn sich andere Einwohner Ihr Profil ansehen, können sie diesen URL besuchen. - </notification> - - <notification - - name="JoinGroupCanAfford" - > -Der Beitritt zu dieser Gruppe kostet [COST] L$. -Fortfahren? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="Beitreten"/> - </notification> - - <notification - - name="JoinGroupCannotAfford" - > -Der Beitritt zu dieser Gruppe kostet [COST] L$. -Sie haben nicht genug L$, um dieser Gruppe beizutreten. - </notification> - - <notification - - name="LandBuyPass" - > -Sie können dieses Land („[PARCEL_NAME]“) für [COST] L$ -[TIME] Stunden lang betreten. Pass kaufen? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="SalePriceRestriction" - > -Der Verkaufspreis muss beim allgemeinen Verkauf über 0 L$ liegen. -Wählen Sie eine bestimmte Person aus, wenn Sie für 0 L$ verkaufen. - </notification> - - <notification - - name="ConfirmLandSaleChange" - - > -Die ausgewählten [LAND_SIZE] qm Land werden zum Verkauf freigegeben. -Der Verkaufspreis beträgt [SALE_PRICE] L$ und wird automatisch für den Verkauf an [NAME] autorisiert. - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmLandSaleToAnyoneChange" - > -ACHTUNG: Wenn Sie auf „An jeden verkaufen“ klicken, kann jeder in Second Life Ihr Land kaufen, auch Einwohner in anderen Regionen. - -Die ausgewählten [LAND_SIZE] qm Land werden zum Verkauf freigegeben. -Der Verkaufspreis beträgt [SALE_PRICE] L$ und wird automatisch für den Verkauf an [NAME] autorisiert. - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="ReturnObjectsDeededToGroup" - > -Möchten Sie alle Ihre Objekte auf dieser Parzelle, die der Gruppe „[NAME]“ gehören, zurück in das jeweilige Inventar ihrer vorherigen Eigentümer transferieren? - -*WARNUNG* Alle nicht transferierbaren Objekte, die der Gruppe übertragen wurden, werden dabei gelöscht! - -Objekte: [N] - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="ReturnObjectsOwnedByUser" - > -Möchten Sie alle Objekte auf dieser Parzelle, die dem Einwohner „[NAME]“ gehören, in das jeweilige Inventar ihrer Eigentümer transferieren? - -Objekte: [N] - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="ReturnObjectsOwnedBySelf" - > -Möchten Sie alle Objekte auf dieser Parzelle, die Ihnen gehören, zurück in Ihr Inventar transferieren? - -Objekte: [N] - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="ReturnObjectsNotOwnedBySelf" - > -Möchten Sie alle Objekte auf dieser Parzelle, die NICHT Ihnen gehören, in das Inventar ihrer Eigentümer transferieren? -Transferierbare Objekte, die an eine Gruppe übertragen wurden, werden ihren vorherigen Eigentümern zurückgegeben. - -*WARNUNG* Alle nicht transferierbaren Objekte, die der Gruppe übertragen wurden, werden dabei gelöscht! - -Objekte: [N] - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="ReturnObjectsNotOwnedByUser" - > -Möchten Sie alle Objekte auf dieser Parzelle, die NICHT [NAME] gehören, in das Inventar ihrer Eigentümer transferieren? -Transferierbare Objekte, die an eine Gruppe übertragen wurden, werden ihren vorherigen Eigentümern zurückgegeben. - -*WARNUNG* Alle nicht transferierbaren Objekte, die der Gruppe übertragen wurden, werden dabei gelöscht! - -Objekte: [N] - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="ReturnAllTopObjects" - > -Möchten Sie alle aufgeführten Objekte ihren Eigentümern zurückgeben? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="DisableAllTopObjects" - > -Möchten Sie alle Objekte in dieser Region deaktivieren? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="ReturnObjectsNotOwnedByGroup" - > -Objekte auf dieser Parzelle, die von der Gruppe [NAME] nicht gemeinsam genutzt werden, an ihre Eigentümer zurückgeben? - -Objekte: [N] - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="UnableToDisableOutsideScripts" - > -Skriptdeaktivierung nicht möglich. -Für die gesamte Region ist Schaden aktiviert. -Damit Waffen funktionieren, müssen Skripts erlaubt sein. - </notification> - - <notification - - name="MustBeInParcel" - > -Sie müssen auf einer Landparzelle stehen, um ihren Landepunkt festzulegen. - </notification> - - <notification - - name="PromptRecipientEmail" - > -Bitte geben Sie für den/die Empfänger eine gültige Email-Adresse ein. - </notification> - - <notification - - name="PromptSelfEmail" - > -Geben Sie Ihre E-Mail-Adresse ein. - </notification> - - <notification - - name="PromptMissingSubjMsg" - > -Foto mit Standardbetreff bzw. -nachricht als E-Mail versenden? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="ErrorProcessingSnapshot" - > -Fehler beim Verarbeiten der Fotodaten - </notification> - - <notification - - name="ErrorEncodingSnapshot" - > -Fehler beim Erstellen des Fotos! - </notification> - - <notification - - name="ErrorUploadingPostcard" - > -Ein Foto konnte aus folgendem Grund nicht gesendet werden: [REASON] - </notification> - - <notification - - name="ErrorUploadingReportScreenshot" - > -Ein Report-Screenshot konnte aus folgendem Grund nicht hochgeladen werden: [REASON] - </notification> - - <notification - - name="MustAgreeToLogIn" - > -Bevor Sie sich in [SECOND_LIFE] anmelden können, müssen Sie den Nutzungsbedingungen zustimmen. - </notification> - - <notification - - name="CouldNotPutOnOutfit" - > -Outfit konnte nicht angezogen werden. -Der Outfit-Ordner enthält keine Kleidung, Körperteile oder Anhänge. - </notification> - - <notification - - name="CannotWearTrash" - > -Kleider oder Körperteile im Papierkorb können nicht getragen werden - </notification> - - <notification - - name="CannotWearInfoNotComplete" - > -Sie können das Objekt nicht anziehen, weil es noch nicht geladen wurde. Warten Sie kurz und versuchen Sie es dann noch einmal. - </notification> - - <notification - - name="MustHaveAccountToLogIn" - > -Hoppla! Da fehlt noch etwas. -Geben Sie bitte den Vor- und den Nachnamen Ihres Avatars ein. - -Sie benötigen ein Benutzerkonto, um [SECOND_LIFE] betreten zu können. Möchten Sie jetzt ein Benutzerkonto anlegen? - <usetemplate - name="okcancelbuttons" - notext="Erneut versuchen" - yestext="Neues Benutzerkonto anlegen"/> - </notification> - - <notification - - name="AddClassified" - > -Anzeigen erscheinen für eine Woche unter „Anzeigen“ im Suchverzeichnis. Füllen Sie Ihre Anzeige aus und klicken Sie auf „Veröffentlichen...“, um sie zum Verzeichnis hinzuzufügen. Sie werden gebeten, einen Preis zu bezahlen, wenn Sie auf „Veröffentlichen“ klicken. Wenn Sie mehr bezahlen oder ein Benutzer nach Ihren Suchbegriffen sucht, erscheint Ihre Anzeige weiter oben in der Liste. - <usetemplate - ignoretext="Beim Hinzufügen einer neuen Anzeige" - name="okcancelignore" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="DeleteClassified" - > -Anzeige „[NAME]“ löschen? -Gebühren werden nicht rückerstattet. - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="ClassifiedSave" - > -Änderung an Anzeige [NAME] speichern? - <usetemplate - canceltext="Abbrechen" - name="yesnocancelbuttons" - notext="Nicht speichern" - yestext="Speichern"/> - </notification> - - <notification - - name="DeleteAvatarPick" - > -Auswahl [PICK] löschen? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="PromptGoToEventsPage" - > -Zur [SECOND_LIFE] Events-Webseite? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="SelectProposalToView" - > -Wählen Sie ein Angebot zur Ansicht. - </notification> - - <notification - - name="SelectHistoryItemToView" - > -Wählen Sie ein Element zur Ansicht. - </notification> - - <notification - - name="ResetShowNextTimeDialogs" - > -Möchten Sie alle Popups wieder aktivieren, die Sie zuvor auf „Nicht mehr anzeigen“ gesetzt haben? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="SkipShowNextTimeDialogs" - > -Möchten Sie alle Popups, die übersprungen werden können, deaktivieren? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="CacheWillClear" - > -Der Cache wird nach einem Neustart von [SECOND_LIFE] geleert. - </notification> - - <notification - - name="CacheWillBeMoved" - > -Der Cache wird nach einem Neustart von [SECOND_LIFE] verschoben. -Hinweis: Der Cache wird dabei gelöscht/geleert. - </notification> - - <notification - - name="ChangeConnectionPort" - > -Die Port-Einstellungen werden nach einem Neustart von [SECOND_LIFE] wirksam. - </notification> - - - - <notification - - name="GoToAuctionPage" - > -Zur [SECOND_LIFE]-Webseite, um Auktionen anzuzeigen oder ein Gebot abzugeben? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="SaveChanges" - > -Änderungen speichern? - <usetemplate - canceltext="Abbrechen" - name="yesnocancelbuttons" - notext="Nicht speichern" - yestext="Speichern"/> - </notification> - - <notification - - name="GestureSaveFailedTooManySteps" - > -Speichern der Geste fehlgeschlagen. -Die Geste besteht aus zu vielen Schritten. -Löschen Sie einige Schritte und versuchen Sie es erneut. - </notification> - - <notification - - name="GestureSaveFailedTryAgain" - > -Speichern der Geste fehlgeschlagen. Warten Sie kurz und versuchen Sie es dann noch einmal. - </notification> - - <notification - - name="GestureSaveFailedObjectNotFound" - > -Geste konnte nicht gespeichert werden, da das Objekt oder das zugehörige Objektinventar nicht gefunden wurden. -Das Objekt ist möglicherweise außer Reichweite oder wurde gelöscht. - </notification> - - <notification - - name="GestureSaveFailedReason" - > -Eine Geste konnte aus folgendem Grund nicht gespeichert werden: [REASON]. Speichern Sie die Geste bitte später. - </notification> - - <notification - - name="SaveNotecardFailObjectNotFound" - > -Notizkarte konnte nicht gespeichert werden, da das Objekt oder das zugehörige Objektinventar nicht gefunden wurden. -Das Objekt ist möglicherweise außer Reichweite oder wurde gelöscht. - </notification> - - <notification - - name="SaveNotecardFailReason" - > -Eine Notizkarte konnte aus folgendem Grund nicht gespeichert werden: [REASON]. Speichern Sie die Notizkarte bitte später. - </notification> - - <notification - - name="ScriptCannotUndo" - > -Es konnten nicht alle Änderungen in Ihrer Skriptversion rückgängig gemacht werden. -Möchten Sie die letzte gespeicherte Version vom Server laden? -(**Warnung** Dieser Vorgang kann nicht rückgängig gemacht werden.) - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="SaveScriptFailReason" - > -Ein Skript konnte aus folgendem Grund nicht gespeichert werden: [REASON]. Speichern Sie das Skript bitte später. - </notification> - - <notification - - name="SaveScriptFailObjectNotFound" - > -Skript konnte nicht gespeichert werden, weil das zugehörige Objekt nicht gefunden wurde. -Das Objekt ist möglicherweise außer Reichweite oder wurde gelöscht. - </notification> - - <notification - - name="SaveBytecodeFailReason" - > -Ein kompiliertes Skript konnte aus folgendem Grund nicht gespeichert werden: [REASON]. Speichern Sie das Skript bitte später. - </notification> - - <notification - - name="CouldNotStartStopScript" - > -Skript konnte nicht gestartet oder beendet werden, weil das zugehörige Objekt nicht gefunden wurde. -Das Objekt ist möglicherweise außer Reichweite oder wurde gelöscht. - </notification> - - <notification - - name="CannotDownloadFile" - > -Dateidownload nicht möglich - </notification> - - <notification - - name="CannotWriteFile" - > -Datei [[FILE]] kann nicht geschrieben werden - </notification> - - <notification - - name="UnsupportedHardware" - > -Achtung: Ihr System erfüllt nicht die Mindestanforderungen von Second Life. Dies kann eine schlechte Darstellungsleistung in Second Life zur Folge haben. Für nicht unterstützte Systemkonfigurationen bieten wir keinen technischen Support. - -MINSPECS -Die Seite [_URL] für weitere Informationen öffnen? - <url option="0" name="url"> - - http://secondlife.com/support/sysreqs.php?lang=de - </url> - <usetemplate - ignoretext="Bei Entdeckung nicht unterstützter Hardware" - name="okcancelignore" - notext="Nein" - yestext="Ja"/> - </notification> - - <notification - - name="UnknownGPU" - > -Ihr System verwendet eine uns zurzeit unbekannte Grafikkarte. -Dies ist häufig der Fall bei neuer Hardware, die wir noch nicht testen konnten. -Second Life funktioniert aller Voraussicht nach normal, möglicherweise müssen Sie aber die Grafikeinstellungen anpassen. -(Bearbeiten > Einstellungen > Grafik). - <form name="form"> - <ignore name="ignore" - text="Bei Entdeckung einer unbekannten Grafikkarte"/> - </form> - </notification> - - <notification - - name="DisplaySettingsNoShaders" - > -[SECOND_LIFE] ist bei der Initialisierung der Grafiktreiber abgestürzt. -Die Grafikqualität wird auf eine niedrige Stufe zurückgesetzt, um einige typische Treiberfehler zu vermeiden. -Einige Grafikfunktionen werden ausgeschaltet. -Wir empfehlen die Aktualisierung Ihrer Grafikkartentreiber. -Sie können die Grafikqualität unter „Einstellungen“ > „Grafik“ wieder erhöhen. - </notification> - - <notification - - name="RegionNoTerraforming" - > -Die Region [REGION] erlaubt kein Terraforming. - </notification> - - <notification - - name="CannotCopyWarning" - > -Sie sind nicht berechtigt, dieses Objekt zu kopieren und verlieren es aus Ihrem Inventar, wenn Sie es weggeben. Möchten Sie dieses Objekt anbieten? - <usetemplate - name="okcancelbuttons" - notext="Nein" - yestext="Ja"/> - </notification> - - <notification - - name="CannotGiveItem" - > -Inventarobjekt kann nicht übergeben werden. - </notification> - - <notification - - name="TransactionCancelled" - > -Transaktion abgebrochen. - </notification> - - <notification - - name="TooManyItems" - > -Es können maximal 42 Objekte auf einmal in das Inventar transferiert werden. - </notification> - - <notification - - name="NoItems" - > -Sie sind nicht berechtigt, die ausgewählten Objekte zu kopieren. - </notification> - - <notification - - name="CannotCopyCountItems" - > -Sie sind nicht berechtigt, [COUNT] der ausgewählten Objekte zu kopieren. Diese Objekte werden aus Ihrem Inventar gelöscht. -Möchten Sie diese Objekte weggeben? - <usetemplate - name="okcancelbuttons" - notext="Nein" - yestext="Ja"/> - </notification> - - <notification - - name="CannotGiveCategory" - > -Sie sind nicht berechtigt, den ausgewählten Ordner zu kopieren. - </notification> - - <notification - - name="FreezeAvatar" - > -Diesen Avatar einfrieren? -Der Avatar wird außer Gefecht gesetzt und kann sich nicht mehr bewegen, chatten oder mit der Welt interagieren. - <usetemplate - canceltext="Abbrechen" - name="yesnocancelbuttons" - notext="Auftauen" - yestext="Einfrieren"/> - </notification> - - <notification - - name="FreezeAvatarFullname" - > -[AVATAR_NAME] einfrieren? -Der Avatar wird außer Gefecht gesetzt und kann sich nicht mehr bewegen, chatten oder mit der Welt interagieren. - <usetemplate - canceltext="Abbrechen" - name="yesnocancelbuttons" - notext="Auftauen" - yestext="Einfrieren"/> - </notification> - - <notification - - name="EjectAvatarFullname" - > -[AVATAR_NAME] von Ihrem Land werfen? - <usetemplate - canceltext="Abbrechen" - name="yesnocancelbuttons" - notext="Ausschließen und Verbannen" - yestext="Ausschließen"/> - </notification> - - <notification - - name="EjectAvatarNoBan" - > -Diesen Avatar aus Ihrem Land werfen? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="Hinauswerfen"/> - </notification> - - <notification - - name="EjectAvatarFullnameNoBan" - > -[AVATAR_NAME] aus Ihrem Land werfen? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="Hinauswerfen"/> - </notification> - - <notification - - name="AcquireErrorTooManyObjects" - > -FEHLER: Zu viele Objekte ausgewählt. - </notification> - - <notification - - name="AcquireErrorObjectSpan" - > -FEHLER: Die Objekte überspannen mehrere Regionen. -Verschieben Sie alle betreffenden Objekte in dieselbe Region. - </notification> - - <notification - - name="PromptGoToCurrencyPage" - > -[EXTRA] - -[URL] für Informationen zum Deviseneinkauf öffnen? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="UnableToLinkObjects" - > -Verknüpfung dieser [COUNT] Objekte nicht möglich. -Sie können maximal [MAX] Objekte verknüpfen. - </notification> - - <notification - - name="CannotLinkIncompleteSet" - > -Sie können nur vollständige Objektsätze verknüpfen und Sie müssen mehr als ein Objekt auswählen. - </notification> - - <notification - - name="CannotLinkModify" - > -Verknüpfung nicht möglich, da Sie nicht alle Objekte bearbeiten dürfen. - -Stellen Sie sicher, dass kein Objekt gesperrt ist und alle Objekte Ihnen gehören. - </notification> - - <notification - - name="CannotLinkDifferentOwners" - > -Verknüpfung nicht möglich, da nicht alle Objekte denselben Eigentümer haben. - -Stellen Sie sicher, dass alle ausgewählten Objekte Ihnen gehören. - </notification> - - <notification - - name="NoFileExtension" - > -Kein Dateityp für Datei: „[FILE]“ - -Vergewissern Sie sich, dass die Datei den richtigen Dateityp hat. - </notification> - - <notification - - name="InvalidFileExtension" - > -Ungültige Datei-Endung [EXTENSION] -Erwartet wurde [VALIDS] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="CannotUploadSoundFile" - > -Sounddatei konnte nicht hochgeladen werden: -[FILE] - </notification> - - <notification - - name="SoundFileNotRIFF" - > -Die Datei ist anscheinend keine RIFF WAVE-Datei: -[FILE] - </notification> - - <notification - - name="SoundFileNotPCM" - > -Die Datei ist anscheinend keine PCM WAVE-Audiodatei: -[FILE] - </notification> - - <notification - - name="SoundFileInvalidChannelCount" - > -Die Datei hat eine ungültige Anzahl Tonkanäle (muss Mono oder Stereo sein): -[FILE] - </notification> - - <notification - - name="SoundFileInvalidSampleRate" - > -Die Sample-Rate dieser Datei wird nicht unterstützt (muss 44,1 K sein): -[FILE] - </notification> - - <notification - - name="SoundFileInvalidWordSize" - > -Die Word-Größe dieser Datei wird nicht unterstützt (muss 8 oder 16 Bit sein): -[FILE] - </notification> - - <notification - - name="SoundFileInvalidHeader" - > -„Daten“-Chunk in WAV-Header nicht gefunden: -[FILE] - </notification> - - <notification - - name="SoundFileInvalidTooLong" - > -Audiodatei ist zu lang (max. 10 Sekunden): -[FILE] - </notification> - - <notification - - name="ProblemWithFile" - > -Problem mit Datei [FILE]: - -[ERROR] - </notification> - - <notification - - name="CannotOpenTemporarySoundFile" - > -Temporäre komprimierte Sounddatei konnte nicht geöffnet werden: [FILE] - </notification> - - <notification - - name="UnknownVorbisEncodeFailure" - > -Unbekannter Vorbis-Kodierungsfehler in: [FILE] - </notification> - - <notification - - name="CorruptResourceFile" - > -Ressourcendatei beschädigt: [FILE] - </notification> - - <notification - - name="UnknownResourceFileVersion" - > -Unbekannte Linden-Ressourcenversion in Datei: [FILE] - </notification> - - <notification - - name="UnableToCreateOutputFile" - > -Ausgabedatei konnte nicht erstellt werden: [FILE] - </notification> - - <notification - - name="DoNotSupportBulkAnimationUpload" - > -Der Mehrfach-Upload von Animationsdateien wird zurzeit nicht unterstützt. - </notification> - - <notification - - name="CannotUploadReason" - > -Datei [FILE] kann aus folgendem Grund nicht hochgeladen werden: [REASON] -Bitte versuchen Sie es erneut. - </notification> - - <notification - - name="CannotCreateLandmarkNotOwner" - > -Sie können hier keine Landmarke erstellen, da der Landeigentümer dies verboten hat. - </notification> - - <notification - - name="CannotRecompileSelectObjectsNoScripts" - > -„Rekompilieren“ nicht möglich. -Objekt mit Skript wählen. - </notification> - - <notification - - name="CannotRecompileSelectObjectsNoPermission" - > -„Rekompilieren“ nicht möglich. - -Wählen Sie Objekte mit Skripts, die Sie bearbeiten dürfen. - </notification> - - <notification - - name="CannotResetSelectObjectsNoScripts" - > -„Zurücksetzen“ nicht möglich. - -Wählen Sie Objekte mit Skripts. - </notification> - - <notification - - name="CannotResetSelectObjectsNoPermission" - > -„Zurücksetzen“ nicht möglich. - -Wählen Sie Objekte mit Skripts, die Sie bearbeiten dürfen. - </notification> - - <notification - - name="CannotSetRunningSelectObjectsNoScripts" - > -„Ausführen“ von Skripts nicht möglich. - -Wählen Sie Objekte mit Skripts. - </notification> - - <notification - - name="CannotSetRunningNotSelectObjectsNoScripts" - > -„Deaktivieren“ von Skripts nicht möglich. - -Wählen Sie Objekte mit Skripts. - </notification> - - <notification - - name="NoFrontmostFloater" - > -Kein vorderster Floater zum Speichern. - </notification> - - <notification - - name="SeachFilteredOnShortWords" - > -Ihre Suchanfrage wurde geändert. -Zu kurze Begriffe wurden entfernt. - -Ihre Suchanfrage: [FINALQUERY] - </notification> - - <notification - - name="SeachFilteredOnShortWordsEmpty" - > -Ihre Suchbegriffe sind zu kurz. -Es wurde keine Suche durchgeführt. - </notification> - - <notification - - name="CouldNotTeleportReason" - > -Teleport fehlgeschlagen. -[REASON] - </notification> - - <notification - - name="CannotSetLandOwnerNothingSelected" - > -Landeigentümer kann nicht festgelegt werden: -Keine Parzelle ausgewählt. - </notification> - - <notification - - name="CannotSetLandOwnerMultipleRegions" - > -Eine erzwungene Landübertragung ist nicht möglich, da die Auswahl mehrere Regionen umfasst. Wählen Sie ein kleineres Gebiet und versuchen Sie es erneut. - </notification> - - <notification - - name="ForceOwnerAuctionWarning" - > -Diese Parzelle steht zur Auktion. Eine zwangsweise Eigentumsübertragung beendet die Auktion und verärgert womöglich Einwohner, die bereits ein Gebot abgegeben haben. Eigentumsübertragung erzwingen? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="CannotContentifyNothingSelected" - > -Inhaltsidentifizierung nicht möglich: -Keine Parzelle ausgewählt. - </notification> - - <notification - - name="CannotContentifyNoRegion" - > -Inhaltsidentifizierung nicht möglich: -Keine Region ausgewählt. - </notification> - - <notification - - name="CannotReleaseLandNothingSelected" - > -Land kann nicht aufgegeben werden: -Keine Parzelle ausgewählt. - </notification> - - <notification - - name="CannotReleaseLandNoRegion" - > -Land kann nicht aufgegeben werden: -Region nicht gefunden. - </notification> - - <notification - - name="CannotBuyLandNothingSelected" - > -Land kann nicht gekauft werden: -Keine Parzelle ausgewählt. - </notification> - - <notification - - name="CannotBuyLandNoRegion" - > -Land kann nicht gekauft werden: -Kann die Region nicht finden, in der sich dieses Land befindet. - </notification> - - <notification - - name="CannotCloseFloaterBuyLand" - > -Das Fenster „Land kaufen“ kann erst geschlossen werden, -nachdem Second Life den Transaktionspreis geschätzt hat. - </notification> - - <notification - - name="CannotDeedLandNothingSelected" - > -Land kann nicht übertragen werden: -Keine Parzelle ausgewählt. - </notification> - - <notification - - name="CannotDeedLandNoGroup" - > -Land kann nicht übertragen werden: -Keine Gruppe ausgewählt. - </notification> - - <notification - - name="CannotDeedLandNoRegion" - > -Land kann nicht übertragen werden: -Kann die Region nicht finden, in der sich dieses Land befindet. -Bitte melden Sie dies über „Hilfe“ > „Fehler melden“. - </notification> - - <notification - - name="CannotDeedLandMultipleSelected" - > -Land kann nicht übertragen werden: -Mehrere Parzellen ausgewählt. - -Wählen Sie eine einzelne Parzelle. - </notification> - - <notification - - name="ParcelCanPlayMedia" - > -Dieser Ort kann Streaming-Medien abspielen. -Streaming-Medien erfordern eine schnelle Internet-Verbindung. - -Streaming-Medien abspielen, wenn verfügbar? -(Sie können diese Option später unter „Einstellungen“ > „Audio & Video“ ändern.) - <usetemplate - name="okcancelbuttons" - notext="Deaktivieren" - yestext="Medien wiedergeben"/> - </notification> - - <notification - - name="CannotDeedLandWaitingForServer" - > -Land kann nicht übertragen werden: -Warte auf Server für Eigentümerinformationen. - -Bitte versuchen Sie es erneut. - </notification> - - <notification - - name="CannotDeedLandNoTransfer" - > -Land kann nicht übertragen werden: -Die Region [REGION] erlaubt keine Landübertragung. - </notification> - - <notification - - name="CannotReleaseLandWatingForServer" - > -Land kann nicht aufgegeben werden: -Server muss Parzelleninformation aktualisieren. - -Versuchen Sie es in einigen Sekunden erneut. - </notification> - - <notification - - name="CannotReleaseLandSelected" - > -Land kann nicht aufgegeben werden: -Die ausgewählten Parzellen gehören Ihnen nicht. - -Wählen Sie eine einzelne Parzelle. - </notification> - - <notification - - name="CannotReleaseLandDontOwn" - > -Land kann nicht aufgegeben werden: -Ihnen fehlt die Berechtigung zur Freigabe dieser Parzelle. -Parzellen, die Ihnen gehören, werden grün dargestellt. - </notification> - - <notification - - name="CannotReleaseLandRegionNotFound" - > -Land kann nicht aufgegeben werden: -Kann die Region nicht finden, in der sich dieses Land befindet. - -Bitte melden Sie dies über „Hilfe“ > „Fehler melden“. - </notification> - - <notification - - name="CannotReleaseLandNoTransfer" - > -Land kann nicht aufgegeben werden: -Die Region [REGION] erlaubt keine Landübertragung. - </notification> - - <notification - - name="CannotReleaseLandPartialSelection" - > -Land kann nicht aufgegeben werden: -Zum Freigeben müssen Sie eine ganze Parzelle auswählen. - -Wählen Sie eine ganze Parzelle oder teilen Sie Ihre Parzelle. - </notification> - - <notification - - name="ReleaseLandWarning" - > -Sie sind im Begriff, [AREA] qm Land aufzugeben. -Wenn Sie diese Parzelle aufgeben, wird sie ohne L$-Erstattung von Ihrem Landbesitz entfernt. - -Dieses Land aufgeben? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="CannotDivideLandNothingSelected" - > -Land kann nicht aufgeteilt werden: - -Keine Parzellen ausgewählt. - </notification> - - <notification - - name="CannotDivideLandPartialSelection" - > -Land kann nicht aufgeteilt werden: - -Sie haben eine ganze Parzelle ausgewählt. -Wählen Sie einen Parzellenabschnitt aus. - </notification> - - <notification - - name="LandDivideWarning" - > -Wenn Sie dieses Land teilen, wird diese Parzelle in zwei geteilt, jede mit ihren eigenen Einstellungen. Einige dieser Einstellungen werden aufgrund dieses Vorgangs zurückgesetzt. - -Land teilen? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="CannotDivideLandNoRegion" - > -Land kann nicht aufgeteilt werden: -Kann die Region nicht finden, in der sich dieses Land befindet. - -Bitte melden Sie dies über „Hilfe“ > „Fehler melden“. - </notification> - - <notification - - name="CannotJoinLandNoRegion" - > -Land kann nicht zusammengelegt werden: -Kann die Region nicht finden, in der sich dieses Land befindet. - -Bitte melden Sie dies über „Hilfe“ > „Fehler melden“. - </notification> - - <notification - - name="CannotJoinLandNothingSelected" - > -Land kann nicht zusammengelegt werden: -Keine Parzellen ausgewählt. - </notification> - - <notification - - name="CannotJoinLandEntireParcelSelected" - > -Land kann nicht zusammengelegt werden: -Sie haben nur eine Parzelle ausgewählt. - -Wählen Sie Land auf beiden Parzellen aus. - </notification> - - <notification - - name="CannotJoinLandSelection" - > -Land kann nicht zusammengelegt werden: -Sie müssen mehrere Parzellen auswählen. - -Wählen Sie Land auf beiden Parzellen aus. - </notification> - - <notification - - name="JoinLandWarning" - > -Beim Zusammenlegen entsteht aus den vom Auswahlrechteck -erfassten Parzellen eine große Parzelle. -Sie müssen der neuen Parzelle einen Namen geben und ihre Optionen festlegen. - -Land zusammenlegen? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmNotecardSave" - > -Um das Objekt kopieren oder anzeigen zu können, müssen Sie zuerst diese Notizkarte speichern. Notizkarte speichern? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmItemCopy" - > -Dieses Objekt in Ihr Inventar kopieren? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="Kopieren"/> - </notification> - - <notification - - name="ResolutionSwitchFail" - > -Auflösung konnte nicht auf [RESX] x [RESY] gesetzt werden - </notification> - - <notification - - name="ErrorUndefinedGrasses" - > -Fehler: Nicht definierte Gräser: [SPECIES] - </notification> - - <notification - - name="ErrorUndefinedTrees" - > -Fehler: Nicht definierte Bäume: [SPECIES] - </notification> - - <notification - - name="CannotSaveWearableOutOfSpace" - > -„[NAME]“ konnte nicht in Kleidungsdatei gespeichert werden. Geben Sie Speicherplatz auf dem Computer frei und speichern Sie das Kleidungsstück erneut. - </notification> - - <notification - - name="CannotSaveToAssetStore" - > -[NAME] kann nicht in Zentral-Asset-Speicher geladen werden. -Dies ist ein temporärer Fehler. Bitte passen Sie das Kleidungsstück in einigen Minuten noch einmal an und speichern Sie es erneut. - -Tritt dieses Problem wiederholt auf, klicken Sie auf das Pulldown-Menü „Hilfe“ > „Fehler melden“ und geben Sie Details zu Ihrem Netzwerk-Setup an. - </notification> - - <notification - - name="YouHaveBeenLoggedOut" - > -Sie wurden von [SECOND_LIFE] abgemeldet: - [MESSAGE] -Klicken Sie auf „IM & Chat anzeigen“, um vorhandene Nachrichten und Chat weiterhin anzuzeigen. Klicken Sie andernfalls auf „Beenden“, um [SECOND_LIFE] sofort zu beenden. - <usetemplate - name="okcancelbuttons" - notext="Beenden" - yestext="IM & Chat anzeigen"/> - </notification> - - <notification - - name="OnlyOfficerCanBuyLand" - > -Landkauf für Gruppe nicht möglich: -Sie sind nicht berechtigt, Land für die aktive Gruppe zu kaufen. - </notification> - - <notification - - label="Freund hinzufügen" - name="AddFriend" - > -Freunde können sich gegenseitig die Berechtigung erteilen, sich auf der Karte zu verfolgen und Online-Status Benachrichtigungen zu empfangen. - -[NAME] Freundschaft anbieten? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - label="Freund hinzufügen" - name="AddFriendWithMessage" - > -Freunde können sich gegenseitig die Berechtigung erteilen, sich auf der Karte zu verfolgen und Online-Status Benachrichtigungen zu empfangen. - -[NAME] Freundschaft anbieten? - <form name="form"> - <input name="message" type="text"> -Wollen wir Freunde sein? - </input> - <button - - - name="Offer" - text="OK"/> - <button - - name="Cancel" - text="Abbrechen"/> - </form> - </notification> - - <notification - - name="RemoveFromFriends" - > -Möchten Sie [FIRST_NAME] [LAST_NAME] aus Ihrer Freundesliste entfernen? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="RemoveMultipleFromFriends" - > -Möchten Sie mehrere Freunde aus Ihrer Freundesliste entfernen? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="GodDeleteAllScriptedPublicObjectsByUser" - > -Möchten Sie alle geskripteten Objekte von -** [AVATAR_NAME] ** -auf allen anderen Ländern in diesem Sim löschen? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="GodDeleteAllScriptedObjectsByUser" - > -Möchten Sie ALLE geskripteten Objekte von -** [AVATAR_NAME] ** -auf ALLEN LÄNDERN in diesem Sim LÖSCHEN? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="GodDeleteAllObjectsByUser" - > -Möchten Sie ALLE Objekte (einschließlich geskriptete) von -** [AVATAR_NAME] ** -auf ALLEN LÄNDERN in diesem Sim LÖSCHEN? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="BlankClassifiedName" - > -Geben Sie einen Namen für die Anzeige ein. - </notification> - - <notification - - name="MinClassifiedPrice" - > -Der Mindestbetrag für die Listung ist [MIN_PRICE] L$. - -Geben sie einen höheren Betrag ein. - </notification> - - <notification - - name="ConfirmObjectDeleteLock" - > -Mindestens ein ausgewähltes Objekt ist gesperrt. - -Möchten Sie diese Objekte löschen? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectDeleteNoCopy" - > -Mindestens ein ausgewähltes Objekt kann nicht kopiert werden. - -Möchten Sie diese Objekte löschen? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectDeleteNoOwn" - > -Mindestens eines der ausgewählten Objekt gehört nicht Ihnen. - -Möchten Sie diese Objekte löschen? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectDeleteLockNoCopy" - > -Mindestens ein Objekt ist gesperrt. -Mindestens ein Objekt kann nicht kopiert werden. - -Möchten Sie diese Objekte löschen? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectDeleteLockNoOwn" - > -Mindestens ein Objekt ist gesperrt. -Mindestens ein Objekt gehört nicht Ihnen. - -Möchten Sie diese Objekte löschen? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectDeleteNoCopyNoOwn" - > -Mindestens ein Objekt kann nicht kopiert werden. -Mindestens ein Objekt gehört nicht Ihnen. - -Möchten Sie diese Objekte löschen? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectDeleteLockNoCopyNoOwn" - > -Mindestens ein Objekt ist gesperrt. -Mindestens ein Objekt kann nicht kopiert werden. -Mindestens ein Objekt gehört nicht Ihnen. - -Möchten Sie diese Objekte löschen? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectTakeLock" - > -Mindestens ein Objekt ist gesperrt. - -Möchten Sie diese Objekte nehmen? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectTakeNoOwn" - > -Nicht alle Objekte, die Sie aufgenommen haben, gehören Ihnen. -Wenn Sie fortfahren, werden die Rechte für den nächsten Eigentümer angewandt und Sie können die Objekte möglicherweise nicht bearbeiten oder kopieren. - -Möchten Sie diese Objekte nehmen? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectTakeLockNoOwn" - > -Mindestens ein Objekt ist gesperrt. -Nicht alle Objekte, die Sie aufgenommen haben, gehören Ihnen. -Wenn Sie fortfahren, werden die Rechte für den nächsten Eigentümer abgefragt und Sie können die Objekte möglicherweise nicht bearbeiten oder kopieren. -Die aktuelle Auswahl können Sie jedoch aufnehmen. - -Möchten Sie diese Objekte nehmen? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="CantBuyLandAcrossMultipleRegions" - > -Landkauf nicht möglich, da die Auswahl mehrere Regionen umfasst. - -Wählen Sie ein kleineres Gebiet und versuchen Sie es erneut. - </notification> - - <notification - - name="DeedLandToGroup" - > -Die Schenkung dieser Parzelle setzt voraus, dass die Gruppe über ausreichende Landnutzungsrechte verfügt. -Dem Eigentümer wird der Kaufpreis für das Land nicht rückerstattet. Bei Verkauf der übertragenen Parzelle wird der Erlös zwischen den Gruppenmitgliedern aufgeteilt. - -Der Gruppe „[GROUP_NAME]“ - [AREA] m² Land schenken? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="DeedLandToGroupWithContribution" - > -Die Schenkung dieser Parzelle setzt voraus, dass die Gruppe über ausreichende Landnutzungsrechte verfügt. -Die Schenkung beinhaltet eine Landübertragung an die Gruppe von „[FIRST_NAME] [LAST_NAME]“. -Dem Eigentümer wird der Kaufpreis für das Land nicht rückerstattet. Bei Verkauf der übertragenen Parzelle wird der Erlös zwischen den Gruppenmitgliedern aufgeteilt. - -Der Gruppe „[GROUP_NAME]“ - [AREA] m² Land schenken? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="DisplaySetToSafe" - > -Es wurden sichere Anzeige-Einstellungen gewählt, da die Option -safe verwendet wurde. - </notification> - - <notification - - name="DisplaySetToRecommended" - > -Es wurden die für Ihre Systemkonfiguration empfohlenen Anzeige-Einstellungen gewählt. - </notification> - - <notification - - name="ErrorMessage" - > -[ERROR_MESSAGE] - </notification> - - <notification - - name="AvatarMoved" - > -Ihr [TYPE]-Ort ist zurzeit nicht verfügbar. [HELP] -Sie wurden zur nächstgelegenen Region teleportiert. - </notification> - - <notification - - name="ClothingLoading" - > -Ihre Kleidung wird noch heruntergeladen. -Sie können [SECOND_LIFE] normal verwenden. Andere Benutzer können Sie korrekt dargestellt sehen. - <form name="form"> - <ignore name="ignore" - text="Wenn das Herunterladen von Kleidung lange dauert"/> - </form> - </notification> - - <notification - - name="FirstRun" - > -Die Installation von [SECOND_LIFE] ist abgeschlossen. - -Wenn Sie [SECOND_LIFE] das erste Mal verwenden, müssen Sie ein Konto anlegen, bevor Sie sich anmelden können. -Möchten Sie auf www.secondlife.com ein Konto erstellen? - <usetemplate - name="okcancelbuttons" - notext="Weiter" - yestext="Neues Konto..."/> - </notification> - - <notification - - name="LoginPacketNeverReceived" - > -Die Verbindung kann nicht hergestellt werden. Möglicherweise besteht ein Problem mit Ihrer Internetverbindung oder den Second Life-Servern. - -Überprüfen Sie Ihre Internetverbindung und versuchen Sie es dann erneut, oder klicken Sie auf „Hilfe“, um zu unserer Supportseite zu gelangen, oder klicken Sie auf „Teleportieren“, um nach Hause zu teleportieren. - <form name="form"> - <button - - - name="OK" - text="OK"/> - <button - - name="Help" - text="Hilfe"/> - <button - - name="Teleport" - text="Teleportieren"/> - </form> - </notification> - - <notification - - name="WelcomeChooseSex" - > -Ihr Avatar erscheint jeden Moment. - -Benutzen Sie die Pfeiltasten, um sich fortzubewegen. -Drücken Sie F1 für Hilfe oder für weitere Informationen über [SECOND_LIFE]. -Bitte wählen Sie einen männlichen oder weiblichen Avatar. -Sie können sich später noch umentscheiden. - <usetemplate - name="okcancelbuttons" - notext="Weiblich" - yestext="Männlich"/> - </notification> - - <notification - - name="NotEnoughCurrency" - > -[NAME] [PRICE] L$ Sie haben nicht genügend L$, um diese Aktion auszuführen. - </notification> - - <notification - - name="GrantedModifyRights" - > -Sie verfügen über Änderungsrechte für die Objekte von [FIRST_NAME] [LAST_NAME]. - </notification> - - <notification - - name="RevokedModifyRights" - > -Ihnen wurden die Änderungsrechte für die Objekte von [FIRST_NAME] [LAST_NAME] entzogen. - </notification> - - <notification - - name="FlushMapVisibilityCaches" - > -Der Kartencache dieser Region wird geleert. -Diese Aktion ist nur beim Debugging sinnvoll. -(Auf dem Produktionssystem warten Sie einfach 5 Minuten. Die Karten werden nach erneuter Anmeldung automatisch aktualisiert.) - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="OnlyCopyContentsOfSingleItem" - > -Es kann nur jeweils der Inhalt von einem Objekt kopiert werden. -Wählen Sie ein einzelnes Objekt aus und versuchen Sie es erneut. - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="KickUsersFromRegion" - > -Alle Einwohner in dieser Region nach Hause teleportieren? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="EstateObjectReturn" - > -Möchten Sie wirklich alle Objekte zurückgeben, die [USER_NAME] gehören? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="InvalidTerrainBitDepth" - > -Die Regionstexturen konnten nicht festgelegt werden: -Die Terraintextur [TEXTURE_NUM] hat eine ungültige Bit-Tiefe [TEXTURE_BIT_DEPTH]. - -Ersetzen Sie die Textur [TEXTURE_NUM] mit einer Bilddatei von maximal 512x512 und 24 Bit und klicken Sie dann erneut auf „Übernehmen“. - </notification> - - <notification - - name="InvalidTerrainSize" - > -Die Regionstexturen konnten nicht festgelegt werden: -Die Terraintextur [TEXTURE_NUM] ist mit [TEXTURE_SIZE_X]x[TEXTURE_SIZE_Y] zu groß. - -Ersetzen Sie die Textur [TEXTURE_NUM] mit einer Bilddatei von maximal 512x512 und 24 Bit und klicken Sie dann erneut auf „Übernehmen“. - </notification> - - <notification - - name="RawUploadStarted" - > -Hochladen gestartet. Je nach Verbindungsgeschwindigkeit kann der Vorgang bis zu 2 Minuten dauern. - </notification> - - <notification - - name="ConfirmBakeTerrain" - > -Möchten Sie das aktuelle Terrain formen, es zum Mittelpunkt der oberen und unteren Terraingrenzen und zum Standard des „Zurücksetzen“-Tools machen? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="MaxAllowedAgentOnRegion" - > -Es sind maximal [MAX_AGENTS] zulässige Einwohner erlaubt. - </notification> - - <notification - - name="MaxBannedAgentsOnRegion" - > -Es sind maximal [MAX_BANNED] verbannte Einwohner erlaubt. - </notification> - - <notification - - name="MaxAgentOnRegionBatch" - > -Fehler beim Versuch, [NUM_ADDED] Agenten hinzuzufügen: -Überschreitet den Grenzwert [MAX_AGENTS] [LIST_TYPE] um [NUM_EXCESS]. - </notification> - - <notification - - name="MaxAllowedGroupsOnRegion" - > -Es sind maximal [MAX_GROUPS] zulässige Gruppen erlaubt. - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="Formen"/> - </notification> - - <notification - - name="MaxManagersOnRegion" - > -Es sind maximal [MAX_MANAGER] verbannte Einwohner erlaub. - </notification> - - <notification - - name="OwnerCanNotBeDenied" - > -Der Eigentümer des Grundstücks kann nicht zur Liste der „Verbannten Einwohner“ hinzugefügt werden. - </notification> - - <notification - - name="CanNotChangeAppearanceUntilLoaded" - > -Das Aussehen lässt sich erst ändern, wenn Kleider und Form/Gestalt geladen sind. - </notification> - - <notification - - name="ClassifiedMustBeAlphanumeric" - > -Der Name der Anzeige muss mit einem Buchstaben von A bis Z oder einer Ziffer beginnen. Satzzeichen sind nicht erlaubt. - </notification> - - <notification - - name="CantSetBuyObject" - > -„Objekt kaufen“ nicht möglich, da das Objekt nicht zum Verkauf freigegeben ist. -Geben Sie das Objekt zum Verkauf frei und versuchen Sie es erneut. - </notification> - - <notification - - name="FinishedRawDownload" - > -Raw-Terrain-Datei wurde heruntergeladen nach: -[DOWNLOAD_PATH]. - </notification> - - <notification - - name="DownloadWindowsMandatory" - > -Eine neue Version von [SECOND_LIFE] ist verfügbar. -[MESSAGE] -Sie müssen das Update herunterladen, um [SECOND_LIFE] weiter verwenden zu können. - <usetemplate - name="okcancelbuttons" - notext="Beenden" - yestext="Herunterladen"/> - </notification> - - <notification - - name="DownloadWindows" - > -Eine aktualisierte Version von [SECOND_LIFE] ist verfügbar. -[MESSAGE] -Dieses Update ist nicht erforderlich, für bessere Leistung und Stabilität sollte es jedoch installiert werden. - <usetemplate - name="okcancelbuttons" - notext="Weiter" - yestext="Herunterladen"/> - </notification> - - <notification - - name="DownloadWindowsReleaseForDownload" - > -Eine aktualisierte Version von [SECOND_LIFE] ist verfügbar. -[MESSAGE] -Dieses Update ist nicht erforderlich, für bessere Leistung und Stabilität sollte es jedoch installiert werden. - <usetemplate - name="okcancelbuttons" - notext="Weiter" - yestext="Herunterladen"/> - </notification> - - <notification - - name="DownloadMacMandatory" - > -Eine neue Version von [SECOND_LIFE] ist verfügbar. -[MESSAGE] -Sie müssen das Update herunterladen, um [SECOND_LIFE] weiter verwenden zu können. - -In Ihren Anwendungsordner herunterladen? - <usetemplate - name="okcancelbuttons" - notext="Beenden" - yestext="Herunterladen"/> - </notification> - - <notification - - name="DownloadMac" - > -Eine aktualisierte Version von [SECOND_LIFE] ist verfügbar. -[MESSAGE] -Dieses Update ist nicht erforderlich, für bessere Leistung und Stabilität sollte es jedoch installiert werden. - -In Ihren Anwendungsordner herunterladen? - <usetemplate - name="okcancelbuttons" - notext="Weiter" - yestext="Herunterladen"/> - </notification> - - <notification - - name="DownloadMacReleaseForDownload" - > -Eine aktualisierte Version von [SECOND_LIFE] ist verfügbar. -[MESSAGE] -Dieses Update ist nicht erforderlich, für bessere Leistung und Stabilität sollte es jedoch installiert werden. - -In Ihren Anwendungsordner herunterladen? - <usetemplate - name="okcancelbuttons" - notext="Weiter" - yestext="Herunterladen"/> - </notification> - - <notification - - name="DeedObjectToGroup" - > -Bei Übertragung dieses Objekts erhält die Gruppe: -* An das Objekt bezahlte L$ - <usetemplate - ignoretext="Beim Übertragen von Objekten an Gruppen" - name="okcancelignore" - notext="Abbrechen" - yestext="Übertragung"/> - </notification> - - <notification - - name="WebLaunchExternalTarget" - > -Den System-Webbrowser öffnen, um diesen Inhalt anzuzeigen? - <usetemplate - ignoretext="Wenn der System-Webbrowser zur Anzeige einer Webseite geöffnet wird" - name="okcancelignore" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchJoinNow" - > -Zu www.secondlife.com, um Ihr Konto zu verwalten? - <usetemplate - ignoretext="Beim Starten eines Browsers, um Ihr Konto zu verwalten" - name="okcancelignore" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchBugReport101" - > -Informieren Sie sich im [SECOND_LIFE] Wiki, wie man Fehler richtig meldet. - <usetemplate - ignoretext="Beim Starten eines Browsers, um das Fehlermeldungs-Wiki anzuzeigen" - name="okcancelignore" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchSecurityIssues" - > -Informieren Sie sich im [SECOND_LIFE] Wiki, wie man Sicherheitsprobleme richtig meldet. - <usetemplate - ignoretext="Beim Starten eines Browsers, um das Sicherheitsfragen-Wiki anzuzeigen" - name="okcancelignore" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchQAWiki" - > -Besuchen Sie das [SECOND_LIFE] QA-Wiki. - <usetemplate - ignoretext="Beim Starten eines Browsers, um das QA-Wiki anzuzeigen" - name="okcancelignore" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchPublicIssue" - > -Im [SECOND_LIFE] Allgemeine-Fragen-Tracker können Sie Fehler und andere Probleme melden. - <usetemplate - ignoretext="Beim Starten eines Browsers, um den Allgemeine Probleme Tracker anzuzeigen" - name="okcancelignore" - notext="Abbrechen" - yestext="Gehe zu Seite"/> - </notification> - - <notification - - name="WebLaunchPublicIssueHelp" - > -Informieren Sie sich im [SECOND_LIFE] Wiki über den Allgemeine Fragen-Tracker. - <usetemplate - ignoretext="Beim Starten eines Browsers, um das Allgemeine Fragen-Wiki anzuzeigen" - name="okcancelignore" - notext="Abbrechen" - yestext="Gehe zu Seite"/> - </notification> - - <notification - - name="WebLaunchSupportWiki" - > -Im offiziellen Linden-Blog finden Sie die neuesten Nachrichten und Informationen. - <usetemplate - ignoretext="Beim Starten eines Browsers, um das Blog anzuzeigen" - name="okcancelignore" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchLSLGuide" - > -Zur Scripting-Anleitung, um Scripting-Hilfe zu erhalten? - <usetemplate - ignoretext="Beim Starten eines Browsers, um die Scripting-Anleitung anzuzeigen" - name="okcancelignore" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchLSLWiki" - > -Zum LSL-Portal, um Scripting-Hilfe zu erhalten? - <usetemplate - ignoretext="Beim Starten eines Browsers, um das LSL-Portal anzuzeigen" - name="okcancelignore" - notext="Abbrechen" - yestext="Gehe zu Seite"/> - </notification> - - <notification - - name="ReturnToOwner" - > -Möchten Sie die ausgewählten Objekte an ihre Eigentümer zurückgeben? Transferierbare übertragene Objekte werden ihren früheren Eigentümern zurückgegeben. - -*WARNUNG* Nicht transferierbare übertragene Objekte werden dabei gelöscht! - <usetemplate - ignoretext="Beim Zurückgeben von Objekten an ihre Eigentümer" - name="okcancelignore" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="GroupLeaveConfirmMember" - > -Sie sind Mitglied der Gruppe [GROUP]. -Diese Gruppe verlassen? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmKick" - > -Möchten Sie WIRKLICH alle Benutzer aus dem Grid werfen? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="Alle Benutzer hinauswerfen"/> - </notification> - - <notification - - name="MuteLinden" - > -Lindens können nicht stummgeschaltet werden. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - label="Objekt nach Name stummschalten fehlgeschlagen" - name="MuteByNameFailed" - > -Dieser Name ist bereits stummgeschaltet. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="RemoveItemWarn" - > -Diese Aktion ist zwar erlaubt, aber beim Löschen von Inhalten wird das Objekt beschädigt. Möchten Sie dieses Element löschen? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="CantOfferCallingCard" - > -Sie können gerade keine Visitenkarte übergeben. Warten Sie kurz und versuchen Sie es dann noch einmal. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="CantOfferFriendship" - > -Sie können gerade keine Freundschaft anbieten. Warten Sie kurz und versuchen Sie es dann noch einmal. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="BusyModeSet" - > -Beschäftigt-Modus aktiviert. -Chat und Instant Messages werden ausgeblendet. Instant Messages erhalten Ihre Beschäftigt-Antwort. Alle Teleport-Angebote werden ausgeschlagen. Alle Inventar-Angebote werden in den Papierkorb verschoben. - <usetemplate - ignoretext="Beim Aktivieren des Beschäftigt-Modus" - name="okignore" - yestext="OK"/> - </notification> - - <notification - - name="JoinedTooManyGroupsMember" - > -Sie sind bereits in zu vielen Gruppen Mitglied und können keiner weiteren beitreten. Bitte verlassen Sie eine Gruppe, bevor Sie dieser beitreten oder lehnen Sie das Angebot ab. -Die Option zum Austritt aus einer Gruppe finden Sie unter „Bearbeiten“ > „Gruppen...“. -[NAME] hat Sie eingeladen, einer Gruppe beizutreten. -[INVITE] - <usetemplate - name="okcancelbuttons" - notext="Ablehnen" - yestext="Beitreten"/> - </notification> - - <notification - - name="KickUser" - > -Beim Hinauswerfen dieses Benutzers welche Meldung anzeigen? - <form name="form"> - <input name="message" type="text"> -Sie wurden von einem Administrator abgemeldet. - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Abbrechen"/> - </form> - </notification> - - <notification - - name="KickAllUsers" - > -Beim Hinauswerfen aller Personen vom Grid welche Meldung anzeigen? - <form name="form"> - <input name="message" type="text"> -Sie wurden von einem Administrator abgemeldet. - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Abbrechen"/> - </form> - </notification> - - <notification - - name="FreezeUser" - > -Beim Einfrieren dieses Benutzers welche Meldung anzeigen? - <form name="form"> - <input name="message" type="text"> -Sie wurden eingefroren. Bewegen oder Chatten ist nicht mehr möglich. Ein Administrator wird sich über IM an Sie wenden - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Abbrechen"/> - </form> - </notification> - - <notification - - name="UnFreezeUser" - > -Beim Auftauen dieses Benutzers welche Meldung anzeigen? - <form name="form"> - <input name="message" type="text"> -Sie sind nicht mehr eingefroren. - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Abbrechen"/> - </form> - </notification> - - <notification - - name="OfferTeleport" - > -Teleport an Ihre Position mit der folgenden Meldung anbieten? - <form name="form"> - <input name="message" type="text"> -Triff mich in [REGION] - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Abbrechen"/> - </form> - </notification> - - <notification - - name="OfferTeleportFromGod" - > -Benutzer an Ihrem Standort herbeirufen? - <form name="form"> - <input name="message" type="text"> -Triff mich in [REGION] - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Abbrechen"/> - </form> - </notification> - - <notification - - name="TeleportFromLandmark" - > -Möchten Sie sich wirklich teleportieren? - <usetemplate - ignoretext="Beim Teleportieren von einer Landmarke im Inventar" - name="okcancelignore" - notext="Abbrechen" - yestext="Teleportieren"/> - </notification> - - <notification - - label="Nachricht an alle auf diesem Grundstück" - name="MessageEstate" - > -Geben Sie eine kurze Nachricht ein, die an jede Person auf Ihrem Grundstück gesendet wird. - <form name="form"> - <input name="message" type="text"/> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Abbrechen"/> - </form> - </notification> - - <notification - - label="Linden-Grundstück ändern" - name="ChangeLindenEstate" - > -Sie sind im Begriff, ein Grundstück in Linden-Besitz (Mainland, Teen-Raster, Orientierung usw.) zu verändern. - -Dies ist ÄUSSERST GEFÄHRLICH, da es grundlegende Auswirkungen auf das Benutzererlebnis hat. Auf dem Mainland werden tausende Regionen geändert, was den Spaceserver stark belastet. - -Fortfahren? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - label="Zugang zu Linden-Grundstück ändern" - name="ChangeLindenAccess" - > -Sie sind im Begriff, die Zugangsliste für ein Grundstück in Linden-Besitz (Mainland, Teen-Raster, Orientierung usw.) zu verändern. - -Dies ist GEFÄHRLICH und sollte nur erfolgen, um Objekte/L$ per Hack in und aus dem Raster zu entfernen. -Tausende Regionen werden verändert und der Spaceserver wird dadurch stark belastet. - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - label="Grundstück wählen" - name="EstateAllowedAgentAdd" - > -Nur für dieses Grundstück oder für alle [ALL_ESTATES] zur Erlaubnisliste hinzufügen? - <usetemplate - canceltext="Abbrechen" - name="yesnocancelbuttons" - notext="Alle Grundstücke" - yestext="Dieses Grundstück"/> - </notification> - - <notification - - label="Grundstück wählen" - name="EstateAllowedAgentRemove" - > -Nur für dieses Grundstück oder für alle [ALL_ESTATES] von Erlaubnisliste entfernen? - <usetemplate - canceltext="Abbrechen" - name="yesnocancelbuttons" - notext="Alle Grundstücke" - yestext="Dieses Grundstück"/> - </notification> - - <notification - - label="Grundstück wählen" - name="EstateAllowedGroupAdd" - > -Nur für dieses Grundstück oder für alle [ALL_ESTATES] zur Gruppen-Erlaubnisliste hinzufügen? - <usetemplate - canceltext="Abbrechen" - name="yesnocancelbuttons" - notext="Alle Grundstücke" - yestext="Dieses Grundstück"/> - </notification> - - <notification - - label="Grundstück wählen" - name="EstateAllowedGroupRemove" - > -Nur für dieses Grundstück oder für alle [ALL_ESTATES] von Gruppen-Erlaubnisliste entfernen? - <usetemplate - canceltext="Abbrechen" - name="yesnocancelbuttons" - notext="Alle Grundstücke" - yestext="Dieses Grundstück"/> - </notification> - - <notification - - label="Grundstück wählen" - name="EstateBannedAgentAdd" - > -Zugang nur für dieses Grundstück oder für [ALL_ESTATES] verweigern? - <usetemplate - canceltext="Abbrechen" - name="yesnocancelbuttons" - notext="Alle Grundstücke" - yestext="Dieses Grundstück"/> - </notification> - - <notification - - label="Grundstück wählen" - name="EstateBannedAgentRemove" - > -Einwohner nur für dieses Grundstück oder für alle [ALL_ESTATES] von der Bannliste entfernen? - <usetemplate - canceltext="Abbrechen" - name="yesnocancelbuttons" - notext="Alle Grundstücke" - yestext="Dieses Grundstück"/> - </notification> - - <notification - - label="Grundstück wählen" - name="EstateManagerAdd" - > -Verwalter nur für dieses Grundstück oder für [ALL_ESTATES] festlegen? - <usetemplate - canceltext="Abbrechen" - name="yesnocancelbuttons" - notext="Alle Grundstücke" - yestext="Dieses Grundstück"/> - </notification> - - <notification - - label="Grundstück wählen" - name="EstateManagerRemove" - > -Verwalter nur für dieses Grundstück oder für [ALL_ESTATES] entfernen? - <usetemplate - canceltext="Abbrechen" - name="yesnocancelbuttons" - notext="Alle Grundstücke" - yestext="Dieses Grundstück"/> - </notification> - - <notification - - label="Rauswurf bestätigen" - name="EstateKickUser" - > -Benutzer [EVIL_USER] von diesem Grundstück werfen? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="EstateChangeCovenant" - > -Möchten Sie den Grundstücksvertrag wirklich ändern? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="ProblemImportingEstateCovenant" - > -Problem beim Import des Grundstückvertrags. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="ProblemAddingEstateManager" - > -Es gibt Probleme beim Hinzufügen eines neuen Grundstücksverwalters. Bei mindestens einem Grundstück ist die Verwalterliste voll. - </notification> - - <notification - - name="ProblemAddingEstateGeneric" - > -Problem beim Hinzufügen zu dieser Grundstücksliste. Bei mindestens einem Grundstück ist die Liste voll. - </notification> - - <notification - - name="UnableToLoadNotecard" - > -Notizkarten-Asset konnte nicht geladen werden. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="NotAllowedToViewNotecard" - > -Unzureichende Rechte, um die mit der angeforderten Asset-ID verbundene Notizkarte anzuzeigen. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="MissingNotecardAssetID" - > -Asset-ID für Notizkarte fehlt in Datenbank. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="PublishClassified" - > -Hinweis: Anzeigengebühren werden nicht zurückerstattet. - -Anzeige für [AMOUNT] L$ veröffentlichen? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - - - - - <notification - - label="Neustart bestätigen" - name="ConfirmRestart" - > -Möchten Sie diese Region in 2 Minuten neu starten? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - label="Nachricht an alle in dieser Region" - name="MessageRegion" - > -Geben Sie eine kurze Nachricht ein, die an jede Person in dieser Region gesendet wird. - <form name="form"> - <input name="message" type="text"/> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Abbrechen"/> - </form> - </notification> - - <notification - - label="Terraformen blockieren" - name="HelpRegionBlockTerraform" - > -Wenn diese Option aktiviert ist, können Landeigentümer Ihr Land nicht terraformen. Ausgenommen davon ist die parzelleneigene Einstellung „Terrain bearbeiten“. - -Standard: deaktiviert - </notification> - - <notification - - label="Fliegen blockieren" - name="HelpRegionBlockFly" - > -Wenn diese Option aktiviert ist, ist Fliegen in dieser Region nicht möglich, auch wenn für die Parzelle eine andere Einstellung aktiv ist. - -Standard: deaktiviert - </notification> - - <notification - - label="Schaden zulassen" - name="HelpRegionAllowDamage" - > -Wenn diese Option aktiviert ist, ist das Gesundheitssystem auf allen Parzellen aktiviert, unabhängig von den Parzelleneinstellungen. Ist die Option links deaktiviert, können die Parzelleneigentümer das Gesundheitssystem individuell einschalten. - -Standard: deaktiviert - </notification> - - <notification - - label="Avatar-Limit" - name="HelpRegionAgentLimit" - > -Legt die maximale Anzahl an Avataren für diese Region fest. -Die Leistung hängt von der Anzahl der Avatare in der Region ab. - -Standard: 40 - </notification> - - <notification - - label="Objektbonus" - name="HelpRegionObjectBonus" - > -Der Objektbonus ist ein Multiplikator für die Anzahl an zulässigen Primitiven auf einer Parzelle. Gültig sind Werte zwischen 1 und 10. „1“ erlaubt auf einer 512 qm großen Parzelle 117 Objekte. „2“ erlaubt auf einer 512 qm großen Parzelle 234 Objekte, also die doppelte Menge. Die maximale Objektanzahl in einer Region beträgt unabhängig vom Objektbonus 15.000. -Eine nachträglich Senkung des Objektbonus führt dazu, dass Objekte zurückgegeben oder gelöscht werden. - -Standard: 1.0 - </notification> - - - - - <notification - - label="Stoßen beschränken" - name="HelpRegionRestrictPushObject" - > -Aktivieren sie diese Option, um in der gesamten Region das Stoßen zu beschränken. Wenn aktiviert, können Einwohner nur von sich selbst oder vom Parzelleneigentümer gestoßen werden. -(Stoßen meint die LSL-Funktion llPushObject().) - -Standard: deaktiviert - </notification> - - <notification - - label="Parzelle zusammenlegen/teilen" - name="HelpParcelChanges" - > -Dieses Kontrollkästchen steuert, ob Parzellen des Grundstückseigentümers zusammengelegt bzw. unterteilt werden können. Wenn deaktiviert: - * Nur Grundstückseigentümer bzw. –verwalter können Parzellen zusammenlegen/teilen. * Sie können nur Parzellen zusammenlegen/teilen, die dem Eigentümer oder einer Gruppe gehören, bei der sie entsprechende Gruppenrechte innehaben. -Wenn aktiviert: - * Die Parzelleneigentümer können ihre Parzellen selbst zusammenlegen/teilen. - * Parzellen in Gruppeneigentum können von Mitgliedern mit den entsprechenden Rechten zusammengelegt bzw. unterteilt werden. - -Standard: aktiviert - </notification> - - <notification - - label="Nicht in Suche anzeigen" - name="HelpRegionSearch" - > -Wenn Sie diese Option auswählen, können Parzelleneigentümer ihre Parzellen nicht in der Suche anzeigen lassen - -Standard: deaktiviert - </notification> - - <notification - - label="Alterseinstufung der Region ändern" - name="RegionMaturityChange" - > -Die Alterseinstufung dieser Region wurde aktualisiert. -Es kann eine Weile dauern, bis sich die Änderung auf die Karte auswirkt. - </notification> - - <notification - - label="Landwiederverkauf" - name="HelpRegionLandResell" - > -Grundstückseigentümer und -verwalter können jedes Land im Besitz des Grundstückseigentümers verkaufen. -Ist diese Option deaktiviert, können Käufer ihr Land in dieser Region nicht weiterverkaufen. -Ist die Option aktiviert, können Käufer ihr Land in dieser Region weiterverkaufen. - -Standard: deaktiviert - </notification> - - <notification - - label="Skripts deaktivieren" - name="HelpRegionDisableScripts" - > -Schlechte Sim-Performance ist oftmals auf ein Skript zurückzuführen. Öffnen Sie die Statistikleiste (Strg-Umschalt-1). Sehen Sie sich den Wert für „Simulator Physics FPS“ (Simulator Physik-FPS) an. -Wenn der Wert unter 45 liegt, öffnen Sie den Bereich „Time“ (Zeit) ganz unten in der Statistikleiste. Wenn der Wert für „Script Time“ (Skriptzeit) 25 ms oder höher ist, klicken Sie auf „Top-Skripts“. Der Name und die Position der Skripts, die für die schlechte Performance verantwortlich sind, werden angezeigt. -Wenn Sie das Kontrollkästchen „Skripts deaktivieren“ aktivieren und auf „Übernehmen“ klicken, werden alle Skripts in der Region zeitweilig deaktiviert. Dieser Schritt ist eventuell notwendig, damit Sie an die Position des gemeldeten „Top-Skripts“ reisen können. Sobald Sie dort angekommen sind, sollten Sie das Skript auf die Ursache des Problems hin untersuchen. Möglicherweise müssen Sie sich an den Skript-Eigentümer wenden oder das Objekt löschen bzw. zurückgeben. Um die Skripte in der Region wieder zu aktivieren, deaktivieren Sie „Skript deaktivieren“ und klicken Sie auf „Übernehmen“. - -Standard: deaktiviert - </notification> - - <notification - - label="Kollisionen deaktivieren" - name="HelpRegionDisableCollisions" - > -Schlechte Sim-Performance ist oftmals auf physische Objekte zurückzuführen. -Öffnen Sie die Statistikleiste (Strg-Umschalt-1). Sehen Sie sich den Wert „Simulator Physics FPS“ an. Liegt dieser unter 45, öffnen Sie unten in der Statistikleiste den „Time“-Bereich. Liegt die „Sim Time (Physics)“ bei 20 ms oder darüber, klicken Sie auf „Top-Kollisionsobjekte“. -Der Name und der Standort der physischen Objekte, die das Problem verursachen, werden angezeigt. - -Wenn Sie das Kontrollkästchen „Kollisionen deaktivieren“ aktivieren und auf „Übernehmen“ klicken, werden alle Objekt-Objekt-Kollisionen in der Region zeitweilig deaktiviert. Dieser Schritt ist eventuell notwendig, damit Sie an die Position des gemeldeten „Top-Kollisionsobjekts“ reisen können. Überprüfen Sie das Objekt an der angegebenen Position. -Kollidiert es ständig mit anderen Objekten? Wenden Sie sich eventuell an den Eigentümer des Objekts, löschen Sie es oder geben Sie es zurück. -Deaktivieren Sie die Option „Kollisionen deaktivieren“ und klicken Sie auf „Übernehmen“, um Kollisionen in dieser Region wieder zu aktivieren. - -Standard: deaktiviert - </notification> - - <notification - - label="Physik deaktivieren" - name="HelpRegionDisablePhysics" - > -Das Deaktivieren der Physik ähnelt dem Deaktivieren von Kollisionen, außer dass die gesamte Physiksimulation ausgeschaltet wird. Das hat nicht nur zur Folge, dass Objekte nicht mehr kollidieren, sondern dass Avatare sich nicht mehr bewegen können. - -Diese Option sollte nur verwendet werden, wenn das Deaktivieren von Kollisionen keine ausreichende Leistungssteigerung bringt, um Physikprobleme in der Region oder die Top-Kollisionsobjekte zu erkennen. - -Schalten Sie die Physiksimulation hinterher wieder ein. Andernfalls können sich Avatare nicht mehr bewegen. - -Standard: deaktiviert - </notification> - - <notification - - label="Top-Kollisionsobjekte" - name="HelpRegionTopColliders" - > -Zeigt eine Liste der Objekte mit den potenziell meisten Objekt-Objekt-Kollisionen an. Diese Objekte können die Leistung beeinträchtigen. Wählen Sie „Ansicht“ > „Statistikleiste“ aus und sehen Sie unter „Simulator“ > „Time“ > „Sim Time (Physics)“ nach, ob die Physikberechnung länger als 20 ms dauert. - </notification> - - <notification - - label="Top-Skripts" - name="HelpRegionTopScripts" - > -Zeigt eine Liste der Objekte an, die die meiste Zeit benötigen, um LSL-Skripts auszuführen. Diese Objekte können die Leistung beeinträchtigen. -Wählen Sie „Ansicht“ > „Statistikleiste“ und sehen Sie unter „Simulator“ > „Time“ > „Script Time“ nach, ob mehr als 25 ms für Skripts benötigt werden. - </notification> - - <notification - - label="Region neu starten" - name="HelpRegionRestart" - > -Starten Sie den Serverprozess für diese Region nach der 2-Minuten-Warnung neu. Die Verbindung aller Einwohner in dieser Region wird getrennt. Die Region wird gespeichert und sollte nach 90 Sekunden wieder verfügbar sein. - -Der Neustart der Region behebt die meisten Leistungs-probleme, sollte aber nur nach Anweisung erfolgen. - </notification> - - <notification - - label="Wasserhöhe" - name="HelpRegionWaterHeight" - > -Die Höhe der Wasserlinie in Metern. Liegt dieser Wert unter 20 und haben Sie Wasser nahe am Rand der Welt oder „offenes“ Wasser definiert, wird eine deutliche Lücke sichtbar. - -Standard: 20 - </notification> - - <notification - - label="Obere Terraingrenze" - name="HelpRegionTerrainRaise" - > -Der maximale Betrag in Metern, um den Parzelleneigentümer ihr Terrain über die Standardhöhe des „geformten“ Terrains erhöhen können. - -Standard: 4 - </notification> - - <notification - - label="Untere Terraingrenze" - name="HelpRegionTerrainLower" - > -Der maximale Betrag in Metern, um den Parzelleneigentümer ihr Terrain unter die Standardhöhe des „geformten“ Terrains absenken können. - -Standard: -4 - </notification> - - <notification - - label="RAW-Terrain hochladen" - name="HelpRegionUploadRaw" - > -Mit dieser Schaltfläche laden Sie eine RAW-Datei in die Region hoch, in der Sie sich befinden. -Die Datei muss die korrekten Maße (RGB, 256x256) und 13 Kanäle haben. Um eine neue Terraindatei zu erstellen, laden Sie am besten die vorhandene RAW-Datei herunter. Beginnen Sie damit, den Rot-Kanal (Höhe des Landes) zu bearbeiten und laden Sie die Datei wieder hoch. - -Der Ladevorgang kann bis zu 45 Sekunden dauern. Beachten Sie, dass beim Hochladen einer Terraindatei die Objekte auf dem Land *nicht* verschoben werden, sondern nur das Land und die mit den Parzellen verbundenen Berechtigungen. Dies kann dazu führen, dass Objekte unter dem Terrain verschwinden. - -Weitere Informationen zur Bearbeitung der Höhendaten der Region enthält die F1-Hilfe. - </notification> - - <notification - - label="RAW-Terrain herunterladen" - name="HelpRegionDownloadRaw" - > -Mit dieser Schaltfläche laden Sie eine Datei herunter, welche die Höhendaten, Maße, den Verkaufsstatus der Parzelle und einige Parzellenrechte für diese Region enthält. Wenn Sie diese Datei in einem Programm wie Photoshop öffnen, müssen Sie die Bilddaten eingeben. Diese sind: RGB, 256x256 mit 13 Kanälen. Anders lässt sich diese Terraindatei nicht öffnen. - -Weitere Informationen zur Bearbeitung der Höhendaten der Region enthält die F1-Hilfe. - </notification> - - <notification - - label="Grundstücksonne verwenden" - name="HelpRegionUseEstateSun" - > -Aktivieren Sie diese Option, um in dieser Region denselben Sonnenstand wie auf dem restlichen Grundstück einzustellen. - -Standard: aktiviert - </notification> - - <notification - - label="Sonne fest" - name="HelpRegionFixedSun" - > -Aktivieren Sie diese Option, um den Sonnenstand auf die im Regler definierte Position festzulegen und die Animation auszuschalten. - -Standard: deaktiviert - </notification> - - <notification - - label="Terrain formen" - name="HelpRegionBakeTerrain" - > -Mit dieser Schaltfläche speichern Sie die aktuelle Terrain-Form als neuen Standard für die Region. Nach der Formung können Sie und andere das Land mit der Option „Terrain bearbeiten“ > „Zurücksetzen“ in den ursprünglichen Zustand zurückversetzen. Das geformte Terrain ist auch das Zentrum für die oberen und unteren Terraingrenzen. - </notification> - - <notification - - label="Grundstücksverwalter" - name="HelpEstateEstateManager" - > -Ein Grundstücksverwalter ist ein Einwohner, dem Sie die Kontrolle über die Regions- und Grundstückseinstellungen übertragen haben. Ein Grundstücksverwalter kann alle Einstellungen ändern, außer das Hochladen, Herunterladen und Formen von Terrain. Vor allem kann er Einwohner auf dem Grundstück erlauben und davon verbannen. - -Nur der Eigentümer kann den Grundstücksverwalter bestimmen und entlassen. Der Verwalter hat dieses Recht nicht. Wählen Sie nur vertrauenswürdige Einwohner als Grundstücksverwalter, da Sie letztlich für deren Handlungen verantwortlich sind. - </notification> - - <notification - - label="Globale Zeit verwenden" - name="HelpEstateUseGlobalTime" - > -Aktivieren Sie diese Option, um auf Ihrem Grundstück denselben Sonnenstand wie auf dem Linden-„Mainland“ einzustellen. - -Standard: aktiviert - </notification> - - <notification - - label="Sonne fest" - name="HelpEstateFixedSun" - > -Aktivieren Sie diese Option, um den Sonnenstand auf die im Regler definierte Position festzulegen und die Animation auszuschalten. - </notification> - - <notification - - label="Öffentlich" - name="HelpEstateExternallyVisible" - > -Aktivieren Sie diese Option, um Einwohnern den Zugang zu diesem Grundstück zu erlauben, ohne auf der Zugangsliste zu stehen. - -Standard: aktiviert - </notification> - - <notification - - label="Direktteleport zulassen" - name="HelpEstateAllowDirectTeleport" - > -Wenn aktiviert, können sich Einwohner an jede Stelle auf Ihrem Grundstück teleportieren. Wenn deaktiviert, werden Einwohner zum nächstgelegenen Telehub teleportiert. - -Standard: deaktiviert - </notification> - - <notification - - label="Zugang erlauben" - name="HelpEstateAllowResident" - > -Der Zugang zu diesem Grundstück wird auf die hier aufgeführten Einwohner und Gruppen beschränkt. Diese Einstellung ist nur verfügbar, wenn „Öffentlich“ deaktiviert ist. - </notification> - - <notification - - label="Gruppenzugang erlauben" - name="HelpEstateAllowGroup" - > -Der Zugang zu diesem Grundstück wird auf die hier aufgeführten Einwohner und Gruppen beschränkt. Diese Einstellung ist nur verfügbar, wenn „Öffentlich“ deaktiviert ist. - </notification> - - <notification - - label="E-Mail-Adresse für Missbrauchsmeldungen" - name="HelpEstateAbuseEmailAddress" - > -Geben Sie hier eine E-Mail-Adresse ein, an die Missbrauchsmeldungen von diesem Grundstück gesendet werden. -Wenn dieses Feld leer ist, werden Missbrauchsmeldungen nur an Linden Lab gesendet. - </notification> - - <notification - - label="Zugang verweigern" - name="HelpEstateBanResident" - > -Einwohnern auf dieser Liste wird der Zugang zum Grundstück verwehrt, unabhängig von etwaigen anderen Einstellungen. - </notification> - - <notification - - label="Voice-Chat erlauben" - name="HelpEstateVoiceChat" - > -Die Parzellen auf diesem Grundstück können über eigene Voice-Channel verfügen, die es Einwohnern ermöglichen, sich mit anderen Personen in der Nähe zu unterhalten. - -Standard: deaktiviert - </notification> - - <notification - - label="Falsche Voice-Version" - name="VoiceVersionMismatch" - > -Diese Version von Second ist mit dem Voice-Chat-Feature in dieser Region nicht kompatibel. Damit Voice-Chat funktioniert, müssen Sie Second Life aktualisieren. - </notification> - - <notification - - label="Grunstücksvertrag" - name="HelpEstateCovenant" - > -Ein Grundstücksvertrag ermöglicht es Ihnen, Grundstücksparzellen zu verkaufen. Ohne Vertrag können Sie kein Land verkaufen. Wenn Sie keine Regeln festlegen oder Käufern vor dem Kauf keine anderen Informationen über das Land bereitstellen möchten, können Sie die Vertrags-Notizkarte auch leer lassen. - -Ein Vertrag kann Regeln und Richtlinien, kulturelle Informationen oder einfach nur Ihre eigenen Erwartungen bezüglich der Landnutzung durch den Käufer enthalten. Das kann Zoning, Baubeschränkungen, Zahloptionen und alle möglichen anderen Informationen betreffen, die der neue Eigentümer Ihrer Meinung nach kennen und akzeptieren sollte. - -Der Käufer muss dem Vertrag durch Auswahl dieses Kontrollkästchens zustimmen, bevor der Kauf abgeschlossen werden kann. Grundstücksverträge sind jederzeit unter „Land-Info“ für jede Parzelle einsehbar, für die ein Vertrag definiert wurde. - </notification> - - <notification - - label="Objekte können nicht gekauft werden" - name="BuyObjectOneOwner" - > -Objekte können nicht von mehreren Eigentümern gleichzeitig gekauft werden. -Wählen Sie ein einzelnes Objekt aus und versuchen Sie es erneut. - </notification> - - <notification - - label="Inhalte können nicht gekauft werden" - name="BuyContentsOneOnly" - > -Inhalte können jeweils nur für ein Objekt gekauft werden. -Wählen Sie ein einzelnes Objekt aus und versuchen Sie es erneut. - </notification> - - <notification - - label="Inhalte können nicht gekauft werden" - name="BuyContentsOneOwner" - > -Objekte können nicht von mehreren Eigentümern gleichzeitig gekauft werden. -Wählen Sie ein einzelnes Objekt aus und versuchen Sie es erneut. - </notification> - - <notification - - name="BuyOriginal" - > -Von [OWNER] Originalobjekt für [PRICE] L$ kaufen? -Sie werden der Eigentümer dieses Objekts. -Sie können das Objekt: - Bearbeiten: [MODIFYPERM] - Kopieren: [COPYPERM] - Verkaufen oder weggeben: [RESELLPERM] - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="BuyOriginalNoOwner" - > -Originalobjekt für [PRICE] L$ kaufen? -Sie werden der Eigentümer dieses Objekts. -Sie können das Objekt: - Bearbeiten: [MODIFYPERM] - Kopieren: [COPYPERM] - Verkaufen oder weggeben: [RESELLPERM] - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="BuyCopy" - > -Von [OWNER] Kopie für [PRICE] L$ kaufen? -Das Objekt wird in Ihr Inventar kopiert. -Sie können das Objekt: - Bearbeiten: [MODIFYPERM] - Kopieren: [COPYPERM] - Verkaufen oder weggeben: [RESELLPERM] - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="BuyCopyNoOwner" - > -Kopie für [PRICE] L$ kaufen? -Das Objekt wird in Ihr Inventar kopiert. -Sie können das Objekt: - Bearbeiten: [MODIFYPERM] - Kopieren: [COPYPERM] - Verkaufen oder weggeben: [RESELLPERM] - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="BuyContents" - > -Von [OWNER] Inhalte für [PRICE] L$ kaufen? -Die Inhalte werden in Ihr Inventar kopiert. - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="BuyContentsNoOwner" - > -Inhalte für [PRICE] L$ kaufen? -Die Inhalte werden in Ihr Inventar kopiert. - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmPurchase" - > -Transaktion: -[ACTION] - -Möchten Sie diesen Kauf fortsetzen? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmPurchasePassword" - type="password"> -Transaktion: -[ACTION] - -Möchten Sie diesen Kauf fortsetzen? -Geben Sie Ihr Kennwort erneut ein und klicken Sie auf OK. - <form name="form"> - <input - name="message" - type="password"/> - <button - - - name="ConfirmPurchase" - text="OK"/> - <button - - name="Cancel" - text="Abbrechen"/> - </form> - </notification> - - <notification - - name="SetPickLocation" - > -Hinweis: -Sie haben die Position dieser Auswahl aktualisiert, aber die anderen Daten behalten ihre ursprünglichen Werte. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="MoveInventoryFromObject" - > -Sie haben „nicht kopierfähige“ Inventarobjekte ausgewählt. -Diese Objekte werden nicht kopiert, sondern in Ihr Inventar verschoben. - -Inventarobjekt(e) verschieben? - <usetemplate - ignoretext="Beim Verschieben von nicht-kopierfähigem Inventar von Objekten" - name="okcancelignore" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="MoveInventoryFromScriptedObject" - > -Sie haben „nicht kopierfähige“ Inventarobjekte ausgewählt. Diese Objekte werden nicht kopiert, sondern in Ihr Inventar verschoben. -Da es sich um ein geskriptetes Objekt handelt, geht die Skriptfunktion beim Verschieben in das Inventar möglicherweise verloren. - -Inventarobjekt(e) verschieben? - <usetemplate - ignoretext="Beim Verschieben von nicht-kopierfähigem Inventar von geskripteten Objekten" - name="okcancelignore" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="ClickActionNotPayable" - > -Achtung: Die Klick-Aktion „Objekt bezahlen“ wurde definiert, sie funktioniert aber nur, wenn ein Skript mit einem money() Ereignis hinzugefügt wird. - <form name="form"> - <ignore name="ignore" - text="Beim Einrichten von Events mit „Objektbezahlung“ ohne Geld"/> - </form> - </notification> - - <notification - - name="OpenObjectCannotCopy" - > -Sie haben keine Berechtigung zum Kopieren von Elementen in diesem Objekt. - </notification> - - <notification - - name="WebLaunchAccountHistory" - > -Zur Second Life-Website, um Ihre Kontostatistik anzuzeigen? - <usetemplate - ignoretext="Beim Laden der Kontostatistik-Website" - name="okcancelignore" - notext="Abbrechen" - yestext="Gehe zu Seite"/> - </notification> - - <notification - - name="ClickOpenF1Help" - > -Die Support-Website von Second Life öffnen? - <usetemplate - ignoretext="Bei Besuch der Second Life Support-Website." - name="okcancelignore" - notext="Abbrechen" - yestext="Los"/> - </notification> - - <notification - - name="ConfirmQuit" - > -Wirklich beenden? - <usetemplate - ignoretext="Beim Beenden von Second Life." - name="okcancelignore" - notext="Weiter" - yestext="Beenden"/> - </notification> - - <notification - - name="HelpReportAbuseEmailLL" - > -Verwenden Sie dieses Tool, um Verletzungen der Servicebedingungen und Community-Standards zu melden. Siehe: - -http://secondlife.com/corporate/tos.php -http://secondlife.com/corporate/cs.php - -Alle gemeldeten Verletzungen der Servicebedingungen und Community-Standards werden geprüft und geklärt Sie können den Prozess im Incident Report (Vorfallsbericht) verfolgen: - -http://secondlife.com/support/incidentreport.php - </notification> - - <notification - - name="HelpReportAbuseEmailEO" - > -WICHTIG: Diese Meldung wird an den Eigentümer der Region gesendet, in der Sie sich gerade befinden, nicht an Linden Lab. -- -Als besonderen Service für Einwohner und Besucher übernimmt der Eigentümer dieser Region die Bearbeitung aller anfallenden Meldungen. Von diesem Standort aus eingereichte Meldungen werden nicht von Linden Lab bearbeitet. Der Eigentümer der Region bearbeitet Meldungen auf Grundlage der Richtlinien, die im für diese Region geltenden Grundstücksvertrag festgelegt sind. -(Den Vertrag können Sie unter „Welt“ > „Land-Info“ einsehen.) -- -Das Resultat, das sich aus dieser Meldung ergibt, betrifft nur diese Region; der Einwohnerzugang zu anderen Bereichen von Second Life ist davon nicht betroffen. Nur Linden Lab kann den Zugang zu Second Life beschränken. - </notification> - - <notification - - name="HelpReportBug" - > -Verwenden Sie dieses Tool *nur*, um technische Features zu melden, die nicht wie beschrieben oder erwartet funktionieren. Bitte machen Sie so viele Angaben wie möglich. Sie können auf die automatische Antwort-E-Mail antworten, um Ihre Meldung noch zu ergänzen. -Alle gemeldeten Fehler werden geprüft und bewertet. Sie erhalten keine persönliche Antwort auf Ihre E-Mail. -- -Bei technischen Problemen wenden Sie sich bitte an den Support unter: -http://secondlife.com/community/support.php -- -Hinweis: Unvollständige Meldungen werden nicht bearbeitet. - </notification> - - <notification - - name="HelpReportAbuseSelectCategory" - > -Wählen Sie eine Missbrauchskategorie aus. -Die Angabe einer Kategorie hilft uns bei der Bearbeitung des Berichts. - </notification> - - <notification - - name="HelpReportBugSelectCategory" - > -Wählen Sie eine Fehler-Kategorie aus. -Die Angabe einer Kategorie hilft uns bei der Bearbeitung des Berichts. - </notification> - - <notification - - name="HelpReportAbuseAbuserNameEmpty" - > -Geben Sie den Namen des Täters ein. -Eine genaue Angabe hilft uns, Fälle von Missbrauch zu ahnden. - </notification> - - <notification - - name="HelpReportAbuseAbuserLocationEmpty" - > -Bitte geben Sie den Ort an, an dem der Missbrauch stattgefunden hat. -Eine genaue Angabe hilft uns, Fälle von Missbrauch zu ahnden. - </notification> - - <notification - - name="HelpReportAbuseSummaryEmpty" - > -Bitte geben Sie eine Zusammenfassung des Vorfalls ein. -Eine genaue Zusammenfassung hilft uns, Fälle von Missbrauch zu ahnden. - </notification> - - <notification - - name="HelpReportBugSummaryEmpty" - > -Bitte geben Sie eine Zusammenfassung des Fehlers ein. -Eine genaue Zusammenfassung hilft uns, Fehler schneller zu beseitigen. - </notification> - - <notification - - name="HelpReportAbuseDetailsEmpty" - > -Bitte geben Sie eine ausführliche Beschreibung des Vorfalls ein. -Eine möglichst genaue Beschreibung mit Namen und Einzelheiten hilft uns, Fälle von Missbrauch zu ahnden. - </notification> - - <notification - - name="HelpReportBugDetailsEmpty" - > -Bitte geben Sie eine ausführliche Fehlerbeschreibung ein. -Eine möglichst genaue Beschreibung mit Schritten zur Reproduktion des Fehlers hilft uns, Fehler schneller zu beseitigen. - </notification> - - <notification - - name="HelpReportAbuseContainsCopyright" - > -Sehr geehrte(r) Einwohner(in), - -Sie melden eine Urheberrechtsverletzung. Sind Sie wirklich sicher, dass Sie eine Verletzung des Urheberrechts melden möchten? - -1. Missbrauch melden. Wenn Sie der Meinung sind, ein Einwohner nutzt das Berechtigungssystem von Second Life auf unerlaubte Weise zu seinem Vorteil aus, indem er zum Beispiel einen CopyBot oder ähnliche Kopiertools verwendet und damit eine Urheberrechtsverletzung begeht, können Sie diesen Missbrauch melden. Das Missbrauchsteam untersucht etwaige Verstöße gegen die Second Life Community Standards oder die Nutzungsbedingungen und verhängt entsprechende Strafen. Das Missbrauchsteam ist jedoch nicht dafür zuständig, Inhalte aus der Second Life-Welt zu entfernen und reagiert auch nicht auf entsprechende Anfragen. - -2. Der DMCA oder das Entfernen von Inhalten. Sie können das Entfernen von Inhalten aus Second Life beantragen. Dazu MÜSSEN Sie eine Urheberrechtsverletzung gemäß den in unserer DMCA-Richtlinie unter http://secondlife.com/corporate/dmca.php dargelegten Anweisungen einreichen. - -Wenn Sie mit der Missbrauchmeldung jetzt fortfahren möchten, schließen Sie bitte dieses Fenster und senden Sie Ihren Bericht ein. Möglicherweise müssen Sie Kategorie „CopyBot oder Berechtigungs-Exploit“ auswählen. - -Vielen Dank, - -Linden Lab - </notification> - - <notification - - name="FailedRequirementsCheck" - > -Die folgenden erforderlichen Komponenten fehlen in [FLOATER]: -[COMPONENTS] - </notification> - - <notification - - label="Vorhandenen Anhang ersetzen" - name="ReplaceAttachment" - > -An dieser Körperstelle ist bereits ein Objekt angebracht. -Möchten Sie es mit dem ausgewählten Objekt ersetzen? - <form name="form"> - <ignore name="ignore" - save_option="true" - text="Beim Wechseln von Anhängen"/> - <button - - ignore="Replace Automatically" - - name="Yes" - text="OK"/> - <button - ignore="Never Replace" - - name="No" - text="Abbrechen"/> - </form> - </notification> - - <notification - - label="Beschäftigt-Modus-Warnung" - name="BusyModePay" - > -Sie sind im Beschäftigt-Modus, sodass Sie im Austausch für diese Zahlung keine Objekte erhalten können. - -Möchten Sie den Bechäftigt-Modus verlassen, bevor Sie diese Transaktion abschließen? - <form name="form"> - <ignore name="ignore" - save_option="true" - text="Beim Bezahlen einer Person oder eines Objekts im Beschäftigt-Modus"/> - <button - - ignore="Always leave Busy Mode" - - name="Yes" - text="OK"/> - <button - ignore="Never leave Busy Mode" - - name="No" - text="Abbrechen"/> - </form> - </notification> - - <notification - - name="ConfirmEmptyTrash" - > -Möchten Sie den Inhalt Ihres Papierkorbs wirklich löschen? - <usetemplate - ignoretext="Beim Leeren des Inventar-Papierkorbs" - name="okcancelignore" - notext="Abbrechen" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmClearBrowserCache" - > -Möchten Sie Ihren Browser-Cache wirklich leeren? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="Ja"/> - </notification> - - <notification - - name="ConfirmClearCookies" - > -Sind Sie sicher, dass Sie Ihre Cookies löschen möchten? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="Ja"/> - </notification> - - <notification - - name="ConfirmClearMediaUrlList" - > -Die Liste mit gespeicherten URLs wirklich löschen? - <usetemplate - name="okcancelbuttons" - notext="Abbrechen" - yestext="Ja"/> - </notification> - - <notification - - name="ConfirmEmptyLostAndFound" - > -Möchten Sie den Inhalt Ihres Fundstücke-Ordners wirklich permanent löschen? - <usetemplate - ignoretext="Beim Leeren von Inventar und Fundstückeordner-" - name="okcancelignore" - notext="Nein" - yestext="Ja"/> - </notification> - - <notification - - name="CopySLURL" - > -Die folgende SLURL wurde in die Zwischenablage kopiert: - [SLURL] - -Veröffentlichen Sie sie auf einer Website, um anderen den Zugang zu diesem Ort zu erleichtern, oder testen Sie sie, indem Sie sie in die Adressleiste Ihres Browsers kopieren. - <form name="form"> - <ignore name="ignore" - text="Beim Kopieren einer SLURL in die Zwischenablage"/> - </form> - </notification> - - <notification - - name="GraphicsPreferencesHelp" - > -Die Optionen in diesem Dialog steuern Fenstergröße und Auflösung sowie die Qualität der Grafikdarstellung im Client. Im Fenster „Einstellungen“ > „Grafik“ stehen vier Grafikeinstellungen zur Wahl: Niedrig, Mittel, Hoch und Ultra. Die Grafikeinstellungen lassen sich auch individuell anpassen; aktivieren Sie das Kontrollkästchen „Benutzerdefiniert“, um die folgenden Einstellungen zu bearbeiten: - -Shader: Aktivieren oder deaktivieren Sie die verschiedenen Pixel-Shader. - -Spiegelung: Legen Sie hier fest, welche Objekte sich in Wasser spiegeln. - -Avatar-Darstellung: Einige Optionen, die über die Darstellung Ihres Avatars bestimmen. - -Sichtweite: Legt fest, bis zu welcher Entfernung von Ihrem Avatar die Objekte in der Szene berechnet und dargestellt werden. - -Max. Partikelzahl: Legt fest, wie viele Partikel gleichzeitig berechnet und angezeigt werden. - -Post-Processing-Qualität: Legt fest, mit welcher Auflösung der Glüheffekt berechnet wird. - -Gitterdetails: Legt den Detailgrad bzw. die Anzahl an Dreiecken bei der Berechnung bestimmter Objekte fest. Höhere Werte führen zu einer genaueren Darstellung, dauern aber länger in der Berechnung. - -Beleuchtungsdetails: Legt fest, welche Lichtquellen berechnet werden. - -Terraindetails: Legt den Detailgrad bei der Berechnung der Terraintextur fest. - </notification> - - <notification - - name="WLSavePresetAlert" - > -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="HelpEditSky" - > -Verschieben Sie die WindLight-Regler, um verschiedene Himmelsansichten zu erstellen und zu speichern. - </notification> - - <notification - - name="HelpEditDayCycle" - > -Wählen Sie für jede Tageszeit eine Himmelsansicht aus. - </notification> - - <notification - - name="EnvSettingsHelpButton" - > -Diese Einstellungen haben Auswirkung auf die lokale Darstellung der Umwelt auf Ihrem Computer. Zugriff auf alle Einstellungen haben Sie nur, wenn Ihre Grafikkarte Atmosphären-Shader unterstützt. - -Mit dem Regler „Tageszeit“ stellen Sie die lokal in Ihrem Viewer dargestellte Tageszeit ein. - -Mit dem Regler „Wolkendecke“ steuern Sie die Wolkendichte am Himmel. - -Unter „Wasserfarbe“ können Sie eine Farbe für die Wasserdarstellung auswählen. - -Mit dem Regler „Wassertrübung“ steuern Sie die Sichtweite unter Wasser. - -Klicken Sie auf „Grundstückszeit verw.“, um die aktuelle Zeit in der Region fest als Tageszeit einzustellen. - -Klicken Sie auf „Himmel (erweitert)“, um einen Editor mit erweiterten Einstellungen für die Himmeldarstellung anzuzeigen. - -Klicken Sie auf „Wasser (erweitert)“, um einen Editor mit erweiterten Einstellungen für die Wasserdarstellung anzuzeigen. - </notification> - - <notification - - name="HelpDayCycle" - > -Im Tageszyklus-Editor steuern Sie den Tag-/Nachtzyklus am Second Life Himmel. Dabei handelt es sich um den Zyklus, der mit dem Tageszeit-Regler im Umwelt-Basiseditor gesteuert wird. - -Der Tageszyklus-Editor verwendet sogenannte Keyframes zur Steuerung des Tag-/Nachtablaufs. Dabei handelt es sich um „Schlüsselbilder“ (die grauen Kreise auf der Zeitskala), für die bestimmte Himmelseinstellungen definiert wurden. Bei voranschreitender Tageszeit interpoliert WindLight den Übergang zwischen diesen Keyframes und erzeugt eine entsprechende Himmelsanimation. - -Der gelbe Pfeil über der Zeitskala repräsentiert die aktuelle Tageszeit-Darstellung. Ziehen Sie den Pfeil, um die Tagesanimation anzuzeigen. Mit „Key hinzu“ und „Key löschen“ rechts neben der Zeitskala können Sie neue Keys einfügen und vorhandene löschen. - -Keyframes lassen sich einfach entlang der Zeitskala verschieben, oder Sie geben die Werte manuell unter „Keyframe-Einstellungen“ ein. Hier wählen Sie auch eine WindLight-Voreinstellung für den Keyframe aus. - -„Zykluslänge“ bestimmt die Gesamtlänge eines „Tages“. Ein niedriger Wert (z.B. 2 Minuten) führt dazu, dass ein ganzer 24-Stunden-Tag innerhalb von zwei Minuten Echtzeit abgespult wird! Wenn Sie alle Einstellungen auf der Zeitskala und für die einzelnen Keyframes vorgenommen haben, können Sie mit „Start“ und „Stopp“ die Animation anzeigen. Das funktioniert natürlich genauso interaktiv, indem Sie den gelben Pfeil über der Zeitskala verschieben. Mit der Schaltfläche „Grundstückszeit verw.“ synchronisieren Sie die Tageszeit und -länge mit den auf dem Grundstück geltenden Einstellungen. - -Ihre Tageszyklus-Einstellungen lassen sich mit den Schaltflächen „Testtag speichern“ und „Testtag laden“ speichern bzw. laden. Bis dato kann nur ein Tageszyklus gleichzeitig in Verwendung sein. - </notification> - - <notification - - name="HelpBlueHorizon" - > -Mit den Reglern für Rot/Grün/Blau (RGB) steuern Sie die Farbe des Himmels. Verwenden Sie den Intensitätsregler (I), um alle drei RGB-Regler gleichzeitig zu verschieben. - </notification> - - <notification - - name="HelpHazeHorizon" - > -Horizonttrübung ist einer der wichtigsten Parameter, um die Gesamtlichtsituation in der Szene zu steuern. Damit lassen sich viele Belichtungseinstellungen simulieren, z.B. ein Überstrahlen durch die Sonne oder starker Dunst. - </notification> - - <notification - - name="HelpBlueDensity" - > -Farbintensität steuert die Gesamtfarbsättigung von Himmel und Nebel. Je weiter Sie den Intensitätsregler (I) nach rechts verschieben, desto heller und lebendiger werden die Farben. Wenn Sie ihn ganz nach links verschieben, verlieren die Farben an Intensität und gehen in Schwarz oder Weiß über. Volle Kontrolle über die Farbsättigung des Himmels bieten ihnen die Regler für Rot/Grün/Blau (RGB). - </notification> - - <notification - - name="HelpHazeDensity" - > -Trübungsintensität steuert die Stärke des grauen Dunsts in der Atmosphäre. Damit lassen sich zum Beispiel starker Rauch oder Luftverschmutzung simulieren. Auch für Nebel und Sprühregen geeignet. - </notification> - - <notification - - name="HelpDensityMult" - > -Der Dichtemultiplikator beeinflusst die Gesamtdichte der Atmosphäre. Niedrige Einstellungen erzeugen den Eindruck dünner, sauberer Luft, hohe Einstellungen erzeugen den Eindruck schweren Smogs. - </notification> - - <notification - - name="HelpDistanceMult" - > -Steuert die Entfernungswirkung von WindLight. Ein Wert von Null schaltet den Einfluss von WindLight auf Terrain und Objekte praktisch aus. Werte über 1 simulieren größere Entfernungen und verstärken den Atmosphäreneffekt. - </notification> - - <notification - - name="HelpMaxAltitude" - > -Max. Höhe steuert die Höhenberechnungen von WindLight bei der Berechnung der atmosphärischen Beleuchtung. Zu späteren Tageszeiten lässt sich damit zum Beispiel die „Intensität“ des Sonnenuntergangs beeinflussen. - </notification> - - <notification - - name="HelpSunlightColor" - > -Steuert Farbe und Intensität von direktem Licht in der Szene. - </notification> - - <notification - - name="HelpSunAmbient" - > -Steuert Farbe und Intensität von atmosphärischem Umgebungslicht in der Szene. - </notification> - - <notification - - name="HelpSunGlow" - > -Der Regler „Größe“ steuert die Größe der Sonne. -Der Regler „Fokus“ steuert, wie unscharf die Sonne am Himmel erscheint. - </notification> - - <notification - - name="HelpSceneGamma" - > -Regelt den Hell/Dunkel-Wert des Bildschirms. - </notification> - - <notification - - name="HelpStarBrightness" - > -Regelt die Helligkeit der Sterne am Himmel. - </notification> - - <notification - - name="HelpTimeOfDay" - > -Steuert die Sonnenstellung am Himmel. -Entspricht der Elevation. - </notification> - - <notification - - name="HelpEastAngle" - > -Steuert die Sonnenstellung am Himmel. -Entspricht dem Azimut. - </notification> - - <notification - - name="HelpCloudColor" - > -Steuert die Wolkenfarbe. Generell empfiehlt sich hier ein Weißton, aber hey, warum nicht ein bisschen Spaß haben? - </notification> - - <notification - - name="HelpCloudDetail" - > -Steuert das Detailbild, welches über das Wolken-Hauptbild gelegt wird. X und Y bestimmen seine Position. D (Dichte) regelt, wie ausgebeult oder zerrissen die Wolken wirken. - </notification> - - <notification - - name="HelpCloudDensity" - > -Mit den X- und Y-Reglern steuern Sie die Position der Wolken, mit dem Regler D die Wolkendichte. - </notification> - - <notification - - name="HelpCloudCoverage" - > -Steuert, wie stark die Wolken den Himmel bedecken. - </notification> - - <notification - - name="HelpCloudScale" - > -Steuert die Skalierung des Wolkenbilds auf der Himmelskuppel. - </notification> - - <notification - - name="HelpCloudScrollX" - > -Steuert die Bewegungsgeschwindigkeit der Wolken in X-Richtung. - </notification> - - <notification - - name="HelpCloudScrollY" - > -Steuert die Bewegungsgeschwindigkeit der Wolken in Y-Richtung. - </notification> - - <notification - - name="HelpClassicClouds" - > -Aktivieren Sie dieses Kontrollkästchen, um die Darstellung der klassischen Second Life Wolken zusätzlich zu den WindLight-Wolken zu erzwingen. - </notification> - - <notification - - name="HelpWaterFogColor" - > -Steuert die Farbe der Wassertrübung - </notification> - - <notification - - name="HelpWaterFogDensity" - > -Steuert die Dichte der Wassertrübung und wie weit Sie unter Wasser sehen können. - </notification> - - <notification - - name="HelpUnderWaterFogMod" - > -Beeinflusst die Auswirkung des Wassertrübungs-Exponenten und regelt die Sichtweite Ihres Avatars unter Wasser. - </notification> - - <notification - - name="HelpWaterGlow" - > -Steuert, wie groß der Anteil der leuchtenden Wasseroberfläche ist. - </notification> - - <notification - - name="HelpWaterNormalScale" - > -Steuert die Skalierung der drei Elementarwellen, die das Wasser ausmachen. - </notification> - - <notification - - name="HelpWaterFresnelScale" - > -Steuert die winkelabhängige Lichtreflexion. - </notification> - - <notification - - name="HelpWaterFresnelOffset" - > -Steuert die Intensität des reflektierten Lichts. - </notification> - - <notification - - name="HelpWaterScaleAbove" - > -Steuert die Stärke der Lichtbrechung von oberhalb der Wasseroberfläche aus gesehen. - </notification> - - <notification - - name="HelpWaterScaleBelow" - > -Steuert die Stärke der Lichtbrechung von unterhalb der Wasseroberfläche aus gesehen. - </notification> - - <notification - - name="HelpWaterBlurMultiplier" - > -Steuert die Mischung von Wellen und Reflexionen. - </notification> - - <notification - - name="HelpWaterNormalMap" - > -Ermöglicht die Auswahl einer Normal-Map zur Berechnung von Reflexionen/Brechungen auf dem Wasser. - </notification> - - <notification - - name="HelpWaterWave1" - > -Steuert die Bewegungsgeschwindigkeit und -richtung der großen Normal-Map-Version in X- und Y-Richtung. - </notification> - - <notification - - name="HelpWaterWave2" - > -Steuert die Bewegungsgeschwindigkeit und -richtung der kleinen Normal-Map-Version in X- und Y-Richtung. - </notification> - - <notification - - name="NewSkyPreset" - > -Wählen Sie einen Namen für den neuen Himmel. - <form name="form"> - <input name="message" type="text"> -Neue Voreinstellung - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Abbrechen"/> - </form> - </notification> - - <notification - - name="ExistsSkyPresetAlert" - > -Voreinstellung bereits vorhanden! - </notification> - - <notification - - name="NewWaterPreset" - > -Wählen Sie einen Namen für die neue Wasservoreinstellung. - <form name="form"> - <input name="message" type="text"> -Neue Voreinstellung - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Abbrechen"/> - </form> - </notification> - - <notification - - name="ExistsWaterPresetAlert" - > -Voreinstellung bereits vorhanden! - </notification> - - <notification - - name="WaterNoEditDefault" - > -Standardvoreinstellungen können nicht bearbeitet oder gelöscht werden. - </notification> - - <notification - - name="ChatterBoxSessionStartError" - > -Neue Chat-Sitzung mit [RECIPIENT] konnte nicht gestartet werden. -[REASON] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="ChatterBoxSessionEventError" - > -[EVENT] -[REASON] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="ForceCloseChatterBoxSession" - > -Ihre Chat-Sitzung mit [NAME] muss beendet werden. -[REASON] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="Cannot_Purchase_an_Attachment" - > -Objekte können nicht gekauft werden, solange sie Teil eines Anhangs sind. - </notification> - - <notification - - label="Info zur Abfrage der Abbucherlaubnis" - name="DebitPermissionDetails" - > -Wenn Sie dieser Anfrage zustimmen, erhält das Skript die Erlaubnis, regelmäßig Linden-Dollar (L$) von Ihrem Konto abzubuchen. Diese Erlaubnis kann nur zurückgezogen werden, wenn der Eigentümer das Objekt löscht oder die Skripts in dem Objekt zurücksetzt. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="AutoWearNewClothing" - > -Möchten Sie das neu erstellte Kleidungsstück automatisch anziehen? - <usetemplate - ignoretext="Neue Kleidung automatisch tragen" - name="okcancelignore" - notext="Nein" - yestext="Ja"/> - </notification> - - <notification - - name="NotAgeVerified" - > -Um Zugang zu dieser Parzelle zu erhalten, müssen Sie sich einer Altersprüfung unterziehen. -Möchten Sie auf der Second Life Website eine Altersüberprüfung durchführen? - -[_URL] - <url option="0" name="url"> - - https://secondlife.com/account/verification.php?lang=de - </url> - <usetemplate - ignoretext="Auf fehlende Altersprüfung aufmerksam machen" - name="okcancelignore" - notext="Nein" - yestext="Ja"/> - </notification> - - <notification - - name="Cannot enter parcel: no payment info on file" - > -Um Zugang zu dieser Parzelle zu erhalten, müssen Sie Zahlungsinformationen hinterlegt haben. -Möchten Sie die Second Life Website öffnen, um diese Angaben zu hinterlegen? - -[_URL] - <url option="0" name="url"> - - https://secondlife.com/account/index.php?lang=de - </url> - <usetemplate - ignoretext="Auf fehlende Zahlungsinformationen aufmerksam machen" - name="okcancelignore" - notext="Nein" - yestext="Ja"/> - </notification> - - <notification - - name="MissingString" - > -Der String „[STRING_NAME]“ fehlt in strings.xml - </notification> - - <notification - - name="SystemMessageTip" - > -[MESSAGE] - </notification> - - <notification - - name="Cancelled" - > -Abgebrochen - </notification> - - <notification - - name="CancelledSit" - > -Sitzen beendet - </notification> - - <notification - - name="CancelledAttach" - > -Anhängen abgebrochen - </notification> - - <notification - - name="ReplacedMissingWearable" - > -Fehlende(s) Kleidung/Körperteil mit Standard ersetzt. - </notification> - - <notification - - name="GroupNotice" - > -Betreff: [SUBJECT], Nachricht: [MESSAGE] - </notification> - - <notification - - name="FriendOnline" - > -[FIRST] [LAST] ist online - </notification> - - <notification - - name="FriendOffline" - > -[FIRST] [LAST] ist offline - </notification> - - <notification - - name="AddSelfFriend" - > -Sie können sich nicht selbst als Freund hinzufügen. - </notification> - - <notification - - name="UploadingAuctionSnapshot" - > -In-Welt- und Website-Fotos werden hochgeladen... -(Dauert ca. 5 Minuten.) - </notification> - - <notification - - name="UploadPayment" - > -Sie haben für das Hochladen [AMOUNT] L$ bezahlt. - </notification> - - <notification - - name="UploadWebSnapshotDone" - > -Das Website-Foto wurde hochgeladen. - </notification> - - <notification - - name="UploadSnapshotDone" - > -In-Welt-Foto hochgeladen - </notification> - - <notification - - name="TerrainDownloaded" - > -Terrain.raw heruntergeladen - </notification> - - <notification - - name="GestureMissing" - > -Geste [NAME] fehlt in Datenbank. - </notification> - - <notification - - name="UnableToLoadGesture" - > -Geste [NAME] konnte nicht geladen werden. -Bitte versuchen Sie es erneut. - </notification> - - <notification - - name="LandmarkMissing" - > -Landmarke fehlt in Datenbank. - </notification> - - <notification - - name="UnableToLoadLandmark" - > -Landmarke konnte nicht geladen werden. Bitte versuchen Sie es erneut. - </notification> - - <notification - - name="CapsKeyOn" - > -Die Feststelltaste ist aktiv. -Da dies Auswirkung auf die Kennworteingabe hat, sollten Sie die Taste besser ausschalten. - </notification> - - <notification - - name="NotecardMissing" - > -Notizkarte fehlt in Datenbank. - </notification> - - <notification - - name="NotecardNoPermissions" - > -Unzureichende Rechte zur Anzeige der Notizkarte. - </notification> - - <notification - - name="RezItemNoPermissions" - > -Keine Berechtigung zum Rezzen von Objekten. - </notification> - - <notification - - name="UnableToLoadNotecard" - > -Notizkarte konnte nicht geladen werden. -Bitte versuchen Sie es erneut. - </notification> - - <notification - - name="ScriptMissing" - > -Skript fehlt in Datenbank. - </notification> - - <notification - - name="ScriptNoPermissions" - > -Unzureichende Rechte zur Anzeige des Skripts. - </notification> - - <notification - - name="UnableToLoadScript" - > -Skript konnte nicht geladen werden. Bitte versuchen Sie es erneut. - </notification> - - <notification - - name="IncompleteInventory" - > -Die von Ihnen angebotenen Inhalte sind noch nicht vollständig lokal verfügbar. Warten Sie kurz und wiederholen Sie dann das Angebot. - </notification> - - <notification - - name="CannotModifyProtectedCategories" - > -Geschützte Kategorien können nicht geändert werden. - </notification> - - <notification - - name="CannotRemoveProtectedCategories" - > -Geschützte Kategorien können nicht entfernt werden. - </notification> - - <notification - - name="OfferedCard" - > -Sie haben [FIRST] [LAST] eine Visitenkarte angeboten. - </notification> - - <notification - - name="OfferedFriendship" - > -Sie haben [FIRST] [LAST] die Freundschaft angeboten. - </notification> - - <notification - - name="UnableToBuyWhileDownloading" - > -Kauf nicht möglich. Objektdaten werden noch geladen. -Bitte versuchen Sie es erneut. - </notification> - - <notification - - name="UnableToLinkWhileDownloading" - > -Verknüpfung nicht möglich. Objektdaten werden noch geladen. -Bitte versuchen Sie es erneut. - </notification> - - <notification - - name="CannotBuyObjectsFromDifferentOwners" - > -Objekte können nicht von mehreren Eigentümern gleichzeitig gekauft werden. -Wählen Sie ein einzelnes Objekt aus. - </notification> - - <notification - - name="ObjectNotForSale" - > -Objekt ist nicht zu verkaufen. - </notification> - - <notification - - name="EnteringGodMode" - > -Gott-Modus aktiviert, Level [LEVEL] - </notification> - - <notification - - name="LeavingGodMode" - > -Gott-Modus deaktiviert, Level [LEVEL] - </notification> - - <notification - - name="CopyFailed" - > -Kopieren aufgrund fehlender Kopierrechte fehlgeschlagen - </notification> - - <notification - - name="InventoryAccepted" - > -[NAME] hat Ihr Inventarangebot akzeptiert. - </notification> - - <notification - - name="InventoryDeclined" - > -[NAME] hat Ihr Inventarangebot abgelehnt. - </notification> - - <notification - - name="ObjectMessage" - > -[NAME]: [MESSAGE] - </notification> - - <notification - - name="CallingCardAccepted" - > -Ihre Visitenkarte wurde akzeptiert. - </notification> - - <notification - - name="CallingCardDeclined" - > -Ihre Visitenkarte wurde abgelehnt. - </notification> - - <notification - - name="TeleportToLandmark" - > -Jetzt, nachdem Sie das Mainland erreicht haben, können Sie sich an Positionen wie „[NAME]“ teleportieren, indem Sie unten rechts im Fenster auf „Inventar“ klicken und den Ordner „Landmarken“ auswählen. -Klicken Sie eine Landmarke doppelt an und wählen Sie „Teleportieren“, um an diesen Ort zu gelangen. - </notification> - - <notification - - name="TeleportToPerson" - > -Jetzt, nachdem Sie das Mainland erreicht haben, können Sie mit Einwohnern wie „[NAME]“ Kontakt aufnehmen, indem Sie unten rechts im Fenster auf „Inventar“ klicken und den Ordner „Visitenkarten“ auswählen. -Klicken Sie die Karte doppelt an, wählen Sie „Instant Message“ und geben Sie eine Nachricht ein. - </notification> - - <notification - - name="CantSelectLandFromMultipleRegions" - > -Land kann nicht über Servergrenzen hinweg ausgewählt werden. -Wählen Sie eine kleinere Landfläche. - </notification> - - <notification - - name="GroupVote" - > -[NAME] hat eine Abstimmung vorgeschlagen über: -[MESSAGE] - <form name="form"> - <button - - name="VoteNow" - text="Abstimmen"/> - <button - - name="Later" - text="Später"/> - </form> - </notification> - - <notification - - name="SystemMessage" - > -[MESSAGE] - </notification> - - <notification - - name="EventNotification" - > -Event-Benachrichtigung: - -[NAME] -[DATE] - <form name="form"> - <button - - name="Teleport" - text="Teleportieren"/> - <button - - name="Description" - text="Beschreibung"/> - <button - - name="Cancel" - text="Abbrechen"/> - </form> - </notification> - - <notification - - name="TransferObjectsHighlighted" - > -Alle Objekte auf dieser Parzelle, die an den Käufer der Parzelle übertragen werden, sind jetzt markiert. - -* Übertragene Bäume und Gräser sind nicht markiert. - <form name="form"> - <button - - name="Done" - text="Fertig"/> - </form> - </notification> - - <notification - - name="DeactivatedGesturesTrigger" - > -Gesten mit demselben Trigger wurden deaktiviert: -[NAMES] - </notification> - - <notification - - name="NoQuickTime" - > -Apple QuickTime ist auf Ihrem System anscheinend nicht installiert. -Laden Sie QuickTime von der QuickTime-Webseite (http://www.apple.com/de/quicktime) herunter, um auf Parzellen, die diese Funktion unterstützen, Streaming-Inhalte wiederzugeben. - </notification> - - <notification - - name="OwnedObjectsReturned" - > -Ihre Objekte auf der ausgewählten Parzelle wurden in Ihr Inventar transferiert. - </notification> - - <notification - - name="OtherObjectsReturned" - > -Die Objekte von [FIRST] [LAST] auf dieser Parzelle wurden in das Inventar dieser Person transferiert. - </notification> - - <notification - - name="OtherObjectsReturned2" - > -Die Objekte von [FIRST] [LAST] auf dieser -Parzelle von „[NAME]“ wurden an ihren Eigentümer zurückgegeben. - </notification> - - <notification - - name="GroupObjectsReturned" - > -Die mit der Gruppe [GROUPNAME] gemeinsam genutzten Objekte auf dieser Parzelle wurden in das Inventar ihrer Eigentümer transferiert. -Transferierbare übertragene Objekte wurden an ihre früheren Eigentümer zurückgegeben. -Nicht transferierbare an die Gruppe übertragene Objekte wurden gelöscht. - </notification> - - <notification - - name="UnOwnedObjectsReturned" - > -Alle Objekte auf der ausgewählten Parzelle, die NICHT Ihnen gehören, wurden ihren Eigentümern zurückgegeben. - </notification> - - <notification - - name="NotSafe" - > -Auf diesem Land ist Schaden aktiviert („Unsicher“). -Verletzungen sind möglich. Wenn Sie sterben, werden Sie zu Ihrem Heimatstandort teleportiert. - </notification> - - <notification - - name="NoFly" - > -Auf diesem Land ist Fliegen deaktiviert („Fliegen aus“). -Fliegen ist hier nicht möglich. - </notification> - - <notification - - name="PushRestricted" - > -Auf diesem Land gilt „Kein Stoßen“. -Sie können keine anderen Personen stoßen, außer Ihnen gehört das Land. - </notification> - - <notification - - name="NoVoice" - > -Auf diesem Land ist Voice deaktiviert. - </notification> - - <notification - - name="NoBuild" - > -Auf diesem Land ist Bauen deaktiviert („Bauen aus“). -Sie können hier keine Objekte erstellen. - </notification> - - <notification - - name="ScriptsStopped" - > -Ein Administrator hat die Skriptausführung in dieser Region vorübergehend deaktiviert. - </notification> - - <notification - - name="ScriptsNotRunning" - > -In dieser Region werden keine Skipts ausgeführt. - </notification> - - <notification - - name="NoOutsideScripts" - > -Auf diesem Land sind externe Skripts deaktiviert -(„Externe Skripts aus“). -Nur Skripts, die dem Landeigentümer gehören, funktionieren. - </notification> - - <notification - - name="ClaimPublicLand" - > -Öffentliches Land kann nur in der Region in Besitz genommen werden, in der Sie sich befinden. - </notification> - - <notification - - name="ObjectGiveItem" - > -Das Objekt [OBJECTFROMNAME] von [FIRST] [LAST] hat Ihnen Folgendes übergeben: [OBJECTTYPE] ([OBJECTNAME]). - <form name="form"> - <button - - name="Keep" - text="Behalten"/> - <button - - name="Discard" - text="Verwerfen"/> - <button - - name="Mute" - text="Stummschalten"/> - </form> - </notification> - - <notification - - name="ObjectGiveItemUnknownUser" - > -Das Objekt [OBJECTFROMNAME] von (unbekannt) hat Ihnen Folgendes übergeben: [OBJECTTYPE] ([OBJECTNAME]). - <form name="form"> - <button - - name="Keep" - text="Behalten"/> - <button - - name="Discard" - text="Verwerfen"/> - <button - - name="Mute" - text="Stummschalten"/> - </form> - </notification> - - <notification - - name="UserGiveItem" - > -[NAME] hat Ihnen ein [OBJECTTYPE] namens „[OBJECTNAME]“ gegeben. - <form name="form"> - <button - - name="Keep" - text="Behalten"/> - <button - - name="Discard" - text="Verwerfen"/> - <button - - name="Mute" - text="Stummschalten"/> - </form> - </notification> - - <notification - - name="GodMessage" - > -[NAME] -[MESSAGE] - </notification> - - <notification - - name="JoinGroup" - > -[MESSAGE] - <form name="form"> - <button - - name="Join" - text="Beitreten"/> - <button - - name="Decline" - text="Ablehnen"/> - <button - - name="Info" - text="Info"/> - </form> - </notification> - - <notification - - name="TeleportOffered" - > -[NAME] hat angeboten, Sie zu ihrem/seinem Standort zu teleportieren: - -[MESSAGE] - <form name="form"> - <button - - name="Teleport" - text="Teleportieren"/> - <button - - name="Cancel" - text="Abbrechen"/> - </form> - </notification> - - <notification - - name="GotoURL" - > -[MESSAGE] -[URL] - <form name="form"> - <button - - name="Later" - text="Später"/> - <button - - name="GoNow..." - text="Jetzt gehen..."/> - </form> - </notification> - - <notification - - name="OfferFriendship" - > -[NAME] bietet Ihnen die Freundschaft an. - -[MESSAGE] - -(Standardmäßig werden Sie gegenseitig ihren Online-Status sehen können.) - <form name="form"> - <button - - name="Accept" - text="Akzeptieren"/> - <button - - name="Decline" - text="Ablehnen"/> - </form> - </notification> - - <notification - - name="OfferFriendshipNoMessage" - > -[NAME] bietet Ihnen die Freundschaft an. - -(Sie werden dadurch den gegenseitigen Online-Status sehen können.) - <form name="form"> - <button - - name="Accept" - text="Akzeptieren"/> - <button - - name="Decline" - text="Ablehnen"/> - </form> - </notification> - - <notification - - name="FriendshipAccepted" - > -[NAME] hat Ihr Freundschaftsangebot akzeptiert. - </notification> - - <notification - - name="FriendshipDeclined" - > -[NAME] hat Ihr Freundschaftsangebot abgelehnt. - </notification> - - <notification - - name="OfferCallingCard" - > -[FIRST] [LAST] bietet Ihnen eine Visitenkarte an. -Dies erstellt ein Lesezeichen in Ihrem Inventar, damit Sie diesen Einwohner jederzeit über IM erreichen. - <form name="form"> - <button - - name="Accept" - text="Akzeptieren"/> - <button - - name="Decline" - text="Ablehnen"/> - </form> - </notification> - - <notification - - name="RegionRestartMinutes" - - - > -Region wird in [MINUTES] Minuten neu gestartet. -Wenn Sie in dieser Region bleiben, werden Sie abgemeldet. - </notification> - - <notification - - name="RegionRestartSeconds" - - - > -Region wird in [SECONDS] Sekunden neu gestartet. -Wenn Sie in dieser Region bleiben, werden Sie abgemeldet. - </notification> - - <notification - - name="LoadWebPage" - > -Webseite [URL] laden? - -[MESSAGE] - -Von Objekt: [OBJECTNAME], Eigentümer: [NAME]? - <form name="form"> - <button - - name="Gotopage" - text="Gehe zu Seite"/> - <button - - name="Cancel" - text="Abbrechen"/> - </form> - </notification> - - <notification - - name="FailedToFindWearableUnnamed" - > -[TYPE] nicht in Datenbank. - </notification> - - <notification - - name="FailedToFindWearable" - > -[TYPE] namens [DESC] nicht in Datenbank. - </notification> - - <notification - - name="ScriptQuestion" - > -Das Objekt „[OBJECTNAME]“, Eigentum von „[NAME]“, möchte: - -[QUESTIONS] -Ist das OK? - <form name="form"> - <button - - name="Yes" - text="Ja"/> - <button - - name="No" - text="Nein"/> - <button - - name="Mute" - text="Stummschalten"/> - </form> - </notification> - - <notification - - name="ScriptQuestionCaution" - > -Das Objekt „[OBJECTNAME]“, Eigentum von „[NAME]“, möchte: - -[QUESTIONS] -Wenn Sie diesem Objekt und seinem Ersteller nicht vertrauen, sollten Sie diese Anfrage ablehnen. Klicken Sie für weitere Informationen auf „Info...“. - -Anfrage gestatten? - <form name="form"> - <button - - name="Grant" - text="Gewähren"/> - <button - - name="Deny" - text="Verweigern"/> - <button - - name="Details" - text="Info..."/> - </form> - </notification> - - <notification - - name="ScriptDialog" - > -[FIRST] [LAST]s „[TITLE]“ -[MESSAGE] - <form name="form"> - <button - - name="Ignore" - text="Ignorieren"/> - </form> - </notification> - - <notification - - name="ScriptDialogGroup" - > -[GROUPNAME]s „[TITLE]“ -[MESSAGE] - <form name="form"> - <button - - name="Ignore" - text="Ignorieren"/> - </form> - </notification> - - <notification - - name="FirstBalanceIncrease" - > -Sie haben gerade [AMOUNT] L$ erhalten. -Objekte und andere Benutzer können Ihnen L$ geben. -Ihren Kontostand sehen Sie in der oberen rechten Ecke des Bildschirms. - </notification> - - <notification - - name="FirstBalanceDecrease" - > -Sie haben gerade [AMOUNT] L$ bezahlt. -Ihren Kontostand sehen Sie in der oberen rechten Ecke des Bildschirms. - </notification> - - <notification - - name="FirstSit" - > -Sie sitzen. -Benutzen Sie die Pfeil- oder WASD-Tasten, um die Ansicht zu ändern. -Klicken Sie auf „Aufstehen“, um aufzustehen. - </notification> - - <notification - - name="FirstMap" - > -Zum Verschieben der Karte klicken und ziehen. -Zum Teleportieren doppelklicken. -Nutzen Sie die Optionen links, um Dinge zu finden und um verschiedene Hintergründe anzuzeigen. - </notification> - - <notification - - name="FirstBuild" - > -In einigen Bereichen von [SECOND_LIFE] können Sie neue Objekte erstellen. -Verwenden Sie zum Bauen die Werkzeuge oben links. -Mit den Strg- und Alt-Tasten können Sie schnell zwischen den Werkzeugen umschalten. -Drücken Sie Esc, um das Bauen abzubrechen. - </notification> - - <notification - - name="FirstLeftClickNoHit" - > -Die linke Maustaste ermöglicht Objektinteraktionen. -Der Mauszeiger zeigt eine Hand, wenn Sie -mit dem Objekt interagieren können. -Die rechte Maustaste zeigt immer ein Aktionsmenü an. - </notification> - - <notification - - name="FirstTeleport" - > -Diese Region unterstützt keine direkten Teleports. Sie wurden zum nächstgelegenen Telehub transportiert. -Ihr Ziel ist mit einem großen roten Strahl markiert. Folgen Sie dem roten Pfeil zum Strahl oder klicken Sie auf den Pfeil, um den Strahl zu entfernen. - </notification> - - <notification - - name="FirstOverrideKeys" - > -Ihre Bewegungstasten werden jetzt von einem Objekt gesteuert. -Probieren Sie die Pfeil- oder WASD-Tasten aus. -Manche Objekte (wie Waffen) müssen per Mouselook gesteuert werden. -Drücken Sie dazu „M“. - </notification> - - <notification - - name="FirstAppearance" - > -Sie bearbeiten gerade Ihr Aussehen. -Benutzen Sie die Pfeiltasten zum Drehen und Zoomen. -Klicken Sie auf „Alles speichern“, wenn Sie fertig sind, um Ihr Aussehen zu speichern. -Sie können Ihr Aussehen jederzeit verändern. - </notification> - - <notification - - name="FirstInventory" - > -Ihr Inventar. Es enthält Objekte, Notizkarten, Kleidung und andere Dinge in Ihrem Besitz. -* Zum Anziehen eines Objekts oder Outfit-Ordners ziehen Sie es/ihn auf sich. -* Um ein Objekt in der Welt abzulegen, ziehen Sie es auf den Boden. -* Zum Lesen einer Notizkarte klicken Sie sie doppelt an. - </notification> - - <notification - - name="FirstSandbox" - > -Dies ist eine Sandkastenregion. -Objekte, die Sie hier bauen, können gelöscht werden, wenn Sie das Gebiet verlassen. Sandkästen werden regelmäßig gereinigt. Weitere Informationen hierzu finden Sie oben im Bild neben dem Regionsnamen. - -Sandkastenregionen kommen selten vor und sind entsprechend gekennzeichnet. - </notification> - - <notification - - name="FirstFlexible" - > -Dieses Objekt ist flexibel. -Ein flexibles Objekt ist ein Phantom und nicht physisch, bis die Option „Flexibel“ deaktiviert wurde. - </notification> - - <notification - - name="FirstDebugMenus" - > -Sie haben das Advanced-Menü aktiviert. -Dieses Menü enthält nützliche Funktionen zum Debuggen von Second Life. -Drücken Sie in Windows Strg-Alt-D (Mac: Befehl-Opt-Umschalt-D) zum Ein- und Ausschalten dieses Menüs. - </notification> - - <notification - - name="FirstSculptedPrim" - > -Sie bearbeiten ein geformtes Primitiv. -Geformte Primitive benötigen eine spezielle Textur, die ihre Form definiert. -Beispiele für Formtexturen finden Sie in der Inventarbibliothek. - </notification> - - <notification - - name="FirstMedia" - > -Sie haben die Medienwiedergabe gestartet. Unter „Audio und Video“ im Fenster „Einstellungen“ können Sie festlegen, dass Medien automatisch wiedergegeben werden. Beachten Sie, dass dies bei nicht vertrauenswürdigen Medienseiten ein Sicherheitsrisiko darstellen kann. - </notification> - - <notification - - name="MaxListSelectMessage" - > -Sie können maximal [MAX_SELECT] Objekte -von der Liste auswählen. - </notification> - - <notification - - name="VoiceInviteP2P" - > -[NAME] lädt Sie zu einem Voice-Chat ein. -Klicken Sie auf „Akzeptieren“, um dem Gespräch beizutreten, oder auf „Ablehnen“, um die Einladung auszuschlagen. Klicken Sie auf „Stummschalten“, um diesen Anrufer stumm zu schalten. - <form name="form"> - <button - - name="Accept" - text="Akzeptieren"/> - <button - - name="Decline" - text="Ablehnen"/> - <button - - name="Mute" - text="Stummschalten"/> - </form> - </notification> - - <notification - - name="AutoUnmuteByIM" - > -[FIRST] [LAST] hat eine Instant Message erhalten; die Stummschaltung wurde aufgehoben. - </notification> - - <notification - - name="AutoUnmuteByMoney" - > -[FIRST] [LAST] hat Geld erhalten; die Stummschaltung wurde aufgehoben. - </notification> - - <notification - - name="AutoUnmuteByInventory" - > -[FIRST] [LAST] wurde ein Inventarobjekt angeboten; die Stummschaltung wurde aufgehoben. - </notification> - - <notification - - name="VoiceInviteGroup" - > -[NAME] ist einem Voice-Chat mit der Gruppe [GROUP] beigetreten. -Klicken Sie auf „Akzeptieren“, um dem Gespräch beizutreten, oder auf „Ablehnen“, um die Einladung auszuschlagen. Klicken Sie auf „Stummschalten“, um diesen Anrufer stumm zu schalten. - <form name="form"> - <button - - name="Accept" - text="Akzeptieren"/> - <button - - name="Decline" - text="Ablehnen"/> - <button - - name="Mute" - text="Stummschalten"/> - </form> - </notification> - - <notification - - name="VoiceInviteAdHoc" - > -[NAME] ist einem Voice-Konferenz-Chat beigetreten. -Klicken Sie auf „Akzeptieren“, um dem Gespräch beizutreten, oder auf „Ablehnen“, um die Einladung auszuschlagen. Klicken Sie auf „Stummschalten“, um diesen Benutzer stumm zu schalten. - <form name="form"> - <button - - name="Accept" - text="Akzeptieren"/> - <button - - name="Decline" - text="Ablehnen"/> - <button - - name="Mute" - text="Stummschalten"/> - </form> - </notification> - - <notification - - name="InviteAdHoc" - > -[NAME] lädt Sie zu einem Konferenz-Chat ein. -Klicken Sie auf „Akzeptieren“, um dem Chat beizutreten, oder auf „Ablehnen“, um die Einladung auszuschlagen. Klicken Sie auf „Stummschalten“, um diesen Benutzer stumm zu schalten. - <form name="form"> - <button - - name="Accept" - text="Akzeptieren"/> - <button - - name="Decline" - text="Ablehnen"/> - <button - - name="Mute" - text="Stummschalten"/> - </form> - </notification> - - <notification - - name="VoiceChannelFull" - > -Der Voice-Chat, dem Sie beitreten möchten, [VOICE_CHANNEL_NAME], hat seine maximale Teilnehmerzahl erreicht. Bitte versuchen Sie es erneut. - </notification> - - <notification - - name="ProximalVoiceChannelFull" - > -Es tut uns Leid. Dieses Gebiet hat seine maximale Kapazität für Voice-Gespräche erreicht. Bitte versuchen Sie es in einem anderen Gebiet. - </notification> - - <notification - - name="VoiceChannelDisconnected" - > -Sie haben [VOICE_CHANNEL_NAME] verlassen. Sie werden nun wieder mit dem Umgebungs-Voice-Chat verbunden. - </notification> - - <notification - - name="VoiceChannelDisconnectedP2P" - > -[VOICE_CHANNEL_NAME] hat das Gespräch beendet. Sie werden nun wieder mit dem Umgebungs-Voice-Chat verbunden. - </notification> - - <notification - - name="P2PCallDeclined" - > -[VOICE_CHANNEL_NAME] hat Ihren Anruf abgelehnt. Sie werden nun wieder mit dem Umgebungs-Voice-Chat verbunden. - </notification> - - <notification - - name="P2PCallNoAnswer" - > -[VOICE_CHANNEL_NAME] ist zurzeit nicht erreichbar. Sie werden nun wieder mit dem Umgebungs-Voice-Chat verbunden. - </notification> - - <notification - - name="VoiceChannelJoinFailed" - > -Verbindung zu [VOICE_CHANNEL_NAME] nicht möglich. Bitte versuchen Sie es später. Sie werden nun wieder mit dem Umgebungs-Voice-Chat verbunden. - </notification> - - <notification - - name="VoiceLoginRetry" - > -Wir erstellen einen Voice-Kanal für Sie. Bitte warten Sie einen Moment. - </notification> - - <notification - - name="Cannot enter parcel: not a group member" - > -Zugang zur Parzelle verweigert, Sie gehören keiner berechtigten Gruppe an. - </notification> - - <notification - - name="Cannot enter parcel: banned" - > -Zugang zur Parzelle verweigert. Sie wurden verbannt. - </notification> - - <notification - - name="Cannot enter parcel: not on access list" - > -Zugang zur Parzelle verweigert. Sie stehen nicht auf der Zugangsliste. - </notification> - - <notification - - name="VoiceNotAllowed" - > -Sie sind nicht berechtigt, einem Voice-Chat in [VOICE_CHANNEL_NAME] beizutreten. - </notification> - - <notification - - name="VoiceCallGenericError" - > -Fehler beim Versuch, eine Voice-Chat-Verbindung zu [VOICE_CHANNEL_NAME] herzustellen. Bitte versuchen Sie es erneut. - </notification> - - <notification - - name="ServerVersionChanged" - > -Die Region, die Sie betreten haben, verwendet eine andere Simulatorversion. Klicken Sie auf diese Nachricht, um weitere Informationen zu erhalten. - </notification> - - <notification - - name="UnableToOpenCommandURL" - > -Die URL, die Sie angeklickt haben, kann in diesem Web Browser nicht geöffnet werden. - </notification> - - <global name="UnsupportedCPU"> -- Ihre CPU-Geschwindigkeit entspricht nicht den Mindestanforderungen. - </global> - - <global name="UnsupportedGLRequirements"> -Ihr Computer entspricht nicht den Hardwareanforderungen von Second Life. Second Life setzt eine OpenGL-Grafikkarte mit Multitextur-Unterstützung voraus. Falls Ihre Grafikkarte diese Funktion unterstützt, installieren Sie die neuesten Treiber sowie die aktuellen Service Packs und Patches für Ihr Betriebssystem. - -Sollte das Problem fortbestehen, finden Sie weitere Hilfestellung unter: http://www.secondlife.com/support - </global> - - <global name="UnsupportedCPUAmount"> -796 - </global> - - <global name="UnsupportedRAMAmount"> -510 - </global> - - <global name="UnsupportedGPU"> -- Ihre Grafikkarte entspricht nicht den Mindestanforderungen. - </global> - - <global name="UnsupportedRAM"> -- Ihr Arbeitsspeicher entspricht nicht den Mindestanforderungen. - </global> - - <global name="PermYes"> -Ja - </global> - - <global name="PermNo"> -Nein - </global> -</notifications> - +<?xml version="1.0" encoding="utf-8"?> +<notifications> + <global name="skipnexttime"> + Nicht mehr anzeigen + </global> + <global name="alwayschoose"> + Diese Option immer auswählen + </global> + <template name="okbutton"> + <form> + <button + name="OK" + text="$yestext"/> + </form> + </template> + + <template name="okignore"> + <form> + <button + name="OK" + text="$yestext"/> + <ignore text="$ignoretext"/> + </form> + </template> + + <template name="okcancelbuttons"> + <form> + <button + name="OK" + text="$yestext"/> + <button + name="Cancel" + text="$notext"/> + </form> + </template> + + <template name="okcancelignore"> + <form> + <button + name="OK" + text="$yestext"/> + <button + name="Cancel" + text="$notext"/> + <ignore text="$ignoretext"/> + </form> + </template> + + <template name="okhelpbuttons"> + <form> + <button + name="OK" + text="$yestext"/> + <button + name="Help" + text="$helptext"/> + </form> + </template> + + <template name="yesnocancelbuttons"> + <form> + <button + name="Yes" + text="$yestext"/> + <button + name="No" + text="$notext"/> + <button + name="Cancel" + text="$canceltext"/> + </form> + </template> + <notification functor="GenericAcknowledge" label="Unbekannter Warnhinweis" name="MissingAlert"> + Ihre Version von Second Life kann den gerade empfangenen Warnhinweis nicht anzeigen. + +Fehlerdetails: Der Warnhinweis „[_NAME]“ wurde in notifications.xml nicht gefunden. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="FloaterNotFound"> + Floater-Fehler: Folgende Steuerelemente wurden nicht gefunden: + +[CONTROLS] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="TutorialNotFound"> + Derzeit ist kein Tutorial verfügbar. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="GenericAlert"> + [MESSAGE] + </notification> + <notification name="GenericAlertYesCancel"> + [MESSAGE] + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Ja"/> + </notification> + <notification name="BadInstallation"> + Beim Aktualisieren von Second Life ist ein Fehler aufgetreten. Bitte laden Sie die aktuellste Version von secondlife.com herunter. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="LoginFailedNoNetwork"> + Netzwerk Fehler: Eine Verbindung konnte nicht hergestellt werden. +„[DIAGNOSTIC]“ +Bitte überprüfen Sie Ihre Netzwerkverbindung. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MessageTemplateNotFound"> + Meldungsvorlage [PATH] nicht gefunden. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="WearableSave"> + Änderung an aktueller Kleidung/Körperteil speichern? + <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Nicht speichern" yestext="Speichern"/> + </notification> + <notification name="CompileQueueSaveText"> + Der Text für ein Skript konnte aus folgendem Grund nicht hochgeladen werden: [REASON]. Bitte versuchen Sie es erneut. + </notification> + <notification name="CompileQueueSaveBytecode"> + Eine kompiliertes Skript konnte aus folgendem Grund nicht hochgeladen werden: [REASON]. Bitte versuchen Sie es erneut. + </notification> + <notification name="WriteAnimationFail"> + Fehler beim Schreiben von Animationsdaten. Bitte versuchen Sie es erneut. + </notification> + <notification name="UploadAuctionSnapshotFail"> + Eine Auktions-Screenshot konnte aus folgendem Grund nicht hochgeladen werden: [REASON] + </notification> + <notification name="UnableToViewContentsMoreThanOne"> + Es kann nur jeweils der Inhalt von einem Objekt angezeigt werden. +Wählen Sie ein einzelnes Objekt aus und versuchen Sie es erneut. + </notification> + <notification name="SaveClothingBodyChanges"> + Änderung an Kleidung/Körperteilen speichern? + <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Nicht speichern" yestext="Alles speichern"/> + </notification> + <notification name="GrantModifyRights"> + Die Gewährung von Änderungsrechten an andere Einwohner ermöglicht es diesen, JEDES BELIEBIGE Objekt zu ändern oder an sich zu nehmen, das Sie in der Second Life-Welt besitzen. Seien Sie SEHR vorsichtig beim Erteilen dieser Erlaubnis. +Möchten Sie [FIRST_NAME] [LAST_NAME] Änderungsrechte gewähren? + <usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/> + </notification> + <notification name="GrantModifyRightsMultiple"> + Die Gewährung von Änderungsrechten an andere Einwohner ermöglicht es diesen, JEDES BELIEBIGE Objekt zu ändern, das Sie in der Second Life-Welt besitzen. Seien Sie SEHR vorsichtig beim Erteilen dieser Erlaubnis. +Möchten Sie den ausgewählten Einwohnern Änderungsrechte gewähren? + <usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/> + </notification> + <notification name="RevokeModifyRights"> + Möchten Sie [FIRST_NAME] [LAST_NAME] die Änderungsrechte entziehen? + <usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/> + </notification> + <notification name="RevokeModifyRightsMultiple"> + Möchten Sie den ausgewählten Einwohnern die Änderungsrechte entziehen? + <usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/> + </notification> + <notification name="UnableToCreateGroup"> + Gruppe konnte nicht erstellt werden. +[MESSAGE] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="PanelGroupApply"> + [NEEDS_APPLY_MESSAGE] +[WANT_APPLY_MESSAGE] + <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Änderungen verwerfen" yestext="Änderungen übernehmen"/> + </notification> + <notification name="MustSpecifyGroupNoticeSubject"> + Geben Sie einen Betreff für die Gruppenmitteilung ein. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="AddGroupOwnerWarning"> + Sie sind im Begriff, Gruppenmitgliedern die Rolle [ROLE_NAME] zuzuweisen. +Diese Rolle kann Mitgliedern nicht mehr entzogen werden. +Sie müssen die Rolle selbst niederlegen. +Möchten Sie fortfahren? + <usetemplate ignoretext="Beim Hinzufügen von Gruppenmitgliedern zur Eigentümerrolle" name="okcancelignore" notext="Nein" yestext="Ja"/> + </notification> + <notification name="AssignDangerousActionWarning"> + Sie sind im Begriff, der Rolle „[ROLE_NAME]“ die Fähigkeit „[ACTION_NAME]“ zuzuweisen. + + *ACHTUNG* + Mitglieder in einer Rolle mit dieser Fähigkeit können sich selbst - + und allen anderen Mitgliedern – Rollen zuweisen, die mehr Rechte + beinhalten als sie derzeit haben, und damit nahezu + Eigentümerrechte erreichen. Überlegen Sie sich, wem Sie diese Fähigkeit + verleihen. + +Der Rolle „[ROLE_NAME]“ diese Fähigkeit zuweisen? + <usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/> + </notification> + <notification name="AssignDangerousAbilityWarning"> + Sie sind im Begriff, der Rolle „[ROLE_NAME]“ die Fähigkeit „[ACTION_NAME]“ zuzuweisen. + + *ACHTUNG* + Mitglieder in einer Rolle mit dieser Fähigkeit können sich selbst - + und allen anderen Mitgliedern – alle Fähigkeiten zuweisen und + damit fast Eigentümerrechte erreichen. + +Der Rolle „[ROLE_NAME]“ diese Fähigkeit zuweisen? + <usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/> + </notification> + <notification name="ClickPublishHelpLand"> + Auswahl von „In Suche veröffentlichen“ +Dieses Kontrollkästchen zeigt Folgendes an: +- diese Parzelle in den Suchergebnissen +- die öffentlichen Objekte dieser Parzelle +- diese Parzelle in der Websuche + </notification> + <notification name="ClickSoundHelpLand"> + Medien und Musik können nur innerhalb der Parzelle abgespielt werden. Sound- und Voice-Chat-Optionen können auf die Parzelle beschränkt werden oder von Einwohnern außerhalb der Parzelle, entsprechend ihrer Alterseinstufung, gehört werden. Möchten Sie unsere Knowledgebase besuchen, um mehr darüber zu erfahren, wie diese Optionen eingestellt werden können? + <url name="url"> + http://wiki.secondlife.com/wiki/Medien_auf_Parzellen_(KB) + </url> + <usetemplate name="okcancelbuttons" notext="Schließen" yestext="Zur Knowledgbase"/> + </notification> + <notification name="ClickSearchHelpAll"> + Die Suchergebnisse wurde aufgrund der entsprechenden Registerkarte, Ihrer Alterseinstufung, der gewählten Kategorie und anderen Faktoren geordnet. Bitte besuchen Sie unsere Knowledgebase, um weitere Informationen zu erhalten. + <url name="url"> + http://wiki.secondlife.com/wiki/FAQ_zur_Suchfunktion_(KB) + </url> + <usetemplate name="okcancelbuttons" notext="Schließen" yestext="Zur Knowledgbase"/> + </notification> + <notification name="ClickPublishHelpLandDisabled"> + Diese Parzelle kann nicht in der Suche angezeigt werden, da sie sich in einer Region befindet, die das verbietet. + </notification> + <notification name="ClickPublishHelpAvatar"> + Auswahl von „In Suche anzeigen“ zeigt Folgendes an: +- Ihr Profil in den Suchergebnissen +- einen Link auf Ihr Profil in den öffentlichen Gruppenseiten + </notification> + <notification name="ClickPartnerHelpAvatar"> + Auf der [SECOND_LIFE] Website können Sie anderen Einwohnern eine Partnerschaft vorschlagen und bestehende Partnerschaften lösen. + +Die Second Life Website für weitere Informationen über Partnerschaften öffnen? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Gehe zu Seite"/> + </notification> + <notification name="ClickUploadHelpPermissions"> + Ihre Standardberechtigung funktionieren in älteren Regionen möglicherweise nicht. + </notification> + <notification name="ClickWebProfileHelpAvatar"> + Wenn dieser Einwohner einen Webprofil-URL angegeben hat, können Sie: + * Auf „Laden“ klicken und die Seite in dieser Web-Registerkarte anzeigen. + * Auf Laden > „In externem Browser“ klicken und die Seite im Standard-Browser anzeigen. + * Auf Laden > „Start-URL“ klicken und zum Webprofil des Bewohners zurückkehren. + +In Ihrem eigenen Profil können Sie jeden beliebigen URL als Ihr Webprofil eingeben und mit OK übernehmen. +Wenn sich andere Einwohner Ihr Profil ansehen, können sie diesen URL besuchen. + </notification> + <notification name="JoinGroupCanAfford"> + Der Beitritt zu dieser Gruppe kostet [COST] L$. +Fortfahren? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Beitreten"/> + </notification> + <notification name="JoinGroupCannotAfford"> + Der Beitritt zu dieser Gruppe kostet [COST] L$. +Sie haben nicht genug L$, um dieser Gruppe beizutreten. + </notification> + <notification name="LandBuyPass"> + Sie können dieses Land („[PARCEL_NAME]“) für [COST] L$ +[TIME] Stunden lang betreten. Pass kaufen? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="SalePriceRestriction"> + Der Verkaufspreis muss beim allgemeinen Verkauf über 0 L$ liegen. +Wählen Sie eine bestimmte Person aus, wenn Sie für 0 L$ verkaufen. + </notification> + <notification name="ConfirmLandSaleChange"> + Die ausgewählten [LAND_SIZE] qm Land werden zum Verkauf freigegeben. +Der Verkaufspreis beträgt [SALE_PRICE] L$ und wird automatisch für den Verkauf an [NAME] autorisiert. + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="ConfirmLandSaleToAnyoneChange"> + ACHTUNG: Wenn Sie auf „An jeden verkaufen“ klicken, kann jeder in Second Life Ihr Land kaufen, auch Einwohner in anderen Regionen. + +Die ausgewählten [LAND_SIZE] qm Land werden zum Verkauf freigegeben. +Der Verkaufspreis beträgt [SALE_PRICE] L$ und wird automatisch für den Verkauf an [NAME] autorisiert. + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="ReturnObjectsDeededToGroup"> + Möchten Sie alle Ihre Objekte auf dieser Parzelle, die der Gruppe „[NAME]“ gehören, zurück in das jeweilige Inventar ihrer vorherigen Eigentümer transferieren? + +*WARNUNG* Alle nicht transferierbaren Objekte, die der Gruppe übertragen wurden, werden dabei gelöscht! + +Objekte: [N] + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="ReturnObjectsOwnedByUser"> + Möchten Sie alle Objekte auf dieser Parzelle, die dem Einwohner „[NAME]“ gehören, in das jeweilige Inventar ihrer Eigentümer transferieren? + +Objekte: [N] + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="ReturnObjectsOwnedBySelf"> + Möchten Sie alle Objekte auf dieser Parzelle, die Ihnen gehören, zurück in Ihr Inventar transferieren? + +Objekte: [N] + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="ReturnObjectsNotOwnedBySelf"> + Möchten Sie alle Objekte auf dieser Parzelle, die NICHT Ihnen gehören, in das Inventar ihrer Eigentümer transferieren? +Transferierbare Objekte, die an eine Gruppe übertragen wurden, werden ihren vorherigen Eigentümern zurückgegeben. + +*WARNUNG* Alle nicht transferierbaren Objekte, die der Gruppe übertragen wurden, werden dabei gelöscht! + +Objekte: [N] + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="ReturnObjectsNotOwnedByUser"> + Möchten Sie alle Objekte auf dieser Parzelle, die NICHT [NAME] gehören, in das Inventar ihrer Eigentümer transferieren? +Transferierbare Objekte, die an eine Gruppe übertragen wurden, werden ihren vorherigen Eigentümern zurückgegeben. + +*WARNUNG* Alle nicht transferierbaren Objekte, die der Gruppe übertragen wurden, werden dabei gelöscht! + +Objekte: [N] + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="ReturnAllTopObjects"> + Möchten Sie alle aufgeführten Objekte ihren Eigentümern zurückgeben? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="DisableAllTopObjects"> + Möchten Sie alle Objekte in dieser Region deaktivieren? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="ReturnObjectsNotOwnedByGroup"> + Objekte auf dieser Parzelle, die von der Gruppe [NAME] nicht gemeinsam genutzt werden, an ihre Eigentümer zurückgeben? + +Objekte: [N] + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="UnableToDisableOutsideScripts"> + Skriptdeaktivierung nicht möglich. +Für die gesamte Region ist Schaden aktiviert. +Damit Waffen funktionieren, müssen Skripts erlaubt sein. + </notification> + <notification name="MustBeInParcel"> + Sie müssen auf einer Landparzelle stehen, um ihren Landepunkt festzulegen. + </notification> + <notification name="PromptRecipientEmail"> + Bitte geben Sie für den/die Empfänger eine gültige Email-Adresse ein. + </notification> + <notification name="PromptSelfEmail"> + Geben Sie Ihre E-Mail-Adresse ein. + </notification> + <notification name="PromptMissingSubjMsg"> + Foto mit Standardbetreff bzw. -nachricht als E-Mail versenden? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="ErrorProcessingSnapshot"> + Fehler beim Verarbeiten der Fotodaten + </notification> + <notification name="ErrorEncodingSnapshot"> + Fehler beim Erstellen des Fotos! + </notification> + <notification name="ErrorUploadingPostcard"> + Ein Foto konnte aus folgendem Grund nicht gesendet werden: [REASON] + </notification> + <notification name="ErrorUploadingReportScreenshot"> + Ein Report-Screenshot konnte aus folgendem Grund nicht hochgeladen werden: [REASON] + </notification> + <notification name="MustAgreeToLogIn"> + Bevor Sie sich in [SECOND_LIFE] anmelden können, müssen Sie den Nutzungsbedingungen zustimmen. + </notification> + <notification name="CouldNotPutOnOutfit"> + Outfit konnte nicht angezogen werden. +Der Outfit-Ordner enthält keine Kleidung, Körperteile oder Anhänge. + </notification> + <notification name="CannotWearTrash"> + Kleider oder Körperteile im Papierkorb können nicht getragen werden + </notification> + <notification name="CannotWearInfoNotComplete"> + Sie können das Objekt nicht anziehen, weil es noch nicht geladen wurde. Warten Sie kurz und versuchen Sie es dann noch einmal. + </notification> + <notification name="MustHaveAccountToLogIn"> + Hoppla! Da fehlt noch etwas. +Geben Sie bitte den Vor- und den Nachnamen Ihres Avatars ein. + +Sie benötigen ein Benutzerkonto, um [SECOND_LIFE] betreten zu können. Möchten Sie jetzt ein Benutzerkonto anlegen? + <usetemplate name="okcancelbuttons" notext="Erneut versuchen" yestext="Neues Benutzerkonto anlegen"/> + </notification> + <notification name="AddClassified"> + Anzeigen erscheinen für eine Woche unter „Anzeigen“ im Suchverzeichnis. Füllen Sie Ihre Anzeige aus und klicken Sie auf „Veröffentlichen...“, um sie zum Verzeichnis hinzuzufügen. Sie werden gebeten, einen Preis zu bezahlen, wenn Sie auf „Veröffentlichen“ klicken. Wenn Sie mehr bezahlen oder ein Benutzer nach Ihren Suchbegriffen sucht, erscheint Ihre Anzeige weiter oben in der Liste. + <usetemplate ignoretext="Beim Hinzufügen einer neuen Anzeige" name="okcancelignore" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="DeleteClassified"> + Anzeige „[NAME]“ löschen? +Gebühren werden nicht rückerstattet. + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="ClassifiedSave"> + Änderung an Anzeige [NAME] speichern? + <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Nicht speichern" yestext="Speichern"/> + </notification> + <notification name="DeleteAvatarPick"> + Auswahl [PICK] löschen? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="PromptGoToEventsPage"> + Zur [SECOND_LIFE] Events-Webseite? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="SelectProposalToView"> + Wählen Sie ein Angebot zur Ansicht. + </notification> + <notification name="SelectHistoryItemToView"> + Wählen Sie ein Element zur Ansicht. + </notification> + <notification name="ResetShowNextTimeDialogs"> + Möchten Sie alle Popups wieder aktivieren, die Sie zuvor auf „Nicht mehr anzeigen“ gesetzt haben? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="SkipShowNextTimeDialogs"> + Möchten Sie alle Popups, die übersprungen werden können, deaktivieren? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="CacheWillClear"> + Der Cache wird nach einem Neustart von [SECOND_LIFE] geleert. + </notification> + <notification name="CacheWillBeMoved"> + Der Cache wird nach einem Neustart von [SECOND_LIFE] verschoben. +Hinweis: Der Cache wird dabei gelöscht/geleert. + </notification> + <notification name="ChangeConnectionPort"> + Die Port-Einstellungen werden nach einem Neustart von [SECOND_LIFE] wirksam. + </notification> + <notification name="ChangeSkin"> + Die neue Benutzeroberfläche wird nach einem Neustart von [SECOND_LIFE] angewendet. + </notification> + <notification name="GoToAuctionPage"> + Zur [SECOND_LIFE]-Webseite, um Auktionen anzuzeigen oder ein Gebot abzugeben? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="SaveChanges"> + Änderungen speichern? + <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Nicht speichern" yestext="Speichern"/> + </notification> + <notification name="GestureSaveFailedTooManySteps"> + Speichern der Geste fehlgeschlagen. +Die Geste besteht aus zu vielen Schritten. +Löschen Sie einige Schritte und versuchen Sie es erneut. + </notification> + <notification name="GestureSaveFailedTryAgain"> + Speichern der Geste fehlgeschlagen. Warten Sie kurz und versuchen Sie es dann noch einmal. + </notification> + <notification name="GestureSaveFailedObjectNotFound"> + Geste konnte nicht gespeichert werden, da das Objekt oder das zugehörige Objektinventar nicht gefunden wurden. +Das Objekt ist möglicherweise außer Reichweite oder wurde gelöscht. + </notification> + <notification name="GestureSaveFailedReason"> + Eine Geste konnte aus folgendem Grund nicht gespeichert werden: [REASON]. Speichern Sie die Geste bitte später. + </notification> + <notification name="SaveNotecardFailObjectNotFound"> + Notizkarte konnte nicht gespeichert werden, da das Objekt oder das zugehörige Objektinventar nicht gefunden wurden. +Das Objekt ist möglicherweise außer Reichweite oder wurde gelöscht. + </notification> + <notification name="SaveNotecardFailReason"> + Eine Notizkarte konnte aus folgendem Grund nicht gespeichert werden: [REASON]. Speichern Sie die Notizkarte bitte später. + </notification> + <notification name="ScriptCannotUndo"> + Es konnten nicht alle Änderungen in Ihrer Skriptversion rückgängig gemacht werden. +Möchten Sie die letzte gespeicherte Version vom Server laden? +(**Warnung** Dieser Vorgang kann nicht rückgängig gemacht werden.) + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="SaveScriptFailReason"> + Ein Skript konnte aus folgendem Grund nicht gespeichert werden: [REASON]. Speichern Sie das Skript bitte später. + </notification> + <notification name="SaveScriptFailObjectNotFound"> + Skript konnte nicht gespeichert werden, weil das zugehörige Objekt nicht gefunden wurde. +Das Objekt ist möglicherweise außer Reichweite oder wurde gelöscht. + </notification> + <notification name="SaveBytecodeFailReason"> + Ein kompiliertes Skript konnte aus folgendem Grund nicht gespeichert werden: [REASON]. Speichern Sie das Skript bitte später. + </notification> + <notification name="CouldNotStartStopScript"> + Skript konnte nicht gestartet oder beendet werden, weil das zugehörige Objekt nicht gefunden wurde. +Das Objekt ist möglicherweise außer Reichweite oder wurde gelöscht. + </notification> + <notification name="CannotDownloadFile"> + Dateidownload nicht möglich + </notification> + <notification name="CannotWriteFile"> + Datei [[FILE]] kann nicht geschrieben werden + </notification> + <notification name="UnsupportedHardware"> + Achtung: Ihr System erfüllt nicht die Mindestanforderungen von Second Life. Dies kann eine schlechte Darstellungsleistung in Second Life zur Folge haben. Für nicht unterstützte Systemkonfigurationen bieten wir keinen technischen Support. + +MINSPECS +Die Seite [_URL] für weitere Informationen öffnen? + <url name="url" option="0"> + http://secondlife.com/support/sysreqs.php?lang=de + </url> + <usetemplate ignoretext="Bei Entdeckung nicht unterstützter Hardware" name="okcancelignore" notext="Nein" yestext="Ja"/> + </notification> + <notification name="UnknownGPU"> + Ihr System verwendet eine uns zurzeit unbekannte Grafikkarte. +Dies ist häufig der Fall bei neuer Hardware, die wir noch nicht testen konnten. +Second Life funktioniert aller Voraussicht nach normal, möglicherweise müssen Sie aber die Grafikeinstellungen anpassen. +(Bearbeiten > Einstellungen > Grafik). + <form name="form"> + <ignore name="ignore" text="Bei Entdeckung einer unbekannten Grafikkarte"/> + </form> + </notification> + <notification name="DisplaySettingsNoShaders"> + [SECOND_LIFE] ist bei der Initialisierung der Grafiktreiber abgestürzt. +Die Grafikqualität wird auf eine niedrige Stufe zurückgesetzt, um einige typische Treiberfehler zu vermeiden. +Einige Grafikfunktionen werden ausgeschaltet. +Wir empfehlen die Aktualisierung Ihrer Grafikkartentreiber. +Sie können die Grafikqualität unter „Einstellungen“ > „Grafik“ wieder erhöhen. + </notification> + <notification name="RegionNoTerraforming"> + Die Region [REGION] erlaubt kein Terraforming. + </notification> + <notification name="CannotCopyWarning"> + Sie sind nicht berechtigt, dieses Objekt zu kopieren und verlieren es aus Ihrem Inventar, wenn Sie es weggeben. Möchten Sie dieses Objekt anbieten? + <usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/> + </notification> + <notification name="CannotGiveItem"> + Inventarobjekt kann nicht übergeben werden. + </notification> + <notification name="TransactionCancelled"> + Transaktion abgebrochen. + </notification> + <notification name="TooManyItems"> + Es können maximal 42 Objekte auf einmal in das Inventar transferiert werden. + </notification> + <notification name="NoItems"> + Sie sind nicht berechtigt, die ausgewählten Objekte zu kopieren. + </notification> + <notification name="CannotCopyCountItems"> + Sie sind nicht berechtigt, [COUNT] der ausgewählten Objekte zu kopieren. Diese Objekte werden aus Ihrem Inventar gelöscht. +Möchten Sie diese Objekte weggeben? + <usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/> + </notification> + <notification name="CannotGiveCategory"> + Sie sind nicht berechtigt, den ausgewählten Ordner zu kopieren. + </notification> + <notification name="FreezeAvatar"> + Diesen Avatar einfrieren? +Der Avatar wird außer Gefecht gesetzt und kann sich nicht mehr bewegen, chatten oder mit der Welt interagieren. + <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Auftauen" yestext="Einfrieren"/> + </notification> + <notification name="FreezeAvatarFullname"> + [AVATAR_NAME] einfrieren? +Der Avatar wird außer Gefecht gesetzt und kann sich nicht mehr bewegen, chatten oder mit der Welt interagieren. + <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Auftauen" yestext="Einfrieren"/> + </notification> + <notification name="EjectAvatarFullname"> + [AVATAR_NAME] von Ihrem Land werfen? + <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Ausschließen und Verbannen" yestext="Ausschließen"/> + </notification> + <notification name="EjectAvatarNoBan"> + Diesen Avatar aus Ihrem Land werfen? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Hinauswerfen"/> + </notification> + <notification name="EjectAvatarFullnameNoBan"> + [AVATAR_NAME] aus Ihrem Land werfen? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Hinauswerfen"/> + </notification> + <notification name="AcquireErrorTooManyObjects"> + FEHLER: Zu viele Objekte ausgewählt. + </notification> + <notification name="AcquireErrorObjectSpan"> + FEHLER: Die Objekte überspannen mehrere Regionen. +Verschieben Sie alle betreffenden Objekte in dieselbe Region. + </notification> + <notification name="PromptGoToCurrencyPage"> + [EXTRA] + +[URL] für Informationen zum Deviseneinkauf öffnen? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="UnableToLinkObjects"> + Verknüpfung dieser [COUNT] Objekte nicht möglich. +Sie können maximal [MAX] Objekte verknüpfen. + </notification> + <notification name="CannotLinkIncompleteSet"> + Sie können nur vollständige Objektsätze verknüpfen und Sie müssen mehr als ein Objekt auswählen. + </notification> + <notification name="CannotLinkModify"> + Verknüpfung nicht möglich, da Sie nicht alle Objekte bearbeiten dürfen. + +Stellen Sie sicher, dass kein Objekt gesperrt ist und alle Objekte Ihnen gehören. + </notification> + <notification name="CannotLinkDifferentOwners"> + Verknüpfung nicht möglich, da nicht alle Objekte denselben Eigentümer haben. + +Stellen Sie sicher, dass alle ausgewählten Objekte Ihnen gehören. + </notification> + <notification name="NoFileExtension"> + Kein Dateityp für Datei: „[FILE]“ + +Vergewissern Sie sich, dass die Datei den richtigen Dateityp hat. + </notification> + <notification name="InvalidFileExtension"> + Ungültige Datei-Endung [EXTENSION] +Erwartet wurde [VALIDS] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="CannotUploadSoundFile"> + Sounddatei konnte nicht hochgeladen werden: +[FILE] + </notification> + <notification name="SoundFileNotRIFF"> + Die Datei ist anscheinend keine RIFF WAVE-Datei: +[FILE] + </notification> + <notification name="SoundFileNotPCM"> + Die Datei ist anscheinend keine PCM WAVE-Audiodatei: +[FILE] + </notification> + <notification name="SoundFileInvalidChannelCount"> + Die Datei hat eine ungültige Anzahl Tonkanäle (muss Mono oder Stereo sein): +[FILE] + </notification> + <notification name="SoundFileInvalidSampleRate"> + Die Sample-Rate dieser Datei wird nicht unterstützt (muss 44,1 K sein): +[FILE] + </notification> + <notification name="SoundFileInvalidWordSize"> + Die Word-Größe dieser Datei wird nicht unterstützt (muss 8 oder 16 Bit sein): +[FILE] + </notification> + <notification name="SoundFileInvalidHeader"> + „Daten“-Chunk in WAV-Header nicht gefunden: +[FILE] + </notification> + <notification name="SoundFileInvalidTooLong"> + Audiodatei ist zu lang (max. 10 Sekunden): +[FILE] + </notification> + <notification name="ProblemWithFile"> + Problem mit Datei [FILE]: + +[ERROR] + </notification> + <notification name="CannotOpenTemporarySoundFile"> + Temporäre komprimierte Sounddatei konnte nicht geöffnet werden: [FILE] + </notification> + <notification name="UnknownVorbisEncodeFailure"> + Unbekannter Vorbis-Kodierungsfehler in: [FILE] + </notification> + <notification name="CannotEncodeFile"> + Datei konnte nicht kodiert werden: [FILE] + </notification> + <notification name="CorruptResourceFile"> + Ressourcendatei beschädigt: [FILE] + </notification> + <notification name="UnknownResourceFileVersion"> + Unbekannte Linden-Ressourcenversion in Datei: [FILE] + </notification> + <notification name="UnableToCreateOutputFile"> + Ausgabedatei konnte nicht erstellt werden: [FILE] + </notification> + <notification name="DoNotSupportBulkAnimationUpload"> + Der Mehrfach-Upload von Animationsdateien wird zurzeit nicht unterstützt. + </notification> + <notification name="CannotUploadReason"> + Datei [FILE] kann aus folgendem Grund nicht hochgeladen werden: [REASON] +Bitte versuchen Sie es erneut. + </notification> + <notification name="CannotCreateLandmarkNotOwner"> + Sie können hier keine Landmarke erstellen, da der Landeigentümer dies verboten hat. + </notification> + <notification name="CannotRecompileSelectObjectsNoScripts"> + „Rekompilieren“ nicht möglich. +Objekt mit Skript wählen. + </notification> + <notification name="CannotRecompileSelectObjectsNoPermission"> + „Rekompilieren“ nicht möglich. + +Wählen Sie Objekte mit Skripts, die Sie bearbeiten dürfen. + </notification> + <notification name="CannotResetSelectObjectsNoScripts"> + „Zurücksetzen“ nicht möglich. + +Wählen Sie Objekte mit Skripts. + </notification> + <notification name="CannotResetSelectObjectsNoPermission"> + „Zurücksetzen“ nicht möglich. + +Wählen Sie Objekte mit Skripts, die Sie bearbeiten dürfen. + </notification> + <notification name="CannotSetRunningSelectObjectsNoScripts"> + „Ausführen“ von Skripts nicht möglich. + +Wählen Sie Objekte mit Skripts. + </notification> + <notification name="CannotSetRunningNotSelectObjectsNoScripts"> + „Deaktivieren“ von Skripts nicht möglich. + +Wählen Sie Objekte mit Skripts. + </notification> + <notification name="NoFrontmostFloater"> + Kein vorderster Floater zum Speichern. + </notification> + <notification name="SeachFilteredOnShortWords"> + Ihre Suchanfrage wurde geändert. +Zu kurze Begriffe wurden entfernt. + +Ihre Suchanfrage: [FINALQUERY] + </notification> + <notification name="SeachFilteredOnShortWordsEmpty"> + Ihre Suchbegriffe sind zu kurz. +Es wurde keine Suche durchgeführt. + </notification> + <notification name="CouldNotTeleportReason"> + Teleport fehlgeschlagen. +[REASON] + </notification> + <notification name="invalid_tport"> + Bei der Bearbeitung Ihrer Teleport-Anfrage ist ein Problem aufgetreten. Sie müssen sich zum Teleportieren eventuell neu anmelden. Wenn Sie diese Nachricht weiterhin erhalten, konsultieren Sie bitte die Tech-Support-FAQ unter: +www.secondlife.com/support + </notification> + <notification name="invalid_region_handoff"> + Bei der Bearbeitung Ihres Regionswechsels ist ein Problem aufgetreten. Sie müssen sich zum Wechsel der Region eventuell neu anmelden. Wenn Sie diese Nachricht weiterhin erhalten, konsultieren Sie bitte die Tech-Support-FAQ unter: +www.secondlife.com/support + </notification> + <notification name="blocked_tport"> + Teleportieren ist zurzeit leider nicht möglich. Versuchen Sie es später noch einmal. +Wenn der Teleport dann immer noch nicht funktioniert, melden Sie sich bitte ab und wieder an. + </notification> + <notification name="nolandmark_tport"> + Das System konnte das Landmarken-Ziel nicht finden. + </notification> + <notification name="timeout_tport"> + Das System konnte keine Teleport-Verbindung herstellen. +Versuchen Sie es später noch einmal. + </notification> + <notification name="noaccess_tport"> + Sie haben leider keinen Zugang zu diesem Teleport-Ziel. + </notification> + <notification name="missing_attach_tport"> + Ihre Anhänge sind noch nicht eingetroffen. Warten Sie kurz oder melden Sie sich ab und wieder an, bevor Sie einen neuen Teleport-Versuch unternehmen. + </notification> + <notification name="too_many_uploads_tport"> + Die Asset-Warteschlange in dieser Region ist zurzeit überlastet. +Ihre Teleport-Anfrage kann nicht sofort bearbeitet werden. Versuchen Sie es in einigen Minuten erneut oder besuchen Sie eine weniger überfüllte Region. + </notification> + <notification name="expired_tport"> + Das System konnte Ihre Teleport-Anfrage nicht rechtzeitig bearbeiten. Versuchen Sie es in einigen Minuten erneut. + </notification> + <notification name="expired_region_handoff"> + Das System konnte Ihre Anfrage zum Regionswechsel nicht rechtzeitig bearbeiten. Versuchen Sie es in einigen Minuten erneut. + </notification> + <notification name="no_host"> + Teleport-Ziel wurde nicht gefunden. Das Ziel ist entweder im Moment nicht verfügbar oder existiert nicht mehr. Versuchen Sie es in einigen Minuten erneut. + </notification> + <notification name="no_inventory_host"> + Das Inventarsystem ist zurzeit nicht verfügbar. + </notification> + <notification name="CannotSetLandOwnerNothingSelected"> + Landeigentümer kann nicht festgelegt werden: +Keine Parzelle ausgewählt. + </notification> + <notification name="CannotSetLandOwnerMultipleRegions"> + Eine erzwungene Landübertragung ist nicht möglich, da die Auswahl mehrere Regionen umfasst. Wählen Sie ein kleineres Gebiet und versuchen Sie es erneut. + </notification> + <notification name="ForceOwnerAuctionWarning"> + Diese Parzelle steht zur Auktion. Eine zwangsweise Eigentumsübertragung beendet die Auktion und verärgert womöglich Einwohner, die bereits ein Gebot abgegeben haben. Eigentumsübertragung erzwingen? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="CannotContentifyNothingSelected"> + Inhaltsidentifizierung nicht möglich: +Keine Parzelle ausgewählt. + </notification> + <notification name="CannotContentifyNoRegion"> + Inhaltsidentifizierung nicht möglich: +Keine Region ausgewählt. + </notification> + <notification name="CannotReleaseLandNothingSelected"> + Land kann nicht aufgegeben werden: +Keine Parzelle ausgewählt. + </notification> + <notification name="CannotReleaseLandNoRegion"> + Land kann nicht aufgegeben werden: +Region nicht gefunden. + </notification> + <notification name="CannotBuyLandNothingSelected"> + Land kann nicht gekauft werden: +Keine Parzelle ausgewählt. + </notification> + <notification name="CannotBuyLandNoRegion"> + Land kann nicht gekauft werden: +Kann die Region nicht finden, in der sich dieses Land befindet. + </notification> + <notification name="CannotCloseFloaterBuyLand"> + Das Fenster „Land kaufen“ kann erst geschlossen werden, +nachdem Second Life den Transaktionspreis geschätzt hat. + </notification> + <notification name="CannotDeedLandNothingSelected"> + Land kann nicht übertragen werden: +Keine Parzelle ausgewählt. + </notification> + <notification name="CannotDeedLandNoGroup"> + Land kann nicht übertragen werden: +Keine Gruppe ausgewählt. + </notification> + <notification name="CannotDeedLandNoRegion"> + Land kann nicht übertragen werden: +Kann die Region nicht finden, in der sich dieses Land befindet. +Bitte melden Sie dies über „Hilfe“ > „Fehler melden“. + </notification> + <notification name="CannotDeedLandMultipleSelected"> + Land kann nicht übertragen werden: +Mehrere Parzellen ausgewählt. + +Wählen Sie eine einzelne Parzelle. + </notification> + <notification name="ParcelCanPlayMedia"> + Dieser Ort kann Streaming-Medien abspielen. +Streaming-Medien erfordern eine schnelle Internet-Verbindung. + +Streaming-Medien abspielen, wenn verfügbar? +(Sie können diese Option später unter „Einstellungen“ > „Audio & Video“ ändern.) + <usetemplate name="okcancelbuttons" notext="Deaktivieren" yestext="Medien wiedergeben"/> + </notification> + <notification name="CannotDeedLandWaitingForServer"> + Land kann nicht übertragen werden: +Warte auf Server für Eigentümerinformationen. + +Bitte versuchen Sie es erneut. + </notification> + <notification name="CannotDeedLandNoTransfer"> + Land kann nicht übertragen werden: +Die Region [REGION] erlaubt keine Landübertragung. + </notification> + <notification name="CannotReleaseLandWatingForServer"> + Land kann nicht aufgegeben werden: +Server muss Parzelleninformation aktualisieren. + +Versuchen Sie es in einigen Sekunden erneut. + </notification> + <notification name="CannotReleaseLandSelected"> + Land kann nicht aufgegeben werden: +Die ausgewählten Parzellen gehören Ihnen nicht. + +Wählen Sie eine einzelne Parzelle. + </notification> + <notification name="CannotReleaseLandDontOwn"> + Land kann nicht aufgegeben werden: +Ihnen fehlt die Berechtigung zur Freigabe dieser Parzelle. +Parzellen, die Ihnen gehören, werden grün dargestellt. + </notification> + <notification name="CannotReleaseLandRegionNotFound"> + Land kann nicht aufgegeben werden: +Kann die Region nicht finden, in der sich dieses Land befindet. + +Bitte melden Sie dies über „Hilfe“ > „Fehler melden“. + </notification> + <notification name="CannotReleaseLandNoTransfer"> + Land kann nicht aufgegeben werden: +Die Region [REGION] erlaubt keine Landübertragung. + </notification> + <notification name="CannotReleaseLandPartialSelection"> + Land kann nicht aufgegeben werden: +Zum Freigeben müssen Sie eine ganze Parzelle auswählen. + +Wählen Sie eine ganze Parzelle oder teilen Sie Ihre Parzelle. + </notification> + <notification name="ReleaseLandWarning"> + Sie sind im Begriff, [AREA] qm Land aufzugeben. +Wenn Sie diese Parzelle aufgeben, wird sie ohne L$-Erstattung von Ihrem Landbesitz entfernt. + +Dieses Land aufgeben? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="CannotDivideLandNothingSelected"> + Land kann nicht aufgeteilt werden: + +Keine Parzellen ausgewählt. + </notification> + <notification name="CannotDivideLandPartialSelection"> + Land kann nicht aufgeteilt werden: + +Sie haben eine ganze Parzelle ausgewählt. +Wählen Sie einen Parzellenabschnitt aus. + </notification> + <notification name="LandDivideWarning"> + Wenn Sie dieses Land teilen, wird diese Parzelle in zwei geteilt, jede mit ihren eigenen Einstellungen. Einige dieser Einstellungen werden aufgrund dieses Vorgangs zurückgesetzt. + +Land teilen? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="CannotDivideLandNoRegion"> + Land kann nicht aufgeteilt werden: +Kann die Region nicht finden, in der sich dieses Land befindet. + +Bitte melden Sie dies über „Hilfe“ > „Fehler melden“. + </notification> + <notification name="CannotJoinLandNoRegion"> + Land kann nicht zusammengelegt werden: +Kann die Region nicht finden, in der sich dieses Land befindet. + +Bitte melden Sie dies über „Hilfe“ > „Fehler melden“. + </notification> + <notification name="CannotJoinLandNothingSelected"> + Land kann nicht zusammengelegt werden: +Keine Parzellen ausgewählt. + </notification> + <notification name="CannotJoinLandEntireParcelSelected"> + Land kann nicht zusammengelegt werden: +Sie haben nur eine Parzelle ausgewählt. + +Wählen Sie Land auf beiden Parzellen aus. + </notification> + <notification name="CannotJoinLandSelection"> + Land kann nicht zusammengelegt werden: +Sie müssen mehrere Parzellen auswählen. + +Wählen Sie Land auf beiden Parzellen aus. + </notification> + <notification name="JoinLandWarning"> + Beim Zusammenlegen entsteht aus den vom Auswahlrechteck +erfassten Parzellen eine große Parzelle. +Sie müssen der neuen Parzelle einen Namen geben und ihre Optionen festlegen. + +Land zusammenlegen? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="ShowOwnersHelp"> + Eigentümer anzeigen: +Parzellen farblich kennzeichnen, um Eigentumsart anzuzeigen. + +Grün = Ihr Land +Blau = Das Land Ihrer Gruppe +Rot = Im Eigentum anderer +Geld = Zum Verkauf +Lila = Zur Auktion +Grau = Öffentlich + </notification> + <notification name="ConfirmNotecardSave"> + Um das Objekt kopieren oder anzeigen zu können, müssen Sie zuerst diese Notizkarte speichern. Notizkarte speichern? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="ConfirmItemCopy"> + Dieses Objekt in Ihr Inventar kopieren? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Kopieren"/> + </notification> + <notification name="ResolutionSwitchFail"> + Auflösung konnte nicht auf [RESX] x [RESY] gesetzt werden + </notification> + <notification name="ErrorUndefinedGrasses"> + Fehler: Nicht definierte Gräser: [SPECIES] + </notification> + <notification name="ErrorUndefinedTrees"> + Fehler: Nicht definierte Bäume: [SPECIES] + </notification> + <notification name="CannotSaveWearableOutOfSpace"> + „[NAME]“ konnte nicht in Kleidungsdatei gespeichert werden. Geben Sie Speicherplatz auf dem Computer frei und speichern Sie das Kleidungsstück erneut. + </notification> + <notification name="CannotSaveToAssetStore"> + [NAME] kann nicht in Zentral-Asset-Speicher geladen werden. +Dies ist ein temporärer Fehler. Bitte passen Sie das Kleidungsstück in einigen Minuten noch einmal an und speichern Sie es erneut. + +Tritt dieses Problem wiederholt auf, klicken Sie auf das Pulldown-Menü „Hilfe“ > „Fehler melden“ und geben Sie Details zu Ihrem Netzwerk-Setup an. + </notification> + <notification name="YouHaveBeenLoggedOut"> + Sie wurden von [SECOND_LIFE] abgemeldet: + [MESSAGE] +Klicken Sie auf „IM & Chat anzeigen“, um vorhandene Nachrichten und Chat weiterhin anzuzeigen. Klicken Sie andernfalls auf „Beenden“, um [SECOND_LIFE] sofort zu beenden. + <usetemplate name="okcancelbuttons" notext="Beenden" yestext="IM & Chat anzeigen"/> + </notification> + <notification name="OnlyOfficerCanBuyLand"> + Landkauf für Gruppe nicht möglich: +Sie sind nicht berechtigt, Land für die aktive Gruppe zu kaufen. + </notification> + <notification label="Freund hinzufügen" name="AddFriend"> + Freunde können sich gegenseitig die Berechtigung erteilen, sich auf der Karte zu verfolgen und Online-Status Benachrichtigungen zu empfangen. + +[NAME] Freundschaft anbieten? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification label="Freund hinzufügen" name="AddFriendWithMessage"> + Freunde können sich gegenseitig die Berechtigung erteilen, sich auf der Karte zu verfolgen und Online-Status Benachrichtigungen zu empfangen. + +[NAME] Freundschaft anbieten? + <form name="form"> + <input name="message" type="text"> + Wollen wir Freunde sein? + </input> + <button name="Offer" text="OK"/> + <button name="Cancel" text="Abbrechen"/> + </form> + </notification> + <notification name="RemoveFromFriends"> + Möchten Sie [FIRST_NAME] [LAST_NAME] aus Ihrer Freundesliste entfernen? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="RemoveMultipleFromFriends"> + Möchten Sie mehrere Freunde aus Ihrer Freundesliste entfernen? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="GodDeleteAllScriptedPublicObjectsByUser"> + Möchten Sie alle geskripteten Objekte von +** [AVATAR_NAME] ** +auf allen anderen Ländern in diesem Sim löschen? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="GodDeleteAllScriptedObjectsByUser"> + Möchten Sie ALLE geskripteten Objekte von +** [AVATAR_NAME] ** +auf ALLEN LÄNDERN in diesem Sim LÖSCHEN? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="GodDeleteAllObjectsByUser"> + Möchten Sie ALLE Objekte (einschließlich geskriptete) von +** [AVATAR_NAME] ** +auf ALLEN LÄNDERN in diesem Sim LÖSCHEN? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="BlankClassifiedName"> + Geben Sie einen Namen für die Anzeige ein. + </notification> + <notification name="MinClassifiedPrice"> + Der Mindestbetrag für die Listung ist [MIN_PRICE] L$. + +Geben sie einen höheren Betrag ein. + </notification> + <notification name="ConfirmObjectDeleteLock"> + Mindestens ein ausgewähltes Objekt ist gesperrt. + +Möchten Sie diese Objekte löschen? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="ConfirmObjectDeleteNoCopy"> + Mindestens ein ausgewähltes Objekt kann nicht kopiert werden. + +Möchten Sie diese Objekte löschen? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="ConfirmObjectDeleteNoOwn"> + Mindestens eines der ausgewählten Objekt gehört nicht Ihnen. + +Möchten Sie diese Objekte löschen? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="ConfirmObjectDeleteLockNoCopy"> + Mindestens ein Objekt ist gesperrt. +Mindestens ein Objekt kann nicht kopiert werden. + +Möchten Sie diese Objekte löschen? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="ConfirmObjectDeleteLockNoOwn"> + Mindestens ein Objekt ist gesperrt. +Mindestens ein Objekt gehört nicht Ihnen. + +Möchten Sie diese Objekte löschen? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="ConfirmObjectDeleteNoCopyNoOwn"> + Mindestens ein Objekt kann nicht kopiert werden. +Mindestens ein Objekt gehört nicht Ihnen. + +Möchten Sie diese Objekte löschen? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="ConfirmObjectDeleteLockNoCopyNoOwn"> + Mindestens ein Objekt ist gesperrt. +Mindestens ein Objekt kann nicht kopiert werden. +Mindestens ein Objekt gehört nicht Ihnen. + +Möchten Sie diese Objekte löschen? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="ConfirmObjectTakeLock"> + Mindestens ein Objekt ist gesperrt. + +Möchten Sie diese Objekte nehmen? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="ConfirmObjectTakeNoOwn"> + Nicht alle Objekte, die Sie aufgenommen haben, gehören Ihnen. +Wenn Sie fortfahren, werden die Rechte für den nächsten Eigentümer angewandt und Sie können die Objekte möglicherweise nicht bearbeiten oder kopieren. + +Möchten Sie diese Objekte nehmen? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="ConfirmObjectTakeLockNoOwn"> + Mindestens ein Objekt ist gesperrt. +Nicht alle Objekte, die Sie aufgenommen haben, gehören Ihnen. +Wenn Sie fortfahren, werden die Rechte für den nächsten Eigentümer abgefragt und Sie können die Objekte möglicherweise nicht bearbeiten oder kopieren. +Die aktuelle Auswahl können Sie jedoch aufnehmen. + +Möchten Sie diese Objekte nehmen? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="CantBuyLandAcrossMultipleRegions"> + Landkauf nicht möglich, da die Auswahl mehrere Regionen umfasst. + +Wählen Sie ein kleineres Gebiet und versuchen Sie es erneut. + </notification> + <notification name="DeedLandToGroup"> + Die Schenkung dieser Parzelle setzt voraus, dass die Gruppe über ausreichende Landnutzungsrechte verfügt. +Dem Eigentümer wird der Kaufpreis für das Land nicht rückerstattet. Bei Verkauf der übertragenen Parzelle wird der Erlös zwischen den Gruppenmitgliedern aufgeteilt. + +Der Gruppe „[GROUP_NAME]“ + [AREA] m² Land schenken? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="DeedLandToGroupWithContribution"> + Die Schenkung dieser Parzelle setzt voraus, dass die Gruppe über ausreichende Landnutzungsrechte verfügt. +Die Schenkung beinhaltet eine Landübertragung an die Gruppe von „[FIRST_NAME] [LAST_NAME]“. +Dem Eigentümer wird der Kaufpreis für das Land nicht rückerstattet. Bei Verkauf der übertragenen Parzelle wird der Erlös zwischen den Gruppenmitgliedern aufgeteilt. + +Der Gruppe „[GROUP_NAME]“ + [AREA] m² Land schenken? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="DisplaySetToSafe"> + Es wurden sichere Anzeige-Einstellungen gewählt, da die Option -safe verwendet wurde. + </notification> + <notification name="DisplaySetToRecommended"> + Es wurden die für Ihre Systemkonfiguration empfohlenen Anzeige-Einstellungen gewählt. + </notification> + <notification name="ErrorMessage"> + [ERROR_MESSAGE] + </notification> + <notification name="AvatarMoved"> + Ihr [TYPE]-Ort ist zurzeit nicht verfügbar. [HELP] +Sie wurden zur nächstgelegenen Region teleportiert. + </notification> + <notification name="ClothingLoading"> + Ihre Kleidung wird noch heruntergeladen. +Sie können [SECOND_LIFE] normal verwenden. Andere Benutzer können Sie korrekt dargestellt sehen. + <form name="form"> + <ignore name="ignore" text="Wenn das Herunterladen von Kleidung lange dauert"/> + </form> + </notification> + <notification name="FirstRun"> + Die Installation von [SECOND_LIFE] ist abgeschlossen. + +Wenn Sie [SECOND_LIFE] das erste Mal verwenden, müssen Sie ein Konto anlegen, bevor Sie sich anmelden können. +Möchten Sie auf www.secondlife.com ein Konto erstellen? + <usetemplate name="okcancelbuttons" notext="Weiter" yestext="Neues Konto..."/> + </notification> + <notification name="LoginPacketNeverReceived"> + Die Verbindung kann nicht hergestellt werden. Möglicherweise besteht ein Problem mit Ihrer Internetverbindung oder den Second Life-Servern. + +Überprüfen Sie Ihre Internetverbindung und versuchen Sie es dann erneut, oder klicken Sie auf „Hilfe“, um zu unserer Supportseite zu gelangen, oder klicken Sie auf „Teleportieren“, um nach Hause zu teleportieren. + <form name="form"> + <button name="OK" text="OK"/> + <button name="Help" text="Hilfe"/> + <button name="Teleport" text="Teleportieren"/> + </form> + </notification> + <notification name="WelcomeChooseSex"> + Ihr Avatar erscheint jeden Moment. + +Benutzen Sie die Pfeiltasten, um sich fortzubewegen. +Drücken Sie F1 für Hilfe oder für weitere Informationen über [SECOND_LIFE]. +Bitte wählen Sie einen männlichen oder weiblichen Avatar. +Sie können sich später noch umentscheiden. + <usetemplate name="okcancelbuttons" notext="Weiblich" yestext="Männlich"/> + </notification> + <notification name="NotEnoughCurrency"> + [NAME] [PRICE] L$ Sie haben nicht genügend L$, um diese Aktion auszuführen. + </notification> + <notification name="GrantedModifyRights"> + Sie verfügen über Änderungsrechte für die Objekte von [FIRST_NAME] [LAST_NAME]. + </notification> + <notification name="RevokedModifyRights"> + Ihnen wurden die Änderungsrechte für die Objekte von [FIRST_NAME] [LAST_NAME] entzogen. + </notification> + <notification name="FlushMapVisibilityCaches"> + Der Kartencache dieser Region wird geleert. +Diese Aktion ist nur beim Debugging sinnvoll. +(Auf dem Produktionssystem warten Sie einfach 5 Minuten. Die Karten werden nach erneuter Anmeldung automatisch aktualisiert.) + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="BuyOneObjectOnly"> + Sie können jeweils nur ein Objekt kaufen. Wählen Sie ein einzelnes Objekt aus und versuchen Sie es erneut. + </notification> + <notification name="OnlyCopyContentsOfSingleItem"> + Es kann nur jeweils der Inhalt von einem Objekt kopiert werden. +Wählen Sie ein einzelnes Objekt aus und versuchen Sie es erneut. + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="KickUsersFromRegion"> + Alle Einwohner in dieser Region nach Hause teleportieren? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="EstateObjectReturn"> + Möchten Sie wirklich alle Objekte zurückgeben, die [USER_NAME] gehören? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="InvalidTerrainBitDepth"> + Die Regionstexturen konnten nicht festgelegt werden: +Die Terraintextur [TEXTURE_NUM] hat eine ungültige Bit-Tiefe [TEXTURE_BIT_DEPTH]. + +Ersetzen Sie die Textur [TEXTURE_NUM] mit einer Bilddatei von maximal 512x512 und 24 Bit und klicken Sie dann erneut auf „Übernehmen“. + </notification> + <notification name="InvalidTerrainSize"> + Die Regionstexturen konnten nicht festgelegt werden: +Die Terraintextur [TEXTURE_NUM] ist mit [TEXTURE_SIZE_X]x[TEXTURE_SIZE_Y] zu groß. + +Ersetzen Sie die Textur [TEXTURE_NUM] mit einer Bilddatei von maximal 512x512 und 24 Bit und klicken Sie dann erneut auf „Übernehmen“. + </notification> + <notification name="RawUploadStarted"> + Hochladen gestartet. Je nach Verbindungsgeschwindigkeit kann der Vorgang bis zu 2 Minuten dauern. + </notification> + <notification name="ConfirmBakeTerrain"> + Möchten Sie das aktuelle Terrain formen, es zum Mittelpunkt der oberen und unteren Terraingrenzen und zum Standard des „Zurücksetzen“-Tools machen? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="MaxAllowedAgentOnRegion"> + Es sind maximal [MAX_AGENTS] zulässige Einwohner erlaubt. + </notification> + <notification name="MaxBannedAgentsOnRegion"> + Es sind maximal [MAX_BANNED] verbannte Einwohner erlaubt. + </notification> + <notification name="MaxAgentOnRegionBatch"> + Fehler beim Versuch, [NUM_ADDED] Agenten hinzuzufügen: +Überschreitet den Grenzwert [MAX_AGENTS] [LIST_TYPE] um [NUM_EXCESS]. + </notification> + <notification name="MaxAllowedGroupsOnRegion"> + Es sind maximal [MAX_GROUPS] zulässige Gruppen erlaubt. + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Formen"/> + </notification> + <notification name="MaxManagersOnRegion"> + Es sind maximal [MAX_MANAGER] verbannte Einwohner erlaub. + </notification> + <notification name="OwnerCanNotBeDenied"> + Der Eigentümer des Grundstücks kann nicht zur Liste der „Verbannten Einwohner“ hinzugefügt werden. + </notification> + <notification name="CanNotChangeAppearanceUntilLoaded"> + Das Aussehen lässt sich erst ändern, wenn Kleider und Form/Gestalt geladen sind. + </notification> + <notification name="ClassifiedMustBeAlphanumeric"> + Der Name der Anzeige muss mit einem Buchstaben von A bis Z oder einer Ziffer beginnen. Satzzeichen sind nicht erlaubt. + </notification> + <notification name="CantSetBuyObject"> + „Objekt kaufen“ nicht möglich, da das Objekt nicht zum Verkauf freigegeben ist. +Geben Sie das Objekt zum Verkauf frei und versuchen Sie es erneut. + </notification> + <notification name="FinishedRawDownload"> + Raw-Terrain-Datei wurde heruntergeladen nach: +[DOWNLOAD_PATH]. + </notification> + <notification name="DownloadWindowsMandatory"> + Eine neue Version von [SECOND_LIFE] ist verfügbar. +[MESSAGE] +Sie müssen das Update herunterladen, um [SECOND_LIFE] weiter verwenden zu können. + <usetemplate name="okcancelbuttons" notext="Beenden" yestext="Herunterladen"/> + </notification> + <notification name="DownloadWindows"> + Eine aktualisierte Version von [SECOND_LIFE] ist verfügbar. +[MESSAGE] +Dieses Update ist nicht erforderlich, für bessere Leistung und Stabilität sollte es jedoch installiert werden. + <usetemplate name="okcancelbuttons" notext="Weiter" yestext="Herunterladen"/> + </notification> + <notification name="DownloadWindowsReleaseForDownload"> + Eine aktualisierte Version von [SECOND_LIFE] ist verfügbar. +[MESSAGE] +Dieses Update ist nicht erforderlich, für bessere Leistung und Stabilität sollte es jedoch installiert werden. + <usetemplate name="okcancelbuttons" notext="Weiter" yestext="Herunterladen"/> + </notification> + <notification name="DownloadMacMandatory"> + Eine neue Version von [SECOND_LIFE] ist verfügbar. +[MESSAGE] +Sie müssen das Update herunterladen, um [SECOND_LIFE] weiter verwenden zu können. + +In Ihren Anwendungsordner herunterladen? + <usetemplate name="okcancelbuttons" notext="Beenden" yestext="Herunterladen"/> + </notification> + <notification name="DownloadMac"> + Eine aktualisierte Version von [SECOND_LIFE] ist verfügbar. +[MESSAGE] +Dieses Update ist nicht erforderlich, für bessere Leistung und Stabilität sollte es jedoch installiert werden. + +In Ihren Anwendungsordner herunterladen? + <usetemplate name="okcancelbuttons" notext="Weiter" yestext="Herunterladen"/> + </notification> + <notification name="DownloadMacReleaseForDownload"> + Eine aktualisierte Version von [SECOND_LIFE] ist verfügbar. +[MESSAGE] +Dieses Update ist nicht erforderlich, für bessere Leistung und Stabilität sollte es jedoch installiert werden. + +In Ihren Anwendungsordner herunterladen? + <usetemplate name="okcancelbuttons" notext="Weiter" yestext="Herunterladen"/> + </notification> + <notification name="DeedObjectToGroup"> + Bei Übertragung dieses Objekts erhält die Gruppe: +* An das Objekt bezahlte L$ + <usetemplate ignoretext="Beim Übertragen von Objekten an Gruppen" name="okcancelignore" notext="Abbrechen" yestext="Übertragung"/> + </notification> + <notification name="WebLaunchExternalTarget"> + Den System-Webbrowser öffnen, um diesen Inhalt anzuzeigen? + <usetemplate ignoretext="Wenn der System-Webbrowser zur Anzeige einer Webseite geöffnet wird" name="okcancelignore" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="WebLaunchJoinNow"> + Zu www.secondlife.com, um Ihr Konto zu verwalten? + <usetemplate ignoretext="Beim Starten eines Browsers, um Ihr Konto zu verwalten" name="okcancelignore" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="WebLaunchBugReport101"> + Informieren Sie sich im [SECOND_LIFE] Wiki, wie man Fehler richtig meldet. + <usetemplate ignoretext="Beim Starten eines Browsers, um das Fehlermeldungs-Wiki anzuzeigen" name="okcancelignore" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="WebLaunchSecurityIssues"> + Informieren Sie sich im [SECOND_LIFE] Wiki, wie man Sicherheitsprobleme richtig meldet. + <usetemplate ignoretext="Beim Starten eines Browsers, um das Sicherheitsfragen-Wiki anzuzeigen" name="okcancelignore" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="WebLaunchQAWiki"> + Besuchen Sie das [SECOND_LIFE] QA-Wiki. + <usetemplate ignoretext="Beim Starten eines Browsers, um das QA-Wiki anzuzeigen" name="okcancelignore" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="WebLaunchPublicIssue"> + Im [SECOND_LIFE] Allgemeine-Fragen-Tracker können Sie Fehler und andere Probleme melden. + <usetemplate ignoretext="Beim Starten eines Browsers, um den Allgemeine Probleme Tracker anzuzeigen" name="okcancelignore" notext="Abbrechen" yestext="Gehe zu Seite"/> + </notification> + <notification name="WebLaunchPublicIssueHelp"> + Informieren Sie sich im [SECOND_LIFE] Wiki über den Allgemeine Fragen-Tracker. + <usetemplate ignoretext="Beim Starten eines Browsers, um das Allgemeine Fragen-Wiki anzuzeigen" name="okcancelignore" notext="Abbrechen" yestext="Gehe zu Seite"/> + </notification> + <notification name="WebLaunchSupportWiki"> + Im offiziellen Linden-Blog finden Sie die neuesten Nachrichten und Informationen. + <usetemplate ignoretext="Beim Starten eines Browsers, um das Blog anzuzeigen" name="okcancelignore" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="WebLaunchLSLGuide"> + Zur Scripting-Anleitung, um Scripting-Hilfe zu erhalten? + <usetemplate ignoretext="Beim Starten eines Browsers, um die Scripting-Anleitung anzuzeigen" name="okcancelignore" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="WebLaunchLSLWiki"> + Zum LSL-Portal, um Scripting-Hilfe zu erhalten? + <usetemplate ignoretext="Beim Starten eines Browsers, um das LSL-Portal anzuzeigen" name="okcancelignore" notext="Abbrechen" yestext="Gehe zu Seite"/> + </notification> + <notification name="ReturnToOwner"> + Möchten Sie die ausgewählten Objekte an ihre Eigentümer zurückgeben? Transferierbare übertragene Objekte werden ihren früheren Eigentümern zurückgegeben. + +*WARNUNG* Nicht transferierbare übertragene Objekte werden dabei gelöscht! + <usetemplate ignoretext="Beim Zurückgeben von Objekten an ihre Eigentümer" name="okcancelignore" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="GroupLeaveConfirmMember"> + Sie sind Mitglied der Gruppe [GROUP]. +Diese Gruppe verlassen? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="ConfirmKick"> + Möchten Sie WIRKLICH alle Benutzer aus dem Grid werfen? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Alle Benutzer hinauswerfen"/> + </notification> + <notification name="MuteLinden"> + Lindens können nicht stummgeschaltet werden. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="CannotStartAuctionAlreadyForSale"> + Eine Parzelle, die bereits zum Verkauf freigegeben ist, kann nicht versteigert werden. Deaktivieren Sie den Landverkauf, wenn Sie das Land zur Versteigerung freigeben möchten. + </notification> + <notification label="Objekt nach Name stummschalten fehlgeschlagen" name="MuteByNameFailed"> + Dieser Name ist bereits stummgeschaltet. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="RemoveItemWarn"> + Diese Aktion ist zwar erlaubt, aber beim Löschen von Inhalten wird das Objekt beschädigt. Möchten Sie dieses Element löschen? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="CantOfferCallingCard"> + Sie können gerade keine Visitenkarte übergeben. Warten Sie kurz und versuchen Sie es dann noch einmal. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="CantOfferFriendship"> + Sie können gerade keine Freundschaft anbieten. Warten Sie kurz und versuchen Sie es dann noch einmal. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="BusyModeSet"> + Beschäftigt-Modus aktiviert. +Chat und Instant Messages werden ausgeblendet. Instant Messages erhalten Ihre Beschäftigt-Antwort. Alle Teleport-Angebote werden ausgeschlagen. Alle Inventar-Angebote werden in den Papierkorb verschoben. + <usetemplate ignoretext="Beim Aktivieren des Beschäftigt-Modus" name="okignore" yestext="OK"/> + </notification> + <notification name="JoinedTooManyGroupsMember"> + Sie sind bereits in zu vielen Gruppen Mitglied und können keiner weiteren beitreten. Bitte verlassen Sie eine Gruppe, bevor Sie dieser beitreten oder lehnen Sie das Angebot ab. +Die Option zum Austritt aus einer Gruppe finden Sie unter „Bearbeiten“ > „Gruppen...“. +[NAME] hat Sie eingeladen, einer Gruppe beizutreten. +[INVITE] + <usetemplate name="okcancelbuttons" notext="Ablehnen" yestext="Beitreten"/> + </notification> + <notification name="KickUser"> + Beim Hinauswerfen dieses Benutzers welche Meldung anzeigen? + <form name="form"> + <input name="message" type="text"> + Sie wurden von einem Administrator abgemeldet. + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Abbrechen"/> + </form> + </notification> + <notification name="KickAllUsers"> + Beim Hinauswerfen aller Personen vom Grid welche Meldung anzeigen? + <form name="form"> + <input name="message" type="text"> + Sie wurden von einem Administrator abgemeldet. + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Abbrechen"/> + </form> + </notification> + <notification name="FreezeUser"> + Beim Einfrieren dieses Benutzers welche Meldung anzeigen? + <form name="form"> + <input name="message" type="text"> + Sie wurden eingefroren. Bewegen oder Chatten ist nicht mehr möglich. Ein Administrator wird sich über IM an Sie wenden + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Abbrechen"/> + </form> + </notification> + <notification name="UnFreezeUser"> + Beim Auftauen dieses Benutzers welche Meldung anzeigen? + <form name="form"> + <input name="message" type="text"> + Sie sind nicht mehr eingefroren. + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Abbrechen"/> + </form> + </notification> + <notification name="OfferTeleport"> + Teleport an Ihre Position mit der folgenden Meldung anbieten? + <form name="form"> + <input name="message" type="text"> + Triff mich in [REGION] + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Abbrechen"/> + </form> + </notification> + <notification name="OfferTeleportFromGod"> + Benutzer an Ihrem Standort herbeirufen? + <form name="form"> + <input name="message" type="text"> + Triff mich in [REGION] + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Abbrechen"/> + </form> + </notification> + <notification name="TeleportFromLandmark"> + Möchten Sie sich wirklich teleportieren? + <usetemplate ignoretext="Beim Teleportieren von einer Landmarke im Inventar" name="okcancelignore" notext="Abbrechen" yestext="Teleportieren"/> + </notification> + <notification label="Nachricht an alle auf diesem Grundstück" name="MessageEstate"> + Geben Sie eine kurze Nachricht ein, die an jede Person auf Ihrem Grundstück gesendet wird. + <form name="form"> + <input name="message" type="text"/> + <button name="OK" text="OK"/> + <button name="Cancel" text="Abbrechen"/> + </form> + </notification> + <notification label="Linden-Grundstück ändern" name="ChangeLindenEstate"> + Sie sind im Begriff, ein Grundstück in Linden-Besitz (Mainland, Teen-Raster, Orientierung usw.) zu verändern. + +Dies ist ÄUSSERST GEFÄHRLICH, da es grundlegende Auswirkungen auf das Benutzererlebnis hat. Auf dem Mainland werden tausende Regionen geändert, was den Spaceserver stark belastet. + +Fortfahren? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification label="Zugang zu Linden-Grundstück ändern" name="ChangeLindenAccess"> + Sie sind im Begriff, die Zugangsliste für ein Grundstück in Linden-Besitz (Mainland, Teen-Raster, Orientierung usw.) zu verändern. + +Dies ist GEFÄHRLICH und sollte nur erfolgen, um Objekte/L$ per Hack in und aus dem Raster zu entfernen. +Tausende Regionen werden verändert und der Spaceserver wird dadurch stark belastet. + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification label="Grundstück wählen" name="EstateAllowedAgentAdd"> + Nur für dieses Grundstück oder für alle [ALL_ESTATES] zur Erlaubnisliste hinzufügen? + <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Alle Grundstücke" yestext="Dieses Grundstück"/> + </notification> + <notification label="Grundstück wählen" name="EstateAllowedAgentRemove"> + Nur für dieses Grundstück oder für alle [ALL_ESTATES] von Erlaubnisliste entfernen? + <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Alle Grundstücke" yestext="Dieses Grundstück"/> + </notification> + <notification label="Grundstück wählen" name="EstateAllowedGroupAdd"> + Nur für dieses Grundstück oder für alle [ALL_ESTATES] zur Gruppen-Erlaubnisliste hinzufügen? + <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Alle Grundstücke" yestext="Dieses Grundstück"/> + </notification> + <notification label="Grundstück wählen" name="EstateAllowedGroupRemove"> + Nur für dieses Grundstück oder für alle [ALL_ESTATES] von Gruppen-Erlaubnisliste entfernen? + <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Alle Grundstücke" yestext="Dieses Grundstück"/> + </notification> + <notification label="Grundstück wählen" name="EstateBannedAgentAdd"> + Zugang nur für dieses Grundstück oder für [ALL_ESTATES] verweigern? + <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Alle Grundstücke" yestext="Dieses Grundstück"/> + </notification> + <notification label="Grundstück wählen" name="EstateBannedAgentRemove"> + Einwohner nur für dieses Grundstück oder für alle [ALL_ESTATES] von der Bannliste entfernen? + <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Alle Grundstücke" yestext="Dieses Grundstück"/> + </notification> + <notification label="Grundstück wählen" name="EstateManagerAdd"> + Verwalter nur für dieses Grundstück oder für [ALL_ESTATES] festlegen? + <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Alle Grundstücke" yestext="Dieses Grundstück"/> + </notification> + <notification label="Grundstück wählen" name="EstateManagerRemove"> + Verwalter nur für dieses Grundstück oder für [ALL_ESTATES] entfernen? + <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Alle Grundstücke" yestext="Dieses Grundstück"/> + </notification> + <notification label="Rauswurf bestätigen" name="EstateKickUser"> + Benutzer [EVIL_USER] von diesem Grundstück werfen? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="EstateChangeCovenant"> + Möchten Sie den Grundstücksvertrag wirklich ändern? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="RegionEntryAccessBlocked"> + Sie dürfen diese Region aufgrund Ihrer Alterseinstufung nicht betreten. Der Grund hierfür ist möglicherweise, dass Sie nicht altersüberprüft sind. + +Bitte vergewissern Sie sich, dass Sie den aktuellsten Viewer installiert haben und besuchen Sie unsere Knowledgebase, um mehr über Regionen mit dieser Altereinstufung zu erfahren. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="RegionEntryAccessBlocked_KB"> + Sie dürfen diese Region aufgrund Ihrer Alterseinstufung nicht betreten. + +Möchten Sie unsere Knowledgebase besuchen, um mehr Informationen über Altereinstufung zu erhalten? + <url name="url"> + http://wiki.secondlife.com/wiki/Alterseinstufung:_Ein_%C3%9Cberblick_(KB) + </url> + <usetemplate ignoretext="Wenn Regionzugang aufgrund von Alterseinstufung gesperrt ist" name="okcancelignore" notext="Schließen" yestext="Zur Knowledgbase"/> + </notification> + <notification name="RegionEntryAccessBlocked_Notify"> + Aufgrund Ihrer Alterseinstufung dürfen Sie diese Region nicht betreten. + </notification> + <notification name="RegionEntryAccessBlocked_Change"> + Sie dürfen diese Region aufgrund der Einstellung Ihrer Alterseinstufung nicht betreten. + +Klicken Sie auf „Einstellung ändern“, um Ihre Einstellung für Altereinstufung sofort zu ändern und Zugang zu erhalten. Sie können ab sofort [REGIONMATURITY]-Inhalt suchen und auf diesen zugreifen. Falls Sie diese Einstellung später rückgängig machen möchten, gehen Sie zu Bearbeiten > Einstellungen... > Allgemein. + <form name="form"> + <button + name="OK" + text="Einstellung ändern"/> + <button + name="Cancel" + text="Schließen"/> + <ignore name="ignore" text="Wenn Regionzugang aufgrund von Einstellung für Alterseinstufung gesperrt ist"/> + </form> + </notification> + <notification name="LandClaimAccessBlocked"> + Sie haben aufgrund Ihrer Alterseinstufung keinen Anspruch auf dieses Land. Der Grund hierfür ist möglicherweise, dass Sie nicht altersüberprüft sind. + +Bitte vergewissern Sie sich, dass Sie den aktuellsten Viewer installiert haben und besuchen Sie unsere Knowledgebase, um mehr über Regionen mit dieser Altereinstufung zu erfahren. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="LandClaimAccessBlocked_KB"> + Sie haben aufgrund Ihrer Alterseinstufung keinen Anspruch auf dieses Land. + +Möchten Sie unsere Knowledgebase besuchen, um mehr Informationen über Altereinstufung zu erhalten? + <url name="url"> + http://wiki.secondlife.com/wiki/Alterseinstufung:_Ein_%C3%9Cberblick_(KB) + </url> + <usetemplate ignoretext="Wenn Landanspruch aufgrund von Alterseinstufung gesperrt ist" name="okcancelignore" notext="Schließen" yestext="Zur Knowledgbase"/> + </notification> + <notification name="LandClaimAccessBlocked_Notify"> + Sie haben aufgrund Ihrer Alterseinstufung keinen Anspruch auf dieses Land. + </notification> + <notification name="LandClaimAccessBlocked_Change"> + Sie haben aufgrund der Einstellung Ihrer Alterseinstufung keinen Anspruch auf dieses Land. + +Klicken Sie auf „Einstellung ändern“, um Ihre Einstellung für Altereinstufung sofort zu ändern und Zugang zu erhalten. Sie können ab sofort [REGIONMATURITY]-Inhalt suchen und auf diesen zugreifen. Falls Sie diese Einstellung später rückgängig machen möchten, gehen Sie zu Bearbeiten > Einstellungen... > Allgemein. + <usetemplate ignoretext="Wenn Landanspruch aufgrund von Einstellung der Alterseinstufung gesperrt ist" name="okcancelignore" notext="Schließen" yestext="Einstellung ändern"/> + </notification> + <notification name="LandBuyAccessBlocked"> + Sie können aufgrund Ihrer Alterseinstufung dieses Land nicht kaufen. Der Grund hierfür ist möglicherweise, dass Sie nicht altersüberprüft sind. + +Bitte vergewissern Sie sich, dass Sie den aktuellsten Viewer installiert haben und besuchen Sie unsere Knowledgebase, um mehr über Regionen mit dieser Altereinstufung zu erfahren. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="LandBuyAccessBlocked_KB"> + Sie können aufgrund Ihrer Alterseinstufung dieses Land nicht kaufen. + +Möchten Sie unsere Knowledgebase besuchen, um mehr Informationen über Altereinstufung zu erhalten? + <url name="url"> + http://wiki.secondlife.com/wiki/Alterseinstufung:_Ein_%C3%9Cberblick_(KB) + </url> + <usetemplate ignoretext="Wenn Landkauf aufgrund von Alterseinstufung gesperrt ist" name="okcancelignore" notext="Schließen" yestext="Zur Knowledgbase"/> + </notification> + <notification name="LandBuyAccessBlocked_Notify"> + Sie können aufgrund Ihrer Alterseinstufung dieses Land nicht kaufen. + </notification> + <notification name="LandBuyAccessBlocked_Change"> + Sie können aufgrund Ihrer Einstellung für Alterseinstufung dieses Land nicht kaufen. + +Klicken Sie auf „Einstellung ändern“, um Ihre Einstellung für Altereinstufung sofort zu ändern und Zugang zu erhalten. Sie können ab sofort [REGIONMATURITY]-Inhalt suchen und auf diesen zugreifen. Falls Sie diese Einstellung später rückgängig machen möchten, gehen Sie zu Bearbeiten > Einstellungen... > Allgemein. + <usetemplate ignoretext="Wenn Landkauf aufgrund von Einstellung für Alterseinstufung gesperrt ist" name="okcancelignore" notext="Schließen" yestext="Einstellung ändern"/> + </notification> + <notification name="TooManyPrimsSelected"> + "Zu viele Prims wurden ausgewählt. Bitte wählen Sie höchstens [MAX_PRIM_COUNT] Prims aus und versuchen Sie es erneut." + </notification> + <notification name="ProblemImportingEstateCovenant"> + Problem beim Import des Grundstückvertrags. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ProblemAddingEstateManager"> + Es gibt Probleme beim Hinzufügen eines neuen Grundstücksverwalters. Bei mindestens einem Grundstück ist die Verwalterliste voll. + </notification> + <notification name="ProblemAddingEstateGeneric"> + Problem beim Hinzufügen zu dieser Grundstücksliste. Bei mindestens einem Grundstück ist die Liste voll. + </notification> + <notification name="UnableToLoadNotecardAsset"> + Notizkarten-Asset konnte nicht geladen werden. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="NotAllowedToViewNotecard"> + Unzureichende Rechte, um die mit der angeforderten Asset-ID verbundene Notizkarte anzuzeigen. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MissingNotecardAssetID"> + Asset-ID für Notizkarte fehlt in Datenbank. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="PublishClassified"> + Hinweis: Anzeigengebühren werden nicht zurückerstattet. + +Anzeige für [AMOUNT] L$ veröffentlichen? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="SetClassifiedMature"> + Enthält diese Anzeige Mature-Inhalte? + <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Nein" yestext="Ja"/> + </notification> + <notification name="SetGroupMature"> + Beschäftigt sich diese Gruppe mit Mature-Inhalten? + <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Nein" yestext="Ja"/> + </notification> + <notification label="Neustart bestätigen" name="ConfirmRestart"> + Möchten Sie diese Region in 2 Minuten neu starten? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification label="Nachricht an alle in dieser Region" name="MessageRegion"> + Geben Sie eine kurze Nachricht ein, die an jede Person in dieser Region gesendet wird. + <form name="form"> + <input name="message" type="text"/> + <button name="OK" text="OK"/> + <button name="Cancel" text="Abbrechen"/> + </form> + </notification> + <notification label="Terraformen blockieren" name="HelpRegionBlockTerraform"> + Wenn diese Option aktiviert ist, können Landeigentümer Ihr Land nicht terraformen. Ausgenommen davon ist die parzelleneigene Einstellung „Terrain bearbeiten“. + +Standard: deaktiviert + </notification> + <notification label="Fliegen blockieren" name="HelpRegionBlockFly"> + Wenn diese Option aktiviert ist, ist Fliegen in dieser Region nicht möglich, auch wenn für die Parzelle eine andere Einstellung aktiv ist. + +Standard: deaktiviert + </notification> + <notification label="Mehrere Inhaltsberechtigungen ändern" name="HelpBulkPermission"> + Mit dem Werkzeug „Mehrere Berechtigungen“ können Sie Berechtigungen für mehrere Objekte in den Inhalten des ausgewählten Objekts schnell ändern. Bitte beachten Sie, dass Sie nur Berechtigungen an den Objekten im Inhalt der ausgewählten Objekte einstellen, nicht Berechtigungen an dem/den Container-Objekt(en=) selbst. + +Bitte beachten Sie auch, dass die Berechtigungen nicht auf eingebettete Inhalte der enthaltenen Objekte angewandt werden. Ihre Auftrag wird nur an Objekten ausgeführt, die sie sich in diesem Level befinden. + +Sie können auswählen, welche Objektarten Sie ändern möchten, indem Sie diese in der Liste unter „Inhaltsarten“ auswählen. Wenn Sie Texturen auswählen, sind Fotos mit eingeschlossen. + +* Mit diesem Werkzeug können Sie nur an Objekten, die Sie ändern dürfen, Änderungen vornehmen. +* Sie können dem nächsten Eigentümer keine Berechtigungen geben, die Sie nicht besitzen. +* Die Berechtigungen für den nächsten Eigentümer sind nur Anfragen. Wenn ein Objekt nicht alle Berechtigungen annehmen kann, dann werden keine seiner Berechtigungen geändert. + +Wenn Sie bereit sind, die Berechtigungen mehrfach zu ändern, klicken Sie auf Übernehmen und warten Sie, bis die Ergebnisse angezeigt werden. + +Wenn Sie das Fenster „Mehrfach-Berechtigungen“ schließen, während die Berechtigungen geändert werden, wird der Vorgang gestoppt. + </notification> + <notification label="Schaden zulassen" name="HelpRegionAllowDamage"> + Wenn diese Option aktiviert ist, ist das Gesundheitssystem auf allen Parzellen aktiviert, unabhängig von den Parzelleneinstellungen. Ist die Option links deaktiviert, können die Parzelleneigentümer das Gesundheitssystem individuell einschalten. + +Standard: deaktiviert + </notification> + <notification label="Avatar-Limit" name="HelpRegionAgentLimit"> + Legt die maximale Anzahl an Avataren für diese Region fest. +Die Leistung hängt von der Anzahl der Avatare in der Region ab. + +Standard: 40 + </notification> + <notification label="Objektbonus" name="HelpRegionObjectBonus"> + Der Objektbonus ist ein Multiplikator für die Anzahl an zulässigen Primitiven auf einer Parzelle. Gültig sind Werte zwischen 1 und 10. „1“ erlaubt auf einer 512 qm großen Parzelle 117 Objekte. „2“ erlaubt auf einer 512 qm großen Parzelle 234 Objekte, also die doppelte Menge. Die maximale Objektanzahl in einer Region beträgt unabhängig vom Objektbonus 15.000. +Eine nachträglich Senkung des Objektbonus führt dazu, dass Objekte zurückgegeben oder gelöscht werden. + +Standard: 1.0 + </notification> + <notification label="Alterseinstufung" name="HelpRegionMaturity"> + Legt die Alterseinstufung für die Region fest. Dies wird in der Menüleiste oben im Viewer angezeigt und auch in den Kurzinfos auf der Weltkarte, wenn der Cursor über diese Region schwebt. Diese Einstellung wirkt sich auch auf den Zugang zu dieser Region und die Suchergebnisse aus. Andere Einwohner können Regionen nur dann betreten oder Suchergebnisse anzeigen, wenn Ihre Alterseinstufung in Ihren Einstellungen der Alterseinstellung der Region bzw. Suchergebnisse entsprechen. + +Es kann eine Weile dauern, bis diese Änderung auf der Karte angezeigt wird. + </notification> + <notification label="Stoßen beschränken" name="HelpRegionRestrictPushObject"> + Aktivieren sie diese Option, um in der gesamten Region das Stoßen zu beschränken. Wenn aktiviert, können Einwohner nur von sich selbst oder vom Parzelleneigentümer gestoßen werden. +(Stoßen meint die LSL-Funktion llPushObject().) + +Standard: deaktiviert + </notification> + <notification label="Parzelle zusammenlegen/teilen" name="HelpParcelChanges"> + Dieses Kontrollkästchen steuert, ob Parzellen des Grundstückseigentümers zusammengelegt bzw. unterteilt werden können. Wenn deaktiviert: + * Nur Grundstückseigentümer bzw. –verwalter können Parzellen zusammenlegen/teilen. * Sie können nur Parzellen zusammenlegen/teilen, die dem Eigentümer oder einer Gruppe gehören, bei der sie entsprechende Gruppenrechte innehaben. +Wenn aktiviert: + * Die Parzelleneigentümer können ihre Parzellen selbst zusammenlegen/teilen. + * Parzellen in Gruppeneigentum können von Mitgliedern mit den entsprechenden Rechten zusammengelegt bzw. unterteilt werden. + +Standard: aktiviert + </notification> + <notification label="Nicht in Suche anzeigen" name="HelpRegionSearch"> + Wenn Sie diese Option auswählen, können Parzelleneigentümer ihre Parzellen nicht in der Suche anzeigen lassen + +Standard: deaktiviert + </notification> + <notification label="Alterseinstufung der Region ändern" name="RegionMaturityChange"> + Die Alterseinstufung dieser Region wurde aktualisiert. +Es kann eine Weile dauern, bis sich die Änderung auf die Karte auswirkt. + </notification> + <notification label="Landwiederverkauf" name="HelpRegionLandResell"> + Grundstückseigentümer und -verwalter können jedes Land im Besitz des Grundstückseigentümers verkaufen. +Ist diese Option deaktiviert, können Käufer ihr Land in dieser Region nicht weiterverkaufen. +Ist die Option aktiviert, können Käufer ihr Land in dieser Region weiterverkaufen. + +Standard: deaktiviert + </notification> + <notification label="Skripts deaktivieren" name="HelpRegionDisableScripts"> + Schlechte Sim-Performance ist oftmals auf ein Skript zurückzuführen. Öffnen Sie die Statistikleiste (Strg-Umschalt-1). Sehen Sie sich den Wert für „Simulator Physics FPS“ (Simulator Physik-FPS) an. +Wenn der Wert unter 45 liegt, öffnen Sie den Bereich „Time“ (Zeit) ganz unten in der Statistikleiste. Wenn der Wert für „Script Time“ (Skriptzeit) 25 ms oder höher ist, klicken Sie auf „Top-Skripts“. Der Name und die Position der Skripts, die für die schlechte Performance verantwortlich sind, werden angezeigt. +Wenn Sie das Kontrollkästchen „Skripts deaktivieren“ aktivieren und auf „Übernehmen“ klicken, werden alle Skripts in der Region zeitweilig deaktiviert. Dieser Schritt ist eventuell notwendig, damit Sie an die Position des gemeldeten „Top-Skripts“ reisen können. Sobald Sie dort angekommen sind, sollten Sie das Skript auf die Ursache des Problems hin untersuchen. Möglicherweise müssen Sie sich an den Skript-Eigentümer wenden oder das Objekt löschen bzw. zurückgeben. Um die Skripte in der Region wieder zu aktivieren, deaktivieren Sie „Skript deaktivieren“ und klicken Sie auf „Übernehmen“. + +Standard: deaktiviert + </notification> + <notification label="Kollisionen deaktivieren" name="HelpRegionDisableCollisions"> + Schlechte Sim-Performance ist oftmals auf physische Objekte zurückzuführen. +Öffnen Sie die Statistikleiste (Strg-Umschalt-1). Sehen Sie sich den Wert „Simulator Physics FPS“ an. Liegt dieser unter 45, öffnen Sie unten in der Statistikleiste den „Time“-Bereich. Liegt die „Sim Time (Physics)“ bei 20 ms oder darüber, klicken Sie auf „Top-Kollisionsobjekte“. +Der Name und der Standort der physischen Objekte, die das Problem verursachen, werden angezeigt. + +Wenn Sie das Kontrollkästchen „Kollisionen deaktivieren“ aktivieren und auf „Übernehmen“ klicken, werden alle Objekt-Objekt-Kollisionen in der Region zeitweilig deaktiviert. Dieser Schritt ist eventuell notwendig, damit Sie an die Position des gemeldeten „Top-Kollisionsobjekts“ reisen können. Überprüfen Sie das Objekt an der angegebenen Position. +Kollidiert es ständig mit anderen Objekten? Wenden Sie sich eventuell an den Eigentümer des Objekts, löschen Sie es oder geben Sie es zurück. +Deaktivieren Sie die Option „Kollisionen deaktivieren“ und klicken Sie auf „Übernehmen“, um Kollisionen in dieser Region wieder zu aktivieren. + +Standard: deaktiviert + </notification> + <notification label="Physik deaktivieren" name="HelpRegionDisablePhysics"> + Das Deaktivieren der Physik ähnelt dem Deaktivieren von Kollisionen, außer dass die gesamte Physiksimulation ausgeschaltet wird. Das hat nicht nur zur Folge, dass Objekte nicht mehr kollidieren, sondern dass Avatare sich nicht mehr bewegen können. + +Diese Option sollte nur verwendet werden, wenn das Deaktivieren von Kollisionen keine ausreichende Leistungssteigerung bringt, um Physikprobleme in der Region oder die Top-Kollisionsobjekte zu erkennen. + +Schalten Sie die Physiksimulation hinterher wieder ein. Andernfalls können sich Avatare nicht mehr bewegen. + +Standard: deaktiviert + </notification> + <notification label="Top-Kollisionsobjekte" name="HelpRegionTopColliders"> + Zeigt eine Liste der Objekte mit den potenziell meisten Objekt-Objekt-Kollisionen an. Diese Objekte können die Leistung beeinträchtigen. Wählen Sie „Ansicht“ > „Statistikleiste“ aus und sehen Sie unter „Simulator“ > „Time“ > „Sim Time (Physics)“ nach, ob die Physikberechnung länger als 20 ms dauert. + </notification> + <notification label="Top-Skripts" name="HelpRegionTopScripts"> + Zeigt eine Liste der Objekte an, die die meiste Zeit benötigen, um LSL-Skripts auszuführen. Diese Objekte können die Leistung beeinträchtigen. +Wählen Sie „Ansicht“ > „Statistikleiste“ und sehen Sie unter „Simulator“ > „Time“ > „Script Time“ nach, ob mehr als 25 ms für Skripts benötigt werden. + </notification> + <notification label="Region neu starten" name="HelpRegionRestart"> + Starten Sie den Serverprozess für diese Region nach der 2-Minuten-Warnung neu. Die Verbindung aller Einwohner in dieser Region wird getrennt. Die Region wird gespeichert und sollte nach 90 Sekunden wieder verfügbar sein. + +Der Neustart der Region behebt die meisten Leistungs-probleme, sollte aber nur nach Anweisung erfolgen. + </notification> + <notification label="Wasserhöhe" name="HelpRegionWaterHeight"> + Die Höhe der Wasserlinie in Metern. Liegt dieser Wert unter 20 und haben Sie Wasser nahe am Rand der Welt oder „offenes“ Wasser definiert, wird eine deutliche Lücke sichtbar. + +Standard: 20 + </notification> + <notification label="Obere Terraingrenze" name="HelpRegionTerrainRaise"> + Der maximale Betrag in Metern, um den Parzelleneigentümer ihr Terrain über die Standardhöhe des „geformten“ Terrains erhöhen können. + +Standard: 4 + </notification> + <notification label="Untere Terraingrenze" name="HelpRegionTerrainLower"> + Der maximale Betrag in Metern, um den Parzelleneigentümer ihr Terrain unter die Standardhöhe des „geformten“ Terrains absenken können. + +Standard: -4 + </notification> + <notification label="RAW-Terrain hochladen" name="HelpRegionUploadRaw"> + Mit dieser Schaltfläche laden Sie eine RAW-Datei in die Region hoch, in der Sie sich befinden. +Die Datei muss die korrekten Maße (RGB, 256x256) und 13 Kanäle haben. Um eine neue Terraindatei zu erstellen, laden Sie am besten die vorhandene RAW-Datei herunter. Beginnen Sie damit, den Rot-Kanal (Höhe des Landes) zu bearbeiten und laden Sie die Datei wieder hoch. + +Der Ladevorgang kann bis zu 45 Sekunden dauern. Beachten Sie, dass beim Hochladen einer Terraindatei die Objekte auf dem Land *nicht* verschoben werden, sondern nur das Land und die mit den Parzellen verbundenen Berechtigungen. Dies kann dazu führen, dass Objekte unter dem Terrain verschwinden. + +Weitere Informationen zur Bearbeitung der Höhendaten der Region enthält die F1-Hilfe. + </notification> + <notification label="RAW-Terrain herunterladen" name="HelpRegionDownloadRaw"> + Mit dieser Schaltfläche laden Sie eine Datei herunter, welche die Höhendaten, Maße, den Verkaufsstatus der Parzelle und einige Parzellenrechte für diese Region enthält. Wenn Sie diese Datei in einem Programm wie Photoshop öffnen, müssen Sie die Bilddaten eingeben. Diese sind: RGB, 256x256 mit 13 Kanälen. Anders lässt sich diese Terraindatei nicht öffnen. + +Weitere Informationen zur Bearbeitung der Höhendaten der Region enthält die F1-Hilfe. + </notification> + <notification label="Grundstücksonne verwenden" name="HelpRegionUseEstateSun"> + Aktivieren Sie diese Option, um in dieser Region denselben Sonnenstand wie auf dem restlichen Grundstück einzustellen. + +Standard: aktiviert + </notification> + <notification label="Sonne fest" name="HelpRegionFixedSun"> + Aktivieren Sie diese Option, um den Sonnenstand auf die im Regler definierte Position festzulegen und die Animation auszuschalten. + +Standard: deaktiviert + </notification> + <notification label="Terrain formen" name="HelpRegionBakeTerrain"> + Mit dieser Schaltfläche speichern Sie die aktuelle Terrain-Form als neuen Standard für die Region. Nach der Formung können Sie und andere das Land mit der Option „Terrain bearbeiten“ > „Zurücksetzen“ in den ursprünglichen Zustand zurückversetzen. Das geformte Terrain ist auch das Zentrum für die oberen und unteren Terraingrenzen. + </notification> + <notification label="Grundstücksverwalter" name="HelpEstateEstateManager"> + Ein Grundstücksverwalter ist ein Einwohner, dem Sie die Kontrolle über die Regions- und Grundstückseinstellungen übertragen haben. Ein Grundstücksverwalter kann alle Einstellungen ändern, außer das Hochladen, Herunterladen und Formen von Terrain. Vor allem kann er Einwohner auf dem Grundstück erlauben und davon verbannen. + +Nur der Eigentümer kann den Grundstücksverwalter bestimmen und entlassen. Der Verwalter hat dieses Recht nicht. Wählen Sie nur vertrauenswürdige Einwohner als Grundstücksverwalter, da Sie letztlich für deren Handlungen verantwortlich sind. + </notification> + <notification label="Globale Zeit verwenden" name="HelpEstateUseGlobalTime"> + Aktivieren Sie diese Option, um auf Ihrem Grundstück denselben Sonnenstand wie auf dem Linden-„Mainland“ einzustellen. + +Standard: aktiviert + </notification> + <notification label="Sonne fest" name="HelpEstateFixedSun"> + Aktivieren Sie diese Option, um den Sonnenstand auf die im Regler definierte Position festzulegen und die Animation auszuschalten. + </notification> + <notification label="Öffentlich" name="HelpEstateExternallyVisible"> + Aktivieren Sie diese Option, um Einwohnern den Zugang zu diesem Grundstück zu erlauben, ohne auf der Zugangsliste zu stehen. + +Standard: aktiviert + </notification> + <notification label="Direktteleport zulassen" name="HelpEstateAllowDirectTeleport"> + Wenn aktiviert, können sich Einwohner an jede Stelle auf Ihrem Grundstück teleportieren. Wenn deaktiviert, werden Einwohner zum nächstgelegenen Telehub teleportiert. + +Standard: deaktiviert + </notification> + <notification label="Zugang erlauben" name="HelpEstateAllowResident"> + Der Zugang zu diesem Grundstück wird auf die hier aufgeführten Einwohner und Gruppen beschränkt. Diese Einstellung ist nur verfügbar, wenn „Öffentlich“ deaktiviert ist. + </notification> + <notification label="Gruppenzugang erlauben" name="HelpEstateAllowGroup"> + Der Zugang zu diesem Grundstück wird auf die hier aufgeführten Einwohner und Gruppen beschränkt. Diese Einstellung ist nur verfügbar, wenn „Öffentlich“ deaktiviert ist. + </notification> + <notification label="E-Mail-Adresse für Missbrauchsmeldungen" name="HelpEstateAbuseEmailAddress"> + Geben Sie hier eine E-Mail-Adresse ein, an die Missbrauchsmeldungen von diesem Grundstück gesendet werden. +Wenn dieses Feld leer ist, werden Missbrauchsmeldungen nur an Linden Lab gesendet. + </notification> + <notification label="Zugang verweigern" name="HelpEstateBanResident"> + Einwohnern auf dieser Liste wird der Zugang zum Grundstück verwehrt, unabhängig von etwaigen anderen Einstellungen. + </notification> + <notification label="Voice-Chat erlauben" name="HelpEstateVoiceChat"> + Die Parzellen auf diesem Grundstück können über eigene Voice-Channel verfügen, die es Einwohnern ermöglichen, sich mit anderen Personen in der Nähe zu unterhalten. + +Standard: deaktiviert + </notification> + <notification label="Falsche Voice-Version" name="VoiceVersionMismatch"> + Diese Version von Second ist mit dem Voice-Chat-Feature in dieser Region nicht kompatibel. Damit Voice-Chat funktioniert, müssen Sie Second Life aktualisieren. + </notification> + <notification label="Grunstücksvertrag" name="HelpEstateCovenant"> + Ein Grundstücksvertrag ermöglicht es Ihnen, Grundstücksparzellen zu verkaufen. Ohne Vertrag können Sie kein Land verkaufen. Wenn Sie keine Regeln festlegen oder Käufern vor dem Kauf keine anderen Informationen über das Land bereitstellen möchten, können Sie die Vertrags-Notizkarte auch leer lassen. + +Ein Vertrag kann Regeln und Richtlinien, kulturelle Informationen oder einfach nur Ihre eigenen Erwartungen bezüglich der Landnutzung durch den Käufer enthalten. Das kann Zoning, Baubeschränkungen, Zahloptionen und alle möglichen anderen Informationen betreffen, die der neue Eigentümer Ihrer Meinung nach kennen und akzeptieren sollte. + +Der Käufer muss dem Vertrag durch Auswahl dieses Kontrollkästchens zustimmen, bevor der Kauf abgeschlossen werden kann. Grundstücksverträge sind jederzeit unter „Land-Info“ für jede Parzelle einsehbar, für die ein Vertrag definiert wurde. + </notification> + <notification label="Objekte können nicht gekauft werden" name="BuyObjectOneOwner"> + Objekte können nicht von mehreren Eigentümern gleichzeitig gekauft werden. +Wählen Sie ein einzelnes Objekt aus und versuchen Sie es erneut. + </notification> + <notification label="Inhalte können nicht gekauft werden" name="BuyContentsOneOnly"> + Inhalte können jeweils nur für ein Objekt gekauft werden. +Wählen Sie ein einzelnes Objekt aus und versuchen Sie es erneut. + </notification> + <notification label="Inhalte können nicht gekauft werden" name="BuyContentsOneOwner"> + Objekte können nicht von mehreren Eigentümern gleichzeitig gekauft werden. +Wählen Sie ein einzelnes Objekt aus und versuchen Sie es erneut. + </notification> + <notification name="BuyOriginal"> + Von [OWNER] Originalobjekt für [PRICE] L$ kaufen? +Sie werden der Eigentümer dieses Objekts. +Sie können das Objekt: + Bearbeiten: [MODIFYPERM] + Kopieren: [COPYPERM] + Verkaufen oder weggeben: [RESELLPERM] + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="BuyOriginalNoOwner"> + Originalobjekt für [PRICE] L$ kaufen? +Sie werden der Eigentümer dieses Objekts. +Sie können das Objekt: + Bearbeiten: [MODIFYPERM] + Kopieren: [COPYPERM] + Verkaufen oder weggeben: [RESELLPERM] + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="BuyCopy"> + Von [OWNER] Kopie für [PRICE] L$ kaufen? +Das Objekt wird in Ihr Inventar kopiert. +Sie können das Objekt: + Bearbeiten: [MODIFYPERM] + Kopieren: [COPYPERM] + Verkaufen oder weggeben: [RESELLPERM] + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="BuyCopyNoOwner"> + Kopie für [PRICE] L$ kaufen? +Das Objekt wird in Ihr Inventar kopiert. +Sie können das Objekt: + Bearbeiten: [MODIFYPERM] + Kopieren: [COPYPERM] + Verkaufen oder weggeben: [RESELLPERM] + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="BuyContents"> + Von [OWNER] Inhalte für [PRICE] L$ kaufen? +Die Inhalte werden in Ihr Inventar kopiert. + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="BuyContentsNoOwner"> + Inhalte für [PRICE] L$ kaufen? +Die Inhalte werden in Ihr Inventar kopiert. + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="ConfirmPurchase"> + Transaktion: +[ACTION] + +Möchten Sie diesen Kauf fortsetzen? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="ConfirmPurchasePassword" type="password"> + Transaktion: +[ACTION] + +Möchten Sie diesen Kauf fortsetzen? +Geben Sie Ihr Kennwort erneut ein und klicken Sie auf OK. + <form name="form"> + <input name="message" type="password"/> + <button name="ConfirmPurchase" text="OK"/> + <button name="Cancel" text="Abbrechen"/> + </form> + </notification> + <notification name="SetPickLocation"> + Hinweis: +Sie haben die Position dieser Auswahl aktualisiert, aber die anderen Daten behalten ihre ursprünglichen Werte. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MoveInventoryFromObject"> + Sie haben „nicht kopierfähige“ Inventarobjekte ausgewählt. +Diese Objekte werden nicht kopiert, sondern in Ihr Inventar verschoben. + +Inventarobjekt(e) verschieben? + <usetemplate ignoretext="Beim Verschieben von nicht-kopierfähigem Inventar von Objekten" name="okcancelignore" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="MoveInventoryFromScriptedObject"> + Sie haben „nicht kopierfähige“ Inventarobjekte ausgewählt. Diese Objekte werden nicht kopiert, sondern in Ihr Inventar verschoben. +Da es sich um ein geskriptetes Objekt handelt, geht die Skriptfunktion beim Verschieben in das Inventar möglicherweise verloren. + +Inventarobjekt(e) verschieben? + <usetemplate ignoretext="Beim Verschieben von nicht-kopierfähigem Inventar von geskripteten Objekten" name="okcancelignore" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="ClickActionNotPayable"> + Achtung: Die Klick-Aktion „Objekt bezahlen“ wurde definiert, sie funktioniert aber nur, wenn ein Skript mit einem money() Ereignis hinzugefügt wird. + <form name="form"> + <ignore name="ignore" text="Beim Einrichten von Events mit „Objektbezahlung“ ohne Geld"/> + </form> + </notification> + <notification name="OpenObjectCannotCopy"> + Sie haben keine Berechtigung zum Kopieren von Elementen in diesem Objekt. + </notification> + <notification name="WebLaunchAccountHistory"> + Zur Second Life-Website, um Ihre Kontostatistik anzuzeigen? + <usetemplate ignoretext="Beim Laden der Kontostatistik-Website" name="okcancelignore" notext="Abbrechen" yestext="Gehe zu Seite"/> + </notification> + <notification name="ClickOpenF1Help"> + Die Support-Website von Second Life öffnen? + <usetemplate ignoretext="Bei Besuch der Second Life Support-Website." name="okcancelignore" notext="Abbrechen" yestext="Los"/> + </notification> + <notification name="ConfirmQuit"> + Wirklich beenden? + <usetemplate ignoretext="Beim Beenden von Second Life." name="okcancelignore" notext="Weiter" yestext="Beenden"/> + </notification> + <notification name="HelpReportAbuseEmailLL"> + Verwenden Sie dieses Tool, um Verletzungen der Servicebedingungen und Community-Standards zu melden. Siehe: + +http://secondlife.com/corporate/tos.php +http://secondlife.com/corporate/cs.php + +Alle gemeldeten Verletzungen der Servicebedingungen und Community-Standards werden geprüft und geklärt Sie können den Prozess im Incident Report (Vorfallsbericht) verfolgen: + +http://secondlife.com/support/incidentreport.php + </notification> + <notification name="HelpReportAbuseEmailEO"> + WICHTIG: Diese Meldung wird an den Eigentümer der Region gesendet, in der Sie sich gerade befinden, nicht an Linden Lab. +- +Als besonderen Service für Einwohner und Besucher übernimmt der Eigentümer dieser Region die Bearbeitung aller anfallenden Meldungen. Von diesem Standort aus eingereichte Meldungen werden nicht von Linden Lab bearbeitet. Der Eigentümer der Region bearbeitet Meldungen auf Grundlage der Richtlinien, die im für diese Region geltenden Grundstücksvertrag festgelegt sind. +(Den Vertrag können Sie unter „Welt“ > „Land-Info“ einsehen.) +- +Das Resultat, das sich aus dieser Meldung ergibt, betrifft nur diese Region; der Einwohnerzugang zu anderen Bereichen von Second Life ist davon nicht betroffen. Nur Linden Lab kann den Zugang zu Second Life beschränken. + </notification> + <notification name="HelpReportBug"> + Verwenden Sie dieses Tool *nur*, um technische Features zu melden, die nicht wie beschrieben oder erwartet funktionieren. Bitte machen Sie so viele Angaben wie möglich. Sie können auf die automatische Antwort-E-Mail antworten, um Ihre Meldung noch zu ergänzen. +Alle gemeldeten Fehler werden geprüft und bewertet. Sie erhalten keine persönliche Antwort auf Ihre E-Mail. +- +Bei technischen Problemen wenden Sie sich bitte an den Support unter: +http://secondlife.com/community/support.php +- +Hinweis: Unvollständige Meldungen werden nicht bearbeitet. + </notification> + <notification name="HelpReportAbuseSelectCategory"> + Wählen Sie eine Missbrauchskategorie aus. +Die Angabe einer Kategorie hilft uns bei der Bearbeitung des Berichts. + </notification> + <notification name="HelpReportBugSelectCategory"> + Wählen Sie eine Fehler-Kategorie aus. +Die Angabe einer Kategorie hilft uns bei der Bearbeitung des Berichts. + </notification> + <notification name="HelpReportAbuseAbuserNameEmpty"> + Geben Sie den Namen des Täters ein. +Eine genaue Angabe hilft uns, Fälle von Missbrauch zu ahnden. + </notification> + <notification name="HelpReportAbuseAbuserLocationEmpty"> + Bitte geben Sie den Ort an, an dem der Missbrauch stattgefunden hat. +Eine genaue Angabe hilft uns, Fälle von Missbrauch zu ahnden. + </notification> + <notification name="HelpReportAbuseSummaryEmpty"> + Bitte geben Sie eine Zusammenfassung des Vorfalls ein. +Eine genaue Zusammenfassung hilft uns, Fälle von Missbrauch zu ahnden. + </notification> + <notification name="HelpReportBugSummaryEmpty"> + Bitte geben Sie eine Zusammenfassung des Fehlers ein. +Eine genaue Zusammenfassung hilft uns, Fehler schneller zu beseitigen. + </notification> + <notification name="HelpReportAbuseDetailsEmpty"> + Bitte geben Sie eine ausführliche Beschreibung des Vorfalls ein. +Eine möglichst genaue Beschreibung mit Namen und Einzelheiten hilft uns, Fälle von Missbrauch zu ahnden. + </notification> + <notification name="HelpReportBugDetailsEmpty"> + Bitte geben Sie eine ausführliche Fehlerbeschreibung ein. +Eine möglichst genaue Beschreibung mit Schritten zur Reproduktion des Fehlers hilft uns, Fehler schneller zu beseitigen. + </notification> + <notification name="HelpReportAbuseContainsCopyright"> + Sehr geehrte(r) Einwohner(in), + +Sie melden eine Urheberrechtsverletzung. Sind Sie wirklich sicher, dass Sie eine Verletzung des Urheberrechts melden möchten? + +1. Missbrauch melden. Wenn Sie der Meinung sind, ein Einwohner nutzt das Berechtigungssystem von Second Life auf unerlaubte Weise zu seinem Vorteil aus, indem er zum Beispiel einen CopyBot oder ähnliche Kopiertools verwendet und damit eine Urheberrechtsverletzung begeht, können Sie diesen Missbrauch melden. Das Missbrauchsteam untersucht etwaige Verstöße gegen die Second Life Community Standards oder die Nutzungsbedingungen und verhängt entsprechende Strafen. Das Missbrauchsteam ist jedoch nicht dafür zuständig, Inhalte aus der Second Life-Welt zu entfernen und reagiert auch nicht auf entsprechende Anfragen. + +2. Der DMCA oder das Entfernen von Inhalten. Sie können das Entfernen von Inhalten aus Second Life beantragen. Dazu MÜSSEN Sie eine Urheberrechtsverletzung gemäß den in unserer DMCA-Richtlinie unter http://secondlife.com/corporate/dmca.php dargelegten Anweisungen einreichen. + +Wenn Sie mit der Missbrauchmeldung jetzt fortfahren möchten, schließen Sie bitte dieses Fenster und senden Sie Ihren Bericht ein. Möglicherweise müssen Sie Kategorie „CopyBot oder Berechtigungs-Exploit“ auswählen. + +Vielen Dank, + +Linden Lab + </notification> + <notification name="FailedRequirementsCheck"> + Die folgenden erforderlichen Komponenten fehlen in [FLOATER]: +[COMPONENTS] + </notification> + <notification label="Vorhandenen Anhang ersetzen" name="ReplaceAttachment"> + An dieser Körperstelle ist bereits ein Objekt angebracht. +Möchten Sie es mit dem ausgewählten Objekt ersetzen? + <form name="form"> + <ignore name="ignore" save_option="true" text="Beim Wechseln von Anhängen"/> + <button ignore="Automatisch ersetzen" name="Yes" text="OK"/> + <button ignore="Nie ersetzen" name="No" text="Abbrechen"/> + </form> + </notification> + <notification label="Beschäftigt-Modus-Warnung" name="BusyModePay"> + Sie sind im Beschäftigt-Modus, sodass Sie im Austausch für diese Zahlung keine Objekte erhalten können. + +Möchten Sie den Bechäftigt-Modus verlassen, bevor Sie diese Transaktion abschließen? + <form name="form"> + <ignore name="ignore" save_option="true" text="Beim Bezahlen einer Person oder eines Objekts im Beschäftigt-Modus"/> + <button ignore="Beschäftigt-Modus immer deaktivieren" name="Yes" text="OK"/> + <button ignore="Beschäftigt-Modus aktiviert lassen" name="No" text="Abbrechen"/> + </form> + </notification> + <notification name="ConfirmEmptyTrash"> + Möchten Sie den Inhalt Ihres Papierkorbs wirklich löschen? + <usetemplate ignoretext="Beim Leeren des Inventar-Papierkorbs" name="okcancelignore" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="ConfirmClearBrowserCache"> + Möchten Sie Ihren Browser-Cache wirklich leeren? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Ja"/> + </notification> + <notification name="ConfirmClearCookies"> + Sind Sie sicher, dass Sie Ihre Cookies löschen möchten? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Ja"/> + </notification> + <notification name="ConfirmClearMediaUrlList"> + Die Liste mit gespeicherten URLs wirklich löschen? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Ja"/> + </notification> + <notification name="ConfirmEmptyLostAndFound"> + Möchten Sie den Inhalt Ihres Fundstücke-Ordners wirklich permanent löschen? + <usetemplate ignoretext="Beim Leeren von Inventar und Fundstückeordner-" name="okcancelignore" notext="Nein" yestext="Ja"/> + </notification> + <notification name="CopySLURL"> + Die folgende SLURL wurde in die Zwischenablage kopiert: + [SLURL] + +Veröffentlichen Sie sie auf einer Website, um anderen den Zugang zu diesem Ort zu erleichtern, oder testen Sie sie, indem Sie sie in die Adressleiste Ihres Browsers kopieren. + <form name="form"> + <ignore name="ignore" text="Beim Kopieren einer SLURL in die Zwischenablage"/> + </form> + </notification> + <notification name="GraphicsPreferencesHelp"> + Die Optionen in diesem Dialog steuern Fenstergröße und Auflösung sowie die Qualität der Grafikdarstellung im Client. Im Fenster „Einstellungen“ > „Grafik“ stehen vier Grafikeinstellungen zur Wahl: Niedrig, Mittel, Hoch und Ultra. Die Grafikeinstellungen lassen sich auch individuell anpassen; aktivieren Sie das Kontrollkästchen „Benutzerdefiniert“, um die folgenden Einstellungen zu bearbeiten: + +Shader: Aktivieren oder deaktivieren Sie die verschiedenen Pixel-Shader. + +Spiegelung: Legen Sie hier fest, welche Objekte sich in Wasser spiegeln. + +Avatar-Darstellung: Einige Optionen, die über die Darstellung Ihres Avatars bestimmen. + +Sichtweite: Legt fest, bis zu welcher Entfernung von Ihrem Avatar die Objekte in der Szene berechnet und dargestellt werden. + +Max. Partikelzahl: Legt fest, wie viele Partikel gleichzeitig berechnet und angezeigt werden. + +Post-Processing-Qualität: Legt fest, mit welcher Auflösung der Glüheffekt berechnet wird. + +Gitterdetails: Legt den Detailgrad bzw. die Anzahl an Dreiecken bei der Berechnung bestimmter Objekte fest. Höhere Werte führen zu einer genaueren Darstellung, dauern aber länger in der Berechnung. + +Beleuchtungsdetails: Legt fest, welche Lichtquellen berechnet werden. + +Terraindetails: Legt den Detailgrad bei der Berechnung der Terraintextur fest. + </notification> + <notification name="WLSavePresetAlert"> + 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="HelpEditSky"> + Verschieben Sie die WindLight-Regler, um verschiedene Himmelsansichten zu erstellen und zu speichern. + </notification> + <notification name="HelpEditDayCycle"> + Wählen Sie für jede Tageszeit eine Himmelsansicht aus. + </notification> + <notification name="EnvSettingsHelpButton"> + Diese Einstellungen haben Auswirkung auf die lokale Darstellung der Umwelt auf Ihrem Computer. Zugriff auf alle Einstellungen haben Sie nur, wenn Ihre Grafikkarte Atmosphären-Shader unterstützt. + +Mit dem Regler „Tageszeit“ stellen Sie die lokal in Ihrem Viewer dargestellte Tageszeit ein. + +Mit dem Regler „Wolkendecke“ steuern Sie die Wolkendichte am Himmel. + +Unter „Wasserfarbe“ können Sie eine Farbe für die Wasserdarstellung auswählen. + +Mit dem Regler „Wassertrübung“ steuern Sie die Sichtweite unter Wasser. + +Klicken Sie auf „Grundstückszeit verw.“, um die aktuelle Zeit in der Region fest als Tageszeit einzustellen. + +Klicken Sie auf „Himmel (erweitert)“, um einen Editor mit erweiterten Einstellungen für die Himmeldarstellung anzuzeigen. + +Klicken Sie auf „Wasser (erweitert)“, um einen Editor mit erweiterten Einstellungen für die Wasserdarstellung anzuzeigen. + </notification> + <notification name="HelpDayCycle"> + Im Tageszyklus-Editor steuern Sie den Tag-/Nachtzyklus am Second Life Himmel. Dabei handelt es sich um den Zyklus, der mit dem Tageszeit-Regler im Umwelt-Basiseditor gesteuert wird. + +Der Tageszyklus-Editor verwendet sogenannte Keyframes zur Steuerung des Tag-/Nachtablaufs. Dabei handelt es sich um „Schlüsselbilder“ (die grauen Kreise auf der Zeitskala), für die bestimmte Himmelseinstellungen definiert wurden. Bei voranschreitender Tageszeit interpoliert WindLight den Übergang zwischen diesen Keyframes und erzeugt eine entsprechende Himmelsanimation. + +Der gelbe Pfeil über der Zeitskala repräsentiert die aktuelle Tageszeit-Darstellung. Ziehen Sie den Pfeil, um die Tagesanimation anzuzeigen. Mit „Key hinzu“ und „Key löschen“ rechts neben der Zeitskala können Sie neue Keys einfügen und vorhandene löschen. + +Keyframes lassen sich einfach entlang der Zeitskala verschieben, oder Sie geben die Werte manuell unter „Keyframe-Einstellungen“ ein. Hier wählen Sie auch eine WindLight-Voreinstellung für den Keyframe aus. + +„Zykluslänge“ bestimmt die Gesamtlänge eines „Tages“. Ein niedriger Wert (z.B. 2 Minuten) führt dazu, dass ein ganzer 24-Stunden-Tag innerhalb von zwei Minuten Echtzeit abgespult wird! Wenn Sie alle Einstellungen auf der Zeitskala und für die einzelnen Keyframes vorgenommen haben, können Sie mit „Start“ und „Stopp“ die Animation anzeigen. Das funktioniert natürlich genauso interaktiv, indem Sie den gelben Pfeil über der Zeitskala verschieben. Mit der Schaltfläche „Grundstückszeit verw.“ synchronisieren Sie die Tageszeit und -länge mit den auf dem Grundstück geltenden Einstellungen. + +Ihre Tageszyklus-Einstellungen lassen sich mit den Schaltflächen „Testtag speichern“ und „Testtag laden“ speichern bzw. laden. Bis dato kann nur ein Tageszyklus gleichzeitig in Verwendung sein. + </notification> + <notification name="HelpBlueHorizon"> + Mit den Reglern für Rot/Grün/Blau (RGB) steuern Sie die Farbe des Himmels. Verwenden Sie den Intensitätsregler (I), um alle drei RGB-Regler gleichzeitig zu verschieben. + </notification> + <notification name="HelpHazeHorizon"> + Horizonttrübung ist einer der wichtigsten Parameter, um die Gesamtlichtsituation in der Szene zu steuern. Damit lassen sich viele Belichtungseinstellungen simulieren, z.B. ein Überstrahlen durch die Sonne oder starker Dunst. + </notification> + <notification name="HelpBlueDensity"> + Farbintensität steuert die Gesamtfarbsättigung von Himmel und Nebel. Je weiter Sie den Intensitätsregler (I) nach rechts verschieben, desto heller und lebendiger werden die Farben. Wenn Sie ihn ganz nach links verschieben, verlieren die Farben an Intensität und gehen in Schwarz oder Weiß über. Volle Kontrolle über die Farbsättigung des Himmels bieten ihnen die Regler für Rot/Grün/Blau (RGB). + </notification> + <notification name="HelpHazeDensity"> + Trübungsintensität steuert die Stärke des grauen Dunsts in der Atmosphäre. Damit lassen sich zum Beispiel starker Rauch oder Luftverschmutzung simulieren. Auch für Nebel und Sprühregen geeignet. + </notification> + <notification name="HelpDensityMult"> + Der Dichtemultiplikator beeinflusst die Gesamtdichte der Atmosphäre. Niedrige Einstellungen erzeugen den Eindruck dünner, sauberer Luft, hohe Einstellungen erzeugen den Eindruck schweren Smogs. + </notification> + <notification name="HelpDistanceMult"> + Steuert die Entfernungswirkung von WindLight. Ein Wert von Null schaltet den Einfluss von WindLight auf Terrain und Objekte praktisch aus. Werte über 1 simulieren größere Entfernungen und verstärken den Atmosphäreneffekt. + </notification> + <notification name="HelpMaxAltitude"> + Max. Höhe steuert die Höhenberechnungen von WindLight bei der Berechnung der atmosphärischen Beleuchtung. Zu späteren Tageszeiten lässt sich damit zum Beispiel die „Intensität“ des Sonnenuntergangs beeinflussen. + </notification> + <notification name="HelpSunlightColor"> + Steuert Farbe und Intensität von direktem Licht in der Szene. + </notification> + <notification name="HelpSunAmbient"> + Steuert Farbe und Intensität von atmosphärischem Umgebungslicht in der Szene. + </notification> + <notification name="HelpSunGlow"> + Der Regler „Größe“ steuert die Größe der Sonne. +Der Regler „Fokus“ steuert, wie unscharf die Sonne am Himmel erscheint. + </notification> + <notification name="HelpSceneGamma"> + Regelt den Hell/Dunkel-Wert des Bildschirms. + </notification> + <notification name="HelpStarBrightness"> + Regelt die Helligkeit der Sterne am Himmel. + </notification> + <notification name="HelpTimeOfDay"> + Steuert die Sonnenstellung am Himmel. +Entspricht der Elevation. + </notification> + <notification name="HelpEastAngle"> + Steuert die Sonnenstellung am Himmel. +Entspricht dem Azimut. + </notification> + <notification name="HelpCloudColor"> + Steuert die Wolkenfarbe. Generell empfiehlt sich hier ein Weißton, aber hey, warum nicht ein bisschen Spaß haben? + </notification> + <notification name="HelpCloudDetail"> + Steuert das Detailbild, welches über das Wolken-Hauptbild gelegt wird. X und Y bestimmen seine Position. D (Dichte) regelt, wie ausgebeult oder zerrissen die Wolken wirken. + </notification> + <notification name="HelpCloudDensity"> + Mit den X- und Y-Reglern steuern Sie die Position der Wolken, mit dem Regler D die Wolkendichte. + </notification> + <notification name="HelpCloudCoverage"> + Steuert, wie stark die Wolken den Himmel bedecken. + </notification> + <notification name="HelpCloudScale"> + Steuert die Skalierung des Wolkenbilds auf der Himmelskuppel. + </notification> + <notification name="HelpCloudScrollX"> + Steuert die Bewegungsgeschwindigkeit der Wolken in X-Richtung. + </notification> + <notification name="HelpCloudScrollY"> + Steuert die Bewegungsgeschwindigkeit der Wolken in Y-Richtung. + </notification> + <notification name="HelpClassicClouds"> + Aktivieren Sie dieses Kontrollkästchen, um die Darstellung der klassischen Second Life Wolken zusätzlich zu den WindLight-Wolken zu erzwingen. + </notification> + <notification name="HelpWaterFogColor"> + Steuert die Farbe der Wassertrübung + </notification> + <notification name="HelpWaterFogDensity"> + Steuert die Dichte der Wassertrübung und wie weit Sie unter Wasser sehen können. + </notification> + <notification name="HelpUnderWaterFogMod"> + Beeinflusst die Auswirkung des Wassertrübungs-Exponenten und regelt die Sichtweite Ihres Avatars unter Wasser. + </notification> + <notification name="HelpWaterGlow"> + Steuert, wie groß der Anteil der leuchtenden Wasseroberfläche ist. + </notification> + <notification name="HelpWaterNormalScale"> + Steuert die Skalierung der drei Elementarwellen, die das Wasser ausmachen. + </notification> + <notification name="HelpWaterFresnelScale"> + Steuert die winkelabhängige Lichtreflexion. + </notification> + <notification name="HelpWaterFresnelOffset"> + Steuert die Intensität des reflektierten Lichts. + </notification> + <notification name="HelpWaterScaleAbove"> + Steuert die Stärke der Lichtbrechung von oberhalb der Wasseroberfläche aus gesehen. + </notification> + <notification name="HelpWaterScaleBelow"> + Steuert die Stärke der Lichtbrechung von unterhalb der Wasseroberfläche aus gesehen. + </notification> + <notification name="HelpWaterBlurMultiplier"> + Steuert die Mischung von Wellen und Reflexionen. + </notification> + <notification name="HelpWaterNormalMap"> + Ermöglicht die Auswahl einer Normal-Map zur Berechnung von Reflexionen/Brechungen auf dem Wasser. + </notification> + <notification name="HelpWaterWave1"> + Steuert die Bewegungsgeschwindigkeit und -richtung der großen Normal-Map-Version in X- und Y-Richtung. + </notification> + <notification name="HelpWaterWave2"> + Steuert die Bewegungsgeschwindigkeit und -richtung der kleinen Normal-Map-Version in X- und Y-Richtung. + </notification> + <notification name="NewSkyPreset"> + Wählen Sie einen Namen für den neuen Himmel. + <form name="form"> + <input name="message" type="text"> + Neue Voreinstellung + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Abbrechen"/> + </form> + </notification> + <notification name="ExistsSkyPresetAlert"> + Voreinstellung bereits vorhanden! + </notification> + <notification name="NewWaterPreset"> + Wählen Sie einen Namen für die neue Wasservoreinstellung. + <form name="form"> + <input name="message" type="text"> + Neue Voreinstellung + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Abbrechen"/> + </form> + </notification> + <notification name="ExistsWaterPresetAlert"> + Voreinstellung bereits vorhanden! + </notification> + <notification name="WaterNoEditDefault"> + Standardvoreinstellungen können nicht bearbeitet oder gelöscht werden. + </notification> + <notification name="ChatterBoxSessionStartError"> + Neue Chat-Sitzung mit [RECIPIENT] konnte nicht gestartet werden. +[REASON] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ChatterBoxSessionEventError"> + [EVENT] +[REASON] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ForceCloseChatterBoxSession"> + Ihre Chat-Sitzung mit [NAME] muss beendet werden. +[REASON] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="Cannot_Purchase_an_Attachment"> + Objekte können nicht gekauft werden, solange sie Teil eines Anhangs sind. + </notification> + <notification label="Info zur Abfrage der Abbucherlaubnis" name="DebitPermissionDetails"> + Wenn Sie dieser Anfrage zustimmen, erhält das Skript die Erlaubnis, regelmäßig Linden-Dollar (L$) von Ihrem Konto abzubuchen. Diese Erlaubnis kann nur zurückgezogen werden, wenn der Eigentümer das Objekt löscht oder die Skripts in dem Objekt zurücksetzt. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="AutoWearNewClothing"> + Möchten Sie das neu erstellte Kleidungsstück automatisch anziehen? + <usetemplate ignoretext="Neue Kleidung automatisch tragen" name="okcancelignore" notext="Nein" yestext="Ja"/> + </notification> + <notification name="NotAgeVerified"> + Um Zugang zu dieser Parzelle zu erhalten, müssen Sie sich einer Altersprüfung unterziehen. +Möchten Sie auf der Second Life Website eine Altersüberprüfung durchführen? + +[_URL] + <url name="url" option="0"> + https://secondlife.com/account/verification.php?lang=de + </url> + <usetemplate ignoretext="Auf fehlende Altersprüfung aufmerksam machen" name="okcancelignore" notext="Nein" yestext="Ja"/> + </notification> + <notification name="Cannot enter parcel: no payment info on file"> + Um Zugang zu dieser Parzelle zu erhalten, müssen Sie Zahlungsinformationen hinterlegt haben. +Möchten Sie die Second Life Website öffnen, um diese Angaben zu hinterlegen? + +[_URL] + <url name="url" option="0"> + https://secondlife.com/account/index.php?lang=de + </url> + <usetemplate ignoretext="Auf fehlende Zahlungsinformationen aufmerksam machen" name="okcancelignore" notext="Nein" yestext="Ja"/> + </notification> + <notification name="MissingString"> + Der String „[STRING_NAME]“ fehlt in strings.xml + </notification> + <notification name="SystemMessageTip"> + [MESSAGE] + </notification> + <notification name="Cancelled"> + Abgebrochen + </notification> + <notification name="CancelledSit"> + Sitzen beendet + </notification> + <notification name="CancelledAttach"> + Anhängen abgebrochen + </notification> + <notification name="ReplacedMissingWearable"> + Fehlende(s) Kleidung/Körperteil mit Standard ersetzt. + </notification> + <notification name="GroupNotice"> + Betreff: [SUBJECT], Nachricht: [MESSAGE] + </notification> + <notification name="FriendOnline"> + [FIRST] [LAST] ist online + </notification> + <notification name="FriendOffline"> + [FIRST] [LAST] ist offline + </notification> + <notification name="AddSelfFriend"> + Sie können sich nicht selbst als Freund hinzufügen. + </notification> + <notification name="UploadingAuctionSnapshot"> + In-Welt- und Website-Fotos werden hochgeladen... +(Dauert ca. 5 Minuten.) + </notification> + <notification name="UploadPayment"> + Sie haben für das Hochladen [AMOUNT] L$ bezahlt. + </notification> + <notification name="UploadWebSnapshotDone"> + Das Website-Foto wurde hochgeladen. + </notification> + <notification name="UploadSnapshotDone"> + In-Welt-Foto hochgeladen + </notification> + <notification name="TerrainDownloaded"> + Terrain.raw heruntergeladen + </notification> + <notification name="GestureMissing"> + Geste [NAME] fehlt in Datenbank. + </notification> + <notification name="UnableToLoadGesture"> + Geste [NAME] konnte nicht geladen werden. +Bitte versuchen Sie es erneut. + </notification> + <notification name="LandmarkMissing"> + Landmarke fehlt in Datenbank. + </notification> + <notification name="UnableToLoadLandmark"> + Landmarke konnte nicht geladen werden. Bitte versuchen Sie es erneut. + </notification> + <notification name="CapsKeyOn"> + Die Feststelltaste ist aktiv. +Da dies Auswirkung auf die Kennworteingabe hat, sollten Sie die Taste besser ausschalten. + </notification> + <notification name="NotecardMissing"> + Notizkarte fehlt in Datenbank. + </notification> + <notification name="NotecardNoPermissions"> + Unzureichende Rechte zur Anzeige der Notizkarte. + </notification> + <notification name="RezItemNoPermissions"> + Keine Berechtigung zum Rezzen von Objekten. + </notification> + <notification name="UnableToLoadNotecard"> + Notizkarten-Asset konnte nicht geladen werden. + </notification> + <notification name="ScriptMissing"> + Skript fehlt in Datenbank. + </notification> + <notification name="ScriptNoPermissions"> + Unzureichende Rechte zur Anzeige des Skripts. + </notification> + <notification name="UnableToLoadScript"> + Skript konnte nicht geladen werden. Bitte versuchen Sie es erneut. + </notification> + <notification name="IncompleteInventory"> + Die von Ihnen angebotenen Inhalte sind noch nicht vollständig lokal verfügbar. Warten Sie kurz und wiederholen Sie dann das Angebot. + </notification> + <notification name="CannotModifyProtectedCategories"> + Geschützte Kategorien können nicht geändert werden. + </notification> + <notification name="CannotRemoveProtectedCategories"> + Geschützte Kategorien können nicht entfernt werden. + </notification> + <notification name="OfferedCard"> + Sie haben [FIRST] [LAST] eine Visitenkarte angeboten. + </notification> + <notification name="UnableToBuyWhileDownloading"> + Kauf nicht möglich. Objektdaten werden noch geladen. +Bitte versuchen Sie es erneut. + </notification> + <notification name="UnableToLinkWhileDownloading"> + Verknüpfung nicht möglich. Objektdaten werden noch geladen. +Bitte versuchen Sie es erneut. + </notification> + <notification name="CannotBuyObjectsFromDifferentOwners"> + Objekte können nicht von mehreren Eigentümern gleichzeitig gekauft werden. +Wählen Sie ein einzelnes Objekt aus. + </notification> + <notification name="ObjectNotForSale"> + Objekt ist nicht zu verkaufen. + </notification> + <notification name="EnteringGodMode"> + Gott-Modus aktiviert, Level [LEVEL] + </notification> + <notification name="LeavingGodMode"> + Gott-Modus deaktiviert, Level [LEVEL] + </notification> + <notification name="CopyFailed"> + Kopieren aufgrund fehlender Kopierrechte fehlgeschlagen + </notification> + <notification name="InventoryAccepted"> + [NAME] hat Ihr Inventarangebot akzeptiert. + </notification> + <notification name="InventoryDeclined"> + [NAME] hat Ihr Inventarangebot abgelehnt. + </notification> + <notification name="ObjectMessage"> + [NAME]: [MESSAGE] + </notification> + <notification name="CallingCardAccepted"> + Ihre Visitenkarte wurde akzeptiert. + </notification> + <notification name="CallingCardDeclined"> + Ihre Visitenkarte wurde abgelehnt. + </notification> + <notification name="TeleportToLandmark"> + Jetzt, nachdem Sie das Mainland erreicht haben, können Sie sich an Positionen wie „[NAME]“ teleportieren, indem Sie unten rechts im Fenster auf „Inventar“ klicken und den Ordner „Landmarken“ auswählen. +Klicken Sie eine Landmarke doppelt an und wählen Sie „Teleportieren“, um an diesen Ort zu gelangen. + </notification> + <notification name="TeleportToPerson"> + Jetzt, nachdem Sie das Mainland erreicht haben, können Sie mit Einwohnern wie „[NAME]“ Kontakt aufnehmen, indem Sie unten rechts im Fenster auf „Inventar“ klicken und den Ordner „Visitenkarten“ auswählen. +Klicken Sie die Karte doppelt an, wählen Sie „Instant Message“ und geben Sie eine Nachricht ein. + </notification> + <notification name="CantSelectLandFromMultipleRegions"> + Land kann nicht über Servergrenzen hinweg ausgewählt werden. +Wählen Sie eine kleinere Landfläche. + </notification> + <notification name="SearchWordBanned"> + Einige Begriffe in Ihrer Suchanfrage wurden ausgeschlossen, aufgrund von in den Community Standards definierten Inhaltsbeschränkungen. + </notification> + <notification name="NoContentToSearch"> + Bitte wählen Sie mindestens eine Inhaltsart für die Suche aus (PG, Mature oder Adult). + </notification> + <notification name="GroupVote"> + [NAME] hat eine Abstimmung vorgeschlagen über: +[MESSAGE] + <form name="form"> + <button name="VoteNow" text="Abstimmen"/> + <button name="Later" text="Später"/> + </form> + </notification> + <notification name="SystemMessage"> + [MESSAGE] + </notification> + <notification name="EventNotification"> + Event-Benachrichtigung: + +[NAME] +[DATE] + <form name="form"> + <button name="Teleport" text="Teleportieren"/> + <button name="Description" text="Beschreibung"/> + <button name="Cancel" text="Abbrechen"/> + </form> + </notification> + <notification name="TransferObjectsHighlighted"> + Alle Objekte auf dieser Parzelle, die an den Käufer der Parzelle übertragen werden, sind jetzt markiert. + +* Übertragene Bäume und Gräser sind nicht markiert. + <form name="form"> + <button name="Done" text="Fertig"/> + </form> + </notification> + <notification name="DeactivatedGesturesTrigger"> + Gesten mit demselben Trigger wurden deaktiviert: +[NAMES] + </notification> + <notification name="NoQuickTime"> + Apple QuickTime ist auf Ihrem System anscheinend nicht installiert. +Laden Sie QuickTime von der QuickTime-Webseite (http://www.apple.com/de/quicktime) herunter, um auf Parzellen, die diese Funktion unterstützen, Streaming-Inhalte wiederzugeben. + </notification> + <notification name="OwnedObjectsReturned"> + Ihre Objekte auf der ausgewählten Parzelle wurden in Ihr Inventar transferiert. + </notification> + <notification name="OtherObjectsReturned"> + Die Objekte von [FIRST] [LAST] auf dieser Parzelle wurden in das Inventar dieser Person transferiert. + </notification> + <notification name="OtherObjectsReturned2"> + Die Objekte von [FIRST] [LAST] auf dieser +Parzelle von „[NAME]“ wurden an ihren Eigentümer zurückgegeben. + </notification> + <notification name="GroupObjectsReturned"> + Die mit der Gruppe [GROUPNAME] gemeinsam genutzten Objekte auf dieser Parzelle wurden in das Inventar ihrer Eigentümer transferiert. +Transferierbare übertragene Objekte wurden an ihre früheren Eigentümer zurückgegeben. +Nicht transferierbare an die Gruppe übertragene Objekte wurden gelöscht. + </notification> + <notification name="UnOwnedObjectsReturned"> + Alle Objekte auf der ausgewählten Parzelle, die NICHT Ihnen gehören, wurden ihren Eigentümern zurückgegeben. + </notification> + <notification name="NotSafe"> + Auf diesem Land ist Schaden aktiviert („Unsicher“). +Verletzungen sind möglich. Wenn Sie sterben, werden Sie zu Ihrem Heimatstandort teleportiert. + </notification> + <notification name="NoFly"> + Auf diesem Land ist Fliegen deaktiviert („Fliegen aus“). +Fliegen ist hier nicht möglich. + </notification> + <notification name="PushRestricted"> + Auf diesem Land gilt „Kein Stoßen“. +Sie können keine anderen Personen stoßen, außer Ihnen gehört das Land. + </notification> + <notification name="NoVoice"> + Auf diesem Land ist Voice deaktiviert. + </notification> + <notification name="NoBuild"> + Auf diesem Land ist Bauen deaktiviert („Bauen aus“). +Sie können hier keine Objekte erstellen. + </notification> + <notification name="ScriptsStopped"> + Ein Administrator hat die Skriptausführung in dieser Region vorübergehend deaktiviert. + </notification> + <notification name="ScriptsNotRunning"> + In dieser Region werden keine Skipts ausgeführt. + </notification> + <notification name="NoOutsideScripts"> + Auf diesem Land sind externe Skripts deaktiviert +(„Externe Skripts aus“). +Nur Skripts, die dem Landeigentümer gehören, funktionieren. + </notification> + <notification name="ClaimPublicLand"> + Öffentliches Land kann nur in der Region in Besitz genommen werden, in der Sie sich befinden. + </notification> + <notification name="RegionTPAccessBlocked"> + Sie dürfen diese Region aufgrund Ihrer Alterseinstufung nicht betreten. Sie müssen eventuell eine Altersüberprüfung vornehmen und/oder den aktuellsten Viewer installieren. + +Bitte besuchen Sie unsere Knowledgebase, um mehr Details über Zugang zu Regionen mit dieser Alterseinstufung zu erhalten. + </notification> + <notification name="URBannedFromRegion"> + Sie dürfen diese Region nicht betreten. + </notification> + <notification name="NoTeenGridAccess"> + Ihr Konto kann keine Verbindung zu dieser Teen Grid-Region herstellen. + </notification> + <notification name="NoHelpIslandTP"> + Sie können nicht zurück nach Help Island teleportieren. +Gehen Sie zu „Help Island Public“ und wiederholen sie das Tutorial. + </notification> + <notification name="ImproperPaymentStatus"> + Die für den Zutritt zu dieser Region erforderlichen Zahlungsinformationen liegen nicht vor. + </notification> + <notification name="MustGetAgeRgion"> + Sie müssen alterüberprüft sein, um diese Region betreten zu können. + </notification> + <notification name="MustGetAgeParcel"> + Sie müssen alterüberprüft sein, um diese Parzelle betreten zu können. + </notification> + <notification name="NoDestRegion"> + Keine Zielregion gefunden. + </notification> + <notification name="NotAllowedInDest"> + Der Zutritt wurde Ihnen verweigert. + </notification> + <notification name="RegionParcelBan"> + Diese Parzelle ist abgesperrt und kann nicht überquert werden. Versuchen Sie einen anderen Weg. + </notification> + <notification name="TelehubRedirect"> + Sie wurden zu einem Telehub umgeleitet. + </notification> + <notification name="CouldntTPCloser"> + Ein Teleport näher am Ziel ist leider nicht möglich. + </notification> + <notification name="TPCancelled"> + Teleport abgebrochen. + </notification> + <notification name="FullRegionTryAgain"> + Die Region, die Sie betreten möchten, ist im Moment voll. +Versuchen Sie es in einigen Minuten erneut. + </notification> + <notification name="GeneralFailure"> + Allgemeiner Fehler. + </notification> + <notification name="RoutedWrongRegion"> + In falsche Region umgeleitet. Bitte versuchen Sie es erneut. + </notification> + <notification name="NoValidAgentID"> + Keine gültige Agent ID. + </notification> + <notification name="NoValidSession"> + Keine gültige Sitzungs-ID. + </notification> + <notification name="NoValidCircuit"> + Kein gültiger Verbindungscode. + </notification> + <notification name="NoValidTimestamp"> + Kein gültiger Zeitstempel. + </notification> + <notification name="NoPendingConnection"> + Verbindung kann nicht hergestellt werden. + </notification> + <notification name="InternalUsherError"> + Interner Fehler beim Versuch, Verbindung mit Agent Usher herzustellen. + </notification> + <notification name="NoGoodTPDestination"> + In dieser Region konnte kein gültiges Teleportziel gefunden werden. + </notification> + <notification name="InternalErrorRegionResolver"> + Interner Fehler bei Teleport. + </notification> + <notification name="NoValidLanding"> + Ein gültiger Landpunkt konnte nicht gefunden werden. + </notification> + <notification name="NoValidParcel"> + Es konnte keine gültige Parzelle gefunden werden. + </notification> + <notification name="ObjectGiveItem"> + Das Objekt [OBJECTFROMNAME] von [FIRST] [LAST] hat Ihnen Folgendes übergeben: [OBJECTTYPE] ([OBJECTNAME]). + <form name="form"> + <button name="Keep" text="Behalten"/> + <button name="Discard" text="Verwerfen"/> + <button name="Mute" text="Stummschalten"/> + </form> + </notification> + <notification name="ObjectGiveItemUnknownUser"> + Das Objekt [OBJECTFROMNAME] von (unbekannt) hat Ihnen Folgendes übergeben: [OBJECTTYPE] ([OBJECTNAME]). + <form name="form"> + <button name="Keep" text="Behalten"/> + <button name="Discard" text="Verwerfen"/> + <button name="Mute" text="Stummschalten"/> + </form> + </notification> + <notification name="UserGiveItem"> + [NAME] hat Ihnen ein [OBJECTTYPE] namens „[OBJECTNAME]“ gegeben. + <form name="form"> + <button name="Keep" text="Behalten"/> + <button name="Discard" text="Verwerfen"/> + <button name="Mute" text="Stummschalten"/> + </form> + </notification> + <notification name="GodMessage"> + [NAME] +[MESSAGE] + </notification> + <notification name="JoinGroup"> + [MESSAGE] + <form name="form"> + <button name="Join" text="Beitreten"/> + <button name="Decline" text="Ablehnen"/> + <button name="Info" text="Info"/> + </form> + </notification> + <notification name="TeleportOffered"> + [NAME] hat angeboten, Sie zu ihrem/seinem Standort zu teleportieren: + +[MESSAGE] + <form name="form"> + <button name="Teleport" text="Teleportieren"/> + <button name="Cancel" text="Abbrechen"/> + </form> + </notification> + <notification name="GotoURL"> + [MESSAGE] +[URL] + <form name="form"> + <button name="Later" text="Später"/> + <button name="GoNow..." text="Jetzt gehen..."/> + </form> + </notification> + <notification name="OfferFriendship"> + [NAME] bietet Ihnen die Freundschaft an. + +[MESSAGE] + +(Standardmäßig werden Sie gegenseitig ihren Online-Status sehen können.) + <form name="form"> + <button name="Accept" text="Akzeptieren"/> + <button name="Decline" text="Ablehnen"/> + </form> + </notification> + <notification name="OfferFriendshipNoMessage"> + [NAME] bietet Ihnen die Freundschaft an. + +(Sie werden dadurch den gegenseitigen Online-Status sehen können.) + <form name="form"> + <button name="Accept" text="Akzeptieren"/> + <button name="Decline" text="Ablehnen"/> + </form> + </notification> + <notification name="FriendshipAccepted"> + [NAME] hat Ihr Freundschaftsangebot akzeptiert. + </notification> + <notification name="FriendshipDeclined"> + [NAME] hat Ihr Freundschaftsangebot abgelehnt. + </notification> + <notification name="OfferCallingCard"> + [FIRST] [LAST] bietet Ihnen eine Visitenkarte an. +Dies erstellt ein Lesezeichen in Ihrem Inventar, damit Sie diesen Einwohner jederzeit über IM erreichen. + <form name="form"> + <button name="Accept" text="Akzeptieren"/> + <button name="Decline" text="Ablehnen"/> + </form> + </notification> + <notification name="RegionRestartMinutes"> + Region wird in [MINUTES] Minuten neu gestartet. +Wenn Sie in dieser Region bleiben, werden Sie abgemeldet. + </notification> + <notification name="RegionRestartSeconds"> + Region wird in [SECONDS] Sekunden neu gestartet. +Wenn Sie in dieser Region bleiben, werden Sie abgemeldet. + </notification> + <notification name="LoadWebPage"> + Webseite [URL] laden? + +[MESSAGE] + +Von Objekt: [OBJECTNAME], Eigentümer: [NAME]? + <form name="form"> + <button name="Gotopage" text="Zur Seite"/> + <button name="Cancel" text="Abbrechen"/> + </form> + </notification> + <notification name="FailedToFindWearableUnnamed"> + [TYPE] nicht in Datenbank. + </notification> + <notification name="FailedToFindWearable"> + [TYPE] namens [DESC] nicht in Datenbank. + </notification> + <notification name="InvalidWearable"> + Dieser Artikel verwendet eine Funktion, die Ihr Viewer nicht unterstützt. Bitte aktualisieren Sie Ihre Version von Second Life, um diesen Artikel anziehen zu können. + </notification> + <notification name="ScriptQuestion"> + Das Objekt „[OBJECTNAME]“, Eigentum von „[NAME]“, möchte: + +[QUESTIONS] +Ist das OK? + <form name="form"> + <button name="Yes" text="Ja"/> + <button name="No" text="Nein"/> + <button name="Mute" text="Stummschalten"/> + </form> + </notification> + <notification name="ScriptQuestionCaution"> + Das Objekt „[OBJECTNAME]“, Eigentum von „[NAME]“, möchte: + +[QUESTIONS] +Wenn Sie diesem Objekt und seinem Ersteller nicht vertrauen, sollten Sie diese Anfrage ablehnen. Klicken Sie für weitere Informationen auf „Info...“. + +Anfrage gestatten? + <form name="form"> + <button name="Grant" text="Gewähren"/> + <button name="Deny" text="Verweigern"/> + <button name="Details" text="Info..."/> + </form> + </notification> + <notification name="ScriptDialog"> + [FIRST] [LAST]s „[TITLE]“ +[MESSAGE] + <form name="form"> + <button name="Ignore" text="Ignorieren"/> + </form> + </notification> + <notification name="ScriptDialogGroup"> + [GROUPNAME]s „[TITLE]“ +[MESSAGE] + <form name="form"> + <button name="Ignore" text="Ignorieren"/> + </form> + </notification> + <notification name="FirstBalanceIncrease"> + Sie haben gerade [AMOUNT] L$ erhalten. +Objekte und andere Benutzer können Ihnen L$ geben. +Ihren Kontostand sehen Sie in der oberen rechten Ecke des Bildschirms. + </notification> + <notification name="FirstBalanceDecrease"> + Sie haben gerade [AMOUNT] L$ bezahlt. +Ihren Kontostand sehen Sie in der oberen rechten Ecke des Bildschirms. + </notification> + <notification name="FirstSit"> + Sie sitzen. +Benutzen Sie die Pfeil- oder WASD-Tasten, um die Ansicht zu ändern. +Klicken Sie auf „Aufstehen“, um aufzustehen. + </notification> + <notification name="FirstMap"> + Zum Verschieben der Karte klicken und ziehen. +Zum Teleportieren doppelklicken. +Nutzen Sie die Optionen links, um Dinge zu finden und um verschiedene Hintergründe anzuzeigen. + </notification> + <notification name="FirstBuild"> + In einigen Bereichen von [SECOND_LIFE] können Sie neue Objekte erstellen. +Verwenden Sie zum Bauen die Werkzeuge oben links. +Mit den Strg- und Alt-Tasten können Sie schnell zwischen den Werkzeugen umschalten. +Drücken Sie Esc, um das Bauen abzubrechen. + </notification> + <notification name="FirstLeftClickNoHit"> + Die linke Maustaste ermöglicht Objektinteraktionen. +Der Mauszeiger zeigt eine Hand, wenn Sie +mit dem Objekt interagieren können. +Die rechte Maustaste zeigt immer ein Aktionsmenü an. + </notification> + <notification name="FirstTeleport"> + Diese Region unterstützt keine direkten Teleports. Sie wurden zum nächstgelegenen Telehub transportiert. +Ihr Ziel ist mit einem großen roten Strahl markiert. Folgen Sie dem roten Pfeil zum Strahl oder klicken Sie auf den Pfeil, um den Strahl zu entfernen. + </notification> + <notification name="FirstOverrideKeys"> + Ihre Bewegungstasten werden jetzt von einem Objekt gesteuert. +Probieren Sie die Pfeil- oder WASD-Tasten aus. +Manche Objekte (wie Waffen) müssen per Mouselook gesteuert werden. +Drücken Sie dazu „M“. + </notification> + <notification name="FirstAppearance"> + Sie bearbeiten gerade Ihr Aussehen. +Benutzen Sie die Pfeiltasten zum Drehen und Zoomen. +Klicken Sie auf „Alles speichern“, wenn Sie fertig sind, um Ihr Aussehen zu speichern. +Sie können Ihr Aussehen jederzeit verändern. + </notification> + <notification name="FirstInventory"> + Ihr Inventar. Es enthält Objekte, Notizkarten, Kleidung und andere Dinge in Ihrem Besitz. +* Zum Anziehen eines Objekts oder Outfit-Ordners ziehen Sie es/ihn auf sich. +* Um ein Objekt in der Welt abzulegen, ziehen Sie es auf den Boden. +* Zum Lesen einer Notizkarte klicken Sie sie doppelt an. + </notification> + <notification name="FirstSandbox"> + Dies ist eine Sandkastenregion. +Objekte, die Sie hier bauen, können gelöscht werden, wenn Sie das Gebiet verlassen. Sandkästen werden regelmäßig gereinigt. Weitere Informationen hierzu finden Sie oben im Bild neben dem Regionsnamen. + +Sandkastenregionen kommen selten vor und sind entsprechend gekennzeichnet. + </notification> + <notification name="FirstFlexible"> + Dieses Objekt ist flexibel. +Ein flexibles Objekt ist ein Phantom und nicht physisch, bis die Option „Flexibel“ deaktiviert wurde. + </notification> + <notification name="FirstDebugMenus"> + Sie haben das Advanced-Menü aktiviert. +Dieses Menü enthält nützliche Funktionen zum Debuggen von Second Life. +Drücken Sie in Windows Strg-Alt-D (Mac: Befehl-Opt-Umschalt-D) zum Ein- und Ausschalten dieses Menüs. + </notification> + <notification name="FirstSculptedPrim"> + Sie bearbeiten ein geformtes Primitiv. +Geformte Primitive benötigen eine spezielle Textur, die ihre Form definiert. +Beispiele für Formtexturen finden Sie in der Inventarbibliothek. + </notification> + <notification name="FirstMedia"> + Sie haben die Medienwiedergabe gestartet. Unter „Audio und Video“ im Fenster „Einstellungen“ können Sie festlegen, dass Medien automatisch wiedergegeben werden. Beachten Sie, dass dies bei nicht vertrauenswürdigen Medienseiten ein Sicherheitsrisiko darstellen kann. + </notification> + <notification name="MaxListSelectMessage"> + Sie können maximal [MAX_SELECT] Objekte +von der Liste auswählen. + </notification> + <notification name="VoiceInviteP2P"> + [NAME] lädt Sie zu einem Voice-Chat ein. +Klicken Sie auf „Akzeptieren“, um dem Gespräch beizutreten, oder auf „Ablehnen“, um die Einladung auszuschlagen. Klicken Sie auf „Stummschalten“, um diesen Anrufer stumm zu schalten. + <form name="form"> + <button name="Accept" text="Akzeptieren"/> + <button name="Decline" text="Ablehnen"/> + <button name="Mute" text="Stummschalten"/> + </form> + </notification> + <notification name="AutoUnmuteByIM"> + [FIRST] [LAST] hat eine Instant Message erhalten; die Stummschaltung wurde aufgehoben. + </notification> + <notification name="AutoUnmuteByMoney"> + [FIRST] [LAST] hat Geld erhalten; die Stummschaltung wurde aufgehoben. + </notification> + <notification name="AutoUnmuteByInventory"> + [FIRST] [LAST] wurde ein Inventarobjekt angeboten; die Stummschaltung wurde aufgehoben. + </notification> + <notification name="VoiceInviteGroup"> + [NAME] ist einem Voice-Chat mit der Gruppe [GROUP] beigetreten. +Klicken Sie auf „Akzeptieren“, um dem Gespräch beizutreten, oder auf „Ablehnen“, um die Einladung auszuschlagen. Klicken Sie auf „Stummschalten“, um diesen Anrufer stumm zu schalten. + <form name="form"> + <button name="Accept" text="Akzeptieren"/> + <button name="Decline" text="Ablehnen"/> + <button name="Mute" text="Stummschalten"/> + </form> + </notification> + <notification name="VoiceInviteAdHoc"> + [NAME] ist einem Voice-Konferenz-Chat beigetreten. +Klicken Sie auf „Akzeptieren“, um dem Gespräch beizutreten, oder auf „Ablehnen“, um die Einladung auszuschlagen. Klicken Sie auf „Stummschalten“, um diesen Benutzer stumm zu schalten. + <form name="form"> + <button name="Accept" text="Akzeptieren"/> + <button name="Decline" text="Ablehnen"/> + <button name="Mute" text="Stummschalten"/> + </form> + </notification> + <notification name="InviteAdHoc"> + [NAME] lädt Sie zu einem Konferenz-Chat ein. +Klicken Sie auf „Akzeptieren“, um dem Chat beizutreten, oder auf „Ablehnen“, um die Einladung auszuschlagen. Klicken Sie auf „Stummschalten“, um diesen Benutzer stumm zu schalten. + <form name="form"> + <button name="Accept" text="Akzeptieren"/> + <button name="Decline" text="Ablehnen"/> + <button name="Mute" text="Stummschalten"/> + </form> + </notification> + <notification name="VoiceChannelFull"> + Der Voice-Chat, dem Sie beitreten möchten, [VOICE_CHANNEL_NAME], hat seine maximale Teilnehmerzahl erreicht. Bitte versuchen Sie es erneut. + </notification> + <notification name="ProximalVoiceChannelFull"> + Es tut uns Leid. Dieses Gebiet hat seine maximale Kapazität für Voice-Gespräche erreicht. Bitte versuchen Sie es in einem anderen Gebiet. + </notification> + <notification name="VoiceChannelDisconnected"> + Sie haben [VOICE_CHANNEL_NAME] verlassen. Sie werden nun wieder mit dem Umgebungs-Voice-Chat verbunden. + </notification> + <notification name="VoiceChannelDisconnectedP2P"> + [VOICE_CHANNEL_NAME] hat das Gespräch beendet. Sie werden nun wieder mit dem Umgebungs-Voice-Chat verbunden. + </notification> + <notification name="P2PCallDeclined"> + [VOICE_CHANNEL_NAME] hat Ihren Anruf abgelehnt. Sie werden nun wieder mit dem Umgebungs-Voice-Chat verbunden. + </notification> + <notification name="P2PCallNoAnswer"> + [VOICE_CHANNEL_NAME] ist zurzeit nicht erreichbar. Sie werden nun wieder mit dem Umgebungs-Voice-Chat verbunden. + </notification> + <notification name="VoiceChannelJoinFailed"> + Verbindung zu [VOICE_CHANNEL_NAME] nicht möglich. Bitte versuchen Sie es später. Sie werden nun wieder mit dem Umgebungs-Voice-Chat verbunden. + </notification> + <notification name="VoiceLoginRetry"> + Wir erstellen einen Voice-Kanal für Sie. Bitte warten Sie einen Moment. + </notification> + <notification name="Cannot enter parcel: not a group member"> + Zugang zur Parzelle verweigert, Sie gehören keiner berechtigten Gruppe an. + </notification> + <notification name="Cannot enter parcel: banned"> + Zugang zur Parzelle verweigert. Sie wurden verbannt. + </notification> + <notification name="Cannot enter parcel: not on access list"> + Zugang zur Parzelle verweigert. Sie stehen nicht auf der Zugangsliste. + </notification> + <notification name="VoiceNotAllowed"> + Sie sind nicht berechtigt, einem Voice-Chat in [VOICE_CHANNEL_NAME] beizutreten. + </notification> + <notification name="VoiceCallGenericError"> + Fehler beim Versuch, eine Voice-Chat-Verbindung zu [VOICE_CHANNEL_NAME] herzustellen. Bitte versuchen Sie es erneut. + </notification> + <notification name="ServerVersionChanged"> + Die Region, die Sie betreten haben, verwendet eine andere Simulatorversion. Klicken Sie auf diese Nachricht, um weitere Informationen zu erhalten. + </notification> + <notification name="UnableToOpenCommandURL"> + Die URL, die Sie angeklickt haben, kann in diesem Web Browser nicht geöffnet werden. + </notification> + <global name="UnsupportedCPU"> + - Ihre CPU-Geschwindigkeit entspricht nicht den Mindestanforderungen. + </global> + <global name="UnsupportedGLRequirements"> + Ihr Computer entspricht nicht den Hardwareanforderungen von Second Life. Second Life setzt eine OpenGL-Grafikkarte mit Multitextur-Unterstützung voraus. Falls Ihre Grafikkarte diese Funktion unterstützt, installieren Sie die neuesten Treiber sowie die aktuellen Service Packs und Patches für Ihr Betriebssystem. + +Sollte das Problem fortbestehen, finden Sie weitere Hilfestellung unter: http://www.secondlife.com/support + </global> + <global name="UnsupportedCPUAmount"> + 796 + </global> + <global name="UnsupportedRAMAmount"> + 510 + </global> + <global name="UnsupportedGPU"> + - Ihre Grafikkarte entspricht nicht den Mindestanforderungen. + </global> + <global name="UnsupportedRAM"> + - Ihr Arbeitsspeicher entspricht nicht den Mindestanforderungen. + </global> + <global name="PermYes"> + Ja + </global> + <global name="PermNo"> + Nein + </global> +</notifications> diff --git a/indra/newview/skins/default/xui/de/panel_group_general.xml b/indra/newview/skins/default/xui/de/panel_group_general.xml index c05f6ca09b9245f92b53ea37ebb83c3775128546..ce19248755755f595dfdedfdf1450dea1705395c 100644 --- a/indra/newview/skins/default/xui/de/panel_group_general.xml +++ b/indra/newview/skins/default/xui/de/panel_group_general.xml @@ -18,7 +18,7 @@ Bewegen Sie die Maus über die Optionen, um weitere Informationen anzuzeigen. <text name="prepend_founded_by"> Gegründet von </text> - <text name="founder_name" left_delta="79"> + <text left_delta="79" name="founder_name"> (wartet) </text> <text name="group_charter_label"> @@ -49,7 +49,17 @@ Bewegen Sie die Maus über die Optionen, um weitere Informationen anzuzeigen. <check_box label="Registrierung offen" name="open_enrollement" tool_tip="Festlegen, ob der Gruppenbeitritt ohne Einladung zulässig ist."/> <check_box label="Beitrittsgebühr: L$" name="check_enrollment_fee" tool_tip="Festlegen, ob Neumitglieder eine Beitrittsgebühr zahlen müssen." width="125"/> <spinner name="spin_enrollment_fee" tool_tip="Wenn „Beitrittsgebühr“ aktiviert ist, müssen neue Mitglieder diesen Betrag zahlen."/> - + <combo_box name="group_mature_check" tool_tip="Festlegen, ob die Informationen Ihrer Gruppe „Mature“ sind."> + <combo_item name="select_mature"> + - Mature wählen - + </combo_item> + <combo_item name="mature"> + Mature-Inhalt + </combo_item> + <combo_item name="pg"> + PG-Inhalt + </combo_item> + </combo_box> <panel name="title_container"> <text name="active_title_label"> Mein aktiver Titel diff --git a/indra/newview/skins/default/xui/de/panel_group_invite.xml b/indra/newview/skins/default/xui/de/panel_group_invite.xml index 96af8e30213c8e54405db5d14f2f7ede2098ea71..84ba91a63f9a13198703ce539df924bc4c9a20f4 100644 --- a/indra/newview/skins/default/xui/de/panel_group_invite.xml +++ b/indra/newview/skins/default/xui/de/panel_group_invite.xml @@ -1,11 +1,11 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <panel label="Mitglied einladen" name="invite_panel"> <text name="help_text"> - Sie können mehrere Einwohner zu Ihrer -Gruppe einladen. Klicken Sie auf -„Personenauswahl öffnen“. + Sie können mehrere Einwohner in Ihre +Gruppe einladen. Klicken Sie hierzu +auf „Einwohnerliste öffnen“. </text> - <button label="Personenauswahl öffnen" name="add_button" tool_tip="" /> + <button label="Einwohnerliste öffnen" name="add_button" tool_tip=""/> <name_list name="invitee_list" tool_tip="Halten Sie zur Mehrfachauswahl die Strg-Taste gedrückt und klicken Sie auf die Einwohnernamen." /> <button label="Auswahl aus Liste löschen" name="remove_button" diff --git a/indra/newview/skins/default/xui/de/panel_group_land_money.xml b/indra/newview/skins/default/xui/de/panel_group_land_money.xml index 15d3b08482ef630e0bc2fe4376ef2a8b2b4724c7..c038d97822ff41e3aa159da27629fd3b5c8e5450 100644 --- a/indra/newview/skins/default/xui/de/panel_group_land_money.xml +++ b/indra/newview/skins/default/xui/de/panel_group_land_money.xml @@ -1,15 +1,15 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Land und L$" name="land_money_tab"> - <text name="help_text"> - Es werden Parzellen in Gruppenbesitz und Beitragsdetails angezeigt. Ein Warnhinweis wird angezeigt, solange der Wert für das Insgesamt verwendete Land gleich oder weniger ist als der Gesamtbeitrag. Die Registerkarten „Planung“, „Details“ und „Verkäufe“ enthalten Informationen über die Gruppenfinanzen. - </text> - <button label="?" name="help_button" /> - <text name="cant_view_group_land_text"> + <string name="help_text"> + Parzellen in Gruppenbesitz werden zusammen mit Beitragsdetails angezeigt. Ein Warnhinweis wird angezeigt, solange der Wert für das insgesamt verwendete Land gleich oder weniger ist als der Gesamtbeitrag. Die Registerkarten „Planung“, „Details“ und „Verkäufe“ enthalten Informationen über die Gruppenfinanzen. + </string> + <button label="?" name="help_button"/> + <string name="cant_view_group_land_text"> Sie sind nicht berechtigt, Landeigentum der Gruppe anzuzeigen. - </text> - <text name="cant_view_group_accounting_text"> + </string> + <string name="cant_view_group_accounting_text"> Sie sind nicht berechtigt, die Finanzinformationen der Gruppe anzuzeigen. - </text> + </string> <string name="loading_txt"> Wird geladen... </string> @@ -17,12 +17,13 @@ Land in Gruppenbesitz </text> <scroll_list name="group_parcel_list"> - <column label="Parzellenname" name="name" /> - <column label="Region" name="location" /> - <column label="Gebiet" name="area" /> - <column label="" name="hidden" /> + <column label="Parzellenname" name="name"/> + <column label="Region" name="location"/> + <column label="Typ" name="type"/> + <column label="Gebiet" name="area"/> + <column label="" name="hidden"/> </scroll_list> - <button label="Auf Karte" label_selected="Auf Karte" name="map_button" /> + <button label="Auf Karte" label_selected="Auf Karte" name="map_button"/> <text name="total_contributed_land_label"> Gesamtbeitrag: </text> @@ -44,9 +45,6 @@ <text name="your_contribution_label"> Ihr Beitrag: </text> - <text name="your_contribution_max_value_append"> - qm - </text> <string name="land_contrib_error"> Ihr Landbeitrag kann nicht festgelegt werden. </string> @@ -70,19 +68,15 @@ das verwendete Land gehalten werden kann. <text_editor name="group_money_details_text"> Wird berechnet... </text_editor> - <button label="< Früher" label_selected="< Früher" - name="earlier_details_button" tool_tip="Zurück in der Zeit" /> - <button label="Später >" label_selected="Später >" name="later_details_button" - tool_tip="Weiter in der Zeit" /> + <button label="< Früher" label_selected="< Früher" name="earlier_details_button" tool_tip="Zurück in der Zeit"/> + <button label="Später >" label_selected="Später >" name="later_details_button" tool_tip="Weiter in der Zeit"/> </panel> <panel label="Verkäufe" name="group_money_sales_tab"> <text_editor name="group_money_sales_text"> Wird berechnet... </text_editor> - <button label="< Früher" label_selected="< Früher" name="earlier_sales_button" - tool_tip="Zurück in der Zeit" /> - <button label="Später >" label_selected="Später >" name="later_sales_button" - tool_tip="Weiter in der Zeit" /> + <button label="< Früher" label_selected="< Früher" name="earlier_sales_button" tool_tip="Zurück in der Zeit"/> + <button label="Später >" label_selected="Später >" name="later_sales_button" tool_tip="Weiter in der Zeit"/> </panel> </tab_container> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_group_roles.xml b/indra/newview/skins/default/xui/de/panel_group_roles.xml index f5671fc85210974b70a15bffcbc92cd5f49a16b9..d4589f83e420a550043aa535e44c77c0a86130dc 100644 --- a/indra/newview/skins/default/xui/de/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/de/panel_group_roles.xml @@ -51,7 +51,7 @@ Mitglieder diese Fähigkeit haben. <column label="Übertragene Landanteile" name="donated" width="156"/> <column label="Letzte Anmeldung" name="online"/> </name_list> - <button label="Neue Person einladen..." name="member_invite"/> + <button label="Neues Mitglied einladen..." name="member_invite"/> <button label="Aus Gruppe werfen" name="member_eject"/> <string name="help_text"> Sie können Mitgliedern Rollen zuweisen und entziehen. diff --git a/indra/newview/skins/default/xui/de/panel_notifications_channel.xml b/indra/newview/skins/default/xui/de/panel_notifications_channel.xml new file mode 100644 index 0000000000000000000000000000000000000000..e2166f7baf77fb6e5c2e4e297bc1f98b7ab75091 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_notifications_channel.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="notifications_panel"> + <layout_stack name="stack1"> + <scroll_list name="notifications_list"> + <column label="Name" name="name"/> + <column label="Inhalt" name="content"/> + <column label="Datum" name="date"/> + </scroll_list> + <scroll_list name="notification_rejects_list"> + <column label="Name" name="name"/> + <column label="Inhalt" name="content"/> + <column label="Datum" name="date"/> + </scroll_list> + </layout_stack> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_preferences_chat.xml b/indra/newview/skins/default/xui/de/panel_preferences_chat.xml index feeb5287212a9c87dca0b129b26e4b092dc7205b..9de8922954a2882176e44a7582ec25aa4d5356c4 100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_chat.xml @@ -4,15 +4,9 @@ Chat-Schriftgröße: </text> <radio_group name="chat_font_size"> - <radio_item length="1" name="radio" type="string"> - Klein - </radio_item> - <radio_item length="1" name="radio2" type="string"> - Mittel - </radio_item> - <radio_item length="1" name="radio3" type="string"> - Groß - </radio_item> + <radio_item length="1" name="radio" type="string" label="Klein" /> + <radio_item length="1" name="radio2" type="string" label="Mittel" /> + <radio_item length="1" name="radio3" type="string" label="Groß" /> </radio_group> <text length="1" name="text_box2" type="string"> Chat-Farbe: diff --git a/indra/newview/skins/default/xui/de/panel_preferences_general.xml b/indra/newview/skins/default/xui/de/panel_preferences_general.xml index 18fd2f2baa2accf82cbbbaba2956908b2d5625c3..92b45bf5a595d38f222589f231341b0da125be09 100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_general.xml @@ -27,10 +27,28 @@ </text> <check_box label="Auflösungsunabhängigen Maßstab verwenden" name="ui_auto_scale"/> <spinner label="Timeout für Abwesenheit:" name="afk_timeout_spinner"/> - <check_box label="Minikarte drehen" name="rotate_mini_map_checkbox"/> <check_box label="L$ Eingänge und Ausgaben melden" name="notify_money_change_checkbox"/> - <check_box label="Standard-Farbauswahl verwenden" name="use_system_color_picker_checkbox" tool_tip="Standard-Farbauswahl des Systems anstelle des Second Life-eigenen verwenden."/> - <check_box label="Suchleiste in Menüleiste anzeigen" name="show_search_panel" tool_tip="Die eingebettete Suchleiste anzeigen."/> + <text name="maturity_desired_label" bottom="-312"> + Einstufung: + </text> + <text name="maturity_desired_prompt" bottom="-312"> + Ich möchte auf Inhalt mit folgender +Alterseinstufung zugreifen: + </text> + <combo_box name="maturity_desired_combobox" bottom="-330" left="336"> + <combo_item name="Desired_Adult"> + PG, Mature und Adult + </combo_item> + <combo_item name="Desired_Mature"> + PG und Mature + </combo_item> + <combo_item name="Desired_PG"> + Nur PG + </combo_item> + </combo_box> + <text name="maturity_desired_textbox" bottom="-324" left="336"> + Nur PG + </text> <text name="start_location_textbox"> Startposition: </text> @@ -49,18 +67,18 @@ <text name="language_textbox"> Sprache: </text> - <text name="language_textbox2"> + <text left_delta="313" name="language_textbox2"> (Erfordert Neustart) </text> <string name="region_name_prompt"> <Region eingeben> </string> - <combo_box name="crash_behavior_combobox"> + <combo_box name="crash_behavior_combobox" width="166"> <combo_box.item name="Askbeforesending" label="Vor dem Senden fragen" /> <combo_box.item name="Alwayssend" label="Immer senden" /> <combo_box.item name="Neversend" label="Nie senden" /> </combo_box> - <combo_box name="language_combobox"> + <combo_box name="language_combobox" width="166"> <combo_box.item name="System Default Language" label="Betriebssystem-Einstellung" /> <combo_box.item name="English" label="English (Englisch)" /> <combo_box.item name="Danish" label="Danks (Dänisch) - Beta" /> @@ -73,6 +91,21 @@ <combo_box.item name="Chinese" label="䏿–‡ (简体) (Chinesisch) - Beta" /> <combo_box.item name="(Japanese)" label="日本語 (Japanisch) - Beta" /> <combo_box.item name="(Korean)" label="한êµì–´ (Koreanisch) - Beta" /> + <combo_item name="Italian"> + Italiano (Italienisch) - Beta + </combo_item> + <combo_item name="Dutch"> + Nederlands (Niederländisch) - Beta + </combo_item> + </combo_item> + <combo_item name="Russian"> + РуÑÑкий (Russian) - Beta + </combo_item> + <combo_item name="Turkish"> + Türkçe (Türkisch) - Beta + </combo_item> + <combo_item name="Ukrainian"> + УкраїнÑька (Ukrainisch) - Beta </combo_box> <check_box label="Objekten Sprache mitteilen" name="language_is_public" tool_tip="In-Welt-Objekten wird Ihre bevorzugte Spracheinstellung mitgeteilt."/> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml index 4717f21a0bb9496eb4e9091051ed30476080c0c9..dd77d57f87e1cca7126977a2546cb4fc00182bc5 100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml @@ -93,18 +93,10 @@ Spiegelung: </text> <radio_group name="ReflectionDetailRadio"> - <radio_item name="0"> - Terrain und Bäume - </radio_item> - <radio_item name="1"> - Alle statischen Objekte - </radio_item> - <radio_item name="2"> - Alle Avatare und Objekte - </radio_item> - <radio_item name="3"> - Alles - </radio_item> + <radio_item name="0" label="Terrain und Bäume" /> + <radio_item name="1" label="Alle statischen Objekte" /> + <radio_item name="2" label="Alle Avatare und Objekte" /> + <radio_item name="3" label="Alles" /> </radio_group> <text name="AvatarRenderingText"> Avatar-Darstellung: @@ -155,23 +147,15 @@ Beleuchtungsdetails: </text> <radio_group name="LightingDetailRadio"> - <radio_item name="SunMoon"> - Nur Sonne und Mond - </radio_item> - <radio_item name="LocalLights"> - Lokale Lichtquellen - </radio_item> + <radio_item name="SunMoon" label="Nur Sonne und Mond" /> + <radio_item name="LocalLights" label="Lokale Lichtquellen" /> </radio_group> <text name="TerrainDetailText"> Terraindetails: </text> <radio_group name="TerrainDetailRadio"> - <radio_item name="0"> - Niedrig - </radio_item> - <radio_item name="2"> - Hoch - </radio_item> + <radio_item name="0" label="Niedrig" /> + <radio_item name="2" label="Hoch" /> </radio_group> <button label="Empfohlene Einstellungen" name="Defaults" /> <button label="Hardware-Optionen" label_selected="Hardware-Optionen" diff --git a/indra/newview/skins/default/xui/de/panel_region_covenant.xml b/indra/newview/skins/default/xui/de/panel_region_covenant.xml index 8f1f1c2597fd2cadffe7a7e0e1cfe807f61068ae..a72f0e424023eb832aac0b54984fc1c255d085fc 100644 --- a/indra/newview/skins/default/xui/de/panel_region_covenant.xml +++ b/indra/newview/skins/default/xui/de/panel_region_covenant.xml @@ -1,50 +1,84 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Vertrag" name="Covenant"> + <text name="estate_section_lbl"> + Grundstück: + </text> + <text name="estate_name_lbl"> + Name: + </text> + <text name="estate_name_text"> + Mainland + </text> + <text name="estate_owner_lbl"> + Eigentümer: + </text> + <text name="estate_owner_text"> + (keiner) + </text> + <text name="estate_cov_lbl"> + Vertrag: + </text> + <text name="covenant_timestamp_text"> + Letzte Änderung am Mittwoch, den 31. Dez. 1969, 16:00:00 + </text> + <button label="?" name="covenant_help"/> + <text_editor bottom="-247" height="162" name="covenant_editor"> + Für dieses Grundstück fehlt der Vertrag. + </text_editor> + <button label="Zurücksetzen" name="reset_covenant"/> <text name="covenant_help_text"> - Änderungen am Vertrag werden für alle Parzellen auf dem Grundstück übernommen. + Änderungen am Vertrag werden für alle Parzellen auf dem + Grundstück übernommen. </text> - <text name="region_name_lbl"> + <text bottom_delta="-36" name="covenant_instructions"> + Ziehen Sie eine Notizkarte an diese Stelle, um den Vertrag für dieses + Grundstück zu ändern. + </text> + <text bottom_delta="-36" name="region_section_lbl"> Region: </text> + <text name="region_name_lbl"> + Name: + </text> <text name="region_name_text"> - (unbekannt) + leyla </text> - <text name="estate_name_lbl"> - Grundstück: + <text name="region_landtype_lbl"> + Typ: </text> - <text name="estate_name_text"> - (unbekannt) + <text name="region_landtype_text"> + Mainland / Homestead </text> - <text name="covenent_instructions"> - Ziehen Sie eine Notizkarte an diese Stelle, um den Vertrag für dieses Grundstück zu ändern. + <text name="region_maturity_lbl"> + Einstufung: </text> - <button label="?" name="covenant_help" /> - <button label="Zurücksetzen" name="reset_covenant" /> - <text name="estate_owner_lbl"> - Grundstückseigentümer: + <text name="region_maturity_text"> + Adult </text> - <text name="estate_owner_text"> - (unbekannt) + <text name="resellable_lbl"> + Wiederverkauf: </text> <text name="resellable_clause"> - Gekauftes Land in dieser Region kann oder kann nicht wiederverkauft werden. + Land in dieser Region kann nicht wiederverkauft werden. + </text> + <text name="changeable_lbl"> + Unterteilen: </text> <text name="changeable_clause"> - Gekauftes Land in dieser Region kann oder kann nicht zusammengelegt und geteilt werden. + Land in dieser Region kann nicht zusammengelegt/geteilt werden. </text> - <text_editor name="covenant_editor"> - Wird geladen... - </text_editor> - <text name="can_resell"> + <string name="can_resell"> Gekauftes Land in dieser Region kann wiederverkauft werden. - </text> - <text name="can_not_resell"> + </string> + <string name="can_not_resell"> Gekauftes Land in dieser Region kann nicht wiederverkauft werden. - </text> - <text name="can_change"> - Gekauftes Land in dieser Region kann zusammengelegt und geteilt werden. - </text> - <text name="can_not_change"> - Gekauftes Land in dieser Region kann nicht zusammengelegt und geteilt werden. - </text> + </string> + <string name="can_change"> + Gekauftes Land in dieser Region kann zusammengelegt und +geteilt werden. + </string> + <string name="can_not_change"> + Gekauftes Land in dieser Region kann nicht zusammengelegt +und geteilt werden. + </string> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_region_general.xml b/indra/newview/skins/default/xui/de/panel_region_general.xml index 6cf3e69d31a7d0b25a5d233cc86c99f81562837d..9980393ab032f9aa08116a907f34da6685d601aa 100644 --- a/indra/newview/skins/default/xui/de/panel_region_general.xml +++ b/indra/newview/skins/default/xui/de/panel_region_general.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="Region" name="General"> <text name="region_text_lbl"> Region: @@ -12,34 +12,48 @@ <text name="version_channel_text"> unbekannt </text> - <check_box label="Terraformen blockieren" name="block_terraform_check" /> - <button label="?" name="terraform_help" /> - <check_box label="Fliegen blockieren" name="block_fly_check" /> - <button label="?" name="fly_help" /> - <check_box label="Schaden zulassen" name="allow_damage_check" /> - <button label="?" name="damage_help" /> - <check_box label="Stoßen beschränken" name="restrict_pushobject" /> - <button label="?" name="restrict_pushobject_help" /> - <check_box label="Landwiederverkauf zulassen" name="allow_land_resell_check" /> - <button label="?" name="land_resell_help" /> - <check_box label="Landumverteilung zulassen" name="allow_parcel_changes_check" /> - <button label="?" name="parcel_changes_help" /> - <check_box label="Landanzeige in Suche blockieren" name="block_parcel_search_check" - tool_tip="Diese Region und ihre Parzellen in Suchergebnissen anzeigen" /> - <button label="?" name="parcel_search_help" /> - <spinner label="Avatar-Limit" name="agent_limit_spin" /> - <button label="?" name="agent_limit_help" /> - <spinner label="Objektbonus" name="object_bonus_spin" /> - <button label="?" name="object_bonus_help" /> + <text name="region_type_lbl"> + Typ: + </text> + <text name="region_type"> + unbekannt + </text> + <check_box label="Terraformen blockieren" name="block_terraform_check"/> + <button label="?" name="terraform_help"/> + <check_box label="Fliegen blockieren" name="block_fly_check"/> + <button label="?" name="fly_help"/> + <check_box label="Schaden zulassen" name="allow_damage_check"/> + <button label="?" name="damage_help"/> + <check_box label="Stoßen beschränken" name="restrict_pushobject"/> + <button label="?" name="restrict_pushobject_help"/> + <check_box label="Landwiederverkauf zulassen" name="allow_land_resell_check"/> + <button label="?" name="land_resell_help"/> + <check_box label="Landumverteilung zulassen" name="allow_parcel_changes_check"/> + <button label="?" name="parcel_changes_help"/> + <check_box label="Landanzeige in Suche blockieren" name="block_parcel_search_check" tool_tip="Diese Region und ihre Parzellen in Suchergebnissen anzeigen"/> + <button label="?" name="parcel_search_help"/> + <spinner label="Avatar-Limit" name="agent_limit_spin"/> + <button label="?" name="agent_limit_help"/> + <spinner label="Objektbonus" name="object_bonus_spin"/> + <button label="?" name="object_bonus_help"/> <text label="Alterseinstufung" name="access_text"> - Alterseinstufung: + Einstufung: </text> - - - <button label="?" name="access_help" /> - <button label="Übernehmen" name="apply_btn" /> - <button label="Einen Benutzer nach Hause teleportieren..." name="kick_btn" /> - <button label="Alle Benutzer nach Hause teleportieren..." name="kick_all_btn" /> - <button label="Nachricht an Region senden..." name="im_btn" /> - <button label="Telehub verwalten..." name="manage_telehub_btn" /> + <combo_box label="Mature" name="access_combo"> + <combo_item name="Adult"> + Adult + </combo_item> + <combo_item name="Mature"> + Mature + </combo_item> + <combo_item name="PG"> + PG + </combo_item> + </combo_box> + <button label="?" name="access_help"/> + <button label="Übernehmen" name="apply_btn"/> + <button label="Einen Benutzer nach Hause teleportieren..." name="kick_btn"/> + <button label="Alle Benutzer nach Hause teleportieren..." name="kick_all_btn"/> + <button label="Nachricht an Region senden..." name="im_btn"/> + <button label="Telehub verwalten..." name="manage_telehub_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml index 07f3269541feba51963f2b1a0f247d462ffe06af..3436cfac1e9bdda6b9111eb435831f4072603e39 100644 --- a/indra/newview/skins/default/xui/de/strings.xml +++ b/indra/newview/skins/default/xui/de/strings.xml @@ -1,10 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <!-- This file contains strings that used to be hardcoded in the source. - It is only for those strings which don't belong in a floater. + It is only for those strings which do not belong in a floater. For example, the strings used in avatar chat bubbles, and strings that are returned from one component and may appear in many places--> <strings> - <!-- Login --> <string name="LoginInProgress"> Anmeldevorgang gestartet. [APP_NAME] reagiert möglicherweise nicht. Bitte warten. </string> @@ -56,34 +55,24 @@ <string name="LoginDownloadingClothing"> Kleidung wird geladen... </string> - <string name="LoginFailedNoNetwork"> - Netzwerk Fehler: Eine Verbindung konnte nicht hergestellt werden. Bitte überprüfen Sie Ihre Netzwerkverbindung. - </string> - <!-- Disconnection --> <string name="AgentLostConnection"> In dieser Region kann es zu Problemen kommen. Bitte überprüfen Sie Ihre Internetverbindung. </string> - <!-- Tooltip, llhoverview.cpp --> <string name="TooltipPerson"> Person </string> - <!-- Object under mouse pointer is an avatar --> <string name="TooltipNoName"> (namenlos) </string> - <!-- No name on an object --> <string name="TooltipOwner"> Eigentümer: </string> - <!-- Owner name follows --> <string name="TooltipPublic"> Öffentlich </string> - <!-- Public permissions on an object --> <string name="TooltipIsGroup"> (Gruppe) </string> - <!-- The name before this text is that of a group --> <string name="TooltipFlagScript"> Skript </string> @@ -114,11 +103,9 @@ <string name="TooltipForSaleL$"> Zum Verkauf: [AMOUNT] L$ </string> - <!-- L$ version --> <string name="TooltipForSaleMsg"> Zum Verkauf: [MESSAGE] </string> - <!-- Message (RetrievingData) --> <string name="TooltipFlagGroupBuild"> Gruppenbau </string> @@ -131,7 +118,6 @@ <string name="TooltipFlagNotSafe"> Unsicher </string> - <!-- damage area --> <string name="TooltipFlagNoFly"> Fliegen aus </string> @@ -147,35 +133,27 @@ <string name="TooltipMustSingleDrop"> Sie können nur ein einzelnes Objekt hierher ziehen </string> - <!-- Indicates that an avatar's name or other similar datum is being retrieved. General usage. --> <string name="RetrievingData"> Laden... </string> <string name="ReleaseNotes"> Versionshinweise </string> - <!-- Indicates something is being loaded. Maybe should be merged with RetrievingData --> <string name="LoadingData"> Wird geladen... </string> - <!-- namecache --> - <!-- Avatar name: text shown for LLUUID::null --> <string name="AvatarNameNobody"> (niemand) </string> - <!-- Avatar name: text shown while fetching name --> <string name="AvatarNameWaiting"> (wartet) </string> - <!-- Avatar name: text shown as an alternative to AvatarNameFetching, easter egg. --> <string name="AvatarNameHippos"> (hippos) </string> - <!-- Group name: text shown for LLUUID::null --> <string name="GroupNameNone"> (keiner) </string> - <!-- Asset errors. Used in llassetstorage.cpp, translation from error code to error message. --> <string name="AssetErrorNone"> Kein Fehler </string> @@ -203,10 +181,12 @@ <string name="AssetErrorCircuitGone"> Verbindung verloren </string> + <string name="AssetErrorPriceMismatch"> + Viewer und Server sind sich nicht über Preis einig + </string> <string name="AssetErrorUnknownStatus"> Status unbekannt </string> - <!-- llvoavatar. Displayed in the avatar's chat bubble --> <string name="AvatarEditingApparance"> (Aussehen wird bearbeitet) </string> @@ -219,7 +199,6 @@ <string name="AvatarMuted"> Stummgeschaltet </string> - <!-- animations --> <string name="anim_express_afraid"> Ängstlich </string> @@ -433,11 +412,79 @@ <string name="worldmap_offline"> Offline </string> - <!-- Chat --> <string name="whisper"> flüstert: </string> <string name="shout"> ruft: </string> + <string name="SIM_ACCESS_PG"> + PG + </string> + <string name="SIM_ACCESS_MATURE"> + Mature + </string> + <string name="SIM_ACCESS_ADULT"> + Adult + </string> + <string name="SIM_ACCESS_DOWN"> + Offline + </string> + <string name="SIM_ACCESS_MIN"> + Unbekannt + </string> + <string name="land_type_unknown"> + (unbekannt) + </string> + <string name="covenant_never_modified"> + Zuletzt geändert: (nie) + </string> + <string name="covenant_modified"> + Zuletzt geändert: + </string> + <string name="all_files"> + Alle Dateien + </string> + <string name="sound_files"> + Sounds + </string> + <string name="animation_files"> + Animationen + </string> + <string name="image_files"> + Bilder + </string> + <string name="save_file_verb"> + Speichern + </string> + <string name="load_file_verb"> + Laden + </string> + <string name="targa_image_files"> + Targa-Bilder + </string> + <string name="bitmap_image_files"> + Bitmap-Bilder + </string> + <string name="avi_movie_file"> + AVI-Filmdatei + </string> + <string name="xaf_animation_file"> + XAF Anim-Datei + </string> + <string name="xml_file"> + XML-Datei + </string> + <string name="dot_raw_file"> + RAW-Datei + </string> + <string name="compressed_image_files"> + Komprimierte Bilder + </string> + <string name="load_files"> + Dateien laden + </string> + <string name="choose_the_directory"> + Verzeichnis auswählen + </string> </strings> diff --git a/indra/newview/skins/default/xui/de/teleport_strings.xml b/indra/newview/skins/default/xui/de/teleport_strings.xml index 7d1a154310a4c5b75d585a6324b82ef20e5859e7..31f92dc920b382e8f9fe1492ec6e88d29f7efc31 100644 --- a/indra/newview/skins/default/xui/de/teleport_strings.xml +++ b/indra/newview/skins/default/xui/de/teleport_strings.xml @@ -2,21 +2,16 @@ <teleport_messages name=""> <message_set name="errors"> <message name="invalid_tport"> - Bei der Bearbeitung Ihrer Teleport-Anfrage ist ein Problem aufgetreten. Sie müssen -sich zum Teleportieren eventuell neu anmelden. Wenn Sie diese -Nachricht weiterhin erhalten, konsultieren Sie bitte die Tech-Support-FAQ unter: + Bei der Bearbeitung Ihrer Teleport-Anfrage ist ein Problem aufgetreten. Sie müssen sich zum Teleportieren eventuell neu anmelden. Wenn Sie diese Nachricht weiterhin erhalten, konsultieren Sie bitte die Tech-Support-FAQ unter: www.secondlife.com/support </message> <message name="invalid_region_handoff"> - Bei der Bearbeitung Ihres Regionswechsels ist ein Problem aufgetreten. Sie müssen -sich zum Wechsel der Region eventuell neu anmelden. Wenn Sie diese -Nachricht weiterhin erhalten, konsultieren Sie bitte die Tech-Support-FAQ unter: -www.secondlife.com/support. + Bei der Bearbeitung Ihres Regionswechsels ist ein Problem aufgetreten. Sie müssen sich zum Wechsel der Region eventuell neu anmelden. Wenn Sie diese Nachricht weiterhin erhalten, konsultieren Sie bitte die Tech-Support-FAQ unter: +www.secondlife.com/support </message> <message name="blocked_tport"> Teleportieren ist zurzeit leider nicht möglich. Versuchen Sie es später noch einmal. -Wenn der Teleport dann immer noch nicht funktioniert, melden Sie -sich bitte ab und wieder an. +Wenn der Teleport dann immer noch nicht funktioniert, melden Sie sich bitte ab und wieder an. </message> <message name="nolandmark_tport"> Das System konnte das Landmarken-Ziel nicht finden. @@ -29,27 +24,20 @@ Versuchen Sie es später noch einmal. Sie haben leider keinen Zugang zu diesem Teleport-Ziel. </message> <message name="missing_attach_tport"> - Ihre Anhänge sind noch nicht eingetroffen. Warten Sie kurz -oder melden Sie sich ab und wieder an, bevor Sie einen neuen -Teleport-Versuch unternehmen. + Ihre Anhänge sind noch nicht eingetroffen. Warten Sie kurz oder melden Sie sich ab und wieder an, bevor Sie einen neuen Teleport-Versuch unternehmen. </message> <message name="too_many_uploads_tport"> Die Asset-Warteschlange in dieser Region ist zurzeit überlastet. -Ihre Teleport-Anfrage kann nicht sofort bearbeitet werden. Versuchen Sie es -in einigen Minuten erneut oder besuchen Sie eine weniger überfüllte Region. +Ihre Teleport-Anfrage kann nicht sofort bearbeitet werden. Versuchen Sie es in einigen Minuten erneut oder besuchen Sie eine weniger überfüllte Region. </message> <message name="expired_tport"> - Das System konnte Ihre Teleport-Anfrage nicht -rechtzeitig bearbeiten. Versuchen Sie es in einigen Minuten erneut. + Das System konnte Ihre Teleport-Anfrage nicht rechtzeitig bearbeiten. Versuchen Sie es in einigen Minuten erneut. </message> <message name="expired_region_handoff"> - Das System konnte Ihre Anfrage zum Regionswechsel nicht -rechtzeitig bearbeiten. Versuchen Sie es in einigen Minuten erneut. + Das System konnte Ihre Anfrage zum Regionswechsel nicht rechtzeitig bearbeiten. Versuchen Sie es in einigen Minuten erneut. </message> <message name="no_host"> - Teleport-Ziel wurde nicht gefunden. Das Ziel ist -entweder im Moment nicht verfügbar oder existiert nicht mehr. Versuchen Sie es -in einigen Minuten erneut. + Teleport-Ziel wurde nicht gefunden. Das Ziel ist entweder im Moment nicht verfügbar oder existiert nicht mehr. Versuchen Sie es in einigen Minuten erneut. </message> <message name="no_inventory_host"> Das Inventarsystem ist zurzeit nicht verfügbar. diff --git a/indra/newview/skins/default/xui/en/accordion_parent.xml b/indra/newview/skins/default/xui/en/accordion_parent.xml new file mode 100644 index 0000000000000000000000000000000000000000..632752b1c43f6072f4b73082d8ee8d058264754b --- /dev/null +++ b/indra/newview/skins/default/xui/en/accordion_parent.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> + <panel border_thickness="2" name="splitter_parent" + can_resize="true" background_visible="true" + label="splitter_parent" + title="" + > + </panel> diff --git a/indra/newview/skins/default/xui/en/floater_about.xml b/indra/newview/skins/default/xui/en/floater_about.xml new file mode 100644 index 0000000000000000000000000000000000000000..f52c5d617553fc178ce3fc8e36f73412d9cb62a0 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_about.xml @@ -0,0 +1,117 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + height="440" + layout="topleft" + name="floater_about" + save_rect="true" + title="About [SECOND_LIFE_VIEWER]" + width="470"> + <floater.string + name="you_are_at"> + You are at [POSITION] + </floater.string> + <floater.string + name="in_region"> + in [REGION] located at + </floater.string> + <floater.string + name="CPU"> + CPU: + </floater.string> + <floater.string + name="Memory"> + Memory: [MEM] MB + </floater.string> + <floater.string + name="OSVersion"> + OS Version: + </floater.string> + <floater.string + name="GraphicsCardVendor"> + Graphics Card Vendor: + </floater.string> + <floater.string + name="GraphicsCard"> + Graphics Card: + </floater.string> + <floater.string + name="OpenGLVersion"> + OpenGL Version: + </floater.string> + <floater.string + name="LibCurlVersion"> + libcurl Version: + </floater.string> + <floater.string + name="J2CDecoderVersion"> + J2C Decoder Version: + </floater.string> + <floater.string + name="AudioDriverVersion"> + Audio Driver Version: + </floater.string> + <floater.string + name="none"> + (none) + </floater.string> + <floater.string + name="LLMozLibVersion"> + LLMozLib Version: + </floater.string> + <floater.string + name="PacketsLost"> + Packets Lost: [LOST]/[IN] ([PCT]%) + </floater.string> + <text_editor + type="string" + length="1" + follows="left|top|right|bottom" + height="168" + layout="topleft" + left="6" + max_length="65536" + name="credits_editor" + top="266" + width="458" + word_wrap="true"> + Second Life is brought to you by Philip, Tessa, Andrew, Cory, James, Ben, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Eve, Hunter, Ian, Jeff, Jennifer, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Avi, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, Bill, Todd, Ryan, Zach, Sarah, Nova, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Ventrella, Jack, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Teeny, Monroe, Icculus, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Satoko, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Mogura, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Rohn, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, Katie, Dawn, Katt, Dusty, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Vidtuts, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, Ann, Meredith, Clare, Joy, Praveen, Cody, Edmund, Ruthe, Sirena, Gayathri, Spider, FJ, Davidoff, Tian, Jennie, Louise, Oskar, Landon, Noelle, Jarv, Ingrid, Al, Sommer, Doc, Aria, Huin, Gray, Lili, Vir, DJ, Yang, T, Simone, Maestro, Scott, Charlene, Quixote, Amanda, Susan, Zed, Anne, Enkidu, Esbee, Joroan, Katelin, Roxie, Tay, Scarlet, Kevin, Johnny, Wolfgang, Andren, Bob, Howard, Merov, Rand, Ray, Michon, Newell, Galen, Dessie, Les and many others. + + Thank you to the following residents for helping to ensure that this is the best version yet: (in progress) + + 3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion + APR Copyright (C) 2000-2004 The Apache Software Foundation + cURL Copyright (C) 1996-2002, Daniel Stenberg, (daniel@haxx.se) + DBus/dbus-glib Copyright (C) 2002, 2003 CodeFactory AB / Copyright (C) 2003, 2004 Red Hat, Inc. + expat Copyright (C) 1998, 1999, 2000 Thai Open Source Software Center Ltd. + FreeType Copyright (C) 1996-2002, The FreeType Project (www.freetype.org). + GL Copyright (C) 1999-2004 Brian Paul. + Havok.com(TM) Copyright (C) 1999-2001, Telekinesys Research Limited. + jpeg2000 Copyright (C) 2001, David Taubman, The University of New South Wales (UNSW) + jpeglib Copyright (C) 1991-1998, Thomas G. Lane. + ogg/vorbis Copyright (C) 2001, Xiphophorus + OpenSSL Copyright (C) 1998-2002 The OpenSSL Project. + SDL Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga + SSLeay Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + xmlrpc-epi Copyright (C) 2000 Epinions, Inc. + zlib Copyright (C) 1995-2002 Jean-loup Gailly and Mark Adler. + google-perftools Copyright (c) 2005, Google Inc. + + All rights reserved. See licenses.txt for details. + + Voice chat Audio coding: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C) + + + To be a success in business, be daring, be first, be different. --Henry Marchant + </text_editor> + <text_editor + follows="left|top|right|bottom" + font="SansSerif" + height="238" + layout="topleft" + left_delta="0" + max_length="65536" + name="support_editor" + top_delta="-244" + width="458" + word_wrap="true" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_about_land.xml b/indra/newview/skins/default/xui/en/floater_about_land.xml new file mode 100644 index 0000000000000000000000000000000000000000..3563780f8b41c1870085f9a9f46326da15919182 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_about_land.xml @@ -0,0 +1,2139 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_tear_off="false" + height="420" + layout="topleft" + name="floaterland" + save_rect="true" + title="About Land" + width="460"> + <floater.string + name="Minutes"> + [MINUTES] minutes + </floater.string> + <floater.string + name="Minute"> + minute + </floater.string> + <floater.string + name="Seconds"> + [SECONDS] seconds + </floater.string> + <floater.string + name="Remaining"> + remaining + </floater.string> + <tab_container + follows="left|top|right|bottom" + height="400" + layout="topleft" + left="1" + name="landtab" + tab_position="top" + top="20" + width="459"> + <panel + border="true" + follows="left|top|right|bottom" + height="380" + label="General" + layout="topleft" + left="1" + name="land_general_panel" + top="-31" + width="458"> + <panel.string + name="new users only"> + New users only + </panel.string> + <panel.string + name="anyone"> + Anyone + </panel.string> + <panel.string + name="area_text"> + Area + </panel.string> + <panel.string + name="area_size_text"> + [AREA] sq.m. + </panel.string> + <panel.string + name="auction_id_text"> + Auction ID: [ID] + </panel.string> + <panel.string + name="need_tier_to_modify"> + You must approve your purchase to modify this land. + </panel.string> + <panel.string + name="group_owned_text"> + (Group Owned) + </panel.string> + <panel.string + name="profile_text"> + Profile... + </panel.string> + <panel.string + name="info_text"> + Info... + </panel.string> + <panel.string + name="public_text"> + (public) + </panel.string> + <panel.string + name="none_text"> + (none) + </panel.string> + <panel.string + name="sale_pending_text"> + (Sale Pending) + </panel.string> + <panel.string + name="no_selection_text"> + No parcel selected. +Go to World menu > About Land or select another parcel to show its details. + </panel.string> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="4" + name="Name:" + top="4" + width="92"> + Name: + </text> + <line_editor + border_style="line" + border_thickness="1" + follows="left|top|right" + height="16" + layout="topleft" + left_pad="2" + max_length="63" + name="Name" + top_delta="0" + width="350" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="4" + name="Description:" + top="24" + width="100"> + Description: + </text> + <text_editor + bevel_style="in" + border_style="line" + border_thickness="1" + follows="left|top|right" + height="52" + layout="topleft" + left_delta="92" + name="Description" + top_delta="0" + width="350" + word_wrap="true" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="4" + name="LandType" + top="84" + width="92"> + Type: + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_delta="92" + name="LandTypeText" + top_delta="0" + width="250"> + Mainland / Homestead + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="4" + name="ContentRating" + top="104" + width="92"> + Rating: + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_delta="92" + name="ContentRatingText" + top_delta="0" + width="250"> + Adult + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="4" + name="Owner:" + top="124" + width="92"> + Owner: + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_delta="92" + name="OwnerText" + top_delta="0" + width="250"> + Leyla Linden + </text> + <button + follows="left|top" + font="SansSerifSmall" + height="16" + label="Profile..." + label_selected="Profile..." + layout="topleft" + left_pad="4" + name="Profile..." + top_delta="0" + width="90" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="4" + name="Group:" + top="144" + width="92"> + Group: + </text> + <text + enabled="false" + follows="left|top" + height="16" + layout="topleft" + left_delta="92" + name="GroupText" + top_delta="2" + width="250" /> + <button + follows="left|top" + font="SansSerifSmall" + height="16" + label="Set..." + label_selected="Set..." + layout="topleft" + left_pad="4" + name="Set..." + top_delta="-2" + width="90" /> + <check_box + enabled="false" + height="16" + label="Allow Deed to Group" + layout="topleft" + left="96" + name="check deed" + tool_tip="A group officer can deed this land to the group, so it will be supported by the group&apos;s land allocation." + top="164" + width="116" /> + <button + enabled="false" + follows="left|top" + font="SansSerifSmall" + height="16" + label="Deed..." + label_selected="Deed..." + layout="topleft" + left_pad="138" + name="Deed..." + tool_tip="You may only deed land if you are an officer in the selected group." + top_delta="0" + width="90" /> + <check_box + enabled="false" + height="16" + label="Owner Makes Contribution With Deed" + layout="topleft" + left="96" + name="check contrib" + tool_tip="When the land is deeded to the group, the former owner contributes enough land allocation to support it." + top="184" + width="199" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="4" + name="For Sale:" + top="204" + width="92"> + For Sale: + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_delta="92" + name="Not for sale." + top_delta="0" + width="186"> + Not for sale. + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_delta="0" + name="For Sale: Price L$[PRICE]." + top_delta="0" + width="226"> + Price: L$[PRICE] (L$[PRICE_PER_SQM]/sq.m.). + </text> + <text + enabled="false" + follows="left|top" + height="16" + layout="topleft" + left_delta="0" + name="SalePending" + top_pad="4" + width="344" /> + <button + follows="left|top" + height="20" + label="Sell Land..." + label_selected="Sell Land..." + layout="topleft" + left_delta="199" + name="Sell Land..." + top_delta="0" + width="145" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_delta="-199" + name="For sale to" + top_delta="0" + width="186"> + For sale to: [BUYER] + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_delta="0" + name="Sell with landowners objects in parcel." + top_pad="4" + width="186"> + Objects included in sale. + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_delta="0" + name="Selling with no objects in parcel." + top_delta="0" + width="186"> + Objects not included in sale. + </text> + <button + follows="left|top" + height="20" + label="Cancel Land Sale" + label_selected="Cancel Land Sale" + layout="topleft" + left="295" + name="Cancel Land Sale" + top="228" + width="145" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="4" + name="Claimed:" + top="268" + width="92"> + Claimed: + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_delta="92" + name="DateClaimText" + top_delta="0" + width="186"> + Tue Aug 15 13:47:25 2006 + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="4" + name="PriceLabel" + top="288" + width="92"> + Area: + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_delta="92" + name="PriceText" + top_delta="0" + width="186"> + 4048 sq.m. + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="4" + name="Traffic:" + top="308" + width="92"> + Traffic: + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_delta="92" + name="DwellText" + top_delta="0" + width="186"> + 0 + </text> + <button + enabled="false" + follows="left|top" + height="20" + label="Buy Land..." + label_selected="Buy Land..." + layout="topleft" + left="155" + name="Buy Land..." + top="328" + width="100" /> + <button + enabled="false" + follows="left|top" + height="20" + label="Buy For Group..." + label_selected="Buy For Group..." + layout="topleft" + left="260" + name="Buy For Group..." + top="352" + width="180" /> + <button + enabled="false" + follows="left|top" + height="20" + label="Buy Pass..." + label_selected="Buy Pass..." + layout="topleft" + left_delta="-105" + name="Buy Pass..." + tool_tip="A pass gives you temporary access to this land." + top_delta="0" + width="100" /> + <button + follows="left|top" + height="20" + label="Abandon Land..." + label_selected="Abandon Land..." + layout="topleft" + left="260" + name="Abandon Land..." + top="328" + width="180" /> + <button + follows="left|top" + height="20" + label="Reclaim Land..." + label_selected="Reclaim Land..." + layout="topleft" + left_delta="0" + name="Reclaim Land..." + top_delta="-48" + width="180" /> + <button + enabled="false" + follows="left|top" + height="20" + label="Linden Sale..." + label_selected="Linden Sale..." + layout="topleft" + left_delta="0" + name="Linden Sale..." + tool_tip="Land must be owned, set content, and not already for auction." + top_pad="4" + width="180" /> + </panel> + <panel + border="true" + follows="left|top|right|bottom" + height="380" + label="Covenant" + layout="topleft" + left_delta="-1" + name="land_covenant_panel" + top_delta="-47" + width="458"> + <panel.string + name="can_resell"> + Purchased land in this region may be resold. + </panel.string> + <panel.string + name="can_not_resell"> + Purchased land in this region may not be resold. + </panel.string> + <panel.string + name="can_change"> + Purchased land in this region may be joined or subdivided. + </panel.string> + <panel.string + name="can_not_change"> + Purchased land in this region may not be joined or subdivided. + </panel.string> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="20" + layout="topleft" + left="5" + mouse_opaque="false" + name="estate_section_lbl" + top="0" + width="100"> + Estate: + </text> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left="10" + mouse_opaque="false" + name="estate_name_lbl" + top="20" + width="100"> + Name: + </text> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left_pad="10" + mouse_opaque="false" + name="estate_name_text" + top_delta="0" + width="150"> + mainland + </text> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left="10" + mouse_opaque="false" + name="estate_owner_lbl" + top="40" + width="100"> + Owner: + </text> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left_pad="10" + mouse_opaque="false" + name="estate_owner_text" + top_delta="0" + width="150"> + (none) + </text> + <text_editor + type="string" + length="1" + enabled="false" + follows="left|top|right|bottom" + height="115" + layout="topleft" + left_delta="0" + max_length="65535" + name="covenant_editor" + top_delta="20" + width="330" + word_wrap="true"> + There is no Covenant provided for this Estate. + </text_editor> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left_delta="0" + mouse_opaque="false" + name="covenant_timestamp_text" + top_pad="55" + width="250"> + Last Modified Wed Dec 31 16:00:00 1969 + </text> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="20" + layout="topleft" + left="5" + mouse_opaque="false" + name="region_section_lbl" + top="250" + width="100"> + Region: + </text> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left="10" + mouse_opaque="false" + name="region_name_lbl" + top="270" + width="100"> + Name: + </text> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left_pad="10" + mouse_opaque="false" + name="region_name_text" + top_delta="0" + width="150"> + leyla + </text> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left="10" + mouse_opaque="false" + name="region_landtype_lbl" + top="290" + width="100"> + Type: + </text> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left_pad="10" + mouse_opaque="false" + name="region_landtype_text" + top_delta="0" + width="150"> + Mainland / Homestead + </text> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left="10" + mouse_opaque="false" + name="region_maturity_lbl" + top="310" + width="100"> + Rating: + </text> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left_pad="10" + mouse_opaque="false" + name="region_maturity_text" + top_delta="0" + width="150"> + Adult + </text> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left="10" + mouse_opaque="false" + name="resellable_lbl" + top="330" + width="100"> + Resale: + </text> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left_pad="10" + mouse_opaque="false" + name="resellable_clause" + top_delta="0" + width="330"> + Land in this region may not be resold. + </text> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left="10" + mouse_opaque="false" + name="changeable_lbl" + top="350" + width="100"> + Subdivide: + </text> + <text + type="string" + length="1" + follows="left|top" + height="30" + layout="topleft" + left_pad="10" + mouse_opaque="false" + name="changeable_clause" + top_delta="0" + width="330"> + Land in this region may not be joined/subdivided. + </text> + </panel> + <panel + border="true" + follows="left|top|right|bottom" + height="380" + label="Objects" + layout="topleft" + left_delta="0" + name="land_objects_panel" + top_delta="-47" + width="458"> + <panel.string + name="objects_available_text"> + [COUNT] out of [MAX] ([AVAILABLE] available) + </panel.string> + <panel.string + name="objects_deleted_text"> + [COUNT] out of [MAX] ([DELETED] will be deleted) + </panel.string> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="4" + name="parcel_object_bonus" + top="4" + visible="false" + width="364"> + Region Object Bonus Factor: [BONUS] + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_delta="0" + name="Simulator primitive usage:" + top_pad="4" + width="364"> + Simulator primitive usage: + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_delta="152" + name="objects_available" + top_delta="0" + width="212"> + [COUNT] out of [MAX] ([AVAILABLE] available) + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="4" + name="Primitives parcel supports:" + top="44" + width="152"> + Primitives parcel supports: + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_delta="152" + name="object_contrib_text" + top_delta="0" + width="212"> + [COUNT] + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="4" + name="Primitives on parcel:" + top="64" + width="152"> + Primitives on parcel: + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_delta="152" + name="total_objects_text" + top_delta="0" + width="48"> + [COUNT] + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="28" + name="Owned by parcel owner:" + top="84" + width="128"> + Owned by parcel owner: + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_delta="128" + name="owner_objects_text" + top_delta="0" + width="48"> + [COUNT] + </text> + <button + bottom="100" + enabled="false" + follows="left|top" + font="SansSerifSmall" + height="16" + label="Show" + label_selected="Show" + layout="topleft" + name="ShowOwner" + right="-190" + width="60" /> + <button + bottom="100" + enabled="false" + follows="left|top" + font="SansSerifSmall" + height="16" + label="Return..." + label_selected="Return..." + layout="topleft" + name="ReturnOwner..." + right="-60" + tool_tip="Return objects to their owners." + width="119" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="28" + name="Set to group:" + top="104" + width="128"> + Set to group: + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_delta="128" + name="group_objects_text" + top_delta="0" + width="48"> + [COUNT] + </text> + <button + bottom="120" + enabled="false" + follows="left|top" + font="SansSerifSmall" + height="16" + label="Show" + label_selected="Show" + layout="topleft" + name="ShowGroup" + right="-190" + width="60" /> + <button + bottom="120" + enabled="false" + follows="left|top" + font="SansSerifSmall" + height="16" + label="Return..." + label_selected="Return..." + layout="topleft" + name="ReturnGroup..." + right="-60" + tool_tip="Return objects to their owners." + width="119" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="28" + name="Owned by others:" + top="124" + width="128"> + Owned by others: + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_delta="128" + name="other_objects_text" + top_delta="0" + width="48"> + [COUNT] + </text> + <button + bottom="140" + enabled="false" + follows="left|top" + font="SansSerifSmall" + height="16" + label="Show" + label_selected="Show" + layout="topleft" + name="ShowOther" + right="-190" + width="60" /> + <button + bottom="140" + enabled="false" + follows="left|top" + font="SansSerifSmall" + height="16" + label="Return..." + label_selected="Return..." + layout="topleft" + name="ReturnOther..." + right="-60" + tool_tip="Return objects to their owners." + width="119" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="28" + name="Selected / sat upon:" + top="144" + width="128"> + Selected / sat upon: + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_delta="128" + name="selected_objects_text" + top_delta="0" + width="48"> + [COUNT] + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="4" + name="Autoreturn" + top="164" + width="294"> + Autoreturn other residents' objects (minutes, 0 for off): + </text> + <line_editor + border_style="line" + border_thickness="1" + bottom="180" + follows="left|top" + height="16" + layout="topleft" + max_length="6" + name="clean other time" + right="-100" + width="56" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="4" + name="Object Owners:" + top="184" + width="104"> + Object Owners: + </text> + <button + follows="left|top" + font="SansSerifSmall" + height="16" + label="Refresh List" + label_selected="Refresh List" + layout="topleft" + left_delta="104" + name="Refresh List" + top_delta="0" + width="106" /> + <button + enabled="false" + follows="left|top" + font="SansSerifSmall" + height="16" + label="Return objects..." + label_selected="Return objects..." + layout="topleft" + left_pad="6" + name="Return objects..." + top_delta="0" + width="164" /> + <name_list + column_padding="0" + draw_heading="true" + follows="left|top|right|bottom" + height="165" + layout="topleft" + left="4" + name="owner list" + name_column="name" + top="210" + width="450"> + <name_list.columns + label="Type" + name="type" + sort_column="online_status" + width="24" /> + <name_list.columns + name="online_status" + width="-1" /> + <name_list.columns + dynamicwidth="true" + label="Name" + name="name" /> + <name_list.columns + label="Count" + name="count" + width="70" /> + <name_list.columns + label="Most Recent" + name="mostrecent" + width="160" /> + </name_list> + </panel> + <panel + border="true" + follows="left|top|right|bottom" + height="333" + label="Options" + layout="topleft" + left_delta="0" + name="land_options_panel" + top_delta="31" + width="458"> + <panel.string + name="search_enabled_tooltip"> + Let people see this parcel in search results + </panel.string> + <panel.string + name="search_disabled_small_tooltip"> + This option is disabled because this parcel's area is 128 sq.m. or smaller. +Only large parcels can be listed in search. + </panel.string> + <panel.string + name="search_disabled_permissions_tooltip"> + This option is disabled because you cannot modify this parcel's options. + </panel.string> + <panel.string + name="mature_check_mature"> + Mature Content + </panel.string> + <panel.string + name="mature_check_adult"> + Adult Content + </panel.string> + <panel.string + name="mature_check_mature_tooltip"> + Your parcel information or content is considered mature. + </panel.string> + <panel.string + name="mature_check_adult_tooltip"> + Your parcel information or content is considered adult. + </panel.string> + <panel.string + name="landing_point_none"> + (none) + </panel.string> + <panel.string + name="push_restrict_text"> + No Pushing + </panel.string> + <panel.string + name="push_restrict_region_text"> + No Pushing (Region Override) + </panel.string> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="4" + name="allow_label" + top="4" + width="278"> + Allow other residents to: + </text> + <check_box + height="16" + label="Edit Terrain" + layout="topleft" + left="14" + name="edit land check" + tool_tip="If checked, anyone can terraform your land. It is best to leave this unchecked, as you can always edit your own land." + top="24" + width="268" /> + <check_box + height="16" + label="Create Landmarks" + layout="topleft" + left_delta="0" + name="check landmark" + top_pad="4" + width="268" /> + <check_box + height="16" + label="Fly" + layout="topleft" + left_delta="0" + name="check fly" + tool_tip="If checked, Residents can fly on your land. If unchecked, they can only fly into and over your land." + top_pad="4" + width="268" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="178" + name="allow_label2" + top="24" + width="104"> + Create Objects: + </text> + <check_box + height="16" + label="All Residents" + layout="topleft" + left_delta="92" + name="edit objects check" + top_delta="0" + width="104" /> + <check_box + height="16" + label="Group" + layout="topleft" + left_delta="100" + name="edit group objects check" + top_delta="0" + width="70" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="178" + name="allow_label3" + top="44" + width="124"> + Object Entry: + </text> + <check_box + height="16" + label="All Residents" + layout="topleft" + left_delta="92" + name="all object entry check" + top_delta="0" + width="120" /> + <check_box + height="16" + label="Group" + layout="topleft" + left_delta="100" + name="group object entry check" + top_delta="0" + width="70" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="178" + name="allow_label4" + top="64" + width="124"> + Run Scripts: + </text> + <check_box + height="16" + label="All Residents" + layout="topleft" + left_delta="92" + name="check other scripts" + top_delta="0" + width="120" /> + <check_box + height="16" + label="Group" + layout="topleft" + left_delta="100" + name="check group scripts" + top_delta="0" + width="70" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="4" + name="land_options_label" + top="84" + width="278"> + Land Options: + </text> + <check_box + height="16" + label="Safe (no damage)" + layout="topleft" + left="14" + name="check safe" + tool_tip="If checked, sets the land to Safe, disabling damage combat. If cleared, damage combat is enabled." + top="104" + width="268" /> + <check_box + height="16" + label="No Pushing" + layout="topleft" + left_delta="164" + name="PushRestrictCheck" + tool_tip="Prevents scripts from pushing. Checking this option may be useful for preventing disruptive behavior on your land." + top_delta="0" + width="119" /> + <check_box + height="16" + label="Show Place in Search (L$30/week) under" + layout="topleft" + left="14" + name="ShowDirectoryCheck" + tool_tip="Let people see this parcel in search results" + top="124" + width="268" /> + <combo_box + enabled="false" + height="18" + layout="topleft" + left_delta="241" + name="land category with adult" + top_delta="-2" + visible="false" + width="130"> + <combo_box.item + label="Any Category" + value="any" /> + <combo_box.item + label="Linden Location" + value="linden" /> + <combo_box.item + label="Adult" + value="adult" /> + <combo_box.item + label="Arts & Culture" + value="arts" /> + <combo_box.item + label="Business" + value="store" /> + <combo_box.item + label="Educational" + value="educational" /> + <combo_box.item + label="Gaming" + value="game" /> + <combo_box.item + label="Hangout" + value="gather" /> + <combo_box.item + label="Newcomer Friendly" + value="newcomer" /> + <combo_box.item + label="Parks & Nature" + value="park" /> + <combo_box.item + label="Residential" + value="home" /> + <combo_box.item + label="Shopping" + value="shopping" /> + <combo_box.item + label="Other" + value="other" /> + </combo_box> + <combo_box + enabled="false" + height="18" + layout="topleft" + left_delta="0" + name="land category" + top_delta="0" + visible="false" + width="130"> + <combo_box.item + label="Any Category" + value="any" /> + <combo_box.item + label="Linden Location" + value="linden" /> + <combo_box.item + label="Arts & Culture" + value="arts" /> + <combo_box.item + label="Business" + value="store" /> + <combo_box.item + label="Educational" + value="educational" /> + <combo_box.item + label="Gaming" + value="game" /> + <combo_box.item + label="Hangout" + value="gather" /> + <combo_box.item + label="Newcomer Friendly" + value="newcomer" /> + <combo_box.item + label="Parks & Nature" + value="park" /> + <combo_box.item + label="Residential" + value="home" /> + <combo_box.item + label="Shopping" + value="shopping" /> + <combo_box.item + label="Other" + value="other" /> + </combo_box> + <button + follows="left|top" + height="18" + label="?" + label_selected="?" + layout="topleft" + left_pad="15" + name="?" + top_delta="0" + width="18" /> + <check_box + height="16" + label="Mature Content" + layout="topleft" + left="14" + name="MatureCheck" + tool_tip=" " + top="144" + width="107" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="4" + name="Snapshot:" + top="164" + width="278"> + Snapshot: + </text> + <texture_picker + follows="left|top" + height="135" + layout="topleft" + left_delta="72" + name="snapshot_ctrl" + tool_tip="Click to choose a picture" + top_delta="0" + width="180" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="4" + name="landing_point" + top="287" + width="278"> + Landing Point: [LANDING] + </text> + <button + follows="left|top" + font="SansSerifSmall" + height="16" + label="Set" + label_selected="Set" + layout="topleft" + left_delta="232" + name="Set" + tool_tip="Sets the landing point where visitors arrive. Sets to your avatar's location inside this parcel." + top_delta="0" + width="50" /> + <button + follows="left|top" + font="SansSerifSmall" + height="16" + label="Clear" + label_selected="Clear" + layout="topleft" + left_pad="5" + name="Clear" + tool_tip="Clear the landing point." + top_delta="0" + width="50" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="4" + name="Teleport Routing: " + top="307" + width="278"> + Teleport Routing: + </text> + <combo_box + height="18" + layout="topleft" + left_delta="116" + name="landing type" + tool_tip="Teleport Routing -- select how to handle teleports onto your land." + top_delta="0" + width="120"> + <combo_box.item + enabled="true" + label="Blocked" + value="Blocked" /> + <combo_box.item + enabled="true" + label="Landing Point" + value="Landing Point" /> + <combo_box.item + enabled="true" + label="Anywhere" + value="Anywhere" /> + </combo_box> + </panel> + <panel + border="true" + follows="left|top|right|bottom" + height="363" + label="Media" + layout="topleft" + left_delta="0" + name="land_media_panel" + top_delta="1" + width="458"> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="10" + name="with media:" + top="9" + width="65"> + Media Type: + </text> + <combo_box + height="18" + layout="topleft" + left_pad="5" + name="media type" + tool_tip="Specify if the URL is a movie, web page, or other media" + top_delta="-2" + width="120" /> + <text + follows="left|top" + height="16" + layout="topleft" + left_pad="10" + name="mime_type" + top_delta="2" + width="200" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="10" + name="at URL:" + top="29" + width="65"> + Media URL: + </text> + <line_editor + bottom_delta="0" + follows="left|top" + height="16" + layout="topleft" + left="80" + max_length="255" + name="media_url" + right="-80" + select_on_focus="true" + text_readonly_color="0.576471 0.662745 0.835294 1" /> + <button + follows="left|top" + font="SansSerifSmall" + height="16" + label="Set..." + label_selected="Set..." + layout="topleft" + left_pad="8" + name="set_media_url" + top_delta="0" + width="60" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="10" + name="Description:" + top="49" + width="364"> + Description: + </text> + <line_editor + border_style="line" + border_thickness="1" + bottom_delta="0" + follows="left|top" + height="16" + layout="topleft" + left="80" + max_length="255" + name="url_description" + right="-80" + select_on_focus="true" + tool_tip="Text displayed next to play/load button" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="10" + name="Media texture:" + top="69" + width="364"> + Replace +Texture: + </text> + <texture_picker + allow_no_texture="true" + default_image_name="Default" + follows="left|top" + height="80" + layout="topleft" + left_delta="70" + name="media texture" + tool_tip="Click to choose a picture" + top_delta="0" + width="64" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_delta="75" + name="replace_texture_help" + top="85" + width="270"> + (Objects using this texture will show the movie or +web page after you click the play arrow.) + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="10" + name="Options:" + top="140" + width="292"> + Media +Options: + </text> + <check_box + height="16" + label="Auto scale" + layout="topleft" + left_delta="70" + name="media_auto_scale" + tool_tip="Checking this option will scale the content for this parcel automatically. It may be slightly slower and lower quality visually but no other texture scaling or alignment will be required." + top_delta="0" + width="200" /> + <check_box + height="16" + label="Loop Media" + layout="topleft" + left_delta="170" + name="media_loop" + tool_tip="Play media in a loop. When the media has finished playing, it will restart from the beginning." + top_delta="0" + width="200" /> + <check_box + height="16" + label="Hide Media URL" + layout="topleft" + left="80" + name="hide_media_url" + tool_tip="Checking this option will hide the media url to any non-authorized viewers of this parcel information. Note this is not available for HTML types." + top="160" + width="200" /> + <check_box + height="16" + label="Hide Music URL" + layout="topleft" + left_delta="170" + name="hide_music_url" + tool_tip="Checking this option will hide the music url to any non-authorized viewers of this parcel information" + top_delta="0" + width="200" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="85" + name="media_size" + tool_tip="Size to render Web media, leave 0 for default." + top="185" + width="85"> + Media size: + </text> + <spinner + decimal_digits="0" + enabled="false" + follows="left|top" + halign="right" + height="16" + increment="1" + initial_value="0" + layout="topleft" + left_delta="65" + max_val="1024" + name="media_size_width" + tool_tip="Size to render Web media, leave 0 for default." + top_delta="0" + width="64" /> + <spinner + decimal_digits="0" + enabled="false" + follows="left|top" + halign="right" + height="16" + increment="1" + initial_value="0" + layout="topleft" + left_pad="16" + max_val="1024" + name="media_size_height" + tool_tip="Size to render Web media, leave 0 for default." + top_delta="0" + width="64" /> + <text + type="string" + length="1" + bottom_delta="0" + follows="left|top" + height="16" + layout="topleft" + left_delta="70" + name="pixels" + right="-10"> + pixels + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="10" + name="MusicURL:" + top="225" + width="364"> + Music URL: + </text> + <line_editor + border_style="line" + border_thickness="1" + bottom_delta="0" + follows="left|top" + height="16" + layout="topleft" + left="80" + max_length="255" + name="music_url" + right="-15" + select_on_focus="true" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="10" + name="Sound:" + top="265" + width="364"> + Sound: + </text> + <check_box + height="16" + label="Restrict gesture and object sounds to this parcel" + layout="topleft" + left_delta="70" + name="check sound local" + top_delta="0" + width="292" /> + <button + follows="left|top" + height="18" + label="?" + label_selected="?" + layout="topleft" + left_delta="292" + name="?" + top_delta="-2" + width="18" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="10" + mouse_opaque="false" + name="Voice settings:" + top="305" + width="364"> + Voice: + </text> + <check_box + height="54" + label="Enable Voice" + layout="topleft" + left="80" + name="parcel_enable_voice_channel" + top="267" + width="463" /> + <check_box + enabled="false" + height="54" + label="Enable Voice (established by the Estate)" + layout="topleft" + left_delta="0" + name="parcel_enable_voice_channel_is_estate_disabled" + top_delta="0" + width="463" /> + <check_box + height="54" + label="Restrict Voice to this parcel" + layout="topleft" + left="100" + name="parcel_enable_voice_channel_parcel" + top="287" + width="443" /> + </panel> + <panel + border="true" + follows="left|top|right|bottom" + height="333" + label="Access" + layout="topleft" + left_delta="0" + name="land_access_panel" + top_delta="31" + width="458"> + <panel.string + name="estate_override"> + One or more of these options is set at the estate level + </panel.string> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="20" + layout="topleft" + left="8" + name="Limit access to this parcel to:" + top="4" + width="278"> + Access To This Parcel + </text> + <check_box + follows="top|left" + height="16" + label="Allow Public Access" + layout="topleft" + left_delta="0" + name="public_access" + top_pad="5" + width="278" /> + <text + type="string" + length="1" + follows="top|left" + height="16" + layout="topleft" + left_delta="20" + name="Only Allow" + top="49" + width="278"> + Block Access By: + </text> + <check_box + follows="top|left" + height="16" + label="Residents who have not given payment info to Linden Lab" + layout="topleft" + left_delta="0" + name="limit_payment" + tool_tip="Ban unidentified residents." + top_pad="4" + width="278" /> + <check_box + follows="top|left" + height="16" + label="Residents who are not age verified adults" + layout="topleft" + left_delta="0" + name="limit_age_verified" + tool_tip="Ban residents who have not verified their age. See support.secondlife.com for more information." + top_pad="4" + width="278" /> + <check_box + height="16" + label="Allow Group Access: [GROUP]" + layout="topleft" + left="8" + name="GroupCheck" + tool_tip="Set group in the General tab." + top="109" + width="278" /> + <check_box + enabled="false" + height="16" + label="Sell passes to:" + layout="topleft" + left_delta="0" + name="PassCheck" + tool_tip="Allows temporary access to this parcel" + top_pad="4" + width="120" /> + <combo_box + height="16" + layout="topleft" + left_pad="22" + name="pass_combo" + top_delta="0" + width="100"> + <combo_box.item + label="Anyone" + value="anyone" /> + <combo_box.item + label="Group" + value="group" /> + </combo_box> + <spinner + enabled="false" + follows="left|top" + height="16" + increment="1" + initial_value="10" + label="Price in L$:" + label_width="120" + layout="topleft" + left="28" + max_val="500" + min_val="1" + name="PriceSpin" + top="149" + width="180" /> + <spinner + enabled="false" + follows="left|top" + height="16" + increment="0.25" + initial_value="1" + label="Hours of access:" + label_width="120" + layout="topleft" + left_delta="0" + max_val="24" + min_val="0.01" + name="HoursSpin" + top_pad="4" + width="180" /> + <text + type="string" + length="1" + follows="left|right|top" + height="16" + label="Always Allow" + layout="topleft" + left="20" + name="AllowedText" + top="204" + width="195"> + Allowed Residents + </text> + <name_list + column_padding="0" + follows="top|bottom" + heading_height="14" + height="80" + layout="topleft" + left_delta="0" + multi_select="true" + name="AccessList" + tool_tip="([LISTED] listed, [MAX] max)" + top_pad="4" + width="195" /> + <button + follows="bottom" + font="SansSerifSmall" + height="16" + label="Add..." + label_selected="Add..." + layout="topleft" + left_delta="5" + name="add_allowed" + top="308" + width="80" /> + <button + follows="bottom" + font="SansSerifSmall" + height="16" + label="Remove" + label_selected="Remove" + layout="topleft" + left_pad="20" + name="remove_allowed" + top_delta="0" + width="80" /> + <text + type="string" + length="1" + follows="left|right|top" + height="16" + label="Ban" + layout="topleft" + left="240" + name="BanCheck" + top="204" + width="195"> + Banned Residents + </text> + <name_list + column_padding="0" + follows="top|bottom" + heading_height="14" + height="80" + layout="topleft" + left_delta="0" + multi_select="true" + name="BannedList" + tool_tip="([LISTED] listed, [MAX] max)" + top_pad="4" + width="195" /> + <button + follows="bottom" + font="SansSerifSmall" + height="16" + label="Add..." + label_selected="Add..." + layout="topleft" + left_delta="5" + name="add_banned" + top="308" + width="80" /> + <button + enabled="false" + follows="bottom" + font="SansSerifSmall" + height="16" + label="Remove" + label_selected="Remove" + layout="topleft" + left_pad="20" + name="remove_banned" + top_delta="0" + width="80" /> + </panel> + </tab_container> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_animation_preview.xml b/indra/newview/skins/default/xui/en/floater_animation_preview.xml new file mode 100644 index 0000000000000000000000000000000000000000..59d0d45425cb31f4b93fc52e55d23ed307c19ea1 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_animation_preview.xml @@ -0,0 +1,475 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_minimize="false" + height="556" + layout="topleft" + name="Animation Preview" + width="300"> + <floater.string + name="failed_to_initialize"> + Failed to initialize motion + </floater.string> + <floater.string + name="anim_too_long"> + Animation file is [LENGTH] seconds in length. + +Maximum animation length is [MAX_LENGTH] seconds. + </floater.string> + <floater.string + name="failed_file_read"> + Unable to read animation file. + +[STATUS] + </floater.string> + <floater.string + name="E_ST_OK"> + Ok + </floater.string> + <floater.string + name="E_ST_EOF"> + Premature end of file. + </floater.string> + <floater.string + name="E_ST_NO_CONSTRAINT"> + Cannot read constraint definition. + </floater.string> + <floater.string + name="E_ST_NO_FILE"> + Cannot open BVH file. + </floater.string> + <floater.string + name="E_ST_NO_HIER"> + Invalid HIERARCHY header. + </floater.string> + <floater.string + name="E_ST_NO_JOINT"> + Cannot find ROOT or JOINT. + </floater.string> + <floater.string + name="E_ST_NO_NAME"> + Cannot get JOINT name. + </floater.string> + <floater.string + name="E_ST_NO_OFFSET"> + Cannot find OFFSET. + </floater.string> + <floater.string + name="E_ST_NO_CHANNELS"> + Cannot find CHANNELS. + </floater.string> + <floater.string + name="E_ST_NO_ROTATION"> + Cannot get rotation order. + </floater.string> + <floater.string + name="E_ST_NO_AXIS"> + Cannot get rotation axis. + </floater.string> + <floater.string + name="E_ST_NO_MOTION"> + Cannot find MOTION. + </floater.string> + <floater.string + name="E_ST_NO_FRAMES"> + Cannot get number of frames. + </floater.string> + <floater.string + name="E_ST_NO_FRAME_TIME"> + Cannot get frame time. + </floater.string> + <floater.string + name="E_ST_NO_POS"> + Cannot get position values. + </floater.string> + <floater.string + name="E_ST_NO_ROT"> + Cannot get rotation values. + </floater.string> + <floater.string + name="E_ST_NO_XLT_FILE"> + Cannot open translation file. + </floater.string> + <floater.string + name="E_ST_NO_XLT_HEADER"> + Cannot read translation header. + </floater.string> + <floater.string + name="E_ST_NO_XLT_NAME"> + Cannot read translation names. + </floater.string> + <floater.string + name="E_ST_NO_XLT_IGNORE"> + Cannot read translation ignore value. + </floater.string> + <floater.string + name="E_ST_NO_XLT_RELATIVE"> + Cannot read translation relative value. + </floater.string> + <floater.string + name="E_ST_NO_XLT_OUTNAME"> + Cannot read translation outname value. + </floater.string> + <floater.string + name="E_ST_NO_XLT_MATRIX"> + Cannot read translation matrix. + </floater.string> + <floater.string + name="E_ST_NO_XLT_MERGECHILD"> + Cannot get mergechild name. + </floater.string> + <floater.string + name="E_ST_NO_XLT_MERGEPARENT"> + Cannot get mergeparent name. + </floater.string> + <floater.string + name="E_ST_NO_XLT_PRIORITY"> + Cannot get priority value. + </floater.string> + <floater.string + name="E_ST_NO_XLT_LOOP"> + Cannot get loop value. + </floater.string> + <floater.string + name="E_ST_NO_XLT_EASEIN"> + Cannot get easeIn values. + </floater.string> + <floater.string + name="E_ST_NO_XLT_EASEOUT"> + Cannot get easeOut values. + </floater.string> + <floater.string + name="E_ST_NO_XLT_HAND"> + Cannot get hand morph value. + </floater.string> + <floater.string + name="E_ST_NO_XLT_EMOTE"> + Cannot read emote name. + </floater.string> + <text + type="string" + length="1" + bottom="42" + follows="top|left" + height="15" + layout="topleft" + left="10" + name="name_label"> + Name: + </text> + <line_editor + bottom_delta="2" + follows="top|left|right" + height="19" + layout="topleft" + left="85" + name="name_form" + right="-10" /> + <text + type="string" + length="1" + bottom_delta="22" + follows="top|left" + height="15" + layout="topleft" + left="10" + name="description_label"> + Description: + </text> + <line_editor + bottom_delta="2" + follows="top|left|right" + height="19" + layout="topleft" + left="85" + name="description_form" + right="-10" /> + <spinner + decimal_digits="0" + follows="left|top" + height="18" + increment="1" + initial_value="0" + label="Priority" + label_width="50" + layout="topleft" + left="10" + max_val="4" + name="priority" + tool_tip="Controls which other animations can be overridden by this animation." + width="90" /> + <check_box + bottom_delta="23" + height="18" + label="Loop" + layout="topleft" + left="10" + name="loop_check" + tool_tip="Makes this animation loop." /> + <spinner + follows="left|top" + height="18" + increment="1" + initial_value="0" + label="In(%)" + label_width="30" + layout="topleft" + left_delta="70" + max_val="100" + name="loop_in_point" + tool_tip="Sets point in animation that looping returns to." + top_delta="2" + width="90" /> + <spinner + bottom_delta="0" + follows="left|top" + height="18" + increment="1" + initial_value="0" + label="Out(%)" + layout="topleft" + left="185" + max_val="100" + name="loop_out_point" + tool_tip="Sets point in animation that ends a loop." /> + <text + type="string" + length="1" + bottom_delta="20" + follows="top|left" + height="15" + layout="topleft" + left="10" + name="hand_label"> + Hand Pose + </text> + <combo_box + height="18" + layout="topleft" + left_delta="76" + name="hand_pose_combo" + tool_tip="Controls what hands do during animation." + top_delta="-1" + width="104"> + <combo_box.item + label="Spread" + value="" /> + <combo_box.item + label="Relaxed" + value="Hands_Relaxed" /> + <combo_box.item + label="Point Both" + value="Hands_Point" /> + <combo_box.item + label="Fist" + value="Hands_Fist" /> + <combo_box.item + label="Relaxed Left" + value="Hands_Relaxed_L" /> + <combo_box.item + label="Point Left" + value="Hands_Point_L" /> + <combo_box.item + label="Fist Left" + value="Hands_Fist_L" /> + <combo_box.item + label="Relaxed Right" + value="Hands_Relaxed_R" /> + <combo_box.item + label="Point Right" + value="Hands_Point_R" /> + <combo_box.item + label="Fist Right" + value="Hands_Fist_R" /> + <combo_box.item + label="Salute Right" + value="Hands_Salute_R" /> + <combo_box.item + label="Typing" + value="Hands_Typing" /> + <combo_box.item + label="Peace Right" + value="Hands_Peace_R" /> + </combo_box> + <text + type="string" + length="1" + bottom_delta="22" + follows="top|left" + height="15" + layout="topleft" + left="10" + name="emote_label"> + Expression + </text> + <combo_box + height="18" + layout="topleft" + left_delta="76" + name="emote_combo" + tool_tip="Controls what face does during animation." + top_delta="-1" + width="104"> + <combo_box.item + label="None]" /> + <combo_box.item + label="Aaaaah" /> + <combo_box.item + label="Afraid" /> + <combo_box.item + label="Angry" /> + <combo_box.item + label="Big Smile" /> + <combo_box.item + label="Bored" /> + <combo_box.item + label="Cry" /> + <combo_box.item + label="Disdain" /> + <combo_box.item + label="Embarrassed" /> + <combo_box.item + label="Frown" /> + <combo_box.item + label="Kiss" /> + <combo_box.item + label="Laugh" /> + <combo_box.item + label="Plllppt" /> + <combo_box.item + label="Repulsed" /> + <combo_box.item + label="Sad" /> + <combo_box.item + label="Shrug" /> + <combo_box.item + label="Smile" /> + <combo_box.item + label="Surprise" /> + <combo_box.item + label="Wink" /> + <combo_box.item + label="Worry" /> + </combo_box> + <text + type="string" + length="1" + follows="top|left" + height="15" + layout="topleft" + left="10" + name="preview_label" + top="167" + width="70"> + Preview while + </text> + <combo_box + height="18" + layout="topleft" + left_pad="6" + name="preview_base_anim" + tool_tip="Use this to test your animation behavior while your avatar performs common actions." + top_delta="-1" + width="104"> + <combo_box.item + label="Standing" /> + <combo_box.item + label="Walking" /> + <combo_box.item + label="Sitting" /> + <combo_box.item + label="Flying" /> + </combo_box> + <spinner + follows="left|top" + height="18" + increment="0.01" + initial_value="0" + label="Ease In (sec)" + label_width="65" + layout="topleft" + left="10" + max_val="10" + name="ease_in_time" + tool_tip="Amount of time (in seconds) over which animations blends in." + top="191" + width="125" /> + <spinner + follows="left|top" + height="18" + increment="0.01" + initial_value="0" + label="Ease Out (sec)" + label_width="75" + layout="topleft" + left_pad="15" + max_val="10" + name="ease_out_time" + tool_tip="Amount of time (in seconds) over which animations blends out." + top_delta="0" + width="135" /> + <button + follows="top|right" + height="28" + image_selected="button_anim_play_selected.tga" + image_unselected="button_anim_play.tga" + layout="topleft" + left="10" + name="play_btn" + picture_style="true" + tool_tip="Play/pause your animation." + top="223" + width="28" /> + <button + follows="top|right" + height="28" + image_selected="button_anim_stop_selected.tga" + image_unselected="button_anim_stop.tga" + layout="topleft" + left_pad="4" + name="stop_btn" + picture_style="true" + tool_tip="Stop animation playback" + top_delta="0" + width="28" /> + <slider + bottom_delta="0" + follows="top|right" + height="20" + increment="0.0001" + initial_value="0" + layout="topleft" + left="80" + name="playback_slider" + right="290" + show_text="false" /> + <text + type="string" + length="1" + bottom="306" + follows="top|left" + layout="topleft" + left="10" + name="bad_animation_text"> + Unable to read animation file. + +We recommend BVH files exported from Poser 4. + </text> + <button + bottom="546" + follows="bottom|right" + height="20" + label="Cancel" + layout="topleft" + name="cancel_btn" + right="290" + width="123" /> + <button + follows="bottom|left" + height="20" + label="Upload (L$[AMOUNT])" + layout="topleft" + left_delta="-129" + name="ok_btn" + top_delta="0" + width="123" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_auction.xml b/indra/newview/skins/default/xui/en/floater_auction.xml new file mode 100644 index 0000000000000000000000000000000000000000..076332e062d5a0d45fc5fccacdff5ac9d02a6c99 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_auction.xml @@ -0,0 +1,68 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_resize="true" + height="368" + layout="topleft" + min_height="368" + min_width="420" + name="floater_auction" + title="Start Linden Land Sale" + width="420"> + <floater.string + name="already for sale"> + You cannot auction parcels which are already for sale. + </floater.string> + <icon + bottom="280" + follows="left|right|top|bottom" + layout="topleft" + left="4" + name="snapshot_icon" + right="-4" + top="24" /> + <text + follows="left|right|bottom" + height="16" + layout="topleft" + left_delta="0" + name="parcel_text" + top_pad="12" + width="400" /> + <check_box + control_name="AuctionShowFence" + follows="left|bottom" + height="16" + initial_value="true" + label="Include yellow selection fence" + layout="topleft" + left_delta="0" + name="fence_check" + top_pad="12" + width="199" /> + <button + follows="left|bottom" + height="20" + label="Snapshot" + label_selected="Snapshot" + layout="topleft" + left_delta="0" + name="snapshot_btn" + top_pad="4" + width="96" > + <button.commit_callback + function="ClickSnapshot" /> + </button> + <button + follows="left|bottom" + height="20" + label="OK" + label_selected="OK" + layout="topleft" + left_pad="4" + name="ok_btn" + top_delta="0" + width="48"> + <button.commit_callback + function="ClickOK" /> + </button> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_avatar_picker.xml b/indra/newview/skins/default/xui/en/floater_avatar_picker.xml new file mode 100644 index 0000000000000000000000000000000000000000..001229416064d7ef1f217b884f8cf797cafa2492 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_avatar_picker.xml @@ -0,0 +1,208 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_resize="true" + height="350" + layout="topleft" + min_height="200" + min_width="265" + name="avatarpicker" + title="Choose Resident" + width="265"> + <floater.string + name="not_found"> + '[TEXT]' not found + </floater.string> + <floater.string + name="no_one_near"> + No-one near + </floater.string> + <floater.string + name="no_results"> + No results + </floater.string> + <floater.string + name="searching"> + Searching... + </floater.string> + <tab_container + follows="left|right|top|bottom" + height="300" + layout="topleft" + left="4" + name="ResidentChooserTabs" + tab_position="top" + tab_width="65" + top="20" + width="255"> + <panel + border="true" + height="150" + label="Search" + layout="topleft" + left="6" + name="SearchPanel" + top="150" + width="134"> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="10" + name="InstructSearchResidentName" + top="8" + width="220"> + Type part of the resident's name: + </text> + <line_editor + border_style="line" + border_thickness="1" + follows="left|top|right" + height="16" + layout="topleft" + left_delta="0" + name="Edit" + top_pad="4" + width="50" /> + <button + follows="top|right" + height="20" + label="Find" + label_selected="Find" + layout="topleft" + left_pad="5" + name="Find" + top_delta="-1" + width="62" /> + <scroll_list + follows="left|top|right|bottom" + height="90" + layout="topleft" + left="10" + name="SearchResults" + top="52" + width="115" /> + </panel> + <panel + border="true" + height="150" + label="Calling Cards" + layout="topleft" + left_delta="-1" + name="CallingCardsPanel" + top_delta="134" + width="135"> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="10" + name="InstructSelectCallingCard" + top="8" + width="220"> + Select a calling card: + </text> + <inventory_panel + allow_multi_select="false" + border="true" + follows="left|top|right|bottom" + height="110" + layout="topleft" + left_delta="0" + name="InventoryPanel" + top_pad="7" + width="115" /> + </panel> + <panel + border="true" + height="240" + label="Near Me" + layout="topleft" + left="6" + name="NearMePanel" + top="60" + width="135"> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="10" + name="InstructSelectResident" + top="8" + width="220"> + Select nearby resident: + </text> + <button + follows="top|right" + height="20" + label="Refresh List" + label_selected="Refresh List" + layout="topleft" + left_delta="25" + name="Refresh" + top_delta="-1" + width="90" /> + <slider + control_name="NearMeRange" + decimal_digits="0" + follows="left|top" + height="15" + increment="1" + initial_value="20" + label="Range" + layout="topleft" + left="10" + max_val="40" + min_val="5" + name="near_me_range" + top="32" + width="175" /> + <text + type="string" + length="1" + follows="left|top" + height="15" + layout="topleft" + left_delta="175" + name="meters" + top_delta="0" + width="40"> + Meters + </text> + <scroll_list + follows="left|top|right|bottom" + height="175" + layout="topleft" + left="10" + name="NearMe" + sort_column="0" + top="57" + width="115" /> + </panel> + </tab_container> + <button + follows="left|bottom" + height="20" + label="Select" + label_selected="Select" + layout="topleft" + left="10" + name="Select" + top="324" + width="95" /> + <button + follows="right|bottom" + height="20" + label="Cancel" + label_selected="Cancel" + layout="topleft" + right="-10" + name="Cancel" + top_delta="0" + width="95" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_avatar_textures.xml b/indra/newview/skins/default/xui/en/floater_avatar_textures.xml new file mode 100644 index 0000000000000000000000000000000000000000..9e2c8a44d1693ee340900e5a54cf769db8469544 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_avatar_textures.xml @@ -0,0 +1,211 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + height="950" + layout="topleft" + name="avatar_texture_debug" + title="Avatar Textures" + width="960"> + <floater.string + name="InvalidAvatar"> + INVALID AVATAR + </floater.string> + <text + type="string" + length="1" + height="16" + layout="topleft" + left="10" + name="label" + top="24" + width="80"> + Baked Textures + </text> + <text + type="string" + length="1" + height="16" + layout="topleft" + left_pad="60" + name="composite_label" + top_delta="0" + width="120"> + Composite Textures + </text> + <button + height="20" + label="Dump IDs to Console" + label_selected="Dump" + layout="topleft" + left_pad="530" + name="Dump" + top_delta="1" + width="150" /> + <texture_picker + height="143" + label="Hair" + layout="topleft" + left="10" + name="hair-baked" + top="47" + width="128" /> + <texture_picker + height="143" + label="Hair" + layout="topleft" + left_pad="7" + name="hair" + top_delta="0" + width="128" /> + <texture_picker + height="143" + label="Head" + layout="topleft" + left="10" + name="head-baked" + top="197" + width="128" /> + <texture_picker + height="143" + label="Makeup" + layout="topleft" + left_pad="7" + name="head bodypaint" + top_delta="0" + width="128" /> + <texture_picker + height="143" + label="Eyes" + layout="topleft" + left="10" + name="eyes-baked" + top="347" + width="128" /> + <texture_picker + height="143" + label="Eye" + layout="topleft" + left_pad="7" + name="iris" + top_delta="0" + width="128" /> + <texture_picker + height="143" + label="Upper Body" + layout="topleft" + left="10" + name="upper-baked" + top="497" + width="128" /> + <texture_picker + height="143" + label="Upper Body Tattoo" + layout="topleft" + left_pad="7" + name="upper bodypaint" + top_delta="0" + width="128" /> + <texture_picker + height="143" + label="Undershirt" + layout="topleft" + left_pad="7" + name="undershirt" + top_delta="0" + width="128" /> + <texture_picker + height="143" + label="Gloves" + layout="topleft" + left_pad="7" + name="gloves" + top_delta="0" + width="128" /> + <texture_picker + height="143" + label="Shirt" + layout="topleft" + left_pad="7" + name="shirt" + top_delta="0" + width="128" /> + <texture_picker + height="143" + label="Upper Jacket" + layout="topleft" + left_pad="7" + name="upper jacket" + top_delta="0" + width="128" /> + <texture_picker + height="143" + label="Lower Body" + layout="topleft" + left="10" + name="lower-baked" + top="647" + width="128" /> + <texture_picker + height="143" + label="Lower Body Tattoo" + layout="topleft" + left_pad="7" + name="lower bodypaint" + top_delta="0" + width="128" /> + <texture_picker + height="143" + label="Underpants" + layout="topleft" + left_pad="7" + name="underpants" + top_delta="0" + width="128" /> + <texture_picker + height="143" + label="Socks" + layout="topleft" + left_pad="7" + name="socks" + top_delta="0" + width="128" /> + <texture_picker + height="143" + label="Shoes" + layout="topleft" + left_pad="7" + name="shoes" + top_delta="0" + width="128" /> + <texture_picker + height="143" + label="Pants" + layout="topleft" + left_pad="7" + name="pants" + top_delta="0" + width="128" /> + <texture_picker + height="143" + label="Jacket" + layout="topleft" + left_pad="7" + name="lower jacket" + top_delta="0" + width="128" /> + <texture_picker + height="143" + label="Skirt" + layout="topleft" + left="10" + name="skirt-baked" + top="797" + width="128" /> + <texture_picker + height="143" + label="Skirt" + layout="topleft" + left_pad="7" + name="skirt" + top_delta="0" + width="128" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_beacons.xml b/indra/newview/skins/default/xui/en/floater_beacons.xml new file mode 100644 index 0000000000000000000000000000000000000000..41ddec639578e7f31379cf3bd4792d3a93056790 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_beacons.xml @@ -0,0 +1,86 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + control_name="BeaconAlwaysOn" + height="225" + layout="topleft" + name="beacons" + save_rect="true" + title="Beacons" + width="250"> + <panel + follows="left|top|right|bottom" + height="200" + layout="topleft" + left="10" + name="beacons_panel" + top="15" + width="230"> + <check_box + bottom_delta="33" + control_name="scripttouchbeacon" + label="Scripted Objects with Touch Only" + layout="topleft" + name="touch_only" /> + <check_box + bottom_delta="20" + control_name="scriptsbeacon" + label="Scripted Objects" + layout="topleft" + name="scripted" /> + <check_box + bottom_delta="20" + control_name="physicalbeacon" + label="Physical Objects" + layout="topleft" + name="physical" /> + <check_box + bottom_delta="20" + control_name="soundsbeacon" + label="Sound Sources" + layout="topleft" + name="sounds" /> + <check_box + bottom_delta="20" + control_name="particlesbeacon" + label="Particle Sources" + layout="topleft" + name="particles" /> + <check_box + bottom_delta="20" + control_name="renderhighlights" + label="Render Highlights" + layout="topleft" + name="highlights" /> + <check_box + bottom_delta="20" + control_name="renderbeacons" + label="Render Beacons" + layout="topleft" + name="beacons" /> + <text + type="string" + length="1" + follows="left|top" + height="12" + layout="topleft" + left="5" + name="beacon_width_label" + top="171" + width="128"> + Beacon Width: + </text> + <slider + control_name="DebugBeaconLineWidth" + decimal_digits="0" + height="16" + increment="1" + initial_value="1" + layout="topleft" + left="30" + max_val="16" + min_val="1" + name="beacon_width" + top="187" + width="185" /> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_build_options.xml b/indra/newview/skins/default/xui/en/floater_build_options.xml new file mode 100644 index 0000000000000000000000000000000000000000..af5c006779d3c71b6f7c70efe57d0c280bc9c708 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_build_options.xml @@ -0,0 +1,71 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + follows="right" + height="151" + layout="topleft" + name="build options floater" + save_rect="true" + title="Grid Options" + width="272"> + <spinner + control_name="GridResolution" + follows="left|top" + height="16" + initial_value="1" + label="Grid Unit (meters)" + label_width="110" + layout="topleft" + left="14" + max_val="5" + min_val="0.01" + name="GridResolution" + top="37" + width="170" /> + <spinner + control_name="GridDrawSize" + decimal_digits="1" + follows="left|top" + height="16" + increment="0.5" + initial_value="5" + label="Grid Extents (meters)" + label_width="110" + layout="topleft" + left_delta="0" + max_val="50" + min_val="1" + name="GridDrawSize" + top_pad="5" + width="170" /> + <check_box + control_name="GridSubUnit" + height="16" + label="Enable Sub-Unit Snapping" + layout="topleft" + left_delta="0" + name="GridSubUnit" + top_pad="5" + width="200" /> + <check_box + control_name="GridCrossSections" + height="16" + label="Show Cross Sections" + layout="topleft" + left_delta="0" + name="GridCrossSection" + top_pad="5" + width="200" /> + <slider + control_name="GridOpacity" + follows="left" + height="16" + increment="0.05" + initial_value="0.7" + label="Grid Opacity" + layout="topleft" + left_delta="0" + name="GridOpacity" + show_text="false" + top_pad="5" + width="200" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_bulk_perms.xml b/indra/newview/skins/default/xui/en/floater_bulk_perms.xml new file mode 100644 index 0000000000000000000000000000000000000000..cf75da078ea4c505ff05ca7c762136c61b8f5a42 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_bulk_perms.xml @@ -0,0 +1,337 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_tear_off="false" + height="340" + layout="topleft" + name="floaterbulkperms" + title="Bulk change content permissions" + width="480"> + <floater.string + name="nothing_to_modify_text"> + Selection contains no editable contents. + </floater.string> + <floater.string + name="status_text"> + Setting permissions on [NAME] + </floater.string> + <floater.string + name="start_text"> + Starting permission change requests... + </floater.string> + <floater.string + name="done_text"> + Finished permission change requests. + </floater.string> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="10" + layout="topleft" + left="10" + name="applyto" + top="30" + width="206"> + Content Types + </text> + <icon + height="16" + image_name="inv_item_animation.tga" + layout="topleft" + left_delta="2" + mouse_opaque="true" + name="icon_animation" + top_pad="14" + width="16" /> + <check_box + control_name="BulkChangeIncludeAnimations" + height="16" + label="Animation" + layout="topleft" + left_pad="2" + name="check_animation" + top_delta="0" + width="126" /> + <icon + height="16" + image_name="inv_folder_bodypart.tga" + layout="topleft" + left="12" + mouse_opaque="true" + name="icon_bodypart" + top="74" + width="16" /> + <check_box + control_name="BulkChangeIncludeBodyParts" + height="16" + label="Body Parts" + layout="topleft" + left_pad="2" + name="check_bodypart" + top_delta="0" + width="126" /> + <icon + height="16" + image_name="inv_item_shirt.tga" + layout="topleft" + left="12" + mouse_opaque="true" + name="icon_clothing" + top="94" + width="16" /> + <check_box + control_name="BulkChangeIncludeClothing" + height="16" + label="Clothing" + layout="topleft" + left_pad="2" + name="check_clothing" + top_delta="0" + width="126" /> + <icon + height="16" + image_name="inv_item_gesture.tga" + layout="topleft" + left="12" + mouse_opaque="true" + name="icon_gesture" + top="114" + width="16" /> + <check_box + control_name="BulkChangeIncludeGestures" + height="16" + label="Gestures" + layout="topleft" + left_pad="2" + name="check_gesture" + top_delta="0" + width="126" /> + <icon + height="16" + image_name="inv_item_landmark_visited.tga" + layout="topleft" + left="12" + mouse_opaque="true" + name="icon_landmark" + top="134" + width="16" /> + <check_box + control_name="BulkChangeIncludeLandmarks" + height="16" + label="Landmarks" + layout="topleft" + left_pad="2" + name="check_landmark" + top_delta="0" + width="126" /> + <icon + height="16" + image_name="inv_item_notecard.tga" + layout="topleft" + left="12" + mouse_opaque="true" + name="icon_notecard" + top="154" + width="16" /> + <check_box + control_name="BulkChangeIncludeNotecards" + height="16" + label="Notecards" + layout="topleft" + left_pad="2" + name="check_notecard" + top_delta="0" + width="126" /> + <icon + height="16" + image_name="inv_item_object.tga" + layout="topleft" + left="12" + mouse_opaque="true" + name="icon_object" + top="174" + width="16" /> + <check_box + control_name="BulkChangeIncludeObjects" + height="16" + label="Objects" + layout="topleft" + left_pad="2" + name="check_object" + top_delta="0" + width="126" /> + <icon + height="16" + image_name="inv_item_script.tga" + layout="topleft" + left="12" + mouse_opaque="true" + name="icon_script" + top="194" + width="16" /> + <check_box + control_name="BulkChangeIncludeScripts" + height="16" + label="Scripts" + layout="topleft" + left_pad="2" + name="check_script" + top_delta="0" + width="126" /> + <icon + height="16" + image_name="inv_item_sound.tga" + layout="topleft" + left="12" + mouse_opaque="true" + name="icon_sound" + top="214" + width="16" /> + <check_box + control_name="BulkChangeIncludeSounds" + height="16" + label="Sounds" + layout="topleft" + left_pad="2" + name="check_sound" + top_delta="0" + width="126" /> + <icon + height="16" + image_name="inv_item_texture.tga" + layout="topleft" + left="12" + mouse_opaque="true" + name="icon_texture" + top="234" + width="16" /> + <check_box + control_name="BulkChangeIncludeTextures" + height="16" + label="Textures" + layout="topleft" + left_pad="2" + name="check_texture" + top_delta="0" + width="126" /> + <button + follows="left|top" + height="20" + label="Check All" + label_selected="All" + layout="topleft" + left="8" + name="check_all" + top="257" + width="100" /> + <button + follows="left|top" + height="20" + label="Uncheck All" + label_selected="None" + layout="topleft" + left_delta="0" + name="check_none" + top_pad="4" + width="100" /> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="10" + layout="topleft" + left="165" + name="newperms" + top="30" + width="206"> + New Permissions + </text> + <check_box + control_name="BulkChangeShareWithGroup" + height="16" + label="Share with group" + layout="topleft" + left="170" + name="share_with_group" + top="54" + width="106" /> + <check_box + control_name="BulkChangeEveryoneCopy" + height="16" + label="Allow anyone to copy" + layout="topleft" + left_delta="0" + name="everyone_copy" + top_pad="16" + width="130" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_delta="0" + name="NextOwnerLabel" + top_pad="16" + width="88"> + Next owner can: + </text> + <check_box + control_name="BulkChangeNextOwnerModify" + height="16" + label="Modify" + layout="topleft" + left_delta="0" + name="next_owner_modify" + top_pad="14" + width="78" /> + <check_box + control_name="BulkChangeNextOwnerCopy" + height="16" + label="Copy" + layout="topleft" + left_delta="78" + name="next_owner_copy" + top_delta="0" + width="88" /> + <check_box + control_name="BulkChangeNextOwnerTransfer" + enabled="false" + height="16" + initial_value="true" + label="Resell/Give away" + layout="topleft" + left_delta="88" + name="next_owner_transfer" + top_delta="0" + width="106" /> + <scroll_list + enabled="false" + follows="left|top|right|bottom" + height="130" + layout="topleft" + left="130" + name="queue output" + top="170" + width="335" /> + <button + follows="left|top" + height="20" + label="Apply" + layout="topleft" + left="265" + name="apply" + top="310" + width="100" /> + <button + follows="left|top" + height="20" + label="Close" + layout="topleft" + left_pad="5" + name="close" + top_delta="0" + width="100" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_bumps.xml b/indra/newview/skins/default/xui/en/floater_bumps.xml new file mode 100644 index 0000000000000000000000000000000000000000..4fb2fe24cc9f4cf2a12ad5cd1a30255ab3b08812 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_bumps.xml @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + height="180" + layout="topleft" + name="floater_bumps" + save_rect="true" + title="Bumps, Pushes & Hits" + width="400"> + <floater.string + name="none_detected"> + None detected + </floater.string> + <floater.string + name="bump"> + [TIME] [FIRST] [LAST] bumped you + </floater.string> + <floater.string + name="llpushobject"> + [TIME] [FIRST] [LAST] pushed you with a script + </floater.string> + <floater.string + name="selected_object_collide"> + [TIME] [FIRST] [LAST] hit you with an object + </floater.string> + <floater.string + name="scripted_object_collide"> + [TIME] [FIRST] [LAST] hit you with a scripted object + </floater.string> + <floater.string + name="physical_object_collide"> + [TIME] [FIRST] [LAST] hit you with a physical object + </floater.string> + <floater.string + name="timeStr"> + [[hour,datetime,slt]:[min,datetime,slt]] + </floater.string> + <scroll_list + draw_border="false" + follows="left|top|right|bottom" + height="152" + layout="topleft" + left="6" + multi_select="true" + name="bump_list" + top="20" + width="388" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_buy_contents.xml b/indra/newview/skins/default/xui/en/floater_buy_contents.xml new file mode 100644 index 0000000000000000000000000000000000000000..174337480a04323991390aa88886987f18babecf --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_buy_contents.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_resize="true" + height="250" + layout="topleft" + min_height="150" + min_width="200" + name="floater_buy_contents" + save_rect="true" + title="Buy Contents" + width="300"> + <floater.string + name="no_copy_text"> + (no copy) + </floater.string> + <floater.string + name="no_modify_text"> + (no modify) + </floater.string> + <floater.string + name="no_transfer_text"> + (no transfer) + </floater.string> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left="15" + name="contains_text" + top="24" + width="281"> + [NAME] contains: + </text> + <scroll_list + follows="left|top|right|bottom" + height="148" + layout="topleft" + left_delta="0" + name="item_list" + top_pad="4" + width="281"> + <scroll_list.columns + name="icon" + width="16" /> + <scroll_list.columns + name="text" + relative_width="1" /> + </scroll_list> + <text + type="string" + length="1" + follows="left|right|bottom" + font="SansSerif" + height="24" + layout="topleft" + left_delta="0" + name="buy_text" + top_pad="4" + width="281"> + Buy for L$[AMOUNT] from [NAME]? + </text> + <button + follows="right|bottom" + height="20" + label="Cancel" + label_selected="Cancel" + layout="topleft" + left="216" + name="cancel_btn" + top="224" + width="60" /> + <button + follows="right|bottom" + height="20" + label="Buy" + label_selected="Buy" + layout="topleft" + left_delta="-64" + name="buy_btn" + top_delta="0" + width="60" /> + <check_box + follows="left|bottom" + height="20" + label="Wear clothing now" + layout="topleft" + left_delta="-139" + name="wear_check" + top_delta="0" + width="135" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_buy_currency.xml b/indra/newview/skins/default/xui/en/floater_buy_currency.xml new file mode 100644 index 0000000000000000000000000000000000000000..245d84fff401f84928c6495e240cff012f7e3e56 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_buy_currency.xml @@ -0,0 +1,294 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_minimize="false" + height="270" + layout="topleft" + name="buy currency" + title="Buy Currency" + width="350"> + <floater.string + name="buy_currency"> + Buy L$ [LINDENS] for approx. US$ [USD] + </floater.string> + <text + type="string" + length="1" + bottom_delta="48" + follows="top|left" + font="SansSerifHuge" + height="24" + layout="topleft" + left="16" + name="info_buying" + right="-20"> + Buying Currency: + </text> + <text + type="string" + length="1" + bottom_delta="0" + follows="top|left" + font="SansSerifHuge" + height="24" + layout="topleft" + left="16" + name="info_cannot_buy" + right="-20"> + Cannot buy now: + </text> + <text + type="string" + length="1" + bottom_delta="0" + follows="top|left" + font="SansSerifHuge" + height="24" + layout="topleft" + left="16" + name="info_need_more" + right="-20"> + You need more currency: + </text> + <icon + follows="top|left" + height="64" + image_name="badge_note.j2c" + layout="topleft" + left="0" + name="step_error" + top="48" + width="64" /> + <text + type="string" + length="1" + bottom_delta="96" + follows="top|left" + height="140" + layout="topleft" + left="72" + name="error_message" + right="-20"> + Something ain't right. + </text> + <button + follows="bottom|left" + height="20" + label="Go to website" + layout="topleft" + left_delta="0" + name="error_web" + top_delta="124" + width="120" /> + <icon + follows="top|left" + height="64" + image_name="badge_note.j2c" + layout="topleft" + left="0" + name="step_1" + top="48" + width="64" /> + <text + type="string" + length="1" + bottom_delta="-38" + follows="top|left" + height="16" + layout="topleft" + left="72" + name="contacting" + right="-20"> + Contacting LindeX... + </text> + <text + type="string" + length="1" + bottom_delta="0" + follows="top|left" + height="16" + layout="topleft" + left="72" + name="buy_action_unknown" + right="-20"> + Buy L$ on the LindeX currency exchange + </text> + <text + type="string" + length="1" + bottom_delta="0" + follows="top|left" + height="16" + layout="topleft" + left="72" + name="buy_action" + right="-20"> + [NAME] L$ [PRICE] + </text> + <text + type="string" + length="1" + follows="top|left" + height="16" + layout="topleft" + left_delta="0" + name="currency_action" + top_pad="4" + width="40"> + Buy L$ + </text> + <line_editor + type="string" + length="1" + follows="top|right" + height="16" + layout="topleft" + left_pad="5" + name="currency_amt" + top_delta="0" + width="80"> + 1234 + </line_editor> + <text + type="string" + length="1" + follows="top|right" + height="16" + layout="topleft" + left_pad="5" + name="currency_est" + top_delta="0" + width="180"> + for approx. US$ [USD,number,2] + </text> + <text + type="string" + length="1" + follows="top|right" + height="16" + layout="topleft" + left_delta="5" + name="getting_data" + top_delta="0" + width="180"> + Getting data... + </text> + <text + type="string" + length="1" + follows="top|left" + height="16" + layout="topleft" + left="80" + name="balance_label" + top="110" + width="240"> + You currently have + </text> + <text + type="string" + length="1" + follows="top|left" + halign="right" + height="16" + layout="topleft" + left_delta="0" + name="balance_amount" + top_delta="0" + width="240"> + L$ [AMT] + </text> + <text + type="string" + length="1" + follows="top|left" + height="16" + layout="topleft" + left_delta="0" + name="buying_label" + top_pad="4" + width="240"> + You are buying + </text> + <text + type="string" + length="1" + follows="top|left" + halign="right" + height="16" + layout="topleft" + left_delta="0" + name="buying_amount" + top_delta="0" + width="240"> + L$ [AMT] + </text> + <text + type="string" + length="1" + follows="top|left" + height="16" + layout="topleft" + left_delta="0" + name="total_label" + top_pad="4" + width="240"> + Your balance will be + </text> + <text + type="string" + length="1" + follows="top|left" + halign="right" + height="16" + layout="topleft" + left_delta="0" + name="total_amount" + top_delta="0" + width="240"> + L$ [AMT] + </text> + <text + type="string" + length="1" + bottom_delta="48" + follows="top|left" + height="32" + layout="topleft" + left="72" + name="purchase_warning_repurchase" + right="-20"> + Confirming this purchase only buys the currency. +You'll need to try the operation again. + </text> + <text + type="string" + length="1" + bottom_delta="0" + follows="top|left" + height="32" + layout="topleft" + left="72" + name="purchase_warning_notenough" + right="-20"> + You aren't buying enough currency +Increase the amount to buy. + </text> + <button + follows="bottom|right" + height="20" + label="Cancel" + layout="topleft" + left="237" + name="cancel_btn" + top="234" + width="90" /> + <button + follows="bottom|left" + height="20" + label="Purchase" + layout="topleft" + left_delta="-96" + name="buy_btn" + top_delta="0" + width="90" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_buy_land.xml b/indra/newview/skins/default/xui/en/floater_buy_land.xml new file mode 100644 index 0000000000000000000000000000000000000000..e11534cc132c4eaeb87a6b66107362e4a05dfd8a --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_buy_land.xml @@ -0,0 +1,696 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_minimize="false" + height="484" + layout="topleft" + name="buy land" + title="Buy Land" + width="740"> + <floater.string + name="can_resell"> + May be resold. + </floater.string> + <floater.string + name="can_not_resell"> + May not be resold. + </floater.string> + <floater.string + name="can_change"> + May be joined or subdivided. + </floater.string> + <floater.string + name="can_not_change"> + May not be joined or subdivided. + </floater.string> + <floater.string + name="cant_buy_for_group"> + You do not have permission to buy land for your active group. + </floater.string> + <floater.string + name="no_land_selected"> + No land selected. + </floater.string> + <floater.string + name="multiple_parcels_selected"> + Multiple different parcels selected. +Try selecting a smaller area. + </floater.string> + <floater.string + name="no_permission"> + You do not have permission to buy land for your active group. + </floater.string> + <floater.string + name="parcel_not_for_sale"> + The selected parcel is not for sale. + </floater.string> + <floater.string + name="group_already_owns"> + The group already owns the parcel. + </floater.string> + <floater.string + name="you_already_own"> + You already own the parcel. + </floater.string> + <floater.string + name="set_to_sell_to_other"> + The selected parcel is set to sell to another party. + </floater.string> + <floater.string + name="no_public_land"> + The selected area has no public land. + </floater.string> + <floater.string + name="not_owned_by_you"> + Land owned by another user is selected. +Try selecting a smaller area. + </floater.string> + <floater.string + name="processing"> + Processing your purchase... + +(This may take a minute or two.) + </floater.string> + <floater.string + name="fetching_error"> + There has been an error while fetching land buying information. + </floater.string> + <floater.string + name="buying_will"> + Buying this land will: + </floater.string> + <floater.string + name="buying_for_group"> + Buying land for group will: + </floater.string> + <floater.string + name="cannot_buy_now"> + Cannot buy now: + </floater.string> + <floater.string + name="not_for_sale"> + Not for sale: + </floater.string> + <floater.string + name="none_needed"> + none needed + </floater.string> + <floater.string + name="must_upgrade"> + Your account must be upgraded to own land. + </floater.string> + <floater.string + name="cant_own_land"> + Your account can own land. + </floater.string> + <floater.string + name="land_holdings"> + You hold [BUYER] sq.m. of land. + </floater.string> + <floater.string + name="pay_to_for_land"> + Pay L$ [AMOUNT] to [SELLER] for this land + </floater.string> + <floater.string + name="buy_for_US"> + Buy L$ [AMOUNT] for approx. US$ [AMOUNT2], + </floater.string> + <floater.string + name="parcel_meters"> + This parcel is [AMOUNT] sq.m. + </floater.string> + <floater.string + name="premium_land"> + This land is premium, and will charge as [AMOUNT] sq.m. + </floater.string> + <floater.string + name="discounted_land"> + This land is discounted, and will charge as [AMOUNT] sq.m. + </floater.string> + <floater.string + name="meters_supports_object"> + [AMOUNT] sq.m. +supports [AMOUNT2] objects + </floater.string> + <floater.string + name="sold_with_objects"> + sold with objects + </floater.string> + <floater.string + name="sold_without_objects"> + objects not included + </floater.string> + <floater.string + name="info_price_string"> + L$ [PRICE] +(L$ [PRICE_PER_SQM]/sq.m.) +[SOLD_WITH_OBJECTS] + </floater.string> + <floater.string + name="insufficient_land_credits"> + The group [GROUP] will need sufficient contributed land use credits to cover this parcel before the purchase will complete. + </floater.string> + <floater.string + name="have_enough_lindens"> + You have L$ [AMOUNT], which is enough to buy this land. + </floater.string> + <floater.string + name="not_enough_lindens"> + You have only L$ [AMOUNT], and need L$ [AMOUNT2] more. + </floater.string> + <floater.string + name="balance_left"> + After the purchase, you will have L$ [AMOUNT] left. + </floater.string> + <floater.string + name="balance_needed"> + You need to buy at least L$ [AMOUNT] to afford this land. + </floater.string> + <floater.string + name="no_parcel_selected"> + (no parcel selected) + </floater.string> + <floater.string + name="buy_currency"> + Buy L$ [LINDENS] for approx. US$ [USD] + </floater.string> + <text + type="string" + length="1" + follows="left|top" + height="14" + layout="topleft" + left="440" + name="region_name_label" + right="550" + top="21" + width="60" + word_wrap="true"> + Region: + </text> + <text + type="string" + length="1" + follows="left|top" + height="14" + layout="topleft" + left_delta="110" + name="region_name_text" + top_delta="0" + width="175"> + (unknown) + </text> + <text + type="string" + length="1" + follows="left|top" + height="14" + layout="topleft" + left="440" + name="region_type_label" + right="550" + width="60" + word_wrap="true"> + Type: + </text> + <text + type="string" + length="1" + follows="left|top" + height="14" + layout="topleft" + left_delta="110" + name="region_type_text" + top_delta="0" + width="175"> + (unknown) + </text> + <text + type="string" + length="1" + follows="left|top" + height="14" + layout="topleft" + left="440" + name="estate_name_label" + right="550" + width="60" + word_wrap="true"> + Estate: + </text> + <text + type="string" + length="1" + follows="left|top" + height="14" + layout="topleft" + left_delta="110" + name="estate_name_text" + top_delta="0" + width="175"> + (unknown) + </text> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left="440" + name="estate_owner_label" + right="550" + width="100" + word_wrap="true"> + Estate Owner: + </text> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left_delta="110" + name="estate_owner_text" + top_delta="0" + width="175"> + (unknown) + </text> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="16" + layout="topleft" + left="440" + name="resellable_changeable_label" + right="725" + width="260" + word_wrap="true"> + Purchased land in this region: + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="470" + name="resellable_clause" + right="725" + width="260" + word_wrap="true"> + May or may not be resold. + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="470" + name="changeable_clause" + right="725" + width="260" + word_wrap="true"> + May or may not be joined or subdivided. + </text> + <text + type="string" + length="1" + height="16" + layout="topleft" + left="440" + name="covenant_text" + right="725" + width="260"> + You must agree to the Estate Covenant: + </text> + <text + follows="left|top" + height="12" + layout="topleft" + left="500" + name="covenant_timestamp_text" + right="725" + top="175" + width="275" + word_wrap="true" /> + <text_editor + type="string" + length="1" + enabled="false" + follows="top|right" + height="237" + layout="topleft" + left="444" + max_length="65535" + name="covenant_editor" + right="725" + top="192" + width="271" + word_wrap="true"> + Loading... + </text_editor> + <check_box + height="20" + label="I Agree to the Covenant Defined Above." + layout="topleft" + left="440" + name="agree_covenant" + right="725" + width="275" /> + <texture_picker + enabled="false" + follows="top|left" + height="135" + layout="topleft" + left="16" + name="info_image" + top="28" + width="180" /> + <text + type="string" + length="1" + bottom_delta="-119" + follows="top|left" + layout="topleft" + left="204" + name="info_parcel_label" + width="48"> + Parcel: + </text> + <text + type="string" + length="1" + follows="top|left" + font="SansSerif" + height="16" + layout="topleft" + left_delta="16" + name="info_parcel" + top_delta="-1" + width="180"> + Scotopteryx 138,204 + </text> + <text + type="string" + length="1" + follows="top|left" + layout="topleft" + left="204" + name="info_size_label" + width="48"> + Size: + </text> + <text + type="string" + length="1" + follows="top|left" + font="SansSerif" + height="32" + layout="topleft" + left_delta="16" + name="info_size" + top_delta="-1" + width="180"> + 1024 sq.m. + </text> + <text + type="string" + length="1" + follows="top|left" + layout="topleft" + left="204" + name="info_price_label" + width="48"> + Price: + </text> + <text + type="string" + length="1" + follows="top|left" + font="SansSerif" + height="16" + layout="topleft" + left_delta="16" + name="info_price" + top_delta="-1" + width="180"> + L$ 1500 +(L$ 1.1/sq.m.) +sold with objects + </text> + <text + type="string" + length="1" + follows="top|left" + font="SansSerifHuge" + height="24" + layout="topleft" + left="16" + name="info_action" + top="156" + width="350"> + Buying this land will: + </text> + <locate + height="6" + layout="topleft" /> + <icon + follows="top|left" + height="64" + image_name="badge_note.j2c" + layout="topleft" + left="0" + name="step_error" + width="64" /> + <text + type="string" + length="1" + follows="top|left" + height="160" + layout="topleft" + left="72" + name="error_message" + right="435" + top="208" + width="215"> + Something ain't right. + </text> + <button + follows="bottom|left" + height="20" + label="Go to website" + layout="topleft" + left_delta="0" + name="error_web" + top_delta="144" + width="120" /> + <locate + height="-200" + layout="topleft" /> + <icon + follows="top|left" + height="64" + image_name="badge_ok.j2c" + layout="topleft" + left="0" + name="step_1" + width="64" /> + <text + type="string" + length="1" + follows="top|left" + font="SansSerifBig" + height="16" + layout="topleft" + left="72" + name="account_action" + right="438" + top="190" + width="218"> + Upgrade you to premium membership. + </text> + <text + type="string" + length="1" + follows="top|left" + height="16" + layout="topleft" + left="72" + name="account_reason" + right="400" + width="180"> + Only premimum members may own land. + </text> + <combo_box + follows="top|left" + height="16" + layout="topleft" + left="80" + name="account_level" + width="336"> + <combo_box.item + label="US$9.95/month, billed monthly" /> + <combo_box.item + label="US$7.50/month, billed quarterly" /> + <combo_box.item + label="US$6.00/month, billed annually" /> + </combo_box> + <locate + height="10" + layout="topleft" /> + <icon + follows="top|left" + height="64" + image_name="badge_note.j2c" + layout="topleft" + left="0" + name="step_2" + width="64" /> + <text + type="string" + length="1" + follows="top|left" + font="SansSerifBig" + height="16" + layout="topleft" + left="72" + name="land_use_action" + right="438" + top="274" + width="218"> + Increase your monthly land use fees to US$ 40/month. + </text> + <text + type="string" + length="1" + follows="top|left" + height="32" + layout="topleft" + left="72" + name="land_use_reason" + right="435" + width="215"> + You hold 1309 sq.m. of land. + This parcel is 512 sq.m. of land. + </text> + <locate + height="10" + layout="topleft" /> + <icon + follows="top|left" + height="64" + image_name="badge_note.j2c" + layout="topleft" + left="0" + name="step_3" + width="64" /> + <text + type="string" + length="1" + bottom_delta="-38" + follows="top|left" + font="SansSerifBig" + height="16" + layout="topleft" + left="72" + name="purchase_action" + right="438"> + Pay Joe Resident L$ 4000 for the land + </text> + <text + type="string" + length="1" + follows="top|left" + height="16" + layout="topleft" + left="72" + name="currency_reason" + right="400"> + You have L$ 2,100. + </text> + <text + type="string" + length="1" + follows="top|left" + height="16" + layout="topleft" + left_delta="0" + name="currency_action" + top_pad="9" + width="90"> + Buy additional L$ + </text> + <locate + height="0" + layout="topleft" + width="8" /> + <line_editor + type="string" + length="1" + follows="top|right" + height="16" + layout="topleft" + left="170" + name="currency_amt" + top="398" + width="80"> + 1000 + </line_editor> + <locate + height="0" + layout="topleft" + width="8" /> + <text + type="string" + length="1" + follows="top|right" + height="16" + layout="topleft" + left="260" + name="currency_est" + top="399" + width="178"> + for approx. US$ [AMOUNT2] + </text> + <text + type="string" + length="1" + follows="top|left" + height="16" + layout="topleft" + left="72" + name="currency_balance" + right="400"> + You have L$ 2,100. + </text> + <check_box + follows="bottom|left" + height="20" + label="Remove [AMOUNT] square meters of contribution from group." + layout="topleft" + left_delta="3" + name="remove_contribution" + top_delta="14" + visible="false" + width="275" /> + <button + follows="bottom|left" + height="20" + label="Purchase" + layout="topleft" + left="70" + name="buy_btn" + top="448" + width="100" /> + <button + follows="bottom|right" + height="20" + label="Cancel" + layout="topleft" + left="-90" + name="cancel_btn" + top="454" + width="80" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_buy_object.xml b/indra/newview/skins/default/xui/en/floater_buy_object.xml new file mode 100644 index 0000000000000000000000000000000000000000..44ef32ee3608638e3724b823ab349375bc3c5298 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_buy_object.xml @@ -0,0 +1,108 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_resize="true" + height="250" + layout="topleft" + min_height="175" + min_width="154" + name="contents" + save_rect="true" + title="Buy Copy of Object" + width="300"> + <floater.string + name="title_buy_text"> + Buy + </floater.string> + <floater.string + name="title_buy_copy_text"> + Buy a copy of + </floater.string> + <floater.string + name="no_copy_text"> + (no copy) + </floater.string> + <floater.string + name="no_modify_text"> + (no modify) + </floater.string> + <floater.string + name="no_transfer_text"> + (no transfer) + </floater.string> + <scroll_list + follows="left|top|right" + height="36" + layout="topleft" + left="15" + name="object_list" + top="24" + width="281"> + <scroll_list.columns + name="icon" + width="16" /> + <scroll_list.columns + name="text" + width="300" /> + </scroll_list> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="contents_text" + top_pad="4" + width="281"> + and its contents: + </text> + <scroll_list + follows="left|top|right|bottom" + height="108" + layout="topleft" + left_delta="0" + name="item_list" + top_pad="4" + width="281"> + <scroll_list.columns + name="icon" + width="16" /> + <scroll_list.columns + name="text" + width="300" /> + </scroll_list> + <text + type="string" + length="1" + follows="left|right|bottom" + font="SansSerif" + height="24" + layout="topleft" + left_delta="0" + name="buy_text" + top_pad="4" + width="281"> + Buy for L$[AMOUNT] from [NAME]? + </text> + <button + follows="right|bottom" + height="20" + label="Cancel" + label_selected="Cancel" + layout="topleft" + left="216" + name="cancel_btn" + top="224" + width="60" /> + <button + follows="right|bottom" + height="20" + label="Buy" + label_selected="Buy" + layout="topleft" + left_delta="-64" + name="buy_btn" + top_delta="0" + width="60" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_camera.xml b/indra/newview/skins/default/xui/en/floater_camera.xml new file mode 100644 index 0000000000000000000000000000000000000000..7f24b11d14ac0976aab08b78b03e1bff812c8d62 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_camera.xml @@ -0,0 +1,69 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_minimize="false" + center_horiz="true" + follows="top" + height="64" + layout="topleft" + name="camera_floater" + save_rect="true" + width="176"> + <floater.string + name="rotate_tooltip"> + Rotate Camera Around Focus + </floater.string> + <floater.string + name="zoom_tooltip"> + Zoom Camera Towards Focus + </floater.string> + <floater.string + name="move_tooltip"> + Move Camera Up and Down, Left and Right + </floater.string> + <joystick_rotate + follows="top|left" + height="64" + image_selected="cam_rotate_in.tga" + image_unselected="cam_rotate_out.tga" + layout="topleft" + left="16" + name="cam_rotate_stick" + picture_style="true" + quadrant="left" + scale_image="false" + sound_flags="3" + tool_tip="rotate_tooltip" + top="0" + width="64" /> + <joystick_zoom + follows="top|left" + height="64" + image_unselected="cam_zoom_out.tga" + layout="topleft" + left_delta="64" + minus_image="cam_zoom_minus_in.tga" + name="zoom" + picture_style="true" + plus_image="cam_zoom_plus_in.tga" + quadrant="left" + scale_image="false" + sound_flags="3" + tool_tip="zoom_tooltip" + top_delta="0" + width="16" /> + <joystick_track + follows="top|left" + height="64" + image_selected="cam_tracking_in.tga" + image_unselected="cam_tracking_out.tga" + layout="topleft" + left_delta="16" + name="cam_track_stick" + picture_style="true" + quadrant="left" + scale_image="false" + sound_flags="3" + tool_tip="move_tooltip" + top_delta="0" + width="64" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_choose_group.xml b/indra/newview/skins/default/xui/en/floater_choose_group.xml new file mode 100644 index 0000000000000000000000000000000000000000..428afcff52d25ec439d9c4f276fd864bbd7cb766 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_choose_group.xml @@ -0,0 +1,49 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + height="258" + layout="topleft" + name="groups" + title="Groups" + width="280"> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="12" + name="groupdesc" + top="24" + width="248"> + Choose a group: + </text> + <scroll_list + height="160" + layout="topleft" + left_delta="0" + name="group list" + top_pad="8" + width="248"> + <scroll_list.columns + name="name" + width="248" /> + </scroll_list> + <button + height="20" + label="OK" + label_selected="OK" + layout="topleft" + left_delta="0" + name="OK" + top_pad="8" + width="80" /> + <button + height="20" + label="Cancel" + label_selected="Cancel" + layout="topleft" + left_pad="8" + name="Cancel" + top_delta="0" + width="80" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_color_picker.xml b/indra/newview/skins/default/xui/en/floater_color_picker.xml new file mode 100644 index 0000000000000000000000000000000000000000..08e47f7ef69c7199684d6057db3826c8f6c0f85b --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_color_picker.xml @@ -0,0 +1,228 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_minimize="false" + follows="left|top" + height="380" + layout="topleft" + name="ColorPicker" + title="Color Picker" + width="440"> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="10" + layout="topleft" + left="12" + mouse_opaque="false" + name="r_val_text" + top="35" + width="413"> + Red: + </text> + <spinner + decimal_digits="0" + follows="left" + height="16" + increment="1" + initial_value="128" + layout="topleft" + left_delta="63" + max_val="255" + name="rspin" + top_delta="0" + width="50" /> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="10" + layout="topleft" + left="12" + mouse_opaque="false" + name="g_val_text" + top="56" + width="413"> + Green: + </text> + <spinner + decimal_digits="0" + follows="left" + height="16" + increment="1" + initial_value="128" + layout="topleft" + left_delta="63" + max_val="255" + name="gspin" + top_delta="0" + width="50" /> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="10" + layout="topleft" + left="12" + mouse_opaque="false" + name="b_val_text" + top="77" + width="413"> + Blue: + </text> + <spinner + decimal_digits="0" + follows="left" + height="16" + increment="1" + initial_value="128" + layout="topleft" + left_delta="63" + max_val="255" + name="bspin" + top_delta="0" + width="50" /> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="10" + layout="topleft" + left="12" + mouse_opaque="false" + name="h_val_text" + top="108" + width="413"> + Hue: + </text> + <spinner + decimal_digits="0" + follows="left" + height="16" + increment="1" + initial_value="180" + layout="topleft" + left_delta="63" + max_val="360" + name="hspin" + top_delta="0" + width="50" /> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="10" + layout="topleft" + left="12" + mouse_opaque="false" + name="s_val_text" + top="129" + width="413"> + Sat: + </text> + <spinner + decimal_digits="0" + follows="left" + height="16" + increment="1" + initial_value="50" + layout="topleft" + left_delta="63" + max_val="100" + name="sspin" + top_delta="0" + width="50" /> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="10" + layout="topleft" + left="12" + mouse_opaque="false" + name="l_val_text" + top="150" + width="413"> + Lum: + </text> + <spinner + decimal_digits="0" + follows="left" + height="16" + increment="1" + initial_value="50" + layout="topleft" + left_delta="63" + max_val="100" + name="lspin" + top_delta="0" + width="50" /> + <check_box + follows="left|bottom" + height="20" + label="Apply Immediately" + layout="topleft" + left="12" + name="apply_immediate" + top="353" + width="100" /> + <button + follows="left|top" + height="32" + layout="topleft" + left_delta="130" + name="color_pipette" + picture_style="true" + top="341" + width="32" /> + <button + follows="right|bottom" + height="20" + label="Cancel" + label_selected="Cancel" + layout="topleft" + left_delta="75" + name="cancel_btn" + top="353" + width="100" /> + <button + follows="right|bottom" + height="20" + label="Select" + label_selected="Select" + layout="topleft" + left_pad="4" + name="select_btn" + top_delta="0" + width="100" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="12" + name="Current color:" + top="172" + width="110"> + Current color: + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_delta="0" + name="(Drag below to save.)" + top_pad="66" + width="110"> + (Drag below to save.) + </text> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_critical.xml b/indra/newview/skins/default/xui/en/floater_critical.xml new file mode 100644 index 0000000000000000000000000000000000000000..5475a1cf6a56d712b9c235e24496a1da873a2ed1 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_critical.xml @@ -0,0 +1,57 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_close="false" + can_minimize="false" + height="500" + layout="topleft" + name="modal container" + width="600"> + <button + height="20" + label="Continue" + label_selected="Continue" + layout="topleft" + left="484" + name="Continue" + top="465" + width="100" /> + <button + height="20" + label="Cancel" + label_selected="Cancel" + layout="topleft" + left_delta="-468" + name="Cancel" + top_delta="0" + width="100" /> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="20" + layout="topleft" + left_delta="4" + name="tos_heading" + top_delta="-450" + width="552"> + Please read the following message carefully. + </text> + <text_editor + type="string" + length="1" + bg_readonly_color="1 1 1 1" + bottom="455" + follows="left|top" + font="SansSerif" + layout="topleft" + left="20" + max_length="65536" + name="tos_text" + right="-20" + text_readonly_color="0 0 0 1" + top="45" + word_wrap="true"> + TOS_TEXT + </text_editor> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_customize.xml b/indra/newview/skins/default/xui/en/floater_customize.xml new file mode 100644 index 0000000000000000000000000000000000000000..41bd417c12d37ce08741683198f22260605796fb --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_customize.xml @@ -0,0 +1,3574 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_minimize="false" + follows="left|top" + height="540" + layout="topleft" + left_delta="-3" + name="floater customize" + save_rect="true" + title="Appearance" + top_delta="-185" + width="494"> + <tab_container + height="483" + layout="topleft" + left="0" + name="customize tab container" + tab_min_width="96" + tab_position="left" + top="24" + width="492"> + <placeholder + label="Body Parts" + layout="topleft" + name="body_parts_placeholder" /> + <panel + border="true" + follows="left|top|right|bottom" + height="481" + label="Shape" + layout="topleft" + left_delta="0" + name="Shape" + top_delta="0" + width="389"> + <icon + follows="top|right" + height="16" + image_name="icon_lock.tga" + layout="topleft" + left="333" + mouse_opaque="true" + name="square" + top="5" + width="16" /> + <icon + height="16" + layout="topleft" + left_delta="-325" + mouse_opaque="true" + top_delta="3" + width="16" /> + <button + follows="right|bottom" + height="20" + label="Revert" + label_selected="Revert" + layout="topleft" + left="299" + name="Revert" + top="458" + width="82" /> + <button + follows="left|top" + font="SansSerifSmall" + height="16" + label="Body" + label_selected="Body" + layout="topleft" + left="8" + name="Body" + top="65" + width="82" /> + <button + follows="left|top" + font="SansSerifSmall" + height="16" + label="Head" + label_selected="Head" + layout="topleft" + left_delta="0" + name="Head" + top_pad="16" + width="82" /> + <button + follows="left|top" + font="SansSerifSmall" + height="16" + label="Eyes" + label_selected="Eyes" + layout="topleft" + left_delta="0" + name="Eyes" + top_pad="16" + width="82" /> + <button + follows="left|top" + font="SansSerifSmall" + height="16" + label="Ears" + label_selected="Ears" + layout="topleft" + left_delta="0" + name="Ears" + top_pad="16" + width="82" /> + <button + follows="left|top" + font="SansSerifSmall" + height="16" + label="Nose" + label_selected="Nose" + layout="topleft" + left_delta="0" + name="Nose" + top_pad="16" + width="82" /> + <button + follows="left|top" + font="SansSerifSmall" + height="16" + label="Mouth" + label_selected="Mouth" + layout="topleft" + left_delta="0" + name="Mouth" + top_pad="16" + width="82" /> + <button + follows="left|top" + font="SansSerifSmall" + height="16" + label="Chin" + label_selected="Chin" + layout="topleft" + left_delta="0" + name="Chin" + top_pad="16" + width="82" /> + <button + follows="left|top" + font="SansSerifSmall" + height="16" + label="Torso" + label_selected="Torso" + layout="topleft" + left_delta="0" + name="Torso" + top_pad="16" + width="82" /> + <button + follows="left|top" + font="SansSerifSmall" + height="16" + label="Legs" + label_selected="Legs" + layout="topleft" + left_delta="0" + name="Legs" + top_pad="16" + width="82" /> + <radio_group + control_name="AvatarSex" + height="34" + layout="topleft" + left_delta="0" + name="sex radio" + top_pad="16" + width="82"> + <radio_item + height="16" + label="Female" + layout="topleft" + left="1" + name="radio" + top="1" + width="82" /> + <radio_item + height="16" + label="Male" + layout="topleft" + left_delta="0" + name="radio2" + top_delta="16" + width="82" /> + </radio_group> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left="26" + name="title" + top="8" + width="355"> + [DESC] + </text> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="title_no_modify" + top_delta="0" + width="355"> + [DESC]: cannot modify + </text> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="title_loading" + top_delta="0" + width="355"> + [DESC]: loading... + </text> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="title_not_worn" + top_delta="0" + width="355"> + [DESC]: not worn + </text> + <text + type="string" + length="1" + follows="left|top" + height="14" + layout="topleft" + left="8" + name="path" + top="24" + width="373"> + Located in [PATH] + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="28" + layout="topleft" + left_delta="0" + name="not worn instructions" + top_pad="8" + width="373"> + Put on a new shape by dragging one from your inventory +to your avatar. Alternately, you create a new one from +scratch and wear it. + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="28" + layout="topleft" + left_delta="0" + name="no modify instructions" + top_delta="0" + width="373"> + You do not have permission to modify this wearable. + </text> + <text + type="string" + length="1" + bottom="486" + follows="left|top|right" + font="SansSerif" + halign="right" + height="28" + layout="topleft" + name="Item Action Label" + right="117" + width="100"> + Shape: + </text> + <button + follows="left|top" + height="24" + label="Create New Shape" + label_selected="Create New Shape" + layout="topleft" + left="8" + name="Create New" + top="104" + width="120" /> + <button + follows="right|bottom" + height="20" + label="Save" + label_selected="Save" + layout="topleft" + left="123" + name="Save" + top="458" + width="82" /> + <button + follows="right|bottom" + height="20" + label="Save As..." + label_selected="Save As..." + layout="topleft" + left_pad="6" + name="Save As" + top_delta="0" + width="82" /> + </panel> + <panel + border="true" + follows="left|top|right|bottom" + height="481" + label="Skin" + layout="topleft" + left_delta="0" + name="Skin" + top_delta="0" + width="389"> + <icon + follows="top|right" + height="16" + image_name="icon_lock.tga" + layout="topleft" + left="333" + mouse_opaque="true" + name="square" + top="5" + width="16" /> + <icon + height="16" + layout="topleft" + left_delta="-325" + mouse_opaque="true" + top_delta="3" + width="16" /> + <button + follows="left|top" + font="SansSerifSmall" + height="16" + label="Skin Color" + label_selected="Skin Color" + layout="topleft" + left_delta="0" + name="Skin Color" + top_pad="41" + width="82" /> + <button + follows="left|top" + font="SansSerifSmall" + height="16" + label="Face Detail" + label_selected="Face Detail" + layout="topleft" + left_delta="0" + name="Face Detail" + top_pad="16" + width="82" /> + <button + follows="left|top" + font="SansSerifSmall" + height="16" + label="Makeup" + label_selected="Makeup" + layout="topleft" + left_delta="0" + name="Makeup" + top_pad="16" + width="82" /> + <button + follows="left|top" + font="SansSerifSmall" + height="16" + label="Body Detail" + label_selected="Body Detail" + layout="topleft" + left_delta="0" + name="Body Detail" + top_pad="16" + width="82" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left="26" + name="title" + top="8" + width="355"> + [DESC] + </text> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="title_no_modify" + top_delta="0" + width="355"> + [DESC]: cannot modify + </text> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="title_loading" + top_delta="0" + width="355"> + [DESC]: loading... + </text> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="title_not_worn" + top_delta="0" + width="355"> + [DESC]: not worn + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="14" + layout="topleft" + left="8" + name="path" + top="24" + width="373"> + Located in [PATH] + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="28" + layout="topleft" + left_delta="0" + name="not worn instructions" + top_pad="8" + width="373"> + Put on a new skin by dragging one from your inventory +to your avatar. Alternately, you create a new one from +scratch and wear it. + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="28" + layout="topleft" + left_delta="0" + name="no modify instructions" + top_delta="0" + width="373"> + You do not have permission to modify this wearable. + </text> + <text + type="string" + length="1" + bottom="486" + follows="left|top|right" + font="SansSerif" + halign="right" + height="28" + layout="topleft" + name="Item Action Label" + right="117" + width="100"> + Skin: + </text> + <texture_picker + allow_no_texture="true" + can_apply_immediately="true" + default_image_name="Default" + follows="left|top" + height="80" + label="Head Tattoos" + layout="topleft" + left="8" + name="Head Tattoos" + tool_tip="Click to choose a picture" + top="193" + width="74" /> + <texture_picker + allow_no_texture="true" + can_apply_immediately="true" + default_image_name="Default" + follows="left|top" + height="80" + label="Upper Tattoos" + layout="topleft" + left_delta="0" + name="Upper Tattoos" + tool_tip="Click to choose a picture" + top_delta="80" + width="74" /> + <texture_picker + allow_no_texture="true" + can_apply_immediately="true" + default_image_name="Default" + follows="left|top" + height="80" + label="Lower Tattoos" + layout="topleft" + left_delta="0" + name="Lower Tattoos" + tool_tip="Click to choose a picture" + top_delta="80" + width="74" /> + <button + follows="left|top" + height="24" + label="Create New Skin" + label_selected="Create New Skin" + layout="topleft" + left_delta="0" + name="Create New" + top_delta="-249" + width="120" /> + <button + follows="right|bottom" + height="20" + label="Save" + label_selected="Save" + layout="topleft" + left="123" + name="Save" + top="458" + width="82" /> + <button + follows="right|bottom" + height="20" + label="Save As..." + label_selected="Save As..." + layout="topleft" + left_pad="6" + name="Save As" + top_delta="0" + width="82" /> + <button + follows="right|bottom" + height="20" + label="Revert" + label_selected="Revert" + layout="topleft" + left_pad="6" + name="Revert" + top_delta="0" + width="82" /> + </panel> + <panel + border="true" + follows="left|top|right|bottom" + height="481" + label="Hair" + layout="topleft" + left_delta="0" + name="Hair" + top_delta="0" + width="389"> + <icon + follows="top|right" + height="16" + image_name="icon_lock.tga" + layout="topleft" + left="333" + mouse_opaque="true" + name="square" + top="5" + width="16" /> + <icon + height="16" + layout="topleft" + left_delta="-325" + mouse_opaque="true" + top_delta="3" + width="16" /> + <button + follows="left|top" + font="SansSerifSmall" + height="16" + label="Color" + label_selected="Color" + layout="topleft" + left_delta="0" + name="Color" + top_pad="41" + width="82" /> + <button + follows="left|top" + font="SansSerifSmall" + height="16" + label="Style" + label_selected="Style" + layout="topleft" + left_delta="0" + name="Style" + top_pad="16" + width="82" /> + <button + follows="left|top" + font="SansSerifSmall" + height="16" + label="Eyebrows" + label_selected="Eyebrows" + layout="topleft" + left_delta="0" + name="Eyebrows" + top_pad="16" + width="82" /> + <button + follows="left|top" + font="SansSerifSmall" + height="16" + label="Facial" + label_selected="Facial" + layout="topleft" + left_delta="0" + name="Facial" + top_pad="16" + width="82" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left="26" + name="title" + top="8" + width="355"> + [DESC] + </text> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="title_no_modify" + top_delta="0" + width="355"> + [DESC]: cannot modify + </text> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="title_loading" + top_delta="0" + width="355"> + [DESC]: loading... + </text> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="title_not_worn" + top_delta="0" + width="355"> + [DESC]: not worn + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="14" + layout="topleft" + left="8" + name="path" + top="24" + width="373"> + Located in [PATH] + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="28" + layout="topleft" + left_delta="0" + name="not worn instructions" + top_pad="8" + width="373"> + Put on a new hair by dragging one from your inventory +to your avatar. Alternately, you create a new one from +scratch and wear it. + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="28" + layout="topleft" + left_delta="0" + name="no modify instructions" + top_delta="0" + width="373"> + You do not have permission to modify this wearable. + </text> + <text + type="string" + length="1" + bottom="486" + follows="left|top|right" + font="SansSerif" + halign="right" + height="28" + layout="topleft" + name="Item Action Label" + right="117" + width="100"> + Hair: + </text> + <texture_picker + can_apply_immediately="true" + default_image_name="Default" + follows="left|top" + height="80" + label="Texture" + layout="topleft" + left="8" + name="Texture" + tool_tip="Click to choose a picture" + top="193" + width="64" /> + <button + follows="left|top" + height="24" + label="Create New Hair" + label_selected="Create New Hair" + layout="topleft" + left_delta="0" + name="Create New" + top_delta="-89" + width="120" /> + <button + follows="right|bottom" + height="20" + label="Save" + label_selected="Save" + layout="topleft" + left="123" + name="Save" + top="458" + width="82" /> + <button + follows="right|bottom" + height="20" + label="Save As..." + label_selected="Save As..." + layout="topleft" + left_pad="6" + name="Save As" + top_delta="0" + width="82" /> + <button + follows="right|bottom" + height="20" + label="Revert" + label_selected="Revert" + layout="topleft" + left_pad="6" + name="Revert" + top_delta="0" + width="82" /> + </panel> + <panel + border="true" + follows="left|top|right|bottom" + height="481" + label="Eyes" + layout="topleft" + left_delta="0" + name="Eyes" + top_delta="0" + width="389"> + <icon + follows="top|right" + height="16" + image_name="icon_lock.tga" + layout="topleft" + left="333" + mouse_opaque="true" + name="square" + top="5" + width="16" /> + <icon + height="16" + layout="topleft" + left_delta="-325" + mouse_opaque="true" + top_delta="3" + width="16" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_pad="2" + name="title" + top_delta="0" + width="355"> + [DESC] + </text> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="title_no_modify" + top_delta="0" + width="355"> + [DESC]: cannot modify + </text> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="title_loading" + top_delta="0" + width="355"> + [DESC]: loading... + </text> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="title_not_worn" + top_delta="0" + width="355"> + [DESC]: not worn + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="14" + layout="topleft" + left="8" + name="path" + top="24" + width="373"> + Located in [PATH] + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="28" + layout="topleft" + left_delta="0" + name="not worn instructions" + top_pad="8" + width="373"> + Put on a new eyes by dragging one from your inventory +to your avatar. Alternately, you create a new one from +scratch and wear it. + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="28" + layout="topleft" + left_delta="0" + name="no modify instructions" + top_delta="0" + width="373"> + You do not have permission to modify this wearable. + </text> + <text + type="string" + length="1" + bottom="486" + follows="left|top|right" + font="SansSerif" + halign="right" + height="28" + layout="topleft" + name="Item Action Label" + right="117" + width="100"> + Eyes: + </text> + <texture_picker + can_apply_immediately="true" + default_image_name="Default" + follows="left|top" + height="80" + label="Iris" + layout="topleft" + left="8" + name="Iris" + tool_tip="Click to choose a picture" + top="65" + width="64" /> + <button + follows="left|top" + height="24" + label="Create New Eyes" + label_selected="Create New Eyes" + layout="topleft" + left_delta="0" + name="Create New" + top_delta="39" + width="120" /> + <button + follows="right|bottom" + height="20" + label="Save" + label_selected="Save" + layout="topleft" + left="123" + name="Save" + top="458" + width="82" /> + <button + follows="right|bottom" + height="20" + label="Save As..." + label_selected="Save As..." + layout="topleft" + left_pad="6" + name="Save As" + top_delta="0" + width="82" /> + <button + follows="right|bottom" + height="20" + label="Revert" + label_selected="Revert" + layout="topleft" + left_pad="6" + name="Revert" + top_delta="0" + width="82" /> + </panel> + <placeholder + label="Clothes" + layout="topleft" + name="clothes_placeholder" /> + <panel + border="true" + follows="left|top|right|bottom" + height="481" + label="Shirt" + layout="topleft" + left_delta="0" + name="Shirt" + top_delta="0" + width="389"> + <icon + follows="top|right" + height="16" + image_name="icon_lock.tga" + layout="topleft" + left="333" + mouse_opaque="true" + name="square" + top="5" + width="16" /> + <icon + height="16" + layout="topleft" + left_delta="-325" + mouse_opaque="true" + top_delta="3" + width="16" /> + <texture_picker + can_apply_immediately="true" + default_image_name="Default" + follows="left|top" + height="80" + label="Fabric" + layout="topleft" + left_delta="0" + name="Fabric" + tool_tip="Click to choose a picture" + top_pad="41" + width="64" /> + <color_swatch + border_color="0.45098 0.517647 0.607843 1" + can_apply_immediately="true" + follows="left|top" + height="80" + label="Color/Tint" + layout="topleft" + left_delta="0" + name="Color/Tint" + tool_tip="Click to open Color Picker" + top_delta="80" + width="64" /> + <button + follows="left|top" + height="24" + label="Create New Shirt" + label_selected="Create New Shirt" + layout="topleft" + left_delta="0" + name="Create New" + top_delta="-41" + width="120" /> + <button + follows="left|top" + height="20" + label="Take Off" + label_selected="Take Off" + layout="topleft" + left_delta="0" + name="Take Off" + top_pad="102" + width="82" /> + <button + follows="right|bottom" + height="20" + label="Save" + label_selected="Save" + layout="topleft" + left="123" + name="Save" + top="458" + width="82" /> + <button + follows="right|bottom" + height="20" + label="Save As..." + label_selected="Save As..." + layout="topleft" + left_pad="6" + name="Save As" + top_delta="0" + width="82" /> + <button + follows="right|bottom" + height="20" + label="Revert" + label_selected="Revert" + layout="topleft" + left_pad="6" + name="Revert" + top_delta="0" + width="82" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left="26" + name="title" + top="8" + width="355"> + [DESC] + </text> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="title_no_modify" + top_delta="0" + width="355"> + [DESC]: cannot modify + </text> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="title_loading" + top_delta="0" + width="355"> + [DESC]: loading... + </text> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="title_not_worn" + top_delta="0" + width="355"> + [DESC]: not worn + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="14" + layout="topleft" + left="8" + name="path" + top="24" + width="373"> + Located in [PATH] + </text> + <spinner + decimal_digits="0" + follows="left|top|right" + height="16" + increment="1" + initial_value="0" + label="Item" + label_width="30" + layout="topleft" + left_delta="2" + max_val="5" + name="index" + text_enabled_color="110, 15, 15, 255" + top_pad="6" + width="87" /> + <text + type="string" + length="1" + follows="left|top|right" + height="28" + layout="topleft" + left_delta="0" + name="not worn instructions" + top_pad="8" + width="373"> + Put on a new shirt by dragging one from your inventory +to your avatar. Alternately, you create a new one from +scratch and wear it. + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="28" + layout="topleft" + left_delta="0" + name="no modify instructions" + top_delta="0" + width="373"> + You do not have permission to modify this wearable. + </text> + <text + type="string" + length="1" + bottom="486" + follows="left|top|right" + font="SansSerif" + halign="right" + height="28" + layout="topleft" + name="Item Action Label" + right="117" + width="100"> + Shirt: + </text> + </panel> + <panel + border="true" + follows="left|top|right|bottom" + height="481" + label="Pants" + layout="topleft" + left_delta="0" + name="Pants" + top_delta="0" + width="389"> + <icon + follows="top|right" + height="16" + image_name="icon_lock.tga" + layout="topleft" + left="333" + mouse_opaque="true" + name="square" + top="5" + width="16" /> + <icon + height="16" + layout="topleft" + left_delta="-325" + mouse_opaque="true" + top_delta="3" + width="16" /> + <texture_picker + can_apply_immediately="true" + default_image_name="Default" + follows="left|top" + height="80" + label="Fabric" + layout="topleft" + left_delta="0" + name="Fabric" + tool_tip="Click to choose a picture" + top_pad="41" + width="64" /> + <color_swatch + border_color="0.45098 0.517647 0.607843 1" + can_apply_immediately="true" + follows="left|top" + height="80" + label="Color/Tint" + layout="topleft" + left_delta="0" + name="Color/Tint" + tool_tip="Click to open Color Picker" + top_delta="80" + width="64" /> + <button + follows="left|top" + height="24" + label="Create New Pants" + label_selected="Create New Pants" + layout="topleft" + left_delta="0" + name="Create New" + top_delta="-41" + width="120" /> + <button + follows="left|top" + height="20" + label="Take Off" + label_selected="Take Off" + layout="topleft" + left_delta="0" + name="Take Off" + top_pad="102" + width="82" /> + <button + follows="right|bottom" + height="20" + label="Save" + label_selected="Save" + layout="topleft" + left="123" + name="Save" + top="458" + width="82" /> + <button + follows="right|bottom" + height="20" + label="Save As..." + label_selected="Save As..." + layout="topleft" + left_pad="6" + name="Save As" + top_delta="0" + width="82" /> + <button + follows="right|bottom" + height="20" + label="Revert" + label_selected="Revert" + layout="topleft" + left_pad="6" + name="Revert" + top_delta="0" + width="82" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left="26" + name="title" + top="8" + width="355"> + [DESC] + </text> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="title_no_modify" + top_delta="0" + width="355"> + [DESC]: cannot modify + </text> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="title_loading" + top_delta="0" + width="355"> + [DESC]: loading... + </text> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="title_not_worn" + top_delta="0" + width="355"> + [DESC]: not worn + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="14" + layout="topleft" + left="8" + name="path" + top="24" + width="373"> + Located in [PATH] + </text> + <spinner + decimal_digits="0" + follows="left|top|right" + height="16" + increment="1" + initial_value="0" + label="Item" + label_width="30" + layout="topleft" + left_delta="2" + max_val="5" + name="index" + text_enabled_color="110, 15, 15, 255" + top_pad="6" + width="87" /> + <text + type="string" + length="1" + follows="left|top|right" + height="28" + layout="topleft" + left_delta="0" + name="not worn instructions" + top_pad="8" + width="373"> + Put on a new pants by dragging one from your inventory +to your avatar. Alternately, you create a new one from +scratch and wear it. + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="28" + layout="topleft" + left_delta="0" + name="no modify instructions" + top_delta="0" + width="373"> + You do not have permission to modify this wearable. + </text> + <text + type="string" + length="1" + bottom="486" + follows="left|top|right" + font="SansSerif" + halign="right" + height="28" + layout="topleft" + name="Item Action Label" + right="117" + width="100"> + Pants: + </text> + </panel> + <panel + border="true" + follows="left|top|right|bottom" + height="481" + label="Shoes" + layout="topleft" + left_delta="0" + name="Shoes" + top_delta="0" + width="389"> + <icon + follows="top|right" + height="16" + image_name="icon_lock.tga" + layout="topleft" + left="333" + mouse_opaque="true" + name="square" + top="5" + width="16" /> + <icon + height="16" + layout="topleft" + left_delta="-325" + mouse_opaque="true" + top_delta="3" + width="16" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_pad="2" + name="title" + top_delta="0" + width="355"> + [DESC] + </text> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="title_no_modify" + top_delta="0" + width="355"> + [DESC]: cannot modify + </text> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="title_loading" + top_delta="0" + width="355"> + [DESC]: loading... + </text> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="title_not_worn" + top_delta="0" + width="355"> + [DESC]: not worn + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="14" + layout="topleft" + left="8" + name="path" + top="24" + width="373"> + Located in [PATH] + </text> + <spinner + decimal_digits="0" + follows="left|top|right" + height="16" + increment="1" + initial_value="0" + label="Item" + label_width="30" + layout="topleft" + left_delta="2" + max_val="5" + name="index" + text_enabled_color="110, 15, 15, 255" + top_pad="6" + width="87" /> + <text + type="string" + length="1" + follows="left|top|right" + height="28" + layout="topleft" + left_delta="0" + name="not worn instructions" + top_pad="8" + width="373"> + Put on a new shoes by dragging one from your inventory +to your avatar. Alternately, you create a new one from +scratch and wear it. + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="28" + layout="topleft" + left_delta="0" + name="no modify instructions" + top_delta="0" + width="373"> + You do not have permission to modify this wearable. + </text> + <text + type="string" + length="1" + bottom="486" + follows="left|top|right" + font="SansSerif" + halign="right" + height="28" + layout="topleft" + name="Item Action Label" + right="117" + width="100"> + Shoes: + </text> + <texture_picker + can_apply_immediately="true" + default_image_name="Default" + follows="left|top" + height="80" + label="Fabric" + layout="topleft" + left="8" + name="Fabric" + tool_tip="Click to choose a picture" + top="65" + width="64" /> + <color_swatch + border_color="0.45098 0.517647 0.607843 1" + can_apply_immediately="true" + follows="left|top" + height="80" + label="Color/Tint" + layout="topleft" + left_delta="0" + name="Color/Tint" + tool_tip="Click to open Color Picker" + top_delta="80" + width="64" /> + <button + follows="left|top" + height="24" + label="Create New Shoes" + label_selected="Create New Shoes" + layout="topleft" + left_delta="0" + name="Create New" + top_delta="-41" + width="120" /> + <button + follows="left|top" + height="20" + label="Take Off" + label_selected="Take Off" + layout="topleft" + left_delta="0" + name="Take Off" + top_pad="102" + width="82" /> + <button + follows="right|bottom" + height="20" + label="Save" + label_selected="Save" + layout="topleft" + left="123" + name="Save" + top="458" + width="82" /> + <button + follows="right|bottom" + height="20" + label="Save As..." + label_selected="Save As..." + layout="topleft" + left_pad="6" + name="Save As" + top_delta="0" + width="82" /> + <button + follows="right|bottom" + height="20" + label="Revert" + label_selected="Revert" + layout="topleft" + left_pad="6" + name="Revert" + top_delta="0" + width="82" /> + </panel> + <panel + border="true" + follows="left|top|right|bottom" + height="481" + label="Socks" + layout="topleft" + left_delta="0" + name="Socks" + top_delta="0" + width="389"> + <icon + follows="top|right" + height="16" + image_name="icon_lock.tga" + layout="topleft" + left="333" + mouse_opaque="true" + name="square" + top="5" + width="16" /> + <icon + height="16" + layout="topleft" + left_delta="-325" + mouse_opaque="true" + top_delta="3" + width="16" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_pad="2" + name="title" + top_delta="0" + width="355"> + [DESC] + </text> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="title_no_modify" + top_delta="0" + width="355"> + [DESC]: cannot modify + </text> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="title_loading" + top_delta="0" + width="355"> + [DESC]: loading... + </text> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="title_not_worn" + top_delta="0" + width="355"> + [DESC]: not worn + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="14" + layout="topleft" + left="8" + name="path" + top="24" + width="373"> + Located in [PATH] + </text> + <spinner + decimal_digits="0" + follows="left|top|right" + height="16" + increment="1" + initial_value="0" + label="Item" + label_width="30" + layout="topleft" + left_delta="2" + max_val="5" + name="index" + text_enabled_color="110, 15, 15, 255" + top_pad="6" + width="87" /> + <text + type="string" + length="1" + follows="left|top|right" + height="28" + layout="topleft" + left_delta="0" + name="not worn instructions" + top_pad="8" + width="373"> + Put on a new socks by dragging one from your inventory +to your avatar. Alternately, you create a new one from +scratch and wear it. + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="28" + layout="topleft" + left_delta="0" + name="no modify instructions" + top_delta="0" + width="373"> + You do not have permission to modify this wearable. + </text> + <text + type="string" + length="1" + bottom="486" + follows="left|top|right" + font="SansSerif" + halign="right" + height="28" + layout="topleft" + name="Item Action Label" + right="117" + width="100"> + Socks: + </text> + <texture_picker + can_apply_immediately="true" + default_image_name="Default" + follows="left|top" + height="80" + label="Fabric" + layout="topleft" + left="8" + name="Fabric" + tool_tip="Click to choose a picture" + top="65" + width="64" /> + <color_swatch + border_color="0.45098 0.517647 0.607843 1" + can_apply_immediately="true" + follows="left|top" + height="80" + label="Color/Tint" + layout="topleft" + left_delta="0" + name="Color/Tint" + tool_tip="Click to open Color Picker" + top_delta="80" + width="64" /> + <button + follows="left|top" + height="24" + label="Create New Socks" + label_selected="Create New Socks" + layout="topleft" + left_delta="0" + name="Create New" + top_delta="-41" + width="120" /> + <button + follows="left|top" + height="20" + label="Take Off" + label_selected="Take Off" + layout="topleft" + left_delta="0" + name="Take Off" + top_pad="102" + width="82" /> + <button + follows="right|bottom" + height="20" + label="Save" + label_selected="Save" + layout="topleft" + left="123" + name="Save" + top="458" + width="82" /> + <button + follows="right|bottom" + height="20" + label="Save As..." + label_selected="Save As..." + layout="topleft" + left_pad="6" + name="Save As" + top_delta="0" + width="82" /> + <button + follows="right|bottom" + height="20" + label="Revert" + label_selected="Revert" + layout="topleft" + left_pad="6" + name="Revert" + top_delta="0" + width="82" /> + </panel> + <panel + border="true" + follows="left|top|right|bottom" + height="481" + label="Jacket" + layout="topleft" + left_delta="0" + name="Jacket" + top_delta="0" + width="389"> + <icon + follows="top|right" + height="16" + image_name="icon_lock.tga" + layout="topleft" + left="333" + mouse_opaque="true" + name="square" + top="5" + width="16" /> + <icon + height="16" + layout="topleft" + left_delta="-325" + mouse_opaque="true" + top_delta="3" + width="16" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_pad="2" + name="title" + top_delta="0" + width="355"> + [DESC] + </text> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="title_no_modify" + top_delta="0" + width="355"> + [DESC]: cannot modify + </text> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="title_loading" + top_delta="0" + width="355"> + [DESC]: loading... + </text> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="title_not_worn" + top_delta="0" + width="355"> + [DESC]: not worn + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="14" + layout="topleft" + left="8" + name="path" + top="24" + width="373"> + Located in [PATH] + </text> + <spinner + decimal_digits="0" + follows="left|top|right" + height="16" + increment="1" + initial_value="0" + label="Item" + label_width="30" + layout="topleft" + left_delta="2" + max_val="5" + name="index" + text_enabled_color="110, 15, 15, 255" + top_pad="6" + width="87" /> + <text + type="string" + length="1" + follows="left|top|right" + height="28" + layout="topleft" + left_delta="0" + name="not worn instructions" + top_pad="8" + width="373"> + Put on a new jacket by dragging one from your inventory +to your avatar. Alternately, you create a new one from +scratch and wear it. + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="28" + layout="topleft" + left_delta="0" + name="no modify instructions" + top_delta="0" + width="373"> + You do not have permission to modify this wearable. + </text> + <text + type="string" + length="1" + bottom="486" + follows="left|top|right" + font="SansSerif" + halign="right" + height="28" + layout="topleft" + name="Item Action Label" + right="117" + width="100"> + Jacket: + </text> + <texture_picker + can_apply_immediately="true" + default_image_name="Default" + follows="left|top" + height="80" + label="Upper Fabric" + layout="topleft" + left="8" + name="Upper Fabric" + tool_tip="Click to choose a picture" + top="65" + width="64" /> + <texture_picker + can_apply_immediately="true" + default_image_name="Default" + follows="left|top" + height="80" + label="Lower Fabric" + layout="topleft" + left_delta="0" + name="Lower Fabric" + tool_tip="Click to choose a picture" + top_delta="80" + width="64" /> + <color_swatch + border_color="0.45098 0.517647 0.607843 1" + can_apply_immediately="true" + follows="left|top" + height="80" + label="Color/Tint" + layout="topleft" + left_delta="0" + name="Color/Tint" + tool_tip="Click to open Color Picker" + top_delta="80" + width="64" /> + <button + follows="left|top" + height="24" + label="Create New Jacket" + label_selected="Create New Jacket" + layout="topleft" + left_delta="0" + name="Create New" + top_delta="-121" + width="140" /> + <button + follows="left|top" + height="20" + label="Take Off" + label_selected="Take Off" + layout="topleft" + left_delta="0" + name="Take Off" + top_pad="182" + width="82" /> + <button + follows="right|bottom" + height="20" + label="Save" + label_selected="Save" + layout="topleft" + left="123" + name="Save" + top="458" + width="82" /> + <button + follows="right|bottom" + height="20" + label="Save As..." + label_selected="Save As..." + layout="topleft" + left_pad="6" + name="Save As" + top_delta="0" + width="82" /> + <button + follows="right|bottom" + height="20" + label="Revert" + label_selected="Revert" + layout="topleft" + left_pad="6" + name="Revert" + top_delta="0" + width="82" /> + </panel> + <panel + border="true" + follows="left|top|right|bottom" + height="481" + label="Gloves" + layout="topleft" + left_delta="0" + name="Gloves" + top_delta="0" + width="389"> + <icon + follows="top|right" + height="16" + image_name="icon_lock.tga" + layout="topleft" + left="333" + mouse_opaque="true" + name="square" + top="5" + width="16" /> + <icon + height="16" + layout="topleft" + left_delta="-325" + mouse_opaque="true" + top_delta="3" + width="16" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_pad="2" + name="title" + top_delta="0" + width="355"> + [DESC] + </text> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="title_no_modify" + top_delta="0" + width="355"> + [DESC]: cannot modify + </text> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="title_loading" + top_delta="0" + width="355"> + [DESC]: loading... + </text> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="title_not_worn" + top_delta="0" + width="355"> + [DESC]: not worn + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="14" + layout="topleft" + left="8" + name="path" + top="24" + width="373"> + Located in [PATH] + </text> + <spinner + decimal_digits="0" + follows="left|top|right" + height="16" + increment="1" + initial_value="0" + label="Item" + label_width="30" + layout="topleft" + left_delta="2" + max_val="5" + name="index" + text_enabled_color="110, 15, 15, 255" + top_pad="6" + width="87" /> + <text + type="string" + length="1" + follows="left|top|right" + height="28" + layout="topleft" + left_delta="0" + name="not worn instructions" + top_pad="8" + width="373"> + Put on a new gloves by dragging one from your inventory +to your avatar. Alternately, you create a new one from +scratch and wear it. + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="28" + layout="topleft" + left_delta="0" + name="no modify instructions" + top_delta="0" + width="373"> + You do not have permission to modify this wearable. + </text> + <text + type="string" + length="1" + bottom="486" + follows="left|top|right" + font="SansSerif" + halign="right" + height="28" + layout="topleft" + name="Item Action Label" + right="117" + width="100"> + Gloves: + </text> + <texture_picker + can_apply_immediately="true" + default_image_name="Default" + follows="left|top" + height="80" + label="Fabric" + layout="topleft" + left="8" + name="Fabric" + tool_tip="Click to choose a picture" + top="65" + width="64" /> + <color_swatch + border_color="0.45098 0.517647 0.607843 1" + can_apply_immediately="true" + follows="left|top" + height="80" + label="Color/Tint" + layout="topleft" + left_delta="0" + name="Color/Tint" + tool_tip="Click to open Color Picker" + top_delta="80" + width="64" /> + <button + follows="left|top" + height="24" + label="Create New Gloves" + label_selected="Create New Gloves" + layout="topleft" + left_delta="0" + name="Create New" + top_delta="-41" + width="130" /> + <button + follows="left|top" + height="20" + label="Take Off" + label_selected="Take Off" + layout="topleft" + left_delta="0" + name="Take Off" + top_pad="102" + width="82" /> + <button + follows="right|bottom" + height="20" + label="Save" + label_selected="Save" + layout="topleft" + left="123" + name="Save" + top="458" + width="82" /> + <button + follows="right|bottom" + height="20" + label="Save As..." + label_selected="Save As..." + layout="topleft" + left_pad="6" + name="Save As" + top_delta="0" + width="82" /> + <button + follows="right|bottom" + height="20" + label="Revert" + label_selected="Revert" + layout="topleft" + left_pad="6" + name="Revert" + top_delta="0" + width="82" /> + </panel> + <panel + border="true" + follows="left|top|right|bottom" + height="481" + label="Undershirt" + layout="topleft" + left_delta="0" + name="Undershirt" + top_delta="0" + width="389"> + <icon + follows="top|right" + height="16" + image_name="icon_lock.tga" + layout="topleft" + left="333" + mouse_opaque="true" + name="square" + top="5" + width="16" /> + <icon + height="16" + layout="topleft" + left_delta="-325" + mouse_opaque="true" + top_delta="3" + width="16" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_pad="2" + name="title" + top_delta="0" + width="355"> + [DESC] + </text> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="title_no_modify" + top_delta="0" + width="355"> + [DESC]: cannot modify + </text> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="title_loading" + top_delta="0" + width="355"> + [DESC]: loading... + </text> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="title_not_worn" + top_delta="0" + width="355"> + [DESC]: not worn + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="14" + layout="topleft" + left="8" + name="path" + top="24" + width="373"> + Located in [PATH] + </text> + <spinner + decimal_digits="0" + follows="left|top|right" + height="16" + increment="1" + initial_value="0" + label="Item" + label_width="30" + layout="topleft" + left_delta="2" + max_val="5" + name="index" + text_enabled_color="110, 15, 15, 255" + top_pad="6" + width="87" /> + <text + type="string" + length="1" + follows="left|top|right" + height="28" + layout="topleft" + left_delta="0" + name="not worn instructions" + top_pad="8" + width="373"> + Put on a new undershirt by dragging one from your inventory +to your avatar. Alternately, you create a new one from +scratch and wear it. + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="28" + layout="topleft" + left_delta="0" + name="no modify instructions" + top_delta="0" + width="373"> + You do not have permission to modify this wearable. + </text> + <text + type="string" + length="1" + bottom="486" + follows="left|top|right" + font="SansSerif" + halign="right" + height="28" + layout="topleft" + name="Item Action Label" + right="117" + width="100"> + Undershirt: + </text> + <texture_picker + can_apply_immediately="true" + default_image_name="Default" + follows="left|top" + height="80" + label="Fabric" + layout="topleft" + left="8" + name="Fabric" + tool_tip="Click to choose a picture" + top="65" + width="64" /> + <color_swatch + border_color="0.45098 0.517647 0.607843 1" + can_apply_immediately="true" + follows="left|top" + height="80" + label="Color/Tint" + layout="topleft" + left_delta="0" + name="Color/Tint" + tool_tip="Click to open Color Picker" + top_delta="80" + width="64" /> + <button + follows="left|top" + height="24" + label="Create New Undershirt" + label_selected="Create New Undershirt" + layout="topleft" + left_delta="0" + name="Create New" + top_delta="-41" + width="160" /> + <button + follows="left|top" + height="20" + label="Take Off" + label_selected="Take Off" + layout="topleft" + left_delta="0" + name="Take Off" + top_pad="102" + width="82" /> + <button + follows="right|bottom" + height="20" + label="Save" + label_selected="Save" + layout="topleft" + left="123" + name="Save" + top="458" + width="82" /> + <button + follows="right|bottom" + height="20" + label="Save As..." + label_selected="Save As..." + layout="topleft" + left_pad="6" + name="Save As" + top_delta="0" + width="82" /> + <button + follows="right|bottom" + height="20" + label="Revert" + label_selected="Revert" + layout="topleft" + left_pad="6" + name="Revert" + top_delta="0" + width="82" /> + </panel> + <panel + border="true" + follows="left|top|right|bottom" + height="481" + label="Underpants" + layout="topleft" + left_delta="0" + name="Underpants" + top_delta="0" + width="389"> + <icon + follows="top|right" + height="16" + image_name="icon_lock.tga" + layout="topleft" + left="333" + mouse_opaque="true" + name="square" + top="5" + width="16" /> + <icon + height="16" + layout="topleft" + left_delta="-325" + mouse_opaque="true" + top_delta="3" + width="16" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_pad="2" + name="title" + top_delta="0" + width="355"> + [DESC] + </text> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="title_no_modify" + top_delta="0" + width="355"> + [DESC]: cannot modify + </text> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="title_loading" + top_delta="0" + width="355"> + [DESC]: loading... + </text> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="title_not_worn" + top_delta="0" + width="355"> + [DESC]: not worn + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="14" + layout="topleft" + left="8" + name="path" + top="24" + width="373"> + Located in [PATH] + </text> + <spinner + decimal_digits="0" + follows="left|top|right" + height="16" + increment="1" + initial_value="0" + label="Item" + label_width="30" + layout="topleft" + left_delta="2" + max_val="5" + name="index" + text_enabled_color="110, 15, 15, 255" + top_pad="6" + width="87" /> + <text + type="string" + length="1" + follows="left|top|right" + height="28" + layout="topleft" + left_delta="0" + name="not worn instructions" + top_pad="8" + width="373"> + Put on a new underpants by dragging one from your inventory +to your avatar. Alternately, you create a new one from +scratch and wear it. + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="28" + layout="topleft" + left_delta="0" + name="no modify instructions" + top_delta="0" + width="373"> + You do not have permission to modify this wearable. + </text> + <text + type="string" + length="1" + bottom="486" + follows="left|top|right" + font="SansSerif" + halign="right" + height="28" + layout="topleft" + name="Item Action Label" + right="117" + width="100"> + Underpants: + </text> + <texture_picker + can_apply_immediately="true" + default_image_name="Default" + follows="left|top" + height="80" + label="Fabric" + layout="topleft" + left="8" + name="Fabric" + tool_tip="Click to choose a picture" + top="65" + width="64" /> + <color_swatch + border_color="0.45098 0.517647 0.607843 1" + can_apply_immediately="true" + follows="left|top" + height="80" + label="Color/Tint" + layout="topleft" + left_delta="0" + name="Color/Tint" + tool_tip="Click to open Color Picker" + top_delta="80" + width="64" /> + <button + follows="left|top" + height="24" + label="Create New Underpants" + label_selected="Create New Underpants" + layout="topleft" + left_delta="0" + name="Create New" + top_delta="-41" + width="160" /> + <button + follows="left|top" + height="20" + label="Take Off" + label_selected="Take Off" + layout="topleft" + left_delta="0" + name="Take Off" + top_pad="102" + width="82" /> + <button + follows="right|bottom" + height="20" + label="Save" + label_selected="Save" + layout="topleft" + left="123" + name="Save" + top="458" + width="82" /> + <button + follows="right|bottom" + height="20" + label="Save As..." + label_selected="Save As..." + layout="topleft" + left_pad="6" + name="Save As" + top_delta="0" + width="82" /> + <button + follows="right|bottom" + height="20" + label="Revert" + label_selected="Revert" + layout="topleft" + left_pad="6" + name="Revert" + top_delta="0" + width="82" /> + </panel> + <panel + border="true" + follows="left|top|right|bottom" + height="481" + label="Skirt" + layout="topleft" + left_delta="0" + name="Skirt" + top_delta="0" + width="389"> + <icon + follows="top|right" + height="16" + image_name="icon_lock.tga" + layout="topleft" + left="333" + mouse_opaque="true" + name="square" + top="5" + width="16" /> + <icon + height="16" + layout="topleft" + left_delta="-325" + mouse_opaque="true" + top_delta="3" + width="16" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_pad="2" + name="title" + top_delta="0" + width="355"> + [DESC] + </text> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="title_no_modify" + top_delta="0" + width="355"> + [DESC]: cannot modify + </text> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="title_loading" + top_delta="0" + width="355"> + [DESC]: loading... + </text> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="title_not_worn" + top_delta="0" + width="355"> + [DESC]: not worn + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="14" + layout="topleft" + left="8" + name="path" + top="24" + width="373"> + Located in [PATH] + </text> + <spinner + decimal_digits="0" + follows="left|top|right" + height="16" + increment="1" + initial_value="0" + label="Item" + label_width="30" + layout="topleft" + left_delta="2" + max_val="5" + name="index" + text_enabled_color="110, 15, 15, 255" + top_pad="6" + width="87" /> + <text + type="string" + length="1" + follows="left|top|right" + height="28" + layout="topleft" + left_delta="0" + name="not worn instructions" + top_pad="8" + width="373"> + Put on a new skirt by dragging one from your inventory +to your avatar. Alternately, you create a new one from +scratch and wear it. + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="28" + layout="topleft" + left_delta="0" + name="no modify instructions" + top_delta="0" + width="373"> + You do not have permission to modify this wearable. + </text> + <text + type="string" + length="1" + bottom="486" + follows="left|top|right" + font="SansSerif" + halign="right" + height="28" + layout="topleft" + name="Item Action Label" + right="117" + width="100"> + Skirt: + </text> + <texture_picker + can_apply_immediately="true" + default_image_name="Default" + follows="left|top" + height="80" + label="Fabric" + layout="topleft" + left="8" + name="Fabric" + tool_tip="Click to choose a picture" + top="65" + width="64" /> + <color_swatch + border_color="0.45098 0.517647 0.607843 1" + can_apply_immediately="true" + follows="left|top" + height="80" + label="Color/Tint" + layout="topleft" + left_delta="0" + name="Color/Tint" + tool_tip="Click to open Color Picker" + top_delta="80" + width="64" /> + <button + follows="left|top" + height="24" + label="Create New Skirt" + label_selected="Create New Skirt" + layout="topleft" + left_delta="0" + name="Create New" + top_delta="-41" + width="120" /> + <button + follows="left|top" + height="20" + label="Take Off" + label_selected="Take Off" + layout="topleft" + left_delta="0" + name="Take Off" + top_pad="102" + width="82" /> + <button + follows="right|bottom" + height="20" + label="Save" + label_selected="Save" + layout="topleft" + left="123" + name="Save" + top="458" + width="82" /> + <button + follows="right|bottom" + height="20" + label="Save As..." + label_selected="Save As..." + layout="topleft" + left_pad="6" + name="Save As" + top_delta="0" + width="82" /> + <button + follows="right|bottom" + height="20" + label="Revert" + label_selected="Revert" + layout="topleft" + left_pad="6" + name="Revert" + top_delta="0" + width="82" /> + </panel> + <panel + border="true" + follows="left|top|right|bottom" + height="481" + label="Alpha" + layout="topleft" + left_delta="0" + name="Alpha" + top_delta="0" + width="389"> + <icon + follows="top|right" + height="16" + image_name="icon_lock.tga" + layout="topleft" + left="333" + mouse_opaque="true" + name="square" + top="5" + width="16" /> + <icon + height="16" + layout="topleft" + left_delta="-325" + mouse_opaque="true" + top_delta="3" + width="16" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_pad="2" + name="title" + top_delta="0" + width="355"> + [DESC] + </text> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="title_no_modify" + top_delta="0" + width="355"> + [DESC]: cannot modify + </text> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="title_loading" + top_delta="0" + width="355"> + [DESC]: loading... + </text> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="title_not_worn" + top_delta="0" + width="355"> + [DESC]: not worn + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="14" + layout="topleft" + left="8" + name="path" + top="24" + width="373"> + Located in [PATH] + </text> + <spinner + decimal_digits="0" + follows="left|top|right" + height="16" + increment="1" + initial_value="0" + label="Item" + label_width="30" + layout="topleft" + left_delta="2" + max_val="5" + name="index" + text_enabled_color="110, 15, 15, 255" + top_pad="6" + width="87" /> + <text + type="string" + length="1" + follows="left|top|right" + height="28" + layout="topleft" + left_delta="-2" + name="not worn instructions" + top_delta="2" + width="373"> + Put on a new alpha mask by dragging one from your inventory +to your avatar. Alternately, you create a new one from +scratch and wear it. + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="28" + layout="topleft" + left_delta="0" + name="no modify instructions" + top_delta="0" + width="373"> + You do not have permission to modify this wearable. + </text> + <text + type="string" + length="1" + bottom="486" + follows="left|top|right" + font="SansSerif" + halign="right" + height="28" + layout="topleft" + name="Item Action Label" + right="119" + width="100"> + Alpha: + </text> + <texture_picker + can_apply_immediately="true" + default_image_name="Default" + follows="left|top" + height="80" + label="Lower Alpha" + layout="topleft" + left="8" + name="Lower Alpha" + tool_tip="Click to choose a picture" + top="65" + width="64" /> + <check_box + control_name="LowerAlphaTextureInvisible" + follows="left" + height="16" + layout="topleft" + left_pad="6" + name="lower alpha texture invisible" + top_delta="4" + width="16" /> + <texture_picker + can_apply_immediately="true" + default_image_name="Default" + follows="left|top" + height="80" + label="Upper Alpha" + layout="topleft" + left="8" + name="Upper Alpha" + tool_tip="Click to choose a picture" + top="145" + width="64" /> + <check_box + control_name="UpperAlphaTextureInvisible" + follows="left" + height="16" + layout="topleft" + left_pad="6" + name="upper alpha texture invisible" + top_delta="4" + width="16" /> + <texture_picker + can_apply_immediately="true" + default_image_name="Default" + follows="left|top" + height="80" + label="Head Alpha" + layout="topleft" + left="8" + name="Head Alpha" + tool_tip="Click to choose a picture" + top="225" + width="64" /> + <check_box + control_name="HeadAlphaTextureInvisible" + follows="left" + height="16" + layout="topleft" + left_pad="6" + name="head alpha texture invisible" + top_delta="4" + width="16" /> + <texture_picker + can_apply_immediately="true" + default_image_name="Default" + follows="left|top" + height="80" + label="Eye Alpha" + layout="topleft" + left="8" + name="Eye Alpha" + tool_tip="Click to choose a picture" + top="305" + width="64" /> + <check_box + control_name="Eye AlphaTextureInvisible" + follows="left" + height="16" + layout="topleft" + left_pad="6" + name="eye alpha texture invisible" + top_delta="4" + width="16" /> + <texture_picker + can_apply_immediately="true" + default_image_name="Default" + follows="left|top" + height="80" + label="Hair Alpha" + layout="topleft" + left="8" + name="Hair Alpha" + tool_tip="Click to choose a picture" + top="385" + width="64" /> + <check_box + control_name="HairAlphaTextureInvisible" + follows="left" + height="16" + layout="topleft" + left_pad="6" + name="hair alpha texture invisible" + top_delta="4" + width="16" /> + <button + follows="left|top" + height="24" + label="Create New Alpha" + label_selected="Create New Alpha" + layout="topleft" + left="8" + name="Create New" + top="104" + width="120" /> + <button + follows="left|top" + height="20" + label="Take Off" + label_selected="Take Off" + layout="topleft" + left_delta="-4" + name="Take Off" + top_pad="332" + width="82" /> + <button + follows="right|bottom" + height="20" + label="Save" + label_selected="Save" + layout="topleft" + left_pad="37" + name="Save" + top_delta="-2" + width="82" /> + <button + follows="right|bottom" + height="20" + label="Save As..." + label_selected="Save As..." + layout="topleft" + left_pad="6" + name="Save As" + top_delta="0" + width="82" /> + <button + follows="right|bottom" + height="20" + label="Revert" + label_selected="Revert" + layout="topleft" + left_pad="6" + name="Revert" + top_delta="0" + width="82" /> + </panel> + <panel + border="true" + follows="left|top|right|bottom" + height="481" + label="Tattoo" + layout="topleft" + left_delta="0" + name="Tattoo" + top_delta="0" + width="389"> + <icon + follows="top|right" + height="16" + image_name="icon_lock.tga" + layout="topleft" + left="333" + mouse_opaque="true" + name="square" + top="5" + width="16" /> + <icon + height="16" + layout="topleft" + left_delta="-325" + mouse_opaque="true" + top_delta="3" + width="16" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_pad="2" + name="title" + top_delta="0" + width="355"> + [DESC] + </text> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="title_no_modify" + top_delta="0" + width="355"> + [DESC]: cannot modify + </text> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="title_loading" + top_delta="0" + width="355"> + [DESC]: loading... + </text> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="title_not_worn" + top_delta="0" + width="355"> + [DESC]: not worn + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="14" + layout="topleft" + left="8" + name="path" + top="24" + width="373"> + Located in [PATH] + </text> + <spinner + decimal_digits="0" + follows="left|top|right" + height="16" + increment="1" + initial_value="0" + label="Item" + label_width="30" + layout="topleft" + left_delta="2" + max_val="5" + name="index" + text_enabled_color="110, 15, 15, 255" + top_pad="6" + width="87" /> + <text + type="string" + length="1" + follows="left|top|right" + height="28" + layout="topleft" + left_delta="-2" + name="not worn instructions" + top_delta="2" + width="373"> + Put on a new tattoo by dragging one from your inventory +to your avatar. Alternately, you create a new one from +scratch and wear it. + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="28" + layout="topleft" + left_delta="0" + name="no modify instructions" + top_delta="0" + width="373"> + You do not have permission to modify this wearable. + </text> + <text + type="string" + length="1" + bottom="486" + follows="left|top|right" + font="SansSerif" + halign="right" + height="28" + layout="topleft" + name="Item Action Label" + right="119" + width="100"> + Tattoo: + </text> + <texture_picker + can_apply_immediately="true" + default_image_name="Default" + follows="left|top" + height="80" + label="Head Tattoo" + layout="topleft" + left="8" + name="Head Tattoo" + tool_tip="Click to choose a picture" + top="65" + width="64" /> + <texture_picker + can_apply_immediately="true" + default_image_name="Default" + follows="left|top" + height="80" + label="Upper Tattoo" + layout="topleft" + left_delta="0" + name="Upper Tattoo" + tool_tip="Click to choose a picture" + top_delta="80" + width="64" /> + <texture_picker + can_apply_immediately="true" + default_image_name="Default" + follows="left|top" + height="80" + label="Lower Tattoo" + layout="topleft" + left_delta="0" + name="Lower Tattoo" + tool_tip="Click to choose a picture" + top_delta="80" + width="64" /> + <button + follows="left|top" + height="24" + label="Create New Tattoo" + label_selected="Create New Tattoo" + layout="topleft" + left_delta="0" + name="Create New" + top_delta="-121" + width="120" /> + <button + follows="left|top" + height="20" + label="Take Off" + label_selected="Take Off" + layout="topleft" + left_delta="-4" + name="Take Off" + top_pad="332" + width="82" /> + <button + follows="right|bottom" + height="20" + label="Save" + label_selected="Save" + layout="topleft" + left_pad="37" + name="Save" + top_delta="-2" + width="82" /> + <button + follows="right|bottom" + height="20" + label="Save As..." + label_selected="Save As..." + layout="topleft" + left_pad="6" + name="Save As" + top_delta="0" + width="82" /> + <button + follows="right|bottom" + height="20" + label="Revert" + label_selected="Revert" + layout="topleft" + left_pad="6" + name="Revert" + top_delta="0" + width="82" /> + </panel> + </tab_container> + <scroll_container + follows="left|top|right|bottom" + height="382" + layout="topleft" + left="197" + mouse_opaque="false" + name="panel_container" + top="94" + width="292"> + <scrolling_panel_list + follows="left|bottom" + layout="topleft" + name="panel_list" /> + </scroll_container> + <button + bottom="536" + follows="right|bottom" + height="20" + label="Cancel" + label_selected="Cancel" + layout="topleft" + name="Cancel" + right="-10" + width="100" /> + <button + bottom="536" + follows="right|bottom" + height="20" + label="OK" + label_selected="OK" + layout="topleft" + name="Ok" + right="-116" + width="100" /> + <button + follows="left|bottom" + height="20" + label="Make Outfit..." + label_selected="Make Outfit..." + layout="topleft" + left_delta="-178" + name="Make Outfit" + top_delta="0" + width="100" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_day_cycle_options.xml b/indra/newview/skins/default/xui/en/floater_day_cycle_options.xml new file mode 100644 index 0000000000000000000000000000000000000000..9ca7172f81f0b0eab6e60c3bb41c20593be60c7e --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_day_cycle_options.xml @@ -0,0 +1,613 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + height="275" + layout="topleft" + name="Day Cycle Floater" + save_rect="true" + title="Day Cycle Editor" + width="646"> + <tab_container + follows="left|top" + height="255" + layout="topleft" + left="0" + name="Day Cycle Tabs" + tab_position="top" + top="20" + width="644"> + <panel + border="true" + follows="left|top|right|bottom" + height="255" + label="Day Cycle" + layout="topleft" + left="1" + mouse_opaque="false" + name="Day Cycle" + top="0" + width="642"> + <button + follows="left|top" + font="SansSerifSmall" + height="15" + label="?" + layout="topleft" + left="612" + name="WLDayCycleHelp" + top="3" + width="18" /> + <multi_slider + can_edit_text="true" + control_name="WLTimeSlider" + decimal_digits="0" + draw_track="false" + follows="bottom" + height="10" + increment="0.0833333" + initial_value="0" + layout="topleft" + left="20" + max_sliders="20" + max_val="24" + name="WLTimeSlider" + show_text="false" + top="25" + use_triangle="true" + width="525" /> + <multi_slider + can_edit_text="true" + control_name="WLDayCycleKeys" + decimal_digits="0" + follows="bottom" + height="10" + increment="0.0833333" + initial_value="0" + layout="topleft" + left_delta="0" + max_sliders="20" + max_val="24" + name="WLDayCycleKeys" + show_text="false" + top_pad="15" + width="525" /> + <text + type="string" + length="1" + bg_visible="true" + border_visible="true" + control_name="WL12am" + follows="left|top|right" + height="6" + layout="topleft" + left="8" + name="WL12am" + top="74" + width="55"> + 12am + </text> + <text + type="string" + length="1" + bg_visible="true" + border_visible="true" + control_name="WL3am" + follows="left|top|right" + height="6" + layout="topleft" + left_pad="10" + name="WL3am" + top_delta="0" + width="55"> + 3am + </text> + <text + type="string" + length="1" + bg_visible="true" + border_visible="true" + control_name="WL6am" + follows="left|top|right" + height="6" + layout="topleft" + left_pad="10" + name="WL6am" + top_delta="0" + width="55"> + 6am + </text> + <text + type="string" + length="1" + bg_visible="true" + border_visible="true" + control_name="WL9am" + follows="left|top|right" + height="6" + layout="topleft" + left_pad="10" + name="WL9amHash" + top_delta="0" + width="55"> + 9am + </text> + <text + type="string" + length="1" + bg_visible="true" + border_visible="true" + control_name="WL12pm" + follows="left|top|right" + height="6" + layout="topleft" + left_pad="10" + name="WL12pmHash" + top_delta="0" + width="55"> + 12pm + </text> + <text + type="string" + length="1" + bg_visible="true" + border_visible="true" + control_name="WL3pm" + follows="left|top|right" + height="6" + layout="topleft" + left_pad="10" + name="WL3pm" + top_delta="0" + width="55"> + 3pm + </text> + <text + type="string" + length="1" + bg_visible="true" + border_visible="true" + control_name="WL6pm" + follows="left|top|right" + height="6" + layout="topleft" + left_pad="10" + name="WL6pm" + top_delta="0" + width="55"> + 6pm + </text> + <text + type="string" + length="1" + bg_visible="true" + border_visible="true" + control_name="WL9pm" + follows="left|top|right" + height="6" + layout="topleft" + left_pad="10" + name="WL9pm" + top_delta="0" + width="55"> + 9pm + </text> + <text + type="string" + length="1" + bg_visible="true" + border_visible="true" + control_name="WL12am2" + follows="left|top|right" + height="6" + layout="topleft" + left_pad="10" + name="WL12am2" + top_delta="0" + width="55"> + 12am + </text> + <text + type="string" + length="1" + bg_visible="true" + border_visible="true" + control_name="WL12amHash" + follows="left|top|right" + font="SansSerif" + height="14" + layout="topleft" + left="20" + name="WL12amHash" + top="54" + width="4"> + | + </text> + <text + type="string" + length="1" + bg_visible="true" + border_visible="true" + control_name="WL3amHash" + follows="left|top|right" + font="SansSerif" + height="11" + layout="topleft" + left_pad="61" + name="WL3amHash" + top_delta="3" + width="4"> + I + </text> + <text + type="string" + length="1" + bg_visible="true" + border_visible="true" + control_name="WL6amHash" + follows="left|top|right" + font="SansSerif" + height="14" + layout="topleft" + left_pad="61" + name="WL6amHash" + top_delta="-3" + width="4"> + | + </text> + <text + type="string" + length="1" + bg_visible="true" + border_visible="true" + control_name="WL9amHash" + follows="left|top|right" + font="SansSerif" + height="11" + layout="topleft" + left_pad="61" + name="WL9amHash2" + top_delta="3" + width="4"> + I + </text> + <text + type="string" + length="1" + bg_visible="true" + border_visible="true" + control_name="WL12pmHash" + follows="left|top|right" + font="SansSerif" + height="14" + layout="topleft" + left_pad="61" + name="WL12pmHash2" + top_delta="-3" + width="4"> + | + </text> + <text + type="string" + length="1" + bg_visible="true" + border_visible="true" + control_name="WL3pmHash" + follows="left|top|right" + font="SansSerif" + height="11" + layout="topleft" + left_pad="61" + name="WL3pmHash" + top_delta="3" + width="4"> + I + </text> + <text + type="string" + length="1" + bg_visible="true" + border_visible="true" + control_name="WL6pmHash" + follows="left|top|right" + font="SansSerif" + height="14" + layout="topleft" + left_pad="61" + name="WL6pmHash" + top_delta="-3" + width="4"> + | + </text> + <text + type="string" + length="1" + bg_visible="true" + border_visible="true" + control_name="WL9pmHash" + follows="left|top|right" + font="SansSerif" + height="11" + layout="topleft" + left_pad="61" + name="WL9pmHash" + top_delta="3" + width="4"> + I + </text> + <text + type="string" + length="1" + bg_visible="true" + border_visible="true" + control_name="WL12amHash2" + follows="left|top|right" + font="SansSerif" + height="14" + layout="topleft" + left_pad="61" + name="WL12amHash2" + top_delta="-3" + width="4"> + | + </text> + <button + height="20" + label="Add Key" + label_selected="Add Key" + layout="topleft" + left="550" + name="WLAddKey" + top="20" + width="80" /> + <button + height="20" + label="Delete Key" + label_selected="Delete Key" + layout="topleft" + left_delta="0" + name="WLDeleteKey" + top_pad="5" + width="80" /> + <text + type="string" + length="1" + bg_visible="true" + border_visible="true" + control_name="DayCycleText" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left="20" + name="WLCurKeyFrameText" + top="104" + width="150"> + Key Frame Settings: + </text> + <text + type="string" + length="1" + bg_visible="true" + border_visible="true" + control_name="DayCycleText" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left="30" + name="WLCurKeyTimeText" + top="124" + width="100"> + Key Time: + </text> + <spinner + control_name="WLCurKeyHour" + decimal_digits="0" + follows="left|top" + height="16" + increment="1" + initial_value="0" + label="Hour" + label_width="30" + layout="topleft" + left_delta="0" + max_val="100" + name="WLCurKeyHour" + top_pad="4" + width="70" /> + <spinner + control_name="WLCurKeyMin" + decimal_digits="0" + follows="left|top" + height="16" + increment="5" + initial_value="0" + label="Min" + label_width="20" + layout="topleft" + left_pad="5" + max_val="55" + name="WLCurKeyMin" + top_delta="0" + width="60" /> + <text + type="string" + length="1" + bg_visible="true" + border_visible="true" + control_name="WLCurKeyTimeText" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left="30" + name="WLCurKeyTimeText2" + top="169" + width="120"> + Key Preset: + </text> + <combo_box + height="18" + label="Preset" + layout="topleft" + left_delta="0" + name="WLKeyPresets" + top_pad="7" + width="155" /> + <view_border + bevel_style="none" + follows="top|left" + height="115" + layout="topleft" + left="12" + top="101" + width="190" /> + <text + type="string" + length="1" + bg_visible="true" + border_visible="true" + control_name="DayCycleText" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left="220" + name="DayCycleText" + top="114" + width="120"> + Snap: + </text> + <combo_box + enabled="false" + height="18" + label="5 min" + layout="topleft" + left_delta="0" + name="WLSnapOptions" + top_pad="7" + width="70" /> + <text + type="string" + length="1" + bg_visible="true" + border_visible="true" + control_name="DayCycleText" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="DayCycleText2" + top_pad="9" + width="120"> + Length of Cycle: + </text> + <spinner + control_name="WLLengthOfDayHour" + decimal_digits="0" + follows="left|top" + height="16" + increment="1" + initial_value="0" + label="Hour" + label_width="30" + layout="topleft" + left_delta="0" + max_val="100" + name="WLLengthOfDayHour" + top_pad="4" + width="70" /> + <spinner + control_name="WLLengthOfDayMin" + decimal_digits="0" + follows="left|top" + height="16" + increment="1" + initial_value="0" + label="Min" + label_width="20" + layout="topleft" + left_pad="5" + max_val="59" + name="WLLengthOfDayMin" + top_delta="0" + width="60" /> + <spinner + control_name="WLLengthOfDaySec" + decimal_digits="0" + follows="left|top" + height="16" + increment="1" + initial_value="24" + label="Sec" + label_width="20" + layout="topleft" + left_pad="5" + max_val="59" + name="WLLengthOfDaySec" + top_delta="0" + width="60" /> + <text + type="string" + length="1" + bg_visible="true" + border_visible="true" + control_name="DayCycleText" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left="310" + name="DayCycleText3" + top="114" + width="120"> + Preview: + </text> + <button + height="20" + label="Play" + label_selected="Play" + layout="topleft" + left_delta="0" + name="WLAnimSky" + top_pad="5" + width="50" /> + <button + height="20" + label="Stop!" + label_selected="Stop" + layout="topleft" + left_pad="5" + name="WLStopAnimSky" + top_delta="0" + width="50" /> + <button + height="20" + label="Use Estate Time" + label_selected="Go to Estate Time" + layout="topleft" + left_pad="5" + name="WLUseLindenTime" + top_delta="0" + width="140" /> + <button + height="20" + label="Save Test Day" + label_selected="Save Test Day" + layout="topleft" + left="480" + name="WLSaveDayCycle" + top="175" + width="150" /> + <button + height="20" + label="Load Test Day" + label_selected="Load Test Day" + layout="topleft" + left_delta="0" + name="WLLoadDayCycle" + top_pad="5" + width="150" /> + </panel> + </tab_container> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_device_settings.xml b/indra/newview/skins/default/xui/en/floater_device_settings.xml new file mode 100644 index 0000000000000000000000000000000000000000..fa0cce3795a9bfc55c40a8ab8902cab7d61a1567 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_device_settings.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + height="260" + layout="topleft" + name="floater_device_settings" + title="Voice Chat Device Settings" + width="405"> + <panel + bottom="260" + filename="panel_audio_device.xml" + layout="topleft" + left="2" + name="device_settings" + right="-5" + top="20" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_env_settings.xml b/indra/newview/skins/default/xui/en/floater_env_settings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8bb67d0d4bb6950f95465e1a4e0bbc4708debd68 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_env_settings.xml @@ -0,0 +1,174 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + height="150" + layout="topleft" + name="Environment Editor Floater" + save_rect="true" + title="Environment Editor" + width="600"> + <floater.string + name="timeStr"> + [hour12,datetime,utc]:[min,datetime,utc] [ampm,datetime,utc] + </floater.string> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left="10" + name="EnvTimeText" + top="32" + width="140"> + Time of Day + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="16" + layout="topleft" + left="15" + name="EnvTimeText2" + top="62" + width="140"> + 12:00 PM + </text> + <icon + height="25" + image_name="icon_diurnal.tga" + layout="topleft" + left="85" + name="EnvDayCycle" + top="30" + width="200" /> + <slider + control_name="EnvTimeSlider" + decimal_digits="2" + follows="left" + height="10" + increment="0.0069444" + initial_value="0.7" + layout="topleft" + left_delta="0" + max_val="0.99" + name="EnvTimeSlider" + show_text="false" + top_pad="10" + width="200" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left="10" + name="EnvCloudText" + top="86" + width="140"> + Cloud Cover + </text> + <slider + control_name="EnvCloudSlider" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0.7" + layout="topleft" + left_delta="75" + name="EnvCloudSlider" + top_delta="4" + width="210" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left="310" + name="EnvWaterColorText" + top="39" + width="140"> + Water Color + </text> + <color_swatch + border_color="0.45098 0.517647 0.607843 1" + can_apply_immediately="true" + color="0.5 0.5 0.5 1" + follows="left|top" + height="50" + layout="topleft" + left="390" + name="EnvWaterColor" + tool_tip="Click to open Color Picker" + top="30" + width="40" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left="310" + name="EnvWaterFogText" + top="86" + width="140"> + Water Fog + </text> + <slider + control_name="EnvWaterFogSlider" + decimal_digits="2" + follows="left" + height="10" + initial_value="0" + layout="topleft" + left_delta="75" + max_val="10" + name="EnvWaterFogSlider" + top_delta="4" + width="210" /> + <button + follows="left|top" + font="SansSerifSmall" + height="20" + label="Use Estate Time" + layout="topleft" + left="8" + name="EnvUseEstateTimeButton" + top="120" + width="137" /> + <button + follows="left|top" + font="SansSerifSmall" + height="20" + label="Advanced Sky" + layout="topleft" + left_pad="9" + name="EnvAdvancedSkyButton" + top_delta="0" + width="137" /> + <button + follows="left|top" + font="SansSerifSmall" + height="20" + label="Advanced Water" + layout="topleft" + left_pad="9" + name="EnvAdvancedWaterButton" + top_delta="0" + width="137" /> + <button + follows="left|top" + height="18" + label="?" + layout="topleft" + left="570" + name="EnvSettingsHelpButton" + top="22" + width="18" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_font_test.xml b/indra/newview/skins/default/xui/en/floater_font_test.xml new file mode 100644 index 0000000000000000000000000000000000000000..8babbaa2733cef97e51c8dd46d7ab94c50eaa549 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_font_test.xml @@ -0,0 +1,336 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_resize="true" + height="800" + layout="topleft" + min_height="175" + min_width="154" + name="contents" + title="Font Test" + width="500"> + <text + type="string" + length="1" + bottom_delta="40" + follows="left|top|right" + height="16" + layout="topleft" + left="16"> + SansSerifSmall + </text> + <text + type="string" + length="1" + bottom_delta="20" + follows="left|top|right" + font="SansSerifMedium" + height="16" + layout="topleft" + left="16"> + SansSerifMedium + </text> + <text + type="string" + length="1" + bottom_delta="20" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left="16"> + SansSerif, no size or style (should be same as medium) + </text> + <text + type="string" + length="1" + bottom_delta="20" + follows="left|top|right" + font="SansSerifLarge" + height="16" + layout="topleft" + left="16"> + SansSerifLarge + </text> + <text + type="string" + length="1" + bottom_delta="36" + follows="left|top|right" + font="SansSerifHuge" + height="32" + layout="topleft" + left="16"> + SansSerifHuge + </text> + <text + type="string" + length="1" + bottom_delta="40" + follows="left|top|right" + font="Monospace" + height="16" + layout="topleft" + left="16"> + Monospace + </text> + <text + type="string" + length="1" + bottom_delta="20" + follows="left|top|right" + font="Monospace" + font.size="Large" + height="16" + layout="topleft" + left="16"> + Monospace size=Large + </text> + <text + type="string" + length="1" + bottom_delta="20" + follows="left|top|right" + font="SansSerifLarge" + font.style="BOLD" + height="16" + layout="topleft" + left="16"> + SansSerifLarge style=BOLD + </text> + <text + type="string" + length="1" + bottom_delta="20" + follows="left|top|right" + font="SansSerifBold" + height="16" + layout="topleft" + left="16"> + SansSerifBold + </text> + <text + type="string" + length="1" + bottom_delta="20" + follows="left|top|right" + font="SansSerif" + font.style="BOLD" + height="16" + layout="topleft" + left="16"> + SansSerif style=BOLD (should be same as SansSerifBold) + </text> + <text + type="string" + length="1" + bottom_delta="20" + follows="left|top|right" + font="SansSerif" + font.style="ITALIC" + height="16" + layout="topleft" + left="16"> + SansSerif style=ITALIC + </text> + <text + type="string" + length="1" + bottom_delta="20" + follows="left|top|right" + font="SansSerif" + font.style="BOLD|ITALIC" + height="16" + layout="topleft" + left="16"> + SansSerif style=BOLD|ITALIC + </text> + <text + type="string" + length="1" + bottom_delta="20" + follows="left|top|right" + font="SansSerif" + font.style="BOLD|ITALIC" + height="16" + layout="topleft" + left="16"> + SansSerif style=BOLD|ITALIC shadow=soft + </text> + <text + type="string" + length="1" + bottom_delta="20" + follows="left|top|right" + font="SansSerif" + font.style="UNDERLINE" + height="16" + layout="topleft" + left="16"> + SansSerif style=UNDERLINE + </text> + <text + type="string" + length="1" + bottom_delta="20" + follows="left|top|right" + font="SansSerif" + font_shadow="hard" + height="16" + layout="topleft" + left="16"> + SansSerif style=hard + </text> + <text + type="string" + length="1" + bottom_delta="20" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left="16"> + SansSerif shadow=soft + </text> + <text + type="string" + length="1" + bottom_delta="20" + follows="left|top|right" + font="DejaVu" + height="16" + layout="topleft" + left="16"> + DejaVu + </text> + <text + type="string" + length="1" + bottom_delta="20" + follows="left|top|right" + font="DejaVu" + font.style="BOLD" + height="16" + layout="topleft" + left="16"> + DejaVu style=BOLD + </text> + <text + type="string" + length="1" + bottom_delta="20" + follows="left|top|right" + font="DejaVu" + font.style="ITALIC" + height="16" + layout="topleft" + left="16"> + DejaVu style=ITALIC + </text> + <text + type="string" + length="1" + bottom_delta="20" + follows="left|top|right" + font="DejaVu" + font.style="BOLD|ITALIC" + height="16" + layout="topleft" + left="16"> + DejaVu style=BOLD|ITALIC + </text> + <text + type="string" + length="1" + bottom_delta="20" + follows="left|top|right" + font="DejaVu" + font.size="Large" + font.style="BOLD|ITALIC" + height="16" + layout="topleft" + left="16"> + DejaVu size=Large style=BOLD|ITALIC + </text> + <text + type="string" + length="1" + bottom_delta="20" + follows="left|top|right" + font="Helvetica" + height="16" + layout="topleft" + left="16"> + Helvetica + </text> + <text + type="string" + length="1" + bottom_delta="20" + follows="left|top|right" + font="Helvetica" + font.style="BOLD" + height="16" + layout="topleft" + left="16"> + Helvetica style=BOLD + </text> + <text + type="string" + length="1" + bottom_delta="20" + follows="left|top|right" + font="Helvetica" + font.style="ITALIC" + height="16" + layout="topleft" + left="16"> + Helvetica style=ITALIC + </text> + <text + type="string" + length="1" + bottom_delta="20" + follows="left|top|right" + font="Helvetica" + font.style="BOLD|ITALIC" + height="16" + layout="topleft" + left="16"> + Helvetica style=BOLD|ITALIC + </text> + <text + type="string" + length="1" + bottom_delta="20" + follows="left|top|right" + font="Helvetica" + font.size="Large" + font.style="BOLD|ITALIC" + height="16" + layout="topleft" + left="16"> + Helvetica size=Large style=BOLD|ITALIC + </text> + <text + type="string" + length="1" + bottom_delta="20" + follows="left|top|right" + font="OverrideTest" + height="16" + layout="topleft" + left="16" + name="linea"> + OverrideTest, should be times, from default/xui/en + </text> + <text + type="string" + length="1" + bottom_delta="20" + follows="left|top|right" + height="16" + layout="topleft" + left="16"> + BogusFontName + </text> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_gesture.xml b/indra/newview/skins/default/xui/en/floater_gesture.xml new file mode 100644 index 0000000000000000000000000000000000000000..c4d024ae8b91bd005908d99e234caa83f5011ad7 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_gesture.xml @@ -0,0 +1,91 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_resize="true" + height="465" + layout="topleft" + min_height="200" + min_width="350" + name="gestures" + title="Active Gestures" + width="350"> + <floater.string + name="loading"> + Loading... + </floater.string> + <floater.string + name="playing"> + (Playing) + </floater.string> + <text + type="string" + length="1" + bottom="30" + follows="top|left" + layout="topleft" + left="15" + name="help_label"> + Double-click a gesture to play animations and sounds. + </text> + <scroll_list + bottom_delta="390" + draw_heading="true" + follows="top|left|bottom|right" + height="380" + layout="topleft" + left="15" + name="gesture_list" + right="-15"> + <scroll_list.columns + label="Trigger" + name="trigger" + width="70" /> + <scroll_list.columns + label="Key" + name="shortcut" + width="70" /> + <scroll_list.columns + label="" + name="key" + width="-1" /> + <scroll_list.columns + label="Name" + name="name" + width="160" /> + </scroll_list> + <button + follows="bottom|right" + height="20" + label="New" + layout="topleft" + left_delta="0" + name="new_gesture_btn" + top_pad="10" + width="83" /> + <button + follows="bottom|right" + height="20" + label="Edit" + layout="topleft" + left_pad="6" + name="edit_btn" + top_delta="0" + width="83" /> + <button + follows="bottom|right" + height="20" + label="Play" + layout="topleft" + left_pad="6" + name="play_btn" + top_delta="0" + width="83" /> + <button + follows="bottom|right" + height="20" + label="Stop" + layout="topleft" + left_delta="0" + name="stop_btn" + top_delta="0" + width="83" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_god_tools.xml b/indra/newview/skins/default/xui/en/floater_god_tools.xml new file mode 100644 index 0000000000000000000000000000000000000000..e35ab3ea49b37e025b33d1bdd0e09837cbcb4272 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_god_tools.xml @@ -0,0 +1,685 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + height="384" + layout="topleft" + name="godtools floater" + title="God Tools" + width="400"> + <tab_container + follows="left|top" + height="364" + layout="topleft" + left="0" + name="GodTools Tabs" + tab_position="top" + top="20" + width="400"> + <panel + border="true" + follows="left|top|right|bottom" + height="347" + label="Grid" + layout="topleft" + left="1" + mouse_opaque="false" + name="grid" + top="16" + width="398"> + <button + follows="left|top" + height="20" + label="Kick all users" + label_selected="Kick all users" + layout="topleft" + left="10" + name="Kick all users" + top="8" + width="100" /> + <button + follows="left|top" + height="20" + label="Flush This Region's Map Visibility Caches" + label_selected="Flush This Region's Map Visibility Caches" + layout="topleft" + left_delta="0" + name="Flush This Region's Map Visibility Caches" + top_pad="8" + width="250" /> + </panel> + <panel + border="true" + follows="left|top|right|bottom" + height="347" + label="Region" + layout="topleft" + left_delta="0" + mouse_opaque="false" + name="region" + top_delta="0" + width="398"> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="10" + name="Sim Name:" + top="10" + width="50"> + Sim Name: + </text> + <line_editor + border_style="line" + border_thickness="1" + follows="left|top|right" + height="16" + layout="topleft" + left_pad="10" + max_length="63" + name="region name" + top_delta="0" + width="208" /> + <check_box + height="16" + label="Prelude" + layout="topleft" + left="10" + name="check prelude" + tool_tip="Set this to make the region a prelude." + top="30" + width="180" /> + <check_box + height="16" + label="Fixed Sun" + layout="topleft" + left_delta="0" + name="check fixed sun" + tool_tip="Fix the sun position (like in Region/Estate > Terrain." + top_pad="4" + width="180" /> + <check_box + height="16" + label="Reset Home On Teleport" + layout="topleft" + left_delta="0" + name="check reset home" + tool_tip="When resident teleports out, reset their home to the destination position." + top_pad="4" + width="180" /> + <check_box + height="16" + label="Visible" + layout="topleft" + left_delta="0" + name="check visible" + tool_tip="Set this to make the region visible to non-gods." + top_pad="4" + width="180" /> + <check_box + height="16" + label="Damage" + layout="topleft" + left_delta="0" + name="check damage" + tool_tip="Set this to enable damage in this region." + top_pad="4" + width="180" /> + <check_box + height="16" + label="Block Traffic Tracking" + layout="topleft" + left_delta="0" + name="block dwell" + tool_tip="Set this to make the region not compute traffic." + top_pad="4" + width="180" /> + <check_box + height="16" + label="Block Terraform" + layout="topleft" + left_delta="0" + name="block terraform" + tool_tip="Set this to disallow people terraforming their land" + top_pad="4" + width="180" /> + <check_box + height="16" + label="Sandbox" + layout="topleft" + left_delta="0" + name="is sandbox" + tool_tip="Toggle whether this is a sandbox region." + top_pad="4" + width="180" /> + <button + follows="top|right" + font="SansSerifSmall" + height="20" + label="Bake Terrain" + label_selected="Bake Terrain" + layout="topleft" + left_delta="-2" + name="Bake Terrain" + tool_tip="Save the current terrain as default." + top_pad="32" + width="110" /> + <button + follows="top|right" + font="SansSerifSmall" + height="20" + label="Revert Terrain" + label_selected="Revert Terrain" + layout="topleft" + left_delta="0" + name="Revert Terrain" + tool_tip="Replace the current terrain with default." + top_pad="4" + width="110" /> + <button + follows="top|right" + font="SansSerifSmall" + height="20" + label="Swap Terrain" + label_selected="Swap Terrain" + layout="topleft" + left_delta="0" + name="Swap Terrain" + tool_tip="Swap current terrain with default." + top_pad="4" + width="110" /> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="16" + layout="topleft" + left="200" + name="estate id" + top="30" + width="190"> + Estate ID: + </text> + <line_editor + border_style="line" + border_thickness="1" + follows="top|right" + height="16" + layout="topleft" + left_delta="108" + max_length="10" + name="estate" + top_delta="0" + width="50" /> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="16" + layout="topleft" + left="200" + name="parent id" + top="50" + width="190"> + Parent ID: + </text> + <line_editor + border_style="line" + border_thickness="1" + follows="top|right" + height="16" + layout="topleft" + left_delta="108" + max_length="10" + name="parentestate" + tool_tip="This is the parent estate for this region" + top_delta="0" + width="50" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="200" + name="Grid Pos: " + top="70" + width="190"> + Grid Pos: + </text> + <line_editor + border_style="line" + border_thickness="1" + follows="top|right" + height="16" + layout="topleft" + left_delta="88" + max_length="10" + name="gridposx" + tool_tip="This is the grid x position for this region" + top_delta="0" + width="50" /> + <line_editor + border_style="line" + border_thickness="1" + follows="top|right" + height="16" + layout="topleft" + left_pad="10" + max_length="10" + name="gridposy" + tool_tip="This is the grid y position for this region" + top_delta="0" + width="40" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="200" + name="Redirect to Grid: " + top="90" + width="190"> + Redirect to Grid: + </text> + <line_editor + border_style="line" + border_thickness="1" + follows="top|right" + height="16" + layout="topleft" + left_delta="88" + max_length="10" + name="redirectx" + top_delta="0" + width="50" /> + <line_editor + border_style="line" + border_thickness="1" + follows="top|right" + height="16" + layout="topleft" + left_pad="10" + max_length="10" + name="redirecty" + top_delta="0" + width="40" /> + <spinner + follows="top|right" + height="16" + initial_value="1" + layout="topleft" + left="308" + max_val="4" + name="billable factor" + top="110" + width="80" /> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="16" + layout="topleft" + left_delta="-108" + name="billable factor text" + top_delta="0" + width="110"> + Billable Factor: + </text> + <spinner + follows="top|right" + height="16" + increment="1" + initial_value="1" + layout="topleft" + left="308" + max_val="100" + name="land cost" + top="130" + width="80" /> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="16" + layout="topleft" + left_delta="-108" + name="land cost text" + top_delta="0" + width="110"> + L$ per sq. meter: + </text> + <button + follows="top|right" + font="SansSerifSmall" + height="20" + label="Refresh" + label_selected="Refresh" + layout="topleft" + left="278" + name="Refresh" + tool_tip="Click here to refresh the above information." + top="150" + width="110" /> + <button + follows="top|right" + font="SansSerifSmall" + height="20" + label="Apply" + label_selected="Apply" + layout="topleft" + left_delta="0" + name="Apply" + tool_tip="Click here to apply any changes from above." + top_pad="36" + width="110" /> + <button + follows="top|right" + font="SansSerifSmall" + height="20" + label="Select Region" + label_selected="Select Region" + layout="topleft" + left="128" + name="Select Region" + tool_tip="Select the whole region with the land tool." + top="238" + width="110" /> + <button + follows="top|right" + font="SansSerifSmall" + height="20" + label="Autosave now" + label_selected="Autosave now" + layout="topleft" + left_delta="0" + name="Autosave now" + tool_tip="Save gzipped state to autosave directory." + top_pad="4" + width="110" /> + </panel> + <panel + border="true" + follows="left|top|right|bottom" + height="347" + label="Objects" + layout="topleft" + left_delta="0" + mouse_opaque="false" + name="objects" + top_delta="0" + width="398"> + <panel.string + name="no_target"> + (no target) + </panel.string> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="10" + name="Sim Name:" + top="10" + width="50"> + Sim Name: + </text> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_pad="10" + name="region name" + top_delta="0" + width="320"> + Welsh + </text> + <check_box + height="16" + label="Disable Scripts" + layout="topleft" + left="10" + name="disable scripts" + tool_tip="Set this to disable all scripts in this region" + top="30" + width="110" /> + <check_box + height="16" + label="Disable Collisions" + layout="topleft" + left_pad="10" + name="disable collisions" + tool_tip="Set this to disable non-agent collisions in this region" + top_delta="0" + width="121" /> + <check_box + height="16" + label="Disable Physics" + layout="topleft" + left_delta="120" + name="disable physics" + tool_tip="Set this to disable all physics in this region" + top_delta="0" + width="130" /> + <button + follows="top|right" + font="SansSerifSmall" + height="20" + label="Apply" + label_selected="Apply" + layout="topleft" + left="278" + name="Apply" + tool_tip="Click here to apply any changes from above." + top="54" + width="110" /> + <button + follows="top|right" + font="SansSerifSmall" + height="20" + label="Set Target" + label_selected="Set Target" + layout="topleft" + left="8" + name="Set Target" + tool_tip="Set the target avatar for object deletion." + top="78" + width="110" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_pad="12" + name="target_avatar_name" + top_delta="0" + width="260"> + (no target) + </text> + <button + follows="top|right" + font="SansSerifSmall" + height="20" + label="Delete Target's Scripted Objects On Others Land" + label_selected="Delete Target's Scripted Objects On Others Land" + layout="topleft" + left="8" + name="Delete Target's Scripted Objects On Others Land" + tool_tip="Delete all scripted objects owned by the target on land not owned by the target. (no copy) objects will be returned." + top="126" + width="380" /> + <button + follows="top|right" + font="SansSerifSmall" + height="20" + label="Delete Target's Scripted Objects On *Any* Land" + label_selected="Delete Target's Scripted Objects On *Any* Land" + layout="topleft" + left_delta="0" + name="Delete Target's Scripted Objects On *Any* Land" + tool_tip="Delete all scripted objects owned by the target in this region. (no copy) objects will be returned." + top_pad="28" + width="380" /> + <button + follows="top|right" + font="SansSerifSmall" + height="20" + label="Delete *ALL* Of Target's Objects" + label_selected="Delete *ALL* Of Target's Objects" + layout="topleft" + left_delta="0" + name="Delete *ALL* Of Target's Objects" + tool_tip="Delete all objects owned by the target in this region. (no copy) objects will be returned." + top_pad="28" + width="380" /> + <button + follows="top|right" + font="SansSerifSmall" + height="20" + label="Get Top Colliders" + label_selected="Get Top Colliders" + layout="topleft" + left_delta="0" + name="Get Top Colliders" + tool_tip="Gets list of objects experiencing the most narrowphase callbacks." + top_pad="28" + width="110" /> + <button + follows="top|right" + font="SansSerifSmall" + height="20" + label="Get Top Scripts" + label_selected="Get Top Scripts" + layout="topleft" + left_delta="0" + name="Get Top Scripts" + tool_tip="Gets list of objects spending the most time running scripts." + top_pad="4" + width="110" /> + <button + follows="top|right" + font="SansSerifSmall" + height="20" + label="Scripts digest" + label_selected="Scripts digest" + layout="topleft" + left_delta="0" + name="Scripts digest" + tool_tip="Gets a list of all scripts and number of occurences of each." + top_pad="4" + width="110" /> + </panel> + <panel + border="true" + follows="left|top|right|bottom" + height="347" + label="Request" + layout="topleft" + left_delta="0" + name="request" + top_delta="0" + width="398"> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="10" + name="Destination:" + top="4" + width="80"> + Destination: + </text> + <combo_box + height="16" + layout="topleft" + left_pad="10" + name="destination" + top_delta="0" + width="290"> + <combo_box.item + label="Selection" + value="Selection" /> + <combo_box.item + label="Agent Region" + value="Agent Region" /> + </combo_box> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="10" + name="Request:" + top="28" + width="80"> + Request: + </text> + <combo_box + allow_text_entry="true" + height="16" + layout="topleft" + left_pad="10" + name="request" + top_delta="0" + width="290"> + <combo_box.item + label="colliders <steps>" + value="colliders <steps>" /> + <combo_box.item + label="scripts <count>,<optional pattern>" + value="scripts <count>,<optional pattern>" /> + <combo_box.item + label="objects <pattern>" + value="objects <pattern>" /> + <combo_box.item + label="rez <asset_id>" + value="rez <asset_id>" /> + </combo_box> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="10" + name="Parameter:" + top="52" + width="80"> + Parameter: + </text> + <line_editor + border_style="line" + border_thickness="1" + follows="left|top" + height="16" + layout="topleft" + left_pad="10" + max_length="63" + name="parameter" + top_delta="0" + width="290" /> + <button + follows="left|top" + height="20" + label="Make Request" + label_selected="Make Request" + layout="topleft" + left="10" + name="Make Request" + top="96" + width="100" /> + </panel> + </tab_container> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_hardware_settings.xml b/indra/newview/skins/default/xui/en/floater_hardware_settings.xml new file mode 100644 index 0000000000000000000000000000000000000000..f0e2911fd82e95032eca51f85a07bc231dad2bae --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_hardware_settings.xml @@ -0,0 +1,158 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + height="224" + layout="topleft" + name="Hardware Settings Floater" + title="Hardware Settings" + width="500"> + <text + type="string" + length="1" + follows="left|top" + height="12" + layout="topleft" + left="10" + name="Filtering:" + top="30" + width="128"> + Filtering: + </text> + <check_box + control_name="RenderAnisotropic" + height="16" + label="Anisotropic Filtering (slower when enabled)" + layout="topleft" + left_pad="10" + name="ani" + top_delta="0" + width="256" /> + <text + type="string" + length="1" + follows="left|top" + height="12" + layout="topleft" + left="10" + name="Antialiasing:" + top="49" + width="128"> + Antialiasing: + </text> + <combo_box + control_name="RenderFSAASamples" + height="16" + initial_value="false" + label="Antialiasing" + layout="topleft" + left_pad="10" + name="fsaa" + top_delta="0" + width="64"> + <combo_box.item + label="Disabled" + value="0" /> + <combo_box.item + label="2x" + value="2" /> + <combo_box.item + label="4x" + value="4" /> + <combo_box.item + label="8x" + value="8" /> + <combo_box.item + label="16x" + value="16" /> + </combo_box> + <spinner + control_name="RenderGamma" + decimal_digits="2" + follows="left|top" + height="16" + increment="0.01" + initial_value="1" + label="Gamma:" + label_width="138" + layout="topleft" + left="10" + max_val="2" + name="gamma" + top="70" + width="202" /> + <text + type="string" + length="1" + follows="left|top" + height="12" + layout="topleft" + left_pad="10" + name="(brightness, lower is brighter)" + top_delta="2" + width="315"> + (brightness, lower is brighter, 0=use default) + </text> + <text + type="string" + length="1" + follows="left|top" + height="12" + layout="topleft" + left="10" + name="Enable VBO:" + top="92" + width="128"> + Enable VBO: + </text> + <check_box + control_name="RenderVBOEnable" + height="16" + initial_value="true" + label="Enable OpenGL Vertex Buffer Objects" + layout="topleft" + left_pad="10" + name="vbo" + tool_tip="Enabling this on modern hardware gives a performance gain. However, older hardware often has poor implementations of VBOs and you may get crashes when this is enabled." + top_delta="1" + width="315" /> + <slider + control_name="TextureMemory" + decimal_digits="0" + follows="left|top" + height="16" + increment="16" + initial_value="32" + label="Texture Memory (MB):" + label_width="135" + layout="topleft" + left="10" + max_val="4096" + name="GrapicsCardTextureMemory" + tool_tip="Amount of memory to allocate for textures. Defaults to Video Card Memory. Reducing this may improve performance but may also make textures blurry." + top="114" + width="300" /> + <spinner + control_name="RenderFogRatio" + decimal_digits="1" + follows="left|top" + height="16" + initial_value="4" + label="Fog Distance Ratio:" + label_width="138" + layout="topleft" + left_delta="0" + max_val="10" + min_val="0.5" + name="fog" + top_pad="8" + width="202" /> + <button + follows="right|bottom" + height="20" + label="OK" + label_selected="OK" + layout="topleft" + left="-110" + name="OK" + top="194" + width="90" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_hud.xml b/indra/newview/skins/default/xui/en/floater_hud.xml new file mode 100644 index 0000000000000000000000000000000000000000..f62b7eece0b25ec797ef73c9c5691453108dc989 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_hud.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_minimize="false" + height="292" + layout="topleft" + name="floater_hud" + title="Tutorial" + width="362"> + <web_browser + border_visible="false" + caret_color="1 1 1 1" + follows="top|left|bottom|right" + height="265" + layout="topleft" + left="1" + name="floater_hud_browser" + start_url="data:text/html,%3Chtml%3E%3Chead%3E%3C/head%3E%3Cbody bgcolor=%22#000000%22 text=%22ffffff%22%3E%3Ch1%3E%3Ctt%3E%0D%0A%0D%0ALoading...%3C/tt%3E%3C/h1%3E%3C/body%3E%3C/html%3E" + top="26" + width="360" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_im.xml b/indra/newview/skins/default/xui/en/floater_im.xml new file mode 100644 index 0000000000000000000000000000000000000000..7493a9a90d7ef86dfaab3a470e99396f595efb23 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_im.xml @@ -0,0 +1,78 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<multi_floater + can_resize="true" + follows="left|bottom" + height="422" + layout="topleft" + min_height="130" + min_width="350" + name="im_floater" + save_rect="true" + title="Instant Message" + width="419"> + <multi_floater.string + name="only_user_message"> + You are the only user in this session. + </multi_floater.string> + <multi_floater.string + name="offline_message"> + [FIRST] [LAST] is offline. + </multi_floater.string> + <multi_floater.string + name="invite_message"> + Click the [BUTTON NAME] button to accept/connect to this voice chat. + </multi_floater.string> + <multi_floater.string + name="muted_message"> + You have muted this resident. Sending a message will automatically unmute them. + </multi_floater.string> + <multi_floater.string + name="generic_request_error"> + Error making request, please try again later. + </multi_floater.string> + <multi_floater.string + name="insufficient_perms_error"> + You do not have sufficient permissions. + </multi_floater.string> + <multi_floater.string + name="session_does_not_exist_error"> + The session no longer exists + </multi_floater.string> + <multi_floater.string + name="no_ability_error"> + You do not have that ability. + </multi_floater.string> + <multi_floater.string + name="not_a_mod_error"> + You are not a session moderator. + </multi_floater.string> + <multi_floater.string + name="muted_error"> + A group moderator disabled your text chat. + </multi_floater.string> + <multi_floater.string + name="add_session_event"> + Unable to add users to chat session with [RECIPIENT]. + </multi_floater.string> + <multi_floater.string + name="message_session_event"> + Unable to send your message to the chat session with [RECIPIENT]. + </multi_floater.string> + <multi_floater.string + name="removed_from_group"> + You have been removed from the group. + </multi_floater.string> + <multi_floater.string + name="close_on_no_ability"> + You no longer have the ability to be in the chat session. + </multi_floater.string> + <tab_container + follows="left|top|right|bottom" + height="406" + layout="topleft" + left="1" + name="Preview Tabs" + tab_position="bottom" + top="16" + width="417" /> +</multi_floater> diff --git a/indra/newview/skins/default/xui/en/floater_image_preview.xml b/indra/newview/skins/default/xui/en/floater_image_preview.xml new file mode 100644 index 0000000000000000000000000000000000000000..907376b1e92f42bdbeb7f9aeeb53ddbcad7e407c --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_image_preview.xml @@ -0,0 +1,125 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_minimize="false" + height="440" + layout="topleft" + name="Image Preview" + width="300"> + <text + type="string" + length="1" + bottom_delta="40" + follows="top|left" + height="15" + layout="topleft" + left="10" + name="name_label"> + Name: + </text> + <line_editor + follows="top|left|right" + height="19" + layout="topleft" + left_delta="0" + name="name_form" + top_pad="5" + width="280" /> + <text + type="string" + length="1" + bottom_delta="20" + follows="top|left" + height="15" + layout="topleft" + name="description_label"> + Description: + </text> + <line_editor + follows="top|left|right" + height="19" + layout="topleft" + left_delta="0" + name="description_form" + top_pad="5" + width="280" /> + <text + type="string" + length="1" + bottom_delta="20" + follows="top|left" + height="15" + layout="topleft" + name="preview_label"> + Preview image as: + </text> + <combo_box + height="18" + label="Clothing Type" + layout="topleft" + left_delta="110" + name="clothing_type_combo" + top_delta="3" + width="160"> + <combo_box.item + label="Image" /> + <combo_box.item + label="Hair" /> + <combo_box.item + label="Female Head" /> + <combo_box.item + label="Female Upper Body" /> + <combo_box.item + label="Female Lower Body" /> + <combo_box.item + label="Male Head" /> + <combo_box.item + label="Male Upper Body" /> + <combo_box.item + label="Male Lower Body" /> + <combo_box.item + label="Skirt" /> + <combo_box.item + label="Sculpted Prim" /> + </combo_box> + <text + type="string" + length="1" + bottom="190" + follows="top|left" + layout="topleft" + left="10" + name="bad_image_text"> + Unable to read image. + +Try saving image as 24 bit Targa (.tga). + </text> + <check_box + control_name="LosslessJ2CUpload" + enabled="false" + follows="bottom|left" + height="16" + label="Use lossless compression" + layout="topleft" + left_delta="2" + name="lossless_check" + top_pad="197" + width="280" /> + <button + follows="bottom|right" + height="20" + label="Cancel" + layout="topleft" + left="165" + name="cancel_btn" + top="410" + width="125" /> + <button + follows="bottom|left" + height="20" + label="Upload (L$[AMOUNT])" + layout="topleft" + left_delta="-150" + name="ok_btn" + top_delta="0" + width="125" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_incoming_call.xml b/indra/newview/skins/default/xui/en/floater_incoming_call.xml new file mode 100644 index 0000000000000000000000000000000000000000..5c4649276a15291b73ee6610963d32b5458a80ed --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_incoming_call.xml @@ -0,0 +1,67 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_close="false" + can_minimize="false" + can_tear_off="false" + height="200" + layout="topleft" + name="incoming call" + title="Unknown Person is calling" + width="240"> + <floater.string + name="VoiceInviteP2P"> + is calling. + </floater.string> + <floater.string + name="VoiceInviteAdHoc"> + has joined a Voice Chat call with a conference chat. + </floater.string> + <avatar_icon + enabled="false" + follows="left|top" + height="36" + image_name="icon_avatar_online.tga" + layout="topleft" + left_delta="19" + top="35" + width="36" /> + <text_editor + font="SansSerif" + height="64" + hide_border="true" + hide_scrollbar="true" + layout="topleft" + left="77" + max_length="2147483647" + name="caller name" + read_only="true" + top="21" + width="163" + word_wrap="true" /> + <button + height="24" + label="Accept" + label_selected="Accept" + layout="topleft" + left="70" + name="Accept" + top="92" + width="100" /> + <button + height="24" + label="Reject" + label_selected="Reject" + layout="topleft" + left_delta="0" + name="Reject" + top_pad="12" + width="100" /> + <button + height="24" + label="Start IM" + layout="topleft" + left_delta="0" + name="Start IM" + top_pad="12" + width="100" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_inspect.xml b/indra/newview/skins/default/xui/en/floater_inspect.xml new file mode 100644 index 0000000000000000000000000000000000000000..ed3b4f00f22808dc3f1deb9e12e723dad49e5ac8 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_inspect.xml @@ -0,0 +1,64 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_resize="true" + height="300" + layout="topleft" + min_height="300" + min_width="400" + name="inspect" + save_rect="true" + title="Inspect Objects" + width="400"> + <floater.string + name="timeStamp"> + [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local] + </floater.string> + <scroll_list + bottom="270" + column_padding="0" + draw_heading="true" + follows="top|right|left|bottom" + layout="topleft" + left="10" + name="object_list" + right="-10" + tool_tip="Select an object from this list to highlight it in-world" + top="20"> + <scroll_list.columns + dynamicwidth="true" + label="Object Name" + name="object_name" /> + <scroll_list.columns + dynamicwidth="true" + label="Owner Name" + name="owner_name" /> + <scroll_list.columns + dynamicwidth="true" + label="Creator Name" + name="creator_name" /> + <scroll_list.columns + label="Creation Date" + name="creation_date" + width="150" /> + </scroll_list> + <button + follows="left|bottom" + height="20" + label="See Owner Profile..." + layout="topleft" + left_delta="0" + name="button owner" + tool_tip="See profile of the highlighted object's owner" + top_pad="5" + width="150" /> + <button + follows="left|bottom" + height="20" + label="See Creator Profile..." + layout="topleft" + left_pad="10" + name="button creator" + tool_tip="See profile of the highlighted object's original creator" + top_delta="0" + width="150" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_inventory.xml b/indra/newview/skins/default/xui/en/floater_inventory.xml new file mode 100644 index 0000000000000000000000000000000000000000..eb05fe18834ae7729834f0ec082e29df4e01a9b6 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_inventory.xml @@ -0,0 +1,423 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + auto_tile="true" + can_resize="true" + height="563" + layout="topleft" + min_height="150" + min_width="240" + name="Inventory" + save_rect="true" + save_visibility="true" + title="Inventory" + width="467"> + <floater.string + name="Title"> + Inventory + </floater.string> + <floater.string + name="Items"> + Items... + </floater.string> + <floater.string + name="Fetched"> + Fetched + </floater.string> + <search_editor + follows="left|top|right" + height="16" + label="Type here to search" + layout="topleft" + left="6" + name="inventory search editor" + top="34" + width="455" /> + <tab_container + follows="left|top|right|bottom" + height="508" + layout="topleft" + left_delta="-4" + name="inventory filter tabs" + tab_position="top" + top_pad="4" + width="463"> + <inventory_panel + follows="left|top|right|bottom" + height="491" + label="All Items" + layout="topleft" + left="1" + name="All Items" + top="16" + width="461" /> + <inventory_panel + follows="left|top|right|bottom" + height="491" + label="Recent Items" + layout="topleft" + left_delta="0" + name="Recent Items" + top_delta="0" + width="461" /> + </tab_container> + <menu_bar + bg_visible="false" + follows="left|top|right" + height="18" + layout="topleft" + left_delta="0" + mouse_opaque="false" + name="Inventory Menu" + top_delta="-38" + width="461"> + <menu + height="101" + label="File" + layout="topleft" + left="0" + mouse_opaque="false" + name="File" + tear_off="true" + top="-117" + width="128"> + <menu_item_call + label="Open" + layout="topleft" + name="Open"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="open" /> + </menu_item_call> + <menu + create_jump_keys="true" + label="Upload" + layout="topleft" + name="upload" + tear_off="true"> + <menu_item_call + label="Image (L$[COST])..." + layout="topleft" + name="Upload Image" + shortcut="control|U"> + <menu_item_call.on_click + function="File.UploadImage" + parameter="" /> + <menu_item_call.on_enable + function="File.EnableUpload" /> + </menu_item_call> + <menu_item_call + label="Sound (L$[COST])..." + layout="topleft" + name="Upload Sound"> + <menu_item_call.on_click + function="File.UploadSound" + parameter="" /> + <menu_item_call.on_enable + function="File.EnableUpload" /> + </menu_item_call> + <menu_item_call + label="Animation (L$[COST])..." + layout="topleft" + name="Upload Animation"> + <menu_item_call.on_click + function="File.UploadAnim" + parameter="" /> + <menu_item_call.on_enable + function="File.EnableUpload" /> + </menu_item_call> + <menu_item_call + label="Bulk (L$[COST] per file)..." + layout="topleft" + name="Bulk Upload"> + <menu_item_call.on_click + function="File.UploadBulk" + parameter="" /> + </menu_item_call> + <menu_item_separator + layout="topleft" /> + </menu> + <menu_item_separator + layout="topleft" /> + <menu_item_call + label="New Window" + layout="topleft" + name="New Window"> + <menu_item_call.on_click + function="Inventory.NewWindow" /> + </menu_item_call> + <menu_item_separator + layout="topleft" + name="separator2" /> + <menu_item_call + label="Show Filters" + layout="topleft" + name="Show Filters"> + <menu_item_call.on_click + function="Inventory.ShowFilters" /> + </menu_item_call> + <menu_item_call + label="Reset Filters" + layout="topleft" + name="Reset Current"> + <menu_item_call.on_click + function="Inventory.ResetFilter" /> + </menu_item_call> + <menu_item_call + label="Close All Folders" + layout="topleft" + name="Close All Folders"> + <menu_item_call.on_click + function="Inventory.CloseAllFolders" /> + </menu_item_call> + <menu_item_separator + layout="topleft" + name="separator3" /> + <menu_item_call + label="Empty Trash" + layout="topleft" + name="Empty Trash"> + <menu_item_call.on_click + function="Inventory.EmptyTrash" /> + </menu_item_call> + <menu_item_call + label="Empty Lost And Found" + layout="topleft" + name="Empty Lost And Found"> + <menu_item_call.on_click + function="Inventory.EmptyLostAndFound" /> + </menu_item_call> + </menu> + <menu + height="121" + label="Create" + layout="topleft" + left="0" + mouse_opaque="false" + name="Create" + tear_off="true" + top="-201" + width="121"> + <menu_item_call + label="New Folder" + layout="topleft" + name="New Folder"> + <menu_item_call.on_click + function="Inventory.DoCreate" + parameter="category" /> + </menu_item_call> + <menu_item_call + label="New Script" + layout="topleft" + name="New Script"> + <menu_item_call.on_click + function="Inventory.DoCreate" + parameter="lsl" /> + </menu_item_call> + <menu_item_call + label="New Note" + layout="topleft" + name="New Note"> + <menu_item_call.on_click + function="Inventory.DoCreate" + parameter="notecard" /> + </menu_item_call> + <menu_item_call + label="New Gesture" + layout="topleft" + name="New Gesture"> + <menu_item_call.on_click + function="Inventory.DoCreate" + parameter="gesture" /> + </menu_item_call> + <menu + height="175" + label="New Clothes" + layout="topleft" + left_delta="0" + mouse_opaque="false" + name="New Clothes" + top_pad="514" + width="125"> + <menu_item_call + label="New Shirt" + layout="topleft" + name="New Shirt"> + <menu_item_call.on_click + function="Inventory.DoCreate" + parameter="shirt" /> + </menu_item_call> + <menu_item_call + label="New Pants" + layout="topleft" + name="New Pants"> + <menu_item_call.on_click + function="Inventory.DoCreate" + parameter="pants" /> + </menu_item_call> + <menu_item_call + label="New Shoes" + layout="topleft" + name="New Shoes"> + <menu_item_call.on_click + function="Inventory.DoCreate" + parameter="shoes" /> + </menu_item_call> + <menu_item_call + label="New Socks" + layout="topleft" + name="New Socks"> + <menu_item_call.on_click + function="Inventory.DoCreate" + parameter="socks" /> + </menu_item_call> + <menu_item_call + label="New Jacket" + layout="topleft" + name="New Jacket"> + <menu_item_call.on_click + function="Inventory.DoCreate" + parameter="jacket" /> + </menu_item_call> + <menu_item_call + label="New Skirt" + layout="topleft" + name="New Skirt"> + <menu_item_call.on_click + function="Inventory.DoCreate" + parameter="skirt" /> + </menu_item_call> + <menu_item_call + label="New Gloves" + layout="topleft" + name="New Gloves"> + <menu_item_call.on_click + function="Inventory.DoCreate" + parameter="gloves" /> + </menu_item_call> + <menu_item_call + label="New Undershirt" + layout="topleft" + name="New Undershirt"> + <menu_item_call.on_click + function="Inventory.DoCreate" + parameter="undershirt" /> + </menu_item_call> + <menu_item_call + label="New Underpants" + layout="topleft" + name="New Underpants"> + <menu_item_call.on_click + function="Inventory.DoCreate" + parameter="underpants" /> + </menu_item_call> + <menu_item_call + label="New Alpha" + layout="topleft" + name="New Alpha"> + <menu_item_call.on_click + function="Inventory.DoCreate" + parameter="alpha" /> + </menu_item_call> + <menu_item_call + label="New Tattoo" + layout="topleft" + name="New Tattoo"> + <menu_item_call.on_click + function="Inventory.DoCreate" + parameter="tattoo" /> + </menu_item_call> + </menu> + <menu + height="85" + label="New Body Parts" + layout="topleft" + left_delta="0" + mouse_opaque="false" + name="New Body Parts" + top_pad="514" + width="118"> + <menu_item_call + label="New Shape" + layout="topleft" + name="New Shape"> + <menu_item_call.on_click + function="Inventory.DoCreate" + parameter="shape" /> + </menu_item_call> + <menu_item_call + label="New Skin" + layout="topleft" + name="New Skin"> + <menu_item_call.on_click + function="Inventory.DoCreate" + parameter="skin" /> + </menu_item_call> + <menu_item_call + label="New Hair" + layout="topleft" + name="New Hair"> + <menu_item_call.on_click + function="Inventory.DoCreate" + parameter="hair" /> + </menu_item_call> + <menu_item_call + label="New Eyes" + layout="topleft" + name="New Eyes"> + <menu_item_call.on_click + function="Inventory.DoCreate" + parameter="eyes" /> + </menu_item_call> + </menu> + </menu> + <menu + height="49" + label="Sort" + layout="topleft" + left="0" + mouse_opaque="false" + name="Sort" + tear_off="true" + top="-113" + width="118"> + <menu_item_check + control_name="Inventory.SortByName" + label="By Name" + layout="topleft" + name="By Name"> + <menu_item_check.on_click + function="Inventory.SetSortBy" + parameter="name" /> + </menu_item_check> + <menu_item_check + control_name="Inventory.SortByDate" + label="By Date" + layout="topleft" + name="By Date"> + <menu_item_check.on_click + function="Inventory.SetSortBy" + parameter="date" /> + </menu_item_check> + <menu_item_separator + layout="topleft" /> + <menu_item_check + control_name="Inventory.FoldersAlwaysByName" + label="Folders Always By Name" + layout="topleft" + name="Folders Always By Name"> + <menu_item_check.on_click + function="Inventory.SetSortBy" + parameter="foldersalwaysbyname" /> + </menu_item_check> + <menu_item_check + control_name="Inventory.SystemFoldersToTop" + label="System Folders To Top" + layout="topleft" + name="System Folders To Top"> + <menu_item_check.on_click + function="Inventory.SetSortBy" + parameter="systemfolderstotop" /> + </menu_item_check> + </menu> + </menu_bar> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml new file mode 100644 index 0000000000000000000000000000000000000000..6cb044cda18080b70c8f4d7d48b53071a12ba4ff --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml @@ -0,0 +1,395 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + auto_tile="true" + height="320" + layout="topleft" + name="item properties" + save_rect="true" + title="Inventory Item Properties" + width="350"> + <floater.string + name="unknown"> + (unknown) + </floater.string> + <floater.string + name="public"> + (public) + </floater.string> + <floater.string + name="you_can"> + You can: + </floater.string> + <floater.string + name="owner_can"> + Owner can: + </floater.string> + <floater.string + name="acquiredDate"> + [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local] + </floater.string> + <icon + follows="top|right" + height="16" + image_name="icon_lock.tga" + layout="topleft" + left="294" + mouse_opaque="true" + name="IconLocked" + top="5" + width="16" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="10" + name="LabelItemNameTitle" + top="25" + width="78"> + Name: + </text> + <line_editor + border_style="line" + border_thickness="1" + follows="left|top|right" + height="16" + layout="topleft" + left_delta="78" + max_length="63" + name="LabelItemName" + top_delta="0" + width="252" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="10" + name="LabelItemDescTitle" + top="45" + width="78"> + Description: + </text> + <line_editor + border_style="line" + border_thickness="1" + follows="left|top|right" + height="16" + layout="topleft" + left_delta="78" + max_length="127" + name="LabelItemDesc" + top_delta="0" + width="252" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="10" + name="LabelCreatorTitle" + top="65" + width="78"> + Creator: + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_delta="78" + name="LabelCreatorName" + top_delta="0" + width="200"> + Nicole Linden + </text> + <button + follows="top|right" + font="SansSerifSmall" + height="16" + label="Profile..." + layout="topleft" + left_delta="174" + name="BtnCreator" + top_delta="0" + width="78" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="10" + name="LabelOwnerTitle" + top="85" + width="78"> + Owner: + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_delta="78" + name="LabelOwnerName" + top_delta="0" + width="200"> + Thrax Linden + </text> + <button + follows="top|right" + font="SansSerifSmall" + height="16" + label="Profile..." + layout="topleft" + left_delta="174" + name="BtnOwner" + top_delta="0" + width="78" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="10" + name="LabelAcquiredTitle" + top="105" + width="78"> + Acquired: + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_delta="78" + name="LabelAcquiredDate" + top_delta="0" + width="252"> + Wed May 24 12:50:46 2006 + </text> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="10" + name="OwnerLabel" + top="125" + width="78"> + You can: + </text> + <check_box + height="16" + label="Modify" + layout="topleft" + left_delta="0" + name="CheckOwnerModify" + top_pad="4" + width="78" /> + <check_box + height="16" + label="Copy" + layout="topleft" + left_delta="78" + name="CheckOwnerCopy" + top_delta="0" + width="88" /> + <check_box + height="16" + label="Resell/Give away" + layout="topleft" + left_delta="88" + name="CheckOwnerTransfer" + top_delta="0" + width="106" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="10" + name="BaseMaskDebug" + top="155" + width="330"> + B: + </text> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_delta="60" + name="OwnerMaskDebug" + top_delta="0" + width="270"> + O: + </text> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_delta="60" + name="GroupMaskDebug" + top_delta="0" + width="210"> + G: + </text> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_delta="60" + name="EveryoneMaskDebug" + top_delta="0" + width="150"> + E: + </text> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_delta="60" + name="NextMaskDebug" + top_delta="0" + width="90"> + N: + </text> + <check_box + height="16" + label="Share with group" + layout="topleft" + left="10" + name="CheckShareWithGroup" + top="171" + width="106" /> + <check_box + height="16" + label="Allow anyone to copy" + layout="topleft" + left_delta="0" + name="CheckEveryoneCopy" + top_pad="16" + width="130" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_delta="0" + name="NextOwnerLabel" + top_pad="16" + width="88"> + Next owner can: + </text> + <check_box + height="16" + label="Modify" + layout="topleft" + left_delta="0" + name="CheckNextOwnerModify" + top_pad="4" + width="78" /> + <check_box + height="16" + label="Copy" + layout="topleft" + left_delta="78" + name="CheckNextOwnerCopy" + top_delta="0" + width="88" /> + <check_box + height="16" + label="Resell/Give away" + layout="topleft" + left_delta="88" + name="CheckNextOwnerTransfer" + top_delta="0" + width="106" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="10" + name="SaleLabel" + top="265" + width="330"> + Mark Item: + </text> + <check_box + height="16" + label="For Sale" + layout="topleft" + left_delta="0" + name="CheckPurchase" + top_pad="4" + width="78" /> + <radio_group + draw_border="false" + follows="left|top|right" + height="16" + layout="topleft" + left_delta="78" + name="RadioSaleType" + top_delta="0" + width="252"> + <radio_item + height="16" + label="Original" + layout="topleft" + left="0" + name="radio" + top="0" + width="70" /> + <radio_item + height="16" + label="Copy" + layout="topleft" + left_delta="60" + name="radio2" + top_delta="0" + width="70" /> + </radio_group> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="42" + name="TextPrice" + top="299" + width="56"> + Price: L$ + </text> + <line_editor + border_style="line" + border_thickness="1" + follows="left|top|right" + height="16" + layout="topleft" + left_delta="56" + max_length="25" + name="EditPrice" + top_delta="0" + width="242" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/en/floater_inventory_view_finder.xml new file mode 100644 index 0000000000000000000000000000000000000000..8bff916f9d7114004a1904d8c2d08fdd3a19fb16 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_inventory_view_finder.xml @@ -0,0 +1,281 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_minimize="false" + height="408" + layout="topleft" + name="Inventory Finder" + title="inventory_recent_items" + width="160"> + <icon + height="16" + image_name="inv_item_animation.tga" + layout="topleft" + left="8" + mouse_opaque="true" + name="icon_animation" + top="22" + width="16" /> + <check_box + height="16" + label="Animation" + layout="topleft" + left_pad="2" + name="check_animation" + top_delta="0" + width="126" /> + <icon + height="16" + image_name="inv_item_callingcard_online.tga" + layout="topleft" + left="8" + mouse_opaque="true" + name="icon_calling_card" + top="42" + width="16" /> + <check_box + height="16" + label="Calling Cards" + layout="topleft" + left_pad="2" + name="check_calling_card" + top_delta="0" + width="126" /> + <icon + height="16" + image_name="inv_item_shirt.tga" + layout="topleft" + left="8" + mouse_opaque="true" + name="icon_clothing" + top="62" + width="16" /> + <check_box + height="16" + label="Clothing" + layout="topleft" + left_pad="2" + name="check_clothing" + top_delta="0" + width="126" /> + <icon + height="16" + image_name="inv_item_gesture.tga" + layout="topleft" + left="8" + mouse_opaque="true" + name="icon_gesture" + top="82" + width="16" /> + <check_box + height="16" + label="Gestures" + layout="topleft" + left_pad="2" + name="check_gesture" + top_delta="0" + width="126" /> + <icon + height="16" + image_name="inv_item_landmark_visited.tga" + layout="topleft" + left="8" + mouse_opaque="true" + name="icon_landmark" + top="102" + width="16" /> + <check_box + height="16" + label="Landmarks" + layout="topleft" + left_pad="2" + name="check_landmark" + top_delta="0" + width="126" /> + <icon + height="16" + image_name="inv_item_notecard.tga" + layout="topleft" + left="8" + mouse_opaque="true" + name="icon_notecard" + top="122" + width="16" /> + <check_box + height="16" + label="Notecards" + layout="topleft" + left_pad="2" + name="check_notecard" + top_delta="0" + width="126" /> + <icon + height="16" + image_name="inv_item_object.tga" + layout="topleft" + left="8" + mouse_opaque="true" + name="icon_object" + top="142" + width="16" /> + <check_box + height="16" + label="Objects" + layout="topleft" + left_pad="2" + name="check_object" + top_delta="0" + width="126" /> + <icon + height="16" + image_name="inv_item_script.tga" + layout="topleft" + left="8" + mouse_opaque="true" + name="icon_script" + top="162" + width="16" /> + <check_box + height="16" + label="Scripts" + layout="topleft" + left_pad="2" + name="check_script" + top_delta="0" + width="126" /> + <icon + height="16" + image_name="inv_item_sound.tga" + layout="topleft" + left="8" + mouse_opaque="true" + name="icon_sound" + top="182" + width="16" /> + <check_box + height="16" + label="Sounds" + layout="topleft" + left_pad="2" + name="check_sound" + top_delta="0" + width="126" /> + <icon + height="16" + image_name="inv_item_texture.tga" + layout="topleft" + left="8" + mouse_opaque="true" + name="icon_texture" + top="202" + width="16" /> + <check_box + height="16" + label="Textures" + layout="topleft" + left_pad="2" + name="check_texture" + top_delta="0" + width="126" /> + <icon + height="16" + image_name="inv_item_snapshot.tga" + layout="topleft" + left="8" + mouse_opaque="true" + name="icon_snapshot" + top="222" + width="16" /> + <check_box + height="16" + label="Snapshots" + layout="topleft" + left_pad="2" + name="check_snapshot" + top_delta="0" + width="126" /> + <button + follows="left|top" + height="20" + label="All" + label_selected="All" + layout="topleft" + left="8" + name="All" + top="242" + width="100" /> + <button + follows="left|top" + height="20" + label="None" + label_selected="None" + layout="topleft" + left_delta="0" + name="None" + top_pad="4" + width="100" /> + <check_box + height="16" + label="Always show folders" + layout="topleft" + left_delta="0" + name="check_show_empty" + top_pad="4" + width="144" /> + <check_box + height="16" + label="Since Logoff" + layout="topleft" + left_delta="0" + name="check_since_logoff" + top_pad="4" + width="144" /> + <text + type="string" + length="1" + follows="left|top" + halign="center" + height="12" + layout="topleft" + left_delta="0" + name="- OR -" + top_delta="16" + width="144"> + - OR - + </text> + <spinner + follows="left|top" + height="16" + increment="1" + initial_value="0" + label="Hours Ago" + label_width="64" + layout="topleft" + left_delta="0" + max_val="240000" + name="spin_hours_ago" + top_pad="4" + width="144" /> + <spinner + follows="left|top" + height="16" + increment="1" + initial_value="0" + label="Days Ago" + label_width="64" + layout="topleft" + left_delta="0" + max_val="10000" + name="spin_days_ago" + top_pad="4" + width="144" /> + <button + follows="top|right" + height="20" + label="Close" + label_selected="Close" + layout="topleft" + name="Close" + right="-6" + top="382" + width="76" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_joystick.xml b/indra/newview/skins/default/xui/en/floater_joystick.xml new file mode 100644 index 0000000000000000000000000000000000000000..032ff21b58f12399efbf5e8928a37778f449461c --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_joystick.xml @@ -0,0 +1,859 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + height="500" + layout="topleft" + name="Joystick" + title="Joystick Configuration" + width="550"> + <floater.string + name="NoDevice"> + no device detected + </floater.string> + <check_box + bottom="38" + control_name="JoystickEnabled" + halign="left" + label="Enable Joystick:" + layout="topleft" + left="14" + name="enable_joystick" + width="60" /> + <text + bottom="32" + layout="topleft" + left="120" + name="joystick_type" + width="380" /> + <spinner + bottom="48" + control_name="JoystickAxis1" + decimal_digits="0" + increment="1" + label="X Axis Mapping" + label_width="100" + layout="topleft" + left="20" + max_val="5" + min_val="-1" + name="JoystickAxis1" + width="140" /> + <spinner + bottom="48" + control_name="JoystickAxis2" + decimal_digits="0" + increment="1" + label="Y Axis Mapping" + label_width="100" + layout="topleft" + left="190" + max_val="5" + min_val="-1" + name="JoystickAxis2" + width="140" /> + <spinner + bottom="48" + control_name="JoystickAxis0" + decimal_digits="0" + increment="1" + label="Z Axis Mapping" + label_width="100" + layout="topleft" + left="360" + max_val="5" + min_val="-1" + name="JoystickAxis0" + width="140" /> + <spinner + bottom="68" + control_name="JoystickAxis4" + decimal_digits="0" + increment="1" + label="Pitch Mapping" + label_width="100" + layout="topleft" + left="20" + max_val="5" + min_val="-1" + name="JoystickAxis4" + width="140" /> + <spinner + bottom="68" + control_name="JoystickAxis5" + decimal_digits="0" + increment="1" + label="Yaw Mapping" + label_width="100" + layout="topleft" + left="190" + max_val="5" + min_val="-1" + name="JoystickAxis5" + width="140" /> + <spinner + bottom="68" + control_name="JoystickAxis3" + decimal_digits="0" + increment="1" + label="Roll Mapping" + label_width="100" + layout="topleft" + left="360" + max_val="5" + min_val="-1" + name="JoystickAxis3" + width="140" /> + <spinner + bottom="88" + control_name="JoystickAxis6" + decimal_digits="0" + increment="1" + label="Zoom Mapping" + label_width="100" + layout="topleft" + left="20" + max_val="5" + min_val="-1" + name="JoystickAxis6" + width="140" /> + <check_box + bottom_delta="18" + control_name="ZoomDirect" + label="Direct Zoom" + layout="topleft" + left="185" + name="ZoomDirect" /> + <check_box + bottom_delta="0" + control_name="Cursor3D" + label="3D Cursor" + layout="topleft" + left="310" + name="Cursor3D" /> + <check_box + bottom_delta="0" + control_name="AutoLeveling" + label="Auto Level" + layout="topleft" + left="420" + name="AutoLeveling" /> + <text + type="string" + length="1" + follows="left|top" + halign="right" + height="10" + layout="topleft" + left="12" + mouse_opaque="false" + name="Control Modes:" + top="110" + width="102"> + Control Modes: + </text> + <check_box + bottom="127" + control_name="JoystickAvatarEnabled" + halign="center" + label="Avatar" + layout="topleft" + left="125" + name="JoystickAvatarEnabled" + width="60" /> + <check_box + bottom="127" + control_name="JoystickBuildEnabled" + halign="center" + label="Build" + layout="topleft" + left="194" + name="JoystickBuildEnabled" + width="60" /> + <check_box + bottom="127" + control_name="JoystickFlycamEnabled" + halign="center" + label="Flycam" + layout="topleft" + left="262" + name="JoystickFlycamEnabled" + width="60" /> + <stat_view + height="250" + label="Joystick Monitor" + layout="topleft" + left="340" + name="axis_view" + show_label="true" + top="142" + width="200"> + <stat_bar + bar_max="2" + bar_min="-2" + height="0" + label="Axis 0" + label_spacing="1" + layout="topleft" + left="0" + name="axis0" + tick_spacing="0.5" + top="20" + width="0" /> + <stat_bar + bar_max="2" + bar_min="-2" + label="Axis 1" + label_spacing="1" + layout="topleft" + name="axis1" + tick_spacing="0.5" /> + <stat_bar + bar_max="2" + bar_min="-2" + label="Axis 2" + label_spacing="1" + layout="topleft" + name="axis2" + tick_spacing="0.5" /> + <stat_bar + bar_max="2" + bar_min="-2" + label="Axis 3" + label_spacing="1" + layout="topleft" + name="axis3" + tick_spacing="0.5" /> + <stat_bar + bar_max="2" + bar_min="-2" + label="Axis 4" + label_spacing="1" + layout="topleft" + name="axis4" + tick_spacing="0.5" /> + <stat_bar + bar_max="2" + bar_min="-2" + label="Axis 5" + label_spacing="1" + layout="topleft" + name="axis5" + tick_spacing="0.5" /> + </stat_view> + <text + type="string" + length="1" + bottom="144" + halign="right" + layout="topleft" + left="20" + name="XScale" + width="94"> + X Scale + </text> + <spinner + bottom="144" + control_name="AvatarAxisScale1" + decimal_digits="2" + label_width="0" + layout="topleft" + left="125" + max_val="50" + min_val="-50" + name="AvatarAxisScale1" + width="56" /> + <spinner + bottom="144" + control_name="BuildAxisScale1" + decimal_digits="2" + label_width="0" + layout="topleft" + left="195" + max_val="1024" + min_val="-1024" + name="BuildAxisScale1" + width="56" /> + <spinner + bottom="144" + control_name="FlycamAxisScale1" + decimal_digits="2" + label_width="0" + layout="topleft" + left="265" + max_val="1024" + min_val="-1024" + name="FlycamAxisScale1" + width="56" /> + <text + type="string" + length="1" + bottom="164" + halign="right" + layout="topleft" + left="20" + name="YScale" + width="94"> + Y Scale + </text> + <spinner + bottom="164" + control_name="AvatarAxisScale2" + decimal_digits="2" + label_width="0" + layout="topleft" + left="125" + max_val="50" + min_val="-50" + name="AvatarAxisScale2" + width="56" /> + <spinner + bottom="164" + control_name="BuildAxisScale2" + decimal_digits="2" + label_width="0" + layout="topleft" + left="195" + max_val="1024" + min_val="-1024" + name="BuildAxisScale2" + width="56" /> + <spinner + bottom="164" + control_name="FlycamAxisScale2" + decimal_digits="2" + label_width="0" + layout="topleft" + left="265" + max_val="1024" + min_val="-1024" + name="FlycamAxisScale2" + width="56" /> + <text + type="string" + length="1" + bottom="184" + halign="right" + layout="topleft" + left="20" + name="ZScale" + width="94"> + Z Scale + </text> + <spinner + bottom="184" + control_name="AvatarAxisScale0" + decimal_digits="2" + label_width="0" + layout="topleft" + left="125" + max_val="50" + min_val="-50" + name="AvatarAxisScale0" + width="56" /> + <spinner + bottom="184" + control_name="BuildAxisScale0" + decimal_digits="2" + label_width="0" + layout="topleft" + left="195" + max_val="1024" + min_val="-1024" + name="BuildAxisScale0" + width="56" /> + <spinner + bottom="184" + control_name="FlycamAxisScale0" + decimal_digits="2" + label_width="0" + layout="topleft" + left="265" + max_val="1024" + min_val="-1024" + name="FlycamAxisScale0" + width="56" /> + <text + type="string" + length="1" + bottom="204" + halign="right" + layout="topleft" + left="20" + name="PitchScale" + width="94"> + Pitch Scale + </text> + <spinner + bottom="204" + control_name="AvatarAxisScale4" + decimal_digits="2" + label_width="0" + layout="topleft" + left="125" + max_val="1024" + min_val="-1024" + name="AvatarAxisScale4" + width="56" /> + <spinner + bottom="204" + control_name="BuildAxisScale4" + decimal_digits="2" + label_width="0" + layout="topleft" + left="195" + max_val="1024" + min_val="-1024" + name="BuildAxisScale4" + width="56" /> + <spinner + bottom="204" + control_name="FlycamAxisScale4" + decimal_digits="2" + label_width="0" + layout="topleft" + left="265" + max_val="1024" + min_val="-1024" + name="FlycamAxisScale4" + width="56" /> + <text + type="string" + length="1" + bottom="224" + halign="right" + layout="topleft" + left="20" + name="YawScale" + width="94"> + Yaw Scale + </text> + <spinner + bottom="224" + control_name="AvatarAxisScale5" + decimal_digits="2" + label_width="0" + layout="topleft" + left="125" + max_val="1024" + min_val="-1024" + name="AvatarAxisScale5" + width="56" /> + <spinner + bottom="224" + control_name="BuildAxisScale5" + decimal_digits="2" + label_width="0" + layout="topleft" + left="195" + max_val="1024" + min_val="-1024" + name="BuildAxisScale5" + width="56" /> + <spinner + bottom="224" + control_name="FlycamAxisScale5" + decimal_digits="2" + label_width="0" + layout="topleft" + left="265" + max_val="1024" + min_val="-1024" + name="FlycamAxisScale5" + width="56" /> + <text + type="string" + length="1" + bottom="244" + halign="right" + layout="topleft" + left="20" + name="RollScale" + width="94"> + Roll Scale + </text> + <spinner + bottom="244" + control_name="BuildAxisScale3" + decimal_digits="2" + label_width="0" + layout="topleft" + left="195" + max_val="1024" + min_val="-1024" + name="BuildAxisScale3" + width="56" /> + <spinner + bottom="244" + control_name="FlycamAxisScale3" + decimal_digits="2" + label_width="0" + layout="topleft" + left="265" + max_val="1024" + min_val="-1024" + name="FlycamAxisScale3" + width="56" /> + <text + type="string" + length="1" + bottom="274" + halign="right" + layout="topleft" + left="20" + name="XDeadZone" + width="94"> + X Dead Zone + </text> + <spinner + bottom="274" + control_name="AvatarAxisDeadZone1" + decimal_digits="2" + increment="0.01" + label_width="0" + layout="topleft" + left="125" + name="AvatarAxisDeadZone1" + width="56" /> + <spinner + bottom="274" + control_name="BuildAxisDeadZone1" + decimal_digits="2" + increment="0.01" + label_width="0" + layout="topleft" + left="195" + name="BuildAxisDeadZone1" + width="56" /> + <spinner + bottom="274" + control_name="FlycamAxisDeadZone1" + decimal_digits="2" + increment="0.01" + label_width="0" + layout="topleft" + left="265" + name="FlycamAxisDeadZone1" + width="56" /> + <text + type="string" + length="1" + bottom="294" + halign="right" + layout="topleft" + left="20" + name="YDeadZone" + width="94"> + Y Dead Zone + </text> + <spinner + bottom="294" + control_name="AvatarAxisDeadZone2" + decimal_digits="2" + increment="0.01" + label_width="0" + layout="topleft" + left="125" + name="AvatarAxisDeadZone2" + width="56" /> + <spinner + bottom="294" + control_name="BuildAxisDeadZone2" + decimal_digits="2" + increment="0.01" + label_width="0" + layout="topleft" + left="195" + name="BuildAxisDeadZone2" + width="56" /> + <spinner + bottom="294" + control_name="FlycamAxisDeadZone2" + decimal_digits="2" + increment="0.01" + label_width="0" + layout="topleft" + left="265" + name="FlycamAxisDeadZone2" + width="56" /> + <text + type="string" + length="1" + bottom="314" + halign="right" + layout="topleft" + left="20" + name="ZDeadZone" + width="94"> + Z Dead Zone + </text> + <spinner + bottom="314" + control_name="AvatarAxisDeadZone0" + decimal_digits="2" + increment="0.01" + label_width="0" + layout="topleft" + left="125" + name="AvatarAxisDeadZone0" + width="56" /> + <spinner + bottom="314" + control_name="BuildAxisDeadZone0" + decimal_digits="2" + increment="0.01" + label_width="0" + layout="topleft" + left="195" + name="BuildAxisDeadZone0" + width="56" /> + <spinner + bottom="314" + control_name="FlycamAxisDeadZone0" + decimal_digits="2" + increment="0.01" + label_width="0" + layout="topleft" + left="265" + name="FlycamAxisDeadZone0" + width="56" /> + <text + type="string" + length="1" + bottom="334" + halign="right" + layout="topleft" + left="20" + name="PitchDeadZone" + width="94"> + Pitch Dead Zone + </text> + <spinner + bottom="334" + control_name="AvatarAxisDeadZone4" + decimal_digits="2" + increment="0.01" + label_width="0" + layout="topleft" + left="125" + name="AvatarAxisDeadZone4" + width="56" /> + <spinner + bottom="334" + control_name="BuildAxisDeadZone4" + decimal_digits="2" + increment="0.01" + label_width="0" + layout="topleft" + left="195" + name="BuildAxisDeadZone4" + width="56" /> + <spinner + bottom="334" + control_name="FlycamAxisDeadZone4" + decimal_digits="2" + increment="0.01" + label_width="0" + layout="topleft" + left="265" + name="FlycamAxisDeadZone4" + width="56" /> + <text + type="string" + length="1" + bottom="354" + halign="right" + layout="topleft" + left="20" + name="YawDeadZone" + width="94"> + Yaw Dead Zone + </text> + <spinner + bottom="354" + control_name="AvatarAxisDeadZone5" + decimal_digits="2" + increment="0.01" + label_width="0" + layout="topleft" + left="125" + name="AvatarAxisDeadZone5" + width="56" /> + <spinner + bottom="354" + control_name="BuildAxisDeadZone5" + decimal_digits="2" + increment="0.01" + label_width="0" + layout="topleft" + left="195" + name="BuildAxisDeadZone5" + width="56" /> + <spinner + bottom="354" + control_name="FlycamAxisDeadZone5" + decimal_digits="2" + increment="0.01" + label_width="0" + layout="topleft" + left="265" + name="FlycamAxisDeadZone5" + width="56" /> + <text + type="string" + length="1" + bottom="374" + halign="right" + layout="topleft" + left="20" + name="RollDeadZone" + width="94"> + Roll Dead Zone + </text> + <spinner + bottom="374" + control_name="BuildAxisDeadZone3" + decimal_digits="2" + increment="0.01" + label_width="0" + layout="topleft" + left="195" + name="BuildAxisDeadZone3" + width="56" /> + <spinner + bottom="374" + control_name="FlycamAxisDeadZone3" + decimal_digits="2" + increment="0.01" + label_width="0" + layout="topleft" + left="265" + name="FlycamAxisDeadZone3" + width="56" /> + <text + type="string" + length="1" + bottom="402" + halign="right" + layout="topleft" + left="20" + name="Feathering" + width="94"> + Feathering + </text> + <slider + control_name="AvatarFeathering" + decimal_digits="0" + follows="left|top" + height="16" + increment="1" + initial_value="0.7" + layout="topleft" + left="116" + max_val="32" + min_val="1" + name="AvatarFeathering" + show_text="false" + top="402" + width="73" /> + <slider + control_name="BuildFeathering" + decimal_digits="0" + follows="left|top" + height="16" + increment="1" + initial_value="0.7" + layout="topleft" + left_delta="70" + max_val="32" + min_val="1" + name="BuildFeathering" + show_text="false" + top_delta="0" + width="73" /> + <slider + control_name="FlycamFeathering" + decimal_digits="0" + follows="left|top" + height="16" + increment="1" + initial_value="0.7" + layout="topleft" + left_delta="70" + max_val="32" + min_val="1" + name="FlycamFeathering" + show_text="false" + top_delta="0" + width="73" /> + <text + type="string" + length="1" + bottom="430" + halign="right" + layout="topleft" + left="20" + name="ZoomScale2" + width="94"> + Zoom Scale + </text> + <spinner + bottom="430" + control_name="FlycamAxisScale6" + decimal_digits="2" + label_width="0" + layout="topleft" + left="265" + max_val="1024" + min_val="-1024" + name="FlycamAxisScale6" + width="56" /> + <text + type="string" + length="1" + bottom="450" + halign="right" + layout="topleft" + left="20" + name="ZoomDeadZone" + width="94"> + Zoom Dead Zone + </text> + <spinner + bottom="450" + control_name="FlycamAxisDeadZone6" + decimal_digits="2" + increment="0.01" + label_width="0" + layout="topleft" + left="265" + name="FlycamAxisDeadZone6" + width="56" /> + <button + follows="left|top" + height="22" + label="SpaceNavigator Defaults" + layout="topleft" + left="340" + name="SpaceNavigatorDefaults" + top="429" + width="184" /> + <button + follows="right|bottom" + height="20" + label="OK" + label_selected="OK" + layout="topleft" + left_delta="0" + name="ok_btn" + top_pad="9" + width="90" /> + <button + follows="right|bottom" + height="20" + label="Cancel" + label_selected="Cancel" + layout="topleft" + left_pad="4" + name="cancel_btn" + top_delta="0" + width="90" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_lagmeter.xml b/indra/newview/skins/default/xui/en/floater_lagmeter.xml new file mode 100644 index 0000000000000000000000000000000000000000..8af4f74aa3d59e3e429ecd5397f3611191964e2a --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_lagmeter.xml @@ -0,0 +1,346 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + height="150" + layout="topleft" + name="floater_lagmeter" + save_rect="true" + title="Lag Meter" + width="350"> + <floater.string + name="max_title_msg"> + Lag Meter + </floater.string> + <floater.string + name="max_width_px"> + 360 + </floater.string> + <floater.string + name="min_title_msg"> + Lag + </floater.string> + <floater.string + name="min_width_px"> + 90 + </floater.string> + <floater.string + name="client_text_msg"> + Client + </floater.string> + <floater.string + name="client_frame_rate_critical_fps"> + 10 + </floater.string> + <floater.string + name="client_frame_rate_warning_fps"> + 15 + </floater.string> + <floater.string + name="client_frame_time_window_bg_msg"> + Normal, window in background + </floater.string> + <floater.string + name="client_frame_time_critical_msg"> + Client frame rate below [CLIENT_FRAME_RATE_CRITICAL] + </floater.string> + <floater.string + name="client_frame_time_warning_msg"> + Client frame rate between [CLIENT_FRAME_RATE_CRITICAL] and [CLIENT_FRAME_RATE_WARNING] + </floater.string> + <floater.string + name="client_frame_time_normal_msg"> + Normal + </floater.string> + <floater.string + name="client_draw_distance_cause_msg"> + Possible cause: Draw distance set too high + </floater.string> + <floater.string + name="client_texture_loading_cause_msg"> + Possible cause: Images loading + </floater.string> + <floater.string + name="client_texture_memory_cause_msg"> + Possible cause: Too many images in memory + </floater.string> + <floater.string + name="client_complex_objects_cause_msg"> + Possible cause: Too many complex objects in scene + </floater.string> + <floater.string + name="network_text_msg"> + Network + </floater.string> + <floater.string + name="network_packet_loss_critical_pct"> + 10 + </floater.string> + <floater.string + name="network_packet_loss_warning_pct"> + 5 + </floater.string> + <floater.string + name="network_packet_loss_critical_msg"> + Connection is dropping over [NETWORK_PACKET_LOSS_CRITICAL]% of packets + </floater.string> + <floater.string + name="network_packet_loss_warning_msg"> + Connection is dropping [NETWORK_PACKET_LOSS_WARNING]%-[NETWORK_PACKET_LOSS_CRITICAL]% of packets + </floater.string> + <floater.string + name="network_performance_normal_msg"> + Normal + </floater.string> + <floater.string + name="network_ping_critical_ms"> + 600 + </floater.string> + <floater.string + name="network_ping_warning_ms"> + 300 + </floater.string> + <floater.string + name="network_ping_critical_msg"> + Connection ping time is over [NETWORK_PING_CRITICAL] ms + </floater.string> + <floater.string + name="network_ping_warning_msg"> + Connection ping time is [NETWORK_PING_WARNING]-[NETWORK_PING_CRITICAL] ms + </floater.string> + <floater.string + name="network_packet_loss_cause_msg"> + Possible bad connection or 'Bandwidth' pref too high. + </floater.string> + <floater.string + name="network_ping_cause_msg"> + Possible bad connection or file-sharing app. + </floater.string> + <floater.string + name="server_text_msg"> + Server + </floater.string> + <floater.string + name="server_frame_rate_critical_fps"> + 20 + </floater.string> + <floater.string + name="server_frame_rate_warning_fps"> + 30 + </floater.string> + <floater.string + name="server_single_process_max_time_ms"> + 20 + </floater.string> + <floater.string + name="server_frame_time_critical_msg"> + Simulator framerate below [SERVER_FRAME_RATE_CRITICAL] + </floater.string> + <floater.string + name="server_frame_time_warning_msg"> + Simulator framerate between [SERVER_FRAME_RATE_CRITICAL] and [SERVER_FRAME_RATE_WARNING] + </floater.string> + <floater.string + name="server_frame_time_normal_msg"> + Normal + </floater.string> + <floater.string + name="server_physics_cause_msg"> + Possible Cause: Too many physical objects + </floater.string> + <floater.string + name="server_scripts_cause_msg"> + Possible Cause: Too many scripted objects + </floater.string> + <floater.string + name="server_net_cause_msg"> + Possible Cause: Too much network traffic + </floater.string> + <floater.string + name="server_agent_cause_msg"> + Possible Cause: Too many moving people in region + </floater.string> + <floater.string + name="server_images_cause_msg"> + Possible Cause: Too many image calculations + </floater.string> + <floater.string + name="server_generic_cause_msg"> + Possible Cause: Simulator load too heavy + </floater.string> + <floater.string + name="smaller_label"> + >> + </floater.string> + <floater.string + name="bigger_label"> + << + </floater.string> + <button + follows="top|left" + height="16" + image_selected="lag_status_good.tga" + image_unselected="lag_status_good.tga" + layout="topleft" + left="8" + name="client_lagmeter" + picture_style="true" + tab_stop="false" + tool_tip="Client lag status" + top="24" + width="16" /> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="16" + layout="topleft" + left_pad="3" + name="client" + top_delta="0" + width="128"> + Client: + </text> + <text + make_visible_control="LagMeterShrunk" + type="string" + length="1" + bottom="40" + follows="left|top" + font="SansSerif" + height="16" + layout="topleft" + left="110" + name="client_text" + right="-10"> + Normal + </text> + <text + make_visible_control="LagMeterShrunk" + bottom="56" + follows="left|top" + height="16" + layout="topleft" + left="40" + name="client_lag_cause" + right="-32" /> + <button + follows="top|left" + height="16" + image_selected="lag_status_good.tga" + image_unselected="lag_status_good.tga" + layout="topleft" + left="8" + name="network_lagmeter" + picture_style="true" + tab_stop="false" + tool_tip="Network lag status" + top="64" + width="16" /> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="16" + layout="topleft" + left_pad="3" + name="network" + top_delta="0" + width="128"> + Network: + </text> + <text + make_visible_control="LagMeterShrunk" + type="string" + length="1" + bottom="80" + follows="left|top" + font="SansSerif" + height="16" + layout="topleft" + left="110" + name="network_text" + right="-10"> + Normal + </text> + <text + make_visible_control="LagMeterShrunk" + bottom="96" + follows="left|top" + height="16" + layout="topleft" + left="40" + name="network_lag_cause" + right="-32" /> + <button + follows="top|left" + height="16" + image_selected="lag_status_good.tga" + image_unselected="lag_status_good.tga" + layout="topleft" + left="8" + name="server_lagmeter" + picture_style="true" + tab_stop="false" + tool_tip="Server lag status" + top="104" + width="16" /> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="16" + layout="topleft" + left_pad="3" + name="server" + top_delta="0" + width="60"> + Server: + </text> + <text + make_visible_control="LagMeterShrunk" + type="string" + length="1" + bottom="120" + follows="left|top" + font="SansSerif" + height="16" + layout="topleft" + left="85" + name="server_text" + right="-10"> + Normal + </text> + <text + make_visible_control="LagMeterShrunk" + bottom="136" + follows="left|top" + height="16" + layout="topleft" + left="40" + name="server_lag_cause" + right="-32" /> + <button + bottom="145" + follows="left|top" + height="18" + help_url="https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=4851" + label="?" + layout="topleft" + name="server_help" + right="-10" + width="18" /> + <button + follows="left|top" + height="20" + label=">>" + layout="topleft" + left_delta="-317" + name="minimize" + top_delta="-2" + width="25"> + <button.commit_callback + function="LagMeter.ClickShrink" /> + </button> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_land_holdings.xml b/indra/newview/skins/default/xui/en/floater_land_holdings.xml new file mode 100644 index 0000000000000000000000000000000000000000..0ed4bb4e0755d9537422cface3d2fd9282560c28 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_land_holdings.xml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + height="383" + layout="topleft" + name="land holdings floater" + title="My Land" + width="600"> + <floater.string + name="area_string"> + [AREA] sq. meters + </floater.string> + <scroll_list + draw_heading="true" + height="170" + layout="topleft" + left="8" + name="parcel list" + top="24" + width="584"> + <scroll_list.columns + label="Parcel Name" + name="name" + width="163" /> + <scroll_list.columns + label="Region" + name="location" + width="175" /> + <scroll_list.columns + label="Type" + name="type" + width="140" /> + <scroll_list.columns + label="Area" + name="area" + width="87" /> + <scroll_list.columns + label="" + name="hidden" + width="-1" /> + </scroll_list> + <button + height="20" + label="Teleport" + label_selected="Teleport" + layout="topleft" + left_delta="4" + name="Teleport" + tool_tip="Teleport to the center of this land." + top_pad="4" + width="100" /> + <button + height="20" + label="Show on Map" + label_selected="Show on Map" + layout="topleft" + left_pad="4" + name="Show on Map" + tool_tip="Show this land on the world map." + top_delta="0" + width="100" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="12" + name="contrib_label" + top="222" + width="480"> + Contributions to your groups: + </text> + <scroll_list + draw_heading="true" + height="75" + layout="topleft" + left_delta="-4" + name="grant list" + top_pad="4" + width="584"> + <scroll_list.columns + label="Group" + name="group" + width="330" /> + <scroll_list.columns + label="Area" + name="area" + width="220" /> + </scroll_list> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_delta="4" + name="allowed_label" + top_pad="4" + width="348"> + Allowed land holdings at current payment plan: + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_delta="340" + name="allowed_text" + top_delta="0" + width="132"> + [AREA] sq. meters + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="12" + name="current_label" + top="341" + width="348"> + Current land holdings: + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_delta="340" + name="current_text" + top_delta="0" + width="132"> + [AREA] sq. meters + </text> + <text + type="string" + length="1" + follows="left|top" + font="SansSerifBold" + height="16" + layout="topleft" + left="12" + name="available_label" + top="361" + width="348"> + Available for land purchases: + </text> + <text + type="string" + length="1" + follows="left|top" + font="SansSerifBold" + height="16" + layout="topleft" + left_delta="340" + name="available_text" + top_delta="0" + width="140"> + [AREA] sq. meters + </text> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml new file mode 100644 index 0000000000000000000000000000000000000000..0735ac160aca809ccf72f2b0cad288f0de36438b --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml @@ -0,0 +1,71 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + bevel_style="none" + border_style="line" + can_resize="true" + follows="left|top" + height="550" + layout="topleft" + min_height="271" + min_width="290" + name="script ed float" + save_rect="true" + title="Script: New Script" + width="500"> + <floater.string + name="not_allowed"> + You are not allowed to view this script. + </floater.string> + <floater.string + name="script_running"> + Running + </floater.string> + <floater.string + name="Title"> + Script: [NAME] + </floater.string> + <button + follows="right|bottom" + height="20" + label="Reset" + label_selected="Reset" + layout="topleft" + left="362" + name="Reset" + top="525" + width="128" /> + <check_box + enabled="false" + follows="left|bottom" + font="SansSerif" + height="18" + initial_value="true" + label="Running" + layout="topleft" + left_delta="-350" + name="running" + top_delta="2" + width="100" /> + <check_box + enabled="false" + follows="left|bottom" + font="SansSerif" + height="18" + initial_value="true" + label="Mono" + layout="topleft" + left_delta="70" + name="mono" + top_delta="0" + width="100" /> + <panel + bevel_style="none" + border_style="line" + follows="left|top|right|bottom" + height="506" + layout="topleft" + left="1" + name="script ed panel" + top="18" + width="497" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_lsl_guide.xml b/indra/newview/skins/default/xui/en/floater_lsl_guide.xml new file mode 100644 index 0000000000000000000000000000000000000000..ce6b0efd03e107d0e0577bb19c3e2932fc54e61b --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_lsl_guide.xml @@ -0,0 +1,62 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_resize="true" + follows="left|top" + height="400" + layout="topleft" + min_height="271" + min_width="350" + name="script ed float" + save_rect="true" + title="LSL Wiki" + width="370"> + <check_box + follows="top|left" + font="SansSerif" + halign="center" + height="20" + label="Follow cursor" + layout="topleft" + left="10" + name="lock_check" + top="25" + width="60" /> + <combo_box + allow_text_entry="true" + follows="top|left|right" + font="SansSerif" + halign="center" + height="20" + label="Lock" + layout="topleft" + left_pad="40" + name="history_combo" + top_delta="0" + width="90" /> + <button + follows="top|right" + height="20" + label="Back" + layout="topleft" + left_pad="5" + name="back_btn" + top_delta="0" + width="70" /> + <button + follows="top|right" + height="20" + label="Forward" + layout="topleft" + left_pad="5" + name="fwd_btn" + top_delta="0" + width="70" /> + <web_browser + bottom="390" + follows="left|right|top|bottom" + layout="topleft" + left="10" + name="lsl_guide_html" + right="-10" + top="50" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_map.xml b/indra/newview/skins/default/xui/en/floater_map.xml new file mode 100644 index 0000000000000000000000000000000000000000..ed3b00250b1567c53758ccbe41ef9798fa09a308 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_map.xml @@ -0,0 +1,172 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_resize="true" + follows="top|right" + height="225" + layout="topleft" + min_height="60" + min_width="174" + name="Map" + save_rect="true" + save_visibility="true" + single_instance="true" + width="200"> + <floater.string + name="mini_map_north"> + N + </floater.string> + <floater.string + name="mini_map_east"> + E + </floater.string> + <floater.string + name="mini_map_west"> + W + </floater.string> + <floater.string + name="mini_map_south"> + S + </floater.string> + <floater.string + name="mini_map_southeast"> + SE + </floater.string> + <floater.string + name="mini_map_northeast"> + NE + </floater.string> + <floater.string + name="mini_map_southwest"> + SW + </floater.string> + <floater.string + name="mini_map_northwest"> + NW + </floater.string> + <floater.string + name="ToolTipMsg"> + [AGENT][REGION](Double-click to open Map) + </floater.string> + <net_map + bg_color="NetMapBackgroundColor" + bottom="225" + follows="top|left|bottom|right" + layout="topleft" + left="0" + mouse_opaque="false" + name="Net Map" + right="198" + top="2" /> + <text + type="string" + length="1" + bottom="225" + label="N" + layout="topleft" + left="0" + name="floater_map_north" + right="10" + text="N" + text_color="1 1 1 0.7" + top="215"> + N + </text> + <text + type="string" + length="1" + bottom="225" + label="E" + layout="topleft" + left="0" + name="floater_map_east" + right="10" + text="E" + text_color="1 1 1 0.7" + top="215"> + E + </text> + <text + type="string" + length="1" + bottom="225" + label="W" + layout="topleft" + left="0" + name="floater_map_west" + right="11" + text="W" + text_color="1 1 1 0.7" + top="215"> + W + </text> + <text + type="string" + length="1" + bottom="225" + label="S" + layout="topleft" + left="0" + name="floater_map_south" + right="10" + text="S" + text_color="1 1 1 0.7" + top="215"> + S + </text> + <text + type="string" + length="1" + bottom="225" + label="SE" + layout="topleft" + left="0" + name="floater_map_southeast" + right="20" + text="SE" + text_color="1 1 1 0.7" + top="215"> + SE + </text> + <text + type="string" + length="1" + bottom="225" + label="NE" + layout="topleft" + left="0" + name="floater_map_northeast" + right="20" + text="NE" + text_color="1 1 1 0.7" + top="215"> + NE + </text> + <text + type="string" + length="1" + bottom="225" + label="SW" + layout="topleft" + left="0" + name="floater_map_southwest" + right="20" + text="SW" + text_color="1 1 1 0.7" + top="215"> + SW + </text> + <text + type="string" + length="1" + bottom="225" + label="NW" + layout="topleft" + left="0" + name="floater_map_northwest" + right="20" + text="NW" + text_color="1 1 1 0.7" + top="215"> + NW + </text> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_media_browser.xml b/indra/newview/skins/default/xui/en/floater_media_browser.xml new file mode 100644 index 0000000000000000000000000000000000000000..a073c3443aa4e3795c62d4f543ee9878ba754b70 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_media_browser.xml @@ -0,0 +1,144 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_resize="true" + height="440" + layout="topleft" + min_height="140" + min_width="467" + name="floater_about" + save_rect="true" + title="Media Browser" + width="820"> + <layout_stack + bottom="440" + follows="left|right|top|bottom" + layout="topleft" + left="10" + name="stack1" + top="20" + width="800"> + <layout_panel + auto_resize="false" + height="20" + layout="topleft" + left="0" + name="nav_controls" + top="400" + user_resize="false" + width="800"> + <button + follows="left|top" + height="20" + label="Back" + layout="topleft" + left="0" + name="back" + top="0" + width="55" /> + <button + follows="left|top" + height="20" + label="Forward" + layout="topleft" + left_pad="3" + name="forward" + top_delta="0" + width="68" /> + <button + enabled="false" + follows="left|top" + height="20" + label="Reload" + layout="topleft" + left_pad="2" + name="reload" + top_delta="0" + width="70" /> + <combo_box + allow_text_entry="true" + follows="left|top|right" + height="20" + layout="topleft" + left_pad="5" + max_chars="255" + name="address" + top_delta="0" + width="540" /> + <button + enabled="false" + follows="right|top" + height="20" + label="Go" + layout="topleft" + left_pad="5" + name="go" + top_delta="0" + width="55" /> + </layout_panel> + <layout_panel + auto_resize="false" + height="20" + layout="topleft" + left_delta="0" + name="parcel_owner_controls" + top_delta="0" + user_resize="false" + width="540"> + <button + enabled="false" + follows="left|top" + height="20" + label="Send Current URL to Parcel" + layout="topleft" + left="0" + name="assign" + top="0" + width="200" /> + </layout_panel> + <layout_panel + height="20" + layout="topleft" + left_delta="0" + name="external_controls" + top_delta="0" + user_resize="false" + width="540"> + <web_browser + bottom="-10" + follows="left|right|top|bottom" + layout="topleft" + left="0" + name="browser" + top="0" + width="540" /> + <button + follows="bottom|left" + height="20" + label="Open in My Web Browser" + layout="topleft" + left_delta="0" + name="open_browser" + top_pad="5" + width="185" /> + <check_box + control_name="UseExternalBrowser" + follows="bottom|left" + height="20" + label="Always open in my web browser" + layout="topleft" + left_pad="5" + name="open_always" + top_delta="0" + width="200" /> + <button + follows="bottom|right" + height="20" + label="Close" + layout="topleft" + left_pad="80" + name="close" + top_delta="0" + width="70" /> + </layout_panel> + </layout_stack> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_mem_leaking.xml b/indra/newview/skins/default/xui/en/floater_mem_leaking.xml new file mode 100644 index 0000000000000000000000000000000000000000..e2a99e66141dbe61edca9091233928e3e0099f78 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_mem_leaking.xml @@ -0,0 +1,110 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_minimize="false" + follows="left|top" + height="175" + layout="topleft" + name="MemLeak" + title="Memory Leaking Simulation" + width="350"> + <spinner + decimal_digits="0" + follows="left|top" + height="20" + increment="256" + initial_value="512" + label="Leaking Speed (bytes per frame):" + label_width="220" + layout="topleft" + left="10" + max_val="4.29497e+009" + name="leak_speed" + top="30" + width="330" /> + <spinner + decimal_digits="0" + follows="left|top" + height="20" + increment="4" + initial_value="512" + label="Max Leaked Memory (MB):" + label_width="220" + layout="topleft" + left_delta="0" + max_val="4096" + name="max_leak" + top_pad="5" + width="330" /> + <text + type="string" + length="1" + follows="left|top" + height="25" + layout="topleft" + left_delta="0" + name="total_leaked_label" + top_delta="20" + width="300"> + Current leaked memory: [SIZE] KB + </text> + <text + type="string" + length="1" + follows="left|top" + height="25" + layout="topleft" + left_delta="0" + name="note_label_1" + top_delta="25" + width="330"> + [NOTE1] + </text> + <text + type="string" + length="1" + follows="left|top" + height="25" + layout="topleft" + left_delta="0" + name="note_label_2" + top_delta="25" + width="330"> + [NOTE2] + </text> + <button + follows="left|top" + height="20" + label="Start" + layout="topleft" + left_delta="0" + name="start_btn" + top_delta="20" + width="70" /> + <button + follows="left|top" + height="20" + label="Stop" + layout="topleft" + left_pad="7" + name="stop_btn" + top_delta="0" + width="70" /> + <button + follows="left|top" + height="20" + label="Release" + layout="topleft" + left_pad="7" + name="release_btn" + top_delta="0" + width="70" /> + <button + follows="left|top" + height="20" + label="Close" + layout="topleft" + left_pad="36" + name="close_btn" + top_delta="0" + width="70" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_moveview.xml b/indra/newview/skins/default/xui/en/floater_moveview.xml new file mode 100644 index 0000000000000000000000000000000000000000..47342ffc5b511c1e2839453917e0e274c4591941 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_moveview.xml @@ -0,0 +1,127 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_minimize="false" + center_horiz="true" + follows="bottom" + height="58" + layout="topleft" + name="move_floater" + save_rect="true" + width="135"> + <button + follows="left|bottom" + height="25" + image_disabled="move_turn_left_out.tga" + image_disabled_selected="move_turn_left_in.tga" + image_selected="move_turn_left_in.tga" + image_unselected="move_turn_left_out.tga" + layout="topleft" + left="20" + name="turn left btn" + picture_style="true" + scale_image="false" + tool_tip="Turn Left" + top="29" + width="25" /> + <button + follows="left|bottom" + height="25" + image_disabled="move_turn_right_out.tga" + image_disabled_selected="move_turn_right_in.tga" + image_selected="move_turn_right_in.tga" + image_unselected="move_turn_right_out.tga" + layout="topleft" + left_pad="21" + name="turn right btn" + picture_style="true" + scale_image="false" + tool_tip="Turn Right" + top_delta="0" + width="25" /> + <button + follows="left|bottom" + height="25" + image_disabled="move_up_out.tga" + image_disabled_selected="move_up_in.tga" + image_selected="move_up_in.tga" + image_unselected="move_up_out.tga" + layout="topleft" + left="91" + name="move up btn" + picture_style="true" + scale_image="false" + tool_tip="Jump or Fly Up" + top="4" + width="25" /> + <button + follows="left|bottom" + height="25" + image_disabled="move_down_out.tga" + image_disabled_selected="move_down_in.tga" + image_selected="move_down_in.tga" + image_unselected="move_down_out.tga" + layout="topleft" + left_delta="0" + name="move down btn" + picture_style="true" + scale_image="false" + tool_tip="Crouch or Fly Down" + top_delta="25" + width="25" /> + <joystick_slide + follows="left|bottom" + height="25" + image_selected="move_left_in.tga" + image_unselected="move_left_out.tga" + layout="topleft" + left="20" + name="slide left btn" + picture_style="true" + quadrant="left" + scale_image="false" + tool_tip="Move Left" + top="4" + width="25" /> + <joystick_slide + follows="left|bottom" + height="25" + image_selected="move_right_in.tga" + image_unselected="move_right_out.tga" + layout="topleft" + left_pad="21" + name="slide right btn" + picture_style="true" + quadrant="right" + scale_image="false" + tool_tip="Move Right" + top_delta="0" + width="25" /> + <joystick_turn + follows="left|bottom" + height="25" + image_selected="move_forward_in.tga" + image_unselected="move_forward_out.tga" + layout="topleft" + left_delta="-21" + name="forward btn" + picture_style="true" + quadrant="up" + scale_image="false" + tool_tip="Move Forward" + top_delta="0" + width="21" /> + <joystick_turn + follows="left|bottom" + height="25" + image_selected="move_backward_in.tga" + image_unselected="move_backward_out.tga" + layout="topleft" + left_delta="0" + name="backward btn" + picture_style="true" + quadrant="down" + scale_image="false" + tool_tip="Move Backward" + top_delta="25" + width="21" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_mute_object.xml b/indra/newview/skins/default/xui/en/floater_mute_object.xml new file mode 100644 index 0000000000000000000000000000000000000000..7a0ec8282c456b397afa33ffc379db0cafce120c --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_mute_object.xml @@ -0,0 +1,55 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_minimize="false" + height="140" + layout="topleft" + name="mute by name" + title="Mute object by name" + width="375"> + <text + type="string" + length="1" + bottom_delta="50" + follows="top|left" + font="SansSerif" + height="16" + layout="topleft" + left="20" + left_delta="25" + name="message" + right="380"> + Mute by name only affects object chat and IM, not sounds. +You must type the object's name exactly. + </text> + <line_editor + type="string" + length="1" + follows="top|right" + font="SansSerif" + height="18" + layout="topleft" + left_delta="0" + name="object_name" + top_pad="22" + width="320"> + Object name + </line_editor> + <button + follows="bottom|left" + height="20" + label="Ok" + layout="topleft" + left="108" + name="OK" + top="100" + width="75" /> + <button + follows="bottom|right" + height="20" + label="Cancel" + layout="topleft" + left_pad="7" + name="Cancel" + top_delta="0" + width="75" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_my_friends.xml b/indra/newview/skins/default/xui/en/floater_my_friends.xml new file mode 100644 index 0000000000000000000000000000000000000000..65665c7036d1fc4d0210570c55bc54e13f4c0437 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_my_friends.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_close="false" + can_resize="true" + height="390" + layout="topleft" + min_height="240" + min_width="365" + name="floater_my_friends" + save_rect="true" + single_instance="true" + title="Contacts" + width="395"> + <tab_container + follows="all" + height="364" + layout="topleft" + left="4" + name="friends_and_groups" + tab_position="top" + tab_width="80" + top="20" + width="383"> + <panel + bottom="364" + filename="panel_friends.xml" + label="Friends" + layout="topleft" + left="0" + name="friends_panel" + width="370" /> + <panel + bottom="364" + filename="panel_groups.xml" + label="Groups" + layout="topleft" + left="0" + name="groups_panel" + width="370" /> + </tab_container> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_nearby_chat.xml b/indra/newview/skins/default/xui/en/floater_nearby_chat.xml new file mode 100644 index 0000000000000000000000000000000000000000..f4fd6b01b4fa12341a2f8c52f7ca518b8744f471 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_nearby_chat.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater + background_opaque="false" + background_visible="true" + bevel_style="in" + bg_alpha_color="0.3 0.3 0.3 1.0" + height="300" + layout="topleft" + name="nearby_chat" + save_rect="true" + title="Nearby Chat" + width="320"> + <panel top="20" width="320" height="30" background_visible="true" background_opaque="false" bg_alpha_color="0.0 0.0 0.0 1.0" name="chat_caption"> + <text + width="140" left="25" height="20" follows="left|right|top" + font="SansSerifBigBold" text_color="white" word_wrap="true" + mouse_opaque="true" name="sender_name" >NEARBY CHAT </text> + <icon top="5" left="250" + width="20" height="20" follows="top|right" + color="1 1 1 1" enabled="true" image_name="icn_voice-groupfocus.tga" + mouse_opaque="true" name="nearby_speakers_btn"/> + <icon top="5" left="275" + width="20" height="20" follows="top|right" + color="1 1 1 1" enabled="true" image_name="inv_item_landmark_visited.tga" + mouse_opaque="true" name="tearoff_btn"/> + <icon top="5" left="300" + width="15" height="15" follows="top|right" + color="1 1 1 1" enabled="true" image_name="closebox.tga" + name="close_btn"/> + </panel> + <chat_history_view bottom="0" width="250" height="320" follows="left|right|top|bottom" name="chat_scroll" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_notification.xml b/indra/newview/skins/default/xui/en/floater_notification.xml new file mode 100644 index 0000000000000000000000000000000000000000..cd88ec2f3f13b884a6428206030b4e2685a0298e --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_notification.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_resize="true" + height="200" + layout="topleft" + min_height="50" + name="notification" + title="Notifications Console" + width="200"> + <text_editor + type="string" + length="1" + enabled="false" + follows="left|top|right|bottom" + font="SansSerif" + height="140" + ignore_tab="false" + layout="topleft" + left="4" + max_length="65536" + name="payload" + top="25" + width="192" + word_wrap="true"> + Loading... + </text_editor> + <combo_box + follows="left|bottom" + height="20" + label="Response" + layout="topleft" + left="10" + name="response" + top="171" + width="100" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_notifications_console.xml b/indra/newview/skins/default/xui/en/floater_notifications_console.xml new file mode 100644 index 0000000000000000000000000000000000000000..14aa12aed740ab60d04d7669fc749dd7fda8f2fa --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_notifications_console.xml @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_resize="true" + height="500" + layout="topleft" + min_height="50" + name="notifications_console" + title="Notifications Console" + width="500"> + <combo_box + follows="left|right|top" + height="18" + label="Select notification type" + layout="topleft" + left="2" + name="notification_types" + top="22" + width="440" /> + <button + follows="right|top" + height="18" + label="Add" + layout="topleft" + left_pad="3" + name="add_notification" + top_delta="0" + width="50" > + <button.commit_callback + function="ClickAdd" /> + </button> + <layout_stack + bottom="495" + follows="left|right|top|bottom" + layout="topleft" + left="5" + name="notification_channels" + right="-5" + top="42" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_openobject.xml b/indra/newview/skins/default/xui/en/floater_openobject.xml new file mode 100644 index 0000000000000000000000000000000000000000..742934b57b0ce7d8759dcc212f31ef320d92ff27 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_openobject.xml @@ -0,0 +1,57 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_resize="true" + default_tab_group="1" + height="350" + layout="topleft" + min_height="160" + min_width="270" + name="objectcontents" + save_rect="true" + title="Object Contents" + width="300"> + <panel_inventory + follows="left|top|right|bottom" + height="276" + layout="topleft" + left="8" + name="object_contents" + top="44" + width="284" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="object_name" + top_delta="-20" + width="284"> + [DESC]: + </text> + <button + follows="bottom|left" + font="SansSerifSmall" + height="20" + label="Copy To Inventory" + label_selected="Copy To Inventory" + layout="topleft" + left_delta="2" + name="copy_to_inventory_button" + tab_group="1" + top_pad="285" + width="120" /> + <button + follows="bottom|left" + font="SansSerifSmall" + height="20" + label="Copy And Wear" + label_selected="Copy And Wear" + layout="topleft" + left_pad="10" + name="copy_and_wear_button" + top_delta="0" + width="120" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_pay.xml b/indra/newview/skins/default/xui/en/floater_pay.xml new file mode 100644 index 0000000000000000000000000000000000000000..96195c9ba1ebc2df9132c5ef10aac30f9926f334 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_pay.xml @@ -0,0 +1,129 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_minimize="false" + height="140" + layout="topleft" + name="Give Money" + save_rect="true" + width="300"> + <button + height="20" + label="L$1" + label_selected="L$1" + layout="topleft" + left="108" + name="fastpay 1" + top="54" + width="80" /> + <button + height="20" + label="L$5" + label_selected="L$5" + layout="topleft" + left_pad="15" + name="fastpay 5" + top_delta="0" + width="80" /> + <button + height="20" + label="L$10" + label_selected="L$10" + layout="topleft" + left="108" + name="fastpay 10" + top="78" + width="80" /> + <button + height="20" + label="L$20" + label_selected="L$20" + layout="topleft" + left_pad="15" + name="fastpay 20" + top_delta="0" + width="80" /> + <button + enabled="false" + height="20" + label="Pay" + label_selected="Pay" + layout="topleft" + left="120" + name="pay btn" + top="112" + width="80" /> + <button + height="20" + label="Cancel" + label_selected="Cancel" + layout="topleft" + left_pad="3" + name="cancel btn" + top_delta="0" + width="80" /> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="18" + layout="topleft" + left="12" + name="payee_label" + top="7" + width="75"> + Pay resident: + </text> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="18" + layout="topleft" + left_delta="73" + name="payee_name" + top_delta="0" + width="210"> + [FIRST] [LAST] + </text> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + halign="right" + height="18" + layout="topleft" + left="5" + name="fastpay text" + top="54" + width="95"> + Fast Pay: + </text> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="18" + layout="topleft" + left="12" + name="amount text" + top="112" + width="75"> + Amount: + </text> + <line_editor + border_style="line" + border_thickness="1" + follows="left|top|right" + font="SansSerif" + height="18" + layout="topleft" + left_delta="46" + max_length="9" + name="amount" + top_delta="0" + width="57" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_pay_object.xml b/indra/newview/skins/default/xui/en/floater_pay_object.xml new file mode 100644 index 0000000000000000000000000000000000000000..bb91f709a34220805eb5a2d746b026dc1725d2cd --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_pay_object.xml @@ -0,0 +1,174 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_minimize="false" + height="140" + layout="topleft" + name="Give Money" + save_rect="true" + width="300"> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + halign="right" + height="18" + layout="topleft" + left="5" + name="payee_group" + top="7" + width="75"> + Pay group: + </text> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + halign="right" + height="18" + layout="topleft" + left_delta="0" + name="payee_resident" + top_delta="0" + width="75"> + Pay resident: + </text> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="18" + layout="topleft" + left_pad="5" + name="payee_name" + top_delta="0" + width="210"> + [FIRST] [LAST] + </text> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + halign="right" + height="18" + layout="topleft" + left="5" + name="object_name_label" + top="32" + width="75"> + Via object: + </text> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="18" + layout="topleft" + left_pad="5" + name="object_name_text" + top_delta="0" + width="210"> + ... + </text> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + halign="right" + height="18" + layout="topleft" + left="5" + name="fastpay text" + top="54" + width="75"> + Fast Pay: + </text> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + halign="right" + height="18" + layout="topleft" + left_delta="0" + name="amount text" + top_pad="40" + width="75"> + Amount: + </text> + <button + height="20" + label="L$1" + label_selected="L$1" + layout="topleft" + left="85" + name="fastpay 1" + top="54" + width="80" /> + <button + height="20" + label="L$5" + label_selected="L$5" + layout="topleft" + left_pad="5" + name="fastpay 5" + top_delta="0" + width="80" /> + <button + height="20" + label="L$10" + label_selected="L$10" + layout="topleft" + left="85" + name="fastpay 10" + top="78" + width="80" /> + <button + height="20" + label="L$20" + label_selected="L$20" + layout="topleft" + left_pad="5" + name="fastpay 20" + top_delta="0" + width="80" /> + <button + enabled="false" + follows="right|bottom" + height="20" + label="Pay" + label_selected="Pay" + layout="topleft" + left="140" + name="pay btn" + top="112" + width="70" /> + <button + follows="right|bottom" + height="20" + label="Cancel" + label_selected="Cancel" + layout="topleft" + left_pad="5" + name="cancel btn" + top_delta="0" + width="70" /> + <line_editor + border_style="line" + border_thickness="1" + follows="left|top|right" + font="SansSerif" + height="18" + layout="topleft" + left_delta="-130" + max_length="9" + name="amount" + top_delta="0" + width="50" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_perm_prefs.xml b/indra/newview/skins/default/xui/en/floater_perm_prefs.xml new file mode 100644 index 0000000000000000000000000000000000000000..430cb940e5b5fcf3e1d3a087dc238d83079673c1 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_perm_prefs.xml @@ -0,0 +1,106 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + height="180" + layout="topleft" + name="perm prefs" + save_rect="true" + title="Default Upload Permissions" + width="315"> + <panel + follows="left|top|right|bottom" + height="120" + label="Permissions" + layout="topleft" + left="10" + name="permissions" + top="20" + width="315"> + <button + follows="left" + height="18" + label="?" + label_selected="?" + layout="topleft" + left="260" + name="help" + top="7" + width="22" /> + <check_box + control_name="ShareWithGroup" + height="16" + label="Share with group" + layout="topleft" + left_delta="-250" + name="share_with_group" + top_delta="2" + width="106" /> + <check_box + control_name="EveryoneCopy" + height="16" + label="Allow anyone to copy" + layout="topleft" + left_delta="0" + name="everyone_copy" + top_pad="16" + width="130" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_delta="0" + name="NextOwnerLabel" + top_pad="16" + width="88"> + Next owner can: + </text> + <check_box + control_name="NextOwnerModify" + height="16" + label="Modify" + layout="topleft" + left_delta="0" + name="next_owner_modify" + top_pad="14" + width="78" /> + <check_box + control_name="NextOwnerCopy" + height="16" + label="Copy" + layout="topleft" + left_delta="78" + name="next_owner_copy" + top_delta="0" + width="88" /> + <check_box + control_name="NextOwnerTransfer" + enabled="false" + height="16" + initial_value="true" + label="Resell/Give away" + layout="topleft" + left_delta="88" + name="next_owner_transfer" + top_delta="0" + width="106" /> + </panel> + <button + height="20" + label="OK" + label_selected="OK" + layout="topleft" + left="90" + name="ok" + top="150" + width="100" /> + <button + height="20" + label="Cancel" + label_selected="Cancel" + layout="topleft" + left_pad="5" + name="cancel" + top_delta="0" + width="100" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_post_process.xml b/indra/newview/skins/default/xui/en/floater_post_process.xml new file mode 100644 index 0000000000000000000000000000000000000000..5a36ed5fd6c0b4b7378b057978728f7bd5126f99 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_post_process.xml @@ -0,0 +1,420 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + height="400" + layout="topleft" + name="Post-Process Floater" + title="Post-Process Settings" + width="400"> + <tab_container + follows="left|top" + height="400" + layout="topleft" + left="0" + name="Post-Process Tabs" + tab_position="top" + top="0" + width="400"> + <panel + border="true" + follows="left|top|right|bottom" + height="400" + label="Color Filter" + layout="topleft" + left="1" + mouse_opaque="false" + name="wmiColorFilterPanel" + top="0" + width="398"> + <check_box + control_name="wmiColorFilterToggle" + height="16" + label="Enable" + layout="topleft" + left="14" + name="wmiColorFilterToggle" + top="4" + width="200" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="-4" + name="wmiColorFilterBrightnessText" + top_pad="4" + width="355"> + Brightness + </text> + <slider + control_name="wmiColorFilterBrightness" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="1.0" + layout="topleft" + left_delta="4" + max_val="4" + name="wmiColorFilterBrightness" + top_pad="20" + width="200" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="-4" + name="wmiColorFilterSaturationText" + top_pad="4" + width="355"> + Saturation + </text> + <slider + control_name="wmiColorFilterSaturation" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="1.0" + layout="topleft" + left_delta="4" + max_val="2" + min_val="-1" + name="wmiColorFilterSaturation" + top_pad="20" + width="200" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="-4" + name="wmiColorFilterContrastText" + top_pad="4" + width="355"> + Contrast + </text> + <slider + control_name="wmiColorFilterContrast" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="1.0" + layout="topleft" + left_delta="4" + max_val="4" + name="wmiColorFilterContrast" + top_pad="20" + width="200" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="-4" + name="wmiColorFilterBaseText" + top_pad="4" + width="355"> + Contrast Base Color + </text> + <slider + control_name="wmiColorFilterBaseR" + follows="left" + height="10" + increment="0.01" + initial_value="1.0" + label="R" + layout="topleft" + left_delta="4" + name="wmiColorFilterBaseR" + top_pad="20" + width="200" /> + <slider + control_name="wmiColorFilterBaseG" + follows="left" + height="10" + increment="0.01" + initial_value="1.0" + label="G" + layout="topleft" + left_delta="0" + name="wmiColorFilterBaseG" + top_pad="10" + width="200" /> + <slider + control_name="wmiColorFilterBaseB" + follows="left" + height="10" + increment="0.01" + initial_value="1.0" + label="B" + layout="topleft" + left_delta="0" + name="wmiColorFilterBaseB" + top_pad="10" + width="200" /> + <slider + control_name="wmiColorFilterBaseI" + follows="left" + height="10" + increment="0.01" + initial_value="0.5" + label="I" + layout="topleft" + left_delta="0" + name="wmiColorFilterBaseI" + top_pad="10" + width="200" /> + </panel> + <panel + border="true" + follows="left|top|right|bottom" + height="400" + label="Night Vision" + layout="topleft" + left_delta="0" + mouse_opaque="false" + name="wmiNightVisionPanel" + top_delta="-236" + width="398"> + <check_box + control_name="wmiNightVisionToggle" + height="16" + label="Enable" + layout="topleft" + left="14" + name="wmiNightVisionToggle" + top="4" + width="200" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="-4" + name="wmiNightVisionBrightMultText" + top_pad="5" + width="355"> + Light Amplification Multiple + </text> + <slider + control_name="wmiNightVisionBrightMult" + follows="left" + height="10" + increment="0.01" + initial_value="3.0" + layout="topleft" + left_delta="4" + max_val="10" + min_val="1" + name="wmiNightVisionBrightMult" + top_pad="20" + width="200" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="-4" + name="wmiNightVisionNoiseSizeText" + top_pad="4" + width="355"> + Noise Size + </text> + <slider + control_name="wmiNightVisionNoiseSize" + follows="left" + height="10" + initial_value="1" + layout="topleft" + left_delta="4" + max_val="100" + min_val="1" + name="wmiNightVisionNoiseSize" + top_pad="20" + width="200" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="-4" + name="wmiNightVisionNoiseStrengthText" + top_pad="4" + width="355"> + Noise Strength + </text> + <slider + control_name="wmiNightVisionNoiseStrength" + follows="left" + height="10" + increment="0.01" + initial_value="0.3" + layout="topleft" + left_delta="4" + name="wmiNightVisionNoiseStrength" + top_pad="20" + width="200" /> + </panel> + <panel + border="true" + follows="left|top|right|bottom" + height="400" + label="Bloom" + layout="topleft" + left_delta="0" + name="wmiBloomPanel" + top_delta="-236" + width="398"> + <check_box + control_name="wmiBloomToggle" + height="16" + label="Enable" + layout="topleft" + left="14" + name="wmiBloomToggle" + top="4" + width="200" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="-4" + name="wmiBloomExtractText" + top_pad="5" + width="355"> + Luminosity Extraction + </text> + <slider + control_name="wmiBloomExtract" + follows="left" + height="10" + increment="0.01" + initial_value="0.9" + layout="topleft" + left_delta="4" + name="wmiBloomExtract" + top_pad="20" + width="200" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="-4" + name="wmiBloomSizeText" + top_pad="4" + width="355"> + Bloom Size + </text> + <slider + control_name="wmiBloomSize" + follows="left" + height="10" + increment="0.01" + initial_value="3.0" + layout="topleft" + left_delta="4" + max_val="20" + name="wmiBloomSize" + top_pad="20" + width="200" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="-4" + name="wmiBloomStrengthText" + top_pad="4" + width="355"> + Bloom Strength + </text> + <slider + control_name="wmiBloomStrength" + follows="left" + height="10" + increment="0.01" + initial_value="1.2" + layout="topleft" + left_delta="4" + max_val="10" + name="wmiBloomStrength" + top_pad="20" + width="200" /> + </panel> + <panel + border="true" + follows="left|top|right|bottom" + height="400" + label="Extras" + layout="topleft" + left_delta="0" + mouse_opaque="false" + name="Extras" + top_delta="-236" + width="398"> + <button + height="20" + label="LoadEffect" + label_selected="LoadEffect" + layout="topleft" + left="15" + name="PPLoadEffect" + top="13" + width="100" /> + <button + height="20" + label="SaveEffect" + label_selected="SaveEffect" + layout="topleft" + left_delta="0" + name="PPSaveEffect" + top_pad="7" + width="100" /> + <combo_box + height="18" + layout="topleft" + left_delta="120" + name="PPEffectsCombo" + top="15" + width="150" /> + <line_editor + border_style="line" + border_thickness="1" + follows="left|right|bottom" + font="SansSerif" + height="20" + label="Effect Name" + layout="topleft" + left_delta="0" + max_length="40" + name="PPEffectNameEditor" + tab_group="1" + top_pad="22" + width="150" /> + </panel> + </tab_container> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_postcard.xml b/indra/newview/skins/default/xui/en/floater_postcard.xml new file mode 100644 index 0000000000000000000000000000000000000000..91c2a418916eabaa3f53a952fad10e7cc1611e5a --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_postcard.xml @@ -0,0 +1,156 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + auto_tile="true" + can_minimize="false" + can_resize="true" + height="380" + layout="topleft" + min_height="380" + min_width="450" + name="Postcard" + title="Email Snapshot" + width="450"> + <floater.string + name="default_subject"> + Postcard from Second Life. + </floater.string> + <floater.string + name="default_message"> + Check this out! + </floater.string> + <floater.string + name="upload_message"> + Sending... + </floater.string> + <text + type="string" + length="1" + bottom="35" + follows="top|left" + font="SansSerif" + layout="topleft" + left="12" + name="to_label"> + Recipient's Email: + </text> + <line_editor + follows="left|top" + height="20" + layout="topleft" + left_delta="108" + name="to_form" + top_delta="-4" + width="150" /> + <text + type="string" + length="1" + bottom_delta="23" + follows="top|left" + font="SansSerif" + layout="topleft" + left="12" + name="from_label"> + Your Email: + </text> + <line_editor + follows="left|top" + height="20" + layout="topleft" + left_delta="108" + name="from_form" + top_delta="-4" + width="150" /> + <text + type="string" + length="1" + bottom_delta="23" + follows="top|left" + font="SansSerif" + layout="topleft" + left="12" + name="name_label"> + Your Name: + </text> + <line_editor + follows="left|top" + height="20" + layout="topleft" + left_delta="108" + max_length="100" + name="name_form" + top_delta="-4" + width="150" /> + <text + type="string" + length="1" + bottom_delta="23" + follows="top|left" + font="SansSerif" + layout="topleft" + left="12" + name="subject_label"> + Subject: + </text> + <line_editor + follows="left|top" + height="20" + label="Type your subject here." + layout="topleft" + left_delta="108" + max_length="100" + name="subject_form" + top_delta="-4" + width="150" /> + <text + type="string" + length="1" + bottom_delta="23" + follows="top|left" + font="SansSerif" + layout="topleft" + left="12" + name="msg_label"> + Message: + </text> + <text_editor + type="string" + length="1" + follows="left|top|right|bottom" + height="140" + layout="topleft" + left_delta="0" + max_length="700" + name="msg_form" + top_pad="10" + width="420"> + Type your message here. + </text_editor> + <text + type="string" + length="1" + bottom_delta="37" + follows="left|bottom" + layout="topleft" + left="12" + name="fine_print"> + If your recipient joins SL, you'll get a referral bonus. + </text> + <button + follows="right|bottom" + height="20" + label="Cancel" + layout="topleft" + name="cancel_btn" + right="-10" + top="350" + width="100" /> + <button + follows="right|bottom" + height="20" + label="Send" + layout="topleft" + left_delta="-106" + name="send_btn" + top_delta="0" + width="100" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_preferences.xml b/indra/newview/skins/default/xui/en/floater_preferences.xml new file mode 100644 index 0000000000000000000000000000000000000000..1760d5b8187b16c539d8a0fce21295f24ecc6ef6 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_preferences.xml @@ -0,0 +1,154 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + center_horiz="true" + center_vert="true" + default_tab_group="1" + height="460" + layout="topleft" + name="Preferences" + single_instance="true" + title="Preferences" + width="620"> + <button + follows="right|bottom" + height="20" + label="OK" + label_selected="OK" + layout="topleft" + left="335" + name="OK" + top="435" + width="90"> + <button.commit_callback + function="Pref.OK" /> + </button> + <button + follows="right|bottom" + height="20" + label="Cancel" + label_selected="Cancel" + layout="topleft" + left_pad="3" + name="Cancel" + top_delta="0" + width="90" > + <button.commit_callback + function="Pref.Cancel" /> + </button> + <button + follows="right|bottom" + height="20" + label="Apply" + label_selected="Apply" + layout="topleft" + left_pad="3" + name="Apply" + top_delta="0" + width="90"> + <button.commit_callback + function="Pref.Apply" /> + </button> + <button + follows="left|bottom" + height="20" + label="About" + label_selected="About" + layout="topleft" + left_delta="-512" + name="About..." + top_delta="0" + width="90"> + <button.commit_callback + function="Floater.Show" + parameter="sl_about" /> + </button> + <button + follows="left|bottom" + height="20" + help_url="https://support.secondlife.com/ics/support/default.asp?deptID=4417" + label="Help" + label_selected="Help" + layout="topleft" + left_pad="3" + name="Help" + top_delta="0" + width="90" /> + <tab_container + follows="left|top|right|bottom" + height="410" + layout="topleft" + left="0" + name="pref core" + tab_group="1" + tab_position="left" + tab_width="120" + top="21" + width="620"> + <panel + class="panel_preference" + filename="panel_preferences_general.xml" + label="General" + layout="topleft" + name="general" /> + <panel + class="panel_preference" + filename="panel_preferences_input.xml" + label="Input & Camera" + layout="topleft" + name="input" /> + <panel + class="panel_preference" + filename="panel_preferences_network.xml" + label="Network" + layout="topleft" + name="network" /> + <panel + class="panel_preference" + filename="panel_preferences_web.xml" + label="Web" + layout="topleft" + name="web" /> + <panel + class="panel_preference" + filename="panel_preferences_graphics1.xml" + label="Graphics" + layout="topleft" + name="display" /> + <panel + class="panel_preference" + filename="panel_preferences_audio.xml" + label="Audio & Video" + layout="topleft" + name="audio" /> + <panel + class="panel_preference" + filename="panel_preferences_chat.xml" + label="Text Chat" + layout="topleft" + name="chat" /> + <panel + class="panel_preference" + filename="panel_preferences_voice.xml" + label="Voice Chat" + layout="topleft" + name="voice" /> + <panel + class="panel_preference" + filename="panel_preferences_im.xml" + label="Communication" + layout="topleft" + name="im" /> + <panel + class="panel_preference" + filename="panel_preferences_popups.xml" + label="Popups" + layout="topleft" + name="msgs" /> + <panel + class="panel_preference" + filename="panel_preferences_skins.xml" + label="Skins" + layout="topleft" + name="skins" /> + </tab_container> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_preview_animation.xml b/indra/newview/skins/default/xui/en/floater_preview_animation.xml new file mode 100644 index 0000000000000000000000000000000000000000..50aabfc89596674f2940487298d0cac4611209ba --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_preview_animation.xml @@ -0,0 +1,57 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + auto_tile="true" + height="85" + layout="topleft" + name="preview_anim" + width="300"> + <floater.string + name="Title"> + Animation: [NAME] + </floater.string> + <line_editor + border_style="line" + border_thickness="1" + follows="left|top|right" + font="SansSerif" + height="19" + layout="topleft" + left="93" + max_length="127" + name="desc" + top="19" + width="194" /> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="19" + layout="topleft" + left_delta="-80" + name="desc txt" + top_delta="0" + width="80"> + Description: + </text> + <button + height="19" + label="Play in World" + label_selected="Stop" + layout="topleft" + left="27" + name="Anim play btn" + tool_tip="Play this animation so that others can see it." + top="47" + width="96" /> + <button + height="19" + label="Play Locally" + label_selected="Stop" + layout="topleft" + left_pad="54" + name="Anim audition btn" + tool_tip="Play this animation so that only you can see it." + top_delta="0" + width="96" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_preview_classified.xml b/indra/newview/skins/default/xui/en/floater_preview_classified.xml new file mode 100644 index 0000000000000000000000000000000000000000..6fac2823e844abfc59d9a89e066d23db4d29f6f5 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_preview_classified.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + auto_tile="true" + height="510" + layout="topleft" + name="classified_preview" + save_rect="true" + title="Classified Information" + width="440"> + <floater.string + name="Title"> + Classified: [NAME] + </floater.string> + <panel + follows="bottom|left" + height="470" + layout="topleft" + left="0" + name="classified_details_panel" + top="20" + width="440" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_preview_event.xml b/indra/newview/skins/default/xui/en/floater_preview_event.xml new file mode 100644 index 0000000000000000000000000000000000000000..58dd43075d324ae334c680ad77b6cb35afa801fd --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_preview_event.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + auto_tile="true" + height="510" + layout="topleft" + name="event_preview" + save_rect="true" + title="Event Information" + width="440"> + <floater.string + name="Title"> + Event: [NAME] + </floater.string> + <panel + follows="bottom|left" + height="470" + layout="topleft" + left="0" + name="event_details_panel" + top="20" + width="440" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_preview_gesture.xml b/indra/newview/skins/default/xui/en/floater_preview_gesture.xml new file mode 100644 index 0000000000000000000000000000000000000000..9d183d8103d8e63aec90d5d8beef991910625850 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_preview_gesture.xml @@ -0,0 +1,351 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + auto_tile="true" + height="350" + layout="topleft" + name="gesture_preview" + width="450"> + <floater.string + name="step_anim"> + Animation to play: + </floater.string> + <floater.string + name="step_sound"> + Sound to play: + </floater.string> + <floater.string + name="step_chat"> + Chat to say: + </floater.string> + <floater.string + name="step_wait"> + Wait: + </floater.string> + <floater.string + name="stop_txt"> + Stop + </floater.string> + <floater.string + name="preview_txt"> + Preview + </floater.string> + <floater.string + name="none_text"> + -- None -- + </floater.string> + <floater.string + name="Title"> + Gesture: [NAME] + </floater.string> + <text + type="string" + length="1" + follows="top|left" + font="SansSerif" + height="10" + layout="topleft" + left="16" + name="desc_label" + top="25" + width="100"> + Description: + </text> + <line_editor + follows="left|top" + height="20" + layout="topleft" + left_delta="84" + name="desc" + top_delta="-4" + width="330" /> + <text + type="string" + length="1" + follows="top|left" + font="SansSerif" + height="10" + layout="topleft" + left="16" + name="trigger_label" + top="54" + width="100"> + Trigger: + </text> + <line_editor + follows="left|top" + height="20" + layout="topleft" + left_delta="84" + max_length="31" + name="trigger_editor" + top_delta="-4" + width="105" /> + <text + type="string" + length="1" + follows="top|left" + font="SansSerif" + height="10" + layout="topleft" + left_pad="15" + name="replace_text" + tool_tip="Replace the trigger word(s) with these words. For example, trigger 'hello' replace with 'howdy' will turn the chat 'I wanted to say hello' into 'I wanted to say howdy' as well as playing the gesture!" + top_delta="4" + width="200"> + Replace with: + </text> + <line_editor + follows="left|top" + height="20" + layout="topleft" + left_delta="80" + max_length="31" + name="replace_editor" + tool_tip="Replace the trigger word(s) with these words. For example, trigger 'hello' replace with 'howdy' will turn the chat 'I wanted to say hello' into 'I wanted to say howdy' as well as playing the gesture" + top_delta="-4" + width="130" /> + <text + type="string" + length="1" + follows="top|left" + font="SansSerif" + height="10" + layout="topleft" + left="16" + name="key_label" + top="83" + width="100"> + Shortcut Key: + </text> + <combo_box + height="20" + label="None" + layout="topleft" + left_delta="84" + name="modifier_combo" + top_delta="-4" + width="50" /> + <combo_box + height="20" + label="None" + layout="topleft" + left_pad="10" + name="key_combo" + top_delta="0" + width="45" /> + <text + type="string" + length="1" + follows="top|left" + font="SansSerif" + height="10" + layout="topleft" + left="16" + name="library_label" + top="112" + width="100"> + Library: + </text> + <text + type="string" + length="1" + follows="top|left" + font="SansSerif" + height="10" + layout="topleft" + left_pad="104" + name="steps_label" + top_delta="0" + width="100"> + Steps: + </text> + <scroll_list + follows="top|left" + height="110" + layout="topleft" + left="16" + name="library_list" + top="132" + width="100"> + <scroll_list.rows + value="Animation" /> + <scroll_list.rows + value="Sound" /> + <scroll_list.rows + value="Chat" /> + <scroll_list.rows + value="Wait" /> + </scroll_list> + <button + follows="top|left" + height="20" + label="Add >>" + layout="topleft" + left_pad="14" + name="add_btn" + top_delta="0" + width="80" /> + <button + follows="top|left" + height="20" + label="Move Up" + layout="topleft" + left_delta="0" + name="up_btn" + top_pad="10" + width="80" /> + <button + follows="top|left" + height="20" + label="Move Down" + layout="topleft" + left_delta="0" + name="down_btn" + top_pad="10" + width="80" /> + <button + follows="top|left" + height="20" + label="Remove" + layout="topleft" + left_delta="0" + name="delete_btn" + top_pad="10" + width="80" /> + <scroll_list + follows="top|left" + height="110" + layout="topleft" + left="220" + name="step_list" + top="132" + width="210" /> + <text + type="string" + length="1" + follows="top|left" + font="SansSerif" + height="60" + layout="topleft" + left="16" + name="help_label" + top="252" + width="200"> + All steps happen simultaneously, +unless you add wait steps. + </text> + <text + follows="top|left" + height="60" + layout="topleft" + left_pad="6" + name="options_text" + top_delta="0" + width="205" /> + <combo_box + follows="top|left" + height="20" + layout="topleft" + left_delta="10" + name="animation_list" + top="272" + width="100" /> + <combo_box + follows="top|left" + height="20" + layout="topleft" + left_delta="0" + name="sound_list" + top_delta="0" + width="100" /> + <line_editor + follows="top|left" + height="20" + layout="topleft" + left_delta="0" + max_length="127" + name="chat_editor" + top_delta="0" + width="100" /> + <radio_group + draw_border="false" + follows="top|left" + height="40" + layout="topleft" + left_pad="8" + name="animation_trigger_type" + top_delta="0" + width="80"> + <radio_item + height="16" + label="Start" + layout="topleft" + left="3" + name="start" + top="-11" + width="80" /> + <radio_item + height="16" + label="Stop" + layout="topleft" + left_delta="0" + name="stop" + top_pad="10" + width="80" /> + </radio_group> + <check_box + follows="top|left" + height="20" + label="until animations are done" + layout="topleft" + left="232" + name="wait_anim_check" + top="267" + width="100" /> + <check_box + follows="top|left" + height="20" + label="time in seconds" + layout="topleft" + left_delta="0" + name="wait_time_check" + top_delta="20" + width="100" /> + <line_editor + follows="top|left" + height="20" + layout="topleft" + left_pad="5" + max_length="15" + name="wait_time_editor" + top_delta="0" + width="50" /> + <check_box + follows="top|left" + height="20" + label="Active" + layout="topleft" + left="140" + name="active_check" + tool_tip="Active gestures can be triggered by chatting their trigger phrases or pressing their hot keys. Gestures usually become inactive when there is a key binding conflict." + top="323" + width="100" /> + <button + follows="top|left" + height="20" + label="Preview" + layout="topleft" + left_delta="75" + name="preview_btn" + top_delta="2" + width="80" /> + <button + follows="top|left" + height="20" + label="Save" + layout="topleft" + left_pad="10" + name="save_btn" + top_delta="0" + width="80" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_preview_notecard.xml b/indra/newview/skins/default/xui/en/floater_preview_notecard.xml new file mode 100644 index 0000000000000000000000000000000000000000..3327dc8c8b537e01990efa7eb40db8451e1e64cb --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_preview_notecard.xml @@ -0,0 +1,105 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + auto_tile="true" + can_resize="true" + default_tab_group="1" + follows="left|top" + height="361" + layout="topleft" + min_height="243" + min_width="234" + name="preview notecard" + title="Note:" + width="400"> + <floater.string + name="no_object"> + Unable to find object containing this note. + </floater.string> + <floater.string + name="not_allowed"> + You are not allowed to view this note. + </floater.string> + <floater.string + name="Title"> + Notecard: [NAME] + </floater.string> + <floater.string + name="Save"> + Save + </floater.string> + <icon + follows="top|right" + height="16" + image_name="icon_lock.tga" + layout="topleft" + left="344" + mouse_opaque="true" + name="lock" + top="3" + width="16" /> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="19" + layout="topleft" + left="13" + name="desc txt" + top="19" + width="80"> + Description: + </text> + <line_editor + border_style="line" + border_thickness="1" + follows="left|top|right" + font="SansSerif" + height="19" + layout="topleft" + left_delta="80" + max_length="127" + name="desc" + top_delta="0" + width="294" /> + <text_editor + type="string" + length="1" + embedded_items="true" + follows="left|top|right|bottom" + font="SansSerif" + height="281" + ignore_tab="false" + layout="topleft" + left="4" + max_length="65536" + name="Notecard Editor" + tab_group="1" + top="46" + width="392" + word_wrap="true"> + Loading... + </text_editor> + <button + follows="left|bottom" + height="20" + label="Discard" + label_selected="Discard" + layout="topleft" + left="9" + name="Discard" + top="332" + width="100" /> + <button + enabled="false" + follows="left|bottom" + height="20" + label="Keep" + label_selected="Keep" + layout="topleft" + left_pad="5" + mouse_opaque="false" + name="Keep" + top_delta="0" + width="100" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_preview_sound.xml b/indra/newview/skins/default/xui/en/floater_preview_sound.xml new file mode 100644 index 0000000000000000000000000000000000000000..07a50ac5896b5e94f1e8a09f7f427c9f4a384555 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_preview_sound.xml @@ -0,0 +1,61 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + auto_tile="true" + height="85" + layout="topleft" + name="preview_sound" + width="300"> + <floater.string + name="Title"> + Sound: [NAME] + </floater.string> + <line_editor + border_style="line" + border_thickness="1" + follows="left|top|right" + font="SansSerif" + height="19" + layout="topleft" + left="95" + max_length="127" + name="desc" + top="19" + width="192" /> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="19" + layout="topleft" + left_delta="-82" + name="desc txt" + top_delta="0" + width="80"> + Description: + </text> + <button + follows="left|top" + height="19" + label="Play Locally" + label_selected="Play Locally" + layout="topleft" + left="168" + name="Sound audition btn" + sound_flags="0" + tool_tip="Play this sound so that only you can hear it." + top="51" + width="120" /> + <button + follows="left|top" + height="19" + label="Play in World" + label_selected="Play in World" + layout="topleft" + left_delta="-126" + name="Sound play btn" + sound_flags="0" + tool_tip="Play this sound so that others can hear it." + top_delta="0" + width="120" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_preview_texture.xml b/indra/newview/skins/default/xui/en/floater_preview_texture.xml new file mode 100644 index 0000000000000000000000000000000000000000..661dc63b3d5d8fdd5074ce5a5ac4de4e522cdfe3 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_preview_texture.xml @@ -0,0 +1,77 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + auto_tile="true" + can_resize="true" + follows="left|bottom" + height="331" + layout="topleft" + min_height="120" + min_width="300" + name="preview_texture" + width="300"> + <floater.string + name="Title"> + Texture: [NAME] + </floater.string> + <floater.string + name="Copy"> + Copy To Inventory + </floater.string> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="19" + layout="topleft" + left="13" + name="desc txt" + top="21" + width="80"> + Description: + </text> + <line_editor + border_style="line" + border_thickness="1" + follows="left|top|right" + font="SansSerif" + height="19" + layout="topleft" + left_delta="80" + max_length="127" + name="desc" + top_delta="-2" + width="194" /> + <button + follows="left|bottom" + height="20" + label="Discard" + label_selected="Discard" + layout="topleft" + left="9" + name="Discard" + top="302" + width="100" /> + <button + follows="left|bottom" + height="20" + label="Keep" + label_selected="Keep" + layout="topleft" + left_pad="5" + name="Keep" + top_delta="0" + width="100" /> + <text + type="string" + length="1" + follows="left|bottom" + height="14" + layout="topleft" + left="13" + name="dimensions" + top="287" + width="163"> + Dimensions: [WIDTH] x [HEIGHT] + </text> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_region_info.xml b/indra/newview/skins/default/xui/en/floater_region_info.xml new file mode 100644 index 0000000000000000000000000000000000000000..48694e5fb6462306e991085ef5ad5c17d32f4acc --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_region_info.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + height="512" + layout="topleft" + name="regioninfo" + save_rect="true" + title="Region/Estate" + width="480"> + <tab_container + bottom="512" + follows="left|right|top|bottom" + layout="topleft" + left="1" + name="region_panels" + right="-1" + tab_position="top" + top="20" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_report_abuse.xml b/indra/newview/skins/default/xui/en/floater_report_abuse.xml new file mode 100644 index 0000000000000000000000000000000000000000..4c036f98e5cc8408f921953d32145f03f1831e1f --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_report_abuse.xml @@ -0,0 +1,454 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + height="590" + layout="topleft" + name="floater_report_abuse" + title="Report Abuse" + width="390"> + <floater.string + name="Screenshot"> + Screenshot + </floater.string> + <texture_picker + allow_no_texture="true" + default_image_name="None" + follows="left|top" + height="114" + layout="topleft" + left="238" + name="screenshot" + top="36" + width="134" /> + <check_box + height="16" + label="Include screenshot" + layout="topleft" + left="13" + name="screen_check" + top="134" + width="116" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_delta="3" + name="reporter_title" + top_delta="-102" + width="50"> + Reporter: + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_pad="12" + name="reporter_field" + top_delta="0" + width="150"> + Loremipsum Dolorsitamut + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="16" + name="sim_title" + top="48" + width="60"> + Region: + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_pad="2" + name="sim_field" + top_delta="0" + width="120"> + Region Name + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="16" + name="pos_title" + top="64" + width="50"> + Position: + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_pad="12" + name="pos_field" + top_delta="0" + width="120"> + {128.1, 128.1, 15.4} + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="16" + name="select_object_label" + top="82" + width="220"> + Click the button then the object: + </text> + <button + height="32" + layout="topleft" + left_delta="0" + name="pick_btn" + picture_style="true" + tool_tip="Object Picker - Identify an object as the subject of this report" + top_delta="14" + width="32" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_pad="5" + name="object_name_label" + top_delta="0" + width="60"> + Name: + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_pad="6" + name="object_name" + top_delta="0" + width="109"> + Consetetur Sadipscing + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="53" + name="owner_name_label" + top="112" + width="60"> + Owner: + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_pad="6" + name="owner_name" + top_delta="0" + width="109"> + Hendrerit Vulputate + </text> + <combo_box + height="20" + layout="topleft" + left="16" + name="category_combo" + tool_tip="Category -- select the category that best describes this report" + top="156" + width="356"> + <combo_box.item + label="Select category" + value="0" /> + <combo_box.item + label="Age > Age play" + value="31" /> + <combo_box.item + label="Age > Adult resident on Teen Second Life" + value="32" /> + <combo_box.item + label="Age > Underage resident outside of Teen Second Life" + value="33" /> + <combo_box.item + label="Assault > Combat sandbox / unsafe area" + value="34" /> + <combo_box.item + label="Assault > Safe area" + value="35" /> + <combo_box.item + label="Assault > Weapons testing sandbox" + value="36" /> + <combo_box.item + label="Commerce > Failure to deliver product or service" + value="38" /> + <combo_box.item + label="Disclosure > Real world information" + value="39" /> + <combo_box.item + label="Disclosure > Remotely monitoring chat" + value="40" /> + <combo_box.item + label="Disclosure > Second Life information/chat/IMs" + value="41" /> + <combo_box.item + label="Disturbing the peace > Unfair use of region resources" + value="42" /> + <combo_box.item + label="Disturbing the peace > Excessive scripted objects" + value="43" /> + <combo_box.item + label="Disturbing the peace > Object littering" + value="44" /> + <combo_box.item + label="Disturbing the peace > Repetitive spam" + value="45" /> + <combo_box.item + label="Disturbing the peace > Unwanted advert spam" + value="46" /> + <combo_box.item + label="Fraud > L$" + value="47" /> + <combo_box.item + label="Fraud > Land" + value="48" /> + <combo_box.item + label="Fraud > Pyramid scheme or chain letter" + value="49" /> + <combo_box.item + label="Fraud > US$" + value="50" /> + <combo_box.item + label="Harassment > Advert farms / visual spam" + value="51" /> + <combo_box.item + label="Harassment > Defaming individuals or groups" + value="52" /> + <combo_box.item + label="Harassment > Impeding movement" + value="53" /> + <combo_box.item + label="Harassment > Sexual harassment" + value="54" /> + <combo_box.item + label="Harassment > Solicting/inciting others to violate ToS" + value="55" /> + <combo_box.item + label="Harassment > Verbal abuse" + value="56" /> + <combo_box.item + label="Indecency > Broadly offensive content or conduct" + value="57" /> + <combo_box.item + label="Indecency > Inappropriate avatar name" + value="59" /> + <combo_box.item + label="Indecency > Inappropriate content or conduct in a PG region" + value="60" /> + <combo_box.item + label="Indecency > Inappropriate content or conduct in a Mature region" + value="69" /> + <combo_box.item + label="Intellectual property infringement > Content Removal" + value="66" /> + <combo_box.item + label="Intellectual property infringement > CopyBot or Permissions Exploit" + value="37" /> + <combo_box.item + label="Intolerance" + value="61" /> + <combo_box.item + label="Land > Abuse of sandbox resources" + value="62" /> + <combo_box.item + label="Land > Encroachment > Objects/textures" + value="63" /> + <combo_box.item + label="Land > Encroachment > Particles" + value="64" /> + <combo_box.item + label="Land > Encroachment > Trees/plants" + value="65" /> + <combo_box.item + label="Wagering/gambling" + value="67" /> + <combo_box.item + label="Other" + value="68" /> + </combo_box> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_delta="0" + name="abuser_name_title" + top_pad="10" + width="180"> + Abuser name: + </text> + <line_editor + border_style="line" + border_thickness="1" + follows="left|top" + height="16" + layout="topleft" + left_delta="0" + max_length="32" + name="abuser_name_edit" + top_pad="2" + width="180" /> + <button + height="20" + label="Choose Resident" + layout="topleft" + left_pad="10" + name="select_abuser" + tool_tip="Select the name of the abuser from a list" + top_delta="-2" + width="160" /> + <check_box + height="16" + label="Don't know abuser's name" + layout="topleft" + left="13" + name="omit_abuser_name" + tool_tip="Check this if you are unable to provide the abuser's name" + top="224" + visible="false" + width="116" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_delta="3" + name="abuser_name_title2" + top_pad="8" + width="180"> + Location of Abuse: + </text> + <line_editor + border_style="line" + border_thickness="1" + follows="left|top" + height="16" + layout="topleft" + left_delta="0" + max_length="256" + name="abuse_location_edit" + top_pad="2" + width="356" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_delta="0" + name="sum_title" + top_pad="8" + width="180"> + Summary: + </text> + <line_editor + border_style="line" + border_thickness="1" + follows="left|top" + height="16" + layout="topleft" + left_delta="0" + max_length="64" + name="summary_edit" + top_pad="2" + width="356" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_delta="0" + name="dscr_title" + top_pad="8" + width="180"> + Details: + </text> + <text + type="string" + length="1" + follows="left|top" + height="48" + layout="topleft" + left_delta="54" + name="bug_aviso" + top_delta="0" + width="308"> + Please be specific about the date, location, nature of +abuse, relevant chat/IM text, and select the object +if possible. + </text> + <text_editor + follows="left|top" + height="146" + layout="topleft" + left="16" + max_length="800" + mouse_opaque="false" + name="details_edit" + top="386" + width="356" + word_wrap="true" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_delta="0" + name="incomplete_title" + top_pad="8" + width="342"> + Note: Incomplete reports will not be investigated. + </text> + <button + bottom="580" + follows="right|bottom" + height="20" + label="Cancel" + label_selected="Cancel" + layout="topleft" + name="cancel_btn" + right="373" + width="150" /> + <button + bottom="580" + follows="right|bottom" + height="20" + label="Report Abuse" + label_selected="Report Abuse" + layout="topleft" + name="send_btn" + right="217" + width="150" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_script_debug.xml b/indra/newview/skins/default/xui/en/floater_script_debug.xml new file mode 100644 index 0000000000000000000000000000000000000000..2ae0afa1681bde6063e6a168e4ade9317d3b5a93 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_script_debug.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<multi_floater + can_resize="true" + height="233" + layout="topleft" + name="script debug floater" + save_rect="true" + title="Script Warning/Error" + width="450"> + <tab_container + follows="left|top|right|bottom" + height="217" + layout="topleft" + left="1" + name="Preview Tabs" + tab_position="bottom" + top="16" + width="448" /> +</multi_floater> diff --git a/indra/newview/skins/default/xui/en/floater_script_debug_panel.xml b/indra/newview/skins/default/xui/en/floater_script_debug_panel.xml new file mode 100644 index 0000000000000000000000000000000000000000..2dd7a1e777c7ee1a5618bfeaf292eb9d81f36de8 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_script_debug_panel.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_resize="true" + follows="left|top|right|bottom" + height="200" + layout="topleft" + name="script" + short_title="[All scripts]" + title="[All scripts]" + width="440"> + <text_editor + bottom="197" + follows="left|top|right|bottom" + height="176" + layout="topleft" + max_length="10000" + name="Chat History Editor" + width="420" + word_wrap="true" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_script_preview.xml b/indra/newview/skins/default/xui/en/floater_script_preview.xml new file mode 100644 index 0000000000000000000000000000000000000000..cb3ff9236340d3eec7413befa516af4661a13f67 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_script_preview.xml @@ -0,0 +1,62 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + auto_tile="true" + can_resize="true" + height="550" + layout="topleft" + left_delta="343" + min_height="271" + min_width="290" + name="preview lsl text" + save_rect="true" + title="Script: Rotation Script" + top_delta="0" + width="500"> + <floater.string + name="Title"> + Script: [NAME] + </floater.string> + <panel + follows="left|top|right|bottom" + height="508" + layout="topleft" + left="0" + name="script panel" + top="42" + width="497" /> + <icon + follows="top|right" + height="16" + image_name="icon_lock.tga" + layout="topleft" + left="444" + mouse_opaque="true" + name="lock" + top="3" + width="16" /> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="19" + layout="topleft" + left="13" + name="desc txt" + top="19" + width="80"> + Description: + </text> + <line_editor + border_style="line" + border_thickness="1" + follows="left|top|right" + font="SansSerif" + height="19" + layout="topleft" + left_delta="80" + max_length="127" + name="desc" + top_delta="0" + width="394" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_script_queue.xml b/indra/newview/skins/default/xui/en/floater_script_queue.xml new file mode 100644 index 0000000000000000000000000000000000000000..ad91e8156b89ea4815a297c8bd36655f487704b9 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_script_queue.xml @@ -0,0 +1,49 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + auto_tile="true" + can_resize="true" + height="400" + layout="topleft" + name="queue" + save_rect="true" + title="Reset Progress" + width="300"> + <floater.string + name="Starting"> + Starting [START] of [COUNT] items. + </floater.string> + <floater.string + name="Done"> + Done. + </floater.string> + <floater.string + name="Resetting"> + Resetting + </floater.string> + <floater.string + name="Running"> + Running + </floater.string> + <floater.string + name="NotRunning"> + Not running + </floater.string> + <button + follows="right|bottom" + height="24" + label="Close" + label_selected="Close" + layout="topleft" + left="220" + name="close" + top="368" + width="64" /> + <scroll_list + follows="left|top|right|bottom" + height="344" + layout="topleft" + left="4" + name="queue output" + top="20" + width="292" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_script_search.xml b/indra/newview/skins/default/xui/en/floater_script_search.xml new file mode 100644 index 0000000000000000000000000000000000000000..bb0c60e75b93325e6c95d8c25658ef1a3e157d63 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_script_search.xml @@ -0,0 +1,90 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + default_tab_group="1" + height="120" + layout="topleft" + name="script search" + title="Script Search" + width="300"> + <check_box + control_name="LSLFindCaseInsensitivity" + height="16" + label="Case Insensitive" + layout="topleft" + left="55" + name="case_text" + top="61" + width="240" /> + <button + height="24" + label="Search" + label_selected="Search" + layout="topleft" + left="10" + name="search_btn" + top="84" + width="90" /> + <button + height="24" + label="Replace" + label_selected="Replace" + layout="topleft" + left_pad="5" + name="replace_btn" + top_delta="0" + width="90" /> + <button + height="24" + label="Replace All" + label_selected="Replace All" + layout="topleft" + left_pad="5" + name="replace_all_btn" + top_delta="0" + width="90" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="5" + name="txt" + top="21" + width="45"> + Search + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_delta="0" + name="txt2" + top_pad="5" + width="45"> + Replace + </text> + <line_editor + border_style="line" + border_thickness="1" + follows="left|top" + height="16" + layout="topleft" + left="55" + name="search_text" + tab_group="1" + top="21" + width="240" /> + <line_editor + border_style="line" + border_thickness="1" + follows="left|top" + height="16" + layout="topleft" + left_delta="0" + name="replace_text" + top_pad="5" + width="240" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_select_key.xml b/indra/newview/skins/default/xui/en/floater_select_key.xml new file mode 100644 index 0000000000000000000000000000000000000000..b89af0ef3e68bc0a0f50e90b73b2d28dcef92f5e --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_select_key.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + border="true" + can_close="false" + can_minimize="false" + height="100" + layout="topleft" + name="modal container" + width="240"> + <button + height="20" + label="Cancel" + label_selected="Cancel" + layout="topleft" + left="138" + name="Cancel" + top="70" + width="82" /> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="16" + layout="topleft" + left="20" + name="Save item as:" + top="10" + width="200"> + Press a key to select + </text> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_sell_land.xml b/indra/newview/skins/default/xui/en/floater_sell_land.xml new file mode 100644 index 0000000000000000000000000000000000000000..26c805c0f7d472059f5d7abc905a4bc4887034a5 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_sell_land.xml @@ -0,0 +1,315 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_minimize="false" + height="485" + layout="topleft" + name="sell land" + title="Sell Land" + width="450"> + <texture_picker + enabled="false" + follows="top|left" + height="135" + layout="topleft" + left="244" + name="info_image" + right="424" + top="40" + width="180" /> + <text + type="string" + length="1" + bottom_delta="-144" + follows="top|left" + layout="topleft" + left="16" + name="info_parcel_label" + width="48"> + Parcel: + </text> + <text + type="string" + length="1" + bottom_delta="5" + follows="top|left" + font="SansSerif" + height="16" + layout="topleft" + left="56" + name="info_parcel" + right="-20"> + PARCEL NAME + </text> + <text + type="string" + length="1" + follows="top|left" + layout="topleft" + left="16" + name="info_size_label" + width="48"> + Size: + </text> + <text + type="string" + length="1" + bottom_delta="21" + follows="top|left" + font="SansSerif" + height="32" + layout="topleft" + left="56" + name="info_size" + right="-20"> + [AREA] sq. m. + </text> + <text + type="string" + length="1" + follows="top|left" + font="SansSerifHuge" + height="24" + layout="topleft" + left="16" + name="info_action" + text_color="white" + top="141" + width="200"> + To sell this parcel: + </text> + <icon + follows="top|left" + height="64" + image_name="badge_note.j2c" + layout="topleft" + left="0" + name="step_price" + top="167" + width="64" /> + <text + type="string" + length="1" + bottom_delta="-38" + follows="top|left" + font="SansSerifBig" + height="16" + layout="topleft" + left="72" + name="price_label" + right="-20"> + Set a price: + </text> + <text + type="string" + length="1" + follows="top|left" + height="16" + layout="topleft" + left="72" + name="price_text" + right="-20"> + Choose an appropriate price for this land. + </text> + <text + type="string" + length="1" + height="16" + layout="topleft" + left="72" + name="price_ld" + width="20"> + L$ + </text> + <line_editor + type="string" + length="1" + follows="top|left" + height="16" + layout="topleft" + left_delta="20" + name="price" + top_delta="0" + width="100"> + 0 + </line_editor> + <text + type="string" + length="1" + height="16" + layout="topleft" + left_pad="10" + name="price_per_m" + top_delta="0" + width="200"> + (L$[PER_METER] per square meter) + </text> + <icon + follows="top|left" + height="64" + image_name="badge_note.j2c" + layout="topleft" + left="0" + name="step_sell_to" + width="64" /> + <text + type="string" + length="1" + bottom_delta="-38" + follows="top|left" + font="SansSerifBig" + height="16" + layout="topleft" + left="72" + name="sell_to_label" + right="-20"> + Sell the land to: + </text> + <text + type="string" + length="1" + follows="top|left" + height="16" + layout="topleft" + left="72" + name="sell_to_text" + right="-20"> + Choose whether to sell to anyone or a particular buyer. + </text> + <combo_box + follows="top|right" + height="16" + layout="topleft" + left_delta="0" + name="sell_to" + top_delta="16" + width="140"> + <combo_box.item + enabled="false" + label="select one --" + value="select" /> + <combo_box.item + label="Anyone" + value="anyone" /> + <combo_box.item + label="Specific user:" + value="user" /> + </combo_box> + <line_editor + enabled="false" + follows="top|right" + height="16" + layout="topleft" + left_delta="0" + name="sell_to_agent" + top_pad="4" + width="150" /> + <button + height="16" + label="Select..." + layout="topleft" + left_pad="5" + name="sell_to_select_agent" + top_delta="0" + width="60" /> + <icon + follows="top|left" + height="64" + image_name="badge_note.j2c" + layout="topleft" + left="0" + name="step_sell_objects" + width="64" /> + <text + type="string" + length="1" + bottom_delta="-38" + follows="top|left" + font="SansSerifBig" + height="16" + layout="topleft" + left="72" + name="sell_objects_label" + right="-20"> + Sell the objects with the land? + </text> + <text + type="string" + length="1" + bottom_delta="20" + follows="top|left" + height="16" + layout="topleft" + left="72" + name="sell_objects_text"> + Land owner's transferable objects on parcel will change ownership. + </text> + <radio_group + bottom_delta="44" + follows="top|right" + height="40" + layout="topleft" + left="72" + name="sell_objects" + right="420"> + <radio_item + bottom="40" + height="0" + layout="topleft" + left="10" + name="none" + visible="false" /> + <radio_item + bottom="20" + height="16" + label="No, keep ownership of objects" + layout="topleft" + left="10" + name="no" /> + <radio_item + bottom="40" + height="16" + label="Yes, sell objects with land" + layout="topleft" + left="10" + name="yes" /> + </radio_group> + <button + height="16" + label="Show Objects" + layout="topleft" + name="show_objects" + right="414" + top="393" + width="110" /> + <text + type="string" + length="1" + bottom_delta="35" + follows="top|left" + font="SansSerifBig" + height="16" + layout="topleft" + left="72" + name="nag_message_label" + right="-20"> + REMEMBER: All sales are final. + </text> + <button + follows="bottom|left" + height="20" + label="Set Land For Sale" + layout="topleft" + left_delta="0" + name="sell_btn" + top_pad="15" + width="130" /> + <button + follows="bottom|right" + height="20" + label="Cancel" + layout="topleft" + left_pad="152" + name="cancel_btn" + top_delta="0" + width="90" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_settings_debug.xml b/indra/newview/skins/default/xui/en/floater_settings_debug.xml new file mode 100644 index 0000000000000000000000000000000000000000..9a73ffb1a2f0052964936b1a7cd8f1b6532e9018 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_settings_debug.xml @@ -0,0 +1,135 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_minimize="false" + height="215" + layout="topleft" + name="settings_debug" + title="Debug Settings" + width="350"> + <combo_box + allow_text_entry="true" + follows="top|left" + height="20" + layout="topleft" + left="15" + max_chars="255" + name="settings_combo" + top="30" + width="200"> + <combo_box.commit_callback + function="SettingSelect" /> + </combo_box> + <text_editor + enabled="false" + height="60" + hide_scrollbar="true" + layout="topleft" + left_delta="0" + name="comment_text" + top_pad="15" + width="320" + word_wrap="true" /> + <combo_box + follows="top|left" + height="20" + layout="topleft" + left_delta="0" + name="boolean_combo" + top_pad="10" + visible="false" + width="100"> + <combo_box.item + label="TRUE" + value="true" /> + <combo_box.item + label="FALSE" + value="" /> + <combo_box.commit_callback + function="CommitSettings" /> + </combo_box> + <line_editor + height="20" + layout="topleft" + left_delta="0" + name="val_text" + top_delta="0" + visible="false" + width="300" > + <line_editor.commit_callback + function="CommitSettings" /> + </line_editor> + <color_swatch + bottom="185" + can_apply_immediately="true" + height="55" + name="val_color_swatch" + label="Color" + layout="topleft" + width="37" > + <color_swatch.commit_callback + function="CommitSettings" /> + </color_swatch> + <spinner + height="20" + label="x" + layout="topleft" + left_delta="0" + max_val="1e+007" + name="val_spinner_1" + top_delta="10" + visible="false" + width="120" > + <spinner.commit_callback + function="CommitSettings" /> + </spinner> + <spinner + height="20" + label="x" + layout="topleft" + left_pad="15" + max_val="1e+007" + name="val_spinner_2" + top_delta="0" + visible="false" + width="120"> + <spinner.commit_callback + function="CommitSettings" /> + </spinner> + <spinner + height="20" + label="x" + layout="topleft" + left="15" + max_val="1e+007" + name="val_spinner_3" + top="160" + visible="false" + width="120"> + <spinner.commit_callback + function="CommitSettings" /> + </spinner> + <spinner + height="20" + label="x" + layout="topleft" + left_pad="15" + max_val="1e+007" + name="val_spinner_4" + top_delta="0" + visible="false" + width="120" > + <spinner.commit_callback + function="CommitSettings" /> + </spinner> + <button + height="20" + label="Reset to default" + layout="topleft" + left="15" + name="default_btn" + top="190" + width="150" > + <button.commit_callback + function="ClickDefault" /> + </button> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_snapshot.xml b/indra/newview/skins/default/xui/en/floater_snapshot.xml new file mode 100644 index 0000000000000000000000000000000000000000..f3d8938ea29f38639797f4a8b4fd006d382602fa --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_snapshot.xml @@ -0,0 +1,370 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_minimize="false" + follows="left|top" + height="526" + layout="topleft" + name="Snapshot" + save_rect="true" + title="Snapshot Preview" + width="215"> + <floater.string + name="unknown"> + unknown + </floater.string> + <text + type="string" + length="1" + follows="top|left" + height="15" + layout="topleft" + left="10" + name="type_label" + top="25" + width="195"> + Snapshot destination + </text> + <radio_group + height="60" + label="Snapshot type" + layout="topleft" + left_delta="0" + name="snapshot_type_radio" + top_pad="5" + width="195"> + <radio_item + bottom="19" + height="16" + label="Send via email" + layout="topleft" + name="postcard" /> + <radio_item + bottom="38" + height="16" + label="Save to your inventory (L$[AMOUNT])" + layout="topleft" + name="texture" /> + <radio_item + bottom="57" + height="16" + label="Save to your hard drive" + layout="topleft" + name="local" /> + </radio_group> + <text + type="string" + length="1" + follows="left|top" + height="25" + layout="topleft" + left_delta="0" + name="file_size_label" + top_pad="106" + width="195"> + File size: [SIZE] KB + </text> + <button + follows="left|top" + height="20" + label="Refresh Snapshot" + layout="topleft" + left_delta="0" + name="new_snapshot_btn" + top_delta="15" + width="195" /> + <button + follows="left|top" + height="20" + label="Send" + layout="topleft" + left_delta="0" + name="send_btn" + top_pad="2" + width="105" /> + <button + follows="left|top" + height="20" + label="Save (L$[AMOUNT])" + layout="topleft" + left_delta="0" + name="upload_btn" + top_delta="0" + width="105" /> + <flyout_button + follows="left|top" + height="20" + label="Save" + layout="topleft" + left_delta="0" + name="save_btn" + tool_tip="Save image to a file" + top_delta="0" + width="105"> + <flyout_button.item + label="Save" + value="save" /> + <flyout_button.item + label="Save As..." + value="save as" /> + </flyout_button> + <button + follows="left|top" + height="20" + label="Cancel" + layout="topleft" + left_pad="5" + name="discard_btn" + top_delta="0" + width="85" /> + <button + follows="left|top" + font="SansSerifSmall" + height="20" + label="More >>" + layout="topleft" + left="10" + name="more_btn" + tool_tip="Advanced Options" + top="270" + width="80" /> + <button + follows="left|top" + font="SansSerifSmall" + height="20" + label="<< Less" + layout="topleft" + left_delta="0" + name="less_btn" + tool_tip="Advanced Options" + top_delta="0" + width="80" /> + <text + type="string" + length="1" + follows="top|left" + height="15" + layout="topleft" + left_delta="0" + name="type_label2" + top_pad="5" + width="115"> + Size + </text> + <text + type="string" + length="1" + follows="top|left" + height="15" + layout="topleft" + left_pad="5" + name="format_label" + top_delta="0" + width="70"> + Format + </text> + <combo_box + height="20" + label="Resolution" + layout="topleft" + left="10" + name="postcard_size_combo" + top="312" + width="115"> + <combo_box.item + label="Current Window" + value="[i0,i0]" /> + <combo_box.item + label="640x480" + value="[i640,i480]" /> + <combo_box.item + label="800x600" + value="[i800,i600]" /> + <combo_box.item + label="1024x768" + value="[i1024,i768]" /> + <combo_box.item + label="Custom" + value="[i-1,i-1]" /> + </combo_box> + <combo_box + height="20" + label="Resolution" + layout="topleft" + left_delta="0" + name="texture_size_combo" + top_delta="0" + width="115"> + <combo_box.item + label="Current Window" + value="[i0,i0]" /> + <combo_box.item + label="Small (128x128)" + value="[i128,i128]" /> + <combo_box.item + label="Medium (256x256)" + value="[i256,i256]" /> + <combo_box.item + label="Large (512x512)" + value="[i512,i512]" /> + <combo_box.item + label="Custom" + value="[i-1,i-1]" /> + </combo_box> + <combo_box + height="20" + label="Resolution" + layout="topleft" + left_delta="0" + name="local_size_combo" + top_delta="0" + width="115"> + <combo_box.item + label="Current Window" + value="[i0,i0]" /> + <combo_box.item + label="320x240" + value="[i320,i240]" /> + <combo_box.item + label="640x480" + value="[i640,i480]" /> + <combo_box.item + label="800x600" + value="[i800,i600]" /> + <combo_box.item + label="1024x768" + value="[i1024,i768]" /> + <combo_box.item + label="1280x1024" + value="[i1280,i1024]" /> + <combo_box.item + label="1600x1200" + value="[i1600,i1200]" /> + <combo_box.item + label="Custom" + value="[i-1,i-1]" /> + </combo_box> + <combo_box + height="20" + label="Format" + layout="topleft" + left_pad="5" + name="local_format_combo" + top_delta="0" + width="70"> + <combo_box.item + label="PNG" /> + <combo_box.item + label="JPEG" /> + <combo_box.item + label="BMP" /> + </combo_box> + <spinner + allow_text_entry="false" + decimal_digits="0" + follows="left|top" + height="20" + increment="32" + label="Width" + label_width="30" + layout="topleft" + left="10" + max_val="6016" + min_val="32" + name="snapshot_width" + top="337" + width="95" /> + <spinner + allow_text_entry="false" + decimal_digits="0" + follows="left|top" + height="20" + increment="32" + label="Height" + label_width="35" + layout="topleft" + left_pad="5" + max_val="6016" + min_val="32" + name="snapshot_height" + top_delta="0" + width="95" /> + <check_box + bottom_delta="20" + label="Constrain Proportions" + layout="topleft" + left="10" + name="keep_aspect_check" /> + <slider + decimal_digits="0" + follows="left|top" + height="15" + increment="1" + initial_value="75" + label="Image Quality" + layout="topleft" + left_delta="0" + max_val="100" + name="image_quality_slider" + top_pad="5" + width="210" /> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left_delta="0" + name="layer_type_label" + top_pad="8" + width="50"> + Capture: + </text> + <combo_box + height="20" + label="Image Layers" + layout="topleft" + left_delta="50" + name="layer_types" + top_delta="-3" + width="145"> + <combo_box.item + label="Colors" + value="colors" /> + <combo_box.item + label="Depth" + value="depth" /> + <combo_box.item + label="Object Mattes" + value="objects" /> + </combo_box> + <check_box + bottom_delta="20" + label="Show interface in snapshot" + layout="topleft" + left="10" + name="ui_check" /> + <check_box + bottom_delta="20" + label="Show HUD objects in snapshot" + layout="topleft" + left="10" + name="hud_check" /> + <check_box + bottom_delta="20" + label="Keep open after saving" + layout="topleft" + left="10" + name="keep_open_check" /> + <check_box + bottom_delta="20" + label="Freeze frame (fullscreen preview)" + layout="topleft" + left="10" + name="freeze_frame_check" /> + <check_box + bottom_delta="20" + label="Auto-refresh" + layout="topleft" + left="10" + name="auto_snapshot_check" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_sound_preview.xml b/indra/newview/skins/default/xui/en/floater_sound_preview.xml new file mode 100644 index 0000000000000000000000000000000000000000..8aff16b465309b9d87e5b5a1f8d2e0cf9c599041 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_sound_preview.xml @@ -0,0 +1,75 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + height="190" + layout="topleft" + name="Sound Preview" + title="sound.wav" + width="300"> + <text + type="string" + length="1" + follows="left|top" + height="15" + layout="topleft" + left="10" + mouse_opaque="false" + name="name_label" + top="20" + width="275"> + Name: + </text> + <line_editor + border_style="line" + border_thickness="1" + follows="left|top|right" + height="19" + layout="topleft" + left_delta="0" + max_length="63" + name="name_form" + top_pad="4" + width="280" /> + <text + type="string" + length="1" + follows="left|top" + height="15" + layout="topleft" + left_delta="0" + mouse_opaque="false" + name="description_label" + top_pad="4" + width="270"> + Description: + </text> + <line_editor + border_style="line" + border_thickness="1" + follows="left|top|right" + height="19" + layout="topleft" + left_delta="0" + max_length="127" + name="description_form" + top_pad="4" + width="280" /> + <button + follows="right|bottom" + height="20" + label="Cancel" + label_selected="Cancel" + layout="topleft" + left="200" + name="cancel_btn" + top="160" + width="90" /> + <button + follows="left|bottom" + height="20" + label="Upload (L$[AMOUNT])" + layout="topleft" + left_delta="-135" + name="ok_btn" + top_delta="0" + width="130" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_statistics.xml b/indra/newview/skins/default/xui/en/floater_statistics.xml new file mode 100644 index 0000000000000000000000000000000000000000..1661fbffb0ffa1d333f996f48a276ef615c8402c --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_statistics.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_resize="true" + follows="right|top" + height="392" + layout="topleft" + mouse_opaque="false" + name="stats floater" + title="Statistics" + width="250" /> diff --git a/indra/newview/skins/default/xui/en/floater_stats.xml b/indra/newview/skins/default/xui/en/floater_stats.xml new file mode 100644 index 0000000000000000000000000000000000000000..08d91843f21d17547cd69c4f453224cbaedc2f23 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_stats.xml @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_resize="true" + follows="top|right" + height="400" + layout="topleft" + name="Statistics" + save_rect="true" + save_visibility="true" + title="Statistics" + width="250"> + <scroll_container + follows="top|left|bottom|right" + height="380" + layout="topleft" + left="0" + name="statistics_scroll" + reserve_scroll_corner="true" + top="20" + width="250"> + <container_view + follows="top|left|bottom|right" + height="378" + layout="topleft" + left="2" + name="statistics_view" + top="20" + width="230" /> + </scroll_container> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_telehub.xml b/indra/newview/skins/default/xui/en/floater_telehub.xml new file mode 100644 index 0000000000000000000000000000000000000000..bcec046456619d2c7fcded55e6b3fdfdf88db8a8 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_telehub.xml @@ -0,0 +1,132 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + height="250" + layout="topleft" + name="telehub" + title="Telehub" + width="272"> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="10" + name="status_text_connected" + top="24" + width="200"> + Telehub connected to object [OBJECT] + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_delta="0" + name="status_text_not_connected" + top_delta="0" + width="200"> + No telehub connected. + </text> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left_delta="0" + name="help_text_connected" + top_delta="16" + width="260"> + To remove, click Disconnect. + </text> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left_delta="0" + name="help_text_not_connected" + top_delta="0" + width="260"> + Select object and click Connect Telehub. + </text> + <button + follows="top|left" + font="SansSerifSmall" + height="20" + label="Connect Telehub" + layout="topleft" + left_delta="0" + name="connect_btn" + top_delta="20" + width="110" /> + <button + follows="top|left" + font="SansSerifSmall" + height="20" + label="Disconnect" + layout="topleft" + left_pad="10" + name="disconnect_btn" + top_delta="0" + width="110" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="10" + name="spawn_points_text" + top="84" + width="200"> + Spawn Points (positions, not objects): + </text> + <scroll_list + follows="left|top" + font="SansSerifSmall" + height="60" + layout="topleft" + left_delta="0" + name="spawn_points_list" + top_delta="16" + width="230" /> + <button + follows="top|left" + font="SansSerifSmall" + height="20" + label="Add Spawn" + layout="topleft" + left_delta="0" + name="add_spawn_point_btn" + top_pad="5" + width="110" /> + <button + follows="top|left" + font="SansSerifSmall" + height="20" + label="Remove Spawn" + layout="topleft" + left_pad="10" + name="remove_spawn_point_btn" + top_delta="0" + width="110" /> + <text + type="string" + length="1" + follows="top|left" + height="80" + layout="topleft" + left="10" + name="spawn_point_help" + top="190" + width="260"> + Select object and click Add to specify position. +You may then move or delete the object. +Positions are relative to the telehub center. +Select item in list to show position in world. + </text> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_test_button.xml b/indra/newview/skins/default/xui/en/floater_test_button.xml new file mode 100644 index 0000000000000000000000000000000000000000..0681eedbabba253d8c1ee0aee9169b78b867f463 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_test_button.xml @@ -0,0 +1,111 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_resize="true" + height="500" + layout="topleft" + name="floater_test_button" + width="500"> + <button + height="20" + label="Generic Button" + layout="topleft" + left="10" + name="generic_button" + top="20" + width="150" /> + <button + bottom_delta="30" + height="20" + label="Bottom delta" + layout="topleft" + name="bottom_delta_button" /> + <button + bottom_delta="30" + font="SansSerifSmall" + height="20" + label="SansSerifSmall" + layout="topleft" + name="sans_serif_small_button" /> + <button + auto_resize="true" + bottom_delta="30" + height="20" + label="Auto Resize" + layout="topleft" + name="auto_resize_button" /> + <button + bottom_delta="30" + height="20" + is_toggle="true" + label="Click Change Label" + label_selected="New Label" + layout="topleft" + name="label_selected_button" /> + <button + bottom_delta="30" + height="20" + label="No Label Shadow" + label_shadow="false" + layout="topleft" + name="label_shadow_button" /> + <button + bottom_delta="30" + height="20" + label="Red Label" + label_color="red" + layout="topleft" + name="label_color_button" /> + <button + bottom_delta="30" + height="20" + is_toggle="true" + label="Red Label Selected" + label_color_selected="red" + label_selected="Red Label Selected" + layout="topleft" + name="label_color_selected_button" /> + <button + bottom_delta="30" + enabled="false" + height="20" + label="Red Label Disabled" + label_color_disabled="red" + label_selected="Red Label Selected" + layout="topleft" + name="label_color_disabled_button" /> + <button + bottom_delta="30" + height="20" + highlight_color="red" + label="Red Highlight" + layout="topleft" + name="highlight_color_button" /> + <button + bottom_delta="30" + height="20" + hover_glow_amount="0" + label="No Hover Glow" + layout="topleft" + name="hover_glow_amount_button" /> + <button + height="30" + image_selected="object_cube_active.tga" + image_unselected="object_cube.tga" + layout="topleft" + left="200" + name="image_button" + picture_style="true" + top="20" + width="30" /> + <button + height="30" + image_color="red" + image_selected="object_cube_active.tga" + image_unselected="object_cube.tga" + layout="topleft" + left_delta="0" + name="image_color_button" + picture_style="true" + top_pad="10" + width="30" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_test_checkbox.xml b/indra/newview/skins/default/xui/en/floater_test_checkbox.xml new file mode 100644 index 0000000000000000000000000000000000000000..5a17ffefac9af39f895e218b969f94f945c326e9 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_test_checkbox.xml @@ -0,0 +1,83 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_resize="true" + height="400" + layout="topleft" + name="floater_test_checkbox" + width="400"> + <check_box + control_name="ShowStartLocation" + height="16" + initial_value="true" + label="Show Start Location on Login Screen" + layout="topleft" + left="10" + name="show_location_checkbox" + top="28" + width="256" /> + <check_box + height="16" + label="Minimal Checkbox" + layout="topleft" + left_delta="0" + name="minimal_checkbox" + top_pad="14" + width="150" /> + <check_box + enabled="false" + height="16" + label="Disabled Checkbox" + layout="topleft" + left_delta="0" + name="disabled_checkbox" + top_pad="14" + width="150" /> + <check_box + height="16" + label="Text Enabled Red" + layout="topleft" + left_delta="0" + name="text_enabled_color_checkbox" + text_enabled_color="red" + top_pad="14" + width="150" /> + <check_box + enabled="false" + height="16" + label="Text Disabled Red" + layout="topleft" + left_delta="0" + name="text_disabled_color_checkbox" + text_disabled_color="red" + top_pad="14" + width="150" /> + <check_box + height="16" + initial_value="true" + label="Initial Value Checked" + layout="topleft" + left_delta="0" + name="initial_value_checkbox" + top_pad="14" + width="150" /> + <check_box + font="Monospace" + height="16" + label="Font Monospace" + layout="topleft" + left_delta="0" + name="font_checkbox" + top_pad="14" + width="150" /> + <check_box + height="16" + label="Custom Button" + layout="topleft" + left_delta="0" + name="check_button_checkbox" + top_pad="14" + width="150"> + <check_box.check_button + image_unselected="close_in_blue.tga" /> + </check_box> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_test_combobox.xml b/indra/newview/skins/default/xui/en/floater_test_combobox.xml new file mode 100644 index 0000000000000000000000000000000000000000..9e1253ec565503886364f1fbf77d9b63315892da --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_test_combobox.xml @@ -0,0 +1,143 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_resize="true" + height="400" + layout="topleft" + name="floater_test_combobox" + width="400"> + <text + type="string" + length="1" + height="16" + layout="topleft" + left="10" + top="24" + width="200"> + Real world usage (login location): + </text> + <combo_box + allow_text_entry="true" + control_name="LoginLocation" + follows="left|bottom" + height="18" + layout="topleft" + left_delta="0" + max_chars="128" + name="start_location_combo" + top_pad="2" + width="155"> + <combo_box.item + label="My Last Location" + value="last" /> + <combo_box.item + label="My Home" + value="home" /> + <combo_box.item + label="<Type region name>" + value="" /> + </combo_box> + <text + type="string" + length="1" + height="16" + layout="topleft" + left_delta="0" + top_pad="24" + width="200"> + Minimal combobox: + </text> + <combo_box + height="18" + layout="topleft" + left_delta="0" + name="minimal_combo" + top_pad="2" + width="150"> + <combo_box.item + label="First Item" + value="first" /> + <combo_box.item + label="Second Item" + value="second" /> + </combo_box> + <text + type="string" + length="1" + height="16" + layout="topleft" + left_delta="0" + top_pad="24" + width="200"> + Allow text input: + </text> + <combo_box + allow_text_entry="true" + height="18" + layout="topleft" + left_delta="0" + name="text_entry_combo" + top_pad="2" + width="150"> + <combo_box.item + label="First Item" + value="first" /> + <combo_box.item + label="Second Item" + value="second" /> + </combo_box> + <text + type="string" + length="1" + height="16" + layout="topleft" + left_delta="0" + top_pad="24" + width="200"> + Allow text input, default to second item: + </text> + <combo_box + allow_text_entry="true" + height="18" + initial_value="second" + layout="topleft" + left_delta="0" + name="text_entry_combo" + top_pad="2" + width="150"> + <combo_box.item + label="First Item" + value="first" /> + <combo_box.item + label="Second Item" + value="second" /> + </combo_box> + <text + type="string" + length="1" + height="16" + layout="topleft" + left_delta="0" + top_pad="24" + width="200"> + Two character max input: + </text> + <combo_box + allow_text_entry="true" + height="16" + layout="topleft" + left_delta="0" + max_chars="2" + name="state_combo" + top_pad="4" + width="150"> + <combo_box.item + label="CA" + value="ca" /> + <combo_box.item + label="NY" + value="ny" /> + <combo_box.item + label="TX" + value="tx" /> + </combo_box> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_test_layout.xml b/indra/newview/skins/default/xui/en/floater_test_layout.xml new file mode 100644 index 0000000000000000000000000000000000000000..344ad8447e7dbc9eaa745337c27971232dda0953 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_test_layout.xml @@ -0,0 +1,88 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_resize="true" + height="500" + layout="topleft" + name="floater_test_layout" + width="500"> + <text + type="string" + length="1" + height="16" + layout="topleft" + left="10" + top="84" + width="200"> + bottom 400 left 10 + </text> + <text + type="string" + length="1" + height="16" + layout="topleft" + left_delta="0" + top_pad="4" + width="200"> + Bottom delta -20 + </text> + <text + type="string" + length="1" + height="16" + layout="topleft" + left_delta="0" + top_pad="64" + width="200"> + bottom 300 left 10, should delta_bottom + </text> + <text + type="string" + length="1" + height="16" + layout="topleft" + left_pad="40" + top_delta="0" + width="200"> + bottom 300 left 250, should delta_left + </text> + <text + type="string" + length="1" + height="16" + layout="topleft" + left="10" + top="204" + width="200"> + bottom 280 left 10, should absolute position + </text> + <text + type="string" + length="1" + height="16" + layout="topleft" + left_pad="40" + top_delta="-2" + width="200"> + bottom 282 left 250, should delta_left and delta_bottom + </text> + <text + type="string" + length="1" + height="16" + layout="topleft" + left="10" + top="234" + width="200"> + bottom 250 left 10, should absolute position + </text> + <text + type="string" + length="1" + height="16" + layout="topleft" + left="250" + top="244" + width="200"> + bottom 240 left 250, should absolute position + </text> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_test_radiogroup.xml b/indra/newview/skins/default/xui/en/floater_test_radiogroup.xml new file mode 100644 index 0000000000000000000000000000000000000000..ef3e1f598dac15ac193d5cb825bf026912be1140 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_test_radiogroup.xml @@ -0,0 +1,81 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_resize="true" + height="400" + layout="topleft" + name="floater_test_radiogroup" + width="400"> + <radio_group + height="54" + layout="topleft" + left="10" + name="parcel_voice_channel" + top="46" + width="219"> + <radio_item + height="16" + label="Use the Estate spatial channel" + layout="topleft" + left="3" + name="Estate" + top="3" + width="463" /> + <radio_item + height="16" + label="Use a private spatial channel" + layout="topleft" + left_delta="0" + name="Private" + top_delta="16" + width="463" /> + <radio_item + height="16" + label="Disable spatial audio on this parcel" + layout="topleft" + left_delta="0" + name="Disabled" + top_delta="16" + width="463" /> + </radio_group> + <radio_group + height="50" + layout="topleft" + left_delta="0" + name="simple_radio_group" + top_pad="50" + width="150"> + <radio_item + bottom="20" + height="16" + label="Label in label attribute" + layout="topleft" + name="label_radio_item" /> + <radio_item + bottom_delta="20" + height="16" + label="Label in text contents" + layout="topleft" + name="contents_radio_item" /> + </radio_group> + <radio_group + draw_border="false" + height="50" + layout="topleft" + left_delta="0" + name="no_border_radio_group" + top_pad="50" + width="150"> + <radio_item + bottom="20" + height="16" + label="No Border Foo" + layout="topleft" + name="foo_radio_item" /> + <radio_item + bottom_delta="20" + height="16" + label="No Border Bar" + layout="topleft" + name="bar_item" /> + </radio_group> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_test_slider.xml b/indra/newview/skins/default/xui/en/floater_test_slider.xml new file mode 100644 index 0000000000000000000000000000000000000000..b1d468e2659301874855c508285fc17c3f6d8fb3 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_test_slider.xml @@ -0,0 +1,77 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_resize="true" + height="400" + layout="topleft" + name="floater_test_slider" + width="450"> + <slider + height="20" + label="Generic Slider" + layout="topleft" + left="10" + name="generic_slider" + top="40" + width="250" /> + <slider + height="20" + label="Callback Slider" + layout="topleft" + left_delta="0" + name="callback_slider" + top_pad="20" + width="400"> + <slider.mouse_up_callback + function="Test.TestCallback" + parameter="test" /> + </slider> + <slider + height="20" + increment="1" + initial_value="2.0" + label="Value Slider" + layout="topleft" + left_delta="0" + max_val="5" + min_val="1" + name="value_slider" + top_pad="20" + width="250" /> + <slider + height="20" + label="Mini Slider 1" + layout="topleft" + left_delta="0" + name="mini_slider_1" + top_pad="20" + width="200" /> + <slider + height="20" + label="Mini Slider 2" + layout="topleft" + left_pad="20" + name="mini_slider_2" + top_delta="0" + width="200" /> + <slider_bar + bottom="320" + height="20" + increment="1" + initial_value="2.0" + label="Slider Bar" + layout="topleft" + max_val="5" + min_val="1" + name="slider_bar" + width="300" /> + <slider + bottom="360" + decimal_digits="1" + height="20" + label="Red Slider" + label_width="100" + layout="topleft" + name="red_slider" + text_color="red" + text_width="40" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_test_spinner.xml b/indra/newview/skins/default/xui/en/floater_test_spinner.xml new file mode 100644 index 0000000000000000000000000000000000000000..da88d825e400e3d6e16e897c29c4599bbdc6685b --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_test_spinner.xml @@ -0,0 +1,93 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_resize="true" + height="400" + layout="topleft" + name="floater_test_spinner" + width="450"> + <spinner + height="20" + label="Generic Spinner" + layout="topleft" + left="10" + name="generic_spinner" + top="40" + width="350" /> + <spinner + height="20" + label="Callback Spinner" + label_width="80" + layout="topleft" + left_delta="0" + name="callback_spinner" + top_pad="20" + width="400" /> + <spinner + height="20" + label="Colorful Spinner" + layout="topleft" + left_delta="0" + name="colorful_spinner" + top_pad="20" + width="250" /> + <spinner + height="20" + increment="1" + initial_value="2.0" + label="Value Spinner" + layout="topleft" + left_delta="0" + max_val="5" + min_val="1" + name="value_spinner" + top_pad="20" + width="250" /> + <spinner + height="20" + label="Mini Spinner 1" + layout="topleft" + left_delta="0" + name="mini_spinner_1" + top_pad="20" + width="200" /> + <spinner + height="20" + label="Mini Spinner 2" + layout="topleft" + left_pad="20" + name="mini_spinner_2" + top_delta="0" + width="200" /> + <spinner + control_name="RenderFogRatio" + decimal_digits="1" + height="20" + label="Control Spinner" + layout="topleft" + left="10" + max_val="20" + min_val="10" + name="control_spinner" + top="260" + width="250" /> + <spinner + follows="left" + height="20" + label="Follows Left" + label_width="85" + layout="topleft" + left_delta="0" + name="follows_left" + top_pad="20" + width="250" /> + <spinner + follows="right" + height="20" + label="Follows Right" + label_width="85" + layout="topleft" + left_delta="0" + name="follows_right" + top_pad="20" + width="250" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_test_textbox.xml b/indra/newview/skins/default/xui/en/floater_test_textbox.xml new file mode 100644 index 0000000000000000000000000000000000000000..b4f3fc1e784c4e940a0ba821589e72efbed857eb --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_test_textbox.xml @@ -0,0 +1,129 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_resize="true" + height="400" + layout="topleft" + name="floater_test_textbox" + width="400"> + <text + type="string" + length="1" + height="10" + layout="topleft" + left="10" + top="30" + width="300"> + Bottom and left specified + </text> + <text + type="string" + length="1" + height="10" + layout="topleft" + left_delta="200" + top_delta="0" + width="300"> + Bottom delta left delta + </text> + <text + type="string" + length="1" + height="10" + layout="topleft" + left="10" + top="50" + width="300"> + Bottom delta -20 + </text> + <text + type="string" + length="1" + height="10" + layout="topleft" + left_delta="0" + top_pad="30" + width="300"> + First line of multiple lines + Second line of multiple lines + </text> + <text + type="string" + length="1" + font="SansSerif" + height="10" + layout="topleft" + left_delta="0" + top_pad="30" + width="300"> + font SansSerif + </text> + <text + type="string" + length="1" + follows="bottom|right" + height="10" + layout="topleft" + left_delta="0" + top_pad="10" + width="300"> + follows bottom right + </text> + <text + type="string" + length="1" + font="SansSerifSmall" + font.style="BOLD" + height="10" + layout="topleft" + left_delta="0" + top_pad="10" + width="300"> + font style BOLD + </text> + <text + type="string" + length="1" + font="SansSerifSmall" + font.style="BOLD|UNDERLINE" + height="10" + layout="topleft" + left_delta="0" + top_pad="10" + width="300"> + font style BOLD UNDERLINE + </text> + <text + type="string" + length="1" + height="10" + layout="topleft" + left_delta="0" + top_pad="10" + width="300"> + font style UNDERLINE + </text> + <text + type="string" + length="1" + height="10" + layout="topleft" + left_delta="0" + top_pad="10" + width="300"> + Escaped greater than > + </text> + <text + type="string" + length="1" + bottom="390" + label="N" + layout="topleft" + left="10" + name="floater_map_north" + right="30" + text="N" + text_color="1 1 1 0.7" + top="370"> + N + </text> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_test_widgets.xml b/indra/newview/skins/default/xui/en/floater_test_widgets.xml new file mode 100644 index 0000000000000000000000000000000000000000..9a2602db75fbf6d9732ca8ef2509b667403089bb --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_test_widgets.xml @@ -0,0 +1,342 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<!-- Sample "floater" window with examples of common widgets. + + Notes: + XML UI (XUI) files use spaces for indentation, not tabs. + All position values are in pixels. + For now, each widget must contain attribute layout="topleft". + 0,0 is the top-left corner of the floater. + Each widget must have a unique name attribute. + If a widget is aligned with the one before it, use relative positioning: + top_pad + top_delta + left_pad + left_delta + Otherwise specify location with left and top attributes. +--> +<floater + can_resize="true" + title="Test Floater" + height="500" + layout="topleft" + name="floater_test_widgets" + width="850"> + + <!-- Strings are used by C++ code for localization. They are not visible + unless the C++ code uses them to fill in another widget. --> + <floater.string + name="sample_string" + value="Sample String" /> + <floater.string + name="other_string" + value="Other String" /> + + <!-- Floaters can contain drop-down menus. + The menu_bar widget contains the inividual menus. + The width is automatically computed to fit the labels. --> + <menu_bar + height="18" + layout="topleft" + tool_tip="menu" + left="2" + name="test_menu_bar" + top="16"> + <menu + height="16" + label="Menu" + layout="topleft" + tear_off="true" + left="0" + name="Menu" + top="-32" + width="128"> + <!-- menu_item_call will trigger a function call in the C++ code --> + <menu_item_call + label="Menu Item 1" + layout="topleft" + name="test_menu_item_1" /> + <!-- menu_item_separator is a horizontal line used to separate sections + of a menu. In general, menus should be divided into chunks of + no more than 7 items separated by menu_item_separators. --> + <menu_item_separator/> + <menu_item_call + label="Menu Item 2" + layout="topleft" + name="test_menu_item_2" /> + </menu> + </menu_bar> + + <!-- "text" is one or more read-only lines of text. + It can be made clickable but this requires C++ code + support. URLs are not automatically underlined. --> + <text + bottom="55" + layout="topleft" + left="10"> + For widget list see https://wiki.lindenlab.com/wiki/Viewer:UI/Widgets + </text> + + <!-- First column --> + + <button + height="20" + label="Button" + layout="topleft" + left_delta="0" + name="test_button" + tool_tip="button" + top="80" + width="100" /> + <!-- "flyout_button" is a button that can spawn a menu --> + <flyout_button + follows="right|bottom" + height="20" + label="Flyout" + layout="topleft" + left_delta="0" + name="fly_btn" + top_pad="15" + tool_tip="flyout button" + width="100"> + <flyout_button.item + label="Item 1" + value="shout" /> + <flyout_button.item + label="Item 2" + value="say" /> + <flyout_button.item + label="Item 3" + value="whisper" /> + </flyout_button> + <check_box + bottom_delta="35" + label="Checkbox" + layout="topleft" + tool_tip="checkbox" + name="test_checkbox" /> + <!-- "combo_box" is a pop-menu of items. Optionally the box itself can + contain a general purpose line input editor, allowing the user to + provide input that is not a list item. --> + <combo_box + bottom_delta="35" + height="16" + width="150" + label="Combobox" + layout="topleft" + tool_tip="combo box" + name="test_combo_box"> + <combo_box.item + label="Combobox Item 1" /> + <combo_box.item + label="Combobox Item 2" /> + </combo_box> + <!-- "icon" is a read-only image. The image_name must match an entry + in textures.xml. We support TGA and PNG for UI images. --> + <icon + height="16" + image_name="icon_avatar_online.tga" + layout="topleft" + left_delta="0" + tool_tip="icon" + name="test_icon" + top_pad="40" + width="16" /> + <!-- "line_editor" allows a single line of editable text input. + The contents of this XML node are used as the initial value for + the text. --> + <line_editor + height="20" + layout="topleft" + left_delta="0" + name="test_line_editor" + top_pad="20" + tool_tip="line editor" + width="200"> + Line Editor Sample Text + </line_editor> + <!-- "search_editor" is a specialized line_editor that shows read-only + help text until the user clicks in the widget. --> + <search_editor + follows="left|top|right" + height="20" + label="Type here to search" + layout="topleft" + left_delta="0" + name="search editor" + tool_tip="search editor" + top_pad="30" + width="200" /> + <!-- "progress_bar" percent completed gets set in C++ code --> + <progress_bar + height="16" + layout="topleft" + left_delta="0" + name="test_progress_bar" + top_pad="30" + tool_tip="progress bar" + width="200" /> + <!-- "stat_view" is a container for statistics graphs. It is only used + for debugging/diagnostic displays. --> + <stat_view + height="250" + label="Statistics View" + layout="topleft" + left_delta="0" + name="axis_view" + show_label="true" + top_pad="30" + tool_tip="stat view" + width="200"> + <stat_bar + width="100" + bar_max="100" + bottom_delta="30" + label="Test Stat" + layout="topleft" + stat="stat" + bar_min="20" + name="test_stat_bar" /> + </stat_view> + + <!-- New column --> + + <!-- "radio_group" is a set of mutually exclusive choices, like the buttons + on a car radio that allow a single radio station to be chosen. --> + <radio_group + height="40" + layout="topleft" + left_pad="90" + name="size_radio_group" + tool_tip="radio group" + top="80" + width="200"> + <radio_item + bottom="20" + label="Radio 1" + layout="topleft" + name="small_radio_item" /> + <radio_item + label="Radio 2" + layout="topleft" + name="large_radio_item" /> + </radio_group> + <!-- "scroll_list" is a scrolling list of columnar data. --> + <scroll_list + bottom_delta="100" + height="80" + draw_heading="true" + tool_tip="scroll list" + layout="topleft"> + <scroll_list.columns + dynamicwidth="true" + name="first_column" + label="Column A"/> + <scroll_list.columns + dynamicwidth="true" + name="second_column" + label="Column B"/> + </scroll_list> + <!-- "slider" is a horizontal input widget for numerical data. --> + <slider + bottom_delta="45" + layout="topleft" + min_val="0" + max_val="100" + initial_value="20" + label="Slider" + name="test_slider" + tool_tip="slider" + width="200" /> + <!-- "spinner" is a numerical input widget with an up and down arrow to + change the value. --> + <spinner + bottom_delta="35" + label="Spinner" + layout="topleft" + name="test_spinner" + tool_tip="spinner"/> + <text + bottom_delta="50" + font.style = "UNDERLINE" + layout="topleft" + name="test_text" + tool_tip="text"> + Text (underlined) + </text> + <!-- "text_editor" is a multi-line text input widget, similar to + textarea in HTML. --> + <text_editor + height="80" + layout="topleft" + left_delta="0" + name="test_text_editor" + tool_tip="text editor" + top_pad="25" + width="200"> + Text Editor + </text_editor> + + <!-- And a third column --> + + <!-- "tab_container" is a holder for multiple panels of UI widgets. + Tabs can appear at the top, bottom, or left of the container. --> + <tab_container + follows="all" + height="400" + layout="topleft" + left="575" + name="group_tab_container" + tab_position="top" + tool_tip="tab container" + top="80" + width="250"> + <!-- "panel" is a container for widgets. It is automatically resized to + fit the parent tab_container. --> + <panel + border="true" + label="Tab 1 - Color" + layout="topleft" + name="panel2"> + <!-- "color_swatch" displays a color and spawns a color picker when + clicked. --> + <color_swatch + border_color="1 0 0 1" + can_apply_immediately="true" + color="0.3 0.6 0.9 1" + follows="left|top" + height="90" + border="true" + layout="topleft" + left="10" + label="Color Swatch 1" + name="swatch1" + tool_tip="Color Swatch: Click to open Color Picker" + top="10" + width="80" /> + <color_swatch + border_color="0.45098 0.517647 0.607843 1" + can_apply_immediately="true" + color="1 0 1 1" + follows="left|top" + height="90" + label="Color Swatch 2" + layout="topleft" + left_pad="10" + name="swatch2" + tool_tip="Color Swatch: Click to open Color Picker" + top_delta="0" + width="80" /> + </panel> + <!-- panels can also refer to other floaters or panels --> + <panel + border="true" + filename="floater_test_checkbox.xml" + height="225" + label="Tab 2 - Checkbox" + layout="topleft" + left_delta="0" + name="tab2" + top_delta="159" + width="250" /> + </tab_container> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml new file mode 100644 index 0000000000000000000000000000000000000000..8d855196103bc8c224044b9abdd2f293c787b530 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml @@ -0,0 +1,149 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_minimize="false" + can_resize="true" + height="290" + layout="topleft" + min_height="290" + min_width="410" + name="texture picker" + title="Pick: Texture" + width="410"> + <floater.string + name="choose_picture"> + Click to choose a picture + </floater.string> + <floater.string + name="pick title"> + Pick: + </floater.string> + <text + type="string" + length="1" + follows="left|top" + halign="center" + height="14" + layout="topleft" + left="4" + name="Multiple" + top="96" + width="163"> + Multiple + </text> + <text + type="string" + length="1" + follows="left|top" + height="14" + layout="topleft" + left_delta="0" + name="unknown" + top_pad="80" + width="163"> + Dimensions: [DIMENSIONS] + </text> + <button + enabled="false" + follows="left|bottom" + font="SansSerifSmall" + height="20" + label="Default" + label_selected="Default" + layout="topleft" + left_delta="0" + name="Default" + top_pad="4" + width="64" /> + <button + enabled="false" + follows="left|bottom" + font="SansSerifSmall" + height="20" + label="None" + label_selected="None" + layout="topleft" + left_pad="4" + name="None" + top_delta="0" + width="64" /> + <button + follows="left|bottom" + font="SansSerifSmall" + height="20" + label="Blank" + label_selected="Blank" + layout="topleft" + left="4" + name="Blank" + top="232" + width="64" /> + <check_box + height="24" + initial_value="true" + label="Show Folders" + layout="topleft" + left="175" + name="show_folders_check" + top="20" + width="201" /> + <search_editor + follows="left|top|right" + height="16" + label="Type here to search" + layout="topleft" + left_delta="0" + name="inventory search editor" + top_delta="0" + width="231" /> + <inventory_panel + allow_multi_select="false" + border="true" + follows="left|top|right|bottom" + height="216" + layout="topleft" + left_delta="0" + name="inventory panel" + top_pad="4" + width="231" /> + <check_box + follows="left|bottom" + height="20" + initial_value="true" + label="Apply Immediately" + layout="topleft" + left="4" + name="apply_immediate_check" + top="262" + width="150" /> + <button + follows="left|bottom" + height="32" + image_selected="eye_button_active.tga" + image_unselected="eye_button_inactive.tga" + layout="topleft" + left="139" + name="Pipette" + picture_style="true" + top="250" + width="32" /> + <button + follows="right|bottom" + height="20" + label="Cancel" + label_selected="Cancel" + layout="topleft" + left="186" + name="Cancel" + top="262" + width="100" /> + <button + follows="right|bottom" + height="20" + label="Select" + label_selected="Select" + layout="topleft" + left_pad="4" + name="Select" + top_delta="0" + width="100" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml new file mode 100644 index 0000000000000000000000000000000000000000..17b73b47ab5126a37cfe1357a4c7846078177468 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_tools.xml @@ -0,0 +1,2866 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + follows="left|top" + height="550" + layout="topleft" + name="toolbox floater" + save_rect="true" + short_title="Build" + single_instance="true" + sound_flags="0" + width="272"> + <floater.string + name="status_rotate"> + Drag colored bands to rotate object + </floater.string> + <floater.string + name="status_scale"> + Click and drag to stretch selected side + </floater.string> + <floater.string + name="status_move"> + Drag to move, shift-drag to copy + </floater.string> + <floater.string + name="status_modifyland"> + Click and hold to modify land + </floater.string> + <floater.string + name="status_camera"> + Click and drag to change view + </floater.string> + <floater.string + name="status_grab"> + Drag to move, Ctrl to lift, Ctrl-Shift to rotate + </floater.string> + <floater.string + name="status_place"> + Click inworld to build + </floater.string> + <floater.string + name="status_selectland"> + Click and drag to select land + </floater.string> + <floater.string + name="grid_screen_text"> + Screen + </floater.string> + <floater.string + name="grid_local_text"> + Local + </floater.string> + <floater.string + name="grid_world_text"> + World + </floater.string> + <floater.string + name="grid_reference_text"> + Reference + </floater.string> + <floater.string + name="grid_attachment_text"> + Attachment + </floater.string> + <button + follows="left|top" + height="32" + image_disabled="tool_zoom.tga" + image_disabled_selected="tool_zoom_active.tga" + image_selected="tool_zoom_active.tga" + image_unselected="tool_zoom.tga" + layout="topleft" + left="4" + name="button focus" + picture_style="true" + tool_tip="Focus" + top="2" + width="32" /> + <button + follows="left|top" + height="32" + image_disabled="tool_grab.tga" + image_disabled_selected="tool_grab_active.tga" + image_selected="tool_grab_active.tga" + image_unselected="tool_grab.tga" + layout="topleft" + left_pad="4" + name="button move" + picture_style="true" + tool_tip="Move" + top_delta="0" + width="32" /> + <button + follows="left|top" + height="32" + image_disabled="tool_face.tga" + image_disabled_selected="tool_face_active.tga" + image_selected="tool_face_active.tga" + image_unselected="tool_face.tga" + layout="topleft" + left_pad="4" + name="button edit" + picture_style="true" + tool_tip="Edit" + top_delta="0" + width="32" /> + <button + follows="left|top" + height="32" + image_disabled="tool_create.tga" + image_disabled_selected="tool_create_active.tga" + image_selected="tool_create_active.tga" + image_unselected="tool_create.tga" + layout="topleft" + left_pad="4" + name="button create" + picture_style="true" + tool_tip="Create" + top_delta="0" + width="32" /> + <button + follows="left|top" + height="32" + image_disabled="tool_dozer.tga" + image_disabled_selected="tool_dozer_active.tga" + image_selected="tool_dozer_active.tga" + image_unselected="tool_dozer.tga" + layout="topleft" + left_pad="4" + name="button land" + picture_style="true" + tool_tip="Land" + top_delta="0" + width="32" /> + <slider_bar + follows="left|top" + height="14" + increment="0.01" + initial_value="0.125" + layout="topleft" + left="114" + max_val="0.5" + name="slider zoom" + top="55" + width="134" /> + <radio_group + draw_border="false" + height="45" + layout="topleft" + left_delta="-110" + name="focus_radio_group" + top_delta="0" + width="114"> + <radio_item + height="16" + label="Zoom" + layout="topleft" + left="0" + name="radio zoom" + top="-1" + width="114" /> + <radio_item + height="16" + label="Orbit (Ctrl)" + layout="topleft" + left_delta="0" + name="radio orbit" + top_delta="15" + width="114" /> + <radio_item + height="16" + label="Pan (Ctrl-Shift)" + layout="topleft" + left_delta="0" + name="radio pan" + top_delta="15" + width="114" /> + </radio_group> + <radio_group + draw_border="false" + height="45" + layout="topleft" + left_delta="0" + name="move_radio_group" + top_delta="0" + width="114"> + <radio_item + height="16" + label="Move" + layout="topleft" + left="0" + name="radio move" + top="-1" + width="114" /> + <radio_item + height="16" + label="Lift (Ctrl)" + layout="topleft" + left_delta="0" + name="radio lift" + top_delta="15" + width="114" /> + <radio_item + height="16" + label="Spin (Ctrl-Shift)" + layout="topleft" + left_delta="0" + name="radio spin" + top_delta="15" + width="114" /> + </radio_group> + <radio_group + draw_border="false" + height="60" + layout="topleft" + left_delta="0" + name="edit_radio_group" + top_delta="0" + width="114"> + <radio_item + height="16" + label="Position" + layout="topleft" + left="0" + name="radio position" + top="-1" + width="114" /> + <radio_item + height="16" + label="Rotate (Ctrl)" + layout="topleft" + left_delta="0" + name="radio rotate" + top_delta="15" + width="114" /> + <radio_item + height="16" + label="Stretch (Ctrl-Shift)" + layout="topleft" + left_delta="0" + name="radio stretch" + top_delta="15" + width="123" /> + <radio_item + height="16" + label="Select Texture" + layout="topleft" + left_delta="0" + name="radio select face" + top_delta="15" + width="114" /> + </radio_group> + <check_box + control_name="EditLinkedParts" + height="16" + label="Edit linked parts" + layout="topleft" + left_delta="0" + name="checkbox edit linked parts" + top_pad="3" + width="114" /> + <text + type="string" + length="1" + follows="left|top" + height="14" + layout="topleft" + left_delta="2" + name="text ruler mode" + top_pad="6" + width="68"> + Ruler: + </text> + <combo_box + height="20" + layout="topleft" + left_delta="40" + name="combobox grid mode" + top_delta="-2" + width="86"> + <combo_box.item + label="World" + value="World" /> + <combo_box.item + label="Local" + value="Local" /> + <combo_box.item + label="Reference" + value="Reference" /> + </combo_box> + <check_box + control_name="ScaleUniform" + height="16" + label="Stretch Both Sides" + layout="topleft" + left="143" + name="checkbox uniform" + top="54" + width="134" /> + <check_box + control_name="ScaleStretchTextures" + height="16" + initial_value="true" + label="Stretch Textures" + layout="topleft" + left_delta="0" + name="checkbox stretch textures" + top_pad="1" + width="134" /> + <check_box + control_name="SnapEnabled" + height="16" + initial_value="true" + label="Use Grid" + layout="topleft" + left_delta="0" + name="checkbox snap to grid" + top_pad="1" + width="134" /> + <button + follows="left|top" + font="SansSerifSmall" + height="20" + label="Options..." + label_selected="Options..." + layout="topleft" + left_delta="20" + name="Options..." + top="103" + valign="center" + width="80" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="4" + name="text status" + top="36" + width="264"> + Drag to move, shift-drag to copy + </text> + <button + follows="left|top" + height="24" + image_disabled="object_cube.tga" + image_disabled_selected="object_cube_active.tga" + image_selected="object_cube_active.tga" + image_unselected="object_cube.tga" + layout="topleft" + left_delta="0" + name="ToolCube" + picture_style="true" + tool_tip="Cube" + top_delta="15" + width="24" /> + <button + follows="left|top" + height="24" + image_disabled="object_prism.tga" + image_disabled_selected="object_prism_active.tga" + image_selected="object_prism_active.tga" + image_unselected="object_prism.tga" + layout="topleft" + left_delta="23" + name="ToolPrism" + picture_style="true" + tool_tip="Prism" + top_delta="0" + width="24" /> + <button + follows="left|top" + height="24" + image_disabled="object_pyramid.tga" + image_disabled_selected="object_pyramid_active.tga" + image_selected="object_pyramid_active.tga" + image_unselected="object_pyramid.tga" + layout="topleft" + left_delta="23" + name="ToolPyramid" + picture_style="true" + tool_tip="Pyramid" + top_delta="0" + width="24" /> + <button + follows="left|top" + height="24" + image_disabled="object_tetrahedron.tga" + image_disabled_selected="object_tetrahedron_active.tga" + image_selected="object_tetrahedron_active.tga" + image_unselected="object_tetrahedron.tga" + layout="topleft" + left_delta="23" + name="ToolTetrahedron" + picture_style="true" + tool_tip="Tetrahedron" + top_delta="0" + width="24" /> + <button + follows="left|top" + height="24" + image_disabled="object_cylinder.tga" + image_disabled_selected="object_cylinder_active.tga" + image_selected="object_cylinder_active.tga" + image_unselected="object_cylinder.tga" + layout="topleft" + left_delta="23" + name="ToolCylinder" + picture_style="true" + tool_tip="Cylinder" + top_delta="0" + width="24" /> + <button + follows="left|top" + height="24" + image_disabled="object_hemi_cylinder.tga" + image_disabled_selected="object_hemi_cylinder_active.tga" + image_selected="object_hemi_cylinder_active.tga" + image_unselected="object_hemi_cylinder.tga" + layout="topleft" + left_delta="23" + name="ToolHemiCylinder" + picture_style="true" + tool_tip="Hemicylinder" + top_delta="0" + width="24" /> + <button + follows="left|top" + height="24" + image_disabled="object_cone.tga" + image_disabled_selected="object_cone_active.tga" + image_selected="object_cone_active.tga" + image_unselected="object_cone.tga" + layout="topleft" + left_delta="23" + name="ToolCone" + picture_style="true" + tool_tip="Cone" + top_delta="0" + width="24" /> + <button + follows="left|top" + height="24" + image_disabled="object_hemi_cone.tga" + image_disabled_selected="object_hemi_cone_active.tga" + image_selected="object_hemi_cone_active.tga" + image_unselected="object_hemi_cone.tga" + layout="topleft" + left_delta="23" + name="ToolHemiCone" + picture_style="true" + tool_tip="Hemicone" + top_delta="0" + width="24" /> + <button + follows="left|top" + height="24" + image_disabled="object_sphere.tga" + image_disabled_selected="object_sphere_active.tga" + image_selected="object_sphere_active.tga" + image_unselected="object_sphere.tga" + layout="topleft" + left_delta="23" + name="ToolSphere" + picture_style="true" + tool_tip="Sphere" + top_delta="0" + width="24" /> + <button + follows="left|top" + height="24" + image_disabled="object_hemi_sphere.tga" + image_disabled_selected="object_hemi_sphere_active.tga" + image_selected="object_hemi_sphere_active.tga" + image_unselected="object_hemi_sphere.tga" + layout="topleft" + left_delta="23" + name="ToolHemiSphere" + picture_style="true" + tool_tip="Hemisphere" + top_delta="0" + width="24" /> + <button + follows="left|top" + height="24" + image_disabled="object_torus.tga" + image_disabled_selected="object_torus_active.tga" + image_selected="object_torus_active.tga" + image_unselected="object_torus.tga" + layout="topleft" + left="4" + name="ToolTorus" + picture_style="true" + tool_tip="Torus" + top="74" + width="24" /> + <button + follows="left|top" + height="24" + image_disabled="object_tube.tga" + image_disabled_selected="object_tube_active.tga" + image_selected="object_tube_active.tga" + image_unselected="object_tube.tga" + layout="topleft" + left_delta="23" + name="ToolTube" + picture_style="true" + tool_tip="Tube" + top_delta="0" + width="24" /> + <button + follows="left|top" + height="24" + image_disabled="object_ring.tga" + image_disabled_selected="object_ring_active.tga" + image_selected="object_ring_active.tga" + image_unselected="object_ring.tga" + layout="topleft" + left_delta="23" + name="ToolRing" + picture_style="true" + tool_tip="Ring" + top_delta="0" + width="24" /> + <button + follows="left|top" + height="24" + image_disabled="object_tree.tga" + image_disabled_selected="object_tree_active.tga" + image_selected="object_tree_active.tga" + image_unselected="object_tree.tga" + layout="topleft" + left_delta="23" + name="ToolTree" + picture_style="true" + tool_tip="Tree" + top_delta="0" + width="24" /> + <button + follows="left|top" + height="24" + image_disabled="object_grass.tga" + image_disabled_selected="object_grass_active.tga" + image_selected="object_grass_active.tga" + image_unselected="object_grass.tga" + layout="topleft" + left_delta="23" + name="ToolGrass" + picture_style="true" + tool_tip="Grass" + top_delta="0" + width="24" /> + <check_box + control_name="CreateToolKeepSelected" + height="16" + label="Keep selected" + layout="topleft" + left="4" + name="checkbox sticky" + top="101" + width="128" /> + <check_box + control_name="CreateToolCopySelection" + height="16" + label="Copy selected" + layout="topleft" + left_delta="0" + name="checkbox copy selection" + top_delta="15" + width="134" /> + <check_box + control_name="CreateToolCopyCenters" + height="16" + initial_value="true" + label="Center" + layout="topleft" + left_delta="18" + name="checkbox copy centers" + top="132" + width="134" /> + <check_box + control_name="CreateToolCopyRotates" + height="16" + label="Rotate" + layout="topleft" + left_delta="0" + name="checkbox copy rotates" + top_delta="16" + width="134" /> + <radio_group + draw_border="false" + height="105" + layout="topleft" + left="4" + name="land_radio_group" + top="54" + width="114"> + <radio_item + height="16" + label="Select Land" + layout="topleft" + left="0" + name="radio select land" + top="-1" + width="114" /> + <radio_item + height="16" + label="Flatten" + layout="topleft" + left_delta="0" + name="radio flatten" + top_delta="15" + width="114" /> + <radio_item + height="16" + label="Raise" + layout="topleft" + left_delta="0" + name="radio raise" + top_delta="15" + width="114" /> + <radio_item + height="16" + label="Lower" + layout="topleft" + left_delta="0" + name="radio lower" + top_delta="15" + width="114" /> + <radio_item + height="16" + label="Smooth" + layout="topleft" + left_delta="0" + name="radio smooth" + top_delta="15" + width="114" /> + <radio_item + height="16" + label="Roughen" + layout="topleft" + left_delta="0" + name="radio noise" + top_delta="15" + width="114" /> + <radio_item + height="16" + label="Revert" + layout="topleft" + left_delta="0" + name="radio revert" + top_delta="15" + width="114" /> + </radio_group> + <button + follows="left|top" + font="SansSerifSmall" + height="20" + label="Apply" + label_selected="Apply" + layout="topleft" + left_delta="112" + name="button apply to selection" + tool_tip="Modify Selected Land" + top_delta="-2" + width="78" /> + <text + type="string" + length="1" + follows="left|top" + height="12" + layout="topleft" + left_delta="2" + name="Bulldozer:" + top_pad="4" + width="100"> + Bulldozer: + </text> + <text + type="string" + length="1" + follows="left|top" + height="12" + layout="topleft" + left="132" + name="Dozer Size:" + top="94" + width="100"> + Size + </text> + <slider_bar + follows="left|top" + height="16" + initial_value="2.0" + layout="topleft" + left_delta="46" + max_val="11" + min_val="1" + name="slider brush size" + top_delta="0" + width="80" /> + <text + type="string" + length="1" + follows="left|top" + height="12" + layout="topleft" + left="132" + name="Strength:" + top="116" + width="100"> + Strength + </text> + <slider_bar + follows="left|top" + height="16" + initial_value="0.00" + layout="topleft" + left_delta="46" + max_val="2" + min_val="-1" + name="slider force" + top_delta="0" + width="80" /> + <text + type="string" + length="1" + follows="left|top" + halign="right" + height="16" + layout="topleft" + left="118" + name="obj_count" + top="135" + width="143"> + Selected objects: [COUNT] + </text> + <text + type="string" + length="1" + follows="left|top" + halign="right" + height="16" + layout="topleft" + left_delta="0" + name="prim_count" + top_delta="12" + width="143"> + primitives: [COUNT] + </text> + <tab_container + follows="left|top" + height="384" + layout="topleft" + left="0" + name="Object Info Tabs" + tab_max_width="52" + tab_min_width="40" + tab_position="top" + top="166" + width="272"> + <panel + border="true" + follows="left|top|right|bottom" + height="367" + label="General" + layout="topleft" + left="1" + mouse_opaque="false" + name="General" + top="16" + width="270"> + <panel.string + name="text deed continued"> + Deed... + </panel.string> + <panel.string + name="text deed"> + Deed + </panel.string> + <panel.string + name="text modify info 1"> + You can modify this object. + </panel.string> + <panel.string + name="text modify info 2"> + You can modify these objects. + </panel.string> + <panel.string + name="text modify info 3"> + You cannot modify this object. + </panel.string> + <panel.string + name="text modify info 4"> + You cannot modify these objects. + </panel.string> + <panel.string + name="text modify warning"> + Must select entire object to set permissions. + </panel.string> + <panel.string + name="Cost Default"> + Price: L$ + </panel.string> + <panel.string + name="Cost Total"> + Total Price: L$ + </panel.string> + <panel.string + name="Cost Per Unit"> + Price Per: L$ + </panel.string> + <panel.string + name="Cost Mixed"> + Mixed Price + </panel.string> + <panel.string + name="Sale Mixed"> + Mixed Sale + </panel.string> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="10" + name="Name:" + top="10" + width="78"> + Name: + </text> + <line_editor + border_style="line" + border_thickness="1" + follows="left|top|right" + height="16" + layout="topleft" + left_delta="78" + max_length="63" + name="Object Name" + select_on_focus="true" + top_delta="0" + width="172" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="10" + name="Description:" + top="30" + width="78"> + Description: + </text> + <line_editor + border_style="line" + border_thickness="1" + follows="left|top|right" + height="16" + layout="topleft" + left_delta="78" + max_length="127" + name="Object Description" + select_on_focus="true" + top_delta="0" + width="172" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="10" + name="Creator:" + top="50" + width="78"> + Creator: + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_delta="78" + name="Creator Name" + top_delta="0" + width="88"> + Thrax Linden + </text> + <button + follows="top|right" + font="SansSerifSmall" + height="20" + label="Profile..." + label_selected="Profile..." + layout="topleft" + left_pad="6" + name="button creator profile" + top_delta="-4" + width="78" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="10" + name="Owner:" + top="70" + width="78"> + Owner: + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_delta="78" + name="Owner Name" + top_delta="0" + width="88"> + Thrax Linden + </text> + <button + follows="top|right" + font="SansSerifSmall" + height="20" + label="Profile..." + label_selected="Profile..." + layout="topleft" + left_pad="6" + name="button owner profile" + top_delta="-4" + width="78" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="10" + name="Group:" + top="90" + width="78"> + Group: + </text> + <name_box + follows="left|top" + height="16" + initial_value="(retrieving)" + layout="topleft" + left_delta="78" + name="Group Name Proxy" + top_delta="0" + width="88" /> + <button + follows="top|right" + font="SansSerifSmall" + height="20" + label="Set..." + label_selected="Set..." + layout="topleft" + left_pad="6" + name="button set group" + top_delta="-4" + width="78" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="10" + name="Permissions:" + top="110" + width="85"> + Permissions: + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="16" + layout="topleft" + left_delta="0" + name="perm_modify" + top_pad="4" + width="250"> + You can modify this object. + </text> + <check_box + height="16" + label="Share with group" + layout="topleft" + left_delta="0" + name="checkbox share with group" + tool_tip="Allow all members of the set group to share and use your permissions for this object. You must Deed to enable role restrictions." + top_pad="4" + width="166" /> + <button + follows="top|right" + font="SansSerifSmall" + height="20" + label="Deed..." + label_selected="Deed..." + layout="topleft" + left_delta="172" + name="button deed" + tool_tip="Group shared objects can be deeded by a group officer." + top="166" + width="78" /> + <check_box + height="16" + label="Allow anyone to move" + layout="topleft" + left="10" + name="checkbox allow everyone move" + top="190" + width="142" /> + <check_box + height="16" + label="Allow anyone to copy" + layout="topleft" + left_delta="0" + name="checkbox allow everyone copy" + top_pad="4" + width="141" /> + <check_box + height="16" + label="Show in search" + layout="topleft" + left_delta="0" + name="search_check" + tool_tip="Let people see this object in search results" + top_pad="4" + width="78" /> + <check_box + height="16" + label="For Sale" + layout="topleft" + left_delta="0" + name="checkbox for sale" + top_pad="4" + width="78" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_pad="12" + name="Cost" + top_delta="0" + width="78"> + Price: L$ + </text> + <line_editor + border_style="line" + border_thickness="1" + follows="left|top|right" + height="16" + layout="topleft" + left_pad="2" + max_length="25" + name="Edit Cost" + top_delta="0" + width="75" /> + <radio_group + draw_border="false" + follows="left|top|right" + height="16" + layout="topleft" + left="42" + name="sale type" + top="270" + width="218"> + <radio_item + height="16" + label="Original" + layout="topleft" + left="0" + name="Original" + top="0" + width="70" /> + <radio_item + height="16" + label="Copy" + layout="topleft" + left_delta="70" + name="Copy" + top_delta="0" + width="70" /> + <radio_item + height="16" + label="Contents" + layout="topleft" + left_delta="70" + name="Contents" + top_delta="0" + width="76" /> + </radio_group> + <text + type="string" + length="1" + follows="left|top|right" + height="10" + layout="topleft" + left="10" + name="Next owner can:" + top="288" + width="250"> + Next owner can: + </text> + <check_box + follows="left|top|right" + height="16" + label="Modify" + layout="topleft" + left_delta="0" + name="checkbox next owner can modify" + top_pad="6" + width="250" /> + <check_box + follows="left|top|right" + height="16" + label="Copy" + layout="topleft" + left_delta="60" + name="checkbox next owner can copy" + top_delta="0" + width="190" /> + <check_box + follows="left|top|right" + height="16" + label="Resell/Give away" + layout="topleft" + left_delta="60" + name="checkbox next owner can transfer" + top_delta="0" + width="130" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="10" + name="label click action" + top="322" + width="150"> + When Left-Clicked: + </text> + <combo_box + height="18" + layout="topleft" + left_delta="0" + name="clickaction" + top_pad="7" + width="150"> + <combo_box.item + label="Touch/grab (default)" + value="Touch/grab (default)" /> + <combo_box.item + label="Sit on object" + value="Sit on object" /> + <combo_box.item + label="Buy object" + value="Buy object" /> + <combo_box.item + label="Pay object" + value="Pay object" /> + <combo_box.item + label="Open" + value="Open" /> + <combo_box.item + label="Play parcel media" + value="Play" /> + <combo_box.item + label="Open parcel media" + value="Open Media" /> + </combo_box> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="88" + name="B:" + top="105" + width="174"> + B: + </text> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_delta="50" + name="O:" + top_delta="0" + width="124"> + O; + </text> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_delta="50" + name="G:" + top_delta="0" + width="74"> + G: + </text> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="88" + name="E:" + top="117" + width="174"> + E: + </text> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_delta="50" + name="N:" + top_delta="0" + width="124"> + N: + </text> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_delta="50" + name="F:" + top_delta="0" + width="74"> + F: + </text> + </panel> + <panel + border="true" + follows="left|top|right|bottom" + height="367" + label="Object" + layout="topleft" + left_delta="0" + mouse_opaque="false" + name="Object" + top_delta="0" + width="270"> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="10" + name="select_single" + top="10" + width="252"> + Select only one primitive to edit parameters. + </text> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_delta="0" + name="edit_object" + top_delta="0" + width="252"> + Edit object parameters: + </text> + <check_box + height="16" + label="Locked" + layout="topleft" + left_delta="-2" + name="checkbox locked" + tool_tip="Prevents object from being moved or deleted. Frequently useful during building to avoid unintended edits." + top_pad="10" + width="123" /> + <check_box + height="16" + label="Physical" + layout="topleft" + left_delta="0" + name="Physical Checkbox Ctrl" + tool_tip="Allows object to be pushed and affected by gravity" + top_pad="2" + width="123" /> + <check_box + height="16" + label="Temporary" + layout="topleft" + left_delta="0" + name="Temporary Checkbox Ctrl" + tool_tip="Causes object to be deleted 1 minute after creation." + top_pad="2" + width="123" /> + <check_box + height="16" + label="Phantom" + layout="topleft" + left_delta="0" + name="Phantom Checkbox Ctrl" + tool_tip="Causes object to not collide with other objects or avatars" + top_pad="2" + width="123" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_delta="2" + name="label position" + top_pad="4" + width="121"> + Position (meters) + </text> + <spinner + follows="left|top" + height="16" + increment="0.01" + initial_value="0" + label="X" + label_width="10" + layout="topleft" + left_delta="0" + max_val="512" + min_val="-256" + name="Pos X" + text_enabled_color="0.43 0.06 0.06 1" + top_pad="4" + width="87" /> + <spinner + follows="left|top" + height="16" + increment="0.01" + initial_value="0" + label="Y" + label_width="10" + layout="topleft" + left_delta="0" + max_val="512" + min_val="-256" + name="Pos Y" + text_enabled_color="0 0.39 0.15 1" + top_pad="2" + width="87" /> + <spinner + follows="left|top" + height="16" + increment="0.01" + initial_value="0" + label="Z" + label_width="10" + layout="topleft" + left_delta="0" + max_val="4096" + name="Pos Z" + text_enabled_color="0 0.26 0.51 1" + top_pad="2" + width="87" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_delta="0" + name="label size" + top_pad="6" + width="121"> + Size (meters) + </text> + <spinner + follows="left|top" + height="16" + increment="0.01" + initial_value="0" + label="X" + label_width="10" + layout="topleft" + left_delta="0" + max_val="10" + min_val="0.01" + name="Scale X" + text_enabled_color="1 1 1 1" + top_pad="4" + width="87" /> + <spinner + follows="left|top" + height="16" + increment="0.01" + initial_value="0" + label="Y" + label_width="10" + layout="topleft" + left_delta="0" + max_val="10" + min_val="0.01" + name="Scale Y" + text_enabled_color="1 1 1 1" + top_pad="2" + width="87" /> + <spinner + follows="left|top" + height="16" + increment="0.01" + initial_value="0" + label="Z" + label_width="10" + layout="topleft" + left_delta="0" + max_val="10" + min_val="0.01" + name="Scale Z" + text_enabled_color="1 1 1 1" + top_pad="2" + width="87" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_delta="0" + name="label rotation" + top_pad="6" + width="121"> + Rotation (degrees) + </text> + <spinner + decimal_digits="2" + follows="left|top" + height="16" + increment="1" + initial_value="0" + label="X" + label_width="10" + layout="topleft" + left_delta="0" + max_val="9999" + min_val="-9999" + name="Rot X" + text_enabled_color="1 1 1 1" + top_pad="6" + width="87" /> + <spinner + decimal_digits="2" + follows="left|top" + height="16" + increment="1" + initial_value="0" + label="Y" + label_width="10" + layout="topleft" + left_delta="0" + max_val="9999" + min_val="-9999" + name="Rot Y" + text_enabled_color="1 1 1 1" + top_pad="2" + width="87" /> + <spinner + decimal_digits="2" + follows="left|top" + height="16" + increment="1" + initial_value="0" + label="Z" + label_width="10" + layout="topleft" + left_delta="0" + max_val="9999" + min_val="-9999" + name="Rot Z" + text_enabled_color="1 1 1 1" + top_pad="2" + width="87" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_delta="0" + name="label material" + top_pad="6" + width="121"> + Material + </text> + <combo_box + height="18" + layout="topleft" + left_delta="0" + name="material" + top_pad="4" + width="87"> + <combo_box.item + label="Stone" + value="Stone" /> + <combo_box.item + label="Metal" + value="Metal" /> + <combo_box.item + label="Glass" + value="Glass" /> + <combo_box.item + label="Wood" + value="Wood" /> + <combo_box.item + label="Flesh" + value="Flesh" /> + <combo_box.item + label="Plastic" + value="Plastic" /> + <combo_box.item + label="Rubber" + value="Rubber" /> + </combo_box> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="121" + name="label basetype" + top="26" + width="141"> + Building Block Type + </text> + <combo_box + height="18" + layout="topleft" + left_delta="0" + name="comboBaseType" + top_pad="6" + width="141"> + <combo_box.item + label="Box" + value="Box" /> + <combo_box.item + label="Cylinder" + value="Cylinder" /> + <combo_box.item + label="Prism" + value="Prism" /> + <combo_box.item + label="Sphere" + value="Sphere" /> + <combo_box.item + label="Torus" + value="Torus" /> + <combo_box.item + label="Tube" + value="Tube" /> + <combo_box.item + label="Ring" + value="Ring" /> + <combo_box.item + label="Sculpted" + value="Sculpted" /> + </combo_box> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_delta="0" + name="text cut" + top_pad="2" + width="141"> + Path Cut Begin and End + </text> + <spinner + follows="left|top" + height="16" + increment="0.025" + initial_value="0" + label="B" + label_width="10" + layout="topleft" + left_delta="0" + max_val="0.98" + name="cut begin" + top_pad="6" + width="68" /> + <spinner + follows="left|top" + height="16" + increment="0.025" + initial_value="1" + label="E" + label_width="10" + layout="topleft" + left_pad="5" + min_val="0.02" + name="cut end" + top_delta="0" + width="68" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="121" + name="text hollow" + top="98" + width="68"> + Hollow + </text> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_pad="10" + name="text skew" + top_delta="0" + width="63"> + Skew + </text> + <spinner + decimal_digits="1" + follows="left|top" + height="16" + increment="5" + initial_value="0" + layout="topleft" + left="121" + max_val="95" + name="Scale 1" + top="112" + width="68" /> + <spinner + decimal_digits="2" + follows="left|top" + height="16" + increment="0.05" + initial_value="0" + layout="topleft" + left_pad="5" + max_val="0.95" + min_val="-0.95" + name="Skew" + top_delta="0" + width="68" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="121" + name="Hollow Shape" + top="133" + width="141"> + Hollow Shape + </text> + <combo_box + height="18" + layout="topleft" + left_delta="0" + name="hole" + top_pad="6" + width="141"> + <combo_box.item + label="Default" + value="Default" /> + <combo_box.item + label="Circle" + value="Circle" /> + <combo_box.item + label="Square" + value="Square" /> + <combo_box.item + label="Triangle" + value="Triangle" /> + </combo_box> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_delta="0" + name="text twist" + top_pad="2" + width="141"> + Twist Begin and End + </text> + <spinner + decimal_digits="0" + follows="left|top" + height="16" + increment="9" + initial_value="0" + label="B" + label_width="10" + layout="topleft" + left_delta="0" + max_val="180" + min_val="-180" + name="Twist Begin" + top_pad="6" + width="68" /> + <spinner + decimal_digits="0" + follows="left|top" + height="16" + increment="9" + initial_value="0" + label="E" + label_width="10" + layout="topleft" + left_pad="5" + max_val="180" + min_val="-180" + name="Twist End" + top_delta="0" + width="68" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="121" + name="scale_taper" + top="205" + width="141"> + Taper + </text> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_delta="0" + name="scale_hole" + top_delta="0" + width="141"> + Hole Size + </text> + <spinner + decimal_digits="2" + follows="left|top" + height="16" + increment="0.05" + initial_value="0" + label="X" + label_width="10" + layout="topleft" + left_delta="0" + min_val="-1" + name="Taper Scale X" + top_pad="4" + width="68" /> + <spinner + decimal_digits="2" + follows="left|top" + height="16" + increment="0.05" + initial_value="0" + label="Y" + label_width="10" + layout="topleft" + left_pad="5" + min_val="-1" + name="Taper Scale Y" + top_delta="0" + width="68" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="121" + name="text topshear" + top="239" + width="141"> + Top Shear + </text> + <spinner + decimal_digits="2" + follows="left|top" + height="16" + increment="0.05" + initial_value="0" + label="X" + label_width="10" + layout="topleft" + left_delta="0" + max_val="0.5" + min_val="-0.5" + name="Shear X" + top_pad="4" + width="68" /> + <spinner + decimal_digits="2" + follows="left|top" + height="16" + increment="0.05" + initial_value="0" + label="Y" + label_width="10" + layout="topleft" + left_pad="5" + max_val="0.5" + min_val="-0.5" + name="Shear Y" + top_delta="0" + width="68" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="121" + name="advanced_cut" + top="273" + width="141"> + Profile Cut Begin and End + </text> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_delta="0" + name="advanced_dimple" + top_delta="0" + width="141"> + Dimple Begin and End + </text> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_delta="0" + name="advanced_slice" + top_delta="0" + width="141"> + Slice Begin and End + </text> + <spinner + follows="left|top" + height="16" + increment="0.025" + initial_value="0" + label="B" + label_width="10" + layout="topleft" + left_delta="0" + max_val="0.95" + name="Path Limit Begin" + top_pad="3" + width="68" /> + <spinner + follows="left|top" + height="16" + increment="0.025" + initial_value="1" + label="E" + label_width="10" + layout="topleft" + left_pad="5" + min_val="0.05" + name="Path Limit End" + top_delta="0" + width="68" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="121" + name="text taper2" + top="306" + width="141"> + Taper + </text> + <spinner + decimal_digits="2" + follows="left|top" + height="16" + increment="0.05" + initial_value="0" + label="X" + label_width="10" + layout="topleft" + left_delta="0" + min_val="-1" + name="Taper X" + top_pad="3" + width="68" /> + <spinner + decimal_digits="2" + follows="left|top" + height="16" + increment="0.05" + initial_value="0" + label="Y" + label_width="10" + layout="topleft" + left_pad="5" + min_val="-1" + name="Taper Y" + top_delta="0" + width="68" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="121" + name="text radius delta" + top="337" + width="78"> + Radius + </text> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_delta="73" + name="text revolutions" + top_delta="0" + width="68"> + Revolutions + </text> + <spinner + follows="left|top" + height="16" + increment="0.05" + initial_value="0" + layout="topleft" + left="121" + min_val="-1" + name="Radius Offset" + top="350" + width="68" /> + <spinner + decimal_digits="2" + follows="left|top" + height="16" + initial_value="1" + layout="topleft" + left_pad="5" + max_val="4" + min_val="1" + name="Revolutions" + top_delta="0" + width="68" /> + <texture_picker + can_apply_immediately="true" + default_image_name="Default" + follows="left|top" + height="141" + label="Sculpt Texture" + layout="topleft" + left="121" + name="sculpt texture control" + tool_tip="Click to choose a picture" + top="70" + visible="false" + width="141" /> + <check_box + height="16" + label="Mirror" + layout="topleft" + left_delta="0" + name="sculpt mirror control" + tool_tip="Flips sculpted prim along the X axis." + top_pad="8" + visible="false" + width="121" /> + <check_box + height="16" + label="Inside-out" + layout="topleft" + left_delta="0" + name="sculpt invert control" + tool_tip="Inverts the sculpted prims normals, making it appear inside-out." + top_pad="4" + visible="false" + width="121" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_delta="0" + name="label sculpt type" + top_pad="10" + visible="false" + width="121"> + Stitching type + </text> + <combo_box + height="18" + layout="topleft" + left_delta="0" + name="sculpt type control" + top_pad="6" + visible="false" + width="141"> + <combo_box.item + label="none)" + value="None" /> + <combo_box.item + label="Sphere" + value="Sphere" /> + <combo_box.item + label="Torus" + value="Torus" /> + <combo_box.item + label="Plane" + value="Plane" /> + <combo_box.item + label="Cylinder" + value="Cylinder" /> + </combo_box> + </panel> + <panel + border="true" + follows="left|top|right|bottom" + height="367" + label="Features" + layout="topleft" + left_delta="0" + mouse_opaque="false" + name="Features" + top_delta="0" + width="270"> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="10" + name="select_single" + top="10" + width="252"> + Select only one primitive to edit features. + </text> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_delta="0" + name="edit_object" + top_delta="0" + width="252"> + Edit object features: + </text> + <check_box + height="16" + label="Flexible Path" + layout="topleft" + left_delta="0" + name="Flexible1D Checkbox Ctrl" + tool_tip="Allows object to flex about the Z axis. (Client-side only)" + top_pad="10" + width="121" /> + <spinner + follows="left|top" + height="16" + increment="1" + initial_value="2" + label="Softness" + label_width="65" + layout="topleft" + left_delta="0" + max_val="3" + name="FlexNumSections" + top_pad="4" + width="128" /> + <spinner + follows="left|top" + height="16" + increment="0.5" + initial_value="0.3" + label="Gravity" + label_width="65" + layout="topleft" + left_delta="0" + max_val="10" + min_val="-10" + name="FlexGravity" + top_pad="4" + width="128" /> + <spinner + follows="left|top" + height="16" + increment="0.5" + initial_value="2" + label="Drag" + label_width="65" + layout="topleft" + left_delta="0" + max_val="10" + name="FlexFriction" + top_pad="4" + width="128" /> + <spinner + follows="left|top" + height="16" + increment="0.5" + initial_value="0" + label="Wind" + label_width="65" + layout="topleft" + left_delta="0" + max_val="10" + name="FlexWind" + top_pad="4" + width="128" /> + <spinner + follows="left|top" + height="16" + increment="0.5" + initial_value="1" + label="Tension" + label_width="65" + layout="topleft" + left_delta="0" + max_val="10" + name="FlexTension" + top_pad="4" + width="128" /> + <spinner + follows="left|top" + height="16" + increment="0.01" + initial_value="0" + label="Force X" + label_width="65" + layout="topleft" + left_delta="0" + max_val="10" + min_val="-10" + name="FlexForceX" + top_pad="4" + width="128" /> + <spinner + follows="left|top" + height="16" + increment="0.01" + initial_value="0" + label="Force Y" + label_width="65" + layout="topleft" + left_delta="0" + max_val="10" + min_val="-10" + name="FlexForceY" + top_pad="4" + width="128" /> + <spinner + follows="left|top" + height="16" + increment="0.01" + initial_value="0" + label="Force Z" + label_width="65" + layout="topleft" + left_delta="0" + max_val="10" + min_val="-10" + name="FlexForceZ" + top_pad="4" + width="128" /> + <check_box + height="16" + label="Light" + layout="topleft" + left_delta="0" + name="Light Checkbox Ctrl" + tool_tip="Causes object to emit light" + top_pad="14" + width="121" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_delta="0" + name="label color" + top_pad="11" + width="58"> + Color + </text> + <color_swatch + border_color="0.45098 0.517647 0.607843 1" + can_apply_immediately="true" + color="0.5 0.5 0.5 1" + follows="left|top" + height="48" + layout="topleft" + left_delta="67" + name="colorswatch" + tool_tip="Click to open Color Picker" + top="237" + width="32" /> + <spinner + follows="left|top" + height="16" + initial_value="0.5" + label="Intensity" + label_width="65" + layout="topleft" + left="10" + name="Light Intensity" + top="273" + width="128" /> + <spinner + follows="left|top" + height="16" + initial_value="5" + label="Radius" + label_width="65" + layout="topleft" + left_delta="0" + max_val="20" + name="Light Radius" + top_pad="4" + width="128" /> + <spinner + follows="left|top" + height="16" + increment="0.25" + initial_value="1" + label="Falloff" + label_width="65" + layout="topleft" + left_delta="0" + max_val="2" + name="Light Falloff" + top_pad="4" + width="128" /> + </panel> + <panel + border="true" + follows="left|top|right|bottom" + height="367" + label="Texture" + layout="topleft" + left_delta="0" + mouse_opaque="false" + name="Texture" + top_delta="0" + width="270"> + <panel.string + name="string repeats per meter"> + Repeats Per Meter + </panel.string> + <panel.string + name="string repeats per face"> + Repeats Per Face + </panel.string> + <texture_picker + can_apply_immediately="true" + default_image_name="Default" + follows="left|top" + height="80" + label="Texture" + layout="topleft" + left="10" + name="texture control" + tool_tip="Click to choose a picture" + top="10" + width="64" /> + <color_swatch + border_color="0.45098 0.517647 0.607843 1" + can_apply_immediately="true" + follows="left|top" + height="80" + label="Color" + layout="topleft" + left_pad="26" + name="colorswatch" + tool_tip="Click to open Color Picker" + top_delta="0" + width="64" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="180" + name="color trans" + top="1" + width="80"> + Transparency % + </text> + <spinner + decimal_digits="0" + follows="left|top" + height="16" + increment="2" + initial_value="0" + layout="topleft" + left_delta="0" + max_val="90" + name="ColorTrans" + top_pad="4" + width="80" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_delta="0" + name="glow label" + top_pad="2" + width="80"> + Glow + </text> + <spinner + decimal_digits="2" + follows="left|top" + height="16" + initial_value="0" + layout="topleft" + left_delta="0" + name="glow" + top_pad="4" + width="80" /> + <check_box + height="16" + label="Full Bright" + layout="topleft" + left_delta="0" + name="checkbox fullbright" + top_pad="7" + width="81" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="10" + name="tex gen" + top="94" + width="90"> + Mapping + </text> + <combo_box + height="18" + layout="topleft" + left_delta="0" + name="combobox texgen" + top_pad="4" + width="80"> + <combo_box.item + label="Default" + value="Default" /> + <combo_box.item + label="Planar" + value="Planar" /> + </combo_box> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="100" + name="label shininess" + top="94" + width="70"> + Shininess + </text> + <combo_box + height="18" + layout="topleft" + left_delta="0" + name="combobox shininess" + top_pad="4" + width="70"> + <combo_box.item + label="None" + value="None" /> + <combo_box.item + label="Low" + value="Low" /> + <combo_box.item + label="Medium" + value="Medium" /> + <combo_box.item + label="High" + value="High" /> + </combo_box> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="180" + name="label bumpiness" + top="94" + width="80"> + Bumpiness + </text> + <combo_box + height="18" + layout="topleft" + left_delta="0" + name="combobox bumpiness" + top_pad="4" + width="80"> + <combo_box.item + label="None" + value="None" /> + <combo_box.item + label="Brightness" + value="Brightness" /> + <combo_box.item + label="Darkness" + value="Darkness" /> + <combo_box.item + label="woodgrain" + value="woodgrain" /> + <combo_box.item + label="bark" + value="bark" /> + <combo_box.item + label="bricks" + value="bricks" /> + <combo_box.item + label="checker" + value="checker" /> + <combo_box.item + label="concrete" + value="concrete" /> + <combo_box.item + label="crustytile" + value="crustytile" /> + <combo_box.item + label="cutstone" + value="cutstone" /> + <combo_box.item + label="discs" + value="discs" /> + <combo_box.item + label="gravel" + value="gravel" /> + <combo_box.item + label="petridish" + value="petridish" /> + <combo_box.item + label="siding" + value="siding" /> + <combo_box.item + label="stonetile" + value="stonetile" /> + <combo_box.item + label="stucco" + value="stucco" /> + <combo_box.item + label="suction" + value="suction" /> + <combo_box.item + label="weave" + value="weave" /> + </combo_box> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="10" + name="tex scale" + top="148" + width="160"> + Repeats per Face + </text> + <spinner + follows="left|top" + height="16" + initial_value="0" + label="Horizontal (U)" + label_width="90" + layout="topleft" + left="20" + max_val="100" + name="TexScaleU" + top="162" + width="160" /> + <check_box + height="16" + label="Flip" + layout="topleft" + left_pad="10" + name="checkbox flip s" + top_delta="1" + width="70" /> + <spinner + follows="left|top" + height="16" + initial_value="0" + label="Vertical (V)" + label_width="90" + layout="topleft" + left="20" + max_val="100" + name="TexScaleV" + top="180" + width="160" /> + <check_box + height="16" + label="Flip" + layout="topleft" + left_pad="10" + name="checkbox flip t" + top_delta="1" + width="70" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="10" + name="tex rotate" + top="218" + width="102"> + Rotation (degrees) + </text> + <spinner + decimal_digits="2" + follows="left|top" + height="16" + increment="1" + initial_value="0" + layout="topleft" + left_delta="102" + max_val="9999" + min_val="-9999" + name="TexRot" + top_delta="0" + width="68" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="10" + name="rpt" + top="240" + width="160"> + Repeats Per Meter + </text> + <spinner + decimal_digits="1" + follows="left|top" + height="16" + initial_value="1" + layout="topleft" + left_delta="102" + max_val="10" + min_val="0.1" + name="rptctrl" + top_delta="0" + width="68" /> + <button + follows="left|top" + font="SansSerifSmall" + height="20" + label="Apply" + label_selected="Apply" + layout="topleft" + left_pad="10" + name="button apply" + top_delta="-4" + width="75" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="10" + name="tex offset" + top="278" + width="160"> + Offset + </text> + <spinner + follows="left|top" + height="16" + initial_value="0" + label="Horizontal (U)" + label_width="90" + layout="topleft" + left="20" + min_val="-1" + name="TexOffsetU" + top="292" + width="160" /> + <spinner + follows="left|top" + height="16" + initial_value="0" + label="Vertical (V)" + label_width="90" + layout="topleft" + left_delta="0" + min_val="-1" + name="TexOffsetV" + top_pad="2" + width="160" /> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left="10" + name="textbox autofix" + top="332" + width="160"> + Align media texture +(must load first) + </text> + <button + follows="left|top" + font="SansSerifSmall" + height="20" + label="Align" + label_selected="Align" + layout="topleft" + left="112" + name="button align" + top="340" + width="68" /> + </panel> + <panel + border="true" + follows="left|top|right|bottom" + height="367" + label="Content" + layout="topleft" + left_delta="0" + mouse_opaque="false" + name="Contents" + top_delta="0" + width="270"> + <button + follows="left|top" + height="20" + label="New Script" + label_selected="New Script..." + layout="topleft" + left="10" + name="button new script" + top="10" + width="100" /> + <button + follows="left|top" + height="20" + label="Permissions..." + layout="topleft" + left_pad="10" + name="button permissions" + top_delta="0" + width="100" /> + <panel_inventory + follows="left|top" + height="325" + layout="topleft" + left="10" + name="contents_inventory" + top="35" + width="252" /> + </panel> + </tab_container> + <panel + follows="left|top" + height="384" + layout="topleft" + left_delta="0" + name="land info panel" + top_delta="0" + width="272"> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="40" + name="label_parcel_info" + top="24" + width="150"> + Parcel Information + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="48" + name="label_area_price" + top="48" + width="150"> + Price: L$[PRICE] for [AREA] sq. m. + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_delta="0" + name="label_area" + top_delta="0" + width="150"> + Area: [AREA] sq. m. + </text> + <button + follows="left|top" + height="20" + label="About Land..." + label_selected="About Land..." + layout="topleft" + left_delta="0" + name="button about land" + top_pad="4" + width="112" /> + <check_box + control_name="ShowParcelOwners" + height="16" + label="Show owners" + layout="topleft" + left_delta="0" + name="checkbox show owners" + tool_tip="Colour parcels according to their ownership" + top_pad="8" + width="100" /> + <button + follows="left|top" + height="18" + label="?" + label_selected="?" + layout="topleft" + left_delta="94" + name="button show owners help" + top_delta="-2" + width="18" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="40" + name="label_parcel_modify" + top="152" + width="150"> + Modify Parcel + </text> + <button + follows="left|top" + height="20" + label="Subdivide..." + label_selected="Subdivide..." + layout="topleft" + left="48" + name="button subdivide land" + top="172" + width="112" /> + <button + follows="left|top" + height="20" + label="Join..." + label_selected="Join..." + layout="topleft" + left_delta="0" + name="button join land" + top_pad="4" + width="112" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="40" + name="label_parcel_trans" + top="256" + width="150"> + Land Transactions + </text> + <button + follows="left|top" + height="20" + label="Buy Land..." + label_selected="Buy Land..." + layout="topleft" + left="48" + name="button buy land" + top="276" + width="112" /> + <button + follows="left|top" + height="20" + label="Abandon Land..." + label_selected="Abandon Land..." + layout="topleft" + left_delta="0" + name="button abandon land" + top_pad="4" + width="112" /> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_top_objects.xml b/indra/newview/skins/default/xui/en/floater_top_objects.xml new file mode 100644 index 0000000000000000000000000000000000000000..20e39beb6fa6681e5d7bf5287abb4254b354db96 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_top_objects.xml @@ -0,0 +1,224 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_resize="true" + height="350" + layout="topleft" + min_height="300" + min_width="450" + name="top_objects" + title="loading..." + width="550"> + <floater.string + name="top_scripts_title"> + Top Scripts + </floater.string> + <floater.string + name="top_scripts_text"> + [COUNT] scripts taking a total of [TIME] ms + </floater.string> + <floater.string + name="scripts_score_label"> + Time + </floater.string> + <floater.string + name="scripts_mono_time_label"> + Mono Time + </floater.string> + <floater.string + name="top_colliders_title"> + Top Colliders + </floater.string> + <floater.string + name="top_colliders_text"> + Top [COUNT] objects experiencing many potential collisions + </floater.string> + <floater.string + name="colliders_score_label"> + Score + </floater.string> + <floater.string + name="none_descriptor"> + None found. + </floater.string> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="20" + layout="topleft" + left="10" + name="title_text" + top="30" + width="400"> + Loading... + </text> + <scroll_list + draw_heading="true" + follows="left|top|bottom|right" + height="150" + layout="topleft" + left_delta="0" + multi_select="true" + name="objects_list" + top_delta="20" + width="530"> + <scroll_list.columns + label="Score" + name="score" + width="55" /> + <scroll_list.columns + label="Name" + name="name" + width="140" /> + <scroll_list.columns + label="Owner" + name="owner" + width="105" /> + <scroll_list.columns + label="Location" + name="location" + width="130" /> + <scroll_list.columns + label="Time" + name="time" + width="100" /> + <scroll_list.columns + label="Mono Time" + name="mono_time" + width="55" /> + </scroll_list> + <text + type="string" + length="1" + follows="left|bottom" + height="20" + layout="topleft" + left_delta="0" + name="id_text" + top_pad="10" + width="100"> + Object ID: + </text> + <line_editor + enabled="false" + follows="left|bottom|right" + height="20" + layout="topleft" + left_delta="70" + name="id_editor" + top_delta="-3" + width="350" /> + <button + follows="bottom|right" + height="20" + label="Show Beacon" + layout="topleft" + left_pad="10" + name="show_beacon_btn" + top_delta="0" + width="100" /> + <text + type="string" + length="1" + follows="left|bottom" + height="20" + layout="topleft" + left="10" + name="obj_name_text" + top="237" + width="100"> + Object Name: + </text> + <line_editor + follows="left|bottom|right" + height="20" + layout="topleft" + left_delta="70" + name="object_name_editor" + top_delta="-3" + width="350" /> + <button + follows="bottom|right" + height="20" + label="Filter" + layout="topleft" + left_pad="10" + name="filter_object_btn" + top_delta="0" + width="100" /> + <text + type="string" + length="1" + follows="left|bottom" + height="20" + layout="topleft" + left="10" + name="owner_name_text" + top="264" + width="100"> + Owner Name: + </text> + <line_editor + follows="left|bottom|right" + height="20" + layout="topleft" + left_delta="70" + name="owner_name_editor" + top_delta="-3" + width="350" /> + <button + follows="bottom|right" + height="20" + label="Filter" + layout="topleft" + left_pad="10" + name="filter_owner_btn" + top_delta="0" + width="100" /> + <button + follows="bottom|left" + height="20" + label="Return Selected" + layout="topleft" + left="10" + name="return_selected_btn" + top="295" + width="130" /> + <button + follows="bottom|left" + height="20" + label="Return All" + layout="topleft" + left_pad="10" + name="return_all_btn" + top_delta="0" + width="130" /> + <button + follows="bottom|left" + height="20" + label="Disable Selected" + layout="topleft" + left="10" + name="disable_selected_btn" + top="320" + width="130" /> + <button + follows="bottom|left" + height="20" + label="Disable All" + layout="topleft" + left_pad="10" + name="disable_all_btn" + top_delta="0" + width="130" /> + <button + bottom="315" + follows="bottom|right" + height="20" + label="Refresh" + layout="topleft" + name="refresh_btn" + right="-10" + width="100" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_tos.xml b/indra/newview/skins/default/xui/en/floater_tos.xml new file mode 100644 index 0000000000000000000000000000000000000000..6585667c8b63b2428481ed86d9bd15bf02e59b33 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_tos.xml @@ -0,0 +1,79 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_close="false" + can_minimize="false" + height="500" + layout="topleft" + name="modal container" + width="600"> + <floater.string + name="real_url"> + http://secondlife.com/app/tos/ + </floater.string> + <button + enabled="false" + height="20" + label="Continue" + label_selected="Continue" + layout="topleft" + left="484" + name="Continue" + top="464" + width="100" /> + <button + height="20" + label="Cancel" + label_selected="Cancel" + layout="topleft" + left_delta="-468" + name="Cancel" + top_delta="0" + width="100" /> + <check_box + follows="top|right" + height="16" + label="I Agree to the Terms of Service" + layout="topleft" + left_delta="0" + name="agree_chk" + top_delta="-45" + width="55" /> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="30" + layout="topleft" + left_delta="0" + name="tos_heading" + top_delta="-399" + width="552"> + Please read the following Terms of Service carefully. To continue logging in to Second Life, +you must accept the agreement. + </text> + <text_editor + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="283" + layout="topleft" + left_delta="0" + max_length="65536" + name="tos_text" + top_pad="43" + width="568" + word_wrap="true"> + TOS_TEXT + </text_editor> + <web_browser + follows="left|top" + height="340" + layout="topleft" + left_delta="0" + name="tos_html" + start_url="data:text/html,%3Chtml%3E%3Chead%3E%3C/head%3E%3Cbody text=%22000000%22%3E%3Ch2%3E Loading %3Ca%20target%3D%22_external%22%20href%3D%22http%3A//secondlife.com/app/tos/%22%3ETerms%20of%20Service%3C/a%3E...%3C/h2%3E %3C/body%3E %3C/html%3E" + top_delta="-27" + width="568" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_ui_preview.xml b/indra/newview/skins/default/xui/en/floater_ui_preview.xml new file mode 100644 index 0000000000000000000000000000000000000000..10968364f3a9548e70e1c534e6fcaa9c30efe44a --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_ui_preview.xml @@ -0,0 +1,381 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_resize="true" + height="640" + layout="topleft" + min_height="230" + min_width="650" + name="gui_preview_tool" + single_instance="true" + title="XUI Preview Tool" + width="750"> + <panel + bottom="640" + follows="left|top|right|bottom" + layout="topleft" + left="0" + mouse_opaque="false" + name="main_panel" + right="650" + top="0"> + <text + type="string" + length="1" + follows="top|left" + font="SansSerif" + height="30" + layout="topleft" + left="10" + name="select_language_label" + top="25" + width="130"> + Primary Language: + </text> + <combo_box + follows="top|left" + height="20" + layout="topleft" + left_pad="5" + name="language_select_combo" + top_delta="0" + width="55"> + <combo_box.item + label="en" + value="en" /> + </combo_box> + <button + follows="left|top" + height="25" + label="Display Floater" + label_selected="Display Floater" + layout="topleft" + left_pad="10" + name="display_floater" + tool_tip="Display the XUI floater defined by the selected XML file" + top_delta="-2" + width="95" /> + <button + enabled="false" + follows="left|top" + height="25" + label="Close Floater" + label_selected="Close Floater" + layout="topleft" + left_pad="10" + name="close_displayed_floater" + tool_tip="Closes the currently-displayed floater, if one exists" + top_delta="0" + width="85" /> + <button + follows="left|top" + height="25" + label="Edit Floater..." + label_selected="Edit Floater..." + layout="topleft" + left_pad="10" + name="edit_floater" + tool_tip="Edit the XUI floater defined by the selected XML file (opens external editor). Opens en version if no localized version exists." + top_delta="0" + width="95" /> + <button + follows="left|top" + height="25" + label="Save" + label_selected="Save" + layout="topleft" + left_pad="5" + name="save_floater" + tool_tip="Save the XUI floater defined by the selected XML file" + top_delta="0" + width="85" /> + <button + follows="left|top" + height="25" + label="Save All" + label_selected="Save All" + layout="topleft" + left_pad="10" + name="save_all_floaters" + tool_tip="Save all XUI floaters defined by the selected language" + top_delta="0" + width="85" /> + <button + enabled="false" + follows="right|top" + height="25" + is_toggle="true" + label="> >" + label_selected="< <" + layout="topleft" + left_pad="15" + name="toggle_overlap_panel" + tool_tip="Toggle highlighting and display panel for overlapping elements; right click an element to select it for this feature. The selected element is marked by a red rectangle." + top_delta="0" + width="30" /> + <text + type="string" + length="1" + follows="top|left" + font="SansSerif" + height="30" + layout="topleft" + left="10" + name="select_language_label_2" + right="-50" + top="53" + width="105"> + Secondary Language: + </text> + <combo_box + follows="top|left" + height="20" + layout="topleft" + left_delta="135" + name="language_select_combo_2" + top_delta="0" + width="55"> + <combo_box.item + label="en" + value="en" /> + </combo_box> + <button + follows="left|top" + height="25" + label="Display Floater" + label_selected="Display Floater" + layout="topleft" + left_pad="10" + name="display_floater_2" + tool_tip="Display the XUI floater defined by the selected XML file" + top_delta="-2" + width="95" /> + <button + enabled="false" + follows="left|top" + height="25" + label="Close Floater" + label_selected="Close Floater" + layout="topleft" + left_pad="10" + name="close_displayed_floater_2" + tool_tip="Closes the currently-displayed floater, if one exists" + top_delta="0" + width="85" /> + <scroll_list + bottom="525" + column_padding="0" + draw_heading="true" + draw_stripes="false" + follows="left|top|bottom|right" + label="Name" + layout="topleft" + left="10" + name="name_list" + right="-10" + search_column="1" + top="80"> + <scroll_list.columns + label="Title" + name="title_column" + width="150" /> + <scroll_list.columns + label="File" + name="file_column" + width="150" /> + <scroll_list.columns + dynamicwidth="true" + label="Top-Level Node" + name="top_level_node_column" /> + </scroll_list> + <panel + bevel_style="in" + bg_alpha_color="0 0 0 0" + bg_opaque_color="0 0 0 0.3" + border="true" + bottom_delta="65" + follows="left|right|bottom" + height="60" + layout="topleft" + left="10" + name="editor_panel" + right="-10"> + <text + type="string" + length="1" + follows="left|bottom" + font="SansSerif" + height="30" + layout="topleft" + left="10" + left_delta="10" + name="editor_path_label" + top="10" + width="100"> + Editor Path: + </text> + <line_editor + border_style="line" + border_thickness="1" + follows="left|bottom" + font="SansSerif" + handle_edit_keys_directly="true" + height="20" + layout="topleft" + left_delta="100" + max_length="300" + name="executable_path_field" + select_on_focus="true" + tool_tip="The full path to an editor (executable) to edit floater XML files (quotes not necessary)" + top_delta="-2" + width="315" /> + <button + follows="left|bottom" + height="25" + label="Browse..." + label_selected="Browse..." + layout="topleft" + left_pad="5" + name="browse_for_executable" + tool_tip="Browse for an editor (executable) to edit floater XML files" + top_delta="-2" + width="75" /> + <text + type="string" + length="1" + follows="left|bottom" + font="SansSerif" + height="30" + layout="topleft" + left="10" + left_delta="-420" + name="executable_args_label" + top="36" + width="100"> + Editor Arguments: + </text> + <line_editor + border_style="line" + border_thickness="1" + follows="left|bottom" + font="SansSerif" + handle_edit_keys_directly="true" + height="20" + layout="topleft" + left_delta="100" + max_length="300" + name="executable_args_field" + select_on_focus="true" + tool_tip="Command-line arguments to the editor; use '%FILE%' to refer to the target file; 'YourProgram.exe FileName.xml' will be run if this field is empty" + top_delta="-2" + width="315" /> + </panel> + <panel + bevel_style="in" + bg_alpha_color="0 0 0 0" + bg_opaque_color="0 0 0 0.3" + border="true" + bottom_delta="40" + follows="left|right|bottom" + height="35" + layout="topleft" + left="10" + name="vlt_panel" + right="-10"> + <text + type="string" + length="1" + follows="left|bottom" + font="SansSerif" + height="30" + layout="topleft" + left="10" + left_delta="10" + name="diff_file_label" + top="10" + width="200"> + Delta File: + </text> + <line_editor + border_style="line" + border_thickness="1" + follows="left|bottom" + font="SansSerif" + handle_edit_keys_directly="true" + height="20" + layout="topleft" + left_delta="65" + max_length="300" + name="vlt_diff_path_field" + select_on_focus="true" + tool_tip="The full path to an XML D0 or D1 localization difference file generated by the Viewer Localization Toolkit" + top_delta="-2" + width="235" /> + <button + follows="left|bottom" + height="25" + label="Browse..." + label_selected="Browse..." + layout="topleft" + left_pad="5" + name="browse_for_vlt_diffs" + tool_tip="Browse for a VLT-generated D0 or D1 difference file to highlight changed files and elements" + top_delta="-2" + width="75" /> + <button + follows="left|bottom" + height="25" + is_toggle="true" + label="Highlight Diffs" + label_selected="Unhighlight Diffs" + layout="topleft" + left_pad="5" + name="toggle_vlt_diff_highlight" + tool_tip="Toggle highlighting of files and elements containing changed localization data" + top_delta="0" + width="110" /> + </panel> + </panel> + <scroll_container + follows="top|right|bottom" + height="637" + layout="topleft" + left_delta="550" + name="overlap_scroll" + reserve_scroll_corner="true" + top_delta="2" + width="300"> + <panel + background_opaque="true" + background_visible="true" + bevel_style="in" + bg_alpha_color="0 0 0 1" + bg_opaque_color="1 1 1 1" + border="true" + follows="top|right|bottom" + height="637" + label="Overlap Panel" + layout="topleft" + left_delta="0" + min_width="300" + name="overlap_panel" + tool_tip="This panel displays the currently-selected element and all of the elements that overlap it, separated by horizontal lines" + top="-607" + visible="false" + width="300" /> + <text + type="string" + length="1" + follows="top|right" + font="SansSerif" + height="30" + layout="topleft" + left="10" + left_delta="10" + name="overlap_panel_label" + right="-50" + top="0" + width="150"> + Overlapping Elements: + </text> + </scroll_container> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_url_entry.xml b/indra/newview/skins/default/xui/en/floater_url_entry.xml new file mode 100644 index 0000000000000000000000000000000000000000..82a9750cda38215121da4aff2d2b3f347ecb4c7c --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_url_entry.xml @@ -0,0 +1,69 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_minimize="false" + height="87" + layout="topleft" + name="url_entry" + width="500"> + <text + type="string" + length="1" + bottom="20" + follows="top|left" + height="15" + layout="topleft" + left="20" + name="media_label" + top="20"> + Media URL: + </text> + <combo_box + allow_text_entry="true" + follows="left|top|right" + height="19" + layout="topleft" + left_delta="70" + max_chars="255" + name="media_entry" + top_delta="-4" + width="370" /> + <button + follows="top|left" + height="20" + label="OK" + layout="topleft" + left="20" + name="ok_btn" + top="50" + width="64" /> + <button + follows="top|left" + height="20" + label="Cancel" + layout="topleft" + left_pad="28" + name="cancel_btn" + top_delta="0" + width="64" /> + <button + follows="top|right" + height="20" + label="Clear" + layout="topleft" + left_pad="220" + name="clear_btn" + top_delta="0" + width="64" /> + <text + type="string" + length="1" + bottom_delta="-2" + follows="bottom|left" + height="15" + layout="topleft" + left="220" + name="loading_label" + visible="false"> + Loading... + </text> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_water.xml b/indra/newview/skins/default/xui/en/floater_water.xml new file mode 100644 index 0000000000000000000000000000000000000000..07ebf734ea2feb5c0a644e80947c237d2e8afd1c --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_water.xml @@ -0,0 +1,656 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + height="240" + layout="topleft" + name="Water Floater" + save_rect="true" + title="Advanced Water Editor" + width="700"> + <floater.string + name="WLDefaultWaterNames"> + Default:Glassy:Pond:Murky:Second Plague:SNAKE!!!:Valdez + </floater.string> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left="10" + name="KeyFramePresetsText" + top="34" + width="110"> + Water Presets: + </text> + <combo_box + height="18" + layout="topleft" + left_delta="110" + name="WaterPresetsCombo" + top_delta="-2" + width="150" /> + <button + height="20" + label="New" + label_selected="New" + layout="topleft" + left_pad="20" + name="WaterNewPreset" + top_delta="1" + width="70" /> + <button + height="20" + label="Save" + label_selected="Save" + layout="topleft" + left_pad="10" + name="WaterSavePreset" + top_delta="0" + width="70" /> + <button + height="20" + label="Delete" + label_selected="Delete" + layout="topleft" + left_pad="10" + name="WaterDeletePreset" + top_delta="0" + width="70" /> + <tab_container + follows="left|top" + height="180" + layout="topleft" + left="0" + name="Water Tabs" + tab_position="top" + top="60" + width="700"> + <panel + border="true" + follows="left|top|right|bottom" + height="180" + label="Settings" + layout="topleft" + left="1" + mouse_opaque="false" + name="Settings" + top="60" + width="698"> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left="10" + name="BHText" + top="4" + width="355"> + Water Fog Color + </text> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_delta="150" + name="WaterFogColorHelp" + top_delta="-2" + width="18" /> + <color_swatch + border_color="0.45098 0.517647 0.607843 1" + can_apply_immediately="true" + color="0.5 0.5 0.5 1" + follows="left|top" + height="50" + layout="topleft" + left="40" + name="WaterFogColor" + tool_tip="Click to open Color Picker" + top="30" + width="40" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left="10" + name="WaterFogDensText" + top="74" + width="355"> + Fog Density Exponent + </text> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_delta="150" + name="WaterFogDensityHelp" + top_delta="-2" + width="18" /> + <slider + control_name="WaterFogDensity" + decimal_digits="1" + follows="left" + height="10" + initial_value="16" + layout="topleft" + left="24" + max_val="10" + name="WaterFogDensity" + top="110" + width="200" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="-14" + name="WaterUnderWaterFogModText" + top_delta="4" + width="355"> + Underwater Fog Modifier + </text> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_delta="150" + name="WaterUnderWaterFogModHelp" + top_delta="-2" + width="18" /> + <slider + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="16" + layout="topleft" + left="24" + max_val="2" + name="WaterUnderWaterFogMod" + top="150" + width="200" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left="245" + name="BDensText" + top="4" + width="355"> + Reflection Wavelet Scale + </text> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_delta="150" + name="WaterNormalScaleHelp" + top_delta="-2" + width="18" /> + <text + type="string" + length="1" + follows="left|top|right" + halign="center" + height="16" + layout="topleft" + left="245" + name="BHText2" + top="21" + width="10"> + 1 + </text> + <text + type="string" + length="1" + follows="left|top|right" + halign="center" + height="16" + layout="topleft" + left_delta="0" + name="BHText3" + top_delta="11" + width="10"> + 2 + </text> + <text + type="string" + length="1" + follows="left|top|right" + halign="center" + height="16" + layout="topleft" + left_delta="0" + name="BHText4" + top_delta="11" + width="10"> + 3 + </text> + <slider + control_name="WaterNormalScaleX" + decimal_digits="1" + follows="left" + height="10" + initial_value="0.7" + layout="topleft" + left_pad="4" + max_val="10" + name="WaterNormalScaleX" + top_delta="-3" + width="200" /> + <slider + control_name="WaterNormalScaleY" + decimal_digits="1" + follows="left" + height="10" + initial_value="0.7" + layout="topleft" + left_delta="0" + max_val="10" + name="WaterNormalScaleY" + top_pad="1" + width="200" /> + <slider + control_name="WaterNormalScaleZ" + decimal_digits="1" + follows="left" + height="10" + initial_value="0.7" + layout="topleft" + left_delta="0" + max_val="10" + name="WaterNormalScaleZ" + top_pad="1" + width="200" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="-14" + name="HDText" + top_delta="2" + width="355"> + Fresnel Scale + </text> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_delta="150" + name="WaterFresnelScaleHelp" + top_delta="-2" + width="18" /> + <slider + control_name="WaterFresnelScale" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0.7" + layout="topleft" + left="259" + name="WaterFresnelScale" + top="100" + width="200" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="-14" + name="FresnelOffsetText" + top_delta="-1" + width="355"> + Fresnel Offset + </text> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_delta="150" + name="WaterFresnelOffsetHelp" + top_delta="-2" + width="18" /> + <slider + control_name="WaterFresnelOffset" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0.7" + layout="topleft" + left="259" + name="WaterFresnelOffset" + top="135" + width="200" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left="480" + name="DensMultText" + top="4" + width="355"> + Refract Scale Above + </text> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_delta="150" + name="WaterScaleAboveHelp" + top_delta="-2" + width="18" /> + <slider + control_name="WaterScaleAbove" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0.1" + layout="topleft" + left="494" + name="WaterScaleAbove" + top="40" + width="200" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="-14" + name="WaterScaleBelowText" + top_delta="-3" + width="355"> + Refract Scale Below + </text> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_delta="150" + name="WaterScaleBelowHelp" + top_delta="-2" + width="18" /> + <slider + control_name="WaterScaleBelow" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0" + layout="topleft" + left="494" + name="WaterScaleBelow" + top="73" + width="200" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="-14" + name="MaxAltText" + top_delta="-2" + width="355"> + Blur Multiplier + </text> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_delta="150" + name="WaterBlurMultiplierHelp" + top_delta="-2" + width="18" /> + <slider + control_name="WaterBlurMult" + follows="left" + height="10" + increment="0.001" + initial_value="0" + layout="topleft" + left="494" + max_val="0.16" + name="WaterBlurMult" + top="107" + width="200" /> + </panel> + <panel + border="true" + follows="left|top|right|bottom" + height="180" + label="Image" + layout="topleft" + left_delta="0" + mouse_opaque="false" + name="Waves" + top_delta="44" + width="698"> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left="10" + name="BHText" + top="4" + width="355"> + Big Wave Direction + </text> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_delta="145" + name="WaterWave1Help" + top_delta="-2" + width="18" /> + <text + type="string" + length="1" + follows="left|top|right" + halign="center" + height="16" + layout="topleft" + left="10" + name="WaterWave1DirXText" + top="21" + width="10"> + X + </text> + <text + type="string" + length="1" + follows="left|top|right" + halign="center" + height="16" + layout="topleft" + left_delta="0" + name="WaterWave1DirYText" + top_delta="11" + width="10"> + Y + </text> + <slider + control_name="WaterWave1DirX" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0.7" + layout="topleft" + left="24" + max_val="4" + min_val="-4" + name="WaterWave1DirX" + top="40" + width="200" /> + <slider + control_name="WaterWave1DirY" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0.7" + layout="topleft" + left_delta="0" + max_val="4" + min_val="-4" + name="WaterWave1DirY" + top_pad="1" + width="200" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="-14" + name="BHText2" + top_delta="3" + width="355"> + Little Wave Direction + </text> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_delta="145" + name="WaterWave2Help" + top_delta="-2" + width="18" /> + <text + type="string" + length="1" + follows="left|top|right" + halign="center" + height="16" + layout="topleft" + left="10" + name="WaterWave2DirXText" + top="71" + width="10"> + X + </text> + <text + type="string" + length="1" + follows="left|top|right" + halign="center" + height="16" + layout="topleft" + left_delta="0" + name="WaterWave2DirYText" + top_delta="11" + width="10"> + Y + </text> + <slider + control_name="WaterWave2DirX" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0.7" + layout="topleft" + left="24" + max_val="4" + min_val="-4" + name="WaterWave2DirX" + top="90" + width="200" /> + <slider + control_name="WaterWave2DirY" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0.7" + layout="topleft" + left_delta="0" + max_val="4" + min_val="-4" + name="WaterWave2DirY" + top_pad="1" + width="200" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left="240" + name="BHText3" + top="4" + width="355"> + Normal Map + </text> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_delta="125" + name="WaterNormalMapHelp" + top_delta="-2" + width="18" /> + <texture_picker + height="143" + layout="topleft" + left="250" + name="WaterNormalMap" + top="22" + width="128" /> + </panel> + </tab_container> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_wearable_save_as.xml b/indra/newview/skins/default/xui/en/floater_wearable_save_as.xml new file mode 100644 index 0000000000000000000000000000000000000000..ee67989d332d3d3eac34373aaa2142ceb5876d76 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_wearable_save_as.xml @@ -0,0 +1,58 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + border="true" + can_close="false" + can_minimize="false" + height="100" + layout="topleft" + name="modal container" + width="240"> + <button + height="20" + label="Save" + label_selected="Save" + layout="topleft" + left="20" + name="Save" + top="70" + width="82" /> + <button + height="20" + label="Cancel" + label_selected="Cancel" + layout="topleft" + left_pad="36" + name="Cancel" + top_delta="0" + width="82" /> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="16" + layout="topleft" + left="20" + name="Save item as:" + top="10" + width="200"> + Save item as: + </text> + <line_editor + type="string" + length="1" + border_style="line" + border_thickness="1" + follows="left|top" + font="SansSerif" + handle_edit_keys_directly="true" + height="20" + layout="topleft" + left_delta="0" + max_length="63" + name="name ed" + top_pad="4" + width="200"> + New [DESC] + </line_editor> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_windlight_options.xml b/indra/newview/skins/default/xui/en/floater_windlight_options.xml new file mode 100644 index 0000000000000000000000000000000000000000..5257cc687e0987348084814f7dab363611ccf522 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_windlight_options.xml @@ -0,0 +1,1487 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + height="220" + layout="topleft" + name="WindLight floater" + save_rect="true" + title="Advanced Sky Editor" + width="700"> + <floater.string + name="WLDefaultSkyNames"> + A-12AM:A-12PM:A-3AM:A-3PM:A-4.30PM:A-6AM:A-6PM:A-9AM:A-9PM:Barcelona:Blizzard:Blue Midday:Coastal Afternoon:Coastal Sunset:Default:Desert Sunset:Fine Day:Fluffy Big Clouds:Foggy:Funky Funky:Funky Funky Funky:Gelatto:Ghost:Incongruent Truths:Midday 1:Midday 2:Midday 3:Midday 4:Night:Pirate:Purple:Sailor's Delight:Sheer Sensuality + </floater.string> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left="10" + name="KeyFramePresetsText" + top="34" + width="110"> + Sky Presets: + </text> + <combo_box + height="18" + layout="topleft" + left_delta="110" + name="WLPresetsCombo" + top_delta="-2" + width="150" /> + <button + height="20" + label="New" + label_selected="New" + layout="topleft" + left_pad="20" + name="WLNewPreset" + top_delta="1" + width="70" /> + <button + height="20" + label="Save" + label_selected="Save" + layout="topleft" + left_pad="10" + name="WLSavePreset" + top_delta="0" + width="70" /> + <button + height="20" + label="Delete" + label_selected="Delete" + layout="topleft" + left_pad="10" + name="WLDeletePreset" + top_delta="0" + width="70" /> + <button + height="20" + label="Day Cycle Editor" + label_selected="Day Cycle Editor" + layout="topleft" + left_pad="50" + name="WLDayCycleMenuButton" + top_delta="0" + width="120" /> + <tab_container + follows="left|top" + height="160" + layout="topleft" + left="0" + name="WindLight Tabs" + tab_position="top" + top="60" + width="700"> + <panel + border="true" + follows="left|top|right|bottom" + height="160" + label="Atmosphere" + layout="topleft" + left="1" + mouse_opaque="false" + name="Atmosphere" + top="60" + width="698"> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left="10" + name="BHText" + top="4" + width="355"> + Blue Horizon + </text> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_delta="150" + name="WLBlueHorizonHelp" + top_delta="-2" + width="18" /> + <text + type="string" + length="1" + follows="left|top|right" + halign="center" + height="16" + layout="topleft" + left="10" + name="BHText2" + top="21" + width="10"> + R + </text> + <text + type="string" + length="1" + follows="left|top|right" + halign="center" + height="16" + layout="topleft" + left_delta="0" + name="BHText3" + top_delta="11" + width="10"> + G + </text> + <text + type="string" + length="1" + follows="left|top|right" + halign="center" + height="16" + layout="topleft" + left_delta="0" + name="BHText4" + top_delta="11" + width="10"> + B + </text> + <text + type="string" + length="1" + follows="left|top|right" + halign="center" + height="16" + layout="topleft" + left_delta="0" + name="BHText5" + top_delta="11" + width="10"> + I + </text> + <slider + control_name="WLBlueHorizonR" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0.7" + layout="topleft" + left="24" + name="WLBlueHorizonR" + top="40" + width="200" /> + <slider + control_name="WLBlueHorizonG" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0.7" + layout="topleft" + left_delta="0" + name="WLBlueHorizonG" + top_pad="1" + width="200" /> + <slider + control_name="WLBlueHorizonB" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0.7" + layout="topleft" + left_delta="0" + name="WLBlueHorizonB" + top_pad="1" + width="200" /> + <slider + control_name="WLBlueHorizonI" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="1.0" + layout="topleft" + left_delta="0" + name="WLBlueHorizonI" + top_pad="1" + width="200" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="-14" + name="BDensText" + top_delta="-2" + width="355"> + Haze Horizon + </text> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_delta="150" + name="WLHazeHorizonHelp" + top_delta="-2" + width="18" /> + <slider + control_name="WLHazeHorizon" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0.25" + layout="topleft" + left="24" + name="WLHazeHorizon" + top="107" + width="200" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left="245" + name="BDensText2" + top="4" + width="355"> + Blue Density + </text> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_delta="150" + name="WLBlueDensityHelp" + top_delta="-2" + width="18" /> + <text + type="string" + length="1" + follows="left|top|right" + halign="center" + height="16" + layout="topleft" + left="245" + name="BHText6" + top="21" + width="10"> + R + </text> + <text + type="string" + length="1" + follows="left|top|right" + halign="center" + height="16" + layout="topleft" + left_delta="0" + name="BHText7" + top_delta="11" + width="10"> + G + </text> + <text + type="string" + length="1" + follows="left|top|right" + halign="center" + height="16" + layout="topleft" + left_delta="0" + name="BHText8" + top_delta="11" + width="10"> + B + </text> + <text + type="string" + length="1" + follows="left|top|right" + halign="center" + height="16" + layout="topleft" + left_delta="0" + name="BHText9" + top_delta="11" + width="10"> + I + </text> + <slider + control_name="WLBlueDensityR" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0.7" + layout="topleft" + left="259" + name="WLBlueDensityR" + top="40" + width="200" /> + <slider + control_name="WLBlueDensityG" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0.7" + layout="topleft" + left_delta="0" + name="WLBlueDensityG" + top_pad="1" + width="200" /> + <slider + control_name="WLBlueDensityB" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0.7" + layout="topleft" + left_delta="0" + name="WLBlueDensityB" + top_pad="1" + width="200" /> + <slider + control_name="WLBlueDensityI" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="1" + layout="topleft" + left_delta="0" + name="WLBlueDensityI" + top_pad="1" + width="200" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="-14" + name="HDText" + top_delta="-2" + width="355"> + Haze Density + </text> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_delta="150" + name="WLHazeDensityHelp" + top_delta="-2" + width="18" /> + <slider + control_name="WLHazeDensity" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0.7" + layout="topleft" + left="259" + max_val="4" + name="WLHazeDensity" + top="107" + width="200" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left="480" + name="DensMultText" + top="4" + width="355"> + Density Multiplier + </text> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_delta="150" + name="WLDensityMultHelp" + top_delta="-2" + width="18" /> + <slider + control_name="WLDensityMult" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0.1" + layout="topleft" + left="494" + max_val="0.9" + name="WLDensityMult" + top="40" + width="200" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="-14" + name="WLDistanceMultText" + top_delta="-3" + width="355"> + Distance Multiplier + </text> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_delta="150" + name="WLDistanceMultHelp" + top_delta="-2" + width="18" /> + <slider + control_name="WLDistancMult" + decimal_digits="1" + follows="left" + height="10" + initial_value="1.0" + layout="topleft" + left="494" + max_val="100" + name="WLDistanceMult" + top="73" + width="207" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="-14" + name="MaxAltText" + top_delta="-2" + width="355"> + Max Altitude + </text> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_delta="150" + name="WLMaxAltitudeHelp" + top_delta="-2" + width="18" /> + <slider + control_name="WLMaxAltitude" + decimal_digits="0" + follows="left" + height="10" + increment="1" + initial_value="500" + layout="topleft" + left="494" + max_val="4000" + name="WLMaxAltitude" + top="107" + width="205" /> + </panel> + <panel + border="true" + follows="left|top|right|bottom" + height="160" + label="Lighting" + layout="topleft" + left_delta="0" + name="Lighting" + top_delta="4" + width="698"> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left="10" + name="SLCText" + top="4" + width="355"> + Sun/Moon Color + </text> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_delta="150" + name="WLSunlightColorHelp" + top_delta="-2" + width="18" /> + <text + type="string" + length="1" + follows="left|top|right" + halign="center" + height="16" + layout="topleft" + left="10" + name="BHText" + top="21" + width="10"> + R + </text> + <text + type="string" + length="1" + follows="left|top|right" + halign="center" + height="16" + layout="topleft" + left_delta="0" + name="BHText2" + top_delta="11" + width="10"> + G + </text> + <text + type="string" + length="1" + follows="left|top|right" + halign="center" + height="16" + layout="topleft" + left_delta="0" + name="BHText3" + top_delta="11" + width="10"> + B + </text> + <text + type="string" + length="1" + follows="left|top|right" + halign="center" + height="16" + layout="topleft" + left_delta="0" + name="BHText4" + top_delta="11" + width="10"> + I + </text> + <slider + control_name="WLSunlightR" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0.7" + layout="topleft" + left="24" + name="WLSunlightR" + top="40" + width="200" /> + <slider + control_name="WLSunlightG" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0.7" + layout="topleft" + left_delta="0" + name="WLSunlightG" + top_pad="1" + width="200" /> + <slider + control_name="WLSunlightB" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0.7" + layout="topleft" + left_delta="0" + name="WLSunlightB" + top_pad="1" + width="200" /> + <slider + control_name="WLSunlightI" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="1.0" + layout="topleft" + left_delta="0" + name="WLSunlightI" + top_pad="1" + width="200" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="-14" + name="TODText" + top_delta="-2" + width="355"> + Sun/Moon Position + </text> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_delta="150" + name="WLTimeOfDayHelp" + top_delta="-2" + width="18" /> + <icon + height="20" + image_name="icon_diurnal.tga" + layout="topleft" + left="30" + name="SkyDayCycle" + top="97" + width="148" /> + <slider + control_name="WLSunAngle" + follows="left" + height="10" + increment="0.001" + initial_value="0.7" + layout="topleft" + left="24" + name="WLSunAngle" + top="137" + width="204" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left="245" + name="WLAmbientText" + top="4" + width="355"> + Ambient + </text> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_delta="150" + name="WLAmbientHelp" + top_delta="-2" + width="18" /> + <text + type="string" + length="1" + follows="left|top|right" + halign="center" + height="16" + layout="topleft" + left="245" + name="BHText5" + top="21" + width="10"> + R + </text> + <text + type="string" + length="1" + follows="left|top|right" + halign="center" + height="16" + layout="topleft" + left_delta="0" + name="BHText6" + top_delta="11" + width="10"> + G + </text> + <text + type="string" + length="1" + follows="left|top|right" + halign="center" + height="16" + layout="topleft" + left_delta="0" + name="BHText7" + top_delta="11" + width="10"> + B + </text> + <text + type="string" + length="1" + follows="left|top|right" + halign="center" + height="16" + layout="topleft" + left_delta="0" + name="BHText8" + top_delta="11" + width="10"> + I + </text> + <slider + control_name="WLAmbientR" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0.7" + layout="topleft" + left="259" + name="WLAmbientR" + top="40" + width="200" /> + <slider + control_name="WLAmbientG" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0.7" + layout="topleft" + left_delta="0" + name="WLAmbientG" + top_pad="1" + width="200" /> + <slider + control_name="WLAmbientB" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0.7" + layout="topleft" + left_delta="0" + name="WLAmbientB" + top_pad="1" + width="200" /> + <slider + control_name="WLAmbientI" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="1" + layout="topleft" + left_delta="0" + name="WLAmbientI" + top_pad="1" + width="200" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="-14" + name="WLEastAngleText" + top_delta="-2" + width="355"> + East Angle + </text> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_delta="150" + name="WLEastAngleHelp" + top_delta="-2" + width="18" /> + <slider + control_name="WLEastAngle" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0.0" + layout="topleft" + left="259" + name="WLEastAngle" + top="107" + width="200" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left="480" + name="SunGlowText" + top="4" + width="355"> + Sun Glow + </text> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_delta="150" + name="WLSunGlowHelp" + top_delta="-2" + width="18" /> + <slider + control_name="WLGlowB" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0.1" + label="Focus " + layout="topleft" + left="494" + max_val="0.5" + name="WLGlowB" + top="40" + width="200" /> + <slider + control_name="WLGlowR" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0.25" + label="Size " + layout="topleft" + left_delta="0" + max_val="1.99" + min_val="1" + name="WLGlowR" + top_pad="1" + width="200" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="-14" + name="SceneGammaText" + top_delta="0" + width="200"> + Scene Gamma + </text> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_delta="150" + name="WLSceneGammaHelp" + top_delta="-2" + width="18" /> + <slider + control_name="WLGamma" + decimal_digits="2" + follows="bottom" + height="10" + increment="0.01" + initial_value="2.0" + layout="topleft" + left="494" + max_val="10" + name="WLGamma" + top="87" + width="207" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="-14" + name="WLStarText" + top_delta="-1" + width="355"> + Star Brightness + </text> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_delta="150" + name="WLStarBrightnessHelp" + top_delta="-2" + width="18" /> + <slider + control_name="WLStarAlpha" + decimal_digits="2" + follows="bottom" + height="10" + increment="0.01" + initial_value="0" + layout="topleft" + left="494" + max_val="2" + name="WLStarAlpha" + top="122" + width="200" /> + </panel> + <panel + border="true" + follows="left|top|right|bottom" + height="160" + label="Clouds" + layout="topleft" + left_delta="0" + mouse_opaque="false" + name="Clouds" + top_delta="4" + width="698"> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left="10" + name="WLCloudColorText" + top="4" + width="355"> + Cloud Color + </text> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_delta="150" + name="WLCloudColorHelp" + top_delta="-2" + width="18" /> + <text + type="string" + length="1" + follows="left|top|right" + halign="center" + height="16" + layout="topleft" + left="10" + name="BHText" + top="21" + width="10"> + R + </text> + <text + type="string" + length="1" + follows="left|top|right" + halign="center" + height="16" + layout="topleft" + left_delta="0" + name="BHText2" + top_delta="11" + width="10"> + G + </text> + <text + type="string" + length="1" + follows="left|top|right" + halign="center" + height="16" + layout="topleft" + left_delta="0" + name="BHText3" + top_delta="11" + width="10"> + B + </text> + <text + type="string" + length="1" + follows="left|top|right" + halign="center" + height="16" + layout="topleft" + left_delta="0" + name="BHText4" + top_delta="11" + width="10"> + I + </text> + <slider + control_name="WLCloudColorR" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0.7" + layout="topleft" + left="24" + name="WLCloudColorR" + top="40" + width="200" /> + <slider + control_name="WLCloudColorG" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0.7" + layout="topleft" + left_delta="0" + name="WLCloudColorG" + top_pad="1" + width="200" /> + <slider + control_name="WLCloudColorB" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0.7" + layout="topleft" + left_delta="0" + name="WLCloudColorB" + top_pad="1" + width="200" /> + <slider + control_name="WLCloudColorI" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="1.0" + layout="topleft" + left_delta="0" + name="WLCloudColorI" + top_pad="1" + width="200" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="-14" + name="WLCloudColorText2" + top_delta="-2" + width="355"> + Cloud XY/Density + </text> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_delta="150" + name="WLCloudDensityHelp" + top_delta="-2" + width="18" /> + <text + type="string" + length="1" + follows="left|top|right" + halign="center" + height="16" + layout="topleft" + left="10" + name="BHText5" + top="87" + width="10"> + X + </text> + <text + type="string" + length="1" + follows="left|top|right" + halign="center" + height="16" + layout="topleft" + left_delta="0" + name="BHText6" + top_delta="11" + width="10"> + Y + </text> + <text + type="string" + length="1" + follows="left|top|right" + halign="center" + height="16" + layout="topleft" + left_delta="0" + name="BHText7" + top_delta="11" + width="10"> + D + </text> + <slider + control_name="WLCloudX" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0.5" + layout="topleft" + left_pad="4" + name="WLCloudX" + top_delta="-2" + width="200" /> + <slider + control_name="WLCloudY" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0.5" + layout="topleft" + left_delta="0" + name="WLCloudY" + top_pad="1" + width="200" /> + <slider + control_name="WLCloudDensity" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="1.0" + layout="topleft" + left_delta="0" + name="WLCloudDensity" + top_pad="1" + width="200" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left="245" + name="WLCloudCoverageText" + top="4" + width="355"> + Cloud Coverage + </text> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_delta="150" + name="WLCloudCoverageHelp" + top_delta="-2" + width="18" /> + <slider + control_name="WLCloudCoverage" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0.5" + layout="topleft" + left="259" + name="WLCloudCoverage" + top="40" + width="200" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="-14" + name="WLCloudScaleText" + top_delta="-1" + width="355"> + Cloud Scale + </text> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_delta="150" + name="WLCloudScaleHelp" + top_delta="-2" + width="18" /> + <slider + control_name="WLCloudScale" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="1.0" + layout="topleft" + left="259" + min_val="0.01" + name="WLCloudScale" + top="75" + width="200" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="-14" + name="WLCloudDetailText" + top_delta="-4" + width="355"> + Cloud Detail (XY/Density) + </text> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_delta="150" + name="WLCloudDetailHelp" + top_delta="-2" + width="18" /> + <text + type="string" + length="1" + follows="left|top|right" + halign="center" + height="16" + layout="topleft" + left="245" + name="BHText8" + top="87" + width="10"> + X + </text> + <text + type="string" + length="1" + follows="left|top|right" + halign="center" + height="16" + layout="topleft" + left_delta="0" + name="BHText9" + top_delta="11" + width="10"> + Y + </text> + <text + type="string" + length="1" + follows="left|top|right" + halign="center" + height="16" + layout="topleft" + left_delta="0" + name="BHText10" + top_delta="11" + width="10"> + D + </text> + <slider + control_name="WLCloudDetailX" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0.5" + layout="topleft" + left_pad="4" + name="WLCloudDetailX" + top_delta="-2" + width="200" /> + <slider + control_name="WLCloudDetailY" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0.5" + layout="topleft" + left_delta="0" + name="WLCloudDetailY" + top_pad="1" + width="200" /> + <slider + control_name="WLCloudDetailDensity" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="1.0" + layout="topleft" + left_delta="0" + name="WLCloudDetailDensity" + top_pad="1" + width="200" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left="480" + name="WLCloudScrollXText" + top="4" + width="355"> + Cloud Scroll X + </text> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_delta="125" + name="WLCloudScrollXHelp" + top_delta="-2" + width="18" /> + <check_box + control_name="WLCloudLockX" + follows="left" + height="16" + label="Lock" + layout="topleft" + left="625" + name="WLCloudLockX" + width="200" /> + <slider + control_name="WLCloudScrollX" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0.5" + layout="topleft" + left="494" + max_val="10" + min_val="-10" + name="WLCloudScrollX" + top="45" + width="200" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="-14" + name="WLCloudScrollYText" + top_delta="-1" + width="355"> + Cloud Scroll Y + </text> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_delta="125" + name="WLCloudScrollYHelp" + top_delta="-2" + width="18" /> + <check_box + control_name="WLCloudLockY" + follows="left" + height="16" + label="Lock" + layout="topleft" + left="625" + name="WLCloudLockY" + width="200" /> + <slider + control_name="WLCloudScrollY" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0.5" + layout="topleft" + left="494" + max_val="10" + min_val="-10" + name="WLCloudScrollY" + top="85" + width="200" /> + <check_box + control_name="DrawClassicClouds" + follows="left" + height="16" + label="Draw Classic Clouds" + layout="topleft" + left="480" + name="DrawClassicClouds" + top="104" + width="200" /> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left="608" + name="WLClassicCloudsHelp" + top="84" + width="18" /> + </panel> + </tab_container> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_world_map.xml b/indra/newview/skins/default/xui/en/floater_world_map.xml new file mode 100644 index 0000000000000000000000000000000000000000..43f209546adb813db1477bb1958255a38ec40e7e --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_world_map.xml @@ -0,0 +1,540 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_resize="true" + center_horiz="true" + center_vert="true" + height="600" + layout="topleft" + min_height="520" + min_width="520" + name="worldmap" + save_rect="true" + save_visibility="true" + single_instance="true" + title="World Map" + width="800"> + <tab_container + follows="left|top|right|bottom" + height="565" + layout="topleft" + left="15" + name="maptab" + tab_position="top" + top="25" + width="542"> + <panel + filename="panel_world_map.xml" + follows="left|top|right|bottom" + height="550" + label="Objects" + layout="topleft" + left="1" + name="objects_mapview" + top="19" + width="540" /> + <panel + filename="panel_world_map.xml" + follows="left|top|right|bottom" + height="550" + label="Terrain" + layout="topleft" + left_delta="0" + name="terrain_mapview" + top_delta="3" + width="540" /> + </tab_container> + <icon + follows="top|right" + height="16" + image_name="map_avatar_16.tga" + layout="topleft" + left="-230" + mouse_opaque="true" + name="self" + top="34" + width="16" /> + <text + type="string" + length="1" + follows="top|right" + height="16" + layout="topleft" + left_pad="4" + name="you_label" + top_delta="0" + width="145"> + You + </text> + <icon + follows="top|right" + height="16" + image_name="map_home.tga" + layout="topleft" + left_delta="50" + mouse_opaque="true" + name="home" + top_delta="0" + width="16" /> + <text + type="string" + length="1" + follows="top|right" + height="16" + layout="topleft" + left_pad="4" + name="home_label" + top_delta="0" + width="145"> + Home + </text> + <icon + color="0.5 0.25 1 1" + follows="top|right" + height="16" + image_name="legend.tga" + layout="topleft" + left="-230" + mouse_opaque="true" + name="square2" + top="54" + width="16" /> + <text + type="string" + length="1" + follows="top|right" + height="16" + layout="topleft" + left_pad="4" + name="auction_label" + top_delta="0" + width="145"> + Auction + </text> + <icon + color="1 1 0.25 1" + follows="top|right" + height="16" + image_name="legend.tga" + layout="topleft" + left_delta="50" + mouse_opaque="true" + name="square" + top_delta="0" + width="16" /> + <text + type="string" + length="1" + follows="top|right" + height="16" + layout="topleft" + left_pad="4" + name="land_for_sale_label" + top_delta="0" + width="145"> + Land For Sale + </text> + <button + follows="top|right" + font="SansSerifSmall" + height="16" + label="Go Home" + label_selected="Go Home" + layout="topleft" + left="-90" + name="Go Home" + tool_tip="Teleport to your home" + top="34" + width="88" /> + <icon + color="0 1 0 1" + follows="top|right" + height="8" + image_name="map_avatar_8.tga" + layout="topleft" + left="-226" + mouse_opaque="true" + name="person" + top="84" + width="8" /> + <check_box + control_name="MapShowPeople" + follows="top|right" + height="16" + label="Resident" + layout="topleft" + left_pad="8" + name="people_chk" + top_delta="-4" + width="110" /> + <icon + follows="top|right" + height="16" + image_name="map_infohub.tga" + layout="topleft" + left="-230" + mouse_opaque="true" + name="infohub" + top="100" + width="16" /> + <check_box + control_name="MapShowInfohubs" + follows="top|right" + height="16" + label="Infohub" + layout="topleft" + left_pad="4" + name="infohub_chk" + top_delta="0" + width="110" /> + <icon + follows="top|right" + height="16" + image_name="map_telehub.tga" + layout="topleft" + left="-230" + mouse_opaque="true" + name="telehub" + top="120" + width="16" /> + <check_box + control_name="MapShowTelehubs" + follows="top|right" + height="16" + label="Telehub" + layout="topleft" + left_pad="4" + name="telehubchk" + top_delta="0" + width="110" /> + <icon + follows="top|right" + height="16" + image_name="icon_for_sale.tga" + layout="topleft" + left="-230" + mouse_opaque="true" + name="landforsale" + top="140" + width="16" /> + <check_box + control_name="MapShowLandForSale" + follows="top|right" + height="16" + label="Land for Sale" + layout="topleft" + left_pad="4" + name="land_for_sale_chk" + top_delta="0" + width="110" /> + <text + type="string" + length="1" + follows="top|right" + height="16" + layout="topleft" + left="-104" + name="events_label" + top="80" + width="145"> + Events: + </text> + <icon + follows="top|right" + height="16" + image_name="map_event.tga" + layout="topleft" + left="-92" + mouse_opaque="true" + name="event" + top="100" + width="16" /> + <check_box + control_name="MapShowEvents" + follows="top|right" + height="16" + label="PG" + layout="topleft" + left_pad="4" + name="event_chk" + top_delta="0" + width="55" /> + <icon + follows="top|right" + height="16" + image_name="map_event_mature.tga" + layout="topleft" + left="-92" + mouse_opaque="true" + name="events_mature_icon" + top="120" + width="16" /> + <check_box + control_name="ShowMatureEvents" + follows="top|right" + height="16" + initial_value="true" + label="Mature" + layout="topleft" + left_pad="4" + name="event_mature_chk" + top_delta="0" + width="55" /> + <icon + follows="top|right" + height="16" + image_name="map_event_adult.tga" + layout="topleft" + left="-92" + mouse_opaque="true" + name="events_adult_icon" + top="140" + width="16" /> + <check_box + control_name="ShowAdultEvents" + follows="top|right" + height="16" + label="Adult" + layout="topleft" + left_pad="4" + name="event_adult_chk" + top_delta="0" + width="55" /> + <icon + color="0.5 0 0 1" + follows="top|right" + height="16" + image_name="map_track_16.tga" + layout="topleft" + left="-230" + mouse_opaque="true" + name="avatar_icon" + top="164" + width="16" /> + <combo_box + allow_text_entry="true" + follows="top|right" + height="20" + label="Online Friends" + layout="topleft" + left_pad="4" + max_chars="60" + name="friend combo" + tool_tip="Friend to Show on Map" + top_delta="-4" + width="202"> + <combo_box.item + label="Online Friends" + value="None" /> + </combo_box> + <icon + color="0.5 0 0 1" + follows="top|right" + height="16" + image_name="map_track_16.tga" + layout="topleft" + left="-230" + mouse_opaque="true" + name="landmark_icon" + top="189" + width="16" /> + <combo_box + allow_text_entry="true" + follows="top|right" + height="20" + label="Landmarks" + layout="topleft" + left_pad="4" + max_chars="64" + name="landmark combo" + tool_tip="Landmark to Show on Map" + top_delta="-4" + width="202"> + <combo_box.item + label="Landmarks" + value="None" /> + </combo_box> + <icon + color="0.5 0 0 1" + follows="top|right" + height="16" + image_name="map_track_16.tga" + layout="topleft" + left="-230" + mouse_opaque="true" + name="location_icon" + top="214" + width="16" /> + <line_editor + follows="top|right" + height="20" + label="Search by Region Name" + layout="topleft" + left_pad="4" + name="location" + select_on_focus="true" + tool_tip="Type the name of a region" + top_delta="-4" + width="140" /> + <button + follows="top|right" + height="20" + label="Search" + layout="topleft" + left_pad="5" + name="DoSearch" + tool_tip="Search for region" + top_delta="0" + width="60" /> + <text + type="string" + length="1" + follows="top|right" + font="SansSerif" + height="16" + layout="topleft" + left="-230" + name="search_label" + top="234" + width="222"> + Search Results: + </text> + <scroll_list + draw_stripes="false" + follows="top|right|bottom" + height="200" + layout="topleft" + left_delta="0" + name="search_results" + top_pad="10" + width="222"> + <scroll_list.columns + label="" + name="icon" + width="16" /> + <scroll_list.columns + label="" + name="sim_name" + width="206" /> + </scroll_list> + <text + type="string" + length="1" + follows="bottom|right" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="location_label" + top_pad="4" + width="98"> + Location: + </text> + <spinner + decimal_digits="0" + follows="bottom|right" + height="16" + increment="1" + initial_value="128" + layout="topleft" + left_delta="70" + max_val="255" + name="spin x" + tool_tip="X coordinate of location to show on map" + top_delta="0" + width="48" /> + <spinner + decimal_digits="0" + follows="bottom|right" + height="16" + increment="1" + initial_value="128" + layout="topleft" + left_pad="2" + max_val="255" + name="spin y" + tool_tip="Y coordinate of location to show on map" + top_delta="0" + width="48" /> + <spinner + decimal_digits="0" + follows="bottom|right" + height="16" + increment="1" + initial_value="0" + layout="topleft" + left_pad="2" + max_val="4096" + name="spin z" + tool_tip="Z coordinate of location to show on map" + top_delta="0" + width="48" /> + <button + follows="right|bottom" + height="20" + label="Teleport" + label_selected="Teleport" + layout="topleft" + left="-230" + name="Teleport" + tool_tip="Teleport to selected location" + top="494" + width="90" /> + <button + follows="right|bottom" + height="20" + label="Show Destination" + label_selected="Show Destination" + layout="topleft" + left_pad="10" + name="Show Destination" + tool_tip="Center map on selected location" + top_delta="0" + width="125" /> + <button + follows="right|bottom" + height="20" + label="Clear" + label_selected="Clear" + layout="topleft" + left="-230" + name="Clear" + tool_tip="Stop tracking" + top="518" + width="90" /> + <button + follows="right|bottom" + height="20" + label="Show My Location" + label_selected="Show My Location" + layout="topleft" + left_pad="10" + name="Show My Location" + tool_tip="Center map on your avatar's location" + top_delta="0" + width="125" /> + <button + enabled="false" + follows="bottom|right" + height="20" + label="Copy SLURL to clipboard" + layout="topleft" + left="-230" + name="copy_slurl" + tool_tip="Copies current location as SLURL to be used on the web." + top="542" + width="222" /> + <slider + follows="right|bottom" + height="16" + increment="0.2" + initial_value="48.5029" + label="Zoom" + layout="topleft" + left_delta="0" + max_val="0" + min_val="-8" + name="zoom slider" + show_text="false" + top_pad="8" + width="222" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/fonts.xml b/indra/newview/skins/default/xui/en/fonts.xml new file mode 100644 index 0000000000000000000000000000000000000000..483291044d68a41c3c55acbb0be2bed2bf124d19 --- /dev/null +++ b/indra/newview/skins/default/xui/en/fonts.xml @@ -0,0 +1,108 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<fonts> + + <font name="default" comment="default font files (global fallbacks)"> + <file>DejaVuSansCondensed.ttf</file> + <os name="Windows"> + <file>MSGOTHIC.TTC</file> + <file>gulim.ttc</file> + <file>simhei.ttf</file> + <file>ArialUni.ttf</file> + </os> + <os name="Mac"> + <file>ヒラã‚゙ノ角ゴ Pro W3.otf</file> + <file>ヒラã‚゙ノ角ゴ ProN W3.otf</file> + <file>AppleGothic.dfont</file> + <file>AppleGothic.ttf</file> + <file>åŽæ–‡ç»†é»‘.ttf</file> + </os> + </font> + + <font name="SansSerif" comment="Name of san-serif font (Truetype file name)"> + <file>"MtBkLfRg.ttf"</file> + </font> + + <font name="SansSerifBold" + comment="Name of bold sans-serif font" + font_style="Bold"> + <file>MtBdLfRg.ttf</file> + </font> + + <font name="Monospace" + comment="Name of monospace font"> + <file>DejaVuSansMono.ttf</file> + </font> + + <font name="DejaVu" + comment="Name of DejaVu font"> + <file>DejaVuSans.ttf</file> + </font> + + <font name="DejaVu" + comment="Name of DejaVu font (bold)" + font_style="BOLD"> + <file>DejaVuSansBold.ttf</file> + </font> + + <font name="DejaVu" + comment="Name of DejaVu font (italic)" + font_style="ITALIC"> + <file>DejaVuSansOblique.ttf</file> + </font> + + <font name="DejaVu" + comment="Name of DejaVu font (bold italic)" + font_style="BOLD|ITALIC"> + <file>DejaVuSansBoldOblique.ttf</file> + </font> + + <font name="Helvetica" + comment="Name of Helvetica font"> + <file>arial.ttf</file> + </font> + + <font name="Helvetica" + comment="Name of Helvetica font (bold)" + font_style="BOLD"> + <file>arialbd.ttf</file> + </font> + + <font name="Helvetica" + comment="Name of Helvetica font (italic)" + font_style="ITALIC"> + <file>ariali.ttf</file> + </font> + + <font name="Helvetica" + comment="Name of Helvetica font (bold italic)" + font_style="BOLD|ITALIC"> + <file>arialbi.ttf</file> + </font> + + <font name="OverrideTest" + comment="Name of font to test overriding"> + <file>times.ttf</file> + </font> + + <font_size name="Monospace" + comment="Size for monospaced font (points, or 1/72 of an inch)" + size="9.0" + /> + <font_size name="Huge" + comment="Size of huge font (points, or 1/72 of an inch)" + size="16.0" + /> + <font_size name="Large" + comment="Size of large font (points, or 1/72 of an inch)" + size="12.0" + /> + <font_size name="Medium" + comment="Size of medium font (points, or 1/72 of an inch)" + size="10.0" + /> + <font_size name="Small" + comment="Size of small font (points, or 1/72 of an inch)" + size="9" + /> +</fonts> + diff --git a/indra/newview/skins/default/xui/en/menu_avatar_icon.xml b/indra/newview/skins/default/xui/en/menu_avatar_icon.xml new file mode 100644 index 0000000000000000000000000000000000000000..df510d68eb7dbde61e95d1ee487bb2600211e488 --- /dev/null +++ b/indra/newview/skins/default/xui/en/menu_avatar_icon.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<menu + height="101" + layout="topleft" + left="100" + mouse_opaque="false" + name="Avatar Icon Menu" + top="724" + visible="false" + width="128"> + <menu_item_call + label="Show Profile..." + layout="topleft" + name="Show Profile"> + <menu_item_call.on_click + function="AvatarIcon.Action" + parameter="profile" /> + </menu_item_call> + <menu_item_call + label="Send IM..." + layout="topleft" + name="Send IM"> + <menu_item_call.on_click + function="AvatarIcon.Action" + parameter="im" /> + </menu_item_call> + <menu_item_call + label="Add Friend..." + layout="topleft" + name="Add Friend"> + <menu_item_call.on_click + function="AvatarIcon.Action" + parameter="add" /> + </menu_item_call> + <menu_item_call + label="Remove Friend..." + layout="topleft" + name="Remove Friend"> + <menu_item_call.on_click + function="AvatarIcon.Action" + parameter="remove" /> + </menu_item_call> +</menu> diff --git a/indra/newview/skins/default/xui/en/menu_favorites.xml b/indra/newview/skins/default/xui/en/menu_favorites.xml new file mode 100644 index 0000000000000000000000000000000000000000..7e4bbe3c9d0c47345b54ffaa6d8e8586288b22ca --- /dev/null +++ b/indra/newview/skins/default/xui/en/menu_favorites.xml @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<menu + bottom="825" + layout="topleft" + name="Popup" + visible="false"> + <menu_item_call + label="Teleport" + layout="topleft" + name="Landmark Open"> + <menu_item_call.on_click + function="Favorites.DoToSelected" + parameter="open" /> + </menu_item_call> + <menu_item_call + label="About Landmark" + layout="topleft" + name="Teleport To Landmark"> + <menu_item_call.on_click + function="Favorites.DoToSelected" + parameter="about" /> + </menu_item_call> +<!-- <menu_item_call --> +<!-- label="Rename" --> +<!-- layout="topleft" --> +<!-- name="Rename"> --> +<!-- <menu_item_call.on_click --> +<!-- function="Favorites.DoToSelected" --> +<!-- parameter="rename" /> --> +<!-- </menu_item_call> --> + <menu_item_call + label="Delete" + layout="topleft" + name="Delete"> + <menu_item_call.on_click + function="Favorites.DoToSelected" + parameter="delete" /> + </menu_item_call> +</menu> diff --git a/indra/newview/skins/default/xui/en/menu_group_plus.xml b/indra/newview/skins/default/xui/en/menu_group_plus.xml new file mode 100644 index 0000000000000000000000000000000000000000..2029b19c1c82998958720bcefe284f209bde8e33 --- /dev/null +++ b/indra/newview/skins/default/xui/en/menu_group_plus.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<menu name="menu_group_plus" + left="0" bottom="0" visible="false" + mouse_opaque="false" opaque="true" color="MenuDefaultBgColor" drop_shadow="true"> + <menu_item_call name="item_join" label="Join Group..."> + <menu_item_call.on_click function="People.Group.Plus.Action" userdata="join_group" /> + </menu_item_call> + <menu_item_call name="item_new" label="New Group..."> + <menu_item_call.on_click function="People.Group.Plus.Action" userdata="new_group" /> + </menu_item_call> +</menu> diff --git a/indra/newview/skins/default/xui/en/menu_inventory.xml b/indra/newview/skins/default/xui/en/menu_inventory.xml new file mode 100644 index 0000000000000000000000000000000000000000..808618ba9685fc55c0faa80f1cfda64651697ca1 --- /dev/null +++ b/indra/newview/skins/default/xui/en/menu_inventory.xml @@ -0,0 +1,518 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<menu + bottom="825" + layout="topleft" + name="Popup" + visible="false"> + <menu_item_call + label="Buy" + layout="topleft" + name="Task Buy"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="task_buy" /> + </menu_item_call> + <menu_item_call + label="Open" + layout="topleft" + name="Task Open"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="task_open" /> + </menu_item_call> + <menu_item_call + label="Play" + layout="topleft" + name="Task Play"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="task_play" /> + </menu_item_call> + <menu_item_call + label="Properties" + layout="topleft" + name="Task Properties"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="task_properties" /> + </menu_item_call> + <menu_item_call + label="Rename" + layout="topleft" + name="Task Rename"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="rename" /> + </menu_item_call> + <menu_item_call + label="Delete" + layout="topleft" + name="Task Remove"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="delete" /> + </menu_item_call> + <menu_item_call + label="Empty Trash" + layout="topleft" + name="Empty Trash"> + <menu_item_call.on_click + function="Inventory.EmptyTrash" + parameter="rename" /> + </menu_item_call> + <menu_item_call + label="Empty Lost And Found" + layout="topleft" + name="Empty Lost And Found"> + <menu_item_call.on_click + function="Inventory.EmptyLostAndFound" + parameter="rename" /> + </menu_item_call> + <menu_item_call + label="New Folder" + layout="topleft" + name="New Folder"> + <menu_item_call.on_click + function="Inventory.DoCreate" + parameter="category" /> + </menu_item_call> + <menu_item_call + label="New Script" + layout="topleft" + name="New Script"> + <menu_item_call.on_click + function="Inventory.DoCreate" + parameter="lsl" /> + </menu_item_call> + <menu_item_call + label="New Note" + layout="topleft" + name="New Note"> + <menu_item_call.on_click + function="Inventory.DoCreate" + parameter="notecard" /> + </menu_item_call> + <menu_item_call + label="New Gesture" + layout="topleft" + name="New Gesture"> + <menu_item_call.on_click + function="Inventory.DoCreate" + parameter="gesture" /> + </menu_item_call> + <menu + label="New Clothes" + layout="topleft" + name="New Clothes"> + <menu_item_call + label="New Shirt" + layout="topleft" + name="New Shirt"> + <menu_item_call.on_click + function="Inventory.DoCreate" + parameter="shirt" /> + </menu_item_call> + <menu_item_call + label="New Pants" + layout="topleft" + name="New Pants"> + <menu_item_call.on_click + function="Inventory.DoCreate" + parameter="pants" /> + </menu_item_call> + <menu_item_call + label="New Shoes" + layout="topleft" + name="New Shoes"> + <menu_item_call.on_click + function="Inventory.DoCreate" + parameter="shoes" /> + </menu_item_call> + <menu_item_call + label="New Socks" + layout="topleft" + name="New Socks"> + <menu_item_call.on_click + function="Inventory.DoCreate" + parameter="socks" /> + </menu_item_call> + <menu_item_call + label="New Jacket" + layout="topleft" + name="New Jacket"> + <menu_item_call.on_click + function="Inventory.DoCreate" + parameter="jacket" /> + </menu_item_call> + <menu_item_call + label="New Skirt" + layout="topleft" + name="New Skirt"> + <menu_item_call.on_click + function="Inventory.DoCreate" + parameter="skirt" /> + </menu_item_call> + <menu_item_call + label="New Gloves" + layout="topleft" + name="New Gloves"> + <menu_item_call.on_click + function="Inventory.DoCreate" + parameter="gloves" /> + </menu_item_call> + <menu_item_call + label="New Undershirt" + layout="topleft" + name="New Undershirt"> + <menu_item_call.on_click + function="Inventory.DoCreate" + parameter="undershirt" /> + </menu_item_call> + <menu_item_call + label="New Underpants" + layout="topleft" + name="New Underpants"> + <menu_item_call.on_click + function="Inventory.DoCreate" + parameter="underpants" /> + </menu_item_call> + <menu_item_call + label="New Alpha Mask" + layout="topleft" + name="New Alpha Mask"> + <menu_item_call.on_click + function="Inventory.DoCreate" + parameter="alpha" /> + </menu_item_call> + <menu_item_call + label="New Tattoo" + layout="topleft" + name="New Tattoo"> + <menu_item_call.on_click + function="Inventory.DoCreate" + parameter="tattoo" /> + </menu_item_call> + </menu> + <menu + label="New Body Parts" + layout="topleft" + name="New Body Parts"> + <menu_item_call + label="New Shape" + layout="topleft" + name="New Shape"> + <menu_item_call.on_click + function="Inventory.DoCreate" + parameter="shape" /> + </menu_item_call> + <menu_item_call + label="New Skin" + layout="topleft" + name="New Skin"> + <menu_item_call.on_click + function="Inventory.DoCreate" + parameter="skin" /> + </menu_item_call> + <menu_item_call + label="New Hair" + layout="topleft" + name="New Hair"> + <menu_item_call.on_click + function="Inventory.DoCreate" + parameter="hair" /> + </menu_item_call> + <menu_item_call + label="New Eyes" + layout="topleft" + name="New Eyes"> + <menu_item_call.on_click + function="Inventory.DoCreate" + parameter="eyes" /> + </menu_item_call> + </menu> + <menu_item_call + label="Teleport" + layout="topleft" + name="Landmark Open"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="open" /> + </menu_item_call> + <menu_item_call + label="Open" + layout="topleft" + name="Animation Open"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="open" /> + </menu_item_call> + <menu_item_call + label="Open" + layout="topleft" + name="Sound Open"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="open" /> + </menu_item_call> + <menu_item_call + label="Purge Item" + layout="topleft" + name="Purge Item"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="purge" /> + </menu_item_call> + <menu_item_call + label="Restore Item" + layout="topleft" + name="Restore Item"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="restore" /> + </menu_item_call> + <menu_item_call + label="Open" + layout="topleft" + name="Open"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="open" /> + </menu_item_call> + <menu_item_call + label="Properties" + layout="topleft" + name="Properties"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="properties" /> + </menu_item_call> + <menu_item_call + label="Rename" + layout="topleft" + name="Rename"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="rename" /> + </menu_item_call> + <menu_item_call + label="Copy Asset UUID" + layout="topleft" + name="Copy Asset UUID"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="copy_uuid" /> + </menu_item_call> + <menu_item_separator + layout="topleft" /> + <menu_item_call + label="Copy" + layout="topleft" + name="Copy"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="copy" /> + </menu_item_call> + <menu_item_call + label="Paste" + layout="topleft" + name="Paste"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="paste" /> + </menu_item_call> + <menu_item_separator + layout="topleft" /> + <menu_item_call + label="Delete" + layout="topleft" + name="Delete"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="delete" /> + </menu_item_call> + <menu_item_separator + layout="topleft" /> + <menu_item_call + label="Take Off Items" + layout="topleft" + name="Take Off Items"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="removefromoutfit" /> + </menu_item_call> + <menu_item_call + label="Add To Outfit" + layout="topleft" + name="Add To Outfit"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="addtooutfit" /> + </menu_item_call> + <menu_item_call + label="Replace Outfit" + layout="topleft" + name="Replace Outfit"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="replaceoutfit" /> + </menu_item_call> + <menu_item_separator + layout="topleft" /> + <menu_item_call + label="Start Conference Chat" + layout="topleft" + name="Conference Chat Folder"> + <menu_item_call.on_click + function="Inventory.BeginIMSession" + parameter="everyone" /> + </menu_item_call> + <menu_item_separator + layout="topleft" /> + <menu_item_call + label="Play" + layout="topleft" + name="Sound Play"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="open" /> + </menu_item_call> + <menu_item_separator + layout="topleft" /> + <menu_item_call + label="About Landmark" + layout="topleft" + name="Teleport To Landmark"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="about" /> + </menu_item_call> + <menu_item_separator + layout="topleft" /> + <menu_item_call + label="Play in World" + layout="topleft" + name="Animation Play"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="playworld" /> + </menu_item_call> + <menu_item_call + label="Play Locally" + layout="topleft" + name="Animation Audition"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="playlocal" /> + </menu_item_call> + <menu_item_separator + layout="topleft" /> + <menu_item_call + label="Send Instant Message" + layout="topleft" + name="Send Instant Message"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="begin_im" /> + </menu_item_call> + <menu_item_call + label="Offer Teleport..." + layout="topleft" + name="Offer Teleport..."> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="lure" /> + </menu_item_call> + <menu_item_call + label="Start Conference Chat" + layout="topleft" + name="Conference Chat"> + <menu_item_call.on_click + function="Inventory.BeginIMSession" + parameter="selected" /> + </menu_item_call> + <menu_item_separator + layout="topleft" /> + <menu_item_call + label="Activate" + layout="topleft" + name="Activate"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="activate" /> + </menu_item_call> + <menu_item_call + label="Deactivate" + layout="topleft" + name="Deactivate"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="deactivate" /> + </menu_item_call> + <menu_item_separator + layout="topleft" /> + <menu_item_call + label="Detach From Yourself" + layout="topleft" + name="Detach From Yourself"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="detach" /> + </menu_item_call> + <!-- COMMENTED OUT for DEV-32347 --> + <!-- + <menu_item_call + label="Restore to Last Position" + layout="topleft" + name="Restore to Last Position"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="restoreToWorld" /> + </menu_item_call> + --> + <menu_item_call + label="Wear" + layout="topleft" + name="Object Wear"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="attach" /> + </menu_item_call> + <menu + label="Attach To" + layout="topleft" + name="Attach To" /> + <menu + label="Attach To HUD" + layout="topleft" + name="Attach To HUD" /> + <menu_item_call + label="Edit" + layout="topleft" + name="Wearable Edit"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="edit" /> + </menu_item_call> + <menu_item_call + label="Wear" + layout="topleft" + name="Wearable Wear"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="wear" /> + </menu_item_call> + <menu_item_call + label="Take Off" + layout="topleft" + name="Take Off"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="take_off" /> + </menu_item_call> + <menu_item_call + label="--no options--" + layout="topleft" + name="--no options--" /> + <menu_item_separator + layout="topleft" /> +</menu> diff --git a/indra/newview/skins/default/xui/en/menu_login.xml b/indra/newview/skins/default/xui/en/menu_login.xml new file mode 100644 index 0000000000000000000000000000000000000000..eb3dcc225e5b8e9e1ea711d9d88336f71849243c --- /dev/null +++ b/indra/newview/skins/default/xui/en/menu_login.xml @@ -0,0 +1,105 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<menu_bar + follows="left|top|right" + height="18" + layout="topleft" + left_delta="0" + name="Login Menu" + top_delta="0" + width="802"> + <menu + create_jump_keys="true" + label="File" + layout="topleft" + name="File"> + <menu_item_call + label="Quit" + layout="topleft" + name="Quit" + shortcut="control|Q"> + <menu_item_call.on_click + function="File.Quit" /> + </menu_item_call> + </menu> + <menu + create_jump_keys="true" + label="Edit" + layout="topleft" + name="Edit" + width="153"> + <menu_item_call + label="Preferences..." + layout="topleft" + name="Preferences..." + shortcut="control|P"> + <menu_item_call.on_click + function="ShowFloater" + parameter="preferences" /> + </menu_item_call> + </menu> + <menu + create_jump_keys="true" + label="Help" + layout="topleft" + name="Help"> + <menu_item_call + label="Second Life Help" + layout="topleft" + name="Second Life Help" + shortcut="F1"> + <menu_item_call.on_click + function="ShowFloater" + parameter="help f1" /> + </menu_item_call> + <menu_item_call + label="About Second Life..." + layout="topleft" + name="About Second Life..."> + <menu_item_call.on_click + function="ShowFloater" + parameter="about" /> + </menu_item_call> + </menu> + <menu + create_jump_keys="true" + label="Debug" + layout="topleft" + name="Debug"> + <menu_item_call + label="Debug Settings" + layout="topleft" + name="Debug Settings"> + <menu_item_call.on_click + function="Advanced.ShowDebugSettings" + parameter="all" /> + </menu_item_call> + <menu_item_call + label="UI/Color Settings" + layout="topleft" + name="UI/Color Settings"> + <menu_item_call.on_click + function="Advanced.ShowDebugSettings" + parameter="skin" /> + </menu_item_call> + <menu_item_separator + layout="topleft" /> + <menu_item_call + label="UI Preview Tool" + layout="topleft" + name="UI Preview Tool" + shortcut="control|T"> + <menu_item_call.on_click + function="ShowFloater" + parameter="ui_preview" /> + </menu_item_call> + <menu_item_call + label="Widget Test" + layout="topleft" + name="Widget Test" + shortcut="control|shift|T"> + <menu_item_call.on_click + function="ShowFloater" + parameter="test_widgets" /> + </menu_item_call> + </menu> +</menu_bar> diff --git a/indra/newview/skins/default/xui/en/menu_mini_map.xml b/indra/newview/skins/default/xui/en/menu_mini_map.xml new file mode 100644 index 0000000000000000000000000000000000000000..a5e1f35142a00eb2e060d13ade4869bd7c927d37 --- /dev/null +++ b/indra/newview/skins/default/xui/en/menu_mini_map.xml @@ -0,0 +1,56 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<menu + height="101" + layout="topleft" + left="100" + mouse_opaque="false" + name="popup" + top="724" + width="128"> + <menu_item_call + label="Zoom Close" + layout="topleft" + name="Zoom Close"> + <menu_item_call.on_click + function="MiniMap.ZoomLevel" + parameter="2" /> + </menu_item_call> + <menu_item_call + label="Zoom Medium" + layout="topleft" + name="Zoom Medium"> + <menu_item_call.on_click + function="MiniMap.ZoomLevel" + parameter="1" /> + </menu_item_call> + <menu_item_call + label="Zoom Far" + layout="topleft" + name="Zoom Far"> + <menu_item_call.on_click + function="MiniMap.ZoomLevel" + parameter="0" /> + </menu_item_call> + <menu_item_separator + layout="topleft" /> + <menu_item_call + enabled="false" + label="Stop Tracking" + layout="topleft" + name="Stop Tracking"> + <menu_item_call.on_click + function="MiniMap.StopTracking" /> + <menu_item_call.on_enable + function="MiniMap.EnableTracking" /> + </menu_item_call> + <menu_item_call + enabled="false" + label="Profile..." + layout="topleft" + name="Profile"> + <menu_item_call.on_click + function="MiniMap.ShowProfile" /> + <menu_item_call.on_enable + function="MiniMap.EnableProfile" /> + </menu_item_call> +</menu> diff --git a/indra/newview/skins/default/xui/en/menu_navbar.xml b/indra/newview/skins/default/xui/en/menu_navbar.xml new file mode 100644 index 0000000000000000000000000000000000000000..725321648b59e1f564b3401d3cc91380589a8026 --- /dev/null +++ b/indra/newview/skins/default/xui/en/menu_navbar.xml @@ -0,0 +1,85 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<menu + height="201" + layout="topleft" + left="100" + mouse_opaque="false" + name="Navbar Menu" + top="624" + visible="false" + width="128"> + <menu_item_call + label="Copy SLURL to Clipboard" + layout="topleft" + name="Copy SLURL"> + <menu_item_call.on_click + function="Navbar.Action" + parameter="copy_url" /> + </menu_item_call> + <menu_item_call + label="Add Landmark..." + layout="topleft" + name="Add Landmark"> + <menu_item_call.on_click + function="Navbar.Action" + parameter="landmark" /> + </menu_item_call> + <menu_item_separator + layout="topleft" + name="Separator" /> + <menu_item_call + label="Cut" + layout="topleft" + name="Cut"> + <menu_item_call.on_click + function="Navbar.Action" + parameter="cut" /> + <menu_item_call.on_enable + function="Navbar.EnableMenuItem" + parameter="can_cut" /> + </menu_item_call> + <menu_item_call + label="Copy" + layout="topleft" + name="Copy"> + <menu_item_call.on_click + function="Navbar.Action" + parameter="copy" /> + <menu_item_call.on_enable + function="Navbar.EnableMenuItem" + parameter="can_copy" /> + </menu_item_call> + <menu_item_call + label="Paste" + layout="topleft" + name="Paste"> + <menu_item_call.on_click + function="Navbar.Action" + parameter="paste" /> + <menu_item_call.on_enable + function="Navbar.EnableMenuItem" + parameter="can_paste" /> + </menu_item_call> + <menu_item_call + label="Delete" + layout="topleft" + name="Delete"> + <menu_item_call.on_click + function="Navbar.Action" + parameter="delete" /> + <menu_item_call.on_enable + function="Navbar.EnableMenuItem" + parameter="can_delete" /> + </menu_item_call> + <menu_item_call + label="Select All" + layout="topleft" + name="Select All"> + <menu_item_call.on_click + function="Navbar.Action" + parameter="select_all" /> + <menu_item_call.on_enable + function="Navbar.EnableMenuItem" + parameter="can_select_all" /> + </menu_item_call> +</menu> diff --git a/indra/newview/skins/default/xui/en/menu_nearby_chat.xml b/indra/newview/skins/default/xui/en/menu_nearby_chat.xml new file mode 100644 index 0000000000000000000000000000000000000000..5eb4b10af9ecdcfe75c8f908d5aa1c39ae9c9c98 --- /dev/null +++ b/indra/newview/skins/default/xui/en/menu_nearby_chat.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<menu bottom="100" color="MenuDefaultBgColor" drop_shadow="true" height="101" left="100" + mouse_opaque="false" name="NearBy Chat Menu" opaque="true" width="128" visible="false"> + <menu_item_call bottom_delta="-18" height="18" label="Keep Visible" left="0" mouse_opaque="true" + name="keep_visible" width="128"> + <menu_item_call.on_click function="NearbyChat.Action" userdata="keep_visible" /> + </menu_item_call> + <menu_item_call bottom_delta="-18" height="18" label="Show Nearby People..." left="0" mouse_opaque="true" + name="nearby_people" width="128"> + <menu_item_call.on_click function="NearbyChat.Action" userdata="nearby_people" /> + </menu_item_call> + + <menu_item_separator /> + <menu_item_check bottom_delta="-18" height="18" label="Show Muted Text" left="0" mouse_opaque="true" + name="muted_text" width="128"> + <menu_item_check.on_click function="NearbyChat.Action" userdata="muted_text" /> + <menu_item_check.on_check function="NearbyChat.Check" userdata="muted_text"/> + </menu_item_check> + + <menu_item_separator /> + + <menu_item_check bottom_delta="-18" height="18" label="Show Buddy Icons" left="0" mouse_opaque="true" + name="show_buddy_icons" width="128"> + <menu_item_check.on_click function="NearbyChat.Action" userdata="show_buddy_icons" /> + <menu_item_check.on_check function="NearbyChat.Check" userdata="show_buddy_icons"/> + </menu_item_check> + <menu_item_check bottom_delta="-18" height="18" label="Show Names" left="0" mouse_opaque="true" + name="show_names" width="128"> + <menu_item_check.on_click function="NearbyChat.Action" userdata="show_names" /> + <menu_item_check.on_check function="NearbyChat.Check" userdata="show_names"/> + </menu_item_check> + <menu_item_check bottom_delta="-18" height="18" label="Show Icons and Names" left="0" mouse_opaque="true" + name="show_icons_and_names" width="128"> + <menu_item_check.on_click function="NearbyChat.Action" userdata="show_icons_and_names" /> + <menu_item_check.on_check function="NearbyChat.Check" userdata="show_icons_and_names"/> + </menu_item_check> + + <menu_item_separator /> + <menu_item_call bottom_delta="-18" height="18" label="Font Size" left="0" mouse_opaque="true" + name="font_size" width="128"> + <menu_item_call.on_click function="NearbyChat.Action" userdata="font_size" /> + </menu_item_call> +</menu> diff --git a/indra/newview/skins/default/xui/en/menu_slurl.xml b/indra/newview/skins/default/xui/en/menu_slurl.xml new file mode 100644 index 0000000000000000000000000000000000000000..d5d9d3c43da5a1b51527f02ae618d2018e715ef4 --- /dev/null +++ b/indra/newview/skins/default/xui/en/menu_slurl.xml @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<menu + height="101" + layout="topleft" + left="100" + mouse_opaque="false" + name="Popup" + top="724" + width="128"> + <menu_item_separator + layout="topleft" + name="Landmark Separator" /> + <menu_item_call + label="About URL" + layout="topleft" + name="about_url"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="about" /> + </menu_item_call> + <menu_item_call + label="Teleport to URL" + layout="topleft" + name="teleport_to_url"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="about" /> + </menu_item_call> + <menu_item_call + label="Show on Map" + layout="topleft" + name="show_on_map"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="about" /> + </menu_item_call> +</menu> diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml new file mode 100644 index 0000000000000000000000000000000000000000..926b51d4c1f28739d2c2fe83fabac86652f0e848 --- /dev/null +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -0,0 +1,3545 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<menu_bar + bg_visible="false" + follows="left|top|right" + layout="topleft" + name="Main Menu"> + <menu + label="Me" + layout="topleft" + name="Me" + tear_off="true"> + <menu_item_call + label="Preferences" + layout="topleft" + name="Preferences" + shortcut="control|P"> + <menu_item_call.on_click + function="ShowFloater" + parameter="preferences" /> + </menu_item_call> + <menu_item_separator + layout="topleft" /> + <menu + label="My Account" + layout="topleft" + name="My Account" + tear_off="true"> + <menu_item_call + label="Account History" + layout="topleft" + name="Account History"> + <menu_item_call.on_click + function="PromptShowURL" + parameter="WebLaunchAccountHistory,http://secondlife.com/account/transactions.php" /> + </menu_item_call> + <menu_item_call + label="Manage My Account" + layout="topleft" + name="Manage My Account"> + <menu_item_call.on_click + function="PromptShowURL" + parameter="WebLaunchJoinNow,http://secondlife.com/account/" /> + </menu_item_call> + <menu_item_separator + layout="topleft" /> + <menu_item_call + label="My Land" + layout="topleft" + name="My Land"> + <menu_item_call.on_click + function="ShowFloater" + parameter="my land" /> + </menu_item_call> + <menu_item_call + label="Buy Land" + layout="topleft" + name="Buy Land"> + <menu_item_call.on_click + function="ShowFloater" + parameter="buy land" /> + <menu_item_call.on_enable + function="World.EnableBuyLand" /> + </menu_item_call> + </menu> + <menu_item_call + label="Buy L$" + layout="topleft" + name="Buy and Sell L$"> + <menu_item_call.on_click + function="ShowFloater" + parameter="buy currency" /> + </menu_item_call> + <menu_item_separator + layout="topleft" /> + <menu_item_call + label="My Profile" + layout="topleft" + name="Profile"> + <menu_item_call.on_click + function="ShowAgentProfile" + parameter="agent" /> + </menu_item_call> + <menu_item_call + label="My Appearance" + layout="topleft" + name="Appearance"> + <menu_item_call.on_click + function="ShowFloater" + parameter="appearance" /> + <menu_item_call.on_enable + function="Edit.EnableCustomizeAvatar" /> + </menu_item_call> + <menu_item_check + label="My Inventory" + layout="topleft" + name="Inventory" + shortcut="control|I"> + <menu_item_check.on_check + function="Floater.Visible" + parameter="inventory" /> + <menu_item_check.on_click + function="Floater.Toggle" + parameter="inventory" /> + </menu_item_check> + <menu_item_call + label="My Gestures" + layout="topleft" + name="Gestures" + shortcut="control|G"> + <menu_item_call.on_click + function="ShowFloater" + parameter="gestures" /> + </menu_item_call> + <menu_item_separator + layout="topleft" /> + <menu + label="Status" + layout="topleft" + name="Status" + tear_off="true"> + <menu_item_call + label="Set Away" + layout="topleft" + name="Set Away"> + <menu_item_call.on_click + function="World.SetAway" /> + </menu_item_call> + <menu_item_call + label="Set Busy" + layout="topleft" + name="Set Busy"> + <menu_item_call.on_click + function="World.SetBusy" /> + </menu_item_call> + </menu> + <menu_item_separator + layout="topleft" /> + <menu_item_call + label="Exit Second Life" + layout="topleft" + name="Quit" + shortcut="control|Q"> + <menu_item_call.on_click + function="File.Quit" /> + </menu_item_call> + </menu> + <menu + label="Communicate" + layout="topleft" + name="Communicate" + tear_off="true"> + <menu_item_check + label="My Friends" + layout="topleft" + name="My Friends" + shortcut="control|shift|F"> + <menu_item_check.on_check + function="Floater.Visible" + parameter="contacts.friends" /> + <menu_item_check.on_click + function="Floater.Toggle" + parameter="contacts.friends" /> + </menu_item_check> + <menu_item_call + label="My Groups" + layout="topleft" + name="My Groups"> + <menu_item_call.on_click + function="Floater.Show" + parameter="contacts.groups" /> + </menu_item_call> + <menu_item_separator + layout="topleft" /> + <menu_item_call + label="Chat" + layout="topleft" + name="Chat"> + <menu_item_call.on_click + function="World.Chat" /> + </menu_item_call> + <menu_item_check + label="Local Chat" + layout="topleft" + name="Chat History" + shortcut="control|H"> + <menu_item_check.on_check + function="Floater.Visible" + parameter="chat" /> + <menu_item_check.on_click + function="Floater.Toggle" + parameter="chat" /> + </menu_item_check> + <menu_item_check + label="Nearby Chat" + layout="topleft" + name="Nearby Chat" + shortcut="control|N"> + <menu_item_check.on_check + function="Floater.Visible" + parameter="nearby_chat" /> + <menu_item_check.on_click + function="Floater.Toggle" + parameter="nearby_chat" /> + </menu_item_check> + <menu_item_check + label="Communicate" + layout="topleft" + name="Instant Message" + shortcut="control|T"> + <menu_item_check.on_check + function="Floater.Visible" + parameter="communicate" /> + <menu_item_check.on_click + function="Floater.Toggle" + parameter="communicate" /> + </menu_item_check> + <menu_item_separator + layout="topleft" /> + <menu_item_check + label="Active Speakers" + layout="topleft" + name="Active Speakers"> + <menu_item_check.on_check + function="FloaterVisible" + parameter="active speakers" /> + <menu_item_check.on_click + function="ShowFloater" + parameter="active speakers" /> + </menu_item_check> + <menu_item_check + label="Mute List" + layout="topleft" + name="Mute List"> + <menu_item_check.on_check + function="FloaterVisible" + parameter="mute list" /> + <menu_item_check.on_click + function="ShowFloater" + parameter="mute list" /> + </menu_item_check> + </menu> + <menu + label="World" + layout="topleft" + name="World" + tear_off="true"> + <menu_item_check + label="Camera Controls" + layout="topleft" + name="Camera Controls"> + <menu_item_check.on_check + function="FloaterVisible" + parameter="camera controls" /> + <menu_item_check.on_click + function="ShowFloater" + parameter="camera controls" /> + </menu_item_check> + <menu_item_check + label="Movement Controls" + layout="topleft" + name="Movement Controls"> + <menu_item_check.on_check + function="FloaterVisible" + parameter="movement controls" /> + <menu_item_check.on_click + function="ShowFloater" + parameter="movement controls" /> + </menu_item_check> + <menu_item_separator + layout="topleft" /> + <menu_item_call + label="About Land" + layout="topleft" + name="About Land"> + <menu_item_call.on_click + function="ShowFloater" + parameter="about land" /> + </menu_item_call> + <menu_item_call + label="Region/Estate" + layout="topleft" + name="Region/Estate"> + <menu_item_call.on_click + function="ShowFloater" + parameter="about region" /> + </menu_item_call> + <menu_item_separator + layout="topleft" /> + <menu + label="Landmarks" + layout="topleft" + name="Landmarks" + tear_off="true"> + <menu_item_call + label="Create Landmark Here" + layout="topleft" + name="Create Landmark Here"> + <menu_item_call.on_click + function="World.CreateLandmark" /> + <menu_item_call.on_enable + function="World.EnableCreateLandmark" /> + </menu_item_call> + <menu_item_call + label="Set Home to Here" + layout="topleft" + name="Set Home to Here"> + <menu_item_call.on_click + function="World.SetHomeLocation" /> + <menu_item_call.on_enable + function="World.EnableSetHomeLocation" /> + </menu_item_call> + <menu_item_call + label="Teleport Home" + layout="topleft" + name="Teleport Home" + shortcut="control|shift|H"> + <menu_item_call.on_click + function="World.TeleportHome" /> + <menu_item_call.on_enable + function="World.EnableTeleportHome" /> + </menu_item_call> + </menu> + <menu_item_check + label="Search" + layout="topleft" + name="Search" + shortcut="control|F"> + <menu_item_check.on_check + function="Floater.Visible" + parameter="search" /> + <menu_item_check.on_click + function="Floater.Toggle" + parameter="search" /> + </menu_item_check> + <menu_item_check + label="World Map" + layout="topleft" + name="World Map" + shortcut="control|M"> + <menu_item_check.on_check + function="Floater.Visible" + parameter="world_map" /> + <menu_item_check.on_click + function="Floater.Toggle" + parameter="world_map" /> + </menu_item_check> + <menu_item_check + label="Mini-Map" + layout="topleft" + name="Mini-Map" + shortcut="control|shift|M"> + <menu_item_check.on_check + function="FloaterVisible" /> + <menu_item_check.on_click + function="ShowFloater" + parameter="mini_map" /> + </menu_item_check> + <menu_item_separator + layout="topleft" /> + <menu_item_call + label="Take Snapshot" + layout="topleft" + name="Take Snapshot" + shortcut="control|shift|S"> + <menu_item_call.on_click + function="Floater.Show" + parameter="snapshot" /> + </menu_item_call> + <menu_item_separator + layout="topleft" /> + <menu_item_check + label="Build" + layout="topleft" + name="Build" + shortcut="B"> + <menu_item_check.on_check + function="Build.Active" /> + <menu_item_check.on_click + function="Build.Toggle" /> + <menu_item_check.on_enable + function="Build.Enabled" /> + </menu_item_check> + </menu> + <menu + label="Help" + layout="topleft" + name="Help" + tear_off="true"> + <menu_item_call + label="Second Life Help" + layout="topleft" + name="Second Life Help" + shortcut="F1"> + <menu_item_call.on_click + function="ShowFloater" + parameter="help f1" /> + </menu_item_call> + <menu_item_call + label="Tutorial" + layout="topleft" + name="Tutorial"> + <menu_item_call.on_click + function="ShowFloater" + parameter="help tutorial" /> + </menu_item_call> + <menu + label="Report" + layout="topleft" + name="Report" + tear_off="true"> + <menu_item_call + label="Report Abuse" + layout="topleft" + name="Report Abuse"> + <menu_item_call.on_click + function="ShowFloater" + parameter="complaint reporter" /> + </menu_item_call> + <menu_item_call + label="Report Bug" + layout="topleft" + name="Report Bug"> + <menu_item_call.on_click + function="PromptShowURL" + parameter="WebLaunchPublicIssue,http://jira.secondlife.com" /> + </menu_item_call> + <menu_item_call + label="Bumps, Pushes & Hits." + layout="topleft" + name="Bumps, Pushes &amp; Hits"> + <menu_item_call.on_click + function="ShowFloater" + parameter="mean events" /> + </menu_item_call> + <menu_item_call + label="About Second Life" + layout="topleft" + name="About Second Life"> + <menu_item_call.on_click + function="ShowFloater" + parameter="about" /> + </menu_item_call> + </menu> + </menu> + <menu + create_jump_keys="true" + label="Tools" + layout="topleft" + name="BuildTools" + tear_off="true" + visible="false"> + <menu + create_jump_keys="true" + label="Edit" + layout="topleft" + name="Edit" + tear_off="true"> + <menu_item_call + label="Undo" + layout="topleft" + name="Undo" + shortcut="control|Z"> + <menu_item_call.on_click + function="Edit.Undo" /> + <menu_item_call.on_enable + function="Edit.EnableUndo" /> + </menu_item_call> + <menu_item_call + label="Redo" + layout="topleft" + name="Redo" + shortcut="control|Y"> + <menu_item_call.on_click + function="Edit.Redo" /> + <menu_item_call.on_enable + function="Edit.EnableRedo" /> + </menu_item_call> + <menu_item_separator + layout="topleft" /> + <menu_item_call + label="Cut" + layout="topleft" + name="Cut" + shortcut="control|X"> + <menu_item_call.on_click + function="Edit.Cut" /> + <menu_item_call.on_enable + function="Edit.EnableCut" /> + </menu_item_call> + <menu_item_call + label="Copy" + layout="topleft" + name="Copy" + shortcut="control|C"> + <menu_item_call.on_click + function="Edit.Copy" /> + <menu_item_call.on_enable + function="Edit.EnableCopy" /> + </menu_item_call> + <menu_item_call + label="Paste" + layout="topleft" + name="Paste" + shortcut="control|V"> + <menu_item_call.on_click + function="Edit.Paste" /> + <menu_item_call.on_enable + function="Edit.EnablePaste" /> + </menu_item_call> + <menu_item_call + label="Delete" + layout="topleft" + name="Delete" + shortcut="Del"> + <menu_item_call.on_click + function="Edit.Delete" /> + <menu_item_call.on_enable + function="Edit.EnableDelete" /> + </menu_item_call> + <menu_item_call + label="Duplicate" + layout="topleft" + name="Duplicate" + shortcut="control|D"> + <menu_item_call.on_click + function="Edit.Duplicate" /> + <menu_item_call.on_enable + function="Edit.EnableDuplicate" /> + </menu_item_call> + <menu_item_separator + layout="topleft" /> + <menu_item_call + label="Select All" + layout="topleft" + name="Select All" + shortcut="control|A"> + <menu_item_call.on_click + function="Edit.SelectAll" /> + <menu_item_call.on_enable + function="Edit.EnableSelectAll" /> + </menu_item_call> + <menu_item_call + label="Deselect" + layout="topleft" + name="Deselect" + shortcut="control|E"> + <menu_item_call.on_click + function="Edit.Deselect" /> + <menu_item_call.on_enable + function="Edit.EnableDeselect" /> + </menu_item_call> + </menu> + <menu + create_jump_keys="true" + label="Options" + layout="topleft" + name="Options" + tear_off="true"> + <menu_item_check + label="Edit Linked Parts" + layout="topleft" + name="Edit Linked Parts"> + <menu_item_check.on_check + control="EditLinkedParts" /> + <menu_item_check.on_click + function="Tools.EditLinkedParts" + parameter="EditLinkedParts" /> + <menu_item_check.on_enable + function="Tools.EnableToolNotPie" /> + </menu_item_check> + <menu_item_call + label="Set Default Permissions" + layout="topleft" + name="perm prefs"> + <menu_item_call.on_click + function="ShowFloater" + parameter="perm prefs" /> + </menu_item_call> + <menu_item_call + label="Show Script Warning/Error Window" + layout="topleft" + name="Show Script Warning/Error Window"> + <menu_item_call.on_click + function="ShowFloater" + parameter="script errors" /> + </menu_item_call> + <menu_item_separator + layout="topleft" /> + <menu + create_jump_keys="true" + label="Selection" + layout="topleft" + name="Selection" + tear_off="true"> + <menu_item_check + label="Select Only My Objects" + layout="topleft" + name="Select Only My Objects"> + <menu_item_check.on_check + control="SelectOwnedOnly" /> + <menu_item_check.on_click + function="Tools.SelectOnlyMyObjects" + parameter="agents" /> + </menu_item_check> + <menu_item_check + label="Select Only Movable Objects" + layout="topleft" + name="Select Only Movable Objects"> + <menu_item_check.on_check + control="SelectMovableOnly" /> + <menu_item_check.on_click + function="Tools.SelectOnlyMovableObjects" + parameter="movable" /> + </menu_item_check> + <menu_item_check + label="Select By Surrounding" + layout="topleft" + name="Select By Surrounding"> + <menu_item_check.on_check + control="RectangleSelectInclusive" /> + <menu_item_check.on_click + function="Tools.SelectBySurrounding" /> + </menu_item_check> + </menu> + <menu + create_jump_keys="true" + label="Show" + layout="topleft" + name="Show" + tear_off="true"> + <menu_item_check + label="Show Hidden Selection" + layout="topleft" + name="Show Hidden Selection"> + <menu_item_check.on_check + control="RenderHiddenSelections" /> + <menu_item_check.on_click + function="Tools.ShowHiddenSelection" /> + </menu_item_check> + <menu_item_check + label="Show Light Radius for Selection" + layout="topleft" + name="Show Light Radius for Selection"> + <menu_item_check.on_check + control="RenderLightRadius" /> + <menu_item_check.on_click + function="Tools.ShowSelectionLightRadius" /> + </menu_item_check> + <menu_item_check + label="Show Selection Beam" + layout="topleft" + name="Show Selection Beam"> + <menu_item_check.on_check + control="ShowSelectionBeam" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="ShowSelectionBeam" /> + </menu_item_check> + </menu> + <menu + create_jump_keys="true" + label="Grid" + layout="topleft" + name="Grid" + tear_off="true"> + <menu_item_check + label="Snap to Grid" + layout="topleft" + name="Snap to Grid" + shortcut="G"> + <menu_item_check.on_check + control="SnapEnabled" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="SnapEnabled" /> + <menu_item_check.on_enable + function="Tools.EnableToolNotPie" /> + </menu_item_check> + <menu_item_call + label="Snap Object XY to Grid" + layout="topleft" + name="Snap Object XY to Grid" + shortcut="shift|X"> + <menu_item_call.on_click + function="Tools.SnapObjectXY" /> + <menu_item_call.on_enable + function="Tools.EnableToolNotPie" /> + </menu_item_call> + <menu_item_call + label="Use Selection for Grid" + layout="topleft" + name="Use Selection for Grid" + shortcut="shift|G"> + <menu_item_call.on_click + function="Tools.UseSelectionForGrid" /> + <menu_item_call.on_enable + function="SomethingSelected" /> + </menu_item_call> + <menu_item_call + label="Grid Options" + layout="topleft" + name="Grid Options" + shortcut="control|shift|B"> + <menu_item_call.on_click + function="ShowFloater" + parameter="grid options" /> + <menu_item_call.on_enable + function="Tools.EnableToolNotPie" /> + </menu_item_call> + </menu> + <menu + create_jump_keys="true" + label="Beacons" + layout="topleft" + name="Beacons" + tear_off="true"> + <menu_item_check + label="Beacons" + layout="topleft" + name="beacons" + shortcut="control|alt|shift|N"> + <menu_item_check.on_check + function="FloaterVisible" + parameter="beacons" /> + <menu_item_check.on_click + function="ShowFloater" + parameter="beacons" /> + </menu_item_check> + <menu_item_check + label="Cheesy Beacon" + layout="topleft" + name="Cheesy Beacon"> + <menu_item_check.on_check + function="CheckControl" + parameter="CheesyBeacon" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="CheesyBeacon" /> + </menu_item_check> + </menu> + <menu + create_jump_keys="true" + label="Land" + layout="topleft" + name="Land" + tear_off="true"> + <menu_item_check + label="Property Lines" + layout="topleft" + name="Property Lines" + shortcut="control|alt|shift|P"> + <menu_item_check.on_check + control="ShowPropertyLines" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="ShowPropertyLines" /> + </menu_item_check> + <menu_item_check + label="Land Owners" + layout="topleft" + name="Land Owners"> + <menu_item_check.on_check + control="ShowParcelOwners" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="ShowParcelOwners" /> + </menu_item_check> + <menu_item_check + label="Ban Lines" + layout="topleft" + name="Ban Lines"> + <menu_item_check.on_check + control="ShowBanLines" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="ShowBanLines" /> + </menu_item_check> + </menu> + </menu> + <menu + create_jump_keys="true" + label="Actions" + layout="topleft" + name="Actions" + tear_off="true"> + <menu_item_call + label="Link" + layout="topleft" + name="Link" + shortcut="control|L"> + <menu_item_call.on_click + function="Tools.Link" /> + <menu_item_call.on_enable + function="Tools.EnableLink" /> + </menu_item_call> + <menu_item_call + label="Unlink" + layout="topleft" + name="Unlink" + shortcut="control|shift|L"> + <menu_item_call.on_click + function="Tools.Unlink" /> + <menu_item_call.on_enable + function="Tools.EnableUnlink" /> + </menu_item_call> + <menu_item_separator + layout="topleft" /> + <menu_item_call + label="Focus on Selection" + layout="topleft" + name="Focus on Selection" + shortcut="H"> + <menu_item_call.on_click + function="Tools.LookAtSelection" + parameter="focus" /> + <menu_item_call.on_enable + function="Tools.SomethingSelectedNoHUD" /> + </menu_item_call> + <menu_item_call + label="Zoom to Selection" + layout="topleft" + name="Zoom to Selection" + shortcut="shift|H"> + <menu_item_call.on_click + function="Tools.LookAtSelection" + parameter="zoom" /> + <menu_item_call.on_enable + function="Tools.SomethingSelectedNoHUD" /> + </menu_item_call> + <menu_item_separator + layout="topleft" /> + <menu_item_call + label="Buy Object" + layout="topleft" + name="Menu Object Take" + visible="false"> + <menu_item_call.on_click + function="Tools.BuyOrTake" /> + <menu_item_call.on_enable + function="Tools.EnableBuyOrTake" + parameter="Buy,Take" /> + </menu_item_call> + <menu_item_call + label="Take Copy" + layout="topleft" + name="Take Copy"> + <menu_item_call.on_click + function="Tools.TakeCopy" /> + <menu_item_call.on_enable + function="Tools.EnableTakeCopy" /> + </menu_item_call> + <menu_item_call + label="Save Object Back to My Inventory" + layout="topleft" + name="Save Object Back to My Inventory"> + <menu_item_call.on_click + function="Tools.SaveToInventory" /> + <menu_item_call.on_enable + function="Tools.EnableSaveToInventory" /> + </menu_item_call> + <menu_item_call + label="Save Object Back to Object Contents" + layout="topleft" + name="Save Object Back to Object Contents"> + <menu_item_call.on_click + function="Tools.SaveToObjectInventory" /> + <menu_item_call.on_enable + function="Tools.EnableSaveToObjectInventory" /> + </menu_item_call> + <menu_item_separator + layout="topleft" /> + <menu + create_jump_keys="true" + label="Recompile Scripts in Selection" + layout="topleft" + name="Recompile Scripts in Selection" + tear_off="true"> + <menu_item_call + label="Mono" + layout="topleft" + name="Mono"> + <menu_item_call.on_click + function="Tools.SelectedScriptAction" + parameter="compile mono" /> + <menu_item_call.on_enable + function="EditableSelectedMono" /> + </menu_item_call> + <menu_item_call + label="LSL" + layout="topleft" + name="LSL"> + <menu_item_call.on_click + function="Tools.SelectedScriptAction" + parameter="compile lsl" /> + <menu_item_call.on_enable + function="EditableSelected" /> + </menu_item_call> + </menu> + <menu_item_call + label="Reset Scripts in Selection" + layout="topleft" + name="Reset Scripts in Selection"> + <menu_item_call.on_click + function="Tools.SelectedScriptAction" + parameter="reset" /> + <menu_item_call.on_enable + function="EditableSelected" /> + </menu_item_call> + <menu_item_call + label="Set Scripts to Running in Selection" + layout="topleft" + name="Set Scripts to Running in Selection"> + <menu_item_call.on_click + function="Tools.SelectedScriptAction" + parameter="start" /> + <menu_item_call.on_enable + function="EditableSelected" /> + </menu_item_call> + <menu_item_call + label="Set Scripts to Not Running in Selection" + layout="topleft" + name="Set Scripts to Not Running in Selection"> + <menu_item_call.on_click + function="Tools.SelectedScriptAction" + parameter="stop" /> + <menu_item_call.on_enable + function="EditableSelected" /> + </menu_item_call> + </menu> + </menu> + <menu + label="Geek" + layout="topleft" + name="Advanced" + tear_off="true" + visible="false"> + <menu + label="Shortcuts" + layout="topleft" + name="Shortcuts" + tear_off="true" + visible="false"> + <menu_item_call + enabled="false" + label="Release Keys" + layout="topleft" + name="Release Keys"> + <menu_item_call.on_click + function="Tools.ReleaseKeys" + parameter="" /> + <menu_item_call.on_enable + function="Tools.EnableReleaseKeys" + parameter="" /> + </menu_item_call> + <menu_item_call + label="Set UI Size to Default" + layout="topleft" + name="Set UI Size to Default"> + <menu_item_call.on_click + function="View.DefaultUISize" /> + </menu_item_call> + <menu_item_separator + layout="topleft" /> + <menu_item_check + label="Always Run" + layout="topleft" + name="Always Run" + shortcut="control|R"> + <menu_item_check.on_check + function="World.CheckAlwaysRun" /> + <menu_item_check.on_click + function="World.AlwaysRun" /> + </menu_item_check> + <menu_item_check + control_name="FlyBtnState" + label="Fly" + layout="topleft" + name="Fly" + shortcut="Home"> + <menu_item_check.on_click + function="Agent.toggleFlying" /> + <menu_item_check.on_enable + function="Agent.enableFlying" /> + </menu_item_check> + <menu_item_separator + layout="topleft" /> + <menu_item_call + label="Close Window" + layout="topleft" + name="Close Window" + shortcut="control|W"> + <menu_item_call.on_click + function="File.CloseWindow" /> + <menu_item_call.on_enable + function="File.EnableCloseWindow" /> + </menu_item_call> + <menu_item_call + label="Close All Windows" + layout="topleft" + name="Close All Windows" + shortcut="control|shift|W"> + <menu_item_call.on_click + function="File.CloseAllWindows" /> + <menu_item_call.on_enable + function="File.EnableCloseAllWindows" /> + </menu_item_call> + <menu_item_separator + layout="topleft" /> + <menu_item_call + label="Snapshot to Disk" + layout="topleft" + name="Snapshot to Disk" + shortcut="control|`" + use_mac_ctrl="true"> + <menu_item_call.on_click + function="File.TakeSnapshotToDisk" /> + </menu_item_call> + <menu_item_separator + layout="topleft" /> + <menu_item_call + label="Mouselook" + layout="topleft" + name="Mouselook" + shortcut="M"> + <menu_item_call.on_click + function="View.Mouselook" /> + <menu_item_call.on_enable + function="View.EnableMouselook" /> + </menu_item_call> + <menu_item_check + label="Joystick Flycam" + layout="topleft" + name="Joystick Flycam" + shortcut="alt|shift|F"> + <menu_item_check.on_check + function="View.CheckJoystickFlycam" /> + <menu_item_check.on_click + function="View.JoystickFlycam" /> + <menu_item_check.on_enable + function="View.EnableJoystickFlycam" /> + </menu_item_check> + <menu_item_call + label="Reset View" + layout="topleft" + name="Reset View" + shortcut="Esc"> + <menu_item_call.on_click + function="View.ResetView" /> + </menu_item_call> + <menu_item_call + label="Look at Last Chatter" + layout="topleft" + name="Look at Last Chatter" + shortcut="control|\"> + <menu_item_call.on_click + function="View.LookAtLastChatter" /> + <menu_item_call.on_enable + function="View.EnableLastChatter" /> + </menu_item_call> + <menu_item_separator + layout="topleft" /> + <menu + create_jump_keys="true" + label="Select Tool" + layout="topleft" + name="Select Tool" + tear_off="true"> + <menu_item_call + label="Focus" + layout="topleft" + name="Focus" + shortcut="control|1"> + <menu_item_call.on_click + function="Tools.SelectTool" + parameter="focus" /> + </menu_item_call> + <menu_item_call + label="Move" + layout="topleft" + name="Move" + shortcut="control|2"> + <menu_item_call.on_click + function="Tools.SelectTool" + parameter="move" /> + </menu_item_call> + <menu_item_call + label="Edit" + layout="topleft" + name="Edit" + shortcut="control|3"> + <menu_item_call.on_click + function="Tools.SelectTool" + parameter="edit" /> + </menu_item_call> + <menu_item_call + label="Create" + layout="topleft" + name="Create" + shortcut="control|4"> + <menu_item_call.on_click + function="Tools.SelectTool" + parameter="create" /> + </menu_item_call> + <menu_item_call + label="Land" + layout="topleft" + name="Land" + shortcut="control|5"> + <menu_item_call.on_click + function="Tools.SelectTool" + parameter="land" /> + </menu_item_call> + </menu> + <menu_item_separator + layout="topleft" /> + <menu_item_call + label="Zoom In" + layout="topleft" + name="Zoom In" + shortcut="control|0"> + <menu_item_call.on_click + function="View.ZoomIn" /> + </menu_item_call> + <menu_item_call + label="Zoom Default" + layout="topleft" + name="Zoom Default" + shortcut="control|9"> + <menu_item_call.on_click + function="View.ZoomDefault" /> + </menu_item_call> + <menu_item_call + label="Zoom Out" + layout="topleft" + name="Zoom Out" + shortcut="control|8"> + <menu_item_call.on_click + function="View.ZoomOut" /> + </menu_item_call> + <menu_item_separator + layout="topleft" /> + <menu_item_call + label="Toggle Fullscreen" + layout="topleft" + name="Toggle Fullscreen" + shortcut="alt|Enter"> + <menu_item_call.on_click + function="View.Fullscreen" /> + </menu_item_call> + </menu> + <menu_item_check + label="Go Away/AFK When Idle" + layout="topleft" + name="Go Away/AFK When Idle"> + <menu_item_check.on_check + function="CheckControl" + parameter="AllowIdleAFK" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="AllowIdleAFK" /> + </menu_item_check> + <menu_item_call + label="Stop Animating My Avatar" + layout="topleft" + name="Stop Animating My Avatar"> + <menu_item_call.on_click + function="Tools.StopAllAnimations" /> + </menu_item_call> + <menu_item_call + label="Rebake Texture" + layout="topleft" + name="Rebake Texture" + shortcut="control|alt|R"> + <menu_item_call.on_click + function="Advanced.RebakeTextures" /> + </menu_item_call> + <menu_item_check + label="Limit Select Distance" + layout="topleft" + name="Limit Select Distance"> + <menu_item_check.on_check + function="CheckControl" + parameter="LimitSelectDistance" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="LimitSelectDistance" /> + </menu_item_check> + <menu_item_check + label="Disable Camera Constraints" + layout="topleft" + name="Disable Camera Distance"> + <menu_item_check.on_check + function="CheckControl" + parameter="DisableCameraConstraints" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="DisableCameraConstraints" /> + </menu_item_check> + <menu_item_separator + layout="topleft" /> + <menu_item_check + label="High-res Snapshot" + layout="topleft" + name="HighResSnapshot"> + <menu_item_check.on_check + function="CheckControl" + parameter="HighResSnapshot" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="HighResSnapshot" /> + </menu_item_check> + <menu_item_check + label="Quiet Snapshots to Disk" + layout="topleft" + name="QuietSnapshotsToDisk"> + <menu_item_check.on_check + function="CheckControl" + parameter="QuietSnapshotsToDisk" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="QuietSnapshotsToDisk" /> + </menu_item_check> + <menu_item_check + label="Compress Snapshots to Disk" + layout="topleft" + name="CompressSnapshotsToDisk"> + <menu_item_check.on_check + function="CheckControl" + parameter="CompressSnapshotsToDisk" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="CompressSnapshotsToDisk" /> + </menu_item_check> + <menu_item_call + label="Save Texture As..." + layout="topleft" + name="Save Texture As"> + <menu_item_call.on_click + function="File.SaveTexture" /> + <menu_item_call.on_enable + function="File.EnableSaveAs" /> + </menu_item_call> + <menu_item_separator + layout="topleft" /> + <menu + create_jump_keys="true" + label="Environment Settings" + layout="topleft" + name="Environment Settings" + tear_off="true"> + <menu_item_call + label="Sunrise" + layout="topleft" + name="Sunrise"> + <menu_item_call.on_click + function="World.EnvSettings" + parameter="sunrise" /> + </menu_item_call> + <menu_item_call + label="Midday" + layout="topleft" + name="Noon" + shortcut="control|shift|Y"> + <menu_item_call.on_click + function="World.EnvSettings" + parameter="noon" /> + </menu_item_call> + <menu_item_call + label="Sunset" + layout="topleft" + name="Sunset" + shortcut="control|shift|N"> + <menu_item_call.on_click + function="World.EnvSettings" + parameter="sunset" /> + </menu_item_call> + <menu_item_call + label="Midnight" + layout="topleft" + name="Midnight"> + <menu_item_call.on_click + function="World.EnvSettings" + parameter="midnight" /> + </menu_item_call> + <menu_item_call + label="Revert to Region Default" + layout="topleft" + name="Revert to Region Default"> + <menu_item_call.on_click + function="World.EnvSettings" + parameter="default" /> + </menu_item_call> + <menu_item_separator + layout="topleft" /> + <menu_item_call + label="Environment Editor" + layout="topleft" + name="Environment Editor"> + <menu_item_call.on_click + function="World.EnvSettings" + parameter="editor" /> + </menu_item_call> + </menu> + <menu + create_jump_keys="true" + label="Performance Tools" + layout="topleft" + name="Performance Tools" + tear_off="true"> + <menu_item_call + label="Lag Meter" + layout="topleft" + name="Lag Meter"> + <menu_item_call.on_click + function="ShowFloater" + parameter="lag meter" /> + </menu_item_call> + <menu_item_check + label="Statistics Bar" + layout="topleft" + name="Statistics Bar" + shortcut="control|shift|1"> + <menu_item_check.on_check + function="Floater.Visible" + parameter="stats" /> + <menu_item_check.on_click + function="Floater.Toggle" + parameter="stats" /> + </menu_item_check> + </menu> + <menu + create_jump_keys="true" + label="Highlighting and Visibility" + layout="topleft" + name="Highlighting and Visibility" + tear_off="true"> + <menu_item_check + label="Highlight Transparent" + layout="topleft" + name="Highlight Transparent" + shortcut="control|alt|T"> + <menu_item_check.on_check + function="View.CheckHighlightTransparent" /> + <menu_item_check.on_click + function="View.HighlightTransparent" /> + </menu_item_check> + <menu_item_check + label="Hide Particles" + layout="topleft" + name="Hide Particles" + shortcut="control|alt|shift|="> + <menu_item_check.on_check + function="View.CheckRenderType" + parameter="hideparticles" /> + <menu_item_check.on_click + function="View.ToggleRenderType" + parameter="hideparticles" /> + </menu_item_check> + <menu_item_check + label="Show HUD Attachments" + layout="topleft" + name="Show HUD Attachments" + shortcut="alt|shift|H"> + <menu_item_check.on_check + function="View.CheckHUDAttachments" /> + <menu_item_check.on_click + function="View.ShowHUDAttachments" /> + </menu_item_check> + <menu_item_check + label="Hide Selected" + layout="topleft" + name="Hide Selected"> + <menu_item_check.on_check + function="CheckControl" + parameter="HideSelectedObjects" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="HideSelectedObjects" /> + </menu_item_check> + <menu_item_check + label="Show Mouselook Crosshairs" + layout="topleft" + name="ShowCrosshairs"> + <menu_item_check.on_check + function="CheckControl" + parameter="ShowCrosshairs" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="ShowCrosshairs" /> + </menu_item_check> + </menu> + <menu + create_jump_keys="true" + label="Hover Tips" + layout="topleft" + name="Hover Tips" + tear_off="true"> + <menu_item_check + label="Show Tips" + layout="topleft" + name="Show Tips" + shortcut="control|shift|T"> + <menu_item_check.on_check + function="View.CheckShowHoverTips" /> + <menu_item_check.on_click + function="View.ShowHoverTips" /> + </menu_item_check> + <menu_item_separator + layout="topleft" /> + <menu_item_check + label="Land Tips" + layout="topleft" + name="Land Tips"> + <menu_item_check.on_check + control="ShowLandHoverTip" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="ShowLandHoverTip" /> + <menu_item_check.on_enable + function="View.CheckShowHoverTips" /> + </menu_item_check> + <menu_item_check + label="Tips On All Objects" + layout="topleft" + name="Tips On All Objects"> + <menu_item_check.on_check + control="ShowAllObjectHoverTip" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="ShowAllObjectHoverTip" /> + <menu_item_check.on_enable + function="View.CheckShowHoverTips" /> + </menu_item_check> + </menu> + <menu_item_separator + layout="topleft" /> + <menu_item_check + label="Run Multiple Threads" + layout="topleft" + name="Run Multiple Threads"> + <menu_item_check.on_check + function="CheckControl" + parameter="RunMultipleThreads" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="RunMultipleThreads" /> + </menu_item_check> + <menu_item_separator + layout="topleft" /> + <menu + create_jump_keys="true" + label="Rendering Types" + layout="topleft" + name="Rendering Types" + tear_off="true"> + <menu_item_check + label="Simple" + layout="topleft" + name="Simple" + shortcut="control|alt|shift|1"> + <menu_item_check.on_check + function="Advanced.CheckRenderType" + parameter="simple" /> + <menu_item_check.on_click + function="Advanced.ToggleRenderType" + parameter="simple" /> + </menu_item_check> + <menu_item_check + label="Alpha" + layout="topleft" + name="Alpha" + shortcut="control|alt|shift|2"> + <menu_item_check.on_check + function="Advanced.CheckRenderType" + parameter="alpha" /> + <menu_item_check.on_click + function="Advanced.ToggleRenderType" + parameter="alpha" /> + </menu_item_check> + <menu_item_check + label="Tree" + layout="topleft" + name="Tree" + shortcut="control|alt|shift|3"> + <menu_item_check.on_check + function="Advanced.CheckRenderType" + parameter="tree" /> + <menu_item_check.on_click + function="Advanced.ToggleRenderType" + parameter="tree" /> + </menu_item_check> + <menu_item_check + label="Character" + layout="topleft" + name="Character" + shortcut="control|alt|shift|4"> + <menu_item_check.on_check + function="Advanced.CheckRenderType" + parameter="character" /> + <menu_item_check.on_click + function="Advanced.ToggleRenderType" + parameter="character" /> + </menu_item_check> + <menu_item_check + label="SurfacePath" + layout="topleft" + name="SurfacePath" + shortcut="control|alt|shift|5"> + <menu_item_check.on_check + function="Advanced.CheckRenderType" + parameter="surfacePath" /> + <menu_item_check.on_click + function="Advanced.ToggleRenderType" + parameter="surfacePath" /> + </menu_item_check> + <menu_item_check + label="Sky" + layout="topleft" + name="Sky" + shortcut="control|alt|shift|6"> + <menu_item_check.on_check + function="Advanced.CheckRenderType" + parameter="sky" /> + <menu_item_check.on_click + function="Advanced.ToggleRenderType" + parameter="sky" /> + </menu_item_check> + <menu_item_check + label="Water" + layout="topleft" + name="Water" + shortcut="control|alt|shift|7"> + <menu_item_check.on_check + function="Advanced.CheckRenderType" + parameter="water" /> + <menu_item_check.on_click + function="Advanced.ToggleRenderType" + parameter="water" /> + </menu_item_check> + <menu_item_check + label="Ground" + layout="topleft" + name="Ground" + shortcut="control|alt|shift|8"> + <menu_item_check.on_check + function="Advanced.CheckRenderType" + parameter="ground" /> + <menu_item_check.on_click + function="Advanced.ToggleRenderType" + parameter="ground" /> + </menu_item_check> + <menu_item_check + label="Volume" + layout="topleft" + name="Volume" + shortcut="control|alt|shift|9"> + <menu_item_check.on_check + function="Advanced.CheckRenderType" + parameter="volume" /> + <menu_item_check.on_click + function="Advanced.ToggleRenderType" + parameter="volume" /> + </menu_item_check> + <menu_item_check + label="Grass" + layout="topleft" + name="Grass" + shortcut="control|alt|shift|0"> + <menu_item_check.on_check + function="Advanced.CheckRenderType" + parameter="grass" /> + <menu_item_check.on_click + function="Advanced.ToggleRenderType" + parameter="grass" /> + </menu_item_check> + <menu_item_check + label="Clouds" + layout="topleft" + name="Clouds" + shortcut="control|alt|shift|-"> + <menu_item_check.on_check + function="Advanced.CheckRenderType" + parameter="clouds" /> + <menu_item_check.on_click + function="Advanced.ToggleRenderType" + parameter="clouds" /> + </menu_item_check> + <menu_item_check + label="Particles" + layout="topleft" + name="Particles" + shortcut="control|alt|shift|="> + <menu_item_check.on_check + function="Advanced.CheckRenderType" + parameter="particles" /> + <menu_item_check.on_click + function="Advanced.ToggleRenderType" + parameter="particles" /> + </menu_item_check> + <menu_item_check + label="Bump" + layout="topleft" + name="Bump" + shortcut="control|alt|shift|\"> + <menu_item_check.on_check + function="Advanced.CheckRenderType" + parameter="bump" /> + <menu_item_check.on_click + function="Advanced.ToggleRenderType" + parameter="bump" /> + </menu_item_check> + </menu> + <menu + create_jump_keys="true" + label="Rendering Features" + layout="topleft" + name="Rendering Features" + tear_off="true"> + <menu_item_check + label="UI" + layout="topleft" + name="UI" + shortcut="control|alt|F1"> + <menu_item_check.on_check + function="Advanced.CheckFeature" + parameter="ui" /> + <menu_item_check.on_click + function="Advanced.ToggleFeature" + parameter="ui" /> + </menu_item_check> + <menu_item_check + label="Selected" + layout="topleft" + name="Selected" + shortcut="control|alt|F2"> + <menu_item_check.on_check + function="Advanced.CheckFeature" + parameter="selected" /> + <menu_item_check.on_click + function="Advanced.ToggleFeature" + parameter="selected" /> + </menu_item_check> + <menu_item_check + label="Highlighted" + layout="topleft" + name="Highlighted" + shortcut="control|alt|F3"> + <menu_item_check.on_check + function="Advanced.CheckFeature" + parameter="highlighted" /> + <menu_item_check.on_click + function="Advanced.ToggleFeature" + parameter="highlighted" /> + </menu_item_check> + <menu_item_check + label="Dynamic Textures" + layout="topleft" + name="Dynamic Textures" + shortcut="control|alt|F4"> + <menu_item_check.on_check + function="Advanced.CheckFeature" + parameter="dynamic textures" /> + <menu_item_check.on_click + function="Advanced.ToggleFeature" + parameter="dynamic textures" /> + </menu_item_check> + <menu_item_check + label="Foot Shadows" + layout="topleft" + name="Foot Shadows" + shortcut="control|alt|F5"> + <menu_item_check.on_check + function="Advanced.CheckFeature" + parameter="foot shadows" /> + <menu_item_check.on_click + function="Advanced.ToggleFeature" + parameter="foot shadows" /> + </menu_item_check> + <menu_item_check + label="Fog" + layout="topleft" + name="Fog" + shortcut="control|alt|F6"> + <menu_item_check.on_check + function="Advanced.CheckFeature" + parameter="fog" /> + <menu_item_check.on_click + function="Advanced.ToggleFeature" + parameter="fog" /> + </menu_item_check> + <menu_item_check + label="Test FRInfo" + layout="topleft" + name="Test FRInfo" + shortcut="control|alt|F8"> + <menu_item_check.on_check + function="Advanced.CheckFeature" + parameter="fr info" /> + <menu_item_check.on_click + function="Advanced.ToggleFeature" + parameter="fr info" /> + </menu_item_check> + <menu_item_check + label="Flexible Objects" + layout="topleft" + name="Flexible Objects" + shortcut="control|alt|F9"> + <menu_item_check.on_check + function="Advanced.CheckFeature" + parameter="flexible" /> + <menu_item_check.on_click + function="Advanced.ToggleFeature" + parameter="flexible" /> + </menu_item_check> + </menu> + <menu_item_separator + layout="topleft" /> + <menu + create_jump_keys="true" + label="Recorder" + layout="topleft" + name="Recorder" + tear_off="true"> + <menu_item_call + label="Start Playback" + layout="topleft" + name="Start Playback"> + <menu_item_call.on_click + function="Advanced.AgentPilot" + parameter="start playback" /> + </menu_item_call> + <menu_item_call + label="Stop Playback" + layout="topleft" + name="Stop Playback"> + <menu_item_call.on_click + function="Advanced.AgentPilot" + parameter="stop playback" /> + </menu_item_call> + <menu_item_check + label="Loop Playback" + layout="topleft" + name="Loop Playback"> + <menu_item_check.on_check + function="Advanced.CheckAgentPilotLoop" + parameter="loopPlayback" /> + <menu_item_check.on_click + function="Advanced.ToggleAgentPilotLoop" /> + </menu_item_check> + <menu_item_call + label="Start Record" + layout="topleft" + name="Start Record"> + <menu_item_call.on_click + function="Advanced.AgentPilot" + parameter="start record" /> + </menu_item_call> + <menu_item_call + label="Stop Record" + layout="topleft" + name="Stop Record"> + <menu_item_call.on_click + function="Advanced.AgentPilot" + parameter="stop record" /> + </menu_item_call> + </menu> + <menu_item_call + label="Dump Scripted Camera" + layout="topleft" + name="Dump Scripted Camera"> + <menu_item_call.on_click + function="Advanced.DumpScriptedCamera" /> + </menu_item_call> + <menu_item_separator + layout="topleft" /> + <menu_item_call + label="Clear Group Cache" + layout="topleft" + name="ClearGroupCache"> + <menu_item_call.on_click + function="Advanced.ClearGroupCache" + parameter="ClearGroupCache" /> + </menu_item_call> + <menu_item_check + label="Enable Lip Sync(Beta)" + layout="topleft" + name="Enable Lip Sync(Beta)"> + <menu_item_check.on_check + function="CheckControl" + parameter="LipSyncEnabled" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="LipSyncEnabled" /> + </menu_item_check> + <menu_item_check + label="Tap-Tap-Hold to Run" + layout="topleft" + name="Tap-Tap-Hold to Run"> + <menu_item_check.on_check + function="Advanced.CheckAllowTapTapHoldRun" + parameter="TapTapHoldRun" /> + <menu_item_check.on_click + function="Advanced.ToggleAllowTapTapHoldRun" /> + </menu_item_check> + <menu_item_check + label="Mouse Smoothing" + layout="topleft" + name="Mouse Smoothing"> + <menu_item_check.on_check + function="CheckControl" + parameter="MouseSmooth" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="MouseSmooth" /> + </menu_item_check> + <menu_item_separator + layout="topleft" /> + <menu_item_call + label="Debug Settings" + layout="topleft" + name="Debug Settings"> + <menu_item_call.on_click + function="Advanced.ShowDebugSettings" + parameter="all" /> + </menu_item_call> + </menu> + <menu + create_jump_keys="true" + label="Debug" + layout="topleft" + name="Debug" + tear_off="true" + visible="false"> + <menu + create_jump_keys="true" + label="Consoles" + layout="topleft" + name="Consoles" + tear_off="true"> + <menu_item_check + label="Texture Console" + layout="topleft" + name="Texture Console" + shortcut="control|shift|3"> + <menu_item_check.on_check + function="Advanced.CheckConsole" + parameter="texture" /> + <menu_item_check.on_click + function="Advanced.ToggleConsole" + parameter="texture" /> + </menu_item_check> + <menu_item_check + label="Debug Console" + layout="topleft" + name="Debug Console" + shortcut="control|shift|4"> + <menu_item_check.on_check + function="Advanced.CheckConsole" + parameter="debug" /> + <menu_item_check.on_click + function="Advanced.ToggleConsole" + parameter="debug" /> + </menu_item_check> + <menu_item_check + label="Fast Timers" + layout="topleft" + name="Fast Timers" + shortcut="control|shift|9"> + <menu_item_check.on_check + function="Advanced.CheckConsole" + parameter="fast timers" /> + <menu_item_check.on_click + function="Advanced.ToggleConsole" + parameter="fast timers" /> + </menu_item_check> + <menu_item_check + label="Memory" + layout="topleft" + name="Memory" + shortcut="control|shift|0"> + <menu_item_check.on_check + function="Advanced.CheckConsole" + parameter="memory view" /> + <menu_item_check.on_click + function="Advanced.ToggleConsole" + parameter="memory view" /> + </menu_item_check> + <menu_item_check + label="Notifications Console" + layout="topleft" + name="Notifications" + shortcut="control|shift|5"> + <menu_item_check.on_check + function="Advanced.CheckConsole" + parameter="notifications" /> + <menu_item_check.on_click + function="Advanced.ToggleConsole" + parameter="notifications" /> + </menu_item_check> + <menu_item_separator + layout="topleft" /> + <menu_item_call + label="Region Info to Debug Console" + layout="topleft" + name="Region Info to Debug Console"> + <menu_item_call.on_click + function="Advanced.DumpInfoToConsole" + parameter="region" /> + </menu_item_call> + <menu_item_call + label="Group Info to Debug Console" + layout="topleft" + name="Group Info to Debug Console"> + <menu_item_call.on_click + function="Advanced.DumpInfoToConsole" + parameter="group" /> + </menu_item_call> + <menu_item_call + label="Capabilities Info to Debug Console" + layout="topleft" + name="Capabilities Info to Debug Console"> + <menu_item_call.on_click + function="Advanced.DumpInfoToConsole" + parameter="capabilities" /> + </menu_item_call> + </menu> + <menu + create_jump_keys="true" + label="Debugging" + layout="topleft" + name="Force Errors" + tear_off="true"> + <menu_item_call + label="Force Breakpoint" + layout="topleft" + name="Force Breakpoint" + shortcut="control|alt|shift|B"> + <menu_item_call.on_click + function="Advanced.ForceErrorBreakpoint" /> + </menu_item_call> + <menu_item_call + label="Force LLError And Crash" + layout="topleft" + name="Force LLError And Crash"> + <menu_item_call.on_click + function="Advanced.ForceErrorLlerror" /> + </menu_item_call> + <menu_item_call + label="Force Bad Memory Access" + layout="topleft" + name="Force Bad Memory Access"> + <menu_item_call.on_click + function="Advanced.ForceErrorBadMemoryAccess" /> + </menu_item_call> + <menu_item_call + label="Force Infinite Loop" + layout="topleft" + name="Force Infinite Loop"> + <menu_item_call.on_click + function="Advanced.ForceErrorInfiniteLoop" /> + </menu_item_call> + <menu_item_call + label="Force Driver Crash" + layout="topleft" + name="Force Driver Carsh"> + <menu_item_call.on_click + function="Advanced.ForceErrorDriverCrash" /> + </menu_item_call> + <menu_item_call + label="Force Software Exception" + layout="topleft" + name="Force Software Exception"> + <menu_item_call.on_click + function="Advanced.ForceErrorSoftwareException" /> + </menu_item_call> + <menu_item_call + label="Force Disconnect Viewer" + layout="topleft" + name="Force Disconnect Viewer"> + <menu_item_call.on_click + function="Advanced.ForceErrorDisconnectViewer" /> + </menu_item_call> + </menu> + <menu_item_separator + layout="topleft" /> + <menu_item_check + label="Output Debug Minidump" + layout="topleft" + name="Output Debug Minidump"> + <menu_item_check.on_check + function="CheckControl" + parameter="SaveMinidump" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="SaveMinidump" /> + </menu_item_check> + <menu_item_call + label="Memory Leaking Simulation" + layout="topleft" + name="Memory Leaking Simulation"> + <menu_item_call.on_click + function="Advanced.MemoryLeakingSimulation" + parameter="" /> + </menu_item_call> + <menu_item_separator + layout="topleft" /> + <menu + create_jump_keys="true" + label="Render Tests" + layout="topleft" + name="Render Tests" + tear_off="true"> + <menu_item_check + label="Camera Offset" + layout="topleft" + name="Camera Offset"> + <menu_item_check.on_check + function="CheckControl" + parameter="CameraOffset" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="CameraOffset" /> + </menu_item_check> + <menu_item_check + label="Randomize Framerate" + layout="topleft" + name="Randomize Framerate"> + <menu_item_check.on_check + function="Advanced.CheckRandomizeFramerate" + parameter="Randomize Framerate" /> + <menu_item_check.on_click + function="Advanced.ToggleRandomizeFramerate" /> + </menu_item_check> + <menu_item_check + label="Periodic Slow Frame" + layout="topleft" + name="Periodic Slow Frame"> + <menu_item_check.on_check + function="Advanced.CheckPeriodicSlowFrame" + parameter="points" /> + <menu_item_check.on_click + function="Advanced.TogglePeriodicSlowFrame" + parameter="points" /> + </menu_item_check> + <menu_item_check + label="Frame Test" + layout="topleft" + name="Frame Test"> + <menu_item_check.on_check + function="Advanced.CheckFrameTest" + parameter="Frame Test" /> + <menu_item_check.on_click + function="Advanced.ToggleFrameTest" /> + </menu_item_check> + </menu> + <menu_item_separator + layout="topleft" /> + <menu + create_jump_keys="true" + label="Display Info" + layout="topleft" + name="Display Info" + tear_off="true"> + <menu_item_check + label="Show Time" + layout="topleft" + name="Show Time"> + <menu_item_check.on_check + function="CheckControl" + parameter="DebugShowTime" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="DebugShowTime" /> + </menu_item_check> + <menu_item_check + label="Show Render Info" + layout="topleft" + name="Show Render Info"> + <menu_item_check.on_check + function="CheckControl" + parameter="DebugShowRenderInfo" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="DebugShowRenderInfo" /> + </menu_item_check> + <menu_item_check + label="Show Matrices" + layout="topleft" + name="Show Matrices"> + <menu_item_check.on_check + function="CheckControl" + parameter="DebugShowRenderMatrices" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="DebugShowRenderMatrices" /> + </menu_item_check> + <menu_item_check + label="Show Color Under Cursor" + layout="topleft" + name="Show Color Under Cursor"> + <menu_item_check.on_check + function="CheckControl" + parameter="DebugShowColor" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="DebugShowColor" /> + </menu_item_check> + </menu> + <menu_item_separator + layout="topleft" /> + <menu + create_jump_keys="true" + label="Network" + layout="topleft" + name="Network" + tear_off="true"> + <menu_item_call + label="Enable Message Log" + layout="topleft" + name="Enable Message Log"> + <menu_item_call.on_click + function="Advanced.EnableMessageLog" /> + </menu_item_call> + <menu_item_call + label="Disable Message Log" + layout="topleft" + name="Disable Message Log"> + <menu_item_call.on_click + function="Advanced.DisableMessageLog" /> + </menu_item_call> + <menu_item_check + label="Velocity Interpolate Objects" + layout="topleft" + name="Velocity Interpolate Objects"> + <menu_item_check.on_check + function="CheckControl" + parameter="VelocityInterpolate" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="VelocityInterpolate" /> + </menu_item_check> + <menu_item_check + label="Ping Interpolate Object Positions" + layout="topleft" + name="Ping Interpolate Object Positions"> + <menu_item_check.on_check + function="CheckControl" + parameter="PingInterpolate" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="PingInterpolate" /> + </menu_item_check> + <menu_item_call + label="Drop a Packet" + layout="topleft" + name="Drop a Packet" + shortcut="control|alt|L"> + <menu_item_call.on_click + function="Advanced.DropPacket" /> + </menu_item_call> + <menu_item_check + label="Show Updates" + layout="topleft" + name="Show Updates" + shortcut="control|alt|shift|U"> + <menu_item_check.on_check + function="Advanced.CheckShowObjectUpdates" + parameter="ObjectUpdates" /> + <menu_item_check.on_click + function="Advanced.ToggleShowObjectUpdates" /> + </menu_item_check> + </menu> + <menu_item_separator + layout="topleft" /> + <menu_item_check + label="View Admin Options" + layout="topleft" + name="View Admin Options" + shortcut="control|alt|V"> + <menu_item_check.on_check + function="Advanced.CheckViewAdminOptions" + parameter="ViewAdminOptions" /> + <menu_item_check.on_click + function="Advanced.ToggleViewAdminOptions" /> + </menu_item_check> + <menu_item_call + label="Request Admin Status" + layout="topleft" + name="Request Admin Options" + shortcut="control|alt|G"> + <menu_item_call.on_click + function="Advanced.RequestAdminStatus" /> + </menu_item_call> + <menu_item_call + label="Leave Admin Status" + layout="topleft" + name="Leave Admin Options" + shortcut="control|alt|shift|G"> + <menu_item_call.on_click + function="Advanced.LeaveAdminStatus" /> + </menu_item_call> + </menu> + <menu + create_jump_keys="true" + label="Develop" + layout="topleft" + name="Develop" + tear_off="true" + visible="false"> + <menu + create_jump_keys="true" + label="HUD Info" + layout="topleft" + name="HUD Info" + tear_off="true"> + <menu_item_check + label="Camera" + layout="topleft" + name="Camera"> + <menu_item_check.on_check + function="Advanced.CheckHUDInfo" + parameter="camera" /> + <menu_item_check.on_click + function="Advanced.ToggleHUDInfo" + parameter="camera" /> + </menu_item_check> + <menu_item_check + label="Wind" + layout="topleft" + name="Wind"> + <menu_item_check.on_check + function="Advanced.CheckHUDInfo" + parameter="wind" /> + <menu_item_check.on_click + function="Advanced.ToggleHUDInfo" + parameter="wind" /> + </menu_item_check> + <menu_item_check + label="FOV" + layout="topleft" + name="FOV"> + <menu_item_check.on_check + function="Advanced.CheckHUDInfo" + parameter="fov" /> + <menu_item_check.on_click + function="Advanced.ToggleHUDInfo" + parameter="fov" /> + </menu_item_check> + </menu> + <menu + create_jump_keys="true" + label="Rendering" + layout="topleft" + name="Rendering" + tear_off="true"> + <menu + create_jump_keys="true" + label="Info Displays" + layout="topleft" + name="Info Displays" + tear_off="true"> + <menu_item_check + label="Verify" + layout="topleft" + name="Verify"> + <menu_item_check.on_check + function="Advanced.CheckInfoDisplay" + parameter="verify" /> + <menu_item_check.on_click + function="Advanced.ToggleInfoDisplay" + parameter="verify" /> + </menu_item_check> + <menu_item_check + label="BBoxes" + layout="topleft" + name="BBoxes"> + <menu_item_check.on_check + function="Advanced.CheckInfoDisplay" + parameter="bboxes" /> + <menu_item_check.on_click + function="Advanced.ToggleInfoDisplay" + parameter="bboxes" /> + </menu_item_check> + <menu_item_check + label="Points" + layout="topleft" + name="Points"> + <menu_item_check.on_check + function="Advanced.CheckInfoDisplay" + parameter="points" /> + <menu_item_check.on_click + function="Advanced.ToggleInfoDisplay" + parameter="points" /> + </menu_item_check> + <menu_item_check + label="Octree" + layout="topleft" + name="Octree"> + <menu_item_check.on_check + function="Advanced.CheckInfoDisplay" + parameter="octree" /> + <menu_item_check.on_click + function="Advanced.ToggleInfoDisplay" + parameter="octree" /> + </menu_item_check> + <menu_item_check + label="Shadow Frusta" + layout="topleft" + name="Shadow Frusta"> + <menu_item_check.on_check + function="Advanced.CheckInfoDisplay" + parameter="shadow frusta" /> + <menu_item_check.on_click + function="Advanced.ToggleInfoDisplay" + parameter="shadow frusta" /> + </menu_item_check> + <menu_item_check + label="Occlusion" + layout="topleft" + name="Occlusion"> + <menu_item_check.on_check + function="Advanced.CheckInfoDisplay" + parameter="occlusion" /> + <menu_item_check.on_click + function="Advanced.ToggleInfoDisplay" + parameter="occlusion" /> + </menu_item_check> + <menu_item_check + label="Render Batches" + layout="topleft" + name="Render Batches"> + <menu_item_check.on_check + function="Advanced.CheckInfoDisplay" + parameter="render batches" /> + <menu_item_check.on_click + function="Advanced.ToggleInfoDisplay" + parameter="render batches" /> + </menu_item_check> + <menu_item_check + label="Animated Textures" + layout="topleft" + name="Animated Textures"> + <menu_item_check.on_check + function="Advanced.CheckInfoDisplay" + parameter="texture anim" /> + <menu_item_check.on_click + function="Advanced.ToggleInfoDisplay" + parameter="texture anim" /> + </menu_item_check> + <menu_item_check + label="Texture Priority" + layout="topleft" + name="Texture Priority"> + <menu_item_check.on_check + function="Advanced.CheckInfoDisplay" + parameter="texture priority" /> + <menu_item_check.on_click + function="Advanced.ToggleInfoDisplay" + parameter="texture priority" /> + </menu_item_check> + <menu_item_check + label="Avatar Rendering Cost" + layout="topleft" + name="Avatar Rendering Cost"> + <menu_item_check.on_check + function="Advanced.CheckInfoDisplay" + parameter="shame" /> + <menu_item_check.on_click + function="Advanced.ToggleInfoDisplay" + parameter="shame" /> + </menu_item_check> + <menu_item_check + label="Texture Area (sqrt(A))" + layout="topleft" + name="Texture Area (sqrt(A))"> + <menu_item_check.on_check + function="Advanced.CheckInfoDisplay" + parameter="texture area" /> + <menu_item_check.on_click + function="Advanced.ToggleInfoDisplay" + parameter="texture area" /> + </menu_item_check> + <menu_item_check + label="Face Area (sqrt(A))" + layout="topleft" + name="Face Area (sqrt(A))"> + <menu_item_check.on_check + function="Advanced.CheckInfoDisplay" + parameter="face area" /> + <menu_item_check.on_click + function="Advanced.ToggleInfoDisplay" + parameter="face area" /> + </menu_item_check> + <menu_item_check + label="Lights" + layout="topleft" + name="Lights"> + <menu_item_check.on_check + function="Advanced.CheckInfoDisplay" + parameter="lights" /> + <menu_item_check.on_click + function="Advanced.ToggleInfoDisplay" + parameter="lights" /> + </menu_item_check> + <menu_item_check + label="Particles" + layout="topleft" + name="Particles"> + <menu_item_check.on_check + function="Advanced.CheckInfoDisplay" + parameter="particles" /> + <menu_item_check.on_click + function="Advanced.ToggleInfoDisplay" + parameter="particles" /> + </menu_item_check> + <menu_item_check + label="Composition" + layout="topleft" + name="Composition"> + <menu_item_check.on_check + function="Advanced.CheckInfoDisplay" + parameter="composition" /> + <menu_item_check.on_click + function="Advanced.ToggleInfoDisplay" + parameter="composition" /> + </menu_item_check> + <menu_item_check + label="Glow" + layout="topleft" + name="Glow"> + <menu_item_check.on_check + function="Advanced.CheckInfoDisplay" + parameter="glow" /> + <menu_item_check.on_click + function="Advanced.ToggleInfoDisplay" + parameter="glow" /> + </menu_item_check> + <menu_item_check + label="Show Depth Buffer" + layout="topleft" + name="Show Depth Buffer"> + <menu_item_check.on_check + function="Advanced.CheckInfoDisplay" + parameter="ShowDepthBuffer" /> + <menu_item_check.on_click + function="Advanced.ToggleInfoDisplay" + parameter="ShowDepthBuffer" /> + </menu_item_check> + <menu_item_check + label="Pick Render" + layout="topleft" + name="Pick Render"> + <menu_item_check.on_check + function="Advanced.CheckInfoDisplay" + parameter="picking" /> + <menu_item_check.on_click + function="Advanced.ToggleInfoDisplay" + parameter="picking" /> + </menu_item_check> + <menu_item_call + label="Vectorize Perf Test" + layout="topleft" + name="Vectorize Perf Test"> + <menu_item_call.on_click + function="Advanced.VectorizePerfTest" + parameter="" /> + </menu_item_call> + </menu> + <menu_item_check + label="Axes" + layout="topleft" + name="Axes"> + <menu_item_check.on_check + function="CheckControl" + parameter="ShowAxes" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="ShowAxes" /> + </menu_item_check> + <menu_item_check + label="Tangent Basis" + layout="topleft" + name="Tangent Basis"> + <menu_item_check.on_check + function="CheckControl" + parameter="ShowTangentBasis" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="ShowTangentBasis" /> + </menu_item_check> + <menu_item_call + label="Selected Texture Info Basis" + layout="topleft" + name="Selected Texture Info Basis" + shortcut="control|alt|shift|T"> + <menu_item_call.on_click + function="Advanced.SelectedTextureInfo" /> + </menu_item_call> + <menu_item_check + label="Wireframe" + layout="topleft" + name="Wireframe" + shortcut="control|shift|R"> + <menu_item_check.on_check + function="Advanced.CheckWireframe" + parameter="Wireframe" /> + <menu_item_check.on_click + function="Advanced.ToggleWireframe" /> + </menu_item_check> + <menu_item_check + label="Object-Object Occlusion" + layout="topleft" + name="Object-Object Occlusion" + shortcut="control|shift|O"> + <menu_item_check.on_check + function="CheckControl" + parameter="UseOcclusion" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="UseOcclusion" /> + <menu_item_check.on_enable + function="Advanced.EnableObjectObjectOcclusion" /> + </menu_item_check> + <menu_item_check + label="Debug GL" + layout="topleft" + name="Debug GL"> + <menu_item_check.on_check + function="CheckControl" + parameter="RenderDebugGL" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="RenderDebugGL" /> + </menu_item_check> + <menu_item_check + label="Debug Pipeline" + layout="topleft" + name="Debug Pipeline"> + <menu_item_check.on_check + function="CheckControl" + parameter="RenderDebugGL" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="RenderDebugGL" /> + </menu_item_check> + <menu_item_check + label="Fast Alpha" + layout="topleft" + name="Fast Alpha"> + <menu_item_check.on_check + function="CheckControl" + parameter="RenderDebugGL" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="RenderDebugGL" /> + </menu_item_check> + <menu_item_check + label="Animation Textures" + layout="topleft" + name="Animation Textures"> + <menu_item_check.on_check + function="CheckControl" + parameter="RenderDebugGL" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="RenderDebugGL" /> + </menu_item_check> + <menu_item_check + label="Disable Textures" + layout="topleft" + name="Disable Textures"> + <menu_item_check.on_check + function="Advanced.CheckDisableTextures" + parameter="DisableTextures" /> + <menu_item_check.on_click + function="Advanced.ToggleDisableTextures" /> + </menu_item_check> + <menu_item_check + label="Render Attached Lights" + layout="topleft" + name="Render Attached Lights"> + <menu_item_check.on_check + function="CheckControl" + parameter="RenderAttachedLights" /> + <menu_item_check.on_click + function="Advanced.HandleAttchedLightParticles" + parameter="RenderAttachedLights" /> + </menu_item_check> + <menu_item_check + label="Render Attached Particles" + layout="topleft" + name="Render Attached Particles"> + <menu_item_check.on_check + function="CheckControl" + parameter="RenderAttachedParticles" /> + <menu_item_check.on_click + function="Advanced.HandleAttchedLightParticles" + parameter="RenderAttachedParticles" /> + </menu_item_check> + </menu> + <menu + create_jump_keys="true" + label="World" + layout="topleft" + name="World" + tear_off="true"> + <menu_item_check + label="Sim Sun Override" + layout="topleft" + name="Sim Sun Override"> + <menu_item_check.on_check + function="CheckControl" + parameter="SkyOverrideSimSunPosition" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="SkyOverrideSimSunPosition" /> + </menu_item_check> + <menu_item_check + label="Cheesy Beacon" + layout="topleft" + name="Cheesy Beacon"> + <menu_item_check.on_check + function="CheckControl" + parameter="CheesyBeacon" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="CheesyBeacon" /> + </menu_item_check> + <menu_item_check + label="Fixed Weather" + layout="topleft" + name="Fixed Weather"> + <menu_item_check.on_check + function="CheckControl" + parameter="FixedWeather" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="FixedWeather" /> + </menu_item_check> + <menu_item_call + label="Dump Region Object Cache" + layout="topleft" + name="Dump Region Object Cache"> + <menu_item_call.on_click + function="Advanced.DumpRegionObjectCache" /> + </menu_item_call> + </menu> + <menu + create_jump_keys="true" + label="UI" + layout="topleft" + name="UI" + tear_off="true"> + <menu_item_check + label="New Bottom Bar" + layout="topleft" + name="New Bottom Bar"> + <menu_item_check.on_check + function="CheckControl" + parameter="BottomPanelNew" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="BottomPanelNew" /> + </menu_item_check> + <menu_item_call + label="Web Browser Test" + layout="topleft" + name="Web Browser Test"> + <menu_item_call.on_click + function="Advanced.WebBrowserTest" /> + </menu_item_call> + <menu_item_call + label="Buy Currency Test" + layout="topleft" + name="Buy Currency Test"> + <menu_item_call.on_click + function="Advanced.BuyCurrencyTest" /> + </menu_item_call> + <menu_item_call + label="UI/Color Settings" + layout="topleft" + name="UI/Color Settings"> + <menu_item_call.on_click + function="Advanced.ShowDebugSettings" + parameter="skin" /> + </menu_item_call> + <menu_item_check + label="Editable UI" + layout="topleft" + name="Editable UI"> + <menu_item_check.on_check + function="Advanced.CheckEditableUI" /> + <menu_item_check.on_click + function="Advanced.ToggleEditableUI" /> + </menu_item_check> + <menu_item_call + label="Dump SelectMgr" + layout="topleft" + name="Dump SelectMgr"> + <menu_item_call.on_click + function="Advanced.DumpSelectMgr" /> + </menu_item_call> + <menu_item_call + label="Dump Inventory" + layout="topleft" + name="Dump Inventory"> + <menu_item_call.on_click + function="Advanced.DumpInventory" /> + </menu_item_call> + <menu_item_call + label="Dump Focus Holder" + layout="topleft" + name="Dump Focus Holder" + shortcut="control|alt|F"> + <menu_item_call.on_click + function="Advanced.DumpFocusHolder" /> + </menu_item_call> + <menu_item_call + label="Print Selected Object Info" + layout="topleft" + name="Print Selected Object Info" + shortcut="control|shift|P"> + <menu_item_call.on_click + function="Advanced.PrintSelectedObjectInfo" /> + </menu_item_call> + <menu_item_call + label="Print Agent Info" + layout="topleft" + name="Print Agent Info" + shortcut="shift|P"> + <menu_item_call.on_click + function="Advanced.PrintAgentInfo" /> + </menu_item_call> + <menu_item_call + label="Memory Stats" + layout="topleft" + name="Memory Stats" + shortcut="control|alt|shift|M"> + <menu_item_call.on_click + function="Advanced.PrintTextureMemoryStats" /> + </menu_item_call> + <menu_item_check + label="Double-ClickAuto-Pilot" + layout="topleft" + name="Double-ClickAuto-Pilot"> + <menu_item_check.on_check + function="CheckControl" + parameter="DoubleClickAutoPilot" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="DoubleClickAutoPilot" /> + </menu_item_check> + <menu_item_separator + layout="topleft" /> + <menu_item_check + label="Debug SelectMgr" + layout="topleft" + name="Debug SelectMgr"> + <menu_item_check.on_check + function="CheckControl" + parameter="DebugSelectMgr" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="DebugSelectMgr" /> + </menu_item_check> + <menu_item_check + label="Debug Clicks" + layout="topleft" + name="Debug Clicks"> + <menu_item_check.on_check + function="Advanced.CheckDebugClicks" + parameter="DebugClicks" /> + <menu_item_check.on_click + function="Advanced.ToggleDebugClicks" + parameter="DebugClicks" /> + </menu_item_check> + <menu_item_check + label="Debug Views" + layout="topleft" + name="Debug Views"> + <menu_item_check.on_check + function="Advanced.CheckDebugViews" /> + <menu_item_check.on_click + function="Advanced.ToggleDebugViews" /> + </menu_item_check> + <menu_item_check + label="Debug Name Tooltips" + layout="topleft" + name="Debug Name Tooltips"> + <menu_item_check.on_check + function="Advanced.CheckXUINameTooltips" + parameter="XUINameTooltips" /> + <menu_item_check.on_click + function="Advanced.ToggleXUINameTooltips" /> + </menu_item_check> + <menu_item_check + label="Debug Mouse Events" + layout="topleft" + name="Debug Mouse Events"> + <menu_item_check.on_check + function="Advanced.CheckDebugMouseEvents" + parameter="MouseEvents" /> + <menu_item_check.on_click + function="Advanced.ToggleDebugMouseEvents" /> + </menu_item_check> + <menu_item_check + label="Debug Keys" + layout="topleft" + name="Debug Keys"> + <menu_item_check.on_check + function="Advanced.CheckDebugKeys" + parameter="DebugKeys" /> + <menu_item_check.on_click + function="Advanced.ToggleDebugKeys" /> + </menu_item_check> + <menu_item_check + label="Debug WindowProc" + layout="topleft" + name="Debug WindowProc"> + <menu_item_check.on_check + function="Advanced.CheckDebugWindowProc" + parameter="DebugWindowProc" /> + <menu_item_check.on_click + function="Advanced.ToggleDebugWindowProc" + parameter="DebugWindowProc" /> + </menu_item_check> + </menu> + <menu + create_jump_keys="true" + label="XUI" + layout="topleft" + name="XUI" + tear_off="true"> + <menu_item_call + label="Show Font Test" + layout="topleft" + name="Show Font Test"> + <menu_item_call.on_click + function="Advanced.ShowFontTest" /> + </menu_item_call> + <menu_item_call + label="Load from XML..." + layout="topleft" + name="Load from XML"> + <menu_item_call.on_click + function="Advanced.LoadUIFromXML" /> + </menu_item_call> + <menu_item_call + label="Save to XML..." + layout="topleft" + name="Save to XML"> + <menu_item_call.on_click + function="Advanced.SaveUIToXML" /> + </menu_item_call> + <menu_item_check + label="Show XUI Names" + layout="topleft" + name="Show XUI Names"> + <menu_item_check.on_check + function="Advanced.CheckXUINames" + parameter="showUIname" /> + <menu_item_check.on_click + function="Advanced.ToggleXUINames" /> + </menu_item_check> + </menu> + <menu + create_jump_keys="true" + label="Character" + layout="topleft" + name="Character" + tear_off="true"> + <menu + create_jump_keys="true" + label="Grab Baked Texture" + layout="topleft" + name="Grab Baked Texture" + tear_off="true"> + <menu_item_call + label="Iris" + layout="topleft" + name="Iris"> + <menu_item_call.on_click + function="Advanced.GrabBakedTexture" + parameter="iris" /> + <menu_item_call.on_enable + function="Advanced.EnableGrabBakedTexture" /> + </menu_item_call> + <menu_item_call + label="Head" + layout="topleft" + name="Head"> + <menu_item_call.on_click + function="Advanced.GrabBakedTexture" + parameter="head" /> + <menu_item_call.on_enable + function="Advanced.EnableGrabBakedTexture" /> + </menu_item_call> + <menu_item_call + label="Upper Body" + layout="topleft" + name="Upper Body"> + <menu_item_call.on_click + function="Advanced.GrabBakedTexture" + parameter="upper" /> + <menu_item_call.on_enable + function="Advanced.EnableGrabBakedTexture" /> + </menu_item_call> + <menu_item_call + label="Lower Body" + layout="topleft" + name="Lower Body"> + <menu_item_call.on_click + function="Advanced.GrabBakedTexture" + parameter="lower" /> + <menu_item_call.on_enable + function="Advanced.EnableGrabBakedTexture" /> + </menu_item_call> + <menu_item_call + label="Skirt" + layout="topleft" + name="Skirt"> + <menu_item_call.on_click + function="Advanced.GrabBakedTexture" + parameter="skirt" /> + <menu_item_call.on_enable + function="Advanced.EnableGrabBakedTexture" /> + </menu_item_call> + <menu_item_call + label="Skirt" + layout="topleft" + name="Hair"> + <menu_item_call.on_click + function="Advanced.GrabBakedTexture" + parameter="hair" /> + <menu_item_call.on_enable + function="Advanced.EnableGrabBakedTexture" /> + </menu_item_call> + </menu> + <menu + create_jump_keys="true" + label="Character Tests" + layout="topleft" + name="Character Tests" + tear_off="true"> + <menu_item_call + label="Appearance To XML" + layout="topleft" + name="Appearance To XML"> + <menu_item_call.on_click + function="Advanced.AppearanceToXML" /> + </menu_item_call> + <menu_item_call + label="Toggle Character Geometry" + layout="topleft" + name="Toggle Character Geometry"> + <menu_item_call.on_click + function="Advanced.ToggleCharacterGeometry" /> + <menu_item_call.on_enable + function="EnableGodCustomerService" /> + </menu_item_call> + <menu_item_call + label="Test Male" + layout="topleft" + name="Test Male"> + <menu_item_call.on_click + function="Advanced.TestMale" /> + </menu_item_call> + <menu_item_call + label="Test Female" + layout="topleft" + name="Test Female"> + <menu_item_call.on_click + function="Advanced.TestFemale" /> + </menu_item_call> + <menu_item_call + label="Toggle PG" + layout="topleft" + name="Toggle PG"> + <menu_item_call.on_click + function="Advanced.TogglePG" /> + </menu_item_call> + <menu_item_check + label="Allow Select Avatar" + layout="topleft" + name="Allow Select Avatar"> + <menu_item_check.on_check + function="CheckControl" + parameter="AllowSelectAvatar" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="AllowSelectAvatar" /> + </menu_item_check> + </menu> + <menu_item_call + label="Force Params to Default" + layout="topleft" + name="Force Params to Default"> + <menu_item_call.on_click + function="Advanced.ForceParamsToDefault" /> + </menu_item_call> + <menu_item_check + label="Animation Info" + layout="topleft" + name="Animation Info"> + <menu_item_check.on_check + function="Advanced.CheckAnimationInfo" + parameter="AnimationInfo" /> + <menu_item_check.on_click + function="Advanced.ToggleAnimationInfo" + parameter="" /> + </menu_item_check> + <menu_item_check + label="Slow Motion Animations" + layout="topleft" + name="Slow Motion Animations"> + <menu_item_check.on_check + function="CheckControl" + parameter="SlowMotionAnimation" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="SlowMotionAnimation" /> + </menu_item_check> + <menu_item_check + label="Show Look At" + layout="topleft" + name="Show Look At"> + <menu_item_check.on_check + function="Advanced.CheckShowLookAt" + parameter="ShowLookAt" /> + <menu_item_check.on_click + function="Advanced.ToggleShowLookAt" /> + </menu_item_check> + <menu_item_check + label="Show Point At" + layout="topleft" + name="Show Point At"> + <menu_item_check.on_check + function="Advanced.CheckShowPointAt" + parameter="ShowPointAt" /> + <menu_item_check.on_click + function="Advanced.ToggleShowPointAt" /> + </menu_item_check> + <menu_item_check + label="Debug Joint Updates" + layout="topleft" + name="Debug Joint Updates"> + <menu_item_check.on_check + function="Advanced.CheckDebugJointUpdates" + parameter="DebugJointUpdates" /> + <menu_item_check.on_click + function="Advanced.ToggleDebugJointUpdates" /> + </menu_item_check> + <menu_item_check + label="Disable LOD" + layout="topleft" + name="Disable LOD"> + <menu_item_check.on_check + function="Advanced.CheckDisableLOD" + parameter="DisableLOD" /> + <menu_item_check.on_click + function="Advanced.ToggleDisableLOD" /> + </menu_item_check> + <menu_item_check + label="Debug Character Vis" + layout="topleft" + name="Debug Character Vis"> + <menu_item_check.on_check + function="Advanced.CheckDebugCharacterVis" + parameter="DebugCharacterVis" /> + <menu_item_check.on_click + function="Advanced.ToggleDebugCharacterVis" /> + </menu_item_check> + <menu_item_check + label="Show Collision Skeleton" + layout="topleft" + name="Show Collision Skeleton"> + <menu_item_check.on_check + function="Advanced.CheckInfoDisplay" + parameter="collision skeleton" /> + <menu_item_check.on_click + function="Advanced.ToggleInfoDisplay" + parameter="collision skeleton" /> + </menu_item_check> + <menu_item_check + label="Display Agent Target" + layout="topleft" + name="Display Agent Target"> + <menu_item_check.on_check + function="Advanced.CheckInfoDisplay" + parameter="agent target" /> + <menu_item_check.on_click + function="Advanced.ToggleInfoDisplay" + parameter="agent target" /> + </menu_item_check> + <!-- <menu_item_check + label="Debug Rotation" + layout="topleft" + name="Debug Rotation"> + <menu_item_check.on_check + function="CheckControl" + parameter="DebugAvatarRotation" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="DebugAvatarRotation" /> + </menu_item_check> --> + <menu_item_call + label="Dump Attachments" + layout="topleft" + name="Dump Attachments"> + <menu_item_call.on_click + function="Advanced.DumpAttachments" /> + </menu_item_call> + <menu_item_call + label="Debug Avatar Textures" + layout="topleft" + name="Debug Avatar Textures" + shortcut="control|alt|shift|A"> + <menu_item_call.on_click + function="Advanced.DebugAvatarTextures" /> + </menu_item_call> + <menu_item_call + label="Dump Local Textures" + layout="topleft" + name="Dump Local Textures" + shortcut="alt|shift|M"> + <menu_item_call.on_click + function="Advanced.DumpAvatarLocalTextures" /> + </menu_item_call> + </menu> + <menu_item_separator + layout="topleft" /> + <menu_item_check + label="Debug Permissions" + layout="topleft" + name="DebugPermissions"> + <menu_item_check.on_check + function="CheckControl" + parameter="DebugPermissions" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="DebugPermissions" /> + </menu_item_check> + <menu_item_call + label="Compress Images" + layout="topleft" + name="Compress Images"> + <menu_item_call.on_click + function="Advanced.CompressImage" /> + </menu_item_call> + <menu_item_check + label="Console Window" + layout="topleft" + name="Console Window"> + <menu_item_check.on_check + function="CheckControl" + parameter="ShowConsoleWindow" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="ShowConsoleWindow" /> + </menu_item_check> + </menu> + <menu + create_jump_keys="true" + label="Admin" + layout="topleft" + name="Admin" + tear_off="true" + visible="false"> + <menu + create_jump_keys="true" + label="Object" + layout="topleft" + tear_off="true"> + <menu_item_call + label="Take Copy" + layout="topleft" + name="Take Copy" + shortcut="control|alt|shift|O"> + <menu_item_call.on_click + function="Admin.ForceTakeCopy" /> + <menu_item_call.on_enable + function="EnableGodCustomerService" /> + </menu_item_call> + <menu_item_call + label="Force Owner To Me" + layout="topleft" + name="Force Owner To Me"> + <menu_item_call.on_click + function="Admin.HandleObjectOwnerSelf" /> + <menu_item_call.on_enable + function="EnableGodCustomerService" /> + </menu_item_call> + <menu_item_call + label="Force Owner Permissive" + layout="topleft" + name="Force Owner Permissive"> + <menu_item_call.on_click + function="Admin.HandleObjectOwnerPermissive" /> + <menu_item_call.on_enable + function="EnableGodCustomerService" /> + </menu_item_call> + <menu_item_call + label="Delete" + layout="topleft" + name="Delete" + shortcut="control|alt|shift|Del"> + <menu_item_call.on_click + function="Admin.HandleForceDelete" /> + <menu_item_call.on_enable + function="EnableGodCustomerService" /> + </menu_item_call> + <menu_item_call + label="Lock" + layout="topleft" + name="Lock" + shortcut="control|alt|shift|L"> + <menu_item_call.on_click + function="Admin.HandleObjectLock" /> + <menu_item_call.on_enable + function="EnableGodCustomerService" /> + </menu_item_call> + <menu_item_call + label="Get Assets IDs" + layout="topleft" + name="Get Assets IDs" + shortcut="control|alt|shift|I"> + <menu_item_call.on_click + function="Admin.HandleObjectAssetIDs" /> + <menu_item_call.on_enable + function="EnableGodCustomerService" /> + </menu_item_call> + </menu> + <menu + create_jump_keys="true" + label="Parcel" + layout="topleft" + name="Parcel" + tear_off="true"> + <menu_item_call + label="Owner To Me" + layout="topleft" + name="Owner To Me"> + <menu_item_call.on_click + function="Admin.HandleForceParcelOwnerToMe" /> + <menu_item_call.on_enable + function="EnableGodCustomerService" /> + </menu_item_call> + <menu_item_call + label="Set to Linden Content" + layout="topleft" + name="Set to Linden Content" + shortcut="control|alt|shift|C"> + <menu_item_call.on_click + function="Admin.HandleForceParcelToContent" /> + <menu_item_call.on_enable + function="EnableGodCustomerService" /> + </menu_item_call> + <menu_item_call + label="Claim Public Land" + layout="topleft" + name="Claim Public Land"> + <menu_item_call.on_click + function="Admin.HandleClaimPublicLand" /> + <menu_item_call.on_enable + function="EnableGodCustomerService" /> + </menu_item_call> + </menu> + <menu + create_jump_keys="true" + label="Region" + layout="topleft" + name="Region" + tear_off="true"> + <menu_item_call + label="Dump Temp Asset Data" + layout="topleft" + name="Dump Temp Asset Data"> + <menu_item_call.on_click + function="Admin.HandleRegionDumpTempAssetData" /> + <menu_item_call.on_enable + function="EnableGodCustomerService" /> + </menu_item_call> + <menu_item_call + label="Save Region State" + layout="topleft" + name="Save Region State"> + <menu_item_call.on_click + function="Admin.OnSaveState" /> + <menu_item_call.on_enable + function="EnableGodCustomerService" /> + </menu_item_call> + </menu> + <menu_item_call + label="God Tools" + layout="topleft" + name="God Tools"> + <menu_item_call.on_click + function="Admin.ShowGodTools" /> + <menu_item_call.on_enable + function="EnableGodCustomerService" /> + </menu_item_call> + </menu> + <menu + create_jump_keys="true" + label="Admin" + layout="topleft" + name="Deprecated" + tear_off="true" + visible="false"> + <menu + create_jump_keys="true" + label="Attach Object" + layout="topleft" + mouse_opaque="false" + name="Attach Object" + tear_off="true" /> + <menu + create_jump_keys="true" + label="Detach Object" + layout="topleft" + mouse_opaque="false" + name="Detach Object" + tear_off="true" /> + <menu + create_jump_keys="true" + label="Take Off Clothing" + layout="topleft" + mouse_opaque="false" + name="Take Off Clothing" + tear_off="true"> + <menu_item_call + label="Shirt" + layout="topleft" + name="Shirt"> + <menu_item_call.on_click + function="Edit.TakeOff" + parameter="shirt" /> + <menu_item_call.on_enable + function="Edit.EnableTakeOff" + parameter="shirt" /> + </menu_item_call> + <menu_item_call + label="Pants" + layout="topleft" + name="Pants"> + <menu_item_call.on_click + function="Edit.TakeOff" + parameter="pants" /> + <menu_item_call.on_enable + function="Edit.EnableTakeOff" + parameter="pants" /> + </menu_item_call> + <menu_item_call + label="Shoes" + layout="topleft" + name="Shoes"> + <menu_item_call.on_click + function="Edit.TakeOff" + parameter="shoes" /> + <menu_item_call.on_enable + function="Edit.EnableTakeOff" + parameter="shoes" /> + </menu_item_call> + <menu_item_call + label="Socks" + layout="topleft" + name="Socks"> + <menu_item_call.on_click + function="Edit.TakeOff" + parameter="socks" /> + <menu_item_call.on_enable + function="Edit.EnableTakeOff" + parameter="socks" /> + </menu_item_call> + <menu_item_call + label="Jacket" + layout="topleft" + name="Jacket"> + <menu_item_call.on_click + function="Edit.TakeOff" + parameter="jacket" /> + <menu_item_call.on_enable + function="Edit.EnableTakeOff" + parameter="jacket" /> + </menu_item_call> + <menu_item_call + label="Gloves" + layout="topleft" + name="Gloves"> + <menu_item_call.on_click + function="Edit.TakeOff" + parameter="gloves" /> + <menu_item_call.on_enable + function="Edit.EnableTakeOff" + parameter="gloves" /> + </menu_item_call> + <menu_item_call + label="Undershirt" + layout="topleft" + name="Menu Undershirt"> + <menu_item_call.on_click + function="Edit.TakeOff" + parameter="undershirt" /> + <menu_item_call.on_enable + function="Edit.EnableTakeOff" + parameter="undershirt" /> + </menu_item_call> + <menu_item_call + label="Underpants" + layout="topleft" + name="Menu Underpants"> + <menu_item_call.on_click + function="Edit.TakeOff" + parameter="underpants" /> + <menu_item_call.on_enable + function="Edit.EnableTakeOff" + parameter="underpants" /> + </menu_item_call> + <menu_item_call + label="Skirt" + layout="topleft" + name="Skirt"> + <menu_item_call.on_click + function="Edit.TakeOff" + parameter="skirt" /> + <menu_item_call.on_enable + function="Edit.EnableTakeOff" + parameter="skirt" /> + </menu_item_call> + <menu_item_call + label="Alpha" + layout="topleft" + name="Alpha"> + <menu_item_call.on_click + function="Edit.TakeOff" + parameter="alpha" /> + <menu_item_call.on_enable + function="Edit.EnableTakeOff" + parameter="alpha" /> + </menu_item_call> + <menu_item_call + label="Tattoo" + layout="topleft" + name="Tattoo"> + <menu_item_call.on_click + function="Edit.TakeOff" + parameter="tattoo" /> + <menu_item_call.on_enable + function="Edit.EnableTakeOff" + parameter="tattoo" /> + </menu_item_call> + <menu_item_call + label="All Clothes" + layout="topleft" + name="All Clothes"> + <menu_item_call.on_click + function="Edit.TakeOff" + parameter="all" /> + </menu_item_call> + </menu> + <menu_item_check + label="Show Toolbar" + layout="topleft" + name="Show Toolbar"> + <menu_item_check.on_check + function="FloaterVisible" + parameter="toolbar" /> + <menu_item_check.on_click + function="ShowFloater" + parameter="toolbar" /> + </menu_item_check> + <menu + create_jump_keys="true" + label="Help" + layout="topleft" + name="Help" + tear_off="true"> + <menu_item_call + label="Official Linden Blog" + layout="topleft" + name="Official Linden Blog"> + <menu_item_call.on_click + function="PromptShowURL" + parameter="WebLaunchSupportWiki,http://blog.secondlife.com/" /> + </menu_item_call> + <menu_item_call + label="Scripting Portal" + layout="topleft" + name="Scripting Portal"> + <menu_item_call.on_click + function="PromptShowURL" + parameter="WebLaunchLSLWiki,http://wiki.secondlife.com/wiki/LSL_Portal" /> + </menu_item_call> + <menu + create_jump_keys="true" + label="Bug Reporting" + layout="topleft" + name="Bug Reporting" + tear_off="true"> + <menu_item_call + label="Public Issue Tracker" + layout="topleft" + name="Public Issue Tracker"> + <menu_item_call.on_click + function="PromptShowURL" + parameter="WebLaunchPublicIssue,http://jira.secondlife.com" /> + </menu_item_call> + <menu_item_call + label="Public Issue Tracker Help" + layout="topleft" + name="Publc Issue Tracker Help"> + <menu_item_call.on_click + function="PromptShowURL" + parameter="WebLaunchPublicIssueHelp,http://wiki.secondlife.com/wiki/Issue_tracker" /> + </menu_item_call> + <menu_item_separator + layout="topleft" /> + <menu_item_call + label="Bug Reporting 101" + layout="topleft" + name="Bug Reporing 101"> + <menu_item_call.on_click + function="PromptShowURL" + parameter="WebLaunchBugReport101,http://wiki.secondlife.com/wiki/Bug_Reporting_101" /> + </menu_item_call> + <menu_item_call + label="Security Issues" + layout="topleft" + name="Security Issues"> + <menu_item_call.on_click + function="PromptShowURL" + parameter="WebLaunchSecurityIssues,http://wiki.secondlife.com/wiki/Security_issues" /> + </menu_item_call> + <menu_item_call + label="QA Wiki" + layout="topleft" + name="QA Wiki"> + <menu_item_call.on_click + function="PromptShowURL" + parameter="WebLaunchQAWiki,http://wiki.secondlife.com/wiki/QA_Portal" /> + </menu_item_call> + </menu> + </menu> + </menu> +</menu_bar> diff --git a/indra/newview/skins/default/xui/en/mime_types.xml b/indra/newview/skins/default/xui/en/mime_types.xml new file mode 100644 index 0000000000000000000000000000000000000000..e3d102148a68e7324c4da29e745d3574278acb01 --- /dev/null +++ b/indra/newview/skins/default/xui/en/mime_types.xml @@ -0,0 +1,456 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<mimetypes name="default"> + <defaultlabel> + (Unknown) + </defaultlabel> + <defaultwidget> + none + </defaultwidget> + <defaultimpl> + LLMediaImplLLMozLib + </defaultimpl> + <widgetset name="web"> + <label name="web_label"> + Web Content + </label> + <icon> + icn_media_web.tga + </icon> + <default_type> + text/html + </default_type> + <tooltip name="web_tooltip"> + This location has Web content + </tooltip> + <playtip name="web_playtip"> + Show Web content + </playtip> + <allow_resize> + true + </allow_resize> + <allow_looping> + false + </allow_looping> + </widgetset> + <widgetset name="movie"> + <label name="movie_label"> + Movie + </label> + <default_type> + video/* + </default_type> + <icon> + icn_media_movie.tga + </icon> + <tooltip name="movie_tooltip"> + There is a movie to play here + </tooltip> + <playtip name="movie_playtip"> + Play movie + </playtip> + <allow_resize> + false + </allow_resize> + <allow_looping> + true + </allow_looping> + </widgetset> + <widgetset name="none"> + <label name="none_label"> + No Content + </label> + <default_type> + none/none + </default_type> + <icon> + icn_media_web.tga + </icon> + <tooltip name="none_tooltip"> + No media here + </tooltip> + <playtip name="none_playtip" /> + <allow_resize> + false + </allow_resize> + <allow_looping> + false + </allow_looping> + </widgetset> + <widgetset name="image"> + <label name="image_label"> + Image + </label> + <icon> + icn_media_web.tga + </icon> + <default_type> + image/* + </default_type> + <tooltip name="image_tooltip"> + There is an image at this location + </tooltip> + <playtip name="image_playtip"> + View this location's image + </playtip> + <allow_resize> + false + </allow_resize> + <allow_looping> + false + </allow_looping> + </widgetset> + <widgetset name="audio"> + <label name="audio_label"> + Audio + </label> + <icon> + icn_media_web.tga + </icon> + <default_type> + audio/* + </default_type> + <tooltip name="audio_tooltip"> + There is audio at this location + </tooltip> + <playtip name="audio_playtip"> + Play this location's audio + </playtip> + <allow_resize> + false + </allow_resize> + <allow_looping> + true + </allow_looping> + </widgetset> + <scheme name="rtsp"> + <label name="rtsp_label"> + Real Time Streaming + </label> + <widgettype> + movie + </widgettype> + </scheme> + <mimetype name="blank"> + <label name="blank_label"> + - None - + </label> + <widgettype> + none + </widgettype> + <impl> + LLMediaImplQuickTime + </impl> + </mimetype> + <mimetype name="none/none"> + <label name="none/none_label"> + - None - + </label> + <widgettype> + none + </widgettype> + </mimetype> + <mimetype name="audio/*"> + <label name="audio2_label"> + Audio + </label> + <widgettype> + audio + </widgettype> + </mimetype> + <mimetype name="video/*"> + <label name="video2_label"> + Video + </label> + <widgettype> + movie + </widgettype> + </mimetype> + <mimetype name="image/*"> + <label name="image2_label"> + Image + </label> + <widgettype> + image + </widgettype> + </mimetype> + <mimetype menu="1" name="video/vnd.secondlife.qt.legacy"> + <label name="vnd.secondlife.qt.legacy_label"> + Movie (QuickTime) + </label> + <widgettype> + movie + </widgettype> + <impl> + LLMediaImplQuickTime + </impl> + </mimetype> + <mimetype name="application/javascript"> + <label name="application/javascript_label"> + Javascript + </label> + <widgettype> + web + </widgettype> + </mimetype> + <mimetype name="application/ogg"> + <label name="application/ogg_label"> + Ogg Audio/Video + </label> + <widgettype> + audio + </widgettype> + </mimetype> + <mimetype name="application/pdf"> + <label name="application/pdf_label"> + PDF Document + </label> + <widgettype> + image + </widgettype> + </mimetype> + <mimetype name="application/postscript"> + <label name="application/postscript_label"> + Postscript Document + </label> + <widgettype> + image + </widgettype> + </mimetype> + <mimetype name="application/rtf"> + <label name="application/rtf_label"> + Rich Text (RTF) + </label> + <widgettype> + image + </widgettype> + </mimetype> + <mimetype name="application/smil"> + <label name="application/smil_label"> + Synchronized Multimedia Integration Language (SMIL) + </label> + <widgettype> + movie + </widgettype> + </mimetype> + <mimetype name="application/xhtml+xml"> + <label name="application/xhtml+xml_label"> + Web Page (XHTML) + </label> + <widgettype> + web + </widgettype> + </mimetype> + <mimetype name="application/x-director"> + <label name="application/x-director_label"> + Macromedia Director + </label> + <widgettype> + image + </widgettype> + </mimetype> + <mimetype name="application/x-shockwave-flash"> + <label name="application/x-shockwave-flash_label"> + Flash + </label> + <widgettype> + image + </widgettype> + </mimetype> + <mimetype name="audio/mid"> + <label name="audio/mid_label"> + Audio (MIDI) + </label> + <widgettype> + audio + </widgettype> + </mimetype> + <mimetype name="audio/mpeg"> + <label name="audio/mpeg_label"> + Audio (MP3) + </label> + <widgettype> + audio + </widgettype> + </mimetype> + <mimetype name="audio/x-aiff"> + <label name="audio/x-aiff_label"> + Audio (AIFF) + </label> + <widgettype> + audio + </widgettype> + </mimetype> + <mimetype name="audio/x-wav"> + <label name="audio/x-wav_label"> + Audio (WAV) + </label> + <widgettype> + audio + </widgettype> + </mimetype> + <mimetype menu="1" name="image/bmp"> + <label name="image/bmp_label"> + Image (BMP) + </label> + <widgettype> + image + </widgettype> + <impl> + LLMediaImplLLMozLib + </impl> + </mimetype> + <mimetype menu="1" name="image/gif"> + <label name="image/gif_label"> + Image (GIF) + </label> + <widgettype> + image + </widgettype> + <impl> + LLMediaImplLLMozLib + </impl> + </mimetype> + <mimetype menu="1" name="image/jpeg"> + <label name="image/jpeg_label"> + Image (JPEG) + </label> + <widgettype> + image + </widgettype> + <impl> + LLMediaImplLLMozLib + </impl> + </mimetype> + <mimetype menu="1" name="image/png"> + <label name="image/png_label"> + Image (PNG) + </label> + <widgettype> + image + </widgettype> + <impl> + LLMediaImplLLMozLib + </impl> + </mimetype> + <mimetype name="image/svg+xml"> + <label name="image/svg+xml_label"> + Image (SVG) + </label> + <widgettype> + image + </widgettype> + <impl> + LLMediaImplLLMozLib + </impl> + </mimetype> + <mimetype menu="1" name="image/tiff"> + <label name="image/tiff_label"> + Image (TIFF) + </label> + <widgettype> + image + </widgettype> + <impl> + LLMediaImplLLMozLib + </impl> + </mimetype> + <mimetype menu="1" name="text/html"> + <label name="text/html_label"> + Web Page + </label> + <widgettype> + web + </widgettype> + <impl> + LLMediaImplLLMozLib + </impl> + </mimetype> + <mimetype menu="1" name="text/plain"> + <label name="text/plain_label"> + Text + </label> + <widgettype> + text + </widgettype> + <impl> + LLMediaImplLLMozLib + </impl> + </mimetype> + <mimetype name="text/xml"> + <label name="text/xml_label"> + XML + </label> + <widgettype> + text + </widgettype> + <impl> + LLMediaImplLLMozLib + </impl> + </mimetype> + <mimetype menu="1" name="video/mpeg"> + <label name="video/mpeg_label"> + Movie (MPEG) + </label> + <widgettype> + movie + </widgettype> + <impl> + LLMediaImplQuickTime + </impl> + </mimetype> + <mimetype name="video/mp4"> + <label name="video/mp4_label"> + Movie (MP4) + </label> + <widgettype> + movie + </widgettype> + <impl> + LLMediaImplQuickTime + </impl> + </mimetype> + <mimetype menu="1" name="video/quicktime"> + <label name="video/quicktime_label"> + Movie (QuickTime) + </label> + <widgettype> + movie + </widgettype> + <impl> + LLMediaImplQuickTime + </impl> + </mimetype> + <mimetype name="video/x-ms-asf"> + <label name="video/x-ms-asf_label"> + Movie (Windows Media ASF) + </label> + <widgettype> + movie + </widgettype> + <impl> + LLMediaImplQuickTime + </impl> + </mimetype> + <mimetype name="video/x-ms-wmv"> + <label name="video/x-ms-wmv_label"> + Movie (Windows Media WMV) + </label> + <widgettype> + movie + </widgettype> + <impl> + LLMediaImplQuickTime + </impl> + </mimetype> + <mimetype menu="1" name="video/x-msvideo"> + <label name="video/x-msvideo_label"> + Movie (AVI) + </label> + <widgettype> + movie + </widgettype> + <impl> + LLMediaImplQuickTime + </impl> + </mimetype> +</mimetypes> diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml new file mode 100644 index 0000000000000000000000000000000000000000..47b21dc64db16bfa44fe376b4172ffdd2c622323 --- /dev/null +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -0,0 +1,6470 @@ +<?xml version="1.0" ?><notifications> + + <global name="skipnexttime"> + + Don't show me this again + </global> + + <global name="alwayschoose"> + + Always choose this option + </global> + + <global name="implicitclosebutton"> + Close + </global> + + <template name="okbutton"> + <form> + <button + default="true" + index="0" + name="OK" + text="$yestext"/> + </form> + </template> + + <template name="okignore"> + <form> + <button + default="true" + index="0" + name="OK" + text="$yestext"/> + <ignore text="$ignoretext"/> + </form> + </template> + + <template name="okcancelbuttons"> + <form> + <button + default="true" + index="0" + name="OK" + text="$yestext"/> + <button + index="1" + name="Cancel" + text="$notext"/> + </form> + </template> + + <template name="okcancelignore"> + <form> + <button + default="true" + index="0" + name="OK" + text="$yestext"/> + <button + index="1" + name="Cancel" + text="$notext"/> + <ignore text="$ignoretext"/> + </form> + </template> + + <template name="okhelpbuttons"> + <form> + <button + default="true" + index="0" + name="OK" + text="$yestext"/> + <button + index="1" + name="Help" + text="$helptext"/> + </form> + </template> + + <template name="yesnocancelbuttons"> + <form> + <button + default="true" + index="0" + name="Yes" + text="$yestext"/> + <button + index="1" + name="No" + text="$notext"/> + <button + index="2" + name="Cancel" + text="$canceltext"/> + </form> + </template> + + <notification + functor="GenericAcknowledge" + icon="alertmodal.tga" + name="MissingAlert" + label="Unknown Alert Message" + type="alertmodal"> +Your version of Second Life does not know how to display the alert message it just received. + +Error details: The alert called '[_NAME]' was not found in notifications.xml. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="FloaterNotFound" + type="alertmodal"> +Floater error: Could not find the following controls: + +[CONTROLS] + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="TutorialNotFound" + type="alertmodal"> +No tutorial is currently available. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="GenericAlert" + type="alertmodal"> +[MESSAGE] + </notification> + + <notification + icon="alertmodal.tga" + name="GenericAlertYesCancel" + type="alertmodal"> +[MESSAGE] + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="Yes"/> + </notification> + + <notification + icon="alertmodal.tga" + name="BadInstallation" + type="alertmodal"> +An error occurred while updating Second Life. Please download the latest version from secondlife.com. + <usetemplate + name="okbutton" + yestext="Ok"/> + </notification> + + <notification + icon="alertmodal.tga" + name="LoginFailedNoNetwork" + type="alertmodal"> +Network Error: Could not establish a connection. +'[DIAGNOSTIC]' +Please check your network connection. + <usetemplate + name="okbutton" + yestext="Ok"/> + </notification> + + <notification + icon="alertmodal.tga" + name="MessageTemplateNotFound" + type="alertmodal"> +Message Template [PATH] not found. + <usetemplate + name="okbutton" + yestext="Ok"/> + </notification> + + <notification + icon="alertmodal.tga" + name="WearableSave" + type="alertmodal"> +Save changes to current clothing/body part? + <usetemplate + canceltext="Cancel" + name="yesnocancelbuttons" + notext="Don't Save" + yestext="Save"/> + </notification> + + <notification + icon="alertmodal.tga" + name="CompileQueueSaveText" + type="alertmodal"> +There was a problem uploading the text for a script due to the following reason: [REASON]. Please try again later. + </notification> + + <notification + icon="alertmodal.tga" + name="CompileQueueSaveBytecode" + type="alertmodal"> +There was a problem uploading the compiled script due to the following reason: [REASON]. Please try again later. + </notification> + + <notification + icon="alertmodal.tga" + name="WriteAnimationFail" + type="alertmodal"> +There was a problem writing animation data. Please try again later. + </notification> + + <notification + icon="alertmodal.tga" + name="UploadAuctionSnapshotFail" + type="alertmodal"> +There was a problem uploading the auction snapshot due to the following reason: [REASON] + </notification> + + <notification + icon="alertmodal.tga" + name="UnableToViewContentsMoreThanOne" + type="alertmodal"> +Unable to view the contents of more than one item at a time. +Please select only one object and try again. + </notification> + + <notification + icon="alertmodal.tga" + name="SaveClothingBodyChanges" + type="alertmodal"> +Save all changes to clothing/body parts? + <usetemplate + canceltext="Cancel" + name="yesnocancelbuttons" + notext="Don't Save" + yestext="Save All"/> + </notification> + + <notification + icon="alertmodal.tga" + name="GrantModifyRights" + type="alertmodal"> +Granting modify rights to another resident allows them to change, delete or take ANY objects you may have in-world. Be VERY careful when handing out this permission. +Do you want to grant modify rights for [FIRST_NAME] [LAST_NAME]? + <usetemplate + name="okcancelbuttons" + notext="No" + yestext="Yes"/> + </notification> + + <notification + icon="alertmodal.tga" + name="GrantModifyRightsMultiple" + type="alertmodal"> +Granting modify rights to another resident allows them to change ANY objects you may have in-world. Be VERY careful when handing out this permission. +Do you want to grant modify rights for the selected Residents? + <usetemplate + name="okcancelbuttons" + notext="No" + yestext="Yes"/> + </notification> + + <notification + icon="alertmodal.tga" + name="RevokeModifyRights" + type="alertmodal"> +Do you want to revoke modify rights for [FIRST_NAME] [LAST_NAME]? + <usetemplate + name="okcancelbuttons" + notext="No" + yestext="Yes"/> + </notification> + + <notification + icon="alertmodal.tga" + name="RevokeModifyRightsMultiple" + type="alertmodal"> +Do you want to revoke modify rights for the selected Residents? + <usetemplate + name="okcancelbuttons" + notext="No" + yestext="Yes"/> + </notification> + + <notification + icon="alertmodal.tga" + name="UnableToCreateGroup" + type="alertmodal"> +Unable to create group. +[MESSAGE] + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="PanelGroupApply" + type="alertmodal"> +[NEEDS_APPLY_MESSAGE] +[WANT_APPLY_MESSAGE] + <usetemplate + canceltext="Cancel" + name="yesnocancelbuttons" + notext="Ignore Changes" + yestext="Apply Changes"/> + </notification> + + <notification + icon="alertmodal.tga" + name="MustSpecifyGroupNoticeSubject" + type="alertmodal"> +You must specify a subject to send a group notice. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="AddGroupOwnerWarning" + type="alertmodal"> +You are about to add group members to the role of [ROLE_NAME]. +Members cannot be removed from that role. +The members must resign from the role themselves. +Are you sure you want to continue? + <usetemplate + ignoretext="When adding group members to the owner role" + name="okcancelignore" + notext="No" + yestext="Yes"/> + </notification> + + <notification + icon="alertmodal.tga" + name="AssignDangerousActionWarning" + type="alertmodal"> +You are about to add the Ability '[ACTION_NAME]' to the Role '[ROLE_NAME]'. + + *WARNING* + Any Member in a Role with this Ability can assign themselves -- and any other member -- to Roles that have more powers than they currently have, potentially elevating themselves to near-Owner power. Be sure you know what you're doing before assigning this Ability. + +Add this Ability to '[ROLE_NAME]'? + <usetemplate + name="okcancelbuttons" + notext="No" + yestext="Yes"/> + </notification> + + <notification + icon="alertmodal.tga" + name="AssignDangerousAbilityWarning" + type="alertmodal"> +You are about to add the Ability '[ACTION_NAME]' to the Role '[ROLE_NAME]'. + + *WARNING* + Any Member in a Role with this Ability can assign themselves -- and any other member -- all Abilities, elevating themselves to near-Owner power. + +Add this Ability to '[ROLE_NAME]'? + <usetemplate + name="okcancelbuttons" + notext="No" + yestext="Yes"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ClickPublishHelpLand" + type="alertmodal"> +Selecting the "Publish in Search" +Checking this box will show: +- this parcel in search results +- this parcel's public objects +- this parcel in web search + </notification> + + <notification + icon="alertmodal.tga" + name="ClickSoundHelpLand" + type="alertmodal">Media and Music can only be experienced within the parcel. Sound and Voice options can be restricted to the parcel or will be heard by residents outside the parcel depending on their maturity Rating. Go to Knowledge Base to learn more about how to set these options? + <url option="0" name="url"> + https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=5046 + </url> + <usetemplate + name="okcancelbuttons" + yestext="Go to Knowledge Base" + notext="Close" /> + </notification> + + <notification + icon="alertmodal.tga" + name="ClickSearchHelpAll" + type="alertmodal"> +Search results are organized based on the tab you are in, your maturity Rating, the category chosen, and other factors. For more details, please see the Knowledge Base. + <url option="0" name="url"> + https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=4722 + </url> + <usetemplate + name="okcancelbuttons" + yestext="Go to Knowledge Base" + notext="Close" /> + </notification> + + <notification + icon="alertmodal.tga" + name="ClickPublishHelpLandDisabled" + type="alertmodal"> +You can't make this parcel show in search because it is located in a region that forbids this. + </notification> + + <notification + icon="alertmodal.tga" + name="ClickPublishHelpAvatar" + type="alertmodal"> +Selecting "Show in Search" will show: +- my profile in search results +- a link to my profile in public group pages + </notification> + + <notification + icon="alertmodal.tga" + name="ClickPartnerHelpAvatar" + type="alertmodal"> +You can propose to another Resident or dissolve an existing partnership through the [SECOND_LIFE] website. + +Go to the Second Life web site for more information on partnering? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="Go to Page"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ClickUploadHelpPermissions" + type="alertmodal"> +Your default permissions may not work in older regions. + </notification> + + <notification + icon="alertmodal.tga" + name="ClickWebProfileHelpAvatar" + type="alertmodal"> +If this Resident has set a web profile URL then you can: + * Click 'Load' to see the page in this Web tab. + * Click Load > 'In external browser' to view the page in your default web browser. + * Click Load > 'Home URL' to return to this Resident's web profile if you've navigated away. + +When viewing your own profile, you can enter any URL as your web profile and click OK to set it. +Other residents can visit the URL you set when they look at your profile. + </notification> + + <notification + icon="alertmodal.tga" + name="JoinGroupCanAfford" + type="alertmodal"> +Joining this group costs L$[COST]. +Do you wish to proceed? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="Join"/> + </notification> + + <notification + icon="alertmodal.tga" + name="JoinGroupCannotAfford" + type="alertmodal"> +Joining this group costs L$[COST]. +You do not have enough L$ to join this group. + </notification> + + <notification + icon="alertmodal.tga" + name="LandBuyPass" + type="alertmodal"> +For L$[COST] you can enter this land ('[PARCEL_NAME]') for [TIME] hours. Buy a pass? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="SalePriceRestriction" + type="alertmodal"> +Sale price must be set to more than L$0 if selling to anyone. +Please select an individual to sell to if selling for L$0. + </notification> + + <notification + icon="alertmodal.tga" + name="ConfirmLandSaleChange" + priority="high" + type="alertmodal"> +The selected [LAND_SIZE] m² land is being set for sale. +Your selling price will be L$[SALE_PRICE] and will be authorized for sale to [NAME]. + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ConfirmLandSaleToAnyoneChange" + type="alertmodal"> +ATTENTION: Clicking 'sell to anyone' makes your land available to the entire Second Life community, even those not in this region. + +The selected [LAND_SIZE] m² land is being set for sale. +Your selling price will be L$[SALE_PRICE] and will be authorized for sale to [NAME]. + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ReturnObjectsDeededToGroup" + type="alertmodal"> +Are you sure you want to return all objects shared with the group '[NAME]' on this parcel of land back to their previous owner's inventory? + +*WARNING* This will delete the non-transferable objects deeded to the group! + +Objects: [N] + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ReturnObjectsOwnedByUser" + type="alertmodal"> +Are you sure you want to return all objects owned by the Resident '[NAME]' on this parcel of land back to their inventory? + +Objects: [N] + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ReturnObjectsOwnedBySelf" + type="alertmodal"> +Are you sure you want to return all objects owned by you on this parcel of land back to your inventory? + +Objects: [N] + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ReturnObjectsNotOwnedBySelf" + type="alertmodal"> +Are you sure you want to return all objects NOT owned by you on this parcel of land back to their owner's inventory? +Transferable objects deeded to a group will be returned to their previous owners. + +*WARNING* This will delete the non-transferable objects deeded to the group! + +Objects: [N] + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ReturnObjectsNotOwnedByUser" + type="alertmodal"> +Are you sure you want to return all objects NOT owned by [NAME] on this parcel of land back to their owner's inventory? +Transferable objects deeded to a group will be returned to their previous owners. + +*WARNING* This will delete the non-transferable objects deeded to the group! + +Objects: [N] + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ReturnAllTopObjects" + type="alertmodal"> +Are you sure you want to return all listed objects back to their owner's inventory? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="DisableAllTopObjects" + type="alertmodal"> +Are you sure you want to disable all objects in this region? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ReturnObjectsNotOwnedByGroup" + type="alertmodal"> +Return the objects on this parcel of land that are NOT shared with the group [NAME] back to their owners? + +Objects: [N] + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="UnableToDisableOutsideScripts" + type="alertmodal"> +Can not disable scripts. +This entire region is damage enabled. +Scripts must be allowed to run for weapons to work. + </notification> + + <notification + icon="alertmodal.tga" + name="MustBeInParcel" + type="alertmodal"> +You must be standing inside the land parcel to set its Landing Point. + </notification> + + <notification + icon="alertmodal.tga" + name="PromptRecipientEmail" + type="alertmodal"> +Please enter a valid email address for the recipient(s). + </notification> + + <notification + icon="alertmodal.tga" + name="PromptSelfEmail" + type="alertmodal"> +Please enter your email address. + </notification> + + <notification + icon="alertmodal.tga" + name="PromptMissingSubjMsg" + type="alertmodal"> +Email snapshot with the default subject or message? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ErrorProcessingSnapshot" + type="alertmodal"> +Error processing snapshot data + </notification> + + <notification + icon="alertmodal.tga" + name="ErrorEncodingSnapshot" + type="alertmodal"> +Error encoding snapshot. + </notification> + + <notification + icon="alertmodal.tga" + name="ErrorUploadingPostcard" + type="alertmodal"> +There was a problem sending a snapshot due to the following reason: [REASON] + </notification> + + <notification + icon="alertmodal.tga" + name="ErrorUploadingReportScreenshot" + type="alertmodal"> +There was a problem uploading a report screenshot due to the following reason: [REASON] + </notification> + + <notification + icon="alertmodal.tga" + name="MustAgreeToLogIn" + type="alertmodal"> +You must agree to the Terms of Service to continue logging into [SECOND_LIFE]. + </notification> + + <notification + icon="alertmodal.tga" + name="CouldNotPutOnOutfit" + type="alertmodal"> +Could not put on outfit. +The outfit folder contains no clothing, body parts, or attachments. + </notification> + + <notification + icon="alertmodal.tga" + name="CannotWearTrash" + type="alertmodal"> +You can not wear clothes or body parts that are in the trash + </notification> + + <notification + icon="alertmodal.tga" + name="CannotWearInfoNotComplete" + type="alertmodal"> +You can not wear that item because it has not yet loaded. Please try again in a minute. + </notification> + + <notification + icon="alertmodal.tga" + name="MustHaveAccountToLogIn" + type="alertmodal"> +Oops! Something was left blank. +You need to enter both the First and Last name of your avatar. + +You need an account to enter [SECOND_LIFE]. Would you like to create one now? + <url + option="0" + openexternally = "1"> + + http://secondlife.com/registration/ + </url> + <usetemplate + name="okcancelbuttons" + notext="Try again" + yestext="Create a new account"/> + </notification> + + <notification + icon="alertmodal.tga" + name="AddClassified" + type="alertmodal"> +Classified ads appear in the 'Classified' section of the Search directory and on www.secondlife.com for one week. +Fill out your ad, then click 'Publish...' to add it to the directory. +You'll be asked for a price to pay when clicking Publish. +Paying more makes your ad appear higher in the list, and also appear higher when people search for keywords. + <usetemplate + ignoretext="When adding a new Classified" + name="okcancelignore" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="DeleteClassified" + type="alertmodal"> +Delete classified '[NAME]'? +There is no reimbursement for fees paid. + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ClassifiedSave" + type="alertmodal"> +Save changes to classified [NAME]? + <usetemplate + canceltext="Cancel" + name="yesnocancelbuttons" + notext="Don't Save" + yestext="Save"/> + </notification> + + <notification + icon="alertmodal.tga" + name="DeleteAvatarPick" + type="alertmodal"> +Delete pick [PICK]? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="PromptGoToEventsPage" + type="alertmodal"> +Go to the [SECOND_LIFE] events web page? + <url option="0"> + + http://secondlife.com/events/ + </url> + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="SelectProposalToView" + type="alertmodal"> +Please select a proposal to view. + </notification> + + <notification + icon="alertmodal.tga" + name="SelectHistoryItemToView" + type="alertmodal"> +Please select a history item to view. + </notification> + + <notification + icon="alertmodal.tga" + name="ResetShowNextTimeDialogs" + type="alertmodal"> +Would you like to re-enable all these popups, which you previously indicated 'Don't show me again'? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="SkipShowNextTimeDialogs" + type="alertmodal"> +Would you like to disable all popups which can be skipped? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="CacheWillClear" + type="alertmodal"> +Cache will be cleared after you restart [SECOND_LIFE]. + </notification> + + <notification + icon="alertmodal.tga" + name="CacheWillBeMoved" + type="alertmodal"> +Cache will be moved after you restart [SECOND_LIFE]. +Note: This will clear the cache. + </notification> + + <notification + icon="alertmodal.tga" + name="ChangeConnectionPort" + type="alertmodal"> +Port settings take effect after you restart [SECOND_LIFE]. + </notification> + + <notification + icon="alertmodal.tga" + name="ChangeSkin" + type="alertmodal"> +The new skin will appear after you restart [SECOND_LIFE]. + </notification> + + <notification + icon="alertmodal.tga" + name="GoToAuctionPage" + type="alertmodal"> +Go to the [SECOND_LIFE] web page to see auction details or make a bid? + <url option="0"> + + http://secondlife.com/auctions/auction-detail.php?id=[AUCTION_ID] + </url> + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="SaveChanges" + type="alertmodal"> +Save Changes? + <usetemplate + canceltext="Cancel" + name="yesnocancelbuttons" + notext="Don't Save" + yestext="Save"/> + </notification> + + <notification + icon="alertmodal.tga" + name="GestureSaveFailedTooManySteps" + type="alertmodal"> +Gesture save failed. +This gesture has too many steps. +Try removing some steps, then save again. + </notification> + + <notification + icon="alertmodal.tga" + name="GestureSaveFailedTryAgain" + type="alertmodal"> +Gesture save failed. Please try again in a minute. + </notification> + + <notification + icon="alertmodal.tga" + name="GestureSaveFailedObjectNotFound" + type="alertmodal"> +Could not save gesture because the object or the associated object inventory could not be found. +The object may be out of range or may have been deleted. + </notification> + + <notification + icon="alertmodal.tga" + name="GestureSaveFailedReason" + type="alertmodal"> +There was a problem saving a gesture due to the following reason: [REASON]. Please try resaving the gesture later. + </notification> + + <notification + icon="alertmodal.tga" + name="SaveNotecardFailObjectNotFound" + type="alertmodal"> +Could not save notecard because the object or the associated object inventory could not be found. +The object may be out of range or may have been deleted. + </notification> + + <notification + icon="alertmodal.tga" + name="SaveNotecardFailReason" + type="alertmodal"> +There was a problem saving a notecard due to the following reason: [REASON]. Please try re-saving the notecard later. + </notification> + + <notification + icon="alertmodal.tga" + name="ScriptCannotUndo" + type="alertmodal"> +Could not undo all changes in your version of the script. +Would you like to load the server's last saved version? +(**Warning** This operation cannot be undone.) + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="SaveScriptFailReason" + type="alertmodal"> +There was a problem saving a script due to the following reason: [REASON]. Please try re-saving the script later. + </notification> + + <notification + icon="alertmodal.tga" + name="SaveScriptFailObjectNotFound" + type="alertmodal"> +Could not save the script because the object it is in could not be found. +The object may be out of range or may have been deleted. + </notification> + + <notification + icon="alertmodal.tga" + name="SaveBytecodeFailReason" + type="alertmodal"> +There was a problem saving a compiled script due to the following reason: [REASON]. Please try re-saving the script later. + </notification> + + <notification + icon="alertmodal.tga" + name="CouldNotStartStopScript" + type="alertmodal"> +Could not start or stop the script because the object it is on could not be found. +The object may be out of range or may have been deleted. + </notification> + + <notification + icon="alertmodal.tga" + name="CannotDownloadFile" + type="alertmodal"> +Unable to download file + </notification> + + <notification + icon="alertmodal.tga" + name="CannotWriteFile" + type="alertmodal"> +Unable to write file [[FILE]] + </notification> + + <notification + icon="alertmodal.tga" + name="UnsupportedHardware" + type="alertmodal"> +Warning: Your system does not meet Second Life's minimum system requirements. If you continue using Second Life, you may experience poor performance. Unfortunately, we cannot provide technical support for unsupported system configurations. + +MINSPECS +Do you wish to visit [_URL] for more information? + <url option="0" name="url"> + + http://www.secondlife.com/corporate/sysreqs.php + </url> + <usetemplate + ignoretext="When detecting unsupported hardware" + name="okcancelignore" + notext="No" + yestext="Yes"/> + </notification> + + <notification + icon="alertmodal.tga" + name="UnknownGPU" + type="alertmodal"> +Your system contains a graphics card that is unknown to us at this time. +This is often the case with new hardware we haven't had a chance to test. Second Life will most likely run properly, but you may need to adjust your graphics settings to something more appropriate. +(Edit menu > Preferences > Graphics). + <form name="form"> + <ignore name="ignore" + text="When detecting an unknown graphics card"/> + </form> + </notification> + + <notification + icon="alertmodal.tga" + name="DisplaySettingsNoShaders" + type="alertmodal"> +[SECOND_LIFE] crashed while initializing graphics drivers. +Graphics Quality will be set to low to avoid some common driver errors. +This will disable some graphics features. +We recommend updating your graphics card drivers. +Graphics Quality can be raised in Preferences > Graphics. + </notification> + + <notification + icon="alertmodal.tga" + name="RegionNoTerraforming" + type="alertmodal"> +The region [REGION] does not allow terraforming. + </notification> + + <notification + icon="alertmodal.tga" + name="CannotCopyWarning" + type="alertmodal"> +You do not have permission to copy this item and will lose it from your inventory if you give it away. Do you really want to offer this item? + <usetemplate + name="okcancelbuttons" + notext="No" + yestext="Yes"/> + </notification> + + <notification + icon="alertmodal.tga" + name="CannotGiveItem" + type="alertmodal"> +Unable to give inventory item. + </notification> + + <notification + icon="alertmodal.tga" + name="TransactionCancelled" + type="alertmodal"> +Transaction cancelled. + </notification> + + <notification + icon="alertmodal.tga" + name="TooManyItems" + type="alertmodal"> +Cannot give more than 42 items in a single inventory transfer. + </notification> + + <notification + icon="alertmodal.tga" + name="NoItems" + type="alertmodal"> +You do not have permission to transfer the selected items. + </notification> + + <notification + icon="alertmodal.tga" + name="CannotCopyCountItems" + type="alertmodal"> +You do not have permission to copy [COUNT] of the selected items. You will lose these items from your inventory. +Do you really want to give these items? + <usetemplate + name="okcancelbuttons" + notext="No" + yestext="Yes"/> + </notification> + + <notification + icon="alertmodal.tga" + name="CannotGiveCategory" + type="alertmodal"> +You do not have permission to transfer the selected folder. + </notification> + + <notification + icon="alertmodal.tga" + name="FreezeAvatar" + type="alertmodal"> +Freeze this avatar? +He or she will temporarily be unable to move, chat, or interact with the world. + <usetemplate + canceltext="Cancel" + name="yesnocancelbuttons" + notext="Unfreeze" + yestext="Freeze"/> + </notification> + + <notification + icon="alertmodal.tga" + name="FreezeAvatarFullname" + type="alertmodal"> +Freeze [AVATAR_NAME]? +He or she will temporarily be unable to move, chat, or interact with the world. + <usetemplate + canceltext="Cancel" + name="yesnocancelbuttons" + notext="Unfreeze" + yestext="Freeze"/> + </notification> + + <notification + icon="alertmodal.tga" + name="EjectAvatarFullname" + type="alertmodal"> +Eject [AVATAR_NAME] from your land? + <usetemplate + canceltext="Cancel" + name="yesnocancelbuttons" + notext="Eject and Ban" + yestext="Eject"/> + </notification> + + <notification + icon="alertmodal.tga" + name="EjectAvatarNoBan" + type="alertmodal"> +Eject this avatar from your land? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="Eject"/> + </notification> + + <notification + icon="alertmodal.tga" + name="EjectAvatarFullnameNoBan" + type="alertmodal"> +Eject [AVATAR_NAME] from your land? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="Eject"/> + </notification> + + <notification + icon="alertmodal.tga" + name="AcquireErrorTooManyObjects" + type="alertmodal"> +ACQUIRE ERROR: Too many objects selected. + </notification> + + <notification + icon="alertmodal.tga" + name="AcquireErrorObjectSpan" + type="alertmodal"> +ACQUIRE ERROR: Objects span more than one region. +Please move all objects to be acquired onto the same region. + </notification> + + <notification + icon="alertmodal.tga" + name="PromptGoToCurrencyPage" + type="alertmodal"> +[EXTRA] + +Go to [_URL] for information on purchasing currency? + <url option="0"> + + http://secondlife.com/app/currency/ + </url> + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="UnableToLinkObjects" + type="alertmodal"> +Unable to link these [COUNT] objects. +You can link a maximum of [MAX] objects. + </notification> + + <notification + icon="alertmodal.tga" + name="CannotLinkIncompleteSet" + type="alertmodal"> +You can only link complete sets of objects, and must select more than one object. + </notification> + + <notification + icon="alertmodal.tga" + name="CannotLinkModify" + type="alertmodal"> +Unable to link because you don't have modify permission on all the objects. + +Please make sure none are locked, and that you own all of them. + </notification> + + <notification + icon="alertmodal.tga" + name="CannotLinkDifferentOwners" + type="alertmodal"> +Unable to link because not all of the objects have the same owner. + +Please make sure you own all of the selected objects. + </notification> + + <notification + icon="alertmodal.tga" + name="NoFileExtension" + type="alertmodal"> +No file extension for the file: '[FILE]' + +Please make sure the file has a correct file extension. + </notification> + + <notification + icon="alertmodal.tga" + name="InvalidFileExtension" + type="alertmodal"> +Invalid file extension [EXTENSION] +Expected [VALIDS] + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="CannotUploadSoundFile" + type="alertmodal"> +Couldn't open uploaded sound file for reading: +[FILE] + </notification> + + <notification + icon="alertmodal.tga" + name="SoundFileNotRIFF" + type="alertmodal"> +File does not appear to be a RIFF WAVE file: +[FILE] + </notification> + + <notification + icon="alertmodal.tga" + name="SoundFileNotPCM" + type="alertmodal"> +File does not appear to be a PCM WAVE audio file: +[FILE] + </notification> + + <notification + icon="alertmodal.tga" + name="SoundFileInvalidChannelCount" + type="alertmodal"> +File has invalid number of channels (must be mono or stereo): +[FILE] + </notification> + + <notification + icon="alertmodal.tga" + name="SoundFileInvalidSampleRate" + type="alertmodal"> +File does not appear to be a supported sample rate (must be 44.1k): +[FILE] + </notification> + + <notification + icon="alertmodal.tga" + name="SoundFileInvalidWordSize" + type="alertmodal"> +File does not appear to be a supported word size (must be 8 or 16 bit): +[FILE] + </notification> + + <notification + icon="alertmodal.tga" + name="SoundFileInvalidHeader" + type="alertmodal"> +Could not find 'data' chunk in WAV header: +[FILE] + </notification> + + <notification + icon="alertmodal.tga" + name="SoundFileInvalidTooLong" + type="alertmodal"> +Audio file is too long (10 second maximum): +[FILE] + </notification> + + <notification + icon="alertmodal.tga" + name="ProblemWithFile" + type="alertmodal"> +Problem with file [FILE]: + +[ERROR] + </notification> + + <notification + icon="alertmodal.tga" + name="CannotOpenTemporarySoundFile" + type="alertmodal"> +Couldn't open temporary compressed sound file for writing: [FILE] + </notification> + + <notification + icon="alertmodal.tga" + name="UnknownVorbisEncodeFailure" + type="alertmodal"> +Unknown Vorbis encode failure on: [FILE] + </notification> + + <notification + icon="alertmodal.tga" + name="CannotEncodeFile" + type="alertmodal"> +Unable to encode file: [FILE] + </notification> + + <notification + icon="alertmodal.tga" + name="CorruptResourceFile" + type="alertmodal"> +Corrupt resource file: [FILE] + </notification> + + <notification + icon="alertmodal.tga" + name="UnknownResourceFileVersion" + type="alertmodal"> +Unknown Linden resource file version in file: [FILE] + </notification> + + <notification + icon="alertmodal.tga" + name="UnableToCreateOutputFile" + type="alertmodal"> +Unable to create output file: [FILE] + </notification> + + <notification + icon="alertmodal.tga" + name="DoNotSupportBulkAnimationUpload" + type="alertmodal"> +We do not currently support bulk upload of animation files. + </notification> + + <notification + icon="alertmodal.tga" + name="CannotUploadReason" + type="alertmodal"> +Unable to upload [FILE] due to the following reason: [REASON] +Please try again later. + </notification> + + <notification + icon="notifytip.tga" + name="LandmarkCreated" + type="notifytip"> +You have added "[LANDMARK_NAME]" to your [FOLDER_NAME] folder. + </notification> + + <notification + icon="alertmodal.tga" + name="CannotCreateLandmarkNotOwner" + type="alertmodal"> +You cannot create a landmark here because the owner of the land doesn't allow it. + </notification> + + <notification + icon="alertmodal.tga" + name="CannotRecompileSelectObjectsNoScripts" + type="alertmodal"> +Not able to perform 'recompilation'. +Select an object with a script. + </notification> + + <notification + icon="alertmodal.tga" + name="CannotRecompileSelectObjectsNoPermission" + type="alertmodal"> +Not able to perform 'recompilation'. + +Select objects with scripts that you have permission to modify. + </notification> + + <notification + icon="alertmodal.tga" + name="CannotResetSelectObjectsNoScripts" + type="alertmodal"> +Not able to perform 'reset'. + +Select objects with scripts. + </notification> + + <notification + icon="alertmodal.tga" + name="CannotResetSelectObjectsNoPermission" + type="alertmodal"> +Not able to perform 'reset'. + +Select objects with scripts that you have permission to modify. + </notification> + + <notification + icon="alertmodal.tga" + name="CannotSetRunningSelectObjectsNoScripts" + type="alertmodal"> +Not able to set any scripts to 'running'. + +Select objects with scripts. + </notification> + + <notification + icon="alertmodal.tga" + name="CannotSetRunningNotSelectObjectsNoScripts" + type="alertmodal"> +Unable to set any scripts to 'not running'. + +Select objects with scripts. + </notification> + + <notification + icon="alertmodal.tga" + name="NoFrontmostFloater" + type="alertmodal"> +No frontmost floater to save. + </notification> + + <notification + icon="alertmodal.tga" + name="SeachFilteredOnShortWords" + type="alertmodal"> +Your search query was modified and the words that were too short were removed. + +Searched for: [FINALQUERY] + </notification> + + <notification + icon="alertmodal.tga" + name="SeachFilteredOnShortWordsEmpty" + type="alertmodal"> +Your search terms were too short so no search was performed. + </notification> + + <!-- Generic Teleport failure modes - strings will be inserted from + teleport_strings.xml if available. --> + <notification + icon="alertmodal.tga" + name="CouldNotTeleportReason" + type="alertmodal"> +Could not teleport. +[REASON] + </notification> + + <!-- Teleport failure modes not delivered via the generic mechanism + above (for example, delivered as an AlertMessage on + region-crossing :( ) - these paths should really be merged + in the future. --> + <notification + icon="alertmodal.tga" + name="invalid_tport" + type="alertmodal"> +Problem encountered processing your teleport request. You may need to log back in before you can teleport. If you continue to get this message, please check the Tech Support FAQ at: +www.secondlife.com/support + </notification> + <notification + icon="alertmodal.tga" + name="invalid_region_handoff" + type="alertmodal"> +Problem encountered processing your region crossing. You may need to log back in before you can cross regions. If you continue to get this message, please check the Tech Support FAQ at: +www.secondlife.com/support + </notification> + <notification + icon="alertmodal.tga" + name="blocked_tport" + type="alertmodal"> +Sorry, teleport is currently blocked. Try again in a moment. If you still cannot teleport, please log out and log back in to resolve the problem. + </notification> + <notification + icon="alertmodal.tga" + name="nolandmark_tport" + type="alertmodal"> +Sorry, but system was unable to locate landmark destination. + </notification> + <notification + icon="alertmodal.tga" + name="timeout_tport" + type="alertmodal"> +Sorry, but system was unable to complete the teleport connection. Try again in a moment. + </notification> + <notification + icon="alertmodal.tga" + name="noaccess_tport" + type="alertmodal"> +Sorry, you do not have access to that teleport destination. + </notification> + <notification + icon="alertmodal.tga" + name="missing_attach_tport" + type="alertmodal"> +Your attachments have not arrived yet. Try waiting for a few more seconds or log out and back in again before attempting to teleport. + </notification> + <notification + icon="alertmodal.tga" + name="too_many_uploads_tport" + type="alertmodal"> +The asset queue in this region is currently clogged so your teleport request will not be able to succeed in a timely manner. Please try again in a few minutes or go to a less busy area. + </notification> + <notification + icon="alertmodal.tga" + name="expired_tport" + type="alertmodal"> +Sorry, but the system was unable to complete your teleport request in a timely fashion. Please try again in a few minutes. + </notification> + <notification + icon="alertmodal.tga" + name="expired_region_handoff" + type="alertmodal"> +Sorry, but the system was unable to complete your region crossing in a timely fashion. Please try again in a few minutes. + </notification> + <notification + icon="alertmodal.tga" + name="no_host" + type="alertmodal"> +Unable to find teleport destination. The destination may be temporarily unavailable or no longer exists. Please try again in a few minutes. + </notification> + <notification + icon="alertmodal.tga" + name="no_inventory_host" + type="alertmodal"> +The inventory system is currently unavailable. + </notification> + + <notification + icon="alertmodal.tga" + name="CannotSetLandOwnerNothingSelected" + type="alertmodal"> +Unable to set land owner: +No parcel selected. + </notification> + + <notification + icon="alertmodal.tga" + name="CannotSetLandOwnerMultipleRegions" + type="alertmodal"> +Unable to force land ownership because selection spans multiple regions. Please select a smaller area and try again. + </notification> + + <notification + icon="alertmodal.tga" + name="ForceOwnerAuctionWarning" + type="alertmodal"> +This parcel is up for auction. Forcing ownership will cancel the auction and potentially make some residents unhappy if bidding has begun. Force ownership? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="CannotContentifyNothingSelected" + type="alertmodal"> +Unable to contentify: +No parcel selected. + </notification> + + <notification + icon="alertmodal.tga" + name="CannotContentifyNoRegion" + type="alertmodal"> +Unable to contentify: +No region selected. + </notification> + + <notification + icon="alertmodal.tga" + name="CannotReleaseLandNothingSelected" + type="alertmodal"> +Unable to abandon land: +No parcel selected. + </notification> + + <notification + icon="alertmodal.tga" + name="CannotReleaseLandNoRegion" + type="alertmodal"> +Unable to abandon land: +Cannot find region. + </notification> + + <notification + icon="alertmodal.tga" + name="CannotBuyLandNothingSelected" + type="alertmodal"> +Unable to buy land: +No parcel selected. + </notification> + + <notification + icon="alertmodal.tga" + name="CannotBuyLandNoRegion" + type="alertmodal"> +Unable to buy land: +Cannot find the region this land is in. + </notification> + + <notification + icon="alertmodal.tga" + name="CannotCloseFloaterBuyLand" + type="alertmodal"> +You cannot close the Buy Land window until Second Life estimates the price of this transaction. + </notification> + + <notification + icon="alertmodal.tga" + name="CannotDeedLandNothingSelected" + type="alertmodal"> +Unable to deed land: +No parcel selected. + </notification> + + <notification + icon="alertmodal.tga" + name="CannotDeedLandNoGroup" + type="alertmodal"> +Unable to deed land: +No Group selected. + </notification> + + <notification + icon="alertmodal.tga" + name="CannotDeedLandNoRegion" + type="alertmodal"> +Unable to deed land: +Cannot find the region this land is in. +Please use Tools -> Report Bug to report this. + </notification> + + <notification + icon="alertmodal.tga" + name="CannotDeedLandMultipleSelected" + type="alertmodal"> +Unable to deed land: +Multiple parcels selected. + +Try selecting a single parcel. + </notification> + + <notification + icon="alertmodal.tga" + name="ParcelCanPlayMedia" + type="alertmodal"> +This location can play streaming media. +Streaming media requires a fast Internet connection. + +Play streaming media when available? +(You can change this option later under Preferences > Audio & Video.) + <usetemplate + name="okcancelbuttons" + notext="Disable" + yestext="Play Media"/> + </notification> + + <notification + icon="alertmodal.tga" + name="CannotDeedLandWaitingForServer" + type="alertmodal"> +Unable to deed land: +Waiting for server to report ownership. + +Please try again. + </notification> + + <notification + icon="alertmodal.tga" + name="CannotDeedLandNoTransfer" + type="alertmodal"> +Unable to deed land: +The region [REGION] does not allow transfer of land. + </notification> + + <notification + icon="alertmodal.tga" + name="CannotReleaseLandWatingForServer" + type="alertmodal"> +Unable to abandon land: +Waiting for server to update parcel information. + +Try again in a few seconds. + </notification> + + <notification + icon="alertmodal.tga" + name="CannotReleaseLandSelected" + type="alertmodal"> +Unable to abandon land: +You do not own all the parcels selected. + +Please select a single parcel. + </notification> + + <notification + icon="alertmodal.tga" + name="CannotReleaseLandDontOwn" + type="alertmodal"> +Unable to abandon land: +You don't have permission to release this parcel. +Parcels you own appear in green. + </notification> + + <notification + icon="alertmodal.tga" + name="CannotReleaseLandRegionNotFound" + type="alertmodal"> +Unable to abandon land: +Cannot find the region this land is in. + +Please use Tools -> Report Bug to report this. + </notification> + + <notification + icon="alertmodal.tga" + name="CannotReleaseLandNoTransfer" + type="alertmodal"> +Unable to abandon land: +The region [REGION] does not allow transfer of land. + </notification> + + <notification + icon="alertmodal.tga" + name="CannotReleaseLandPartialSelection" + type="alertmodal"> +Unable to abandon land: +You must select an entire parcel to release it. + +Select an entire parcel, or divide your parcel first. + </notification> + + <notification + icon="alertmodal.tga" + name="ReleaseLandWarning" + type="alertmodal"> +You are about to release [AREA] m² of land. +Releasing this parcel will remove it from your land holdings, but will not grant any L$. + +Release this land? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="CannotDivideLandNothingSelected" + type="alertmodal"> +Unable to divide land: + +No parcels selected. + </notification> + + <notification + icon="alertmodal.tga" + name="CannotDivideLandPartialSelection" + type="alertmodal"> +Unable to divide land: + +You have an entire parcel selected. +Try selecting a part of the parcel. + </notification> + + <notification + icon="alertmodal.tga" + name="LandDivideWarning" + type="alertmodal"> +Dividing this land will split this parcel into two and each parcel can have its own settings. Some settings will be reset to defaults after the operation. + +Divide land? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="CannotDivideLandNoRegion" + type="alertmodal"> +Unable to divide land: +Cannot find the region this land is in. + +Please use Tools -> Report Bug to report this. + </notification> + + <notification + icon="alertmodal.tga" + name="CannotJoinLandNoRegion" + type="alertmodal"> +Unable to join land: +Cannot find the region this land is in. + +Please use Tools -> Report Bug to report this. + </notification> + + <notification + icon="alertmodal.tga" + name="CannotJoinLandNothingSelected" + type="alertmodal"> +Unable to join land: +No parcels selected. + </notification> + + <notification + icon="alertmodal.tga" + name="CannotJoinLandEntireParcelSelected" + type="alertmodal"> +Unable to join land: +You only have one parcel selected. + +Select land across both parcels. + </notification> + + <notification + icon="alertmodal.tga" + name="CannotJoinLandSelection" + type="alertmodal"> +Unable to join land: +You must select more than one parcel. + +Select land across both parcels. + </notification> + + <notification + icon="alertmodal.tga" + name="JoinLandWarning" + type="alertmodal"> +Joining this land will create one large parcel out of all parcels intersecting the selected rectangle. +You will need to reset the name and options of the new parcel. + +Join land? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ShowOwnersHelp" + type="alertmodal"> +Show owners: +Color parcels to show the owner type. + +Green = Your land +Aqua = Your Group's land +Red = Owned by others +Yellow = For sale +Purple = For auction +Grey = Public + </notification> + + <notification + icon="alertmodal.tga" + name="ConfirmNotecardSave" + type="alertmodal"> +This notecard needs to be saved before the item can be copied or viewed. Save notecard? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ConfirmItemCopy" + type="alertmodal"> +Copy this item to your inventory? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="Copy"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ResolutionSwitchFail" + type="alertmodal"> +Failed to switch resolution to [RESX] by [RESY] + </notification> + + <notification + icon="alertmodal.tga" + name="ErrorUndefinedGrasses" + type="alertmodal"> +Error: Undefined grasses: [SPECIES] + </notification> + + <notification + icon="alertmodal.tga" + name="ErrorUndefinedTrees" + type="alertmodal"> +Error: Undefined trees: [SPECIES] + </notification> + + <notification + icon="alertmodal.tga" + name="CannotSaveWearableOutOfSpace" + type="alertmodal"> +Unable to save '[NAME]' to wearable file. You will need to free up some space on your computer and save the wearable again. + </notification> + + <notification + icon="alertmodal.tga" + name="CannotSaveToAssetStore" + type="alertmodal"> +Unable to save [NAME] to central asset store. +This is usually a temporary failure. Please customize and save the wearable again in a few minutes. + +If this problem persists, please click on the 'Tools > Report Bug' pull down menu +and provide details about your network setup. + </notification> + + <notification + icon="alertmodal.tga" + name="YouHaveBeenLoggedOut" + type="alertmodal"> +You have been logged out of [SECOND_LIFE]: + [MESSAGE] +You can still look at existing IM and chat by clicking 'View IM & Chat'. Otherwise, click 'Quit' to exit [SECOND_LIFE] immediately. + <usetemplate + name="okcancelbuttons" + notext="Quit" + yestext="View IM & Chat"/> + </notification> + + <notification + icon="alertmodal.tga" + name="OnlyOfficerCanBuyLand" + type="alertmodal"> +Unable to buy land for the group: +You do not have permission to buy land for your active group. + </notification> + + <notification + icon="alertmodal.tga" + label="Add Friend" + name="AddFriend" + type="alertmodal"> +Friends can give permissions to track each other on the map and receive online status updates. + +Offer friendship to [NAME]? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + label="Add Friend" + name="AddFriendWithMessage" + type="alertmodal"> +Friends can give permissions to track each other on the map and receive online status updates. + +Offer friendship to [NAME]? + <form name="form"> + <input name="message" type="text"> +Would you be my friend? + </input> + <button + default="true" + index="0" + name="Offer" + text="OK"/> + <button + index="1" + name="Cancel" + text="Cancel"/> + </form> + </notification> + + <notification + icon="alertmodal.tga" + name="RemoveFromFriends" + type="alertmodal"> +Do you want to remove [FIRST_NAME] [LAST_NAME] from your Friends List? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="RemoveMultipleFromFriends" + type="alertmodal"> +Do you want to remove multiple friends from your Friends list? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="GodDeleteAllScriptedPublicObjectsByUser" + type="alertmodal"> +Are you sure you want to delete all scripted objects owned by +** [AVATAR_NAME] ** +on all others land in this sim? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="GodDeleteAllScriptedObjectsByUser" + type="alertmodal"> +Are you sure you want to DELETE ALL scripted objects owned by +** [AVATAR_NAME] ** +on ALL LAND in this sim? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="GodDeleteAllObjectsByUser" + type="alertmodal"> +Are you sure you want to DELETE ALL objects (scripted or not) owned by +** [AVATAR_NAME] ** +on ALL LAND in this sim? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="BlankClassifiedName" + type="alertmodal"> +You must specify a name for your classified. + </notification> + + <notification + icon="alertmodal.tga" + name="MinClassifiedPrice" + type="alertmodal"> +Price to pay for listing must be at least L$[MIN_PRICE]. + +Please enter a higher price. + </notification> + + <notification + icon="alertmodal.tga" + name="ConfirmObjectDeleteLock" + type="alertmodal"> +At least one of the items you have selected is locked. + +Are you sure you want to delete these items? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ConfirmObjectDeleteNoCopy" + type="alertmodal"> +At least one of the items you have selected is not copyable. + +Are you sure you want to delete these items? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ConfirmObjectDeleteNoOwn" + type="alertmodal"> +You do not own least one of the items you have selected. + +Are you sure you want to delete these items? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ConfirmObjectDeleteLockNoCopy" + type="alertmodal"> +At least one object is locked. +At least one object is not copyable. + +Are you sure you want to delete these items? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ConfirmObjectDeleteLockNoOwn" + type="alertmodal"> +At least one object is locked. +You do not own least one object. + +Are you sure you want to delete these items? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ConfirmObjectDeleteNoCopyNoOwn" + type="alertmodal"> +At least one object is not copyable. +You do not own least one object. + +Are you sure you want to delete these items? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ConfirmObjectDeleteLockNoCopyNoOwn" + type="alertmodal"> +At least one object is locked. +At least one object is not copyable. +You do not own least one object. + +Are you sure you want to delete these items? + <usetemplate + name="okcancelbuttons" + notext="cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ConfirmObjectTakeLock" + type="alertmodal"> +At least one object is locked. + +Are you sure you want to take these items? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ConfirmObjectTakeNoOwn" + type="alertmodal"> +You do not own all of the objects you are taking. +If you continue, next owner permissions will be applied and possibly restrict your ability to modify or copy them. + +Are you sure you want to take these items? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ConfirmObjectTakeLockNoOwn" + type="alertmodal"> +At least one object is locked. +You do not own all of the objects you are taking. +If you continue, next owner permissions will be applied and possibly restrict your ability to modify or copy them. +However, you can take the current selection. + +Are you sure you want to take these items? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="CantBuyLandAcrossMultipleRegions" + type="alertmodal"> +Unable to buy land because selection spans multiple regions. + +Please select a smaller area and try again. + </notification> + + <notification + icon="alertmodal.tga" + name="DeedLandToGroup" + type="alertmodal"> +By deeding this parcel, the group will be required to have and maintain sufficient land use credits. +The purchase price of the land is not refunded to the owner. If a deeded parcel is sold, the sale price will be divided evenly among group members. + +Deed this [AREA] m² of land to the group '[GROUP_NAME]'? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="DeedLandToGroupWithContribution" + type="alertmodal"> +By deeding this parcel, the group will be required to have and maintain sufficient land use credits. +The deed will include a simultaneous land contribution to the group from '[FIRST_NAME] [LAST_NAME]'. +The purchase price of the land is not refunded to the owner. If a deeded parcel is sold, the sale price will be divided evenly among group members. + +Deed this [AREA] m² of land to the group '[GROUP_NAME]'? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="DisplaySetToSafe" + type="alertmodal"> +Display settings have been set to safe levels because you have specified the -safe option. + </notification> + + <notification + icon="alertmodal.tga" + name="DisplaySetToRecommended" + type="alertmodal"> +Display settings have been set to recommended levels based on your system configuration. + </notification> + + <notification + icon="alertmodal.tga" + name="ErrorMessage" + type="alertmodal"> +[ERROR_MESSAGE] + </notification> + + <notification + icon="alertmodal.tga" + name="AvatarMovedDesired" + type="alertmodal"> +Your desired location is not currently available. +You have been moved into a nearby region. + </notification> + + <notification + icon="alertmodal.tga" + name="AvatarMovedLast" + type="alertmodal"> +Your last location is not currently available. +You have been moved into a nearby region. + </notification> + + <notification + icon="alertmodal.tga" + name="AvatarMovedHome" + type="alertmodal"> +Your home location is not currently available. +You have been moved into a nearby region. +You may want to set a new home location. + </notification> + + <notification + icon="alertmodal.tga" + name="ClothingLoading" + type="alertmodal"> +Your clothing is still downloading. +You can use [SECOND_LIFE] normally and other users will see you correctly. + <form name="form"> + <ignore name="ignore" + text="When clothing is taking a long time to download"/> + </form> + </notification> + + <notification + icon="alertmodal.tga" + name="FirstRun" + type="alertmodal"> +[SECOND_LIFE] installation is complete. + +If this is your first time using [SECOND_LIFE], you will need to create an account before you can log on. +Return to www.secondlife.com to create a new account? + <usetemplate + name="okcancelbuttons" + notext="Continue" + yestext="New Account..."/> + </notification> + + <notification + icon="alertmodal.tga" + name="LoginPacketNeverReceived" + type="alertmodal"> +We're having trouble connecting. There may be a problem with your internet connection or the Second Life servers. + +You can either check your internet connection and try again in a few minutes, click Help to connect to our support site, or click Teleport to attempt to teleport home. + <url option="1"> + + http://secondlife.com/support/ + </url> + <form name="form"> + <button + default="true" + index="0" + name="OK" + text="OK"/> + <button + index="1" + name="Help" + text="Help"/> + <button + index="2" + name="Teleport" + text="Teleport"/> + </form> + </notification> + + <notification + icon="alertmodal.tga" + name="WelcomeChooseSex" + type="alertmodal"> +Your character will appear in a moment. + +Use arrow keys to walk. +Press the F1 key at any time for help or to learn more about [SECOND_LIFE]. +Please choose the male or female avatar. You can change your mind later. + <usetemplate + name="okcancelbuttons" + notext="Female" + yestext="Male"/> + </notification> + + <notification + icon="alertmodal.tga" + name="NotEnoughCurrency" + type="alertmodal"> +[NAME] L$ [PRICE] You don't have enough L$ to do that. + </notification> + + <notification + icon="alertmodal.tga" + name="GrantedModifyRights" + type="alertmodal"> +You have been granted the privilege to modify [FIRST_NAME] [LAST_NAME]'s objects. + </notification> + + <notification + icon="alertmodal.tga" + name="RevokedModifyRights" + type="alertmodal"> +Your privilege to modify [FIRST_NAME] [LAST_NAME]'s objects has been revoked + </notification> + + <notification + icon="alertmodal.tga" + name="FlushMapVisibilityCaches" + type="alertmodal"> +This will flush the map caches on this region. +This is really only useful for debugging. +(In production, wait 5 minutes, then everyone's map will update after they relog.) + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="BuyOneObjectOnly" + type="alertmodal"> +Unable to buy more than one object at a time. Please select only one object and try again. + </notification> + + <notification + icon="alertmodal.tga" + name="OnlyCopyContentsOfSingleItem" + type="alertmodal"> +Unable to copy the contents of more than one item at a time. +Please select only one object and try again. + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="KickUsersFromRegion" + type="alertmodal"> +Teleport all Residents in this region home? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="EstateObjectReturn" + type="alertmodal"> +Are you sure you want to return objects owned by [USER_NAME]? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="InvalidTerrainBitDepth" + type="alertmodal"> +Couldn't set region textures: +Terrain texture [TEXTURE_NUM] has an invalid bit depth of [TEXTURE_BIT_DEPTH]. + +Replace texture [TEXTURE_NUM] with a 24-bit 512x512 or smaller image then click "Apply" again. + </notification> + + <notification + icon="alertmodal.tga" + name="InvalidTerrainSize" + type="alertmodal"> +Couldn't set region textures: +Terrain texture [TEXTURE_NUM] is too large at [TEXTURE_SIZE_X]x[TEXTURE_SIZE_Y]. + +Replace texture [TEXTURE_NUM] with a 24-bit 512x512 or smaller image then click "Apply" again. + </notification> + + <notification + icon="alertmodal.tga" + name="RawUploadStarted" + type="alertmodal"> +Upload started. It may take up to two minutes, depending on your connection speed. + </notification> + + <notification + icon="alertmodal.tga" + name="ConfirmBakeTerrain" + type="alertmodal"> +Do you really want to bake the current terrain, make it the center for terrain raise/lower limits and the default for the 'Revert' tool? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="MaxAllowedAgentOnRegion" + type="alertmodal"> +You can only have [MAX_AGENTS] Allowed Residents. + </notification> + + <notification + icon="alertmodal.tga" + name="MaxBannedAgentsOnRegion" + type="alertmodal"> +You can only have [MAX_BANNED] Banned Residents. + </notification> + + <notification + icon="alertmodal.tga" + name="MaxAgentOnRegionBatch" + type="alertmodal"> +Failure while attempting to add [NUM_ADDED] agents: +Exceeds the [MAX_AGENTS] [LIST_TYPE] limit by [NUM_EXCESS]. + </notification> + + <notification + icon="alertmodal.tga" + name="MaxAllowedGroupsOnRegion" + type="alertmodal"> +You can only have [MAX_GROUPS] Allowed Groups. + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="Bake"/> + </notification> + + <notification + icon="alertmodal.tga" + name="MaxManagersOnRegion" + type="alertmodal"> +You can only have [MAX_MANAGER] Estate Managers. + </notification> + + <notification + icon="alertmodal.tga" + name="OwnerCanNotBeDenied" + type="alertmodal"> +Can't add estate owner to estate 'Banned Resident' list. + </notification> + + <notification + icon="alertmodal.tga" + name="CanNotChangeAppearanceUntilLoaded" + type="alertmodal"> +Can't change appearance until clothing and shape are loaded. + </notification> + + <notification + icon="alertmodal.tga" + name="ClassifiedMustBeAlphanumeric" + type="alertmodal"> +The name of your classified must start with a letter from A to Z or a number. No punctuation is allowed. + </notification> + + <notification + icon="alertmodal.tga" + name="CantSetBuyObject" + type="alertmodal"> +Can't set Buy Object, because the object is not for sale. +Please set the object for sale and try again. + </notification> + + <notification + icon="alertmodal.tga" + name="FinishedRawDownload" + type="alertmodal"> +Finished download of raw terrain file to: +[DOWNLOAD_PATH]. + </notification> + + <notification + icon="alertmodal.tga" + name="DownloadWindowsMandatory" + type="alertmodal"> +A new version of [SECOND_LIFE] is available. +[MESSAGE] +You must download this update to use [SECOND_LIFE]. + <usetemplate + name="okcancelbuttons" + notext="Quit" + yestext="Download"/> + </notification> + + <notification + icon="alertmodal.tga" + name="DownloadWindows" + type="alertmodal"> +An updated version of [SECOND_LIFE] is available. +[MESSAGE] +This update is not required, but we suggest you install it to improve performance and stability. + <usetemplate + name="okcancelbuttons" + notext="Continue" + yestext="Download"/> + </notification> + + <notification + icon="alertmodal.tga" + name="DownloadWindowsReleaseForDownload" + type="alertmodal"> +An updated version of [SECOND_LIFE] is available. +[MESSAGE] +This update is not required, but we suggest you install it to improve performance and stability. + <usetemplate + name="okcancelbuttons" + notext="Continue" + yestext="Download"/> + </notification> + + <notification + icon="alertmodal.tga" + name="DownloadMacMandatory" + type="alertmodal"> +A new version of [SECOND_LIFE] is available. +[MESSAGE] +You must download this update to use [SECOND_LIFE]. + +Download to your Applications folder? + <usetemplate + name="okcancelbuttons" + notext="Quit" + yestext="Download"/> + </notification> + + <notification + icon="alertmodal.tga" + name="DownloadMac" + type="alertmodal"> +An updated version of [SECOND_LIFE] is available. +[MESSAGE] +This update is not required, but we suggest you install it to improve performance and stability. + +Download to your Applications folder? + <usetemplate + name="okcancelbuttons" + notext="Continue" + yestext="Download"/> + </notification> + + <notification + icon="alertmodal.tga" + name="DownloadMacReleaseForDownload" + type="alertmodal"> +An updated version of [SECOND_LIFE] is available. +[MESSAGE] +This update is not required, but we suggest you install it to improve performance and stability. + +Download to your Applications folder? + <usetemplate + name="okcancelbuttons" + notext="Continue" + yestext="Download"/> + </notification> + + <notification + icon="alertmodal.tga" + name="DeedObjectToGroup" + type="alertmodal"> +Deeding this object will cause the group to: +* Receive L$ paid into the object + <usetemplate + ignoretext="When deeding objects to groups" + name="okcancelignore" + notext="Cancel" + yestext="Deed"/> + </notification> + + <notification + icon="alertmodal.tga" + name="WebLaunchExternalTarget" + type="alertmodal"> +Open your system Web browser to view this content? + <usetemplate + ignoretext="When opening your system browser to view a Web page" + name="okcancelignore" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="WebLaunchJoinNow" + type="alertmodal"> +Go to www.secondlife.com to manage your account? + <usetemplate + ignoretext="When launching web browser to manage your account" + name="okcancelignore" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="WebLaunchBugReport101" + type="alertmodal"> +Visit the [SECOND_LIFE] Wiki and learn how to report bugs correctly. + <usetemplate + ignoretext="When launching web browser to view the Bug Reporting 101 Wiki" + name="okcancelignore" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="WebLaunchSecurityIssues" + type="alertmodal"> +Visit the [SECOND_LIFE] Wiki for details of how to report a security issue. + <usetemplate + ignoretext="When launching web browser to view Security Issues Wiki" + name="okcancelignore" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="WebLaunchQAWiki" + type="alertmodal"> +Visit the [SECOND_LIFE] QA Wiki. + <usetemplate + ignoretext="When launching web browser to view the QA Wiki" + name="okcancelignore" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="WebLaunchPublicIssue" + type="alertmodal"> +Visit the [SECOND_LIFE] Public Issue Tracker, where you can report bugs and other issues. + <usetemplate + ignoretext="When launching web browser to view the Public Issue Tracker" + name="okcancelignore" + notext="Cancel" + yestext="Go to page"/> + </notification> + + <notification + icon="alertmodal.tga" + name="WebLaunchPublicIssueHelp" + type="alertmodal"> +Visit the [SECOND_LIFE] Wiki for info on how to use the Public Issue Tracker. + <usetemplate + ignoretext="When launching web browser to view Public Issue Tracker Wiki" + name="okcancelignore" + notext="Cancel" + yestext="Go to page"/> + </notification> + + <notification + icon="alertmodal.tga" + name="WebLaunchSupportWiki" + type="alertmodal"> +Go to the Official Linden Blog, for the latest news and information. + <usetemplate + ignoretext="When launching web browser to view the blog" + name="okcancelignore" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="WebLaunchLSLGuide" + type="alertmodal"> +Go to the Scripting Guide for scripting help? + <usetemplate + ignoretext="When launching web browser to view the Scripting Guide" + name="okcancelignore" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="WebLaunchLSLWiki" + type="alertmodal"> +Go to the LSL Portal for scripting help? + <usetemplate + ignoretext="When launching web browser to view the LSL Portal" + name="okcancelignore" + notext="Cancel" + yestext="Go to page"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ReturnToOwner" + type="alertmodal"> +Are you sure you want to return the selected objects to their owners? Transferable deeded objects will be returned to their previous owners. + +*WARNING* No-transfer deeded objects will be deleted! + <usetemplate + ignoretext="When returning objects to their owners" + name="okcancelignore" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alert.tga" + name="GroupLeaveConfirmMember" + type="alert"> +You are currently a member of the group [GROUP]. +Leave Group? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alert.tga" + name="ConfirmKick" + type="alert"> +Do you REALLY want to kick all users off the grid? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="Kick All Users"/> + </notification> + + <notification + icon="alertmodal.tga" + name="MuteLinden" + type="alertmodal"> +Sorry, you cannot mute a Linden. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="CannotStartAuctionAlreadyForSale" + type="alertmodal"> +You cannot start an auction on a parcel which is already set for sale. Disable the land sale if you are sure you want to start an auction. + </notification> + + <notification + icon="alertmodal.tga" + label="Mute object by name failed" + name="MuteByNameFailed" + type="alertmodal"> +You already have muted this name. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + icon="alert.tga" + name="RemoveItemWarn" + type="alert"> +Though permitted, deleting contents may damage the object. Do you want to delete that item? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alert.tga" + name="CantOfferCallingCard" + type="alert"> +Cannot offer a calling card at this time. Please try again in a moment. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + icon="alert.tga" + name="CantOfferFriendship" + type="alert"> +Cannot offer friendship at this time. Please try again in a moment. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + icon="alert.tga" + name="BusyModeSet" + type="alert"> +Busy mode set. +Chat and instant messages will be hidden. Instant messages will get your Busy mode response. All teleportation offers will be declined. All inventory offers will go to your Trash. + <usetemplate + ignoretext="When setting busy mode" + name="okignore" + yestext="OK"/> + </notification> + + <notification + icon="alert.tga" + name="JoinedTooManyGroupsMember" + type="alert"> +You are a member of too many groups to join another one. Please leave at least one group before joining this one, or decline the offer. +To leave a group select the 'Groups...' option from the 'Edit' menu. +[NAME] has invited you to join a group as a member. +[INVITE] + <usetemplate + name="okcancelbuttons" + notext="Decline" + yestext="Join"/> + </notification> + + <notification + icon="alert.tga" + name="KickUser" + type="alert"> +Kick this user with what message? + <form name="form"> + <input name="message" type="text"> +An administrator has logged you off. + </input> + <button + default="true" + index="0" + name="OK" + text="OK"/> + <button + index="1" + name="Cancel" + text="Cancel"/> + </form> + </notification> + + <notification + icon="alert.tga" + name="KickAllUsers" + type="alert"> +Kick everyone currently on the grid with what message? + <form name="form"> + <input name="message" type="text"> +An administrator has logged you off. + </input> + <button + default="true" + index="0" + name="OK" + text="OK"/> + <button + index="1" + name="Cancel" + text="Cancel"/> + </form> + </notification> + + <notification + icon="alert.tga" + name="FreezeUser" + type="alert"> +Freeze this user with what message? + <form name="form"> + <input name="message" type="text"> +You have been frozen. You cannot move or chat. An administrator will contact you via instant message (IM). + </input> + <button + default="true" + index="0" + name="OK" + text="OK"/> + <button + index="1" + name="Cancel" + text="Cancel"/> + </form> + </notification> + + <notification + icon="alert.tga" + name="UnFreezeUser" + type="alert"> +Unfreeze this user with what message? + <form name="form"> + <input name="message" type="text"> +You are no longer frozen. + </input> + <button + default="true" + index="0" + name="OK" + text="OK"/> + <button + index="1" + name="Cancel" + text="Cancel"/> + </form> + </notification> + + <notification + icon="alertmodal.tga" + name="OfferTeleport" + type="alertmodal"> +Offer a teleport to your location with the following message? + <form name="form"> + <input name="message" type="text"> +Join me in [REGION] + </input> + <button + default="true" + index="0" + name="OK" + text="OK"/> + <button + index="1" + name="Cancel" + text="Cancel"/> + </form> + </notification> + + <notification + icon="alertmodal.tga" + name="OfferTeleportFromGod" + type="alertmodal"> +God summon user to your location? + <form name="form"> + <input name="message" type="text"> +Join me in [REGION] + </input> + <button + default="true" + index="0" + name="OK" + text="OK"/> + <button + index="1" + name="Cancel" + text="Cancel"/> + </form> + </notification> + + <notification + icon="alertmodal.tga" + name="TeleportFromLandmark" + type="alertmodal"> +Are you sure you want to teleport? + <usetemplate + ignoretext="When teleporting from a landmark in inventory" + name="okcancelignore" + notext="Cancel" + yestext="Teleport"/> + </notification> + + <notification + icon="alert.tga" + label="Message everyone in your Estate" + name="MessageEstate" + type="alert"> +Type a short announcement which will be sent to everyone currently in your estate. + <form name="form"> + <input name="message" type="text"/> + <button + default="true" + index="0" + name="OK" + text="OK"/> + <button + index="1" + name="Cancel" + text="Cancel"/> + </form> + </notification> + + <notification + icon="alert.tga" + label="Change Linden Estate" + name="ChangeLindenEstate" + type="alert"> +You are about to change a Linden owned estate (mainland, teen grid, orientation, etc.). + +This is EXTREMELY DANGEROUS because it can fundamentally affect the user experience. On the mainland, it will change thousands of regions and make the spaceserver hiccup. + +Proceed? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alert.tga" + label="Change Linden Estate Access" + name="ChangeLindenAccess" + type="alert"> +You are about to change the access list for a Linden owned estate (mainland, teen grid, orientation, etc.). + +This is DANGEROUS and should only be done to invoke the hack allowing objects/L$ to be transfered in/out of a grid. +It will change thousands of regions and make the spaceserver hiccup. + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alert.tga" + label="Select estate" + name="EstateAllowedAgentAdd" + type="alert"> +Add to allowed list for this estate only or for [ALL_ESTATES]? + <usetemplate + canceltext="Cancel" + name="yesnocancelbuttons" + notext="All Estates" + yestext="This Estate"/> + </notification> + + <notification + icon="alert.tga" + label="Select estate" + name="EstateAllowedAgentRemove" + type="alert"> +Remove from allowed list for this estate only or for [ALL_ESTATES]? + <usetemplate + canceltext="Cancel" + name="yesnocancelbuttons" + notext="All Estates" + yestext="This Estate"/> + </notification> + + <notification + icon="alert.tga" + label="Select estate" + name="EstateAllowedGroupAdd" + type="alert"> +Add to group allowed list for this estate only or for [ALL_ESTATES]? + <usetemplate + canceltext="Cancel" + name="yesnocancelbuttons" + notext="All Estates" + yestext="This Estate"/> + </notification> + + <notification + icon="alert.tga" + label="Select estate" + name="EstateAllowedGroupRemove" + type="alert"> +Remove from group allowed list for this estate only or [ALL_ESTATES]? + <usetemplate + canceltext="Cancel" + name="yesnocancelbuttons" + notext="All Estates" + yestext="This Estate"/> + </notification> + + <notification + icon="alert.tga" + label="Select estate" + name="EstateBannedAgentAdd" + type="alert"> +Deny access for this estate only or for [ALL_ESTATES]? + <usetemplate + canceltext="Cancel" + name="yesnocancelbuttons" + notext="All Estates" + yestext="This Estate"/> + </notification> + + <notification + icon="alert.tga" + label="Select estate" + name="EstateBannedAgentRemove" + type="alert"> +Remove this Resident from the ban list for access for this estate only or for [ALL_ESTATES]? + <usetemplate + canceltext="Cancel" + name="yesnocancelbuttons" + notext="All Estates" + yestext="This Estate"/> + </notification> + + <notification + icon="alert.tga" + label="Select estate" + name="EstateManagerAdd" + type="alert"> +Add estate manager for this estate only or for [ALL_ESTATES]? + <usetemplate + canceltext="Cancel" + name="yesnocancelbuttons" + notext="All Estates" + yestext="This Estate"/> + </notification> + + <notification + icon="alert.tga" + label="Select estate" + name="EstateManagerRemove" + type="alert"> +Remove estate manager for this estate only or for [ALL_ESTATES]? + <usetemplate + canceltext="Cancel" + name="yesnocancelbuttons" + notext="All Estates" + yestext="This Estate"/> + </notification> + + <notification + icon="alert.tga" + label="Confirm Kick" + name="EstateKickUser" + type="alert"> +Kick [EVIL_USER] from this estate? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="EstateChangeCovenant" + type="alertmodal"> +Are you sure you want to change the Estate Covenant? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="RegionEntryAccessBlocked" + type="alertmodal"> +You are not allowed in that Region due to your maturity Rating. This may be a result of a lack of information validating your age. + +Please verify you have the latest Viewer installed, and go to the Knowledge Base for details on accessing areas with this maturity rating. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="RegionEntryAccessBlocked_KB" + type="alertmodal"> +You are not allowed in that region due to your maturity Rating. + +Go to the Knowledge Base for more information about maturity Ratings? + <url option="0" name="url"> + https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=6010 + </url> + <usetemplate + name="okcancelignore" + yestext="Go to Knowledge Base" + notext="Close" + ignoretext="When Region entry is blocked due to maturity Rating"/> + </notification> + + <notification + icon="notifytip.tga" + name="RegionEntryAccessBlocked_Notify" + type="notifytip"> +You are not allowed in that region due to your maturity Rating. + </notification> + + <notification + icon="alertmodal.tga" + name="RegionEntryAccessBlocked_Change" + type="alertmodal"> +You are not allowed in that Region due to your maturity Rating preference. + +You can click 'Change Preference' to raise your maturity Rating preference now and allow you to enter. You will be able to search and access [REGIONMATURITY] content from now on. If you later want to change this setting back, go to Edit > Preferences... > General. + <form name="form"> + <button + index="0" + name="OK" + text="Change Preference"/> + <button + default="true" + index="1" + name="Cancel" + text="Close"/> + <ignore name="ignore" text="When Region entry is blocked due to maturity Rating preference"/> + </form> + </notification> + + <notification + icon="alertmodal.tga" + name="LandClaimAccessBlocked" + type="alertmodal"> +You cannot claim this land due to your maturity Rating. This may be a result of a lack of information validating your age. + +Please verify you have the latest Viewer installed, and go to the Knowledge Base for details on accessing areas with this maturity rating. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="LandClaimAccessBlocked_KB" + type="alertmodal"> +You cannot claim this land due to your maturity Rating. + +Go to the Knowledge Base for more information about maturity Ratings? + <url option="0" name="url"> + https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=6010 + </url> + <usetemplate + name="okcancelignore" + yestext="Go to Knowledge Base" + notext="Close" + ignoretext="When claiming land is blocked due to maturity Rating"/> + </notification> + + <notification + icon="notifytip.tga" + name="LandClaimAccessBlocked_Notify" + type="notifytip"> +You cannot claim this land due to your maturity Rating. + </notification> + + <notification + icon="alertmodal.tga" + name="LandClaimAccessBlocked_Change" + type="alertmodal"> +You cannot claim this land due to your maturity Rating preference. + +You can click 'Change Preference' to raise your maturity Rating preference now and allow you to enter. You will be able to search and access [REGIONMATURITY] content from now on. If you later want to change this setting back, go to Edit > Preferences... > General. + <usetemplate + name="okcancelignore" + yestext="Change Preference" + notext="Close" + ignoretext="When claiming land is blocked due to maturity Rating preference"/> + </notification> + + <notification + icon="alertmodal.tga" + name="LandBuyAccessBlocked" + type="alertmodal"> +You cannot buy this land due to your maturity Rating. This may be a result of a lack of information validating your age. + +Please verify you have the latest Viewer installed, and go to the Knowledge Base for details on accessing areas with this maturity rating. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="LandBuyAccessBlocked_KB" + type="alertmodal"> +You cannot buy this land due to your maturity Rating. + +Go to the Knowledge Base for more information about maturity Ratings? + <url option="0" name="url"> + https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=6010 + </url> + <usetemplate + name="okcancelignore" + yestext="Go to Knowledge Base" + notext="Close" + ignoretext="When a Land purchase is blocked due to maturity Rating"/> + </notification> + + <notification + icon="notifytip.tga" + name="LandBuyAccessBlocked_Notify" + type="notifytip"> +You cannot buy this land due to your maturity Rating. + </notification> + + <notification + icon="alertmodal.tga" + name="LandBuyAccessBlocked_Change" + type="alertmodal"> +You cannot buy this land due to your maturity Rating preference. + +You can click 'Change Preference' to raise your maturity Rating preference now and allow you to enter. You will be able to search and access [REGIONMATURITY] content from now on. If you later want to change this setting back, go to Edit > Preferences... > General. + <usetemplate + name="okcancelignore" + yestext="Change Preference" + notext="Close" + ignoretext="When a Land purchase is blocked due to maturity Rating preference"/> + </notification> + + <notification + icon="alertmodal.tga" + name="TooManyPrimsSelected" + type="alertmodal"> + "There are too many prims selected. Please select [MAX_PRIM_COUNT] or fewer prims and try again" + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ProblemImportingEstateCovenant" + type="alertmodal"> +Problem importing estate covenant. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ProblemAddingEstateManager" + type="alertmodal"> +Problems adding a new estate manager. One or more estates may have a full manager list. + </notification> + + <notification + icon="alertmodal.tga" + name="ProblemAddingEstateGeneric" + type="alertmodal"> +Problems adding to this estate list. One or more estates may have a full list. + </notification> + + <notification + icon="alertmodal.tga" + name="UnableToLoadNotecardAsset" + type="alertmodal"> +Unable to load notecard's asset at this time. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="NotAllowedToViewNotecard" + type="alertmodal"> +Insufficient permissions to view notecard associated with asset ID requested. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="MissingNotecardAssetID" + type="alertmodal"> +Asset ID for notecard is missing from database. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + icon="alert.tga" + name="PublishClassified" + type="alert"> +Remember: Classified ad fees are non-refundable. + +Publish this classified now for L$[AMOUNT]? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="SetClassifiedMature" + type="alertmodal"> +Does this classified contain Mature content? + <usetemplate + canceltext="Cancel" + name="yesnocancelbuttons" + notext="No" + yestext="Yes"/> + </notification> + + <notification + icon="alertmodal.tga" + name="SetGroupMature" + type="alertmodal"> +Does this group contain Mature content? + <usetemplate + canceltext="Cancel" + name="yesnocancelbuttons" + notext="No" + yestext="Yes"/> + </notification> + + <notification + icon="alert.tga" + label="Confirm restart" + name="ConfirmRestart" + type="alert"> +Do you really want to restart this region in 2 minutes? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alert.tga" + label="Message everyone in this region" + name="MessageRegion" + type="alert"> +Type a short announcement which will be sent to everyone in this region. + <form name="form"> + <input name="message" type="text"/> + <button + default="true" + index="0" + name="OK" + text="OK"/> + <button + index="1" + name="Cancel" + text="Cancel"/> + </form> + </notification> + + <notification + icon="alertmodal.tga" + label="Block Terraform" + name="HelpRegionBlockTerraform" + type="alertmodal"> +If this box is checked, land owners will not be able to terraform their land regardless of the per-parcel 'Edit Terrain' setting. + +Default: off + </notification> + + <notification + icon="alertmodal.tga" + label="Block Fly" + name="HelpRegionBlockFly" + type="alertmodal"> +If this box is checked, people will not be able to fly in this region regardless of the per-parcel 'Fly' setting. + +Default: off + </notification> + + <notification + icon="alertmodal.tga" + label="Bulk Change Content Permissions" + name="HelpBulkPermission" + type="alertmodal"> +The Bulk Permissions tool helps you to quickly change the permissions on multiple items in the contents of the selected object(s). However, please note that you are only setting permissions on the items in the Contents of the selected objects -- not permissions on the container object(s) themselves. + +Also note, the permissions are not applied to the nested contents of any of the contained items. Your request only operates on items exactly one level deep. + +You can selectively choose which types of items to modify by using the checklist under 'Content Types' here. Snapshots are included when you select Textures. + +* This tool will only succeed at changing permissions on items you are allowed to change. +* You cannot grant any Next owner permissions which you do not already have. +* The Next owner permissions are merely requests. If any item cannot take all of the new permissions, none of its permissions will change. + +When you are ready to change the permissions in bulk, click 'Apply' and wait for the results to display. + +If you close the Bulk Permissions window while permissions are being changed, it will halt the operation. + </notification> + + <notification + icon="alertmodal.tga" + label="Allow Damage" + name="HelpRegionAllowDamage" + type="alertmodal"> +If this box is checked, the health system across all parcels regardless of individual parcel settings. If this box is left unchecked, individual parcel owners will still be able to activate the health system on their parcels. + +Default: off + </notification> + + <notification + icon="alertmodal.tga" + label="Agent Limit" + name="HelpRegionAgentLimit" + type="alertmodal"> +Sets the maximum number of avatars allowed in this region. +Performance may vary depending on the number avatars present. + +Default: 40 + </notification> + + <notification + icon="alertmodal.tga" + label="Object Bonus" + name="HelpRegionObjectBonus" + type="alertmodal"> +The Object Bonus is a multiplier for primitives allowed on any given parcel. The range allowed is 1 to 10. Set at '1', each 512m² parcel is allowed 117 objects. Set at '2', each 512m² parcel is allowed 234, or twice as many, and so on. The max number of objects allowed per region remains 15,000 no matter what the Object Bonus is. Once set, be aware that lowering the Object Bonus may cause objects to be returned or deleted. + +Default: 1.0 + </notification> + + <notification + icon="alertmodal.tga" + label="Maturity" + name="HelpRegionMaturity" + type="alertmodal"> +Sets the maturity Rating of the Region, as shown in the menu bar at the top of any Resident's viewer, and in tooltips on the World Map when the cursor hovers over this Region. This setting also affects access to this Region and search results. Other Residents may only enter Regions or view search results with the same maturity Ratings they have chosen in their preferences. + +It may take some time for this change to be reflected on the map. + </notification> + + <notification + icon="alertmodal.tga" + label="Restrict Pushing" + name="HelpRegionRestrictPushObject" + type="alertmodal"> +This checkbox sets the full region to restricted push permissions. +When enabled, Residents may only be pushed by themselves or by the parcel's owner. +(Push refers to the llPushObject() LSL function.) + +Default: Off + </notification> + + <notification + icon="alertmodal.tga" + label="Parcel Join/Subdivide" + name="HelpParcelChanges" + type="alertmodal"> +This checkbox sets whether or not parcels not owned by the estate owner can be joined or subdivided. +If this option is unchecked: + * Only estate owners or managers can join or subdivide parcels. + * They may only join or subdivide parcels belonging to the owner, or to a group where they have the appropriate group powers. +If this option is checked: + * All parcel owners can join or subdivide the parcels they own. + * For group owned parcels, those with appropriate group powers may join or subdivide parcels. + +Default: Checked + </notification> + + <notification + icon="alertmodal.tga" + label="Do Not Show In Search" + name="HelpRegionSearch" + type="alertmodal"> +Checking this box will block parcel owners from listing their parcels in search. + +Default: Off + </notification> + + <notification + icon="alertmodal.tga" + label="Changed Region Maturity" + name="RegionMaturityChange" + type="alertmodal"> +The maturity rating for this region has been updated. +It may take some time for the change to be reflected on the map. + </notification> + + <notification + icon="alertmodal.tga" + label="Land Resale" + name="HelpRegionLandResell" + type="alertmodal"> +Estate owners and managers can sell any land owned by the estate owner. +If this option is left unchecked, buyers cannot resell their land in this region. +If this option is checked, buyers can resell their land in this region. + +Default: Disallow + </notification> + + <notification + icon="alertmodal.tga" + label="Disable Scripts" + name="HelpRegionDisableScripts" + type="alertmodal"> +When sim performance is poor, a script may be to blame. Open the Statistics Bar (Ctrl-Shift-1). Look at the Simulator Physics FPS. +If it is lower than 45, open the Time panel located at the bottom of the Stats Bar. If Script Time reads 25 ms or higher, click the Get Top Scripts button. You will be given the name and location of scripts that may be causing poor performance. + +Checking the Disable Scripts box and then pressing the Apply button will temporarily disable all scripts in this region. You may need to do this in order to travel to the location of a noted 'top script'. Once you have arrived at the location, investigate the script to determine if it is causing the problem. You may want to contact the owner of the script or delete or return the object. +Uncheck the Disable Script box and then Apply to reactivate the scripts in the region. + +Default: off + </notification> + + <notification + icon="alertmodal.tga" + label="Disable Collisions" + name="HelpRegionDisableCollisions" + type="alertmodal"> +When sim performance is poor, physical objects may be to blame. +Open the Statistics Bar (Ctrl-Shift-1). Look at the Simulator Physics FPS. If it is lower than 45, open the Time panel located at the bottom of the Stats Bar. If Sim Time (Physics) reads 20 ms or higher, click the Get Top Colliders button. +You will be given the name and location of physical objects that may be causing poor performance. + +Checking the Disable Collisions box and then pressing the Apply button will temporarily disable object-object collisions. You may need to do this in order to travel to the location of a noted 'top collider'. Once you have arrived at the location, investigate the object - is it constantly colliding with other objects? You may want to contact the owner of the object or delete or return the object. +Uncheck the Disable Collisions box and then Apply to reactivate collisions in the region. + +Default: off + </notification> + + <notification + icon="alertmodal.tga" + label="Disable Physics" + name="HelpRegionDisablePhysics" + type="alertmodal"> +Disable Physics is similar to Disable Collisions, except all physics simulation is disabled. This means that not only will objects stop colliding, but avatars will be unable to move. + +This should only be used when Disable Collisions does not give back enough performance to the region to investigate a physics problem or Top Collider. + +Be sure to re-enable physics when you are done, or avatars will continue to be unable to move. + +Default: off + </notification> + + <notification + icon="alertmodal.tga" + label="Top Colliders" + name="HelpRegionTopColliders" + type="alertmodal"> +Show a list of objects experiencing the greatest number of potential object-object collisions. These objects can slow performance. Select View > Statistics Bar and look under Simulator > Time > Sim Time (Physics) to see if more than 20 ms is being spent in physics. + </notification> + + <notification + icon="alertmodal.tga" + label="Top Scripts" + name="HelpRegionTopScripts" + type="alertmodal"> +Show a list of objects spending the most time running LSL scripts. These objects can slow performance. +Select View > Statistics Bar and look under Simulator > Time > Script Time to see if more than 25 ms is being spent in scripts. + </notification> + + <notification + icon="alertmodal.tga" + label="Restart Region" + name="HelpRegionRestart" + type="alertmodal"> +Restart the server process running this region after a two minute warning. All Residents in the region will be disconnected. The region will save its data, and should come back up within 90 seconds. + +Restarting the region will not fix most performance problems, and should usually be used only when directed. + </notification> + + <notification + icon="alertmodal.tga" + label="Water Height" + name="HelpRegionWaterHeight" + type="alertmodal"> +This is the height in meters where water appears. If this setting is anything other than 20 and you have water that is adjacent to the edge of world or 'void' water, there will be a visible gap. + +Default: 20 + </notification> + + <notification + icon="alertmodal.tga" + label="Terrain Raise" + name="HelpRegionTerrainRaise" + type="alertmodal"> +This is the distance in meters that parcel owners can raise their terrain above the 'baked' terrain default height. + +Default: 4 + </notification> + + <notification + icon="alertmodal.tga" + label="Terrain Lower" + name="HelpRegionTerrainLower" + type="alertmodal"> +This is the distance in meters that parcel owners can lower their terrain below the 'baked' terrain default height. + +Default: -4 + </notification> + + <notification + icon="alertmodal.tga" + label="Upload RAW Terrain" + name="HelpRegionUploadRaw" + type="alertmodal"> +This button uploads a .RAW file to the region you are in. +The file must have the correct dimensions (RGB, 256x256) and 13 channels. The best way to create a terrain file is to download the existing RAW file. A good first step is to modify the red channel (land height), and upload it. + +The upload can take up to 45 seconds. Note that uploading a terrain file *will not* move the objects that are on the land, only the terrain itself and the permissions associated with the parcels. This can result in objects going underground. + +For more information on editing region height fields, consult F1 Help. + </notification> + + <notification + icon="alertmodal.tga" + label="Download RAW Terrain" + name="HelpRegionDownloadRaw" + type="alertmodal"> +This button downloads a file containing the height field data, parcel dimensions, parcel for sale status and some parcel permissions for this region. When opening the file in a program such as Photoshop you must specify the document's dimensions which are: RGB, 256x256 with 13 channels. This terrain file cannot be opened in any other way. + +For more information on editing region height fields, consult F1 help. + </notification> + + <notification + icon="alertmodal.tga" + label="Use Estate Sun" + name="HelpRegionUseEstateSun" + type="alertmodal"> +This checkbox makes the sun position in this region the same as the sun position in the rest of the estate. + +Default: on + </notification> + + <notification + icon="alertmodal.tga" + label="Fixed Sun" + name="HelpRegionFixedSun" + type="alertmodal"> +This checkbox sets the sun position to the position in the Phase slider and stops the sun from moving. + +Default: off + </notification> + + <notification + icon="alertmodal.tga" + label="Bake Terrain" + name="HelpRegionBakeTerrain" + type="alertmodal"> +This button saves the current shape of the terrain as the new default for the region. Once baked, the land can revert to the saved shape whenever you or others use the Edit Terrain 'Revert' option. The baked terrain is also the middle point for the terrain raise and lower limits. + </notification> + + <notification + icon="alertmodal.tga" + label="Estate Managers" + name="HelpEstateEstateManager" + type="alertmodal"> +An estate manager is a Resident to whom you have delegated control of region and estate settings. An estate manager can change any setting in these panels, except for uploading, downloading, and baking terrain. In particular, they can allow or ban Residents from your estate. + +Estate managers can only be added or removed by the owner of the estate, not by each other. Please only choose Residents you trust as estate managers, as you will be ultimately responsible for their actions. + </notification> + + <notification + icon="alertmodal.tga" + label="Use Global Time" + name="HelpEstateUseGlobalTime" + type="alertmodal"> +This checkbox makes the sun in your estate follow the same position as on the Linden-owned 'mainland' estates. + +Default: on + </notification> + + <notification + icon="alertmodal.tga" + label="Fixed Sun" + name="HelpEstateFixedSun" + type="alertmodal"> +This checkbox sets the sun position to the position in the Phase slider and stops the sun from moving. + </notification> + + <notification + icon="alertmodal.tga" + label="Public Access" + name="HelpEstateExternallyVisible" + type="alertmodal"> +This checkbox sets whether Residents who are on other estates can enter this estate without being on an access list. + +Default: on + </notification> + + <notification + icon="alertmodal.tga" + label="Allow Direct Teleport" + name="HelpEstateAllowDirectTeleport" + type="alertmodal"> +When checked, allows Residents to directly teleport to any point in your estate. When unchecked, Residents teleport to the nearest telehub. + +Default: off + </notification> + + <notification + icon="alertmodal.tga" + label="Allow Access" + name="HelpEstateAllowResident" + type="alertmodal"> +Access to this estate will be limited to Residents listed here and any groups below. This setting is only available when Public Access is unchecked. + </notification> + + <notification + icon="alertmodal.tga" + label="Allow Group Access" + name="HelpEstateAllowGroup" + type="alertmodal"> +Access to this estate will be limited to groups listed here and any Residents above. This setting is only available when Public Access is unchecked. + </notification> + + <notification + icon="alertmodal.tga" + label="Abuse Email Address" + name="HelpEstateAbuseEmailAddress" + type="alertmodal"> +Setting this to a valid email address will cause abuse reports on this estate to be sent to that address. +Setting it blank will cause abuse reports to be sent only to Linden Lab. + </notification> + + <notification + icon="alertmodal.tga" + label="Deny Access" + name="HelpEstateBanResident" + type="alertmodal"> +Residents on this list are denied access to your estate, regardless of any other settings. + </notification> + + <notification + icon="alertmodal.tga" + label="Allow Voice Chat" + name="HelpEstateVoiceChat" + type="alertmodal"> +Parcels in this estate are allowed to have their own voice channels in which residents may hear and talk with others nearby. + +Default: off + </notification> + + <notification + icon="alertmodal.tga" + label="Voice Version Mismatch" + name="VoiceVersionMismatch" + type="alertmodal"> +This version of Second Life is not compatible with the Voice Chat feature in this region. In order for Voice Chat to function correctly you will need to update Second Life. + </notification> + + <notification + icon="alertmodal.tga" + label="Estate Covenant" + name="HelpEstateCovenant" + type="alertmodal"> +Setting an estate covenant enables you to sell parcels within that estate. If a covenant is not set, you cannot sell the land. The notecard for your covenant can be empty if you do not wish to apply any rules or advise buyers of anything in relation to the land before they buy it. + +A covenant can be used to communicate rules, guidelines, cultural information or simply your own expectations to the prospective buyer. This can include zoning, building regulations, payment options or any other information you feel it is important for the new owner to have seen and to have agreed to before they purchase. + +The buyer must agree to the covenant by ticking the check box before they will be able to finish the purchase. Estate covenants are always visible in the About Land dialog for any parcels that have one set. + </notification> + + <notification + icon="alertmodal.tga" + label="Can't Buy Objects" + name="BuyObjectOneOwner" + type="alertmodal"> +Cannot buy objects from different owners at the same time. +Please select only one object and try again. + </notification> + + <notification + icon="alertmodal.tga" + label="Can't Buy Contents" + name="BuyContentsOneOnly" + type="alertmodal"> +Unable to buy the contents of more than one object at a time. +Please select only one object and try again. + </notification> + + <notification + icon="alertmodal.tga" + label="Can't Buy Contents" + name="BuyContentsOneOwner" + type="alertmodal"> +Cannot buy objects from different owners at the same time. +Please select only one object and try again. + </notification> + + <notification + icon="alertmodal.tga" + name="BuyOriginal" + type="alertmodal"> +Buy original object from [OWNER] for L$[PRICE]? +You will become the owner of this object. +You will be able to: + Modify: [MODIFYPERM] + Copy: [COPYPERM] + Resell or Give Away: [RESELLPERM] + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="BuyOriginalNoOwner" + type="alertmodal"> +Buy original object for L$[PRICE]? +You will become the owner of this object. +You will be able to: + Modify: [MODIFYPERM] + Copy: [COPYPERM] + Resell or Give Away: [RESELLPERM] + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="BuyCopy" + type="alertmodal"> +Buy a copy from [OWNER] for L$[PRICE]? +The object will be copied to your inventory. +You will be able to: + Modify: [MODIFYPERM] + Copy: [COPYPERM] + Resell or Give Away: [RESELLPERM] + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="BuyCopyNoOwner" + type="alertmodal"> +Buy a copy for L$[PRICE]? +The object will be copied to your inventory. +You will be able to: + Modify: [MODIFYPERM] + Copy: [COPYPERM] + Resell or Give Away: [RESELLPERM] + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="BuyContents" + type="alertmodal"> +Buy contents from [OWNER] for L$[PRICE]? +They will be copied to your inventory. + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="BuyContentsNoOwner" + type="alertmodal"> +Buy contents for L$[PRICE]? +They will be copied to your inventory. + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ConfirmPurchase" + type="alertmodal"> +This transaction will: +[ACTION] + +Are you sure you want to proceed with this purchase? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ConfirmPurchasePassword" + type="password"> +This transaction will: +[ACTION] + +Are you sure you want to proceed with this purchase? +Please re-enter your password and click OK. + <form name="form"> + <input + name="message" + type="password"/> + <button + default="true" + index="0" + name="ConfirmPurchase" + text="OK"/> + <button + index="1" + name="Cancel" + text="Cancel"/> + </form> + </notification> + + <notification + icon="alert.tga" + name="SetPickLocation" + type="alert"> +Note: +You have updated the location of this pick but the other details will retain their original values. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="MoveInventoryFromObject" + type="alertmodal"> +You have selected 'no copy' inventory items. +These items will be moved to your inventory, not copied. + +Move the inventory item(s)? + <usetemplate + ignoretext="When moving no-copy inventory from objects" + name="okcancelignore" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="MoveInventoryFromScriptedObject" + type="alertmodal"> +You have selected 'no copy' inventory items. These items will be moved to your inventory, not copied. +Because this object is scripted, moving these items to your inventory may cause the script to malfunction. + +Move the inventory item(s)? + <usetemplate + ignoretext="When moving no-copy inventory from scripted objects" + name="okcancelignore" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alert.tga" + name="ClickActionNotPayable" + type="alert"> +Warning: The Pay Object click action has been set, but it will only work if a script is added with a money() event. + <form name="form"> + <ignore name="ignore" + text="When Setting 'Pay' on objects without money() events"/> + </form> + </notification> + + <notification + icon="alertmodal.tga" + name="OpenObjectCannotCopy" + type="alertmodal"> +There are no items in this object that you are allowed to copy. + </notification> + + <notification + icon="alertmodal.tga" + name="WebLaunchAccountHistory" + type="alertmodal"> +Go to the Second Life web site to see your account history? + <usetemplate + ignoretext="When loading account history web page" + name="okcancelignore" + notext="Cancel" + yestext="Go to page"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ClickOpenF1Help" + type="alertmodal"> +Visit the Second Life Support Web site? + <usetemplate + ignoretext="When visiting the Second Life Support Website." + name="okcancelignore" + notext="Cancel" + yestext="Go"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ConfirmQuit" + type="alertmodal"> +Are you sure you want to quit? + <usetemplate + ignoretext="When Quitting Second Life." + name="okcancelignore" + notext="Continue" + yestext="Quit"/> + </notification> + + <notification + icon="alertmodal.tga" + name="HelpReportAbuseEmailLL" + type="alertmodal"> +Use this tool to report violations of the Terms of Service and Community Standards. See: + +http://secondlife.com/corporate/tos.php +http://secondlife.com/corporate/cs.php + +All reported abuses of the Terms of Service and Community Standards are investigated and resolved. You can view the incident resolution on the Incident Report at: + +http://secondlife.com/support/incidentreport.php + </notification> + + <notification + icon="alertmodal.tga" + name="HelpReportAbuseEmailEO" + type="alertmodal"> +IMPORTANT: This report will go to the owner of the region you are currently in and not to Linden Lab. + +As a service to residents and visitors, the owner of the region you are in has elected to receive and resolve all reports originating in this region. Linden Lab will not investigate reports you file from this location. + +The region owner will resolve reports based on the local rules of this region as outlined in the estate Covenant. +(View covenants by going to the World menu and selecting About Land.) + +The resolution of this report applies only to this Region; Residents access to other areas of Second Life will not be affected by the outcome of this report. Only Linden Lab can restrict access to the entirety of Second Life. + </notification> + + <notification + icon="alertmodal.tga" + name="HelpReportBug" + type="alertmodal"> +Use this tool to *only* report technical features that do not perform as described or expected, please provide as much detail as possible. +You may reply to the auto-response email to add more details to your report. + +All bug reports are investigated and assessed. No email response will be sent. + +If you are having a technical difficulty, please contact Support at: + +http://secondlife.com/community/support.php + +Note: Incomplete reports will not be investigated + </notification> + + <notification + icon="alertmodal.tga" + name="HelpReportAbuseSelectCategory" + type="alertmodal"> +Please select a category for this abuse report. +Selecting a category helps us file and process abuse reports. + </notification> + + <notification + icon="alertmodal.tga" + name="HelpReportBugSelectCategory" + type="alertmodal"> +Please select a category for this bug. +Selecting a category helps us file and process bug reports. + </notification> + + <notification + icon="alertmodal.tga" + name="HelpReportAbuseAbuserNameEmpty" + type="alertmodal"> +Please enter the name of the abuser. +Entering an accurate value helps us file and process abuse reports. + </notification> + + <notification + icon="alertmodal.tga" + name="HelpReportAbuseAbuserLocationEmpty" + type="alertmodal"> +Please enter the location where the abuse took place. +Entering an accurate value helps us file and process abuse reports. + </notification> + + <notification + icon="alertmodal.tga" + name="HelpReportAbuseSummaryEmpty" + type="alertmodal"> +Please enter a summary of the abuse that took place. +Entering an accurate summary helps us file and process abuse reports. + </notification> + + <notification + icon="alertmodal.tga" + name="HelpReportBugSummaryEmpty" + type="alertmodal"> +Please enter a summary of the bug. +Entering an accurate summary helps us file and process bug reports. + </notification> + + <notification + icon="alertmodal.tga" + name="HelpReportAbuseDetailsEmpty" + type="alertmodal"> +Please enter a detailed description of the abuse that took place. +Be as specific as you can, including names and the details of the incident you are reporting. +Entering an accurate description helps us file and process abuse reports. + </notification> + + <notification + icon="alertmodal.tga" + name="HelpReportBugDetailsEmpty" + type="alertmodal"> +Please enter a detailed description of the bug. +Be as specific as you can, including steps to reproduce the bug if possible. +Entering an accurate description helps us file and process bug reports. + </notification> + + <notification + icon="alertmodal.tga" + name="HelpReportAbuseContainsCopyright" + type="alertmodal"> +Dear Resident, + +You appear to be reporting intellectual property infringement. Please make sure you are reporting it correctly: + +(1) The Abuse Process. You may submit an abuse report if you believe a Resident is exploiting the Second Life permissions system, for example, by using CopyBot or similar copying tools, to infringe intellectual property rights. The Abuse Team investigates and issues appropriate disciplinary action for behavior that violates the Second Life Community Standards or Terms of Service. However, the Abuse Team does not handle and will not respond to requests to remove content from the Second Life world. + +(2) The DMCA or Content Removal Process. To request removal of content from Second Life, you MUST submit a valid notification of infringement as provided in our DMCA Policy at http://secondlife.com/corporate/dmca.php. + +If you still wish to continue with the abuse process, please close this window and finish submitting your report. You may need to select the specific category 'CopyBot or Permissions Exploit'. + +Thank you, + +Linden Lab + </notification> + + <notification + icon="alertmodal.tga" + name="FailedRequirementsCheck" + type="alertmodal"> +The following required components are missing from [FLOATER]: +[COMPONENTS] + </notification> + + <notification + icon="alert.tga" + label="Replace Existing Attachment" + name="ReplaceAttachment" + type="alert"> +There is already an object attached to this point on your body. +Do you want to replace it with the selected object? + <form name="form"> + <ignore name="ignore" + save_option="true" + text="When replacing existing attachments"/> + <button + default="true" + ignore="Replace Automatically" + index="0" + name="Yes" + text="OK"/> + <button + ignore="Never Replace" + index="1" + name="No" + text="Cancel"/> + </form> + </notification> + + <notification + icon="alert.tga" + label="Busy Mode Warning" + name="BusyModePay" + type="alert"> +You are in Busy Mode, which means you will not receive any items offered in exchange for this payment. + +Would you like to leave Busy Mode before completing this transaction? + <form name="form"> + <ignore name="ignore" + save_option="true" + text="When paying a person or object in busy mode"/> + <button + default="true" + ignore="Always leave Busy Mode" + index="0" + name="Yes" + text="OK"/> + <button + ignore="Never leave Busy Mode" + index="1" + name="No" + text="Cancel"/> + </form> + </notification> + + <notification + icon="alertmodal.tga" + name="ConfirmEmptyTrash" + type="alertmodal"> +Are you sure you want to permanently remove the contents of your Trash folder? + <usetemplate + ignoretext="When emptying your inventory trash folder" + name="okcancelignore" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ConfirmClearBrowserCache" + type="alertmodal"> +Are you sure you want to clear your browser cache? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="Yes"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ConfirmClearCookies" + type="alertmodal"> +Are you sure you want to clear your cookies? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="Yes"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ConfirmClearMediaUrlList" + type="alertmodal"> +Are you sure you want to clear your list of saved URLs? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="Yes"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ConfirmEmptyLostAndFound" + type="alertmodal"> +Are you sure you want to permanently remove the contents of your Lost And Found folder? + <usetemplate + ignoretext="When emptying your inventory Lost And Found folder" + name="okcancelignore" + notext="No" + yestext="Yes"/> + </notification> + + <notification + icon="alertmodal.tga" + name="CopySLURL" + type="alertmodal"> +The following SLURL has been copied to your clipboard: + [SLURL] + +Put it in a web page to give others easy access to this location or try it out yourself by pasting it into the address bar of your web browser. + <form name="form"> + <ignore name="ignore" + text="When copying a SLURL to your clipboard"/> + </form> + </notification> + + <notification + icon="alertmodal.tga" + name="GraphicsPreferencesHelp" + type="alertmodal"> +This panel controls window size and resolution and the quality of the client's graphics. The Preferences > Graphics interface allows you to choose between four graphics levels: Low, Mid, High, and Ultra. You may also customize your graphics settings by checking the Custom checkbox and manipulating the following settings: + +Shaders: Enable or disable various types of pixel shaders. + +Reflection Detail: Sets the types of objects that water can reflect. + +Avatar Rendering: Sets options that affect how the client renders avatars. + +Draw Distance: Affects how far out from your viewpoint objects will be rendered in the scene. + +Max Particle Count: Sets the maximum number of particles you are able to see on your screen at once. + +Post Process Quality: Sets the resolution with which Glow is rendered. + +Mesh Detail: Sets the amount of detail or number of triangles used in rendering certain objects. A higher value takes longer to render, but makes these objects appear with more detail. + +Lighting Detail: Selects what types of lights you would like to render. + +Terrain Detail: Sets the amount of detail you would like to see for the terrain texture. + </notification> + + <notification + icon="alertmodal.tga" + name="WLSavePresetAlert" + type="alertmodal"> +Do you wish to overwrite the saved preset? + <usetemplate + name="okcancelbuttons" + notext="No" + yestext="Yes"/> + </notification> + + <notification + icon="alertmodal.tga" + name="WLDeletePresetAlert" + type="alertmodal"> +Do you wish to delete [SKY]? + <usetemplate + name="okcancelbuttons" + notext="No" + yestext="Yes"/> + </notification> + + <notification + icon="alertmodal.tga" + name="WLNoEditDefault" + type="alertmodal"> +You cannot edit or delete a default preset. + </notification> + + <notification + icon="alertmodal.tga" + name="WLMissingSky" + type="alertmodal"> +This day cycle file references a missing sky file: [SKY]. + </notification> + + <notification + icon="alertmodal.tga" + name="PPSaveEffectAlert" + type="alertmodal"> +PostProcess Effect exists. Do you still wish overwrite it? + <usetemplate + name="okcancelbuttons" + notext="No" + yestext="Yes"/> + </notification> + + <notification + icon="alertmodal.tga" + name="HelpEditSky" + type="alertmodal"> +Edit the WindLight sliders to create and save a set of skies. + </notification> + + <notification + icon="alertmodal.tga" + name="HelpEditDayCycle" + type="alertmodal"> +Set which skies to turn to throughout the day. + </notification> + + <notification + icon="alertmodal.tga" + name="EnvSettingsHelpButton" + type="alertmodal"> +These settings adjust the way the environment looks locally on your computer. Your graphics card needs to support atmospheric shaders in order to have access to all of the settings. + +Adjust the "Time of Day" slider to change the day's phase locally on the viewer. + +Adjust the "Cloud Cover" slider to control how much the clouds cover the sky. + +Pick a color in the "Water Color" color picker to change the color of the water. + +Adjust the "Water Fog" slider to control how dense the fog is underwater. + +Click "Use Estate Time" to reset the time of day to the region's current time of day and remain linked to it. + +Click "Advanced Sky" to bring up an editor with more advanced settings for the sky. + +Click "Advanced Water" to bring up an editor with more advanced settings for the water. + </notification> + + <notification + icon="alertmodal.tga" + name="HelpDayCycle" + type="alertmodal"> +The Day Cycle Editor gives you control over the sky during Second Life's day/night cycle. This is the cycle that is used by the Basic Environment Editor's Time of Day slider. + +The Day Cycle Editor works by setting keyframes. These are nodes (represented by the gray blips on the time graph) that have Sky Presets associated with them. As the Time of Day progresses, the WindLight sky "animates" as it interpolates between these keyframes. + +The yellow arrow above the timeline represents your current view, based on Time of Day. Click and drag it to see how your day will animate. You may add or delete keyframes by pressing the Add Key and Delete Key buttons to the right of the timeline. + +You can set the time position of a keyframe by either dragging it along the timeline, or by setting its value manually in the Key Frame Settings frame. Within the Key Frame Settings frame, you'll be able to associate the keyframe with its respective WindLight preset. + +Length of Cycle dictates the overall duration of a "day". Setting this to a low value (for instance, 2 min.) will mean your entire 24-hour timeline will animate in only two real minutes! Once you are satisfied with your timeline and keyframe cycle, use the Play and Stop buttons to preview the results. Remember- you can also move the yellow time-indicator arrow above the timeline to see the cycle animate interactively. Using the Use Estate Time button will synchronize your day length and time of day with the Estate's day cycle. + +Once you are pleased with your Day Cycle, you can save and load it with the Save Test Day and Load Test Day buttons. Note that, for now, we only allow one Day Cycle. + </notification> + + <notification + icon="alertmodal.tga" + name="HelpBlueHorizon" + type="alertmodal"> +Use the Red/Green/Blue (RGB) sliders to adjust the color of the sky. You can use the Intensity (I) slider to move all three RGB sliders in unison. + </notification> + + <notification + icon="alertmodal.tga" + name="HelpHazeHorizon" + type="alertmodal"> +Haze Horizon is one of the most useful parameters for adjusting overall light exposure in the scene. It is effective for simulating many exposure settings, such as white-outs from the sun and darker, closed-iris settings. + </notification> + + <notification + icon="alertmodal.tga" + name="HelpBlueDensity" + type="alertmodal"> +Blue Density affects the overall color saturation of the sky and fog. If you move the Intensity (I) slider to the right, colors will become brighter and more vibrant. If you move it all the way to the left, the colors will become duller, eventually fading to black and white. If you want to fine-tune the sky's color balance, you can control individual elements of saturation by using the Red/Green/Blue (RGB) sliders. + </notification> + + <notification + icon="alertmodal.tga" + name="HelpHazeDensity" + type="alertmodal"> +Haze Density controls the level of dull, gray haze in the atmosphere. It is effective for simulating scenes with high levels of smoke and man-made pollutants. It is also effective for simulating fog and mist. + </notification> + + <notification + icon="alertmodal.tga" + name="HelpDensityMult" + type="alertmodal"> +The Density Multiplier can be used to affect the overall atmospheric density. At lower settings, it creates a feeling of "thin air", and at higher settings, it creates a very heavy, smoggy effect. + </notification> + + <notification + icon="alertmodal.tga" + name="HelpDistanceMult" + type="alertmodal"> +Adjusts WindLight's perceived distance. A value of zero effectively turns off WindLight's influence on terrain and objects. Values greater than 1 simulate greater distances for thicker atmospheric effects. + </notification> + + <notification + icon="alertmodal.tga" + name="HelpMaxAltitude" + type="alertmodal"> +Max Altitude adjusts the altitude calculations WindLight performs when computing its atmospheric lighting. At later times of day, it is useful for adjusting how "deep" the sunset appears. + </notification> + + <notification + icon="alertmodal.tga" + name="HelpSunlightColor" + type="alertmodal"> +Adjusts the color and intensity of the direct light in the scene. + </notification> + + <notification + icon="alertmodal.tga" + name="HelpSunAmbient" + type="alertmodal"> +Adjusts the color and intensity of ambient atmospheric light in the scene. + </notification> + + <notification + icon="alertmodal.tga" + name="HelpSunGlow" + type="alertmodal"> +The Size slider controls the size of the sun. +The Focus slider controls how blurred the sun is over the sky. + </notification> + + <notification + icon="alertmodal.tga" + name="HelpSceneGamma" + type="alertmodal"> +Adjust the screen's distribution of light and dark. + </notification> + + <notification + icon="alertmodal.tga" + name="HelpStarBrightness" + type="alertmodal"> +Adjusts the brightness of the stars in the sky. + </notification> + + <notification + icon="alertmodal.tga" + name="HelpTimeOfDay" + type="alertmodal"> +Controls the location of the sun in the sky. +Similar to elevation. + </notification> + + <notification + icon="alertmodal.tga" + name="HelpEastAngle" + type="alertmodal"> +Controls the location of the sun in the sky. +Similar to azimuth. + </notification> + + <notification + icon="alertmodal.tga" + name="HelpCloudColor" + type="alertmodal"> +Edits the color of the clouds. It is generally recommended to keep it whitish, but hey, have fun if you want. + </notification> + + <notification + icon="alertmodal.tga" + name="HelpCloudDetail" + type="alertmodal"> +Controls the detail image layered on top of the main cloud image. X and Y control its position. D (Density) controls how puffy or fractured the clouds appear. + </notification> + + <notification + icon="alertmodal.tga" + name="HelpCloudDensity" + type="alertmodal"> +Allows you to control the position of the clouds with the X and Y sliders and how dense they are with the the D slider. + </notification> + + <notification + icon="alertmodal.tga" + name="HelpCloudCoverage" + type="alertmodal"> +Controls how much the clouds cover the sky. + </notification> + + <notification + icon="alertmodal.tga" + name="HelpCloudScale" + type="alertmodal"> +Controls the scaling of the cloud image on the sky dome. + </notification> + + <notification + icon="alertmodal.tga" + name="HelpCloudScrollX" + type="alertmodal"> +Controls the speed of the clouds as they move in the X direction. + </notification> + + <notification + icon="alertmodal.tga" + name="HelpCloudScrollY" + type="alertmodal"> +Controls the speed of the clouds as they move in the Y direction. + </notification> + + <notification + icon="alertmodal.tga" + name="HelpClassicClouds" + type="alertmodal"> +Check this box to enable rendering of Second Life's older classic clouds in addition to WindLight's clouds. + </notification> + + <notification + icon="alertmodal.tga" + name="HelpWaterFogColor" + type="alertmodal"> +Chooses the color of the underwater fog. + </notification> + + <notification + icon="alertmodal.tga" + name="HelpWaterFogDensity" + type="alertmodal"> +Controls how dense the water fog is and how far you can see underwater. + </notification> + + <notification + icon="alertmodal.tga" + name="HelpUnderWaterFogMod" + type="alertmodal"> +Modifies the effect of the Fog Density Exponent to control how far you can see when your avatar is underwater. + </notification> + + <notification + icon="alertmodal.tga" + name="HelpWaterGlow" + type="alertmodal"> +Controls how much the surface of the water glows. + </notification> + + <notification + icon="alertmodal.tga" + name="HelpWaterNormalScale" + type="alertmodal"> +Controls the scaling of the three wavelets that make up the water. + </notification> + + <notification + icon="alertmodal.tga" + name="HelpWaterFresnelScale" + type="alertmodal"> +Controls how much light is reflected at different angles. + </notification> + + <notification + icon="alertmodal.tga" + name="HelpWaterFresnelOffset" + type="alertmodal"> +Controls how much light intensity is reflected. + </notification> + + <notification + icon="alertmodal.tga" + name="HelpWaterScaleAbove" + type="alertmodal"> +Controls how much light is refracted from looking above the surface of the water. + </notification> + + <notification + icon="alertmodal.tga" + name="HelpWaterScaleBelow" + type="alertmodal"> +Controls how much light is refracted from looking from below the surface of the water. + </notification> + + <notification + icon="alertmodal.tga" + name="HelpWaterBlurMultiplier" + type="alertmodal"> +Controls how waves and reflections are mixed. + </notification> + + <notification + icon="alertmodal.tga" + name="HelpWaterNormalMap" + type="alertmodal"> +Controls what normal map is layered across the water to determine reflections/refractions. + </notification> + + <notification + icon="alertmodal.tga" + name="HelpWaterWave1" + type="alertmodal"> +Controls where and how fast the large scaled version of the normal map moves in the X and Y direction. + </notification> + + <notification + icon="alertmodal.tga" + name="HelpWaterWave2" + type="alertmodal"> +Controls where and how fast the the small scaled version of the normal map moves in the X and Y direction. + </notification> + + <notification + icon="alert.tga" + name="NewSkyPreset" + type="alert"> +Give me a name for the new sky. + <form name="form"> + <input name="message" type="text"> +New Preset + </input> + <button + default="true" + index="0" + name="OK" + text="OK"/> + <button + index="1" + name="Cancel" + text="Cancel"/> + </form> + </notification> + + <notification + icon="alertmodal.tga" + name="ExistsSkyPresetAlert" + type="alertmodal"> +Preset already exists! + </notification> + + <notification + icon="alert.tga" + name="NewWaterPreset" + type="alert"> +Give me a name for the new water preset. + <form name="form"> + <input name="message" type="text"> +New Preset + </input> + <button + default="true" + index="0" + name="OK" + text="OK"/> + <button + index="1" + name="Cancel" + text="Cancel"/> + </form> + </notification> + + <notification + icon="alertmodal.tga" + name="ExistsWaterPresetAlert" + type="alertmodal"> +Preset already exists! + </notification> + + <notification + icon="alertmodal.tga" + name="WaterNoEditDefault" + type="alertmodal"> +You cannot edit or delete a default preset. + </notification> + + <notification + icon="alertmodal.tga" + name="ChatterBoxSessionStartError" + type="alertmodal"> +Unable to start a new chat session with [RECIPIENT]. +[REASON] + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ChatterBoxSessionEventError" + type="alertmodal"> +[EVENT] +[REASON] + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ForceCloseChatterBoxSession" + type="alertmodal"> +Your chat session with [NAME] must close. +[REASON] + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="Cannot_Purchase_an_Attachment" + type="alertmodal"> +Items may not be purchased while they are part of an attachment. + </notification> + + <notification + icon="alertmodal.tga" + label="About Requests for the Debit Permission" + name="DebitPermissionDetails" + type="alertmodal"> +Granting this request gives a script ongoing permission to take Linden dollars (L$) from your account. To revoke this permission, the object owner must delete the object or reset the scripts in the object. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="AutoWearNewClothing" + type="alertmodal"> +Would you like to automatically wear the clothing item you create? + <usetemplate + ignoretext="Automatically wear new clothing" + name="okcancelignore" + notext="No" + yestext="Yes"/> + </notification> + + <notification + icon="alertmodal.tga" + name="NotAgeVerified" + type="alertmodal"> +You need to be age-verified in order to access this parcel. +Would you like to visit the Second Life website to verify your age? + +[_URL] + <url option="0" name="url"> + + https://secondlife.com/account/verification.php + </url> + <usetemplate + ignoretext="Warn about lack of age verification" + name="okcancelignore" + notext="No" + yestext="Yes"/> + </notification> + + <notification + icon="alertmodal.tga" + name="Cannot enter parcel: no payment info on file" + type="alertmodal"> +This parcel requires that you have payment information on file before you can access it. +Would you like to visit the Second Life website to set this up? + +[_URL] + <url option="0" name="url"> + + https://secondlife.com/account/ + </url> + <usetemplate + ignoretext="Warn about lack of payment info" + name="okcancelignore" + notext="No" + yestext="Yes"/> + </notification> + + <notification + icon="alertmodal.tga" + name="MissingString" + type="alertmodal"> +The string [STRING_NAME] is missing from strings.xml + </notification> + + <notification + icon="notifytip.tga" + name="SystemMessageTip" + type="notifytip"> +[MESSAGE] + </notification> + + <notification + icon="notifytip.tga" + name="Cancelled" + type="notifytip"> +Cancelled + </notification> + + <notification + icon="notifytip.tga" + name="CancelledSit" + type="notifytip"> +Cancelled Sit + </notification> + + <notification + icon="notifytip.tga" + name="CancelledAttach" + type="notifytip"> +Cancelled Attach + </notification> + + <notification + icon="notifytip.tga" + name="ReplacedMissingWearable" + type="notifytip"> +Replaced missing clothing/body part with default. + </notification> + + <notification + icon="groupnotify" + name="GroupNotice" + type="groupnotify"> +Topic: [SUBJECT], Message: [MESSAGE] + </notification> + + <notification + icon="notifytip.tga" + name="FriendOnline" + type="notifytip"> +[FIRST] [LAST] is Online + </notification> + + <notification + icon="notifytip.tga" + name="FriendOffline" + type="notifytip"> +[FIRST] [LAST] is Offline + </notification> + + <notification + icon="notifytip.tga" + name="AddSelfFriend" + type="notifytip"> +You cannot add yourself as a friend. + </notification> + + <notification + icon="notifytip.tga" + name="UploadingAuctionSnapshot" + type="notifytip"> +Uploading in-world and web site snapshots... +(Takes about 5 minutes.) + </notification> + + <notification + icon="notify.tga" + name="UploadPayment" + type="notify"> +You paid L$[AMOUNT] to upload. + </notification> + + <notification + icon="notifytip.tga" + name="UploadWebSnapshotDone" + type="notifytip"> +Web site snapshot upload done. + </notification> + + <notification + icon="notifytip.tga" + name="UploadSnapshotDone" + type="notifytip"> +In-world snapshot upload done + </notification> + + <notification + icon="notifytip.tga" + name="TerrainDownloaded" + type="notifytip"> +Terrain.raw downloaded + </notification> + + <notification + icon="notifytip.tga" + name="GestureMissing" + type="notifytip"> +Gesture [NAME] is missing from database. + </notification> + + <notification + icon="notifytip.tga" + name="UnableToLoadGesture" + type="notifytip"> +Unable to load gesture [NAME]. +Please try again. + </notification> + + <notification + icon="notifytip.tga" + name="LandmarkMissing" + type="notifytip"> +Landmark is missing from database. + </notification> + + <notification + icon="notifytip.tga" + name="UnableToLoadLandmark" + type="notifytip"> +Unable to load landmark. Please try again. + </notification> + + <notification + icon="notifytip.tga" + name="CapsKeyOn" + type="notifytip"> +Your Caps Lock key is on. +As this will affect the password you type in, you will probably want to turn it off. + </notification> + + <notification + icon="notifytip.tga" + name="NotecardMissing" + type="notifytip"> +Notecard is missing from database. + </notification> + + <notification + icon="notifytip.tga" + name="NotecardNoPermissions" + type="notifytip"> +Insufficient permissions to view notecard. + </notification> + + <notification + icon="notifytip.tga" + name="RezItemNoPermissions" + type="notifytip"> +Insufficient permissions to rez object. + </notification> + + <notification + icon="notifytip.tga" + name="UnableToLoadNotecard" + type="notifytip"> +Unable to load notecard. +Please try again. + </notification> + + <notification + icon="notifytip.tga" + name="ScriptMissing" + type="notifytip"> +Script is missing from database. + </notification> + + <notification + icon="notifytip.tga" + name="ScriptNoPermissions" + type="notifytip"> +Insufficient permissions to view script. + </notification> + + <notification + icon="notifytip.tga" + name="UnableToLoadScript" + type="notifytip"> +Unable to load script. Please try again. + </notification> + + <notification + icon="notifytip.tga" + name="IncompleteInventory" + type="notifytip"> +The complete contents you are offering are not yet locally available. Please try offering those items again in a minute. + </notification> + + <notification + icon="notifytip.tga" + name="CannotModifyProtectedCategories" + type="notifytip"> +You cannot modify protected categories. + </notification> + + <notification + icon="notifytip.tga" + name="CannotRemoveProtectedCategories" + type="notifytip"> +You cannot remove protected categories. + </notification> + + <notification + icon="notifytip.tga" + name="OfferedCard" + type="notifytip"> +You have offered a calling card to [FIRST] [LAST] + </notification> + + <notification + icon="notifytip.tga" + name="UnableToBuyWhileDownloading" + type="notifytip"> +Unable to buy while downloading object data. +Please try again. + </notification> + + <notification + icon="notifytip.tga" + name="UnableToLinkWhileDownloading" + type="notifytip"> +Unable to link while downloading object data. +Please try again. + </notification> + + <notification + icon="notifytip.tga" + name="CannotBuyObjectsFromDifferentOwners" + type="notifytip"> +Cannot buy objects from different owners at the same time. +Please select a single object. + </notification> + + <notification + icon="notifytip.tga" + name="ObjectNotForSale" + type="notifytip"> +Object does not appear to be for sale. + </notification> + + <notification + icon="notifytip.tga" + name="EnteringGodMode" + type="notifytip"> +Entering god mode, level [LEVEL] + </notification> + + <notification + icon="notifytip.tga" + name="LeavingGodMode" + type="notifytip"> +Leaving god mode, level [LEVEL] + </notification> + + <notification + icon="notifytip.tga" + name="CopyFailed" + type="notifytip"> +Copy failed because you lack copy permission + </notification> + + <notification + icon="notifytip.tga" + name="InventoryAccepted" + type="notifytip"> +[NAME] accepted your inventory offer. + </notification> + + <notification + icon="notifytip.tga" + name="InventoryDeclined" + type="notifytip"> +[NAME] declined your inventory offer. + </notification> + + <notification + icon="notifytip.tga" + name="ObjectMessage" + type="notifytip"> +[NAME]: [MESSAGE] + </notification> + + <notification + icon="notifytip.tga" + name="CallingCardAccepted" + type="notifytip"> +Your calling card was accepted. + </notification> + + <notification + icon="notifytip.tga" + name="CallingCardDeclined" + type="notifytip"> +Your calling card was declined. + </notification> + + <notification + icon="notifytip.tga" + name="TeleportToLandmark" + type="notifytip"> +Now that you have reached the mainland, you can teleport to locations like '[NAME]' by clicking on the Inventory button on the bottom right of your screen, and then select the Landmarks folder. +Double click on the landmark and click on Teleport to travel there. + </notification> + + <notification + icon="notifytip.tga" + name="TeleportToPerson" + type="notifytip"> +Now that you have reached the mainland, you can contact residents like '[NAME]' by clicking on the Inventory button on the bottom right of your screen, and then select the Calling Cards folder. +Double click on the card, click on Instant Message, and type a message. + </notification> + + <notification + icon="notifytip.tga" + name="CantSelectLandFromMultipleRegions" + type="notifytip"> +Can't select land across server boundaries. +Try selecting a smaller piece of land. + </notification> + + <notification + icon="notifytip.tga" + name="SearchWordBanned" + type="notifytip"> +Some terms in your search query were excluded due to content restrictions as clarified in the Community Standards. + </notification> + + <notification + icon="notifytip.tga" + name="NoContentToSearch" + type="notifytip"> +Please select at least one type of content to search (PG, Mature, or Adult). + </notification> + + <notification + icon="notify.tga" + name="GroupVote" + type="notify"> +[NAME] has proposed to vote on: +[MESSAGE] + <form name="form"> + <button + index="0" + name="VoteNow" + text="Vote Now"/> + <button + index="1" + name="Later" + text="Later"/> + </form> + </notification> + + <notification + icon="notify.tga" + name="SystemMessage" + type="notify"> +[MESSAGE] + </notification> + + <notification + icon="notify.tga" + name="EventNotification" + type="notify"> +Event Notification: + +[NAME] +[DATE] + <form name="form"> + <button + index="0" + name="Teleport" + text="Teleport"/> + <button + index="1" + name="Description" + text="Description"/> + <button + index="2" + name="Cancel" + text="Cancel"/> + </form> + </notification> + + <notification + icon="notify.tga" + name="TransferObjectsHighlighted" + type="notify"> +All objects on this parcel that will transfer to the purchaser of this parcel are now highlighted. + +* Trees and grasses that will transfer are not highlighted. + <form name="form"> + <button + index="0" + name="Done" + text="Done"/> + </form> + </notification> + + <notification + icon="notify.tga" + name="DeactivatedGesturesTrigger" + type="notify"> +Deactivated gestures with same trigger: +[NAMES] + </notification> + + <notification + icon="notify.tga" + name="NoQuickTime" + type="notify"> +Apple's QuickTime software does not appear to be installed on your system. +If you want to view streaming media on parcels that support it you should go to the QuickTime site (http://www.apple.com/quicktime) and install the QuickTime Player. + </notification> + + <notification + icon="notify.tga" + name="OwnedObjectsReturned" + type="notify"> +The objects you own on the selected parcel of land have been returned back to your inventory. + </notification> + + <notification + icon="notify.tga" + name="OtherObjectsReturned" + type="notify"> +The objects on the selected parcel of land that is owned by [FIRST] [LAST] have been returned to his or her inventory. + </notification> + + <notification + icon="notify.tga" + name="OtherObjectsReturned2" + type="notify"> +The objects on the selected parcel of land owned by the resident '[NAME]' have been returned to their owner. + </notification> + + <notification + icon="notify.tga" + name="GroupObjectsReturned" + type="notify"> +The objects on the selected parcel of land shared with the group [GROUPNAME] have been returned back to their owner's inventory. +Transferable deeded objects have been returned to their previous owners. +Non-transferable objects that are deeded to the group have been deleted. + </notification> + + <notification + icon="notify.tga" + name="UnOwnedObjectsReturned" + type="notify"> +The objects on the selected parcel that are NOT owned by you have been returned to their owners. + </notification> + + <notification + icon="notify.tga" + name="NotSafe" + type="notify"> +This land has damage enabled ('not safe'). +You can be hurt here. If you die, you will be teleported to your home location. + <unique/> + </notification> + + <notification + icon="notify.tga" + name="NoFly" + type="notify"> +This land has flying disabled ('no fly'). +You cannot fly here. + <unique/> + </notification> + + <notification + icon="notify.tga" + name="PushRestricted" + type="notify"> +This land is 'No Pushing'. +You cannot push others here unless you own the land. + <unique/> + </notification> + + <notification + icon="notify.tga" + name="NoVoice" + type="notify"> +This land has voice disabled. + <unique/> + </notification> + + <notification + icon="notify.tga" + name="NoBuild" + type="notify"> +This land has building disabled ('no build'). +You cannot create objects here. + <unique/> + </notification> + + <notification + icon="notify.tga" + name="ScriptsStopped" + type="notify"> +An administrator has temporarily stopped scripts in this region. + </notification> + + <notification + icon="notify.tga" + name="ScriptsNotRunning" + type="notify"> +This region is not running any scripts. + </notification> + + <notification + icon="notify.tga" + name="NoOutsideScripts" + type="notify"> +This land has outside scripts disabled ('no outside scripts'). +No scripts will run except those belonging to the land owner. + </notification> + + <notification + icon="notify.tga" + name="ClaimPublicLand" + type="notify"> +Can only claim public land in region you're in. + </notification> + + <notification + icon="notify.tga" + name="RegionTPAccessBlocked" + type="notify"> +You aren't allowed in that Region due to your maturity Rating. You may need to validate your age and/or install the latest Viewer. + +Please go to the Knowledge Base for details on accessing areas with this maturity Rating. + </notification> + + <notification + icon="notify.tga" + name="URBannedFromRegion" + type="notify"> +You are banned from the region. + </notification> + + <notification + icon="notify.tga" + name="NoTeenGridAccess" + type="notify"> +Your account cannot connect to this teen grid region. + </notification> + + <notification + icon="notify.tga" + name="NoHelpIslandTP" + type="notify"> +You cannot teleport back to Help Island. +Go to 'Help Island Public' to repeat the tutorial. + </notification> + + <notification + icon="notify.tga" + name="ImproperPaymentStatus" + type="notify"> +You do not have proper payment status to enter this region. + </notification> + + <notification + icon="notify.tga" + name="MustGetAgeRgion" + type="notify"> +You must be age-verified to enter this region. + </notification> + + <notification + icon="notify.tga" + name="MustGetAgeParcel" + type="notify"> +You must be age-verified to enter this parcel. + </notification> + + <notification + icon="notify.tga" + name="NoDestRegion" + type="notify"> +No destination region found. + </notification> + + <notification + icon="notify.tga" + name="NotAllowedInDest" + type="notify"> +You are not allowed into the destination. + </notification> + + <notification + icon="notify.tga" + name="RegionParcelBan" + type="notify"> +Cannot region cross into banned parcel. Try another way. + </notification> + + <notification + icon="notify.tga" + name="TelehubRedirect" + type="notify"> +You have been redirected to a telehub. + </notification> + + <notification + icon="notify.tga" + name="CouldntTPCloser" + type="notify"> +Could not teleport closer to destination. + </notification> + + <notification + icon="notify.tga" + name="TPCancelled" + type="notify"> + Teleport cancelled. + </notification> + + <notification + icon="notify.tga" + name="FullRegionTryAgain" + type="notify"> +The region you are attempting to enter is currently full. +Please try again in a few moments. + </notification> + + <notification + icon="notify.tga" + name="GeneralFailure" + type="notify"> +General failure. + </notification> + + <notification + icon="notify.tga" + name="RoutedWrongRegion" + type="notify"> +Routed to wrong region. Please try again. + </notification> + + <notification + icon="notify.tga" + name="NoValidAgentID" + type="notify"> +No valid agent id. + </notification> + + <notification + icon="notify.tga" + name="NoValidSession" + type="notify"> +No valid session id. + </notification> + + <notification + icon="notify.tga" + name="NoValidCircuit" + type="notify"> +No valid circuit code. + </notification> + + <notification + icon="notify.tga" + name="NoValidTimestamp" + type="notify"> +No valid timestamp. + </notification> + + <notification + icon="notify.tga" + name="NoPendingConnection" + type="notify"> +Unable to create pending connection. + </notification> + + <notification + icon="notify.tga" + name="InternalUsherError" + type="notify"> +Internal error attempting to connect agent usher. + </notification> + + <notification + icon="notify.tga" + name="NoGoodTPDestination" + type="notify"> +Unable to find a good teleport destination in this region. + </notification> + + <notification + icon="notify.tga" + name="InternalErrorRegionResolver" + type="notify"> +Internal error attempting to activate region resolver. + </notification> + + <notification + icon="notify.tga" + name="NoValidLanding" + type="notify"> +A valid landing point could not be found. + </notification> + + <notification + icon="notify.tga" + name="NoValidParcel" + type="notify"> +No valid parcel could be found. + </notification> + + <notification + icon="notify.tga" + name="ObjectGiveItem" + type="notify"> +An object named [OBJECTFROMNAME] owned by [FIRST] [LAST] has given you a [OBJECTTYPE] named [OBJECTNAME]. + <form name="form"> + <button + index="0" + name="Keep" + text="Keep"/> + <button + index="1" + name="Discard" + text="Discard"/> + <button + index="2" + name="Mute" + text="Mute"/> + </form> + </notification> + + <notification + icon="notify.tga" + name="ObjectGiveItemUnknownUser" + type="notify"> +An object named [OBJECTFROMNAME] owned by (an unknown user) has given you a [OBJECTTYPE] named [OBJECTNAME]. + <form name="form"> + <button + index="0" + name="Keep" + text="Keep"/> + <button + index="1" + name="Discard" + text="Discard"/> + <button + index="2" + name="Mute" + text="Mute"/> + </form> + </notification> + + <notification + icon="notify.tga" + name="UserGiveItem" + type="notify"> +[NAME] has given you a [OBJECTTYPE] named '[OBJECTNAME]'. + <form name="form"> + <button + index="0" + name="Keep" + text="Keep"/> + <button + index="1" + name="Discard" + text="Discard"/> + <button + index="2" + name="Mute" + text="Mute"/> + </form> + </notification> + + <notification + icon="notify.tga" + name="GodMessage" + type="notify"> +[NAME] +[MESSAGE] + </notification> + + <notification + icon="notify.tga" + name="JoinGroup" + type="notify"> +[MESSAGE] + <form name="form"> + <button + index="0" + name="Join" + text="Join"/> + <button + index="1" + name="Decline" + text="Decline"/> + <button + index="2" + name="Info" + text="Info"/> + </form> + </notification> + + <notification + icon="notify.tga" + name="TeleportOffered" + type="notify"> +[NAME] has offered to teleport you to his or her location: + +[MESSAGE] + <form name="form"> + <button + index="0" + name="Teleport" + text="Teleport"/> + <button + index="1" + name="Cancel" + text="Cancel"/> + </form> + </notification> + + <notification + icon="notify.tga" + name="GotoURL" + type="notify"> +[MESSAGE] +[URL] + <form name="form"> + <button + index="0" + name="Later" + text="Later"/> + <button + index="1" + name="GoNow..." + text="Go Now..."/> + </form> + </notification> + + <notification + icon="notify.tga" + name="OfferFriendship" + type="notify"> +[NAME] is offering friendship. + +[MESSAGE] + +(By default, you will be able to see each other's online status.) + <form name="form"> + <button + index="0" + name="Accept" + text="Accept"/> + <button + index="1" + name="Decline" + text="Decline"/> + </form> + </notification> + + <notification + icon="notify.tga" + name="OfferFriendshipNoMessage" + type="notify"> +[NAME] is offering friendship. + +(By default, you will be able to see each other's online status.) + <form name="form"> + <button + index="0" + name="Accept" + text="Accept"/> + <button + index="1" + name="Decline" + text="Decline"/> + </form> + </notification> + + <notification + icon="notify.tga" + name="FriendshipAccepted" + type="notify"> +[NAME] accepted your friendship offer. + </notification> + + <notification + icon="notify.tga" + name="FriendshipDeclined" + type="notify"> +[NAME] declined your friendship offer. + </notification> + + <notification + icon="notify.tga" + name="OfferCallingCard" + type="notify"> +[FIRST] [LAST] is offering their calling card. +This will add a bookmark in your inventory so you can quickly IM this resident. + <form name="form"> + <button + index="0" + name="Accept" + text="Accept"/> + <button + index="1" + name="Decline" + text="Decline"/> + </form> + </notification> + + <notification + icon="notify.tga" + name="RegionRestartMinutes" + priority="high" + sound="UISndAlert" + type="notify"> +Region is restarting in [MINUTES] minutes. +If you remain in this region you will be logged out. + </notification> + + <notification + icon="notify.tga" + name="RegionRestartSeconds" + priority="high" + sound="UISndAlert" + type="notify"> +Region is restarting in [SECONDS] seconds. +If you remain in this region you will be logged out. + </notification> + + <notification + icon="notify.tga" + name="LoadWebPage" + type="notify"> +Load web page [URL]? + +[MESSAGE] + +From object: [OBJECTNAME], owner: [NAME]? + <form name="form"> + <button + index="0" + name="Gotopage" + text="Go to page"/> + <button + index="1" + name="Cancel" + text="Cancel"/> + </form> + </notification> + + <notification + icon="notify.tga" + name="FailedToFindWearableUnnamed" + type="notify"> +Failed to find [TYPE] in database. + </notification> + + <notification + icon="notify.tga" + name="FailedToFindWearable" + type="notify"> +Failed to find [TYPE] named [DESC] in database. + </notification> + + <notification + icon="notify.tga" + name="InvalidWearable" + type="notify"> + The item you are trying to wear uses a feature that your viewer can't read. Please upgrade your version of Second Life to wear this item. + </notification> + + <notification + icon="notify.tga" + name="ScriptQuestion" + type="notify"> +'[OBJECTNAME]', an object owned by '[NAME]', would like to: + +[QUESTIONS] +Is this OK? + <form name="form"> + <button + index="0" + name="Yes" + text="Yes"/> + <button + index="1" + name="No" + text="No"/> + <button + index="2" + name="Mute" + text="Mute"/> + </form> + </notification> + + <notification + icon="notify.tga" + name="ScriptQuestionCaution" + priority="high" + type="notify"> +'[OBJECTNAME]', an object owned by '[NAME]', would like to: + +[QUESTIONS] +If you do not trust this object and its creator, you should deny the request. For additional information, click the Details button. + +Grant this request? + <form name="form"> + <button + index="0" + name="Grant" + text="Grant"/> + <button + default="true" + index="1" + name="Deny" + text="Deny"/> + <button + index="2" + name="Details" + text="Details..."/> + </form> + </notification> + + <notification + icon="notify.tga" + name="ScriptDialog" + type="notify"> +[FIRST] [LAST]'s '[TITLE]' +[MESSAGE] + <form name="form"> + <button + index="-1" + name="Ignore" + text="Ignore"/> + </form> + </notification> + + <notification + icon="notify.tga" + name="ScriptDialogGroup" + type="notify"> +[GROUPNAME]'s '[TITLE]' +[MESSAGE] + <form name="form"> + <button + index="-1" + name="Ignore" + text="Ignore"/> + </form> + </notification> + + <notification + icon="notify.tga" + name="FirstBalanceIncrease" + type="notify"> +You just received L$[AMOUNT]. +Objects and other users may give you L$. +Your balance is shown in the upper-right corner of the screen. + </notification> + + <notification + icon="notify.tga" + name="FirstBalanceDecrease" + type="notify"> +You just paid L$[AMOUNT]. +Your balance is shown in the upper-right corner of the screen. + </notification> + + <notification + icon="notify.tga" + name="FirstSit" + type="notify"> +You are sitting. +Use the arrow keys (or AWSD) to change the view. +Click the 'Stand Up' button to get up. + </notification> + + <notification + icon="notify.tga" + name="FirstMap" + type="notify"> +Click and drag to scroll the map. +Double-click to teleport. +Use the controls on the right to find things and display different backgrounds. + </notification> + + <notification + icon="notify.tga" + name="FirstBuild" + type="notify"> +You can build new objects in some areas of [SECOND_LIFE]. +Use the tools in the upper left to build, and try holding down Ctrl or Alt to rapidly switch tools. +Press Esc to stop building. + </notification> + + <notification + icon="notify.tga" + name="FirstLeftClickNoHit" + type="notify"> +Left-clicking interacts with special objects. +If the mouse pointer changes to a hand, you can interact with the object. +Right-click always shows a menu of things you can do. + </notification> + + <notification + icon="notify.tga" + name="FirstTeleport" + type="notify"> +This region doesn't allow point-to-point teleports, so you've been transported to the nearest telehub. +Your destination is marked with a tall beacon. +Follow the red arrow to the beacon, or click the arrow to dismiss the beacon. + </notification> + + <notification + icon="notify.tga" + name="FirstOverrideKeys" + type="notify"> +Your movement keys are now being handled by an object. +Try the arrow keys or AWSD to see what they do. +Some objects (like guns) require you to go into mouselook to use them. +Press 'M' to do this. + </notification> + + <notification + icon="notify.tga" + name="FirstAppearance" + type="notify"> +You are editing your appearance. +To rotate and zoom view, use the arrow keys. +When you are finished, press 'Save All' to save your look and exit. +You can edit your appearance as often as you like. + </notification> + + <notification + icon="notify.tga" + name="FirstInventory" + type="notify"> +This is your inventory, which contains objects, notecards, clothing, and other things you own. +* To wear an object or outfit folder, drag it onto yourself. +* To bring an object into the world, drag it onto the ground. +* To read a notecard, double-click it. + </notification> + + <notification + icon="notify.tga" + name="FirstSandbox" + type="notify"> +This is a sandbox region. +Objects you build here may be deleted after you leave the area, Sandboxes clean on a regular basis, please refer to the information at the top of the screen next to the region name. + +Sandbox regions are uncommon, and are marked with signs. + </notification> + + <notification + icon="notify.tga" + name="FirstFlexible" + type="notify"> +This object is flexible. +Flexible objects may not be physical and must be phantom until the flexible checkbox is unchecked. + </notification> + + <notification + icon="notify.tga" + name="FirstDebugMenus" + type="notify"> +You have enabled the Advanced menu. +This menu contains features useful for developers debugging Second Life. +To toggle this menu on Windows press Ctrl-Alt-D. On Mac press Cmd-Opt-Shift-D. + </notification> + + <notification + icon="notify.tga" + name="FirstSculptedPrim" + type="notify"> +You are editing a sculpted prim. +Sculpted prims require a special texture to specify their shape. +You can find example sculpted textures in the inventory library. + </notification> + + <notification + icon="notify.tga" + name="FirstMedia" + type="notify"> +You have begun playing media. Media can set to play automatically in the preferences window under Audio / Video. Note that this can be a security risk for media sites you do not trust. + </notification> + + <notification + icon="notifytip.tga" + name="MaxListSelectMessage" + type="notifytip"> +You may only select up to [MAX_SELECT] items from this list. + </notification> + + <notification + icon="notify.tga" + name="VoiceInviteP2P" + type="notify"> +[NAME] is inviting you to a Voice Chat call. +Click Accept to join the call or Decline to decline the invitation. Click Mute to mute this caller. + <unique> + <context key="NAME"/> + </unique> + <form name="form"> + <button + index="0" + name="Accept" + text="Accept"/> + <button + index="1" + name="Decline" + text="Decline"/> + <button + index="2" + name="Mute" + text="Mute"/> + </form> + </notification> + + <notification + icon="notify.tga" + name="AutoUnmuteByIM" + type="notify"> +[FIRST] [LAST] was sent an instant message and has been automatically unmuted. + </notification> + + <notification + icon="notify.tga" + name="AutoUnmuteByMoney" + type="notify"> +[FIRST] [LAST] was given money and has been automatically unmuted. + </notification> + + <notification + icon="notify.tga" + name="AutoUnmuteByInventory" + type="notify"> +[FIRST] [LAST] was offered inventory and has been automatically unmuted. + </notification> + + <notification + icon="notify.tga" + name="VoiceInviteGroup" + type="notify"> +[NAME] has joined a Voice Chat call with the group [GROUP]. +Click Accept to join the call or Decline to decline the invitation. Click Mute to mute this caller. + <unique> + <context key="NAME"/> + <context key="GROUP"/> + </unique> + <form name="form"> + <button + index="0" + name="Accept" + text="Accept"/> + <button + index="1" + name="Decline" + text="Decline"/> + <button + index="2" + name="Mute" + text="Mute"/> + </form> + </notification> + + <notification + icon="notify.tga" + name="VoiceInviteAdHoc" + type="notify"> +[NAME] has joined a Voice Chat call with a conference chat... +Click Accept to join the call or Decline to decline the invitation. Click Mute to mute this user. + <unique> + <context key="NAME"/> + </unique> + <form name="form"> + <button + index="0" + name="Accept" + text="Accept"/> + <button + index="1" + name="Decline" + text="Decline"/> + <button + index="2" + name="Mute" + text="Mute"/> + </form> + </notification> + + <notification + icon="notify.tga" + name="InviteAdHoc" + type="notify"> +[NAME] is inviting you to a conference chat. +Click Accept to join the chat or Decline to decline the invitation. Click Mute to mute this user. + <unique> + <context key="NAME"/> + </unique> + <form name="form"> + <button + index="0" + name="Accept" + text="Accept"/> + <button + index="1" + name="Decline" + text="Decline"/> + <button + index="2" + name="Mute" + text="Mute"/> + </form> + </notification> + + <notification + icon="notifytip.tga" + name="VoiceChannelFull" + type="notifytip"> +The voice call you are trying to join, [VOICE_CHANNEL_NAME], has reached maximum capacity. Please try again later. + <unique> + <context key="VOICE_CHANNEL_NAME"/> + </unique> + </notification> + + <notification + icon="notifytip.tga" + name="ProximalVoiceChannelFull" + type="notifytip"> +We're sorry. This area has reached maximum capacity for voice conversations. Please try to use voice in another area. + <unique/> + </notification> + + <notification + icon="notifytip.tga" + name="VoiceChannelDisconnected" + type="notifytip"> +You have been disconnected from [VOICE_CHANNEL_NAME]. You will now be reconnected to spatial voice chat. + <unique> + <context key="VOICE_CHANNEL_NAME"/> + </unique> + </notification> + + <notification + icon="notifytip.tga" + name="VoiceChannelDisconnectedP2P" + type="notifytip"> +[VOICE_CHANNEL_NAME] has ended the call. You will now be reconnected to spatial voice chat. + <unique> + <context key="VOICE_CHANNEL_NAME"/> + </unique> + </notification> + + <notification + icon="notifytip.tga" + name="P2PCallDeclined" + type="notifytip"> +[VOICE_CHANNEL_NAME] has declined your call. You will now be reconnected to spatial voice chat. + <unique> + <context key="VOICE_CHANNEL_NAME"/> + </unique> + </notification> + + <notification + icon="notifytip.tga" + name="P2PCallNoAnswer" + type="notifytip"> +[VOICE_CHANNEL_NAME] is not available to take your call. You will now be reconnected to spatial voice chat. + <unique> + <context key="VOICE_CHANNEL_NAME"/> + </unique> + </notification> + + <notification + icon="notifytip.tga" + name="VoiceChannelJoinFailed" + type="notifytip"> +Failed to connect to [VOICE_CHANNEL_NAME], please try again later. You will now be reconnected to spatial voice chat. + <unique> + <context key="VOICE_CHANNEL_NAME"/> + </unique> + </notification> + + <notification + duration="10" + icon="notifytip.tga" + name="VoiceLoginRetry" + type="notifytip"> +We are creating a voice channel for you. This may take up to one minute. + <unique/> + </notification> + + <notification + icon="notifytip.tga" + name="Cannot enter parcel: not a group member" + type="notifytip"> +Cannot enter parcel, you are not a member of the appropriate group. + </notification> + + <notification + icon="notifytip.tga" + name="Cannot enter parcel: banned" + type="notifytip"> +Cannot enter parcel, you have been banned. + </notification> + + <notification + icon="notifytip.tga" + name="Cannot enter parcel: not on access list" + type="notifytip"> +Cannot enter parcel, you are not on the access list. + </notification> + + <notification + icon="notifytip.tga" + name="VoiceNotAllowed" + type="notifytip"> +You do not have permission to connect to voice chat for [VOICE_CHANNEL_NAME]. + <unique> + <context key="VOICE_CHANNEL_NAME"/> + </unique> + </notification> + + <notification + icon="notifytip.tga" + name="VoiceCallGenericError" + type="notifytip"> +An error has occurred while trying to connect to voice chat for [VOICE_CHANNEL_NAME]. Please try again later. + <unique> + <context key="VOICE_CHANNEL_NAME"/> + </unique> + </notification> + + <notification + duration="10" + icon="notifytip.tga" + name="ServerVersionChanged" + priority="high" + type="notifytip"> +The region you have entered is running a different simulator version. Click this message for details. + </notification> + + <notification + icon="notifytip.tga" + name="UnableToOpenCommandURL" + priority="high" + type="notifytip"> +The URL you clicked cannot be opened from this web browser. + </notification> + + <global name="UnsupportedCPU"> +- Your CPU speed does not meet the minimum requirements. + </global> + + <global name="UnsupportedGLRequirements"> +You do not appear to have the proper hardware requirements for Second Life. Second Life requires an OpenGL graphics card that has multitexture support. If this is the case, you may want to make sure that you have the latest drivers for your graphics card, and service packs and patches for your operating system. + +If you continue to have problems, please visit: http://www.secondlife.com/support + </global> + + <global name="UnsupportedCPUAmount"> +796 + </global> + + <global name="UnsupportedRAMAmount"> +510 + </global> + + <global name="UnsupportedGPU"> +- Your graphics card does not meet the minimum requirements. + </global> + + <global name="UnsupportedRAM"> +- Your system memory does not meet the minimum requirements. + </global> + + <global name="PermYes"> +Yes + </global> + + <global name="PermNo"> +No + </global> +</notifications> + diff --git a/indra/newview/skins/default/xui/en/panel_audio_device.xml b/indra/newview/skins/default/xui/en/panel_audio_device.xml new file mode 100644 index 0000000000000000000000000000000000000000..5f495ef8cede254f83c037eac7f7edce1092ba99 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_audio_device.xml @@ -0,0 +1,153 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + height="240" + layout="topleft" + left="8" + name="device_settings" + top="240" + width="404"> + <panel.string + name="default_text"> + Default + </panel.string> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="6" + name="Audio Devices" + width="200"> + Audio Devices + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="20" + name="Input device (microphone):" + top="26" + width="200"> + Input device (microphone): + </text> + <combo_box + height="18" + layout="topleft" + left_delta="0" + max_chars="128" + name="voice_input_device" + top_pad="2" + width="225" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_delta="0" + name="Output device (speakers):" + top_pad="9" + width="200"> + Output device (speakers): + </text> + <combo_box + height="18" + layout="topleft" + left_delta="0" + max_chars="128" + name="voice_output_device" + top_pad="2" + width="225" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="6" + name="Input level:" + top="121" + width="200"> + Input Level + </text> + <text_editor + type="string" + length="1" + top="135" + bg_readonly_color="0 0 0 0" + enabled="false" + height="60" + hide_border="true" + hide_scrollbar="true" + layout="topleft" + left_delta="10" + max_length="65535" + name="voice_intro_text1" + tab_stop="false" + width="380" + word_wrap="true"> + Adjust the slider to control how loud you sound to other Residents. To test the input level, simply speak into your microphone. + </text_editor> + <slider_bar + follows="left|top" + height="17" + increment="0.05" + initial_value="1.0" + layout="topleft" + left_delta="5" + max_val="2" + name="mic_volume_slider" + tool_tip="Change the volume using this slider" + top="202" + width="90" /> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left_pad="5" + name="wait_text" + top_delta="1" + width="200"> + Please wait + </text> + <locate + height="20" + layout="topleft" + left_delta="0" + name="bar0" + top_delta="5" + width="20" /> + <locate + height="20" + layout="topleft" + left_pad="2" + name="bar1" + top_delta="0" + width="20" /> + <locate + height="20" + layout="topleft" + left_pad="2" + name="bar2" + top_delta="0" + width="20" /> + <locate + height="20" + layout="topleft" + left_pad="2" + name="bar3" + top_delta="0" + width="20" /> + <locate + height="20" + layout="topleft" + left_pad="2" + name="bar4" + top_delta="0" + width="20" /> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml new file mode 100644 index 0000000000000000000000000000000000000000..bf3f70f54bd1c6bf0b4bb7cfeff34b5eef427758 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml @@ -0,0 +1,65 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- All our XML is utf-8 encoded. --> + +<panel + name="avatar_list_item" + title="avatar_list_item" + visible="true" + width="314" + height="30" + left="0" + top="100" + follows="bottom|right|left" + min_width="150" + max_height="30" + + background_opaque="false" + background_visible="true" + bevel_style="in" + bg_alpha_color="0.3 0.3 0.3 1.0"> + + <avatar_icon + bottom="5" left="5" width="20" height="20" follows="top|left" + color="1 1 1 1" enabled="true" image_name="smile.png" + mouse_opaque="true" name="avatar_icon" + /> + + <text + bottom="4" left="35" width="160" height="20" follows="right|left" + font="SansSerifBigBold" text_color="white" + mouse_opaque="true" name="user_name" > + Boris Linden + </text> + + <text + bottom="3" left="190" width="40" height="20" follows="right" + font="SansSerif" text_color="0.5 0.5 0.5 1.0" + mouse_opaque="true" name="user_status" > + Away + </text> + + <icon + bottom="5" left="230" width="20" height="20" follows="right" + color="1 1 1 1" enabled="true" image_name="speaking_indicator.tga" + mouse_opaque="true" name="locator" + /> + + <button + bottom="5" left="260" width="20" height="20" follows="right" + name="info_btn" label="" + image_unselected="info_btn.tga" image_disabled="info_btn.tga" + image_selected="info_btn_active.tga" image_hover_selected="info_btn_active.tga" + image_disabled_selected="info_btn.tga" font="SansSerifBigBold" + /> + + <button + bottom="5" left="290" width="20" height="20" follows="right" + name="profile_btn" label="" + image_unselected="profile_chevron_btn.tga" image_disabled="profile_chevron_btn.tga" + image_selected="profile_chevron_btn_active.tga" image_hover_selected="profile_chevron_btn_active.tga" + image_disabled_selected="profile_chevron_btn.tga" font="SansSerifBigBold" + /> + + + +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_bars.xml b/indra/newview/skins/default/xui/en/panel_bars.xml new file mode 100644 index 0000000000000000000000000000000000000000..9c06329eaff14fe0e37a504a42d6218562e0bb1c --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_bars.xml @@ -0,0 +1,69 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + follows="left|right|top|bottom" + height="768" + layout="topleft" + left="0" + mouse_opaque="false" + name="bottom_panel" + width="1024"> + <panel + follows="left|right|top|bottom" + height="728" + layout="topleft" + left="0" + mouse_opaque="false" + name="status" + top="0" + width="1024" /> + <layout_stack + border_size="0" + follows="left|right|bottom|top" + height="768" + layout="topleft" + left_delta="0" + mouse_opaque="false" + name="bar_stack" + top_delta="0" + use_bounding_rect="true" + width="1024"> + <layout_panel + follows="left|right|top|bottom" + height="768" + layout="topleft" + left="0" + mouse_opaque="false" + name="spacer" + top="0" + user_resize="false" + width="1024" /> + <layout_panel + auto_resize="false" + height="200" + layout="topleft" + min_height="200" + mouse_opaque="false" + name="overlay" + use_bounding_rect="true" + user_resize="false" + width="1024" /> + <layout_panel + auto_resize="false" + filename="panel_toolbar.xml" + layout="topleft" + min_height="28" + name="toolbar" + use_bounding_rect="true" + user_resize="false" + width="1024" /> + </layout_stack> + <panel + follows="left|right|top|bottom" + height="728" + layout="topleft" + left_delta="0" + mouse_opaque="false" + name="hud" + top_delta="-10" + width="1024" /> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray.xml b/indra/newview/skins/default/xui/en/panel_bottomtray.xml new file mode 100644 index 0000000000000000000000000000000000000000..303487f21ba3631087a347430e65290bc1513773 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_bottomtray.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel follows="left|bottom|right" name="bottom_tray" bg_opaque_color="0.25 0.25 0.25 1.0" + bg_alpha_color="0.25 0.25 0.25 1.0" background_visible="true" auto_resize="true" + left="0" bottom="0" width="1000" height="28" border_visible="false" has_border="false"> + <layout_stack name="toolbar_stack" follows="left|right|bottom|top" + bottom="0" left="0" width="1000" height="25" orientation="horizontal" border_size="0" auto_resize="false"> + + <icon image_name="spacer24.tga" left="0" width="5" height="10" bottom="0" follows="left|right" auto_resize="false" color="0 0 0 0"/> + <panel follows="left|right" auto_resize="true" width="250" height="28" min_height="28"> + <line_editor name="chat_box" follows="left|right" + width="250" height="20" left="0" bottom="6" + bevel_style="in" border_style="line" border_thickness="1"/> + </panel> + <icon image_name="spacer24.tga" left="0" width="5" height="10" bottom="0" follows="left|right" auto_resize="false" color="0 0 0 0"/> + <view_border bevel_style="in" bottom="0" height="28" min_height="28" width="1" follows="left|right" left="270" mouse_opaque="false" auto_resize="false"/> + <icon image_name="spacer24.tga" left="0" width="5" height="10" bottom="0" follows="left|right" auto_resize="false" color="0 0 0 0"/> + <panel follows="left|right" auto_resize="false" width="100" height="28" min_height="28"> + <chiclet_talk name="talk" left="0" bottom="6" width="100" height="20" follows="left|right" auto_resize="false"/> + </panel> + <icon name="DUMMY" image_name="spacer24.tga" left="0" width="150" height="10" bottom="0" follows="left|right" auto_resize="false" color="0 0 0 0"/> + <panel follows="left|right" auto_resize="true" width="250" height="28" min_height="28"> + <chiclet_panel name="chiclet_list" follows="left|right" + width="250" height="25" left="0" bottom="2"/> + </panel> + <icon image_name="spacer24.tga" left="0" width="5" height="10" bottom="0" follows="left|right" auto_resize="false" color="0 0 0 0"/> + <panel follows="left|right" auto_resize="false" width="40" height="28" min_height="28"> + <chiclet_notification name="im_well" follows="left|right" auto_resize="false" + left="0" bottom="4" width="40" height="25" + image_unselected="im_notifications.tga" image_selected="im_notifications.tga"/> + </panel> + <icon image_name="spacer24.tga" left="0" width="10" height="10" bottom="0" follows="left|right" auto_resize="false" color="0 0 0 0"/> + <view_border bevel_style="in" bottom="0" height="30" width="1" follows="left|right" left="270" mouse_opaque="false" auto_resize="false"/> + <icon image_name="spacer24.tga" left="0" width="10" height="10" bottom="0" follows="left|right" auto_resize="false" color="0 0 0 0"/> + <panel follows="left|right" auto_resize="false" width="48" height="28" min_height="28"> + <chiclet_notification name="sys_well" follows="left|right" auto_resize="false" + left="0" bottom="5" width="48" height="25" + image_unselected="sys_notifications.tga" image_selected="sys_notifications.tga"/> + </panel> + <icon image_name="spacer24.tga" left="0" width="5" height="10" bottom="0" follows="left|right" auto_resize="false" color="0 0 0 0"/> + </layout_stack> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_classified.xml b/indra/newview/skins/default/xui/en/panel_classified.xml new file mode 100644 index 0000000000000000000000000000000000000000..f2cec86b38c3627241a1c55b17d5d95722121cdf --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_classified.xml @@ -0,0 +1,135 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + follows="bottom|left" + height="490" + label="Classified" + layout="topleft" + left="330" + name="Classified" + top="490" + width="450"> + <panel.string + name="ad_placed_paid"> + Ad placed: [DATE], Paid L$[AMT] for listing. + </panel.string> + <panel.string + name="update_txt"> + Update + </panel.string> + <panel.string + name="publish_txt"> + Publish... + </panel.string> + <panel.string + name="dateStr"> + [mthnum,datetime,slt]/[day,datetime,slt]/[year,datetime,slt] + </panel.string> + <texture_picker + follows="left|top" + height="300" + layout="topleft" + left="20" + name="snapshot_ctrl" + top="15" + width="400" /> + <line_editor + enabled="false" + follows="left|top" + font="SansSerif" + height="20" + layout="topleft" + left_delta="0" + name="given_name_editor" + tool_tip="Name must begin with a letter or number, not punctuation." + top_delta="288" + width="400" /> + <text_editor + enabled="false" + follows="left|top" + height="90" + layout="topleft" + left="20" + max_length="1023" + name="desc_editor" + width="400" + word_wrap="true" /> + <line_editor + enabled="false" + follows="left|top" + font="SansSerif" + height="20" + layout="topleft" + left="20" + name="location_editor" + tool_tip="Set the location for this classified to your current position." + width="400" /> + <button + follows="left|top" + height="20" + label="Set" + layout="topleft" + left_delta="360" + name="set_location_btn" + top_delta="0" + width="60" /> + <button + follows="left|top" + height="20" + label="Teleport" + layout="topleft" + left="20" + name="classified_teleport_btn" + top="449" + width="100" /> + <button + follows="left|top" + height="20" + label="Show on Map" + layout="topleft" + left_pad="5" + name="classified_map_btn" + top_delta="0" + width="100" /> + <button + follows="left|top" + height="20" + label="Profile" + layout="topleft" + left_pad="5" + name="classified_profile_btn" + top_delta="0" + width="100" /> + <combo_box + height="20" + layout="topleft" + left="30" + name="classified_mature_check" + top="48" + width="130"> + <combo_box.item + label="- Select Mature -" + value="Select" /> + <combo_box.item + label="Mature Content" + value="Mature" /> + <combo_box.item + label="PG Content" + value="Not Mature" /> + </combo_box> + <combo_box + bottom="45" + height="18" + layout="topleft" + left="20" + name="classified_category_combo" + right="150" /> + <button + follows="left|top" + height="20" + label="Update" + layout="topleft" + left="30" + name="classified_update_btn" + top="70" + width="70" /> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_edit_pick.xml b/indra/newview/skins/default/xui/en/panel_edit_pick.xml new file mode 100644 index 0000000000000000000000000000000000000000..967cf2f539d5987b1a7f38a6976fd49cfeff42bf --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_edit_pick.xml @@ -0,0 +1,147 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + background_visible="true" + bevel_style="in" + bg_alpha_color="0.2 0.2 0.2 1" + height="640" + label="Edit Pick" + layout="topleft" + left="0" + name="panel_edit_pick" + top="0" + width="355"> + <text + type="string" + length="1" + follows="top" + font="SansSerifHugeBold" + height="15" + layout="topleft" + left="10" + name="title" + text_color="white" + top="0" + width="150"> + Edit Pick + </text> + <panel + background_visible="true" + bg_alpha_color="0.5 0.5 0.5 1" + follows="left|right|top|bottom" + height="570" + layout="topleft" + left="10" + right="-10" + top="30"> + <texture_picker + follows="left|top|right" + height="150" + layout="topleft" + left="10" + name="pick_snapshot" + right="-10" + top="10" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="10" + name="Name:"> + Name: + </text> + <line_editor + follows="left|top|right" + font="SansSerif" + height="20" + layout="topleft" + left="10" + name="pick_name" + right="-10" + width="290" /> + <text + type="string" + length="1" + follows="left|top" + height="30" + layout="topleft" + left="10" + name="description_label" + v_pad="15" + valign="center"> + Description: + </text> + <text_editor + follows="left|top|right" + height="100" + layout="topleft" + left="10" + max_length="1023" + name="pick_desc" + right="-10" + word_wrap="true" /> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left="10" + name="description_label" + v_pad="15" + valign="bottom"> + Location: + </text> + <text + type="string" + length="1" + follows="left|top" + height="50" + layout="topleft" + left="10" + name="pick_location" + right="-10" + v_pad="10" + valign="center" + word_wrap="true"> + loading... + </text> + <button + follows="left|top" + height="20" + label="Set to Current Location" + layout="topleft" + left="10" + name="set_to_curr_location_btn" + width="200" /> + </panel> + <panel + follows="right|bottom" + height="25" + label="bottom_panel" + layout="topleft" + left="5" + name="bottom_panel" + top="605" + width="345"> + <button + follows="bottom|left" + height="20" + label="Save Changes" + layout="topleft" + name="save_changes_btn" + right="-120" + top="5" + width="130" /> + <button + follows="bottom|left" + height="20" + label="Cancel" + layout="topleft" + name="cancel_btn" + right="-10" + top="5" + width="90" /> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_edit_profile.xml b/indra/newview/skins/default/xui/en/panel_edit_profile.xml new file mode 100644 index 0000000000000000000000000000000000000000..e787d03ecaaab3cc60bfdbb478d8c7bc863d11cc --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_edit_profile.xml @@ -0,0 +1,243 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + class="edit_profile_panel" + background_visible="true" + bevel_style="in" + bg_alpha_color="0.3 0.3 0.3 1" + follows="left|top|right|bottom" + height="690" + label="Profile Edit" + layout="topleft" + left="10" + mouse_opaque="true" + name="edit_profile_panel" + top="10" + width="355"> + <text + top="0" + left="9" + height="20" + follows="left|top" + font="SansSerifHugeBold" + layout="topleft" + name="title_text" + text_color="white" + width="350"> + Edit Profile + </text> + <panel + background_visible="true" + bg_alpha_color="0.6 0.6 0.6 1" + follows="left|top|right|bottom" + height="620" + layout="topleft" + left="9" + name="data_panel" + top_pad="10" + width="337"> + <text + top_pad="5" + left="9" + height="20" + follows="left|top" + font="SansSerifBigBold" + layout="topleft" + name="name_text" + text_color="white" + width="350"> + [FIRST] [LAST] + </text> + <panel + follows="left|top" + height="120" + layout="topleft" + left="9" + name="lifes_images_panel" + top_pad="10" + width="250"> + <panel + height="120" + layout="topleft" + left="0" + name="second_life_image_panel" + top="0" + width="125"> + <text + type="string" + length="1" + follows="left|top|right|bottom" + font="SansSerifBold" + height="20" + layout="topleft" + left="0" + name="first_life_photo_title_text" + text_color="white" + top="0" + width="125"> + Second Life photo: + </text> + <texture_picker + allow_no_texture="true" + default_image_name="None" + follows="top|left" + height="105" + layout="topleft" + left="0" + name="2nd_life_pic" + top_pad="5" + width="105" /> + </panel> + <panel + height="120" + layout="topleft" + left_pad="0" + name="first_life_image_panel" + top="0" + width="125"> + <text + type="string" + length="1" + follows="left|top|right|bottom" + font="SansSerifBold" + height="20" + layout="topleft" + left="0" + name="second_life_photo_title_text" + text_color="white" + top="0" + width="125"> + First Life photo: + </text> + <texture_picker + allow_no_texture="true" + default_image_name="None" + follows="top|left" + height="105" + layout="topleft" + left="0" + name="1st_life_pic" + top_pad="5" + width="105" /> + </panel> + </panel> + <text + type="string" + length="1" + follows="left|top" + font="SansSerifBold" + height="15" + layout="topleft" + left="9" + name="title_sl_descr_text" + text_color="white" + top_pad="10" + width="290"> + Second Life description: + </text> + <text_editor + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="45" + layout="topleft" + left="9" + name="sl_description_edit" + text_color="0.1 0.1 0.1 1" + width="290" + word_wrap="true"> + </text_editor> + <text + type="string" + length="1" + follows="left|top" + font="SansSerifBold" + height="15" + layout="topleft" + left="9" + name="title_fl_descr_text" + text_color="white" + top_pad="10" + width="290"> + First Life description: + </text> + <text_editor + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + height="45" + layout="topleft" + left="9" + name="fl_description_edit" + text_color="0.1 0.1 0.1 1" + width="290" + word_wrap="true"> + </text_editor> + <text + type="string" + length="1" + follows="left|top" + font="SansSerifBold" + height="15" + layout="topleft" + left="9" + name="title_homepage_text" + text_color="white" + top_pad="10" + width="100"> + Homepage: + </text> + <line_editor + type="string" + length="1" + follows="left|top|right" + font="SansSerif" + font.style="UNDERLINE" + height="15" + layout="topleft" + left="9" + name="homepage_edit" + text_color="0.2 0.2 1 1" + width="290"> + TODO + </line_editor> + <check_box + follows="left|top" + label="Show me in Search results" + layout="topleft" + left="9" + name="show_in_search_checkbox" + height="16" + top_pad="10" + width="250"/> + </panel> + <panel + follows="bottom|right" + height="30" + left="96" + name="profile_me_buttons_panel" + top_pad="8" + width="250"> + <button + follows="bottom|right" + font="SansSerifSmallBold" + height="25" + label="Save Changes" + layout="topleft" + left="0" + name="save_btn" + top="0" + width="130" /> + <button + follows="bottom|right" + font="SansSerifSmallBold" + height="25" + label="Cancel" + layout="topleft" + right="-1" + name="cancel_btn" + top_delta="0" + width="105" /> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_friends.xml b/indra/newview/skins/default/xui/en/panel_friends.xml new file mode 100644 index 0000000000000000000000000000000000000000..a151eed20f87aec840011b7f8d93f2bf6038b51b --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_friends.xml @@ -0,0 +1,124 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + border="true" + follows="all" + height="347" + layout="topleft" + name="friends" + width="100"> + <panel.string + name="Multiple"> + Multiple friends... + </panel.string> + <scroll_list + bottom="337" + column_padding="0" + draw_heading="true" + follows="left|top|bottom|right" + layout="topleft" + left="10" + multi_select="true" + name="friend_list" + right="-100" + search_column="1" + tool_tip="Hold shift or control while clicking to select multiple friends" + top="10"> + <scroll_list.columns + image="ff_online_status_button.tga" + name="icon_online_status" + tool_tip="Online status" + width="20" /> + <scroll_list.columns + dynamicwidth="true" + label="Name" + name="friend_name" + tool_tip="Name" /> + <scroll_list.columns + image="ff_visible_online_button.tga" + name="icon_visible_online" + tool_tip="Friend can see when you're online" + width="20" /> + <scroll_list.columns + image="ff_visible_map_button.tga" + name="icon_visible_map" + tool_tip="Friend can locate you on the map" + width="20" /> + <scroll_list.columns + image="ff_edit_mine_button.tga" + name="icon_edit_mine" + tool_tip="Friend can edit, delete or take objects" + width="20" /> + <scroll_list.columns + image="ff_edit_theirs_button.tga" + name="icon_edit_theirs" + tool_tip="You can edit this friend's objects" + width="20" /> + <scroll_list.columns + name="friend_last_update_generation" + width="0" /> + </scroll_list> + <locate + bottom="7" + layout="topleft" + left="-90" /> + <button + follows="top|right" + height="22" + label="IM/Call" + layout="topleft" + left_pad="10" + name="im_btn" + tool_tip="Open Instant Message session" + top_pad="3" + width="80" /> + <button + follows="top|right" + height="22" + label="Profile" + layout="topleft" + left_delta="0" + name="profile_btn" + tool_tip="Show picture, groups, and other information" + top_pad="3" + width="80" /> + <button + follows="top|right" + height="22" + label="Teleport..." + layout="topleft" + left_delta="0" + name="offer_teleport_btn" + tool_tip="Offer this friend a teleport to your current location" + top_pad="3" + width="80" /> + <button + follows="top|right" + height="22" + label="Pay..." + layout="topleft" + left_delta="0" + name="pay_btn" + tool_tip="Give Linden dollars (L$) to this friend" + top_pad="3" + width="80" /> + <button + follows="top|right" + height="22" + label="Remove..." + layout="topleft" + left_delta="0" + name="remove_btn" + tool_tip="Remove this person from your friends list" + top_pad="3" + width="80" /> + <button + follows="top|right" + height="22" + label="Add..." + layout="topleft" + left_delta="0" + name="add_btn" + tool_tip="Offer friendship to a resident" + top_pad="13" + width="80" /> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_group_general.xml b/indra/newview/skins/default/xui/en/panel_group_general.xml new file mode 100644 index 0000000000000000000000000000000000000000..10d10f60ff67247d5a74fa395f832695fc3f316c --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_group_general.xml @@ -0,0 +1,316 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + border="true" + follows="all" + height="466" + label="General" + layout="topleft" + left="1" + name="general_tab" + top="466" + width="418"> + <panel.string + name="help_text"> + The General tab contains general information about +this group, a list of Owners and visible Members, +general Group Preferences and member options. + +Hover your mouse over the options for more help. + </panel.string> + <panel.string + name="group_info_unchanged"> + General group information has changed. + </panel.string> + <panel.string + name="incomplete_member_data_str"> + Retrieving member data + </panel.string> + <panel.string + name="confirm_group_create_str"> + Creating this group will cost L$100. +Are you really, really, REALLY sure you want to spend L$100 to create this group? +Be aware that if nobody else joins this group within 48 hours, it will be disbanded and the group's name will be unavailable for future use. + </panel.string> + <panel.string + name="group_join_btn"> + Join (L$[AMOUNT]) + </panel.string> + <button + follows="left|top" + height="16" + label="?" + label_selected="?" + layout="topleft" + left="391" + name="help_button" + top="8" + width="20" /> + <line_editor + follows="left|top" + font="SansSerif" + halign="left" + height="16" + label="Type your new group name here" + layout="topleft" + left_delta="-384" + max_length="35" + name="group_name_editor" + top_delta="0" + width="300" /> + <text + type="string" + length="1" + follows="left|top" + font="SansSerifBig" + height="16" + layout="topleft" + left_delta="0" + name="group_name" + top_delta="-4" + width="300"> + Type your new group name here + </text> + <text + type="string" + length="1" + height="16" + layout="topleft" + left_delta="0" + name="prepend_founded_by" + top_pad="4" + width="100"> + Founded by + </text> + <name_box + follows="left|top" + height="16" + initial_value="(retrieving)" + layout="topleft" + left_delta="63" + name="founder_name" + top_delta="0" + width="200" /> + <text + type="string" + length="1" + height="16" + layout="topleft" + name="group_charter_label" + right="410" + top="40" + width="265"> + Group Charter + </text> + <texture_picker + follows="left|top" + height="144" + label="Group Insignia" + layout="topleft" + left_delta="-138" + name="insignia" + tool_tip="Click to choose a picture" + top_delta="1" + width="128" /> + <text_editor + type="string" + length="1" + follows="left|top" + halign="left" + height="160" + hide_scrollbar="true" + layout="topleft" + max_length="511" + name="charter" + right="410" + top="55" + width="265" + word_wrap="true"> + Group Charter + </text_editor> + <button + follows="left|top" + height="22" + label="Join (L$0)" + label_selected="Join (L$0)" + layout="topleft" + left="7" + name="join_button" + top="193" + width="128" /> + <button + follows="left|top" + height="22" + label="Detailed View" + label_selected="Detailed View" + layout="topleft" + left_delta="0" + name="info_button" + top_delta="0" + width="128" /> + <text + type="string" + length="1" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="text_owners_and_visible_members" + top_pad="4" + width="160"> + Owners & Visible Members + </text> + <text + type="string" + length="1" + height="16" + layout="topleft" + left_delta="0" + name="text_owners_are_shown_in_bold" + top_delta="16" + width="160"> + (Owners are shown in bold) + </text> + <name_list + column_padding="0" + draw_heading="true" + follows="left|top" + heading_height="14" + height="80" + layout="topleft" + left_delta="0" + name="visible_members" + top_pad="8" + width="404"> + <name_list.columns + label="Member Name" + name="name" + relative_width="0.45" /> + <name_list.columns + label="Title" + name="title" + relative_width="0.3" /> + <name_list.columns + label="Last Login" + name="online" + relative_width="0.25" /> + </name_list> + <text + type="string" + length="1" + bottom_delta="18" + font="SansSerif" + layout="topleft" + name="text_group_preferences"> + Group Preferences + </text> + <panel + background_opaque="true" + bevel_style="in" + border="true" + follows="left|top" + height="96" + layout="topleft" + left_delta="0" + name="preferences_container" + top_pad="8" + width="404"> + <check_box + height="16" + initial_value="true" + label="Show in search" + layout="topleft" + left="4" + name="show_in_group_list" + tool_tip="Let people see this group in search results." + top="4" + width="95" /> + <check_box + follows="right|top" + height="16" + label="Open enrollment" + layout="topleft" + left_delta="0" + name="open_enrollement" + tool_tip="Sets whether this group allows new members to join without being invited." + top_pad="2" + width="95" /> + <check_box + height="16" + label="Enrollment fee: L$" + layout="topleft" + left_delta="16" + name="check_enrollment_fee" + tool_tip="Sets whether to require an enrollment fee to join the group." + top="40" + width="95" /> + <spinner + decimal_digits="0" + follows="left|top" + halign="left" + height="16" + increment="1" + label_width="10" + layout="topleft" + left_pad="21" + max_val="99999" + name="spin_enrollment_fee" + tool_tip="New members must pay this fee to join the group when Enrollment Fee is checked." + top_delta="-2" + width="65" /> + <combo_box + height="20" + layout="topleft" + left="6" + name="group_mature_check" + tool_tip="Sets whether your group information is considered mature." + top="64" + width="130"> + <combo_box.item + label="Select Mature -" + value="Select" /> + <combo_box.item + label="Mature Content" + value="Mature" /> + <combo_box.item + label="PG Content" + value="Not Mature" /> + </combo_box> + <text + type="string" + length="1" + height="16" + layout="topleft" + left="225" + name="active_title_label" + top="4" + width="95"> + My Active Title + </text> + <combo_box + height="16" + layout="topleft" + left_delta="0" + name="active_title" + tool_tip="Sets the title that appears in your avatar's name tag when this group is active." + top_pad="6" + width="95" /> + <check_box + height="16" + label="Receive group notices" + layout="topleft" + left_delta="0" + name="receive_notices" + tool_tip="Sets whether you want to receive Notices from this group. Uncheck this box if this group is spamming you." + top_pad="9" + width="95" /> + <check_box + height="16" + label="List group in my profile" + layout="topleft" + left_delta="0" + name="list_groups_in_profile" + tool_tip="Sets whether you want to list this group in your Profile" + top_pad="2" + width="95" /> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_group_invite.xml b/indra/newview/skins/default/xui/en/panel_group_invite.xml new file mode 100644 index 0000000000000000000000000000000000000000..43457ddd61dd058e940fd95fb73a2b233fce914f --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_group_invite.xml @@ -0,0 +1,102 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + height="380" + label="Invite a Member" + layout="topleft" + left="0" + name="invite_panel" + top="380" + width="210"> + <panel.string + name="confirm_invite_owner_str"> + Are you sure you want to invite new owner(s)? This action is permanent! + </panel.string> + <panel.string + name="loading"> + (loading...) + </panel.string> + <text + type="string" + length="1" + height="54" + layout="topleft" + left="7" + name="help_text" + top="24" + width="200"> + You can select multiple residents to +invite to your group. Click 'Open +Resident Chooser' to start. + </text> + <button + font="SansSerifSmall" + height="20" + label="Open Resident Chooser" + layout="topleft" + left_delta="-2" + name="add_button" + top_delta="44" + width="200" /> + <name_list + allow_calling_card_drop="true" + column_padding="0" + height="174" + layout="topleft" + left_delta="0" + multi_select="true" + name="invitee_list" + tool_tip="Hold the Ctrl key and click resident names to multi-select." + top_pad="4" + width="200" /> + <button + font="SansSerifSmall" + height="20" + label="Remove Selected from List" + layout="topleft" + left_delta="0" + name="remove_button" + tool_tip="Removes residents selected above from the invite list." + top_pad="4" + width="200" /> + <text + type="string" + length="1" + height="16" + layout="topleft" + left_delta="4" + name="role_text" + top_pad="5" + width="200"> + Choose what Role to assign them to: + </text> + <combo_box + height="16" + layout="topleft" + left_delta="0" + name="role_name" + tool_tip="Choose from the list of Roles you are allowed to assign members to." + top_delta="16" + width="196" /> + <button + font="SansSerifSmall" + height="20" + label="Send Invitations" + layout="topleft" + left="4" + name="ok_button" + top="356" + width="130" /> + <button + font="SansSerifSmall" + height="20" + label="Cancel" + layout="topleft" + left_pad="2" + name="cancel_button" + top_delta="0" + width="70" /> + <string + name="GroupInvitation"> + Group Invitation + </string> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_group_land_money.xml b/indra/newview/skins/default/xui/en/panel_group_land_money.xml new file mode 100644 index 0000000000000000000000000000000000000000..35691661f1e3feab2b36379594d593e1611123a9 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_group_land_money.xml @@ -0,0 +1,373 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + border="true" + follows="all" + height="470" + label="Land & L$" + layout="topleft" + left="1" + name="land_money_tab" + top="470" + width="418"> + <panel.string + name="help_text"> + Parcels owned by the group are listed along with contribution details. A warning appears until the Total Land in Use is less than or equal to the Total Contribution. The Planning, Details, and Sales tabs provide information about the group's finances. + </panel.string> + <panel.string + name="cant_view_group_land_text"> + You do not have permission to view group owned land. + </panel.string> + <panel.string + name="cant_view_group_accounting_text"> + You do not have permission to view the group's accounting information. + </panel.string> + <panel.string + name="loading_txt"> + Loading... + </panel.string> + <panel.string + name="land_contrib_error"> + Unable to set your land contribution. + </panel.string> + <button + height="16" + label="?" + layout="topleft" + left="391" + name="help_button" + top="8" + width="20" /> + <text + type="string" + length="1" + follows="left|top" + font="SansSerifBig" + height="16" + layout="topleft" + left_delta="-384" + name="group_land_heading" + top_delta="-4" + width="150"> + Group Owned Land + </text> + <scroll_list + draw_heading="true" + follows="top" + font="SansSerifSmall" + heading_height="14" + height="120" + layout="topleft" + left_delta="0" + name="group_parcel_list" + top_pad="6" + width="404"> + <scroll_list.columns + label="Parcel Name" + name="name" + width="100" /> + <scroll_list.columns + label="Region" + name="location" + width="120" /> + <scroll_list.columns + label="Type" + name="type" + width="100" /> + <scroll_list.columns + label="Area" + name="area" + width="61" /> + <scroll_list.columns + label="" + name="hidden" + width="-1" /> + </scroll_list> + <button + follows="top" + height="20" + label="Show on Map" + label_selected="Show on Map" + layout="topleft" + left="312" + name="map_button" + top="150" + width="100" + enabled="false" /> + <text + type="string" + length="1" + follows="left|top" + halign="right" + height="16" + layout="topleft" + left_delta="-305" + name="total_contributed_land_label" + top_delta="4" + width="120"> + Total Contribution: + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_pad="5" + name="total_contributed_land_value" + top_delta="0" + width="100"> + [AREA] sq. meters + </text> + <text + type="string" + length="1" + follows="left|top" + halign="right" + height="16" + layout="topleft" + left="7" + name="total_land_in_use_label" + top="172" + width="120"> + Total Land In Use: + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_pad="5" + name="total_land_in_use_value" + top_delta="0" + width="150"> + [AREA] sq. meters + </text> + <text + type="string" + length="1" + follows="left|top" + halign="right" + height="16" + layout="topleft" + left="7" + name="land_available_label" + top="190" + width="120"> + Land Available: + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_pad="5" + name="land_available_value" + top_delta="0" + width="120"> + [AREA] sq. meters + </text> + <text + type="string" + length="1" + follows="left|top" + halign="right" + height="16" + layout="topleft" + left="7" + name="your_contribution_label" + top="208" + width="120"> + Your Contribution: + </text> + <line_editor + border_style="line" + border_thickness="1" + follows="left|top" + height="16" + layout="topleft" + left_pad="5" + max_length="10" + name="your_contribution_line_editor" + top_delta="-2" + width="70" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_pad="5" + name="your_contribution_max_value" + top_delta="2" + width="200"> + sq. meters ([AMOUNT] max) + </text> + <icon + height="16" + image_name="smicon_warn.tga" + layout="topleft" + left="9" + name="group_over_limit_icon" + top="235" + visible="false" + width="16" /> + <text + type="string" + length="1" + height="16" + layout="topleft" + left_pad="5" + name="group_over_limit_text" + text_color="GroupOverTierColor" + top_delta="1" + width="400"> + Group members must contribute more land credits to support land in use. + </text> + <text + type="string" + length="1" + follows="left|top" + font="SansSerifBig" + height="16" + layout="topleft" + left="12" + name="group_money_heading" + top="261" + width="150"> + Group L$ + </text> + <tab_container + follows="all" + height="180" + layout="topleft" + left="6" + name="group_money_tab_container" + tab_position="top" + top="286" + width="406"> + <panel + border="true" + follows="left|top|right|bottom" + height="255" + label="Planning" + layout="topleft" + left="1" + name="group_money_planning_tab" + top="5" + width="398"> + <text_editor + type="string" + length="1" + bg_readonly_color="0.784314 0.819608 0.8 1" + follows="all" + font="Monospace" + height="150" + layout="topleft" + left="8" + max_length="4096" + name="group_money_planning_text" + top="5" + width="382"> + Computing... + </text_editor> + </panel> + <panel + border="true" + follows="all" + height="250" + label="Details" + layout="topleft" + left_delta="0" + name="group_money_details_tab" + top_delta="163" + width="398"> + <text_editor + type="string" + length="1" + bg_readonly_color="0.784314 0.819608 0.8 1" + follows="left|top" + font="Monospace" + height="125" + layout="topleft" + left="8" + max_length="4096" + name="group_money_details_text" + top="7" + width="382"> + Computing... + </text_editor> + <button + follows="left|top" + height="20" + label="< Earlier" + label_selected="< Earlier" + layout="topleft" + left="24" + name="earlier_details_button" + tool_tip="Go back in time" + top="136" + width="80" /> + <button + follows="left|top" + height="20" + label="Later >" + label_selected="Later >" + layout="topleft" + left_pad="190" + name="later_details_button" + tool_tip="Go forward in time" + top_delta="0" + width="80" /> + </panel> + <panel + border="true" + follows="all" + height="164" + label="Sales" + layout="topleft" + left_delta="0" + name="group_money_sales_tab" + top_delta="-1" + width="398"> + <text_editor + type="string" + length="1" + bg_readonly_color="0.784314 0.819608 0.8 1" + follows="left|top" + font="Monospace" + height="125" + layout="topleft" + left="8" + max_length="4096" + name="group_money_sales_text" + top="7" + width="382"> + Computing... + </text_editor> + <button + follows="left|top" + height="20" + label="< Earlier" + label_selected="< Earlier" + layout="topleft" + left="24" + name="earlier_sales_button" + tool_tip="Go back in time" + top="136" + width="80" /> + <button + follows="left|top" + height="20" + label="Later >" + label_selected="Later >" + layout="topleft" + left_pad="190" + name="later_sales_button" + tool_tip="Go forward in time" + top_delta="0" + width="80" /> + </panel> + </tab_container> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_group_notices.xml b/indra/newview/skins/default/xui/en/panel_group_notices.xml new file mode 100644 index 0000000000000000000000000000000000000000..345cc734e6fb29acdef634ab63d08a3a723a3ed3 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_group_notices.xml @@ -0,0 +1,378 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + border="true" + follows="all" + height="466" + label="Notices" + layout="topleft" + left="1" + name="notices_tab" + top="466" + width="418"> + <panel.string + name="help_text"> + Notices are a quick way to communicate across a +group by broadcasting a message and delivering +an optionally attached item. Notices only go to +group members in Roles granted the ability to +receive Notices. You can turn off Notices on +the General tab. + </panel.string> + <panel.string + name="no_notices_text"> + There are no past notices. + </panel.string> + <button + height="16" + label="?" + label_selected="?" + layout="topleft" + left="391" + name="help_button" + top="8" + width="20" /> + <text + type="string" + length="1" + font="SansSerifBig" + height="16" + layout="topleft" + left_delta="-384" + name="lbl" + top_delta="-4" + width="436"> + Group Notices Archive + </text> + <text + type="string" + length="1" + height="16" + layout="topleft" + left_delta="0" + name="lbl2" + top_pad="4" + width="436"> + Notices are kept for 14 days. Click the notice below you wish to view. +Click the 'Refresh' button to check if new notices have been received. +Notice lists are limited to 200 notices per group on a daily basis. + </text> + <scroll_list + column_padding="0" + draw_heading="true" + heading_height="14" + height="109" + layout="topleft" + left_delta="0" + name="notice_list" + top_pad="28" + width="404"> + <scroll_list.columns + label="" + name="icon" + width="16" /> + <scroll_list.columns + label="Subject" + name="subject" + width="171" /> + <scroll_list.columns + label="From" + name="from" + width="125" /> + <scroll_list.columns + label="Date" + name="date" + width="85" /> + <scroll_list.columns + name="sort" + width="-1" /> + </scroll_list> + <text + type="string" + length="1" + layout="topleft" + name="notice_list_none_found" + visible="false"> + None found. + </text> + <button + height="20" + label="Create New Notice" + label_selected="Create New Notice" + layout="topleft" + left_delta="0" + name="create_new_notice" + top_delta="-2" + width="150" /> + <button + height="20" + label="Refresh" + label_selected="Refresh List" + layout="topleft" + left_pad="164" + name="refresh_notices" + top_delta="0" + width="90" /> + <panel + follows="all" + height="268" + label="Create New Notice" + layout="topleft" + left="1" + name="panel_create_new_notice" + top="198" + width="418"> + <text + type="string" + length="1" + font="SansSerifBig" + height="16" + layout="topleft" + left="7" + mouse_opaque="false" + name="lbl" + top="2" + width="436"> + Create a Notice + </text> + <text + type="string" + length="1" + height="16" + layout="topleft" + left_delta="0" + name="lbl2" + top_pad="4" + width="436"> + You must enter a subject to send a notice. You can add a single +item to a notice by dragging it from your inventory to this +panel. Attached items must be copiable and transferrable, +and you can't send a folder. + </text> + <text + type="string" + length="1" + halign="right" + height="16" + layout="topleft" + left_delta="0" + name="lbl3" + top_pad="47" + width="55"> + Subject: + </text> + <line_editor + border_style="line" + border_thickness="1" + height="16" + layout="topleft" + left_pad="3" + max_length="63" + name="create_subject" + top_delta="0" + width="264" /> + <text + type="string" + length="1" + halign="right" + height="16" + layout="topleft" + left="7" + name="lbl4" + top="103" + width="55"> + Message: + </text> + <text_editor + height="120" + hide_scrollbar="true" + layout="topleft" + left_pad="3" + max_length="511" + name="create_message" + top_delta="2" + width="346" + word_wrap="true" /> + <text + type="string" + length="1" + halign="right" + height="16" + layout="topleft" + left="7" + name="lbl5" + top="228" + width="55"> + Attach: + </text> + <line_editor + enabled="false" + height="16" + layout="topleft" + left_pad="4" + max_length="63" + mouse_opaque="false" + name="create_inventory_name" + top_delta="2" + width="211" /> + <icon + height="16" + layout="topleft" + left_delta="0" + name="create_inv_icon" + top_delta="0" + width="16" /> + <button + height="20" + label="Remove Attachment" + label_selected="Remove Attachment" + layout="topleft" + left_pad="197" + name="remove_attachment" + top_delta="-4" + width="135" /> + <button + height="20" + label="Send Notice" + label_selected="Send Notice" + layout="topleft" + left_delta="0" + name="send_notice" + top_delta="20" + width="135" /> + <panel + bevel_style="in" + border="true" + height="76" + layout="topleft" + left="335" + name="drop_target2" + top="20" + width="76" /> + <icon + height="64" + image_name="icon_groupnoticeinventory.tga" + layout="topleft" + left_delta="5" + mouse_opaque="true" + name="drop_icon" + top="25" + width="64" /> + <group_drop_target + height="466" + layout="topleft" + left="0" + name="drop_target" + tool_tip="Drag an inventory item onto the message box to send it with the notice. You must have permission to copy and transfer the object to send it with the notice." + top="-198" + width="422" /> + </panel> + <panel + follows="all" + height="268" + label="View Past Notice" + layout="topleft" + left_delta="0" + name="panel_view_past_notice" + top_delta="0" + width="418"> + <text + type="string" + length="1" + font="SansSerifBig" + height="16" + layout="topleft" + left="7" + mouse_opaque="false" + name="lbl" + top="2" + width="436"> + Archived Notice + </text> + <text + type="string" + length="1" + height="16" + layout="topleft" + left_delta="0" + name="lbl2" + top_pad="4" + width="436"> + To send a new notice, click the 'Create New Notice' button above. + </text> + <text + type="string" + length="1" + halign="right" + height="16" + layout="topleft" + left_delta="0" + name="lbl3" + top_pad="24" + visible="false" + width="55"> + Subject: + </text> + <line_editor + border_style="line" + border_thickness="1" + enabled="false" + height="16" + layout="topleft" + left_pad="3" + max_length="63" + name="view_subject" + top_delta="0" + visible="false" + width="346" /> + <text + type="string" + length="1" + halign="right" + height="16" + layout="topleft" + left="7" + name="lbl4" + top="80" + visible="false" + width="55"> + Message: + </text> + <text_editor + enabled="false" + height="206" + hide_scrollbar="true" + layout="topleft" + left_delta="0" + max_length="511" + name="view_message" + top_delta="-42" + width="404" + word_wrap="true" /> + <button + height="20" + label="Open Attachment" + label_selected="Open Attachment" + layout="topleft" + left_delta="0" + name="open_attachment" + top_pad="4" + width="110" /> + <line_editor + enabled="false" + height="16" + layout="topleft" + left_pad="3" + max_length="63" + mouse_opaque="false" + name="view_inventory_name" + top_delta="1" + width="264" /> + <icon + height="16" + layout="topleft" + left_delta="0" + name="view_inv_icon" + top_delta="0" + width="16" /> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_group_roles.xml b/indra/newview/skins/default/xui/en/panel_group_roles.xml new file mode 100644 index 0000000000000000000000000000000000000000..c758da4b6344dcb0c85b7cca03f1301ce5791311 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_group_roles.xml @@ -0,0 +1,743 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + border="true" + height="466" + label="Members & Roles" + layout="topleft" + left="1" + name="roles_tab" + top="466" + width="418"> + <panel.string + name="default_needs_apply_text"> + There are unapplied changes on the current sub-tab. + </panel.string> + <panel.string + name="want_apply_text"> + Do you want to apply these changes? + </panel.string> + <panel.string + name="help_text" /> + <button + height="16" + label="?" + layout="topleft" + left="391" + name="help_button" + top="8" + width="20" /> + <panel + height="24" + layout="topleft" + left="7" + name="members_header" + top="0" + width="380"> + <text + type="string" + length="1" + font="SansSerifBig" + height="16" + layout="topleft" + left="0" + name="static" + top="4" + width="150"> + Members & Roles + </text> + <text + type="string" + length="1" + height="32" + layout="topleft" + left_delta="0" + name="static2" + top_pad="4" + width="400"> + Group Members are assigned Roles with Abilities. These settings can +easily be customized, allowing for greater organization and flexibility. + </text> + </panel> + <panel + height="24" + layout="topleft" + left_delta="0" + name="roles_header" + top_delta="0" + visible="false" + width="380"> + <text + type="string" + length="1" + font="SansSerifBig" + height="16" + layout="topleft" + left="0" + name="static" + top="4" + width="100"> + Roles + </text> + <text + type="string" + length="1" + height="16" + layout="topleft" + left_delta="0" + name="role_properties_modifiable" + top_pad="4" + visible="false" + width="394"> + Select a Role below. You can modify its Name, Description and Member Title. + </text> + <text + type="string" + length="1" + height="16" + layout="topleft" + left_delta="0" + name="role_properties_not_modifiable" + top_delta="0" + width="394"> + Select a Role below to see its properties, Members and allowed Abilities. + </text> + <text + type="string" + length="1" + height="16" + layout="topleft" + left_delta="0" + name="role_actions_modifiable" + top_delta="14" + visible="false" + width="394"> + You can also assign Abilities to the Role. + </text> + <text + type="string" + length="1" + height="16" + layout="topleft" + left_delta="0" + name="role_actions_not_modifiable" + top_delta="0" + width="394"> + You may view, but not modify, assigned Abilities. + </text> + </panel> + <panel + height="24" + layout="topleft" + left_delta="0" + name="actions_header" + top_delta="20" + visible="false" + width="380"> + <text + type="string" + length="1" + font="SansSerifBig" + height="16" + layout="topleft" + left="0" + name="static" + top="-16" + width="200"> + Abilities + </text> + <text + type="string" + length="1" + height="32" + layout="topleft" + left_delta="0" + name="static2" + top_pad="4" + width="394"> + You can view an Ability's Description and which Roles and Members can +execute the Ability. + </text> + </panel> + <tab_container + height="180" + layout="topleft" + left_delta="-1" + name="roles_tab_container" + tab_position="top" + top_pad="10" + width="406"> + <panel + border="true" + height="164" + label="Members" + layout="topleft" + left="1" + name="members_sub_tab" + tool_tip="Members" + top="16" + width="406"> + <panel.string + name="help_text"> + You can add or remove Roles assigned to Members. +Select multiple Members by holding the Ctrl key and +clicking on their names. + </panel.string> + <line_editor + border_style="line" + border_thickness="1" + follows="left|top" + height="16" + layout="topleft" + left="4" + max_length="63" + name="search_text" + top="5" + width="100" /> + <button + font="SansSerifSmall" + height="20" + label="Search" + layout="topleft" + left_pad="5" + name="search_button" + top_delta="-2" + width="60" /> + <button + enabled="false" + font="SansSerifSmall" + height="20" + label="Show All" + layout="topleft" + left_pad="5" + name="show_all_button" + top_delta="0" + width="80" /> + <name_list + column_padding="0" + draw_heading="true" + heading_height="14" + height="120" + layout="topleft" + left="4" + multi_select="true" + name="member_list" + top="24" + width="396"> + <name_list.columns + label="Member Name" + name="name" + width="136" /> + <name_list.columns + label="Donated Tier" + name="donated" + width="136" /> + <name_list.columns + label="Last Login" + name="online" + width="116" /> + </name_list> + <button + height="19" + label="Invite New Member ..." + layout="topleft" + left_delta="0" + name="member_invite" + top_pad="1" + width="146" /> + <button + height="19" + label="Eject From Group" + layout="topleft" + left_pad="103" + name="member_eject" + top_delta="0" + width="146" /> + <icon + height="16" + image_name="inv_folder_plain_closed.tga" + layout="topleft" + name="power_folder_icon" + visible="false" + width="16" /> + </panel> + <panel + border="true" + height="164" + label="Roles" + layout="topleft" + left_delta="0" + name="roles_sub_tab" + top_delta="0" + width="398"> + <panel.string + name="help_text"> + Roles have a title and an allowed list of Abilities +that Members can perform. Members can belong to +one or more Roles. A group can have up to 10 Roles, +including the Everyone and Owner Roles. + </panel.string> + <panel.string + name="cant_delete_role"> + The 'Everyone' and 'Owners' Roles are special and cannot be deleted. + </panel.string> + <panel.string + name="power_folder_icon"> + inv_folder_plain_closed.tga + </panel.string> + <panel.string + name="power_all_have_icon"> + checkbox_enabled_true.tga + </panel.string> + <panel.string + name="power_partial_icon"> + checkbox_enabled_false.tga + </panel.string> + <line_editor + border_style="line" + border_thickness="1" + follows="left|top" + height="16" + layout="topleft" + left="4" + max_length="63" + name="search_text" + top="5" + width="100" /> + <button + font="SansSerifSmall" + height="20" + label="Search" + layout="topleft" + left_pad="5" + name="search_button" + top_delta="-2" + width="60" /> + <button + enabled="false" + font="SansSerifSmall" + height="20" + label="Show All" + layout="topleft" + left_pad="5" + name="show_all_button" + top_delta="0" + width="80" /> + <scroll_list + column_padding="0" + draw_heading="true" + follows="left|top" + heading_height="14" + height="120" + layout="topleft" + left="4" + name="role_list" + top="23" + width="396"> + <scroll_list.columns + label="Role Name" + name="name" + width="126" /> + <scroll_list.columns + label="Title" + name="title" + width="186" /> + <scroll_list.columns + label="Members" + name="members" + width="76" /> + </scroll_list> + <button + height="19" + label="Create New Role ..." + layout="topleft" + left_delta="0" + name="role_create" + top_pad="2" + width="146" /> + <button + height="19" + label="Delete Role" + layout="topleft" + left_pad="95" + name="role_delete" + top_delta="0" + width="146" /> + </panel> + <panel + border="true" + height="164" + label="Abilities" + layout="topleft" + left_delta="0" + name="actions_sub_tab" + top_delta="0" + width="398"> + <panel.string + name="help_text"> + Abilities allow Members in Roles to do specific +things in this group. There's a broad variety of Abilities. + </panel.string> + <line_editor + border_style="line" + border_thickness="1" + follows="left|top" + height="16" + layout="topleft" + left="6" + max_length="63" + name="search_text" + top="5" + width="100" /> + <button + font="SansSerifSmall" + height="20" + label="Search" + layout="topleft" + left_pad="5" + name="search_button" + top_delta="-2" + width="60" /> + <button + enabled="false" + font="SansSerifSmall" + height="20" + label="Show All" + layout="topleft" + left_pad="5" + name="show_all_button" + top_delta="0" + width="80" /> + <scroll_list + column_padding="0" + draw_stripes="false" + follows="left|top" + height="134" + layout="topleft" + left="6" + multi_select="true" + name="action_list" + search_column="1" + tool_tip="Select an Ability to view more details." + top="23" + width="392"> + <scroll_list.columns + label="" + name="icon" + width="18" /> + <scroll_list.columns + label="" + name="action" + width="356" /> + </scroll_list> + <icon + height="16" + image_name="inv_folder_plain_closed.tga" + layout="topleft" + name="power_folder_icon" + visible="false" + width="16" /> + </panel> + </tab_container> + <panel + height="215" + layout="topleft" + left_delta="1" + name="members_footer" + top_pad="20" + width="406"> + <text + type="string" + length="1" + font="SansSerif" + height="16" + layout="topleft" + left="0" + name="static" + top="-16" + width="100"> + Assigned Roles + </text> + <text + type="string" + length="1" + font="SansSerif" + height="16" + layout="topleft" + left_pad="50" + name="static2" + top_delta="0" + width="150"> + Allowed Abilities + </text> + <scroll_list + draw_stripes="false" + enabled="false" + height="198" + layout="topleft" + left="0" + name="member_assigned_roles" + top="1" + width="145"> + <scroll_list.columns + label="" + name="checkbox" + width="18" /> + <scroll_list.columns + label="" + name="role" + width="109" /> + </scroll_list> + <scroll_list + draw_stripes="false" + enabled="false" + height="198" + layout="topleft" + left_pad="5" + name="member_allowed_actions" + tool_tip="For Details of each Allowed Ability see the Abilities tab." + top_delta="0" + width="254"> + <scroll_list.columns + label="" + name="icon" + width="14" /> + <scroll_list.columns + label="" + name="action" + width="224" /> + </scroll_list> + </panel> + <panel + height="215" + layout="topleft" + left_delta="0" + name="roles_footer" + top_delta="0" + visible="false" + width="406"> + <text + type="string" + length="1" + font="SansSerif" + height="16" + layout="topleft" + left="0" + name="static" + top="-16" + width="100"> + Name + </text> + <text + type="string" + length="1" + font="SansSerif" + height="16" + layout="topleft" + left_pad="50" + name="static2" + top_delta="0" + width="100"> + Description + </text> + <line_editor + type="string" + length="1" + border_style="line" + border_thickness="1" + follows="left|top" + height="16" + layout="topleft" + left="0" + max_length="20" + name="role_name" + top="0" + width="145"> + Employees + </line_editor> + <text + type="string" + length="1" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="static3" + top_delta="16" + width="100"> + Title + </text> + <line_editor + type="string" + length="1" + border_style="line" + border_thickness="1" + follows="left|top" + height="16" + layout="topleft" + left_delta="0" + max_length="20" + name="role_title" + top_delta="16" + width="145"> + (waiting) + </line_editor> + <text_editor + type="string" + length="1" + halign="left" + height="48" + hide_scrollbar="true" + layout="topleft" + left="150" + max_length="254" + name="role_description" + top="0" + width="254" + word_wrap="true"> + (waiting) + </text_editor> + <text + type="string" + length="1" + font="SansSerif" + height="16" + layout="topleft" + left="0" + name="static4" + top="58" + width="120"> + Assigned Members + </text> + <text + type="string" + length="1" + font="SansSerif" + height="16" + layout="topleft" + left_pad="30" + name="static5" + tool_tip="A list of Abilities the currently selected role can perform." + top_delta="0" + width="240"> + Allowed Abilities + </text> + <name_list + draw_stripes="false" + enabled="false" + height="105" + layout="topleft" + left="0" + name="role_assigned_members" + top="74" + width="145" /> + <check_box + height="16" + label="Members are visible" + layout="topleft" + left_delta="0" + name="role_visible_in_list" + tool_tip="Sets whether members of this role are visible in the General tab to people outside of the group." + top_pad="4" + width="361" /> + <scroll_list + draw_stripes="false" + height="125" + layout="topleft" + left="150" + name="role_allowed_actions" + search_column="2" + tool_tip="For Details of each Allowed Ability see the Abilities tab." + top="74" + width="254"> + <scroll_list.columns + label="" + name="icon" + width="2" /> + <scroll_list.columns + label="" + name="checkbox" + width="16" /> + <scroll_list.columns + label="" + name="action" + width="220" /> + </scroll_list> + </panel> + <panel + height="215" + layout="topleft" + left_delta="0" + name="actions_footer" + top_delta="0" + visible="false" + width="406"> + <text + type="string" + length="1" + font="SansSerif" + height="16" + layout="topleft" + left="0" + name="static" + top="-16" + width="100"> + Description + </text> + <text_editor + type="string" + length="1" + enabled="false" + halign="left" + height="48" + hide_scrollbar="true" + layout="topleft" + left_delta="0" + max_length="512" + name="action_description" + top_delta="16" + width="404" + word_wrap="true"> + This Ability is 'Eject Members from this Group'. Only an Owner can eject another Owner. + </text_editor> + <text + type="string" + length="1" + font="SansSerif" + height="16" + layout="topleft" + left_delta="0" + name="static2" + top_pad="10" + width="145"> + Roles with Ability + </text> + <text + type="string" + length="1" + font="SansSerif" + height="16" + layout="topleft" + left_pad="5" + name="static3" + top_delta="0" + width="200"> + Members with Ability + </text> + <scroll_list + enabled="false" + height="125" + layout="topleft" + left="0" + name="action_roles" + top="74" + width="145" /> + <name_list + enabled="false" + height="125" + layout="topleft" + left_pad="5" + name="action_members" + top_delta="0" + width="254" /> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_groups.xml b/indra/newview/skins/default/xui/en/panel_groups.xml new file mode 100644 index 0000000000000000000000000000000000000000..bba399481b4e1ab5efb49719adf8de6eb1f45f29 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_groups.xml @@ -0,0 +1,111 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + border="true" + follows="all" + height="347" + layout="topleft" + left="280" + name="groups" + top="24" + width="350"> + <scroll_list + bottom="302" + follows="left|top|right|bottom" + layout="topleft" + left="10" + name="group list" + top="10" + width="240"> + <scroll_list.columns + label="" + name="name" + width="248" /> + </scroll_list> + <text + type="string" + length="1" + follows="left|bottom" + height="16" + layout="topleft" + left_delta="2" + mouse_opaque="false" + name="groupdesc" + top_pad="7" + width="248"> + Your currently active group is displayed in bold. + </text> + <text + type="string" + length="1" + follows="left|bottom" + height="16" + layout="topleft" + left_delta="0" + mouse_opaque="false" + name="groupcount" + top_pad="1" + width="248"> + You belong to [COUNT] groups (of [MAX] maximum). + </text> + <locate + height="0" + layout="topleft" + left="-90" + top="7" + width="1" /> + <button + follows="top|right" + height="22" + label="IM/Call" + layout="topleft" + left_delta="0" + name="IM" + tool_tip="Open Instant Message session" + top_pad="3" + width="80" /> + <button + follows="top|right" + height="22" + label="Info" + layout="topleft" + left_delta="0" + name="Info" + top_pad="3" + width="80" /> + <button + follows="top|right" + height="22" + label="Activate" + layout="topleft" + left_delta="0" + name="Activate" + top_pad="3" + width="80" /> + <button + follows="top|right" + height="22" + label="Leave" + layout="topleft" + left_delta="0" + name="Leave" + top_pad="3" + width="80" /> + <button + follows="top|right" + height="22" + label="Create..." + layout="topleft" + left_delta="0" + name="Create" + top_pad="13" + width="80" /> + <button + follows="top|right" + height="22" + label="Search..." + layout="topleft" + left_delta="0" + name="Search..." + top_pad="3" + width="80" /> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_landmark_info.xml b/indra/newview/skins/default/xui/en/panel_landmark_info.xml new file mode 100644 index 0000000000000000000000000000000000000000..e252788c69ce8457e69a5982c82100373c9ef927 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_landmark_info.xml @@ -0,0 +1,258 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + background_visible="true" + bg_alpha_color="0.3 0.3 0.3 1" + height="560" + label="Landmark" + layout="topleft" + left="0" + name="landmark_info" + top="800" + width="355"> + <panel.string + name="not_available"> + (N\A) + </panel.string> + <panel.string + name="unknown"> + (unknown) + </panel.string> + <panel.string + name="public"> + (public) + </panel.string> + <panel.string + name="server_update_text"> + Place information not available without server update. + </panel.string> + <panel.string + name="server_error_text"> + Information about this location is unavailable at this time, please try again later. + </panel.string> + <panel.string + name="server_forbidden_text"> + Information about this location is unavailable due to access restrictions. Please check your permissions with the parcel owner. + </panel.string> + <panel.string + name="acquired_date"> + [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local] + </panel.string> + <button + follows="top|left" + height="20" + image_overlay="navbar_back.tga" + image_selected="navbar_bg_button.tga" + image_unselected="navbar_bg_button.tga" + layout="topleft" + left="10" + name="back_btn" + picture_style="true" + top="20" + width="20" /> + <text + type="string" + length="1" + follows="left|top|right" + font="SansSerifHugeBold" + height="20" + layout="topleft" + left="50" + name="panel_title" + text_color="white" + top="20" + width="150"> + Landmark + </text> + <texture_picker + follows="top|left" + height="128" + layout="topleft" + left="10" + name="logo" + top="60" + width="128" /> + <text + follows="left|top|right" + font="SansSerifHugeBold" + height="20" + layout="topleft" + left="10" + name="region_name" + text_color="white" + top="180" + width="340" /> + <text + follows="left|top|right" + font="SansSerifBold" + height="20" + layout="topleft" + left="10" + name="parcel_name" + text_color="white" + top="205" + width="340" /> + <panel + follows="left|top|right|bottom" + height="335" + layout="topleft" + left="0" + name="info_panel" + top="225" + width="355"> + <text_editor + bg_focus_color="0.3 0.3 0.3 1" + bg_readonly_color="0.3 0.3 0.3 1" + follows="left|top|right" + font="SansSerif" + height="90" + hide_border="true" + hide_scrollbar="true" + layout="topleft" + left="10" + max_length="1000" + name="description" + read_only="true" + text_color="white" + top="0" + width="340" /> + <icon + follows="top|left" + height="30" + image_name="" + layout="topleft" + left="10" + mouse_opaque="true" + name="maturity" + top="95" + width="30" /> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="15" + layout="topleft" + left="10" + name="owner_lable" + text_color="white" + top="130" + width="50" + word_wrap="true"> + Owner: + </text> + <text + follows="left|top|right" + font="SansSerif" + height="15" + layout="topleft" + left="80" + name="owner" + text_color="white" + top="130" + width="260" + word_wrap="true" /> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="15" + layout="topleft" + left="10" + name="creator_lable" + text_color="white" + top="150" + width="50" + word_wrap="true"> + Creator: + </text> + <text + follows="left|top|right" + font="SansSerif" + height="15" + layout="topleft" + left="80" + name="creator" + text_color="white" + top="150" + width="260" + word_wrap="true" /> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="15" + layout="topleft" + left="10" + name="created_lable" + text_color="white" + top="170" + width="50" + word_wrap="true"> + Created: + </text> + <text + follows="left|top|right" + font="SansSerif" + height="15" + layout="topleft" + left="80" + name="created" + text_color="white" + top="170" + width="260" + word_wrap="true" /> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="15" + layout="topleft" + left="10" + name="title_lable" + text_color="white" + top="190" + width="50" + word_wrap="true"> + Title: + </text> + <line_editor + follows="left|top|right" + font="SansSerif" + height="22" + layout="topleft" + left="10" + max_length="255" + name="title_editor" + top="210" + width="330" /> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="15" + layout="topleft" + left="10" + name="notes_lable" + text_color="white" + top="240" + width="90" + word_wrap="true"> + My Notes: + </text> + <text_editor + follows="left|top|bottom|right" + font="SansSerif" + height="70" + hide_scrollbar="true" + layout="topleft" + left="10" + max_length="1000" + name="notes_editor" + top="260" + width="330" /> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_landmarks.xml b/indra/newview/skins/default/xui/en/panel_landmarks.xml new file mode 100644 index 0000000000000000000000000000000000000000..f27b584c51e60336f4afdfeeecc6d922ccd44520 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_landmarks.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel name="Landmarks" bottom="0" height="326" left="0" width="380" + border="true" follows="left|top|right|bottom"> + <inventory_panel allow_multi_select="true" border="true" bottom="0" + follows="left|top|right|bottom" height="326" left="0" mouse_opaque="true" + name="landmarks_list" width="380"/> + <button bottom="0" halign="center" height="16" label=">" enabled="false" + mouse_opaque="false" name="selector" width="20" left="0" + follows="right|bottom" tool_tip="View landmark properties"/> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_login.xml b/indra/newview/skins/default/xui/en/panel_login.xml new file mode 100644 index 0000000000000000000000000000000000000000..20da8aa41e106b4818844d7bf9df16a7b84ef692 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_login.xml @@ -0,0 +1,221 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + follows="left|top|right|bottom" + height="600" + layout="topleft" + left="0" + name="panel_login" + top="600" + width="800"> + <panel.string + name="create_account_url"> + http://secondlife.com/registration/ + </panel.string> + <panel.string + name="real_url"> + http://secondlife.com/app/login/ + </panel.string> + <panel.string + name="forgot_password_url"> + http://secondlife.com/account/request.php + </panel.string> + <web_browser + border_visible="false" + bottom="600" + follows="top|left|bottom|right" + layout="topleft" + left="0" + name="login_html" + right="-1" + start_url="data:text/html,%3Chtml%3E%3Chead%3E%3C/head%3E%3Cbody bgcolor=%22#000000%22 text=%22ffffff%22%3E%3Ch1%3E%3Ctt%3Eloading...%3C/tt%3E%3C/h1%3E %3C/body%3E %3C/html%3E" + top="1" /> + <text + type="string" + length="1" + follows="left|bottom" + font="SansSerif" + height="16" + layout="topleft" + left="32" + name="first_name_text" + top="530" + width="120"> + First Name: + </text> + <line_editor + border_style="line" + border_thickness="1" + follows="left|bottom" + font="SansSerif" + handle_edit_keys_directly="true" + height="20" + layout="topleft" + left_delta="0" + max_length="31" + name="first_name_edit" + select_on_focus="true" + top_pad="4" + width="120" /> + <text + type="string" + length="1" + follows="left|bottom" + font="SansSerif" + height="16" + layout="topleft" + left="164" + name="last_name_text" + top="530" + width="120"> + Last Name: + </text> + <line_editor + border_style="line" + border_thickness="1" + follows="left|bottom" + font="SansSerif" + handle_edit_keys_directly="true" + height="20" + layout="topleft" + left_delta="0" + max_length="31" + name="last_name_edit" + select_on_focus="true" + top_pad="4" + width="120" /> + <text + type="string" + length="1" + follows="left|bottom" + font="SansSerif" + height="16" + layout="topleft" + left="296" + name="password_text" + top="530" + width="120"> + Password: + </text> + <line_editor + border_style="line" + border_thickness="1" + follows="left|bottom" + font="SansSerif" + handle_edit_keys_directly="true" + height="20" + layout="topleft" + left_delta="0" + max_length="16" + name="password_edit" + select_on_focus="true" + top_pad="4" + width="120" /> + <text + type="string" + length="1" + follows="left|bottom" + font="SansSerif" + height="16" + layout="topleft" + left="32" + name="start_location_text" + top="574" + width="95"> + Start Location: + </text> + <combo_box + allow_text_entry="true" + control_name="LoginLocation" + follows="left|bottom" + height="18" + layout="topleft" + left_pad="2" + max_chars="128" + name="start_location_combo" + top_delta="0" + width="155"> + <combo_box.item + label="My Last Location" + value="last" /> + <combo_box.item + label="My Home" + value="home" /> + <combo_box.item + label="<Type region name>" + value="" /> + </combo_box> + <check_box + control_name="RememberPassword" + follows="left|bottom" + height="16" + label="Remember password" + layout="topleft" + left_pad="8" + name="remember_check" + top_delta="0" + width="138" /> + <button + follows="left|bottom" + height="24" + label="Log In" + label_selected="Log In" + layout="topleft" + left="435" + name="connect_btn" + top="548" + width="120" /> + <combo_box + allow_text_entry="true" + follows="left|bottom" + height="18" + layout="topleft" + left_pad="15" + name="server_combo" + top_delta="2" + width="120" /> + <text + type="string" + length="1" + follows="right|bottom" + halign="right" + height="16" + hover="true" + hover_color="0.2 0.45 0.72 1" + layout="topleft" + left="-210" + name="create_new_account_text" + top="539" + width="200"> + Sign up for account + </text> + <text + type="string" + length="1" + follows="right|bottom" + halign="right" + height="16" + hover="true" + hover_color="0.2 0.45 0.72 1" + layout="topleft" + left_delta="0" + name="forgot_password_text" + top_pad="4" + width="200"> + Forgot your name or password? + </text> + <text + type="string" + length="1" + follows="right|bottom" + halign="right" + height="16" + hover="true" + hover_color="0.2 0.45 0.72 1" + layout="topleft" + left="-310" + name="channel_text" + top="579" + width="300"> + [VERSION] + </text> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml new file mode 100644 index 0000000000000000000000000000000000000000..fa1abaa5951ad3b9553af9b8715455f830c94801 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml @@ -0,0 +1,142 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + background_opaque="true" + background_visible="true" + bg_opaque_color="0.25 0.25 0.25 1" + follows="left|top|right" + height="60" + layout="topleft" + name="navigation_bar" + width="600"> + <button + follows="left|top" + font="SansSerifSmall" + height="20" + image_disabled="navbar_bg_button.tga" + image_disabled_selected="navbar_bg_button.tga" + image_overlay="navbar_back.tga" + image_selected="navbar_bg_button.tga" + image_unselected="navbar_bg_button.tga" + layout="topleft" + left="5" + name="back_btn" + picture_style="true" + tool_tip="Go back to previous location" + top="8" + width="20" /> + <button + follows="left|top" + font="SansSerifSmall" + height="20" + image_disabled="navbar_bg_button.tga" + image_disabled_selected="navbar_bg_button.tga" + image_overlay="navbar_forward.tga" + image_selected="navbar_bg_button.tga" + image_unselected="navbar_bg_button.tga" + layout="topleft" + left_pad="2" + name="forward_btn" + picture_style="true" + tool_tip="Go forward one location" + top_delta="0" + width="20" /> + <button + follows="left|top" + font="SansSerifSmall" + height="20" + image_disabled="navbar_bg_button.tga" + image_disabled_selected="navbar_bg_button.tga" + image_overlay="navbar_home.tga" + image_selected="navbar_bg_button.tga" + image_unselected="navbar_bg_button.tga" + layout="topleft" + left_pad="5" + name="home_btn" + picture_style="true" + tool_tip="Teleport to your home location" + top_delta="0" + width="20" /> + <location_input + follows="left|right|top" + halign="right" + height="20" + label="Location" + layout="topleft" + left_pad="5" + max_chars="254" + mouse_opaque="false" + name="location_combo" + top_delta="0" + width="320"> + </location_input> + <button + follows="right|top" + height="20" + image_disabled="navbar_bg_center.tga" + image_disabled_selected="navbar_bg_center.tga" + image_hover_selected="navbar_bg_center.tga" + image_hover_unselected="navbar_bg_center.tga" + image_selected="navbar_bg_center.tga" + image_unselected="navbar_bg_center.tga" + layout="topleft" + left_pad="5" + mouse_opaque="false" + name="search_bg" + picture_style="true" + top_delta="0" + width="168" /> + <line_editor + bevel_style="none" + border_style="line" + commit_on_focus_lost="false" + follows="right|top" + halign="right" + height="18" + label="Search" + layout="topleft" + left_delta="0" + mouse_opaque="false" + name="search_input" + tool_tip="Search" + top_delta="1" + width="152" /> + <button + follows="right|top" + height="16" + image_disabled="status_search_btn.png" + image_disabled_selected="status_search_btn_pressed.png" + image_selected="status_search_btn_pressed.png" + image_unselected="status_search_btn.png" + layout="topleft" + left_delta="152" + name="search_btn" + picture_style="true" + scale_image="false" + tool_tip="Search" + top_delta="1" + width="16" /> + <button + follows="right|top" + font="SansSerifSmall" + height="20" + image_disabled="navbar_bg_button.tga" + image_disabled_selected="navbar_bg_button.tga" + image_overlay="navbar_help.tga" + image_selected="navbar_bg_button.tga" + image_unselected="navbar_bg_button.tga" + layout="topleft" + left_pad="5" + name="help_btn" + picture_style="true" + tool_tip="Help" + top_delta="-2" + width="20" /> + <favorites_bar + follows="left|right|top" + height="25" + layout="topleft" + left="5" + name="favorite" + top="32" + width="590" /> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_nearby_chat.xml b/indra/newview/skins/default/xui/en/panel_nearby_chat.xml new file mode 100644 index 0000000000000000000000000000000000000000..50a78e1c7152c777fcfbc6ed9d6e4e92115fdc13 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_nearby_chat.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- All our XML is utf-8 encoded. --> + +<panel + name="nearby_chat" visible="true" width="250" height="480" background_opaque="false" + background_visible="true" bevel_style="in" follows="left|top" bg_alpha_color="0.3 0.3 0.3 1.0"> + <panel bottom="380" width="250" height="30" background_visible="true" background_opaque="false" bg_alpha_color="0.0 0.0 0.0 1.0" name="chat_caption"> + <text + width="140" left="25" height="20" follows="left|right|top" + font="SansSerifBigBold" text_color="white" word_wrap="true" + mouse_opaque="true" name="sender_name" >NEARBY CHAT </text> + <icon top="25" left="180" + width="20" height="20" follows="top|right" + color="1 1 1 1" enabled="true" image_name="icn_voice-groupfocus.tga" + mouse_opaque="true" name="nearby_speakers_btn"/> + <icon top="25" left="205" + width="20" height="20" follows="top|right" + color="1 1 1 1" enabled="true" image_name="inv_item_landmark_visited.tga" + mouse_opaque="true" name="tearoff_btn"/> + <icon top="22" left="230" + width="15" height="15" follows="top|right" + color="1 1 1 1" enabled="true" image_name="closebox.tga" + name="close_btn"/> + </panel> + <chat_history_view bottom="0" width="250" height="320" follows="left|right|top|bottom" name="chat_scroll" /> +</panel> + diff --git a/indra/newview/skins/default/xui/en/panel_notes.xml b/indra/newview/skins/default/xui/en/panel_notes.xml new file mode 100644 index 0000000000000000000000000000000000000000..767432a522cbb136972bb8c0f2b496e1b73b4bd6 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_notes.xml @@ -0,0 +1,202 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + follows="top|left|right|bottom" + background_visible="true" + bevel_style="in" + bg_alpha_color="0.5 0.5 0.5 1" + height="705" + label="Notes and Privacy" + layout="topleft" + left="10" + name="panel_notes" + top="10" + width="355"> + <scroll_container + left="1" width="354" height="690" follows="left|top|right|bottom" + layout="topleft" + reserve_scroll_corner="false"> + <panel + layout="topleft" + width="320" + height="690" + left="0" + top="0"> + <text + type="string" + length="1" + follows="left|top" + font="SansSerifHugeBold" + height="35" + layout="topleft" + left="10" + name="pick_title" + text_color="white" + top="10" + width="250" + word_wrap="true"> + Private Notes + </text> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + font.style="ITALIC" + height="15" + layout="topleft" + left="10" + name="status_message" + text_color="0.1 0.1 0.1 1" + top="50" + width="300"> + Your notes about this user: + </text> + <text_editor + bg_focus_color="white" + bg_writeable_color="0.6 0.6 0.6 1" + follows="left|right" + font="SansSerif" + height="300" + hide_scrollbar="true" + layout="topleft" + left="10" + max_length="1000" + name="notes_edit" + text_color="black" + top="70" + width="280" + word_wrap="true" /> + <text + type="string" + length="1" + follows="left|top" + font="SansSerifHugeBold" + height="35" + layout="topleft" + left="10" + name="pick_title" + text_color="white" + top="410" + width="250" + word_wrap="true"> + Private Settings + </text> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + font.style="ITALIC" + height="15" + layout="topleft" + left="10" + name="status_message" + text_color="0.1 0.1 0.1 1" + top="435" + width="300"> + This user can: + </text> + <check_box + enabled="false" + follows="left|top" + font="SansSerifBig" + height="20" + label="See my online status" + layout="topleft" + left="10" + name="status_check" + text_disabled_color="0.1 0.1 0.1 1" + text_enabled_color="white" + top="455" + width="300" /> + <check_box + enabled="false" + follows="left|top" + font="SansSerifBig" + height="20" + label="See me on the map" + layout="topleft" + left="10" + name="map_check" + text_disabled_color="0.1 0.1 0.1 1" + text_enabled_color="white" + top="480" + width="300" /> + <check_box + enabled="false" + follows="left|top" + font="SansSerifBig" + height="20" + label="Edit, delite or take my objects" + layout="topleft" + left="10" + name="objects_check" + text_disabled_color="0.1 0.1 0.1 1" + text_enabled_color="white" + top="505" + width="300" /> + <panel + layout="topleft" + follows="bottom" + height="30" + left="0" + name="notes_buttons_panel" + bottom="690" + width="350"> + <button + follows="bottom|left" + font="SansSerifSmallBold" + height="25" + label="Add Friend" + layout="topleft" + left="5" + mouse_opaque="false" + name="add_friend" + top="0" + width="75" /> + <button + follows="bottom|left" + font="SansSerifSmallBold" + height="25" + label="IM" + layout="topleft" + left_pad="5" + name="im" + top_delta="0" + width="40" /> + <button + follows="bottom|left" + font="SansSerifSmallBold" + height="25" + label="Call" + layout="topleft" + left_pad="5" + name="call" + top_delta="0" + width="50" + enabled="false"/> + <button + follows="bottom|left" + font="SansSerifSmallBold" + height="25" + label="Teleport" + layout="topleft" + left_pad="5" + name="teleport" + top_delta="0" + width="65" /> + <button + follows="bottom|left" + font="SansSerifSmallBold" + height="25" + label="Share" + layout="topleft" + left_pad="15" + name="share" + top_delta="0" + width="50" + enabled="false"/> + </panel> +</panel> + </scroll_container> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_notifications_channel.xml b/indra/newview/skins/default/xui/en/panel_notifications_channel.xml new file mode 100644 index 0000000000000000000000000000000000000000..c67ae4167732f54afb73d669672bffe75593feac --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_notifications_channel.xml @@ -0,0 +1,77 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + height="100" + layout="topleft" + name="notifications_panel" + width="100"> + <layout_stack + follows="left|right|top|bottom" + height="78" + layout="topleft" + left="0" + name="stack1" + orientation="horizontal" + top="20" + width="100"> + <scroll_list + draw_heading="true" + follows="left|right|top|bottom" + height="78" + layout="topleft" + left="0" + name="notifications_list" + sort_ascending="false" + sort_column="2" + top="-78" + user_resize="true" + width="100"> + <scroll_list.columns + label="Name" + name="name" + width="100" /> + <scroll_list.columns + label="Content" + name="content" + width="150" /> + <scroll_list.columns + label="Date" + name="date" + width="150" /> + </scroll_list> + <scroll_list + draw_heading="true" + follows="left|right|top|bottom" + height="78" + layout="topleft" + left="0" + name="notification_rejects_list" + sort_ascending="false" + sort_column="2" + top="-78" + user_resize="true" + width="100"> + <scroll_list.columns + label="Name" + name="name" + width="100" /> + <scroll_list.columns + label="Content" + name="content" + width="150" /> + <scroll_list.columns + label="Date" + name="date" + width="150" /> + </scroll_list> + </layout_stack> + <button + follows="left|right|top" + height="20" + is_toggle="true" + layout="topleft" + left_delta="0" + name="header" + picture_style="true" + top_delta="-20" + width="100" /> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml new file mode 100644 index 0000000000000000000000000000000000000000..f53e06494f6393009bb1eaaaab9bd08010b348d9 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_people.xml @@ -0,0 +1,443 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + layout="topleft" + top="0" left="0" width="355" height="465" + follows="left|top|right|bottom" + background_visible="true" bg_alpha_color="0.3 0.3 0.3 1" + label="People" name="people_panel" +> + <search_editor + layout="topleft" + top="3" left="10" width="335" height="16" + follows="left|top|right" + max_length="300" + label="Filter" name="filter_input" + font="SansSerif" text_color="black" + /> + <tab_container + layout="topleft" + top="30" left="10" width="335" height="400" + follows="left|top|right|bottom" + name="tabs" + tab_position="top" + bg_alpha_color="0.7 0.7 0.1 1" + > + <panel + layout="topleft" + height="390" width="332" + follows="left|top|right|bottom" + background_visible="true" bevel_style="bright" bg_alpha_color="0.7 0.7 0.7 1" + label="Nearby" name="nearby_panel" + > + <avatar_list + layout="topleft" + top="2" left="0" width="332" height="357" + follows="left|top|right|bottom" + name="avatar_list" + /> + <panel + layout="topleft" + bottom="390" left="0" width="333" height="30" + follows="left|right|bottom" + background_visible="true" bevel_style="bright" bg_alpha_color="black" + label="bottom_panel" name="bottom_panel" + > + <button + name="gear_btn" + enabled="false" + layout="topleft" + top="9" left="305" width="16" height="16" + follows="bottom|right" + font="SansSerifBigBold" + image_hover_selected="gear.tga" + image_selected="gear.tga" + image_unselected="gear.tga" + picture_style="true" + /> + </panel> + </panel> + <panel + layout="topleft" + height="390" width="332" + follows="left|top|right|bottom" + background_visible="true" bevel_style="bright" bg_alpha_color="0.7 0.7 0.7 1" + label="Friends" name="friends_panel" + > + <avatar_list + layout="topleft" + top="2" left="0" width="332" height="357" + follows="left|top|right|bottom" + name="avatar_list" + /> + <panel + layout="topleft" + bottom="390" left="0" width="333" height="30" + follows="left|right|bottom" + background_visible="true" bevel_style="in" bg_alpha_color="black" + label="bottom_panel" name="bottom_panel" + > + <button + name="add_btn" + layout="topleft" + top="9" left="10" width="16" height="16" + follows="bottom|left" + font="SansSerifBigBold" + image_hover_selected="add_btn.tga" + image_selected="add_btn.tga" + image_unselected="add_btn.tga" picture_style="true" + /> + <button + name="del_btn" + layout="topleft" + top_delta="0" left_pad="24" width="16" height="16" + follows="bottom|left" + font="SansSerifBigBold" + image_hover_selected="del_btn.tga" + image_selected="del_btn.tga" + image_unselected="del_btn.tga" + picture_style="true" + /> + <button + name="gear_btn" + enabled="false" + layout="topleft" + top_delta="0" left_pad="239" width="16" height="16" + follows="bottom|right" + font="SansSerifBigBold" + image_hover_selected="gear.tga" + image_selected="gear.tga" + image_unselected="gear.tga" + picture_style="true" + /> + </panel> + </panel> + <panel + layout="topleft" + height="390" width="332" + follows="left|top|right|bottom" + background_visible="true" bevel_style="bright" bg_alpha_color="0.7 0.7 0.7 1" + label="Groups" name="groups_panel" + > + <group_list + layout="topleft" + top="2" left="0" width="332" height="357" + follows="left|top|right|bottom" + name="group_list" + /> + <panel + layout="topleft" + bottom="390" left="0" width="333" height="30" + follows="left|right|bottom" + background_visible="true" bevel_style="in" bg_alpha_color="black" + label="bottom_panel" name="bottom_panel" + > + <button + name="plus_btn" + layout="topleft" + top="9" left="10" width="16" height="16" + follows="bottom|left" + font="SansSerifBigBold" + image_hover_selected="add_btn.tga" + image_selected="add_btn.tga" + image_unselected="add_btn.tga" + picture_style="true" + /> + <button + name="minus_btn" + layout="topleft" + top_delta="0" left_pad="24" width="16" height="16" + follows="bottom|left" + font="SansSerifBigBold" + image_hover_selected="del_btn.tga" + image_selected="del_btn.tga" + image_unselected="del_btn.tga" + picture_style="true" + /> + <button + name="activate_btn" + layout="topleft" + top_delta="0" left_pad="24" width="16" height="16" + follows="bottom|left" + font="SansSerifBigBold" + image_hover_selected="activate_btn.tga" + image_selected="activate_btn.tga" + image_unselected="activate_btn.tga" + picture_style="true" + /> + <button + name="gear_btn" + enabled="false" + layout="topleft" + top_delta="0" left="305" width="16" height="16" + follows="bottom|right" + font="SansSerifBigBold" + image_hover_selected="gear.tga" + image_selected="gear.tga" + image_unselected="gear.tga" + picture_style="true" + /> + </panel> + </panel> + <panel + layout="topleft" + height="390" width="332" + follows="left|top|right|bottom" + background_visible="true" bevel_style="bright" bg_alpha_color="0.7 0.7 0.7 1" + label="Recent" name="recent_panel" + > + <avatar_list + layout="topleft" + top="2" left="0" width="332" height="357" + follows="left|top|right|bottom" + name="avatar_list" + /> + <panel + layout="topleft" + bottom="390" left="0" width="333" height="30" + follows="left|right|bottom" + background_visible="true" bevel_style="in" bg_alpha_color="black" + label="bottom_panel" name="bottom_panel" + > + <button + name="gear_btn" + enabled="false" + layout="topleft" + top="9" left="305" width="16" height="16" + follows="bottom|right" + font="SansSerifBigBold" + image_hover_selected="gear.tga" + image_selected="gear.tga" + image_unselected="gear.tga" + picture_style="true" + /> + </panel> + </panel> + </tab_container> + + <layout_stack + name="button_bar" + follows="left|right|bottom" + bottom="6" + left="6" + width="335" + height="27" + orientation="horizontal" + animate="false" + border_size="0"> + <layout_panel + name="view_profile_btn_panel" + border="false" + bottom="0" + default_tab_group="1" + follows="left|top|right" + height="25" + left="0" + min_width="85" + width="85" + visible="true" + > + <button + label="View Profile" + name="view_profile_btn" + layout="topleft" + width="85" height="25" + follows="top|left|right" + font="SansSerifSmallBold" + /> + </layout_panel> + <layout_panel + name="add_friend_btn_panel" + border="false" + bottom="0" + default_tab_group="1" + follows="left|top|right" + height="25" + left="0" + min_width="85" + width="85" + visible="true" + > + <button + label="Add Friend" + name="add_friend_btn" + layout="topleft" + width="85" height="25" + follows="top|left|right" + font="SansSerifSmallBold" + /> + </layout_panel> + <layout_panel + name="group_info_btn_panel" + border="false" + bottom="0" + default_tab_group="1" + follows="left|top|right" + height="25" + left="0" + min_width="80" + width="80" + visible="true" + > + <button + label="Group Info" + name="group_info_btn" + layout="topleft" + width="80" height="25" + follows="top|left|right" + font="SansSerifSmallBold" + /> + </layout_panel> + <layout_panel name="chat_btn_panel" + border="false" + bottom="0" + default_tab_group="1" + follows="left|top|right" + height="25" + left="0" + min_width="45" + width="45" + visible="true" + > + <button + label="Chat" + name="chat_btn" + layout="topleft" + width="45" height="25" + follows="top|left|right" + font="SansSerifSmallBold" + /> + </layout_panel> + <layout_panel + name="im_btn_panel" + border="false" + bottom="0" + default_tab_group="1" + follows="left|top|right" + height="25" + left="0" + min_width="35" + width="35" + visible="true" + > + <button + label="IM" + name="im_btn" + layout="topleft" + width="35" height="25" + follows="top|left|right" + font="SansSerifSmallBold" + /> + </layout_panel> + <layout_panel + name="call_btn_panel" + border="false" + bottom="0" + default_tab_group="1" + follows="left|top|right" + height="25" + left="0" + min_width="40" + width="40" + visible="false" + > + <button + label="Call" + name="call_btn" + enabled="false" + layout="topleft" + width="40" height="25" + follows="top|left|right" + font="SansSerifSmallBold" + /> + </layout_panel> + <layout_panel + name="teleport_btn_panel" + border="false" + bottom="0" + default_tab_group="1" + follows="left|top|right" + height="25" + left="0" + min_width="65" + width="65" + > + <button + label="Teleport" + name="teleport_btn" + width="65" + height="25" + layout="topleft" + follows="left|top|right" + font="SansSerifSmallBold" + /> + </layout_panel> + <layout_panel + name="share_btn_panel" + enabled="false" + border="false" + bottom="0" + default_tab_group="1" + follows="left|top|right" + height="25" + left="0" + min_width="50" + width="50" + visible="false" + > + <button + label="Share" + name="share_btn" + enabled="false" + layout="topleft" + width="50" + height="25" + follows="top|left|right" + font="SansSerifSmallBold" + /> + </layout_panel> + <layout_panel + name="more_btn_panel" + border="false" + bottom="0" + default_tab_group="1" + follows="left|top|right" + height="25" + left="0" + min_width="40" + width="40" + visible="true" + > + <button + label=">>" + name="more_btn" + enabled="false" + layout="topleft" + width="40" + height="25" + follows="top|right" + font="SansSerifSmallBold" + /> + </layout_panel> + </layout_stack> + <string name="no_people"> + No people + </string> + <string name="no_one_near"> + No-one near + </string> + <string name="no_friends"> + No friends + </string> + <panel + layout="topleft" + name="panel_profile_view" + class="panel_profile_view" + filename="panel_profile_view.xml" + top="0" + left="5" + width="345" + height="465" + follows="left|right|top|bottom" + visible="false" + /> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_pick_info.xml b/indra/newview/skins/default/xui/en/panel_pick_info.xml new file mode 100644 index 0000000000000000000000000000000000000000..fa04ba7f150639f97e60d81c90894094f0130023 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_pick_info.xml @@ -0,0 +1,184 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + background_visible="true" + bevel_style="in" + bg_alpha_color="0.2 0.2 0.2 1" + height="640" + layout="topleft" + left="0" + name="panel_pick_info" + top="0" + width="355"> + <button + follows="top|left" + height="20" + image_overlay="navbar_back.tga" + image_selected="navbar_bg_button.tga" + image_unselected="navbar_bg_button.tga" + layout="topleft" + left="10" + name="back_btn" + picture_style="true" + top="5" + width="20" /> + <text + type="string" + length="1" + follows="top" + font="SansSerifHugeBold" + height="15" + layout="topleft" + left="40" + name="title" + text_color="white" + top="0" + width="150"> + Pick Info + </text> + <panel + background_visible="true" + bg_alpha_color="0.5 0.5 0.5 1" + follows="left|right|top|bottom" + height="570" + layout="topleft" + left="10" + right="-10" + top="30"> + <texture_picker + enabled="false" + follows="left|top|right" + height="150" + layout="topleft" + left="10" + name="pick_snapshot" + right="-10" + top="10" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="10" + name="Name:"> + Name: + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="20" + layout="topleft" + left="10" + name="pick_name" + right="-10" + text_color="white" + word_wrap="true"> + [name] + </text> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left="10" + name="description_label" + v_pad="15" + valign="center"> + Description: + </text> + <text + type="string" + length="1" + follows="left|top|right" + height="40" + layout="topleft" + left="10" + name="pick_desc" + right="-10" + text_color="white" + v_pad="15" + valign="center" + word_wrap="true"> + [description] + </text> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left="10" + name="description_label" + v_pad="15" + valign="bottom"> + Location: + </text> + <text + type="string" + length="1" + follows="left|top" + height="30" + layout="topleft" + left="10" + name="pick_location" + text_color="white" + v_pad="15" + valign="center"> + [loading...] + </text> + </panel> + <panel + follows="left|right|bottom" + height="30" + layout="topleft" + left="10" + name="buttons" + right="-10" + top_pad="2"> + <button + follows="bottom|left" + font="SansSerifSmallBold" + height="25" + label="Edit" + layout="topleft" + left="10" + name="edit_btn" + top="3" + width="50" /> + <button + enabled="false" + follows="bottom|left" + font="SansSerifSmallBold" + height="25" + label="Teleport" + layout="topleft" + left="65" + name="teleport_btn" + top="3" + width="70" /> + <button + enabled="false" + follows="bottom|left" + font="SansSerifSmallBold" + height="25" + label="Show on Map" + layout="topleft" + left="140" + name="show_on_map_btn" + top="3" + width="90" /> + <button + enabled="false" + follows="bottom|right" + font="SansSerifSmallBold" + height="25" + label="Verb" + layout="topleft" + left="270" + name="verb_btn" + top="3" + width="50" /> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_picks.xml b/indra/newview/skins/default/xui/en/panel_picks.xml new file mode 100644 index 0000000000000000000000000000000000000000..95055f43dc4aaff57b76d6da931f7568b95b2970 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_picks.xml @@ -0,0 +1,173 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + background_visible="true" + bevel_style="in" + bg_alpha_color="0.5 0.5 0.5 1" + height="690" + label="Picks" + layout="topleft" + left="0" + name="panel_picks" + top="0" + width="355"> + <text + type="string" + length="1" + follows="top|left|right" + font="SansSerifHugeBold" + height="55" + layout="topleft" + left="10" + name="pick_title" + text_color="white" + top="10" + width="330" + word_wrap="true"> + [NAME]'s favorite places in Second Life... + </text> + <!-- below is a special title shown for the Agent on the "Picks" tab--> + <text + type="string" + length="1" + follows="top" + font="SansSerifHugeBold" + height="55" + layout="topleft" + left="10" + name="pick_title_agent" + text_color="white" + top="10" + visible="false" + width="330" + word_wrap="true"> + Tell everyone about your favorite Second Life places... + </text> + <scroll_container + follows="left|top|right|bottom" + height="550" + layout="topleft" + left="5" + reserve_scroll_corner="true" + width="345"> + <panel + background_visible="true" + bevel_style="in" + bg_alpha_color="0.6 0.6 0.6 1" + follows="left|top|right|bottom" + height="600" + layout="topleft" + left="0" + name="back_panel" + top="0" + width="325" /> + </scroll_container> + <panel + background_visible="true" + bevel_style="in" + bg_alpha_color="black" + enabled="false" + follows="left|right|bottom" + height="25" + label="bottom_panel" + layout="topleft" + left="5" + name="edit_panel" + visible="false" + width="345"> + <button + enabled="false" + follows="bottom|left" + font="SansSerifBigBold" + height="16" + image_hover_selected="gear.tga" + image_selected="gear.tga" + image_unselected="gear.tga" + layout="topleft" + left="5" + name="gear_menu_btn" + picture_style="true" + top="5" + width="16" /> + <button + follows="bottom|left" + font="SansSerifBigBold" + height="16" + image_disabled="add_btn.tga" + image_disabled_selected="add_btn.tga" + image_hover_selected="add_btn.tga" + image_selected="add_btn.tga" + image_unselected="add_btn.tga" + layout="topleft" + left="35" + name="new_btn" + picture_style="true" + tool_tip="Create New Pick at Current Location" + top="5" + width="16" /> + <button + follows="bottom|right" + font="SansSerifBigBold" + height="16" + image_disabled="del_btn.tga" + image_disabled_selected="del_btn.tga" + image_hover_selected="del_btn.tga" + image_selected="del_btn.tga" + image_unselected="del_btn.tga" + layout="topleft" + name="trash_btn" + picture_style="true" + right="-10" + top="5" + width="16" /> + </panel> + <panel + follows="left|right" + height="25" + layout="topleft" + left="0" + name="buttons_cucks" + top_pad="10" + width="345"> + <button + follows="bottom|left" + font="SansSerifSmallBold" + height="25" + label="Info" + layout="topleft" + left="10" + name="info_btn" + top="0" + width="50" /> + <button + follows="bottom|left" + font="SansSerifSmallBold" + height="25" + label="Teleport" + layout="topleft" + left="65" + name="teleport_btn" + top="0" + width="70" /> + <button + follows="bottom|left" + font="SansSerifSmallBold" + height="25" + label="Show on Map" + layout="topleft" + left="140" + name="show_on_map_btn" + top="0" + width="90" /> + <button + enabled="false" + follows="bottom|right" + font="SansSerifSmallBold" + height="25" + label="Verb" + layout="topleft" + left="270" + name="verb_btn" + top="0" + width="50" /> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_places.xml b/indra/newview/skins/default/xui/en/panel_places.xml new file mode 100644 index 0000000000000000000000000000000000000000..66bb38b45e82098085b283700ed4228ecabd5e79 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_places.xml @@ -0,0 +1,86 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + background_visible="true" + bg_alpha_color="0.3 0.3 0.3 1" + follows="left|top|right|bottom" + height="400" + label="Places" + layout="topleft" + left="0" + min_height="350" + min_width="240" + name="places panel" + top="400" + width="355"> + <search_editor + follows="left|top|right" + height="16" + label="Filter" + layout="topleft" + left="10" + name="Filter" + top="4" + width="335" /> + <tab_container + follows="left|top|right|bottom" + height="326" + layout="topleft" + left_delta="0" + name="Places Tabs" + tab_position="top" + top_pad="19" + width="335" /> + <panel + class="panel_landmark_info" + filename="panel_landmark_info.xml" + follows="left|top|right|bottom" + height="675" + layout="topleft" + left="0" + name="panel_landmark_info" + top="-310" + visible="false" + width="355" /> + <button + follows="bottom|left" + font="SansSerifSmallBold" + height="25" + label="TELEPORT" + layout="topleft" + left_delta="10" + name="teleport_btn" + top_pad="5" + width="90" /> + <button + follows="bottom|left" + font="SansSerifSmallBold" + height="25" + label="SHOW ON MAP" + layout="topleft" + left_pad="5" + name="map_btn" + top_delta="0" + width="110" /> + <button + enabled="false" + follows="bottom|left" + font="SansSerifSmallBold" + height="25" + label="SHARE" + layout="topleft" + left_pad="5" + name="share_btn" + top_delta="0" + width="60" /> + <button + enabled="false" + follows="bottom|right" + font="SansSerifSmallBold" + height="25" + label="â–¼" + layout="topleft" + left_pad="35" + name="overflow_btn" + top_delta="0" + width="30" /> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_preferences_chat.xml b/indra/newview/skins/default/xui/en/panel_preferences_chat.xml new file mode 100644 index 0000000000000000000000000000000000000000..bda437ab29d154681275a4ad07424c4d43ab2713 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_preferences_chat.xml @@ -0,0 +1,370 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + border="true" + follows="left|top|right|bottom" + height="408" + label="Text Chat" + layout="topleft" + left="102" + name="chat" + top="1" + width="517"> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="12" + mouse_opaque="false" + top="10" + width="128"> + Chat Font Size: + </text> + <radio_group + height="30" + layout="topleft" + left_pad="8" + control_name="ChatFontSize" + name="chat_font_size" + top_delta="0" + width="331"> + <radio_item + height="16" + label="Small" + layout="topleft" + left="0" + name="radio" + top="8" + width="98" /> + <radio_item + height="16" + label="Medium" + layout="topleft" + left_pad="12" + name="radio2" + top_delta="0" + width="98" /> + <radio_item + height="16" + label="Large" + layout="topleft" + left_pad="12" + name="radio3" + top_delta="0" + width="98" /> + </radio_group> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="12" + mouse_opaque="false" + name="text_box2" + top="54" + width="128"> + Chat Color: + </text> + <color_swatch + border_color="0.45098 0.517647 0.607843 1" + can_apply_immediately="true" + control_name="UserChatColor" + follows="left|top" + height="47" + label="You" + layout="topleft" + left_pad="8" + name="user" + top_delta="-1" + width="44" /> + <color_swatch + border_color="0.45098 0.517647 0.607843 1" + can_apply_immediately="true" + control_name="AgentChatColor" + follows="left|top" + height="47" + label="Others" + layout="topleft" + left_pad="10" + name="agent" + top_delta="0" + width="44" /> + <color_swatch + border_color="0.45098 0.517647 0.607843 1" + can_apply_immediately="true" + color="0.6 0.6 1 1" + control_name="IMChatColor" + follows="left|top" + height="47" + label="IM" + label_width="60" + layout="topleft" + left_pad="10" + name="im" + top_delta="0" + width="44" /> + <color_swatch + border_color="0.45098 0.517647 0.607843 1" + can_apply_immediately="true" + color="0.8 1 1 1" + control_name="SystemChatColor" + follows="left|top" + height="47" + label="System" + label_width="44" + layout="topleft" + left_pad="10" + name="system" + top_delta="0" + width="44" /> + <color_swatch + border_color="0.45098 0.517647 0.607843 1" + can_apply_immediately="true" + color="0.82 0.82 0.99 1" + control_name="ScriptErrorColor" + follows="left|top" + height="47" + label="Errors" + layout="topleft" + left_pad="10" + name="script_error" + top_delta="0" + width="44" /> + <color_swatch + border_color="0.45098 0.517647 0.607843 1" + can_apply_immediately="true" + color="0.7 0.9 0.7 1" + control_name="ObjectChatColor" + follows="left|top" + height="47" + label="Objects" + layout="topleft" + left="148" + name="objects" + top="103" + width="44" /> + <color_swatch + border_color="0.45098 0.517647 0.607843 1" + can_apply_immediately="true" + color="0.7 0.9 0.7 1" + control_name="llOwnerSayChatColor" + follows="left|top" + height="47" + label="Owner" + layout="topleft" + left_pad="10" + name="owner" + top_delta="0" + width="44" /> + <color_swatch + border_color="0.45098 0.517647 0.607843 1" + can_apply_immediately="true" + color="0 0 0 1" + control_name="BackgroundChatColor" + follows="left|top" + height="47" + label="Bubble" + layout="topleft" + left_pad="10" + name="background" + top_delta="0" + width="44" /> + <color_swatch + border_color="0.45098 0.517647 0.607843 1" + can_apply_immediately="true" + color="0.6 0.6 1 1" + control_name="HTMLLinkColor" + follows="left|top" + height="47" + label="URLs" + layout="topleft" + left_pad="10" + name="links" + top_delta="0" + width="44" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="12" + mouse_opaque="false" + name="text_box3" + top="168" + width="135"> + Chat Console: + </text> + <spinner + control_name="ChatPersistTime" + decimal_digits="0" + follows="left|top" + height="16" + increment="1" + initial_value="10" + label="Fade chat after" + label_width="80" + layout="topleft" + left_pad="1" + max_val="60" + min_val="2" + name="fade_chat_time" + top_delta="2" + width="130" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_pad="4" + mouse_opaque="false" + name="text_box4" + top_delta="0" + width="80"> + (seconds) + </text> + <spinner + control_name="ConsoleMaxLines" + decimal_digits="0" + follows="left|top" + height="16" + increment="1" + initial_value="10" + layout="topleft" + left_delta="58" + max_val="50" + min_val="1" + name="max_chat_count" + top_delta="0" + width="60" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_pad="5" + mouse_opaque="false" + name="text_box5" + top_delta="0" + width="60"> + (# lines) + </text> + <slider + control_name="ConsoleBackgroundOpacity" + follows="left|top" + height="12" + increment="0.05" + initial_value="1" + label="Opacity" + layout="topleft" + left="148" + name="console_opacity" + top="193" + width="200" /> + <check_box + control_name="ChatFullWidth" + height="16" + label="Use full screen width (Requires restart)" + layout="topleft" + left_delta="0" + name="chat_full_width_check" + top_pad="9" + width="239" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="12" + mouse_opaque="false" + name="text_box6" + top="245" + width="135"> + Chat Options: + </text> + <check_box + control_name="CloseChatOnReturn" + height="16" + label="Close chat bar after hitting return" + layout="topleft" + left_pad="1" + name="close_chat_on_return_check" + top_delta="2" + width="237" /> + <check_box + control_name="ArrowKeysMoveAvatar" + height="16" + label="Arrow keys always move avatar when chatting" + layout="topleft" + left_delta="0" + name="arrow_keys_move_avatar_check" + top_pad="4" + width="237" /> + <check_box + control_name="ChatShowTimestamps" + height="16" + label="Show timestamps in Local Chat" + layout="topleft" + left_delta="0" + name="show_timestamps_check" + top_pad="4" + width="237" /> + <check_box + control_name="ScriptErrorsAsChat" + height="16" + label="Show script errors and warnings as regular chat" + layout="topleft" + left_delta="0" + name="script_errors_as_chat" + top_pad="4" + width="275" /> + <check_box + control_name="PlayTypingAnim" + height="16" + initial_value="true" + label="Play typing animation when chatting" + layout="topleft" + left_delta="0" + name="play_typing_animation" + top_pad="4" + width="237" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="12" + mouse_opaque="false" + name="text_box7" + top="359" + width="128"> + Bubble Chat: + </text> + <check_box + control_name="UseChatBubbles" + height="16" + label="Show chat bubbles" + layout="topleft" + left_pad="8" + name="bubble_text_chat" + top_delta="1" + width="237" /> + <slider + control_name="ChatBubbleOpacity" + follows="left|top" + height="12" + increment="0.05" + initial_value="1" + label="Opacity" + layout="topleft" + left_delta="0" + name="bubble_chat_opacity" + top_pad="4" + width="200" /> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_preferences_general.xml b/indra/newview/skins/default/xui/en/panel_preferences_general.xml new file mode 100644 index 0000000000000000000000000000000000000000..b30bda3e5979abc4f1765220aa5e683cad337d7f --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_preferences_general.xml @@ -0,0 +1,427 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + border="true" + follows="left|top|right|bottom" + height="408" + label="General" + layout="topleft" + left="102" + name="general_panel" + top="1" + width="517"> + <combo_box + control_name="LoginLocation" + follows="left|bottom" + height="18" + layout="topleft" + left_delta="151" + name="start_location_combo" + top="7" + width="155"> + <combo_box.item + label="My Last Location" + value="last" /> + <combo_box.item + label="My Home" + value="home" /> + </combo_box> + <check_box + control_name="ShowStartLocation" + height="16" + initial_value="true" + label="Show Start Location on Login Screen" + layout="topleft" + left_delta="0" + name="show_location_checkbox" + top_pad="3" + width="256" /> + <combo_box + control_name="RenderName" + height="18" + layout="topleft" + left_delta="4" + name="fade_out_combobox" + top_pad="7" + width="146"> + <combo_box.item + label="Never" + value="0" /> + <combo_box.item + label="Show Temporarily" + value="1" /> + <combo_box.item + label="Always" + value="2" /> + </combo_box> + <check_box + control_name="SmallAvatarNames" + height="16" + initial_value="true" + label="Small Avatar Names" + layout="topleft" + left_delta="-4" + name="small_avatar_names_checkbox" + top_pad="9" + width="200" /> + <check_box + control_name="RenderNameHideSelf" + height="16" + label="Hide My Name On My Screen" + layout="topleft" + left_delta="0" + name="show_my_name_checkbox" + top_pad="2" + width="200" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="10" + name="group_titles_textbox" + top="120" + width="394"> + Group Titles: + </text> + <check_box + control_name="RenderHideGroupTitleAll" + height="16" + label="Hide All Group Titles" + layout="topleft" + left_delta="141" + name="show_all_title_checkbox" + top_delta="0" + width="256" /> + <check_box + control_name="RenderHideGroupTitle" + height="16" + label="Hide My Group Title" + layout="topleft" + left_delta="0" + name="show_my_title_checkbox" + top_pad="2" + width="256" /> + <color_swatch + border_color="0.45098 0.517647 0.607843 1" + control_name="EffectColor" + follows="left|top" + height="48" + layout="topleft" + left_delta="2" + name="effect_color_swatch" + tool_tip="Click to open Color Picker" + top_pad="8" + width="32" /> + <text + type="string" + length="1" + follows="left|top" + height="12" + layout="topleft" + left="10" + name="UI Size:" + top="203" + width="128"> + UI Size: + </text> + <spinner + control_name="UIScaleFactor" + height="16" + increment="0.025" + initial_value="1" + layout="topleft" + left_pad="16" + max_val="1.4" + min_val="0.75" + name="ui_scale_slider" + top_delta="-2" + width="58" /> + <check_box + control_name="UIAutoScale" + height="16" + label="Use resolution independent scale" + layout="topleft" + left_delta="-3" + name="ui_auto_scale" + top_pad="3" + width="256" /> + <spinner + control_name="AFKTimeout" + decimal_digits="0" + follows="left|top" + height="16" + increment="1" + initial_value="300" + label="Away Timeout:" + label_width="141" + layout="topleft" + left="10" + max_val="600" + min_val="30" + name="afk_timeout_spinner" + top="244" + width="202" /> + <check_box + control_name="NotifyMoneyChange" + height="16" + label="Notify when Linden dollars (L$) spent or received" + layout="topleft" + left="151" + name="notify_money_change_checkbox" + top="270" + width="256" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="10" + name="maturity_desired_label" + top="312" + width="394"> + Rating: + </text> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_delta="141" + name="maturity_desired_prompt" + top_delta="0" + width="394"> + I want to access content rated: + </text> + <combo_box + control_name="PreferredMaturity" + height="18" + layout="topleft" + left_delta="164" + name="maturity_desired_combobox" + top_delta="-2" + width="150"> + <combo_box.item + label="PG, Mature and Adult" + value="42" /> + <combo_box.item + label="PG and Mature" + value="21" /> + <combo_box.item + label="PG only" + value="13" /> + </combo_box> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_delta="0" + name="maturity_desired_textbox" + top_delta="2" + width="150"> + PG only + </text> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="10" + name="start_location_textbox" + top="10" + width="394"> + Start Location: + </text> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_delta="0" + name="show_names_textbox" + top_pad="34" + width="394"> + Show Names: + </text> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_delta="0" + name="effects_color_textbox" + top_pad="110" + width="394"> + Color For My Effects: + </text> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="220" + name="seconds_textbox" + top="244" + width="128"> + seconds + </text> + <text + type="string" + length="1" + follows="left|top" + height="18" + layout="topleft" + left="10" + name="crash_report_textbox" + top="344" + width="394"> + Crash reports: + </text> + <text + type="string" + length="1" + follows="left|top" + height="18" + layout="topleft" + left_delta="0" + name="language_textbox" + top_pad="4" + width="394"> + Language: + </text> + <text + type="string" + length="1" + follows="left|top" + height="18" + layout="topleft" + left_delta="293" + name="language_textbox2" + top_delta="1" + width="400"> + (Requires restart for full effect) + </text> + <combo_box + control_name="CrashSubmitBehavior" + height="18" + layout="topleft" + left="153" + name="crash_behavior_combobox" + top="344" + width="146"> + <combo_box.item + enabled="true" + label="Ask before sending" + value="Ask before sending" /> + <combo_box.item + enabled="true" + label="Always send" + value="Always send" /> + <combo_box.item + enabled="true" + label="Never send" + value="Never send" /> + </combo_box> + <combo_box + allow_text_entry="true" + control_name="Language" + follows="left|bottom" + height="16" + layout="topleft" + left_delta="0" + max_chars="135" + name="language_combobox" + top_pad="4" + width="146"> + <combo_box.item + enabled="true" + label="System Default" + value="default" /> + <combo_box.item + enabled="true" + label="English" + value="en" /> + <combo_box.item + enabled="true" + label="Dansk (Danish) - Beta" + value="da" /> + <combo_box.item + enabled="true" + label="Deutsch (German) - Beta" + value="de" /> + <combo_box.item + enabled="true" + label="Español (Spanish) - Beta" + value="es" /> + <combo_box.item + enabled="true" + label="Français (French) - Beta" + value="fr" /> + <combo_box.item + enabled="true" + label="Italiano (Italian) - Beta" + value="it" /> + <combo_box.item + enabled="true" + label="Magyar (Hungarian) - Beta" + value="hu" /> + <combo_box.item + enabled="true" + label="Nederlands (Dutch) - Beta" + value="nl" /> + <combo_box.item + enabled="true" + label="Polski (Polish) - Beta" + value="pl" /> + <combo_box.item + enabled="true" + label="Portugués (Portuguese) - Beta" + value="pt" /> + <combo_box.item + enabled="true" + label="РуÑÑкий (Russian) - Beta" + value="ru" /> + <combo_box.item + enabled="true" + label="Türkçe (Turkish) - Beta" + value="tr" /> + <combo_box.item + enabled="true" + label="УкраїнÑька (Ukrainian) - Beta" + value="uk" /> + <combo_box.item + enabled="true" + label="䏿–‡ (简体) (Chinese) - Beta" + value="zh" /> + <combo_box.item + enabled="true" + label="日本語 (Japanese) - Beta" + value="ja" /> + <combo_box.item + enabled="true" + label="한êµì–´ (Korean) - Beta" + value="ko" /> + <combo_box.item + enabled="true" + label="Test Language" + value="test" /> + </combo_box> + <check_box + control_name="LanguageIsPublic" + height="16" + label="Share language with objects" + layout="topleft" + left_delta="-2" + name="language_is_public" + tool_tip="This lets in-world objects know your preferred language." + top_pad="2" + width="256" /> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml new file mode 100644 index 0000000000000000000000000000000000000000..8db8c8f31df518e9a4926f01938fc0f22bdaddb8 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml @@ -0,0 +1,921 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + border="true" + follows="left|top|right|bottom" + height="408" + label="Graphics" + layout="topleft" + left="102" + name="Display panel" + top="1" + width="517"> + <panel.string + name="resolution_format"> + [RES_X] x [RES_Y] + </panel.string> + <panel.string + name="aspect_ratio_text"> + [NUM]:[DEN] + </panel.string> + <button + follows="left|top" + height="18" + label="?" + layout="topleft" + left="470" + name="GraphicsPreferencesHelpButton" + top="4" + width="22"> + <button.commit_callback + function="Pref.OpenHelp" /> + </button> + <check_box + control_name="NotFullScreen" + height="16" + label="Run Second Life in a window" + layout="topleft" + left_delta="-460" + name="windowed mode" + top_delta="3" + width="100"> + <check_box.commit_callback + function="Pref.OpenHelp" /> + </check_box> + <text_editor + make_visible_control="NotFullScreen" + type="string" + length="1" + bg_readonly_color="0 0 0 0" + enabled="false" + follows="left|top" + height="20" + hide_border="true" + hide_scrollbar="true" + layout="topleft" + left_delta="0" + max_length="65535" + name="FullScreenInfo" + tab_stop="false" + top_delta="16" + width="350" + word_wrap="true"> + If unchecked, viewer will display full-screen when logged in. + </text_editor> + <text + make_visible_control="NotFullScreen" + type="string" + length="1" + follows="left|top" + height="12" + layout="topleft" + left_delta="0" + name="WindowSizeLabel" + top_pad="7" + width="128"> + Window Size: + </text> + <combo_box + make_visible_control="NotFullScreen" + height="18" + layout="topleft" + left_pad="47" + name="windowsize combo" + top_delta="-1" + width="150"> + <combo_box.item + enabled="true" + label="640x480" + value="640 x 480" /> + <combo_box.item + enabled="true" + label="800x600 " + value="800 x 600" /> + <combo_box.item + enabled="true" + label="720x480 (NTSC)" + value="720 x 480" /> + <combo_box.item + enabled="true" + label="768x576 (PAL)" + value="768 x 576" /> + <combo_box.item + enabled="true" + label="1024x768" + value="1024 x 768" /> + </combo_box> + <text + make_invisible_control="NotFullScreen" + type="string" + length="1" + follows="left|top" + height="12" + layout="topleft" + left_delta="-175" + name="DisplayResLabel" + top_delta="1" + width="128"> + Display Resolution: + </text> + <combo_box + make_invisible_control="NotFullScreen" + height="18" + layout="topleft" + left_pad="47" + name="fullscreen combo" + top_delta="-1" + width="150" /> + <text + make_invisible_control="NotFullScreen" + type="string" + length="1" + follows="left|top" + height="12" + layout="topleft" + left="10" + name="AspectRatioLabel1" + tool_tip="width / height" + top="27" + width="160"> + Aspect Ratio: + </text> + <combo_box + make_invisible_control="NotFullScreen" + allow_text_entry="true" + height="16" + layout="topleft" + left_pad="15" + max_chars="100" + name="aspect_ratio" + tool_tip="width / height" + top_delta="0" + width="150"> + <combo_box.item + enabled="true" + label="4:3 (Standard CRT)" + value="1.333333" /> + <combo_box.item + enabled="true" + label="5:4 (1280x1024 LCD)" + value="1.25" /> + <combo_box.item + enabled="true" + label="8:5 (Widescreen)" + value="1.6" /> + <combo_box.item + enabled="true" + label="16:9 (Widescreen)" + value="1.7777777" /> + <combo_box.commit_callback + function="setControlFalse" + parameter="FullScreenAutoDetectAspectRatio" /> + </combo_box> + <check_box + make_invisible_control="NotFullScreen" + control_name="FullScreenAutoDetectAspectRatio" + height="16" + label="Auto-detect ratio" + layout="topleft" + left_pad="23" + name="aspect_auto_detect" + top_delta="1" + width="256"> + <check_box.commit_callback + function="Pref.AutoDetectAspect" /> + </check_box> + <text + type="string" + length="1" + follows="left|top" + height="12" + layout="topleft" + left="10" + name="HigherText" + top="73" + width="80"> + Quality and + </text> + <text + type="string" + length="1" + follows="left|top" + height="12" + layout="topleft" + left_delta="0" + name="QualityText" + top_pad="2" + width="95"> + Performance: + </text> + <text + type="string" + length="1" + follows="left|top" + height="12" + layout="topleft" + left="115" + name="FasterText" + top="74" + width="80"> + Faster + </text> + <text + type="string" + length="1" + follows="left|top" + height="12" + layout="topleft" + left="158" + name="ShadersPrefText" + top="93" + width="40"> + Low + </text> + <text + type="string" + length="1" + follows="left|top" + height="12" + layout="topleft" + left_pad="7" + name="ShadersPrefText2" + top_delta="0" + width="40"> + Mid + </text> + <text + type="string" + length="1" + follows="left|top" + height="12" + layout="topleft" + left_pad="7" + name="ShadersPrefText3" + top_delta="0" + width="40"> + High + </text> + <text + type="string" + length="1" + follows="left|top" + height="12" + layout="topleft" + left_pad="7" + name="ShadersPrefText4" + top_delta="0" + width="40"> + Ultra + </text> + <text + type="string" + length="1" + follows="left|top" + height="12" + layout="topleft" + left="334" + name="HigherText2" + top="68" + width="80"> + Higher + </text> + <text + type="string" + length="1" + follows="left|top" + height="12" + layout="topleft" + left_delta="0" + name="QualityText2" + top_pad="2" + width="95"> + Quality + </text> + <icon + color="0.12 0.12 0.12 1" + height="14" + image_name="rounded_square.tga" + layout="topleft" + left="173" + name="LowGraphicsDivet" + top="75" + width="2" /> + <icon + color="0.12 0.12 0.12 1" + height="14" + image_name="rounded_square.tga" + layout="topleft" + left_pad="42" + name="MidGraphicsDivet" + top_delta="0" + width="2" /> + <icon + color="0.12 0.12 0.12 1" + height="14" + image_name="rounded_square.tga" + layout="topleft" + left_pad="42" + name="HighGraphicsDivet" + top_delta="0" + width="2" /> + <icon + color="0.12 0.12 0.12 1" + height="14" + image_name="rounded_square.tga" + layout="topleft" + left_pad="42" + name="UltraGraphicsDivet" + top_delta="0" + width="2" /> + <slider + control_name="RenderQualityPerformance" + decimal_digits="0" + follows="left|top" + height="16" + increment="1" + initial_value="0" + layout="topleft" + left_delta="-140" + max_val="3" + name="QualityPerformanceSelection" + show_text="false" + top_delta="-1" + width="150"> + <slider.commit_callback + function="Pref.QualityPerformance"/> + </slider> + <check_box + control_name="RenderCustomSettings" + height="16" + initial_value="true" + label="Custom" + layout="topleft" + left_pad="70" + name="CustomSettings" + top_delta="1" + width="256"> + <check_box.commit_callback + function="Pref.ChangeCustom" /> + </check_box> + <panel + make_visible_control="RenderCustomSettings" + border="true" + follows="top|left" + height="260" + label="CustomGraphics" + layout="topleft" + left="5" + name="CustomGraphics Panel" + top="115" + width="485"> + <text + type="string" + length="1" + follows="left|top" + height="12" + layout="topleft" + left_delta="5" + name="ShadersText" + top="3" + width="128"> + Shaders: + </text> + <check_box + control_name="RenderObjectBump" + height="16" + initial_value="true" + label="Bump Mapping and Shiny" + layout="topleft" + left_delta="0" + name="BumpShiny" + top_pad="7" + width="256" /> + <check_box + control_name="VertexShaderEnable" + height="16" + initial_value="true" + label="Basic Shaders" + layout="topleft" + left_delta="0" + name="BasicShaders" + tool_tip="Disabling this option may prevent some graphics card drivers from crashing." + top_pad="1" + width="315"> + <check_box.commit_callback + function="Pref.VertexShaderEnable" /> + </check_box> + <check_box + control_name="WindLightUseAtmosShaders" + height="16" + initial_value="true" + label="Atmospheric Shaders" + layout="topleft" + left_delta="0" + name="WindLightUseAtmosShaders" + top_pad="1" + width="256"> + <check_box.commit_callback + function="Pref.VertexShaderEnable" /> + </check_box> + <check_box + control_name="RenderWaterReflections" + height="16" + initial_value="true" + label="Water Reflections" + layout="topleft" + left_delta="0" + name="Reflections" + top_pad="1" + width="256"> + <check_box.commit_callback + function="Pref.VertexShaderEnable" /> + </check_box> + <text + type="string" + length="1" + follows="left|top" + height="12" + layout="topleft" + left_delta="0" + name="ReflectionDetailText" + top_pad="7" + width="128"> + Reflection Detail: + </text> + <radio_group + control_name="RenderReflectionDetail" + draw_border="false" + height="70" + layout="topleft" + left_delta="-2" + name="ReflectionDetailRadio" + top_pad="3" + width="321"> + <radio_item + height="16" + label="Terrain and Trees" + layout="topleft" + left="3" + name="0" + top="3" + width="315" /> + <radio_item + height="16" + label="All Static Objects" + layout="topleft" + left_delta="0" + name="1" + top_delta="16" + width="315" /> + <radio_item + height="16" + label="All Avatars and Objects" + layout="topleft" + left_delta="0" + name="2" + top_delta="16" + width="315" /> + <radio_item + height="16" + label="Everything" + layout="topleft" + left_delta="0" + name="3" + top_delta="16" + width="315" /> + </radio_group> + <text + type="string" + length="1" + follows="left|top" + height="12" + layout="topleft" + left_delta="2" + name="AvatarRenderingText" + top_pad="5" + width="128"> + Avatar Rendering: + </text> + <check_box + control_name="RenderUseImpostors" + height="16" + initial_value="true" + label="Avatar Impostors" + layout="topleft" + left_delta="0" + name="AvatarImpostors" + top_pad="7" + width="256" /> + <check_box + control_name="RenderAvatarVP" + height="16" + initial_value="true" + label="Hardware Skinning" + layout="topleft" + left_delta="0" + name="AvatarVertexProgram" + top_pad="1" + width="256"> + <check_box.commit_callback + function="Pref.VertexShaderEnable" /> + </check_box> + <check_box + control_name="RenderAvatarCloth" + height="16" + initial_value="true" + label="Avatar Cloth" + layout="topleft" + left_delta="0" + name="AvatarCloth" + top_pad="1" + width="256" /> + <text + type="string" + length="1" + follows="left|top" + height="12" + layout="topleft" + left="457" + name="DrawDistanceMeterText1" + top="3" + width="128"> + m + </text> + <text + type="string" + length="1" + follows="left|top" + height="12" + layout="topleft" + left_delta="6" + name="DrawDistanceMeterText2" + top_delta="0" + width="128"> + m + </text> + <slider + control_name="RenderFarClip" + decimal_digits="0" + follows="left|top" + height="16" + increment="8" + initial_value="160" + label="Draw Distance:" + label_width="140" + layout="topleft" + left_delta="-248" + max_val="512" + min_val="64" + name="DrawDistance" + top_delta="0" + width="255"> + <slider.commit_callback + function="Pref.UpdateMeterText" /> + </slider> + <slider + control_name="RenderMaxPartCount" + decimal_digits="0" + follows="left|top" + height="16" + increment="256" + initial_value="4096" + label="Max. Particle Count:" + label_width="140" + layout="topleft" + left_delta="0" + max_val="8192" + name="MaxParticleCount" + top_pad="4" + width="262" /> + <slider + control_name="RenderGlowResolutionPow" + decimal_digits="0" + follows="left|top" + height="16" + increment="1" + initial_value="8" + label="Post Process Quality:" + label_width="140" + layout="topleft" + left_delta="0" + max_val="9" + min_val="8" + name="RenderPostProcess" + show_text="false" + top_pad="4" + width="223"> + <slider.commit_callback + function="Pref.UpdateSliderText" + parameter="PostProcessText" /> + </slider> + <text + type="string" + length="1" + follows="left|top" + height="12" + layout="topleft" + left_delta="0" + name="MeshDetailText" + top_pad="5" + width="128"> + Mesh Detail: + </text> + <slider + control_name="RenderVolumeLODFactor" + follows="left|top" + height="16" + increment="0.125" + initial_value="160" + label=" Objects:" + label_width="140" + layout="topleft" + left_delta="0" + max_val="2" + name="ObjectMeshDetail" + show_text="false" + top_pad="6" + width="223"> + <slider.commit_callback + function="Pref.UpdateSliderText" + parameter="ObjectMeshDetailText" /> + </slider> + <slider + control_name="RenderFlexTimeFactor" + follows="left|top" + height="16" + initial_value="160" + label=" Flexiprims:" + label_width="140" + layout="topleft" + left_delta="0" + name="FlexibleMeshDetail" + show_text="false" + top_pad="4" + width="223"> + <slider.commit_callback + function="Pref.UpdateSliderText" + parameter="FlexibleMeshDetailText" /> + </slider> + <slider + control_name="RenderTreeLODFactor" + follows="left|top" + height="16" + increment="0.125" + initial_value="160" + label=" Trees:" + label_width="140" + layout="topleft" + left_delta="0" + name="TreeMeshDetail" + show_text="false" + top_pad="4" + width="223"> + <slider.commit_callback + function="Pref.UpdateSliderText" + parameter="TreeMeshDetailText" /> + </slider> + <slider + control_name="RenderAvatarLODFactor" + follows="left|top" + height="16" + increment="0.125" + initial_value="160" + label=" Avatars:" + label_width="140" + layout="topleft" + left_delta="0" + name="AvatarMeshDetail" + show_text="false" + top_pad="4" + width="223"> + <slider.commit_callback + function="Pref.UpdateSliderText" + parameter="AvatarMeshDetailText" /> + </slider> + <slider + control_name="RenderTerrainLODFactor" + follows="left|top" + height="16" + increment="0.125" + initial_value="160" + label=" Terrain:" + label_width="140" + layout="topleft" + left_delta="0" + max_val="2" + min_val="1" + name="TerrainMeshDetail" + show_text="false" + top_pad="4" + width="223"> + <slider.commit_callback + function="Pref.UpdateSliderText" + parameter="TerrainMeshDetailText" /> + </slider> + <slider + control_name="WLSkyDetail" + enabled_control="WindLightUseAtmosShaders" + decimal_digits="0" + follows="left|top" + height="16" + increment="8" + initial_value="160" + label=" Sky:" + label_width="140" + layout="topleft" + left_delta="0" + max_val="128" + min_val="16" + name="SkyMeshDetail" + show_text="false" + top_pad="4" + width="223"> + <slider.commit_callback + function="Pref.UpdateSliderText" + parameter="SkyMeshDetailText" /> + </slider> + <text + type="string" + length="1" + follows="left|top" + height="12" + layout="topleft" + left="444" + name="PostProcessText" + top="305" + width="128"> + Low + </text> + <text + type="string" + length="1" + follows="left|top" + height="12" + layout="topleft" + left_delta="0" + name="ObjectMeshDetailText" + top_pad="26" + width="128"> + Low + </text> + <text + type="string" + length="1" + follows="left|top" + height="12" + layout="topleft" + left_delta="0" + name="FlexibleMeshDetailText" + top_pad="8" + width="128"> + Low + </text> + <text + type="string" + length="1" + follows="left|top" + height="12" + layout="topleft" + left_delta="0" + name="TreeMeshDetailText" + top_pad="8" + width="128"> + Low + </text> + <text + type="string" + length="1" + follows="left|top" + height="12" + layout="topleft" + left_delta="0" + name="AvatarMeshDetailText" + top_pad="8" + width="128"> + Low + </text> + <text + type="string" + length="1" + follows="left|top" + height="12" + layout="topleft" + left_delta="0" + name="TerrainMeshDetailText" + top_pad="8" + width="128"> + Low + </text> + <text + enabled_control="WindLightUseAtmosShaders" + type="string" + length="1" + follows="left|top" + height="12" + layout="topleft" + left_delta="0" + name="SkyMeshDetailText" + top_pad="8" + width="128"> + Low + </text> + <text + type="string" + length="1" + follows="left|top" + height="12" + layout="topleft" + left_delta="-230" + name="LightingDetailText" + top_pad="8" + width="128"> + Lighting Detail: + </text> + <radio_group + control_name="RenderLightingDetail" + draw_border="false" + height="38" + layout="topleft" + left_delta="0" + name="LightingDetailRadio" + top_pad="5" + width="321"> + <radio_item + height="16" + label="Sun and moon only" + layout="topleft" + left="3" + name="SunMoon" + top="3" + width="156" /> + <radio_item + height="16" + label="Nearby local lights" + layout="topleft" + left_delta="0" + name="LocalLights" + top_delta="16" + width="156" /> + </radio_group> + <text + type="string" + length="1" + follows="left|top" + height="12" + layout="topleft" + left="360" + name="TerrainDetailText" + top="465" + width="128"> + Terrain Detail: + </text> + <radio_group + control_name="RenderTerrainDetail" + draw_border="false" + height="38" + layout="topleft" + left_delta="0" + name="TerrainDetailRadio" + top_pad="5" + width="321"> + <radio_item + height="16" + label="Low" + layout="topleft" + left="3" + name="0" + top="3" + width="315" /> + <radio_item + height="16" + label="High" + layout="topleft" + left_delta="0" + name="2" + top_delta="16" + width="315" /> + </radio_group> + </panel> + <button + height="20" + label="Recommended Settings" + layout="topleft" + left="130" + name="Defaults" + top="380" + width="170"> + <button.commit_callback + function="Pref.HardwareDefaults" /> + </button> + <button + height="20" + label="Hardware Options" + label_selected="Hardware Options" + layout="topleft" + left_pad="10" + name="GraphicsHardwareButton" + top_delta="0" + width="170"> + <button.commit_callback + function="Pref.HardwareSettings" /> + </button> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_profile.xml b/indra/newview/skins/default/xui/en/panel_profile.xml new file mode 100644 index 0000000000000000000000000000000000000000..a4363d58586b9e93c3364fbba5c2a98cf12e220c --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_profile.xml @@ -0,0 +1,574 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + background_visible="true" + bevel_style="in" + bg_alpha_color="0.5 0.5 0.5 1" + follows="left|top|right|bottom" + height="705" + label="Profile" + layout="topleft" + left="10" + mouse_opaque="false" + name="panel_profile" + top="10" + width="355"> + <panel.string + name="CaptionTextAcctInfo"> + [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION] + </panel.string> + <panel.string + name="AcctTypeResident"> + Resident. + </panel.string> + <panel.string + name="AcctTypeTrial"> + Trial + </panel.string> + <panel.string + name="AcctTypeCharterMember"> + Charter Member + </panel.string> + <panel.string + name="AcctTypeEmployee"> + Linden Lab Employee + </panel.string> + <panel.string + name="PaymentInfoUsed"> + Payment Info Used + </panel.string> + <panel.string + name="PaymentInfoOnFile"> + Payment Info On File + </panel.string> + <panel.string + name="NoPaymentInfoOnFile"> + No Payment Info On File + </panel.string> + <panel.string + name="AgeVerified"> + Age-verified + </panel.string> + <panel.string + name="NotAgeVerified"> + Not Age-verified + </panel.string> + <scroll_container + follows="left|top|right|bottom" + height="690" + layout="topleft" + left="1" + name="profile_scroll" + width="354"> + <panel + height="710" + layout="topleft" + left="0" + top="0" + width="320"> + <panel + follows="left|top" + height="120" + layout="topleft" + left="9" + name="lifes_images_panel" + top_pad="15" + width="250"> + <panel + follows="left|top" + height="120" + layout="topleft" + left="0" + name="second_life_image_panel" + top="0" + width="125"> + <text + type="string" + follows="left|top|right|bottom" + font="SansSerifBold" + height="20" + layout="topleft" + left="0" + name="first_life_photo_title_text" + text_color="white" + top="0" + width="125"> + Second Life photo: + </text> + <texture_picker + allow_no_texture="true" + default_image_name="None" + enabled="false" + follows="top|left" + height="105" + layout="topleft" + left="0" + name="2nd_life_pic" + top_pad="5" + width="105" /> + </panel> + <panel + follows="left|top" + height="120" + layout="topleft" + left_pad="1" + name="first_life_image_panel" + top="0" + width="125"> + <text + type="string" + follows="left|top|right|bottom" + font="SansSerifBold" + height="20" + layout="topleft" + left="0" + name="second_life_photo_title_text" + text_color="white" + top="0" + width="125"> + First Life photo: + </text> + <texture_picker + allow_no_texture="true" + default_image_name="None" + enabled="false" + follows="top|left" + height="105" + layout="topleft" + left="0" + name="1st_life_pic" + top_pad="5" + width="105" /> + </panel> + </panel> + <panel + follows="left|top|right" + height="30" + layout="topleft" + left="0" + name="status_panel" + top="135" + width="300"> + <text + follows="left|top" + font="SansSerifBold" + font.style="ITALIC" + height="15" + layout="topleft" + left="9" + name="online_status" + text_color="green" + width="100" /> + <text + type="string" + length="1" + follows="left|top" + font="SansSerifBold" + font.style="ITALIC" + height="15" + layout="topleft" + left="9" + name="status_message" + text_color="0.1 0.1 0.1 1" + width="300"> + <!--TBD--> + </text> + </panel> + <panel + follows="left|top|right" + height="80" + layout="topleft" + left="0" + name="status_me_panel" + top="135" + width="300"> + <text + type="string" + follows="left|top" + font="SansSerifBold" + height="15" + layout="topleft" + left="9" + name="online_me_status_text" + text_color="white" + width="100"> + Status: + </text> + <combo_box + font="SansSerifBold" + height="18" + layout="topleft" + left="10" + name="status_combo" + width="150"> + <combo_box.item + label="Online" + value="online" /> + <combo_box.item + label="Away" + value="away" /> + <combo_box.item + label="Busy" + value="busy" /> + </combo_box> + <text + type="string" + follows="left|top" + font="SansSerifBold" + height="15" + layout="topleft" + left="9" + name="status_me_message_text" + text_color="white" + width="300"> + What're you up to? + </text> + <line_editor + type="string" + border_style="line" + border_thickness="1" + follows="left|top|right" + font="SansSerifBold" + font.style="ITALIC" + height="20" + layout="topleft" + left="9" + name="status_me_message_edit" + select_on_focus="true" + text_color="0.5 0.5 0.5 1" + width="300"> + Type a message about what you're doing in SL! + </line_editor> + </panel> + <text + type="string" + + follows="left|top" + font="SansSerifBold" + height="15" + layout="topleft" + left="9" + name="title_sl_descr_text" + text_color="white" + top_pad="10" + width="290"> + Second Life description: + </text> + <text + type="string" + follows="left|top|right" + font="SansSerif" + height="45" + layout="topleft" + left="9" + name="sl_description_edit" + text_color="0.1 0.1 0.1 1" + width="290" + word_wrap="true"> + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. + </text> + <text + type="string" + follows="left|top" + font="SansSerifBold" + height="15" + layout="topleft" + left="9" + name="title_fl_descr_text" + text_color="white" + top_pad="10" + width="290"> + First Life description: + </text> + <text + type="string" + follows="left|top|right" + font="SansSerif" + height="45" + layout="topleft" + left="9" + name="fl_description_edit" + text_color="0.1 0.1 0.1 1" + width="290" + word_wrap="true"> + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. + </text> + <text + type="string" + follows="left|top" + font="SansSerifBold" + height="15" + layout="topleft" + left="9" + name="title_groups_text" + text_color="white" + top_pad="10" + width="290"> + Second Life groups: + </text> + <text + type="string" + follows="left|top|right" + font="SansSerif" + height="45" + layout="topleft" + left="9" + name="sl_groups" + text_color="0.1 0.1 0.1 1" + width="290" + word_wrap="true"> + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. + </text> + <text + type="string" + follows="left|top" + font="SansSerifBold" + height="15" + layout="topleft" + left="9" + name="title_homepage_text" + text_color="white" + top_pad="10" + width="100"> + Homepage: + </text> + <text + type="string" + follows="left|top|right" + font="SansSerif" + font.style="UNDERLINE" + height="15" + layout="topleft" + left="9" + name="homepage_edit" + text_color="0.2 0.2 1 1" + width="290"> + TODO + </text> + <text + type="string" + follows="left|top" + font="SansSerifBold" + height="15" + layout="topleft" + left="9" + name="title_member_text" + text_color="white" + top_pad="10" + width="100"> + Member since: + </text> + <text + type="string" + follows="left|top|right" + font="SansSerif" + height="15" + layout="topleft" + left="9" + name="register_date" + text_color="0.1 0.1 0.1 1" + width="290" + word_wrap="true"> + 05/31/1976 + </text> + <text + type="string" + follows="left|top" + font="SansSerifBold" + height="15" + layout="topleft" + left="9" + name="title_acc_status_text" + text_color="white" + top_pad="10" + width="100"> + Account status: + </text> + <text + type="string" + follows="left|top|right" + font="SansSerif" + height="30" + layout="topleft" + left="9" + name="acc_status_text" + text_color="0.1 0.1 0.1 1" + width="290" + word_wrap="true"> + Resident. No payment info on file. + </text> + <panel + follows="left|top|right" + height="15" + layout="topleft" + left="9" + name="account_actions_panel" + width="335"> + <text + type="string" + follows="left|top" + font="SansSerif" + font.style="UNDERLINE" + height="15" + layout="topleft" + left="0" + name="my_account_link" + text_color="0.2 0.2 1 1" + top="0" + width="65"> + Update + </text> + <text + type="string" + follows="left|top" + font="SansSerif" + font.style="UNDERLINE" + height="15" + layout="topleft" + left="70" + name="my_account_link" + text_color="0.2 0.2 1 1" + top="0" + width="80"> + My Account + </text> + </panel> + <text + type="string" + follows="left|top" + font="SansSerifBold" + height="15" + layout="topleft" + name="title_partner_text" + text_color="white" + top_pad="10" + width="100"> + Partner: + </text> + <panel + follows="left|top|right" + height="15" + layout="topleft" + left="9" + name="partner_data_panel" + width="335"> + <text + type="string" + follows="left|top|right" + font="SansSerif" + height="15" + layout="topleft" + left="0" + name="partner_text" + text_color="0.1 0.1 0.1 1" + top="0" + width="290" + word_wrap="true"> + [FIRST] [LAST] + </text> + <text + type="string" + follows="top|right" + font="SansSerif" + font.style="UNDERLINE" + halign="right" + height="15" + layout="topleft" + left="270" + name="partner_edit_link" + text_color="0.2 0.2 1 1" + top="0" + width="40"> + Edit + </text> + </panel> + <panel + follows="left|top" + height="30" + layout="topleft" + name="profile_buttons_panel" + width="350"> + <button + follows="bottom|left" + font="SansSerifSmallBold" + height="25" + label="Add Friend" + layout="topleft" + left="5" + mouse_opaque="false" + name="add_friend" + top="0" + width="75" /> + <button + follows="bottom|left" + font="SansSerifSmallBold" + height="25" + label="IM" + layout="topleft" + left_pad="5" + name="im" + top_delta="0" + width="40" /> + <button + enabled="false" + follows="bottom|left" + font="SansSerifSmallBold" + height="25" + label="Call" + layout="topleft" + left_pad="5" + name="call" + top_delta="0" + width="50" /> + <button + follows="bottom|left" + font="SansSerifSmallBold" + height="25" + label="Teleport" + layout="topleft" + left_pad="5" + name="teleport" + top_delta="0" + width="65" /> + <button + enabled="false" + follows="bottom|left" + font="SansSerifSmallBold" + height="25" + label="Share" + layout="topleft" + left_pad="15" + name="share" + top_delta="0" + width="50" /> + </panel> + <panel + follows="left|top" + height="30" + layout="topleft" + name="profile_me_buttons_panel" + visible="false" + width="350"> + <button + follows="bottom|left" + font="SansSerifSmallBold" + height="25" + label="Edit Profile" + layout="topleft" + left="0" + name="edit_profile_btn" + top="0" + width="105" /> + <button + follows="bottom|left" + font="SansSerifSmallBold" + height="25" + label="Edit Appearance" + layout="topleft" + left_pad="15" + name="edit_appearance_btn" + top_delta="0" + width="130" /> + </panel> + </panel> + </scroll_container> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_profile_view.xml b/indra/newview/skins/default/xui/en/panel_profile_view.xml new file mode 100644 index 0000000000000000000000000000000000000000..fa919776a718948c147694f1fc54ba296b2a2bc2 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_profile_view.xml @@ -0,0 +1,64 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + background_visible="true" + bg_alpha_color="0.3 0.3 0.3 1" + follows="left|top|right|bottom" + height="660" + label="Me" + layout="topleft" + left="0" + name="panel_target_profile" + top="0" + width="355"> + <button + layout="topleft" + name="back" + left="0" + top="5" + width="20" + height="20" + label="" + follows="top|left" + image_selected="navbar_bg_button.tga" + image_unselected="navbar_bg_button.tga" + image_overlay="navbar_back.tga"/> + <text + layout="topleft" + top="0" + left="30" + width="150" + height="20" + font="SansSerifHugeBold" + text_color="white" + follows="top|left" + mouse_opaque="true" + name="user_name">(Loading...)</text> + <tab_container + follows="left|top|right|bottom" + height="600" + layout="topleft" + left="0" + name="profile_tabs" + tab_position="top" + top="35" + width="355"> + <panel + class="panel_profile" + filename="panel_profile.xml" + label="Profile" + layout="topleft" + name="panel_profile"/> + <panel + class="panel_picks" + filename="panel_picks.xml" + label="Picks" + layout="topleft" + name="panel_picks"/> + <panel + class="panel_notes" + filename="panel_notes.xml" + label="Notes" + layout="topleft" + name="panel_notes"/> + </tab_container> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_progress.xml b/indra/newview/skins/default/xui/en/panel_progress.xml new file mode 100644 index 0000000000000000000000000000000000000000..6139bae8749a83faf01a47362d4c0c58347f6354 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_progress.xml @@ -0,0 +1,133 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + follows="left|bottom|right|top" + height="768" + layout="topleft" + left="0" + name="login_progress_panel" + top="768" + width="1024"> + <layout_stack + follows="left|right|top|bottom" + height="768" + layout="topleft" + left="0" + name="stack1" + orientation="horizontal" + top="0" + width="1024"> + <layout_panel + layout="topleft" + min_width="10" + name="panel1" + user_resize="false" + width="150" /> + <layout_panel + height="768" + layout="topleft" + min_width="640" + name="panel2" + user_resize="false" + width="640"> + <layout_stack + follows="left|right|top|bottom" + height="768" + layout="topleft" + left="0" + name="stack2" + top="0" + width="640"> + <layout_panel + height="200" + layout="topleft" + min_height="10" + name="panel3" + width="640" /> + <layout_panel + auto_resize="false" + height="250" + layout="topleft" + min_height="250" + name="panel4" + width="640"> + <icon + color="LoginProgressBoxCenterColor" + follows="left|right|bottom|top" + height="250" + image_name="rounded_square.tga" + layout="topleft" + left="0" + top="0" + width="640" /> + <text + follows="left|right|top" + font="SansSerif" + font_shadow="hard" + halign="center" + height="20" + layout="topleft" + left_delta="0" + name="title_text" + text_color="LoginProgressBoxTextColor" + top_delta="50" + width="640" /> + <text + follows="left|right|top" + font="SansSerif" + font_shadow="hard" + halign="center" + height="20" + layout="topleft" + left_delta="0" + name="progress_text" + text_color="LoginProgressBoxTextColor" + top_pad="5" + width="640" /> + <progress_bar + bottom="115" + color_bar="1 1 1 0.96" + follows="left|right|top" + height="16" + layout="topleft" + left="45" + name="login_progress_bar" + right="-45" /> + <text + follows="left|right|top|bottom" + font="SansSerif" + font_shadow="hard" + halign="center" + height="100" + layout="topleft" + left="20" + line_spacing="8" + name="message_text" + text_color="LoginProgressBoxTextColor" + top="145" + width="600" /> + </layout_panel> + <layout_panel + height="200" + layout="topleft" + min_width="10" + name="panel5" + width="640" /> + </layout_stack> + </layout_panel> + <layout_panel + layout="topleft" + min_width="10" + name="panel6" + user_resize="false" + width="150" /> + </layout_stack> + <button + follows="right|bottom" + height="22" + layout="topleft" + left="-86" + name="cancel_btn" + picture_style="true" + top="730" + width="70" /> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_region_covenant.xml b/indra/newview/skins/default/xui/en/panel_region_covenant.xml new file mode 100644 index 0000000000000000000000000000000000000000..7bd548d464e07774a2d2136a6ebd6fb7fda61f8a --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_region_covenant.xml @@ -0,0 +1,328 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + border="true" + follows="top|left" + height="320" + label="Covenant" + layout="topleft" + left="0" + name="Covenant" + top="320" + width="480"> + <panel.string + name="can_resell"> + Purchased land in this region may be resold. + </panel.string> + <panel.string + name="can_not_resell"> + Purchased land in this region may not be resold. + </panel.string> + <panel.string + name="can_change"> + Purchased land in this region may be joined or subdivided. + </panel.string> + <panel.string + name="can_not_change"> + Purchased land in this region may not be joined or subdivided. + </panel.string> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="20" + layout="topleft" + left="5" + mouse_opaque="false" + name="estate_section_lbl" + top="5" + width="100"> + Estate + </text> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left="10" + mouse_opaque="false" + name="estate_name_lbl" + top_pad="5" + width="100"> + Name: + </text> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left_pad="10" + mouse_opaque="false" + name="estate_name_text" + top_delta="0" + width="150"> + mainland + </text> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left="10" + mouse_opaque="false" + name="estate_owner_lbl" + top_pad="5" + width="100"> + Owner: + </text> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left_pad="10" + mouse_opaque="false" + name="estate_owner_text" + top_delta="0" + width="150"> + (none) + </text> + + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left="10" + mouse_opaque="false" + name="estate_cov_lbl" + top_pad="5" + width="100"> + Covenant: + </text> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left_pad="10" + mouse_opaque="false" + name="covenant_timestamp_text" + top_delta="0" + width="308"> + Last Modified Wed Dec 31 16:00:00 1969 + </text> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_pad="5" + name="covenant_help" + top_delta="-2" + width="18" /> + + <text_editor + type="string" + length="1" + enabled="false" + follows="left|top" + height="100" + layout="topleft" + left="110" + max_length="65535" + name="covenant_editor" + top_delta="30" + width="340" + word_wrap="true"> + There is no Covenant provided for this Estate. + </text_editor> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="Reset" + layout="topleft" + left_delta="250" + name="reset_covenant" + top_pad="5" + width="90" /> + + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left="120" + name="covenant_help_text" + top_pad="10" + width="460"> + Changes to the covenant will show on all parcels in the estate. + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_delta="0" + name="covenant_instructions" + top_pad="5" + width="465"> + Drag and drop a notecard to change the Covenant for this Estate. + </text> + + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="20" + layout="topleft" + left="5" + mouse_opaque="false" + name="region_section_lbl" + top_pad="5" + width="100"> + Region + </text> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left="10" + mouse_opaque="false" + name="region_name_lbl" + top_pad="5" + width="100"> + Name: + </text> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left_pad="10" + mouse_opaque="false" + name="region_name_text" + top_delta="0" + width="150"> + leyla + </text> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left="10" + mouse_opaque="false" + name="region_landtype_lbl" + top_pad="5" + width="100"> + Type: + </text> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left_pad="10" + mouse_opaque="false" + name="region_landtype_text" + top_delta="0" + width="150"> + Mainland / Homestead + </text> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left="10" + mouse_opaque="false" + name="region_maturity_lbl" + top_pad="5" + width="100"> + Rating: + </text> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left_pad="10" + mouse_opaque="false" + name="region_maturity_text" + top_delta="0" + width="150"> + Adult + </text> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left="10" + mouse_opaque="false" + name="resellable_lbl" + top_pad="5" + width="100"> + Resale: + </text> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left_pad="10" + mouse_opaque="false" + name="resellable_clause" + top_delta="0" + width="330"> + Land in this region may not be resold. + </text> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left="10" + mouse_opaque="false" + name="changeable_lbl" + top_pad="5" + width="100"> + Subdivide: + </text> + <text + type="string" + length="1" + follows="left|top" + height="30" + layout="topleft" + left_pad="10" + mouse_opaque="false" + name="changeable_clause" + top_delta="0" + width="330"> + Land in this region may not be joined/subdivided. + </text> + +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_region_debug.xml b/indra/newview/skins/default/xui/en/panel_region_debug.xml new file mode 100644 index 0000000000000000000000000000000000000000..22dc0aa0d08e0d04e9aa1ecf177e966bd298d8f7 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_region_debug.xml @@ -0,0 +1,272 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + border="true" + follows="top|left" + height="320" + label="Debug" + layout="topleft" + left="0" + name="Debug" + top="320" + width="480"> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="20" + layout="topleft" + left="10" + name="region_text_lbl" + top="10" + width="100"> + Region: + </text> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="20" + layout="topleft" + left_delta="50" + name="region_text" + top_delta="0" + width="400"> + unknown + </text> + <check_box + height="20" + label="Disable Scripts" + layout="topleft" + left="10" + name="disable_scripts_check" + tool_tip="Disable all scripts in this region" + top="30" + width="80" /> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_pad="70" + name="disable_scripts_help" + top_delta="2" + width="18" /> + <check_box + height="20" + label="Disable Collisions" + layout="topleft" + left="10" + name="disable_collisions_check" + tool_tip="Disable non-avatar collisions in this region" + top="50" + width="80" /> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_pad="70" + name="disable_collisions_help" + top_delta="2" + width="18" /> + <check_box + height="20" + label="Disable Physics" + layout="topleft" + left="10" + name="disable_physics_check" + tool_tip="Disable all physics in this region" + top="70" + width="80" /> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_pad="70" + name="disable_physics_help" + top_delta="2" + width="18" /> + <button + enabled="false" + follows="left|top" + height="20" + label="Apply" + layout="topleft" + left="60" + name="apply_btn" + top="100" + width="100" /> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left="10" + name="objret_text_lbl" + top="150" + width="90"> + Object Return + </text> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left="30" + name="resident_text_lbl" + top="175" + width="60"> + Resident: + </text> + <line_editor + type="string" + length="1" + border_style="line" + border_thickness="1" + enabled="false" + follows="left|top" + height="20" + layout="topleft" + left_delta="60" + mouse_opaque="false" + name="target_avatar_name" + top_delta="-2" + width="180"> + (none) + </line_editor> + <button + follows="left|top" + height="20" + label="Choose..." + layout="topleft" + left_pad="10" + name="choose_avatar_btn" + top_delta="0" + width="80" /> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left="30" + name="options_text_lbl" + top="198" + width="60"> + Options: + </text> + <check_box + height="20" + label="Return only those objects with scripts" + layout="topleft" + left_delta="60" + name="return_scripts" + tool_tip="Return only objects which have scripts." + top_delta="0" + width="80" /> + <check_box + height="20" + label="Return only those objects on someone else's land" + layout="topleft" + left_delta="0" + name="return_other_land" + tool_tip="Return only objects which are on land belonging to someone else" + top_delta="20" + width="80" /> + <check_box + height="20" + label="Return objects in every region of this estate" + layout="topleft" + left_delta="0" + name="return_estate_wide" + tool_tip="Return objects in all of the regions that make up this estate" + top_delta="20" + width="80" /> + <button + follows="left|top" + height="20" + label="Return" + layout="topleft" + left="30" + name="return_btn" + top="263" + width="80" /> + <button + follows="left|top" + height="20" + label="Get Top Colliders..." + layout="topleft" + left="10" + name="top_colliders_btn" + tool_tip="List of objects experiencing the most potential collisions" + top="313" + width="150" /> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_pad="10" + name="top_colliders_help" + top_delta="2" + width="18" /> + <button + follows="left|top" + height="20" + label="Get Top Scripts..." + layout="topleft" + left="10" + name="top_scripts_btn" + tool_tip="List of objects spending the most time running scripts" + top_pad="5" + width="150" /> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_pad="10" + name="top_scripts_help" + top_delta="2" + width="18" /> + <button + follows="left|top" + height="20" + label="Restart Region" + layout="topleft" + left="10" + name="restart_btn" + tool_tip="Give 2 minute countdown and restart region" + top_pad="5" + width="130" /> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_pad="10" + name="restart_help" + top_delta="2" + width="18" /> + <button + follows="left|top" + height="20" + label="Delay Restart" + layout="topleft" + left="10" + name="cancel_restart_btn" + tool_tip="Delay region restart by one hour" + top_pad="5" + width="130" /> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_region_estate.xml b/indra/newview/skins/default/xui/en/panel_region_estate.xml new file mode 100644 index 0000000000000000000000000000000000000000..95e1456c6e01804cd64583de70d5d71652630a1f --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_region_estate.xml @@ -0,0 +1,519 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + border="true" + follows="top|left" + height="320" + label="Estate" + layout="topleft" + left="0" + name="Estate" + top="320" + width="480"> + <panel.string + name="email_unsupported"> + Feature unsupported + </panel.string> + <text + type="string" + length="1" + follows="left|top" + height="32" + layout="topleft" + left="10" + name="estate_help_text" + top="14" + width="300"> + Changes to settings on this tab will affect all +regions in the estate. + </text> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="20" + layout="topleft" + left_delta="0" + name="estate_text" + top_pad="2" + width="80"> + Estate: + </text> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="20" + layout="topleft" + left_delta="0" + name="estate_name" + top_delta="16" + width="150"> + (unknown) + </text> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="20" + layout="topleft" + left_delta="0" + name="owner_text" + top_pad="2" + width="80"> + Owner: + </text> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="20" + layout="topleft" + left_delta="0" + name="estate_owner" + top_delta="16" + width="150"> + (unknown) + </text> + <view_border + bevel_style="in" + follows="top|left" + height="290" + layout="topleft" + left_delta="-4" + top_pad="5" + width="250" /> + <check_box + height="20" + label="Use Global Time" + layout="topleft" + left="12" + name="use_global_time_check" + top="132" + width="200" /> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_pad="20" + name="use_global_time_help" + top_delta="2" + width="18" /> + <check_box + height="20" + label="Fixed Sun" + layout="topleft" + left="12" + name="fixed_sun_check" + top="152" + width="100" /> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_pad="120" + name="fixed_sun_help" + top_delta="2" + width="18" /> + <icon + height="20" + image_name="icon_day_cycle.tga" + layout="topleft" + left="47" + name="daycycle" + top="177" + width="165" /> + <slider + follows="left|top" + height="20" + increment="0.001" + label="Phase" + layout="topleft" + left="12" + max_val="30" + min_val="6" + name="sun_hour_slider" + show_text="false" + top="202" + width="200" /> + <check_box + height="20" + label="Allow Public Access" + layout="topleft" + left_delta="0" + name="externally_visible_check" + top_pad="6" + width="200" /> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_pad="20" + name="externally_visible_help" + top_delta="2" + width="18" /> + <text + type="string" + length="1" + follows="top|left" + height="16" + layout="topleft" + left="32" + name="Only Allow" + top="250" + width="278"> + Restrict Access To: + </text> + <check_box + follows="top|left" + height="16" + label="Residents with payment info on file" + layout="topleft" + left_delta="0" + name="limit_payment" + tool_tip="Ban unidentified residents." + top_pad="2" + width="278" /> + <check_box + follows="top|left" + height="16" + label="Age-verified adults" + layout="topleft" + left_delta="0" + name="limit_age_verified" + tool_tip="Ban residents who have not verified their age. See support.secondlife.com for more information." + top_pad="2" + width="278" /> + <check_box + height="20" + label="Allow Voice Chat" + layout="topleft" + left="12" + name="voice_chat_check" + top="304" + width="200" /> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_pad="20" + name="voice_chat_help" + top_delta="2" + width="18" /> + <check_box + height="20" + label="Allow Direct Teleport" + layout="topleft" + left="12" + name="allow_direct_teleport" + top_pad="4" + width="80" /> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_pad="140" + name="allow_direct_teleport_help" + top_delta="2" + width="18" /> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left="10" + name="abuse_email_text" + top_pad="5" + width="180"> + Abuse email address: + </text> + <line_editor + follows="top|left" + height="19" + layout="topleft" + left="15" + name="abuse_email_address" + top_pad="5" + width="205" /> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_pad="12" + name="abuse_email_address_help" + top_dekta="0" + width="18" /> + <button + enabled="false" + follows="left|top" + height="20" + label="Apply" + layout="topleft" + name="apply_btn" + right="250" + top_pad="4" + width="90" /> + <button + follows="left|top" + height="20" + label="Send Message To Estate..." + layout="topleft" + left="8" + name="message_estate_btn" + top_pad="5" + width="250" /> + <button + follows="left|top" + height="20" + label="Kick User from Estate..." + layout="topleft" + left="8" + name="kick_user_from_estate_btn" + top_pad="5" + width="250" /> + + <text + type="string" + length="1" + bottom="34" + follows="left|top" + height="20" + layout="topleft" + name="estate_manager_label" + right="470" + width="200"> + Estate Managers: + </text> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_delta="182" + name="estate_manager_help" + top_delta="-1" + width="18" /> + <view_border + bevel_style="none" + follows="top|left" + height="60" + layout="topleft" + right="470" + top_pad="5" + width="200" /> + <name_list + follows="left|top" + height="60" + layout="topleft" + left_delta="0" + multi_select="true" + name="estate_manager_name_list" + top_delta="0" + width="200" /> + <button + follows="left|top" + height="20" + label="Remove..." + layout="topleft" + name="remove_estate_manager_btn" + right="470" + top_pad="5" + width="90" /> + <button + follows="left|top" + height="20" + label="Add..." + layout="topleft" + left_delta="-110" + name="add_estate_manager_btn" + top_delta="0" + width="90" /> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left_delta="0" + name="allow_resident_label" + top_pad="5" + width="200"> + Allowed Residents: + </text> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_delta="182" + name="allow_resident_help" + top_delta="-1" + width="18" /> + <view_border + bevel_style="none" + follows="top|left" + height="60" + layout="topleft" + right="470" + top_pad="5" + width="200" /> + <name_list + follows="left|top" + height="60" + layout="topleft" + left_delta="0" + multi_select="true" + name="allowed_avatar_name_list" + top_delta="0" + width="200" /> + <button + follows="left|top" + height="20" + label="Remove..." + layout="topleft" + name="remove_allowed_avatar_btn" + right="470" + top_pad="5" + width="90" /> + <button + follows="left|top" + height="20" + label="Add..." + layout="topleft" + left_delta="-110" + name="add_allowed_avatar_btn" + top_delta="0" + width="90" /> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left_delta="0" + name="allow_group_label" + top_pad="5" + width="200"> + Allowed Groups: + </text> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_delta="182" + name="allow_group_help" + top_delta="-1" + width="18" /> + <view_border + bevel_style="none" + follows="top|left" + height="60" + layout="topleft" + right="470" + top_pad="5" + width="200" /> + <name_list + follows="left|top" + height="60" + layout="topleft" + left_delta="0" + multi_select="true" + name="allowed_group_name_list" + top_delta="0" + width="200" /> + <button + follows="left|top" + height="20" + label="Remove..." + layout="topleft" + name="remove_allowed_group_btn" + right="470" + top_pad="5" + width="90" /> + <button + follows="left|top" + height="20" + label="Add..." + layout="topleft" + left_delta="-110" + name="add_allowed_group_btn" + top_delta="0" + width="90" /> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left_delta="0" + name="ban_resident_label" + top_pad="5" + width="200"> + Banned Residents: + </text> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_delta="182" + name="ban_resident_help" + top_delta="-1" + width="18" /> + <view_border + bevel_style="none" + follows="top|left" + height="60" + layout="topleft" + right="470" + top_pad="5" + width="200" /> + <name_list + follows="left|top" + height="60" + layout="topleft" + left_delta="0" + multi_select="true" + name="banned_avatar_name_list" + top_delta="0" + width="200" /> + <button + follows="left|top" + height="20" + label="Remove..." + layout="topleft" + name="remove_banned_avatar_btn" + right="470" + top_pad="5" + width="90" /> + <button + follows="left|top" + height="20" + label="Add..." + layout="topleft" + left_delta="-110" + name="add_banned_avatar_btn" + top_delta="0" + width="90" /> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_region_general.xml b/indra/newview/skins/default/xui/en/panel_region_general.xml new file mode 100644 index 0000000000000000000000000000000000000000..661cb97c669c8c0fd15e25c5665651706614f819 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_region_general.xml @@ -0,0 +1,350 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + border="true" + follows="top|left" + height="320" + label="Region" + layout="topleft" + left="0" + name="General" + top="320" + width="480"> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="20" + layout="topleft" + left="10" + name="region_text_lbl" + top="10" + width="100"> + Region: + </text> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="20" + layout="topleft" + left_delta="50" + name="region_text" + top_delta="0" + width="400"> + unknown + </text> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="20" + layout="topleft" + left="10" + name="version_channel_text_lbl" + top="30" + width="100"> + Version: + </text> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="20" + layout="topleft" + left_delta="50" + name="version_channel_text" + top_delta="0" + width="200"> + unknown + </text> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="20" + layout="topleft" + left="10" + name="region_type_lbl" + top="50" + width="100"> + Type: + </text> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="20" + layout="topleft" + left_delta="50" + name="region_type" + top_delta="0" + width="200"> + unknown + </text> + <check_box + height="20" + label="Block Terraform" + layout="topleft" + left="10" + name="block_terraform_check" + top="70" + width="80" /> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_pad="115" + name="terraform_help" + top_delta="2" + width="18" /> + <check_box + height="20" + label="Block Fly" + layout="topleft" + left="10" + name="block_fly_check" + top="90" + width="80" /> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_pad="115" + name="fly_help" + top_delta="2" + width="18" /> + <check_box + height="20" + label="Allow Damage" + layout="topleft" + left="10" + name="allow_damage_check" + top="110" + width="80" /> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_pad="115" + name="damage_help" + top_delta="2" + width="18" /> + <check_box + height="20" + label="Restrict Pushing" + layout="topleft" + left="10" + name="restrict_pushobject" + top="130" + width="80" /> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_pad="115" + name="restrict_pushobject_help" + top_delta="2" + width="18" /> + <check_box + height="20" + label="Allow Land Resell" + layout="topleft" + left="10" + name="allow_land_resell_check" + top="160" + width="80" /> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_pad="115" + name="land_resell_help" + top_delta="2" + width="18" /> + <check_box + height="20" + label="Allow Land Join/Divide" + layout="topleft" + left="10" + name="allow_parcel_changes_check" + top="180" + width="80" /> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_pad="115" + name="parcel_changes_help" + top_delta="2" + width="18" /> + <check_box + height="20" + label="Block Land Show in Search" + layout="topleft" + left="10" + name="block_parcel_search_check" + tool_tip="Let people see this region and its parcels in search results" + top="200" + width="80" /> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_pad="115" + name="parcel_search_help" + top_delta="2" + width="18" /> + <spinner + follows="left|top" + height="20" + increment="1" + label="Agent Limit" + label_width="97" + layout="topleft" + left="10" + max_val="100" + min_val="1" + name="agent_limit_spin" + top="240" + width="170" /> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_pad="25" + name="agent_limit_help" + top_delta="2" + width="18" /> + <spinner + follows="left|top" + height="20" + increment="0.5" + label="Object Bonus" + label_width="97" + layout="topleft" + left="10" + max_val="10" + min_val="1" + name="object_bonus_spin" + top="260" + width="170" /> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_pad="25" + name="object_bonus_help" + top_delta="2" + width="18" /> + <text + type="string" + length="1" + follows="left|top" + height="20" + label="Maturity" + layout="topleft" + left="10" + name="access_text" + top="290" + width="100"> + Rating: + </text> + <combo_box + height="20" + label="Mature" + layout="topleft" + left_delta="100" + name="access_combo" + top_delta="0" + width="85"> + <combo_box.item + label="Adult" + value="42" /> + <combo_box.item + label="Mature" + value="21" /> + <combo_box.item + label="PG" + value="13" /> + </combo_box> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_pad="10" + name="access_help" + top_delta="2" + width="18" /> + <button + enabled="false" + follows="left|top" + height="20" + label="Apply" + layout="topleft" + left="108" + name="apply_btn" + top="320" + width="100" /> + <button + follows="left|top" + height="20" + label="Teleport Home One User..." + layout="topleft" + left="10" + name="kick_btn" + top_pad="10" + width="250" /> + <button + follows="left|top" + height="20" + label="Teleport Home All Users..." + layout="topleft" + left_delta="0" + name="kick_all_btn" + top_pad="3" + width="250" /> + <button + follows="left|top" + height="20" + label="Send Message To Region..." + layout="topleft" + left_delta="0" + name="im_btn" + top_pad="20" + width="200" /> + <button + follows="left|top" + height="20" + label="Manage Telehub..." + layout="topleft" + left="250" + name="manage_telehub_btn" + top="70" + width="150" /> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_region_terrain.xml b/indra/newview/skins/default/xui/en/panel_region_terrain.xml new file mode 100644 index 0000000000000000000000000000000000000000..ae3b6507740f354f0469112a1ad2fe3d7010afb3 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_region_terrain.xml @@ -0,0 +1,239 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + border="true" + follows="top|left" + height="320" + label="Terrain" + layout="topleft" + left="0" + name="Terrain" + top="320" + width="480"> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="20" + layout="topleft" + left="10" + name="region_text_lbl" + top="10" + width="100"> + Region: + </text> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="20" + layout="topleft" + left_delta="50" + name="region_text" + top_delta="0" + width="400"> + unknown + </text> + <spinner + follows="left|top" + height="20" + label="Water Height" + label_width="120" + layout="topleft" + left="15" + max_val="100" + name="water_height_spin" + top="40" + width="180" /> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_pad="5" + name="water_height_help" + top_delta="2" + width="18" /> + <spinner + follows="left|top" + height="20" + increment="0.2" + label="Terrain Raise Limit" + label_width="120" + layout="topleft" + left="15" + max_val="100" + name="terrain_raise_spin" + top="60" + width="180" /> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_pad="5" + name="terrain_raise_help" + top_delta="2" + width="18" /> + <spinner + follows="left|top" + height="20" + increment="0.2" + label="Terrain Lower Limit" + label_width="120" + layout="topleft" + left="15" + max_val="0" + min_val="-100" + name="terrain_lower_spin" + top="80" + width="180" /> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_pad="5" + name="terrain_lower_help" + top_delta="2" + width="18" /> + <check_box + height="20" + label="Use Estate Sun" + layout="topleft" + left="250" + name="use_estate_sun_check" + top="35" + width="100" /> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_pad="70" + name="use_estate_sun_help" + top_delta="2" + width="18" /> + <check_box + height="20" + label="Fixed Sun" + layout="topleft" + left="250" + name="fixed_sun_check" + top="55" + width="100" /> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_pad="70" + name="fixed_sun_help" + top_delta="2" + width="18" /> + <icon + height="20" + image_name="icon_day_cycle.tga" + layout="topleft" + left="285" + name="daycycle" + top="80" + width="165" /> + <slider + follows="left|top" + height="20" + increment="0.001" + label="Phase" + layout="topleft" + left="250" + max_val="30" + min_val="6" + name="sun_hour_slider" + show_text="false" + top="105" + width="200" /> + <button + enabled="false" + follows="left|top" + height="20" + label="Apply" + layout="topleft" + left="350" + name="apply_btn" + top="135" + width="90" /> + <view_border + bevel_style="none" + follows="top|left" + height="130" + layout="topleft" + left="8" + top="30" + width="460" /> + <button + follows="left|top" + height="20" + label="Download RAW terrain..." + layout="topleft" + left_delta="2" + name="download_raw_btn" + tool_tip="Available only to estate owners, not managers" + top_pad="60" + width="170" /> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_pad="10" + name="download_raw_help" + top_delta="2" + width="18" /> + <button + follows="left|top" + height="20" + label="Upload RAW terrain..." + layout="topleft" + left="10" + name="upload_raw_btn" + tool_tip="Available only to estate owners, not managers" + top="243" + width="170" /> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_pad="10" + name="upload_raw_help" + top_delta="2" + width="18" /> + <button + follows="left|top" + height="20" + label="Bake Terrain" + layout="topleft" + left="10" + name="bake_terrain_btn" + tool_tip="Set current terrain as mid-point for raise/lower limits" + top="283" + width="100" /> + <button + follows="left|top" + font="SansSerifSmall" + height="18" + label="?" + layout="topleft" + left_pad="10" + name="bake_terrain_help" + top_delta="2" + width="18" /> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_region_texture.xml b/indra/newview/skins/default/xui/en/panel_region_texture.xml new file mode 100644 index 0000000000000000000000000000000000000000..f24630f4e30294b184ab55f8f6a18358f4f1758c --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_region_texture.xml @@ -0,0 +1,340 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + border="true" + follows="top|left" + height="320" + label="Ground Textures" + layout="topleft" + left="0" + name="Textures" + top="320" + width="480"> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="20" + layout="topleft" + left="10" + name="region_text_lbl" + top="10" + width="100"> + Region: + </text> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="20" + layout="topleft" + left_delta="50" + name="region_text" + top_delta="0" + width="400"> + unknown + </text> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left="10" + name="detail_texture_text" + top="36" + width="300"> + Terrain Textures (requires 512x512, 24 bit .tga files) + </text> + <texture_picker + follows="left|top" + height="100" + layout="topleft" + left_delta="0" + name="texture_detail_0" + top_delta="20" + width="100" /> + <texture_picker + follows="left|top" + height="100" + layout="topleft" + left_pad="10" + name="texture_detail_1" + top_delta="0" + width="100" /> + <texture_picker + follows="left|top" + height="100" + layout="topleft" + left_pad="10" + name="texture_detail_2" + top_delta="0" + width="100" /> + <texture_picker + follows="left|top" + height="100" + layout="topleft" + left_pad="10" + name="texture_detail_3" + top_delta="0" + width="100" /> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left="10" + name="height_text_lbl" + top="146" + width="65"> + 1 (Low) + </text> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left_pad="45" + name="height_text_lbl2" + top_delta="0" + width="100"> + 2 + </text> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left_pad="10" + name="height_text_lbl3" + top_delta="0" + width="100"> + 3 + </text> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left_pad="10" + name="height_text_lbl4" + top_delta="0" + width="100"> + 4 (High) + </text> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left="10" + name="height_text_lbl5" + top="186" + width="300"> + Texture Elevation Ranges + </text> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left="51" + name="height_text_lbl6" + top="201" + width="100"> + Southwest + </text> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left_pad="10" + name="height_text_lbl7" + top_delta="0" + width="100"> + Northwest + </text> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left_pad="10" + name="height_text_lbl8" + top_delta="0" + width="100"> + Southeast + </text> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left_pad="10" + name="height_text_lbl9" + top_delta="0" + width="100"> + Northeast + </text> + <spinner + follows="left|top" + height="20" + increment="0.5" + label="Low" + label_width="37" + layout="topleft" + left="10" + max_val="500" + min_val="-500" + name="height_start_spin_0" + top="221" + width="100" /> + <spinner + follows="left|top" + height="20" + increment="0.5" + label="Low" + label_width="37" + layout="topleft" + left_pad="10" + max_val="500" + min_val="-500" + name="height_start_spin_1" + top_delta="0" + width="100" /> + <spinner + follows="left|top" + height="20" + increment="0.5" + label="Low" + label_width="37" + layout="topleft" + left_pad="10" + max_val="500" + min_val="-500" + name="height_start_spin_2" + top_delta="0" + width="100" /> + <spinner + follows="left|top" + height="20" + increment="0.5" + label="Low" + label_width="37" + layout="topleft" + left_pad="10" + max_val="500" + min_val="-500" + name="height_start_spin_3" + top_delta="0" + width="100" /> + <spinner + follows="left|top" + height="20" + increment="0.5" + label="High" + label_width="37" + layout="topleft" + left="10" + max_val="500" + min_val="-500" + name="height_range_spin_0" + top="241" + width="100" /> + <spinner + follows="left|top" + height="20" + increment="0.5" + label="High" + label_width="37" + layout="topleft" + left_pad="10" + max_val="500" + min_val="-500" + name="height_range_spin_1" + top_delta="0" + width="100" /> + <spinner + follows="left|top" + height="20" + increment="0.5" + label="High" + label_width="37" + layout="topleft" + left_pad="10" + max_val="500" + min_val="-500" + name="height_range_spin_2" + top_delta="0" + width="100" /> + <spinner + follows="left|top" + height="20" + increment="0.5" + label="High" + label_width="37" + layout="topleft" + left_pad="10" + max_val="500" + min_val="-500" + name="height_range_spin_3" + top_delta="0" + width="100" /> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left="25" + name="height_text_lbl10" + top="281" + width="480"> + These values represent the blend range for the textures above. + </text> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left_delta="0" + name="height_text_lbl11" + top_delta="16" + width="450"> + Measured in meters, the LOW value is the MAXIMUM height of Texture #1, + </text> + <text + type="string" + length="1" + follows="left|top" + height="20" + layout="topleft" + left_delta="0" + name="height_text_lbl12" + top_delta="16" + width="480"> + and the HIGH value is the MINIMUM height of Texture #4. + </text> + <button + enabled="false" + follows="left|bottom" + height="20" + label="Apply" + layout="topleft" + left="350" + name="apply_btn" + top="290" + width="100" /> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_script_ed.xml b/indra/newview/skins/default/xui/en/panel_script_ed.xml new file mode 100644 index 0000000000000000000000000000000000000000..5a452bd70629aef044aa589ac6b4ae1c2e8d6009 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_script_ed.xml @@ -0,0 +1,190 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + bevel_style="none" + border_style="line" + bottom="550" + follows="left|top|right|bottom" + height="508" + layout="topleft" + left="0" + name="script panel" + width="500"> + <panel.string + name="loading"> + Loading... + </panel.string> + <panel.string + name="can_not_view"> + You are not allowed to view this script. + </panel.string> + <panel.string + name="public_objects_can_not_run"> + Public Objects cannot run scripts + </panel.string> + <panel.string + name="script_running"> + Running + </panel.string> + <panel.string + name="Title"> + Script: [NAME] + </panel.string> + <text_editor + type="string" + length="1" + bevel_style="none" + border_style="line" + bottom="393" + follows="left|top|right|bottom" + font="Monospace" + height="376" + ignore_tab="false" + layout="topleft" + left="4" + max_length="65536" + name="Script Editor" + width="492" + word_wrap="true"> + Loading... + </text_editor> + <button + bottom="499" + follows="right|bottom" + height="20" + label="Save" + label_selected="Save" + layout="topleft" + left="360" + name="Save_btn" + width="128" /> + <scroll_list + bottom="457" + follows="left|right|bottom" + height="60" + layout="topleft" + left="4" + name="lsl errors" + width="492" /> + <combo_box + bottom="499" + follows="left|bottom" + height="20" + label="Insert..." + layout="topleft" + left="12" + name="Insert..." + width="128" /> + <text + bottom="473" + follows="left|bottom" + height="12" + layout="topleft" + left="12" + name="line_col" + width="128" /> + <menu_bar + bg_visible="false" + bottom="18" + follows="left|top|right" + height="18" + layout="topleft" + left="8" + mouse_opaque="false" + name="script_menu" + width="476"> + <menu + bottom="18" + height="62" + label="File" + layout="topleft" + left="0" + mouse_opaque="false" + name="File" + width="138"> + <menu_item_call + label="Save" + layout="topleft" + name="Save" /> + <menu_item_separator + layout="topleft" /> + <menu_item_call + label="Revert All Changes" + layout="topleft" + name="Revert All Changes" /> + </menu> + <menu + bottom="-647" + height="198" + label="Edit" + layout="topleft" + left="222" + mouse_opaque="false" + name="Edit" + width="139"> + <menu_item_call + enabled="false" + label="Undo" + layout="topleft" + name="Undo" /> + <menu_item_call + enabled="false" + label="Redo" + layout="topleft" + name="Redo" /> + <menu_item_separator + layout="topleft" /> + <menu_item_call + enabled="false" + label="Cut" + layout="topleft" + name="Cut" /> + <menu_item_call + enabled="false" + label="Copy" + layout="topleft" + name="Copy" /> + <menu_item_call + enabled="false" + label="Paste" + layout="topleft" + name="Paste" /> + <menu_item_separator + layout="topleft" + name="separator2" /> + <menu_item_call + label="Select All" + layout="topleft" + name="Select All" /> + <menu_item_call + enabled="false" + label="Deselect" + layout="topleft" + name="Deselect" /> + <menu_item_separator + layout="topleft" + name="separator3" /> + <menu_item_call + label="Search / Replace..." + layout="topleft" + name="Search / Replace..." /> + </menu> + <menu + bottom="18" + height="34" + label="Help" + layout="topleft" + left="0" + mouse_opaque="false" + name="Help" + width="112"> + <menu_item_call + label="Help..." + layout="topleft" + name="Help..." /> + <menu_item_call + label="LSL Wiki Help..." + layout="topleft" + name="LSL Wiki Help..." /> + </menu> + </menu_bar> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_scrolling_param.xml b/indra/newview/skins/default/xui/en/panel_scrolling_param.xml new file mode 100644 index 0000000000000000000000000000000000000000..2805ace906b2ac85441be79f6000820cb22b2f5f --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_scrolling_param.xml @@ -0,0 +1,92 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + height="152" + layout="topleft" + left="0" + name="LLScrollingPanelParam" + top="152" + width="270"> + <text + follows="left|top" + height="16" + layout="topleft" + left="4" + name="min param text" + top="116" + width="128" /> + <text + follows="left|top" + height="16" + layout="topleft" + left_pad="6" + name="max param text" + top_delta="0" + width="128" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left="8" + name="Loading..." + top="11" + width="128"> + Loading... + </text> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_pad="6" + name="Loading...2" + top_delta="0" + width="128"> + Loading... + </text> + <button + enabled="false" + height="132" + image_disabled="square_btn_32x128.tga" + image_disabled_selected="square_btn_selected_32x128.tga" + image_selected="square_btn_selected_32x128.tga" + image_unselected="square_btn_32x128.tga" + layout="topleft" + left="2" + name="less" + picture_style="true" + tab_stop="false" + top="0" + width="132" /> + <button + enabled="false" + height="132" + image_disabled="square_btn_32x128.tga" + image_disabled_selected="square_btn_selected_32x128.tga" + image_selected="square_btn_selected_32x128.tga" + image_unselected="square_btn_32x128.tga" + layout="topleft" + left_pad="2" + name="more" + picture_style="true" + tab_stop="false" + top_delta="0" + width="132" /> + <slider + can_edit_text="true" + decimal_digits="0" + enabled="false" + height="16" + increment="1" + initial_value="0" + label="[DESC]" + label_width="100" + layout="topleft" + left="6" + max_val="100" + name="param slider" + top="134" + width="258" /> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_side_tray.xml b/indra/newview/skins/default/xui/en/panel_side_tray.xml new file mode 100644 index 0000000000000000000000000000000000000000..220191ddaa38f90e3c9d0e24d376154e612789a0 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_side_tray.xml @@ -0,0 +1,95 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<side_tray + name="sidebar" + background_visible="false" + bg_opaque_color="0.0 0.0 0.0 0.0" + mouse_opaque="true" + collapsed="true" +> + <sidetray_tab + name="sidebarpanel2" + mouse_opaque="false" + background_opaque="false" + background_visible="true" + bg_opaque_color="0.5 0.5 0.5 1.0" + image="icn_voice-groupfocus.tga" + tab_title="People" + description="Find your friends, contacts and people nearby." + > + <collapsible_ctrl + name="people_accordion" + title="People" + collapsable="true" + min_width="200" + min_height="200" + expanded="true" + header_visible="false" + > + <panel + class="panel_people" + name="panel_people" + filename="panel_people.xml" + width="355" + height="465" + label="People" + border="true" + /> + </collapsible_ctrl> + </sidetray_tab> + + <sidetray_tab + name="sidebarpanel1" + mouse_opaque="false" + background_visible="true" + label="Places" + bg_opaque_color="0.5 0.5 0.5 1.0" + image="inv_item_landmark.tga" + tab_title="Places" + description="Find places to go and places you've been." + > + <collapsible_ctrl + name="places_accordian" + title="Places" + collapsable="true" + min_width="355" + min_height="570" + header_visible="false" + > + <panel + class="panel_places" + name="panel_places" + filename="panel_places.xml" + label="Places" + border="true" + /> + </collapsible_ctrl> + </sidetray_tab> + + <sidetray_tab + name="sidebar_me" + mouse_opaque="false" + background_visible="true" + bg_opaque_color="0.5 0.5 0.5 1.0" + image="icn_voice-pvtfocus.tga" + tab_title="Me" + description="Change your profile, your look and quick links to your outfits." + > + <collapsible_ctrl + name="me_accordion" + title="Me" + collapsable="false" + min_width="200" + min_height="200" + header_visible="false" + > + <panel + class="panel_me_profile" + name="panel_me_profile" + filename="panel_me_profile.xml" + label="Me" + border="true" + /> + </collapsible_ctrl> + </sidetray_tab> +</side_tray> + diff --git a/indra/newview/skins/default/xui/en/panel_side_tray_tab_caption.xml b/indra/newview/skins/default/xui/en/panel_side_tray_tab_caption.xml new file mode 100644 index 0000000000000000000000000000000000000000..e447e541e0ba6da664a66da09c527f769b5e9817 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_side_tray_tab_caption.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel name="sidetray_tab_panel" + bottom="0" height="25" left="0" background_visible="false" + bg_visible="false" border="false" border_visible="false" + bg_opaque_color="0.7 0.3 0.7 1.0" + follows="left|top|right" + mouse_opaque="true"> + <text type="string" length="1" bg_visible="false" border_visible="false" + bottom="0" enabled="true" follows="left|top" + height="20" left="10" + font="SansSerifBold" halign="left" + name="sidetray_tab_title" width="100"> + Side Panel + </text> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_status_bar.xml b/indra/newview/skins/default/xui/en/panel_status_bar.xml new file mode 100644 index 0000000000000000000000000000000000000000..37095141475a60497e8c842ed21d99bff3f0aeed --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_status_bar.xml @@ -0,0 +1,252 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + background_opaque="true" + background_visible="true" + bg_opaque_color="0.25 0.25 0.25 1" + follows="top|left|right" + height="18" + layout="topleft" + left="0" + mouse_opaque="false" + name="status" + top="18" + width="1000"> + <panel.string + name="StatBarDaysOfWeek"> + Sunday:Monday:Tuesday:Wednesday:Thursday:Friday:Saturday + </panel.string> + <panel.string + name="StatBarMonthsOfYear"> + January:February:March:April:May:June:July:August:September:October:November:December + </panel.string> + <panel.string + name="packet_loss_tooltip"> + Packet Loss + </panel.string> + <panel.string + name="bandwidth_tooltip"> + Bandwidth + </panel.string> + <panel.string + name="time"> + [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt] + </panel.string> + <panel.string + name="timeTooltip"> + [weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt] + </panel.string> + <button + auto_resize="true" + follows="right|bottom" + font="SansSerifSmall" + height="16" + layout="topleft" + left="-130" + name="buycurrency" + picture_style="true" + tool_tip="Account Balance / Buy currency" + top="1" + width="60" /> + <text + type="string" + length="1" + disabled_color="TimeTextColor" + follows="right|bottom" + halign="right" + height="20" + layout="topleft" + left_pad="5" + name="TimeText" + text_color="TimeTextColor" + tool_tip="Current Time (Pacific)" + top_delta="-1" + v_pad="2" + width="60"> + 12:00 AM + </text> + <button + follows="right|bottom" + height="16" + image_selected="status_script_debug.tga" + image_unselected="status_script_debug.tga" + layout="topleft" + left_delta="-557" + name="scriptout" + picture_style="true" + scale_image="false" + tool_tip="Script Warnings and Errors" + top_delta="2" + visible="false" + width="16" /> + <button + follows="right|bottom" + height="18" + image_selected="status_health.tga" + image_unselected="status_health.tga" + layout="topleft" + left_delta="16" + name="health" + picture_style="true" + scale_image="false" + tool_tip="Health" + top_delta="2" + visible="false" + width="24" /> + <text + type="string" + length="1" + disabled_color="HealthTextColor" + follows="rsight|bottom" + font_shadow="hard" + height="18" + layout="topleft" + left_delta="24" + name="HealthText" + text_color="HealthTextColor" + tool_tip="Health" + top_delta="-4" + v_pad="2" + visible="false" + width="31"> + 100% + </text> + <button + follows="right|bottom" + height="18" + image_selected="status_no_fly.tga" + image_unselected="status_no_fly.tga" + layout="topleft" + left_delta="31" + name="no_fly" + picture_style="true" + scale_image="false" + tool_tip="Flying not allowed" + top_delta="4" + visible="false" + width="24" /> + <button + follows="right|bottom" + height="18" + image_selected="status_no_build.tga" + image_unselected="status_no_build.tga" + layout="topleft" + left_delta="24" + name="no_build" + picture_style="true" + scale_image="false" + tool_tip="Building/Rezzing not allowed" + top_delta="0" + visible="false" + width="24" /> + <button + follows="right|bottom" + height="18" + image_selected="status_no_scripts.tga" + image_unselected="status_no_scripts.tga" + layout="topleft" + left_delta="24" + name="no_scripts" + picture_style="true" + scale_image="false" + tool_tip="Scripts not allowed" + top_delta="0" + visible="false" + width="24" /> + <button + follows="right|bottom" + height="18" + image_selected="status_no_push.tga" + image_unselected="status_no_push.tga" + layout="topleft" + left_delta="24" + name="restrictpush" + picture_style="true" + scale_image="false" + tool_tip="No Pushing" + top_delta="0" + visible="false" + width="24" /> + <button + follows="right|bottom" + height="18" + image_selected="status_no_voice.tga" + image_unselected="status_no_voice.tga" + layout="topleft" + left_delta="24" + name="status_no_voice" + picture_style="true" + scale_image="false" + tool_tip="Voice not available here" + top_delta="0" + visible="false" + width="24" /> + <button + follows="right|bottom" + height="16" + image_selected="status_buy_land_pressed.tga" + image_unselected="status_buy_land.tga" + layout="topleft" + left_pad="7" + name="buyland" + picture_style="true" + tool_tip="Buy this parcel" + top_delta="-3" + visible="false" + width="16" /> + <button + follows="right|bottom" + height="16" + image_disabled="sm_rounded_corners_simple.tga" + image_disabled_selected="sm_rounded_corners_simple.tga" + image_hover_selected="sm_rounded_corners_simple.tga" + image_hover_unselected="sm_rounded_corners_simple.tga" + image_selected="sm_rounded_corners_simple.tga" + image_unselected="sm_rounded_corners_simple.tga" + layout="topleft" + left_pad="313" + mouse_opaque="false" + name="menubar_search_bevel_bg" + picture_style="true" + top_delta="0" + width="94" /> + <line_editor + bevel_style="none" + border_style="line" + commit_on_focus_lost="false" + follows="right|bottom" + height="11" + label="Search" + layout="topleft" + left_delta="1" + name="search_editor" + tab_group="1" + tool_tip="Search Second Life" + top_delta="4" + width="78" /> + <button + follows="right|bottom" + font="SansSerifSmall" + height="16" + image_disabled="status_search_btn.png" + image_disabled_selected="status_search_btn_pressed.png" + image_selected="status_search_btn_pressed.png" + image_unselected="status_search_btn.png" + layout="topleft" + left_delta="78" + name="search_btn" + picture_style="true" + scale_image="false" + tool_tip="Search Second Life" + top_delta="-4" + width="16" /> + <text + enabled="false" + follows="right|bottom" + halign="center" + height="12" + layout="topleft" + left_delta="-4" + name="stat_btn" + top_delta="3" + width="20" /> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_teleport_history.xml b/indra/newview/skins/default/xui/en/panel_teleport_history.xml new file mode 100644 index 0000000000000000000000000000000000000000..8f6a2d7648c3b18abf1263ef5b869a9550782d02 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_teleport_history.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel name="Teleport History" bottom="0" height="326" left="0" width="380" + border="true" follows="left|top|right|bottom"> + <scroll_list bottom="0" can_resize="true" column_padding="0" draw_heading="true" + draw_stripes="false" follows="left|top|bottom|right" left="0" + multi_select="false" name="history_items" search_column="1" + sort_column="1" height="326" width="380" > + <column name="landmark_icon" width="20" /> + <column dynamicwidth="true" label="Region" name="region" /> + <column name="index" width="0" /> + </scroll_list> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_world_map.xml b/indra/newview/skins/default/xui/en/panel_world_map.xml new file mode 100644 index 0000000000000000000000000000000000000000..532f487780c52525dd0c39b6a366282522dafbe5 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_world_map.xml @@ -0,0 +1,128 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + follows="left|top|right|bottom" + height="300" + layout="topleft" + name="world_map" + width="400"> + <panel.string + name="Loading"> + Loading... + </panel.string> + <panel.string + name="InvalidLocation"> + Invalid Location + </panel.string> + <panel.string + name="world_map_north"> + N + </panel.string> + <panel.string + name="world_map_east"> + E + </panel.string> + <panel.string + name="world_map_west"> + W + </panel.string> + <panel.string + name="world_map_south"> + S + </panel.string> + <panel.string + name="world_map_southeast"> + SE + </panel.string> + <panel.string + name="world_map_northeast"> + NE + </panel.string> + <panel.string + name="world_map_southwest"> + SW + </panel.string> + <panel.string + name="world_map_northwest"> + NW + </panel.string> + <text + type="string" + length="1" + label="N" + layout="topleft" + name="floater_map_north" + text="N" + text_color="1 1 1 0.7"> + N + </text> + <text + type="string" + length="1" + label="E" + layout="topleft" + name="floater_map_east" + text="E" + text_color="1 1 1 0.7"> + E + </text> + <text + type="string" + length="1" + label="W" + layout="topleft" + name="floater_map_west" + text="W" + text_color="1 1 1 0.7"> + W + </text> + <text + type="string" + length="1" + label="S" + layout="topleft" + name="floater_map_south" + text="S" + text_color="1 1 1 0.7"> + S + </text> + <text + type="string" + length="1" + label="SE" + layout="topleft" + name="floater_map_southeast" + text="SE" + text_color="1 1 1 0.7"> + SE + </text> + <text + type="string" + length="1" + label="NE" + layout="topleft" + name="floater_map_northeast" + text="NE" + text_color="1 1 1 0.7"> + NE + </text> + <text + type="string" + length="1" + label="SW" + layout="topleft" + name="floater_map_southwest" + text="SW" + text_color="1 1 1 0.7"> + SW + </text> + <text + type="string" + length="1" + label="NW" + layout="topleft" + name="floater_map_northwest" + text="NW" + text_color="1 1 1 0.7"> + NW + </text> +</panel> diff --git a/indra/newview/skins/default/xui/en/role_actions.xml b/indra/newview/skins/default/xui/en/role_actions.xml new file mode 100644 index 0000000000000000000000000000000000000000..b89a975430a4792364138a87ce1d709d5bf38811 --- /dev/null +++ b/indra/newview/skins/default/xui/en/role_actions.xml @@ -0,0 +1,187 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<role_actions> + <action_set + description="These Abilities include powers to add and remove group Members, and allow new Members to join without an invitation." + name="Membership"> + <action description="Invite People to this Group" + longdescription="Invite People to this Group using the 'Invite New Person...' button in the Members & Roles tab > Members sub-tab." + name="member invite" value="1" /> + <action description="Eject Members from this Group" + longdescription="Eject Members from this Group using the 'Eject From Group' button in the Members & Roles tab > Members sub-tab. An Owner can eject anyone except another Owner. If you're not an Owner, a Member can be ejected from a group if, and only if, they're only in the Everyone Role, and NO other Roles. To remove Members from Roles, you need to have the 'Remove Members from Roles' Ability." + name="member eject" value="2" /> + <action + description="Toggle 'Open Enrollment' and change 'Signup Fee'" + longdescription="Toggle 'Open Enrollment' to let new Members join without an invitation, and change 'Signup Fee' in the Group Preferences section of the General tab." + name="member options" value="3" /> + </action_set> + <action_set + description="These Abilities include powers to add, remove, and change group Roles, add and remove Members in Roles, and assign Abilities to Roles." + name="Roles"> + <action description="Create new Roles" + longdescription="Create new Roles in the Members & Roles tab > Roles sub-tab." + name="role create" value="4" /> + <action description="Delete Roles" + longdescription="Delete Roles in the Members & Roles tab > Roles sub-tab." + name="role delete" value="5" /> + <action description="Change Role names, titles, descriptions, and whether Role members are publicly visible" + longdescription="Change Role names, titles, descriptions, and whether Role members are publicly visible. This is done at the bottom of the the Members & Roles tab > Roles sub-tab after selecting a Role." + name="role properties" value="6" /> + <action description="Assign Members to Assigner's Roles" + longdescription="Assign Members to Roles in the Assigned Roles section of the Members & Roles tab > Members sub-tab. A Member with this Ability can only add Members to a Role the assigner is already in." + name="role assign member limited" value="7" /> + <action description="Assign Members to Any Role" + longdescription="Assign Members to Any Role in the Assigned Roles section of the Members & Roles tab > Members sub-tab. *WARNING* Any Member in a Role with this Ability can assign themselves--and any other non-Owner Member--to Roles that have more powers than they currently have, potentially elevating themselves to near-Owner power. Be sure you know what you're doing before assigning this Ability." + name="role assign member" value="8" /> + <action description="Remove Members from Roles" + longdescription="Remove Members from Roles in the Assigned Roles section of the Members & Roles tab > Members sub-tab. Owners can't be removed." + name="role remove member" value="9" /> + <action description="Assign and Remove Abilities in Roles" + longdescription="Assign and Remove Abilities in Roles in the Allowed Abilities section of the Members & Roles tab > Roles sub-tab. *WARNING* Any Member in a Role with this Ability can assign themselves--and any other non-Owner Member--all Abilities, potentially elevating themselves to near-Owner power. Be sure you know what you're doing before assigning this Ability." + name="role change actions" value="10" /> + </action_set> + <action_set + description="These Abilities include powers to modify this group's identity, such as changing public visibility, charter, and insignia." + name="Group Identity"> + <action + description="Change Charter, Insignia, and 'Show in search'" + longdescription="Change Charter, Insignia, and 'Show in search'. This is done in the General tab." + name="group change identity" value="11" /> + </action_set> + <action_set + description="These Abilities include powers to deed, modify, and sell land in this group's land holdings. To get to the About Land window, right-click the ground and select 'About Land...', or click the parcel info in the menu bar." + name="Parcel Management"> + <action description="Deed land and buy land for group" + longdescription="Deed land and buy land for group. This is done in About Land > General tab." + name="land deed" value="12" /> + <action description="Abandon land to Governor Linden" + longdescription="Abandon land to Governor Linden. *WARNING* Any Member in a Role with this Ability can abandon group-owned land in About Land > General tab, reverting it to Linden ownership without a sale! Be sure you know what you're doing before assigning this Ability." + name="land release" value="13" /> + <action description="Set land for sale info" + longdescription="Set land for sale info. *WARNING* Any Member in a Role with this Ability can sell group-owned land in About Land > General tab as they wish! Be sure you know what you're doing before assigning this Ability." + name="land set sale info" value="14" /> + <action description="Subdivide and join parcels" + longdescription="Subdivide and join parcels. This is done by right-clicking the ground, 'Edit Terrain', and dragging your mouse on the land to make a selection. To subdivide, select what you want to split and click 'Subdivide...'. To join, select two or more contiguous parcels and click 'Join...'. " + name="land divide join" value="15" /> + </action_set> + <action_set + description="These Abilities include powers to change the parcel name and publish settings, Find directory visibility, and landing point & TP routing options." + name="Parcel Identity"> + <action description="Toggle 'Show in Find Places' and set category" + longdescription="Toggle 'Show in Find Places' and setting a parcel's category in About Land > Options tab." + name="land find places" value="17" /> + <action + description="Change parcel name, description, and 'Show in search' settings" + longdescription="Change parcel name, description, and 'Show in search' settings. This is done in About Land > Options tab." + name="land change identity" value="18" /> + <action description="Set landing point and set teleport routing" + longdescription="On a group-owned parcel, Members in a Role with this Ability can set a landing point to specify where incoming teleports arrive, and also set teleport routing for further control. This is done in About Land > Options tab." + name="land set landing point" value="19" /> + </action_set> + <action_set + description="These Abilities include powers which affect parcel options, such as 'Create Objects', 'Edit Terrain', and music & media settings." + name="Parcel Settings"> + <action description="Change music & media settings" + longdescription="Change streaming music and movie settings in About Land > Media tab." + name="land change media" value="20" /> + <action description="Toggle 'Edit Terrain'" + longdescription="Toggle 'Edit Terrain'. *WARNING* About Land > Options tab > Edit Terrain allows anyone to terraform your land's shape, and place and move Linden plants. Be sure you know what you're doing before assigning this Ability. Editing terrain is toggled in About Land > Options tab." + name="land edit" value="21" /> + <action description="Toggle various About Land > Options settings" + longdescription="Toggle 'Safe (no damage)', 'Fly', and allow other Residents to: 'Create Objects', 'Edit Terrain', 'Create Landmarks', and 'Run Scripts' on group-owned land in About Land > Options tab." + name="land options" value="22" /> + </action_set> + <action_set + description="These Abilities include powers which allow Members to bypass restrictions on group-owned parcels." + name="Parcel Powers"> + <action description="Always allow 'Edit Terrain'" + longdescription="Members in a Role with this Ability can edit terrain on a group-owned parcel, even if it's turned off in About Land > Options tab." + name="land allow edit land" value="23" /> + <action description="Always allow 'Fly'" + longdescription="Members in a Role with this Ability can fly on a group-owned parcel, even if it's turned off in About Land > Options tab." + name="land allow fly" value="24" /> + <action description="Always allow 'Create Objects'" + longdescription="Members in a Role with this Ability can create objects on a group-owned parcel, even if it's turned off in About Land > Options tab." + name="land allow create" value="25" /> + <action description="Always allow 'Create Landmark'" + longdescription="Members in a Role with this Ability can landmark a group-owned parcel, even if it's turned off in About Land > Options tab." + name="land allow landmark" value="26" /> + <action description="Allow 'Set Home to Here' on group land" + longdescription="Members in a Role with this Ability can use World menu > Set Home to Here on a parcel deeded to this group." + name="land allow set home" value="28" /> + </action_set> + <action_set + description="These Abilities include powers to allow or restrict access to group-owned parcels, including freezing and ejecting Residents." + name="Parcel Access"> + <action description="Manage parcel Access lists" + longdescription="Manage parcel Access lists in About Land > Access tab." + name="land manage allowed" value="29" /> + <action description="Manage parcel Ban lists" + longdescription="Manage parcel Ban lists in About Land > Ban tab." + name="land manage banned" value="30" /> + <action description="Change parcel 'Sell passes...' settings" + longdescription="Change parcel 'Sell passes...' settings in About Land > Access tab." + name="land manage passes" value="31" /> + <action description="Eject and freeze Residents on parcels" + longdescription="Members in a Role with this Ability can handle an unwelcome Resident on a group-owned parcel by right-clicking them, More >, and selecting 'Eject...' or 'Freeze...'." + name="land admin" value="32" /> + </action_set> + <action_set + description="These Abilities include powers to allow members to return objects and place and move Linden plants. This is useful for Members to clean up litter and do landscaping, but it should also be used with care, because there's no undo for returning objects." + name="Parcel Content"> + <action description="Return objects owned by group" + longdescription="Return objects on group-owned parcels that are owned by the group in About Land > Objects tab." + name="land return group owned" value="48" /> + <action description="Return objects set to group" + longdescription="Return objects on group-owned parcels that are set to the group in About Land > Objects tab." + name="land return group set" value="33" /> + <action description="Return non-group objects" + longdescription="Return objects on group-owned parcels that are non-group in About Land > Objects tab." + name="land return non group" value="34" /> + <action description="Landscaping using Linden plants" + longdescription="Landscaping ability to place and move Linden trees, plants, and grasses. These items can be found in your inventory's Library > Objects folder or they can be created via the Build button." + name="land gardening" value="35" /> + </action_set> + <action_set + description="These Abilities include powers to deed, modify, and sell group-owned objects. These changes are done in the Edit Tools > General Tab. Right-click an object and Edit to see its settings. " + name="Object Management"> + <action description="Deed objects to group" + longdescription="Deed objects to group in the Edit Tools > General Tab." + name="object deed" value="36" /> + <action description="Manipulate (move, copy, modify) group-owned objects" + longdescription="Manipulate (move, copy, modify) group-owned objects in the Edit Tools > General Tab." + name="object manipulate" value="38" /> + <action description="Set group-owned objects for sale" + longdescription="Set group-owned objects for sale in the Edit Tools > General tab." + name="object set sale" value="39" /> + </action_set> + <action_set + description="These Abilities include powers which require Members to pay group liabilities and receive group dividends, and restrict access to group account history." + name="Accounting"> + <action description="Pay group liabilities and receive group dividends" + longdescription="Members in a Role with this Ability will automatically pay group liabilities and receive group dividends. This means they will receive a portion of group-owned land sales which are distributed daily, as well as contribute towards things like parcel listing fees. " + name="accounting accountable" value="40" /> + </action_set> + <action_set + description="These Abilities include powers to allow Members to send, receive, and view group Notices." + name="Notices"> + <action description="Send Notices" + longdescription="Members in a Role with this Ability can send Notices in Group Information > Notices tab." + name="notices send" value="42" /> + <action description="Receive Notices and view past Notices" + longdescription="Members in a Role with this Ability can receive Notices and view past Notices in Group Information > Notices tab." + name="notices receive" value="43" /> + </action_set> + <action_set + description="These Abilities include powers to allow or restrict access to group chat sessions and group voice chat." + name="Chat"> + <action description="Join Group Chat" + longdescription="Members in a Role with this Ability can join group chat sessions, for text and voice." + name="join group chat" value="16" /> + <action description="Join Group Voice Chat" + longdescription="Members in a Role with this Ability can join group voice chat sessions. NOTE: The Join Group Chat ability is required to access the voice chat session." + name="join voice chat" value="27" /> + <action description="Moderate Group Chat" + longdescription="Members in a Role with this Ability can control access and participation in group voice and text chat sessions." + name="moderate group chat" value="37" /> + </action_set> +</role_actions> diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..58bb16581a95a00ab4968476cc8108f482982469 --- /dev/null +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -0,0 +1,788 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<!-- This file contains strings that used to be hardcoded in the source. + It is only for those strings which do not belong in a floater. + For example, the strings used in avatar chat bubbles, and strings + that are returned from one component and may appear in many places--> +<strings> + + <!-- Default Args - these arguments will be replaced in all strings --> + <string name="SECOND_LIFE">Second Life</string> + <string name="SECOND_LIFE_VIEWER">Second Life</string> + <string name="SECOND_LIFE_GRID">Second Life</string> + <string name="SECOND_LIFE_SUPPORT">Second Life Support Portal</string> + + <!-- starting up --> + <string name="StartupDetectingHardware">Detecting hardware...</string> + <string name="StartupLoading">Loading</string> + <string name="Fullbright">Fullbright (Legacy)</string> + <string name="CacheWaiting">(Loading...)</string> + <string name="CacheNobody">(nobody)</string> + <string name="CacheNone">(none)</string> + <!-- Login --> + <string name="LoginInProgress">Logging in. [SECOND_LIFE_VIEWER] may appear frozen. Please wait.</string> + <string name="LoginInProgressNoFrozen">Logging in...</string> + <string name="LoginAuthenticating">Authenticating</string> + <string name="LoginMaintenance">Performing account maintenance...</string> + <string name="LoginAttempt">Previous login attempt failed. Logging in, attempt [NUMBER]</string> + <string name="LoginPrecaching">Loading world...</string> + <string name="LoginInitializingBrowser">Initializing embedded web browser...</string> + <string name="LoginInitializingMultimedia">Initializing multimedia...</string> + <string name="LoginInitializingFonts">Loading fonts...</string> + <string name="LoginVerifyingCache">Verifying cache files (can take 60-90 seconds)...</string> + <string name="LoginProcessingResponse">Processing Response...</string> + <string name="LoginInitializingWorld">Initializing World...</string> + <string name="LoginDecodingImages">Decoding images...</string> + <string name="LoginInitializingQuicktime">Initializing QuickTime...</string> + <string name="LoginQuicktimeNotFound">QuickTime not found - unable to initialize.</string> + <string name="LoginQuicktimeOK">QuickTime initialized successfully.</string> + <string name="LoginWaitingForRegionHandshake">Waiting for region handshake...</string> + <string name="LoginConnectingToRegion">Connecting to region...</string> + <string name="LoginDownloadingClothing">Downloading clothing...</string> + <string name="LoginFailedNoNetwork">Network Error: Could not establish connection, please check your network connection.</string> + <string name="Quit">Quit</string> + <string name="create_account_url">http://secondlife.com/registration/</string> + + <!-- Disconnection --> + <string name="AgentLostConnection">This region may be experiencing trouble. Please check your connection to the Internet.</string> + + + <!-- Tooltip, llhoverview.cpp --> + <string name="TooltipPerson">Person</string><!-- Object under mouse pointer is an avatar --> + <string name="TooltipNoName">(no name)</string> <!-- No name on an object --> + <string name="TooltipOwner">Owner:</string> <!-- Owner name follows --> + <string name="TooltipPublic">Public</string> <!-- Public permissions on an object --> + <string name="TooltipIsGroup">(Group)</string> <!-- The name before this text is that of a group --> + <string name="TooltipFlagScript">Script</string> + <string name="TooltipFlagPhysics">Physics</string> + <string name="TooltipFlagTouch">Touch</string> + <string name="TooltipFlagL$">L$</string> + <string name="TooltipFlagDropInventory">Drop Inventory</string> + <string name="TooltipFlagPhantom">Phantom</string> + <string name="TooltipFlagTemporary">Temporary</string> + <string name="TooltipFlagRightClickMenu">(Right-click for menu)</string> + <string name="TooltipFreeToCopy">Free to copy</string> + <string name="TooltipForSaleL$">For Sale: L$[AMOUNT]</string> <!-- L$ version --> + <string name="TooltipForSaleMsg">For Sale: [MESSAGE]</string> <!-- Message (RetrievingData) --> + <string name="TooltipFlagGroupBuild">Group Build</string> + <string name="TooltipFlagNoBuild">No Build</string> + <string name="TooltipFlagNoEdit">Group Build</string> + <string name="TooltipFlagNotSafe">Not Safe</string><!-- damage area --> + <string name="TooltipFlagNoFly">No Fly</string> + <string name="TooltipFlagGroupScripts">Group Scripts</string> + <string name="TooltipFlagNoScripts">No Scripts</string> + <string name="TooltipLand">Land:</string> + <string name="TooltipMustSingleDrop">Only a single item can be dragged here</string> + <string name="TooltipAltLeft">Alt-Left arrow for previous tab</string> + <string name="TooltipAltRight">Alt-Right arrow for next tab</string> + + <!-- ButtonToolTips, llfloater.cpp --> + <string name="BUTTON_CLOSE_DARWIN">Close (Cmd-W)</string> + <string name="BUTTON_CLOSE_WIN">Close (Ctrl-W)</string> + <string name="BUTTON_RESTORE">Restore</string> + <string name="BUTTON_MINIMIZE">Minimize</string> + <string name="BUTTON_TEAR_OFF">Tear Off</string> + <string name="BUTTON_EDIT">Edit</string> + + <!-- searching - generic --> + <string name="Searching">Searching...</string> + <string name="NoneFound">None found.</string> + + <!-- Indicates that an avatar name or other similar datum is being retrieved. General usage. --> + <string name="RetrievingData">Retrieving...</string> + + <string name="ReleaseNotes">Release Notes</string> + <string name="RELEASE_NOTES_BASE_URL">http://secondlife.com/app/releasenotes/</string> + + <!-- Indicates something is being loaded. Maybe should be merged with RetrievingData --> + <string name="LoadingData">Loading...</string> + + + <!-- namecache --> + <!-- Avatar name: text shown for LLUUID::null --> + <string name="AvatarNameNobody">(nobody)</string> + + <!-- Avatar name: text shown while fetching name --> + <string name="AvatarNameWaiting">(waiting)</string> + + <!-- Avatar name: text shown as an alternative to AvatarNameFetching, easter egg. --> + <string name="AvatarNameHippos">(hippos)</string> + + <!-- Group name: text shown for LLUUID::null --> + <string name="GroupNameNone">(none)</string> + + <!-- Asset errors. Used in llassetstorage.cpp, translation from error code to error message. --> + <string name="AssetErrorNone">No error</string> + <string name="AssetErrorRequestFailed">Asset request: failed</string> + <string name="AssetErrorNonexistentFile">Asset request: non-existent file</string> + <string name="AssetErrorNotInDatabase">Asset request: asset not found in database</string> + <string name="AssetErrorEOF">End of file</string> + <string name="AssetErrorCannotOpenFile">Cannot open file</string> + <string name="AssetErrorFileNotFound">File not found</string> + <string name="AssetErrorTCPTimeout">File transfer timeout</string> + <string name="AssetErrorCircuitGone">Circuit gone</string> + <string name="AssetErrorPriceMismatch">Viewer and server do not agree on price</string> + <string name="AssetErrorUnknownStatus">Unknown status</string> + + <!-- Asset Type Human Names --> + <string name="texture">texture</string> + <string name="sound">sound</string> + <string name="calling card">calling card</string> + <string name="landmark">landmark</string> + <string name="legacy script">legacy script</string> + <string name="clothing">clothing</string> + <string name="object">object</string> + <string name="note card">note card</string> + <string name="folder">folder</string> + <string name="root">root</string> + <string name="lsl2 script">lsl2 script</string> + <string name="lsl bytecode">lsl bytecode</string> + <string name="tga texture">tga texture</string> + <string name="body part">body part</string> + <string name="snapshot">snapshot</string> + <string name="lost and found">lost and found</string> + <string name="targa image">targa image</string> + <string name="trash">trash</string> + <string name="jpeg image">jpeg image</string> + <string name="animation">animation</string> + <string name="gesture">gesture</string> + <string name="simstate">simstate</string> + <string name="favorite">favorite</string> + + <!-- llvoavatar. Displayed in the avatar chat bubble --> + <string name="AvatarEditingAppearance">(Editing Appearance)</string> + <string name="AvatarAway">Away</string> + <string name="AvatarBusy">Busy</string> + <string name="AvatarMuted">Muted</string> + + <!-- animations --> + <string name="anim_express_afraid">Afraid</string> + <string name="anim_express_anger">Angry</string> + <string name="anim_away">Away</string> + <string name="anim_backflip">Backflip</string> + <string name="anim_express_laugh">Belly Laugh</string> + <string name="anim_express_toothsmile">BigSmile</string> + <string name="anim_blowkiss">Blow Kiss</string> + <string name="anim_express_bored">Bored</string> + <string name="anim_bow">Bow</string> + <string name="anim_clap">Clap</string> + <string name="anim_courtbow">Court Bow</string> + <string name="anim_express_cry">Cry</string> + <string name="anim_dance1">Dance 1</string> + <string name="anim_dance2">Dance 2</string> + <string name="anim_dance3">Dance 3</string> + <string name="anim_dance4">Dance 4</string> + <string name="anim_dance5">Dance 5</string> + <string name="anim_dance6">Dance 6</string> + <string name="anim_dance7">Dance 7</string> + <string name="anim_dance8">Dance 8</string> + <string name="anim_express_disdain">Disdain</string> + <string name="anim_drink">Drink</string> + <string name="anim_express_embarrased">Embarrassed</string> + <string name="anim_angry_fingerwag">Finger Wag</string> + <string name="anim_fist_pump">Fist Pump</string> + <string name="anim_yoga_float">Floating Yoga</string> + <string name="anim_express_frown">Frown</string> + <string name="anim_impatient">Impatient</string> + <string name="anim_jumpforjoy">Jump For Joy</string> + <string name="anim_kissmybutt">Kiss My Butt</string> + <string name="anim_express_kiss">Kiss</string> + <string name="anim_laugh_short">Laugh</string> + <string name="anim_musclebeach">Muscle Beach</string> + <string name="anim_no_unhappy">No (Unhappy)</string> + <string name="anim_no_head">No</string> + <string name="anim_nyanya">Nya-nya-nya</string> + <string name="anim_punch_onetwo">One-Two Punch</string> + <string name="anim_express_open_mouth">Open Mouth</string> + <string name="anim_peace">Peace</string> + <string name="anim_point_you">Point at Other</string> + <string name="anim_point_me">Point at Self</string> + <string name="anim_punch_l">Punch Left</string> + <string name="anim_punch_r">Punch Right</string> + <string name="anim_rps_countdown">RPS count</string> + <string name="anim_rps_paper">RPS paper</string> + <string name="anim_rps_rock">RPS rock</string> + <string name="anim_rps_scissors">RPS scissors</string> + <string name="anim_express_repulsed">Repulsed</string> + <string name="anim_kick_roundhouse_r">Roundhouse Kick</string> + <string name="anim_express_sad">Sad</string> + <string name="anim_salute">Salute</string> + <string name="anim_shout">Shout</string> + <string name="anim_express_shrug">Shrug</string> + <string name="anim_express_smile">Smile</string> + <string name="anim_smoke_idle">Smoke Idle</string> + <string name="anim_smoke_inhale">Smoke Inhale</string> + <string name="anim_smoke_throw_down">Smoke Throw Down</string> + <string name="anim_express_surprise">Surprise</string> + <string name="anim_sword_strike_r">Sword Strike</string> + <string name="anim_angry_tantrum">Tantrum</string> + <string name="anim_express_tongue_out">TongueOut</string> + <string name="anim_hello">Wave</string> + <string name="anim_whisper">Whisper</string> + <string name="anim_whistle">Whistle</string> + <string name="anim_express_wink">Wink</string> + <string name="anim_wink_hollywood">Wink (Hollywood)</string> + <string name="anim_express_worry">Worry</string> + <string name="anim_yes_happy">Yes (Happy)</string> + <string name="anim_yes_head">Yes</string> + + <string name="texture_loading">Loading...</string> + <string name="worldmap_offline">Offline</string> + + <!-- animations uploading status codes --> + <string name="Ok">OK</string> + <string name="Premature end of file">Premature end of file</string> + <string name="ST_NO_JOINT">Can't find ROOT or JOINT.</string> + + <!-- Chat --> + <string name="whisper">whispers:</string> + <string name="shout">shouts:</string> + <string name="ringing">Connecting to in-world Voice Chat...</string> + <string name="connected">Connected</string> + <string name="unavailable">Voice not available at your current location</string> + <string name="hang_up">Disconnected from in-world Voice Chat</string> + <string name="ScriptQuestionCautionChatGranted">'[OBJECTNAME]', an object owned by '[OWNERNAME]', located in [REGIONNAME] at [REGIONPOS], has been granted permission to: [PERMISSIONS].</string> + <string name="ScriptQuestionCautionChatDenied">'[OBJECTNAME]', an object owned by '[OWNERNAME]', located in [REGIONNAME] at [REGIONPOS], has been denied permission to: [PERMISSIONS].</string> + <string name="ScriptTakeMoney">Take Linden dollars (L$) from you</string> + <string name="ActOnControlInputs">Act on your control inputs</string> + <string name="RemapControlInputs">Remap your control inputs</string> + <string name="AnimateYourAvatar">Animate your avatar</string> + <string name="AttachToYourAvatar">Attach to your avatar</string> + <string name="ReleaseOwnership">Release ownership and become public</string> + <string name="LinkAndDelink">Link and delink from other objects</string> + <string name="AddAndRemoveJoints">Add and remove joints with other objects</string> + <string name="ChangePermissions">Change its permissions</string> + <string name="TrackYourCamera">Track your camera</string> + <string name="ControlYourCamera">Control your camera</string> + + <!-- IM --> + <string name="IM_logging_string">-- Instant message logging enabled --</string> + + <!-- Sim Access labels --> + <string name="SIM_ACCESS_PG">PG</string> + <string name="SIM_ACCESS_MATURE">Mature</string> + <string name="SIM_ACCESS_ADULT">Adult</string> + <string name="SIM_ACCESS_DOWN">Offline</string> + <string name="SIM_ACCESS_MIN">Unknown</string> + + <!-- For use when we do not have land type back from the server --> + <string name="land_type_unknown">(unknown)</string> + + <!-- File load/save dialogs --> + <string name="all_files">All Files</string> + <string name="sound_files">Sounds</string> + <string name="animation_files">Animations</string> + <string name="image_files">Images</string> + <string name="save_file_verb">Save</string> + <string name="load_file_verb">Load</string> + <string name="targa_image_files">Targa Images</string> + <string name="bitmap_image_files">Bitmap Images</string> + <string name="avi_movie_file">AVI Movie File</string> + <string name="xaf_animation_file">XAF Anim File</string> + <string name="xml_file">XML File</string> + <string name="dot_raw_file">RAW File</string> + <string name="compressed_image_files">Compressed Images</string> + <string name="load_files">Load Files</string> + <string name="choose_the_directory">Choose Directory</string> + + <!-- Avatar busy/away mode --> + <string name="AvatarSetNotAway">Set Not Away</string> + <string name="AvatarSetAway">Set Away</string> + <string name="AvatarSetNotBusy">Set Not Busy</string> + <string name="AvatarSetBusy">Set Busy</string> + + <!-- Wearable Types --> + <string name="shape">Shape</string> + <string name="skin">Skin</string> + <string name="hair">Hair</string> + <string name="eyes">Eyes</string> + <string name="shirt">Shirt</string> + <string name="pants">Pants</string> + <string name="shoes">Shoes</string> + <string name="socks">Socks</string> + <string name="jacket">Jacket</string> + <string name="gloves">Gloves</string> + <string name="undershirt">Undershirt</string> + <string name="underpants">Underpants</string> + <string name="skirt">Skirt</string> + <string name="alpha">Alpha</string> + <string name="tattoo">Tattoo</string> + <string name="invalid">invalid</string> + + <!-- notify --> + <string name="next">Next</string> + <string name="ok">OK</string> + <string name="GroupNotifyGroupNotice">Group Notice</string> + <string name="GroupNotifyGroupNotices">Group Notices</string> + <string name="GroupNotifySentBy">Sent by</string> + <string name="GroupNotifyAttached">Attached:</string> + <string name="GroupNotifyViewPastNotices">View past notices or opt-out of receiving these messages here.</string> + <string name="GroupNotifyOpenAttachment">Open Attachment</string> + <string name="GroupNotifySaveAttachment">Save Attachment</string> + + <!-- body parts --> + <string name="BodyPartsRightArm">Right Arm</string> + <string name="BodyPartsHead">Head</string> + <string name="BodyPartsLeftArm">Left Arm</string> + <string name="BodyPartsLeftLeg">Left Leg</string> + <string name="BodyPartsTorso">Torso</string> + <string name="BodyPartsRightLeg">Right Leg</string> + + <!-- slider --> + <string name="GraphicsQualityLow">Low</string> + <string name="GraphicsQualityMid">Mid</string> + <string name="GraphicsQualityHigh">High</string> + + <!-- mouselook --> + <string name="LeaveMouselook">Press ESC to leave Mouselook.</string> + + <!-- inventory --> + <string name="InventoryNoMatchingItems">No matching items found in inventory.</string> + <string name="InventoryNoTexture"> + You do not have a copy of +this texture in your inventory + </string> + <string name="no_transfer"> (no transfer)</string> + <string name="no_modify"> (no modify)</string> + <string name="no_copy"> (no copy)</string> + <string name="worn"> (worn)</string> + <string name="LoadingContents">Loading contents...</string> + <string name="NoContents">No contents</string> + + <!-- Gestures labels --> + <string name="Chat"> Chat : </string> + <string name="Sound"> Sound : </string> + <string name="Wait"> --- Wait : </string> + <string name="AnimFlagStop"> Stop Animation : </string> + <string name="AnimFlagStart"> Start Animation : </string> + <string name="Wave"> Wave </string> + <string name="HelloAvatar"> Hello, avatar! </string> + + <!-- inventory filter --> + <string name="Animations"> Animations,</string> + <string name="Calling Cards"> Calling Cards,</string> + <string name="Clothing"> Clothing,</string> + <string name="Gestures"> Gestures,</string> + <string name="Landmarks"> Landmarks,</string> + <string name="Notecards"> Notecards,</string> + <string name="Objects"> Objects,</string> + <string name="Scripts"> Scripts,</string> + <string name="Sounds"> Sounds,</string> + <string name="Textures"> Textures,</string> + <string name="Snapshots"> Snapshots,</string> + <string name="No Filters"> No </string> + <string name="Since Logoff"> - Since Logoff</string> + + <!-- inventory folder --> + <string name="InvFolder My Inventory">My Inventory</string> + <string name="InvFolder My Favorites">My Favorites</string> + <string name="InvFolder Library">Library</string> + <string name="InvFolder Textures">Textures</string> + <string name="InvFolder Sounds">Sounds</string> + <string name="InvFolder Calling Cards">Calling Cards</string> + <string name="InvFolder Landmarks">Landmarks</string> + <string name="InvFolder Scripts">Scripts</string> + <string name="InvFolder Clothing">Clothing</string> + <string name="InvFolder Objects">Objects</string> + <string name="InvFolder Notecards">Notecards</string> + <string name="InvFolder New Folder">New Folder</string> + <string name="InvFolder Inventory">Inventory</string> + <string name="InvFolder Uncompressed Images">Uncompressed Images</string> + <string name="InvFolder Body Parts">Body Parts</string> + <string name="InvFolder Trash">Trash</string> + <string name="InvFolder Photo Album">Photo Album</string> + <string name="InvFolder Lost And Found">Lost And Found</string> + <string name="InvFolder Uncompressed Sounds">Uncompressed Sounds</string> + <string name="InvFolder Animations">Animations</string> + <string name="InvFolder Gestures">Gestures</string> + <string name="InvFolder favorite">Favorites</string> + + <!-- inventory FVBridge --> + <string name="NO_COPY"> (no copy)</string> + <string name="NO_MOD"> (no modify)</string> + <string name="NO_XFER"> (no transfer)</string> + + <string name="Buy">Buy</string> + <string name="BuyforL$">Buy for L$</string> + + <string name="Stone">Stone</string> + <string name="Metal">Metal</string> + <string name="Glass">Glass</string> + <string name="Wood">Wood</string> + <string name="Flesh">Flesh</string> + <string name="Plastic">Plastic</string> + <string name="Rubber">Rubber</string> + <string name="Light">Light</string> + + <!-- keyboard --> + <string name="KBShift">Shift</string> + <string name="KBCtrl">Ctrl</string> + + <!-- Avatar Skeleton --> + <string name="Chest">Chest</string> + <string name="Skull">Skull</string> + <string name="Left Shoulder">Left Shoulder</string> + <string name="Right Shoulder">Right Shoulder</string> + <string name="Left Hand">Left Hand</string> + <string name="Right Hand">Right Hand</string> + <string name="Left Foot">Left Foot</string> + <string name="Right Foot">Right Foot</string> + <string name="Spine">Spine</string> + <string name="Pelvis">Pelvis</string> + <string name="Mouth">Mouth</string> + <string name="Chin">Chin</string> + <string name="Left Ear">Left Ear</string> + <string name="Right Ear">Right Ear</string> + <string name="Left Eyeball">Left Eyeball</string> + <string name="Right Eyeball">Right Eyeball</string> + <string name="Nose">Nose</string> + <string name="R Upper Arm">R Upper Arm</string> + <string name="R Forearm">R Forearm</string> + <string name="L Upper Arm">L Upper Arm</string> + <string name="L Forearm">L Forearm</string> + <string name="Right Hip">Right Hip</string> + <string name="R Upper Leg">R Upper Leg</string> + <string name="R Lower Leg">R Lower Leg</string> + <string name="Left Hip">Left Hip</string> + <string name="L Upper Leg">L Upper Leg</string> + <string name="L Lower Leg">L Lower Leg</string> + <string name="Stomach">Stomach</string> + <string name="Left Pec">Left Pec</string> + <string name="Right Pec">Right Pec</string> + + <!-- HUD Position --> + <string name="Center 2">Center 2</string> + <string name="Top Right">Top Right</string> + <string name="Top">Top</string> + <string name="Top Left">Top Left</string> + <string name="Center">Center</string> + <string name="Bottom Left">Bottom Left</string> + <string name="Bottom">Bottom</string> + <string name="Bottom Right">Bottom Right</string> + + <!-- compile queue--> + <string name="CompileQueueDownloadedCompiling">Downloaded, now compiling</string> + <string name="CompileQueueScriptNotFound">Script not found on server.</string> + <string name="CompileQueueProblemDownloading">Problem downloading</string> + <string name="CompileQueueInsufficientPermDownload">Insufficient permissions to download a script.</string> + <string name="CompileQueueInsufficientPermFor">Insufficient permissions for</string> + <string name="CompileQueueUnknownFailure">Unknown failure to download</string> + <string name="CompileQueueTitle">Recompilation Progress</string> + <string name="CompileQueueStart">recompile</string> + <string name="ResetQueueTitle">Reset Progress</string> + <string name="ResetQueueStart">reset</string> + <string name="RunQueueTitle">Set Running Progress</string> + <string name="RunQueueStart">set running</string> + <string name="NotRunQueueTitle">Set Not Running Progress</string> + <string name="NotRunQueueStart">set not running</string> + + <!-- compile comment text--> + <string name="CompileSuccessful">Compile successful!</string> + <string name="CompileSuccessfulSaving">Compile successful, saving...</string> + <string name="SaveComplete">Save complete.</string> + <string name="ObjectOutOfRange">Script (object out of range)</string> + + <!-- god tools --> + <string name="GodToolsObjectOwnedBy">Object [OBJECT] owned by [OWNER]</string> + + <!-- groups --> + <string name="GroupsNone">none</string> + <string name="Group"> (group)</string> + <string name="Unknown">(Unknown)</string> + <string name="SummaryForTheWeek">Summary for this week, beginning on </string> + <string name="NextStipendDay">The next stipend day is </string> + <string name="GroupIndividualShare"> Group Individual Share + + </string> + <string name="Balance">Balance</string> + <string name="Credits">Credits</string> + <string name="Debits">Debits</string> + <string name="Total">Total</string> + <string name="NoGroupDataFound">No group data found for group </string> + + <!-- floater IM --> + <string name="IMParentEstate">parent estate</string> + <string name="IMMainland">mainland</string> + <string name="IMTeen">teen</string> + + <!-- floater region info --> + <string name="RegionInfoError">error</string> + <string name="RegionInfoAllEstatesOwnedBy"> + all estates +owned by [OWNER] + </string> + <string name="RegionInfoAllEstatesYouOwn">all estates you owned</string> + <string name="RegionInfoAllEstatesYouManage"> + all estates that +you managed for [OWNER] + </string> + <string name="RegionInfoAllowedResidents">Allowed residents: ([ALLOWEDAGENTS], max [MAXACCESS])</string> + <string name="RegionInfoAllowedGroups">Allowed groups: ([ALLOWEDGROUPS], max [MAXACCESS])</string> + + <!-- script editor --> + <string name="CursorPos">Line [LINE], Column [COLUMN]</string> + + <!-- panel dir browser --> + <string name="PanelDirCountFound">[COUNT] found</string> + <string name="PanelDirTimeStr">[hour12,datetime,slt]:[min,datetime,slt] [ampm,datetime,slt]</string> + + <!-- panel dir events --> + <string name="PanelDirEventsDateText">[mthnum,datetime,slt]/[day,datetime,slt]</string> + + <!-- panel contents --> + <string name="PanelContentsNewScript">New Script</string> + + <!-- panel avatar --> + <!-- <string name="None">None</string> Duplicate--> + + <!-- Mute --> + <string name="MuteByName">(by name)</string> + <string name="MuteAgent">(resident)</string> + <string name="MuteObject">(object)</string> + <string name="MuteGroup">(group)</string> + + <!-- Region/Estate Covenant --> + <string name="RegionNoCovenant">There is no Covenant provided for this Estate.</string> + <string name="RegionNoCovenantOtherOwner">There is no Covenant provided for this Estate. The land on this estate is being sold by the Estate owner, not Linden Lab. Please contact the Estate Owner for sales details.</string> + <string name="covenant_last_modified">Last Modified:</string> + <string name="none_text"> (none) </string> + <string name="never_text"> (never) </string> + + <!--Region Details--> + <string name="GroupOwned">Group Owned</string> + <string name="Public">Public</string> + + <!-- panel classified --> + <string name="ClassifiedClicksTxt">Clicks: [TELEPORT] teleport, [MAP] map, [PROFILE] profile</string> + <string name="ClassifiedUpdateAfterPublish">(will update after publish)</string> + + <!-- group voting dialog --> + <string name="GroupVoteYes">Yes</string> + <string name="GroupVoteNo">No</string> + <string name="GroupVoteNoActiveProposals">There are currently no active proposals</string> + <string name="GroupVoteNoArchivedProposals">There are currently no archived proposals</string> + <string name="GroupVoteRetrievingArchivedProposals">Retrieving archived proposals</string> + <string name="GroupVoteRetrievingActiveProposals">Retrieving active proposals</string> + + <!-- Multi Preview Floater --> + <string name="MultiPreviewTitle">Preview</string> + <string name="MultiPropertiesTitle">Properties</string> + + <!-- inventory offer --> + <string name="InvOfferAnObjectNamed">An object named</string> + <string name="InvOfferOwnedByGroup">owned by the group</string> + <string name="InvOfferOwnedByUnknownGroup">owned by an unknown group</string> + <string name="InvOfferOwnedBy">owned by</string> + <string name="InvOfferOwnedByUnknownUser">owned by an unknown user</string> + <string name="InvOfferGaveYou">gave you</string> + <string name="InvOfferYouDecline">You decline</string> + <string name="InvOfferFrom">from</string> + + <!-- group money --> + <string name="GroupMoneyTotal">Total</string> + <string name="GroupMoneyBought">bought</string> + <string name="GroupMoneyPaidYou">paid you</string> + <string name="GroupMoneyPaidInto">paid into</string> + <string name="GroupMoneyBoughtPassTo">bought pass to</string> + <string name="GroupMoneyPaidFeeForEvent">paid fee for event</string> + <string name="GroupMoneyPaidPrizeForEvent">paid prize for event</string> + <string name="GroupMoneyBalance">Balance</string> + <string name="GroupMoneyCredits">Credits</string> + <string name="GroupMoneyDebits">Debits</string> + + <!-- viewer object --> + <string name="ViewerObjectContents">Contents</string> + + <!-- Viewer menu --> + <string name="AcquiredItems">Acquired Items</string> + <string name="Cancel">Cancel</string> + <string name="UploadingCosts">Uploading %s costs</string> + <string name="UnknownFileExtension"> + Unknown file extension .%s +Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh + </string> + + <!-- Previews --> + <string name="FileSaved">File Saved</string> + <string name="Receiving">Receiving</string> + + <!-- status bar , Time --> + <string name="AM">AM</string> + <string name="PM">PM</string> + <string name="PST">PST</string> + <string name="PDT">PDT</string> + + <!-- Directions, HUD --> + <string name="Forward">Forward</string> + <string name="Left">Left</string> + <string name="Right">Right</string> + <string name="Back">Back</string> + <string name="North">North</string> + <string name="South">South</string> + <string name="West">West</string> + <string name="East">East</string> + <string name="Up">Up</string> + <string name="Down">Down</string> + + <!-- Search Category Strings --> + <string name="Any Category">Any Category</string> + <string name="Shopping">Shopping</string> + <string name="Land Rental">Land Rental</string> + <string name="Property Rental">Property Rental</string> + <string name="Special Attraction">Special Attraction</string> + <string name="New Products">New Products</string> + <string name="Employment">Employment</string> + <string name="Wanted">Wanted</string> + <string name="Service">Service</string> + <string name="Personal">Personal</string> + + <!-- PARCEL_CATEGORY_UI_STRING --> + <string name="None">None</string> + <string name="Linden Location">Linden Location</string> + <string name="Adult">Adult</string> + <string name="Arts&Culture">Arts & Culture</string> + <string name="Business">Business</string> + <string name="Educational">Educational</string> + <string name="Gaming">Gaming</string> + <string name="Hangout">Hangout</string> + <string name="Newcomer Friendly">Newcomer Friendly</string> + <string name="Parks&Nature">Parks & Nature</string> + <string name="Residential">Residential</string> + <!--<string name="Shopping">Shopping</string> --> + <string name="Stage">Stage</string> + <string name="Other">Other</string> + <string name="Any">Any</string> + + <!-- puncutations --> + <string name=":">:</string> + <string name=",">,</string> + <string name="...">...</string> + <string name="***">***</string> + <string name="(">(</string> + <string name=")">)</string> + <string name=".">.</string> + <string name="'">'</string> + <string name="---">---</string> + + <!-- OSMessageBox messages --> + <string name="MBCmdLineError"> + An error was found parsing the command line. +Please see: http://wiki.secondlife.com/wiki/Client_parameters +Error: + </string> + <string name="MBCmdLineUsg">[SECOND_LIFE] Command line usage:</string> + <string name="MBUnableToAccessFile"> + [SECOND_LIFE] is unable to access a file that it needs. + +This can be because you somehow have multiple copies running, or your system incorrectly thinks a file is open. +If this message persists, restart your computer and try again. +If it continues to persist, you may need to completely uninstall [SECOND_LIFE] and reinstall it. + </string> + <string name="MBFatalError">Fatal Error</string> + <string name="MBRequiresAltiVec"> [SECOND_LIFE] requires a processor with AltiVec (G4 or later).</string> + <string name="MBAlreadyRunning"> + [SECOND_LIFE] is already running. +Check your task bar for a minimized copy of the program. +If this message persists, restart your computer. + </string> + <string name="MBFrozenCrashed"> + [SECOND_LIFE] appears to have frozen or crashed on the previous run. +Would you like to send a crash report? + </string> + <string name="MBAlert">Alert</string> + <string name="MBNoDirectX"> + [SECOND_LIFE] is unable to detect DirectX 9.0b or greater. +[SECOND_LIFE] uses DirectX to detect hardware and/or outdated drivers that can cause stability problems, poor performance and crashes. While you can run [SECOND_LIFE] without it, we highly recommend running with DirectX 9.0b. + +Do you wish to continue? + </string> + <string name="MBWarning">Warning</string> + <string name="MBNoAutoUpdate"> + Automatic updating is not yet implemented for Linux. +Please download the latest version from www.secondlife.com. + </string> + <string name="MBRegClassFailed">RegisterClass failed</string> + <string name="MBError">Error</string> + <string name="MBFullScreenErr"> + Unable to run fullscreen at [WIDTH] x [HEIGHT]. +Running in window. + </string> + <string name="MBDestroyWinFailed">Shutdown Error while destroying window (DestroyWindow() failed)</string> + <string name="MBShutdownErr">Shutdown Error</string> + <string name="MBDevContextErr">Can't make GL device context</string> + <string name="MBPixelFmtErr">Can't find suitable pixel format</string> + <string name="MBPixelFmtDescErr">Can't get pixel format description</string> + <string name="MBTrueColorWindow"> + [SECOND_LIFE] requires True Color (32-bit) to run in a window. +Please go to Control Panels > Display > Settings and set the screen to 32-bit color. +Alternately, if you choose to run fullscreen, [SECOND_LIFE] will automatically adjust the screen each time it runs. + </string> + <string name="MBAlpha"> + [SECOND_LIFE] is unable to run because it can't get an 8 bit alpha channel. Usually this is due to video card driver issues. +Please make sure you have the latest video card drivers installed. +Also be sure your monitor is set to True Color (32-bit) in Control Panels > Display > Settings. +If you continue to receive this message, contact customer support. + </string> + <string name="MBPixelFmtSetErr">Can't set pixel format</string> + <string name="MBGLContextErr">Can't create GL rendering context</string> + <string name="MBGLContextActErr">Can't activate GL rendering context</string> + <string name="MBVideoDrvErr"> + [SECOND_LIFE] is unable to run because your video card drivers did not install properly, are out of date, or are for unsupported hardware. Please make sure you have the latest video card drivers and even if you do have the latest, try reinstalling them. + +If you continue to receive this message, contact customer support. + </string> + + <!-- Group Information --> + + + <!-- Locale Information --> + <string name="MicrosoftLocale">english</string> + <string name="DarwinLocale">C</string> + <string name="LinuxLocale">C</string> + + <!-- + datetimeToCodes["wkday"] = "%a"; // Thu + datetimeToCodes["weekday"] = "%A"; // Thursday + datetimeToCodes["year4"] = "%Y"; // 2009 + datetimeToCodes["year"] = "%Y"; // 2009 + datetimeToCodes["year2"] = "%y"; // 09 + datetimeToCodes["mth"] = "%b"; // Aug + datetimeToCodes["month"] = "%B"; // August + datetimeToCodes["mthnum"] = "%m"; // 08 + datetimeToCodes["day"] = "%d"; // 31 + datetimeToCodes["hour24"] = "%H"; // 14 + datetimeToCodes["hour"] = "%H"; // 14 + datetimeToCodes["hour12"] = "%I"; // 02 + datetimeToCodes["min"] = "%M"; // 59 + datetimeToCodes["ampm"] = "%p"; // AM + datetimeToCodes["second"] = "%S"; // 59 + datetimeToCodes["timezone"] = "%Z"; // PST + --> + + <string name="TimeHour">hour,datetime,slt</string> + <string name="TimeMin">min,datetime,slt</string> + <string name="TimeYear">year,datetime,slt</string> + <string name="TimeDay">day,datetime,slt</string> + <string name="TimeMonth">mthnum,datetime,slt</string> + <string name="TimeWeek">wkday,datetime,slt</string> + <string name="TimeAMPM">ampm,datetime,slt</string> + <string name="TimeHour12">hour12,datetime,slt</string> + + <string name="LTimeMthNum">mthnum,datetime,local</string> + <string name="LTimeWeek">wkday,datetime,local</string> + <string name="LTimeMonth">mth,datetime,local</string> + <string name="LTimeDay">day,datetime,local</string> + <string name="LTimeSec">second,datetime,local</string> + <string name="LTimeHour">hour,datetime,local</string> + <string name="LTimeMin">min,datetime,local</string> + <string name="LTimeYear">year,datetime,local</string> + <string name="LTimeSec">second,datetime,local</string> + + <string name="UTCTimeWeek">weekday,datetime,utc</string> + <string name="UTCTimeDay">day,datetime,utc</string> + <string name="UTCTimeMth">mth,datetime,utc</string> + <string name="UTCTimeYr">year,datetime,utc</string> + <string name="UTCTimeHr">hour,datetime,utc</string> + <string name="UTCTimeMin">min,datetime,utc</string> + <string name="UTCTimeSec">second,datetime,utc</string> + <string name="UTCTimeTimezone">timezone,datetime,utc</string> +</strings> diff --git a/indra/newview/skins/default/xui/en/teleport_strings.xml b/indra/newview/skins/default/xui/en/teleport_strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..616dc1a1d49fbafc2d5a1f41efb739394f930667 --- /dev/null +++ b/indra/newview/skins/default/xui/en/teleport_strings.xml @@ -0,0 +1,90 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<teleport_messages> + <message_set name="errors"> + <message name="invalid_tport"> + Problem encountered processing your teleport request. You may +need to log back in before you can teleport. If you continue +to get this message, please check the Tech Support FAQ at: +www.secondlife.com/support + </message> + <message name="invalid_region_handoff"> + Problem encountered processing your region crossing. You may +need to log back in before you can cross regions. If you continue +to get this message, please check the Tech Support FAQ at: +www.secondlife.com/support. + </message> + <message name="blocked_tport"> + Sorry, teleport is currently blocked. Try again in a moment. +If you still cannot teleport, please log out and log back in to +resolve the problem. + </message> + <message name="nolandmark_tport"> + Sorry, but system was unable to locate landmark destination. + </message> + <message name="timeout_tport"> + Sorry, but system was unable to complete the teleport connection. +Try again in a moment. + </message> + <message name="noaccess_tport"> + Sorry, you do not have access to that teleport destination. + </message> + <message name="missing_attach_tport"> + Your attachments have not arrived yet. Try waiting for a few +more seconds or log out and back in again before attempting +to teleport. + </message> + <message name="too_many_uploads_tport"> + The asset queue in this region is currently clogged so your teleport +request will not be able to succeed in a timely manner. Please try again +in a few minutes or go to a less busy area. + </message> + <message name="expired_tport"> + Sorry, but the system was unable to complete your teleport request +in a timely fashion. Please try again in a few minutes. + </message> + <message name="expired_region_handoff"> + Sorry, but the system was unable to complete your region crossing +in a timely fashion. Please try again in a few minutes. + </message> + <message name="no_host"> + Unable to find teleport destination. The destination may be +temporarily unavailable or no longer exists. Please try again +in a few minutes. + </message> + <message name="no_inventory_host"> + The inventory system is currently unavailable. + </message> + </message_set> + <message_set name="progress"> + <message name="sending_dest"> + Sending to destination. + </message> + <message name="redirecting"> + Redirecting to different location. + </message> + <message name="relaying"> + Relaying to destination. + </message> + <message name="sending_home"> + Sending home location request. + </message> + <message name="sending_landmark"> + Sending landmark location request. + </message> + <message name="completing"> + Completing teleport. + </message> + <message name="resolving"> + Resolving destination. + </message> + <message name="contacting"> + Contacting new region. + </message> + <message name="arriving"> + Arriving... + </message> + <message name="requesting"> + Requesting Teleport... + </message> + </message_set> +</teleport_messages> diff --git a/indra/newview/skins/default/xui/en/widgets/button.xml b/indra/newview/skins/default/xui/en/widgets/button.xml new file mode 100644 index 0000000000000000000000000000000000000000..a1e074fae2e00f84359201d3cf4da2fd944cac6d --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/button.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<button image_unselected="button_enabled_32x128.tga" + image_selected="button_enabled_selected_32x128.tga" + image_disabled_selected="button_disabled_32x128.tga" + image_disabled="button_disabled_32x128.tga" + label_color="ButtonLabelColor" + label_color_selected="ButtonLabelSelectedColor" + label_color_disabled="ButtonLabelDisabledColor" + label_color_disabled_selected="ButtonLabelSelectedDisabledColor" + highlight_color="ButtonUnselectedFgColor" + image_color="ButtonImageColor" + image_color_disabled="ButtonImageColor" + flash_color="ButtonFlashBgColor" + hover_glow_amount="0.15" + halign="center" + scale_image="true"> +</button> diff --git a/indra/newview/skins/default/xui/en/widgets/check_box.xml b/indra/newview/skins/default/xui/en/widgets/check_box.xml new file mode 100644 index 0000000000000000000000000000000000000000..ff01dcebd8ac1cb038d99445b8e7b133b83ec265 --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/check_box.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<check_box text_enabled_color="LabelTextColor" + text_disabled_color="LabelDisabledColor" + font="SansSerifSmall" + follows="left|top"> + <check_box.label_text name="checkbox label"/> + <check_box.check_button name="CheckboxCtrl Button" + commit_on_return="false" + label="" + is_toggle="true" + hover_glow_amount="0.35" + font="SansSerif" + scale_image="false" + image_unselected="checkbox_enabled_false.tga" + image_selected="checkbox_enabled_true.tga" + image_disabled="checkbox_disabled_false.tga" + image_disabled_selected="checkbox_disabled_true.tga"/> +</check_box> diff --git a/indra/newview/skins/default/xui/en/widgets/color_swatch.xml b/indra/newview/skins/default/xui/en/widgets/color_swatch.xml new file mode 100644 index 0000000000000000000000000000000000000000..304eda2d9706c1f738a7db3dfeeb985b0f8e9308 --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/color_swatch.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<color_swatch alpha_background_image="color_swatch_alpha.tga" + border_color="DefaultHighlightLight" + name="color_swatch"> + <color_swatch.caption_text name="caption" + font="SansSerifSmall" + follows="left|right|bottom"/> + <color_swatch.border name="border" + bevel_type="in"/> +</color_swatch> diff --git a/indra/newview/skins/default/xui/en/widgets/combo_box.xml b/indra/newview/skins/default/xui/en/widgets/combo_box.xml new file mode 100644 index 0000000000000000000000000000000000000000..8a8f3f7f2c2fb0ae3b126b0c54e48fefda3c9878 --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/combo_box.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<combo_box font="SansSerifSmall" + arrow_image="combobox_arrow.tga" + list_position="below" + max_chars="20" + follows="left|top"> + <combo_box.combo_button name="Combobox Button" + hover_glow_amount="0.15" + font="SansSerifSmall" + halign="left" + scale_image="true" + image_unselected="square_btn_32x128.tga" + image_selected="square_btn_selected_32x128.tga" + image_disabled="square_btn_32x128.tga" + image_disabled_selected="square_btn_selected_32x128.tga" + image_overlay="combobox_arrow.tga" + image_overlay_alignment="right"/> + <combo_box.combo_list bg_writeable_color="white"/> + <combo_box.combo_editor name="Combo Text Entry" + select_on_focus="true" + font="SansSerifSmall"/> +</combo_box> diff --git a/indra/newview/skins/default/xui/en/widgets/drop_down.xml b/indra/newview/skins/default/xui/en/widgets/drop_down.xml new file mode 100644 index 0000000000000000000000000000000000000000..c35d15ec923c8da82eca44b0f3fa5c9e0a01c4d7 --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/drop_down.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<drop_down text_enabled_color="LabelTextColor" + text_disabled_color="LabelDisabledColor" + font="SansSerifSmall" + allow_text_entry="false" + follows="left|top"> + <drop_down.combo_button name="Combobox Button" + hover_glow_amount="0.15" + font="SansSerifSmall" + halign="left" + scale_image="true" + image_unselected="square_btn_32x128.tga" + image_selected="square_btn_selected_32x128.tga" + image_disabled="square_btn_32x128.tga" + image_disabled_selected="square_btn_selected_32x128.tga" + image_overlay="combobox_arrow.tga" + image_overlay_alignment="right"/> + <drop_down.combo_list bg_writeable_color="white"/> + <drop_down.combo_editor name="Combo Text Entry" visible="false" select_on_focus="true"/> +</drop_down> diff --git a/indra/newview/skins/default/xui/en/widgets/flyout_button.xml b/indra/newview/skins/default/xui/en/widgets/flyout_button.xml new file mode 100644 index 0000000000000000000000000000000000000000..e0033058c8e3301cdcc99f50a8846c1dd403a18e --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/flyout_button.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<flyout_button list_position="below"> + <action_button scale_image="true" + image_selected="flyout_btn_left_selected.tga" + image_unselected="flyout_btn_left.tga" + image_disabled="flyout_btn_left_disabled.tga"/> + <combo_button image_selected="flyout_btn_right_selected.tga" + image_unselected="flyout_btn_right.tga" + image_disabled="flyout_btn_right_disabled.tga" + pad_right="6" + tab_stop="false"/> +</flyout_button> + diff --git a/indra/newview/skins/default/xui/en/widgets/icon.xml b/indra/newview/skins/default/xui/en/widgets/icon.xml new file mode 100644 index 0000000000000000000000000000000000000000..adb743a628c63def6227e2f8a0307e3db63d30c4 --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/icon.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<icon color="1.0 1.0 1.0 1.0" + tab_stop="false" + mouse_opaque="false" + name="icon" + follows="left|top"> +</icon> diff --git a/indra/newview/skins/default/xui/en/widgets/line_editor.xml b/indra/newview/skins/default/xui/en/widgets/line_editor.xml new file mode 100644 index 0000000000000000000000000000000000000000..11081ae30818acef35c0a93ffc149c391ed9975b --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/line_editor.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<line_editor background_image="sm_rounded_corners_simple.tga" + select_on_focus="false" + handle_edit_keys_directly="false" + commit_on_focus_lost="true" + ignore_tab="true" + cursor_color="TextCursorColor" + text_color="TextFgColor" + text_readonly_color="TextFgReadOnlyColor" + text_tentative_color="TextFgTentativeColor" + bg_readonly_color="TextBgReadOnlyColor" + bg_writeable_color="TextBgWriteableColor" + bg_focus_color="TextBgFocusColor" + mouse_opaque="true" + name="line_editor" + font="SansSerifSmall"> + <line_editor.border bevel_style="in"/> +</line_editor> diff --git a/indra/newview/skins/default/xui/en/widgets/location_input.xml b/indra/newview/skins/default/xui/en/widgets/location_input.xml new file mode 100644 index 0000000000000000000000000000000000000000..32f5a18d1cd3c45c24d0962801afc0d8cf1cd59e --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/location_input.xml @@ -0,0 +1,66 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<!-- +*TODO: Replace hardcoded buttons width/height with getting this info from the button images. + Currently that doesn't work because LLUIImage::getWidth/getHeight() return 1 for the images. +--> +<location_input font="SansSerifSmall" + add_landmark_image_enabled="icon_event_adult.tga" + add_landmark_image_disabled="icon_event.tga" + add_landmark_hpad="4" + allow_text_entry="true" + arrow_image="combobox_arrow.tga" + list_position="below" + show_text_as_tentative="false" + max_chars="20" + follows="left|top"> + <location_input.background name="Background" + visible="true" + label="" + follows="left|top|right" + image_unselected="navbar_bg_center.tga" + image_selected="navbar_bg_center.tga" + image_disabled="navbar_bg_center.tga" + image_disabled_selected="navbar_bg_center.tga" + image_hover_selected="navbar_bg_center.tga" + image_hover_unselected="navbar_bg_center.tga" /> + <location_input.info_button name="Place Information" + label="" + tool_tip="About current location" + width="20" + height="20" + follows="left|top" + image_overlay="map_infohub.tga" + image_unselected="navbar_bg_left.tga" + image_selected="navbar_bg_left.tga" + image_hover_selected="navbar_bg_left.tga" + image_hover_unselected="navbar_bg_left.tga" + image_disabled_selected="navbar_bg_left.tga" + image_disabled="navbar_bg_left.tga" /> + <location_input.add_landmark_button name="Add Landmark" + label="" + width="16" + height="16" + tool_tip="Add to My Landmarks" + follows="right|top" + scale_image="false" /> + <location_input.combo_button name="Location History" + label="" + tool_tip="My Location History" + width="20" + height="20" + image_overlay="navbar_history.tga" + image_overlay_alignment="center" + image_unselected="navbar_bg_right.tga" + image_selected="navbar_bg_right.tga" + image_disabled="navbar_bg_right.tga" + image_disabled_selected="navbar_bg_right.tga" + image_hover_selected="navbar_bg_right.tga" + image_hover_unselected="navbar_bg_right.tga" /> + <location_input.combo_list bg_writeable_color="white"/> + <location_input.combo_editor name="Combo Text Entry" + select_on_focus="true" + font="SansSerifSmall" + bevel_style="none" + border_style="line" + border_thickness="0" /> +</location_input> diff --git a/indra/newview/skins/default/xui/en/widgets/menu.xml b/indra/newview/skins/default/xui/en/widgets/menu.xml new file mode 100644 index 0000000000000000000000000000000000000000..10bc124ea3d7686641ad2fa8bb2b4e3e996928d9 --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/menu.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<menu bg_color="MenuDefaultBgColor" + bg_visible="true" + drop_shadow="true" + tear_off="false"> +</menu> diff --git a/indra/newview/skins/default/xui/en/widgets/menu_item_call.xml b/indra/newview/skins/default/xui/en/widgets/menu_item_call.xml new file mode 100644 index 0000000000000000000000000000000000000000..24bda97f44c210f2d47fe50b21ec899d598cb7db --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/menu_item_call.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<menu_item_call enabled_color="MenuItemEnabledColor" + disabled_color="MenuItemDisabledColor" + highlight_bg_color="MenuItemHighlightBgColor" + highlight_fg_color="MenuItemHighlightFgColor"> +</menu_item_call> diff --git a/indra/newview/skins/default/xui/en/widgets/menu_item_check.xml b/indra/newview/skins/default/xui/en/widgets/menu_item_check.xml new file mode 100644 index 0000000000000000000000000000000000000000..f6b06cb50b8e3774c9c19a157a634eb4692a3f17 --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/menu_item_check.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<menu_item_check enabled_color="MenuItemEnabledColor" + disabled_color="MenuItemDisabledColor" + highlight_bg_color="MenuItemHighlightBgColor" + highlight_fg_color="MenuItemHighlightFgColor"> +</menu_item_check> diff --git a/indra/newview/skins/default/xui/en/widgets/menu_item_separator.xml b/indra/newview/skins/default/xui/en/widgets/menu_item_separator.xml new file mode 100644 index 0000000000000000000000000000000000000000..e5cea476dae8c063aa07679c7e2af00109e65490 --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/menu_item_separator.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<menu_item_separator enabled_color="MenuItemEnabledColor" + disabled_color="MenuItemDisabledColor" + highlight_bg_color="MenuItemHighlightBgColor" + highlight_fg_color="MenuItemHighlightFgColor"> +</menu_item_separator> diff --git a/indra/newview/skins/default/xui/en/widgets/multi_slider.xml b/indra/newview/skins/default/xui/en/widgets/multi_slider.xml new file mode 100644 index 0000000000000000000000000000000000000000..e0900b48f3b8a4b5d531559b50525fe6c71d4eb5 --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/multi_slider.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<multi_slider text_color="LabelTextColor" + text_disabled_color="LabelDisabledColor" + draw_track="true" + use_triangle="false" + font="SansSerifSmall"/> diff --git a/indra/newview/skins/default/xui/en/widgets/multi_slider_bar.xml b/indra/newview/skins/default/xui/en/widgets/multi_slider_bar.xml new file mode 100644 index 0000000000000000000000000000000000000000..04a2cd635c80d61ce929b51fe4af880bd04c3bf3 --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/multi_slider_bar.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<multi_slider_bar track_color="MultiSliderTrackColor" + thumb_disabled_color="MultiSliderDisabledThumbColor" + thumb_outline_color="MultiSliderThumbOutlineColor" + thumb_center_color="MultiSliderThumbCenterColor" + thumb_center_selected_color="MultiSliderThumbCenterSelectedColor" + triangle_color="MultiSliderTriangleColor" + draw_track="true" + use_triangle="false" + thumb_width="8"/> diff --git a/indra/newview/skins/default/xui/en/widgets/name_editor.xml b/indra/newview/skins/default/xui/en/widgets/name_editor.xml new file mode 100644 index 0000000000000000000000000000000000000000..21ba5c77f828a480f90f03c4b1e9f2afdf5dca12 --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/name_editor.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<name_editor default_text="(retrieving)"/> \ No newline at end of file diff --git a/indra/newview/skins/default/xui/en/widgets/panel.xml b/indra/newview/skins/default/xui/en/widgets/panel.xml new file mode 100644 index 0000000000000000000000000000000000000000..b81a70b845840491322163b5c09dac95808deb9a --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/panel.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel bg_opaque_color="PanelFocusBackgroundColor" + bg_alpha_color="PanelDefaultBackgroundColor" + background_visible="false" + background_opaque="false"/> \ No newline at end of file diff --git a/indra/newview/skins/default/xui/en/widgets/progress_bar.xml b/indra/newview/skins/default/xui/en/widgets/progress_bar.xml new file mode 100644 index 0000000000000000000000000000000000000000..3344de06b075ad138d60ff6295960719d924fee5 --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/progress_bar.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<progress_bar image_bar="rounded_square.tga" + image_fill="progressbar_fill.tga" + image_shadow="rounded_square_soft.tga" + color_bar.red="0.5764" + color_bar.green="0.6627" + color_bar.blue="0.8352" + color_bar.alpha="1" + color_bar2.red="0.5764" + color_bar2.green="0.6627" + color_bar2.blue="0.8352" + color_bar2.alpha="1" + color_shadow.red="0.2000" + color_shadow.green="0.2000" + color_shadow.blue="0.4000" + color_shadow="1" + color_bg.red="0.3254" + color_bg.green="0.4000" + color_bg.blue="0.5058" + color_bg.alpha="1" + /> diff --git a/indra/newview/skins/default/xui/en/widgets/radio_group.xml b/indra/newview/skins/default/xui/en/widgets/radio_group.xml new file mode 100644 index 0000000000000000000000000000000000000000..2d851042a50fc442abefe89bcdb71058d4001443 --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/radio_group.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<radio_group draw_border="true" + name="radio_group" + mouse_opaque="true" + follows="left|top" + font="SansSerifSmall"/> diff --git a/indra/newview/skins/default/xui/en/widgets/radio_item.xml b/indra/newview/skins/default/xui/en/widgets/radio_item.xml new file mode 100644 index 0000000000000000000000000000000000000000..0a27ca509b2e80484f163e92c894c5f73556cd21 --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/radio_item.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<radio_item follows="left|top"> + <radio_item.label_text name="Radio Item label"/> + <radio_item.check_button name="Radio control button" + image_unselected="radio_active_false.tga" + image_selected="radio_active_true.tga" + image_disabled="radio_inactive_false.tga" + image_disabled_selected="radio_inactive_true.tga"/> +</radio_item> diff --git a/indra/newview/skins/default/xui/en/widgets/scroll_bar.xml b/indra/newview/skins/default/xui/en/widgets/scroll_bar.xml new file mode 100644 index 0000000000000000000000000000000000000000..a6c9a56dfd048a35cf444c6699bc07ab6b39aa62 --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/scroll_bar.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<scroll_bar thumb_image="rounded_square.tga" + track_image="rounded_square.tga" + track_color="ScrollbarTrackColor" + thumb_color="ScrollbarThumbColor" + thickness="16"> + <up_button image_unselected="scrollbutton_up_out_blue.tga" + image_selected="scrollbutton_up_in_blue.tga" + scale_image="true"/> + <down_button image_unselected="scrollbutton_down_out_blue.tga" + image_selected="scrollbutton_down_in_blue.tga" + scale_image="true"/> + <left_button image_unselected="scrollbutton_left_out_blue.tga" + image_selected="scrollbutton_left_in_blue.tga" + scale_image="true"/> + <right_button image_unselected="scrollbutton_right_out_blue.tga" + image_selected="scrollbutton_right_in_blue.tga" + scale_image="true"/> +</scroll_bar> diff --git a/indra/newview/skins/default/xui/en/widgets/scroll_container.xml b/indra/newview/skins/default/xui/en/widgets/scroll_container.xml new file mode 100644 index 0000000000000000000000000000000000000000..cb9ef0479754fb1fddeb82dd551da28913866ab0 --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/scroll_container.xml @@ -0,0 +1,3 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<scroll_container color="black" + opaque="false"/> diff --git a/indra/newview/skins/default/xui/en/widgets/scroll_list.xml b/indra/newview/skins/default/xui/en/widgets/scroll_list.xml new file mode 100644 index 0000000000000000000000000000000000000000..9e2c52accaa224c346f06c817a05619fecbf6584 --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/scroll_list.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<scroll_list fg_unselected_color="ScrollUnselectedColor" + fg_selected_color="ScrollSelectedFGColor" + bg_selected_color="ScrollSelectedBGColor" + fg_disable_color="ScrollDisabledColor" + bg_writeable_color="ScrollBgWriteableColor" + bg_read_only_color="ScrollBgReadOnlyColor" + bg_stripe_color="ScrollBGStripeColor" + hovered_color="ScrollHoveredColor" + highlighted_color="ScrollHighlightedColor" + column_padding="5" + draw_stripes="true" + background_visible="true" + heading_height="20" + draw_border="true" + draw_heading="false"/> diff --git a/indra/newview/skins/default/xui/en/widgets/search_editor.xml b/indra/newview/skins/default/xui/en/widgets/search_editor.xml new file mode 100644 index 0000000000000000000000000000000000000000..10080e5e3975c3b5f206de879ae5fb9801004fef --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/search_editor.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<search_editor select_on_focus="true"> + <clear_search_button image_unselected="icn_clear_lineeditor.tga" + image_selected="close_inactive_blue.tga" + image_color="TextFgTentativeColor"/> +</search_editor> diff --git a/indra/newview/skins/default/xui/en/widgets/side_tray.xml b/indra/newview/skins/default/xui/en/widgets/side_tray.xml new file mode 100644 index 0000000000000000000000000000000000000000..e3b70ba6e2e42a064758860aa7c1fb42edaddee8 --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/side_tray.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<side_tray tab_btn_image="sidebar_tab_left.tga" + tab_btn_image_selected="sidebar_tab_left_selected.tga" + tab_btn_width = "32" + tab_btn_height = "32" + tab_btn_margin = "0" + > +</side_tray> diff --git a/indra/newview/skins/default/xui/en/widgets/simple_text_editor.xml b/indra/newview/skins/default/xui/en/widgets/simple_text_editor.xml new file mode 100644 index 0000000000000000000000000000000000000000..20af3bb58f78aae121109d4745158942eb5c03e9 --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/simple_text_editor.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<simple_text_editor cursor_color="TextCursorColor" + default_color="TextDefaultColor" + text_color="TextFgColor" + text_readonly_color="TextFgReadOnlyColor" + bg_readonly_color="TextBgReadOnlyColor" + bg_writeable_color="TextBgWriteableColor" + bg_focus_color="TextBgFocusColor" + hide_border="false" + hide_scrollbar="false" + font="SansSerif"/> diff --git a/indra/newview/skins/default/xui/en/widgets/slider.xml b/indra/newview/skins/default/xui/en/widgets/slider.xml new file mode 100644 index 0000000000000000000000000000000000000000..f735d09476e973416b85227f7f554fa8e691845e --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/slider.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<slider name="slider" + can_edit_text="false" + font="SansSerifSmall" + volume="false" + mouse_opaque="true" + show_text="true" + text_color="LabelTextColor" + text_disabled_color="LabelDisabledColor"> + <slider.value_editor name="slider editor" + max_length="10" + follows="left|bottom"/> + <slider.value_text name="slider text" + follows="left|bottom"/> + <slider.slider_label name="slider label"/> +</slider> diff --git a/indra/newview/skins/default/xui/en/widgets/slider_bar.xml b/indra/newview/skins/default/xui/en/widgets/slider_bar.xml new file mode 100644 index 0000000000000000000000000000000000000000..ba9ad21cc0e8d458c3116dbef7d4533bf7cccdc6 --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/slider_bar.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<slider_bar track_color="SliderTrackColor" + thumb_outline_color="SliderThumbOutlineColor" + thumb_center_color="SliderThumbCenterColor" + thumb_image="icn_slide-thumb_dark.tga" + track_image="icn_slide-groove_dark.tga" + track_highlight_image="icn_slide-highlight.tga"/> diff --git a/indra/newview/skins/default/xui/en/widgets/spinner.xml b/indra/newview/skins/default/xui/en/widgets/spinner.xml new file mode 100644 index 0000000000000000000000000000000000000000..29bf1e805228413f432dfbd9fda63e60b29e4624 --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/spinner.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<spinner text_enabled_color="LabelTextColor" + text_disabled_color="LabelDisabledColor" + decimal_digits="3" + label_width="40"/> \ No newline at end of file diff --git a/indra/newview/skins/default/xui/en/widgets/tab_container.xml b/indra/newview/skins/default/xui/en/widgets/tab_container.xml new file mode 100644 index 0000000000000000000000000000000000000000..8245e5ff23ab9f9dd896cacf38cfae2c0465de50 --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/tab_container.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<tab_container tab_min_width="60" + tab_max_width="150" + tab_top_image_unselected="tab_top_blue.tga" + tab_top_image_selected="tab_top_selected_blue.tga" + tab_bottom_image_unselected="tab_bottom_blue.tga" + tab_bottom_image_selected="tab_bottom_selected_blue.tga" + tab_left_image_unselected="tab_left.tga" + tab_left_image_selected="tab_left_selected.tga"/> \ No newline at end of file diff --git a/indra/newview/skins/default/xui/en/widgets/text.xml b/indra/newview/skins/default/xui/en/widgets/text.xml new file mode 100644 index 0000000000000000000000000000000000000000..3d98cd66f9655e4cf1a7f7aa9c457ed3a8f6994a --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/text.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<text name="text_box" + font="SansSerifSmall" + font_shadow="soft" + tab_stop="false" + halign="left" + hover_color="LabelSelectedColor" + disabled_color="LabelDisabledColor" + background_color="FloaterDefaultBackgroundColor" + border_color="DefaultHighlightLight" + use_ellipses="false" + bg_visible="false" + border_drop_shadow_visible="false" + border_visible="false" + hover="false" + text_color="LabelTextColor"/> diff --git a/indra/newview/skins/default/xui/en/widgets/text_editor.xml b/indra/newview/skins/default/xui/en/widgets/text_editor.xml new file mode 100644 index 0000000000000000000000000000000000000000..dc4c430546f609ec445d3a9e24b18b978044af55 --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/text_editor.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<line_editor background_image="sm_rounded_corners_simple.tga" + select_on_focus="false" + handle_edit_keys_directly="false" + commit_on_focus_lost="true" + ignore_tab="true" + cursor_color="TextCursorColor" + text_color="TextFgColor" + text_readonly_color="TextFgReadOnlyColor" + text_tentative_color="TextFgTentativeColor" + bg_readonly_color="TextBgReadOnlyColor" + bg_writeable_color="TextBgWriteableColor" + bg_focus_color="TextBgFocusColor" + mouse_opaque="true" + name="line_editor" + font="SansSerifSmall"> + <line_editor.border bevel_style="in" + follows="all"/> +</line_editor> diff --git a/indra/newview/skins/default/xui/en/widgets/texture_picker.xml b/indra/newview/skins/default/xui/en/widgets/texture_picker.xml new file mode 100644 index 0000000000000000000000000000000000000000..33c3475eb274c5de9e44de0ef0d0165c387b2e8d --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/texture_picker.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<texture_picker border_color="DefaultHighlightLight"> + <multiselect_text font="SansSerifSmall"/> + <caption_text text="Multiple" + halign="center" + font="SansSerifSmall"/> + <border bevel_style="in"/> +</texture_picker> + diff --git a/indra/newview/skins/default/xui/en/widgets/view_border.xml b/indra/newview/skins/default/xui/en/widgets/view_border.xml new file mode 100644 index 0000000000000000000000000000000000000000..0b0a9beb95973724feb9a023d14ce02a11807027 --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/view_border.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<view_border highlight_light_color="DefaultHighlightLight" + highlight_dark_color="DefaultHighlightDark" + shadow_light_color="DefaultShadowLight" + shadow_dark_color="DefaultShadowDark" + border_thickness="1" + border_style="line" + bevel_style="out"/> \ No newline at end of file diff --git a/indra/newview/skins/default/xui/en/widgets/web_browser.xml b/indra/newview/skins/default/xui/en/widgets/web_browser.xml new file mode 100644 index 0000000000000000000000000000000000000000..118d63bbf0720d22fd8fb16295023345dc750578 --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/web_browser.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<web_browser border_visible="true"/> diff --git a/indra/newview/skins/default/xui/en/xui_version.xml b/indra/newview/skins/default/xui/en/xui_version.xml new file mode 100644 index 0000000000000000000000000000000000000000..0e777751d3f13b0b47e740254ea5f6ba40b074a1 --- /dev/null +++ b/indra/newview/skins/default/xui/en/xui_version.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<xui_version> + 1.0 +</xui_version> diff --git a/indra/newview/skins/default/xui/es/floater_about.xml b/indra/newview/skins/default/xui/es/floater_about.xml index 0b3143a0e88204d484401a76f6034ee7ea7699b1..d6fbc3875295866fae0ad9624efea17d70ad0314 100644 --- a/indra/newview/skins/default/xui/es/floater_about.xml +++ b/indra/newview/skins/default/xui/es/floater_about.xml @@ -28,7 +28,7 @@ Voice chat Audio coding: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C) - Me las apañaré con un poco de ayuda de mis amigos. -- Richard Starkey + Para tener éxito en los negocios, se atrevido, se el primero, se diferente. (Henry Marchant) </text_editor> <string name="you_are_at"> Está en [POSITION] 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 93a463e5a66b7fd9f72f6d3d0c2c2541292fd6b6..3e3b8df646b834d3f2184955145eaa9528e81f2b 100644 --- a/indra/newview/skins/default/xui/es/floater_about_land.xml +++ b/indra/newview/skins/default/xui/es/floater_about_land.xml @@ -8,6 +8,18 @@ <text length="1" name="Description:" type="string"> Descripción: </text> + <text name="LandType"> + Tipo: + </text> + <text name="LandTypeText"> + Mainland / Homestead + </text> + <text name="ContentRating"> + Calificación: + </text> + <text name="ContentRatingText"> + 'Adult' + </text> <text length="1" name="Owner:" type="string"> Propietario: </text> @@ -29,7 +41,7 @@ No está en venta. </text> <text length="1" name="For Sale: Price L$[PRICE]." type="string"> - Precio: [PRICE] L$ + Precio: [PRICE] L$ ([PRICE_PER_SQM] L$/m²). </text> <button label="Vender el terreno..." label_selected="Vender el terreno..." name="Sell Land..."/> <text length="1" name="For sale to" type="string"> @@ -41,7 +53,7 @@ <text length="1" name="Selling with no objects in parcel." type="string"> Los objetos no se incluyen en la venta. </text> - <button label="Cancelar la venta del terreno" label_selected="Cancelar la venta del terreno" name="Cancel Land Sale"/> + <button font="SansSerifSmall" left="275" width="165" label="Cancelar la venta del terreno" label_selected="Cancelar la venta del terreno" name="Cancel Land Sale"/> <text length="1" name="Claimed:" type="string"> Reclamada: </text> @@ -60,9 +72,9 @@ <text length="1" name="DwellText" type="string"> 0 </text> - <button label="Comprar terreno..." label_selected="Comprar terreno..." name="Buy Land..."/> + <button label="Comprar terreno..." label_selected="Comprar terreno..." left="130" name="Buy Land..." width="125"/> <button label="Comprar para el grupo..." label_selected="Comprar para el grupo..." name="Buy For Group..."/> - <button label="Comprar un pase..." label_selected="Comprar un pase..." name="Buy Pass..." tool_tip="Un pase le da acceso temporal a este terreno."/> + <button label="Comprar un pase..." label_selected="Comprar un pase..." left="130" width="125" name="Buy Pass..." tool_tip="Un pase le da acceso temporal a este terreno."/> <button label="Abandonar el terreno..." label_selected="Abandonar el terreno..." name="Abandon Land..."/> <button label="Reclamar el terreno..." label_selected="Reclamar el terreno..." name="Reclaim Land..."/> <button label="Venta Linden..." label_selected="Venta Linden..." name="Linden Sale..." tool_tip="El terreno debe estar en propiedad, con contenido, y no estar en subasta."/> @@ -108,36 +120,60 @@ Vaya al menú Mundo > Acerca del terreno o seleccione otra parcela para ver s </string> </panel> <panel label="Contrato" name="land_covenant_panel"> + <text name="estate_section_lbl"> + Estado: + </text> + <text length="1" name="estate_name_lbl" type="string"> + Nombre: + </text> + <text length="1" name="estate_name_text" type="string"> + mainland + </text> + <text length="1" name="estate_owner_lbl" type="string"> + Propietario: + </text> + <text length="1" name="estate_owner_text" type="string"> + (nadie) + </text> + <text_editor length="1" name="covenant_editor" type="string"> + No se ha aportado un contrato para este estado. + </text_editor> <text length="1" name="covenant_timestamp_text" type="string"> Última modificación, Dic Miér 31 16:00:00 1969 </text> - <text length="1" name="region_name_lbl" type="string"> + <text name="region_section_lbl"> Región: </text> + <text length="1" name="region_name_lbl" type="string"> + Nombre: + </text> <text length="1" name="region_name_text" type="string"> leyla </text> - <text length="1" name="estate_name_lbl" type="string"> - Estado: + <text name="region_landtype_lbl"> + Tipo: </text> - <text length="1" name="estate_name_text" type="string"> - mainland + <text name="region_landtype_text"> + Mainland / Homestead </text> - <text length="1" name="estate_owner_lbl" type="string"> - Propietario del estado: + <text name="region_maturity_lbl"> + Calificación: </text> - <text length="1" name="estate_owner_text" type="string"> - (nadie) + <text name="region_maturity_text"> + 'Adult' + </text> + <text name="resellable_lbl"> + Revender: </text> <text length="1" name="resellable_clause" type="string"> - El terreno comprado en esta región no se podrá revender. + El terreno de esta región no se podrá revender. + </text> + <text name="changeable_lbl"> + Dividir: </text> <text length="1" name="changeable_clause" type="string"> - El terreno comprado en esta región no se podrá unir/dividir. + El terreno de esta región no se podrá unir/dividir. </text> - <text_editor length="1" name="covenant_editor" type="string"> - No se ha aportado un contrato para este estado. - </text_editor> <string name="can_resell"> El terreno comprado en esta región se podrá revender. </string> @@ -148,7 +184,7 @@ Vaya al menú Mundo > Acerca del terreno o seleccione otra parcela para ver s El terreno comprado en esta región se podrá unir o dividir. </string> <string name="can_not_change"> - PEl terreno comprado en esta región no se podrá unir o dividir. + El terreno comprado en esta región no se podrá unir o dividir. </string> </panel> <panel label="Objetos" name="land_objects_panel"> @@ -158,7 +194,7 @@ Vaya al menú Mundo > Acerca del terreno o seleccione otra parcela para ver s <text length="1" name="Simulator primitive usage:" type="string"> Simulador de uso de prims: </text> - <text name="objects_available"> + <text name="objects_available" left="214" width="230" > [COUNT] de un máximo de [MAX] ([AVAILABLE] disponibles) </text> <string name="objects_available_text"> @@ -167,56 +203,57 @@ Vaya al menú Mundo > Acerca del terreno o seleccione otra parcela para ver s <string name="objects_deleted_text"> [COUNT] de un máximo de [MAX] ([DELETED] se borrarán) </string> - <text length="1" name="Primitives parcel supports:" type="string"> + <text length="1" name="Primitives parcel supports:" type="string" width="200"> Prims que admite la parcela: </text> - <text name="object_contrib_text"> + <text name="object_contrib_text" left="214" width="152"> [COUNT] </text> <text length="1" name="Primitives on parcel:" type="string"> Prims en la parcela: </text> - <text name="total_objects_text"> + <text name="total_objects_text" left="214" width="48"> [COUNT] </text> - <text length="1" name="Owned by parcel owner:" type="string"> + <text length="1" name="Owned by parcel owner:" type="string" left="14" width="180" > Del propietario de la parcela: </text> - <text name="owner_objects_text"> + <text name="owner_objects_text" left="214" width="48"> [COUNT] </text> - <button label="Mostrar" label_selected="Mostrar" name="ShowOwner"/> - <button label="Devolver..." label_selected="Devolver..." name="ReturnOwner..." tool_tip="Devolver los objetos a sus propietarios."/> - <text length="1" name="Set to group:" type="string"> + <button label="Mostrar" label_selected="Mostrar" name="ShowOwner" right="-135" width="60"/> + <button label="Devolver..." label_selected="Devolver..." name="ReturnOwner..." tool_tip="Devolver los objetos a sus propietarios." right="-10" width="119"/> + <text length="1" name="Set to group:" type="string" left="14" width="180"> Del grupo: </text> - <text name="group_objects_text"> + <text name="group_objects_text" left="214" width="48"> [COUNT] </text> - <button label="Mostrar" label_selected="Mostrar" name="ShowGroup"/> - <button label="Devolver..." label_selected="Devolver..." name="ReturnGroup..." tool_tip="Devolver los objetos a sus propietarios."/> - <text length="1" name="Owned by others:" type="string"> + <button label="Mostrar" label_selected="Mostrar" name="ShowGroup" right="-135" width="60"/> + <button label="Devolver..." label_selected="Devolver..." name="ReturnGroup..." tool_tip="Devolver los objetos a sus propietarios." right="-10" width="119"/> + <text length="1" name="Owned by others:" type="string" left="14" width="128"> Propiedad de otros: </text> - <text name="other_objects_text"> + <text name="other_objects_text" left="214" width="48"> [COUNT] </text> - <button label="Mostrar" label_selected="Mostrar" name="ShowOther"/> - <button label="Devolver..." label_selected="Devolver..." name="ReturnOther..." tool_tip="Devolver los objetos a sus propietarios."/> - <text length="1" name="Selected / sat upon:" type="string"> + <button label="Mostrar" label_selected="Mostrar" name="ShowOther" right="-135" width="60"/> + <button label="Devolver..." label_selected="Devolver..." name="ReturnOther..." tool_tip="Devolver los objetos a sus propietarios." right="-10" width="119"/> + <text length="1" name="Selected / sat upon:" type="string" left="14" width="193" > Seleccionados / con gente sentada: </text> - <text name="selected_objects_text"> + <text name="selected_objects_text" left="214" width="48"> [COUNT] </text> - <text name="Autoreturn"> + <text name="Autoreturn" left="4" width="412" > Autodevolución de objetos a otros residentes (minutos; 0 la desactiva): </text> - <text length="1" name="Object Owners:" type="string"> + <line_editor name="clean other time" right="-20" /> + <text length="1" name="Object Owners:" type="string" width="150"> Propietarios de los objetos: </text> - <button label="Actualizar la lista" label_selected="Actualizar la lista" name="Refresh List"/> - <button label="Devolver los objetos..." label_selected="Devolver los objetos..." name="Return objects..."/> + <button label="Actualizar la lista" label_selected="Actualizar la lista" name="Refresh List" left="158"/> + <button label="Devolver los objetos..." label_selected="Devolver los objetos..." name="Return objects..." left="270" width="164"/> <name_list name="owner list"> <column label="Tipo" name="type"/> <column label="Nombre" name="name"/> @@ -231,31 +268,81 @@ Vaya al menú Mundo > Acerca del terreno o seleccione otra parcela para ver s <check_box label="Editar el terreno" name="edit land check" tool_tip="Si se marca, cualquiera podrá modificar su terreno. Mejor dejarlo desmarcado, pues usted siempre puede modificar su terreno."/> <check_box label="Crear hitos" name="check landmark"/> <check_box label="Volar" name="check fly" tool_tip="Si se marca, los residentes podrán volar en su terreno. Si no, sólo podrán volar al cruzarlo o hasta que aterricen en él."/> - <text length="1" name="allow_label2" type="string"> + <text length="1" name="allow_label2" type="string" left="162" > Crear objetos: </text> - <check_box label="Todos los residentes" name="edit objects check"/> - <check_box label="El grupo" name="edit group objects check"/> - <text length="1" name="allow_label3" type="string"> + <check_box label="Todos los residentes" name="edit objects check" left="255" /> + <check_box label="El grupo" name="edit group objects check" left="385" /> + <text length="1" name="allow_label3" type="string" left="162"> Dejar objetos: </text> - <check_box label="Todos los residentes" name="all object entry check"/> - <check_box label="El grupo" name="group object entry check"/> - <text length="1" name="allow_label4" type="string"> + <check_box label="Todos los residentes" name="all object entry check" left="255"/> + <check_box label="El grupo" name="group object entry check" left="385"/> + <text length="1" name="allow_label4" type="string" left="162"> Ejecutar scripts: </text> - <check_box label="Todos los residentes" name="check other scripts"/> - <check_box label="El grupo" name="check group scripts"/> + <check_box label="Todos los residentes" name="check other scripts" left="255"/> + <check_box label="El grupo" name="check group scripts" left="385"/> <text length="1" name="land_options_label" type="string"> Opciones del terreno: </text> <check_box label="Seguro (sin daño)" name="check safe" tool_tip="Si se marca, convierte el terreno en 'seguro', desactivando el daño en combate. Si no, se activa el daño en combate."/> <check_box label="Sin 'empujones'" name="PushRestrictCheck" tool_tip="Previene scripts que empujen. Marcando esta opción prevendrá que en su terreno haya comportamientos destructivos."/> <check_box label="Mostrar la parcela en Buscar (30 L$/semana) en" name="ShowDirectoryCheck" tool_tip="Let people see this parcel in search results"/> + <string name="search_enabled_tooltip"> + Permitir que aparezca esta parcela en los resultados de la búsqueda + </string> + <string name="search_disabled_small_tooltip"> + Esta opción está desactivada porque la parcela tiene 128 m² o menos. +Sólo las parcelas más grandes pueden listarse en la búsqueda. + </string> + <string name="search_disabled_permissions_tooltip"> + Esta opción no esta activada porque usted no puede modificar las opciones de la parcela. + </string> + <combo_box name="land category with adult"> + <combo_item name="AnyCategory"> + Cualquier categorÃa + </combo_item> + <combo_item name="LindenLocation"> + Localización Linden + </combo_item> + <combo_item name="Adult"> + 'Adult' + </combo_item> + <combo_item name="Arts&Culture"> + Arte y Cultura + </combo_item> + <combo_item name="Business"> + Negocios + </combo_item> + <combo_item name="Educational"> + Educativo + </combo_item> + <combo_item name="Gaming"> + Juegos de azar + </combo_item> + <combo_item name="Hangout"> + Entretenimiento + </combo_item> + <combo_item name="NewcomerFriendly"> + Para recién llegados + </combo_item> + <combo_item name="Parks&Nature"> + Parques y Naturaleza + </combo_item> + <combo_item name="Residential"> + Residencial + </combo_item> + <combo_item name="Shopping"> + Compras + </combo_item> + <combo_item name="Other"> + Otra + </combo_item> + </combo_box> <combo_box name="land category"> <combo_box.item name="AnyCategory" label="Cualquier categorÃa"/> <combo_box.item name="LindenLocation" label="Localización Linden"/> - <combo_box.item name="Arts&Culture" label="Arte y Cultura"/> <combo_box.item name="Business" label="Negocios"/> <combo_box.item name="Educational" label="Educativo"/> @@ -268,7 +355,19 @@ Vaya al menú Mundo > Acerca del terreno o seleccione otra parcela para ver s <combo_box.item name="Other" label="Otra"/> </combo_box> <button label="?" label_selected="?" name="?"/> - <check_box name="MatureCheck" /> + <check_box label="Contenido 'Mature'" name="MatureCheck" tool_tip=""/> + <string name="mature_check_mature"> + Contenido 'Mature' + </string> + <string name="mature_check_adult"> + Contenido 'Adult' + </string> + <string name="mature_check_mature_tooltip"> + La información o el contenido de su parcela se considera 'Mature'. + </string> + <string name="mature_check_adult_tooltip"> + La información o el contenido de su parcela se considera 'Adult'. + </string> <text length="1" name="Snapshot:" type="string"> Foto: </text> @@ -297,64 +396,60 @@ Vaya al menú Mundo > Acerca del terreno o seleccione otra parcela para ver s </string> </panel> <panel label="Media" name="land_media_panel"> - <text name="with media:"> + <text name="with media:" width="85"> Tipo de media: </text> - <combo_box name="media type" tool_tip="Especifique si la URL es una pelÃcula, una web, u otro media"/> - <text name="at URL:"> + <combo_box name="media type" tool_tip="Especifique si la URL es una pelÃcula, una web, u otro media" left="97" /> + <text name="at URL:" width="85"> URL del media: </text> + <line_editor left="97" name="media_url"/> <button label="Definir..." label_selected="Definir..." name="set_media_url"/> <text name="Description:"> Descripción: </text> - <line_editor name="url_description" tool_tip="Texto a mostrar cerca del botón play/cargar"/> + <line_editor name="url_description" tool_tip="Texto a mostrar cerca del botón play/cargar" left="97" /> <text length="1" name="Media texture:" type="string"> Cambiar la textura: </text> - <texture_picker label="" name="media texture" tool_tip="Pulse para elegir una imagen"/> - <text name="replace_texture_help"> - (Los objetos que usen esta textura mostrarán la pelÃcula o la web -cuando pulse la flecha de play) + <texture_picker label="" name="media texture" tool_tip="Pulse para elegir una imagen" left="97" /> + <text name="replace_texture_help" width="285"> + (Los objetos que usen esta textura mostrarán la +pelÃcula o la web cuando pulse la flecha de play.) </text> <text name="Options:"> Opciones de los media: </text> - <check_box label="Escala automática" name="media_auto_scale" tool_tip="Marcando esta opción, se ajustará el tamaño del contenido automáticamente. Puede ser ligeramente más lento y con menor calidad visual, pero no tendrá que ajustar ni alinear ninguna textura."/> + <check_box left="97" label="Escala automática" name="media_auto_scale" tool_tip="Marcando esta opción, se ajustará el tamaño del contenido automáticamente. Puede ser ligeramente más lento y con menor calidad visual, pero no tendrá que ajustar ni alinear ninguna textura."/> <check_box label="Media en bucle" name="media_loop" tool_tip="Ejecuta el media en bucle: cuando acaba su ejecución, vuelve a empezar."/> - <check_box label="Ocultar la URL del media" name="hide_media_url" tool_tip="Marcando esta opción esconderá en la información de esta parcela -a quien no esté autorizado a verla- la URL del media. Note que esto no está disponible para HTML."/> + <check_box left="97" label="Ocultar la URL del media" name="hide_media_url" tool_tip="Marcando esta opción esconderá en la información de esta parcela -a quien no esté autorizado a verla- la URL del media. Note que esto no está disponible para HTML."/> <check_box label="Ocultar la URL de la música" name="hide_music_url" tool_tip="Marcando esta opción esconderá en la información de esta parcela -a quien no esté autorizado a verla- la URL de la música"/> - <text name="media_size" tool_tip="Tamaño en el que mostrar las web (marque 0 para por defecto)."> + <text name="media_size" tool_tip="Tamaño en el que mostrar las web (marque 0 para por defecto)." left="102" width="120"> Tamaño del media: </text> - <spinner name="media_size_width" tool_tip="Tamaño en el que mostrar las web (marque 0 para por defecto)."/> + <spinner left_delta="104" name="media_size_width" tool_tip="Tamaño en el que mostrar las web (marque 0 para por defecto)."/> <spinner name="media_size_height" tool_tip="Tamaño en el que mostrar las web (marque 0 para por defecto)."/> <text name="pixels"> pÃxeles </text> - <text name="MusicURL:"> - URL de la música: + <text name="MusicURL:" bottom_delta="-28" > + URL de la +música: </text> + <line_editor bottom_delta="-12" left="97" name="music_url"/> <text name="Sound:"> Sonido: </text> - <check_box label="Limitar el sonido a sólo esta parcela" name="check sound local"/> + <check_box left="97" label="Limitar los gestos y los sonidos de objetos a esta parcela" name="check sound local"/> + <button label="?" label_selected="?" name="?" left="424"/> <text name="Voice settings:"> Voz: </text> - <radio_group name="parcel_voice_channel"> - <radio_item name="Estate"> - Usar el canal del estado - </radio_item> - <radio_item name="Private"> - Usar un canal privado - </radio_item> - <radio_item name="Disabled"> - Desactivar el audio ambiental en esta parcela - </radio_item> - </radio_group> + <check_box left="97" label="Activar la voz" name="parcel_enable_voice_channel"/> + <check_box left="97" label="Activar la voz (establecido por el Estado)" name="parcel_enable_voice_channel_is_estate_disabled"/> + <check_box left="117" label="Limitar la voz a esta parcela" name="parcel_enable_voice_channel_parcel"/> </panel> <panel label="Acceso" name="land_access_panel"> <text length="1" name="Limit access to this parcel to:" type="string"> diff --git a/indra/newview/skins/default/xui/es/floater_animation_preview.xml b/indra/newview/skins/default/xui/es/floater_animation_preview.xml index 73ed06d1f727e38e7b2163454112e542d377e15e..5a03aa6370c7ba580952c97da23d14f258179044 100644 --- a/indra/newview/skins/default/xui/es/floater_animation_preview.xml +++ b/indra/newview/skins/default/xui/es/floater_animation_preview.xml @@ -6,14 +6,14 @@ <text name="description_label"> Descripción: </text> - <spinner label="Prioridad" name="priority" tool_tip="Controle qué otras animaciones pueden ser anuladas por ésta."/> - <check_box label="Bucle" name="loop_check" tool_tip="Haga esta animación en bucle."/> - <spinner label="Empieza(%)" name="loop_in_point" tool_tip="Indique el punto en el que la animación empieza el bucle."/> - <spinner label="Acaba(%)" name="loop_out_point" tool_tip="Indique el punto en el que la animación acaba el bucle."/> + <spinner label_width="72" width="110" label="Prioridad:" name="priority" tool_tip="Controle qué otras animaciones pueden ser anuladas por ésta."/> + <check_box left="8" label="Bucle:" name="loop_check" tool_tip="Haga esta animación en bucle."/> + <spinner label_width="65" left="65" width="116" label="Empieza(%)" name="loop_in_point" tool_tip="Indique el punto en el que la animación empieza el bucle."/> + <spinner label_width="50" left="185" label="Acaba(%)" name="loop_out_point" tool_tip="Indique el punto en el que la animación acaba el bucle."/> <text name="hand_label"> Posición de las manos </text> - <combo_box label="" name="hand_pose_combo" tool_tip="Control de lo que hacen las manos durante la animación."> + <combo_box left_delta="120" width="164" name="hand_pose_combo" tool_tip="Control de lo que hacen las manos durante la animación."> <combo_box.item name="Spread" label="Extendidas"/> <combo_box.item name="Relaxed" label="Relajadas"/> <combo_box.item name="PointBoth" label="Ambas señalan"/> @@ -31,7 +31,7 @@ <text name="emote_label"> Expresión </text> - <combo_box label="" name="emote_combo" tool_tip="Controle qué hace la cara durante la animación."> + <combo_box left_delta="120" width="164" name="emote_combo" tool_tip="Controle qué hace la cara durante la animación."> <combo_box.item name="[None]" label="Nada]"/> <combo_box.item name="Aaaaah" label="Aaaaah"/> <combo_box.item name="Afraid" label="Con miedo"/> @@ -53,24 +53,25 @@ <combo_box.item name="Wink" label="Guiño"/> <combo_box.item name="Worry" label="Preocupación"/> </combo_box> - <text name="preview_label"> + <text name="preview_label" width="250"> Vista previa mientras </text> - <combo_box label="" name="preview_base_anim" tool_tip="Compruebe cómo se comporta su animación a la vez que el avatar realiza acciones comunes."> + <combo_box left_delta="120" width="130" name="preview_base_anim" tool_tip="Compruebe cómo se comporta su animación a la vez que el avatar realiza acciones comunes."> <combo_box.item name="Standing" label="Estar de pie"/> <combo_box.item name="Walking" label="Caminar"/> <combo_box.item name="Sitting" label="Estar sentado"/> <combo_box.item name="Flying" label="Volar"/> </combo_box> - <spinner label="Combinar (sec)" name="ease_in_time" tool_tip="Tiempo (en segundos) en el que se combinan las animaciones."/> - <spinner label="Dejar de combinar (sec)" name="ease_out_time" tool_tip="Tiempo (en segundos) en el que dejan de combinarse las animaciones."/> - <button label="" name="play_btn" tool_tip="Mover/Pausar su animación."/> + <spinner label_width="125" width="192" label="Combinar (sec)" name="ease_in_time" tool_tip="Tiempo (en segundos) en el que se combinan las animaciones."/> + <spinner bottom_delta="-20" label_width="125" left="10" width="192" label="Dejar de combinar (sec)" name="ease_out_time" tool_tip="Tiempo (en segundos) en el que dejan de combinarse las animaciones."/> + <button bottom_delta="-32" name="play_btn" tool_tip="Mover/Pausar su animación."/> <button label="" name="stop_btn" tool_tip="Parar la repetición de la animación"/> <slider label="" name="playback_slider"/> <text name="bad_animation_text"> No se ha podido leer el archivo de la animación. -Recomendamos usar archivos BVH exportados de Poser 4. +Recomendamos usar archivos BVH exportados de +Poser 4. </text> <button label="Cancelar" name="cancel_btn"/> <button label="Subir ([AMOUNT] L$)" name="ok_btn"/> diff --git a/indra/newview/skins/default/xui/es/floater_avatar_picker.xml b/indra/newview/skins/default/xui/es/floater_avatar_picker.xml index a75243cb38e79bbafcd7306fe125138415b92db9..105111f29fa1c6c5b9e4a0cdfa300aa51001fba1 100644 --- a/indra/newview/skins/default/xui/es/floater_avatar_picker.xml +++ b/indra/newview/skins/default/xui/es/floater_avatar_picker.xml @@ -1,15 +1,40 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="avatarpicker" title="Elegir a un residente"> - <text name="instruct_search_resident_name"> - Escriba parte del nombre del residente: - </text> - <button label="Encontrar" label_selected="Encontrar" name="Find"/> - <text name="Or select their calling card:"> - O elija una tarjeta de visita: - </text> - <button label="Cerrar" label_selected="Cerrar" name="Close"/> + <tab_container name="ResidentChooserTabs"> + <panel label="Buscar" name="SearchPanel"> + <text name="InstructSearchResidentName"> + Escriba parte del nombre del residente: + </text> + <button label="Buscar" label_selected="Buscar" name="Find"/> + </panel> + <panel label="Tarjetas de visita" name="CallingCardsPanel"> + <text name="InstructSelectCallingCard"> + Elija una tarjeta de visita: + </text> + </panel> + <panel label="Cercanos" name="NearMePanel"> + <text name="InstructSelectResident"> + Seleccionar un residente cercano: + </text> + <button label="Actualizar la lista" label_selected="Actualizar la lista" name="Refresh"/> + <slider label="Alcance" name="near_me_range"/> + <text name="meters"> + Metros + </text> + </panel> + </tab_container> <button label="Elegir" label_selected="Elegir" name="Select"/> - <string name="NotFound"> + <button label="Cancelar" label_selected="Cancelar" name="Cancel"/> + <string name="not_found"> No se ha encontrado '[TEXT]' </string> + <string name="no_one_near"> + No hay nadie cerca + </string> + <string name="no_results"> + Sin resultados + </string> + <string name="searching"> + Buscando... + </string> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_beacons.xml b/indra/newview/skins/default/xui/es/floater_beacons.xml index aeb1250997152bf44d7f0d8fbec17a43c16fc275..9282cb04a693cb540899ec2790d4ff7fdc6a48be 100644 --- a/indra/newview/skins/default/xui/es/floater_beacons.xml +++ b/indra/newview/skins/default/xui/es/floater_beacons.xml @@ -1,15 +1,15 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="beacons" title="Balizas"> - <panel name="beacons_panel"> - <check_box label="Objetos con script sólo al tocarlos" name="touch_only"/> - <check_box label="Objetos con script" name="scripted"/> - <check_box label="Objetos materiales" name="physical"/> - <check_box label="Fuentes de sonido" name="sounds"/> - <check_box label="Fuentes de partÃculas" name="particles"/> - <check_box label="Activar los realzados" name="highlights"/> - <check_box label="Activar las balizas" name="beacons"/> - <text name="beacon_width_label"> - Ancho de la baliza: - </text> - </panel> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="beacons" title="Balizas"> + <panel name="beacons_panel"> + <check_box label="Objetos con script sólo al tocarlos" name="touch_only"/> + <check_box label="Objetos con script" name="scripted"/> + <check_box label="Objetos materiales" name="physical"/> + <check_box label="Fuentes de sonido" name="sounds"/> + <check_box label="Fuentes de partÃculas" name="particles"/> + <check_box label="Activar los realzados" name="highlights"/> + <check_box label="Activar las balizas" name="beacons"/> + <text name="beacon_width_label"> + Ancho de la baliza: + </text> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_bulk_perms.xml b/indra/newview/skins/default/xui/es/floater_bulk_perms.xml new file mode 100644 index 0000000000000000000000000000000000000000..32517130743d48d73e159658a3b2200a5b290064 --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_bulk_perms.xml @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floaterbulkperms" title="Cambio masivo de los permisos del contenido"> + <text name="applyto"> + Tipos de contenido + </text> + <check_box label="Animación" name="check_animation"/> + <check_box label="Partes del cuerpo" name="check_bodypart"/> + <check_box label="Ropa" name="check_clothing"/> + <check_box label="Gestos" name="check_gesture"/> + <check_box label="Hitos" name="check_landmark"/> + <check_box label="Notas" name="check_notecard"/> + <check_box label="Objetos" name="check_object"/> + <check_box label="Scripts" name="check_script"/> + <check_box label="Sonidos" name="check_sound"/> + <check_box label="Texturas" name="check_texture"/> + <button label="Marcar todo" label_selected="Todo" name="check_all"/> + <button label="Desmarcar todo" label_selected="Ninguno" name="check_none"/> + <text name="newperms"> + Permisos nuevos + </text> + <check_box label="Compartir con el grupo" name="share_with_group"/> + <check_box label="Permitir a cualquiera que lo copie" name="everyone_copy"/> + <text name="NextOwnerLabel"> + El próximo propietario puede: + </text> + <check_box label="Modificarlo" name="next_owner_modify"/> + <check_box label="Copiarlo" name="next_owner_copy"/> + <check_box label="Revenderlo/Darlo" name="next_owner_transfer"/> + <button label="Ayuda" name="help"/> + <button label="Aplicar" name="apply"/> + <button label="Cerrar" name="close"/> + <string name="nothing_to_modify_text"> + Lo seleccionado tiene contenidos no editables. + </string> + <string name="status_text"> + Configurando los permisos de [NAME] + </string> + <string name="start_text"> + Iniciando el cambio de permisos solicitado... + </string> + <string name="done_text"> + Finalizado el cambio de permisos solicitado. + </string> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_buy_currency.xml b/indra/newview/skins/default/xui/es/floater_buy_currency.xml index 03a6d511ab33841045e6552e32c708b2cfc82047..b26a9c7494ce82301d275c85641ef28af1f0cf57 100644 --- a/indra/newview/skins/default/xui/es/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/es/floater_buy_currency.xml @@ -3,10 +3,10 @@ <text name="info_buying"> Comprando dinero: </text> - <text name="info_cannot_buy"> + <text name="info_cannot_buy" left="5" right="-5"> No puede comprar en este momento: </text> - <text name="info_need_more"> + <text name="info_need_more" left="5" right="-5"> Necesita más dinero: </text> <text name="error_message"> @@ -16,8 +16,8 @@ <text name="contacting"> Contactando con el LindeX... </text> - <text name="buy_action_unknown"> - Comprar L$ en el sistema LindeX de cambio de moneda + <text name="buy_action_unknown" right="-5"> + Comprar L$ en el sistema LindeX de cambio </text> <text name="buy_action"> [NAME] [PRICE] L$ @@ -52,7 +52,7 @@ <text name="total_amount"> [AMT] L$ </text> - <text name="purchase_warning_repurchase"> + <text name="purchase_warning_repurchase" right="-10"> Confirmando esta compra sólo compra la moneda. Tendrá que intentar de nuevo la operación. </text> diff --git a/indra/newview/skins/default/xui/es/floater_buy_land.xml b/indra/newview/skins/default/xui/es/floater_buy_land.xml index 4203bc850cf0c57f88bb16d0f8b730420a70dec2..7ee15955eb30aea99b81d50c697deeafb3f596f7 100644 --- a/indra/newview/skins/default/xui/es/floater_buy_land.xml +++ b/indra/newview/skins/default/xui/es/floater_buy_land.xml @@ -3,33 +3,40 @@ <text name="region_name_label"> Región: </text> - <text name="region_name_text"> + <text name="region_name_text" left="565"> (desconocida) </text> + <text name="region_type_label"> + Tipo: + </text> + <text name="region_type_text" left="565"> + (desconocido) + </text> <text name="estate_name_label"> Estado: </text> - <text name="estate_name_text"> + <text name="estate_name_text" left="565"> (desconocido) </text> - <text name="estate_owner_label"> + <text name="estate_owner_label" width="115" right="565"> Propietario del estado: </text> - <text name="estate_owner_text"> + <text name="estate_owner_text" left="565" > (desconocido) </text> <text name="resellable_changeable_label"> El terreno comprado en esta región: </text> <text name="resellable_clause"> - El terreno comprado en esta región puede o no puede ser revendido. + Podrá o no revenderse. </text> <text name="changeable_clause"> - puede o no puede ser unido o subdividido. + Podrá o no unirse o dividirse. </text> <text name="covenant_text"> Deve aceptar el Contrato del Estado: </text> + <text left="470" name="covenant_timestamp_text"/> <text_editor name="covenant_editor"> Cargando... </text_editor> @@ -50,7 +57,9 @@ Precio: </text> <text name="info_price"> - 1500 L$, objetos incluidos + 1500 L$ +(1.1 L$/m²) +incluyendo los objetos </text> <text name="info_action"> Al comprar este terreno: @@ -74,8 +83,8 @@ Aumenta su cuota mensual por uso de terreno a 40 US$/mes. </text> <text name="land_use_reason"> - Usted es propietario de 1.309 m² de terreno. -Esta parcela tiene 512 m² de terreno. + Usted posee 1309 m² de terreno. +Esta parcela mide 512 m². </text> <text name="purchase_action"> Pagar al residente Joe 4.000 L$ por el terreno @@ -178,7 +187,7 @@ Inténtelo seleccionando un área más pequeña. Pagar por este terreno [AMOUNT] L$ a [SELLER] </string> <string name="buy_for_US"> - Comprar [AMOUNT] L$ por, aprox., [AMOUNT2] US$ , + Comprar [AMOUNT] L$ por, aprox., [AMOUNT2] US$, </string> <string name="parcel_meters"> Esta parcela tiene [AMOUNT] m². @@ -196,6 +205,14 @@ admite [AMOUNT2] objetos <string name="sold_with_objects"> vendido con los objetos </string> + <string name="sold_without_objects"> + objetos no incluidos + </string> + <string name="info_price_string"> + [PRICE] L$ +([PRICE_PER_SQM] L$/m²) +[SOLD_WITH_OBJECTS] + </string> <string name="insufficient_land_credits"> Antes de que se complete la compra, el grupo [GROUP] necesitará los suficientes créditos de uso en contribución de terreno diff --git a/indra/newview/skins/default/xui/es/floater_camera.xml b/indra/newview/skins/default/xui/es/floater_camera.xml index 11461af5869006b971d862c93579b3bd6ce7228b..0246f0d440bbbe646692c588279fb2a9f66f4c3b 100644 --- a/indra/newview/skins/default/xui/es/floater_camera.xml +++ b/indra/newview/skins/default/xui/es/floater_camera.xml @@ -1,12 +1,12 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="move floater" title=""> - <string name="rotate_tooltip"> - Girar la cámara alrededor de lo enfocado - </string> - <string name="zoom_tooltip"> - Hacer zoom con la cámara en lo enfocado - </string> - <string name="move_tooltip"> - Mover la cámara arriba y abajo, izquierda y derecha. - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="move floater" title=""> + <string name="rotate_tooltip"> + Girar la cámara alrededor de lo enfocado + </string> + <string name="zoom_tooltip"> + Hacer zoom con la cámara en lo enfocado + </string> + <string name="move_tooltip"> + Mover la cámara arriba y abajo, izquierda y derecha. + </string> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_customize.xml b/indra/newview/skins/default/xui/es/floater_customize.xml index 4922d0817858a30dcae22237ab1a7f16d39b7ba7..5efc989eff7ba41a522bcad7cd73f514f728fc61 100644 --- a/indra/newview/skins/default/xui/es/floater_customize.xml +++ b/indra/newview/skins/default/xui/es/floater_customize.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater customize" title="Apariencia"> - <tab_container name="customize tab container"> +<floater name="floater customize" title="Apariencia" width="527"> + <tab_container name="customize tab container" width="525"> <panel label="Partes del cuerpo" name="body_parts_placeholder"/> - <panel label="Forma" name="Shape"> + <panel label="Forma" name="Shape" width="389"> <button label="Restablecer" label_selected="Restablecer" name="Revert"/> <button label="Cuerpo" label_selected="Cuerpo" name="Body"/> <button label="Cabeza" label_selected="Cabeza" name="Head"/> @@ -14,14 +14,9 @@ <button label="Torso" label_selected="Torso" name="Torso"/> <button label="Piernas" label_selected="Piernas" name="Legs"/> <radio_group name="sex radio"> - <radio_item length="1" name="radio" type="string"> - Mujer - </radio_item> - <radio_item length="1" name="radio2" type="string"> - Varón - </radio_item> + <radio_item length="1" name="radio" type="string" label="Mujer" /> + <radio_item length="1" name="radio2" type="string" label="Varón" /> </radio_group> - <button label="Aleatoria" label_selected="Aleatoria" name="Randomize"/> <text length="1" name="title" type="string"> [DESC] </text> @@ -38,21 +33,24 @@ Situada en [PATH] </text> <text length="1" name="not worn instructions" type="string"> - Póngase una forma nueva arrastrando una desde su inventario hasta su avatar. O parta de cero creando una nueva y vistiéndola. + Póngase una forma nueva arrastrando una desde su inventario hasta su +avatar. O parta de cero creando una nueva y vistiéndola. </text> <text length="1" name="no modify instructions" type="string"> No tiene permiso para modificar este Ãtem. </text> + <text name="Item Action Label" right="107"> + Forma: + </text> <button label="Crear una forma nueva" label_selected="Crear una forma nueva" name="Create New"/> - <button label="Quitarla" label_selected="Quitarla" name="Take Off"/> - <button label="Guardar" label_selected="Guardar" name="Save"/> - <button label="Guardar como" label_selected="Guardar como" name="Save As"/> + <button left="113" label="Guardar" label_selected="Guardar" name="Save"/> + <button left="199" width="102" label="Guardar como..." label_selected="Guardar como..." name="Save As"/> </panel> <panel label="Piel" name="Skin"> - <button label="Color de piel" label_selected="Color de piel" name="Skin Color"/> - <button label="Detalles faciales" label_selected="Detalles faciales" name="Face Detail"/> - <button label="Maquillaje" label_selected="Maquillaje" name="Makeup"/> - <button label="Detalles del cuerpo" label_selected="Detalles del cuerpo" name="Body Detail"/> + <button label="Color de piel" label_selected="Color de piel" name="Skin Color" width="115"/> + <button label="Detalles faciales" label_selected="Detalles faciales" name="Face Detail" width="115"/> + <button label="Maquillaje" label_selected="Maquillaje" name="Makeup" width="115"/> + <button label="Detalles del cuerpo" label_selected="Detalles del cuerpo" name="Body Detail" width="115"/> <text length="1" name="title" type="string"> [DESC] </text> @@ -69,19 +67,21 @@ Situada en [PATH] </text> <text length="1" name="not worn instructions" type="string"> - Póngase otra piel arrastrando una desde su inventario hasta su avatar. O parta de cero creando una nueva y vistiéndola. + Póngase otra piel arrastrando una desde su inventario hasta su +avatar. O parta de cero creando una nueva y vistiéndola. </text> <text length="1" name="no modify instructions" type="string"> No tiene permiso para modificar este Ãtem. </text> - <texture_picker label="Tatuajes de la cabeza" name="Head Tattoos" tool_tip="Pulse para elegir una imagen"/> - <texture_picker label="Tatuajes superiores" name="Upper Tattoos" tool_tip="Pulse para elegir una imagen"/> - <texture_picker label="Tatuajes inferiores" name="Lower Tattoos" tool_tip="Pulse para elegir una imagen"/> - <button label="Aleatoria" label_selected="Aleatoria" name="Randomize"/> + <text name="Item Action Label" right="107"> + Piel: + </text> + <texture_picker width="90" label="Tatuaje: cabeza" name="Head Tattoos" tool_tip="Pulse para elegir una imagen"/> + <texture_picker width="90" label="Tatuaje: superior" name="Upper Tattoos" tool_tip="Pulse para elegir una imagen"/> + <texture_picker width="90" label="Tatuaje: inferior" name="Lower Tattoos" tool_tip="Pulse para elegir una imagen"/> <button label="Crear una piel nueva" label_selected="Crear una piel nueva" name="Create New"/> - <button label="Quitarla" label_selected="Quitarla" name="Take Off"/> - <button label="Guardar" label_selected="Guardar" name="Save"/> - <button label="Guardar como" label_selected="Guardar como" name="Save As"/> + <button left="113" label="Guardar" label_selected="Guardar" name="Save"/> + <button left="199" width="102" label="Guardar como..." label_selected="Guardar como..." name="Save As"/> <button label="Restablecer" label_selected="Restablecer" name="Revert"/> </panel> <panel label="Pelo" name="Hair"> @@ -105,17 +105,19 @@ Situado en [PATH] </text> <text length="1" name="not worn instructions" type="string"> - Póngase otro pelo arrastrando uno desde su inventario hasta su avatar. O parta de cero creando uno nueva y vistiéndolo. + Póngase otro pelo arrastrando uno desde su inventario hasta su +avatar. O parta de cero creando uno nueva y vistiéndolo. </text> <text length="1" name="no modify instructions" type="string"> No tiene permiso para modificar este Ãtem. </text> + <text name="Item Action Label" right="107"> + Pelo: + </text> <texture_picker label="Textura" name="Texture" tool_tip="Pulse para elegir una imagen"/> - <button label="Aleatorio" label_selected="Aleatorio" name="Randomize"/> <button label="Crear un pelo nuevo" label_selected="Crear un pelo nuevo" name="Create New"/> - <button label="Quitarlo" label_selected="Quitarlo" name="Take Off"/> - <button label="Guardar" label_selected="Guardar" name="Save"/> - <button label="Guardar como" label_selected="Guardar como" name="Save As"/> + <button left="113" label="Guardar" label_selected="Guardar" name="Save"/> + <button left="199" width="102" label="Guardar como..." label_selected="Guardar como..." name="Save As"/> <button label="Restablecer" label_selected="Restablecer" name="Revert"/> </panel> <panel label="Ojos" name="Eyes"> @@ -135,17 +137,19 @@ Situados en [PATH] </text> <text length="1" name="not worn instructions" type="string"> - Póngase otros ojos arrastrando unos desde su inventario hasta su avatar. O parta de cero creando unos nuevos y vistiéndoselos. + Póngase otros ojos arrastrando unos desde su inventario hasta su +avatar. O parta de cero creando unos nuevos y vistiéndoselos. </text> <text length="1" name="no modify instructions" type="string"> No tiene permiso para modificar este Ãtem. </text> + <text name="Item Action Label" right="107"> + Ojos: + </text> <texture_picker label="Iris" name="Iris" tool_tip="Pulse para elegir una imagen"/> - <button label="Aleatorios" label_selected="Aleatorios" name="Randomize"/> <button label="Crear unos ojos nuevos" label_selected="Crear unos ojos nuevos" name="Create New"/> - <button label="Quitarlos" label_selected="Quitarlos" name="Take Off"/> - <button label="Guardar" label_selected="Guardar" name="Save"/> - <button label="Guardar como" label_selected="Guardar como" name="Save As"/> + <button left="113" label="Guardar" label_selected="Guardar" name="Save"/> + <button left="199" width="102" label="Guardar como..." label_selected="Guardar como..." name="Save As"/> <button label="Restablecer" label_selected="Restablecer" name="Revert"/> </panel> <panel label="Ropa" name="clothes_placeholder"/> @@ -154,8 +158,8 @@ <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulse para abrir el selector de color"/> <button label="Crear una falda nueva" label_selected="Crear una falda nueva" name="Create New"/> <button label="Quitarla" label_selected="Quitarla" name="Take Off"/> - <button label="Guardar" label_selected="Guardar" name="Save"/> - <button label="Guardar como" label_selected="Guardar como" name="Save As"/> + <button left="113" label="Guardar" label_selected="Guardar" name="Save"/> + <button left="199" width="102" label="Guardar como..." label_selected="Guardar como..." name="Save As"/> <button label="Restablecer" label_selected="Restablecer" name="Revert"/> <text length="1" name="title" type="string"> [DESC] @@ -173,19 +177,23 @@ Situada en [PATH] </text> <text length="1" name="not worn instructions" type="string"> - Póngase otra camisa arrastrando una desde su inventario hasta su avatar. O parta de cero creando una nueva y vistiéndola. + Póngase otra camisa arrastrando una desde su inventario hasta su +avatar. O parta de cero creando una nueva y vistiéndola. </text> <text length="1" name="no modify instructions" type="string"> No tiene permiso para modificar este Ãtem. </text> + <text name="Item Action Label" right="107"> + Camisa: + </text> </panel> <panel label="Pantalones" name="Pants"> <texture_picker label="Tela" name="Fabric" tool_tip="Pulse para elegir una imagen"/> <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulse para abrir el selector de color"/> - <button label="Crear unos pantalones nuevos" label_selected="Crear unos pantalones nuevos" name="Create New"/> + <button label="Crear unos pantalones nuevos" label_selected="Crear unos pantalones nuevos" name="Create New" width="185"/> <button label="Quitarlos" label_selected="Quitarlos" name="Take Off"/> - <button label="Guardar" label_selected="Guardar" name="Save"/> - <button label="Guardar como" label_selected="Guardar como" name="Save As"/> + <button left="113" label="Guardar" label_selected="Guardar" name="Save"/> + <button left="199" width="102" label="Guardar como..." label_selected="Guardar como..." name="Save As"/> <button label="Restablecer" label_selected="Restablecer" name="Revert"/> <text length="1" name="title" type="string"> [DESC] @@ -203,13 +211,17 @@ Situados en [PATH] </text> <text length="1" name="not worn instructions" type="string"> - Póngase otros pantalones arrastrando unos desde su inventario hasta su avatar. O parta de cero creando unos nuevos y vistiéndoselos. + Póngase otros pantalones arrastrando unos desde su inventario hasta su +avatar. O parta de cero creando unos nuevos y vistiéndoselos. </text> <text length="1" name="no modify instructions" type="string"> No tiene permiso para modificar este Ãtem. </text> + <text name="Item Action Label" right="107"> + Pantalones: + </text> </panel> - <panel label="Shoes" name="Shoes"> + <panel label="Zapatos" name="Shoes"> <text length="1" name="title" type="string"> [DESC] </text> @@ -226,17 +238,21 @@ Situados en [PATH] </text> <text length="1" name="not worn instructions" type="string"> - Póngase otros zapatos arrastrando unos desde su inventario hasta su avatar. O parta de cero creando unos nuevos y vistiéndoselos. + Póngase otros zapatos arrastrando unos desde su inventario hasta su +avatar. O parta de cero creando unos nuevos y vistiéndoselos. </text> <text length="1" name="no modify instructions" type="string"> No tiene permiso para modificar este Ãtem. </text> + <text name="Item Action Label" right="107"> + Zapatos: + </text> <texture_picker label="Tela" name="Fabric" tool_tip="Pulse para elegir una imagen"/> <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulse para abrir el selector de color"/> <button label="Crear unos zapatos nuevos" label_selected="Crear unos zapatos nuevos" name="Create New"/> <button label="Quitarlos" label_selected="Quitarlos" name="Take Off"/> - <button label="Guardar" label_selected="Guardar" name="Save"/> - <button label="Guardar como" label_selected="Guardar como" name="Save As"/> + <button left="113" label="Guardar" label_selected="Guardar" name="Save"/> + <button left="199" width="102" label="Guardar como..." label_selected="Guardar como..." name="Save As"/> <button label="Restablecer" label_selected="Restablecer" name="Revert"/> </panel> <panel label="Calcetines" name="Socks"> @@ -256,17 +272,21 @@ Situados en [PATH] </text> <text length="1" name="not worn instructions" type="string"> - Póngase otros calcetines arrastrando unos desde su inventario hasta su avatar. O parta de cero creando unos nuevos y vistiéndoselos. + Póngase otros calcetines arrastrando unos desde su inventario hasta su +avatar. O parta de cero creando unos nuevos y vistiéndoselos. </text> <text length="1" name="no modify instructions" type="string"> No tiene permiso para modificar este Ãtem. </text> + <text name="Item Action Label" right="107"> + Calcetines: + </text> <texture_picker label="Tela" name="Fabric" tool_tip="Pulse para elegir una imagen"/> <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulse para abrir el selector de color"/> - <button label="Crear unos calcetines nuevos" label_selected="Crear unos calcetines nuevos" name="Create New"/> + <button label="Crear unos calcetines nuevos" label_selected="Crear unos calcetines nuevos" name="Create New" width="185"/> <button label="Quitarlos" label_selected="Quitarlos" name="Take Off"/> - <button label="Guardar" label_selected="Guardar" name="Save"/> - <button label="Guardar como" label_selected="Guardar como" name="Save As"/> + <button left="113" label="Guardar" label_selected="Guardar" name="Save"/> + <button left="199" width="102" label="Guardar como..." label_selected="Guardar como..." name="Save As"/> <button label="Restablecer" label_selected="Restablecer" name="Revert"/> </panel> <panel label="Chaqueta" name="Jacket"> @@ -286,18 +306,22 @@ Situada en [PATH] </text> <text length="1" name="not worn instructions" type="string"> - Póngase otra chaqueta arrastrando una desde su inventario hasta su avatar. O parta de cero creando una nueva y vistiéndola. + Póngase otra chaqueta arrastrando una desde su inventario hasta su +avatar. O parta de cero creando una nueva y vistiéndola. </text> <text length="1" name="no modify instructions" type="string"> No tiene permiso para modificar este Ãtem. </text> + <text name="Item Action Label" right="107"> + Chaqueta: + </text> <texture_picker label="Tela superior" name="Upper Fabric" tool_tip="Pulse para elegir una imagen"/> <texture_picker label="Tela inferior" name="Lower Fabric" tool_tip="Pulse para elegir una imagen"/> <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulse para abrir el selector de color"/> <button label="Crear una chaqueta nueva" label_selected="Crear una chaqueta nueva" name="Create New"/> <button label="Quitarla" label_selected="Quitarla" name="Take Off"/> - <button label="Guardar" label_selected="Guardar" name="Save"/> - <button label="Guardar como" label_selected="Guardar como" name="Save As"/> + <button left="113" label="Guardar" label_selected="Guardar" name="Save"/> + <button left="199" width="102" label="Guardar como..." label_selected="Guardar como..." name="Save As"/> <button label="Restablecer" label_selected="Restablecer" name="Revert"/> </panel> <panel label="Guantes" name="Gloves"> @@ -317,17 +341,21 @@ Situados en [PATH] </text> <text length="1" name="not worn instructions" type="string"> - Póngase otros guantes arrastrando unos desde su inventario hasta su avatar. O parta de cero creando unos nuevos y vistiéndoselos. + Póngase otros guantes arrastrando unos desde su inventario hasta su +avatar. O parta de cero creando unos nuevos y vistiéndoselos. </text> <text length="1" name="no modify instructions" type="string"> No tiene permiso para modificar este Ãtem. </text> + <text name="Item Action Label" right="107"> + Guantes: + </text> <texture_picker label="Tela" name="Fabric" tool_tip="Pulse para elegir una imagen"/> <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulse para abrir el selector de color"/> <button label="Crear unos guantes nuevos" label_selected="Crear unos guantes nuevos" name="Create New"/> <button label="Quitarlos" label_selected="Quitarlos" name="Take Off"/> - <button label="Guardar" label_selected="Guardar" name="Save"/> - <button label="Guardar como" label_selected="Guardar como" name="Save As"/> + <button left="113" label="Guardar" label_selected="Guardar" name="Save"/> + <button left="199" width="102" label="Guardar como..." label_selected="Guardar como..." name="Save As"/> <button label="Restablecer" label_selected="Restablecer" name="Revert"/> </panel> <panel label="Camiseta" name="Undershirt"> @@ -347,17 +375,21 @@ Situada en [PATH] </text> <text length="1" name="not worn instructions" type="string"> - Póngase otra camiseta arrastrando una desde su inventario hasta su avatar. O parta de cero creando una nueva y vistiéndola. + Póngase otra camiseta arrastrando una desde su inventario hasta su +avatar. O parta de cero creando una nueva y vistiéndola. </text> <text length="1" name="no modify instructions" type="string"> No tiene permiso para modificar este Ãtem. </text> + <text name="Item Action Label" right="107"> + Camiseta: + </text> <texture_picker label="Tela" name="Fabric" tool_tip="Pulse para elegir una imagen"/> <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulse para abrir el selector de color"/> <button label="Crear una camiseta nueva" label_selected="Crear una camiseta nueva" name="Create New"/> <button label="Quitarla" label_selected="Quitarla" name="Take Off"/> - <button label="Guardar" label_selected="Guardar" name="Save"/> - <button label="Guardar como" label_selected="Guardar como" name="Save As"/> + <button left="113" label="Guardar" label_selected="Guardar" name="Save"/> + <button left="199" width="102" label="Guardar como..." label_selected="Guardar como..." name="Save As"/> <button label="Restablecer" label_selected="Restablecer" name="Revert"/> </panel> <panel label="Ropa interior" name="Underpants"> @@ -377,17 +409,21 @@ Situada en [PATH] </text> <text length="1" name="not worn instructions" type="string"> - Póngase otra ropa interior arrastrando una desde su inventario hasta su avatar. O parta de cero creando una nueva y vistiéndola. + Póngase otra ropa interior arrastrando una desde su inventario hasta su +avatar. O parta de cero creando una nueva y vistiéndola. </text> <text length="1" name="no modify instructions" type="string"> No tiene permiso para modificar este Ãtem. </text> + <text name="Item Action Label" right="107"> + Ropa interior: + </text> <texture_picker label="Tela" name="Fabric" tool_tip="Pulse para elegir una imagen"/> <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulse para abrir el selector de color"/> - <button label="Crear una ropa interior nueva" label_selected="Crear una ropa interior nueva" name="Create New"/> + <button label="Crear una ropa interior nueva" label_selected="Crear una ropa interior nueva" name="Create New" width="185"/> <button label="Quitarla" label_selected="Quitarla" name="Take Off"/> - <button label="Guardar" label_selected="Guardar" name="Save"/> - <button label="Guardar como" label_selected="Guardar como" name="Save As"/> + <button left="113" label="Guardar" label_selected="Guardar" name="Save"/> + <button left="199" width="102" label="Guardar como..." label_selected="Guardar como..." name="Save As"/> <button label="Restablecer" label_selected="Restablecer" name="Revert"/> </panel> <panel label="Falda" name="Skirt"> @@ -407,21 +443,26 @@ Situada en [PATH] </text> <text length="1" name="not worn instructions" type="string"> - Póngase otra falda arrastrando una desde su inventario hasta su avatar. O parta de cero creando una nueva y vistiéndola. + Póngase otra falda arrastrando una desde su inventario hasta su +avatar. O parta de cero creando una nueva y vistiéndola. </text> <text length="1" name="no modify instructions" type="string"> No tiene permiso para modificar este Ãtem. </text> + <text name="Item Action Label" right="107"> + Falda: + </text> <texture_picker label="Tela" name="Fabric" tool_tip="Pulse para elegir una imagen"/> <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulse para abrir el selector de color"/> <button label="Crear una falda nueva" label_selected="Crear una falda nueva" name="Create New"/> <button label="Quitarla" label_selected="Quitarla" name="Take Off"/> - <button label="Guardar" label_selected="Guardar" name="Save"/> - <button label="Guardar como" label_selected="Guardar como" name="Save As"/> + <button left="113" label="Guardar" label_selected="Guardar" name="Save"/> + <button left="199" width="102" label="Guardar como..." label_selected="Guardar como..." name="Save As"/> <button label="Restablecer" label_selected="Restablecer" name="Revert"/> </panel> </tab_container> - <button label="Cerrar" label_selected="Cerrar" name="Close"/> - <button label="Guardar todo" label_selected="Guardar todo" name="Save All"/> - <button label="Hacer un vestuario" label_selected="Hacer un vestuario" name="Make Outfit"/> + <scroll_container left="230" name="panel_container"/> + <button label="Cancelar" label_selected="Cancelar" name="Cancel"/> + <button label="OK" label_selected="OK" name="Ok"/> + <button label="Hacer un vestuario..." label_selected="Hacer un vestuario..." name="Make Outfit" width="130"/> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_day_cycle_options.xml b/indra/newview/skins/default/xui/es/floater_day_cycle_options.xml index ce3f7a617acded35ba1536ded9c6457a3cedf4f6..dd7450523906dc1a146a84af34723ab617cc984f 100644 --- a/indra/newview/skins/default/xui/es/floater_day_cycle_options.xml +++ b/indra/newview/skins/default/xui/es/floater_day_cycle_options.xml @@ -1,94 +1,94 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Day Cycle Floater" title="Editor del ciclo de un dÃa"> - <tab_container name="Day Cycle Tabs"> - <panel label="Ciclo de un dÃa" name="Day Cycle"> - <button label="?" name="WLDayCycleHelp"/> - <text name="WL12am"> - 12 am - </text> - <text name="WL3am"> - 3 am - </text> - <text name="WL6am"> - 6 am - </text> - <text name="WL9amHash"> - 9 am - </text> - <text name="WL12pmHash"> - 12 pm - </text> - <text name="WL3pm"> - 3 pm - </text> - <text name="WL6pm"> - 6 pm - </text> - <text name="WL9pm"> - 9 pm - </text> - <text name="WL12am2"> - 12 am - </text> - <text name="WL12amHash"> - | - </text> - <text name="WL3amHash"> - I - </text> - <text name="WL6amHash"> - | - </text> - <text name="WL9amHash2"> - I - </text> - <text name="WL12pmHash2"> - | - </text> - <text name="WL3pmHash"> - I - </text> - <text name="WL6pmHash"> - | - </text> - <text name="WL9pmHash"> - I - </text> - <text name="WL12amHash2"> - | - </text> - <button label="Añadir un punto" label_selected="Añadir un punto" name="WLAddKey"/> - <button label="Quitar un punto" label_selected="Quitar un punto" name="WLDeleteKey"/> - <text name="WLCurKeyFrameText"> - Configuración del fotograma clave: - </text> - <text name="WLCurKeyTimeText"> - Hora clave: - </text> - <spinner label="Hora" name="WLCurKeyHour"/> - <spinner label="Min." name="WLCurKeyMin"/> - <text name="WLCurKeyTimeText2"> - Modelo predefinido: - </text> - <combo_box label="Predefinido" name="WLKeyPresets"/> - <text name="DayCycleText"> - Intervalo: - </text> - <combo_box label="5 min." name="WLSnapOptions"/> - <text name="DayCycleText2"> - Duración del ciclo: - </text> - <spinner label="Hora" name="WLLengthOfDayHour"/> - <spinner label="Min." name="WLLengthOfDayMin"/> - <spinner label="Seg." name="WLLengthOfDaySec"/> - <text name="DayCycleText3"> - Vista previa: - </text> - <button label="Probar" label_selected="Probar" name="WLAnimSky"/> - <button label="Parar" label_selected="Parar" name="WLStopAnimSky"/> - <button label="Usar el horario del estado" label_selected="Ir al horario del estado" name="WLUseLindenTime"/> - <button label="Guardar este tipo de dÃa" label_selected="Guardar este tipo de dÃa" name="WLSaveDayCycle"/> - <button label="Cargar y probar un tipo de dÃa" label_selected="Cargar y probar un tipo de dÃa" name="WLLoadDayCycle"/> - </panel> - </tab_container> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Day Cycle Floater" title="Editor del ciclo de un dÃa"> + <tab_container name="Day Cycle Tabs"> + <panel label="Ciclo de un dÃa" name="Day Cycle"> + <button label="?" name="WLDayCycleHelp"/> + <text name="WL12am"> + 12 am + </text> + <text name="WL3am"> + 3 am + </text> + <text name="WL6am"> + 6 am + </text> + <text name="WL9amHash"> + 9 am + </text> + <text name="WL12pmHash"> + 12 pm + </text> + <text name="WL3pm"> + 3 pm + </text> + <text name="WL6pm"> + 6 pm + </text> + <text name="WL9pm"> + 9 pm + </text> + <text name="WL12am2"> + 12 am + </text> + <text name="WL12amHash"> + | + </text> + <text name="WL3amHash"> + I + </text> + <text name="WL6amHash"> + | + </text> + <text name="WL9amHash2"> + I + </text> + <text name="WL12pmHash2"> + | + </text> + <text name="WL3pmHash"> + I + </text> + <text name="WL6pmHash"> + | + </text> + <text name="WL9pmHash"> + I + </text> + <text name="WL12amHash2"> + | + </text> + <button label="Añadir un punto" label_selected="Añadir un punto" name="WLAddKey"/> + <button label="Quitar un punto" label_selected="Quitar un punto" name="WLDeleteKey"/> + <text name="WLCurKeyFrameText"> + Configuración del fotograma clave: + </text> + <text name="WLCurKeyTimeText"> + Hora clave: + </text> + <spinner label="Hora" name="WLCurKeyHour"/> + <spinner label="Min." name="WLCurKeyMin"/> + <text name="WLCurKeyTimeText2"> + Modelo predefinido: + </text> + <combo_box label="Predefinido" name="WLKeyPresets"/> + <text name="DayCycleText"> + Intervalo: + </text> + <combo_box label="5 min." name="WLSnapOptions"/> + <text name="DayCycleText2"> + Duración del ciclo: + </text> + <spinner label="Hora" name="WLLengthOfDayHour"/> + <spinner label="Min." name="WLLengthOfDayMin"/> + <spinner label="Seg." name="WLLengthOfDaySec"/> + <text name="DayCycleText3"> + Vista previa: + </text> + <button label="Probar" label_selected="Probar" name="WLAnimSky"/> + <button label="Parar" label_selected="Parar" name="WLStopAnimSky"/> + <button label="Usar el horario del estado" label_selected="Ir al horario del estado" name="WLUseLindenTime"/> + <button label="Guardar este tipo de dÃa" label_selected="Guardar este tipo de dÃa" name="WLSaveDayCycle"/> + <button label="Cargar y probar un tipo de dÃa" label_selected="Cargar y probar un tipo de dÃa" name="WLLoadDayCycle"/> + </panel> + </tab_container> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_device_settings.xml b/indra/newview/skins/default/xui/es/floater_device_settings.xml index 7b21d0dd659f5c7baa6e30baeb3de92338aa2e16..e8989f44ef8a28431d2118bac8b4414e1468cea1 100644 --- a/indra/newview/skins/default/xui/es/floater_device_settings.xml +++ b/indra/newview/skins/default/xui/es/floater_device_settings.xml @@ -1,2 +1,2 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_device_settings" title="Configuración de los dispositivos del chat de voz"/> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_device_settings" title="Configuración de los dispositivos del chat de voz"/> diff --git a/indra/newview/skins/default/xui/es/floater_env_settings.xml b/indra/newview/skins/default/xui/es/floater_env_settings.xml index 4a51ba260e4b2d7a5ea1ed0dec683fd2c6870e13..8b9bfe7362fb21c54e3bc8aef7578829367f57f4 100644 --- a/indra/newview/skins/default/xui/es/floater_env_settings.xml +++ b/indra/newview/skins/default/xui/es/floater_env_settings.xml @@ -1,23 +1,23 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Environment Editor Floater" title="Editor del entorno"> - <text name="EnvTimeText"> - Duración de un dÃa - </text> - <text name="EnvTimeText2"> - 12:00 PM - </text> - <text name="EnvCloudText"> - Nubosidad - </text> - <text name="EnvWaterColorText"> - Color del agua - </text> - <color_swatch label="" name="EnvWaterColor" tool_tip="Pulse para abrir el selector de color"/> - <text name="EnvWaterFogText"> - Claridad del agua - </text> - <button label="Usar el horario del estado" name="EnvUseEstateTimeButton"/> - <button label="Cielo avanzado" name="EnvAdvancedSkyButton"/> - <button label="Agua avanzada" name="EnvAdvancedWaterButton"/> - <button label="?" name="EnvSettingsHelpButton"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Environment Editor Floater" title="Editor del entorno"> + <text name="EnvTimeText"> + Duración de un dÃa + </text> + <text name="EnvTimeText2"> + 12:00 PM + </text> + <text name="EnvCloudText"> + Nubosidad + </text> + <text name="EnvWaterColorText"> + Color del agua + </text> + <color_swatch label="" name="EnvWaterColor" tool_tip="Pulse para abrir el selector de color"/> + <text name="EnvWaterFogText"> + Claridad del agua + </text> + <button label="Usar el horario del estado" name="EnvUseEstateTimeButton"/> + <button label="Cielo avanzado" name="EnvAdvancedSkyButton"/> + <button label="Agua avanzada" name="EnvAdvancedWaterButton"/> + <button label="?" name="EnvSettingsHelpButton"/> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_font_test.xml b/indra/newview/skins/default/xui/es/floater_font_test.xml new file mode 100644 index 0000000000000000000000000000000000000000..e6b8087b6074fcef1cb664fbe57fdd3aca0e69c0 --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_font_test.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="contents" title="Prueba de fuentes"> + <text name="linea"> + OverrideTest, deberÃa de aparecer aquà en Times. (Desde default/xui/en-us) + </text> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_hardware_settings.xml b/indra/newview/skins/default/xui/es/floater_hardware_settings.xml index 197b3a8f39eb498e9994917095b62ac6d8bf7dfd..29750ee7371db337a69f46b56274be6f6c153b73 100644 --- a/indra/newview/skins/default/xui/es/floater_hardware_settings.xml +++ b/indra/newview/skins/default/xui/es/floater_hardware_settings.xml @@ -1,28 +1,28 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Hardware Settings Floater" title="Configuración del hardware"> - <text name="Filtering:"> - Filtrado: - </text> - <check_box label="Filtrado anisotrópico (más lento si se activa)" name="ani"/> - <text name="Antialiasing:"> - Antialiasing: - </text> - <combo_box label="Antialiasing" name="fsaa"> - <combo_box.item name="FSAADisabled" label="Desactivado"/> - <combo_box.item name="2x" label="2x"/> - <combo_box.item name="4x" label="4x"/> - <combo_box.item name="8x" label="8x"/> - <combo_box.item name="16x" label="16x"/> - </combo_box> - <spinner label="Gamma:" name="gamma"/> - <text name="(brightness, lower is brighter)"> - (brillo; menor es más brillante, 0=predeterminado) - </text> - <text name="Enable VBO:"> - Activar VBO: - </text> - <check_box label="Activar OpenGL Vertex Buffer Objects" name="vbo" tool_tip="En hardware moderno, habilitar esta opción mejora el rendimiento. Pero en hardware antiguo, el habilitarlo hace que, frecuentemente, se obtenga una implementación pobre de VBO, lo que puede provocarle caÃdas."/> - <slider label="Memoria para texturas (MB):" name="GrapicsCardTextureMemory" tool_tip="Cantidad de memoria asignada a las texturas. Por defecto es la memoria de la tarjeta de vÃdeo. Reducir esta cantidad puede mejorar el rendimiento, pero también puede hacer que las texturas se vean borrosas."/> - <spinner label="Intensidad de la niebla:" name="fog"/> - <button label="OK" label_selected="OK" name="OK"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Hardware Settings Floater" title="Configuración del hardware"> + <text name="Filtering:"> + Filtrado: + </text> + <check_box label="Filtrado anisotrópico (más lento si se activa)" name="ani"/> + <text name="Antialiasing:"> + Antialiasing: + </text> + <combo_box label="Antialiasing" name="fsaa" width="94"> + <combo_box.item name="FSAADisabled" label="Desactivado"/> + <combo_box.item name="2x" label="2x"/> + <combo_box.item name="4x" label="4x"/> + <combo_box.item name="8x" label="8x"/> + <combo_box.item name="16x" label="16x"/> + </combo_box> + <spinner label="Gamma:" name="gamma"/> + <text name="(brightness, lower is brighter)"> + (brillo; menor es más brillante, 0=predeterminado) + </text> + <text name="Enable VBO:"> + Activar VBO: + </text> + <check_box label="Activar OpenGL Vertex Buffer Objects" name="vbo" tool_tip="En hardware moderno, habilitar esta opción mejora el rendimiento. Pero en hardware antiguo, el habilitarlo hace que, frecuentemente, se obtenga una implementación pobre de VBO, lo que puede provocarle caÃdas."/> + <slider label_width="150" left="10" width="300" label="Memoria para texturas (MB):" name="GrapicsCardTextureMemory" tool_tip="Cantidad de memoria asignada a las texturas. Por defecto es la memoria de la tarjeta de vÃdeo. Reducir esta cantidad puede mejorar el rendimiento, pero también puede hacer que las texturas se vean borrosas."/> + <spinner label="Intensidad de la niebla:" name="fog"/> + <button label="OK" label_selected="OK" name="OK"/> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_hud.xml b/indra/newview/skins/default/xui/es/floater_hud.xml index c75867956b061cbd5775b3cbc1a5e084a583a276..d31bcedf05e8a65a275f09aedb8d98f19799181b 100644 --- a/indra/newview/skins/default/xui/es/floater_hud.xml +++ b/indra/newview/skins/default/xui/es/floater_hud.xml @@ -1,2 +1,2 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_hud" title="Tutorial"/> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_hud" title="Tutorial"/> diff --git a/indra/newview/skins/default/xui/es/floater_image_preview.xml b/indra/newview/skins/default/xui/es/floater_image_preview.xml index cd036fc050aa051b80e2e06e902f1b05eae7e9a0..6d51a800b7daf2e4934aba91bf4f6e4ddf27456c 100644 --- a/indra/newview/skins/default/xui/es/floater_image_preview.xml +++ b/indra/newview/skins/default/xui/es/floater_image_preview.xml @@ -7,9 +7,10 @@ Descripción: </text> <text name="preview_label"> - Previsualizar la imagen como: + Previsualizar la +imagen como: </text> - <combo_box label="Tipo de ropa" name="clothing_type_combo"> + <combo_box label="Tipo de ropa" name="clothing_type_combo" left="100" width="186"> <combo_box.item name="Image" label="Imagen" /> <combo_box.item name="Hair" label="Pelo" /> <combo_box.item name="FemaleHead" label="Cabeza de mujer" /> @@ -24,9 +25,10 @@ <text name="bad_image_text"> Imposible leer la imagen. -Pruebe a guardar la imagen como Targa (.tga) de 24 bites. +Pruebe a guardar la imagen como Targa (.tga) +de 24 bites. </text> <check_box label="Usar compresión sin pérdida" name="lossless_check"/> <button label="Cancelar" name="cancel_btn"/> - <button label="Subir ([AMOUNT] 10L$)" name="ok_btn"/> + <button label="Subir ([AMOUNT]L$)" name="ok_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_inspect.xml b/indra/newview/skins/default/xui/es/floater_inspect.xml index 01d56fa26d1861269cc88a761b44fb2010247334..7a9f76de0f220782e289c96e6f3e16fbb815b254 100644 --- a/indra/newview/skins/default/xui/es/floater_inspect.xml +++ b/indra/newview/skins/default/xui/es/floater_inspect.xml @@ -1,11 +1,11 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="inspect" title="Examinar objetos"> - <scroll_list name="object_list" tool_tip="Seleccione un objeto de esta lista para realzarlo en el mundo"> - <column label="Nombre del objeto" name="object_name"/> - <column label="Nombre del propietario" name="owner_name"/> - <column label="Nombre del creador" name="creator_name"/> - <column label="Fecha de creación" name="creation_date"/> - </scroll_list> - <button label="Ver el perfil del propietario..." label_selected="" name="button owner" tool_tip="Ver el perfil del propietario del objeto realzado"/> - <button label="Ver el perfil del creadir..." label_selected="" name="button creator" tool_tip="Ver el perfil del creador original del objeto realzado"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="inspect" title="Examinar objetos"> + <scroll_list name="object_list" tool_tip="Seleccione un objeto de esta lista para realzarlo en el mundo"> + <column label="Nombre del objeto" name="object_name"/> + <column label="Nombre del propietario" name="owner_name"/> + <column label="Nombre del creador" name="creator_name"/> + <column label="Fecha de creación" name="creation_date"/> + </scroll_list> + <button label="Ver el perfil del propietario..." label_selected="" name="button owner" tool_tip="Ver el perfil del propietario del objeto realzado"/> + <button label="Ver el perfil del creadir..." label_selected="" name="button creator" tool_tip="Ver el perfil del creador original del objeto realzado"/> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/es/floater_inventory_item_properties.xml index dfe0b8e520e7f28a002d5384f3e6baf037ba3e00..4df3ca2cf6f8b881d2ee2fa4d9f81613d03d647f 100644 --- a/indra/newview/skins/default/xui/es/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/es/floater_inventory_item_properties.xml @@ -30,7 +30,7 @@ Usted puede: </text> <check_box label="Modificarlo" name="CheckOwnerModify"/> - <check_box label="Copiarlo" name="CheckOwnerCopy"/> + <check_box left_delta="88" label="Copiarlo" name="CheckOwnerCopy"/> <check_box label="Venderlo/darlo" name="CheckOwnerTransfer"/> <text name="BaseMaskDebug"> B: @@ -49,23 +49,19 @@ </text> <check_box label="Compartir con el grupo" name="CheckShareWithGroup"/> <check_box label="Permitir a cualquiera que lo copie" name="CheckEveryoneCopy"/> - <text name="NextOwnerLabel"> + <text name="NextOwnerLabel" width="230"> El próximo propietario puede: </text> <check_box label="Modificarlo" name="CheckNextOwnerModify"/> - <check_box label="Copiarlo" name="CheckNextOwnerCopy"/> + <check_box left_delta="88" label="Copiarlo" name="CheckNextOwnerCopy"/> <check_box label="Revenderlo/darlo" name="CheckNextOwnerTransfer"/> <text name="SaleLabel"> Marcar Ãtem como: </text> <check_box label="En venta" name="CheckPurchase"/> - <radio_group name="RadioSaleType"> - <radio_item name="radio"> - Original - </radio_item> - <radio_item name="radio2"> - Copia - </radio_item> + <radio_group name="RadioSaleType" left_delta="88" > + <radio_item name="radio" label="Original" /> + <radio_item name="radio2" label="Copia" /> </radio_group> <text name="TextPrice"> Precio: L$ diff --git a/indra/newview/skins/default/xui/es/floater_joystick.xml b/indra/newview/skins/default/xui/es/floater_joystick.xml index 3c9b5c3810941137352a91ac9968ce9465ba7761..527485e57da2c32744ad7c24687999432e5616e4 100644 --- a/indra/newview/skins/default/xui/es/floater_joystick.xml +++ b/indra/newview/skins/default/xui/es/floater_joystick.xml @@ -1,83 +1,85 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Joystick" title="Configuración del joystick"> - <check_box name="enable_joystick"> - Activar el joystick: - </check_box> - <spinner label="Mapping: X" name="JoystickAxis1"/> - <spinner label="Mapping: Y" name="JoystickAxis2"/> - <spinner label="Mapping: Z" name="JoystickAxis0"/> - <spinner label="Mapping: arriba/abajo" name="JoystickAxis4"/> - <spinner label="Mapping: izq./der." name="JoystickAxis5"/> - <spinner label="Mapping: giro" name="JoystickAxis3"/> - <spinner label="Mapping: zoom" name="JoystickAxis6"/> - <check_box label="Zoom directo" name="ZoomDirect"/> - <check_box label="Cursor 3D" name="Cursor3D"/> - <check_box label="Nivel automático" name="AutoLeveling"/> - <text name="Control Modes:"> - Modos de control: - </text> - <check_box name="JoystickAvatarEnabled"> - Avatar - </check_box> - <check_box name="JoystickBuildEnabled"> - Construir - </check_box> - <check_box name="JoystickFlycamEnabled"> - Flycam - </check_box> - <text name="XScale"> - Escala: X - </text> - <text name="YScale"> - Escala: Y - </text> - <text name="ZScale"> - Escala: Z - </text> - <text name="PitchScale"> - Escala: arriba/abajo - </text> - <text name="YawScale"> - Escala: izq./der. - </text> - <text name="RollScale"> - Escala: giro - </text> - <text name="XDeadZone"> - Zona muerta X - </text> - <text name="YDeadZone"> - Zona muerta Y - </text> - <text name="ZDeadZone"> - Zona muerta Z - </text> - <text name="PitchDeadZone"> - Zona muerta arriba/abajo - </text> - <text name="YawDeadZone"> - Zona muerta izq./der - </text> - <text name="RollDeadZone"> - Zona muerta giro - </text> - <text name="Feathering"> - Rigidez - </text> - <text name="ZoomScale2"> - Escala: zoom - </text> - <text name="ZoomDeadZone"> - Zona muerta zoom - </text> - <button label="Predeterminados del SpaceNavigator" name="SpaceNavigatorDefaults"/> - <string name="JoystickMonitor"> - Monitor del joystick - </string> - <string name="Axis"> - Eje [NUM] - </string> - <string name="NoDevice"> - no se ha detectado el dispositivo - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Joystick" title="Configuración del joystick"> + <check_box name="enable_joystick"> + Activar el joystick: + </check_box> + <spinner label="Mapping: X" name="JoystickAxis1"/> + <spinner label="Mapping: Y" name="JoystickAxis2"/> + <spinner label="Mapping: Z" name="JoystickAxis0"/> + <spinner label="Mapping: arriba/abajo" name="JoystickAxis4"/> + <spinner label="Mapping: izq./der." name="JoystickAxis5"/> + <spinner label="Mapping: giro" name="JoystickAxis3"/> + <spinner label="Mapping: zoom" name="JoystickAxis6"/> + <check_box label="Zoom directo" name="ZoomDirect"/> + <check_box label="Cursor 3D" name="Cursor3D"/> + <check_box label="Nivel automático" name="AutoLeveling"/> + <text name="Control Modes:"> + Modos de control: + </text> + <check_box name="JoystickAvatarEnabled"> + Avatar + </check_box> + <check_box name="JoystickBuildEnabled"> + Construir + </check_box> + <check_box name="JoystickFlycamEnabled"> + Flycam + </check_box> + <text name="XScale"> + Escala: X + </text> + <text name="YScale"> + Escala: Y + </text> + <text name="ZScale"> + Escala: Z + </text> + <text name="PitchScale"> + Escala: arriba/abajo + </text> + <text name="YawScale"> + Escala: izq./der. + </text> + <text name="RollScale"> + Escala: giro + </text> + <text name="XDeadZone"> + Zona muerta X + </text> + <text name="YDeadZone"> + Zona muerta Y + </text> + <text name="ZDeadZone"> + Zona muerta Z + </text> + <text name="PitchDeadZone"> + Zona muerta arriba/abajo + </text> + <text name="YawDeadZone"> + Zona muerta izq./der + </text> + <text name="RollDeadZone"> + Zona muerta giro + </text> + <text name="Feathering"> + Rigidez + </text> + <text name="ZoomScale2"> + Escala: zoom + </text> + <text name="ZoomDeadZone"> + Zona muerta zoom + </text> + <button label="Predeterminados del SpaceNavigator" name="SpaceNavigatorDefaults"/> + <button label="OK" label_selected="OK" name="ok_btn"/> + <button label="Cancelar" label_selected="Cancelar" name="cancel_btn"/> + <string name="JoystickMonitor"> + Monitor del joystick + </string> + <string name="Axis"> + Eje [NUM] + </string> + <string name="NoDevice"> + no se ha detectado el dispositivo + </string> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_lagmeter.xml b/indra/newview/skins/default/xui/es/floater_lagmeter.xml index 76043423bcac36ed569b17568548e5c02ad88610..7d499750de8005328923f5094658a197ff6cd0ef 100644 --- a/indra/newview/skins/default/xui/es/floater_lagmeter.xml +++ b/indra/newview/skins/default/xui/es/floater_lagmeter.xml @@ -1,152 +1,152 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_lagmeter" title="Medidor del lag"> - <button label="" label_selected="" name="client_lagmeter" tool_tip="Estado del lag del cliente"/> - <text name="client"> - Cliente: - </text> - <text name="client_text"> - Normal - </text> - <button label="" label_selected="" name="network_lagmeter" tool_tip="Estado del lag de la red"/> - <text name="network"> - Red: - </text> - <text name="network_text"> - Normal - </text> - <button label="" label_selected="" name="server_lagmeter" tool_tip="Estado del lag del servidor"/> - <text name="server"> - Servidor: - </text> - <text name="server_text"> - Normal - </text> - <button label="?" name="server_help"/> - <button label=">>" name="minimize"/> - <string name="max_title_msg"> - Medidor del lag - </string> - <string name="max_width_px"> - 360 - </string> - <string name="min_title_msg"> - Lag - </string> - <string name="min_width_px"> - 90 - </string> - <string name="client_text_msg"> - Cliente - </string> - <string name="client_frame_rate_critical_fps"> - 10 - </string> - <string name="client_frame_rate_warning_fps"> - 15 - </string> - <string name="client_frame_time_window_bg_msg"> - Normal, ventana en segundo plano - </string> - <string name="client_frame_time_critical_msg"> - Frames del cliente valorados por debajo de [CLIENT_FRAME_RATE_CRITICAL] - </string> - <string name="client_frame_time_warning_msg"> - Frames del cliente valorados entre [CLIENT_FRAME_RATE_CRITICAL] y [CLIENT_FRAME_RATE_WARNING] - </string> - <string name="client_frame_time_normal_msg"> - Normal - </string> - <string name="client_draw_distance_cause_msg"> - Posible causa: distancia de dibujo fijada muy alta - </string> - <string name="client_texture_loading_cause_msg"> - Posible causa: imágenes cargándose - </string> - <string name="client_texture_memory_cause_msg"> - Posible causa: demasiadas imágenes en la memoria - </string> - <string name="client_complex_objects_cause_msg"> - Posible causa: demasiados objetos complejos en la escena - </string> - <string name="network_text_msg"> - Red - </string> - <string name="network_packet_loss_critical_pct"> - 10 - </string> - <string name="network_packet_loss_warning_pct"> - 5 - </string> - <string name="network_packet_loss_critical_msg"> - La conexión deja caer más del [NETWORK_PACKET_LOSS_CRITICAL]% de los paquetes - </string> - <string name="network_packet_loss_warning_msg"> - La conexión deja caer [NETWORK_PACKET_LOSS_WARNING]%-[NETWORK_PACKET_LOSS_CRITICAL]% de los paquetes - </string> - <string name="network_performance_normal_msg"> - Normal - </string> - <string name="network_ping_critical_ms"> - 600 - </string> - <string name="network_ping_warning_ms"> - 300 - </string> - <string name="network_ping_critical_msg"> - El tiempo de conexión -ping- supera los [NETWORK_PING_CRITICAL] ms - </string> - <string name="network_ping_warning_msg"> - El tiempo de conexión -ping- es de [NETWORK_PING_WARNING]-[NETWORK_PING_CRITICAL] ms - </string> - <string name="network_packet_loss_cause_msg"> - Quizá una mala conexión o un ancho de banda fijado demasiado alto. - </string> - <string name="network_ping_cause_msg"> - Quizá una mala conexión o una aplicación de archivos compartidos. - </string> - <string name="server_text_msg"> - Servidor - </string> - <string name="server_frame_rate_critical_fps"> - 20 - </string> - <string name="server_frame_rate_warning_fps"> - 30 - </string> - <string name="server_single_process_max_time_ms"> - 20 - </string> - <string name="server_frame_time_critical_msg"> - Frecuencia del simulador -framerate- por debajo de [SERVER_FRAME_RATE_CRITICAL] - </string> - <string name="server_frame_time_warning_msg"> - Frecuencia del simulador -framerate- entre [SERVER_FRAME_RATE_CRITICAL] y [SERVER_FRAME_RATE_WARNING] - </string> - <string name="server_frame_time_normal_msg"> - Normal - </string> - <string name="server_physics_cause_msg"> - Posible causa: demasiados objetos fÃsicos - </string> - <string name="server_scripts_cause_msg"> - Posible causa: demasiados objetos con script - </string> - <string name="server_net_cause_msg"> - Posible causa: demasiado tráfico en la red - </string> - <string name="server_agent_cause_msg"> - Posible causa: demasiada gente moviéndose en la región - </string> - <string name="server_images_cause_msg"> - Posible causa: demasiados cálculos de imáganes - </string> - <string name="server_generic_cause_msg"> - Posible causa: carga del simulador muy pesada - </string> - <string name="smaller_label"> - >> - </string> - <string name="bigger_label"> - << - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_lagmeter" title="Medidor del lag"> + <button label="" label_selected="" name="client_lagmeter" tool_tip="Estado del lag del cliente"/> + <text name="client"> + Cliente: + </text> + <text name="client_text"> + Normal + </text> + <button label="" label_selected="" name="network_lagmeter" tool_tip="Estado del lag de la red"/> + <text name="network"> + Red: + </text> + <text name="network_text"> + Normal + </text> + <button label="" label_selected="" name="server_lagmeter" tool_tip="Estado del lag del servidor"/> + <text name="server"> + Servidor: + </text> + <text name="server_text"> + Normal + </text> + <button label="?" name="server_help"/> + <button label=">>" name="minimize"/> + <string name="max_title_msg"> + Medidor del lag + </string> + <string name="max_width_px"> + 360 + </string> + <string name="min_title_msg"> + Lag + </string> + <string name="min_width_px"> + 90 + </string> + <string name="client_text_msg"> + Cliente + </string> + <string name="client_frame_rate_critical_fps"> + 10 + </string> + <string name="client_frame_rate_warning_fps"> + 15 + </string> + <string name="client_frame_time_window_bg_msg"> + Normal, ventana en segundo plano + </string> + <string name="client_frame_time_critical_msg"> + Frames del cliente valorados por debajo de [CLIENT_FRAME_RATE_CRITICAL] + </string> + <string name="client_frame_time_warning_msg"> + Frames del cliente valorados entre [CLIENT_FRAME_RATE_CRITICAL] y [CLIENT_FRAME_RATE_WARNING] + </string> + <string name="client_frame_time_normal_msg"> + Normal + </string> + <string name="client_draw_distance_cause_msg"> + Posible causa: distancia de dibujo fijada muy alta + </string> + <string name="client_texture_loading_cause_msg"> + Posible causa: imágenes cargándose + </string> + <string name="client_texture_memory_cause_msg"> + Posible causa: demasiadas imágenes en la memoria + </string> + <string name="client_complex_objects_cause_msg"> + Posible causa: demasiados objetos complejos en la escena + </string> + <string name="network_text_msg"> + Red + </string> + <string name="network_packet_loss_critical_pct"> + 10 + </string> + <string name="network_packet_loss_warning_pct"> + 5 + </string> + <string name="network_packet_loss_critical_msg"> + La conexión deja caer más del [NETWORK_PACKET_LOSS_CRITICAL]% de los paquetes + </string> + <string name="network_packet_loss_warning_msg"> + La conexión deja caer [NETWORK_PACKET_LOSS_WARNING]%-[NETWORK_PACKET_LOSS_CRITICAL]% de los paquetes + </string> + <string name="network_performance_normal_msg"> + Normal + </string> + <string name="network_ping_critical_ms"> + 600 + </string> + <string name="network_ping_warning_ms"> + 300 + </string> + <string name="network_ping_critical_msg"> + El tiempo de conexión -ping- supera los [NETWORK_PING_CRITICAL] ms + </string> + <string name="network_ping_warning_msg"> + El tiempo de conexión -ping- es de [NETWORK_PING_WARNING]-[NETWORK_PING_CRITICAL] ms + </string> + <string name="network_packet_loss_cause_msg"> + Quizá una mala conexión o un ancho de banda fijado demasiado alto. + </string> + <string name="network_ping_cause_msg"> + Quizá una mala conexión o una aplicación de archivos compartidos. + </string> + <string name="server_text_msg"> + Servidor + </string> + <string name="server_frame_rate_critical_fps"> + 20 + </string> + <string name="server_frame_rate_warning_fps"> + 30 + </string> + <string name="server_single_process_max_time_ms"> + 20 + </string> + <string name="server_frame_time_critical_msg"> + Frecuencia del simulador -framerate- por debajo de [SERVER_FRAME_RATE_CRITICAL] + </string> + <string name="server_frame_time_warning_msg"> + Frecuencia del simulador -framerate- entre [SERVER_FRAME_RATE_CRITICAL] y [SERVER_FRAME_RATE_WARNING] + </string> + <string name="server_frame_time_normal_msg"> + Normal + </string> + <string name="server_physics_cause_msg"> + Posible causa: demasiados objetos fÃsicos + </string> + <string name="server_scripts_cause_msg"> + Posible causa: demasiados objetos con script + </string> + <string name="server_net_cause_msg"> + Posible causa: demasiado tráfico en la red + </string> + <string name="server_agent_cause_msg"> + Posible causa: demasiada gente moviéndose en la región + </string> + <string name="server_images_cause_msg"> + Posible causa: demasiados cálculos de imáganes + </string> + <string name="server_generic_cause_msg"> + Posible causa: carga del simulador muy pesada + </string> + <string name="smaller_label"> + >> + </string> + <string name="bigger_label"> + << + </string> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_land_holdings.xml b/indra/newview/skins/default/xui/es/floater_land_holdings.xml index 7c18e631552051e47032fdeda30112fa5e817d26..5c08b04055061397777912d17724206844551538 100644 --- a/indra/newview/skins/default/xui/es/floater_land_holdings.xml +++ b/indra/newview/skins/default/xui/es/floater_land_holdings.xml @@ -1,8 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="land holdings floater" title="Mi terreno"> <scroll_list name="parcel list"> - <column label="Nombre" name="name"/> - <column label="Localización" name="location"/> + <column label="Nombre de la parcela" name="name"/> + <column label="Región" name="location"/> + <column label="Tipo" name="type"/> <column label="Superficie" name="area"/> <column label="" name="hidden"/> </scroll_list> diff --git a/indra/newview/skins/default/xui/es/floater_lsl_guide.xml b/indra/newview/skins/default/xui/es/floater_lsl_guide.xml index d1e67a4a8edcb62a3bd762171c5fb6e6f44b7919..c1e431f274d29077ad010be34766cb9b22b72c3b 100644 --- a/indra/newview/skins/default/xui/es/floater_lsl_guide.xml +++ b/indra/newview/skins/default/xui/es/floater_lsl_guide.xml @@ -1,7 +1,7 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="script ed float" title="Wiki de LSL"> - <check_box label="Seguir al cursor" name="lock_check"/> - <combo_box label="Bloquear" name="history_combo"/> - <button label="Atrás" name="back_btn"/> - <button label="Adelante" name="fwd_btn"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="script ed float" title="Wiki de LSL"> + <check_box label="Seguir al cursor" name="lock_check"/> + <combo_box label="Bloquear" name="history_combo"/> + <button label="Atrás" name="back_btn"/> + <button label="Adelante" name="fwd_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_media_browser.xml b/indra/newview/skins/default/xui/es/floater_media_browser.xml index 8a6725c308b986e6b87c41ae8fcb2a39a93142f2..9b60b2853783c0eeaf0b033861c47a3737f9e5eb 100644 --- a/indra/newview/skins/default/xui/es/floater_media_browser.xml +++ b/indra/newview/skins/default/xui/es/floater_media_browser.xml @@ -1,19 +1,19 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_about" title="Navegador"> - <layout_stack name="stack1"> - <layout_panel name="nav_controls"> - <button label="Atrás" name="back"/> - <button label="Adelante" name="forward"/> - <button label="Actualizar" name="reload"/> - <button label="Ir" name="go"/> - </layout_panel> - <layout_panel name="parcel_owner_controls"> - <button label="Enviar a la parcela la URL actual" name="assign"/> - </layout_panel> - <layout_panel name="external_controls"> - <button label="Abrir en mi navegador" name="open_browser"/> - <check_box label="Abrir siempre en mi navegador" name="open_always"/> - <button label="Cerrar" name="close"/> - </layout_panel> - </layout_stack> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_about" title="Navegador"> + <layout_stack name="stack1"> + <layout_panel name="nav_controls"> + <button label="Atrás" name="back"/> + <button label="Adelante" name="forward"/> + <button label="Actualizar" name="reload"/> + <button label="Ir" name="go"/> + </layout_panel> + <layout_panel name="parcel_owner_controls"> + <button label="Enviar a la parcela la URL actual" name="assign"/> + </layout_panel> + <layout_panel name="external_controls"> + <button label="Abrir en mi navegador" name="open_browser"/> + <check_box label="Abrir siempre en mi navegador" name="open_always"/> + <button label="Cerrar" name="close"/> + </layout_panel> + </layout_stack> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_mem_leaking.xml b/indra/newview/skins/default/xui/es/floater_mem_leaking.xml index 9a114eadb26b3981654051b848737948acf26c9d..a2791d643275b047ff1e44e115348d46edc63478 100644 --- a/indra/newview/skins/default/xui/es/floater_mem_leaking.xml +++ b/indra/newview/skins/default/xui/es/floater_mem_leaking.xml @@ -1,18 +1,18 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="MemLeak" title="Prueba de la fuga de memoria"> - <spinner label="Velocidad de la fuga (bites por fotograma):" name="leak_speed"/> - <spinner label="Fuga de memoria máx. (MB):" name="max_leak"/> - <text name="total_leaked_label"> - Fuga de memoria actual: [SIZE] KB - </text> - <text name="note_label_1"> - [NOTE1] - </text> - <text name="note_label_2"> - [NOTE2] - </text> - <button label="Empezar" name="start_btn"/> - <button label="Parar" name="stop_btn"/> - <button label="Liberar" name="release_btn"/> - <button label="Cerrar" name="close_btn"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="MemLeak" title="Prueba de la fuga de memoria"> + <spinner label="Velocidad de la fuga (bites por fotograma):" name="leak_speed"/> + <spinner label="Fuga de memoria máx. (MB):" name="max_leak"/> + <text name="total_leaked_label"> + Fuga de memoria actual: [SIZE] KB + </text> + <text name="note_label_1"> + [NOTE1] + </text> + <text name="note_label_2"> + [NOTE2] + </text> + <button label="Empezar" name="start_btn"/> + <button label="Parar" name="stop_btn"/> + <button label="Liberar" name="release_btn"/> + <button label="Cerrar" name="close_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_mute_object.xml b/indra/newview/skins/default/xui/es/floater_mute_object.xml index f475fc940636d3e38c9cb6551b1bad5070f03b34..a2b87b67abae5b3b454bcf8ebdc898a66ae2be65 100644 --- a/indra/newview/skins/default/xui/es/floater_mute_object.xml +++ b/indra/newview/skins/default/xui/es/floater_mute_object.xml @@ -1,12 +1,12 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="mute by name" title="Ignorar un objeto según su nombre"> - <text name="message"> - Ignorar según el nombre sólo afecta al chat y los MI del objeto, no a sus sonidos. -Debe escribir exactamente el nombre del objeto. - </text> - <line_editor name="object_name"> - Nombre del objeto - </line_editor> - <button label="OK" name="OK"/> - <button label="Cancelar" name="Cancel"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="mute by name" title="Ignorar un objeto según su nombre"> + <text name="message"> + Ignorar según el nombre sólo afecta al chat y los MI del objeto, no a sus sonidos. +Debe escribir exactamente el nombre del objeto. + </text> + <line_editor name="object_name"> + Nombre del objeto + </line_editor> + <button label="OK" name="OK"/> + <button label="Cancelar" name="Cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_my_friends.xml b/indra/newview/skins/default/xui/es/floater_my_friends.xml index 4615496bd36278bc95162e0044a9ec0762c1b89d..d555eed305fc0fcf4608e4868ef81801eb292cb5 100644 --- a/indra/newview/skins/default/xui/es/floater_my_friends.xml +++ b/indra/newview/skins/default/xui/es/floater_my_friends.xml @@ -1,7 +1,7 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_my_friends" title="Contactos"> - <tab_container name="friends_and_groups"> - <panel label="Amigos" name="friends_panel"/> - <panel label="Grupos" name="groups_panel"/> - </tab_container> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_my_friends" title="Contactos"> + <tab_container name="friends_and_groups"> + <panel label="Amigos" name="friends_panel"/> + <panel label="Grupos" name="groups_panel"/> + </tab_container> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_perm_prefs.xml b/indra/newview/skins/default/xui/es/floater_perm_prefs.xml new file mode 100644 index 0000000000000000000000000000000000000000..4a3977be3d427fd808f350f23869cb2219ea1cd9 --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_perm_prefs.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="perm prefs" title="Permisos de subida por defecto"> + <panel label="Permisos" name="permissions"> + <button label="?" label_selected="?" name="help"/> + <check_box label="Compartir con el grupo" name="share_with_group"/> + <check_box label="Permitir a cualquiera que lo copie" name="everyone_copy"/> + <text name="NextOwnerLabel"> + El próximo propietario puede: + </text> + <check_box label="Modificarlo" name="next_owner_modify"/> + <check_box label="Copiarlo" name="next_owner_copy"/> + <check_box label="Revenderlo/Darlo" name="next_owner_transfer"/> + </panel> + <button label="OK" label_selected="OK" name="ok"/> + <button label="Cancelar" label_selected="Cancelar" name="cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_post_process.xml b/indra/newview/skins/default/xui/es/floater_post_process.xml index 9f52c47334b927d893e05f64e1f2ac12c5a82504..acac2b2bf91f2e1c77278eac61d18ce61a0aa7f7 100644 --- a/indra/newview/skins/default/xui/es/floater_post_process.xml +++ b/indra/newview/skins/default/xui/es/floater_post_process.xml @@ -1,53 +1,53 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Post-Process Floater" title="Configuración del procesamiento"> - <tab_container name="Post-Process Tabs"> - <panel label="Color del filtro" name="wmiColorFilterPanel"> - <check_box label="Activar" name="wmiColorFilterToggle"/> - <text name="wmiColorFilterBrightnessText"> - Brillo - </text> - <text name="wmiColorFilterSaturationText"> - Saturación - </text> - <text name="wmiColorFilterContrastText"> - Contraste - </text> - <text name="wmiColorFilterBaseText"> - Color base del contraste - </text> - <slider label="R" name="wmiColorFilterBaseR"/> - <slider label="V" name="wmiColorFilterBaseG"/> - <slider label="A" name="wmiColorFilterBaseB"/> - <slider label="I" name="wmiColorFilterBaseI"/> - </panel> - <panel label="Visión nocturna" name="wmiNightVisionPanel"> - <check_box label="Activar" name="wmiNightVisionToggle"/> - <text name="wmiNightVisionBrightMultText"> - Amplificación de luz - </text> - <text name="wmiNightVisionNoiseSizeText"> - Cantidad de ruido - </text> - <text name="wmiNightVisionNoiseStrengthText"> - Intensidad del ruido - </text> - </panel> - <panel label="Bloom" name="wmiBloomPanel"> - <check_box label="Activar" name="wmiBloomToggle"/> - <text name="wmiBloomExtractText"> - Extracción de la luminosidad - </text> - <text name="wmiBloomSizeText"> - Bloom: cantidad - </text> - <text name="wmiBloomStrengthText"> - Bloom: intensidad - </text> - </panel> - <panel label="Extras" name="Extras"> - <button label="Cargar efecto" label_selected="Cargar efecto" name="PPLoadEffect"/> - <button label="Guardar efecto" label_selected="Guardar efecto" name="PPSaveEffect"/> - <line_editor label="Nombre del efecto" name="PPEffectNameEditor"/> - </panel> - </tab_container> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Post-Process Floater" title="Configuración del procesamiento"> + <tab_container name="Post-Process Tabs"> + <panel label="Color del filtro" name="wmiColorFilterPanel"> + <check_box label="Activar" name="wmiColorFilterToggle"/> + <text name="wmiColorFilterBrightnessText"> + Brillo + </text> + <text name="wmiColorFilterSaturationText"> + Saturación + </text> + <text name="wmiColorFilterContrastText"> + Contraste + </text> + <text name="wmiColorFilterBaseText"> + Color base del contraste + </text> + <slider label="R" name="wmiColorFilterBaseR"/> + <slider label="V" name="wmiColorFilterBaseG"/> + <slider label="A" name="wmiColorFilterBaseB"/> + <slider label="I" name="wmiColorFilterBaseI"/> + </panel> + <panel label="Visión nocturna" name="wmiNightVisionPanel"> + <check_box label="Activar" name="wmiNightVisionToggle"/> + <text name="wmiNightVisionBrightMultText"> + Amplificación de luz + </text> + <text name="wmiNightVisionNoiseSizeText"> + Cantidad de ruido + </text> + <text name="wmiNightVisionNoiseStrengthText"> + Intensidad del ruido + </text> + </panel> + <panel label="Bloom" name="wmiBloomPanel"> + <check_box label="Activar" name="wmiBloomToggle"/> + <text name="wmiBloomExtractText"> + Extracción de la luminosidad + </text> + <text name="wmiBloomSizeText"> + Bloom: cantidad + </text> + <text name="wmiBloomStrengthText"> + Bloom: intensidad + </text> + </panel> + <panel label="Extras" name="Extras"> + <button label="Cargar efecto" label_selected="Cargar efecto" name="PPLoadEffect"/> + <button label="Guardar efecto" label_selected="Guardar efecto" name="PPSaveEffect"/> + <line_editor label="Nombre del efecto" name="PPEffectNameEditor"/> + </panel> + </tab_container> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_preview_classified.xml b/indra/newview/skins/default/xui/es/floater_preview_classified.xml index 691a9b52431944c14a209fe8cc3213eda08ab950..f2fa38ead839c069f15bbb9d0adb86443ecb633b 100644 --- a/indra/newview/skins/default/xui/es/floater_preview_classified.xml +++ b/indra/newview/skins/default/xui/es/floater_preview_classified.xml @@ -1,2 +1,2 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="classified_preview" title="Información clasificada"/> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="classified_preview" title="Información clasificada"/> diff --git a/indra/newview/skins/default/xui/es/floater_preview_event.xml b/indra/newview/skins/default/xui/es/floater_preview_event.xml index d6a0e978d97c5cdb4daf08787e91ad3469f2fa36..7f727b050241b581022d29e005c0d082bcc3a60f 100644 --- a/indra/newview/skins/default/xui/es/floater_preview_event.xml +++ b/indra/newview/skins/default/xui/es/floater_preview_event.xml @@ -1,2 +1,2 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="event_preview" title="Información de eventos"/> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="event_preview" title="Información de eventos"/> diff --git a/indra/newview/skins/default/xui/es/floater_preview_gesture.xml b/indra/newview/skins/default/xui/es/floater_preview_gesture.xml index 4513fc6f3cc7abf7c993e3e34cff50dd9afeca8c..0e43ce536cfe7d05bb80d80092030d7c2423f3d2 100644 --- a/indra/newview/skins/default/xui/es/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/es/floater_preview_gesture.xml @@ -15,15 +15,15 @@ <text name="trigger_label"> Palabra clave: </text> - <text name="replace_text" tool_tip="Reemplaza la/s palabra/s clave con estas palabras. Por ejemplo, si cambia la palabra clave 'hola' por 'qué tal', se cambiará en el chat 'Quise decir hola' por 'Quise decir qué tal' en cuanto realice el gesto."> + <text left="208" name="replace_text" tool_tip="Reemplaza la/s palabra/s clave con estas palabras. Por ejemplo, si cambia la palabra clave 'hola' por 'qué tal', se cambiará en el chat 'Quise decir hola' por 'Quise decir qué tal' en cuanto realice el gesto."> Reemplazar por: </text> <line_editor name="replace_editor" tool_tip="Reemplaza la/s palabra/s clave con estas palabras. Por ejemplo, si cambia la palabra clave 'hola' por 'qué tal', se cambiará en el chat 'Quise decir hola' por 'Quise decir qué tal' en cuanto realice el gesto."/> <text name="key_label"> Atajo de teclado: </text> - <combo_box label="Ninguno" name="modifier_combo"/> - <combo_box label="Ninguno" name="key_combo"/> + <combo_box label="Ninguno" name="modifier_combo" left="116" width="76"/> + <combo_box label="Ninguno" name="key_combo" width="76" left_delta="80"/> <text name="library_label"> Biblioteca: </text> @@ -44,17 +44,15 @@ Esperar Todos los pasos suceden a la vez, a menos que añada pasos de espera. </text> + <text left="230" name="options_text" width="200" /> <radio_group name="animation_trigger_type"> - <radio_item name="start"> - Empezar - </radio_item> - <radio_item name="stop"> - Parar - </radio_item> + <radio_item name="start" label="Empezar" /> + <radio_item name="stop" label="Parar" /> </radio_group> - <check_box label="hasta que las animaciones estén hechas" name="wait_anim_check"/> - <check_box label="tiempo en segundos" name="wait_time_check"/> - <check_box label="Disponible" name="active_check" tool_tip="Los gestos disponibles pueden realizarse escribiendo en el chat su frase clave o pulsando su tecla de acceso rápido. Generalmente, los gestos pasan a no disponibles cuando hay un conflicto de teclas."/> - <button label="Vista previa" name="preview_btn"/> + <check_box bottom_delta="34" label="hasta que las animaciones estén hechas" name="wait_anim_check"/> + <check_box bottom_delta="-30" label="tiempo en segundos" name="wait_time_check"/> + <line_editor left_delta="130" name="wait_time_editor" /> + <check_box left="130" label="Disponible" name="active_check" tool_tip="Los gestos disponibles pueden realizarse escribiendo en el chat su frase clave o pulsando su tecla de acceso rápido. Generalmente, los gestos pasan a no disponibles cuando hay un conflicto de teclas."/> + <button label="Vista previa" name="preview_btn" width="85"/> <button label="Guardar" name="save_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_region_info.xml b/indra/newview/skins/default/xui/es/floater_region_info.xml index 1fb79245326edac8a8ec79359364485c627d2919..b5a85378c20b0027cc089282b25e4e1086f7ec51 100644 --- a/indra/newview/skins/default/xui/es/floater_region_info.xml +++ b/indra/newview/skins/default/xui/es/floater_region_info.xml @@ -1,2 +1,2 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="regioninfo" title="Región/Estado"/> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="regioninfo" title="Región/Estado"/> diff --git a/indra/newview/skins/default/xui/es/floater_report_abuse.xml b/indra/newview/skins/default/xui/es/floater_report_abuse.xml index 1d3244524f857b60e9c5e8b42a7cbe6181d84a97..caa0f2a748f6594c827c53345723dab7751ec82c 100644 --- a/indra/newview/skins/default/xui/es/floater_report_abuse.xml +++ b/indra/newview/skins/default/xui/es/floater_report_abuse.xml @@ -40,9 +40,9 @@ <combo_box.item name="Select_category" label="Elegir la categorÃa"/> <combo_box.item name="Age__Age_play" label="Edad > Jugar a ser niño"/> <combo_box.item name="Age__Adult_resident_on_Teen_Second_Life" label="Edad > Residente adulto en Teen Second Life"/> - - - + <combo_item name="Age__Underage_resident_outside_of_Teen_Second_Life"> + Edad > Residente menor de edad fuera de Teen Second Life + </combo_item> <combo_box.item name="Assault__Combat_sandbox___unsafe_area" label="Ataque > Sandbox de combate / Zona no segura"/> <combo_box.item name="Assault__Safe_area" label="Ataque > Zona segura"/> <combo_box.item name="Assault__Weapons_testing_sandbox" label="Ataque > Sandbox de prueba de armas"/> @@ -66,13 +66,13 @@ <combo_box.item name="Harassment__Solicting_inciting_others_to_violate_ToS" label="Acoso > Incitar a, o pedir, que otros violen las Condiciones del Servicio"/> <combo_box.item name="Harassment__Verbal_abuse" label="Acoso > Abuso verbal"/> <combo_box.item name="Indecency__Broadly_offensive_content_or_conduct" label="Indecencia > En general, contenido o conducta ofensivos"/> - - - <combo_box.item name="Indecency__Inappropriate_avatar_name" label="Indecencia > Nombre inapropiado del avatar"/> - - - + <combo_item name="Indecency__Mature_content_in_PG_region"> + Indecencia > Contenido o conducta inapropiada en una región 'PG' + </combo_item> + <combo_item name="Indecency__Inappropriate_content_in_Mature_region"> + Indecencia > Contenido o conducta inapropiada en una región 'Mature' + </combo_item> <combo_box.item name="Intellectual_property_infringement_Content_Removal" label="Infracción de la propiedad intelectual > Eliminación de contenidos"/> <combo_box.item name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit" label="Infracción de la propiedad intelectual > CopyBot o Exploit (programa malicioso) de permisos"/> <combo_box.item name="Intolerance" label="Intolerancia"/> @@ -98,7 +98,9 @@ Detalles: </text> <text name="bug_aviso"> - Por favor, sea muy concreto sobre la fecha, la localización, la naturaleza de la infracción, el aportar textos relevantes del chat o los MI, y, si es posible, seleccione el objeto. + Por favor, sea muy concreto sobre la fecha, la localización, +la naturaleza de la infracción, el aportar textos relevantes +del chat o los MI, y, si es posible, seleccione el objeto. </text> <text name="incomplete_title"> Nota: las denuncias incompletas no se investigarán. diff --git a/indra/newview/skins/default/xui/es/floater_select_key.xml b/indra/newview/skins/default/xui/es/floater_select_key.xml index 3cb8794bfe4665db7c2b821cccc5c48b18b97f24..132985864c89620f8e26bbc540e963a50d21c041 100644 --- a/indra/newview/skins/default/xui/es/floater_select_key.xml +++ b/indra/newview/skins/default/xui/es/floater_select_key.xml @@ -1,7 +1,7 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="modal container" title=""> - <button label="Cancelar" label_selected="Cancelar" name="Cancel"/> - <text name="Save item as:"> - Pulse una tecla para seleccionar - </text> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="modal container" title=""> + <button label="Cancelar" label_selected="Cancelar" name="Cancel"/> + <text name="Save item as:"> + Pulse una tecla para seleccionar + </text> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_sell_land.xml b/indra/newview/skins/default/xui/es/floater_sell_land.xml index 4127fafc9880e29905eceb704f4217615adff0d5..6d1122a771eff47b81944d3d224087934a7235bd 100644 --- a/indra/newview/skins/default/xui/es/floater_sell_land.xml +++ b/indra/newview/skins/default/xui/es/floater_sell_land.xml @@ -15,6 +15,7 @@ <text name="info_action"> Vender esta parcela: </text> + <icon bottom_delta="-56" name="step_price" /> <text name="price_label"> Marque un precio: </text> @@ -43,17 +44,14 @@ ¿Vender los objetos con el terreno? </text> <text name="sell_objects_text"> - Los objetos transferibles del propietario del terreno cambiarán de propietario. - </text> - <radio_group name="sell_objects"> - <radio_item name="no"> - No, mantener la propiedad de los objetos - </radio_item> - <radio_item name="yes"> - SÃ, vender los objetos con el terreno - </radio_item> + Los objetos transferibles del propietario del terreno cambiarán +de propietario. + </text> + <radio_group name="sell_objects" bottom_delta="-58" > + <radio_item name="no" label="No, mantener la propiedad de los objetos" /> + <radio_item name="yes" label="SÃ, vender los objetos con el terreno" /> </radio_group> - <button label="Mostrar los objetos" name="show_objects"/> + <button label="Mostrar los objetos" name="show_objects" width="120"/> <text name="nag_message_label"> RECUERDE: todas las ventas son definitivas. </text> diff --git a/indra/newview/skins/default/xui/es/floater_settings_debug.xml b/indra/newview/skins/default/xui/es/floater_settings_debug.xml index b87ee1bffc67638487f5a6341ff65c1b09a3ee86..1d5ad2f34cdceab163a9cb435f86de2445db1e5e 100644 --- a/indra/newview/skins/default/xui/es/floater_settings_debug.xml +++ b/indra/newview/skins/default/xui/es/floater_settings_debug.xml @@ -9,5 +9,5 @@ <spinner label="x" name="val_spinner_2"/> <spinner label="x" name="val_spinner_3"/> <spinner label="x" name="val_spinner_4"/> - <button label="Volver a las opciones por defecto" name="default_btn"/> + <button label="Volver a las opciones por defecto" name="default_btn" width="210"/> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_snapshot.xml b/indra/newview/skins/default/xui/es/floater_snapshot.xml index 9d60b846885229b2da0320c3fcd43889a4739a84..c1ace235030f3baff75905cc91973dbc1c615cfa 100644 --- a/indra/newview/skins/default/xui/es/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/es/floater_snapshot.xml @@ -4,15 +4,9 @@ Destino de la foto </text> <radio_group label="Tipo de la foto" name="snapshot_type_radio"> - <radio_item name="postcard"> - Enviar por correo electrónico - </radio_item> - <radio_item name="texture"> - Guardarla en su inventario ([AMOUNT] L$) - </radio_item> - <radio_item name="local"> - Guardarla en su disco duro - </radio_item> + <radio_item name="postcard" label="Enviar por correo electrónico" /> + <radio_item name="texture" label="Guardarla en su inventario ([AMOUNT] L$)" /> + <radio_item name="local" label="Guardarla en su disco duro" /> </radio_group> <text name="file_size_label"> Tamaño del archivo: [SIZE] KB @@ -62,8 +56,8 @@ <combo_box.item name="JPEG" label="JPEG"/> <combo_box.item name="BMP" label="BMP"/> </combo_box> - <spinner label="Ancho" name="snapshot_width"/> - <spinner label="Alto" name="snapshot_height"/> + <spinner label="Ancho" name="snapshot_width" label_width="41" width="101"/> + <spinner label="Alto" name="snapshot_height" label_width="30" width="90" left="121"/> <check_box label="Mantener las proporciones" name="keep_aspect_check"/> <slider label="Calidad de la imagen" name="image_quality_slider"/> <text name="layer_type_label"> @@ -75,10 +69,10 @@ <combo_box.item name="ObjectMattes" label="Bandas negras"/> </combo_box> <check_box label="Incluir la interfaz en la foto" name="ui_check"/> - <check_box label="Incluir los HUD en la foto" name="hud_check"/> - <check_box label="Mantenerla abierta tras guardarla" name="keep_open_check"/> - <check_box label="Congelar la toma (vista previa en pantalla completa)" name="freeze_frame_check"/> - <check_box label="Actualizar automáticamente" name="auto_snapshot_check"/> + <check_box bottom_delta="-17" label="Incluir los HUD en la foto" name="hud_check"/> + <check_box bottom_delta="-17" label="Mantenerla abierta tras guardarla" name="keep_open_check"/> + <check_box bottom_delta="-17" label="Congelar la toma (vista previa en pantalla completa)" name="freeze_frame_check"/> + <check_box bottom_delta="-29" label="Actualizar automáticamente" name="auto_snapshot_check"/> <string name="unknown"> desconocido </string> diff --git a/indra/newview/skins/default/xui/es/floater_sound_preview.xml b/indra/newview/skins/default/xui/es/floater_sound_preview.xml index 3e92b2423d2b470c7726eab14b36c75fd3a15cd0..e69ac1012343df32d35eb9b72383d8f59ebacbc1 100644 --- a/indra/newview/skins/default/xui/es/floater_sound_preview.xml +++ b/indra/newview/skins/default/xui/es/floater_sound_preview.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Name/Description" title="sound.wav"> +<floater name="Sound Preview" title="sound.wav"> <text name="name_label"> Nombre: </text> diff --git a/indra/newview/skins/default/xui/es/floater_statistics.xml b/indra/newview/skins/default/xui/es/floater_statistics.xml new file mode 100644 index 0000000000000000000000000000000000000000..6e644cacf1fa4b26f8caff6297c9f098bf7c1f4b --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_statistics.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="stats floater" title="EstadÃsticas"/> diff --git a/indra/newview/skins/default/xui/es/floater_tools.xml b/indra/newview/skins/default/xui/es/floater_tools.xml index 3b6bf732becf4a77c3d71b5ef3148a1c66a267aa..15c66c836617c2518f1c0280ca800060a6631859 100644 --- a/indra/newview/skins/default/xui/es/floater_tools.xml +++ b/indra/newview/skins/default/xui/es/floater_tools.xml @@ -17,12 +17,18 @@ <check_box label="Elegir la cara" name="radio select face"/> <check_box label="Editar las partes enlazadas" name="checkbox edit linked parts"/> <text name="text ruler mode"> - Modo de ajuste: + Ajuste: </text> <combo_box name="combobox grid mode"> - <combo_box.item name="World" label="Mundo"/> - <combo_box.item name="Local" label="Local"/> - <combo_box.item name="Reference" label="Referencia"/> + <combo_item name="World"> + Mundo + </combo_item> + <combo_item name="Local"> + Local + </combo_item> + <combo_item name="Reference"> + Referencia + </combo_item> </combo_box> <check_box label="Estirar ambos lados" name="checkbox uniform"/> <check_box label="Estirar las texturas" name="checkbox stretch textures"/> @@ -46,29 +52,33 @@ <button label="" label_selected="" name="ToolRing" tool_tip="Cono truncado"/> <button label="" label_selected="" name="ToolTree" tool_tip="Ãrbol"/> <button label="" label_selected="" name="ToolGrass" tool_tip="Hierba"/> - <check_box label="Mantener esta herramienta" name="checkbox sticky"/> - <check_box label="Copiar la selección" name="checkbox copy selection"/> - <check_box label="Copia centrada" name="checkbox copy centers"/> - <check_box label="Copia girada" name="checkbox copy rotates"/> + <check_box label="Mantener seleccionado" name="checkbox sticky"/> + <check_box label="Copia seleccionada" name="checkbox copy selection"/> + <check_box label="Centrada" name="checkbox copy centers"/> + <check_box label="Girada" name="checkbox copy rotates"/> <check_box label="Seleccionar el terreno" name="radio select land"/> - <check_box label="Nivelar el terreno" name="radio flatten"/> - <check_box label="Elevar el terreno" name="radio raise"/> - <check_box label="Bajar el terreno" name="radio lower"/> - <check_box label="Suavizar el terreno" name="radio smooth"/> - <check_box label="Escarpar el terreno" name="radio noise"/> - <check_box label="Restablecer el terreno" name="radio revert"/> - <combo_box name="combobox brush size"> - <combo_box.item name="Small" label="Pequeño"/> - <combo_box.item name="Medium" label="Medio"/> - <combo_box.item name="Large" label="Grande"/> - </combo_box> + <check_box label="Nivelar" name="radio flatten"/> + <check_box label="Elevar" name="radio raise"/> + <check_box label="Bajar" name="radio lower"/> + <check_box label="Suavizar" name="radio smooth"/> + <check_box label="Escarpar" name="radio noise"/> + <check_box label="Restablecer" name="radio revert"/> + <button label="Aplicar" label_selected="Aplicar" name="button apply to selection" tool_tip="Modificar el terreno seleccionado"/> + <text name="Bulldozer:"> + Bulldozer: + </text> + <text name="Dozer Size:"> + Tamaño + </text> <text name="Strength:"> - Fuerza: + Fuerza + </text> + <text name="obj_count"> + Objetos seleccionados: [COUNT] + </text> + <text name="prim_count"> + primitivas: [COUNT] </text> - <button label="Aplicar a lo seleccionado" label_selected="Aplicar a lo seleccionado" name="button apply to selection" tool_tip="Modificar el terreno seleccionado"/> - <check_box label="Mostrar los propietarios" name="checkbox show owners"/> - <button label="Más >>" name="button more" tool_tip="Opciones avanzadas"/> - <button label="<< Menos" name="button less" tool_tip="Opciones avanzadas"/> <tab_container name="Object Info Tabs"> <panel label="General" name="General"> <text name="Name:"> @@ -98,16 +108,13 @@ Los Linden </text> <button label="Configurar..." label_selected="Configurar..." name="button set group"/> - <text name="prim info"> - 1 objeto, 1 prim - </text> <text name="Permissions:"> Permisos: </text> <text name="perm_modify"> Puede modificar este objeto. </text> - <check_box label="Compartir con el grupo" name="checkbox share with group" tool_tip="Permitir a los miembros del grupo mover, modificar, copiar, y borrar."/> + <check_box label="Compartir con el grupo" name="checkbox share with group" tool_tip="Permitir que todos los miembros del grupo compartan y utilicen sus permisos sobre este objeto. Debe transferirlo para activar las restricciones según los roles."/> <string name="text deed continued"> Transferir... </string> @@ -143,13 +150,27 @@ Al pulsarlo con el botón izquierdo: </text> <combo_box name="clickaction"> - <combo_box.item name="Touch/grab(default)" label="Tocar/Agarrar (por defecto)"/> - <combo_box.item name="Sitonobject" label="Sentarse en el objeto"/> - <combo_box.item name="Buyobject" label="Comprar el objeto"/> - <combo_box.item name="Payobject" label="Pagar al objeto"/> - <combo_box.item name="Open" label="Abrirlo"/> - <combo_box.item name="Play" label="Ejecutar los media de la parcela"/> - <combo_box.item name="Opemmedia" label="Abrir los media de la parcela"/> + <combo_item name="Touch/grab(default)"> + Tocar/Agarrar (por defecto) + </combo_item> + <combo_item name="Sitonobject"> + Sentarse en el objeto + </combo_item> + <combo_item name="Buyobject"> + Comprar el objeto + </combo_item> + <combo_item name="Payobject"> + Pagar al objeto + </combo_item> + <combo_item name="Open"> + Abrirlo + </combo_item> + <combo_item name="Play"> + Ejecutar los media de la parcela + </combo_item> + <combo_item name="Opemmedia"> + Abrir los media de la parcela + </combo_item> </combo_box> <text name="B:"> B: @@ -233,29 +254,59 @@ Material </text> <combo_box name="material"> - <combo_box.item name="Stone" label="Piedra"/> - <combo_box.item name="Metal" label="Metal"/> - <combo_box.item name="Glass" label="Vidrio"/> - <combo_box.item name="Wood" label="Madera"/> - <combo_box.item name="Flesh" label="Carne"/> - <combo_box.item name="Plastic" label="Plástico"/> - <combo_box.item name="Rubber" label="Goma"/> + <combo_item name="Stone"> + Piedra + </combo_item> + <combo_item name="Metal"> + Metal + </combo_item> + <combo_item name="Glass"> + Vidrio + </combo_item> + <combo_item name="Wood"> + Madera + </combo_item> + <combo_item name="Flesh"> + Carne + </combo_item> + <combo_item name="Plastic"> + Plástico + </combo_item> + <combo_item name="Rubber"> + Goma + </combo_item> </combo_box> <text name="label basetype"> Tipo de objeto para construir </text> <combo_box name="comboBaseType"> - <combo_box.item name="Box" label="Caja"/> - <combo_box.item name="Cylinder" label="Cilindro"/> - <combo_box.item name="Prism" label="Prisma"/> - <combo_box.item name="Sphere" label="Esfera"/> - <combo_box.item name="Torus" label="Toroide"/> - <combo_box.item name="Tube" label="Tubo"/> - <combo_box.item name="Ring" label="Cono truncado"/> - <combo_box.item name="Sculpted" label="Sculpted"/> + <combo_item name="Box"> + Caja + </combo_item> + <combo_item name="Cylinder"> + Cilindro + </combo_item> + <combo_item name="Prism"> + Prisma + </combo_item> + <combo_item name="Sphere"> + Esfera + </combo_item> + <combo_item name="Torus"> + Toroide + </combo_item> + <combo_item name="Tube"> + Tubo + </combo_item> + <combo_item name="Ring"> + Cono truncado + </combo_item> + <combo_item name="Sculpted"> + Sculpted + </combo_item> </combo_box> <text name="text cut"> - Inicio y Fin del corte + Corte: Inicio y Fin </text> <spinner label="I" name="cut begin"/> <spinner label="F" name="cut end"/> @@ -269,13 +320,21 @@ Forma del hueco </text> <combo_box name="hole"> - <combo_box.item name="Default" label="Por defecto"/> - <combo_box.item name="Circle" label="CÃrculo"/> - <combo_box.item name="Square" label="Cuadrado"/> - <combo_box.item name="Triangle" label="Triángulo"/> + <combo_item name="Default"> + Por defecto + </combo_item> + <combo_item name="Circle"> + CÃrculo + </combo_item> + <combo_item name="Square"> + Cuadrado + </combo_item> + <combo_item name="Triangle"> + Triángulo + </combo_item> </combo_box> <text name="text twist"> - Inicio y Fin de la torsión + La torsión: Inicio y Fin </text> <spinner label="I" name="Twist Begin"/> <spinner label="F" name="Twist End"/> @@ -293,11 +352,14 @@ <spinner label="X" name="Shear X"/> <spinner label="Y" name="Shear Y"/> <text name="advanced_cut"> - Inicio y Fin del corte del perfil + Corte del perfil: Inicio y Fin </text> <text name="advanced_dimple"> Horadar: Inicio y Fin </text> + <text name="advanced_slice"> + Cortar: Inicio y Fin + </text> <spinner label="I" name="Path Limit Begin"/> <spinner label="F" name="Path Limit End"/> <text name="text taper2"> @@ -318,11 +380,21 @@ Tipo de unión </text> <combo_box name="sculpt type control"> - <combo_box.item name="None" label="ninguna)"/> - <combo_box.item name="Sphere" label="Esfera"/> - <combo_box.item name="Torus" label="Toroide"/> - <combo_box.item name="Plane" label="Plano"/> - <combo_box.item name="Cylinder" label="Cilindro"/> + <combo_item name="None"> + (ninguna) + </combo_item> + <combo_item name="Sphere"> + Esfera + </combo_item> + <combo_item name="Torus"> + Toroide + </combo_item> + <combo_item name="Plane"> + Plano + </combo_item> + <combo_item name="Cylinder"> + Cilindro + </combo_item> </combo_box> </panel> <panel label="CaracterÃsticas" name="Features"> @@ -364,40 +436,88 @@ Detallado </text> <combo_box name="combobox texgen"> - <combo_box.item name="Default" label="Por defecto"/> - <combo_box.item name="Planar" label="Plano"/> + <combo_item name="Default"> + Por defecto + </combo_item> + <combo_item name="Planar"> + Plano + </combo_item> </combo_box> <text name="label shininess"> Brillantez </text> <combo_box name="combobox shininess"> - <combo_box.item name="None" label="Ninguna"/> - <combo_box.item name="Low" label="Baja"/> - <combo_box.item name="Medium" label="Media"/> - <combo_box.item name="High" label="Alta"/> + <combo_item name="None"> + Ninguna + </combo_item> + <combo_item name="Low"> + Baja + </combo_item> + <combo_item name="Medium"> + Media + </combo_item> + <combo_item name="High"> + Alta + </combo_item> </combo_box> <text name="label bumpiness"> Relieve </text> <combo_box name="combobox bumpiness"> - <combo_box.item name="None" label="Ninguno"/> - <combo_box.item name="Brightness" label="Brillo"/> - <combo_box.item name="Darkness" label="Oscuro"/> - <combo_box.item name="woodgrain" label="grano de madera"/> - <combo_box.item name="bark" label="corteza"/> - <combo_box.item name="bricks" label="ladrillos"/> - <combo_box.item name="checker" label="cajero"/> - <combo_box.item name="concrete" label="cemento"/> - <combo_box.item name="crustytile" label="azulejerÃa"/> - <combo_box.item name="cutstone" label="piedra cortada"/> - <combo_box.item name="discs" label="discos"/> - <combo_box.item name="gravel" label="grava"/> - <combo_box.item name="petridish" label="placa de Petri"/> - <combo_box.item name="siding" label="revestimiento"/> - <combo_box.item name="stonetile" label="baldosa de piedra"/> - <combo_box.item name="stucco" label="estuco"/> - <combo_box.item name="suction" label="succión"/> - <combo_box.item name="weave" label="tejido"/> + <combo_item name="None"> + Ninguno + </combo_item> + <combo_item name="Brightness"> + Brillo + </combo_item> + <combo_item name="Darkness"> + Oscuro + </combo_item> + <combo_item name="woodgrain"> + grano de madera + </combo_item> + <combo_item name="bark"> + corteza + </combo_item> + <combo_item name="bricks"> + ladrillos + </combo_item> + <combo_item name="checker"> + cajero + </combo_item> + <combo_item name="concrete"> + cemento + </combo_item> + <combo_item name="crustytile"> + azulejerÃa + </combo_item> + <combo_item name="cutstone"> + piedra cortada + </combo_item> + <combo_item name="discs"> + discos + </combo_item> + <combo_item name="gravel"> + grava + </combo_item> + <combo_item name="petridish"> + placa de Petri + </combo_item> + <combo_item name="siding"> + revestimiento + </combo_item> + <combo_item name="stonetile"> + baldosa de piedra + </combo_item> + <combo_item name="stucco"> + estuco + </combo_item> + <combo_item name="suction"> + succión + </combo_item> + <combo_item name="weave"> + tejido + </combo_item> </combo_box> <text name="tex scale"> Repeticiones por cara @@ -431,21 +551,33 @@ <button label="Alinear" label_selected="Alinear" name="button align"/> </panel> <panel label="Contenido" name="Contents"> - <button label="Script nuevo..." label_selected="Script nuevo..." name="button new script"/> + <button label="Script nuevo" label_selected="Script nuevo" name="button new script"/> + <button label="Permisos..." name="button permissions"/> </panel> </tab_container> <panel name="land info panel"> + <text name="label_parcel_info"> + Información de la parcela + </text> <text name="label_area_price"> Precio: [PRICE] L$ por [AREA] m² </text> <text name="label_area"> Superficie: [AREA] m² </text> - <button label="Comprar terreno..." label_selected="Comprar terreno..." name="button buy land"/> - <button label="Abandonar el terreno..." label_selected="Abandonar el terreno..." name="button abandon land"/> + <button label="Acerca del terreno..." label_selected="Acerca del terreno..." name="button about land"/> + <check_box label="Mostrar los propietarios" name="checkbox show owners" tool_tip="El color de las parcelas es según su propietario"/> + <button label="?" label_selected="?" name="button show owners help"/> + <text name="label_parcel_modify"> + Modificar la parcela + </text> <button label="Subdividir..." label_selected="Subdividir..." name="button subdivide land"/> <button label="Unir..." label_selected="Unir..." name="button join land"/> - <button label="Acerca del terreno..." label_selected="Acerca del terreno..." name="button about land"/> + <text name="label_parcel_trans"> + Transacciones de terreno + </text> + <button label="Comprar terreno..." label_selected="Comprar terreno..." name="button buy land"/> + <button label="Abandonar el terreno..." label_selected="Abandonar el terreno..." name="button abandon land"/> </panel> <string name="status_rotate"> Arrastre las bandas de color para girar el objeto @@ -463,10 +595,10 @@ Pulse y arrastre para cambiar el punto de vista </string> <string name="status_grab"> - Arrastre para mover objetos: Ctrl, verticalmente; Ctrl-Mayús., horizontalmente + Arrastre para mover objetos: Ctrl, verticalmente; Ctrl-Mayús., para girarlos. </string> <string name="status_place"> - Pulse en el mundo para crear; mayús. y pulsar para seleccionar + Pulse en el mundo para construir </string> <string name="status_selectland"> Pulse y arrastre para seleccionar el terreno diff --git a/indra/newview/skins/default/xui/es/floater_url_entry.xml b/indra/newview/skins/default/xui/es/floater_url_entry.xml index 538ce567604faecd959987c95a0e8d2c34f2bd66..abdd69b090f63c53dec9d3b62be88392bb3fd412 100644 --- a/indra/newview/skins/default/xui/es/floater_url_entry.xml +++ b/indra/newview/skins/default/xui/es/floater_url_entry.xml @@ -1,12 +1,12 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="url_entry" title=""> - <text name="media_label"> - URL para media: - </text> - <button label="OK" name="ok_btn"/> - <button label="Cancelar" name="cancel_btn"/> - <button label="Limpiar" name="clear_btn"/> - <text name="loading_label"> - Cargando... - </text> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="url_entry" title=""> + <text name="media_label"> + URL para media: + </text> + <button label="OK" name="ok_btn"/> + <button label="Cancelar" name="cancel_btn"/> + <button label="Limpiar" name="clear_btn"/> + <text name="loading_label"> + Cargando... + </text> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_water.xml b/indra/newview/skins/default/xui/es/floater_water.xml index a6198ccfd98d133eac848d3550a398e0663213e0..5a759af5ff7de786a3fa67e2175ef4bb3e731d2a 100644 --- a/indra/newview/skins/default/xui/es/floater_water.xml +++ b/indra/newview/skins/default/xui/es/floater_water.xml @@ -1,88 +1,88 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Water Floater" title="Editor avanzado del agua"> - <text name="KeyFramePresetsText"> - Agua predefinida: - </text> - <button label="Nueva" label_selected="Nueva" name="WaterNewPreset"/> - <button label="Guardar" label_selected="Guardar" name="WaterSavePreset"/> - <button label="Borrar" label_selected="Borrar" name="WaterDeletePreset"/> - <tab_container name="Water Tabs"> - <panel label="Configuraciones" name="Settings"> - <text name="BHText"> - Color del agua - </text> - <button label="?" name="WaterFogColorHelp"/> - <color_swatch label="" name="WaterFogColor" tool_tip="Pulse para abrir el selector de color"/> - <text name="WaterFogDensText"> - Transparencia - </text> - <button label="?" name="WaterFogDensityHelp"/> - <text name="WaterUnderWaterFogModText"> - Modificar la claridad del agua - </text> - <button label="?" name="WaterUnderWaterFogModHelp"/> - <text name="BDensText"> - Tamaño de las ondulaciones - </text> - <button label="?" name="WaterNormalScaleHelp"/> - <text name="BHText2"> - 1 - </text> - <text name="BHText3"> - 2 - </text> - <text name="BHText4"> - 3 - </text> - <text name="HDText"> - Escala de Fresnel - </text> - <button label="?" name="WaterFresnelScaleHelp"/> - <text name="FresnelOffsetText"> - Coeficiente de reflexión - </text> - <button label="?" name="WaterFresnelOffsetHelp"/> - <text name="DensMultText"> - Refracción de la superficie - </text> - <button label="?" name="WaterScaleAboveHelp"/> - <text name="WaterScaleBelowText"> - Refracción bajo la superficie - </text> - <button label="?" name="WaterScaleBelowHelp"/> - <text name="MaxAltText"> - Desenfoque - </text> - <button label="?" name="WaterBlurMultiplierHelp"/> - </panel> - <panel label="Imagen" name="Waves"> - <text name="BHText"> - Sentido de la onda grande - </text> - <button label="?" name="WaterWave1Help"/> - <text name="WaterWave1DirXText"> - X - </text> - <text name="WaterWave1DirYText"> - Y - </text> - <text name="BHText2"> - Sentido de la onda pequeña - </text> - <button label="?" name="WaterWave2Help"/> - <text name="WaterWave2DirXText"> - X - </text> - <text name="WaterWave2DirYText"> - Y - </text> - <text name="BHText3"> - Vista Normal - </text> - <button label="?" name="WaterNormalMapHelp"/> - </panel> - </tab_container> - <string name="WLDefaultWaterNames"> - Default:Glassy:Pond:Murky:Second Plague:SNAKE!!!:Valdez - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Water Floater" title="Editor avanzado del agua"> + <text name="KeyFramePresetsText"> + Agua predefinida: + </text> + <button label="Nueva" label_selected="Nueva" name="WaterNewPreset"/> + <button label="Guardar" label_selected="Guardar" name="WaterSavePreset"/> + <button label="Borrar" label_selected="Borrar" name="WaterDeletePreset"/> + <tab_container name="Water Tabs"> + <panel label="Configuraciones" name="Settings"> + <text name="BHText"> + Color del agua + </text> + <button label="?" name="WaterFogColorHelp"/> + <color_swatch label="" name="WaterFogColor" tool_tip="Pulse para abrir el selector de color"/> + <text name="WaterFogDensText"> + Transparencia + </text> + <button label="?" name="WaterFogDensityHelp"/> + <text name="WaterUnderWaterFogModText"> + Modificar la claridad del agua + </text> + <button label="?" name="WaterUnderWaterFogModHelp"/> + <text name="BDensText"> + Tamaño de las ondulaciones + </text> + <button label="?" name="WaterNormalScaleHelp"/> + <text name="BHText2"> + 1 + </text> + <text name="BHText3"> + 2 + </text> + <text name="BHText4"> + 3 + </text> + <text name="HDText"> + Escala de Fresnel + </text> + <button label="?" name="WaterFresnelScaleHelp"/> + <text name="FresnelOffsetText"> + Coeficiente de reflexión + </text> + <button label="?" name="WaterFresnelOffsetHelp"/> + <text name="DensMultText"> + Refracción de la superficie + </text> + <button label="?" name="WaterScaleAboveHelp"/> + <text name="WaterScaleBelowText"> + Refracción bajo la superficie + </text> + <button label="?" name="WaterScaleBelowHelp"/> + <text name="MaxAltText"> + Desenfoque + </text> + <button label="?" name="WaterBlurMultiplierHelp"/> + </panel> + <panel label="Imagen" name="Waves"> + <text name="BHText"> + Sentido de la onda grande + </text> + <button label="?" name="WaterWave1Help"/> + <text name="WaterWave1DirXText"> + X + </text> + <text name="WaterWave1DirYText"> + Y + </text> + <text name="BHText2"> + Sentido de la onda pequeña + </text> + <button label="?" name="WaterWave2Help"/> + <text name="WaterWave2DirXText"> + X + </text> + <text name="WaterWave2DirYText"> + Y + </text> + <text name="BHText3"> + Vista Normal + </text> + <button label="?" name="WaterNormalMapHelp"/> + </panel> + </tab_container> + <string name="WLDefaultWaterNames"> + Default:Glassy:Pond:Murky:Second Plague:SNAKE!!!:Valdez + </string> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_windlight_options.xml b/indra/newview/skins/default/xui/es/floater_windlight_options.xml index 223a8e6db20afa4eb4edee45509d73c9b496c5e7..79b70d4d59ab380074754c19cb89216a2a92f9f8 100644 --- a/indra/newview/skins/default/xui/es/floater_windlight_options.xml +++ b/indra/newview/skins/default/xui/es/floater_windlight_options.xml @@ -1,189 +1,189 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="WindLight floater" title="Editor avanzado del cielo"> - <text name="KeyFramePresetsText"> - Cielos definidos: - </text> - <button label="Nuevo" label_selected="Nuevo" name="WLNewPreset"/> - <button label="Guardar" label_selected="Guardar" name="WLSavePreset"/> - <button label="Borrar" label_selected="Borrar" name="WLDeletePreset"/> - <button label="Editor del ciclo de un dÃa" label_selected="Editor del ciclo de un dÃa" name="WLDayCycleMenuButton"/> - <tab_container name="WindLight Tabs"> - <panel label="Atmósfera" name="Atmosphere"> - <text name="BHText"> - Coloración - </text> - <button label="?" name="WLBlueHorizonHelp"/> - <text name="BHText2"> - R - </text> - <text name="BHText3"> - V - </text> - <text name="BHText4"> - A - </text> - <text name="BHText5"> - I - </text> - <text name="BDensText"> - Cantidad de bruma - </text> - <button label="?" name="WLHazeHorizonHelp"/> - <text name="BDensText2"> - Saturación - </text> - <button label="?" name="WLBlueDensityHelp"/> - <text name="BHText6"> - R - </text> - <text name="BHText7"> - V - </text> - <text name="BHText8"> - A - </text> - <text name="BHText9"> - I - </text> - <text name="HDText"> - Densidad de la bruma - </text> - <button label="?" name="WLHazeDensityHelp"/> - <text name="DensMultText"> - Densidad - </text> - <button label="?" name="WLDensityMultHelp"/> - <text name="WLDistanceMultText"> - Distancia - </text> - <button label="?" name="WLDistanceMultHelp"/> - <text name="MaxAltText"> - Altitud máx. - </text> - <button label="?" name="WLMaxAltitudeHelp"/> - </panel> - <panel label="Iluminación" name="Lighting"> - <text name="SLCText"> - Color del Sol y de la Luna - </text> - <button label="?" name="WLSunlightColorHelp"/> - <text name="BHText"> - R - </text> - <text name="BHText2"> - V - </text> - <text name="BHText3"> - A - </text> - <text name="BHText4"> - I - </text> - <text name="TODText"> - Posición del Sol y la Luna - </text> - <button label="?" name="WLTimeOfDayHelp"/> - <text name="WLAmbientText"> - Ambiental - </text> - <button label="?" name="WLAmbientHelp"/> - <text name="BHText5"> - R - </text> - <text name="BHText6"> - V - </text> - <text name="BHText7"> - A - </text> - <text name="BHText8"> - I - </text> - <text name="WLEastAngleText"> - Ãngulo de elevación - </text> - <button label="?" name="WLEastAngleHelp"/> - <text name="SunGlowText"> - Resplandor del Sol - </text> - <button label="?" name="WLSunGlowHelp"/> - <slider label="Visión" name="WLGlowB"/> - <slider label="Tamaño" name="WLGlowR"/> - <text name="SceneGammaText"> - Gamma de la escena - </text> - <button label="?" name="WLSceneGammaHelp"/> - <text name="WLStarText"> - Brillo de las estrellas - </text> - <button label="?" name="WLStarBrightnessHelp"/> - </panel> - <panel label="Nubes" name="Clouds"> - <text name="WLCloudColorText"> - Color de las nubes - </text> - <button label="?" name="WLCloudColorHelp"/> - <text name="BHText"> - R - </text> - <text name="BHText2"> - V - </text> - <text name="BHText3"> - A - </text> - <text name="BHText4"> - I - </text> - <text name="WLCloudColorText2"> - Posición/Densidad de las nubes - </text> - <button label="?" name="WLCloudDensityHelp"/> - <text name="BHText5"> - X - </text> - <text name="BHText6"> - Y - </text> - <text name="BHText7"> - D - </text> - <text name="WLCloudCoverageText"> - Nubosidad - </text> - <button label="?" name="WLCloudCoverageHelp"/> - <text name="WLCloudScaleText"> - Altitud de las nubes - </text> - <button label="?" name="WLCloudScaleHelp"/> - <text name="WLCloudDetailText"> - Detalle de las nubes (Posición/Densidad) - </text> - <button label="?" name="WLCloudDetailHelp"/> - <text name="BHText8"> - X - </text> - <text name="BHText9"> - Y - </text> - <text name="BHText10"> - D - </text> - <text name="WLCloudScrollXText"> - Velocidad de las nubes: X - </text> - <button label="?" name="WLCloudScrollXHelp"/> - <check_box label="Bloquear" name="WLCloudLockX"/> - <text name="WLCloudScrollYText"> - Velocidad de las nubes: Y - </text> - <button label="?" name="WLCloudScrollYHelp"/> - <check_box label="Bloquear" name="WLCloudLockY"/> - <check_box label="Incluir nubes clásicas" name="DrawClassicClouds"/> - <button label="?" name="WLClassicCloudsHelp"/> - </panel> - </tab_container> - <string name="WLDefaultSkyNames"> - A-12AM:A-12PM:A-3AM:A-3PM:A-4.30PM:A-6AM:A-6PM:A-9AM:A-9PM:Barcelona:Blizzard:Blue Midday:Coastal Afternoon:Coastal Sunset:Default:Desert Sunset:Fine Day:Fluffy Big Clouds:Foggy:Funky Funky:Funky Funky Funky:Gelatto:Ghost:Incongruent Truths:Midday 1:Midday 2:Midday 3:Midday 4:Night:Pirate:Purple:Sailor's Delight:Sheer Sensuality - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="WindLight floater" title="Editor avanzado del cielo"> + <text name="KeyFramePresetsText"> + Cielos definidos: + </text> + <button label="Nuevo" label_selected="Nuevo" name="WLNewPreset"/> + <button label="Guardar" label_selected="Guardar" name="WLSavePreset"/> + <button label="Borrar" label_selected="Borrar" name="WLDeletePreset"/> + <button label="Editor del ciclo de un dÃa" label_selected="Editor del ciclo de un dÃa" name="WLDayCycleMenuButton"/> + <tab_container name="WindLight Tabs"> + <panel label="Atmósfera" name="Atmosphere"> + <text name="BHText"> + Coloración + </text> + <button label="?" name="WLBlueHorizonHelp"/> + <text name="BHText2"> + R + </text> + <text name="BHText3"> + V + </text> + <text name="BHText4"> + A + </text> + <text name="BHText5"> + I + </text> + <text name="BDensText"> + Cantidad de bruma + </text> + <button label="?" name="WLHazeHorizonHelp"/> + <text name="BDensText2"> + Saturación + </text> + <button label="?" name="WLBlueDensityHelp"/> + <text name="BHText6"> + R + </text> + <text name="BHText7"> + V + </text> + <text name="BHText8"> + A + </text> + <text name="BHText9"> + I + </text> + <text name="HDText"> + Densidad de la bruma + </text> + <button label="?" name="WLHazeDensityHelp"/> + <text name="DensMultText"> + Densidad + </text> + <button label="?" name="WLDensityMultHelp"/> + <text name="WLDistanceMultText"> + Distancia + </text> + <button label="?" name="WLDistanceMultHelp"/> + <text name="MaxAltText"> + Altitud máx. + </text> + <button label="?" name="WLMaxAltitudeHelp"/> + </panel> + <panel label="Iluminación" name="Lighting"> + <text name="SLCText"> + Color del Sol y de la Luna + </text> + <button label="?" name="WLSunlightColorHelp"/> + <text name="BHText"> + R + </text> + <text name="BHText2"> + V + </text> + <text name="BHText3"> + A + </text> + <text name="BHText4"> + I + </text> + <text name="TODText"> + Posición del Sol y la Luna + </text> + <button label="?" name="WLTimeOfDayHelp"/> + <text name="WLAmbientText"> + Ambiental + </text> + <button label="?" name="WLAmbientHelp"/> + <text name="BHText5"> + R + </text> + <text name="BHText6"> + V + </text> + <text name="BHText7"> + A + </text> + <text name="BHText8"> + I + </text> + <text name="WLEastAngleText"> + Ãngulo de elevación + </text> + <button label="?" name="WLEastAngleHelp"/> + <text name="SunGlowText"> + Resplandor del Sol + </text> + <button label="?" name="WLSunGlowHelp"/> + <slider label="Visión" name="WLGlowB"/> + <slider label="Tamaño" name="WLGlowR"/> + <text name="SceneGammaText"> + Gamma de la escena + </text> + <button label="?" name="WLSceneGammaHelp"/> + <text name="WLStarText"> + Brillo de las estrellas + </text> + <button label="?" name="WLStarBrightnessHelp"/> + </panel> + <panel label="Nubes" name="Clouds"> + <text name="WLCloudColorText"> + Color de las nubes + </text> + <button label="?" name="WLCloudColorHelp"/> + <text name="BHText"> + R + </text> + <text name="BHText2"> + V + </text> + <text name="BHText3"> + A + </text> + <text name="BHText4"> + I + </text> + <text name="WLCloudColorText2"> + Posición/Densidad de las nubes + </text> + <button label="?" name="WLCloudDensityHelp"/> + <text name="BHText5"> + X + </text> + <text name="BHText6"> + Y + </text> + <text name="BHText7"> + D + </text> + <text name="WLCloudCoverageText"> + Nubosidad + </text> + <button label="?" name="WLCloudCoverageHelp"/> + <text name="WLCloudScaleText"> + Altitud de las nubes + </text> + <button label="?" name="WLCloudScaleHelp"/> + <text name="WLCloudDetailText"> + Detalle de las nubes (Posición/Densidad) + </text> + <button label="?" name="WLCloudDetailHelp"/> + <text name="BHText8"> + X + </text> + <text name="BHText9"> + Y + </text> + <text name="BHText10"> + D + </text> + <text name="WLCloudScrollXText"> + Velocidad de las nubes: X + </text> + <button label="?" name="WLCloudScrollXHelp"/> + <check_box label="Bloquear" name="WLCloudLockX"/> + <text name="WLCloudScrollYText"> + Velocidad de las nubes: Y + </text> + <button label="?" name="WLCloudScrollYHelp"/> + <check_box label="Bloquear" name="WLCloudLockY"/> + <check_box label="Incluir nubes clásicas" name="DrawClassicClouds"/> + <button label="?" name="WLClassicCloudsHelp"/> + </panel> + </tab_container> + <string name="WLDefaultSkyNames"> + A-12AM:A-12PM:A-3AM:A-3PM:A-4.30PM:A-6AM:A-6PM:A-9AM:A-9PM:Barcelona:Blizzard:Blue Midday:Coastal Afternoon:Coastal Sunset:Default:Desert Sunset:Fine Day:Fluffy Big Clouds:Foggy:Funky Funky:Funky Funky Funky:Gelatto:Ghost:Incongruent Truths:Midday 1:Midday 2:Midday 3:Midday 4:Night:Pirate:Purple:Sailor's Delight:Sheer Sensuality + </string> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_world_map.xml b/indra/newview/skins/default/xui/es/floater_world_map.xml index 9893bcfba967dfb704d29cfbd8d5152cf709633f..3bfae282cb709c482fa06972c98b843a8be6709f 100644 --- a/indra/newview/skins/default/xui/es/floater_world_map.xml +++ b/indra/newview/skins/default/xui/es/floater_world_map.xml @@ -4,42 +4,29 @@ <panel label="Objetos" name="objects_mapview"/> <panel label="Terreno" name="terrain_mapview"/> </tab_container> - <text name="land_for_sale_label"> - Terreno en venta - </text> - <text name="auction_label"> - Subasta - </text> <text name="you_label"> Usted </text> <text name="home_label"> Base </text> - <button label="Ir a la Base" label_selected="Ir a la Base" name="Go Home" tool_tip="Teleportar a su Base"/> - <text name="person_label"> - Persona - </text> - <check_box label=" " name="people_chk"/> - <text name="infohub_label"> - Punto de Información - </text> - <check_box label=" " name="infohub_chk"/> - <text name="telehub_label"> - Punto de Teleporte + <text name="auction_label"> + Subasta </text> - <check_box label=" " name="telehubchk"/> - <text name="land_for_sale_label2"> + <text name="land_for_sale_label"> Terreno en venta </text> - <check_box label=" " name="land_for_sale_chk"/> + <button label="Ir a la Base" label_selected="Ir a la Base" name="Go Home" tool_tip="Teleportar a su Base"/> + <check_box label="Residente" name="people_chk"/> + <check_box label="Punto de Info" name="infohub_chk"/> + <check_box label="Punto de Teleporte" name="telehubchk"/> + <check_box label="Terreno en venta" name="land_for_sale_chk"/> <text name="events_label"> - Eventos + Eventos: </text> - <check_box label=" " name="event_chk"/> - - - <check_box name="event_mature_chk"/> + <check_box label="'PG'" name="event_chk"/> + <check_box label="'Mature'" name="event_mature_chk"/> + <check_box label="'Adult'" name="event_adult_chk"/> <combo_box label="Amigos conectados" name="friend combo" tool_tip="Amigo a mostrar en el mapa"> <combo_box.item name="none_selected" label="Amigos conectados" /> </combo_box> diff --git a/indra/newview/skins/default/xui/es/menu_inventory.xml b/indra/newview/skins/default/xui/es/menu_inventory.xml index a503429ff953d58ca2b792d327b7116f819d20f5..557123d4f8f410037c187b6df6836e4ab7b8c61e 100644 --- a/indra/newview/skins/default/xui/es/menu_inventory.xml +++ b/indra/newview/skins/default/xui/es/menu_inventory.xml @@ -55,6 +55,7 @@ <menu_item_call label="Activar" name="Activate"/> <menu_item_call label="Desactivar" name="Deactivate"/> <menu_item_call label="Quitarse" name="Detach From Yourself"/> + <menu_item_call label="Volver a la última posición" name="Restore to Last Position"/> <menu_item_call label="Ponerse" name="Object Wear"/> <menu label="Anexar a" name="Attach To"/> <menu label="Anexar como HUD" name="Attach To HUD"/> diff --git a/indra/newview/skins/default/xui/es/menu_login.xml b/indra/newview/skins/default/xui/es/menu_login.xml index 460ddac93acad48b2de7f72f319bc0a6de4969de..a60e41d896cc2b8aa6551535adf52022ee3f6549 100644 --- a/indra/newview/skins/default/xui/es/menu_login.xml +++ b/indra/newview/skins/default/xui/es/menu_login.xml @@ -1,13 +1,13 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<menu_bar name="Login Menu"> - <menu label="Archivo" name="File"> - <menu_item_call label="Salir" name="Quit"/> - </menu> - <menu label="Editar" name="Edit"> - <menu_item_call label="Preferencias..." name="Preferences..."/> - </menu> - <menu label="Ayuda" name="Help"> - <menu_item_call label="Ayuda de Second Life" name="Second Life Help"/> - <menu_item_call label="Acerca de Second Life..." name="About Second Life..."/> - </menu> -</menu_bar> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu_bar name="Login Menu"> + <menu label="Archivo" name="File"> + <menu_item_call label="Salir" name="Quit"/> + </menu> + <menu label="Editar" name="Edit"> + <menu_item_call label="Preferencias..." name="Preferences..."/> + </menu> + <menu label="Ayuda" name="Help"> + <menu_item_call label="Ayuda de Second Life" name="Second Life Help"/> + <menu_item_call label="Acerca de Second Life..." name="About Second Life..."/> + </menu> +</menu_bar> diff --git a/indra/newview/skins/default/xui/es/menu_mini_map.xml b/indra/newview/skins/default/xui/es/menu_mini_map.xml new file mode 100644 index 0000000000000000000000000000000000000000..19061cea0658412c88370303114ba3ddf12147d5 --- /dev/null +++ b/indra/newview/skins/default/xui/es/menu_mini_map.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="popup"> + <menu_item_call label="Zoom cerca" name="Zoom Close"/> + <menu_item_call label="Zoom medio" name="Zoom Medium"/> + <menu_item_call label="Zoom lejos" name="Zoom Far"/> + <menu_item_call label="Parar la búsqueda" name="Stop Tracking"/> + <menu_item_call label="Perfil..." name="Profile"/> +</menu> diff --git a/indra/newview/skins/default/xui/es/menu_slurl.xml b/indra/newview/skins/default/xui/es/menu_slurl.xml index 9a38cb44779d90acabb657a677079d02fe93678e..5c5900ae567181281201bcab0cf37ece66380e29 100644 --- a/indra/newview/skins/default/xui/es/menu_slurl.xml +++ b/indra/newview/skins/default/xui/es/menu_slurl.xml @@ -1,6 +1,6 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<menu name="Popup"> - <menu_item_call label="Acerca de la URL" name="about_url"/> - <menu_item_call label="Teleportar a la URL" name="teleport_to_url"/> - <menu_item_call label="Mostrar en el mapa" name="show_on_map"/> -</menu> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Popup"> + <menu_item_call label="Acerca de la URL" name="about_url"/> + <menu_item_call label="Teleportar a la URL" name="teleport_to_url"/> + <menu_item_call label="Mostrar en el mapa" name="show_on_map"/> +</menu> diff --git a/indra/newview/skins/default/xui/es/menu_viewer.xml b/indra/newview/skins/default/xui/es/menu_viewer.xml index 1721701c9f33142981b27e9dadcad32bd87d9d56..0712440e1f22b26d9d8139f5904710a510f00183 100644 --- a/indra/newview/skins/default/xui/es/menu_viewer.xml +++ b/indra/newview/skins/default/xui/es/menu_viewer.xml @@ -3,10 +3,12 @@ <menu label="Archivo" name="File"> <tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/> <menu label="Subir" name="upload"> - <menu_item_call label="Subir imagen ([COST] L$)..." name="Upload Image"/> - <menu_item_call label="Subir sonido ([COST] L$)..." name="Upload Sound"/> - <menu_item_call label="Subir animación ([COST] L$)..." name="Upload Animation"/> - <menu_item_call label="Subida masiva ([COST] L$ por archivo)..." name="Bulk Upload"/> + <menu_item_call label="Imagen ([COST] L$)..." name="Upload Image"/> + <menu_item_call label="Sonido ([COST] L$)..." name="Upload Sound"/> + <menu_item_call label="Animación ([COST] L$)..." name="Upload Animation"/> + <menu_item_call label="Masiva ([COST] L$ por archivo)..." name="Bulk Upload"/> + <menu_item_separator label="-----------" name="separator"/> + <menu_item_call label="Definir los permisos por defecto..." name="perm prefs"/> </menu> <menu_item_separator label="-----------" name="separator"/> <menu_item_call label="Cerrar la ventana" name="Close Window"/> @@ -81,6 +83,7 @@ <menu_item_separator label="-----------" name="separator3"/> <menu_item_check label="EstadÃsticas" name="Statistics Bar"/> <menu_item_check label="LÃmites de las parcelas" name="Property Lines"/> + <menu_item_check label="LÃneas de prohibición" name="Banlines"/> <menu_item_check label="Propietarios del terreno" name="Land Owners"/> <menu_item_separator label="-----------" name="separator4"/> <menu label="Información adicional" name="Hover Tips"> @@ -113,7 +116,7 @@ <menu_item_separator label="-----------" name="separator3"/> <menu_item_call label="Pasar al estado ausente" name="Set Away"/> <menu_item_call label="Pasar al estado ocupado" name="Set Busy"/> - <menu_item_call label="Parar todas las animaciones" name="Stop All Animations"/> + <menu_item_call label="Parar la animación de mi avatar" name="Stop Animating My Avatar"/> <menu_item_call label="Recuperar las teclas" name="Release Keys"/> <menu_item_separator label="-----------" name="separator4"/> <menu_item_call label="Historial de mi cuenta..." name="Account History..."/> @@ -164,7 +167,6 @@ <menu_item_call label="Zoom en lo seleccionado" name="Zoom to Selection"/> <menu_item_call label="Comprar el objeto" name="Menu Object Take"/> <menu_item_call label="Coger una copia" name="Take Copy"/> - <menu_item_call label="Devolver una copia del objeto a mi inventario" name="Save Object Back to My Inventory"/> <menu_item_call label="Devolver una copia del objeto a los contenidos de donde salió" name="Save Object Back to Object Contents"/> <menu_item_separator label="-----------" name="separator6"/> <menu_item_call label="Ver en una ventana los errores o alertas de los scripts" name="Show Script Warning/Error Window"/> diff --git a/indra/newview/skins/default/xui/es/mime_types.xml b/indra/newview/skins/default/xui/es/mime_types.xml index 204d9b89352165410e11b90389742a45fb5acfa7..85ff4cfb488020e287e03275afe07b04b2c7a3df 100644 --- a/indra/newview/skins/default/xui/es/mime_types.xml +++ b/indra/newview/skins/default/xui/es/mime_types.xml @@ -1,230 +1,230 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<mimetypes name="default"> - <widgetset name="web"> - <label name="web_label"> - Contenido web - </label> - <tooltip name="web_tooltip"> - Esta localización tiene contenido web - </tooltip> - <playtip name="web_playtip"> - Mostrar el contenido web - </playtip> - </widgetset> - <widgetset name="movie"> - <label name="movie_label"> - PelÃcula - </label> - <tooltip name="movie_tooltip"> - Aquà hay una pelÃcula que puede ver - </tooltip> - <playtip name="movie_playtip"> - Ver la pelÃcula - </playtip> - </widgetset> - <widgetset name="none"> - <label name="none_label"> - No hay contenido - </label> - <tooltip name="none_tooltip"> - Aquà no hay multimedia - </tooltip> - </widgetset> - <widgetset name="image"> - <label name="image_label"> - Imagen - </label> - <tooltip name="image_tooltip"> - Esta localización tiene una imagen - </tooltip> - <playtip name="image_playtip"> - Ver la imagen de esta localización - </playtip> - </widgetset> - <widgetset name="audio"> - <label name="audio_label"> - Audio - </label> - <tooltip name="audio_tooltip"> - Esta localización tiene audio - </tooltip> - <playtip name="audio_playtip"> - Escuchar el audio de esta localización - </playtip> - </widgetset> - <scheme name="rtsp"> - <label name="rtsp_label"> - Real Time Streaming - </label> - </scheme> - <mimetype name="blank"> - <label name="blank_label"> - - Ninguno - - </label> - </mimetype> - <mimetype name="none/none"> - <label name="none/none_label"> - - Ninguno - - </label> - </mimetype> - <mimetype name="audio/*"> - <label name="audio2_label"> - Audio - </label> - </mimetype> - <mimetype name="video/*"> - <label name="video2_label"> - VÃdeo - </label> - </mimetype> - <mimetype name="image/*"> - <label name="image2_label"> - Imagen - </label> - </mimetype> - <mimetype name="video/vnd.secondlife.qt.legacy"> - <label name="vnd.secondlife.qt.legacy_label"> - PelÃcula (QuickTime) - </label> - </mimetype> - <mimetype name="application/javascript"> - <label name="application/javascript_label"> - Javascript - </label> - </mimetype> - <mimetype name="application/ogg"> - <label name="application/ogg_label"> - Audio/Video Ogg - </label> - </mimetype> - <mimetype name="application/pdf"> - <label name="application/pdf_label"> - Documento PDF - </label> - </mimetype> - <mimetype name="application/postscript"> - <label name="application/postscript_label"> - Documento Postscript - </label> - </mimetype> - <mimetype name="application/rtf"> - <label name="application/rtf_label"> - Texto enriquecido (RTF) - </label> - </mimetype> - <mimetype name="application/smil"> - <label name="application/smil_label"> - Synchronized Multimedia Integration Language (SMIL) - </label> - </mimetype> - <mimetype name="application/xhtml+xml"> - <label name="application/xhtml+xml_label"> - Página web (XHTML) - </label> - </mimetype> - <mimetype name="application/x-director"> - <label name="application/x-director_label"> - Macromedia Director - </label> - </mimetype> - <mimetype name="application/x-shockwave-flash"> - <label name="application/x-shockwave-flash_label"> - Flash - </label> - </mimetype> - <mimetype name="audio/mid"> - <label name="audio/mid_label"> - Audio (MIDI) - </label> - </mimetype> - <mimetype name="audio/mpeg"> - <label name="audio/mpeg_label"> - Audio (MP3) - </label> - </mimetype> - <mimetype name="audio/x-aiff"> - <label name="audio/x-aiff_label"> - Audio (AIFF) - </label> - </mimetype> - <mimetype name="audio/x-wav"> - <label name="audio/x-wav_label"> - Audio (WAV) - </label> - </mimetype> - <mimetype name="image/bmp"> - <label name="image/bmp_label"> - Imagen (BMP) - </label> - </mimetype> - <mimetype name="image/gif"> - <label name="image/gif_label"> - Imagen (GIF) - </label> - </mimetype> - <mimetype name="image/jpeg"> - <label name="image/jpeg_label"> - Imagen (JPEG) - </label> - </mimetype> - <mimetype name="image/png"> - <label name="image/png_label"> - Imagen (PNG) - </label> - </mimetype> - <mimetype name="image/svg+xml"> - <label name="image/svg+xml_label"> - Imagen (SVG) - </label> - </mimetype> - <mimetype name="image/tiff"> - <label name="image/tiff_label"> - Imagen (TIFF) - </label> - </mimetype> - <mimetype name="text/html"> - <label name="text/html_label"> - Página web - </label> - </mimetype> - <mimetype name="text/plain"> - <label name="text/plain_label"> - Texto - </label> - </mimetype> - <mimetype name="text/xml"> - <label name="text/xml_label"> - XML - </label> - </mimetype> - <mimetype name="video/mpeg"> - <label name="video/mpeg_label"> - PelÃcula (MPEG) - </label> - </mimetype> - <mimetype name="video/mp4"> - <label name="video/mp4_label"> - PelÃcula (MP4) - </label> - </mimetype> - <mimetype name="video/quicktime"> - <label name="video/quicktime_label"> - PelÃcula (QuickTime) - </label> - </mimetype> - <mimetype name="video/x-ms-asf"> - <label name="video/x-ms-asf_label"> - PelÃcula (Windows Media ASF) - </label> - </mimetype> - <mimetype name="video/x-ms-wmv"> - <label name="video/x-ms-wmv_label"> - PelÃcula (Windows Media WMV) - </label> - </mimetype> - <mimetype name="video/x-msvideo"> - <label name="video/x-msvideo_label"> - PelÃcula (AVI) - </label> - </mimetype> -</mimetypes> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<mimetypes name="default"> + <widgetset name="web"> + <label name="web_label"> + Contenido web + </label> + <tooltip name="web_tooltip"> + Esta localización tiene contenido web + </tooltip> + <playtip name="web_playtip"> + Mostrar el contenido web + </playtip> + </widgetset> + <widgetset name="movie"> + <label name="movie_label"> + PelÃcula + </label> + <tooltip name="movie_tooltip"> + Aquà hay una pelÃcula que puede ver + </tooltip> + <playtip name="movie_playtip"> + Ver la pelÃcula + </playtip> + </widgetset> + <widgetset name="none"> + <label name="none_label"> + No hay contenido + </label> + <tooltip name="none_tooltip"> + Aquà no hay multimedia + </tooltip> + </widgetset> + <widgetset name="image"> + <label name="image_label"> + Imagen + </label> + <tooltip name="image_tooltip"> + Esta localización tiene una imagen + </tooltip> + <playtip name="image_playtip"> + Ver la imagen de esta localización + </playtip> + </widgetset> + <widgetset name="audio"> + <label name="audio_label"> + Audio + </label> + <tooltip name="audio_tooltip"> + Esta localización tiene audio + </tooltip> + <playtip name="audio_playtip"> + Escuchar el audio de esta localización + </playtip> + </widgetset> + <scheme name="rtsp"> + <label name="rtsp_label"> + Real Time Streaming + </label> + </scheme> + <mimetype name="blank"> + <label name="blank_label"> + - Ninguno - + </label> + </mimetype> + <mimetype name="none/none"> + <label name="none/none_label"> + - Ninguno - + </label> + </mimetype> + <mimetype name="audio/*"> + <label name="audio2_label"> + Audio + </label> + </mimetype> + <mimetype name="video/*"> + <label name="video2_label"> + VÃdeo + </label> + </mimetype> + <mimetype name="image/*"> + <label name="image2_label"> + Imagen + </label> + </mimetype> + <mimetype name="video/vnd.secondlife.qt.legacy"> + <label name="vnd.secondlife.qt.legacy_label"> + PelÃcula (QuickTime) + </label> + </mimetype> + <mimetype name="application/javascript"> + <label name="application/javascript_label"> + Javascript + </label> + </mimetype> + <mimetype name="application/ogg"> + <label name="application/ogg_label"> + Audio/Video Ogg + </label> + </mimetype> + <mimetype name="application/pdf"> + <label name="application/pdf_label"> + Documento PDF + </label> + </mimetype> + <mimetype name="application/postscript"> + <label name="application/postscript_label"> + Documento Postscript + </label> + </mimetype> + <mimetype name="application/rtf"> + <label name="application/rtf_label"> + Texto enriquecido (RTF) + </label> + </mimetype> + <mimetype name="application/smil"> + <label name="application/smil_label"> + Synchronized Multimedia Integration Language (SMIL) + </label> + </mimetype> + <mimetype name="application/xhtml+xml"> + <label name="application/xhtml+xml_label"> + Página web (XHTML) + </label> + </mimetype> + <mimetype name="application/x-director"> + <label name="application/x-director_label"> + Macromedia Director + </label> + </mimetype> + <mimetype name="application/x-shockwave-flash"> + <label name="application/x-shockwave-flash_label"> + Flash + </label> + </mimetype> + <mimetype name="audio/mid"> + <label name="audio/mid_label"> + Audio (MIDI) + </label> + </mimetype> + <mimetype name="audio/mpeg"> + <label name="audio/mpeg_label"> + Audio (MP3) + </label> + </mimetype> + <mimetype name="audio/x-aiff"> + <label name="audio/x-aiff_label"> + Audio (AIFF) + </label> + </mimetype> + <mimetype name="audio/x-wav"> + <label name="audio/x-wav_label"> + Audio (WAV) + </label> + </mimetype> + <mimetype name="image/bmp"> + <label name="image/bmp_label"> + Imagen (BMP) + </label> + </mimetype> + <mimetype name="image/gif"> + <label name="image/gif_label"> + Imagen (GIF) + </label> + </mimetype> + <mimetype name="image/jpeg"> + <label name="image/jpeg_label"> + Imagen (JPEG) + </label> + </mimetype> + <mimetype name="image/png"> + <label name="image/png_label"> + Imagen (PNG) + </label> + </mimetype> + <mimetype name="image/svg+xml"> + <label name="image/svg+xml_label"> + Imagen (SVG) + </label> + </mimetype> + <mimetype name="image/tiff"> + <label name="image/tiff_label"> + Imagen (TIFF) + </label> + </mimetype> + <mimetype name="text/html"> + <label name="text/html_label"> + Página web + </label> + </mimetype> + <mimetype name="text/plain"> + <label name="text/plain_label"> + Texto + </label> + </mimetype> + <mimetype name="text/xml"> + <label name="text/xml_label"> + XML + </label> + </mimetype> + <mimetype name="video/mpeg"> + <label name="video/mpeg_label"> + PelÃcula (MPEG) + </label> + </mimetype> + <mimetype name="video/mp4"> + <label name="video/mp4_label"> + PelÃcula (MP4) + </label> + </mimetype> + <mimetype name="video/quicktime"> + <label name="video/quicktime_label"> + PelÃcula (QuickTime) + </label> + </mimetype> + <mimetype name="video/x-ms-asf"> + <label name="video/x-ms-asf_label"> + PelÃcula (Windows Media ASF) + </label> + </mimetype> + <mimetype name="video/x-ms-wmv"> + <label name="video/x-ms-wmv_label"> + PelÃcula (Windows Media WMV) + </label> + </mimetype> + <mimetype name="video/x-msvideo"> + <label name="video/x-msvideo_label"> + PelÃcula (AVI) + </label> + </mimetype> +</mimetypes> diff --git a/indra/newview/skins/default/xui/es/notifications.xml b/indra/newview/skins/default/xui/es/notifications.xml index aa17835ea728250abc25e33b58491fc4bec347ee..d7e480c653fe406450d84a44777239b99a54e914 100644 --- a/indra/newview/skins/default/xui/es/notifications.xml +++ b/indra/newview/skins/default/xui/es/notifications.xml @@ -1,5759 +1,3076 @@ -<?xml version="1.0" ?><notifications> - - <global name="skipnexttime"> - - No mostrarme esto otra vez - </global> - - <global name="alwayschoose"> - - Elegir siempre esta opción - </global> - - <template name="okbutton"> - <form> - <button - name="OK" - text="$yestext"/> - </form> - </template> - - <template name="okignore"> - <form> - <button - name="OK" - text="$yestext"/> - <ignore text="$ignoretext"/> - </form> - </template> - - <template name="okcancelbuttons"> - <form> - <button - name="OK" - text="$yestext"/> - <button - name="Cancel" - text="$notext"/> - </form> - </template> - - <template name="okcancelignore"> - <form> - <button - name="OK" - text="$yestext"/> - <button - name="Cancel" - text="$notext"/> - <ignore text="$ignoretext"/> - </form> - </template> - - <template name="okhelpbuttons"> - <form> - <button - name="OK" - text="$yestext"/> - <button - name="Help" - text="$helptext"/> - </form> - </template> - - <template name="yesnocancelbuttons"> - <form> - <button - name="Yes" - text="$yestext"/> - <button - name="No" - text="$notext"/> - <button - name="Cancel" - text="$canceltext"/> - </form> - </template> - - <notification - functor="GenericAcknowledge" - - name="MissingAlert" - > -'[_NAME]' se ha perdido en notifications.xml. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="FloaterNotFound" - > -Error: no se pudieron encontrar estos controles: - -[CONTROLS] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="TutorialNotFound" - > -Actualmente, no hay un tutorial disponible. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="GenericAlert" - > -[MESSAGE] - </notification> - - <notification - - name="GenericAlertYesCancel" - > -[MESSAGE] - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="SÃ"/> - </notification> - - <notification - - name="WearableSave" - > -¿Guardar los cambios en las ropas o partes del cuerpo actuales? - <usetemplate - canceltext="Cancelar" - name="yesnocancelbuttons" - notext="No guardarlos" - yestext="Guardarlos"/> - </notification> - - <notification - - name="CompileQueueSaveText" - > -Hubo un problema al subir el texto de un script por la siguiente razón: [REASON]. Por favor, inténtelo más tarde. - </notification> - - <notification - - name="CompileQueueSaveBytecode" - > -Hubo un problema al subir el script compilado por la siguiente razón: [REASON]. Por favor, inténtelo más tarde. - </notification> - - <notification - - name="WriteAnimationFail" - > -Hubo un problema al escribir los datos de la animación. Por favor, inténtelo más tarde. - </notification> - - <notification - - name="UploadAuctionSnapshotFail" - > -Hubo un problema al subir la foto de la subasta por la siguiente razón: [REASON] - </notification> - - <notification - - name="UnableToViewContentsMoreThanOne" - > -No se puede ver a la vez los contenidos de más de un Ãtem. Por favor, elija un solo objeto y vuelva a intentarlo. - </notification> - - <notification - - name="SaveClothingBodyChanges" - > -¿Guardar todos los cambios en la ropa y partes del cuerpo? - <usetemplate - canceltext="Cancelar" - name="yesnocancelbuttons" - notext="No guardarlos" - yestext="Guardarlos todos"/> - </notification> - - <notification - - name="GrantModifyRights" - > -Al conceder derechos de modificación a otro residente le autoriza a cambiar, borrar, o coger CUALQUIER objeto que usted tenga en el mundo. Sea MUY cuidadoso dando este permiso. ¿Quiere conceder derechos de modificación a [FIRST_NAME] [LAST_NAME]? - <usetemplate - name="okcancelbuttons" - notext="No" - yestext="SÃ"/> - </notification> - - <notification - - name="GrantModifyRightsMultiple" - > -Al conceder derechos de modificación a otros residentes les autoriza a cambiar, borrar, o coger CUALQUIER objeto que usted tenga en el mundo. Sea MUY cuidadoso dando este permiso. ¿Quiere conceder derechos de modificación a los residentes seleccionados? - <usetemplate - name="okcancelbuttons" - notext="No" - yestext="SÃ"/> - </notification> - - <notification - - name="RevokeModifyRights" - > -¿Quiere revocar los derechos de modificación a [FIRST_NAME] [LAST_NAME]? - <usetemplate - name="okcancelbuttons" - notext="No" - yestext="SÃ"/> - </notification> - - <notification - - name="RevokeModifyRightsMultiple" - > -¿Quiere revocar los derechos de modificación a los residentes seleccionados? - <usetemplate - name="okcancelbuttons" - notext="No" - yestext="SÃ"/> - </notification> - - <notification - - name="UnableToCreateGroup" - > -No se ha podido crear el grupo. -[MESSAGE] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="PanelGroupApply" - > -[NEEDS_APPLY_MESSAGE] -[WANT_APPLY_MESSAGE] - <usetemplate - canceltext="Cancelar" - name="yesnocancelbuttons" - notext="Ignorar los cambios" - yestext="Aplicar los cambios"/> - </notification> - - <notification - - name="MustSpecifyGroupNoticeSubject" - > -Para enviar un aviso de grupo debe especificar un asunto. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="AddGroupOwnerWarning" - > -Va a añadir miembros al rol de [ROLE_NAME]. -No podrá removérseles de ese rol, sino que deberán renunciar a él por sà mismos. -¿Está seguro de que quiere seguir? - <usetemplate - ignoretext="Cuando se añaden miembros del grupo al rol de propietario" - name="okcancelignore" - notext="No" - yestext="SÃ"/> - </notification> - - <notification - - name="AssignDangerousActionWarning" - > -Va a añadir la capacidad '[ACTION_NAME]' al rol '[ROLE_NAME]'. - - *ATENCIÓN* - Todos los miembros con esta capacidad podrán asignarse a sà mismos -y a otros miembros- roles con mayores poderes de los que actualmente tienen. Potencialmente, podrÃan elevarse hasta poderes cercanos a los del propietario. Asegúrese de lo que está haciendo antes de otorgar esta capacidad. -¿Añadir esta capacidad a '[ROLE_NAME]'? - <usetemplate - name="okcancelbuttons" - notext="No" - yestext="SÃ"/> - </notification> - - <notification - - name="AssignDangerousAbilityWarning" - > -Va a añadir la capacidad '[ACTION_NAME]' al rol '[ROLE_NAME]'. - - *ATENCIÓN* - Todos los miembros con esta capacidad podrán asignarse a sà mismos -y a otros miembros- todas las capacidades, elevándose hasta poderes cercanos a los del propietario. -¿Añadir esta capacidad a '[ROLE_NAME]'? - <usetemplate - name="okcancelbuttons" - notext="No" - yestext="SÃ"/> - </notification> - - <notification - - name="ClickPublishHelpLand" - > -Seleccionar "Publicar en la web" -Marcando este Ãtem, se mostrará: -- esta parcela en los resultados de la búsqueda -- los objetos públicos de esta parcela -- esta parcela en la búsqueda de la web - </notification> - - <notification - - name="ClickPublishHelpLandDisabled" - > -No puede hacer que esta parcela aparezca en la búsqueda, porque está situada en una región que lo prohÃbe. - </notification> - - <notification - - name="ClickPublishHelpAvatar" - > -Al seleccionar "Mostrar en Buscar" se mostrará: -- mi perfil en los resultados de la búsqueda -- un enlace a mi perfil en las páginas públicas de grupo - </notification> - - <notification - - name="ClickPartnerHelpAvatar" - > -Puede proponérselo a otro residente o disolver su relación con un/a compañero/a en el sitio web de [SECOND_LIFE]. - -¿Ir al sitio web de Second Life para tener más información sobre este asunto? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Ir a la página"/> - </notification> - - <notification - - name="ClickWebProfileHelpAvatar" - > -Si este residente ha indicado una URL para mostrar un perfil en la web, usted puede: - * Pulsar 'Cargar' para ver la página en esta pestaña web. - * Pulsar Cargar > 'En un navegador externo' para ver la página en su navegador por defecto. - * Pulsar Cargar > 'URL Inicio' para volver al perfil en la web de este residente si usted ha estado navegando por otros sitios. - -Cuando esté viendo su propio perfil, puede introducir cualquier URL como su perfil web, y pulsar OK para fijarla. -Los demás residentes podrán visitar la URL que usted haya elegido cuando vean su perfil. - </notification> - - <notification - - name="JoinGroupCanAfford" - > -Entrar a este grupo cuesta [COST] L$. -¿Quiere hacerlo?? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Entrar"/> - </notification> - - <notification - - name="JoinGroupCannotAfford" - > -Entrar a este grupo cuesta [COST] L$. -No tiene dinero suficiente para entrar. - </notification> - - <notification - - name="LandBuyPass" - > -Por [COST] L$ puede entrar a este terreno ('[PARCEL_NAME]') durante [TIME] horas. ¿Comprar un pase? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="SalePriceRestriction" - > -El precio de venta tiene que ser mayor de 0 L$ si la venta es a cualquiera. -Por favor, elija a alguien concreto como comprador si la venta es por 0 L$. - </notification> - - <notification - - name="ConfirmLandSaleChange" - - > -Los [LAND_SIZE] m² de terreno seleccionados se van a poner a la venta. -Su precio de venta será de [SALE_PRICE] L$, y se autorizará la compra sólo a [NAME]. - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmLandSaleToAnyoneChange" - > -ATENCIÓN: Al pulsar 'vender a cualquiera', su terreno estará disponible para toda la comunidad de Second Life, incluso para quienes no están en esta región. - -Los [LAND_SIZE] m² de terreno seleccionados se van a poner a la venta. -Su precio de venta será de [SALE_PRICE] L$, y se autorizará la compra a [NAME]. - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="ReturnObjectsDeededToGroup" - > -¿Está seguro de que quiere devolver todos los objetos de esta parcela que estén compartidos con el grupo '[NAME]' al inventario de su propietario anterior? - -*ATENCIÓN* ¡Esto borrará los objetos no transferibles que se hayan cedido al grupo! - -Objetos: [N] - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="ReturnObjectsOwnedByUser" - > -¿Está seguro de que quiere devolver al inventario de '[NAME]' todos los objetos que sean de su propiedad en esta parcela? - -Objetos: [N] - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="ReturnObjectsOwnedBySelf" - > -¿Está seguro de que quiere devolver a su inventario todos los objetos de los que usted es propietario en esta parcela? - -Objetos: [N] - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="ReturnObjectsNotOwnedBySelf" - > -¿Está seguro de que quiere devolver todos los objetos de los que usted NO es propietario en esta parcela al inventario de sus propietarios? -Los objetos transferibles que se hayan transferido al grupo se devolverán a sus propietarios previos. - -*ATENCIÓN* ¡Esto borrará los objetos no transferibles que se hayan cedido al grupo! - -Objetos: [N] - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="ReturnObjectsNotOwnedByUser" - > -¿Está seguro de que quiere devolver todos los objetos de esta parcela que NO sean propiedad de [NAME] al inventario de su propietario? -Los objetos transferibles que se hayan transferido al grupo se devolverán a sus propietarios previos. - -*ATENCIÓN* ¡Esto borrará los objetos no transferibles que se hayan cedido al grupo! - -Objetos: [N] - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="ReturnAllTopObjects" - > -¿Está seguro de que quiere devolver al inventario de su propietario todos los objetos de la lista? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="DisableAllTopObjects" - > -¿Está seguro de que quiere desactivar todos los objetos de esta región? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="ReturnObjectsNotOwnedByGroup" - > -¿Devolver a sus propietarios los objetos de esta parcela que NO estén compartidos con el grupo [NAME]? - -Objetos: [N] - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="UnableToDisableOutsideScripts" - > -No se pueden desactivar los scripts. -Toda esta región tiene activado el 'daño'. -Para que funcionen las armas los scripts deben estar activados. - </notification> - - <notification - - name="MustBeInParcel" - > -Para configurar el Punto de llegada de la parcela, -debe estar usted dentro de ella. - </notification> - - <notification - - name="PromptRecipientEmail" - > -Por favor, escriba una dirección de correo electrónica válida para el/los receptor/es. - </notification> - - <notification - - name="PromptSelfEmail" - > -Por favor, escriba su dirección de correo electrónico. - </notification> - - <notification - - name="PromptMissingSubjMsg" - > -¿Foto por correo electrónico con el asunto o el mensaje por defecto? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="ErrorProcessingSnapshot" - > -Error al procesar los datos de la foto. - </notification> - - <notification - - name="ErrorEncodingSnapshot" - > -Error al codificar la foto. - </notification> - - <notification - - name="ErrorUploadingPostcard" - > -Hubo un problema al enviar la foto por la siguiente razón: [REASON] - </notification> - - <notification - - name="ErrorUploadingReportScreenshot" - > -Hubo un problema al subir la captura de pantalla del informe por la siguiente razón: [REASON] - </notification> - - <notification - - name="MustAgreeToLogIn" - > -Debe estar de acuerdo con las Condiciones del Servicio para continuar el inicio de sesión en [SECOND_LIFE]. - </notification> - - <notification - - name="CouldNotPutOnOutfit" - > -No se ha podido ponerle el vestuario. -La carpeta del vestuario contiene partes del cuerpo, u objetos a anexar o que no son ropa. - </notification> - - <notification - - name="CannotWearTrash" - > -No puede vestirse ropas o partes del cuerpo que están en la Papelera - </notification> - - <notification - - name="CannotWearInfoNotComplete" - > -No puede vestirse este Ãtem porque aún no se ha cargado. Por favor, reinténtelo en un minuto. - </notification> - - <notification - - name="MustHaveAccountToLogIn" - > -¡Vaya! Algo se quedó en blanco. -Debe escribir tanto el nombre como el apellido de su avatar, los dos. - -Necesita una cuenta para entrar en [SECOND_LIFE]. ¿Quiere crear una ahora? - <usetemplate - name="okcancelbuttons" - notext="Volver a intentarlo" - yestext="Crear una cuenta nueva"/> - </notification> - - <notification - - name="AddClassified" - > -Los anuncios clasificados aparecen durante una semana en la sección 'Clasificados' del directorio Buscar y en www.secondlife.com. -Rellene su anuncio y pulse 'Publicar...' para añadirlo al directorio. -Cuando pulse Publicar, se le preguntará por un precio a pagar. -El pagar más hará que su anuncio aparezca más arriba en la lista, y que también aparezca más arriba cuando la gente busque por palabras clave. - <usetemplate - ignoretext="Cuando se añade un nuevo Clasificado" - name="okcancelignore" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="DeleteClassified" - > -¿Borrar el clasificado '[NAME]'? -No se reembolsan las cuotas pagadas. - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="ClassifiedSave" - > -¿Guardar los cambios en el clasificado [NAME]? - <usetemplate - canceltext="Cancelar" - name="yesnocancelbuttons" - notext="No guardar" - yestext="Guardar"/> - </notification> - - <notification - - name="DeleteAvatarPick" - > -¿Borrar el destacado [PICK]? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="PromptGoToEventsPage" - > -¿Ir a la web de eventos de [SECOND_LIFE]? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="SelectProposalToView" - > -Por favor, seleccione qué propuesta quiere ver. - </notification> - - <notification - - name="SelectHistoryItemToView" - > -Por favor, seleccione un Ãtem del historial para verlo. - </notification> - - <notification - - name="ResetShowNextTimeDialogs" - > -¿Quiere reactivar todas estas ventanas emergentes, incluso las que marcó previamente como 'No mostrarme más esto'? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="SkipShowNextTimeDialogs" - > -¿Quiere activar todas las ventanas emergentes que puedan habilitarse? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="CacheWillClear" - > -La caché se limpiará cuando reinicie [SECOND_LIFE]. - </notification> - - <notification - - name="CacheWillBeMoved" - > -La caché se moverá cuando reinicie [SECOND_LIFE]. -Nota: esto limpiará la caché. - </notification> - - <notification - - name="ChangeConnectionPort" - > -Las configuraciones del puerto tendrán efecto cuando reinicie [SECOND_LIFE]. - </notification> - - <notification - - name="ChangeSkin" - > -La nueva apariencia se verá cuando reinicie [SECOND_LIFE]. - </notification> - - <notification - - name="GoToAuctionPage" - > -¿Ir a la página web de [SECOND_LIFE] para ver los detalles de la subasta -o hacer una puja? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="SaveChanges" - > -¿Guardar los cambios? - <usetemplate - canceltext="Cancelar" - name="yesnocancelbuttons" - notext="No guardar" - yestext="Guardar"/> - </notification> - - <notification - - name="GestureSaveFailedTooManySteps" - > -Fallo al guardar el gesto. -Este gesto tiene demasiados pasos. -Intente quitarle algunos, y vuelva a guardarlo. - </notification> - - <notification - - name="GestureSaveFailedTryAgain" - > -Fallo al guardar el gesto. Por favor, reinténtelo en un minuto. - </notification> - - <notification - - name="GestureSaveFailedObjectNotFound" - > -No se ha podido guardar el gesto porque no se pudo encontrar el objeto o el objeto asociado. -El objeto debe de haber sido borrado o estar fuera de rango ('out of range'). - </notification> - - <notification - - name="GestureSaveFailedReason" - > -Al guardar un gesto, hubo un problema por: [REASON]. Por favor, reintente guardarlo más tarde. - </notification> - - <notification - - name="SaveNotecardFailObjectNotFound" - > -No se ha podido guardar la nota porque no se pudo encontrar el objeto o el objeto asociado del inventario. -El objeto debe de haber sido borrado o estar fuera de rango ('out of range'). - </notification> - - <notification - - name="SaveNotecardFailReason" - > -Al guardar una nota, hubo un problema por: [REASON]. Por favor, reintente guardarla más tarde. - </notification> - - <notification - - name="ScriptCannotUndo" - > -No se han podido deshacer todos los cambios en su versión del script. -¿Quiere cargar la última versión guardada en el servidor? -(**Cuidado** No podrá deshacer esta operación). - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="SaveScriptFailReason" - > -Al guardar un script, hubo un problema por: [REASON]. Por favor, reintente guardarlo más tarde. - </notification> - - <notification - - name="SaveScriptFailObjectNotFound" - > -No se ha podido guardar el script porque no se pudo encontrar el objeto que incluye. -El objeto debe de haber sido borrado o estar fuera de rango ('out of range').. - </notification> - - <notification - - name="SaveBytecodeFailReason" - > -Al guardar un script compilado, hubo un problema por: [REASON]. Por favor, reintente guardarlo más tarde.. - </notification> - - <notification - - name="CouldNotStartStopScript" - > -No se ha podido correr o parar el script porque no se pudo encontrar el objeto que incluye. -El objeto debe de haber sido borrado o estar fuera de rango ('out of range').. - </notification> - - <notification - - name="CannotDownloadFile" - > -No se ha podido descargar el archivo. - </notification> - - <notification - - name="CannotWriteFile" - > -No se ha podido escribir el archivo [[FILE]] - </notification> - - <notification - - name="UnsupportedHardware" - > -Atención: su sistema no tiene los requerimientos mÃnimos que necesita Second Life. Si sigue usando Second Life, tendrá un funcionamiento pobre. Desafortunadamente, no podemos ofrecer soporte técnico para configuraciones inadecuadas del sistema. - -MINSPECS -Para más información, ¿quiere visitar [_URL]? - <url option="0" name="url"> - - http://secondlife.com/support/sysreqs.php?lang=es - </url> - <usetemplate - ignoretext="Cuando se detecte hardware no adecuado" - name="okcancelignore" - notext="No" - yestext="SÃ"/> - </notification> - - <notification - - name="UnknownGPU" - > -En este momento, desconocemos la tarjeta gráfica de su sistema. -Con frecuencia, esto se debe a hardware nuevo que no hemos podido revisar aún. -Es muy probable que Second Life funcione correctamente, pero deberá ajustar sus configuraciones gráficas a lo que sea más apropiado. -(Menú Editar > Preferencias > Gráficos). - <form name="form"> - <ignore name="ignore" - text="Cuando se detecte una tarjeta gráfica desconocida"/> - </form> - </notification> - - <notification - - name="DisplaySettingsNoShaders" - > -[SECOND_LIFE] se cayó al inicializar los drivers gráficos. -La calidad de los gráficos deberá establecerse en un nivel bajo para prevenir algunos errores frecuentes en los drivers. -Esto desactivará algunas opciones gráficas. -Le recomendamos que actualice los drivers de su tarjeta gráfica. -La calidad gráfica puede configurarse en Preferencias > Gráficos. - </notification> - - <notification - - name="RegionNoTerraforming" - > -En la región [REGION] no se permite modificar el terreno. - </notification> - - <notification - - name="CannotCopyWarning" - > -No tiene permiso para copiar este Ãtem. -Si lo da, lo perderá de su inventario. -¿Realmente quiere darlo? - <usetemplate - name="okcancelbuttons" - notext="No" - yestext="SÃ"/> - </notification> - - <notification - - name="CannotGiveItem" - > -No se ha podido dar el Ãtem del inventario. - </notification> - - <notification - - name="TransactionCancelled" - > -Transacción cancelada. - </notification> - - <notification - - name="TooManyItems" - > -En una única transferencia del inventario, no puede dar más de 42 Ãtems. - </notification> - - <notification - - name="NoItems" - > -No tiene permiso para transferir el Ãtem seleccionado. - </notification> - - <notification - - name="CannotCopyCountItems" - > -No tiene permiso para copiar [COUNT] de los -Ãtems seleccionados. Si los da, los perderá de su inventario. -¿Realmente quiere darlos? - <usetemplate - name="okcancelbuttons" - notext="No" - yestext="SÃ"/> - </notification> - - <notification - - name="CannotGiveCategory" - > -No tiene permiso para transferir -la carpeta seleccionada. - </notification> - - <notification - - name="FreezeAvatar" - > -¿Congelar a este avatar? -Temporalmente, será incapaz de moverse, usar el chat, o interactuar con el mundo. - <usetemplate - canceltext="Cancelar" - name="yesnocancelbuttons" - notext="Descongelarle" - yestext="Congelarle"/> - </notification> - - <notification - - name="FreezeAvatarFullname" - > -¿Congelar a [AVATAR_NAME]? -Temporalmente, será incapaz de moverse, usar el chat, o interactuar con el mundo. - <usetemplate - canceltext="Cancelar" - name="yesnocancelbuttons" - notext="Descongelarle" - yestext="Congelarle"/> - </notification> - - <notification - - name="EjectAvatarFullname" - > -¿Expulsar a [AVATAR_NAME] de su terreno? - <usetemplate - canceltext="Cancelar" - name="yesnocancelbuttons" - notext="Expulsar y Prohibir el acceso" - yestext="Expulsar"/> - </notification> - - <notification - - name="EjectAvatarNoBan" - > -¿Expulsar a este avatar de su terreno? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Expulsar"/> - </notification> - - <notification - - name="EjectAvatarFullnameNoBan" - > -¿Expulsar a [AVATAR_NAME] de su terreno? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Expulsar"/> - </notification> - - <notification - - name="AcquireErrorTooManyObjects" - > -ERROR 'ACQUIRE': Hay demasiados objetos seleccionados. - </notification> - - <notification - - name="AcquireErrorObjectSpan" - > -ERROR 'ACQUIRE': Los objetos están en más de una región. -Por favor, mueva todos los objetos a adquirir a la -misma región. - </notification> - - <notification - - name="PromptGoToCurrencyPage" - > -[EXTRA] - -¿Ir a [URL] para informarse sobre la compra de moneda? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="UnableToLinkObjects" - > -No se pudo enlazar estos [COUNT] objetos. -Puede enlazar [MAX] objetos como máximo. - </notification> - - <notification - - name="CannotLinkIncompleteSet" - > -Sólo puede enlazar objetos completos (no sus partes), y debe -seleccionar más de uno. - </notification> - - <notification - - name="CannotLinkModify" - > -Imposible enlazarlos, porque no tiene permiso para modificar -todos los objetos. - -Por favor, asegúrese de que no hay ninguno bloqueado, y de que es el propietario de todos. - </notification> - - <notification - - name="CannotLinkDifferentOwners" - > -Imposible enlazarlos, porque hay objetos de distintos propietarios. - -Por favor, asegúrese de que es propietario de todos los objetos seleccionados. - </notification> - - <notification - - name="NoFileExtension" - > -No hay extensión de archivo en: '[FILE]' - -Por favor, asegúrese de que la extensión del archivo es correcta. - </notification> - - <notification - - name="InvalidFileExtension" - > -Extensión inválida de archivo: [EXTENSION] -PodrÃa ser [VALIDS] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="CannotUploadSoundFile" - > -Ni se pudo abrir el archivo de sonido que se ha subido para leer: -[FILE] - </notification> - - <notification - - name="SoundFileNotRIFF" - > -No parece que el archivo sea un archivo RIFF WAVE: -[FILE] - </notification> - - <notification - - name="SoundFileNotPCM" - > -No parece que el archivo sea un archivo de audio PCM WAVE: -[FILE] - </notification> - - <notification - - name="SoundFileInvalidChannelCount" - > -El archivo no tiene un número de canales válido (debe ser mono o estéreo): -[FILE] - </notification> - - <notification - - name="SoundFileInvalidSampleRate" - > -No parece que el archivo tenga una frecuencia de muestreo (sample rate) adecuada (debe de ser 44.1k): -[FILE] - </notification> - - <notification - - name="SoundFileInvalidWordSize" - > -No parece que el archivo tenga un tamaño de palabra (word size) adecuado (debe de ser de 8 o 16 bites): -[FILE] - </notification> - - <notification - - name="SoundFileInvalidHeader" - > -No se encontró el fragmento 'data' en la cabecera del WAV: -[FILE] - </notification> - - <notification - - name="SoundFileInvalidTooLong" - > -El archivo de audio es demasiado largo (10 segundos como máximo): -[FILE] - </notification> - - <notification - - name="ProblemWithFile" - > -Problemas con el archivo [FILE]: - -[ERROR] - </notification> - - <notification - - name="CannotOpenTemporarySoundFile" - > -No se ha podido abrir para su escritura el archivo comprimido de sonido: [FILE] - </notification> - - <notification - - name="UnknownVorbisEncodeFailure" - > -Códec Vorbis desconocido, fallo en : [FILE] - </notification> - - <notification - - name="CorruptResourceFile" - > -Archivo con los recursos corruptos: [FILE] - </notification> - - <notification - - name="UnknownResourceFileVersion" - > -Versión de archivo desconocida para el recurso Linden en el archivo: [FILE] - </notification> - - <notification - - name="UnableToCreateOutputFile" - > -No se ha podido crear el archivo de salida: [FILE] - </notification> - - <notification - - name="DoNotSupportBulkAnimationUpload" - > -Actualmente, no ofrecemos la posibilidad de subida masiva de archivos de animación. - </notification> - - <notification - - name="CannotUploadReason" - > -No se ha podido subir [FILE] por la siguiente razón: [REASON] -Por favor, inténtelo más tarde. - </notification> - - <notification - - name="CannotCreateLandmarkNotOwner" - > -No puede crear un hito aquà porque el propietario del terreno no lo permite. - </notification> - - <notification - - name="CannotRecompileSelectObjectsNoScripts" - > -No se pudo 'recompilar'. -Seleccione un objeto con script. - </notification> - - <notification - - name="CannotRecompileSelectObjectsNoPermission" - > -No se pudo 'recompilar'. - -Seleccione objetos con scripts en los que usted tenga permiso para modificarlos. - </notification> - - <notification - - name="CannotResetSelectObjectsNoScripts" - > -No se pudo 'reiniciar'. - -Seleccione objetos con scripts. - </notification> - - <notification - - name="CannotResetSelectObjectsNoPermission" - > -No se pudo 'reiniciar'. - -Seleccione objetos con scripts en los que usted tenga permiso para modificarlos. - </notification> - - <notification - - name="CannotSetRunningSelectObjectsNoScripts" - > -No se puede configurar ningún script como 'ejecutándose'. - -Seleccione objetos con scripts. - </notification> - - <notification - - name="CannotSetRunningNotSelectObjectsNoScripts" - > -No se puede configurar ningún script como 'no ejecutándose'. - -Seleccione objetos con scripts. - </notification> - - <notification - - name="NoFrontmostFloater" - > -No hay nada a guardar. - </notification> - - <notification - - name="SeachFilteredOnShortWords" - > -Se ha modificado su búsqueda, -eliminando las palabras demasiado cortas. - -Buscando: [FINALQUERY] - </notification> - - <notification - - name="SeachFilteredOnShortWordsEmpty" - > -Los términos de su búsqueda son muy cortos, -por lo que no se ha hecho la búsqueda. - </notification> - - <notification - - name="CouldNotTeleportReason" - > -No se ha podido teleportar. -[REASON] - </notification> - - <notification - - name="CannotSetLandOwnerNothingSelected" - > -No se ha podido configurar el propietario del terreno: -no se ha seleccionado una parcela. - </notification> - - <notification - - name="CannotSetLandOwnerMultipleRegions" - > -No se ha podido obtener la propiedad del terreno porque la selección se extiende por varias regiones. Por favor, seleccione un área más pequeña y reinténtelo. - </notification> - - <notification - - name="ForceOwnerAuctionWarning" - > -Está parcela está siendo subastada. Forzar su propiedad cancelará la subasta y, probablemente, disguste a algunos residentes que ya hayan empezado a pujar. ¿Forzar la propiedad? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="CannotContentifyNothingSelected" - > -No se ha podido 'contentify': -no se ha seleccionado una parcela. - </notification> - - <notification - - name="CannotContentifyNoRegion" - > -No se ha podido 'contentify': -no se ha seleccionado una región. - </notification> - - <notification - - name="CannotReleaseLandNothingSelected" - > -No se ha podido abandonar el terreno: -no se ha seleccionado una parcela. - </notification> - - <notification - - name="CannotReleaseLandNoRegion" - > -No se ha podido abandonar el terreno: -no se ha podido encontrar la región. - </notification> - - <notification - - name="CannotBuyLandNothingSelected" - > -Imposible comprar terreno: -no se ha seleccionado una parcela. - </notification> - - <notification - - name="CannotBuyLandNoRegion" - > -Imposible comprar terreno: -no se ha podido encontrar en qué región está. - </notification> - - <notification - - name="CannotCloseFloaterBuyLand" - > -No puede cerrar la ventana de Comprar terreno hasta que Second Life calcule el precio de esta transacción. - </notification> - - <notification - - name="CannotDeedLandNothingSelected" - > -No se ha podido transferir el terreno: -no se ha seleccionado una parcela. - </notification> - - <notification - - name="CannotDeedLandNoGroup" - > -No se ha podido transferir el terreno: -no ha seleccionado un grupo. - </notification> - - <notification - - name="CannotDeedLandNoRegion" - > -No se ha podido transferir el terreno: -Ha sido imposible encontrar en qué región está. -Por favor, para informar de esto use Herramientas -> Informar de un fallo. - </notification> - - <notification - - name="CannotDeedLandMultipleSelected" - > -No se ha podido transferir el terreno: -ha seleccionado varias parcelas. - -Inténtelo seleccionando sólo una. - </notification> - - <notification - - name="ParcelCanPlayMedia" - > -Esta localización puede mostrar media en streaming. -Los media en streaming necesitan una conexión a internet rápida. - -Si hay media, ¿reproducirlos en streaming? -(Puede cambiar más adelante esta opción en Preferencias > Audio y VÃdeo). - <usetemplate - name="okcancelbuttons" - notext="Desactivar" - yestext="Ejecutar los media"/> - </notification> - - <notification - - name="CannotDeedLandWaitingForServer" - > -No se ha podido transferir el terreno: -esperando que el servidor informe acerca de la propiedad. - -Por favor, vuelva a intentarlo. - </notification> - - <notification - - name="CannotDeedLandNoTransfer" - > -No se ha podido transferir el terreno: -En la región [REGION] no se permite transferir terrenos. - </notification> - - <notification - - name="CannotReleaseLandWatingForServer" - > -No se ha podido abandonar el terreno: -esperando que el servidor actualice la información de la parcela. - -Vuelva a intentarlo en unos segundos. - </notification> - - <notification - - name="CannotReleaseLandSelected" - > -No se ha podido abandonar el terreno: -no es propietario de todas las parcelas seleccionadas. - -Por favor, seleccione una sola parcela. - </notification> - - <notification - - name="CannotReleaseLandDontOwn" - > -No se ha podido abandonar el terreno: -no tiene permisos sobre esta parcela. -Las parcelas de su propiedad se muestran en verde. - </notification> - - <notification - - name="CannotReleaseLandRegionNotFound" - > -No se ha podido abandonar el terreno: -Ha sido imposible encontrar en qué región está. - -Por favor, para informar de esto use Herramientas > Informar de un fallo. - </notification> - - <notification - - name="CannotReleaseLandNoTransfer" - > -No se ha podido abandonar el terreno: -En la región [REGION] no se permite transferir terrenos. - </notification> - - <notification - - name="CannotReleaseLandPartialSelection" - > -No se ha podido abandonar el terreno: -debe seleccionar toda la parcela. - -Seleccione una parcela completa, o divÃdala primero. - </notification> - - <notification - - name="ReleaseLandWarning" - > -Va a abandonar [AREA] m² de terreno. -Al hacerlo, la quitará de entre sus posesiones de terreno, pero no recibirá ningún L$. - -¿Abandonar este terreno? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="CannotDivideLandNothingSelected" - > -No se ha podido dividir el terreno: - -No ha seleccionado ninguna parcela. - </notification> - - <notification - - name="CannotDivideLandPartialSelection" - > -No se ha podido dividir el terreno: - -Ha seleccionado una parcela entera. -Inténtelo seleccionando una parte. - </notification> - - <notification - - name="LandDivideWarning" - > -Dividir este terreno lo separará en dos parcelas, cada una de las cuales tendrá su propia configuración. Tras esta operación, algunas configuraciones volverán a las existentes por defecto. - -¿Dividir el terreno? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="CannotDivideLandNoRegion" - > -No se ha podido dividir el terreno: -Ha sido imposible encontrar en qué región está. - -Por favor, para informar de esto use Herramientas -> Informar de un fallo. - </notification> - - <notification - - name="CannotJoinLandNoRegion" - > -No se ha podido unir el terreno: -Ha sido imposible encontrar en qué región está. - -Por favor, para informar de esto use Herramientas -> Informar de un fallo. - </notification> - - <notification - - name="CannotJoinLandNothingSelected" - > -No se ha podido unir el terreno: -No hay parcelas seleccionadas. - </notification> - - <notification - - name="CannotJoinLandEntireParcelSelected" - > -No se ha podido unir el terreno: -Sólo ha seleccionado una parcela. - -Seleccione terreno que incluya algo de ambas parcelas. - </notification> - - <notification - - name="CannotJoinLandSelection" - > -No se ha podido unir el terreno: -Debe seleccionar más de una parcela. - -Seleccione terreno que incluya algo de ambas parcelas. - </notification> - - <notification - - name="JoinLandWarning" - > -Al unir este terreno creará una parcela más grande formada por todas aquellas que tengan parte en el rectángulo seleccionado. -Deberá reconfigurar el nombre y las opciones de la nueva parcela. - -¿Unir el terreno? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmNotecardSave" - > -Esta nota debe guardarse antes de que se la pueda copiar o ver. ¿Guardar la nota? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmItemCopy" - > -¿Copiar este Ãtem a su inventario? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Copiar"/> - </notification> - - <notification - - name="ResolutionSwitchFail" - > -Fallo al cambiar la resolución a [RESX] por [RESY] - </notification> - - <notification - - name="ErrorUndefinedGrasses" - > -Error, hierbas no definidas: [SPECIES] - </notification> - - <notification - - name="ErrorUndefinedTrees" - > -Error, árboles no definidos: [SPECIES] - </notification> - - <notification - - name="CannotSaveWearableOutOfSpace" - > -No se ha podido guardar el archivo '[NAME]'. Tendrá que liberar algo de espacio en su ordenador y guardarlo de nuevo. - </notification> - - <notification - - name="CannotSaveToAssetStore" - > -No se ha podido guardar [NAME] en la base central de almacenamiento. -Esto es, generalmente, un fallo temporal. Por favor, reinténtelo en unos pocos minutos. - -Si persiste el problema, por favor, pulse en en el menú 'Herramientas > Informar de un fallo' y aporte detalles sobre la configuración de su conexión. - </notification> - - <notification - - name="YouHaveBeenLoggedOut" - > -Se ha cerrado su sesión en [SECOND_LIFE]: - [MESSAGE] -Aún puede ver el chat y los MI existentes pulsando 'Ver MI y Chat'. Si no, pulse 'Salir' para dejar inmediatemente [SECOND_LIFE]. - <usetemplate - name="okcancelbuttons" - notext="Salir" - yestext="Ver MI y Chat"/> - </notification> - - <notification - - name="OnlyOfficerCanBuyLand" - > -No se ha podido comprar terreno para el grupo: -usted no tiene el permiso de comprar terreno para el grupo que tiene activado actualmente. - </notification> - - <notification - - label="Añadir como amigo" - name="AddFriend" - > -Los amigos pueden darse permiso para localizarse en el mapa y para saber si el otro está conectado. - -¿Ofrecer a [NAME] que sea su amigo? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - label="Añadir como amigo" - name="AddFriendWithMessage" - > -Los amigos pueden darse permiso para localizarse en el mapa y para saber si el otro está conectado. - -¿Ofrecer a [NAME] que sea su amigo? - <form name="form"> - <input name="message" type="text"> -¿Quieres formar parte de mis amigos? - </input> - <button - - - name="Offer" - text="OK"/> - <button - - name="Cancel" - text="Cancelar"/> - </form> - </notification> - - <notification - - name="RemoveFromFriends" - > -¿Quiere quitar a [FIRST_NAME] [LAST_NAME] de su lista de amigos? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="RemoveMultipleFromFriends" - > -¿Quiere quitar a varios amigos de su lista de amigos? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="GodDeleteAllScriptedPublicObjectsByUser" - > -¿Está seguro de que quiere borrar todos los objetos con script que sean propiedad de -** [AVATAR_NAME] ** -en todos los otros terrenos de este sim? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="GodDeleteAllScriptedObjectsByUser" - > -¿Está seguro de que quiere BORRAR TODOS los objetos con script que sean propiedad de -** [AVATAR_NAME] ** -en TODO EL TERRENO de este sim? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="GodDeleteAllObjectsByUser" - > -¿Está seguro de que quiere BORRAR TODOS los objetos (con script o no) que sean propiedad de -** [AVATAR_NAME] ** -en TODO EL TERRENO de este sim? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="BlankClassifiedName" - > -Debe especificar un nombre para su clasificado. - </notification> - - <notification - - name="MinClassifiedPrice" - > -El pago para aparecer en la lista debe ser de, al menos, [MIN_PRICE] L$. - -Por favor, elija un pago mayor. - </notification> - - <notification - - name="ConfirmObjectDeleteLock" - > -Al menos uno de los Ãtems que ha seleccionado está bloqueado. - -¿Está seguro de que quiere borrar estos Ãtems? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectDeleteNoCopy" - > -Al menos uno de los Ãtems que ha seleccionado no es copiable. - -¿Está seguro de que quiere borrar estos Ãtems? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectDeleteNoOwn" - > -No es el propietario de, al menos, uno de los Ãtems que ha seleccionado. - -¿Está seguro de que quiere borrar estos Ãtems? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectDeleteLockNoCopy" - > -Al menos un objeto está bloqueado. -Al menos un objeto no es copiable. - -¿Está seguro de que quiere borrar estos Ãtems? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectDeleteLockNoOwn" - > -Al menos un objeto está bloqueado. -No es propietario de, al menos, un objeto. - -¿Está seguro de que quiere borrar estos Ãtems? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectDeleteNoCopyNoOwn" - > -Al menos un objeto no es copiable. -No es propietario de, al menos, un objeto. - -¿Está seguro de que quiere borrar estos Ãtems? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectDeleteLockNoCopyNoOwn" - > -Al menos un objeto está bloqueado. -Al menos un objeto no es copiable. -No es propietario de, al menos, un objeto. - -¿Está seguro de que quiere borrar estos Ãtems? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectTakeLock" - > -Al menos un objeto está bloqueado. - -¿Está seguro de que quiere tomar estos Ãtems? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectTakeNoOwn" - > -No es el propietario de todos los objetos que está tomando. -Si sigue, se aplicarán los permisos marcados para el próximo propietario, y es posible que se restrinja su posibilidad de hacer modificaciones o copias. - -¿Está seguro de que quiere tomar estos Ãtems? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectTakeLockNoOwn" - > -Al menos un objeto está bloqueado. -No es el propietario de todos los objetos que está tomando. -Si sigue, se aplicarán los permisos marcados para el próximo propietario, y es posible que se restrinja su posibilidad de hacer modificaciones o copias -Con todo, puede tomar lo actualmente seleccionado. - -¿Está seguro de que quiere tomar estos Ãtems? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="CantBuyLandAcrossMultipleRegions" - > -No se ha podido hacer la compra porque el terreno seleccionado se extiende por varias regiones. - -Por favor, seleccione un área más pequeña y reinténtelo. - </notification> - - <notification - - name="DeedLandToGroup" - > -Al transferir esta parcela, se requerirá al grupo que tenga y mantenga el crédito suficiente para uso de terreno. -El precio de compra de la parcela no se reembolsa al propietario. -Si se vende una parcela transferida, el precio de venta se dividirá a partes iguales entre los miembros del grupo. - -¿Transferir estos [AREA] m² de terreno al grupo -'[GROUP_NAME]'? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="DeedLandToGroupWithContribution" - > -Al transferir esta parcela, se requerirá al grupo que tenga y mantenga el crédito suficiente para uso de terreno. -La tranferencia incluirá, a la vez, una contribucÃon de terreno al grupo de '[FIRST_NAME] [LAST_NAME]'. -El precio de compra de la parcela no se reembolsa al propietario. -Si se vende una parcela transferida, el precio de venta se dividirá a partes iguales entre los miembros del grupo. - -¿Transferir estos [AREA] m² de terreno al grupo '[GROUP_NAME]'? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="DisplaySetToSafe" - > -Las configuraciones que se muestran se han fijado en los niveles guardados, pues usted especificó la opción de guardarlos. - </notification> - - <notification - - name="DisplaySetToRecommended" - > -Las configuraciones que se muestran se han fijado en los niveles recomendados para la configuración de su sistema. - </notification> - - <notification - - name="ErrorMessage" - > -[ERROR_MESSAGE] - </notification> - - <notification - - name="AvatarMoved" - > -Su localización [TYPE] no está disponible en estos momentos. [HELP] -Ha sido llevado a una región cercana. - </notification> - - <notification - - name="ClothingLoading" - > -Aún está descargándose su ropa. -Puede usar normalmente [SECOND_LIFE], los demás residentes le verán correctamente. - <form name="form"> - <ignore name="ignore" - text="Cuando está llevando mucho tiempo descargar la ropa"/> - </form> - </notification> - - <notification - - name="FirstRun" - > -Se ha completado la instalación de [SECOND_LIFE]. - -Si esta es la primera vez que usa [SECOND_LIFE], deberá crear una cuenta antes de que pueda iniciar una sesión. -¿Volver a www.secondlife.com para crear una cuenta nueva? - <usetemplate - name="okcancelbuttons" - notext="Continuar" - yestext="Cuenta nueva..."/> - </notification> - - <notification - - name="LoginPacketNeverReceived" - > -Tenemos problemas de conexión. Puede deberse a un problema de su conexión a internet o de los servidores de Second Life. - -Puede revisar su conexión a internet y volver a intentarlo en unos minutos. Pulse Ayuda para conectarse a nuestro sitio de Sporte, o pulse Teleportar para intentar teleportarse a su Base. - <form name="form"> - <button - - - name="OK" - text="OK"/> - <button - - name="Help" - text="Ayuda"/> - <button - - name="Teleport" - text="Teleportar"/> - </form> - </notification> - - <notification - - name="WelcomeChooseSex" - > -Su personaje aparecerá en un momento. - -Para caminar, use las teclas del cursor. -En cualquier momento, puede pulsar la tecla F1 para conseguir ayuda o para aprender más acerca de [SECOND_LIFE]. -Por favor, elija el avatar masculino o femenino. -Puede cambiar más adelante su elección. - <usetemplate - name="okcancelbuttons" - notext="Mujer" - yestext="Varón"/> - </notification> - - <notification - - name="NotEnoughCurrency" - > -[NAME] cuesta [PRICE] L$. No tiene suficientes L$ para hacer eso. - </notification> - - <notification - - name="GrantedModifyRights" - > -Se le ha concedido el privilegio de modificar los objetos de [FIRST_NAME] [LAST_NAME]. - </notification> - - <notification - - name="RevokedModifyRights" - > -Ha sido revocado su privilegio de modificar los objetos de [FIRST_NAME] [LAST_NAME]. - </notification> - - <notification - - name="FlushMapVisibilityCaches" - > -Esto limpiará las caches del mapa en esta región. -Esto sólo es realmente útil para cuestiones de depuración ('debugging'). -(A efectos prácticos, espere 5 minutos, y el mapa de cualquiera se actualizará después de que reinicie sesión). - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="OnlyCopyContentsOfSingleItem" - > -No se puede copiar a la vez los contenidos de más de un objeto. -Por favor, selección sólo uno y reinténtelo. - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="KickUsersFromRegion" - > -¿Teleportar a su base a todos los residentes en esta región? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="EstateObjectReturn" - > -¿Está seguro de que quiere devolver los objetos propiedad de -[USER_NAME] ? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="InvalidTerrainBitDepth" - > -No se han podido configurar las texturas de la región: -La textura del terreno [TEXTURE_NUM] tiene una profundidad de bites inválida: [TEXTURE_BIT_DEPTH]. - -Cambie la textura [TEXTURE_NUM] por una imagen de 24-bit y 512x512 o menor, y pulse de nuevo "Aplicar" . - </notification> - - <notification - - name="InvalidTerrainSize" - > -No se han podido configurar las texturas de la región: -La textura del terreno [TEXTURE_NUM] es demasiado grande: [TEXTURE_SIZE_X]x[TEXTURE_SIZE_Y]. - -Cambie la textura [TEXTURE_NUM] por una imagen de 24-bit y 512x512 o menor, y pulse de nuevo "Aplicar" . - </notification> - - <notification - - name="RawUploadStarted" - > -Ha empezado la subida. Dependiendo de la velocidad de su conexión, llevará unos dos minutos. - </notification> - - <notification - - name="ConfirmBakeTerrain" - > -¿Realmente quiere predeterminar el terreno actual, haciéndolo el centro de los limites para elevarlo y rebajarlo, y el terreno por defecto para la herramienta 'Revertir'? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="MaxAllowedAgentOnRegion" - > -Sólo puede tener [MAX_AGENTS] residentes autorizados. - </notification> - - <notification - - name="MaxBannedAgentsOnRegion" - > -Sólo puede tener [MAX_BANNED] residentes no admitidos. - </notification> - - <notification - - name="MaxAgentOnRegionBatch" - > -Fallo al intentar añadir [NUM_ADDED] agentes: -Se superan en [NUM_EXCESS] los [MAX_AGENTS] permitidos en [LIST_TYPE]. - </notification> - - <notification - - name="MaxAllowedGroupsOnRegion" - > -Sólo puede tener [MAX_GROUPS] grupos permitidos. - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Predeterminar"/> - </notification> - - <notification - - name="MaxManagersOnRegion" - > -Sólo puede tener [MAX_MANAGER] administradores del estado. - </notification> - - <notification - - name="OwnerCanNotBeDenied" - > -No se puede añadir a la lista de residentes no admitidos al propietario del estado. - </notification> - - <notification - - name="CanNotChangeAppearanceUntilLoaded" - > -No puede cambiar la apariencia hasta que no se carguen la ropa y la forma. - </notification> - - <notification - - name="ClassifiedMustBeAlphanumeric" - > -El nombre de su anuncio clasificado debe empezar o con un número o con una letra de la A a la Z. No se permiten signos de puntuación. - </notification> - - <notification - - name="CantSetBuyObject" - > -No puede configurar el Comprar el objeto, porque éste no está en venta. -Por favor, ponga en venta el objeto y reinténtelo. - </notification> - - <notification - - name="FinishedRawDownload" - > -Acabada la descarga del archivo raw de terreno en: -[DOWNLOAD_PATH]. - </notification> - - <notification - - name="DownloadWindowsMandatory" - > -Está disponible una versión nueva de [SECOND_LIFE]. -[MESSAGE] -Debe descargar esta actualización para usar [SECOND_LIFE]. - <usetemplate - name="okcancelbuttons" - notext="Salir" - yestext="Descargarla"/> - </notification> - - <notification - - name="DownloadWindows" - > -Está disponible una versión actualizada de [SECOND_LIFE]. -[MESSAGE] -Esta actualización no es obligatoria, pero le sugerimos instalarla para mejorar el rendimiento y la estabilidad. - <usetemplate - name="okcancelbuttons" - notext="Continuar" - yestext="Descargarla"/> - </notification> - - <notification - - name="DownloadWindowsReleaseForDownload" - > -Está disponible una versión actualizada de [SECOND_LIFE]. -[MESSAGE] -Esta actualización no es obligatoria, pero le sugerimos instalarla para mejorar el rendimiento y la estabilidad. - <usetemplate - name="okcancelbuttons" - notext="Continuar" - yestext="Descargarla"/> - </notification> - - <notification - - name="DownloadMacMandatory" - > -Está disponible una versión nueva de [SECOND_LIFE]. -[MESSAGE] -Debe descargar esta actualización para usar [SECOND_LIFE]. - -¿Descargarla a su carpeta de aplicaciones? - <usetemplate - name="okcancelbuttons" - notext="Salir" - yestext="Descargarla"/> - </notification> - - <notification - - name="DownloadMac" - > -Está disponible una versión actualizada de [SECOND_LIFE]. -[MESSAGE] -Esta actualización no es obligatoria, pero le sugerimos instalarla para mejorar el rendimiento y la estabilidad. - -¿Descargarla a su carpeta de aplicaciones? - <usetemplate - name="okcancelbuttons" - notext="Continuar" - yestext="Descargarla"/> - </notification> - - <notification - - name="DownloadMacReleaseForDownload" - > -Está disponible una versión actualizada de [SECOND_LIFE]. -[MESSAGE] -Esta actualización no es obligatoria, pero le sugerimos instalarla para mejorar el rendimiento y la estabilidad. - -¿Descargarla a su carpeta de aplicaciones? - <usetemplate - name="okcancelbuttons" - notext="Continuar" - yestext="Descargarla"/> - </notification> - - <notification - - name="DeedObjectToGroup" - > -Transferir este objeto al grupo hará que: -* Reciba los L$ pagados en el objeto - <usetemplate - ignoretext="Cuando se transfieren objetos a los grupos" - name="okcancelignore" - notext="Cancelar" - yestext="Transferir"/> - </notification> - - <notification - - name="WebLaunchExternalTarget" - > -¿Abrir el navegador de su sistema para ver este contenido? - <usetemplate - ignoretext="Cuando se abra el navegador de su sistema para ver una página web" - name="okcancelignore" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchJoinNow" - > -¿Ir a www.secondlife.com para administrar su cuenta? - <usetemplate - ignoretext="Cuando se abra el navegador para administrar su cuenta" - name="okcancelignore" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchBugReport101" - > -Visite el wiki de [SECOND_LIFE] y aprenda cómo informar correctamente de fallos. - <usetemplate - ignoretext="Cuando se abra el navegador para ver el wiki de Informes de fallos - instrucciones" - name="okcancelignore" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchSecurityIssues" - > -Visite el wiki de [SECOND_LIFE] para más detalles sobre cómo informar de una cuestión de seguridad. - <usetemplate - ignoretext="Cuando se abra el navegador para ver el wiki de cuestiones de seguridad" - name="okcancelignore" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchQAWiki" - > -Visite el wiki QA de [SECOND_LIFE]. - <usetemplate - ignoretext="Cuando se abra el navegador para ver el wiki QA" - name="okcancelignore" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchPublicIssue" - > -Visite el Public Issue Tracker (sistema público de seguimiento de incidencias) de [SECOND_LIFE], donde podrá informar de errores y otros asuntos. - <usetemplate - ignoretext="Cuando se abra el navegador para ver el Public Issue Tracker" - name="okcancelignore" - notext="Cancelar" - yestext="Ir a la página"/> - </notification> - - <notification - - name="WebLaunchPublicIssueHelp" - > -Visite el wiki de [SECOND_LIFE] para informarse de cómo usar el Public Issue Tracker (sistema público de seguimiento de incidencias). - <usetemplate - ignoretext="Cuando se abra el navegador para ver el wiki del Public Issue Tracker" - name="okcancelignore" - notext="Cancelar" - yestext="Ir a la página"/> - </notification> - - <notification - - name="WebLaunchSupportWiki" - > -Para ver las últimas noticias e informaciones, ¿ir la Blog oficial? - <usetemplate - ignoretext="Cuando se abra el navegador para ver el blog" - name="okcancelignore" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchLSLGuide" - > -¿Ir a la GuÃa de programación para encontrar ayuda? - <usetemplate - ignoretext="Cuando se abra el navegador para ver la GuÃa de programación" - name="okcancelignore" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchLSLWiki" - > -¿Ir al portal de LSL para encontrar ayuda sobre programación? - <usetemplate - ignoretext="Cuando se abra el navegador para ver el portal de programación" - name="okcancelignore" - notext="Cancelar" - yestext="Ir a la página"/> - </notification> - - <notification - - name="ReturnToOwner" - > -¿Está seguro de que quiere devolver los objetos seleccionados a sus propietarios? Los objetos transferibles que se hayan cedido volverán a sus propietarios anteriores. - -*ATENCIÓN* ¡Serán borrados los objetos no transferibles que estén cedidos! - <usetemplate - ignoretext="Cuando se devuelvan los objetos a sus propietarios" - name="okcancelignore" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="GroupLeaveConfirmMember" - > -Actualmente, usted es miembro del grupo [GROUP]. -¿Dejar el grupo? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmKick" - > -¿DE VERDAD quiere expulsar a todos los usuarios de este grid? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Expulsar a todos los usuarios"/> - </notification> - - <notification - - name="MuteLinden" - > -Perdón, pero no puede ignorar a un Linden. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - label="Fallo al ignorar un objeto según el nombre" - name="MuteByNameFailed" - > -Ya ha ignorado ese nombre. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="RemoveItemWarn" - > -Aunque esté permitido, borrar contenidos puede dañar el objeto. -¿Quiere borrar ese Ãtem? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="CantOfferCallingCard" - > -En este momento, no se puede ofrecer una tarjeta de visita. Por favor, reinténtelo en un momento. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="CantOfferFriendship" - > -En este momento, no se puede ofrecer el ser amigo. Por favor, reinténtelo en un momento. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="BusyModeSet" - > -Pasar al modo ocupado. -Se ocultará el chat y los mensajes instantáneos. Los mensajes instantáneos recibirán su Respuesta en el modo ocupado. Todos los ofrecimientos de teleporte serán rehusados. Todas las ofertas de inventario irán a su Papelera. - <usetemplate - ignoretext="Cuando se pasa al modo ocupado" - name="okignore" - yestext="OK"/> - </notification> - - <notification - - name="JoinedTooManyGroupsMember" - > -Pertenece a demasiados grupos para poder entrar en otro. Por favor, salga de al menos uno antes de entrar en éste, o rehúse la oferta. Para salir de un grupo, seleccione la opción 'Grupos...' en el menú 'Editar'. -[NAME] le ha invitado a ser miembro de un grupo. -[INVITE] - <usetemplate - name="okcancelbuttons" - notext="Rehusar" - yestext="Entrar"/> - </notification> - - <notification - - name="KickUser" - > -¿Con qué mensaje se expulsará a este usuario? - <form name="form"> - <input name="message" type="text"> -Un administrador le ha desconectado. - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Cancelar"/> - </form> - </notification> - - <notification - - name="KickAllUsers" - > -¿Con qué mensaje se expulsará a cualquiera que esté actualmente en el grid? - <form name="form"> - <input name="message" type="text"> -Un administrador le ha desconectado. - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Cancelar"/> - </form> - </notification> - - <notification - - name="FreezeUser" - > -¿Con qué mensaje se congelará a este usuario? - <form name="form"> - <input name="message" type="text"> -Ha sido usted congelado. No puede moverse o escribir en el chat. Un administrador contactará con usted a través de un mensaje instantáneo (MI). - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Cancelar"/> - </form> - </notification> - - <notification - - name="UnFreezeUser" - > -¿Con qué mensaje se descongelará a este usuario? - <form name="form"> - <input name="message" type="text"> -Ya no está usted congelado. - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Cancelar"/> - </form> - </notification> - - <notification - - name="OfferTeleport" - > -¿Ofrecer teleporte a su posición con este mensaje? - <form name="form"> - <input name="message" type="text"> -Ven conmigo a [REGION] - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Cancelar"/> - </form> - </notification> - - <notification - - name="OfferTeleportFromGod" - > -¿Convocar a este usuario a su posición? - <form name="form"> - <input name="message" type="text"> -Ven conmigo a [REGION] - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Cancelar"/> - </form> - </notification> - - <notification - - name="TeleportFromLandmark" - > -¿Está seguro de que quiere teleportarse? - <usetemplate - ignoretext="Cuando está teleportando desde un hito del inventario" - name="okcancelignore" - notext="Cancelar" - yestext="Teleportar"/> - </notification> - - <notification - - label="Mensaje a todo el estado" - name="MessageEstate" - > -Escriba un anuncio breve que se enviará a todo el que esté en su estado. - <form name="form"> - <input name="message" type="text"/> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Cancelar"/> - </form> - </notification> - - <notification - - label="Cambiar un estado Linden" - name="ChangeLindenEstate" - > -Va a hacer cambios en un estado propiedad de Linden (mainland, grid teen, orientación, etc.). - -Esto es EXTREMADAMENTE PELIGROSO, porque puede afectar radicalmente al funcionamiento de los usuarios. En mainland, se cambiarán miles de regiones, y se provocará un colapso en el espacio del servidor. - -¿Proceder? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - label="Cambiar el acceso a un estado Linden" - name="ChangeLindenAccess" - > -Va a cambiar la lista de acceso de un estado propiedad de Linden (mainland, grid teen, orientación, etc.). - -Esto es PELIGROSO, y sólo debe hacerse para deshacerse de ataques que permitan sacar o meter en el grid objetos o L$. -Se cambiarán miles de regiones, y se provocará un colapso en el espacio del servidor. - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - label="Seleccionar el estado" - name="EstateAllowedAgentAdd" - > -¿Añadir a la lista de permitidos sólo para este estado o para [ALL_ESTATES]? - <usetemplate - canceltext="Cancelar" - name="yesnocancelbuttons" - notext="Todos los estados" - yestext="Este estado"/> - </notification> - - <notification - - label="Seleccionar el estado" - name="EstateAllowedAgentRemove" - > -¿Quitar de la lista de permitidos sólo para este estado o para [ALL_ESTATES]? - <usetemplate - canceltext="Cancelar" - name="yesnocancelbuttons" - notext="Todos los estados" - yestext="Este estado"/> - </notification> - - <notification - - label="Seleccionar el estado" - name="EstateAllowedGroupAdd" - > -¿Añadir a la lista de grupos permitidos sólo para este estado o para [ALL_ESTATES]? - <usetemplate - canceltext="Cancelar" - name="yesnocancelbuttons" - notext="Todos los estados" - yestext="Este estado"/> - </notification> - - <notification - - label="Seleccionar el estado" - name="EstateAllowedGroupRemove" - > -¿Quitar de la lista de grupos permitidos sólo para este estado o para [ALL_ESTATES]? - <usetemplate - canceltext="Cancelar" - name="yesnocancelbuttons" - notext="Todos los estados" - yestext="Este estado"/> - </notification> - - <notification - - label="Seleccionar el estado" - name="EstateBannedAgentAdd" - > -¿Denegar el acceso sólo a este estado o a [ALL_ESTATES]? - <usetemplate - canceltext="Cancelar" - name="yesnocancelbuttons" - notext="Todos los estados" - yestext="Este estado"/> - </notification> - - <notification - - label="Seleccionar el estado" - name="EstateBannedAgentRemove" - > -¿Quitar de la lista de prohibición de acceso a este residente para que acceda sólo a este estado o a [ALL_ESTATES]? - <usetemplate - canceltext="Cancelar" - name="yesnocancelbuttons" - notext="Todos los estados" - yestext="Este estado"/> - </notification> - - <notification - - label="Seleccionar el estado" - name="EstateManagerAdd" - > -¿Añadir al administrador del estado sólo para este estado o para [ALL_ESTATES]? - <usetemplate - canceltext="Cancelar" - name="yesnocancelbuttons" - notext="Todos los estados" - yestext="Este estado"/> - </notification> - - <notification - - label="Seleccionar el estado" - name="EstateManagerRemove" - > -¿Remover al administrador del estado sólo para este estado o para [ALL_ESTATES]? - <usetemplate - canceltext="Cancelar" - name="yesnocancelbuttons" - notext="Todos los estados" - yestext="Este estado"/> - </notification> - - <notification - - label="Confirmar la expulsión" - name="EstateKickUser" - > -¿Echar a [EVIL_USER] de este estado? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="EstateChangeCovenant" - > -¿Está seguro de que quiere cambiar el contrato del estado? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="ProblemImportingEstateCovenant" - > -Hay problemas al importar el contrato del estado. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="ProblemAddingEstateManager" - > -Hay problemas al añadir un administrador nuevo del estado. Uno o más estados deben de tener llena la lista de administradores. - </notification> - - <notification - - name="ProblemAddingEstateGeneric" - > -Hay problemas en este añadir a la lista del estado. Uno o más estados deben de tener llena la lista. - </notification> - - <notification - - name="UnableToLoadNotecard" - > -En este momento no se puede cargar la nota. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="NotAllowedToViewNotecard" - > -Permisos insuficientes para ver la nota asociada a la ID solicitada. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="MissingNotecardAssetID" - > -Se ha perdido en la base de datos la ID de la nota. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="PublishClassified" - > -Recuerde: las cuotas que se pagan por los clasificados no son reembolsables. - -¿Publicar ahora este anuncio por [AMOUNT] L$? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - - - <notification - - label="Confirmar el reinicio" - name="ConfirmRestart" - > -¿Verdaderamente quiere reiniciar la región de aquà a 2 minutos? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - label="Mensaje a toda la región" - name="MessageRegion" - > -Escriba un anuncio breve que se enviará a todo el que esté en esta región. - <form name="form"> - <input name="message" type="text"/> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Cancelar"/> - </form> - </notification> - - <notification - - label="No permitir modificar el terreno" - name="HelpRegionBlockTerraform" - > -Si se marca está casilla, los propietarios de terreno no podrán modificarlo, independientemente de lo que esté configurado en cada parcela. - -Por defecto: off - </notification> - - <notification - - label="Prohibir volar" - name="HelpRegionBlockFly" - > -Si se marca esta casilla, estará prohibido volar en la región, independientemente de lo que esté configurado en cada parcela. - -Por defecto: off - </notification> - - <notification - - label="Permitir el daño" - name="HelpRegionAllowDamage" - > -Si se marca la casilla, el sistema de 'vida' afecta a todas las parcelas independientemente de lo que tenga marcado cada una. -Si la casilla no está marcada, el propietario de cada parcela podrá decidir si activa en ella el sistema de 'vida'. - -Por defecto: off - </notification> - - <notification - - label="Nº máximo de avatares" - name="HelpRegionAgentLimit" - > -Configura el número máximo de avatares que se permite en esta región. -El funcionamiento puede variar según el número de avatares que estén presentes. - -Por defecto: 40 - </notification> - - <notification - - label="Plus de objetos" - name="HelpRegionObjectBonus" - > -El plus de objetos es un multiplicador de los prims permitidos en cualquier parcela. -El rango permitido es de 1 a 10. Fijándolo en '1', se permiten 117 objetos en cada parcela de 512 m². Fijándolo en '2', se permiten 234 (el doble), y asà sucesivamente. El número máximo de objetos permitidos en una región sigue siendo de 15.000, sea cual sea el plus. -Una vez establecido, tenga en cuenta que reducir el plus de objetos puede causar que se devuelvan o borren objetos. - -Por defecto: 1.0 - </notification> - - - - <notification - - label="Impedir 'empujar'" - name="HelpRegionRestrictPushObject" - > -Esta casilla controla en toda la región los permisos para que haya 'empujones'. -Cuando está activada, los residentes sólo pueden ser empujados por sà mismos o por el propietario de la parcela. -('Empujar' se refiere a la función llPushObject() del LSL). - -Por defecto: Off - </notification> - - <notification - - label="Unir/Dividir parcelas" - name="HelpParcelChanges" - > -Esta casilla determina si las parcelas que no son del propietario del estado pueden puede unirse o subdividirse. -Si no se marca esta opción: - * Sólo los propietarios o los administradores del estado pueden unir o dividir parcelas. - * Sólo podrán unir o dividir las parcelas pertenecientes al propietario o a un grupo en el que tengan los poderes adecuados. -Si se marca esta opción: - * Todo los propietarios de parcelas podrán unir o dividir las que posean. - * En parcelas propiedad de un grupo, quienes tengan los poderes adecuados podrán unirlas o dividirlas. - -Por defecto: Marcado - </notification> - - <notification - - label="No mostrar en la búsqueda" - name="HelpRegionSearch" - > -Marcando esta casilla bloqueará que los propietarios de parcelas puedan listarlas en la búsqueda. - -Por defecto: Off - </notification> - - <notification - - label="Cambiada la calificación de la región" - name="RegionMaturityChange" - > -Se ha actualizado la calificación de esta región. -Llevará algún tiempo que el cambio se refleje en el mapa. - </notification> - - <notification - - label="Reventa de terreno" - name="HelpRegionLandResell" - > -Los propietarios y los administradores del estado pueden poner en venta cualquier terreno que posea el propietario del estado. -Si se desmarca esta opción, los compradores no podrán revender el terreno que compren en esta región. -Si se marca esta opción, los compradores podrán revender el terreno que compren en esta región. - -Por defecto: Deshabilitado - </notification> - - <notification - - label="Desactivar los scripts" - name="HelpRegionDisableScripts" - > -Cuando el rendimiento de un sim es pobre, el culpable puede ser un script. Abra EstadÃsticas (Ctrl-May-1). Mire Simulator Physics FPS. Si es menor de 45, abre el panel Time, en la parte inferior de las EstadÃsticas. Si ve que Script Time está en 25 ms o más alto, pulse el botón Listar los scripts según su uso, y verá el nombre y la posición de los scripts que pueden estar causando el bajo rendimiento. - -Marcando la casilla Desactivar los scripts y pulsando el botón Aplicar, se desactivarán temporalmente en esta región todos los scripts. -Debe hacer esto para viajar a la posición que ha visto en la Lista de scripts según su uso. Cuando llegue, investigue el script para determinar si es él quien causa el problema. Deberá contactar con el propietario del script, o borrar o devolver el objeto. -Desmarque la casilla Desactivar los scripts y pulse Aplicar para reactivar los scripts en la región. - -Por defecto: off - </notification> - - <notification - - label="Desactivar las colisiones" - name="HelpRegionDisableCollisions" - > -Cuando el rendimiento de un sim es pobre, la culpa puede estar en los objetos fÃsicos. Abra EstadÃsticas (Ctrl-May-1). Mire Simulator Physics FPS. Si es menor de 45, abre el panel Time, en la parte inferior de las EstadÃsticas. Si ve que Sim Time (Physics) está en 20 ms o más alto, pulse el botón Listar los objetos que colisionan, y verá el nombre y la posición de los objetos que pueden estar causando el bajo rendimiento. - -Marcando la casilla Desactivar las colisiones y pulsando el botón Aplicar, se desactivarán temporalmente las colisiones entre objetos. -Debe hacer esto para viajar a la localización que se ha avisado en la Lista de objetos que colisionan. Cuando llegue, investigue el objeto: -¿está colisionando constantemente con otros objetos? Deberá contactar con el propietario del objeto, o borrarlo o devolverlo. -Desmarque la casilla Desactivar las colisiones y pulse Aplicar para reactivar las colisiones en la región. - -Por defecto: off - </notification> - - <notification - - label="Desactivar la fÃsica" - name="HelpRegionDisablePhysics" - > -Desactivar la fÃsica es parecido a Desactivar las colisiones, pero se desactivan todas las simulaciones fÃsicas: no sólo se detiene la colisión de objetos, sino que también se provoca que los avatares no puedan moverse. - -Esto deberÃa usarse sólo cuando Desactivar las colisiones no ha aportado a la región suficiente rendimiento para investigar un problema con las propiedades fÃsicas o los objetos que colisionan. - -Cuando acabe, no se olvide de reactivar la fÃsica, o los avatares seguirán sin poderse mover. - -Por defecto: off - </notification> - - <notification - - label="Objetos que colisionan" - name="HelpRegionTopColliders" - > -Muestra una lista de aquellos objetos con más colisiones potenciales con otros objetos. Estos objetos pueden ralentizar el rendimiento. -Seleccione Ver > EstadÃsticas, y mire Simulator > Time > Sim Time (Physics) para ver si se están empleando en 'physics' más de 20 ms. - </notification> - - <notification - - label="Listar los scripts" - name="HelpRegionTopScripts" - > -Muestra una lista de los objetos que más tiempo emplean en ejecutar scripts de LSL. Estos objetos pueden ralentizar el rendimiento. -Seleccione Ver > EstadÃsticas, y mire Simulator > Time > Script Time para ver si se están empleando más de 25 ms. - </notification> - - <notification - - label="Reiniciar la región" - name="HelpRegionRestart" - > -Reinicia los procesos del servidor en que corre esta región tras dos minutos de advertencia previa. Se desconectará a todos los residentes que estén en la región. La región guardará sus datos, y deberÃa volver en unos 90 segundos. - -Reiniciar la región no solventa la mayorÃa de los problemas de rendimiento, y, normalmente, debe utilizarse sólo cuando se indique. - </notification> - - <notification - - label="Nivel del agua" - name="HelpRegionWaterHeight" - > -Es el nivel, en metros, del agua. Si se marca en algo distinto de 20, y usted tiene al lado el agua del mundo o un 'vacÃo', habrá una diferencia visible. - -Por defecto: 20 - </notification> - - <notification - - label="Elevación del terreno" - name="HelpRegionTerrainRaise" - > -Es la distancia que, en metros, los propietarios de parcelas pueden elevar su terreno sobre la altura del terreno inicialmente creado. - -Por defecto: 4 - </notification> - - <notification - - label="Rebaje del terreno" - name="HelpRegionTerrainLower" - > -Es la distancia que, en metros, los propietarios de parcelas pueden bajar su terreno sobre la altura del terreno inicialmente creado. - -Por defecto: -4 - </notification> - - <notification - - label="Subir un RAW para el terreno" - name="HelpRegionUploadRaw" - > -Este botón carga un archivo .RAW en la región en que usted está. -El archivo debe tener las dimensiones correctas (RGB, 256x256) y 13 canales. La forma mejor de crear un archivo de terreno es descargar el archivo RAW existente. Un buen inicio es modificar el canal rojo -red- (altura del terreno), y subirlo. - -La carga puede llevar unos 45 segundos. FÃjese que subir un archivo de terreno *no* moverá los objetos que haya en el terreno, sólo el terreno mismo y los permisos asociados a las parcelas. -Por tanto, puede que algunos objetos acaben enterrados.. - -Para más información sobre la edición de las alturas del terreno, consulte la ayuda F1. - </notification> - - <notification - - label="Descargar el RAW del terreno" - name="HelpRegionDownloadRaw" - > -Este botón descarga un archivo de esta región con los datos de alturas, dimensiones de las parcelas, estado de las parcelas en venta, y algunos permisos de las parcelas. Al abrir el archivo en un programa como Photoshop debe especificar las dimensiones del documento: RGB, 256x256 con 13 canales. -Este archivo de terreno no puede abrirse de otro modo. - -Para más información sobre la edición de las alturas del terreno, consulte la ayuda F1. - </notification> - - <notification - - label="Usar el Sol del estado" - name="HelpRegionUseEstateSun" - > -Esta casilla hace que la posición del Sol en la región sea la misma que la del resto del estado. - -Por defecto: on - </notification> - - <notification - - label="Fijar el Sol" - name="HelpRegionFixedSun" - > -Esta casilla fija la posición del Sol en la posición del deslizable Fase, y detiene su movimiento. - -Por defecto: off - </notification> - - <notification - - label="Predeterminar este terreno" - name="HelpRegionBakeTerrain" - > -Este botón salva la forma actual del terreno como nueva forma por defecto para la región. Una vez predeterminado, el terreno puede volver a esa forma cada vez que usted u otros usan la opción 'Revertir' en Editar el terreno. El terreno predeterminado también marca el punto medio para elevar y bajar los lÃmites. - </notification> - - <notification - - label="Administradores del estado" - name="HelpEstateEstateManager" - > -Un administrador del estado es un residente en el que usted delega controles de la región y configuraciones del estado. Un administrador del estado puede cambiar algunas configuraciones de estos paneles, excepto las de subir, descargar, y predeterminar el terreno. Y, concretamente, puede autorizar o expulsar a residentes de su estado. - -Sólo el propietario del estado puede añadir o remover administradores, nadie más. -Por favor, elija sólo a residentes en quienes confÃe, pues usted será el responsable último de sus acciones. - </notification> - - <notification - - label="Usar el horario global" - name="HelpEstateUseGlobalTime" - > -Esta casilla hace que, en su estado, el Sol tenga la misma posición que en los estados propiedad de Linden, 'mainland'. - -Por defecto: on - </notification> - - <notification - - label="Fijar el Sol" - name="HelpEstateFixedSun" - > -Esta casilla fija la posición del Sol en la posición del deslizable Fase, y detiene su movimiento. - </notification> - - <notification - - label="Acceso público" - name="HelpEstateExternallyVisible" - > -Esta casilla habilita a cualquier residente que esté en otro estado pueda entrar en éste sin tener que estar en una lista de acceso. - -Por defecto: on - </notification> - - <notification - - label="Permitir el teleporte a cualquier punto" - name="HelpEstateAllowDirectTeleport" - > -Cuando esta marcado, los residentes puede teleportarse directamente a cualquier punto de su estado. Si se desmarca, los residentes se teleportarán al Punto de Teleporte más cercano. - -Por defecto: off - </notification> - - <notification - - label="Autorizar el acceso" - name="HelpEstateAllowResident" - > -El acceso a este estado se limitará a los residentes aquà enumerados y a cualquier grupo de abajo. Esta configuración sólo funciona cuando está desmarcado Acceso público. - </notification> - - <notification - - label="Autorizar el acceso de grupo" - name="HelpEstateAllowGroup" - > -El acceso a este estado se limitará a los grupos aquà enumerados y a cualquier residente de abajo. Esta configuración sólo funciona cuando está desmarcado Acceso público. - </notification> - - <notification - - label="Dirección de correo para infracciones" - name="HelpEstateAbuseEmailAddress" - > -Aportando aquà una dirección de correo válida, se hará que las Denuncias de Infracción en este estado se envÃen a esa dirección. -Si se deja en blanco, las Denuncias de Infracción se enviarán sólo a Linden Lab. - </notification> - - <notification - - label="Denegar el acceso" - name="HelpEstateBanResident" - > -A los residentes en esta lista se les niega el acceso a su estado, independientemente de cualquier otra configuración. - </notification> - - <notification - - label="Autorizar el chat de voz" - name="HelpEstateVoiceChat" - > -Se autoriza a las parcelas del estado a tener sus propios canales de voz en los que los residentes puedan hablar y oÃr a otros residentes. - -Por defecto: off - </notification> - - <notification - - label="Desajuste en la versión de voz" - name="VoiceVersionMismatch" - > -En esta región, la versión de Second Life no es compatible con el chat de voz. Para que el chat de voz funcione correctamente, debe actualizar Second Life. - </notification> - - <notification - - label="Contrato del estado" - name="HelpEstateCovenant" - > -Definir un contrato del estado le permite vender parcelas del mismo. Si no existe un contrato, no puede vender terreno. -La nota para su contrato puede estar vacÃa si es que no quiere aplicar reglas, avisos a los compradores, o cualquier otra cosa relacionada con el terreno antes de que sea comprado. - -Puede usar un contrato para comunicar al posible comprador reglas, pautas, información cultural, o, simplemente, sus propias expectativas. -AsÃ, puede hablarse de parcelación, normas de las construcciones, formas de pago, u otra información que considere que el nuevo propietario debe saber y con la que debe estar de acuerdo antes de hacer la compra. - -Para poder finalizar la compra, el comprador debe aceptar el contrato marcando la casilla adecuada. Los contratos de los estados son siempre visibles en la información Acerca del terreno en todas las parcelas. - </notification> - - <notification - - label="No se pudo comprar los objetos" - name="BuyObjectOneOwner" - > -No se pueden comprar a la vez objetos de propietarios diferentes. -Por favor, seleccione sólo un objeto y vuelva a intentarlo. - </notification> - - <notification - - label="No se pudo comprar el contenido" - name="BuyContentsOneOnly" - > -No se puede comprar a la vez los contenidos de más de un objeto. -Por favor, seleccione sólo un objeto y vuelva a intentarlo. - </notification> - - <notification - - label="No se pudo comprar el contenido" - name="BuyContentsOneOwner" - > -No se pueden comprar a la vez objetos de propietarios diferentes. -Por favor, seleccione sólo un objeto y vuelva a intentarlo. - </notification> - - <notification - - name="BuyOriginal" - > -¿Comprar el objeto original de [OWNER] por [PRICE] L$? -Usted pasará a ser el propietario de este objeto. -Podrá: - Modificarlo: [MODIFYPERM] - Copiarlo: [COPYPERM] - Revenderlo o darlo: [RESELLPERM] - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="BuyOriginalNoOwner" - > -¿Comprar el objeto original por [PRICE] L$? -Usted pasará a ser el propietario de este objeto. -Podrá: - Modificarlo: [MODIFYPERM] - Copiarlo: [COPYPERM] - Revenderlo o darlo: [RESELLPERM] - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="BuyCopy" - > -¿Comprar una copia de [OWNER] por [PRICE] L$? -El objeto se copiará a su inventario. -Podrá: - Modificarlo: [MODIFYPERM] - Copiarlo: [COPYPERM] - Revenderlo o darlo: [RESELLPERM] - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="BuyCopyNoOwner" - > -¿Comprar una copia por [PRICE] L$? -El objeto se copiará a su inventario. -Podrá: - Modificarlo: [MODIFYPERM] - Copiarlo: [COPYPERM] - Revenderlo o darlo: [RESELLPERM] - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="BuyContents" - > -¿Comprar los contenidos de [OWNER] por [PRICE] L$? -Serán copiados a su inventario. - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="BuyContentsNoOwner" - > -¿Comprar los contenidos por [PRICE] L$? -Serán copiados a su inventario. - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmPurchase" - > -Esta transacción hará que: -[ACTION] - -¿Está seguro de querer hacer esta compra? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmPurchasePassword" - type="password"> -Esta transacción hará que: -[ACTION] - -¿Está seguro de querer hacer esta compra? -Por favor, vuelva a escribir su contraseña y pulse OK. - <form name="form"> - <input - name="message" - type="password"/> - <button - - - name="ConfirmPurchase" - text="OK"/> - <button - - name="Cancel" - text="Cancelar"/> - </form> - </notification> - - <notification - - name="SetPickLocation" - > -Nota: -Ha actualizado la posición de este Destacado, pero los otros detalles permanecen con sus valores originales. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="MoveInventoryFromObject" - > -Ha elegido Ãtems 'no copiables' de su inventario. Esos Ãtems se quitarán de su inventario, no se copiarán. - -¿Mover el/los Ãtem/s del inventario? - <usetemplate - ignoretext="Cuando mueva objetos 'no copiables' del inventario" - name="okcancelignore" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="MoveInventoryFromScriptedObject" - > -Ha elegido Ãtems 'no copiables' de su inventario. Esos Ãtems se moverán a su inventario, no se copiarán. -Dado que estos objetos tienen scripts, moverlos a su inventario puede provocar un mal funcionamiento del script. - -¿Mover el/los Ãtem/s del inventario? - <usetemplate - ignoretext="Cuando mueva objetos con script 'no copiables' del inventario" - name="okcancelignore" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="ClickActionNotPayable" - > -Atención: la acción Pagar al objeto al pulsar ha sido marcada, pero sólo funcionará si se añade un script con un evento money(). - <form name="form"> - <ignore name="ignore" - text="Cuando configure 'Pagar' en objetos sin el evento money()"/> - </form> - </notification> - - <notification - - name="OpenObjectCannotCopy" - > -En este objeto, no hay Ãtems que esté autorizado a copiar. - </notification> - - <notification - - name="WebLaunchAccountHistory" - > -¿Ir al sitio web de Second Life para ver el historial de su cuenta? - <usetemplate - ignoretext="Cuando se cargue la página web del historial de la cuenta" - name="okcancelignore" - notext="Cancelar" - yestext="Ir a la página"/> - </notification> - - <notification - - name="ClickOpenF1Help" - > -¿Visitar el sitio web de Soporte de Second Life? - <usetemplate - ignoretext="Cuando visite el sitio web de Soporte de Second Life." - name="okcancelignore" - notext="Cancelar" - yestext="Ir"/> - </notification> - - <notification - - name="ConfirmQuit" - > -¿Está seguro de que quiere salir? - <usetemplate - ignoretext="Cuando esté saliendo de Second Life." - name="okcancelignore" - notext="Continuar" - yestext="Salir"/> - </notification> - - <notification - - name="HelpReportAbuseEmailLL" - > -Use esta herramienta para denunciar violaciones de las Normas de la Comunidad y las Condiciones del Servicio. Vea: - -http://secondlife.com/corporate/tos.php -http://secondlife.com/corporate/cs.php - -Se investigan y resuelven todas las infracciones denunciadas de las Normas de la Comunidad y las Condiciones del Servicio. Puede ver la resolución tomada en el Informe de Incidentes, en: - -http://secondlife.com/support/incidentreport.php - </notification> - - <notification - - name="HelpReportAbuseEmailEO" - > -IMPORTANTE: Esta denuncia no irá a Linden Lab, sino al propietario de la región en la que usted se encuentra actualmente. - -Como un servicio a los residentes y visitantes, el propietario de la región ha elegido recibir y resolver todas las enuncias que se originen en esta región. Linden Lab no investigará las denuncias que usted envÃe desde aquÃ. - -El propietario de la región resolverá las denuncias basándose en las reglas locales de la región, tal como se detallan en el Contrato del estado. -(Puede ver el Contrato yendo al menú Mundo y eligiendo Acerca del terreno). - -La resolución de esta denuncia se aplica exclusivamente a esta región; el acceso de los residentes a otras áreas de Second Life no se verá afectado por el resultado de esta denuncia. Únicamente Linden Lab puede impedir el acceso a la totalidad de Second Life. - </notification> - - <notification - - name="HelpReportBug" - > -Use esta herramienta *sólo* para informar de cuestiones técnicas que no se comportan como se describe o era esperable. Por favor, aporte todos los detalles que pueda. -Deberá responder al correo electrónico de auto respuesta para añadir más detalles a su informe. - -Todos los informes de fallos serán investigados y evaluados. No se contestará por correo electrónico. - -Si tiene algún problema técnico, por favor, contacte con Soporte en: - -http://secondlife.com/community/support.php - -Nota: no se investigarán los informes incompletos. - </notification> - - <notification - - name="HelpReportAbuseSelectCategory" - > -Por favor, elija una categorÃa para esta denuncia de infracción. -Seleccionar una categorÃa nos ayuda a clasificar y procesar las denuncias de infracciones. - </notification> - - <notification - - name="HelpReportBugSelectCategory" - > -Por favor, elija una categorÃa para este fallo. -Seleccionar una categorÃa nos ayuda a clasificar y procesar los informes de fallos. - </notification> - - <notification - - name="HelpReportAbuseAbuserNameEmpty" - > -Por favor, escriba el nombre del infractor. -Aportar el dato preciso nos ayuda a clasificar y procesar las denuncias de infracciones. - </notification> - - <notification - - name="HelpReportAbuseAbuserLocationEmpty" - > -Por favor, escriba la localización donde tuvo lugar la infracción. -Aportar el dato preciso nos ayuda a clasificar y procesar las denuncias de infracciones. - </notification> - - <notification - - name="HelpReportAbuseSummaryEmpty" - > -Por favor, escriba un resumen de la infracción que ha habido. -Aportar un resumen preciso nos ayuda a clasificar y procesar las denuncias de infracciones. - </notification> - - <notification - - name="HelpReportBugSummaryEmpty" - > -Por favor, escriba un resumen del fallo. -Aportar un resumen preciso nos ayuda a clasificar y procesar los informes de fallos. - </notification> - - <notification - - name="HelpReportAbuseDetailsEmpty" - > -Por favor, escriba una descripción minuciosa de la infracción que ha habido. -Sea tan especÃfico como pueda, incluyendo los nombres y los detalles implicados en el incidente que denuncia. -Aportar una descripción precisa nos ayuda a clasificar y procesar las denuncias de infracciones. - </notification> - - <notification - - name="HelpReportBugDetailsEmpty" - > -Por favor, escriba una descripción minuciosa del fallo. -Sea tan especÃfico como pueda, incluyendo -si es posible- los pasos que permitan reproducir el fallo. -Aportar una descripción precisa nos ayuda a clasificar y procesar los informes de fallos. - </notification> - - <notification - - name="HelpReportAbuseContainsCopyright" - > -Estimado Residente: - -Parece que está usted denunciando una violación de la propiedad intelectual. Por favor, asegúrese de que su denuncia es correcto. - -(1) El proceso de la denuncia. Debe enviar una denuncia de infracción si cree que un Residente está reventando el sistema de permisos de Second Life, por ejemplo, usando un CopyBot u otras herramientas parecidas para copiar, infringiendo los derechos de propiedad intelectual. El Equipo de Infracciones (Abuse Team) investiga y lleva a cabo las acciones disciplinarias apropiadas ante toda acción que viole las las Normas de la Comunidad de Second Life o las Condiciones del Servicio. Sin embargo, el Equipo de Infracciones ni gestiona ni responde a las solicitudes de eliminar contenidos del mundo de Second Life. - -(2) El DMCA o Proceso de Eliminación de Contenido. Para solicitar que se elimine algún contenido de Second Life, DEBE enviar una notificación válida de infracción tal y como se explica en nuestra DMCA Policy en http://secondlife.com/corporate/dmca.php. - -Si todavÃa quiere seguir con el proceso de infracción, por favor, cierre esta ventana y acabe de enviar su denuncia. En concreto, debe seleccionar la categorÃa 'CopyBot o Programa para saltarse los permisos'. - -Gracias, - -Linden Lab - </notification> - - <notification - - name="FailedRequirementsCheck" - > -Han desaparecido de [FLOATER] estos componentes: -[COMPONENTS] - </notification> - - <notification - - label="Reemplazar el anexado actual" - name="ReplaceAttachment" - > -En ese punto de su cuerpo ya hay un objeto anexado. ¿Quiere reemplazarlo por el objeto que ha elegido? - <form name="form"> - <ignore name="ignore" - save_option="true" - text="Cuando se reemplacen anexados existentes"/> - <button - - ignore="Reemplazar automaticamente" - - name="Yes" - text="OK"/> - <button - ignore="Nunca reemplazar" - - name="No" - text="Cancelar"/> - </form> - </notification> - - <notification - - label="¡Aviso! Modo Ocupado" - name="BusyModePay" - > -Usted está en el modo Ocupado. Por tanto, no recibirá ningún Ãtem a cambio de esta pago. - -¿Quiere salir del modo Ocupado ante de completar esta transacción? - <form name="form"> - <ignore name="ignore" - save_option="true" - text="Cuando se esté pagando a un objeto o persona en el modo Ocupado"/> - <button - - ignore="Siempre salir del modo Ocupado" - - name="Yes" - text="OK"/> - <button - ignore="Nunca salir del modo Ocupado" - - name="No" - text="Cancelar"/> - </form> - </notification> - - <notification - - name="ConfirmEmptyTrash" - > -¿Está seguro de que quiere vaciar definitivamente el contenido de su Papelera? - <usetemplate - ignoretext="Cuando se vacÃe la Papelera" - name="okcancelignore" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmClearBrowserCache" - > -¿Está seguro de que quiere limpiar la caché de su navegador? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="SÃ"/> - </notification> - - <notification - - name="ConfirmClearCookies" - > -¿Está seguro de que quiere limpiar sus cookies? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="SÃ"/> - </notification> - - <notification - - name="ConfirmClearMediaUrlList" - > -¿Está seguro de que quiere vaciar su lista de URL guardadas? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="SÃ"/> - </notification> - - <notification - - name="ConfirmEmptyLostAndFound" - > -¿Está seguro de que quiere eliminar permanentemente el contenido de su carpeta Objetos Perdidos? - <usetemplate - ignoretext="Cuando se vacÃe la carpeta del inventario Objetos Perdidos" - name="okcancelignore" - notext="No" - yestext="SÃ"/> - </notification> - - <notification - - name="CopySLURL" - > -Se ha copiado a su portapapeles la siguiente SLurl: - [SLURL] - -PublÃquela en una página web para que otros puedan acceder fácilmente a esta posición, o pruébela usted mismo pegándola en la barra de direcciones de su navegador. - <form name="form"> - <ignore name="ignore" - text="Cuando se copie una SLurl al portapapeles"/> - </form> - </notification> - - <notification - - name="GraphicsPreferencesHelp" - > -Este panel controla el tamaño de la ventana, y la resolución y la calidad de los gráficos del cliente. La interfaz Preferencias > Gráficos le permite escoger entre cuatro niveles gráficos: Bajo, Medio, Alto, y Ultra. También puede personalizar sus configuraciones gráficas marcando la casilla Personalizar y adaptando estas configuraciones: - -Efectos: activa o desactiva varios tipos de shaders. - -Objetos reflejados: determina qué objetos reflejará el agua. - -Renderización del avatar: muestra opciones que afectan a cómo renderiza el cliente los avatares. - -Distancia de dibujo: afecta a cuán lejos de su punto de vista se renderizarán los objetos en la escena. - -Núm. máx. de partÃculas: define el número máximo de partÃculas que podrá ver a la vez en su pantalla. - -Calidad del procesamiento: define la resolución con que se renderiza el brillo. - -Detalle de la malla: define la cantidad de dettales o número de triángulos usados para renderizar algunos objetos. Cuanto más alto sea el valor, más detalle, pero más tiempo para renderizar. - -Detalles de la iluminación: determina que tipo de luces quiere usted que se rendericen. - -Nivel de detalle del terreno: marca con cuánto detalle quiere ver la textura del terreno. - </notification> - - <notification - - name="WLSavePresetAlert" - > -¿Quiere sobrescribir la preselección guardada? - <usetemplate - name="okcancelbuttons" - notext="No" - yestext="SÃ"/> - </notification> - - <notification - - name="WLDeletePresetAlert" - > -¿Quiere borrar [SKY]? - <usetemplate - name="okcancelbuttons" - notext="No" - yestext="SÃ"/> - </notification> - - <notification - - name="WLNoEditDefault" - > -No puede 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. ¿Desea sobreescribirlo? - <usetemplate - name="okcancelbuttons" - notext="No" - yestext="SÃ"/> - </notification> - - <notification - - name="HelpEditSky" - > -Edite los deslizables del WindLight para crear y guardar configuraciones del cielo. - </notification> - - <notification - - name="HelpEditDayCycle" - > -Define cómo se verán los cielos a lo largo del dÃa. - </notification> - - <notification - - name="EnvSettingsHelpButton" - > -Estas configuraciones ajustan la forma en que usted ve el medio ambiente localmente, en su ordenador. Su tarjeta gráfica debe admitir shaders de la atmósfera ('atmospheric shaders') para poder acceder a esta configuración. - -Ajuste el deslizable "Duración de un dÃa" para cambiar localmente, en su visor, las etapas del dÃa. - -Ajuste el deslizable "Nubosidad" para controlar cuántas nubes cubren el cielo. - -Pulse un color en el selector de "Color del agua" para cambiar el color de la misma. - -Ajuste el deslizable "Claridad del agua" para controlar el nivel de claridad del agua bajo la superficie. - -Pulse "Usar el horario del estado" para devolver los valores del dÃa al tiempo actual de la región y seguir a partir de él. - -Pulse "Cielo avanzado" para abrir un editor con configuraciones avanzadas para el cielo. - -Pulse "Agua avanzada" para abrir un editor con configuraciones avanzadas para el agua. - </notification> - - <notification - - name="HelpDayCycle" - > -El Editor del ciclo del dÃa le permite controlar el cielo de Second Life durante el ciclo dÃa/noche. Este es el ciclo que usa el deslizable Duración de un dÃa del Editor del entorno. - -El Editor del ciclo del dÃa trabaja configurando fotogramas clave ('keyframes'): nodos (representados por los puntos grises en la lÃnea del tiempo) cada uno de los cuales tiene asociado un Cielo definido. Según progresa la Duración de un dÃa, el WindLight realiza la "animación" del cielo interpolándose entre esos fotogramas clave. - -La flecha amarilla sobre la lÃnea del tiempo representa lo que usted ve actualmente, basándose en la Duración de un dÃa. Púlsela y muévela para ver cómo cambia la animación del dÃa. Puede añadir o borrar fotogramas clave pulsando los botones Añadir un punto o Quitar un punto, situados a la derecha de la lÃnea del tiempo. - -Puede establecer la posición en el tiempo de cualquier fotograma clave moviéndolo a lo largo de la lÃnea del tiempo, o configurando manualmente su valor por su valor manualmente en el recuadro Configuración del fotograma clave. También en ese recuadro podrá asociar el fotograma clave a un modelo predefinido de WindLight. - -La Duración del ciclo establece la duración total de un "dÃa". Marcar un valor bajo (por ejemplo, 2 min.) hará que las 24 horas de su lÃnea del tiempo se animen ¡en sólo dos minutos reales! Una vez que esté satisfecho con su ciclo de la lÃnea del tiempo y los fotogramas clave, utilice los botones Probar y Parar para obtener una vista previa de los resultados. Recuerde que también puede mover la flecha amarilla de encima de la lÃnea del tiempo para ver el ciclo de la animación. El botón Usar el horario del estado sincronizará su ciclo de duración de un dÃa con el ciclo del estado. - -Cuando todo esté a su gusto, puede guardar esos datos y cargarlos luego usando los botones Guardar este tipo de dÃa y Cargar un tipo de dÃa. Note que, por el momento, sólo podemos permitir un ciclo de un dÃa. - </notification> - - <notification - - name="HelpBlueHorizon" - > -Use los deslizables Rojo/Verde/Azul (RVA) para ajustar el color del cielo. Puede usar el deslizable de Intensidad (I) para moverlos al unÃsono. - </notification> - - <notification - - name="HelpHazeHorizon" - > -La Cantidad de bruma es uno de los parámetros más útiles para ajustar el nivel de luz de la escena. Es eficaz para simular muchos ajustes de la exposición, como la claridad en un ambiente nublado o de nevisca, o las tonalidades del una flor Iris aún cerrada. - </notification> - - <notification - - name="HelpBlueDensity" - > -La Saturación afecta a la densidad global de la saturación de color del cielo y la niebla. Si mueve el deslizable Intensidad (I) a la derecha, los colores serán más vivos y brillantes. Si lo mueve a la izquierda, se irán decolorando hasta llegar incluso al blanco y negro. Si desea ajustar el balance de color del cielo, puede controlar la saturación de cada elemento usando el deslizable Rojo/Verde/Azul (RVA). - </notification> - - <notification - - name="HelpHazeDensity" - > -La Densidad de la bruma controla lo sombrÃo de la atmósfera, su neblina. Es eficaz para simular escenas con mucho humo o contaminantes, y también para simular niebla y llovizna. - </notification> - - <notification - - name="HelpDensityMult" - > -La Densidad puede usarse para definir globalmente la 'pesadez' de la atmósfera. Los ajustes bajos dan sensación de un "aire limpio", y los altos de pesadez, de esmog. - </notification> - - <notification - - name="HelpDistanceMult" - > -Ajusta a qué distancia se percibe el WindLight. El valor cero desactiva la influencia del WindLight en el terreno y los objetos. Los valores superiores a 1 simulan mayores distancias a las que afectan los efectos atmosféricos - </notification> - - <notification - - name="HelpMaxAltitude" - > -La Altitud máx. ajusta hasta que altura el WindLight realiza sus cálculos para computar la iluminación atmosférica. En las últimas horas del dÃa, es útil para ajustar la "profundidad" a la que aparece el Sol. - </notification> - - <notification - - name="HelpSunlightColor" - > -Ajusta en la escena la intensidad y el color de las luces directas. - </notification> - - <notification - - name="HelpSunAmbient" - > -Ajusta en la escena la intensidad y el color de la luz ambiental. - </notification> - - <notification - - name="HelpSunGlow" - > -El deslizable Tamaño controla el tamaño del Sol. -El deslizable Visión controla cómo se ve de borroso el Sol en el cielo. - </notification> - - <notification - - name="HelpSceneGamma" - > -Ajusta la distribución de luz y oscuridad en la pantalla. - </notification> - - <notification - - name="HelpStarBrightness" - > -Ajusta el brillo de las estrellas en el cielo. - </notification> - - <notification - - name="HelpTimeOfDay" - > -Controla la posición del Sol en el cielo. Es parecido a la elevación. - </notification> - - <notification - - name="HelpEastAngle" - > -Controla la posición del Sol en el cielo. Es parecido al acimut. - </notification> - - <notification - - name="HelpCloudColor" - > -Edita el color de las nubes. En general, es recomendable mantenerlas blanquecinas. -Pero, vaya, diviértase si quiere. - </notification> - - <notification - - name="HelpCloudDetail" - > -Controla el detalle de las capas superiores de la imagen en la imagen principal de las nubes. X e Y controlan su posición. D (Densidad) controla la densidad o la fracturación con que aparecen las nubes. - </notification> - - <notification - - name="HelpCloudDensity" - > -Le permite controlar la posición de las nubes con los deslizables X e Y, y su desnidad con el deslizable D. - </notification> - - <notification - - name="HelpCloudCoverage" - > -Controla cuánto cubren el cielo las nubes. - </notification> - - <notification - - name="HelpCloudScale" - > -Controla el tamaño de la imagen de las nubes en la bóveda celeste. - </notification> - - <notification - - name="HelpCloudScrollX" - > -Controla la velocidad de las nubes al moverse en la dirección del eje X. - </notification> - - <notification - - name="HelpCloudScrollY" - > -Controla la velocidad de las nubes al moverse en la dirección del eje Y. - </notification> - - <notification - - name="HelpClassicClouds" - > -Marque esta casilla para activar la aparición de las nubes clásicas de Second Life junto a las nubes del WindLight. - </notification> - - <notification - - name="HelpWaterFogColor" - > -Elije el color del agua bajo la superficie. - </notification> - - <notification - - name="HelpWaterFogDensity" - > -Controla la densidad de la claridad del agua, y a qué distancia puede verse bajo ella. - </notification> - - <notification - - name="HelpUnderWaterFogMod" - > -Modifica el efecto de Transparencia para controlar cuán lejos su avatar puede ver bajo el agua. - </notification> - - <notification - - name="HelpWaterGlow" - > -Controla la cantidad de brillo de la superficie del agua. - </notification> - - <notification - - name="HelpWaterNormalScale" - > -Controla el tamaño de las tres ondulaciones que componen el agua. - </notification> - - <notification - - name="HelpWaterFresnelScale" - > -Controla cuánta luz se refleja desde diferentes ángulos. - </notification> - - <notification - - name="HelpWaterFresnelOffset" - > -Controla cuánta intensidad de luz se refleja. - </notification> - - <notification - - name="HelpWaterScaleAbove" - > -Controla la cantidad de luz refractada mirando la superficie del agua desde arriba. - </notification> - - <notification - - name="HelpWaterScaleBelow" - > -Controla la cantidad de luz refractada mirando la superficie del agua desde debajo. - </notification> - - <notification - - name="HelpWaterBlurMultiplier" - > -Controla cómo se mezclan las ondas y los reflejos. - </notification> - - <notification - - name="HelpWaterNormalMap" - > -Controla cuál es la capa de 'vista normal' del agua, para determinar las reflexiones/refracciones. - </notification> - - <notification - - name="HelpWaterWave1" - > -Controla hacia adónde y a qué velocidad se mueve en los ejes X e Y la versión en tamaño grande de la 'vista normal'. - </notification> - - <notification - - name="HelpWaterWave2" - > -Controla hacia adónde y a qué velocidad se mueve en los ejes X e Y la versión en tamaño pequeño de la 'vista normal'. - </notification> - - <notification - - name="NewSkyPreset" - > -Dame un nombre para el cielo nuevo. - <form name="form"> - <input name="message" type="text"> -Preselección nueva - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Cancelar"/> - </form> - </notification> - - <notification - - name="ExistsSkyPresetAlert" - > -¡Esa preselección ya existe! - </notification> - - <notification - - name="NewWaterPreset" - > -Dame un nombre para la nueva preselección de agua. - <form name="form"> - <input name="message" type="text"> -Preselección nueva - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Cancelar"/> - </form> - </notification> - - <notification - - name="ExistsWaterPresetAlert" - > -¡Esa preselección ya existe! - </notification> - - <notification - - name="WaterNoEditDefault" - > -No puede editar o borrar una preselección por defecto. - </notification> - - <notification - - name="ChatterBoxSessionStartError" - > -No se puede empezar una nueva sesión de chat con [RECIPIENT]. -[REASON] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="ChatterBoxSessionEventError" - > -[EVENT] -[REASON] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="ForceCloseChatterBoxSession" - > -Debe cerrarse su sesión de chat con [NAME]. -[REASON] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="Cannot_Purchase_an_Attachment" - > -No se pueden comprar los Ãtems que aún forman parte de un objeto anexado. - </notification> - - <notification - - label="Acerca de las solicitudes de autorización de débito" - name="DebitPermissionDetails" - > -Al admitir esta petición, le da permiso a un script para que coja dólares Linden (L$) de su cuenta. Para revocar este permiso, el propietario del objeto debe eliminarlo o reiniciar ese script del objeto. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="AutoWearNewClothing" - > -¿Quiere vestirse automáticamente el Ãtem de ropa nueva que ha creado? - <usetemplate - ignoretext="Vestirme automáticamente la ropa nueva" - name="okcancelignore" - notext="No" - yestext="SÃ"/> - </notification> - - <notification - - name="NotAgeVerified" - > -Para acceder a esta parcela, se debe haber verificado su edad. -¿Quiere visitar la web de Second Life para verificar su edad? - -[_URL] - <url option="0" name="url"> - - https://secondlife.com/account/verification.php - </url> - <usetemplate - ignoretext="Advertir de la falta de la verificación de edad" - name="okcancelignore" - notext="No" - yestext="SÃ"/> - </notification> - - <notification - - name="Cannot enter parcel: no payment info on file" - > -Antes de que pueda acceder a esta parcela, se requiere que usted tenga archivada su información de pago. -¿Quiere visitar la web de Second Life para actualizar esto? - -[_URL] - <url option="0" name="url"> - - https://secondlife.com/account/index.php?lang=es - </url> - <usetemplate - ignoretext="Advertir de la falta de información de pago" - name="okcancelignore" - notext="No" - yestext="SÃ"/> - </notification> - - <notification - - name="MissingString" - > -La cadena [STRING_NAME] Ha desaparecido de strings.xml - </notification> - - <notification - - name="SystemMessageTip" - > -[MESSAGE] - </notification> - - <notification - - name="Cancelled" - > -Cancelado - </notification> - - <notification - - name="CancelledSit" - > -Cancelado el sentarse - </notification> - - <notification - - name="CancelledAttach" - > -Candelado el anexar - </notification> - - <notification - - name="ReplacedMissingWearable" - > -Reemplazadas las ropas o partes del cuerpo perdidas con sus equivalentes por defecto. - </notification> - - <notification - - name="GroupNotice" - > -Asunto: [SUBJECT], Mensaje: [MESSAGE] - </notification> - - <notification - - name="FriendOnline" - > -[FIRST] [LAST] está conectado - </notification> - - <notification - - name="FriendOffline" - > -[FIRST] [LAST] no está conectado - </notification> - - <notification - - name="AddSelfFriend" - > -No se puede añadir como amigo a usted mismo. - </notification> - - <notification - - name="UploadingAuctionSnapshot" - > -Subiendo fotos del mundo y del sitio web... -(tardará unos 5 minutos). - </notification> - - <notification - - name="UploadPayment" - > -Ha pagado [AMOUNT] LS por la subida. - </notification> - - <notification - - name="UploadWebSnapshotDone" - > -Completada la subida de la foto del sitio web. - </notification> - - <notification - - name="UploadSnapshotDone" - > -Completada la subida de la foto del mundo. - </notification> - - <notification - - name="TerrainDownloaded" - > -Se ha descargado Terrain.raw - </notification> - - <notification - - name="GestureMissing" - > -El gesto [NAME] ha desaparecido de la base de datos. - </notification> - - <notification - - name="UnableToLoadGesture" - > -No se ha podido cargar el gesto [NAME]. -Por favor, vuelva a intentarlo. - </notification> - - <notification - - name="LandmarkMissing" - > -El hito ha desaparecido de la base de datos. - </notification> - - <notification - - name="UnableToLoadLandmark" - > -No se ha podido cargar el hito. Por favor, vuelva a intentarlo. - </notification> - - <notification - - name="CapsKeyOn" - > -Tiene pulsada su tecla de bloqueo de mayúsculas, lo que influirá en cómo escriba la contraseña. -Quizá quiera soltar esa tecla. - </notification> - - <notification - - name="NotecardMissing" - > -La nota ha desaparecido de la base de datos. - </notification> - - <notification - - name="NotecardNoPermissions" - > -No tiene permisos suficientes para ver la nota. - </notification> - - <notification - - name="RezItemNoPermissions" - > -No tiene permisos suficientes para renderizar el objeto. - </notification> - - <notification - - name="UnableToLoadNotecard" - > -No se ha podido cargar la nota. -Por favor, vuelva a intentarlo. - </notification> - - <notification - - name="ScriptMissing" - > -El script ha desaparecido de la base de datos. - </notification> - - <notification - - name="ScriptNoPermissions" - > -No tiene permisos suficientes para ver el script. - </notification> - - <notification - - name="UnableToLoadScript" - > -No se ha podido cargar el script. Por favor, vuelva a intentarlo. - </notification> - - <notification - - name="IncompleteInventory" - > -Los contenidos que está usted ofreciendo aún no están disponibles. Por favor, vuelva a ofrecerlos en un minuto. - </notification> - - <notification - - name="CannotModifyProtectedCategories" - > -No puede modificar categorÃas que están protegidas. - </notification> - - <notification - - name="CannotRemoveProtectedCategories" - > -No puede quitar categorÃas que están protegidas. - </notification> - - <notification - - name="OfferedCard" - > -Ha ofrecido una tarjeta de visita a [FIRST] [LAST] - </notification> - - <notification - - name="UnableToBuyWhileDownloading" - > -No se puede comprar un objeto mientras se descargan sus datos. -Por favor, vuelva a intentarlo. - </notification> - - <notification - - name="UnableToLinkWhileDownloading" - > -No se puede enlazar un objeto mientras se descargan sus datos. -Por favor, vuelva a intentarlo. - </notification> - - <notification - - name="CannotBuyObjectsFromDifferentOwners" - > -No puede comprar a la vez objetos de diferentes propietarios. -Por favor, elija sólo uno. - </notification> - - <notification - - name="ObjectNotForSale" - > -El objeto no aparece como puesto a la venta. - </notification> - - <notification - - name="EnteringGodMode" - > -Entrando en el modo administrativo, nivel [LEVEL] - </notification> - - <notification - - name="LeavingGodMode" - > -Saliendo del modo administrativo, nivel [LEVEL] - </notification> - - <notification - - name="CopyFailed" - > -No se ha hecho la copia porque usted no tiene permiso para hacerla - </notification> - - <notification - - name="InventoryAccepted" - > -[NAME] ha aceptado su oferta del inventario. - </notification> - - <notification - - name="InventoryDeclined" - > -[NAME] ha rehusado su oferta del inventario. - </notification> - - <notification - - name="ObjectMessage" - > -[NAME]: [MESSAGE] - </notification> - - <notification - - name="CallingCardAccepted" - > -Se ha aceptado su tarjeta de visita. - </notification> - - <notification - - name="CallingCardDeclined" - > -Se ha rehusado su tarjeta de visita. - </notification> - - <notification - - name="TeleportToLandmark" - > -Ahora que ha llegado a mainland (los continentes), puede teleportarse a localizaciones como '[NAME]' pulsando el botón Inventario de la esquina inferior derecha de su pantalla, y, después, seleccionando la carpeta Hitos. -Pulse dos veces en el hito y, luego, pulse en Teleportar para viajar hasta allÃ. - </notification> - - <notification - - name="TeleportToPerson" - > -Ahora que ha llegado a mainland (los continentes), puede contactar con residentes como '[NAME]' pulsando el botón Inventario de la esquina inferior derecha de su pantalla, y, después, seleccionando la carpeta Tarjetas de visita. -Pulse dos veces en la tarjeta, pulse en Mensaje Instantáneo, y escriba un mensaje. - </notification> - - <notification - - name="CantSelectLandFromMultipleRegions" - > -No puede seleccionar un terreno que cruce las fronteras entre servidores. -Inténtelo seleccionando un trozo más pequeño de terreno. - </notification> - - <notification - - name="GroupVote" - > -[NAME] ha propuesto votar: -[MESSAGE] - <form name="form"> - <button - - name="VoteNow" - text="Votar ahora"/> - <button - - name="Later" - text="Más tarde"/> - </form> - </notification> - - <notification - - name="SystemMessage" - > -[MESSAGE] - </notification> - - <notification - - name="EventNotification" - > -Notificación de un evento: - -[NAME] -[DATE] - <form name="form"> - <button - - name="Teleport" - text="Teleportar"/> - <button - - name="Description" - text="Descripción"/> - <button - - name="Cancel" - text="Cancelar"/> - </form> - </notification> - - <notification - - name="TransferObjectsHighlighted" - > -En estos momentos, están realzados todos los objetos de esta parcela que serán transferidos al comprador de la misma. - -* No están realzados los árboles y hierbas que se transferirán. - <form name="form"> - <button - - name="Done" - text="Hecho"/> - </form> - </notification> - - <notification - - name="DeactivatedGesturesTrigger" - > -Desactivados los gestos que tienen el mismo botón: -[NAMES] - </notification> - - <notification - - name="NoQuickTime" - > -No se ve como instalado en su sistema el software QuickTime de Apple. -Si quiere ver por streaming elementos multimedia en las parcelas que los tengan, debe ir al sitio web de QuickTime (http://www.apple.com/quicktime) e instalar el QuickTime Player. - </notification> - - <notification - - name="OwnedObjectsReturned" - > -Se han devuelto a su inventario los objetos de los que usted era propietario en la parcela seleccionada. - </notification> - - <notification - - name="OtherObjectsReturned" - > -Se han devuelto a su inventario los objetos de los que usted era propietario en la parcela propiedad de [FIRST] [LAST]. - </notification> - - <notification - - name="OtherObjectsReturned2" - > -Se han devuelto a su propietario los objetos que, en la parcela seleccionada, eran propiedad del residente '[NAME]'. - </notification> - - <notification - - name="GroupObjectsReturned" - > -Se han devuelto a los inventarios de sus propietarios los objetos que estaban compartidos con el grupo [GROUPNAME] en la parcela seleccionada. -Los objetos transferibles que se transfirieron al grupo se han devuelto a sus propietarios anteriores. -Los objetos no transferibles que se transfirieron al grupo han sido borrados. - </notification> - - <notification - - name="UnOwnedObjectsReturned" - > -Se han devuelto a sus propietarios los objetos de los que usted NO era propietario en la parcela seleccionada. - </notification> - - <notification - - name="NotSafe" - > -Este es un terreno con el daño autorizado ('no seguro'). -Aquà puede ser herido. Si muere, será teleportado a su Base. - </notification> - - <notification - - name="NoFly" - > -En este terreno no se permite volar ('no volar'). -Aquà no debe volar. - </notification> - - <notification - - name="PushRestricted" - > -Este terreno es 'Sin empujones'. -No puede empujar a otros a menos que sea el propietario del terreno. - </notification> - - <notification - - name="NoVoice" - > -Este terreno tiene desactivada la voz. - </notification> - - <notification - - name="NoBuild" - > -Este terreno tiene desactivado el construir ('no construir'). -Aquà no puede crear objetos. - </notification> - - <notification - - name="ScriptsStopped" - > -Un administrador ha detenido temporalmente los scripts en esta región. - </notification> - - <notification - - name="ScriptsNotRunning" - > -En esta región no se está ejecutando ningún script. - </notification> - - <notification - - name="NoOutsideScripts" - > -Esta región tiene desactivados los scripts de otros -('no scripts de otros'). -No se ejecutará ningún script que no pertenezca al propietario del terreno. - </notification> - - <notification - - name="ClaimPublicLand" - > -Sólo puede reclamar terreno público en la región en que está usted. - </notification> - - <notification - - name="ObjectGiveItem" - > -Un objeto llamado [OBJECTFROMNAME], propiedad de [FIRST] [LAST], le ha dado un/a [OBJECTTYPE] de nombre [OBJECTNAME]. - <form name="form"> - <button - - name="Keep" - text="Guardar"/> - <button - - name="Discard" - text="Descartar"/> - <button - - name="Mute" - text="Ignorar"/> - </form> - </notification> - - <notification - - name="ObjectGiveItemUnknownUser" - > -Un objeto llamado [OBJECTFROMNAME], propiedad de (un usuario desconocido), le ha dado un/a [OBJECTTYPE] de nombre [OBJECTNAME]. - <form name="form"> - <button - - name="Keep" - text="Guardar"/> - <button - - name="Discard" - text="Descartar"/> - <button - - name="Mute" - text="Ignorar"/> - </form> - </notification> - - <notification - - name="UserGiveItem" - > -[NAME] le ha dado un/a [OBJECTTYPE] de nombre '[OBJECTNAME]'. - <form name="form"> - <button - - name="Keep" - text="Guardar"/> - <button - - name="Discard" - text="Descartar"/> - <button - - name="Mute" - text="Ignorar"/> - </form> - </notification> - - <notification - - name="GodMessage" - > -[NAME] -[MESSAGE] - </notification> - - <notification - - name="JoinGroup" - > -[MESSAGE] - <form name="form"> - <button - - name="Join" - text="Entrar"/> - <button - - name="Decline" - text="Rehusar"/> - <button - - name="Info" - text="Información"/> - </form> - </notification> - - <notification - - name="TeleportOffered" - > -[NAME] se ha ofrecido a teleportarle hasta su posición: - -[MESSAGE] - <form name="form"> - <button - - name="Teleport" - text="Teleportar"/> - <button - - name="Cancel" - text="Cancelar"/> - </form> - </notification> - - <notification - - name="GotoURL" - > -[MESSAGE] -[URL] - <form name="form"> - <button - - name="Later" - text="Más tarde"/> - <button - - name="GoNow..." - text="Ir ahora..."/> - </form> - </notification> - - <notification - - name="OfferFriendship" - > -[NAME] le está ofreciendo amistad. - -[MESSAGE] - -(Por defecto, usted podrá ver si están conectados los demás). - <form name="form"> - <button - - name="Accept" - text="Aceptar"/> - <button - - name="Decline" - text="Rehusar"/> - </form> - </notification> - - <notification - - name="OfferFriendshipNoMessage" - > -[NAME] le está ofreciendo amistad. - -(Por defecto, usted podrá ver si están conectados los demás). - <form name="form"> - <button - - name="Accept" - text="Aceptar"/> - <button - - name="Decline" - text="Rehusar"/> - </form> - </notification> - - <notification - - name="FriendshipAccepted" - > -[NAME] ha aceptado su oferta de amistad. - </notification> - - <notification - - name="FriendshipDeclined" - > -[NAME] ha rehusado su oferta de amistad. - </notification> - - <notification - - name="OfferCallingCard" - > -[FIRST] [LAST] le está ofreciendo su tarjeta de visita. -Esto añadirá un Ãtem a su inventario para que pueda enviar rápidamente a este residente un MI. - <form name="form"> - <button - - name="Accept" - text="Aceptar"/> - <button - - name="Decline" - text="Rehusar"/> - </form> - </notification> - - <notification - - name="RegionRestartMinutes" - - - > -La región se reiniciará en [MINUTES] minutos. -Si permanece en esta región, será desconectado. - </notification> - - <notification - - name="RegionRestartSeconds" - - - > -La región se reiniciará en [SECONDS] segundos. -Si permanece en esta región, será desconectado. - </notification> - - <notification - - name="LoadWebPage" - > -¿Cargar la página web [URL]? - -[MESSAGE] - -Del objeto: [OBJECTNAME]; propiedad de: [NAME]? - <form name="form"> - <button - - name="Gotopage" - text="Ir a la página"/> - <button - - name="Cancel" - text="Cancelar"/> - </form> - </notification> - - <notification - - name="FailedToFindWearableUnnamed" - > -Búsqueda fallida de [TYPE] en la base de datos. - </notification> - - <notification - - name="FailedToFindWearable" - > -Búsqueda fallida de [TYPE] de nombre [DESC] en la base de datos. - </notification> - - <notification - - name="ScriptQuestion" - > -'[OBJECTNAME]', un objeto propiedad de '[NAME]', querrÃa: - -[QUESTIONS] -¿Está de acuerdo? - <form name="form"> - <button - - name="Yes" - text="SÃ"/> - <button - - name="No" - text="No"/> - <button - - name="Mute" - text="Ignorar"/> - </form> - </notification> - - <notification - - name="ScriptQuestionCaution" - > -'[OBJECTNAME]', un objeto propiedad de '[NAME]', querrÃa: - -[QUESTIONS] -Si no confÃa en este objeto y su creador, debe denegar la solicitud. Para más información, pulse el botón Detalles. - -¿Autorizar esta petición? - <form name="form"> - <button - - name="Grant" - text="Autorizar"/> - <button - - name="Deny" - text="Denegar"/> - <button - - name="Details" - text="Detalles..."/> - </form> - </notification> - - <notification - - name="ScriptDialog" - > -'[TITLE]' de [FIRST] [LAST] -[MESSAGE] - <form name="form"> - <button - - name="Ignore" - text="Ignorar"/> - </form> - </notification> - - <notification - - name="ScriptDialogGroup" - > -'[TITLE]' de [GROUPNAME]' -[MESSAGE] - <form name="form"> - <button - - name="Ignore" - text="Ignorar"/> - </form> - </notification> - - <notification - - name="FirstBalanceIncrease" - > -Ha recibido [AMOUNT] L$. -Pueden darle L$ tanto objetos como otros usuarios. -Su balance se muestra en la esquina superior derecha de la pantalla. - </notification> - - <notification - - name="FirstBalanceDecrease" - > -Ha pagado [AMOUNT] L$. -Su balance se muestra en la esquina superior derecha de la pantalla. - </notification> - - <notification - - name="FirstSit" - > -Está sentado. -Use las teclas del cursor (o AWSD) para cambiar el punto de vista. -Pulde el botón 'Levantarse' para ponerse de pie. - </notification> - - <notification - - name="FirstMap" - > -Pulse el mapa y arrástrelo para desplazarlo. -Púlselo dos veces para teleportarse. -Use los controles de la derecha para encontrar sitios y mostrar diferentes fondos. - </notification> - - <notification - - name="FirstBuild" - > -Usted puede construir objetos nuevos en algunas zonas de [SECOND_LIFE]. -Use las herramientas de arriba a la izquierda para construir, y pruebe a cambiar rápidamente entre ellas pulsando Ctrl o Alt. -Pulse Esc para dejar de construir. - </notification> - - <notification - - name="FirstLeftClickNoHit" - > -En algunos objetos concretos, al pulsarlos con el botón izquierdo del ratón interacciona con ellos. -Si el puntero del ratón pasa a ser una mano puede interactuar con el objeto. -El botón derecho del ratón siempre muestra un menú con cosas que usted puede hacer. - </notification> - - <notification - - name="FirstTeleport" - > -Esta región no permite teleportarse de un punto a otro, por lo que ha sido llevado al Punto de Teleporte más cercano. -Su destinado está señalado con una columna de luz roja. -Siga la flecha roja hasta llegar a la columna, o pulse la flecha para hacerla desaparecer. - </notification> - - <notification - - name="FirstOverrideKeys" - > -A partir de ahora, sus teclas de movimiento las gestiona un objeto. -Pruebe las teclas del cursor o AWSD para ver qué hacen. -Algunos objetos (las pistolas, por ejemplo) le pedirán que, para usarlos, entre usted en vista subjetiva. Pulse 'M' para hacerlo. - </notification> - - <notification - - name="FirstAppearance" - > -Está modificando su apariencia. -Use las teclas del cursor para girar el punto de vista y hacer zoom. -Cuando acabe, pulse 'Guardar todo' para salvar su apariencia y salir del modificarla. -Puede modificar su apariencia tantas veces como quiera. - </notification> - - <notification - - name="FirstInventory" - > -Este es su inventario. Tiene objetos, notas, ropas, y otras cosas de su propiedad. -* Para vestirse un objeto o un vestuario completo, arrástrelo hasta usted mismo. -* Para colocar un objeto en el mundo, arrástrelo hasta el suelo. -* Para leer una nota, pulse dos veces en ella. - </notification> - - <notification - - name="FirstSandbox" - > -Esta es una región 'sandbox' (zona de pruebas). -Los objetos que construya aquà pueden ser eliminados cuando salga de esta zona, pues los sandbox se limpian regularmente. Por favor, tenga en cuenta la información que hay arriba de su pantalla junto al nombre de la región. - -Las regiones sandbox no son frecuentes, y están señalizadas. - </notification> - - <notification - - name="FirstFlexible" - > -Este objeto es flexible. -Los objetos flexibles no pueden ser materiales, y serán inmateriales hasta que se desmarque la casilla de flexibles. - </notification> - - <notification - - name="FirstDebugMenus" - > -Ha activado el menú Avanzado. -Contiene herramientas útiles para los desarrolladores que trabajan mejorando Second Life. -Para pasar este menú a una ventana, pulse Ctrl-Alt-D. En un Mac, pulse Cmd-Opt-Shift-D. - </notification> - - <notification - - name="FirstSculptedPrim" - > -Está editando un prim 'sculpted'. -Los prim sculpted requieren una textura especial para tomar forma. -Puede encontrar ejemplos de texturas sculpted en la biblioteca del inventario. - </notification> - - <notification - - name="FirstMedia" - > -Ha empezado a reproducir media. Puede hacer que los media se reproduzcan automáticamente en la pestaña Audio y VÃdeo de la ventana de preferencias. Note que tal cosa puede suponer un riesgo de seguridad en los sitios multimedia en los que no confÃe. - </notification> - - <notification - - name="MaxListSelectMessage" - > -Puede seleccionar un máximo de [MAX_SELECT] Ãtems de esta lista. - </notification> - - <notification - - name="VoiceInviteP2P" - > -[NAME] le está invitando a un chat de voz. -Pulse Aceptar para coger la llamada o Rehusar para declinar la invitación. Pulse Ignorar para ignorar a quien llama. - <form name="form"> - <button - - name="Accept" - text="Aceptar"/> - <button - - name="Decline" - text="Rehusar"/> - <button - - name="Mute" - text="Ignorar"/> - </form> - </notification> - - <notification - - name="AutoUnmuteByIM" - > -[FIRST] [LAST], a quien ha enviado un mensaje instantáneo, ha dejado automáticamente de estar ignorado. - </notification> - - <notification - - name="AutoUnmuteByMoney" - > -[FIRST] [LAST], a quien ha dado dinero, ha dejado automáticamente de estar ignorado. - </notification> - - <notification - - name="AutoUnmuteByInventory" - > -[FIRST] [LAST], a quien ha ofrecido algo del inventario, ha dejado automáticamente de estar ignorado. - </notification> - - <notification - - name="VoiceInviteGroup" - > -[NAME] ha empezado un chat de voz con el grupo [GROUP]. -Pulse Aceptar para coger la llamada o Rehusar para declinar la invitación. Pulse Ignorar para ignorar a quien llama. - <form name="form"> - <button - - name="Accept" - text="Aceptar"/> - <button - - name="Decline" - text="Rehusar"/> - <button - - name="Mute" - text="Ignorar"/> - </form> - </notification> - - <notification - - name="VoiceInviteAdHoc" - > -[NAME] ha empezado un chat de voz en multiconferencia. -Pulse Aceptar para coger la llamada o Rehusar para declinar la invitación. Pulse Ignorar para ignorar a este usuario. - <form name="form"> - <button - - name="Accept" - text="Aceptar"/> - <button - - name="Decline" - text="Rehusar"/> - <button - - name="Mute" - text="Ignorar"/> - </form> - </notification> - - <notification - - name="InviteAdHoc" - > -[NAME] le está invitando a un chat en multiconferencia. -Pulse Aceptar para entrar al chat o Rehusar para declinar la invitación. Pulse Ignorar para ignorar a este usuario. - <form name="form"> - <button - - name="Accept" - text="Aceptar"/> - <button - - name="Decline" - text="Rehusar"/> - <button - - name="Mute" - text="Ignorar"/> - </form> - </notification> - - <notification - - name="VoiceChannelFull" - > -El chat de voz al que está intentando entrar, [VOICE_CHANNEL_NAME], ha llegado a su capacidad máxima. Por favor, inténtelo más tarde. - </notification> - - <notification - - name="ProximalVoiceChannelFull" - > -Lo sentimos. Este área ha llegado a su capacidad máxima de conversaciones por voz. Por favor, intente usar la voz en otra zona. - </notification> - - <notification - - name="VoiceChannelDisconnected" - > -Ha sido desconectado del [VOICE_CHANNEL_NAME]. Va a ser reconectado al chat de voz del mundo. - </notification> - - <notification - - name="VoiceChannelDisconnectedP2P" - > -[VOICE_CHANNEL_NAME] ha colgado la llamada. Usted va a ser reconectado al chat de voz del mundo. - </notification> - - <notification - - name="P2PCallDeclined" - > -[VOICE_CHANNEL_NAME] ha rehusado su llamada. Usted va a ser reconectado al chat de voz del mundo. - </notification> - - <notification - - name="P2PCallNoAnswer" - > -[VOICE_CHANNEL_NAME] no está disponible para coger su llamada. Usted va a ser reconectado al chat de voz del mundo. - </notification> - - <notification - - name="VoiceChannelJoinFailed" - > -Fallo al conectar al [VOICE_CHANNEL_NAME]; por favor, inténtelo más tarde. Usted va a ser reconectado al chat de voz del mundo. - </notification> - - <notification - - name="VoiceLoginRetry" - > -Estamos creando un canal de voz para usted. Se puede tardar hasta un minuto. - </notification> - - <notification - - name="Cannot enter parcel: not a group member" - > -No puede entrar en esta parcela, no es miembro del grupo adecuado. - </notification> - - <notification - - name="Cannot enter parcel: banned" - > -No puede entrar en esta parcela, se le ha prohibido el acceso. - </notification> - - <notification - - name="Cannot enter parcel: not on access list" - > -No puede entrar en esta parcela, no está en la lista de acceso. - </notification> - - <notification - - name="VoiceNotAllowed" - > -No tiene permiso para conectarse al chat de voz de [VOICE_CHANNEL_NAME]. - </notification> - - <notification - - name="VoiceCallGenericError" - > -Ha ocurrido un error intentando conectarle al [VOICE_CHANNEL_NAME]. Por favor, inténtelo más tarde. - </notification> - - <notification - - name="ServerVersionChanged" - > -La región en la que ha entrado se ejecuta en un simulador con una versión diferente. Pulse este mensaje para ver más detalles. - </notification> - - <notification - - name="UnableToOpenCommandURL" - > -No puede abrirse desde este navegador la URL que ha pulsado. - </notification> - - <global name="UnsupportedCPU"> -- La velocidad de su CPU no cumple los requerimientos mÃnimos. - </global> - - <global name="UnsupportedGLRequirements"> -Parece que no tiene los requerimientos de hardware apropiados para Second Life. Second Life requiere una tarjeta gráfica OpenGL que admita texturas múltiples ('multitexture support'). Si la tiene, compruebe que tiene los últimos drivers para su tarjeta gráfica, asà como los últimos parches y 'service packs' para su sistema operativo. - -Si los problemas persisten, por favor, acuda a: http://www.secondlife.com/support - </global> - - <global name="UnsupportedCPUAmount"> -796 - </global> - - <global name="UnsupportedRAMAmount"> -510 - </global> - - <global name="UnsupportedGPU"> -- Su tarjeta gráfica no cumple los requerimientos mÃnimos. - </global> - - <global name="UnsupportedRAM"> -- La memoria de su sistema no cumple los requerimientos mÃnimos. - </global> - - <global name="PermYes"> -Sà - </global> - - <global name="PermNo"> -No - </global> -</notifications> - +<?xml version="1.0" encoding="utf-8"?> +<notifications> + <global name="skipnexttime"> + No mostrarme esto otra vez + </global> + <global name="alwayschoose"> + Elegir siempre esta opción + </global> + <template name="okbutton"> + <form> + <button + name="OK" + text="$yestext"/> + </form> + </template> + + <template name="okignore"> + <form> + <button + name="OK" + text="$yestext"/> + <ignore text="$ignoretext"/> + </form> + </template> + + <template name="okcancelbuttons"> + <form> + <button + name="OK" + text="$yestext"/> + <button + name="Cancel" + text="$notext"/> + </form> + </template> + + <template name="okcancelignore"> + <form> + <button + name="OK" + text="$yestext"/> + <button + name="Cancel" + text="$notext"/> + <ignore text="$ignoretext"/> + </form> + </template> + + <template name="okhelpbuttons"> + <form> + <button + name="OK" + text="$yestext"/> + <button + name="Help" + text="$helptext"/> + </form> + </template> + + <template name="yesnocancelbuttons"> + <form> + <button + name="Yes" + text="$yestext"/> + <button + name="No" + text="$notext"/> + <button + name="Cancel" + text="$canceltext"/> + </form> + </template> + <notification functor="GenericAcknowledge" label="Mensaje de alerta desconocida" name="MissingAlert"> + Su versión de Second Life no sabe cómo mostrar el mensaje de alerta que acaba de recibir. + +Detalles del error: no se ha encontrado en notifications.xml la alerta llamada '[_NAME]'. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="FloaterNotFound"> + Error: no se pudieron encontrar estos controles: + +[CONTROLS] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="TutorialNotFound"> + Actualmente, no hay un tutorial disponible. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="GenericAlert"> + [MESSAGE] + </notification> + <notification name="GenericAlertYesCancel"> + [MESSAGE] + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="SÃ"/> + </notification> + <notification name="BadInstallation"> + Ha habido un error al actualizar Second Life. Por favor, descargue la última versión desde secondlife.com. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + <notification name="LoginFailedNoNetwork"> + Error de red: no se ha podido conectar. +'[DIAGNOSTIC]' +Por favor, revise su conexión a internet. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + <notification name="MessageTemplateNotFound"> + No se ha encontrado la plantilla de mensaje [PATH]. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + <notification name="WearableSave"> + ¿Guardar los cambios en las ropas o partes del cuerpo actuales? + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="No guardarlos" yestext="Guardarlos"/> + </notification> + <notification name="CompileQueueSaveText"> + Hubo un problema al subir el texto de un script por la siguiente razón: [REASON]. Por favor, inténtelo más tarde. + </notification> + <notification name="CompileQueueSaveBytecode"> + Hubo un problema al subir el script compilado por la siguiente razón: [REASON]. Por favor, inténtelo más tarde. + </notification> + <notification name="WriteAnimationFail"> + Hubo un problema al escribir los datos de la animación. Por favor, inténtelo más tarde. + </notification> + <notification name="UploadAuctionSnapshotFail"> + Hubo un problema al subir la foto de la subasta por la siguiente razón: [REASON] + </notification> + <notification name="UnableToViewContentsMoreThanOne"> + No se puede ver a la vez los contenidos de más de un Ãtem. Por favor, elija un solo objeto y vuelva a intentarlo. + </notification> + <notification name="SaveClothingBodyChanges"> + ¿Guardar todos los cambios en la ropa y partes del cuerpo? + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="No guardarlos" yestext="Guardarlos todos"/> + </notification> + <notification name="GrantModifyRights"> + Al conceder derechos de modificación a otro residente le autoriza a cambiar, borrar, o coger CUALQUIER objeto que usted tenga en el mundo. Sea MUY cuidadoso dando este permiso. ¿Quiere conceder derechos de modificación a [FIRST_NAME] [LAST_NAME]? + <usetemplate name="okcancelbuttons" notext="No" yestext="SÃ"/> + </notification> + <notification name="GrantModifyRightsMultiple"> + Al conceder derechos de modificación a otros residentes les autoriza a cambiar, borrar, o coger CUALQUIER objeto que usted tenga en el mundo. Sea MUY cuidadoso dando este permiso. ¿Quiere conceder derechos de modificación a los residentes seleccionados? + <usetemplate name="okcancelbuttons" notext="No" yestext="SÃ"/> + </notification> + <notification name="RevokeModifyRights"> + ¿Quiere revocar los derechos de modificación a [FIRST_NAME] [LAST_NAME]? + <usetemplate name="okcancelbuttons" notext="No" yestext="SÃ"/> + </notification> + <notification name="RevokeModifyRightsMultiple"> + ¿Quiere revocar los derechos de modificación a los residentes seleccionados? + <usetemplate name="okcancelbuttons" notext="No" yestext="SÃ"/> + </notification> + <notification name="UnableToCreateGroup"> + No se ha podido crear el grupo. +[MESSAGE] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="PanelGroupApply"> + [NEEDS_APPLY_MESSAGE] +[WANT_APPLY_MESSAGE] + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Ignorar los cambios" yestext="Aplicar los cambios"/> + </notification> + <notification name="MustSpecifyGroupNoticeSubject"> + Para enviar un aviso de grupo debe especificar un asunto. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="AddGroupOwnerWarning"> + Va a añadir miembros al rol de [ROLE_NAME]. +No podrá removérseles de ese rol, sino que deberán renunciar a él por sà mismos. +¿Está seguro de que quiere seguir? + <usetemplate ignoretext="Cuando se añaden miembros del grupo al rol de propietario" name="okcancelignore" notext="No" yestext="SÃ"/> + </notification> + <notification name="AssignDangerousActionWarning"> + Va a añadir la capacidad '[ACTION_NAME]' al rol '[ROLE_NAME]'. + + *ATENCIÓN* + Todos los miembros con esta capacidad podrán asignarse a sà mismos -y a otros miembros- roles con mayores poderes de los que actualmente tienen. Potencialmente, podrÃan elevarse hasta poderes cercanos a los del propietario. Asegúrese de lo que está haciendo antes de otorgar esta capacidad. +¿Añadir esta capacidad a '[ROLE_NAME]'? + <usetemplate name="okcancelbuttons" notext="No" yestext="SÃ"/> + </notification> + <notification name="AssignDangerousAbilityWarning"> + Va a añadir la capacidad '[ACTION_NAME]' al rol '[ROLE_NAME]'. + + *ATENCIÓN* + Todos los miembros con esta capacidad podrán asignarse a sà mismos -y a otros miembros- todas las capacidades, elevándose hasta poderes cercanos a los del propietario. +¿Añadir esta capacidad a '[ROLE_NAME]'? + <usetemplate name="okcancelbuttons" notext="No" yestext="SÃ"/> + </notification> + <notification name="ClickPublishHelpLand"> + Seleccionar "Publicar en la web" +Marcando este Ãtem, se mostrará: +- esta parcela en los resultados de la búsqueda +- los objetos públicos de esta parcela +- esta parcela en la búsqueda de la web + </notification> + <notification name="ClickSoundHelpLand"> + Los media y la música sólo pueden disfrutarse dentro de la parcela. Según el nivel de calificación de los residentes, las opciones de sonido y de voz pueden ceñirse a la parcela u oÃrse fuera de ella. ¿Quiere ir a la Base de Conocimientos para aprender más sobre cómo configurar estas opciones? + <url name="url"> + https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=5046 + </url> + <usetemplate + name="okcancelbuttons" + yestext="Ir a la Base de Conocimientos" + notext="Cerrar" /> + </notification> + <notification name="ClickSearchHelpAll"> + Los resultados de la búsqueda se organizan según la pestaña en que esté, su nivel de calificación, la categorÃa elegida, y otros factores. Para más detalles, vea, por favor, la Base de Conocimientos. + <url name="url"> + https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=4722 + </url> + <usetemplate + name="okcancelbuttons" + yestext="Ir a la Base de Conocimientos" + notext="Cerrar" /> + </notification> + <notification name="ClickPublishHelpLandDisabled"> + No puede hacer que esta parcela aparezca en la búsqueda, porque está situada en una región que lo prohÃbe. + </notification> + <notification name="ClickPublishHelpAvatar"> + Al seleccionar "Mostrar en Buscar" se mostrará: +- mi perfil en los resultados de la búsqueda +- un enlace a mi perfil en las páginas públicas de grupo + </notification> + <notification name="ClickPartnerHelpAvatar"> + Puede proponérselo a otro residente o disolver su relación con un/a compañero/a en el sitio web de [SECOND_LIFE]. + +¿Ir al sitio web de Second Life para tener más información sobre este asunto? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Ir a la página"/> + </notification> + <notification name="ClickUploadHelpPermissions"> + Sus permisos por defecto no funcionarán en regiones antiguas. + </notification> + <notification name="ClickWebProfileHelpAvatar"> + Si este residente ha indicado una URL para mostrar un perfil en la web, usted puede: + * Pulsar 'Cargar' para ver la página en esta pestaña web. + * Pulsar Cargar > 'En un navegador externo' para ver la página en su navegador por defecto. + * Pulsar Cargar > 'URL Inicio' para volver al perfil en la web de este residente si usted ha estado navegando por otros sitios. + +Cuando esté viendo su propio perfil, puede introducir cualquier URL como su perfil web, y pulsar OK para fijarla. +Los demás residentes podrán visitar la URL que usted haya elegido cuando vean su perfil. + </notification> + <notification name="JoinGroupCanAfford"> + Entrar a este grupo cuesta [COST] L$. +¿Quiere hacerlo?? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Entrar"/> + </notification> + <notification name="JoinGroupCannotAfford"> + Entrar a este grupo cuesta [COST] L$. +No tiene dinero suficiente para entrar. + </notification> + <notification name="LandBuyPass"> + Por [COST] L$ puede entrar a este terreno ('[PARCEL_NAME]') durante [TIME] horas. ¿Comprar un pase? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="SalePriceRestriction"> + El precio de venta tiene que ser mayor de 0 L$ si la venta es a cualquiera. +Por favor, elija a alguien concreto como comprador si la venta es por 0 L$. + </notification> + <notification name="ConfirmLandSaleChange"> + Los [LAND_SIZE] m² de terreno seleccionados se van a poner a la venta. +Su precio de venta será de [SALE_PRICE] L$, y se autorizará la compra sólo a [NAME]. + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="ConfirmLandSaleToAnyoneChange"> + ATENCIÓN: Al pulsar 'vender a cualquiera', su terreno estará disponible para toda la comunidad de Second Life, incluso para quienes no están en esta región. + +Los [LAND_SIZE] m² de terreno seleccionados se van a poner a la venta. +Su precio de venta será de [SALE_PRICE] L$, y se autorizará la compra a [NAME]. + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="ReturnObjectsDeededToGroup"> + ¿Está seguro de que quiere devolver todos los objetos de esta parcela que estén compartidos con el grupo '[NAME]' al inventario de su propietario anterior? + +*ATENCIÓN* ¡Esto borrará los objetos no transferibles que se hayan cedido al grupo! + +Objetos: [N] + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="ReturnObjectsOwnedByUser"> + ¿Está seguro de que quiere devolver al inventario de '[NAME]' todos los objetos que sean de su propiedad en esta parcela? + +Objetos: [N] + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="ReturnObjectsOwnedBySelf"> + ¿Está seguro de que quiere devolver a su inventario todos los objetos de los que usted es propietario en esta parcela? + +Objetos: [N] + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="ReturnObjectsNotOwnedBySelf"> + ¿Está seguro de que quiere devolver todos los objetos de los que usted NO es propietario en esta parcela al inventario de sus propietarios? +Los objetos transferibles que se hayan transferido al grupo se devolverán a sus propietarios previos. + +*ATENCIÓN* ¡Esto borrará los objetos no transferibles que se hayan cedido al grupo! + +Objetos: [N] + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="ReturnObjectsNotOwnedByUser"> + ¿Está seguro de que quiere devolver todos los objetos de esta parcela que NO sean propiedad de [NAME] al inventario de su propietario? +Los objetos transferibles que se hayan transferido al grupo se devolverán a sus propietarios previos. + +*ATENCIÓN* ¡Esto borrará los objetos no transferibles que se hayan cedido al grupo! + +Objetos: [N] + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="ReturnAllTopObjects"> + ¿Está seguro de que quiere devolver al inventario de su propietario todos los objetos de la lista? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="DisableAllTopObjects"> + ¿Está seguro de que quiere desactivar todos los objetos de esta región? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="ReturnObjectsNotOwnedByGroup"> + ¿Devolver a sus propietarios los objetos de esta parcela que NO estén compartidos con el grupo [NAME]? + +Objetos: [N] + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="UnableToDisableOutsideScripts"> + No se pueden desactivar los scripts. +Toda esta región tiene activado el 'daño'. +Para que funcionen las armas los scripts deben estar activados. + </notification> + <notification name="MustBeInParcel"> + Para configurar el Punto de llegada de la parcela, +debe estar usted dentro de ella. + </notification> + <notification name="PromptRecipientEmail"> + Por favor, escriba una dirección de correo electrónica válida para el/los receptor/es. + </notification> + <notification name="PromptSelfEmail"> + Por favor, escriba su dirección de correo electrónico. + </notification> + <notification name="PromptMissingSubjMsg"> + ¿Foto por correo electrónico con el asunto o el mensaje por defecto? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="ErrorProcessingSnapshot"> + Error al procesar los datos de la foto. + </notification> + <notification name="ErrorEncodingSnapshot"> + Error al codificar la foto. + </notification> + <notification name="ErrorUploadingPostcard"> + Hubo un problema al enviar la foto por la siguiente razón: [REASON] + </notification> + <notification name="ErrorUploadingReportScreenshot"> + Hubo un problema al subir la captura de pantalla del informe por la siguiente razón: [REASON] + </notification> + <notification name="MustAgreeToLogIn"> + Debe estar de acuerdo con las Condiciones del Servicio para continuar el inicio de sesión en [SECOND_LIFE]. + </notification> + <notification name="CouldNotPutOnOutfit"> + No se ha podido ponerle el vestuario. +La carpeta del vestuario contiene partes del cuerpo, u objetos a anexar o que no son ropa. + </notification> + <notification name="CannotWearTrash"> + No puede vestirse ropas o partes del cuerpo que están en la Papelera + </notification> + <notification name="CannotWearInfoNotComplete"> + No puede vestirse este Ãtem porque aún no se ha cargado. Por favor, reinténtelo en un minuto. + </notification> + <notification name="MustHaveAccountToLogIn"> + ¡Vaya! Algo se quedó en blanco. +Debe escribir tanto el nombre como el apellido de su avatar, los dos. + +Necesita una cuenta para entrar en [SECOND_LIFE]. ¿Quiere crear una ahora? + <usetemplate name="okcancelbuttons" notext="Volver a intentarlo" yestext="Crear una cuenta nueva"/> + </notification> + <notification name="AddClassified"> + Los anuncios clasificados aparecen durante una semana en la sección 'Clasificados' del directorio Buscar y en www.secondlife.com. +Rellene su anuncio y pulse 'Publicar...' para añadirlo al directorio. +Cuando pulse Publicar, se le preguntará por un precio a pagar. +El pagar más hará que su anuncio aparezca más arriba en la lista, y que también aparezca más arriba cuando la gente busque por palabras clave. + <usetemplate ignoretext="Cuando se añade un nuevo Clasificado" name="okcancelignore" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="DeleteClassified"> + ¿Borrar el clasificado '[NAME]'? +No se reembolsan las cuotas pagadas. + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="ClassifiedSave"> + ¿Guardar los cambios en el clasificado [NAME]? + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="No guardar" yestext="Guardar"/> + </notification> + <notification name="DeleteAvatarPick"> + ¿Borrar el destacado [PICK]? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="PromptGoToEventsPage"> + ¿Ir a la web de eventos de [SECOND_LIFE]? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="SelectProposalToView"> + Por favor, seleccione qué propuesta quiere ver. + </notification> + <notification name="SelectHistoryItemToView"> + Por favor, seleccione un Ãtem del historial para verlo. + </notification> + <notification name="ResetShowNextTimeDialogs"> + ¿Quiere reactivar todas estas ventanas emergentes, incluso las que marcó previamente como 'No mostrarme más esto'? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="SkipShowNextTimeDialogs"> + ¿Quiere activar todas las ventanas emergentes que puedan habilitarse? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="CacheWillClear"> + La caché se limpiará cuando reinicie [SECOND_LIFE]. + </notification> + <notification name="CacheWillBeMoved"> + La caché se moverá cuando reinicie [SECOND_LIFE]. +Nota: esto limpiará la caché. + </notification> + <notification name="ChangeConnectionPort"> + Las configuraciones del puerto tendrán efecto cuando reinicie [SECOND_LIFE]. + </notification> + <notification name="ChangeSkin"> + La nueva apariencia se verá cuando reinicie [SECOND_LIFE]. + </notification> + <notification name="GoToAuctionPage"> + ¿Ir a la página web de [SECOND_LIFE] para ver los detalles de la subasta +o hacer una puja? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="SaveChanges"> + ¿Guardar los cambios? + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="No guardar" yestext="Guardar"/> + </notification> + <notification name="GestureSaveFailedTooManySteps"> + Fallo al guardar el gesto. +Este gesto tiene demasiados pasos. +Intente quitarle algunos, y vuelva a guardarlo. + </notification> + <notification name="GestureSaveFailedTryAgain"> + Fallo al guardar el gesto. Por favor, reinténtelo en un minuto. + </notification> + <notification name="GestureSaveFailedObjectNotFound"> + No se ha podido guardar el gesto porque no se pudo encontrar el objeto o el objeto asociado. +El objeto debe de haber sido borrado o estar fuera de rango ('out of range'). + </notification> + <notification name="GestureSaveFailedReason"> + Al guardar un gesto, hubo un problema por: [REASON]. Por favor, reintente guardarlo más tarde. + </notification> + <notification name="SaveNotecardFailObjectNotFound"> + No se ha podido guardar la nota porque no se pudo encontrar el objeto o el objeto asociado del inventario. +El objeto debe de haber sido borrado o estar fuera de rango ('out of range'). + </notification> + <notification name="SaveNotecardFailReason"> + Al guardar una nota, hubo un problema por: [REASON]. Por favor, reintente guardarla más tarde. + </notification> + <notification name="ScriptCannotUndo"> + No se han podido deshacer todos los cambios en su versión del script. +¿Quiere cargar la última versión guardada en el servidor? +(**Cuidado** No podrá deshacer esta operación). + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="SaveScriptFailReason"> + Al guardar un script, hubo un problema por: [REASON]. Por favor, reintente guardarlo más tarde. + </notification> + <notification name="SaveScriptFailObjectNotFound"> + No se ha podido guardar el script porque no se pudo encontrar el objeto que incluye. +El objeto debe de haber sido borrado o estar fuera de rango ('out of range').. + </notification> + <notification name="SaveBytecodeFailReason"> + Al guardar un script compilado, hubo un problema por: [REASON]. Por favor, reintente guardarlo más tarde.. + </notification> + <notification name="CouldNotStartStopScript"> + No se ha podido correr o parar el script porque no se pudo encontrar el objeto que incluye. +El objeto debe de haber sido borrado o estar fuera de rango ('out of range').. + </notification> + <notification name="CannotDownloadFile"> + No se ha podido descargar el archivo. + </notification> + <notification name="CannotWriteFile"> + No se ha podido escribir el archivo [[FILE]] + </notification> + <notification name="UnsupportedHardware"> + Atención: su sistema no tiene los requerimientos mÃnimos que necesita Second Life. Si sigue usando Second Life, tendrá un funcionamiento pobre. Desafortunadamente, no podemos ofrecer soporte técnico para configuraciones inadecuadas del sistema. + +MINSPECS +Para más información, ¿quiere visitar [_URL]? + <url name="url" option="0"> + http://secondlife.com/support/sysreqs.php?lang=es + </url> + <usetemplate ignoretext="Cuando se detecte hardware no adecuado" name="okcancelignore" notext="No" yestext="SÃ"/> + </notification> + <notification name="UnknownGPU"> + En este momento, desconocemos la tarjeta gráfica de su sistema. +Con frecuencia, esto se debe a hardware nuevo que no hemos podido revisar aún. +Es muy probable que Second Life funcione correctamente, pero deberá ajustar sus configuraciones gráficas a lo que sea más apropiado. +(Menú Editar > Preferencias > Gráficos). + <form name="form"> + <ignore name="ignore" text="Cuando se detecte una tarjeta gráfica desconocida"/> + </form> + </notification> + <notification name="DisplaySettingsNoShaders"> + [SECOND_LIFE] se cayó al inicializar los drivers gráficos. +La calidad de los gráficos deberá establecerse en un nivel bajo para prevenir algunos errores frecuentes en los drivers. +Esto desactivará algunas opciones gráficas. +Le recomendamos que actualice los drivers de su tarjeta gráfica. +La calidad gráfica puede configurarse en Preferencias > Gráficos. + </notification> + <notification name="RegionNoTerraforming"> + En la región [REGION] no se permite modificar el terreno. + </notification> + <notification name="CannotCopyWarning"> + No tiene permiso para copiar este Ãtem. +Si lo da, lo perderá de su inventario. +¿Realmente quiere darlo? + <usetemplate name="okcancelbuttons" notext="No" yestext="SÃ"/> + </notification> + <notification name="CannotGiveItem"> + No se ha podido dar el Ãtem del inventario. + </notification> + <notification name="TransactionCancelled"> + Transacción cancelada. + </notification> + <notification name="TooManyItems"> + En una única transferencia del inventario, no puede dar más de 42 Ãtems. + </notification> + <notification name="NoItems"> + No tiene permiso para transferir el Ãtem seleccionado. + </notification> + <notification name="CannotCopyCountItems"> + No tiene permiso para copiar [COUNT] de los +Ãtems seleccionados. Si los da, los perderá de su inventario. +¿Realmente quiere darlos? + <usetemplate name="okcancelbuttons" notext="No" yestext="SÃ"/> + </notification> + <notification name="CannotGiveCategory"> + No tiene permiso para transferir +la carpeta seleccionada. + </notification> + <notification name="FreezeAvatar"> + ¿Congelar a este avatar? +Temporalmente, será incapaz de moverse, usar el chat, o interactuar con el mundo. + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Descongelarle" yestext="Congelarle"/> + </notification> + <notification name="FreezeAvatarFullname"> + ¿Congelar a [AVATAR_NAME]? +Temporalmente, será incapaz de moverse, usar el chat, o interactuar con el mundo. + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Descongelarle" yestext="Congelarle"/> + </notification> + <notification name="EjectAvatarFullname"> + ¿Expulsar a [AVATAR_NAME] de su terreno? + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Expulsar y Prohibir el acceso" yestext="Expulsar"/> + </notification> + <notification name="EjectAvatarNoBan"> + ¿Expulsar a este avatar de su terreno? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Expulsar"/> + </notification> + <notification name="EjectAvatarFullnameNoBan"> + ¿Expulsar a [AVATAR_NAME] de su terreno? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Expulsar"/> + </notification> + <notification name="AcquireErrorTooManyObjects"> + ERROR 'ACQUIRE': Hay demasiados objetos seleccionados. + </notification> + <notification name="AcquireErrorObjectSpan"> + ERROR 'ACQUIRE': Los objetos están en más de una región. +Por favor, mueva todos los objetos a adquirir a la +misma región. + </notification> + <notification name="PromptGoToCurrencyPage"> + [EXTRA] + +¿Ir a [URL] para informarse sobre la compra de moneda? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="UnableToLinkObjects"> + No se pudo enlazar estos [COUNT] objetos. +Puede enlazar [MAX] objetos como máximo. + </notification> + <notification name="CannotLinkIncompleteSet"> + Sólo puede enlazar objetos completos (no sus partes), y debe +seleccionar más de uno. + </notification> + <notification name="CannotLinkModify"> + Imposible enlazarlos, porque no tiene permiso para modificar +todos los objetos. + +Por favor, asegúrese de que no hay ninguno bloqueado, y de que es el propietario de todos. + </notification> + <notification name="CannotLinkDifferentOwners"> + Imposible enlazarlos, porque hay objetos de distintos propietarios. + +Por favor, asegúrese de que es propietario de todos los objetos seleccionados. + </notification> + <notification name="NoFileExtension"> + No hay extensión de archivo en: '[FILE]' + +Por favor, asegúrese de que la extensión del archivo es correcta. + </notification> + <notification name="InvalidFileExtension"> + Extensión inválida de archivo: [EXTENSION] +PodrÃa ser [VALIDS] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="CannotUploadSoundFile"> + Ni se pudo abrir el archivo de sonido que se ha subido para leer: +[FILE] + </notification> + <notification name="SoundFileNotRIFF"> + No parece que el archivo sea un archivo RIFF WAVE: +[FILE] + </notification> + <notification name="SoundFileNotPCM"> + No parece que el archivo sea un archivo de audio PCM WAVE: +[FILE] + </notification> + <notification name="SoundFileInvalidChannelCount"> + El archivo no tiene un número de canales válido (debe ser mono o estéreo): +[FILE] + </notification> + <notification name="SoundFileInvalidSampleRate"> + No parece que el archivo tenga una frecuencia de muestreo (sample rate) adecuada (debe de ser 44.1k): +[FILE] + </notification> + <notification name="SoundFileInvalidWordSize"> + No parece que el archivo tenga un tamaño de palabra (word size) adecuado (debe de ser de 8 o 16 bites): +[FILE] + </notification> + <notification name="SoundFileInvalidHeader"> + No se encontró el fragmento 'data' en la cabecera del WAV: +[FILE] + </notification> + <notification name="SoundFileInvalidTooLong"> + El archivo de audio es demasiado largo (10 segundos como máximo): +[FILE] + </notification> + <notification name="ProblemWithFile"> + Problemas con el archivo [FILE]: + +[ERROR] + </notification> + <notification name="CannotOpenTemporarySoundFile"> + No se ha podido abrir para su escritura el archivo comprimido de sonido: [FILE] + </notification> + <notification name="UnknownVorbisEncodeFailure"> + Códec Vorbis desconocido, fallo en : [FILE] + </notification> + <notification name="CannotEncodeFile"> + No se puede codificar el archivo: [FILE] + </notification> + <notification name="CorruptResourceFile"> + Archivo con los recursos corruptos: [FILE] + </notification> + <notification name="UnknownResourceFileVersion"> + Versión de archivo desconocida para el recurso Linden en el archivo: [FILE] + </notification> + <notification name="UnableToCreateOutputFile"> + No se ha podido crear el archivo de salida: [FILE] + </notification> + <notification name="DoNotSupportBulkAnimationUpload"> + Actualmente, no ofrecemos la posibilidad de subida masiva de archivos de animación. + </notification> + <notification name="CannotUploadReason"> + No se ha podido subir [FILE] por la siguiente razón: [REASON] +Por favor, inténtelo más tarde. + </notification> + <notification name="CannotCreateLandmarkNotOwner"> + No puede crear un hito aquà porque el propietario del terreno no lo permite. + </notification> + <notification name="CannotRecompileSelectObjectsNoScripts"> + No se pudo 'recompilar'. +Seleccione un objeto con script. + </notification> + <notification name="CannotRecompileSelectObjectsNoPermission"> + No se pudo 'recompilar'. + +Seleccione objetos con scripts en los que usted tenga permiso para modificarlos. + </notification> + <notification name="CannotResetSelectObjectsNoScripts"> + No se pudo 'reiniciar'. + +Seleccione objetos con scripts. + </notification> + <notification name="CannotResetSelectObjectsNoPermission"> + No se pudo 'reiniciar'. + +Seleccione objetos con scripts en los que usted tenga permiso para modificarlos. + </notification> + <notification name="CannotSetRunningSelectObjectsNoScripts"> + No se puede configurar ningún script como 'ejecutándose'. + +Seleccione objetos con scripts. + </notification> + <notification name="CannotSetRunningNotSelectObjectsNoScripts"> + No se puede configurar ningún script como 'no ejecutándose'. + +Seleccione objetos con scripts. + </notification> + <notification name="NoFrontmostFloater"> + No hay nada a guardar. + </notification> + <notification name="SeachFilteredOnShortWords"> + Se ha modificado su búsqueda, +eliminando las palabras demasiado cortas. + +Buscando: [FINALQUERY] + </notification> + <notification name="SeachFilteredOnShortWordsEmpty"> + Los términos de su búsqueda son muy cortos, +por lo que no se ha hecho la búsqueda. + </notification> + <notification name="CouldNotTeleportReason"> + No se ha podido teleportar. +[REASON] + </notification> + + <notification name="invalid_tport"> +Ha habido un problema al procesar su petición de teleporte. Debe volver a iniciar sesión para poder teleportarse. Si le sigue apareciendo este mensaje, revise, por favor, las preguntas frecuentes en el Soporte técnico: +www.secondlife.com/support + </notification> + <notification name="invalid_region_handoff"> +Ha habido un problema al procesar su paso a otra región. Debe volver a iniciar sesión para poder pasar de región a región. Si le sigue apareciendo este mensaje, revise, por favor, las preguntas frecuentes en el Soporte técnico: +www.secondlife.com/support + </notification> + <notification name="blocked_tport"> +Lo sentimos, en estos momentos los teleportes están bloqueados. Vuelva a intentarlo en un momento. Si sigue sin poder teleportarse, desconéctese y vuelva a iniciar sesión para solucionar el problema. + </notification> + <notification name="nolandmark_tport"> +Lo sentimos, pero el sistema no ha podido localizar el destino de este hito. + </notification> + <notification name="timeout_tport"> +Lo sentimos, pero el sistema no ha podido completar el teleporte. +Vuelva a intentarlo en un momento. + </notification> + <notification name="noaccess_tport"> +Lo sentimos, pero usted no tiene acceso al destino de este teleporte. + </notification> + <notification name="missing_attach_tport"> +Aún no han llegado sus objetos anexados. Espere unos segundos más o desconéctese y vuelva a iniciar sesión antes de teleportarse. + </notification> + <notification name="too_many_uploads_tport"> +La cola de espera en esta región está actualmente obstruida, por lo que su petición de teleporte no se atenderá en un tiempo prudencial. Por favor, vuelva a intentarlo en unos minutos o vaya a una zona menos ocupada. + </notification> + <notification name="expired_tport"> +Lo sentimos, pero el sistema no ha podido atender a su petición de teleporte en un tiempo prudencial. Por favor, vuelva a intentarlo en unos pocos minutos. + </notification> + <notification name="expired_region_handoff"> +Lo sentimos, pero el sistema no ha podido completar su paso a otra región en un tiempo prudencial. Por favor, vuelva a intentarlo en unos pocos minutos. + </notification> + <notification name="no_host"> +Ha sido imposible encontrar el destino del teleporte: o está desactivado temporalmente o ya no existe. Por favor, vuelva a intentarlo en unos pocos minutos. + </notification> + <notification name="no_inventory_host"> +En estos momentos no está disponible el sistema del inventario. + </notification> + + + <notification name="CannotSetLandOwnerNothingSelected"> + No se ha podido configurar el propietario del terreno: +no se ha seleccionado una parcela. + </notification> + <notification name="CannotSetLandOwnerMultipleRegions"> + No se ha podido obtener la propiedad del terreno porque la selección se extiende por varias regiones. Por favor, seleccione un área más pequeña y reinténtelo. + </notification> + <notification name="ForceOwnerAuctionWarning"> + Está parcela está siendo subastada. Forzar su propiedad cancelará la subasta y, probablemente, disguste a algunos residentes que ya hayan empezado a pujar. ¿Forzar la propiedad? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="CannotContentifyNothingSelected"> + No se ha podido 'contentify': +no se ha seleccionado una parcela. + </notification> + <notification name="CannotContentifyNoRegion"> + No se ha podido 'contentify': +no se ha seleccionado una región. + </notification> + <notification name="CannotReleaseLandNothingSelected"> + No se ha podido abandonar el terreno: +no se ha seleccionado una parcela. + </notification> + <notification name="CannotReleaseLandNoRegion"> + No se ha podido abandonar el terreno: +no se ha podido encontrar la región. + </notification> + <notification name="CannotBuyLandNothingSelected"> + Imposible comprar terreno: +no se ha seleccionado una parcela. + </notification> + <notification name="CannotBuyLandNoRegion"> + Imposible comprar terreno: +no se ha podido encontrar en qué región está. + </notification> + <notification name="CannotCloseFloaterBuyLand"> + No puede cerrar la ventana de Comprar terreno hasta que Second Life calcule el precio de esta transacción. + </notification> + <notification name="CannotDeedLandNothingSelected"> + No se ha podido transferir el terreno: +no se ha seleccionado una parcela. + </notification> + <notification name="CannotDeedLandNoGroup"> + No se ha podido transferir el terreno: +no ha seleccionado un grupo. + </notification> + <notification name="CannotDeedLandNoRegion"> + No se ha podido transferir el terreno: +Ha sido imposible encontrar en qué región está. +Por favor, para informar de esto use Herramientas -> Informar de un fallo. + </notification> + <notification name="CannotDeedLandMultipleSelected"> + No se ha podido transferir el terreno: +ha seleccionado varias parcelas. + +Inténtelo seleccionando sólo una. + </notification> + <notification name="ParcelCanPlayMedia"> + Esta localización puede mostrar media en streaming. +Los media en streaming necesitan una conexión a internet rápida. + +Si hay media, ¿reproducirlos en streaming? +(Puede cambiar más adelante esta opción en Preferencias > Audio y VÃdeo). + <usetemplate name="okcancelbuttons" notext="Desactivar" yestext="Ejecutar los media"/> + </notification> + <notification name="CannotDeedLandWaitingForServer"> + No se ha podido transferir el terreno: +esperando que el servidor informe acerca de la propiedad. + +Por favor, vuelva a intentarlo. + </notification> + <notification name="CannotDeedLandNoTransfer"> + No se ha podido transferir el terreno: +En la región [REGION] no se permite transferir terrenos. + </notification> + <notification name="CannotReleaseLandWatingForServer"> + No se ha podido abandonar el terreno: +esperando que el servidor actualice la información de la parcela. + +Vuelva a intentarlo en unos segundos. + </notification> + <notification name="CannotReleaseLandSelected"> + No se ha podido abandonar el terreno: +no es propietario de todas las parcelas seleccionadas. + +Por favor, seleccione una sola parcela. + </notification> + <notification name="CannotReleaseLandDontOwn"> + No se ha podido abandonar el terreno: +no tiene permisos sobre esta parcela. +Las parcelas de su propiedad se muestran en verde. + </notification> + <notification name="CannotReleaseLandRegionNotFound"> + No se ha podido abandonar el terreno: +Ha sido imposible encontrar en qué región está. + +Por favor, para informar de esto use Herramientas > Informar de un fallo. + </notification> + <notification name="CannotReleaseLandNoTransfer"> + No se ha podido abandonar el terreno: +En la región [REGION] no se permite transferir terrenos. + </notification> + <notification name="CannotReleaseLandPartialSelection"> + No se ha podido abandonar el terreno: +debe seleccionar toda la parcela. + +Seleccione una parcela completa, o divÃdala primero. + </notification> + <notification name="ReleaseLandWarning"> + Va a abandonar [AREA] m² de terreno. +Al hacerlo, la quitará de entre sus posesiones de terreno, pero no recibirá ningún L$. + +¿Abandonar este terreno? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="CannotDivideLandNothingSelected"> + No se ha podido dividir el terreno: + +No ha seleccionado ninguna parcela. + </notification> + <notification name="CannotDivideLandPartialSelection"> + No se ha podido dividir el terreno: + +Ha seleccionado una parcela entera. +Inténtelo seleccionando una parte. + </notification> + <notification name="LandDivideWarning"> + Dividir este terreno lo separará en dos parcelas, cada una de las cuales tendrá su propia configuración. Tras esta operación, algunas configuraciones volverán a las existentes por defecto. + +¿Dividir el terreno? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="CannotDivideLandNoRegion"> + No se ha podido dividir el terreno: +Ha sido imposible encontrar en qué región está. + +Por favor, para informar de esto use Herramientas -> Informar de un fallo. + </notification> + <notification name="CannotJoinLandNoRegion"> + No se ha podido unir el terreno: +Ha sido imposible encontrar en qué región está. + +Por favor, para informar de esto use Herramientas -> Informar de un fallo. + </notification> + <notification name="CannotJoinLandNothingSelected"> + No se ha podido unir el terreno: +No hay parcelas seleccionadas. + </notification> + <notification name="CannotJoinLandEntireParcelSelected"> + No se ha podido unir el terreno: +Sólo ha seleccionado una parcela. + +Seleccione terreno que incluya algo de ambas parcelas. + </notification> + <notification name="CannotJoinLandSelection"> + No se ha podido unir el terreno: +Debe seleccionar más de una parcela. + +Seleccione terreno que incluya algo de ambas parcelas. + </notification> + <notification name="JoinLandWarning"> + Al unir este terreno creará una parcela más grande formada por todas aquellas que tengan parte en el rectángulo seleccionado. +Deberá reconfigurar el nombre y las opciones de la nueva parcela. + +¿Unir el terreno? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="ShowOwnersHelp"> + Mostrar los propietarios: +El color de las parcelas indica el tipo de propietario. + +Verde = Su terreno +Agua = Terreno de su's grupo's +Rojo = Propiedad de otros +Amarillo = En venta +Morado = Para subasta +Gris = Público + </notification> + <notification name="ConfirmNotecardSave"> + Esta nota debe guardarse antes de que se la pueda copiar o ver. ¿Guardar la nota? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="ConfirmItemCopy"> + ¿Copiar este Ãtem a su inventario? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Copiar"/> + </notification> + <notification name="ResolutionSwitchFail"> + Fallo al cambiar la resolución a [RESX] por [RESY] + </notification> + <notification name="ErrorUndefinedGrasses"> + Error, hierbas no definidas: [SPECIES] + </notification> + <notification name="ErrorUndefinedTrees"> + Error, árboles no definidos: [SPECIES] + </notification> + <notification name="CannotSaveWearableOutOfSpace"> + No se ha podido guardar el archivo '[NAME]'. Tendrá que liberar algo de espacio en su ordenador y guardarlo de nuevo. + </notification> + <notification name="CannotSaveToAssetStore"> + No se ha podido guardar [NAME] en la base central de almacenamiento. +Esto es, generalmente, un fallo temporal. Por favor, reinténtelo en unos pocos minutos. + +Si persiste el problema, por favor, pulse en en el menú 'Herramientas > Informar de un fallo' y aporte detalles sobre la configuración de su conexión. + </notification> + <notification name="YouHaveBeenLoggedOut"> + Se ha cerrado su sesión en [SECOND_LIFE]: + [MESSAGE] +Aún puede ver el chat y los MI existentes pulsando 'Ver MI y Chat'. Si no, pulse 'Salir' para dejar inmediatemente [SECOND_LIFE]. + <usetemplate name="okcancelbuttons" notext="Salir" yestext="Ver MI y Chat"/> + </notification> + <notification name="OnlyOfficerCanBuyLand"> + No se ha podido comprar terreno para el grupo: +usted no tiene el permiso de comprar terreno para el grupo que tiene activado actualmente. + </notification> + <notification label="Añadir como amigo" name="AddFriend"> + Los amigos pueden darse permiso para localizarse en el mapa y para saber si el otro está conectado. + +¿Ofrecer a [NAME] que sea su amigo? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification label="Añadir como amigo" name="AddFriendWithMessage"> + Los amigos pueden darse permiso para localizarse en el mapa y para saber si el otro está conectado. + +¿Ofrecer a [NAME] que sea su amigo? + <form name="form"> + <input name="message" type="text"> + ¿Quieres formar parte de mis amigos? + </input> + <button name="Offer" text="OK"/> + <button name="Cancel" text="Cancelar"/> + </form> + </notification> + <notification name="RemoveFromFriends"> + ¿Quiere quitar a [FIRST_NAME] [LAST_NAME] de su lista de amigos? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="RemoveMultipleFromFriends"> + ¿Quiere quitar a varios amigos de su lista de amigos? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="GodDeleteAllScriptedPublicObjectsByUser"> + ¿Está seguro de que quiere borrar todos los objetos con script que sean propiedad de +** [AVATAR_NAME] ** +en todos los otros terrenos de este sim? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="GodDeleteAllScriptedObjectsByUser"> + ¿Está seguro de que quiere BORRAR TODOS los objetos con script que sean propiedad de +** [AVATAR_NAME] ** +en TODO EL TERRENO de este sim? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="GodDeleteAllObjectsByUser"> + ¿Está seguro de que quiere BORRAR TODOS los objetos (con script o no) que sean propiedad de +** [AVATAR_NAME] ** +en TODO EL TERRENO de este sim? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="BlankClassifiedName"> + Debe especificar un nombre para su clasificado. + </notification> + <notification name="MinClassifiedPrice"> + El pago para aparecer en la lista debe ser de, al menos, [MIN_PRICE] L$. + +Por favor, elija un pago mayor. + </notification> + <notification name="ConfirmObjectDeleteLock"> + Al menos uno de los Ãtems que ha seleccionado está bloqueado. + +¿Está seguro de que quiere borrar estos Ãtems? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="ConfirmObjectDeleteNoCopy"> + Al menos uno de los Ãtems que ha seleccionado no es copiable. + +¿Está seguro de que quiere borrar estos Ãtems? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="ConfirmObjectDeleteNoOwn"> + No es el propietario de, al menos, uno de los Ãtems que ha seleccionado. + +¿Está seguro de que quiere borrar estos Ãtems? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="ConfirmObjectDeleteLockNoCopy"> + Al menos un objeto está bloqueado. +Al menos un objeto no es copiable. + +¿Está seguro de que quiere borrar estos Ãtems? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="ConfirmObjectDeleteLockNoOwn"> + Al menos un objeto está bloqueado. +No es propietario de, al menos, un objeto. + +¿Está seguro de que quiere borrar estos Ãtems? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="ConfirmObjectDeleteNoCopyNoOwn"> + Al menos un objeto no es copiable. +No es propietario de, al menos, un objeto. + +¿Está seguro de que quiere borrar estos Ãtems? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="ConfirmObjectDeleteLockNoCopyNoOwn"> + Al menos un objeto está bloqueado. +Al menos un objeto no es copiable. +No es propietario de, al menos, un objeto. + +¿Está seguro de que quiere borrar estos Ãtems? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="ConfirmObjectTakeLock"> + Al menos un objeto está bloqueado. + +¿Está seguro de que quiere tomar estos Ãtems? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="ConfirmObjectTakeNoOwn"> + No es el propietario de todos los objetos que está tomando. +Si sigue, se aplicarán los permisos marcados para el próximo propietario, y es posible que se restrinja su posibilidad de hacer modificaciones o copias. + +¿Está seguro de que quiere tomar estos Ãtems? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="ConfirmObjectTakeLockNoOwn"> + Al menos un objeto está bloqueado. +No es el propietario de todos los objetos que está tomando. +Si sigue, se aplicarán los permisos marcados para el próximo propietario, y es posible que se restrinja su posibilidad de hacer modificaciones o copias +Con todo, puede tomar lo actualmente seleccionado. + +¿Está seguro de que quiere tomar estos Ãtems? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="CantBuyLandAcrossMultipleRegions"> + No se ha podido hacer la compra porque el terreno seleccionado se extiende por varias regiones. + +Por favor, seleccione un área más pequeña y reinténtelo. + </notification> + <notification name="DeedLandToGroup"> + Al transferir esta parcela, se requerirá al grupo que tenga y mantenga el crédito suficiente para uso de terreno. +El precio de compra de la parcela no se reembolsa al propietario. +Si se vende una parcela transferida, el precio de venta se dividirá a partes iguales entre los miembros del grupo. + +¿Transferir estos [AREA] m² de terreno al grupo +'[GROUP_NAME]'? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="DeedLandToGroupWithContribution"> + Al transferir esta parcela, se requerirá al grupo que tenga y mantenga el crédito suficiente para uso de terreno. +La tranferencia incluirá, a la vez, una contribucÃon de terreno al grupo de '[FIRST_NAME] [LAST_NAME]'. +El precio de compra de la parcela no se reembolsa al propietario. +Si se vende una parcela transferida, el precio de venta se dividirá a partes iguales entre los miembros del grupo. + +¿Transferir estos [AREA] m² de terreno al grupo '[GROUP_NAME]'? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="DisplaySetToSafe"> + Las configuraciones que se muestran se han fijado en los niveles guardados, pues usted especificó la opción de guardarlos. + </notification> + <notification name="DisplaySetToRecommended"> + Las configuraciones que se muestran se han fijado en los niveles recomendados para la configuración de su sistema. + </notification> + <notification name="ErrorMessage"> + [ERROR_MESSAGE] + </notification> + <notification name="AvatarMoved"> + Su localización [TYPE] no está disponible en estos momentos. [HELP] +Ha sido llevado a una región cercana. + </notification> + <notification name="ClothingLoading"> + Aún está descargándose su ropa. +Puede usar normalmente [SECOND_LIFE], los demás residentes le verán correctamente. + <form name="form"> + <ignore name="ignore" text="Cuando está llevando mucho tiempo descargar la ropa"/> + </form> + </notification> + <notification name="FirstRun"> + Se ha completado la instalación de [SECOND_LIFE]. + +Si esta es la primera vez que usa [SECOND_LIFE], deberá crear una cuenta antes de que pueda iniciar una sesión. +¿Volver a www.secondlife.com para crear una cuenta nueva? + <usetemplate name="okcancelbuttons" notext="Continuar" yestext="Cuenta nueva..."/> + </notification> + <notification name="LoginPacketNeverReceived"> + Tenemos problemas de conexión. Puede deberse a un problema de su conexión a internet o de los servidores de Second Life. + +Puede revisar su conexión a internet y volver a intentarlo en unos minutos. Pulse Ayuda para conectarse a nuestro sitio de Sporte, o pulse Teleportar para intentar teleportarse a su Base. + <form name="form"> + <button name="OK" text="OK"/> + <button name="Help" text="Ayuda"/> + <button name="Teleport" text="Teleportar"/> + </form> + </notification> + <notification name="WelcomeChooseSex"> + Su personaje aparecerá en un momento. + +Para caminar, use las teclas del cursor. +En cualquier momento, puede pulsar la tecla F1 para conseguir ayuda o para aprender más acerca de [SECOND_LIFE]. +Por favor, elija el avatar masculino o femenino. +Puede cambiar más adelante su elección. + <usetemplate name="okcancelbuttons" notext="Mujer" yestext="Varón"/> + </notification> + <notification name="NotEnoughCurrency"> + [NAME] cuesta [PRICE] L$. No tiene suficientes L$ para hacer eso. + </notification> + <notification name="GrantedModifyRights"> + Se le ha concedido el privilegio de modificar los objetos de [FIRST_NAME] [LAST_NAME]. + </notification> + <notification name="RevokedModifyRights"> + Ha sido revocado su privilegio de modificar los objetos de [FIRST_NAME] [LAST_NAME]. + </notification> + <notification name="FlushMapVisibilityCaches"> + Esto limpiará las caches del mapa en esta región. +Esto sólo es realmente útil para cuestiones de depuración ('debugging'). +(A efectos prácticos, espere 5 minutos, y el mapa de cualquiera se actualizará después de que reinicie sesión). + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="BuyOneObjectOnly"> + No se puede comprar más de un objeto a la vez. Por favor, seleccione sólo un objeto y vuelva a intentarlo. + </notification> + <notification name="OnlyCopyContentsOfSingleItem"> + No se puede copiar a la vez los contenidos de más de un objeto. +Por favor, selección sólo uno y reinténtelo. + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="KickUsersFromRegion"> + ¿Teleportar a su base a todos los residentes en esta región? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="EstateObjectReturn"> + ¿Está seguro de que quiere devolver los objetos propiedad de +[USER_NAME] ? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="InvalidTerrainBitDepth"> + No se han podido configurar las texturas de la región: +La textura del terreno [TEXTURE_NUM] tiene una profundidad de bites inválida: [TEXTURE_BIT_DEPTH]. + +Cambie la textura [TEXTURE_NUM] por una imagen de 24-bit y 512x512 o menor, y pulse de nuevo "Aplicar" . + </notification> + <notification name="InvalidTerrainSize"> + No se han podido configurar las texturas de la región: +La textura del terreno [TEXTURE_NUM] es demasiado grande: [TEXTURE_SIZE_X]x[TEXTURE_SIZE_Y]. + +Cambie la textura [TEXTURE_NUM] por una imagen de 24-bit y 512x512 o menor, y pulse de nuevo "Aplicar" . + </notification> + <notification name="RawUploadStarted"> + Ha empezado la subida. Dependiendo de la velocidad de su conexión, llevará unos dos minutos. + </notification> + <notification name="ConfirmBakeTerrain"> + ¿Realmente quiere predeterminar el terreno actual, haciéndolo el centro de los limites para elevarlo y rebajarlo, y el terreno por defecto para la herramienta 'Revertir'? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="MaxAllowedAgentOnRegion"> + Sólo puede tener [MAX_AGENTS] residentes autorizados. + </notification> + <notification name="MaxBannedAgentsOnRegion"> + Sólo puede tener [MAX_BANNED] residentes no admitidos. + </notification> + <notification name="MaxAgentOnRegionBatch"> + Fallo al intentar añadir [NUM_ADDED] agentes: +Se superan en [NUM_EXCESS] los [MAX_AGENTS] permitidos en [LIST_TYPE]. + </notification> + <notification name="MaxAllowedGroupsOnRegion"> + Sólo puede tener [MAX_GROUPS] grupos permitidos. + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Predeterminar"/> + </notification> + <notification name="MaxManagersOnRegion"> + Sólo puede tener [MAX_MANAGER] administradores del estado. + </notification> + <notification name="OwnerCanNotBeDenied"> + No se puede añadir a la lista de residentes no admitidos al propietario del estado. + </notification> + <notification name="CanNotChangeAppearanceUntilLoaded"> + No puede cambiar la apariencia hasta que no se carguen la ropa y la forma. + </notification> + <notification name="ClassifiedMustBeAlphanumeric"> + El nombre de su anuncio clasificado debe empezar o con un número o con una letra de la A a la Z. No se permiten signos de puntuación. + </notification> + <notification name="CantSetBuyObject"> + No puede configurar el Comprar el objeto, porque éste no está en venta. +Por favor, ponga en venta el objeto y reinténtelo. + </notification> + <notification name="FinishedRawDownload"> + Acabada la descarga del archivo raw de terreno en: +[DOWNLOAD_PATH]. + </notification> + <notification name="DownloadWindowsMandatory"> + Está disponible una versión nueva de [SECOND_LIFE]. +[MESSAGE] +Debe descargar esta actualización para usar [SECOND_LIFE]. + <usetemplate name="okcancelbuttons" notext="Salir" yestext="Descargarla"/> + </notification> + <notification name="DownloadWindows"> + Está disponible una versión actualizada de [SECOND_LIFE]. +[MESSAGE] +Esta actualización no es obligatoria, pero le sugerimos instalarla para mejorar el rendimiento y la estabilidad. + <usetemplate name="okcancelbuttons" notext="Continuar" yestext="Descargarla"/> + </notification> + <notification name="DownloadWindowsReleaseForDownload"> + Está disponible una versión actualizada de [SECOND_LIFE]. +[MESSAGE] +Esta actualización no es obligatoria, pero le sugerimos instalarla para mejorar el rendimiento y la estabilidad. + <usetemplate name="okcancelbuttons" notext="Continuar" yestext="Descargarla"/> + </notification> + <notification name="DownloadMacMandatory"> + Está disponible una versión nueva de [SECOND_LIFE]. +[MESSAGE] +Debe descargar esta actualización para usar [SECOND_LIFE]. + +¿Descargarla a su carpeta de aplicaciones? + <usetemplate name="okcancelbuttons" notext="Salir" yestext="Descargarla"/> + </notification> + <notification name="DownloadMac"> + Está disponible una versión actualizada de [SECOND_LIFE]. +[MESSAGE] +Esta actualización no es obligatoria, pero le sugerimos instalarla para mejorar el rendimiento y la estabilidad. + +¿Descargarla a su carpeta de aplicaciones? + <usetemplate name="okcancelbuttons" notext="Continuar" yestext="Descargarla"/> + </notification> + <notification name="DownloadMacReleaseForDownload"> + Está disponible una versión actualizada de [SECOND_LIFE]. +[MESSAGE] +Esta actualización no es obligatoria, pero le sugerimos instalarla para mejorar el rendimiento y la estabilidad. + +¿Descargarla a su carpeta de aplicaciones? + <usetemplate name="okcancelbuttons" notext="Continuar" yestext="Descargarla"/> + </notification> + <notification name="DeedObjectToGroup"> + Transferir este objeto al grupo hará que: +* Reciba los L$ pagados en el objeto + <usetemplate ignoretext="Cuando se transfieren objetos a los grupos" name="okcancelignore" notext="Cancelar" yestext="Transferir"/> + </notification> + <notification name="WebLaunchExternalTarget"> + ¿Abrir el navegador de su sistema para ver este contenido? + <usetemplate ignoretext="Cuando se abra el navegador de su sistema para ver una página web" name="okcancelignore" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="WebLaunchJoinNow"> + ¿Ir a www.secondlife.com para administrar su cuenta? + <usetemplate ignoretext="Cuando se abra el navegador para administrar su cuenta" name="okcancelignore" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="WebLaunchBugReport101"> + Visite el wiki de [SECOND_LIFE] y aprenda cómo informar correctamente de fallos. + <usetemplate ignoretext="Cuando se abra el navegador para ver el wiki de Informes de fallos - instrucciones" name="okcancelignore" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="WebLaunchSecurityIssues"> + Visite el wiki de [SECOND_LIFE] para más detalles sobre cómo informar de una cuestión de seguridad. + <usetemplate ignoretext="Cuando se abra el navegador para ver el wiki de cuestiones de seguridad" name="okcancelignore" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="WebLaunchQAWiki"> + Visite el wiki QA de [SECOND_LIFE]. + <usetemplate ignoretext="Cuando se abra el navegador para ver el wiki QA" name="okcancelignore" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="WebLaunchPublicIssue"> + Visite el Public Issue Tracker (sistema público de seguimiento de incidencias) de [SECOND_LIFE], donde podrá informar de errores y otros asuntos. + <usetemplate ignoretext="Cuando se abra el navegador para ver el Public Issue Tracker" name="okcancelignore" notext="Cancelar" yestext="Ir a la página"/> + </notification> + <notification name="WebLaunchPublicIssueHelp"> + Visite el wiki de [SECOND_LIFE] para informarse de cómo usar el Public Issue Tracker (sistema público de seguimiento de incidencias). + <usetemplate ignoretext="Cuando se abra el navegador para ver el wiki del Public Issue Tracker" name="okcancelignore" notext="Cancelar" yestext="Ir a la página"/> + </notification> + <notification name="WebLaunchSupportWiki"> + Para ver las últimas noticias e informaciones, ¿ir la Blog oficial? + <usetemplate ignoretext="Cuando se abra el navegador para ver el blog" name="okcancelignore" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="WebLaunchLSLGuide"> + ¿Ir a la GuÃa de programación para encontrar ayuda? + <usetemplate ignoretext="Cuando se abra el navegador para ver la GuÃa de programación" name="okcancelignore" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="WebLaunchLSLWiki"> + ¿Ir al portal de LSL para encontrar ayuda sobre programación? + <usetemplate ignoretext="Cuando se abra el navegador para ver el portal de programación" name="okcancelignore" notext="Cancelar" yestext="Ir a la página"/> + </notification> + <notification name="ReturnToOwner"> + ¿Está seguro de que quiere devolver los objetos seleccionados a sus propietarios? Los objetos transferibles que se hayan cedido volverán a sus propietarios anteriores. + +*ATENCIÓN* ¡Serán borrados los objetos no transferibles que estén cedidos! + <usetemplate ignoretext="Cuando se devuelvan los objetos a sus propietarios" name="okcancelignore" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="GroupLeaveConfirmMember"> + Actualmente, usted es miembro del grupo [GROUP]. +¿Dejar el grupo? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="ConfirmKick"> + ¿DE VERDAD quiere expulsar a todos los usuarios de este grid? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Expulsar a todos los usuarios"/> + </notification> + <notification name="MuteLinden"> + Perdón, pero no puede ignorar a un Linden. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="CannotStartAuctionAlreadyForSale"> + No puede empezar una subasta en una parcela que ya está en venta. Desactive la venta de terreno si está seguro de querer iniciar una subasta. + </notification> + <notification label="Fallo al ignorar un objeto según el nombre" name="MuteByNameFailed"> + Ya ha ignorado ese nombre. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="RemoveItemWarn"> + Aunque esté permitido, borrar contenidos puede dañar el objeto. +¿Quiere borrar ese Ãtem? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="CantOfferCallingCard"> + En este momento, no se puede ofrecer una tarjeta de visita. Por favor, reinténtelo en un momento. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="CantOfferFriendship"> + En este momento, no se puede ofrecer el ser amigo. Por favor, reinténtelo en un momento. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="BusyModeSet"> + Pasar al modo ocupado. +Se ocultará el chat y los mensajes instantáneos. Los mensajes instantáneos recibirán su Respuesta en el modo ocupado. Todos los ofrecimientos de teleporte serán rehusados. Todas las ofertas de inventario irán a su Papelera. + <usetemplate ignoretext="Cuando se pasa al modo ocupado" name="okignore" yestext="OK"/> + </notification> + <notification name="JoinedTooManyGroupsMember"> + Pertenece a demasiados grupos para poder entrar en otro. Por favor, salga de al menos uno antes de entrar en éste, o rehúse la oferta. Para salir de un grupo, seleccione la opción 'Grupos...' en el menú 'Editar'. +[NAME] le ha invitado a ser miembro de un grupo. +[INVITE] + <usetemplate name="okcancelbuttons" notext="Rehusar" yestext="Entrar"/> + </notification> + <notification name="KickUser"> + ¿Con qué mensaje se expulsará a este usuario? + <form name="form"> + <input name="message" type="text"> + Un administrador le ha desconectado. + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Cancelar"/> + </form> + </notification> + <notification name="KickAllUsers"> + ¿Con qué mensaje se expulsará a cualquiera que esté actualmente en el grid? + <form name="form"> + <input name="message" type="text"> + Un administrador le ha desconectado. + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Cancelar"/> + </form> + </notification> + <notification name="FreezeUser"> + ¿Con qué mensaje se congelará a este usuario? + <form name="form"> + <input name="message" type="text"> + Ha sido usted congelado. No puede moverse o escribir en el chat. Un administrador contactará con usted a través de un mensaje instantáneo (MI). + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Cancelar"/> + </form> + </notification> + <notification name="UnFreezeUser"> + ¿Con qué mensaje se descongelará a este usuario? + <form name="form"> + <input name="message" type="text"> + Ya no está usted congelado. + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Cancelar"/> + </form> + </notification> + <notification name="OfferTeleport"> + ¿Ofrecer teleporte a su posición con este mensaje? + <form name="form"> + <input name="message" type="text"> + Ven conmigo a [REGION] + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Cancelar"/> + </form> + </notification> + <notification name="OfferTeleportFromGod"> + ¿Convocar a este usuario a su posición? + <form name="form"> + <input name="message" type="text"> + Ven conmigo a [REGION] + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Cancelar"/> + </form> + </notification> + <notification name="TeleportFromLandmark"> + ¿Está seguro de que quiere teleportarse? + <usetemplate ignoretext="Cuando está teleportando desde un hito del inventario" name="okcancelignore" notext="Cancelar" yestext="Teleportar"/> + </notification> + <notification label="Mensaje a todo el estado" name="MessageEstate"> + Escriba un anuncio breve que se enviará a todo el que esté en su estado. + <form name="form"> + <input name="message" type="text"/> + <button name="OK" text="OK"/> + <button name="Cancel" text="Cancelar"/> + </form> + </notification> + <notification label="Cambiar un estado Linden" name="ChangeLindenEstate"> + Va a hacer cambios en un estado propiedad de Linden (mainland, grid teen, orientación, etc.). + +Esto es EXTREMADAMENTE PELIGROSO, porque puede afectar radicalmente al funcionamiento de los usuarios. En mainland, se cambiarán miles de regiones, y se provocará un colapso en el espacio del servidor. + +¿Proceder? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification label="Cambiar el acceso a un estado Linden" name="ChangeLindenAccess"> + Va a cambiar la lista de acceso de un estado propiedad de Linden (mainland, grid teen, orientación, etc.). + +Esto es PELIGROSO, y sólo debe hacerse para deshacerse de ataques que permitan sacar o meter en el grid objetos o L$. +Se cambiarán miles de regiones, y se provocará un colapso en el espacio del servidor. + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification label="Seleccionar el estado" name="EstateAllowedAgentAdd"> + ¿Añadir a la lista de permitidos sólo para este estado o para [ALL_ESTATES]? + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Todos los estados" yestext="Este estado"/> + </notification> + <notification label="Seleccionar el estado" name="EstateAllowedAgentRemove"> + ¿Quitar de la lista de permitidos sólo para este estado o para [ALL_ESTATES]? + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Todos los estados" yestext="Este estado"/> + </notification> + <notification label="Seleccionar el estado" name="EstateAllowedGroupAdd"> + ¿Añadir a la lista de grupos permitidos sólo para este estado o para [ALL_ESTATES]? + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Todos los estados" yestext="Este estado"/> + </notification> + <notification label="Seleccionar el estado" name="EstateAllowedGroupRemove"> + ¿Quitar de la lista de grupos permitidos sólo para este estado o para [ALL_ESTATES]? + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Todos los estados" yestext="Este estado"/> + </notification> + <notification label="Seleccionar el estado" name="EstateBannedAgentAdd"> + ¿Denegar el acceso sólo a este estado o a [ALL_ESTATES]? + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Todos los estados" yestext="Este estado"/> + </notification> + <notification label="Seleccionar el estado" name="EstateBannedAgentRemove"> + ¿Quitar de la lista de prohibición de acceso a este residente para que acceda sólo a este estado o a [ALL_ESTATES]? + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Todos los estados" yestext="Este estado"/> + </notification> + <notification label="Seleccionar el estado" name="EstateManagerAdd"> + ¿Añadir al administrador del estado sólo para este estado o para [ALL_ESTATES]? + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Todos los estados" yestext="Este estado"/> + </notification> + <notification label="Seleccionar el estado" name="EstateManagerRemove"> + ¿Remover al administrador del estado sólo para este estado o para [ALL_ESTATES]? + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Todos los estados" yestext="Este estado"/> + </notification> + <notification label="Confirmar la expulsión" name="EstateKickUser"> + ¿Echar a [EVIL_USER] de este estado? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="EstateChangeCovenant"> + ¿Está seguro de que quiere cambiar el contrato del estado? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="RegionEntryAccessBlocked"> + Usted no está autorizado en esa región por su nivel de calificación. Puede deberse a que no hay información validada de su edad. + +Por favor, compruebe que tiene instalado el último visor, y vaya a la Base de Conocimientos para más detalles sobre el acceso a zonas con este nivel de calificación. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + <notification name="RegionEntryAccessBlocked_KB"> + Usted no está autorizado en esa región por su nivel de calificación. + +¿Quiere ir a la Base de Conocimientos para aprender más sobre el nivel de calificación? + <url name="url"> + https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=6010 + </url> + <usetemplate + name="okcancelignore" + yestext="Ir a la Base de Conocimientos" + notext="Cerrar" + ignoretext="Cuando la entrada a la región está bloqueada por el nivel de calificación"/> + </notification> + <notification name="RegionEntryAccessBlocked_Notify"> + Usted no está autorizado en esa región por su nivel de calificación. + </notification> + <notification name="RegionEntryAccessBlocked_Change"> + Usted no está autorizado en esa región por su nivel de calificación.. + +Puede pulsar 'Cambiar preferencia' para aumentar su nivel de calificación y poder entrar. Desde ese momento, podrá buscar y acceder a contenido [REGIONMATURITY]. Si más adelante quiere deshacer esta configuración, vaya a Editar > Preferencias... > General. + <form> + <button + name="OK" + text="Cambiar preferencia"/> + <button + default="true" + name="Cancel" + text="Cerrar"/> + <ignore text="Cuando la entrada a la región está bloqueada por la preferencia del nivel de calificación"/> + </form> + </notification> + <notification name="LandClaimAccessBlocked"> + Usted no puede reclamar este terreno por su nivel de calificación. Puede deberse a que no hay información validada de su edad. + +Por favor, compruebe que tiene instalado el último visor, y vaya a la Base de Conocimientos para más detalles sobre el acceso a zonas con este nivel de calificación. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + <notification name="LandClaimAccessBlocked_KB"> + No puede reclamar este terreno por sus nivel de calificación. + +¿Quiere ir a la Base de Conocimientos para más información sobre el nivel de calificación? + <url name="url"> + https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=6010 + </url> + <usetemplate + name="okcancelignore" + yestext="Ir a la Base de Conocimientos" + notext="Cerrar" + ignoretext="Cuando el reclamar terreno está bloqueado por el nivel de calificación"/> + </notification> + <notification name="LandClaimAccessBlocked_Notify"> + Por su nivel de calificación, usted no puede reclamar este terreno. + </notification> + <notification name="LandClaimAccessBlocked_Change"> + No puede reclamar este terreno por sus preferencias de nivel de calificación. + +Puede pulsar 'Cambiar preferencia' para aumentar su nivel de calificación y poder entrar. Desde ese momento, podrá buscar y acceder a contenido [REGIONMATURITY]. Si más adelante quiere deshacer esta configuración, vaya a Editar > Preferencias... > General.. + <usetemplate + name="okcancelignore" + yestext="Cambiar preferencia" + notext="Cerrar" + ignoretext="Cuando el reclamar terreno está bloqueado por la preferencia del nivel de calificación"/> + </notification> + <notification name="LandBuyAccessBlocked"> + Usted no puede comprar este terreno por su nivel de calificación. Puede deberse a que no hay información validada de su edad. + +Por favor, compruebe que tiene instalado el último visor, y vaya a la Base de Conocimientos para más detalles sobre el acceso a zonas con este nivel de calificación. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + <notification name="LandBuyAccessBlocked_KB"> + No puede comprar este terreno por sus preferencias de nivel de calificación. + +¿Quiere ir a la Base de Conocimientos para más información sobre el nivel de calificación? + <url name="url"> + https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=6010 + </url> + <usetemplate + name="okcancelignore" + yestext="Ir a la Base de Conocimientos" + notext="Cerrar" + ignoretext="Cuando la compra de terreno está bloqueada por el nivel de calificación"/> + </notification> + <notification name="LandBuyAccessBlocked_Notify"> + No puede comprar este terreno por su nivel de calificación. + </notification> + <notification name="LandBuyAccessBlocked_Change"> + No puede comprar este terreno por sus preferencias de nivel de calificación. + +Puede pulsar 'Cambiar preferencia' para aumentar su nivel de calificación y poder entrar. Desde ese momento, podrá buscar y acceder a contenido [REGIONMATURITY]. Si más adelante quiere deshacer esta configuración, vaya a Editar > Preferencias... > General. + <usetemplate + name="okcancelignore" + yestext="Cambiar preferencia" + notext="Cerrar" + ignoretext="Cuando la compra de terreno está bloqueada por la preferencia del nivel de calificación"/> + </notification> + <notification name="TooManyPrimsSelected"> + "Hay seleccionadas demasiadas primitivas. Por favor, seleccione [MAX_PRIM_COUNT] o menos, y reinténtelo." + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ProblemImportingEstateCovenant"> + Hay problemas al importar el contrato del estado. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ProblemAddingEstateManager"> + Hay problemas al añadir un administrador nuevo del estado. Uno o más estados deben de tener llena la lista de administradores. + </notification> + <notification name="ProblemAddingEstateGeneric"> + Hay problemas en este añadir a la lista del estado. Uno o más estados deben de tener llena la lista. + </notification> + <notification name="UnableToLoadNotecardAsset"> + En este momento, no se pueden cargar los datos de la's nota's. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + <notification name="NotAllowedToViewNotecard"> + Permisos insuficientes para ver la nota asociada a la ID solicitada. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MissingNotecardAssetID"> + Se ha perdido en la base de datos la ID de la nota. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="PublishClassified"> + Recuerde: las cuotas que se pagan por los clasificados no son reembolsables. + +¿Publicar ahora este anuncio por [AMOUNT] L$? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="SetClassifiedMature"> + ¿Este anuncio tiene contenido 'Mature'? + <usetemplate + canceltext="Cancelar" + name="yesnocancelbuttons" + notext="No" + yestext="SÃ"/> + </notification> + <notification name="SetGroupMature"> + ¿Este grupo tiene contenido 'Mature'? + <usetemplate + canceltext="Cancelar" + name="yesnocancelbuttons" + notext="No" + yestext="SÃ"/> + </notification> + <notification label="Confirmar el reinicio" name="ConfirmRestart"> + ¿Verdaderamente quiere reiniciar la región de aquà a 2 minutos? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification label="Mensaje a toda la región" name="MessageRegion"> + Escriba un anuncio breve que se enviará a todo el que esté en esta región. + <form name="form"> + <input name="message" type="text"/> + <button name="OK" text="OK"/> + <button name="Cancel" text="Cancelar"/> + </form> + </notification> + <notification label="No permitir modificar el terreno" name="HelpRegionBlockTerraform"> + Si se marca está casilla, los propietarios de terreno no podrán modificarlo, independientemente de lo que esté configurado en cada parcela. + +Por defecto: off + </notification> + <notification label="Prohibir volar" name="HelpRegionBlockFly"> + Si se marca esta casilla, estará prohibido volar en la región, independientemente de lo que esté configurado en cada parcela. + +Por defecto: off + </notification> + <notification label="Cambio múltiple de permisos del contenido" name="HelpBulkPermission"> + La herramienta de cambio múltiple de permisos le ayuda a cambiar con rapidez los permisos de varios de los objetos contenidos en el objeto u objetos que seleccione. Pero fÃjese que sólo configurará los permisos de los Ãtems que están en el contenido de los objetos seleccionados, no los de esos objetos que los contienen. + +Note también que los permisos no se aplicarán a los contenidos que puedan tener cada uno de los Ãtems. Lo que haga sólo afectará a los Ãtems que estén exactamente en el primer nivel de contenidos. + +Puede elegir qué clase de Ãtems modificar usando la lista 'Tipos de contenido' here. Las imágenes se consideran incluidas si selecciona Texturas. + +* Esta herramienta sólo puede cambiar los permisos de aquellos Ãtems de los que usted esté autorizado a cambiarlos. +* No puede otorgar al siguiente propietario permisos que usted no tenga ya. +* Los permisos para el nuevo propietario son, en principio, una solicitud. Si alguno de los Ãtems no puede coger todos esos permisos solicitados, no cambiará ninguno de los permisos que tenga. + +Cuando esté listo para efectuar el cambio múltiple de permisos, pulse 'Aplicar' y espere a que se muestren los resultados. + +SSi cierra la ventana de Cambio múltiple de permisos mientras se están cambiando, se cancelará la operación. + </notification> + <notification label="Permitir el daño" name="HelpRegionAllowDamage"> + Si se marca la casilla, el sistema de 'vida' afecta a todas las parcelas independientemente de lo que tenga marcado cada una. +Si la casilla no está marcada, el propietario de cada parcela podrá decidir si activa en ella el sistema de 'vida'. + +Por defecto: off + </notification> + <notification label="Nº máximo de avatares" name="HelpRegionAgentLimit"> + Configura el número máximo de avatares que se permite en esta región. +El funcionamiento puede variar según el número de avatares que estén presentes. + +Por defecto: 40 + </notification> + <notification label="Plus de objetos" name="HelpRegionObjectBonus"> + El plus de objetos es un multiplicador de los prims permitidos en cualquier parcela. +El rango permitido es de 1 a 10. Fijándolo en '1', se permiten 117 objetos en cada parcela de 512 m². Fijándolo en '2', se permiten 234 (el doble), y asà sucesivamente. El número máximo de objetos permitidos en una región sigue siendo de 15.000, sea cual sea el plus. +Una vez establecido, tenga en cuenta que reducir el plus de objetos puede causar que se devuelvan o borren objetos. + +Por defecto: 1.0 + </notification> + <notification label="Calificación" name="HelpRegionMaturity"> + Configura el nivel de calificación de la región, tal como se verá en la barra superior del visor de cualquier residente, y en los datos que mostrará el mapa del mundo cuando se pase el cursor sobre esta región. Esta configuración también afecta al acceso a esta región y a los resultados de la búsqueda. Los demás residentes sólo entrarán en las regiones o verán aquellos resultados de la búsqueda que tengan el mismo nivel de calificación que ellos han elegido en sus preferencias. + +Puede llevar algún tiempo que este cambio se refleje en el mapa. + </notification> + <notification label="Impedir 'empujar'" name="HelpRegionRestrictPushObject"> + Esta casilla controla en toda la región los permisos para que haya 'empujones'. +Cuando está activada, los residentes sólo pueden ser empujados por sà mismos o por el propietario de la parcela. +('Empujar' se refiere a la función llPushObject() del LSL). + +Por defecto: Off + </notification> + <notification label="Unir/Dividir parcelas" name="HelpParcelChanges"> + Esta casilla determina si las parcelas que no son del propietario del estado pueden puede unirse o subdividirse. +Si no se marca esta opción: + * Sólo los propietarios o los administradores del estado pueden unir o dividir parcelas. + * Sólo podrán unir o dividir las parcelas pertenecientes al propietario o a un grupo en el que tengan los poderes adecuados. +Si se marca esta opción: + * Todo los propietarios de parcelas podrán unir o dividir las que posean. + * En parcelas propiedad de un grupo, quienes tengan los poderes adecuados podrán unirlas o dividirlas. + +Por defecto: Marcado + </notification> + <notification label="No mostrar en la búsqueda" name="HelpRegionSearch"> + Marcando esta casilla bloqueará que los propietarios de parcelas puedan listarlas en la búsqueda. + +Por defecto: Off + </notification> + <notification label="Cambiada la calificación de la región" name="RegionMaturityChange"> + Se ha actualizado la calificación de esta región. +Llevará algún tiempo que el cambio se refleje en el mapa. + </notification> + <notification label="Reventa de terreno" name="HelpRegionLandResell"> + Los propietarios y los administradores del estado pueden poner en venta cualquier terreno que posea el propietario del estado. +Si se desmarca esta opción, los compradores no podrán revender el terreno que compren en esta región. +Si se marca esta opción, los compradores podrán revender el terreno que compren en esta región. + +Por defecto: Deshabilitado + </notification> + <notification label="Desactivar los scripts" name="HelpRegionDisableScripts"> + Cuando el rendimiento de un sim es pobre, el culpable puede ser un script. Abra EstadÃsticas (Ctrl-May-1). Mire Simulator Physics FPS. Si es menor de 45, abre el panel Time, en la parte inferior de las EstadÃsticas. Si ve que Script Time está en 25 ms o más alto, pulse el botón Listar los scripts según su uso, y verá el nombre y la posición de los scripts que pueden estar causando el bajo rendimiento. + +Marcando la casilla Desactivar los scripts y pulsando el botón Aplicar, se desactivarán temporalmente en esta región todos los scripts. +Debe hacer esto para viajar a la posición que ha visto en la Lista de scripts según su uso. Cuando llegue, investigue el script para determinar si es él quien causa el problema. Deberá contactar con el propietario del script, o borrar o devolver el objeto. +Desmarque la casilla Desactivar los scripts y pulse Aplicar para reactivar los scripts en la región. + +Por defecto: off + </notification> + <notification label="Desactivar las colisiones" name="HelpRegionDisableCollisions"> + Cuando el rendimiento de un sim es pobre, la culpa puede estar en los objetos fÃsicos. Abra EstadÃsticas (Ctrl-May-1). Mire Simulator Physics FPS. Si es menor de 45, abre el panel Time, en la parte inferior de las EstadÃsticas. Si ve que Sim Time (Physics) está en 20 ms o más alto, pulse el botón Listar los objetos que colisionan, y verá el nombre y la posición de los objetos que pueden estar causando el bajo rendimiento. + +Marcando la casilla Desactivar las colisiones y pulsando el botón Aplicar, se desactivarán temporalmente las colisiones entre objetos. +Debe hacer esto para viajar a la localización que se ha avisado en la Lista de objetos que colisionan. Cuando llegue, investigue el objeto: +¿está colisionando constantemente con otros objetos? Deberá contactar con el propietario del objeto, o borrarlo o devolverlo. +Desmarque la casilla Desactivar las colisiones y pulse Aplicar para reactivar las colisiones en la región. + +Por defecto: off + </notification> + <notification label="Desactivar la fÃsica" name="HelpRegionDisablePhysics"> + Desactivar la fÃsica es parecido a Desactivar las colisiones, pero se desactivan todas las simulaciones fÃsicas: no sólo se detiene la colisión de objetos, sino que también se provoca que los avatares no puedan moverse. + +Esto deberÃa usarse sólo cuando Desactivar las colisiones no ha aportado a la región suficiente rendimiento para investigar un problema con las propiedades fÃsicas o los objetos que colisionan. + +Cuando acabe, no se olvide de reactivar la fÃsica, o los avatares seguirán sin poderse mover. + +Por defecto: off + </notification> + <notification label="Objetos que colisionan" name="HelpRegionTopColliders"> + Muestra una lista de aquellos objetos con más colisiones potenciales con otros objetos. Estos objetos pueden ralentizar el rendimiento. +Seleccione Ver > EstadÃsticas, y mire Simulator > Time > Sim Time (Physics) para ver si se están empleando en 'physics' más de 20 ms. + </notification> + <notification label="Listar los scripts" name="HelpRegionTopScripts"> + Muestra una lista de los objetos que más tiempo emplean en ejecutar scripts de LSL. Estos objetos pueden ralentizar el rendimiento. +Seleccione Ver > EstadÃsticas, y mire Simulator > Time > Script Time para ver si se están empleando más de 25 ms. + </notification> + <notification label="Reiniciar la región" name="HelpRegionRestart"> + Reinicia los procesos del servidor en que corre esta región tras dos minutos de advertencia previa. Se desconectará a todos los residentes que estén en la región. La región guardará sus datos, y deberÃa volver en unos 90 segundos. + +Reiniciar la región no solventa la mayorÃa de los problemas de rendimiento, y, normalmente, debe utilizarse sólo cuando se indique. + </notification> + <notification label="Nivel del agua" name="HelpRegionWaterHeight"> + Es el nivel, en metros, del agua. Si se marca en algo distinto de 20, y usted tiene al lado el agua del mundo o un 'vacÃo', habrá una diferencia visible. + +Por defecto: 20 + </notification> + <notification label="Elevación del terreno" name="HelpRegionTerrainRaise"> + Es la distancia que, en metros, los propietarios de parcelas pueden elevar su terreno sobre la altura del terreno inicialmente creado. + +Por defecto: 4 + </notification> + <notification label="Rebaje del terreno" name="HelpRegionTerrainLower"> + Es la distancia que, en metros, los propietarios de parcelas pueden bajar su terreno sobre la altura del terreno inicialmente creado. + +Por defecto: -4 + </notification> + <notification label="Subir un RAW para el terreno" name="HelpRegionUploadRaw"> + Este botón carga un archivo .RAW en la región en que usted está. +El archivo debe tener las dimensiones correctas (RGB, 256x256) y 13 canales. La forma mejor de crear un archivo de terreno es descargar el archivo RAW existente. Un buen inicio es modificar el canal rojo -red- (altura del terreno), y subirlo. + +La carga puede llevar unos 45 segundos. FÃjese que subir un archivo de terreno *no* moverá los objetos que haya en el terreno, sólo el terreno mismo y los permisos asociados a las parcelas. +Por tanto, puede que algunos objetos acaben enterrados.. + +Para más información sobre la edición de las alturas del terreno, consulte la ayuda F1. + </notification> + <notification label="Descargar el RAW del terreno" name="HelpRegionDownloadRaw"> + Este botón descarga un archivo de esta región con los datos de alturas, dimensiones de las parcelas, estado de las parcelas en venta, y algunos permisos de las parcelas. Al abrir el archivo en un programa como Photoshop debe especificar las dimensiones del documento: RGB, 256x256 con 13 canales. +Este archivo de terreno no puede abrirse de otro modo. + +Para más información sobre la edición de las alturas del terreno, consulte la ayuda F1. + </notification> + <notification label="Usar el Sol del estado" name="HelpRegionUseEstateSun"> + Esta casilla hace que la posición del Sol en la región sea la misma que la del resto del estado. + +Por defecto: on + </notification> + <notification label="Fijar el Sol" name="HelpRegionFixedSun"> + Esta casilla fija la posición del Sol en la posición del deslizable Fase, y detiene su movimiento. + +Por defecto: off + </notification> + <notification label="Predeterminar este terreno" name="HelpRegionBakeTerrain"> + Este botón salva la forma actual del terreno como nueva forma por defecto para la región. Una vez predeterminado, el terreno puede volver a esa forma cada vez que usted u otros usan la opción 'Revertir' en Editar el terreno. El terreno predeterminado también marca el punto medio para elevar y bajar los lÃmites. + </notification> + <notification label="Administradores del estado" name="HelpEstateEstateManager"> + Un administrador del estado es un residente en el que usted delega controles de la región y configuraciones del estado. Un administrador del estado puede cambiar algunas configuraciones de estos paneles, excepto las de subir, descargar, y predeterminar el terreno. Y, concretamente, puede autorizar o expulsar a residentes de su estado. + +Sólo el propietario del estado puede añadir o remover administradores, nadie más. +Por favor, elija sólo a residentes en quienes confÃe, pues usted será el responsable último de sus acciones. + </notification> + <notification label="Usar el horario global" name="HelpEstateUseGlobalTime"> + Esta casilla hace que, en su estado, el Sol tenga la misma posición que en los estados propiedad de Linden, 'mainland'. + +Por defecto: on + </notification> + <notification label="Fijar el Sol" name="HelpEstateFixedSun"> + Esta casilla fija la posición del Sol en la posición del deslizable Fase, y detiene su movimiento. + </notification> + <notification label="Acceso público" name="HelpEstateExternallyVisible"> + Esta casilla habilita a cualquier residente que esté en otro estado pueda entrar en éste sin tener que estar en una lista de acceso. + +Por defecto: on + </notification> + <notification label="Permitir el teleporte a cualquier punto" name="HelpEstateAllowDirectTeleport"> + Cuando esta marcado, los residentes puede teleportarse directamente a cualquier punto de su estado. Si se desmarca, los residentes se teleportarán al Punto de Teleporte más cercano. + +Por defecto: off + </notification> + <notification label="Autorizar el acceso" name="HelpEstateAllowResident"> + El acceso a este estado se limitará a los residentes aquà enumerados y a cualquier grupo de abajo. Esta configuración sólo funciona cuando está desmarcado Acceso público. + </notification> + <notification label="Autorizar el acceso de grupo" name="HelpEstateAllowGroup"> + El acceso a este estado se limitará a los grupos aquà enumerados y a cualquier residente de abajo. Esta configuración sólo funciona cuando está desmarcado Acceso público. + </notification> + <notification label="Dirección de correo para infracciones" name="HelpEstateAbuseEmailAddress"> + Aportando aquà una dirección de correo válida, se hará que las Denuncias de Infracción en este estado se envÃen a esa dirección. +Si se deja en blanco, las Denuncias de Infracción se enviarán sólo a Linden Lab. + </notification> + <notification label="Denegar el acceso" name="HelpEstateBanResident"> + A los residentes en esta lista se les niega el acceso a su estado, independientemente de cualquier otra configuración. + </notification> + <notification label="Autorizar el chat de voz" name="HelpEstateVoiceChat"> + Se autoriza a las parcelas del estado a tener sus propios canales de voz en los que los residentes puedan hablar y oÃr a otros residentes. + +Por defecto: off + </notification> + <notification label="Desajuste en la versión de voz" name="VoiceVersionMismatch"> + En esta región, la versión de Second Life no es compatible con el chat de voz. Para que el chat de voz funcione correctamente, debe actualizar Second Life. + </notification> + <notification label="Contrato del estado" name="HelpEstateCovenant"> + Definir un contrato del estado le permite vender parcelas del mismo. Si no existe un contrato, no puede vender terreno. +La nota para su contrato puede estar vacÃa si es que no quiere aplicar reglas, avisos a los compradores, o cualquier otra cosa relacionada con el terreno antes de que sea comprado. + +Puede usar un contrato para comunicar al posible comprador reglas, pautas, información cultural, o, simplemente, sus propias expectativas. +AsÃ, puede hablarse de parcelación, normas de las construcciones, formas de pago, u otra información que considere que el nuevo propietario debe saber y con la que debe estar de acuerdo antes de hacer la compra. + +Para poder finalizar la compra, el comprador debe aceptar el contrato marcando la casilla adecuada. Los contratos de los estados son siempre visibles en la información Acerca del terreno en todas las parcelas. + </notification> + <notification label="No se pudo comprar los objetos" name="BuyObjectOneOwner"> + No se pueden comprar a la vez objetos de propietarios diferentes. +Por favor, seleccione sólo un objeto y vuelva a intentarlo. + </notification> + <notification label="No se pudo comprar el contenido" name="BuyContentsOneOnly"> + No se puede comprar a la vez los contenidos de más de un objeto. +Por favor, seleccione sólo un objeto y vuelva a intentarlo. + </notification> + <notification label="No se pudo comprar el contenido" name="BuyContentsOneOwner"> + No se pueden comprar a la vez objetos de propietarios diferentes. +Por favor, seleccione sólo un objeto y vuelva a intentarlo. + </notification> + <notification name="BuyOriginal"> + ¿Comprar el objeto original de [OWNER] por [PRICE] L$? +Usted pasará a ser el propietario de este objeto. +Podrá: + Modificarlo: [MODIFYPERM] + Copiarlo: [COPYPERM] + Revenderlo o darlo: [RESELLPERM] + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="BuyOriginalNoOwner"> + ¿Comprar el objeto original por [PRICE] L$? +Usted pasará a ser el propietario de este objeto. +Podrá: + Modificarlo: [MODIFYPERM] + Copiarlo: [COPYPERM] + Revenderlo o darlo: [RESELLPERM] + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="BuyCopy"> + ¿Comprar una copia de [OWNER] por [PRICE] L$? +El objeto se copiará a su inventario. +Podrá: + Modificarlo: [MODIFYPERM] + Copiarlo: [COPYPERM] + Revenderlo o darlo: [RESELLPERM] + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="BuyCopyNoOwner"> + ¿Comprar una copia por [PRICE] L$? +El objeto se copiará a su inventario. +Podrá: + Modificarlo: [MODIFYPERM] + Copiarlo: [COPYPERM] + Revenderlo o darlo: [RESELLPERM] + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="BuyContents"> + ¿Comprar los contenidos de [OWNER] por [PRICE] L$? +Serán copiados a su inventario. + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="BuyContentsNoOwner"> + ¿Comprar los contenidos por [PRICE] L$? +Serán copiados a su inventario. + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="ConfirmPurchase"> + Esta transacción hará que: +[ACTION] + +¿Está seguro de querer hacer esta compra? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="ConfirmPurchasePassword" type="password"> + Esta transacción hará que: +[ACTION] + +¿Está seguro de querer hacer esta compra? +Por favor, vuelva a escribir su contraseña y pulse OK. + <form name="form"> + <input name="message" type="password"/> + <button name="ConfirmPurchase" text="OK"/> + <button name="Cancel" text="Cancelar"/> + </form> + </notification> + <notification name="SetPickLocation"> + Nota: +Ha actualizado la posición de este Destacado, pero los otros detalles permanecen con sus valores originales. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MoveInventoryFromObject"> + Ha elegido Ãtems 'no copiables' de su inventario. Esos Ãtems se quitarán de su inventario, no se copiarán. + +¿Mover el/los Ãtem/s del inventario? + <usetemplate ignoretext="Cuando mueva objetos 'no copiables' del inventario" name="okcancelignore" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="MoveInventoryFromScriptedObject"> + Ha elegido Ãtems 'no copiables' de su inventario. Esos Ãtems se moverán a su inventario, no se copiarán. +Dado que estos objetos tienen scripts, moverlos a su inventario puede provocar un mal funcionamiento del script. + +¿Mover el/los Ãtem/s del inventario? + <usetemplate ignoretext="Cuando mueva objetos con script 'no copiables' del inventario" name="okcancelignore" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="ClickActionNotPayable"> + Atención: la acción Pagar al objeto al pulsar ha sido marcada, pero sólo funcionará si se añade un script con un evento money(). + <form name="form"> + <ignore name="ignore" text="Cuando configure 'Pagar' en objetos sin el evento money()"/> + </form> + </notification> + <notification name="OpenObjectCannotCopy"> + En este objeto, no hay Ãtems que esté autorizado a copiar. + </notification> + <notification name="WebLaunchAccountHistory"> + ¿Ir al sitio web de Second Life para ver el historial de su cuenta? + <usetemplate ignoretext="Cuando se cargue la página web del historial de la cuenta" name="okcancelignore" notext="Cancelar" yestext="Ir a la página"/> + </notification> + <notification name="ClickOpenF1Help"> + ¿Visitar el sitio web de Soporte de Second Life? + <usetemplate ignoretext="Cuando visite el sitio web de Soporte de Second Life." name="okcancelignore" notext="Cancelar" yestext="Ir"/> + </notification> + <notification name="ConfirmQuit"> + ¿Está seguro de que quiere salir? + <usetemplate ignoretext="Cuando esté saliendo de Second Life." name="okcancelignore" notext="Continuar" yestext="Salir"/> + </notification> + <notification name="HelpReportAbuseEmailLL"> + Use esta herramienta para denunciar violaciones de las Normas de la Comunidad y las Condiciones del Servicio. Vea: + +http://secondlife.com/corporate/tos.php +http://secondlife.com/corporate/cs.php + +Se investigan y resuelven todas las infracciones denunciadas de las Normas de la Comunidad y las Condiciones del Servicio. Puede ver la resolución tomada en el Informe de Incidentes, en: + +http://secondlife.com/support/incidentreport.php + </notification> + <notification name="HelpReportAbuseEmailEO"> + IMPORTANTE: Esta denuncia no irá a Linden Lab, sino al propietario de la región en la que usted se encuentra actualmente. + +Como un servicio a los residentes y visitantes, el propietario de la región ha elegido recibir y resolver todas las enuncias que se originen en esta región. Linden Lab no investigará las denuncias que usted envÃe desde aquÃ. + +El propietario de la región resolverá las denuncias basándose en las reglas locales de la región, tal como se detallan en el Contrato del estado. +(Puede ver el Contrato yendo al menú Mundo y eligiendo Acerca del terreno). + +La resolución de esta denuncia se aplica exclusivamente a esta región; el acceso de los residentes a otras áreas de Second Life no se verá afectado por el resultado de esta denuncia. Únicamente Linden Lab puede impedir el acceso a la totalidad de Second Life. + </notification> + <notification name="HelpReportBug"> + Use esta herramienta *sólo* para informar de cuestiones técnicas que no se comportan como se describe o era esperable. Por favor, aporte todos los detalles que pueda. +Deberá responder al correo electrónico de auto respuesta para añadir más detalles a su informe. + +Todos los informes de fallos serán investigados y evaluados. No se contestará por correo electrónico. + +Si tiene algún problema técnico, por favor, contacte con Soporte en: + +http://secondlife.com/community/support.php + +Nota: no se investigarán los informes incompletos. + </notification> + <notification name="HelpReportAbuseSelectCategory"> + Por favor, elija una categorÃa para esta denuncia de infracción. +Seleccionar una categorÃa nos ayuda a clasificar y procesar las denuncias de infracciones. + </notification> + <notification name="HelpReportBugSelectCategory"> + Por favor, elija una categorÃa para este fallo. +Seleccionar una categorÃa nos ayuda a clasificar y procesar los informes de fallos. + </notification> + <notification name="HelpReportAbuseAbuserNameEmpty"> + Por favor, escriba el nombre del infractor. +Aportar el dato preciso nos ayuda a clasificar y procesar las denuncias de infracciones. + </notification> + <notification name="HelpReportAbuseAbuserLocationEmpty"> + Por favor, escriba la localización donde tuvo lugar la infracción. +Aportar el dato preciso nos ayuda a clasificar y procesar las denuncias de infracciones. + </notification> + <notification name="HelpReportAbuseSummaryEmpty"> + Por favor, escriba un resumen de la infracción que ha habido. +Aportar un resumen preciso nos ayuda a clasificar y procesar las denuncias de infracciones. + </notification> + <notification name="HelpReportBugSummaryEmpty"> + Por favor, escriba un resumen del fallo. +Aportar un resumen preciso nos ayuda a clasificar y procesar los informes de fallos. + </notification> + <notification name="HelpReportAbuseDetailsEmpty"> + Por favor, escriba una descripción minuciosa de la infracción que ha habido. +Sea tan especÃfico como pueda, incluyendo los nombres y los detalles implicados en el incidente que denuncia. +Aportar una descripción precisa nos ayuda a clasificar y procesar las denuncias de infracciones. + </notification> + <notification name="HelpReportBugDetailsEmpty"> + Por favor, escriba una descripción minuciosa del fallo. +Sea tan especÃfico como pueda, incluyendo -si es posible- los pasos que permitan reproducir el fallo. +Aportar una descripción precisa nos ayuda a clasificar y procesar los informes de fallos. + </notification> + <notification name="HelpReportAbuseContainsCopyright"> + Estimado Residente: + +Parece que está usted denunciando una violación de la propiedad intelectual. Por favor, asegúrese de que su denuncia es correcto. + +(1) El proceso de la denuncia. Debe enviar una denuncia de infracción si cree que un Residente está reventando el sistema de permisos de Second Life, por ejemplo, usando un CopyBot u otras herramientas parecidas para copiar, infringiendo los derechos de propiedad intelectual. El Equipo de Infracciones (Abuse Team) investiga y lleva a cabo las acciones disciplinarias apropiadas ante toda acción que viole las las Normas de la Comunidad de Second Life o las Condiciones del Servicio. Sin embargo, el Equipo de Infracciones ni gestiona ni responde a las solicitudes de eliminar contenidos del mundo de Second Life. + +(2) El DMCA o Proceso de Eliminación de Contenido. Para solicitar que se elimine algún contenido de Second Life, DEBE enviar una notificación válida de infracción tal y como se explica en nuestra DMCA Policy en http://secondlife.com/corporate/dmca.php. + +Si todavÃa quiere seguir con el proceso de infracción, por favor, cierre esta ventana y acabe de enviar su denuncia. En concreto, debe seleccionar la categorÃa 'CopyBot o Programa para saltarse los permisos'. + +Gracias, + +Linden Lab + </notification> + <notification name="FailedRequirementsCheck"> + Han desaparecido de [FLOATER] estos componentes: +[COMPONENTS] + </notification> + <notification label="Reemplazar el anexado actual" name="ReplaceAttachment"> + En ese punto de su cuerpo ya hay un objeto anexado. ¿Quiere reemplazarlo por el objeto que ha elegido? + <form name="form"> + <ignore name="ignore" save_option="true" text="Cuando se reemplacen anexados existentes"/> + <button ignore="Reemplazar automaticamente" name="Yes" text="OK"/> + <button ignore="Nunca reemplazar" name="No" text="Cancelar"/> + </form> + </notification> + <notification label="¡Aviso! Modo Ocupado" name="BusyModePay"> + Usted está en el modo Ocupado. Por tanto, no recibirá ningún Ãtem a cambio de esta pago. + +¿Quiere salir del modo Ocupado ante de completar esta transacción? + <form name="form"> + <ignore name="ignore" save_option="true" text="Cuando se esté pagando a un objeto o persona en el modo Ocupado"/> + <button ignore="Siempre salir del modo Ocupado" name="Yes" text="OK"/> + <button ignore="Nunca salir del modo Ocupado" name="No" text="Cancelar"/> + </form> + </notification> + <notification name="ConfirmEmptyTrash"> + ¿Está seguro de que quiere vaciar definitivamente el contenido de su Papelera? + <usetemplate ignoretext="Cuando se vacÃe la Papelera" name="okcancelignore" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="ConfirmClearBrowserCache"> + ¿Está seguro de que quiere limpiar la caché de su navegador? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="SÃ"/> + </notification> + <notification name="ConfirmClearCookies"> + ¿Está seguro de que quiere limpiar sus cookies? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="SÃ"/> + </notification> + <notification name="ConfirmClearMediaUrlList"> + ¿Está seguro de que quiere vaciar su lista de URL guardadas? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="SÃ"/> + </notification> + <notification name="ConfirmEmptyLostAndFound"> + ¿Está seguro de que quiere eliminar permanentemente el contenido de su carpeta Objetos Perdidos? + <usetemplate ignoretext="Cuando se vacÃe la carpeta del inventario Objetos Perdidos" name="okcancelignore" notext="No" yestext="SÃ"/> + </notification> + <notification name="CopySLURL"> + Se ha copiado a su portapapeles la siguiente SLurl: + [SLURL] + +PublÃquela en una página web para que otros puedan acceder fácilmente a esta posición, o pruébela usted mismo pegándola en la barra de direcciones de su navegador. + <form name="form"> + <ignore name="ignore" text="Cuando se copie una SLurl al portapapeles"/> + </form> + </notification> + <notification name="GraphicsPreferencesHelp"> + Este panel controla el tamaño de la ventana, y la resolución y la calidad de los gráficos del cliente. La interfaz Preferencias > Gráficos le permite escoger entre cuatro niveles gráficos: Bajo, Medio, Alto, y Ultra. También puede personalizar sus configuraciones gráficas marcando la casilla Personalizar y adaptando estas configuraciones: + +Efectos: activa o desactiva varios tipos de shaders. + +Objetos reflejados: determina qué objetos reflejará el agua. + +Renderización del avatar: muestra opciones que afectan a cómo renderiza el cliente los avatares. + +Distancia de dibujo: afecta a cuán lejos de su punto de vista se renderizarán los objetos en la escena. + +Núm. máx. de partÃculas: define el número máximo de partÃculas que podrá ver a la vez en su pantalla. + +Calidad del procesamiento: define la resolución con que se renderiza el brillo. + +Detalle de la malla: define la cantidad de dettales o número de triángulos usados para renderizar algunos objetos. Cuanto más alto sea el valor, más detalle, pero más tiempo para renderizar. + +Detalles de la iluminación: determina que tipo de luces quiere usted que se rendericen. + +Nivel de detalle del terreno: marca con cuánto detalle quiere ver la textura del terreno. + </notification> + <notification name="WLSavePresetAlert"> + ¿Quiere sobrescribir la preselección guardada? + <usetemplate name="okcancelbuttons" notext="No" yestext="SÃ"/> + </notification> + <notification name="WLDeletePresetAlert"> + ¿Quiere borrar [SKY]? + <usetemplate name="okcancelbuttons" notext="No" yestext="SÃ"/> + </notification> + <notification name="WLNoEditDefault"> + No puede 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. ¿Desea sobreescribirlo? + <usetemplate name="okcancelbuttons" notext="No" yestext="SÃ"/> + </notification> + <notification name="HelpEditSky"> + Edite los deslizables del WindLight para crear y guardar configuraciones del cielo. + </notification> + <notification name="HelpEditDayCycle"> + Define cómo se verán los cielos a lo largo del dÃa. + </notification> + <notification name="EnvSettingsHelpButton"> + Estas configuraciones ajustan la forma en que usted ve el medio ambiente localmente, en su ordenador. Su tarjeta gráfica debe admitir shaders de la atmósfera ('atmospheric shaders') para poder acceder a esta configuración. + +Ajuste el deslizable "Duración de un dÃa" para cambiar localmente, en su visor, las etapas del dÃa. + +Ajuste el deslizable "Nubosidad" para controlar cuántas nubes cubren el cielo. + +Pulse un color en el selector de "Color del agua" para cambiar el color de la misma. + +Ajuste el deslizable "Claridad del agua" para controlar el nivel de claridad del agua bajo la superficie. + +Pulse "Usar el horario del estado" para devolver los valores del dÃa al tiempo actual de la región y seguir a partir de él. + +Pulse "Cielo avanzado" para abrir un editor con configuraciones avanzadas para el cielo. + +Pulse "Agua avanzada" para abrir un editor con configuraciones avanzadas para el agua. + </notification> + <notification name="HelpDayCycle"> + El Editor del ciclo del dÃa le permite controlar el cielo de Second Life durante el ciclo dÃa/noche. Este es el ciclo que usa el deslizable Duración de un dÃa del Editor del entorno. + +El Editor del ciclo del dÃa trabaja configurando fotogramas clave ('keyframes'): nodos (representados por los puntos grises en la lÃnea del tiempo) cada uno de los cuales tiene asociado un Cielo definido. Según progresa la Duración de un dÃa, el WindLight realiza la "animación" del cielo interpolándose entre esos fotogramas clave. + +La flecha amarilla sobre la lÃnea del tiempo representa lo que usted ve actualmente, basándose en la Duración de un dÃa. Púlsela y muévela para ver cómo cambia la animación del dÃa. Puede añadir o borrar fotogramas clave pulsando los botones Añadir un punto o Quitar un punto, situados a la derecha de la lÃnea del tiempo. + +Puede establecer la posición en el tiempo de cualquier fotograma clave moviéndolo a lo largo de la lÃnea del tiempo, o configurando manualmente su valor por su valor manualmente en el recuadro Configuración del fotograma clave. También en ese recuadro podrá asociar el fotograma clave a un modelo predefinido de WindLight. + +La Duración del ciclo establece la duración total de un "dÃa". Marcar un valor bajo (por ejemplo, 2 min.) hará que las 24 horas de su lÃnea del tiempo se animen ¡en sólo dos minutos reales! Una vez que esté satisfecho con su ciclo de la lÃnea del tiempo y los fotogramas clave, utilice los botones Probar y Parar para obtener una vista previa de los resultados. Recuerde que también puede mover la flecha amarilla de encima de la lÃnea del tiempo para ver el ciclo de la animación. El botón Usar el horario del estado sincronizará su ciclo de duración de un dÃa con el ciclo del estado. + +Cuando todo esté a su gusto, puede guardar esos datos y cargarlos luego usando los botones Guardar este tipo de dÃa y Cargar un tipo de dÃa. Note que, por el momento, sólo podemos permitir un ciclo de un dÃa. + </notification> + <notification name="HelpBlueHorizon"> + Use los deslizables Rojo/Verde/Azul (RVA) para ajustar el color del cielo. Puede usar el deslizable de Intensidad (I) para moverlos al unÃsono. + </notification> + <notification name="HelpHazeHorizon"> + La Cantidad de bruma es uno de los parámetros más útiles para ajustar el nivel de luz de la escena. Es eficaz para simular muchos ajustes de la exposición, como la claridad en un ambiente nublado o de nevisca, o las tonalidades del una flor Iris aún cerrada. + </notification> + <notification name="HelpBlueDensity"> + La Saturación afecta a la densidad global de la saturación de color del cielo y la niebla. Si mueve el deslizable Intensidad (I) a la derecha, los colores serán más vivos y brillantes. Si lo mueve a la izquierda, se irán decolorando hasta llegar incluso al blanco y negro. Si desea ajustar el balance de color del cielo, puede controlar la saturación de cada elemento usando el deslizable Rojo/Verde/Azul (RVA). + </notification> + <notification name="HelpHazeDensity"> + La Densidad de la bruma controla lo sombrÃo de la atmósfera, su neblina. Es eficaz para simular escenas con mucho humo o contaminantes, y también para simular niebla y llovizna. + </notification> + <notification name="HelpDensityMult"> + La Densidad puede usarse para definir globalmente la 'pesadez' de la atmósfera. Los ajustes bajos dan sensación de un "aire limpio", y los altos de pesadez, de esmog. + </notification> + <notification name="HelpDistanceMult"> + Ajusta a qué distancia se percibe el WindLight. El valor cero desactiva la influencia del WindLight en el terreno y los objetos. Los valores superiores a 1 simulan mayores distancias a las que afectan los efectos atmosféricos + </notification> + <notification name="HelpMaxAltitude"> + La Altitud máx. ajusta hasta que altura el WindLight realiza sus cálculos para computar la iluminación atmosférica. En las últimas horas del dÃa, es útil para ajustar la "profundidad" a la que aparece el Sol. + </notification> + <notification name="HelpSunlightColor"> + Ajusta en la escena la intensidad y el color de las luces directas. + </notification> + <notification name="HelpSunAmbient"> + Ajusta en la escena la intensidad y el color de la luz ambiental. + </notification> + <notification name="HelpSunGlow"> + El deslizable Tamaño controla el tamaño del Sol. +El deslizable Visión controla cómo se ve de borroso el Sol en el cielo. + </notification> + <notification name="HelpSceneGamma"> + Ajusta la distribución de luz y oscuridad en la pantalla. + </notification> + <notification name="HelpStarBrightness"> + Ajusta el brillo de las estrellas en el cielo. + </notification> + <notification name="HelpTimeOfDay"> + Controla la posición del Sol en el cielo. Es parecido a la elevación. + </notification> + <notification name="HelpEastAngle"> + Controla la posición del Sol en el cielo. Es parecido al acimut. + </notification> + <notification name="HelpCloudColor"> + Edita el color de las nubes. En general, es recomendable mantenerlas blanquecinas. +Pero, vaya, diviértase si quiere. + </notification> + <notification name="HelpCloudDetail"> + Controla el detalle de las capas superiores de la imagen en la imagen principal de las nubes. X e Y controlan su posición. D (Densidad) controla la densidad o la fracturación con que aparecen las nubes. + </notification> + <notification name="HelpCloudDensity"> + Le permite controlar la posición de las nubes con los deslizables X e Y, y su desnidad con el deslizable D. + </notification> + <notification name="HelpCloudCoverage"> + Controla cuánto cubren el cielo las nubes. + </notification> + <notification name="HelpCloudScale"> + Controla el tamaño de la imagen de las nubes en la bóveda celeste. + </notification> + <notification name="HelpCloudScrollX"> + Controla la velocidad de las nubes al moverse en la dirección del eje X. + </notification> + <notification name="HelpCloudScrollY"> + Controla la velocidad de las nubes al moverse en la dirección del eje Y. + </notification> + <notification name="HelpClassicClouds"> + Marque esta casilla para activar la aparición de las nubes clásicas de Second Life junto a las nubes del WindLight. + </notification> + <notification name="HelpWaterFogColor"> + Elije el color del agua bajo la superficie. + </notification> + <notification name="HelpWaterFogDensity"> + Controla la densidad de la claridad del agua, y a qué distancia puede verse bajo ella. + </notification> + <notification name="HelpUnderWaterFogMod"> + Modifica el efecto de Transparencia para controlar cuán lejos su avatar puede ver bajo el agua. + </notification> + <notification name="HelpWaterGlow"> + Controla la cantidad de brillo de la superficie del agua. + </notification> + <notification name="HelpWaterNormalScale"> + Controla el tamaño de las tres ondulaciones que componen el agua. + </notification> + <notification name="HelpWaterFresnelScale"> + Controla cuánta luz se refleja desde diferentes ángulos. + </notification> + <notification name="HelpWaterFresnelOffset"> + Controla cuánta intensidad de luz se refleja. + </notification> + <notification name="HelpWaterScaleAbove"> + Controla la cantidad de luz refractada mirando la superficie del agua desde arriba. + </notification> + <notification name="HelpWaterScaleBelow"> + Controla la cantidad de luz refractada mirando la superficie del agua desde debajo. + </notification> + <notification name="HelpWaterBlurMultiplier"> + Controla cómo se mezclan las ondas y los reflejos. + </notification> + <notification name="HelpWaterNormalMap"> + Controla cuál es la capa de 'vista normal' del agua, para determinar las reflexiones/refracciones. + </notification> + <notification name="HelpWaterWave1"> + Controla hacia adónde y a qué velocidad se mueve en los ejes X e Y la versión en tamaño grande de la 'vista normal'. + </notification> + <notification name="HelpWaterWave2"> + Controla hacia adónde y a qué velocidad se mueve en los ejes X e Y la versión en tamaño pequeño de la 'vista normal'. + </notification> + <notification name="NewSkyPreset"> + Dame un nombre para el cielo nuevo. + <form name="form"> + <input name="message" type="text"> + Preselección nueva + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Cancelar"/> + </form> + </notification> + <notification name="ExistsSkyPresetAlert"> + ¡Esa preselección ya existe! + </notification> + <notification name="NewWaterPreset"> + Dame un nombre para la nueva preselección de agua. + <form name="form"> + <input name="message" type="text"> + Preselección nueva + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Cancelar"/> + </form> + </notification> + <notification name="ExistsWaterPresetAlert"> + ¡Esa preselección ya existe! + </notification> + <notification name="WaterNoEditDefault"> + No puede editar o borrar una preselección por defecto. + </notification> + <notification name="ChatterBoxSessionStartError"> + No se puede empezar una nueva sesión de chat con [RECIPIENT]. +[REASON] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ChatterBoxSessionEventError"> + [EVENT] +[REASON] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ForceCloseChatterBoxSession"> + Debe cerrarse su sesión de chat con [NAME]. +[REASON] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="Cannot_Purchase_an_Attachment"> + No se pueden comprar los Ãtems que aún forman parte de un objeto anexado. + </notification> + <notification label="Acerca de las solicitudes de autorización de débito" name="DebitPermissionDetails"> + Al admitir esta petición, le da permiso a un script para que coja dólares Linden (L$) de su cuenta. Para revocar este permiso, el propietario del objeto debe eliminarlo o reiniciar ese script del objeto. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="AutoWearNewClothing"> + ¿Quiere vestirse automáticamente el Ãtem de ropa nueva que ha creado? + <usetemplate ignoretext="Vestirme automáticamente la ropa nueva" name="okcancelignore" notext="No" yestext="SÃ"/> + </notification> + <notification name="NotAgeVerified"> + Para acceder a esta parcela, se debe haber verificado su edad. +¿Quiere visitar la web de Second Life para verificar su edad? + +[_URL] + <url name="url" option="0"> + https://secondlife.com/account/verification.php + </url> + <usetemplate ignoretext="Advertir de la falta de la verificación de edad" name="okcancelignore" notext="No" yestext="SÃ"/> + </notification> + <notification name="Cannot enter parcel: no payment info on file"> + Antes de que pueda acceder a esta parcela, se requiere que usted tenga archivada su información de pago. +¿Quiere visitar la web de Second Life para actualizar esto? + +[_URL] + <url name="url" option="0"> + https://secondlife.com/account/index.php?lang=es + </url> + <usetemplate ignoretext="Advertir de la falta de información de pago" name="okcancelignore" notext="No" yestext="SÃ"/> + </notification> + <notification name="MissingString"> + La cadena [STRING_NAME] Ha desaparecido de strings.xml + </notification> + <notification name="SystemMessageTip"> + [MESSAGE] + </notification> + <notification name="Cancelled"> + Cancelado + </notification> + <notification name="CancelledSit"> + Cancelado el sentarse + </notification> + <notification name="CancelledAttach"> + Candelado el anexar + </notification> + <notification name="ReplacedMissingWearable"> + Reemplazadas las ropas o partes del cuerpo perdidas con sus equivalentes por defecto. + </notification> + <notification name="GroupNotice"> + Asunto: [SUBJECT], Mensaje: [MESSAGE] + </notification> + <notification name="FriendOnline"> + [FIRST] [LAST] está conectado + </notification> + <notification name="FriendOffline"> + [FIRST] [LAST] no está conectado + </notification> + <notification name="AddSelfFriend"> + No se puede añadir como amigo a usted mismo. + </notification> + <notification name="UploadingAuctionSnapshot"> + Subiendo fotos del mundo y del sitio web... +(tardará unos 5 minutos). + </notification> + <notification name="UploadPayment"> + Ha pagado [AMOUNT] LS por la subida. + </notification> + <notification name="UploadWebSnapshotDone"> + Completada la subida de la foto del sitio web. + </notification> + <notification name="UploadSnapshotDone"> + Completada la subida de la foto del mundo. + </notification> + <notification name="TerrainDownloaded"> + Se ha descargado Terrain.raw + </notification> + <notification name="GestureMissing"> + El gesto [NAME] ha desaparecido de la base de datos. + </notification> + <notification name="UnableToLoadGesture"> + No se ha podido cargar el gesto [NAME]. +Por favor, vuelva a intentarlo. + </notification> + <notification name="LandmarkMissing"> + El hito ha desaparecido de la base de datos. + </notification> + <notification name="UnableToLoadLandmark"> + No se ha podido cargar el hito. Por favor, vuelva a intentarlo. + </notification> + <notification name="CapsKeyOn"> + Tiene pulsada su tecla de bloqueo de mayúsculas, lo que influirá en cómo escriba la contraseña. +Quizá quiera soltar esa tecla. + </notification> + <notification name="NotecardMissing"> + La nota ha desaparecido de la base de datos. + </notification> + <notification name="NotecardNoPermissions"> + No tiene permisos suficientes para ver la nota. + </notification> + <notification name="RezItemNoPermissions"> + No tiene permisos suficientes para renderizar el objeto. + </notification> + <notification name="UnableToLoadNotecard"> + En este momento no se puede cargar la nota. + </notification> + <notification name="ScriptMissing"> + El script ha desaparecido de la base de datos. + </notification> + <notification name="ScriptNoPermissions"> + No tiene permisos suficientes para ver el script. + </notification> + <notification name="UnableToLoadScript"> + No se ha podido cargar el script. Por favor, vuelva a intentarlo. + </notification> + <notification name="IncompleteInventory"> + Los contenidos que está usted ofreciendo aún no están disponibles. Por favor, vuelva a ofrecerlos en un minuto. + </notification> + <notification name="CannotModifyProtectedCategories"> + No puede modificar categorÃas que están protegidas. + </notification> + <notification name="CannotRemoveProtectedCategories"> + No puede quitar categorÃas que están protegidas. + </notification> + <notification name="OfferedCard"> + Ha ofrecido una tarjeta de visita a [FIRST] [LAST] + </notification> + <notification name="UnableToBuyWhileDownloading"> + No se puede comprar un objeto mientras se descargan sus datos. +Por favor, vuelva a intentarlo. + </notification> + <notification name="UnableToLinkWhileDownloading"> + No se puede enlazar un objeto mientras se descargan sus datos. +Por favor, vuelva a intentarlo. + </notification> + <notification name="CannotBuyObjectsFromDifferentOwners"> + No puede comprar a la vez objetos de diferentes propietarios. +Por favor, elija sólo uno. + </notification> + <notification name="ObjectNotForSale"> + El objeto no aparece como puesto a la venta. + </notification> + <notification name="EnteringGodMode"> + Entrando en el modo administrativo, nivel [LEVEL] + </notification> + <notification name="LeavingGodMode"> + Saliendo del modo administrativo, nivel [LEVEL] + </notification> + <notification name="CopyFailed"> + No se ha hecho la copia porque usted no tiene permiso para hacerla + </notification> + <notification name="InventoryAccepted"> + [NAME] ha aceptado su oferta del inventario. + </notification> + <notification name="InventoryDeclined"> + [NAME] ha rehusado su oferta del inventario. + </notification> + <notification name="ObjectMessage"> + [NAME]: [MESSAGE] + </notification> + <notification name="CallingCardAccepted"> + Se ha aceptado su tarjeta de visita. + </notification> + <notification name="CallingCardDeclined"> + Se ha rehusado su tarjeta de visita. + </notification> + <notification name="TeleportToLandmark"> + Ahora que ha llegado a mainland (los continentes), puede teleportarse a localizaciones como '[NAME]' pulsando el botón Inventario de la esquina inferior derecha de su pantalla, y, después, seleccionando la carpeta Hitos. +Pulse dos veces en el hito y, luego, pulse en Teleportar para viajar hasta allÃ. + </notification> + <notification name="TeleportToPerson"> + Ahora que ha llegado a mainland (los continentes), puede contactar con residentes como '[NAME]' pulsando el botón Inventario de la esquina inferior derecha de su pantalla, y, después, seleccionando la carpeta Tarjetas de visita. +Pulse dos veces en la tarjeta, pulse en Mensaje Instantáneo, y escriba un mensaje. + </notification> + <notification name="CantSelectLandFromMultipleRegions"> + No puede seleccionar un terreno que cruce las fronteras entre servidores. +Inténtelo seleccionando un trozo más pequeño de terreno. + </notification> + <notification name="SearchWordBanned"> + Se han excluido algunos términos de su búsqueda debido a restricciones en el contenido, según se especifica en las Normas de la Comunidad. + </notification> + <notification name="NoContentToSearch"> + Por favor, elija al menos un tipo de contenido a buscar ('PG', 'Mature', o 'Adult'). + </notification> + <notification name="GroupVote"> + [NAME] ha propuesto votar: +[MESSAGE] + <form name="form"> + <button name="VoteNow" text="Votar ahora"/> + <button name="Later" text="Más tarde"/> + </form> + </notification> + <notification name="SystemMessage"> + [MESSAGE] + </notification> + <notification name="EventNotification"> + Notificación de un evento: + +[NAME] +[DATE] + <form name="form"> + <button name="Teleport" text="Teleportar"/> + <button name="Description" text="Descripción"/> + <button name="Cancel" text="Cancelar"/> + </form> + </notification> + <notification name="TransferObjectsHighlighted"> + En estos momentos, están realzados todos los objetos de esta parcela que serán transferidos al comprador de la misma. + +* No están realzados los árboles y hierbas que se transferirán. + <form name="form"> + <button name="Done" text="Hecho"/> + </form> + </notification> + <notification name="DeactivatedGesturesTrigger"> + Desactivados los gestos que tienen el mismo botón: +[NAMES] + </notification> + <notification name="NoQuickTime"> + No se ve como instalado en su sistema el software QuickTime de Apple. +Si quiere ver por streaming elementos multimedia en las parcelas que los tengan, debe ir al sitio web de QuickTime (http://www.apple.com/quicktime) e instalar el QuickTime Player. + </notification> + <notification name="OwnedObjectsReturned"> + Se han devuelto a su inventario los objetos de los que usted era propietario en la parcela seleccionada. + </notification> + <notification name="OtherObjectsReturned"> + Se han devuelto a su inventario los objetos de los que usted era propietario en la parcela propiedad de [FIRST] [LAST]. + </notification> + <notification name="OtherObjectsReturned2"> + Se han devuelto a su propietario los objetos que, en la parcela seleccionada, eran propiedad del residente '[NAME]'. + </notification> + <notification name="GroupObjectsReturned"> + Se han devuelto a los inventarios de sus propietarios los objetos que estaban compartidos con el grupo [GROUPNAME] en la parcela seleccionada. +Los objetos transferibles que se transfirieron al grupo se han devuelto a sus propietarios anteriores. +Los objetos no transferibles que se transfirieron al grupo han sido borrados. + </notification> + <notification name="UnOwnedObjectsReturned"> + Se han devuelto a sus propietarios los objetos de los que usted NO era propietario en la parcela seleccionada. + </notification> + <notification name="NotSafe"> + Este es un terreno con el daño autorizado ('no seguro'). +Aquà puede ser herido. Si muere, será teleportado a su Base. + </notification> + <notification name="NoFly"> + En este terreno no se permite volar ('no volar'). +Aquà no debe volar. + </notification> + <notification name="PushRestricted"> + Este terreno es 'Sin empujones'. +No puede empujar a otros a menos que sea el propietario del terreno. + </notification> + <notification name="NoVoice"> + Este terreno tiene desactivada la voz. + </notification> + <notification name="NoBuild"> + Este terreno tiene desactivado el construir ('no construir'). +Aquà no puede crear objetos. + </notification> + <notification name="ScriptsStopped"> + Un administrador ha detenido temporalmente los scripts en esta región. + </notification> + <notification name="ScriptsNotRunning"> + En esta región no se está ejecutando ningún script. + </notification> + <notification name="NoOutsideScripts"> + Esta región tiene desactivados los scripts de otros +('no scripts de otros'). +No se ejecutará ningún script que no pertenezca al propietario del terreno. + </notification> + <notification name="ClaimPublicLand"> + Sólo puede reclamar terreno público en la región en que está usted. + </notification> + <notification name="RegionTPAccessBlocked"> + No está autorizado en esa región por su nivel de calificación. Debe validar su edad y/o instalar el último visor. + +Por favor, vaya a la Base de Conocimientos para más detalles sobre el acceso a zonas con este nivel de calificación. + </notification> + <notification name="URBannedFromRegion"> + Se le ha prohibido el acceso a la región. + </notification> + <notification name="NoTeenGridAccess"> + Su cuenta no puede conectarse a esta región del grid teen. + </notification> + <notification name="NoHelpIslandTP"> + No puede teleportarse de vuelta a la Help Island ('Isla de Ayuda'). +Vaya a la 'Help Island Public' ('Isla Pública de Ayuda') para repetir el tutorial. + </notification> + <notification name="ImproperPaymentStatus"> + No tiene el estado de pago adecuado para entrar a esta región. + </notification> + <notification name="MustGetAgeRgion"> + Debe haber verificado su edad para entrar a esta región. + </notification> + <notification name="MustGetAgeParcel"> + Debe haber verificado su edad para entrar a esta parcela. + </notification> + <notification name="NoDestRegion"> + No se ha encontrada la región de destino. + </notification> + <notification name="NotAllowedInDest"> + No está autorizado en el destino. + </notification> + <notification name="RegionParcelBan"> + No puede cruzar la región por una parcela con el acceso prohibido. Intente otro camino. + </notification> + <notification name="TelehubRedirect"> + Ha sido redirigido a un punto de teleporte. + </notification> + <notification name="CouldntTPCloser"> + No se puede teleportar a un destino tan cercano. + </notification> + <notification name="TPCancelled"> + Teleporte cancelado. + </notification> + <notification name="FullRegionTryAgain"> + En estos momentos, está llena la región a la que intenta entrar. +Por favor, reinténtelo en unos momentos. + </notification> + <notification name="GeneralFailure"> + Fallo general. + </notification> + <notification name="RoutedWrongRegion"> + Mal dirigido a la región. Por favor, reinténtelo. + </notification> + <notification name="NoValidAgentID"> + ID de agente inválida. + </notification> + <notification name="NoValidSession"> + ID de sesión inválido. + </notification> + <notification name="NoValidCircuit"> + Circuito de código inválido. + </notification> + <notification name="NoValidTimestamp"> + Fecha inválida. + </notification> + <notification name="NoPendingConnection"> + No se puede crear la conexión. + </notification> + <notification name="InternalUsherError"> + Se ha producido un error interno al intentar acceder al destino de su teleporte. Puede que, en este momento, el servicio de Second Life tenga problemas. + </notification> + <notification name="NoGoodTPDestination"> + No se puede encontrar en esta región un buen destino para el teleporte. + </notification> + <notification name="InternalErrorRegionResolver"> + Ha sucedido un error interno al manejar las coordenadas globales de su petición de teleporte. Puede que, en este momento, el servicio de Second Life tenga problemas. + </notification> + <notification name="NoValidLanding"> + No se ha podido encontrar un punto de aterrizaje válido. + </notification> + <notification name="NoValidParcel"> + No se ha podido encontrar una parcela válida. + </notification> + <notification name="ObjectGiveItem"> + Un objeto llamado [OBJECTFROMNAME], propiedad de [FIRST] [LAST], le ha dado un/a [OBJECTTYPE] de nombre [OBJECTNAME]. + <form name="form"> + <button name="Keep" text="Guardar"/> + <button name="Discard" text="Descartar"/> + <button name="Mute" text="Ignorar"/> + </form> + </notification> + <notification name="ObjectGiveItemUnknownUser"> + Un objeto llamado [OBJECTFROMNAME], propiedad de (un usuario desconocido), le ha dado un/a [OBJECTTYPE] de nombre [OBJECTNAME]. + <form name="form"> + <button name="Keep" text="Guardar"/> + <button name="Discard" text="Descartar"/> + <button name="Mute" text="Ignorar"/> + </form> + </notification> + <notification name="UserGiveItem"> + [NAME] le ha dado un/a [OBJECTTYPE] de nombre '[OBJECTNAME]'. + <form name="form"> + <button name="Keep" text="Guardar"/> + <button name="Discard" text="Descartar"/> + <button name="Mute" text="Ignorar"/> + </form> + </notification> + <notification name="GodMessage"> + [NAME] +[MESSAGE] + </notification> + <notification name="JoinGroup"> + [MESSAGE] + <form name="form"> + <button name="Join" text="Entrar"/> + <button name="Decline" text="Rehusar"/> + <button name="Info" text="Información"/> + </form> + </notification> + <notification name="TeleportOffered"> + [NAME] se ha ofrecido a teleportarle hasta su posición: + +[MESSAGE] + <form name="form"> + <button name="Teleport" text="Teleportar"/> + <button name="Cancel" text="Cancelar"/> + </form> + </notification> + <notification name="GotoURL"> + [MESSAGE] +[URL] + <form name="form"> + <button name="Later" text="Más tarde"/> + <button name="GoNow..." text="Ir ahora..."/> + </form> + </notification> + <notification name="OfferFriendship"> + [NAME] le está ofreciendo amistad. + +[MESSAGE] + +(Por defecto, usted podrá ver si están conectados los demás). + <form name="form"> + <button name="Accept" text="Aceptar"/> + <button name="Decline" text="Rehusar"/> + </form> + </notification> + <notification name="OfferFriendshipNoMessage"> + [NAME] le está ofreciendo amistad. + +(Por defecto, usted podrá ver si están conectados los demás). + <form name="form"> + <button name="Accept" text="Aceptar"/> + <button name="Decline" text="Rehusar"/> + </form> + </notification> + <notification name="FriendshipAccepted"> + [NAME] ha aceptado su oferta de amistad. + </notification> + <notification name="FriendshipDeclined"> + [NAME] ha rehusado su oferta de amistad. + </notification> + <notification name="OfferCallingCard"> + [FIRST] [LAST] le está ofreciendo su tarjeta de visita. +Esto añadirá un Ãtem a su inventario para que pueda enviar rápidamente a este residente un MI. + <form name="form"> + <button name="Accept" text="Aceptar"/> + <button name="Decline" text="Rehusar"/> + </form> + </notification> + <notification name="RegionRestartMinutes"> + La región se reiniciará en [MINUTES] minutos. +Si permanece en esta región, será desconectado. + </notification> + <notification name="RegionRestartSeconds"> + La región se reiniciará en [SECONDS] segundos. +Si permanece en esta región, será desconectado. + </notification> + <notification name="LoadWebPage"> + ¿Cargar la página web [URL]? + +[MESSAGE] + +Del objeto: [OBJECTNAME]; propiedad de: [NAME]? + <form name="form"> + <button name="Gotopage" text="Cargar"/> + <button name="Cancel" text="Cancelar"/> + </form> + </notification> + <notification name="FailedToFindWearableUnnamed"> + Búsqueda fallida de [TYPE] en la base de datos. + </notification> + <notification name="FailedToFindWearable"> + Búsqueda fallida de [TYPE] de nombre [DESC] en la base de datos. + </notification> + <notification name="InvalidWearable"> + El Ãtem que intenta llevar usa una caracterÃstica que su visor no puede leer. Por favor, actualice su versión de Second Life para llevar este Ãtem. + </notification> + <notification name="ScriptQuestion"> + '[OBJECTNAME]', un objeto propiedad de '[NAME]', querrÃa: + +[QUESTIONS] +¿Está de acuerdo? + <form name="form"> + <button name="Yes" text="SÃ"/> + <button name="No" text="No"/> + <button name="Mute" text="Ignorar"/> + </form> + </notification> + <notification name="ScriptQuestionCaution"> + '[OBJECTNAME]', un objeto propiedad de '[NAME]', querrÃa: + +[QUESTIONS] +Si no confÃa en este objeto y su creador, debe denegar la solicitud. Para más información, pulse el botón Detalles. + +¿Autorizar esta petición? + <form name="form"> + <button name="Grant" text="Autorizar"/> + <button name="Deny" text="Denegar"/> + <button name="Details" text="Detalles..."/> + </form> + </notification> + <notification name="ScriptDialog"> + '[TITLE]' de [FIRST] [LAST] +[MESSAGE] + <form name="form"> + <button name="Ignore" text="Ignorar"/> + </form> + </notification> + <notification name="ScriptDialogGroup"> + '[TITLE]' de [GROUPNAME]' +[MESSAGE] + <form name="form"> + <button name="Ignore" text="Ignorar"/> + </form> + </notification> + <notification name="FirstBalanceIncrease"> + Ha recibido [AMOUNT] L$. +Pueden darle L$ tanto objetos como otros usuarios. +Su balance se muestra en la esquina superior derecha de la pantalla. + </notification> + <notification name="FirstBalanceDecrease"> + Ha pagado [AMOUNT] L$. +Su balance se muestra en la esquina superior derecha de la pantalla. + </notification> + <notification name="FirstSit"> + Está sentado. +Use las teclas del cursor (o AWSD) para cambiar el punto de vista. +Pulde el botón 'Levantarse' para ponerse de pie. + </notification> + <notification name="FirstMap"> + Pulse el mapa y arrástrelo para desplazarlo. +Púlselo dos veces para teleportarse. +Use los controles de la derecha para encontrar sitios y mostrar diferentes fondos. + </notification> + <notification name="FirstBuild"> + Usted puede construir objetos nuevos en algunas zonas de [SECOND_LIFE]. +Use las herramientas de arriba a la izquierda para construir, y pruebe a cambiar rápidamente entre ellas pulsando Ctrl o Alt. +Pulse Esc para dejar de construir. + </notification> + <notification name="FirstLeftClickNoHit"> + En algunos objetos concretos, al pulsarlos con el botón izquierdo del ratón interacciona con ellos. +Si el puntero del ratón pasa a ser una mano puede interactuar con el objeto. +El botón derecho del ratón siempre muestra un menú con cosas que usted puede hacer. + </notification> + <notification name="FirstTeleport"> + Esta región no permite teleportarse de un punto a otro, por lo que ha sido llevado al Punto de Teleporte más cercano. +Su destinado está señalado con una columna de luz roja. +Siga la flecha roja hasta llegar a la columna, o pulse la flecha para hacerla desaparecer. + </notification> + <notification name="FirstOverrideKeys"> + A partir de ahora, sus teclas de movimiento las gestiona un objeto. +Pruebe las teclas del cursor o AWSD para ver qué hacen. +Algunos objetos (las pistolas, por ejemplo) le pedirán que, para usarlos, entre usted en vista subjetiva. Pulse 'M' para hacerlo. + </notification> + <notification name="FirstAppearance"> + Está modificando su apariencia. +Use las teclas del cursor para girar el punto de vista y hacer zoom. +Cuando acabe, pulse 'Guardar todo' para salvar su apariencia y salir del modificarla. +Puede modificar su apariencia tantas veces como quiera. + </notification> + <notification name="FirstInventory"> + Este es su inventario. Tiene objetos, notas, ropas, y otras cosas de su propiedad. +* Para vestirse un objeto o un vestuario completo, arrástrelo hasta usted mismo. +* Para colocar un objeto en el mundo, arrástrelo hasta el suelo. +* Para leer una nota, pulse dos veces en ella. + </notification> + <notification name="FirstSandbox"> + Esta es una región 'sandbox' (zona de pruebas). +Los objetos que construya aquà pueden ser eliminados cuando salga de esta zona, pues los sandbox se limpian regularmente. Por favor, tenga en cuenta la información que hay arriba de su pantalla junto al nombre de la región. + +Las regiones sandbox no son frecuentes, y están señalizadas. + </notification> + <notification name="FirstFlexible"> + Este objeto es flexible. +Los objetos flexibles no pueden ser materiales, y serán inmateriales hasta que se desmarque la casilla de flexibles. + </notification> + <notification name="FirstDebugMenus"> + Ha activado el menú Avanzado. +Contiene herramientas útiles para los desarrolladores que trabajan mejorando Second Life. +Para pasar este menú a una ventana, pulse Ctrl-Alt-D. En un Mac, pulse Cmd-Opt-Shift-D. + </notification> + <notification name="FirstSculptedPrim"> + Está editando un prim 'sculpted'. +Los prim sculpted requieren una textura especial para tomar forma. +Puede encontrar ejemplos de texturas sculpted en la biblioteca del inventario. + </notification> + <notification name="FirstMedia"> + Ha empezado a reproducir media. Puede hacer que los media se reproduzcan automáticamente en la pestaña Audio y VÃdeo de la ventana de preferencias. Note que tal cosa puede suponer un riesgo de seguridad en los sitios multimedia en los que no confÃe. + </notification> + <notification name="MaxListSelectMessage"> + Puede seleccionar un máximo de [MAX_SELECT] Ãtems de esta lista. + </notification> + <notification name="VoiceInviteP2P"> + [NAME] le está invitando a un chat de voz. +Pulse Aceptar para coger la llamada o Rehusar para declinar la invitación. Pulse Ignorar para ignorar a quien llama. + <form name="form"> + <button name="Accept" text="Aceptar"/> + <button name="Decline" text="Rehusar"/> + <button name="Mute" text="Ignorar"/> + </form> + </notification> + <notification name="AutoUnmuteByIM"> + [FIRST] [LAST], a quien ha enviado un mensaje instantáneo, ha dejado automáticamente de estar ignorado. + </notification> + <notification name="AutoUnmuteByMoney"> + [FIRST] [LAST], a quien ha dado dinero, ha dejado automáticamente de estar ignorado. + </notification> + <notification name="AutoUnmuteByInventory"> + [FIRST] [LAST], a quien ha ofrecido algo del inventario, ha dejado automáticamente de estar ignorado. + </notification> + <notification name="VoiceInviteGroup"> + [NAME] ha empezado un chat de voz con el grupo [GROUP]. +Pulse Aceptar para coger la llamada o Rehusar para declinar la invitación. Pulse Ignorar para ignorar a quien llama. + <form name="form"> + <button name="Accept" text="Aceptar"/> + <button name="Decline" text="Rehusar"/> + <button name="Mute" text="Ignorar"/> + </form> + </notification> + <notification name="VoiceInviteAdHoc"> + [NAME] ha empezado un chat de voz en multiconferencia. +Pulse Aceptar para coger la llamada o Rehusar para declinar la invitación. Pulse Ignorar para ignorar a este usuario. + <form name="form"> + <button name="Accept" text="Aceptar"/> + <button name="Decline" text="Rehusar"/> + <button name="Mute" text="Ignorar"/> + </form> + </notification> + <notification name="InviteAdHoc"> + [NAME] le está invitando a un chat en multiconferencia. +Pulse Aceptar para entrar al chat o Rehusar para declinar la invitación. Pulse Ignorar para ignorar a este usuario. + <form name="form"> + <button name="Accept" text="Aceptar"/> + <button name="Decline" text="Rehusar"/> + <button name="Mute" text="Ignorar"/> + </form> + </notification> + <notification name="VoiceChannelFull"> + El chat de voz al que está intentando entrar, [VOICE_CHANNEL_NAME], ha llegado a su capacidad máxima. Por favor, inténtelo más tarde. + </notification> + <notification name="ProximalVoiceChannelFull"> + Lo sentimos. Este área ha llegado a su capacidad máxima de conversaciones por voz. Por favor, intente usar la voz en otra zona. + </notification> + <notification name="VoiceChannelDisconnected"> + Ha sido desconectado del [VOICE_CHANNEL_NAME]. Va a ser reconectado al chat de voz del mundo. + </notification> + <notification name="VoiceChannelDisconnectedP2P"> + [VOICE_CHANNEL_NAME] ha colgado la llamada. Usted va a ser reconectado al chat de voz del mundo. + </notification> + <notification name="P2PCallDeclined"> + [VOICE_CHANNEL_NAME] ha rehusado su llamada. Usted va a ser reconectado al chat de voz del mundo. + </notification> + <notification name="P2PCallNoAnswer"> + [VOICE_CHANNEL_NAME] no está disponible para coger su llamada. Usted va a ser reconectado al chat de voz del mundo. + </notification> + <notification name="VoiceChannelJoinFailed"> + Fallo al conectar al [VOICE_CHANNEL_NAME]; por favor, inténtelo más tarde. Usted va a ser reconectado al chat de voz del mundo. + </notification> + <notification name="VoiceLoginRetry"> + Estamos creando un canal de voz para usted. Se puede tardar hasta un minuto. + </notification> + <notification name="Cannot enter parcel: not a group member"> + No puede entrar en esta parcela, no es miembro del grupo adecuado. + </notification> + <notification name="Cannot enter parcel: banned"> + No puede entrar en esta parcela, se le ha prohibido el acceso. + </notification> + <notification name="Cannot enter parcel: not on access list"> + No puede entrar en esta parcela, no está en la lista de acceso. + </notification> + <notification name="VoiceNotAllowed"> + No tiene permiso para conectarse al chat de voz de [VOICE_CHANNEL_NAME]. + </notification> + <notification name="VoiceCallGenericError"> + Ha ocurrido un error intentando conectarle al [VOICE_CHANNEL_NAME]. Por favor, inténtelo más tarde. + </notification> + <notification name="ServerVersionChanged"> + La región en la que ha entrado se ejecuta en un simulador con una versión diferente. Pulse este mensaje para ver más detalles. + </notification> + <notification name="UnableToOpenCommandURL"> + No puede abrirse desde este navegador la URL que ha pulsado. + </notification> + <global name="UnsupportedCPU"> + - La velocidad de su CPU no cumple los requerimientos mÃnimos. + </global> + <global name="UnsupportedGLRequirements"> + Parece que no tiene los requerimientos de hardware apropiados para Second Life. Second Life requiere una tarjeta gráfica OpenGL que admita texturas múltiples ('multitexture support'). Si la tiene, compruebe que tiene los últimos drivers para su tarjeta gráfica, asà como los últimos parches y 'service packs' para su sistema operativo. + +Si los problemas persisten, por favor, acuda a: http://www.secondlife.com/support + </global> + <global name="UnsupportedCPUAmount"> + 796 + </global> + <global name="UnsupportedRAMAmount"> + 510 + </global> + <global name="UnsupportedGPU"> + - Su tarjeta gráfica no cumple los requerimientos mÃnimos. + </global> + <global name="UnsupportedRAM"> + - La memoria de su sistema no cumple los requerimientos mÃnimos. + </global> + <global name="PermYes"> + Sà + </global> + <global name="PermNo"> + No + </global> +</notifications> diff --git a/indra/newview/skins/default/xui/es/panel_audio_device.xml b/indra/newview/skins/default/xui/es/panel_audio_device.xml index 9d6b02a3168720b5b7333b731063e5d6d4c8b181..d20a0af4fbcafb8d285b42745a7768e58a0a01a2 100644 --- a/indra/newview/skins/default/xui/es/panel_audio_device.xml +++ b/indra/newview/skins/default/xui/es/panel_audio_device.xml @@ -1,25 +1,25 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="device_settings"> - <text name="Audio Devices"> - Dispositivos de sonido - </text> - <text name="Input device (microphone):"> - Dispositivo de entrada (micrófono): - </text> - <text name="Output device (speakers):"> - Dispositivo de salida (altavoces): - </text> - <text name="Input level:"> - Volumen de entrada - </text> - <text_editor name="voice_intro_text1"> - Ajuste el deslizable para controlar el volumen con el que usted le sonará a otros residentes. Para probar el volumen de entrada, basta con que hable al micrófono. - </text_editor> - <volume_slider name="mic_volume_slider" tool_tip="Cambie el volumen usando este deslizable"/> - <text name="wait_text"> - Por favor, espere - </text> - <string name="default_text"> - Por defecto - </string> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="device_settings"> + <text name="Audio Devices"> + Dispositivos de sonido + </text> + <text name="Input device (microphone):"> + Dispositivo de entrada (micrófono): + </text> + <text name="Output device (speakers):"> + Dispositivo de salida (altavoces): + </text> + <text name="Input level:"> + Volumen de entrada + </text> + <text_editor name="voice_intro_text1"> + Ajuste el deslizable para controlar el volumen con el que usted le sonará a otros residentes. Para probar el volumen de entrada, basta con que hable al micrófono. + </text_editor> + <volume_slider name="mic_volume_slider" tool_tip="Cambie el volumen usando este deslizable"/> + <text name="wait_text"> + Por favor, espere + </text> + <string name="default_text"> + Por defecto + </string> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_friends.xml b/indra/newview/skins/default/xui/es/panel_friends.xml index 010cd7a63482dd798ecd275745ac730ad4d3919b..ea5c7d1e4fb9c6678ac2b394f3baf3fac61f0a52 100644 --- a/indra/newview/skins/default/xui/es/panel_friends.xml +++ b/indra/newview/skins/default/xui/es/panel_friends.xml @@ -1,20 +1,20 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="friends"> - <string name="Multiple"> - Varios amigos... - </string> - <scroll_list name="friend_list" tool_tip="Para seleccionar a varios amigos, mantenga pulsado Ctrl o Mays. mientras les va pulsando."> - <column name="icon_online_status" tool_tip="Estado de conexión"/> - <column label="Nombre" name="friend_name" tool_tip="Nombre"/> - <column name="icon_visible_online" tool_tip="El amigo puede ver cuándo está conectado"/> - <column name="icon_visible_map" tool_tip="El amigo puede localizarle en el mapa"/> - <column name="icon_edit_mine" tool_tip="El amigo puede editar, borrar o tomar sus objetos"/> - <column name="icon_edit_theirs" tool_tip="Puede editar los objetos de este amigo"/> - </scroll_list> - <button label="MI/Llamada" name="im_btn" tool_tip="Abrir sesión de mensajes instantáneos"/> - <button label="Perfil" name="profile_btn" tool_tip="Mostrar la imagen, los grupos, y otra información"/> - <button label="Teleportar..." name="offer_teleport_btn" tool_tip="Ofrecer a este amigo teleportarle hasta su posición"/> - <button label="Pagar..." name="pay_btn" tool_tip="Dar dólares Linden (L$) a este amigo"/> - <button label="Quitar..." name="remove_btn" tool_tip="Quitar a esta persona de su lista de amigos"/> - <button label="Añadir..." name="add_btn" tool_tip="Ofrecer ser mi amigo a un residente"/> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="friends"> + <string name="Multiple"> + Varios amigos... + </string> + <scroll_list name="friend_list" tool_tip="Para seleccionar a varios amigos, mantenga pulsado Ctrl o Mays. mientras les va pulsando."> + <column name="icon_online_status" tool_tip="Estado de conexión"/> + <column label="Nombre" name="friend_name" tool_tip="Nombre"/> + <column name="icon_visible_online" tool_tip="El amigo puede ver cuándo está conectado"/> + <column name="icon_visible_map" tool_tip="El amigo puede localizarle en el mapa"/> + <column name="icon_edit_mine" tool_tip="El amigo puede editar, borrar o tomar sus objetos"/> + <column name="icon_edit_theirs" tool_tip="Puede editar los objetos de este amigo"/> + </scroll_list> + <button label="MI/Llamada" name="im_btn" tool_tip="Abrir sesión de mensajes instantáneos"/> + <button label="Perfil" name="profile_btn" tool_tip="Mostrar la imagen, los grupos, y otra información"/> + <button label="Teleportar..." name="offer_teleport_btn" tool_tip="Ofrecer a este amigo teleportarle hasta su posición"/> + <button label="Pagar..." name="pay_btn" tool_tip="Dar dólares Linden (L$) a este amigo"/> + <button label="Quitar..." name="remove_btn" tool_tip="Quitar a esta persona de su lista de amigos"/> + <button label="Añadir..." name="add_btn" tool_tip="Ofrecer ser mi amigo a un residente"/> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_group_general.xml b/indra/newview/skins/default/xui/es/panel_group_general.xml index 865dad9028638662027c451ba0dbe1a344df2483..e5fd4b3aaef5edd22daba7bbb650a925ff165b05 100644 --- a/indra/newview/skins/default/xui/es/panel_group_general.xml +++ b/indra/newview/skins/default/xui/es/panel_group_general.xml @@ -49,8 +49,17 @@ Ponga su ratón sobre las opciones para más información. <check_box label="Inscripción libre" name="open_enrollement" tool_tip="Definir si se admiten al grupo nuevos miembros sin que sea preciso invitárseles."/> <check_box label="Cuota de inscripción en L$" name="check_enrollment_fee" tool_tip="Define si se requiere una cuota para entrar al grupo."/> <spinner name="spin_enrollment_fee" tool_tip="Cuando está marcado 'Cuota de inscripción', los miembros nuevos deben pagar esta cuota para entrar al grupo."/> - - + <combo_box name="group_mature_check" tool_tip="Establece si la información de su grupo es 'mature'."> + <combo_item name="select_mature"> + - Elegir Calificación - + </combo_item> + <combo_item name="mature"> + Contenido 'Mature' + </combo_item> + <combo_item name="pg"> + Contenido 'PG' + </combo_item> + </combo_box> <panel name="title_container"> <text name="active_title_label"> Mi etiqueta activa diff --git a/indra/newview/skins/default/xui/es/panel_group_invite.xml b/indra/newview/skins/default/xui/es/panel_group_invite.xml index 66329c4f2bc89f936c9e0823be40091fd873fd42..5f5f2c6e2ebd595b060247a80e411b72203bbcfb 100644 --- a/indra/newview/skins/default/xui/es/panel_group_invite.xml +++ b/indra/newview/skins/default/xui/es/panel_group_invite.xml @@ -3,9 +3,9 @@ <text name="help_text"> Puede seleccionar a varios residentes para invitarles a su grupo. Para empezar, pulse -'Abrir el selector de personas'. +'Abrir el selector de residentes'. </text> - <button label="Abrir el selector de personas" name="add_button" tool_tip=""/> + <button label="Abrir el selector de residentes" name="add_button" tool_tip=""/> <name_list name="invitee_list" tool_tip="Para seleccionar a varios residentes, mantenga pulsada la tecla Ctrl y vaya pulsando sus nombres."/> <button label="Eliminar de la lista a los seleccionados" name="remove_button" tool_tip="Elimina los residentes seleccionados de la lista de invitaciones."/> <text name="role_text"> diff --git a/indra/newview/skins/default/xui/es/panel_group_land_money.xml b/indra/newview/skins/default/xui/es/panel_group_land_money.xml index 436a79d42925fadd87e4b78ef3c275ec9bea9ec8..32473b813367636a53976d9880611c6969b19f2f 100644 --- a/indra/newview/skins/default/xui/es/panel_group_land_money.xml +++ b/indra/newview/skins/default/xui/es/panel_group_land_money.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Terreno y L$" name="land_money_tab"> <string name="help_text"> - Se listan las parcelas propiedad del grupo, detallando las contribuciones. Aparece una advertencia si el Terreno total en uso es menor que o igual a la Contribución total. Las pestañas 'Planeamiento', 'Detalles' y 'Ventas' aportan información sobre las finanzas del grupo. + Se listan las parcelas propiedad del grupo, detallando las contribuciones. Aparece una advertencia si el Terreno total en uso es menor que o igual a la Contribución total. Las pestañas 'Planificación', 'Detalles' y 'Ventas' aportan información sobre las finanzas del grupo </string> <button label="?" name="help_button"/> <string name="cant_view_group_land_text"> @@ -17,8 +17,9 @@ Terreno propiedad del grupo </text> <scroll_list name="group_parcel_list"> - <column label="Nombre de la parcela" name="name"/> + <column label="Parcela" name="name"/> <column label="Región" name="location"/> + <column label="Tipo" name="type"/> <column label="Superficie" name="area"/> <column label="" name="hidden"/> </scroll_list> @@ -57,6 +58,11 @@ L$ del grupo </text> <tab_container name="group_money_tab_container"> + <panel label="Planificación" name="group_money_planning_tab"> + <text_editor name="group_money_planning_text"> + Calculando... + </text_editor> + </panel> <panel label="Detalles" name="group_money_details_tab"> <text_editor name="group_money_details_text"> Calculando... diff --git a/indra/newview/skins/default/xui/es/panel_group_roles.xml b/indra/newview/skins/default/xui/es/panel_group_roles.xml index 4c3e40ecc2ff4286627c2bae47040dfa438d6a03..8cc1a4ba9dcbd9940eaf942f9ff69cd1561a2d92 100644 --- a/indra/newview/skins/default/xui/es/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/es/panel_group_roles.xml @@ -49,7 +49,7 @@ <column label="Cuotas donadas" name="donated"/> <column label="Última conexión" name="online"/> </name_list> - <button label="Invitar a una nueva persona..." name="member_invite"/> + <button label="Invitar a un nuevo miembro..." name="member_invite"/> <button label="Expulsar del grupo" name="member_eject"/> <string name="help_text"> Puede añadir o quitar los roles asignados a los miembros. diff --git a/indra/newview/skins/default/xui/es/panel_groups.xml b/indra/newview/skins/default/xui/es/panel_groups.xml index 27240a49b6572b76fc5ed6d7f148758d452a9b15..1259ded62f99cde8da51ac71908e577f9a0d7db9 100644 --- a/indra/newview/skins/default/xui/es/panel_groups.xml +++ b/indra/newview/skins/default/xui/es/panel_groups.xml @@ -1,15 +1,15 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="groups"> - <text name="groupdesc"> - El grupo que tiene activado actualmente se muestra en negrilla - </text> - <text name="groupcount"> - Pertenece a [COUNT] grupo/s (de un máximo de [MAX]). - </text> - <button label="MI/Llamar" name="IM" tool_tip="Abrir una sesión de mensajes instantáneos"/> - <button label="Información" name="Info"/> - <button label="Activar" name="Activate"/> - <button label="Abandonar" name="Leave"/> - <button label="Crear..." name="Create"/> - <button label="Buscar..." name="Search..."/> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="groups"> + <text name="groupdesc"> + El grupo que tiene activado actualmente se muestra en negrilla + </text> + <text name="groupcount"> + Pertenece a [COUNT] grupo/s (de un máximo de [MAX]). + </text> + <button label="MI/Llamar" name="IM" tool_tip="Abrir una sesión de mensajes instantáneos"/> + <button label="Información" name="Info"/> + <button label="Activar" name="Activate"/> + <button label="Abandonar" name="Leave"/> + <button label="Crear..." name="Create"/> + <button label="Buscar..." name="Search..."/> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_preferences_chat.xml b/indra/newview/skins/default/xui/es/panel_preferences_chat.xml index 0e092e58a29be23bde5aafb49287e518829f9584..b8c9cc5b448590b4450655560b1f7927d2f9ab6b 100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_chat.xml @@ -1,18 +1,13 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Chat de texto" name="chat"> <text length="1" name="text_box" type="string"> - Tamaño de la fuente del chat: + Tamaño de la fuente +del chat: </text> <radio_group name="chat_font_size"> - <radio_item name="radio"> - Pequeño - </radio_item> - <radio_item name="radio2"> - Medio - </radio_item> - <radio_item name="radio3"> - Grande - </radio_item> + <radio_item name="radio" label="Pequeño" /> + <radio_item name="radio2" label="Medio" /> + <radio_item name="radio3" label="Grande" /> </radio_group> <text length="1" name="text_box2" type="string"> Color del chat: @@ -35,7 +30,7 @@ </text> <spinner label="Quitar el chat tras" name="fade_chat_time" label_width="95" width="145" /> <text length="1" name="text_box4" type="string" left="297" > - (s) + (seg.) </text> <text length="1" name="text_box5" type="string"> (# lÃneas) diff --git a/indra/newview/skins/default/xui/es/panel_preferences_general.xml b/indra/newview/skins/default/xui/es/panel_preferences_general.xml index 62a2959e13b4db25933bd11b7ab82f9c71f08f82..b711821e5f55118014d8eeef44e108dcf88dfd99 100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_general.xml @@ -27,10 +27,28 @@ </text> <check_box label="Resolución independiente del tamaño" name="ui_auto_scale"/> <spinner label="Ausente tras:" name="afk_timeout_spinner"/> - <check_box label="Girar el minimapa" name="rotate_mini_map_checkbox"/> <check_box label="Avisar cuando gasto o recibo dólares Linden (L$)" name="notify_money_change_checkbox"/> - <check_box label="Usar los colores del SO" name="use_system_color_picker_checkbox" tool_tip="Usar los colores del propio sistema operativo en vez de los propios de Second Life."/> - <check_box label="Incluir una ventana de búsqueda en la barra superior" name="show_search_panel" tool_tip="Muestra el panel de búsqueda insertado."/> + <text name="maturity_desired_label" bottom="-312"> + Calificación: + </text> + <text name="maturity_desired_prompt" bottom="-312"> + Quiero acceder a +contenido calificado: + </text> + <combo_box name="maturity_desired_combobox" bottom="-330" left="274"> + <combo_item name="Desired_Adult"> + 'PG', 'Mature' y 'Adult' + </combo_item> + <combo_item name="Desired_Mature"> + 'PG' y 'Mature' + </combo_item> + <combo_item name="Desired_PG"> + sólo 'PG' + </combo_item> + </combo_box> + <text name="maturity_desired_textbox" bottom="-324" left="274"> + sólo 'PG' + </text> <text length="1" name="start_location_textbox" type="string"> Posición inicial: </text> @@ -49,7 +67,7 @@ <text length="1" name="language_textbox" type="string"> Idioma: </text> - <text length="1" name="language_textbox2" type="string" left_delta="313" > + <text left_delta="313" length="1" name="language_textbox2" type="string"> (Tendrá efecto tras reiniciar) </text> <string name="region_name_prompt"> @@ -73,6 +91,21 @@ <combo_box.item length="1" name="Chinese" type="string" label="䏿–‡ (简体) (Chino) - Beta"/> <combo_box.item length="1" name="(Japanese)" type="string" label="日本語 (Japonés) - Beta"/> <combo_box.item length="1" name="(Korean)" type="string" label="한êµì–´ (Coreano) - Beta"/> + <combo_item name="Italian"> + Italiano - Beta + </combo_item> + <combo_item name="Dutch"> + Nederlands (Neerlandés) - Beta + </combo_item> + </combo_item> + <combo_item name="Russian"> + РуÑÑкий (Ruso) - Beta + </combo_item> + <combo_item name="Turkish"> + Türkçe (Turco) - Beta + </combo_item> + <combo_item name="Ukrainian"> + УкраїнÑька (Ucraniano) - Beta </combo_box> <check_box label="Compartir el idioma con los objetos" name="language_is_public" tool_tip="Hace que los objetos con script del mundo sepan su idioma preferido."/> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml index 3965df36973087983c476467862efaa760df3b86..7e19c6dd6bfc077b9abe7d0016de45d02a5207e5 100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml @@ -2,13 +2,13 @@ <panel label="Gráficos" name="Display panel"> <button label="?" name="GraphicsPreferencesHelpButton"/> <check_box label="Abrir Second Life en una ventana" name="windowed mode"/> - <text_editor name="FullScreenInfo"> + <text_editor name="FullScreenInfo" width="480"> Si no está marcado, el visor se mostrará en pantalla completa cuando inicie sesión. </text_editor> <text name="WindowSizeLabel"> Tamaño de la ventana: </text> - <combo_box name="windowsize combo"> + <combo_box left="124" name="windowsize combo"> <combo_box.item name="640x480" label="640x480"/> <combo_box.item name="800x600" label="800x600"/> <combo_box.item name="720x480" label="720x480 (NTSC)"/> @@ -18,23 +18,24 @@ <text name="DisplayResLabel"> Resolución: </text> + <combo_box left="124" name="fullscreen combo" /> <text name="AspectRatioLabel1" tool_tip="ancho / alto"> Proporción: </text> - <combo_box name="aspect_ratio" tool_tip="ancho / alto"> + <combo_box left="124" name="aspect_ratio" tool_tip="ancho / alto"> <combo_box.item length="1" name="4:3(StandardCRT)" type="string" label="4:3 (Standard CRT)"/> <combo_box.item length="1" name="5:4(1280x1024LCD)" type="string" label="5:4 (1280x1024 LCD)"/> <combo_box.item name="8:5(Widescreen)" label="8:5 (Widescreen)"/> <combo_box.item length="1" name="16:9(Widescreen)" type="string" label="16:9 (Widescreen)"/> </combo_box> - <check_box label="Detectar automáticamente la proporción" name="aspect_auto_detect"/> + <check_box label="Detectar automáticamente la proporción" name="aspect_auto_detect" left="295" /> <text name="HigherText"> Calidad y </text> <text name="QualityText"> Rendimiento: </text> - <text name="FasterText"> + <text name="FasterText" left="95"> El más rápido </text> <text name="ShadersPrefText"> @@ -49,11 +50,11 @@ <text name="ShadersPrefText4"> Ultra </text> - <text name="HigherText2"> + <text name="HigherText2" left="325" > Más alto </text> - <text name="QualityText2"> - Calidad + <text name="QualityText2" left="325" > + calidad </text> <check_box label="Personalizar" name="CustomSettings"/> <text name="ShadersText"> @@ -67,18 +68,10 @@ Objetos reflejados: </text> <radio_group name="ReflectionDetailRadio"> - <radio_item name="0"> - Terreno y árboles - </radio_item> - <radio_item name="1"> - Todos los objetos estáticos - </radio_item> - <radio_item name="2"> - Todos los avatares y objetos - </radio_item> - <radio_item name="3"> - Todo - </radio_item> + <radio_item name="0" label="Terreno y árboles" /> + <radio_item name="1" label="Todos los objetos estáticos" /> + <radio_item name="2" label="Todos los avatares y objetos" /> + <radio_item name="3" label="Todo" /> </radio_group> <text name="AvatarRenderingText"> Renderización del avatar: @@ -94,16 +87,16 @@ </text> <slider label="Distancia de dibujo:" name="DrawDistance"/> <slider label="Núm. máx. de partÃculas:" name="MaxParticleCount"/> - <slider label="Calidad del procesamiento:" name="RenderPostProcess"/> + <slider label="Calidad del procesamiento:" name="RenderPostProcess" label_width="142"/> <text name="MeshDetailText"> Detalle de la malla: </text> - <slider label="Objetos:" name="ObjectMeshDetail"/> - <slider label="Prims flexibles:" name="FlexibleMeshDetail"/> - <slider label="Ãrboles:" name="TreeMeshDetail"/> - <slider label="Avatares:" name="AvatarMeshDetail"/> - <slider label="Terreno:" name="TerrainMeshDetail"/> - <slider label="Cielo:" name="SkyMeshDetail"/> + <slider label=" Objetos:" name="ObjectMeshDetail"/> + <slider label=" Prims flexibles:" name="FlexibleMeshDetail"/> + <slider label=" Ãrboles:" name="TreeMeshDetail"/> + <slider label=" Avatares:" name="AvatarMeshDetail"/> + <slider label=" Terreno:" name="TerrainMeshDetail"/> + <slider label=" Cielo:" name="SkyMeshDetail"/> <text name="PostProcessText"> Baja </text> @@ -125,30 +118,23 @@ <text name="SkyMeshDetailText"> Bajo </text> - <text name="LightingDetailText"> + <text name="LightingDetailText" width="135"> Detalles de la iluminación: </text> <radio_group name="LightingDetailRadio"> - <radio_item name="SunMoon"> - Sólo el Sol y la Luna - </radio_item> - <radio_item name="LocalLights"> - Puntos de luz cercanos - </radio_item> + <radio_item name="SunMoon" label="Sólo el Sol y la Luna" /> + <radio_item name="LocalLights" label="Puntos de luz cercanos" /> </radio_group> <text name="TerrainDetailText"> - Nivel de detalle del terreno: - </text> - <radio_group name="TerrainDetailRadio"> - <radio_item name="0"> - Bajo - </radio_item> - <radio_item name="2"> - Alto - </radio_item> + Nivel de detalle del + terreno: + </text> + <radio_group name="TerrainDetailRadio" left_delta="60"> + <radio_item name="0" label="Bajo" /> + <radio_item name="2" label="Alto" /> </radio_group> - <button label="Configuraciones recomendadas" name="Defaults"/> - <button label="Opciones del hardware" label_selected="Opciones del hardware" name="GraphicsHardwareButton"/> + <button label="Configuraciones recomendadas" name="Defaults" width="195" left="110"/> + <button label="Opciones del hardware" label_selected="Opciones del hardware" name="GraphicsHardwareButton" left="315"/> <string name="resolution_format"> [RES_X] x [RES_Y] </string> diff --git a/indra/newview/skins/default/xui/es/panel_region_covenant.xml b/indra/newview/skins/default/xui/es/panel_region_covenant.xml index e353f6cdec1aa082b4524207483052f0f6dce7e7..3f9e782bd76ab4d8c948efb67a72aa52fc483357 100644 --- a/indra/newview/skins/default/xui/es/panel_region_covenant.xml +++ b/indra/newview/skins/default/xui/es/panel_region_covenant.xml @@ -1,50 +1,80 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Contrato" name="Covenant"> + <text name="estate_section_lbl"> + Estado: + </text> + <text name="estate_name_lbl"> + Nombre: + </text> + <text name="estate_name_text"> + mainland + </text> + <text name="estate_owner_lbl"> + Propietario: + </text> + <text name="estate_owner_text"> + (nadie) + </text> + <text name="estate_cov_lbl"> + Contrato: + </text> + <text name="covenant_timestamp_text"> + Última modificación el miér. 31 de dic. de 1969, 16:00:00 + </text> + <button label="?" name="covenant_help"/> + <text_editor name="covenant_editor"> + No se ha aportado un contrato para este estado. + </text_editor> + <button label="Cambiar" name="reset_covenant"/> <text name="covenant_help_text"> - Los cambios que se hagan en la información del contrato se mostrarán en todas las parcelas del estado. + Los cambios en el contrato se mostrarán en todas las parcelas del estado. </text> - <text name="region_name_lbl"> + <text name="covenant_instructions"> + Para cambiar el contrato de este estado, arrastre y suelte una nota. + </text> + <text name="region_section_lbl"> Región: </text> + <text name="region_name_lbl"> + Nombre: + </text> <text name="region_name_text"> - (desconocida) + leyla </text> - <text name="estate_name_lbl"> - Estado: + <text name="region_landtype_lbl"> + Tipo: </text> - <text name="estate_name_text"> - (desconocido) + <text name="region_landtype_text"> + Mainland / Homestead </text> - <text name="covenent_instructions"> - Para cambiar el contrato de este estado, arrastre y suelte una nota. + <text name="region_maturity_lbl"> + Calificación: </text> - <button label="?" name="covenant_help"/> - <button label="Cambiar" name="reset_covenant"/> - <text name="estate_owner_lbl"> - Propietario del estado: + <text name="region_maturity_text"> + 'Adult' </text> - <text name="estate_owner_text"> - (desconocido) + <text name="resellable_lbl"> + Revender: </text> <text name="resellable_clause"> - El terreno comprado en esta región se podrá o no revender. + El terreno de esta región no se podrá revender. + </text> + <text name="changeable_lbl"> + Dividir: </text> <text name="changeable_clause"> - El terreno comprado en esta región se podrá o no unir o subdividir. + El terreno de esta región no se podrá unir/dividir. </text> - <text_editor name="covenant_editor"> - Cargando... - </text_editor> - <text name="can_resell"> + <string name="can_resell"> El terreno comprado en esta región se podrá revender. - </text> - <text name="can_not_resell"> + </string> + <string name="can_not_resell"> El terreno comprado en esta región no se podrá revender. - </text> - <text name="can_change"> + </string> + <string name="can_change"> El terreno comprado en esta región se podrá unir o subdividir. - </text> - <text name="can_not_change"> + </string> + <string name="can_not_change"> El terreno comprado en esta región no se podrá unir ni subdividir. - </text> + </string> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_region_general.xml b/indra/newview/skins/default/xui/es/panel_region_general.xml index 9ff7c97fc7b94b253c203fb895ecd55c0f7e02cf..64169e427be07c1b566735a258bfcc334639c459 100644 --- a/indra/newview/skins/default/xui/es/panel_region_general.xml +++ b/indra/newview/skins/default/xui/es/panel_region_general.xml @@ -12,6 +12,12 @@ <text name="version_channel_text"> desconocida </text> + <text name="region_type_lbl"> + Tipo: + </text> + <text name="region_type"> + desconocido + </text> <check_box label="No permitir modificar el terreno" name="block_terraform_check"/> <button label="?" name="terraform_help"/> <check_box label="Prohibir volar" name="block_fly_check"/> @@ -33,10 +39,17 @@ <text label="Calificación" name="access_text"> Calificación: </text> - - - - + <combo_box label="'Mature'" name="access_combo"> + <combo_item name="Adult"> + 'Adult' + </combo_item> + <combo_item name="Mature"> + 'Mature' + </combo_item> + <combo_item name="PG"> + 'PG' + </combo_item> + </combo_box> <button label="?" name="access_help"/> <button label="Aplicar" name="apply_btn"/> <button label="Teleportar a su Base a un usuario..." name="kick_btn"/> diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml index 07ae44409f2995afbd83ea0c4b3ee5dbe80076de..4793f6c6614634e96e386ac9d25c99fb43c0b9a8 100644 --- a/indra/newview/skins/default/xui/es/strings.xml +++ b/indra/newview/skins/default/xui/es/strings.xml @@ -1,421 +1,486 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<!-- This file contains strings that used to be hardcoded in the source. - It is only for those strings which don't belong in a floater. - For example, the strings used in avatar chat bubbles, and strings - that are returned from one component and may appear in many places--> -<strings> - <string name="LoginInProgress"> - Iniciando la sesión. [APP_NAME] debe de aparecer congelado. Por favor, espere. - </string> - <string name="LoginAuthenticating"> - Autenticando - </string> - <string name="LoginMaintenance"> - Realizando el mantenimiento de la cuenta... - </string> - <string name="LoginAttempt"> - Ha fallado el intento previo de iniciar sesión. Iniciando sesión, intento [NUMBER] - </string> - <string name="LoginPrecaching"> - Cargando el mundo... - </string> - <string name="LoginInitializingBrowser"> - Iniciando el navegador web incorporado... - </string> - <string name="LoginInitializingMultimedia"> - Iniciando multimedia... - </string> - <string name="LoginVerifyingCache"> - Comprobando los archivos de la caché (puede tardar entre 60 y 90 segundos)... - </string> - <string name="LoginProcessingResponse"> - Procesando la respuesta... - </string> - <string name="LoginInitializingWorld"> - Iniciando el mundo... - </string> - <string name="LoginDecodingImages"> - Decodificando las imágenes... - </string> - <string name="LoginInitializingQuicktime"> - Iniciando QuickTime... - </string> - <string name="LoginQuicktimeNotFound"> - No se ha encontrado QuickTime. Imposible iniciarlo. - </string> - <string name="LoginQuicktimeOK"> - QuickTime se ha iniciado adecuadamente. - </string> - <string name="LoginWaitingForRegionHandshake"> - Esperando la conexión con la región... - </string> - <string name="LoginConnectingToRegion"> - Conectando con la región... - </string> - <string name="LoginDownloadingClothing"> - Descargando la ropa... - </string> - <string name="LoginFailedNoNetwork"> - Error de red: no se ha podido conectar; por favor, revise su conexión a internet. - </string> - <string name="AgentLostConnection"> - Esta región puede estar teniendo problemas. Por favor, compruebe su conexión a internet. - </string> - <string name="TooltipPerson"> - Persona - </string> - <string name="TooltipNoName"> - (sin nombre) - </string> - <string name="TooltipOwner"> - Propietario: - </string> - <string name="TooltipPublic"> - Público - </string> - <string name="TooltipIsGroup"> - (Grupo) - </string> - <string name="TooltipFlagScript"> - Script - </string> - <string name="TooltipFlagPhysics"> - Propiedades fÃsicas - </string> - <string name="TooltipFlagTouch"> - Tocar - </string> - <string name="TooltipFlagL$"> - L$ - </string> - <string name="TooltipFlagDropInventory"> - Desplegar el inventario - </string> - <string name="TooltipFlagPhantom"> - Inmaterial - </string> - <string name="TooltipFlagTemporary"> - Temporal - </string> - <string name="TooltipFlagRightClickMenu"> - (pulse el botón derecho del ratón para ver el menú) - </string> - <string name="TooltipFreeToCopy"> - Copia gratis - </string> - <string name="TooltipForSaleL$"> - En venta: [AMOUNT] L$ - </string> - <string name="TooltipForSaleMsg"> - En venta: [MESSAGE] - </string> - <string name="TooltipFlagGroupBuild"> - Construir el grupo - </string> - <string name="TooltipFlagNoBuild"> - No construir - </string> - <string name="TooltipFlagNoEdit"> - Construir el grupo - </string> - <string name="TooltipFlagNotSafe"> - No seguro - </string> - <string name="TooltipFlagNoFly"> - No volar - </string> - <string name="TooltipFlagGroupScripts"> - Scripts el grupo - </string> - <string name="TooltipFlagNoScripts"> - No scripts - </string> - <string name="TooltipLand"> - Terreno: - </string> - <string name="TooltipMustSingleDrop"> - Aquà se puede arrastrar sólo un Ãtem - </string> - <string name="RetrievingData"> - Reintentando... - </string> - <string name="ReleaseNotes"> - Notas de la versión - </string> - <string name="LoadingData"> - Cargando... - </string> - <string name="AvatarNameNobody"> - (nadie) - </string> - <string name="AvatarNameWaiting"> - (esperando) - </string> - <string name="AvatarNameHippos"> - (hipopótamos) - </string> - <string name="GroupNameNone"> - (ninguno) - </string> - <string name="AssetErrorNone"> - No hay ningún error - </string> - <string name="AssetErrorRequestFailed"> - Petición de asset: fallida - </string> - <string name="AssetErrorNonexistentFile"> - Petición de asset: el archivo no existe - </string> - <string name="AssetErrorNotInDatabase"> - Petición de asset: no se encontró el asset en la base de datos - </string> - <string name="AssetErrorEOF"> - Fin del archivo - </string> - <string name="AssetErrorCannotOpenFile"> - No puede abrirse el archivo - </string> - <string name="AssetErrorFileNotFound"> - No se ha encontrado el archivo - </string> - <string name="AssetErrorTCPTimeout"> - Tiempo de transferencia del archivo - </string> - <string name="AssetErrorCircuitGone"> - Circuito desconectado - </string> - <string name="AssetErrorUnknownStatus"> - Estado desconocido - </string> - <string name="AvatarEditingApparance"> - (Modificando la apariencia) - </string> - <string name="AvatarAway"> - Ausente - </string> - <string name="AvatarBusy"> - Ocupado - </string> - <string name="AvatarMuted"> - Ignorado - </string> - <string name="anim_express_afraid"> - Susto - </string> - <string name="anim_express_anger"> - Enfado - </string> - <string name="anim_away"> - Ausente - </string> - <string name="anim_backflip"> - Salto mortal atrás - </string> - <string name="anim_express_laugh"> - Carcajada - </string> - <string name="anim_express_toothsmile"> - Gran sonrisa - </string> - <string name="anim_blowkiss"> - Mandar un beso - </string> - <string name="anim_express_bored"> - Aburrimiento - </string> - <string name="anim_bow"> - Reverencia - </string> - <string name="anim_clap"> - Aplauso - </string> - <string name="anim_courtbow"> - Reverencia floreada - </string> - <string name="anim_express_cry"> - Llanto - </string> - <string name="anim_dance1"> - Baile 1 - </string> - <string name="anim_dance2"> - Baile 2 - </string> - <string name="anim_dance3"> - Baile 3 - </string> - <string name="anim_dance4"> - Baile 4 - </string> - <string name="anim_dance5"> - Baile 5 - </string> - <string name="anim_dance6"> - Baile 6 - </string> - <string name="anim_dance7"> - Baile 7 - </string> - <string name="anim_dance8"> - Baile 8 - </string> - <string name="anim_express_disdain"> - Desdén - </string> - <string name="anim_drink"> - Beber - </string> - <string name="anim_express_embarrased"> - Azorarse - </string> - <string name="anim_angry_fingerwag"> - Negar con el dedo - </string> - <string name="anim_fist_pump"> - Éxito con el puño - </string> - <string name="anim_yoga_float"> - Yoga flotando - </string> - <string name="anim_express_frown"> - Fruncir el ceño - </string> - <string name="anim_impatient"> - Impaciente - </string> - <string name="anim_jumpforjoy"> - Salto de alegrÃa - </string> - <string name="anim_kissmybutt"> - Bésame el culo - </string> - <string name="anim_express_kiss"> - Besar - </string> - <string name="anim_laugh_short"> - ReÃr - </string> - <string name="anim_musclebeach"> - Sacar músculo - </string> - <string name="anim_no_unhappy"> - No (con enfado) - </string> - <string name="anim_no_head"> - No - </string> - <string name="anim_nyanya"> - Ña-Ña-Ña - </string> - <string name="anim_punch_onetwo"> - Puñetazo uno-dos - </string> - <string name="anim_express_open_mouth"> - Abrir la boca - </string> - <string name="anim_peace"> - 'V' con los dedos - </string> - <string name="anim_point_you"> - Señalar a otro/a - </string> - <string name="anim_point_me"> - Señalarse - </string> - <string name="anim_punch_l"> - Puñetazo izquierdo - </string> - <string name="anim_punch_r"> - Puñetazo derecho - </string> - <string name="anim_rps_countdown"> - PPT cuenta - </string> - <string name="anim_rps_paper"> - PPT papel - </string> - <string name="anim_rps_rock"> - PPT piedra - </string> - <string name="anim_rps_scissors"> - PPT tijera - </string> - <string name="anim_express_repulsed"> - Repulsa - </string> - <string name="anim_kick_roundhouse_r"> - Patada circular - </string> - <string name="anim_express_sad"> - Triste - </string> - <string name="anim_salute"> - Saludo militar - </string> - <string name="anim_shout"> - Gritar - </string> - <string name="anim_express_shrug"> - Encogerse de hombros - </string> - <string name="anim_express_smile"> - SonreÃr - </string> - <string name="anim_smoke_idle"> - Fumar: en la mano - </string> - <string name="anim_smoke_inhale"> - Fumar - </string> - <string name="anim_smoke_throw_down"> - Fumar: tirar el cigarro - </string> - <string name="anim_express_surprise"> - Sorpresa - </string> - <string name="anim_sword_strike_r"> - Estocadas - </string> - <string name="anim_angry_tantrum"> - Berrinche - </string> - <string name="anim_express_tongue_out"> - Sacar la lengua - </string> - <string name="anim_hello"> - Agitar la mano - </string> - <string name="anim_whisper"> - Cuchichear - </string> - <string name="anim_whistle"> - Pitar - </string> - <string name="anim_express_wink"> - Guiño - </string> - <string name="anim_wink_hollywood"> - Guiño (Hollywood) - </string> - <string name="anim_express_worry"> - Preocuparse - </string> - <string name="anim_yes_happy"> - Sà (contento) - </string> - <string name="anim_yes_head"> - Sà - </string> - <string name="texture_loading"> - Cargando... - </string> - <string name="worldmap_offline"> - Desconectado/a - </string> - <string name="whisper"> - susurra: - </string> - <string name="shout"> - grita: - </string> -</strings> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- This file contains strings that used to be hardcoded in the source. + It is only for those strings which do not belong in a floater. + For example, the strings used in avatar chat bubbles, and strings + that are returned from one component and may appear in many places--> +<strings> + <string name="LoginInProgress"> + Iniciando la sesión. [APP_NAME] debe de aparecer congelado. Por favor, espere. + </string> + <string name="LoginAuthenticating"> + Autenticando + </string> + <string name="LoginMaintenance"> + Realizando el mantenimiento de la cuenta... + </string> + <string name="LoginAttempt"> + Ha fallado el intento previo de iniciar sesión. Iniciando sesión, intento [NUMBER] + </string> + <string name="LoginPrecaching"> + Cargando el mundo... + </string> + <string name="LoginInitializingBrowser"> + Iniciando el navegador web incorporado... + </string> + <string name="LoginInitializingMultimedia"> + Iniciando multimedia... + </string> + <string name="LoginVerifyingCache"> + Comprobando los archivos de la caché (puede tardar entre 60 y 90 segundos)... + </string> + <string name="LoginProcessingResponse"> + Procesando la respuesta... + </string> + <string name="LoginInitializingWorld"> + Iniciando el mundo... + </string> + <string name="LoginDecodingImages"> + Decodificando las imágenes... + </string> + <string name="LoginInitializingQuicktime"> + Iniciando QuickTime... + </string> + <string name="LoginQuicktimeNotFound"> + No se ha encontrado QuickTime. Imposible iniciarlo. + </string> + <string name="LoginQuicktimeOK"> + QuickTime se ha iniciado adecuadamente. + </string> + <string name="LoginWaitingForRegionHandshake"> + Esperando la conexión con la región... + </string> + <string name="LoginConnectingToRegion"> + Conectando con la región... + </string> + <string name="LoginDownloadingClothing"> + Descargando la ropa... + </string> + <string name="AgentLostConnection"> + Esta región puede estar teniendo problemas. Por favor, compruebe su conexión a internet. + </string> + <string name="TooltipPerson"> + Persona + </string> + <string name="TooltipNoName"> + (sin nombre) + </string> + <string name="TooltipOwner"> + Propietario: + </string> + <string name="TooltipPublic"> + Público + </string> + <string name="TooltipIsGroup"> + (Grupo) + </string> + <string name="TooltipFlagScript"> + Script + </string> + <string name="TooltipFlagPhysics"> + Propiedades fÃsicas + </string> + <string name="TooltipFlagTouch"> + Tocar + </string> + <string name="TooltipFlagL$"> + L$ + </string> + <string name="TooltipFlagDropInventory"> + Desplegar el inventario + </string> + <string name="TooltipFlagPhantom"> + Inmaterial + </string> + <string name="TooltipFlagTemporary"> + Temporal + </string> + <string name="TooltipFlagRightClickMenu"> + (pulse el botón derecho del ratón para ver el menú) + </string> + <string name="TooltipFreeToCopy"> + Copia gratis + </string> + <string name="TooltipForSaleL$"> + En venta: [AMOUNT] L$ + </string> + <string name="TooltipForSaleMsg"> + En venta: [MESSAGE] + </string> + <string name="TooltipFlagGroupBuild"> + Construir el grupo + </string> + <string name="TooltipFlagNoBuild"> + No construir + </string> + <string name="TooltipFlagNoEdit"> + Construir el grupo + </string> + <string name="TooltipFlagNotSafe"> + No seguro + </string> + <string name="TooltipFlagNoFly"> + No volar + </string> + <string name="TooltipFlagGroupScripts"> + Scripts el grupo + </string> + <string name="TooltipFlagNoScripts"> + No scripts + </string> + <string name="TooltipLand"> + Terreno: + </string> + <string name="TooltipMustSingleDrop"> + Aquà se puede arrastrar sólo un Ãtem + </string> + <string name="RetrievingData"> + Reintentando... + </string> + <string name="ReleaseNotes"> + Notas de la versión + </string> + <string name="LoadingData"> + Cargando... + </string> + <string name="AvatarNameNobody"> + (nadie) + </string> + <string name="AvatarNameWaiting"> + (esperando) + </string> + <string name="AvatarNameHippos"> + (hipopótamos) + </string> + <string name="GroupNameNone"> + (ninguno) + </string> + <string name="AssetErrorNone"> + No hay ningún error + </string> + <string name="AssetErrorRequestFailed"> + Petición de asset: fallida + </string> + <string name="AssetErrorNonexistentFile"> + Petición de asset: el archivo no existe + </string> + <string name="AssetErrorNotInDatabase"> + Petición de asset: no se encontró el asset en la base de datos + </string> + <string name="AssetErrorEOF"> + Fin del archivo + </string> + <string name="AssetErrorCannotOpenFile"> + No puede abrirse el archivo + </string> + <string name="AssetErrorFileNotFound"> + No se ha encontrado el archivo + </string> + <string name="AssetErrorTCPTimeout"> + Tiempo de transferencia del archivo + </string> + <string name="AssetErrorCircuitGone"> + Circuito desconectado + </string> + <string name="AssetErrorPriceMismatch"> + No concuerda el precio en el visor y en el servidor + </string> + <string name="AssetErrorUnknownStatus"> + Estado desconocido + </string> + <string name="AvatarEditingApparance"> + (Modificando la apariencia) + </string> + <string name="AvatarAway"> + Ausente + </string> + <string name="AvatarBusy"> + Ocupado + </string> + <string name="AvatarMuted"> + Ignorado + </string> + <string name="anim_express_afraid"> + Susto + </string> + <string name="anim_express_anger"> + Enfado + </string> + <string name="anim_away"> + Ausente + </string> + <string name="anim_backflip"> + Salto mortal atrás + </string> + <string name="anim_express_laugh"> + Carcajada + </string> + <string name="anim_express_toothsmile"> + Gran sonrisa + </string> + <string name="anim_blowkiss"> + Mandar un beso + </string> + <string name="anim_express_bored"> + Aburrimiento + </string> + <string name="anim_bow"> + Reverencia + </string> + <string name="anim_clap"> + Aplauso + </string> + <string name="anim_courtbow"> + Reverencia floreada + </string> + <string name="anim_express_cry"> + Llanto + </string> + <string name="anim_dance1"> + Baile 1 + </string> + <string name="anim_dance2"> + Baile 2 + </string> + <string name="anim_dance3"> + Baile 3 + </string> + <string name="anim_dance4"> + Baile 4 + </string> + <string name="anim_dance5"> + Baile 5 + </string> + <string name="anim_dance6"> + Baile 6 + </string> + <string name="anim_dance7"> + Baile 7 + </string> + <string name="anim_dance8"> + Baile 8 + </string> + <string name="anim_express_disdain"> + Desdén + </string> + <string name="anim_drink"> + Beber + </string> + <string name="anim_express_embarrased"> + Azorarse + </string> + <string name="anim_angry_fingerwag"> + Negar con el dedo + </string> + <string name="anim_fist_pump"> + Éxito con el puño + </string> + <string name="anim_yoga_float"> + Yoga flotando + </string> + <string name="anim_express_frown"> + Fruncir el ceño + </string> + <string name="anim_impatient"> + Impaciente + </string> + <string name="anim_jumpforjoy"> + Salto de alegrÃa + </string> + <string name="anim_kissmybutt"> + Bésame el culo + </string> + <string name="anim_express_kiss"> + Besar + </string> + <string name="anim_laugh_short"> + ReÃr + </string> + <string name="anim_musclebeach"> + Sacar músculo + </string> + <string name="anim_no_unhappy"> + No (con enfado) + </string> + <string name="anim_no_head"> + No + </string> + <string name="anim_nyanya"> + Ña-Ña-Ña + </string> + <string name="anim_punch_onetwo"> + Puñetazo uno-dos + </string> + <string name="anim_express_open_mouth"> + Abrir la boca + </string> + <string name="anim_peace"> + 'V' con los dedos + </string> + <string name="anim_point_you"> + Señalar a otro/a + </string> + <string name="anim_point_me"> + Señalarse + </string> + <string name="anim_punch_l"> + Puñetazo izquierdo + </string> + <string name="anim_punch_r"> + Puñetazo derecho + </string> + <string name="anim_rps_countdown"> + PPT cuenta + </string> + <string name="anim_rps_paper"> + PPT papel + </string> + <string name="anim_rps_rock"> + PPT piedra + </string> + <string name="anim_rps_scissors"> + PPT tijera + </string> + <string name="anim_express_repulsed"> + Repulsa + </string> + <string name="anim_kick_roundhouse_r"> + Patada circular + </string> + <string name="anim_express_sad"> + Triste + </string> + <string name="anim_salute"> + Saludo militar + </string> + <string name="anim_shout"> + Gritar + </string> + <string name="anim_express_shrug"> + Encogerse de hombros + </string> + <string name="anim_express_smile"> + SonreÃr + </string> + <string name="anim_smoke_idle"> + Fumar: en la mano + </string> + <string name="anim_smoke_inhale"> + Fumar + </string> + <string name="anim_smoke_throw_down"> + Fumar: tirar el cigarro + </string> + <string name="anim_express_surprise"> + Sorpresa + </string> + <string name="anim_sword_strike_r"> + Estocadas + </string> + <string name="anim_angry_tantrum"> + Berrinche + </string> + <string name="anim_express_tongue_out"> + Sacar la lengua + </string> + <string name="anim_hello"> + Agitar la mano + </string> + <string name="anim_whisper"> + Cuchichear + </string> + <string name="anim_whistle"> + Pitar + </string> + <string name="anim_express_wink"> + Guiño + </string> + <string name="anim_wink_hollywood"> + Guiño (Hollywood) + </string> + <string name="anim_express_worry"> + Preocuparse + </string> + <string name="anim_yes_happy"> + Sà (contento) + </string> + <string name="anim_yes_head"> + Sà + </string> + <string name="texture_loading"> + Cargando... + </string> + <string name="worldmap_offline"> + Desconectado/a + </string> + <string name="whisper"> + susurra: + </string> + <string name="shout"> + grita: + </string> + <string name="SIM_ACCESS_PG"> + 'PG' + </string> + <string name="SIM_ACCESS_MATURE"> + 'Mature' + </string> + <string name="SIM_ACCESS_ADULT"> + 'Adult' + </string> + <string name="SIM_ACCESS_DOWN"> + Desconectado + </string> + <string name="SIM_ACCESS_MIN"> + Desconocido + </string> + <string name="land_type_unknown"> + (desconocido) + </string> + <string name="covenant_never_modified">Última modificación: (nunca)</string> + <string name="covenant_modified">Última modificación: </string> + <string name="all_files"> + Todos los archivos + </string> + <string name="sound_files"> + Sonidos + </string> + <string name="animation_files"> + Animaciones + </string> + <string name="image_files"> + Imágenes + </string> + <string name="save_file_verb"> + Guardar + </string> + <string name="load_file_verb"> + Cargar + </string> + <string name="targa_image_files"> + Imágenes Targa + </string> + <string name="bitmap_image_files"> + Imágenes de mapa de bits + </string> + <string name="avi_movie_file"> + Archivo de pelÃcula AVI + </string> + <string name="xaf_animation_file"> + Archivo de anim. XAF + </string> + <string name="xml_file"> + Archivo XML + </string> + <string name="dot_raw_file"> + Archivo RAW + </string> + <string name="compressed_image_files"> + Imágenes comprimidas + </string> + <string name="load_files"> + Cargar archivos + </string> + <string name="choose_the_directory"> + Elegir directorio + </string> +</strings> diff --git a/indra/newview/skins/default/xui/es/teleport_strings.xml b/indra/newview/skins/default/xui/es/teleport_strings.xml index 27c87f2ebd375d4340dcb4f78b3057ca8100804c..6cf5437e3c07fd2efad5bc30a7a0fcdd61a3f473 100644 --- a/indra/newview/skins/default/xui/es/teleport_strings.xml +++ b/indra/newview/skins/default/xui/es/teleport_strings.xml @@ -1,74 +1,76 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<teleport_messages> - <message_set name="errors"> - <message name="invalid_tport"> - Ha habido un problema al procesar su petición de teleporte. Debe volver a iniciar sesión para poder teleportarse. Si le sigue apareciendo este mensaje, revise, por favor, las preguntas frecuentes en el Soporte técnico: www.secondlife.com/support - </message> - <message name="invalid_region_handoff"> - Ha habido un problema al procesar su paso a otra región. Debe volver a iniciar sesión para poder pasar de región a región. Si le sigue apareciendo este mensaje, revise, por favor, las preguntas frecuentes en el Soporte técnico: www.secondlife.com/support - </message> - <message name="blocked_tport"> - Lo sentimos, en estos momentos los teleportes están bloqueados. Vuelva a intentarlo en un momento. Si sigue sin poder teleportarse, desconéctese y vuelva a iniciar sesión para solucionar el problema. - </message> - <message name="nolandmark_tport"> - Lo sentimos, pero el sistema no ha podido localizar el destino de este hito. - </message> - <message name="timeout_tport"> - Lo sentimos, pero el sistema no ha podido completar el teleporte. -Vuelva a intentarlo en un momento. - </message> - <message name="noaccess_tport"> - Lo sentimos, pero usted no tiene acceso al destino de este teleporte. - </message> - <message name="missing_attach_tport"> - Aún no han llegado sus objetos anexados. Espere unos segundos más o desconéctese y vuelva a iniciar sesión antes de teleportarse. - </message> - <message name="too_many_uploads_tport"> - La cola de espera en esta región está actualmente obstruida, por lo que su petición de teleporte no se atenderá en un tiempo prudencial. Por favor, vuelva a intentarlo en unos minutos o vaya a una zona menos ocupada. - </message> - <message name="expired_tport"> - Lo sentimos, pero el sistema no ha podido atender a su petición de teleporte en un tiempo prudencial. Por favor, vuelva a intentarlo en unos pocos minutos. - </message> - <message name="expired_region_handoff"> - Lo sentimos, pero el sistema no ha podido completar su paso a otra región en un tiempo prudencial. Por favor, vuelva a intentarlo en unos pocos minutos. - </message> - <message name="no_host"> - Ha sido imposible encontrar el destino del teleporte: o está desactivado temporalmente o ya no existe. Por favor, vuelva a intentarlo en unos pocos minutos. - </message> - <message name="no_inventory_host"> - En estos momentos no está disponible el sistema del inventario. - </message> - </message_set> - <message_set name="progress"> - <message name="sending_dest"> - Llevando al destino. - </message> - <message name="redirecting"> - Redireccionando a una posición diferente. - </message> - <message name="relaying"> - Reorientando el destino. - </message> - <message name="sending_home"> - Enviando la petición de posición de la Base. - </message> - <message name="sending_landmark"> - Enviando la petición de posición del hito. - </message> - <message name="completing"> - Completando el teleporte. - </message> - <message name="resolving"> - Especificando el destino. - </message> - <message name="contacting"> - Contactando con la nueva región. - </message> - <message name="arriving"> - Llegando... - </message> - <message name="requesting"> - Solicitando teleporte... - </message> - </message_set> -</teleport_messages> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<teleport_messages> + <message_set name="errors"> + <message name="invalid_tport"> + Ha habido un problema al procesar su petición de teleporte. Debe volver a iniciar sesión para poder teleportarse. Si le sigue apareciendo este mensaje, revise, por favor, las preguntas frecuentes en el Soporte técnico: +www.secondlife.com/support + </message> + <message name="invalid_region_handoff"> + Ha habido un problema al procesar su paso a otra región. Debe volver a iniciar sesión para poder pasar de región a región. Si le sigue apareciendo este mensaje, revise, por favor, las preguntas frecuentes en el Soporte técnico: +www.secondlife.com/support + </message> + <message name="blocked_tport"> + Lo sentimos, en estos momentos los teleportes están bloqueados. Vuelva a intentarlo en un momento. Si sigue sin poder teleportarse, desconéctese y vuelva a iniciar sesión para solucionar el problema. + </message> + <message name="nolandmark_tport"> + Lo sentimos, pero el sistema no ha podido localizar el destino de este hito. + </message> + <message name="timeout_tport"> + Lo sentimos, pero el sistema no ha podido completar el teleporte. +Vuelva a intentarlo en un momento. + </message> + <message name="noaccess_tport"> + Lo sentimos, pero usted no tiene acceso al destino de este teleporte. + </message> + <message name="missing_attach_tport"> + Aún no han llegado sus objetos anexados. Espere unos segundos más o desconéctese y vuelva a iniciar sesión antes de teleportarse. + </message> + <message name="too_many_uploads_tport"> + La cola de espera en esta región está actualmente obstruida, por lo que su petición de teleporte no se atenderá en un tiempo prudencial. Por favor, vuelva a intentarlo en unos minutos o vaya a una zona menos ocupada. + </message> + <message name="expired_tport"> + Lo sentimos, pero el sistema no ha podido atender a su petición de teleporte en un tiempo prudencial. Por favor, vuelva a intentarlo en unos pocos minutos. + </message> + <message name="expired_region_handoff"> + Lo sentimos, pero el sistema no ha podido completar su paso a otra región en un tiempo prudencial. Por favor, vuelva a intentarlo en unos pocos minutos. + </message> + <message name="no_host"> + Ha sido imposible encontrar el destino del teleporte: o está desactivado temporalmente o ya no existe. Por favor, vuelva a intentarlo en unos pocos minutos. + </message> + <message name="no_inventory_host"> + En estos momentos no está disponible el sistema del inventario. + </message> + </message_set> + <message_set name="progress"> + <message name="sending_dest"> + Llevando al destino. + </message> + <message name="redirecting"> + Redireccionando a una posición diferente. + </message> + <message name="relaying"> + Reorientando el destino. + </message> + <message name="sending_home"> + Enviando la petición de posición de la Base. + </message> + <message name="sending_landmark"> + Enviando la petición de posición del hito. + </message> + <message name="completing"> + Completando el teleporte. + </message> + <message name="resolving"> + Especificando el destino. + </message> + <message name="contacting"> + Contactando con la nueva región. + </message> + <message name="arriving"> + Llegando... + </message> + <message name="requesting"> + Solicitando teleporte... + </message> + </message_set> +</teleport_messages> diff --git a/indra/newview/skins/default/xui/fr/floater_about.xml b/indra/newview/skins/default/xui/fr/floater_about.xml index 1565e7cd68246a1f55b8b3c17b8675d336c30e23..d627571ae9d687d7bac7661f7fe7f2a9ccefb793 100644 --- a/indra/newview/skins/default/xui/fr/floater_about.xml +++ b/indra/newview/skins/default/xui/fr/floater_about.xml @@ -20,13 +20,14 @@ SSLeay Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) xmlrpc-epi Copyright (C) 2000 Epinions, Inc. zlib Copyright (C) 1995-2002 Jean-loup Gailly et Mark Adler. - + google-perftools Copyright (c) 2005, Google Inc. + Tous droits réservés. Voir licenses.txt pour plus de détails. Codage Audio du chat vocal : Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C) - Je m'en sors avec un peu d'aide de mes amis. --Richard Starkey + Pour réussir dans les affaires, soyez audacieux, créatif et différent. - Henry Marchant </text_editor> <string name="you_are_at"> Votre position : [POSITION] 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 d48a4ae22a07641d69ef337183a3257bee4ae363..a556fa4173ae531f937f65660d741e170225ee44 100644 --- a/indra/newview/skins/default/xui/fr/floater_about_land.xml +++ b/indra/newview/skins/default/xui/fr/floater_about_land.xml @@ -10,6 +10,18 @@ Description : </text> <text_editor name="Description"/> + <text name="LandType"> + Type : + </text> + <text name="LandTypeText"> + Continent / Homestead + </text> + <text name="ContentRating"> + Catégorie : + </text> + <text name="ContentRatingText"> + Adult + </text> <text length="1" name="Owner:" type="string"> Propriétaire : </text> @@ -45,7 +57,7 @@ <text length="1" name="Selling with no objects in parcel." type="string"> Objets non inclus dans la vente. </text> - <button label="Annuler la vente du terrain" label_selected="Annuler la vente du terrain" name="Cancel Land Sale" width="165" left="275"/> + <button label="Annuler la vente du terrain" label_selected="Annuler la vente du terrain" left="275" name="Cancel Land Sale" width="165"/> <text length="1" name="Claimed:" type="string"> Acquis : </text> @@ -53,7 +65,7 @@ Tue Aug 15 13:47:25 2006 </text> <text length="1" name="PriceLabel" type="string"> - Surface : + Superficie : </text> <text length="1" name="PriceText" type="string"> 4048 m² @@ -64,9 +76,9 @@ <text length="1" name="DwellText" type="string"> 0 </text> - <button label="Acheter le terrain..." label_selected="Acheter le terrain..." name="Buy Land..." width="125" left="130"/> + <button label="Acheter le terrain..." label_selected="Acheter le terrain..." left="130" name="Buy Land..." width="125"/> <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..." name="Buy Pass..." tool_tip="Un pass vous donne un accès temporaire à ce terrain." width="125" left="130"/> + <button label="Acheter un pass..." label_selected="Acheter un pass..." left="130" 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="Redemander 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."/> @@ -112,17 +124,11 @@ Allez dans le menu Monde > À propos du terrain ou sélectionnez une autre pa </string> </panel> <panel label="Règlement" name="land_covenant_panel"> - <text length="1" name="covenant_timestamp_text" type="string"> - Last Modified Wed Dec 31 16:00:00 1969 - </text> - <text length="1" name="region_name_lbl" type="string"> - Région : - </text> - <text length="1" name="region_name_text" type="string"> - leyla + <text name="estate_section_lbl"> + Domaine : </text> <text length="1" name="estate_name_lbl" type="string"> - Domaine : + Nom : </text> <text length="1" name="estate_name_text" type="string"> continent @@ -133,15 +139,45 @@ Allez dans le menu Monde > À propos du terrain ou sélectionnez une autre pa <text length="1" name="estate_owner_text" type="string"> (aucun) </text> + <text_editor length="1" name="covenant_editor" type="string"> + Il n'y a aucun règlement pour ce domaine. + </text_editor> + <text length="1" name="covenant_timestamp_text" type="string"> + Last Modified Wed Dec 31 16:00:00 1969 + </text> + <text name="region_section_lbl"> + Région : + </text> + <text length="1" name="region_name_lbl" type="string"> + Nom : + </text> + <text length="1" name="region_name_text" type="string"> + leyla + </text> + <text name="region_landtype_lbl"> + Type : + </text> + <text name="region_landtype_text"> + Continent / Homestead + </text> + <text name="region_maturity_lbl"> + Catégorie : + </text> + <text name="region_maturity_text"> + Adult + </text> + <text name="resellable_lbl"> + Revendre : + </text> <text length="1" name="resellable_clause" type="string"> - Le terrain acheté dans cette région ne peut être revendu. + Le terrain dans cette région ne peut être revendu. + </text> + <text name="changeable_lbl"> + Sous-diviser : </text> <text length="1" name="changeable_clause" type="string"> - Le terrain acheté dans cette région ne peut être revendu/divisé. + Le terrain dans cette région ne peut être fusionné/divisé. </text> - <text_editor length="1" name="covenant_editor" type="string"> - Il n'y a aucun règlement pour ce domaine. - </text_editor> <string name="can_resell"> Le terrain acheté dans cette région peut être revendu. </string> @@ -149,10 +185,12 @@ Allez dans le menu Monde > À propos du terrain ou sélectionnez une autre pa Le terrain acheté dans cette région ne peut pas être revendu. </string> <string name="can_change"> - Le terrain acheté dans cette région peut être fusionné ou divisé. + Le terrain acheté dans cette région peut être fusionné +ou divisé. </string> <string name="can_not_change"> - Le terrain acheté dans cette région ne peut pas être fusionné ou divisé. + Le terrain acheté dans cette région ne peut pas être fusionné +ou divisé. </string> </panel> <panel label="Objets" name="land_objects_panel"> @@ -162,7 +200,7 @@ Allez dans le menu Monde > À propos du terrain ou sélectionnez une autre pa <text length="1" name="Simulator primitive usage:" type="string"> Prims utilisées sur la parcelle : </text> - <text name="objects_available" left="214" width="230"> + <text left="214" name="objects_available" width="230"> [COUNT] sur [MAX] ([AVAILABLE] disponibles) </text> <string name="objects_available_text"> @@ -174,49 +212,49 @@ Allez dans le menu Monde > À propos du terrain ou sélectionnez une autre pa <text length="1" name="Primitives parcel supports:" type="string" width="200"> Prims max. sur la parcelle : </text> - <text length="1" name="object_contrib_text" type="string" left="214" width="152"> + <text left="214" length="1" name="object_contrib_text" type="string" width="152"> [COUNT] </text> <text length="1" name="Primitives on parcel:" type="string"> Prims sur la parcelle : </text> - <text length="1" name="total_objects_text" type="string" left="214" width="48"> + <text left="214" length="1" name="total_objects_text" type="string" width="48"> [COUNT] </text> - <text length="1" name="Owned by parcel owner:" type="string" left="14" width="180"> + <text left="14" length="1" name="Owned by parcel owner:" type="string" width="180"> Appartenant au propriétaire : </text> - <text length="1" name="owner_objects_text" type="string" left="214" width="48"> + <text left="214" length="1" name="owner_objects_text" type="string" width="48"> [COUNT] </text> <button label="Afficher" label_selected="Afficher" name="ShowOwner" right="-135" width="60"/> - <button label="Renvoyer..." label_selected="Renvoyer..." name="ReturnOwner..." tool_tip="Renvoyer les objets à leurs propriétaires." right="-10" width="119"/> - <text length="1" name="Set to group:" type="string" left="14" width="180"> - Donnés au groupe : + <button label="Renvoyer..." label_selected="Renvoyer..." name="ReturnOwner..." right="-10" tool_tip="Renvoyer les objets à leurs propriétaires." width="119"/> + <text left="14" length="1" name="Set to group:" type="string" width="180"> + Données au groupe : </text> - <text length="1" name="group_objects_text" type="string" left="214" width="48"> + <text left="214" length="1" name="group_objects_text" type="string" width="48"> [COUNT] </text> - <button label="Afficher" label_selected="Afficher" name="ShowGroup" width="60" right="-135"/> - <button label="Renvoyer..." label_selected="Renvoyer..." name="ReturnGroup..." tool_tip="Renvoyer les objets à leurs propriétaires." right="-10" width="119"/> - <text length="1" name="Owned by others:" type="string" left="14" width="128"> + <button label="Afficher" label_selected="Afficher" name="ShowGroup" right="-135" width="60"/> + <button label="Renvoyer..." label_selected="Renvoyer..." name="ReturnGroup..." right="-10" tool_tip="Renvoyer les objets à leurs propriétaires." width="119"/> + <text left="14" length="1" name="Owned by others:" type="string" width="128"> Appartenant à d'autres : </text> - <text length="1" name="other_objects_text" type="string" left="214" width="48"> + <text left="214" length="1" name="other_objects_text" type="string" width="48"> [COUNT] </text> <button label="Afficher" label_selected="Afficher" name="ShowOther" right="-135" width="60"/> - <button label="Renvoyer..." label_selected="Renvoyer..." name="ReturnOther..." tool_tip="Renvoyer les objets à leurs propriétaires." right="-10" width="119"/> - <text length="1" name="Selected / sat upon:" type="string" left="14" width="193"> - Sélectionnés/où quelqu'un est assis : + <button label="Renvoyer..." label_selected="Renvoyer..." name="ReturnOther..." right="-10" tool_tip="Renvoyer les objets à leurs propriétaires." width="119"/> + <text left="14" length="1" name="Selected / sat upon:" type="string" width="193"> + Sélectionnées/où quelqu'un est assis : </text> - <text length="1" name="selected_objects_text" type="string" left="214" width="48"> + <text left="214" length="1" name="selected_objects_text" type="string" width="48"> [COUNT] </text> - <text name="Autoreturn" width="412" left="4"> - Renvoi automatique des objets d'autres résidents (minutes, 0 pour désactiver) : + <text left="4" name="Autoreturn" width="412"> + Renvoi automatique des objets des autres résidents (min., 0 pour désactiver) : </text> - <line_editor name="clean other time" right="-6" width="36" /> + <line_editor name="clean other time" right="-6" width="36"/> <text length="1" name="Object Owners:" type="string"> Propriétaires : </text> @@ -237,65 +275,155 @@ Allez dans le menu Monde > À propos du terrain ou sélectionnez une autre pa <check_box label="Modifier le terrain" name="edit land check" tool_tip="Si cette option est cochée, n'importe qui peut terraformer votre terrain. Il vaut mieux ne pas cocher cette option pour toujours pouvoir modifer votre propre terrain."/> <check_box label="Créer des repères" name="check landmark"/> <check_box label="Voler" name="check fly" tool_tip="Si cette option est cochée, les résidents peuvent voler sur votre terrain. Si elle n'est pas cochée, ils ne pourront voler que lorsqu'ils arrivent et passent au dessus de votre terrain."/> - <text name="allow_label2" left="152"> + <text left="152" name="allow_label2"> Créer des objets : </text> - <check_box label="Tous les résidents" name="edit objects check" left="285"/> - <check_box label="Groupe" name="edit group objects check" left="395"/> - <text name="allow_label3" left="152" width="134"> + <check_box label="Tous les résidents" left="285" name="edit objects check"/> + <check_box label="Groupe" left="395" name="edit group objects check"/> + <text left="152" name="allow_label3" width="134"> Laisser entrer des objets : </text> - <check_box label="Tous les résidents" name="all object entry check" left="285"/> - <check_box label="Groupe" name="group object entry check" left="395"/> - <text name="allow_label4" left="152"> + <check_box label="Tous les résidents" left="285" name="all object entry check"/> + <check_box label="Groupe" left="395" name="group object entry check"/> + <text left="152" name="allow_label4"> Exécuter des scripts : </text> - <check_box label="Tous les résidents" name="check other scripts" left="285"/> - <check_box label="Groupe" name="check group scripts" left="395"/> + <check_box label="Tous les résidents" left="285" name="check other scripts"/> + <check_box label="Groupe" left="395" name="check group scripts"/> <text length="1" name="land_options_label" type="string"> Options du terrain : </text> <check_box label="Sécurisé (pas de dégâts)" name="check safe" tool_tip="Si cette option est cochée, le terrain est sécurisé et il n'y pas de risques de dommages causés par des combats. Si elle est décochée, des dommages causés par les combats peuvent avoir lieu."/> - <check_box label="Pas de bousculades" left="14" bottom="-140" - name="PushRestrictCheck" tool_tip="Empêche l'utilisation de scripts causant des bousculades. Cette option est utile pour empêcher les comportements abusifs sur votre terrain."/> - <check_box label="Afficher dans la recherche (30 L$/semaine) sous" name="ShowDirectoryCheck" tool_tip="Afficher la parcelle dans les résultats de recherche" bottom="-160"/> - <combo_box name="land category" left="286" width="146" bottom="-160"> - <combo_box.item name="AnyCategory" label="Toutes catégories"/> - <combo_box.item name="LindenLocation" label="Appartenant aux Lindens"/> - - - <combo_box.item name="Arts&Culture" label="Art et Culture"/> - <combo_box.item name="Business" label="Affaires"/> - <combo_box.item name="Educational" label="Éducation"/> - <combo_box.item name="Gaming" label="Jeux"/> - <combo_box.item name="Hangout" label="Favoris"/> - <combo_box.item name="NewcomerFriendly" label="Accueil pour les nouveaux"/> - <combo_box.item name="Parks&Nature" label="Parcs et Nature"/> - <combo_box.item name="Residential" label="Résidentiel"/> - <combo_box.item name="Shopping" label="Shopping"/> - <combo_box.item name="Other" label="Autre"/> + <check_box bottom="-140" label="Pas de bousculades" left="14" name="PushRestrictCheck" tool_tip="Empêche l'utilisation de scripts causant des bousculades. Cette option est utile pour empêcher les comportements abusifs sur votre terrain."/> + <check_box bottom="-160" label="Afficher dans la recherche (30 L$/semaine) sous" name="ShowDirectoryCheck" tool_tip="Afficher la parcelle dans les résultats de recherche"/> + <string name="search_enabled_tooltip"> + Permettre aux autres résidents de voir cette parcelle dans les résultats de recherche + </string> + <string name="search_disabled_small_tooltip"> + Cette option est désactivée car la superficie de cette parcelle est inférieure ou égale à 128 m². +Seules les parcelles de grande taille peuvent apparaître dans la recherche. + </string> + <string name="search_disabled_permissions_tooltip"> + Cette option est désactivée car vous ne pouvez pas modifier les options de cette parcelle. + </string> + <combo_box bottom="-160" left="286" name="land category with adult" width="146"> + <combo_item name="AnyCategory"> + Toutes catégories + </combo_item> + <combo_item name="LindenLocation"> + Appartenant aux Lindens + </combo_item> + <combo_item name="Adult"> + Adult + </combo_item> + <combo_item name="Arts&Culture"> + Art et Culture + </combo_item> + <combo_item name="Business"> + Affaires + </combo_item> + <combo_item name="Educational"> + Éducation + </combo_item> + <combo_item name="Gaming"> + Jeux + </combo_item> + <combo_item name="Hangout"> + Favoris + </combo_item> + <combo_item name="NewcomerFriendly"> + Accueil pour les nouveaux + </combo_item> + <combo_item name="Parks&Nature"> + Parcs et Nature + </combo_item> + <combo_item name="Residential"> + Résidentiel + </combo_item> + <combo_item name="Shopping"> + Shopping + </combo_item> + <combo_item name="Other"> + Autre + </combo_item> </combo_box> - <button label="?" label_selected="?" name="?" left="436" bottom="-160"/> - <check_box name="MatureCheck" bottom="-180"/> - <text length="1" name="Snapshot:" type="string" bottom="-200"> + <combo_box bottom="-160" left="286" name="land category" width="146"> + <combo_item name="AnyCategory"> + Toutes catégories + </combo_item> + <combo_item name="LindenLocation"> + Appartenant aux Lindens + </combo_item> + <combo_item name="Arts&Culture"> + Art et Culture + </combo_item> + <combo_item name="Business"> + Affaires + </combo_item> + <combo_item name="Educational"> + Éducation + </combo_item> + <combo_item name="Gaming"> + Jeux + </combo_item> + <combo_item name="Hangout"> + Favoris + </combo_item> + <combo_item name="NewcomerFriendly"> + Accueil pour les nouveaux + </combo_item> + <combo_item name="Parks&Nature"> + Parcs et Nature + </combo_item> + <combo_item name="Residential"> + Résidentiel + </combo_item> + <combo_item name="Shopping"> + Shopping + </combo_item> + <combo_item name="Other"> + Autre + </combo_item> + </combo_box> + <button bottom="-160" label="?" label_selected="?" left="436" name="?"/> + <check_box bottom="-180" label="Contenu Mature" name="MatureCheck" tool_tip=""/> + <string name="mature_check_mature"> + Contenu Mature + </string> + <string name="mature_check_adult"> + Contenu Adult + </string> + <string name="mature_check_mature_tooltip"> + Les informations ou contenu de votre parcelle sont classés Mature. + </string> + <string name="mature_check_adult_tooltip"> + Les informations ou contenu de votre parcelle sont classés Adult. + </string> + <text bottom="-200" length="1" name="Snapshot:" type="string"> Photo : </text> - <texture_picker label="" name="snapshot_ctrl" tool_tip="Cliquez pour sélectionner une image" bottom="-319"/> - <text name="landing_point" bottom="-323"> + <texture_picker bottom="-319" label="" name="snapshot_ctrl" tool_tip="Cliquez pour sélectionner une image"/> + <text bottom="-323" name="landing_point"> Lieu d'arrivée : [LANDING] </text> <string name="landing_point_none"> (aucun) </string> - <button label="Définir" label_selected="Définir" name="Set" tool_tip="Définit le point d'arrivée des visiteurs. Définit l'emplacement de votre avatar sur ce terrain." bottom="-323"/> - <button label="Annuler" label_selected="Annuler" name="Clear" tool_tip="Libérer le lieu d'arrivée." bottom="-323"/> - <text length="1" name="Teleport Routing: " type="string" bottom="-343"> + <button bottom="-323" label="Définir" label_selected="Définir" name="Set" tool_tip="Définit le point d'arrivée des visiteurs. Définit l'emplacement de votre avatar sur ce terrain."/> + <button bottom="-323" label="Annuler" label_selected="Annuler" name="Clear" tool_tip="Libérer le lieu d'arrivée."/> + <text bottom="-343" length="1" name="Teleport Routing: " type="string"> Règles de téléportation : </text> - <combo_box name="landing type" tool_tip="Vous permet de paramétrer les téléportations sur votre terrain." left="140" width="140" bottom="-343"> - <combo_box.item length="1" name="Blocked" type="string" label="Bloqué"/> - <combo_box.item length="1" name="LandingPoint" type="string" label="Lieu d'arrivée fixe"/> - <combo_box.item length="1" name="Anywhere" type="string" label="Lieu d'arrivée libre"/> + <combo_box bottom="-343" left="140" name="landing type" tool_tip="Vous permet de paramétrer les téléportations sur votre terrain." width="140"> + <combo_item length="1" name="Blocked" type="string"> + Bloqué + </combo_item> + <combo_item length="1" name="LandingPoint" type="string"> + Lieu d'arrivée fixe + </combo_item> + <combo_item length="1" name="Anywhere" type="string"> + Lieu d'arrivée libre + </combo_item> </combo_box> <string name="push_restrict_text"> Pas de bousculades @@ -308,22 +436,22 @@ Allez dans le menu Monde > À propos du terrain ou sélectionnez une autre pa <text name="with media:" width="85"> Type de média : </text> - <combo_box name="media type" tool_tip="Indiquez s'il s'agit de l'URL d'un film, d'une page web ou autre" left="97"/> + <combo_box left="97" name="media type" tool_tip="Indiquez s'il s'agit de l'URL d'un film, d'une page web ou autre"/> <text name="mime_type"/> <text name="at URL:" width="85"> URL du média : </text> - <line_editor name="media_url" left="97"/> + <line_editor left="97" name="media_url"/> <button label="Définir..." label_selected="Définir..." name="set_media_url"/> <text name="Description:"> Description : </text> - <line_editor name="url_description" tool_tip="Texte affiché à côté du bouton Jouer/Charger" left="97"/> + <line_editor left="97" name="url_description" tool_tip="Texte affiché à côté du bouton Jouer/Charger"/> <text length="1" name="Media texture:" type="string"> Remplacer la texture : </text> - <texture_picker label="" name="media texture" tool_tip="Cliquez pour sélectionner une image" left="97"/> + <texture_picker label="" left="97" name="media texture" tool_tip="Cliquez pour sélectionner une image"/> <text name="replace_texture_help"> (Les objets avec cette texture affichent le film ou la page web quand vous cliquez sur la flèche Jouer.) @@ -332,41 +460,34 @@ la page web quand vous cliquez sur la flèche Jouer.) Options média : </text> - <check_box left="97" label="Échelle automatique" name="media_auto_scale" tool_tip="Si vous sélectionnez cette option, le contenu de cette parcelle sera automatiquement mis à l'échelle. La qualité visuelle sera peut-être amoindrie mais vous n'aurez à faire aucune autre mise à l'échelle ou alignement."/> + <check_box label="Échelle automatique" left="97" name="media_auto_scale" tool_tip="Si vous sélectionnez cette option, le contenu de cette parcelle sera automatiquement mis à l'échelle. La qualité visuelle sera peut-être amoindrie mais vous n'aurez à faire aucune autre mise à l'échelle ou alignement."/> <check_box label="Média en boucle" name="media_loop" tool_tip="Jouer le média en boucle. Lorsque le média aura fini de jouer, il recommencera."/> - <check_box left="97" label="Masquer l'URL du média" name="hide_media_url" tool_tip="Si vous cochez cette option, les personnes non autorisées à accéder aux infos de cette parcelle ne verront pas l'URL du média. Cette option n'est pas disponible pour les fichiers HTML."/> + <check_box label="Masquer l'URL du média" left="97" name="hide_media_url" tool_tip="Si vous cochez cette option, les personnes non autorisées à accéder aux infos de cette parcelle ne verront pas l'URL du média. Cette option n'est pas disponible pour les fichiers HTML."/> <check_box label="Masquer l'URL de la musique" name="hide_music_url" tool_tip="Si vous cochez cette option, les personnes non autorisées à accéder aux infos de cette parcelle ne verront pas l'URL de la musique."/> - <text name="media_size" tool_tip="Taille du média Web, laisser 0 pour la valeur par défaut." width="105" left="102"> + <text left="102" name="media_size" tool_tip="Taille du média Web, laisser 0 pour la valeur par défaut." width="105"> Taille du média : </text> - <spinner name="media_size_width" tool_tip="Taille du média Web, laisser 0 pour la valeur par défaut." left_delta="89"/> + <spinner left_delta="89" name="media_size_width" tool_tip="Taille du média Web, laisser 0 pour la valeur par défaut."/> <spinner name="media_size_height" tool_tip="Taille du média Web, laisser 0 pour la valeur par défaut."/> <text name="pixels"> pixels </text> - <text name="MusicURL:" bottom_delta="-28"> + <text bottom_delta="-28" name="MusicURL:"> URL de la musique : </text> - <line_editor name="music_url" left="97" bottom_delta="-12"/> + <line_editor bottom_delta="-12" left="97" name="music_url"/> <text name="Sound:"> Son : </text> - <check_box label="Limiter le son ambiant à cette parcelle" name="check sound local" left="97" /> + <check_box label="Limiter les gestes et sons d'objet à cette parcelle" left="97" name="check sound local"/> + <button label="?" label_selected="?" left="378" name="?"/> <text name="Voice settings:"> Voix : </text> - <radio_group name="parcel_voice_channel" left="97" width="310"> - <radio_item name="Estate"> - Utiliser le canal du domaine - </radio_item> - <radio_item name="Private"> - Utiliser un canal privé - </radio_item> - <radio_item name="Disabled"> - Désactiver les canaux audios - </radio_item> - </radio_group> + <check_box label="Activer le chat vocal" left="97" name="parcel_enable_voice_channel"/> + <check_box label="Activer le chat vocal (contrôlé par le domaine)" left="97" name="parcel_enable_voice_channel_is_estate_disabled"/> + <check_box label="Limiter le chat vocal à cette parcelle" left="117" name="parcel_enable_voice_channel_parcel"/> </panel> <panel label="Accès" name="land_access_panel"> <text length="1" name="Limit access to this parcel to:" type="string"> @@ -384,8 +505,12 @@ musique : <check_box label="Autoriser l'accès au groupe : [GROUP]" name="GroupCheck" tool_tip="Définir le groupe à l'onglet Général."/> <check_box label="Vendre des pass à  :" name="PassCheck" tool_tip="Autoriser un accès temporaire à cette parcelle"/> <combo_box name="pass_combo"> - <combo_box.item name="Anyone" label="Tout le monde"/> - <combo_box.item name="Group" label="Groupe"/> + <combo_item name="Anyone"> + Tout le monde + </combo_item> + <combo_item name="Group"> + Groupe + </combo_item> </combo_box> <spinner label="Prix en L$ :" name="PriceSpin"/> <spinner label="Durée en heures :" name="HoursSpin"/> diff --git a/indra/newview/skins/default/xui/fr/floater_avatar_picker.xml b/indra/newview/skins/default/xui/fr/floater_avatar_picker.xml index 82d715d94155b8b6e96f2e12df77cc10761ff115..01b4c944f3cfd229d9496ee3379094fef7bd0c9e 100644 --- a/indra/newview/skins/default/xui/fr/floater_avatar_picker.xml +++ b/indra/newview/skins/default/xui/fr/floater_avatar_picker.xml @@ -1,21 +1,42 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="avatarpicker" title="Choisir le résident"> - <text name="Type part of the person's name:"> - Entrez les premières lettres du nom de la personne : - </text> - <text name="instruct_search_resident_name"> - Saisissez une partie du nom du résident : - </text> - <button label="Chercher" label_selected="Chercher" name="Find"/> - <text name="Or select a calling card:"> - Ou sélectionnez une carte de visite : - </text> - <text name="Or select their calling card:"> - Ou sélectionnez une carte de visite : - </text> + <tab_container name="ResidentChooserTabs"> + <panel label="Rechercher" name="SearchPanel"> + <text name="InstructSearchResidentName"> + Saisissez une partie du nom du résident : + </text> + <button label="Trouver" label_selected="Trouver" name="Find"/> + </panel> + <panel label="Cartes de visite" name="CallingCardsPanel"> + <text name="InstructSelectCallingCard"> + Sélectionnez une carte de visite : + </text> + </panel> + <panel label="Près de moi" name="NearMePanel"> + <text name="InstructSelectResident"> + Choisir un résident +près de vous : + </text> + <button font="SansSerifSmall" label="Rafraîchir la liste" label_selected="Rafraîchir la liste" name="Refresh" left_delta="10" width="105"/> + <slider label="Distance" name="near_me_range" bottom_delta="-36"/> + <text name="meters"> + mètres + </text> + <scroll_list bottom_delta="-169" height="159" name="NearMe" /> + </panel> + </tab_container> <button label="Sélectionner" label_selected="Sélectionner" name="Select"/> - <button label="Fermer" label_selected="Fermer" name="Close"/> - <text name="NotFound"> + <button label="Annuler" label_selected="Annuler" name="Cancel"/> + <string name="not_found"> '[TEXT]' introuvable - </text> + </string> + <string name="no_one_near"> + Il n'y a personne près de vous + </string> + <string name="no_results"> + Aucun résultat + </string> + <string name="searching"> + Recherche... + </string> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_avatar_textures.xml b/indra/newview/skins/default/xui/fr/floater_avatar_textures.xml index 929bc31d9cbc46b1bc18c7eb18e93e9357a67437..f4e3a1615c22d2e42b818c6baac2ccd7cc6d9100 100644 --- a/indra/newview/skins/default/xui/fr/floater_avatar_textures.xml +++ b/indra/newview/skins/default/xui/fr/floater_avatar_textures.xml @@ -1,38 +1,31 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="avatar_texture_debug" title="Textures de l'avatar"> - <text name=""> - Baked Textures - </text> - <text name=""> - Composite Textures - </text> - <text name="baked_label"> + <text name="label"> Textures fixées </text> <text name="composite_label"> Textures composées </text> - <texture_picker label="Tête" name="baked_head" /> - <texture_picker label="Maquillage" name="head_bodypaint" /> - <texture_picker label="Cheveux" name="hair" /> - <button label="Vider" label_selected="Vider" name="Dump" /> - <texture_picker label="Yeux" name="baked_eyes" /> - <texture_picker label="Å’il" name="eye_texture" /> - <texture_picker label="Haut du corps" name="baked_upper_body" /> - <texture_picker label="Tatouage haut du corps" name="upper_bodypaint" /> - <texture_picker label="Tricot" name="undershirt" /> - <texture_picker label="Gants" name="gloves" /> - <texture_picker label="Chemise" name="shirt" /> - <texture_picker label="Veste (en haut)" name="upper_jacket" /> - <texture_picker label=" -Bas du corps -" name="baked_lower_body" /> - <texture_picker label="Tatouage bas du corps" name="lower_bodypaint" /> - <texture_picker label="Sous-vêtements" name="underpants" /> - <texture_picker label="Chaussettes" name="socks" /> - <texture_picker label="Chaussures" name="shoes" /> - <texture_picker label="Pantalon" name="pants" /> - <texture_picker label="Veste" name="jacket" /> - <texture_picker label="Jupe" name="baked_skirt" /> - <texture_picker label="Jupe" name="skirt_texture" /> + <button label="Vider ces ID dans la console" label_selected="Vider" name="Dump" left="-185" width="175"/> + <texture_picker label="Cheveux" name="hair-baked"/> + <texture_picker label="Cheveux" name="hair"/> + <texture_picker label="Tête" name="head-baked"/> + <texture_picker label="Maquillage" name="head bodypaint"/> + <texture_picker label="Yeux" name="eyes-baked"/> + <texture_picker label="Å’il" name="iris"/> + <texture_picker label="Haut du corps" name="upper-baked"/> + <texture_picker label="Tatouage (haut du corps)" name="upper bodypaint"/> + <texture_picker label="Tricot" name="undershirt"/> + <texture_picker label="Gants" name="gloves"/> + <texture_picker label="Chemise" name="shirt"/> + <texture_picker label="Veste (haut)" name="upper jacket"/> + <texture_picker label="Bas du corps" name="lower-baked"/> + <texture_picker label="Tatouage (bas du corps)" name="lower bodypaint"/> + <texture_picker label="Sous-vêtements" name="underpants"/> + <texture_picker label="Chaussettes" name="socks"/> + <texture_picker label="Chaussures" name="shoes"/> + <texture_picker label="Pantalon" name="pants"/> + <texture_picker label="Veste" name="lower jacket"/> + <texture_picker label="Jupe" name="skirt-baked"/> + <texture_picker label="Jupe" name="skirt"/> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_beacons.xml b/indra/newview/skins/default/xui/fr/floater_beacons.xml index 76e05a26ec157a4e661fe62fcb7f89122f009406..0b060983eead7ba0003db1afbb9cdfd1924f2d14 100644 --- a/indra/newview/skins/default/xui/fr/floater_beacons.xml +++ b/indra/newview/skins/default/xui/fr/floater_beacons.xml @@ -5,8 +5,8 @@ <check_box label="Objets scriptés" name="scripted"/> <check_box label="Objets physiques" name="physical"/> <check_box label="Sources sonores" name="sounds"/> - <check_box label="Sources des particules" name="particles"/> - <check_box label="Montrer les surbrillances" name="highlights"/> + <check_box label="Sources de particules" name="particles"/> + <check_box label="Mettre en surbrillance" name="highlights"/> <check_box label="Montrer les balises" name="beacons"/> <text name="beacon_width_label"> Largeur de la balise : diff --git a/indra/newview/skins/default/xui/fr/floater_bulk_perms.xml b/indra/newview/skins/default/xui/fr/floater_bulk_perms.xml index 34588c78eb0e64e97e7db27f90f79d72b7a99b7c..b868aa33adc509905ea57ce57e5c6ec0654fb63e 100644 --- a/indra/newview/skins/default/xui/fr/floater_bulk_perms.xml +++ b/indra/newview/skins/default/xui/fr/floater_bulk_perms.xml @@ -1,40 +1,44 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floaterbulkperms" title="Changement des permissions relatives au contenu"> - <text name="applyto"> - Types de contenu - </text> - <check_box label="Animation" name="check_animation"/> - <check_box label="Parties du corps" name="check_bodypart"/> - <check_box label="Habits" name="check_clothing"/> - <check_box label="Gestes" name="check_gesture"/> - <check_box label="Repères" name="check_landmark"/> - <check_box label="Notes" name="check_notecard"/> - <check_box label="Objets" name="check_object"/> - <check_box label="Scripts" name="check_script"/> - <check_box label="Sons" name="check_sound"/> - <check_box label="Textures" name="check_texture"/> - <button label="Tout cocher" label_selected="Tout" name="check_all"/> - <button label="Tout décocher" label_selected="Aucun" name="check_none"/> - <check_box label="Partager avec le groupe" name="share_with_group"/> - <check_box label="Autoriser tout le monde à copier" name="everyone_copy"/> - <text name="NextOwnerLabel"> - Le prochain propriétaire pourra : - </text> - <check_box label="Modifier" name="next_owner_modify"/> - <check_box label="Copier" name="next_owner_copy"/> - <check_box label="Revendre/Donner" name="next_owner_transfer"/> - <button label="Appliquer" name="apply"/> - <button label="Fermer" name="close"/> - <string name="nothing_to_modify_text"> - La sélection contient des contenus non modifiables. - </string> - <string name="status_text"> - Permissions paramétrées sur [NAME] - </string> - <string name="start_text"> - Demande de changement des permissions lancée... - </string> - <string name="done_text"> - Demande de changement des permissions finie. - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floaterbulkperms" title="Changement des droits relatifs au contenu"> + <text name="applyto"> + Types de contenu + </text> + <check_box label="Animation" name="check_animation"/> + <check_box label="Parties du corps" name="check_bodypart"/> + <check_box label="Habits" name="check_clothing"/> + <check_box label="Gestes" name="check_gesture"/> + <check_box label="Repères" name="check_landmark"/> + <check_box label="Notes" name="check_notecard"/> + <check_box label="Objets" name="check_object"/> + <check_box label="Scripts" name="check_script"/> + <check_box label="Sons" name="check_sound"/> + <check_box label="Textures" name="check_texture"/> + <button label="Tout cocher" label_selected="Tout" name="check_all"/> + <button label="Tout décocher" label_selected="Aucun" name="check_none"/> + <text name="newperms"> + Nouveaux droits + </text> + <check_box label="Partager avec le groupe" name="share_with_group"/> + <check_box label="Autoriser tout le monde à copier" name="everyone_copy"/> + <text name="NextOwnerLabel"> + Le prochain propriétaire pourra : + </text> + <check_box label="Modifier" name="next_owner_modify"/> + <check_box label="Copier" name="next_owner_copy"/> + <check_box label="Revendre/Donner" name="next_owner_transfer"/> + <button label="Aide" name="help"/> + <button label="Appliquer" name="apply"/> + <button label="Fermer" name="close"/> + <string name="nothing_to_modify_text"> + La sélection contient des contenus non modifiables. + </string> + <string name="status_text"> + Permissions paramétrées sur [NAME] + </string> + <string name="start_text"> + Demande de changement des droits lancée... + </string> + <string name="done_text"> + Demande de changement des droits finie. + </string> +</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_buy_contents.xml b/indra/newview/skins/default/xui/fr/floater_buy_contents.xml index 3d55a1ef708379b0b1f121dfd9f305ca6617903d..916b270500be8c9992f2caabf9efd52a4e00b15c 100644 --- a/indra/newview/skins/default/xui/fr/floater_buy_contents.xml +++ b/indra/newview/skins/default/xui/fr/floater_buy_contents.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_buy_contents" title="Acheter des contenus"> +<floater name="floater_buy_contents" title="Acheter ce contenu"> <text name="contains_text"> [NAME] contient : </text> diff --git a/indra/newview/skins/default/xui/fr/floater_buy_currency.xml b/indra/newview/skins/default/xui/fr/floater_buy_currency.xml index 9ae924c28a03e6c77fd8c5f612f59a6c5dd05ff6..85d67218d3ece3fdbb36a781faf118018401512c 100644 --- a/indra/newview/skins/default/xui/fr/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/fr/floater_buy_currency.xml @@ -23,13 +23,13 @@ [NAME] L$ [PRICE] </text> <text name="currency_action"> - Acheter des L$ + Acheter </text> - <line_editor name="currency_amt"> + <line_editor name="currency_amt" width="65"> 1234 </line_editor> - <text name="currency_est" width="138"> - pour environ [USD] US$ + <text name="currency_est" width="138" left_delta="68"> + L$ pour environ [USD] US$ </text> <text name="getting_data" width="138"> Obtention des données... @@ -52,11 +52,12 @@ <text name="total_amount"> [AMT] L$ </text> - <text name="purchase_warning_repurchase"> - En confirmant cette transaction, vous achetez uniquement les devises. -Vous devrez recommencer cette opération. + <text name="purchase_warning_repurchase" height="48" bottom_delta="-64" right="-10"> + En confirmant cette transaction, vous achetez +uniquement les devises. Vous devrez recommencer +cette opération. </text> - <text name="purchase_warning_notenough"> + <text name="purchase_warning_notenough" bottom_delta="16"> Vous n'achetez pas assez de devises. Veuillez saisir un montant plus élevé. </text> diff --git a/indra/newview/skins/default/xui/fr/floater_buy_land.xml b/indra/newview/skins/default/xui/fr/floater_buy_land.xml index 4741fadc62bae94e668b5da77aeb7abf2b3de7f8..aaf1577114bfb62fd7d71e663e935ef4a8eb0171 100644 --- a/indra/newview/skins/default/xui/fr/floater_buy_land.xml +++ b/indra/newview/skins/default/xui/fr/floater_buy_land.xml @@ -6,6 +6,12 @@ <text name="region_name_text"> (inconnue) </text> + <text name="region_type_label"> + Type : + </text> + <text name="region_type_text"> + (inconnu) + </text> <text name="estate_name_label"> Domaine : </text> @@ -22,14 +28,15 @@ Terrain acheté dans cette région : </text> <text name="resellable_clause"> - Le terrain acheté dans cette région peut être revendu ou pas. + Peut être revendu ou pas. </text> <text name="changeable_clause"> - peut être fusionné/divisé ou pas. + Peut être fusionné/divisé ou pas. </text> <text name="covenant_text"> Vous devez accepter le règlement du domaine : </text> + <text left="470" name="covenant_timestamp_text"/> <text_editor name="covenant_editor"> Chargement... </text_editor> @@ -54,7 +61,7 @@ (1,1 L$/m²) vendu avec objets </text> - <text name="info_action" width="275"> + <text name="info_action" width="380"> Si vous achetez ce terrain : </text> <text name="error_message"> @@ -72,12 +79,12 @@ <combo_box.item name="US$7.50/month,billedquarterly" label="7,50 US$/mois, facturation trimestrielle"/> <combo_box.item name="US$6.00/month,billedannually" label="6,00 US$/mois, facturation annuelle"/> </combo_box> - <text name="land_use_action" right="430" width="210"> + <text name="land_use_action"> Augmentez vos frais d'occupation de terrain à 40 US$/mois. </text> <text name="land_use_reason"> - Vous possédez un terrain de 1,309 mètres carrés. -Cette parcelle fait 512 mètres carrés. + Vous êtes propriétaire de 1 309 m² de terrain. +Cette parcelle fait 512 m². </text> <text name="purchase_action"> Payez au résident X 4 000 L$ pour le terrain @@ -156,7 +163,7 @@ Sélectionnez une zone plus petite. Si vous achetez ce terrain : </string> <string name="buying_for_group"> - Achat de terrain pour le groupe : + Si vous achetez le terrain pour le groupe : </string> <string name="cannot_buy_now"> Impossible d'acheter maintenant : @@ -210,7 +217,7 @@ peuvent contenir [AMOUNT2] prims Ce groupe, [GROUP], aura besoin de suffisamment de crédit pour payer les frais d'occupation de terrain avant que l'achat de cette parcelle ne soit finalisé. </string> <string name="have_enough_lindens"> - Vous avez [AMOUNT]L$, ce qui est suffisant pour acheter ce terrain. + Vous avez [AMOUNT] L$, ce qui est suffisant pour acheter ce terrain. </string> <string name="not_enough_lindens"> Vous n'avez que [AMOUNT] L$ et vous avez besoin de [AMOUNT2] L$ de plus. diff --git a/indra/newview/skins/default/xui/fr/floater_customize.xml b/indra/newview/skins/default/xui/fr/floater_customize.xml index e71890770991daf188271589140672ad1481a65c..b1d7edbe529b98d613ab6012527dbda509c8e0e8 100644 --- a/indra/newview/skins/default/xui/fr/floater_customize.xml +++ b/indra/newview/skins/default/xui/fr/floater_customize.xml @@ -1,14 +1,9 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater customize" title="Apparence" width="563"> - <tab_container name="customize tab container" tab_min_width="165" width="561"> - <panel label="Parties du corps"/> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater customize" title="Apparence" width="548"> + <tab_container name="customize tab container" tab_min_width="150" width="546"> <panel label="Parties du corps" name="body_parts_placeholder"/> - <panel label="Silhouette" left="169" name="Shape" width="389"> - <button label="Créer une silhouette" label_selected="Créer une silhouette" name="Create New" width="140"/> - <button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/> - <button label="Enregistrer" label_selected="Enregistrer" left="100" name="Save" width="82"/> - <button label="Enregistrer sous" label_selected="Enregistrer sous" left="188" name="Save As" width="105"/> - <button label="Rétablir" label_selected="Rétablir" left="299" name="Revert" width="82"/> + <panel label="Silhouette" left="154" name="Shape" width="389"> + <button label="Rétablir" label_selected="Rétablir" left="305" name="Revert" width="82"/> <button label="Corps" label_selected="Corps" name="Body"/> <button label="Tête" label_selected="Tête" name="Head"/> <button label="Yeux" label_selected="Yeux" name="Eyes"/> @@ -18,7 +13,14 @@ <button label="Menton" label_selected="Menton" name="Chin"/> <button label="Torse" label_selected="Torse" name="Torso"/> <button label="Jambes" label_selected="Jambes" name="Legs"/> - <button label="Aléatoire" label_selected="Aléatoire" name="Randomize"/> + <radio_group name="sex radio"> + <radio_item length="1" name="radio" type="string"> + Femme + </radio_item> + <radio_item length="1" name="radio2" type="string"> + Homme + </radio_item> + </radio_group> <text length="1" name="title" type="string"> [DESC] </text> @@ -36,32 +38,24 @@ </text> <text length="1" name="not worn instructions" type="string"> Pour changer de silhouette, faites-en glisser une à partir de votre -inventaire jusqu'à votre avatar. Vous pouvez aussi en créer une nouvelle et la porter. -une nouvelle et de la porter. +inventaire jusqu'à votre avatar. Vous pouvez aussi en créer une nouvelle +et de la porter. </text> <text length="1" name="no modify instructions" type="string"> Vous n'avez pas la permission de modifier cet objet. </text> - <radio_group name="sex radio"> - <radio_item length="1" name="radio" type="string"> - Femme - </radio_item> - <radio_item length="1" name="radio2" type="string"> - Homme - </radio_item> - </radio_group> + <text name="Item Action Label" right="92"> + Silhouette : + </text> + <button label="Créer une silhouette" label_selected="Créer une silhouette" name="Create New"/> + <button label="Enregistrer" label_selected="Enregistrer" left="100" name="Save" width="82"/> + <button label="Enregistrer sous..." label_selected="Enregistrer sous..." left="188" name="Save As" width="111"/> </panel> <panel label="Peau" name="Skin"> - <button label="Créer une peau" label_selected="Créer une peau" name="Create New"/> - <button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/> - <button label="Enregistrer" label_selected="Enregistrer" left="100" name="Save" width="82"/> - <button label="Enregistrer sous" label_selected="Enregistrer sous" left="188" name="Save As" width="105"/> - <button label="Rétablir" label_selected="Rétablir" left="299" name="Revert" width="82"/> <button label="Couleur" label_selected="Couleur" name="Skin Color" width="84"/> <button label="Détails visage" label_selected="Détails visage" name="Face Detail" width="84"/> <button label="Maquillage" label_selected="Maquillage" name="Makeup" width="84"/> <button label="Détails corps" label_selected="Détails corps" name="Body Detail" width="84"/> - <button label="Aléatoire" label_selected="Aléatoire" name="Randomize" width="84"/> <text length="1" name="title" type="string"> [DESC] </text> @@ -84,21 +78,22 @@ Vous pouvez aussi en créer une nouvelle et la porter. <text length="1" name="no modify instructions" type="string"> Vous n'avez pas la permission de modifier cet objet. </text> + <text name="Item Action Label" right="92"> + Peau : + </text> <texture_picker label="Tatouages tête" name="Head Tattoos" tool_tip="Cliquez pour sélectionner une image" width="78"/> <texture_picker label="Tatouages haut" name="Upper Tattoos" tool_tip="Cliquez pour sélectionner une image" width="78"/> <texture_picker label="Tatouages bas" name="Lower Tattoos" tool_tip="Cliquez pour sélectionner une image" width="78"/> + <button label="Créer une peau" label_selected="Créer une peau" name="Create New"/> + <button label="Enregistrer" label_selected="Enregistrer" left="100" name="Save" width="82"/> + <button label="Enregistrer sous..." label_selected="Enregistrer sous..." left="188" name="Save As" width="111"/> + <button label="Rétablir" label_selected="Rétablir" left="305" name="Revert" width="82"/> </panel> <panel label="Cheveux" name="Hair"> - <button label="Créer des cheveux" label_selected="Créer des cheveux" name="Create New"/> - <button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/> - <button label="Enregistrer" label_selected="Enregistrer" left="100" name="Save" width="82"/> - <button label="Enregistrer sous" label_selected="Enregistrer sous" left="188" name="Save As" width="105"/> - <button label="Rétablir" label_selected="Rétablir" left="299" name="Revert" width="82"/> <button label="Couleur" label_selected="Couleur" name="Color"/> <button label="Style" label_selected="Style" name="Style"/> <button label="Sourcils" label_selected="Sourcils" name="Eyebrows"/> <button label="Pilosité" label_selected="Pilosité" name="Facial"/> - <button label="Aléatoire" label_selected="Aléatoire" name="Randomize"/> <text length="1" name="title" type="string"> [DESC] </text> @@ -116,21 +111,22 @@ Vous pouvez aussi en créer une nouvelle et la porter. </text> <text length="1" name="not worn instructions" type="string"> Pour changer de chevelure, faites-en glisser une de votre inventaire -jusqu'à votre avatar. Vous pouvez aussi en créer une -nouvelle et la porter. +jusqu'à votre avatar. Vous pouvez aussi en créer une nouvelle +et la porter. </text> <text length="1" name="no modify instructions" type="string"> Vous n'avez pas la permission de modifier cet objet. </text> + <text name="Item Action Label" right="92"> + Cheveux : + </text> <texture_picker label="Texture" name="Texture" tool_tip="Cliquez pour sélectionner une image"/> + <button label="Créer des cheveux" label_selected="Créer des cheveux" name="Create New"/> + <button label="Enregistrer" label_selected="Enregistrer" left="100" name="Save" width="82"/> + <button label="Enregistrer sous..." label_selected="Enregistrer sous..." left="188" name="Save As" width="111"/> + <button label="Rétablir" label_selected="Rétablir" left="305" name="Revert" width="82"/> </panel> <panel label="Yeux" name="Eyes"> - <button label="Créer des yeux" label_selected="Créer des yeux" name="Create New"/> - <button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/> - <button label="Enregistrer" label_selected="Enregistrer" left="100" name="Save" width="82"/> - <button label="Enregistrer sous" label_selected="Enregistrer sous" left="188" name="Save As" width="105"/> - <button label="Rétablir" label_selected="Rétablir" left="299" name="Revert" width="82"/> - <button label="Aléatoire" label_selected="Aléatoire" name="Randomize"/> <text length="1" name="title" type="string"> [DESC] </text> @@ -147,22 +143,30 @@ nouvelle et la porter. Emplacement : [PATH] </text> <text length="1" name="not worn instructions" type="string"> - Pour changer vos yeux, faites-les glisser de votre inventaire -jusqu'à votre avatar. Vous pouvez aussi en créer de nouveaux et les porter. + Pour changer vos yeux, faites-les glisser de votre inventaire jusqu'à +votre avatar. Vous pouvez aussi en créer de nouveaux et les porter. </text> <text length="1" name="no modify instructions" type="string"> Vous n'avez pas la permission de modifier cet objet. </text> + <text name="Item Action Label" right="92"> + Yeux : + </text> <texture_picker label="Iris" name="Iris" tool_tip="Cliquez pour sélectionner une image"/> + <button label="Créer des yeux" label_selected="Créer des yeux" name="Create New"/> + <button label="Enregistrer" label_selected="Enregistrer" left="100" name="Save" width="82"/> + <button label="Enregistrer sous..." label_selected="Enregistrer sous..." left="188" name="Save As" width="111"/> + <button label="Rétablir" label_selected="Rétablir" left="305" name="Revert" width="82"/> </panel> - <panel label="Vêtements"/> <panel label="Habits" name="clothes_placeholder"/> <panel label="Chemise" name="Shirt"> + <texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image" width="74"/> + <color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquer pour ouvrir le sélecteur de couleurs" width="74"/> <button label="Créer une chemise" label_selected="Créer une chemise" name="Create New"/> <button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/> <button label="Enregistrer" label_selected="Enregistrer" left="100" name="Save" width="82"/> - <button label="Enregistrer sous" label_selected="Enregistrer sous" left="188" name="Save As" width="105"/> - <button label="Rétablir" label_selected="Rétablir" left="299" name="Revert" width="82"/> + <button label="Enregistrer sous..." label_selected="Enregistrer sous..." left="188" name="Save As" width="111"/> + <button label="Rétablir" label_selected="Rétablir" left="305" name="Revert" width="82"/> <text length="1" name="title" type="string"> [DESC] </text> @@ -185,15 +189,18 @@ jusqu'à votre avatar. Vous pouvez aussi en créer une nouvelle et la porte <text length="1" name="no modify instructions" type="string"> Vous n'avez pas la permission de modifier cet objet. </text> - <color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquer pour ouvrir le sélecteur de couleurs" width="74"/> - <texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image" width="74"/> + <text name="Item Action Label" right="92"> + Chemise : + </text> </panel> <panel label="Pantalon" name="Pants"> + <texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image" width="74"/> + <color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquer pour ouvrir le sélecteur de couleurs" width="74"/> <button label="Créer un pantalon" label_selected="Créer un pantalon" name="Create New"/> <button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/> <button label="Enregistrer" label_selected="Enregistrer" left="100" name="Save" width="82"/> - <button label="Enregistrer sous" label_selected="Enregistrer sous" left="188" name="Save As" width="105"/> - <button label="Rétablir" label_selected="Rétablir" left="299" name="Revert" width="82"/> + <button label="Enregistrer sous..." label_selected="Enregistrer sous..." left="188" name="Save As" width="111"/> + <button label="Rétablir" label_selected="Rétablir" left="305" name="Revert" width="82"/> <text length="1" name="title" type="string"> [DESC] </text> @@ -216,15 +223,11 @@ jusqu'à votre avatar. Vous pouvez aussi en créer un nouveau et le porter. <text length="1" name="no modify instructions" type="string"> Vous n'avez pas la permission de modifier cet objet. </text> - <color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquer pour ouvrir le sélecteur de couleurs" width="74"/> - <texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image" width="74"/> + <text name="Item Action Label" right="92"> + Pantalon : + </text> </panel> <panel label="Chaussures" name="Shoes"> - <button label="Créer des chaussures" label_selected="Créer des chaussures" name="Create New" width="140"/> - <button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/> - <button label="Enregistrer" label_selected="Enregistrer" left="100" name="Save" width="82"/> - <button label="Enregistrer sous" label_selected="Enregistrer sous" left="188" name="Save As" width="105"/> - <button label="Rétablir" label_selected="Rétablir" left="299" name="Revert" width="82"/> <text length="1" name="title" type="string"> [DESC] </text> @@ -248,15 +251,18 @@ nouvelle paire et la porter. <text length="1" name="no modify instructions" type="string"> Vous n'avez pas la permission de modifier cet objet. </text> - <color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquer pour ouvrir le sélecteur de couleurs" width="74"/> + <text name="Item Action Label" right="92"> + Chaussures : + </text> <texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image" width="74"/> - </panel> - <panel label="Chaussettes" name="Socks"> - <button label="Créer des chaussettes" label_selected="Créer des chaussettes" name="Create New" width="140"/> + <color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquer pour ouvrir le sélecteur de couleurs" width="74"/> + <button label="Créer des chaussures" label_selected="Créer des chaussures" name="Create New" /> <button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/> <button label="Enregistrer" label_selected="Enregistrer" left="100" name="Save" width="82"/> - <button label="Enregistrer sous" label_selected="Enregistrer sous" left="188" name="Save As" width="105"/> - <button label="Rétablir" label_selected="Rétablir" left="299" name="Revert" width="82"/> + <button label="Enregistrer sous..." label_selected="Enregistrer sous..." left="188" name="Save As" width="111"/> + <button label="Rétablir" label_selected="Rétablir" left="305" name="Revert" width="82"/> + </panel> + <panel label="Chaussettes" name="Socks"> <text length="1" name="title" type="string"> [DESC] </text> @@ -280,15 +286,18 @@ nouvelle paire et la porter. <text length="1" name="no modify instructions" type="string"> Vous n'avez pas la permission de modifier cet objet. </text> - <color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquer pour ouvrir le sélecteur de couleurs" width="74"/> + <text name="Item Action Label" right="92"> + Chaussettes : + </text> <texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image" width="74"/> - </panel> - <panel label="Veste" name="Jacket"> - <button label="Créer une veste" label_selected="Créer une veste" name="Create New"/> + <color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquer pour ouvrir le sélecteur de couleurs" width="74"/> + <button label="Créer des chaussettes" label_selected="Créer des chaussettes" name="Create New"/> <button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/> <button label="Enregistrer" label_selected="Enregistrer" left="100" name="Save" width="82"/> - <button label="Enregistrer sous" label_selected="Enregistrer sous" left="188" name="Save As" width="105"/> - <button label="Rétablir" label_selected="Rétablir" left="299" name="Revert" width="82"/> + <button label="Enregistrer sous..." label_selected="Enregistrer sous..." left="188" name="Save As" width="111"/> + <button label="Rétablir" label_selected="Rétablir" left="305" name="Revert" width="82"/> + </panel> + <panel label="Veste" name="Jacket"> <text length="1" name="title" type="string"> [DESC] </text> @@ -305,23 +314,25 @@ nouvelle paire et la porter. Emplacement : [PATH] </text> <text length="1" name="not worn instructions" type="string"> - Pour changer de veste, faites-en glisser une de votre inventaire -jusqu'à votre avatar. Vous pouvez aussi en créer une -nouvelle et la porter. + Pour changer de veste, faites-en glisser une de votre inventaire jusqu'à +votre avatar. Vous pouvez aussi en créer une nouvelle et la porter. </text> <text length="1" name="no modify instructions" type="string"> Vous n'avez pas la permission de modifier cet objet. </text> - <color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquer pour ouvrir le sélecteur de couleurs" width="81"/> + <text name="Item Action Label" right="92"> + Veste : + </text> <texture_picker label="Tissu (dessus)" name="Upper Fabric" tool_tip="Cliquez pour sélectionner une image" width="81"/> <texture_picker label="Tissu (dessous)" name="Lower Fabric" tool_tip="Cliquez pour sélectionner une image" width="81"/> - </panel> - <panel label="Gants" name="Gloves"> - <button label="Créer des gants" label_selected="Créer des gants" name="Create New"/> + <color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquer pour ouvrir le sélecteur de couleurs" width="81"/> + <button label="Créer une veste" label_selected="Créer une veste" name="Create New"/> <button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/> <button label="Enregistrer" label_selected="Enregistrer" left="100" name="Save" width="82"/> - <button label="Enregistrer sous" label_selected="Enregistrer sous" left="188" name="Save As" width="105"/> - <button label="Rétablir" label_selected="Rétablir" left="299" name="Revert" width="82"/> + <button label="Enregistrer sous..." label_selected="Enregistrer sous..." left="188" name="Save As" width="111"/> + <button label="Rétablir" label_selected="Rétablir" left="305" name="Revert" width="82"/> + </panel> + <panel label="Gants" name="Gloves"> <text length="1" name="title" type="string"> [DESC] </text> @@ -339,21 +350,23 @@ nouvelle et la porter. </text> <text length="1" name="not worn instructions" type="string"> Pour changer de gants, faites-en glisser une paire à partir de votre -inventaire. Vous pouvez aussi en créer une nouvelle paire -et la porter. +inventaire. Vous pouvez aussi en créer une nouvelle paire et la porter. </text> <text length="1" name="no modify instructions" type="string"> Vous n'avez pas la permission de modifier cet objet. </text> - <color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquer pour ouvrir le sélecteur de couleurs" width="74"/> + <text name="Item Action Label" right="92"> + Gants : + </text> <texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image" width="74"/> - </panel> - <panel label="Sous-vêtements (homme)" name="Undershirt"> - <button label="Créer des sous-vêtements" label_selected="Créer des sous-vêtements" name="Create New" width="166"/> + <color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquer pour ouvrir le sélecteur de couleurs" width="74"/> + <button label="Créer des gants" label_selected="Créer des gants" name="Create New"/> <button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/> <button label="Enregistrer" label_selected="Enregistrer" left="100" name="Save" width="82"/> - <button label="Enregistrer sous" label_selected="Enregistrer sous" left="188" name="Save As" width="105"/> - <button label="Rétablir" label_selected="Rétablir" left="299" name="Revert" width="82"/> + <button label="Enregistrer sous..." label_selected="Enregistrer sous..." left="188" name="Save As" width="111"/> + <button label="Rétablir" label_selected="Rétablir" left="305" name="Revert" width="82"/> + </panel> + <panel label="Sous-vêtements (haut)" name="Undershirt"> <text length="1" name="title" type="string"> [DESC] </text> @@ -376,15 +389,19 @@ votre inventaire. Vous pouvez aussi en créer des nouveaux et les porter. <text length="1" name="no modify instructions" type="string"> Vous n'avez pas la permission de modifier cet objet. </text> - <color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquer pour ouvrir le sélecteur de couleurs" width="74"/> + <text name="Item Action Label" right="92" bottom="-470"> + Sous-vêtements +(haut) : + </text> <texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image" width="74"/> - </panel> - <panel label="Sous-vêtements (femme)" name="Underpants"> - <button label="Créer des sous-vêtements" label_selected="Créer des sous-vêtements" name="Create New" width="166"/> + <color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquer pour ouvrir le sélecteur de couleurs" width="74"/> + <button label="Créer des sous-vêtements" label_selected="Créer des sous-vêtements" name="Create New"/> <button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/> <button label="Enregistrer" label_selected="Enregistrer" left="100" name="Save" width="82"/> - <button label="Enregistrer sous" label_selected="Enregistrer sous" left="188" name="Save As" width="105"/> - <button label="Rétablir" label_selected="Rétablir" left="299" name="Revert" width="82"/> + <button label="Enregistrer sous..." label_selected="Enregistrer sous..." left="188" name="Save As" width="111"/> + <button label="Rétablir" label_selected="Rétablir" left="305" name="Revert" width="82"/> + </panel> + <panel label="Sous-vêtements (bas)" name="Underpants"> <text length="1" name="title" type="string"> [DESC] </text> @@ -407,15 +424,19 @@ votre inventaire. Vous pouvez aussi en créer des nouveaux et les porter. <text length="1" name="no modify instructions" type="string"> Vous n'avez pas la permission de modifier cet objet. </text> - <color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquer pour ouvrir le sélecteur de couleurs" width="74"/> + <text name="Item Action Label" right="92" bottom="-470"> + Sous-vêtements +(bas) : + </text> <texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image" width="74"/> - </panel> - <panel label="Jupe" name="Skirt"> - <button label="Créer une jupe" label_selected="Créer une jupe" name="Create New"/> + <color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquer pour ouvrir le sélecteur de couleurs" width="74"/> + <button label="Créer des sous-vêtements" label_selected="Créer des sous-vêtements" name="Create New"/> <button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/> <button label="Enregistrer" label_selected="Enregistrer" left="100" name="Save" width="82"/> - <button label="Enregistrer sous" label_selected="Enregistrer sous" left="188" name="Save As" width="105"/> - <button label="Rétablir" label_selected="Rétablir" left="299" name="Revert" width="82"/> + <button label="Enregistrer sous..." label_selected="Enregistrer sous..." left="188" name="Save As" width="111"/> + <button label="Rétablir" label_selected="Rétablir" left="305" name="Revert" width="82"/> + </panel> + <panel label="Jupe" name="Skirt"> <text length="1" name="title" type="string"> [DESC] </text> @@ -438,12 +459,20 @@ Vous pouvez aussi en créer une nouvelle et la porter. <text length="1" name="no modify instructions" type="string"> Vous n'avez pas la permission de modifier cet objet. </text> - <color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquer pour ouvrir le sélecteur de couleurs" width="74"/> + <text name="Item Action Label" right="92"> + Jupe : + </text> <texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image" width="74"/> + <color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquer pour ouvrir le sélecteur de couleurs" width="74"/> + <button label="Créer une jupe" label_selected="Créer une jupe" name="Create New"/> + <button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/> + <button label="Enregistrer" label_selected="Enregistrer" left="100" name="Save" width="82"/> + <button label="Enregistrer sous..." label_selected="Enregistrer sous..." left="188" name="Save As" width="111"/> + <button label="Rétablir" label_selected="Rétablir" left="305" name="Revert" width="82"/> </panel> </tab_container> - <scroll_container left="266" name="panel_container"/> - <button label="Créer un ensemble" label_selected="Créer un ensemble" name="Make Outfit" right="-252" width="115"/> - <button label="Tout enregistrer" label_selected="Tout enregistrer" name="Save All" right="-131" width="115"/> - <button label="Fermer" label_selected="Fermer" name="Close" width="115"/> + <scroll_container left="251" name="panel_container"/> + <button label="Annuler" label_selected="Annuler" name="Cancel"/> + <button label="OK" label_selected="OK" name="Ok"/> + <button label="Créer un ensemble..." label_selected="Créer un ensemble..." name="Make Outfit" left="152" width="125"/> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_font_test.xml b/indra/newview/skins/default/xui/fr/floater_font_test.xml index fce3615725b5658901ee3ab68e7a095483249691..11eb11a0d7949aed5bee2f07c7f6788ca35ebcb4 100644 --- a/indra/newview/skins/default/xui/fr/floater_font_test.xml +++ b/indra/newview/skins/default/xui/fr/floater_font_test.xml @@ -1,10 +1,6 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater can_close="true" can_drag_on_left="false" can_minimize="true" can_resize="true" - height="800" min_height="175" min_width="154" name="contents" - title="Font Test" width="500"> - -<text name="linea" font="OverrideTest" follows="left|top|right" bottom_delta="-20" left="16" height="16"> -OverrideTest, should be timesbd, from default/xui/fr -</text> - +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="contents" title="Test de la police"> + <text name="linea"> + OverrideTest, Times-BOLD doit être sélectionné ici. (De default/xui/fr) + </text> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_god_tools.xml b/indra/newview/skins/default/xui/fr/floater_god_tools.xml index 5799e1a757103e31df331fc281f112c92b72edd2..4f43be47eaf39d3178490050ffbc4f09b96fb80a 100644 --- a/indra/newview/skins/default/xui/fr/floater_god_tools.xml +++ b/indra/newview/skins/default/xui/fr/floater_god_tools.xml @@ -16,7 +16,7 @@ <check_box label="Visible" name="check visible" tool_tip="Cochez pour rendre la région visible aux non-admins." bottom_delta="-32"/> <check_box label="Dégâts" name="check damage" tool_tip="Cochez pour activer les dégâts dans cette région."/> <check_box label="Bloquer le suivi de trafic" name="block dwell" tool_tip="Cochez pour que la région ne comptabilise pas le trafic."/> - <check_box label="Bloquer le terraformage" name="block terraform" tool_tip="Cochez pour empêcher les personnes de terraformer leur terrain"/> + <check_box label="Interdire le terraformage" name="block terraform" tool_tip="Cochez pour empêcher les personnes de terraformer leur terrain"/> <check_box label="Bac à sable" name="is sandbox" tool_tip="Basculer cette région en bac à sable."/> <button label="Figer le terrain" label_selected="Figer le terrain" name="Bake Terrain" tool_tip="Enregistrer le terrain actuel comme terrain par défaut." width="118" /> <button label="Rétablir le terrain" label_selected="Rétablir le terrain" name="Revert Terrain" tool_tip="Remplacer le terrain actuel avec le terrain par défaut." width="118" /> @@ -60,17 +60,17 @@ </text> <check_box label="Désactiver les scripts" name="disable scripts" tool_tip="Cochez pour désactiver tous les scripts dans cette région"/> <check_box label="Désactiver les collisions" name="disable collisions" tool_tip="Cochez pour désactiver les collisions entre non-avatars dans cette région"/> - <check_box label="Désactiver les propriétés physiques" name="disable physics" tool_tip="Cochez pour désactiver toutes les propriétés physiques dans cette région"/> + <check_box label="Désactiver la physique" name="disable physics" tool_tip="Cochez pour désactiver tous les effets liés à la physique dans cette région"/> <button label="Appliquer" label_selected="Appliquer" name="Apply" tool_tip="Cliquez ici pour appliquer les modifications effectuées ci-dessus." bottom="-85"/> <button label="Définir la cible" label_selected="Définir la cible" name="Set Target" tool_tip="Définir l'avatar cible pour la suppression de l'objet."/> <text name="target_avatar_name"> (aucune cible) </text> - <button label="Supprimer tous les objets scriptés de la cible sur les terrains des autres" label_selected="Supprimer tous les objets scriptés de la cible sur les terrains des autres" name="Delete Target's Scripted Objects On Others Land" tool_tip="Supprimer tous les objets scriptés appartenant à la cible sur les terrains ne lui appartenant pas. Les objets non reproductibles seront renvoyés."/> - <button label="Supprimer les objets scriptés de la cible sur *tous* les terrains" label_selected="Supprimer les objets scriptés de la cible sur *tous* les terrains" name="Delete Target's Scripted Objects On *Any* Land" tool_tip="Supprimer les objets scriptés appartenant à la cible dans cette région. Les objets non reproductibles seront renvoyés."/> - <button label="Supprimer *tous* les objets de la cible" label_selected="Supprimer *tous* les objets de la cible" name="Delete *ALL* Of Target's Objects" tool_tip="Supprimer tous les objets appartenant à la cible dans cette région. Les objets non reproductibles seront renvoyés."/> - <button width="300" label="Afficher les objets souvent responsables de collision" label_selected="Afficher les objets souvent responsables de collision" name="Get Top Colliders" tool_tip="Dresse une liste des objets avec les callbacks les plus fréquents. "/> - <button width="300" label="Afficher les scripts fréquemment utilisés" label_selected="Afficher les scripts fréquemment utilisés" name="Get Top Scripts" tool_tip="Dresse une liste des objets qui passent le plus de temps à exécuter des scripts."/> + <button label="Supprimer tous les objets scriptés de la cible sur les terrains des autres" label_selected="Supprimer tous les objets scriptés de la cible sur les terrains des autres" name="Delete Target's Scripted Objects On Others Land" tool_tip="Supprimer tous les objets scriptés appartenant à la cible sur les terrains ne lui appartenant pas. Les objets non copiables seront renvoyés."/> + <button label="Supprimer les objets scriptés de la cible sur *tous* les terrains" label_selected="Supprimer les objets scriptés de la cible sur *tous* les terrains" name="Delete Target's Scripted Objects On *Any* Land" tool_tip="Supprimer les objets scriptés appartenant à la cible dans cette région. Les objets non copiables seront renvoyés."/> + <button label="Supprimer *tous* les objets de la cible" label_selected="Supprimer *tous* les objets de la cible" name="Delete *ALL* Of Target's Objects" tool_tip="Supprimer tous les objets appartenant à la cible dans cette région. Les objets non copiables seront renvoyés."/> + <button width="300" label="Afficher les collisions les plus consommatrices" label_selected="Afficher les collisions les plus consommatrices" name="Get Top Colliders" tool_tip="Dresse une liste des objets avec les callbacks les plus fréquents. "/> + <button width="300" label="Afficher les objets scriptés les plus consommateurs" label_selected="Afficher les objets scriptés les plus consommateurs" name="Get Top Scripts" tool_tip="Dresse une liste des objets qui passent le plus de temps à exécuter des scripts."/> <button width="300" label="Résumé des scripts" label_selected="Résumé des scripts" name="Scripts digest" tool_tip="Dresse une liste des scripts et de leurs occurrences."/> </panel> <panel label="Requête" name="request"> diff --git a/indra/newview/skins/default/xui/fr/floater_im.xml b/indra/newview/skins/default/xui/fr/floater_im.xml index 0c9ea2c913c44af2a48e174a3c21c9da5b8e87a0..a116c43f3f4d65d748109cd0c79b2ed9435984cb 100644 --- a/indra/newview/skins/default/xui/fr/floater_im.xml +++ b/indra/newview/skins/default/xui/fr/floater_im.xml @@ -16,7 +16,7 @@ Erreur lors de la requête, veuillez réessayer ultérieurement. </string> <string name="insufficient_perms_error"> - Vous n'avez pas les permissions requises. + Vous n'avez pas les droits requis. </string> <string name="session_does_not_exist_error"> La session a expiré diff --git a/indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml index 92dbc36a039a3ca7c77e929f56f04a516143c208..ec83d5bcaa20843f6961c1b3ad02c29cb83efc70 100644 --- a/indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml @@ -60,12 +60,8 @@ </text> <check_box label="À vendre" name="CheckPurchase"/> <radio_group name="RadioSaleType"> - <radio_item name="radio"> - Original - </radio_item> - <radio_item name="radio2"> - Copie - </radio_item> + <radio_item name="radio" label="Original" /> + <radio_item name="radio2" label="Copie" /> </radio_group> <text name="TextPrice"> Prix : L$ diff --git a/indra/newview/skins/default/xui/fr/floater_land_holdings.xml b/indra/newview/skins/default/xui/fr/floater_land_holdings.xml index 4a63abf4e1d7d5e2fc7ece6369c4207c9db6e717..9c4f4ee966b56ee7c36f2995a0f43763efbff507 100644 --- a/indra/newview/skins/default/xui/fr/floater_land_holdings.xml +++ b/indra/newview/skins/default/xui/fr/floater_land_holdings.xml @@ -1,21 +1,20 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="land holdings floater" title="Mes terrains"> <scroll_list name="parcel list"> - <column label="Nom" name="name" /> - <column label="Emplacement" name="location" /> - <column label="Surface" name="area" /> - <column label="" name="hidden" /> + <column label="Nom de la parcelle" name="name"/> + <column label="Région" name="location"/> + <column label="Type" name="type"/> + <column label="Surface" name="area"/> + <column label="" name="hidden"/> </scroll_list> - <button label="Téléporter" label_selected="Téléporter" name="Teleport" - tool_tip="Téléportez-vous au milieu de ce terrain." /> - <button label="Voir sur la carte" label_selected="Voir sur la carte" name="Show on Map" - tool_tip="Affichez ce terrain sur la carte du monde." /> + <button label="Téléporter" label_selected="Téléporter" name="Teleport" tool_tip="Téléportez-vous au milieu de ce terrain."/> + <button label="Voir sur la carte" label_selected="Voir sur la carte" name="Show on Map" tool_tip="Affichez ce terrain sur la carte du monde."/> <text name="contrib_label"> Vos contributions : </text> <scroll_list name="grant list"> - <column label="Groupe" name="group" /> - <column label="Surface" name="area" /> + <column label="Groupe" name="group"/> + <column label="Surface" name="area"/> </scroll_list> <text name="allowed_label"> Surface de terrain autorisée avec votre compte : diff --git a/indra/newview/skins/default/xui/fr/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/fr/floater_live_lsleditor.xml index 2ca6a85ea442b039f61fe895e4f818aaebf1fcf5..e2e2a9af9a0655a9cb9bddac511bf208788755e1 100644 --- a/indra/newview/skins/default/xui/fr/floater_live_lsleditor.xml +++ b/indra/newview/skins/default/xui/fr/floater_live_lsleditor.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater name="script ed float" title="Script : Nouveau script"> - <button label="Redéfinir" label_selected="Redéfinir" name="Reset" width="100" left="390"/> + <button label="Réinitialiser" label_selected="Réinitialiser" name="Reset" width="100" left="390"/> <check_box label="Exécution en cours" name="running" left="4"/> <check_box label="Mono" name="mono" left="130"/> <string name="not_allowed"> diff --git a/indra/newview/skins/default/xui/fr/floater_notification.xml b/indra/newview/skins/default/xui/fr/floater_notification.xml index 06ee37907d9b69a1b30ea2e1935e7bd974863460..7ca2dc3a64229ae9e54684e3726e25c7b06fcbf3 100644 --- a/indra/newview/skins/default/xui/fr/floater_notification.xml +++ b/indra/newview/skins/default/xui/fr/floater_notification.xml @@ -1,7 +1,7 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="notification" title="Console de notifications"> - <text_editor name="payload"> - Chargement.. - </text_editor> - <combo_box label="Réponse" name="response"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="notification" title="Console de notifications"> + <text_editor name="payload"> + Chargement.. + </text_editor> + <combo_box label="Réponse" name="response"/> +</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_notifications_console.xml b/indra/newview/skins/default/xui/fr/floater_notifications_console.xml index d3af484f6177c6d29a08b1b25d2fb38752e43404..7262fe8fe2d55064f61f07530b26ce9ee21dd0a1 100644 --- a/indra/newview/skins/default/xui/fr/floater_notifications_console.xml +++ b/indra/newview/skins/default/xui/fr/floater_notifications_console.xml @@ -1,5 +1,5 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="notifications_console" title="Console de notifications"> - <combo_box label="Sélectionner le type de notification" name="notification_types"/> - <button label="Ajouter" name="add_notification"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="notifications_console" title="Console de notifications"> + <combo_box label="Sélectionner le type de notification" name="notification_types" width="412"/> + <button label="Ajouter" name="add_notification" left="417" width="78"/> +</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_perm_prefs.xml b/indra/newview/skins/default/xui/fr/floater_perm_prefs.xml index 46554033f913de16546275d5fc7b53f7f932fb56..9ea970d89dccd2cf308ce1aeef0ba0538cbd2bcb 100644 --- a/indra/newview/skins/default/xui/fr/floater_perm_prefs.xml +++ b/indra/newview/skins/default/xui/fr/floater_perm_prefs.xml @@ -1,16 +1,16 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="perm prefs" title="Permissions par défaut"> - <panel label="Permissions" name="permissions"> - <button label="?" label_selected="?" name="help"/> - <check_box label="Partager avec le groupe" name="share_with_group"/> - <check_box label="Autoriser tout le monde à copier" name="everyone_copy"/> - <text name="NextOwnerLabel"> - Le prochain propriétaire pourra : - </text> - <check_box label="Modifier" name="next_owner_modify"/> - <check_box label="Copier" name="next_owner_copy"/> - <check_box label="Revendre/Donner" name="next_owner_transfer"/> - </panel> - <button label="OK" label_selected="OK" name="ok"/> - <button label="Annuler" label_selected="Annuler" name="cancel"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="perm prefs" title="Droits par défaut"> + <panel label="Droits" name="permissions"> + <button label="?" label_selected="?" name="help"/> + <check_box label="Partager avec le groupe" name="share_with_group"/> + <check_box label="Autoriser tout le monde à copier" name="everyone_copy"/> + <text name="NextOwnerLabel"> + Le prochain propriétaire pourra : + </text> + <check_box label="Modifier" name="next_owner_modify"/> + <check_box label="Copier" name="next_owner_copy"/> + <check_box label="Revendre/Donner" name="next_owner_transfer"/> + </panel> + <button label="OK" label_selected="OK" name="ok"/> + <button label="Annuler" label_selected="Annuler" name="cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml b/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml index 5322993b0b9c2834b4b6a7f55cb39d2747c2e396..b2c3d18cbd1fd6a061e01ebfa223e99fb2599286 100644 --- a/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml @@ -49,15 +49,12 @@ simultanément, sauf si vous ajoutez des pauses. </text> <radio_group name="animation_trigger_type"> - <radio_item name="start"> - Commencer - </radio_item> - <radio_item name="stop"> - Stop - </radio_item> + <radio_item name="start" label="Commencer" /> + <radio_item name="stop" label="Stop" /> </radio_group> <check_box label="jusqu'à la fin des animations" name="wait_anim_check" /> <check_box label="temps en secondes" name="wait_time_check" /> + <line_editor left_delta="130" name="wait_time_editor" /> <check_box label="Actifs" name="active_check" tool_tip="Les gestes actifs peuvent être déclenchés en saisissant leur raccourci dans le chat ou en appuyant sur les raccourcis. Les gestes deviennent généralement inactifs lorsqu'il y a un conflit entre les raccourcis." /> <button label="Prévisualiser" name="preview_btn" width="86" /> diff --git a/indra/newview/skins/default/xui/fr/floater_report_abuse.xml b/indra/newview/skins/default/xui/fr/floater_report_abuse.xml index 0fce7a15cc29a9be40d66670bc640eb393337f40..628f308f889b84d90986fe726f71c72cb43e7403 100644 --- a/indra/newview/skins/default/xui/fr/floater_report_abuse.xml +++ b/indra/newview/skins/default/xui/fr/floater_report_abuse.xml @@ -37,51 +37,123 @@ Hendrerit Vulputate </text> <combo_box name="category_combo" tool_tip="Choisissez la catégorie qui décrit le mieux ce rapport"> - <combo_box.item name="Select_category" label="Sélectionnez une catégorie"/> - <combo_box.item name="Age__Age_play" label="Âge > « Age play »"/> - <combo_box.item name="Age__Adult_resident_on_Teen_Second_Life" label="Âge > Résident adulte sur Second Life pour adolescents"/> - - - - <combo_box.item name="Assault__Combat_sandbox___unsafe_area" label="Assaut > Bac à sable utilisé pour des combats/zone non sécurisée"/> - <combo_box.item name="Assault__Safe_area" label="Assaut > Zone sécurisée"/> - <combo_box.item name="Assault__Weapons_testing_sandbox" label="Assaut > Bac à sable pour tests d'armes à feu"/> - <combo_box.item name="Commerce__Failure_to_deliver_product_or_service" label="Commerce > Incapacité à fournir un produit ou service"/> - <combo_box.item name="Disclosure__Real_world_information" label="Divulgation > Informations sur la vie réelle"/> - <combo_box.item name="Disclosure__Remotely_monitoring chat" label="Divulgation > Écoute d'un chat à distance"/> - <combo_box.item name="Disclosure__Second_Life_information_chat_IMs" label="Divulgation > Informations sur Second Life/chat/IM"/> - <combo_box.item name="Disturbing_the_peace__Unfair_use_of_region_resources" label="Trouble de la paix > Utilisation inadéquate des ressources de la région"/> - <combo_box.item name="Disturbing_the_peace__Excessive_scripted_objects" label="Trouble de la paix > Nombre d'objets scriptés excessif"/> - <combo_box.item name="Disturbing_the_peace__Object_littering" label="Trouble de la paix > Abandon d'objets"/> - <combo_box.item name="Disturbing_the_peace__Repetitive_spam" label="Trouble de la paix > Spam à répétition"/> - <combo_box.item name="Disturbing_the_peace__Unwanted_advert_spam" label="Trouble de la paix > Spam à caractère commercial"/> - <combo_box.item name="Fraud__L$" label="Fraude > L$"/> - <combo_box.item name="Fraud__Land" label="Fraude > Terrain"/> - <combo_box.item name="Fraud__Pyramid_scheme_or_chain_letter" label="Fraude > Vente pyramidale ou lettre-chaîne"/> - <combo_box.item name="Fraud__US$" label="Fraude > US$"/> - <combo_box.item name="Harassment__Advert_farms___visual_spam" label="Harcèlement > Spam visuel"/> - <combo_box.item name="Harassment__Defaming_individuals_or_groups" label="Harcèlement > Diffamation envers des individus ou des groupes"/> - <combo_box.item name="Harassment__Impeding_movement" label="Harcèlement > Immobilisation"/> - <combo_box.item name="Harassment__Sexual_harassment" label="Harcèlement > Harcèlement sexuel"/> - <combo_box.item name="Harassment__Solicting_inciting_others_to_violate_ToS" label="Harcèlement > Incitation à enfreindre les Conditions d'utilisation"/> - <combo_box.item name="Harassment__Verbal_abuse" label="Harcèlement > Abus verbal"/> - <combo_box.item name="Indecency__Broadly_offensive_content_or_conduct" label="Indécence > Contenu ou comportement offensifs"/> - - - - <combo_box.item name="Indecency__Inappropriate_avatar_name" label="Indécence > Nom d'avatar inapproprié"/> - - - - <combo_box.item name="Intellectual_property_infringement_Content_Removal" label="Violation de droits de propriété intellectuelle > Suppression de contenu"/> - <combo_box.item name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit" label="Violation de droits de propriété intellectuelle > CopyBot ou exploitation abusive des permissions"/> - <combo_box.item name="Intolerance" label="Intolérance"/> - <combo_box.item name="Land__Abuse_of_sandbox_resources" label="Terrain > Utilisation abusive des ressources du bac à sable"/> - <combo_box.item name="Land__Encroachment__Objects_textures" label="Terrain > Empiètement > Objets/textures"/> - <combo_box.item name="Land__Encroachment__Particles" label="Terrain > Empiètement > Particules"/> - <combo_box.item name="Land__Encroachment__Trees_plants" label="Terrain > Empiètement > Arbres/plantes"/> - <combo_box.item name="Wagering_gambling" label="Paris/jeux d'argent"/> - <combo_box.item name="Other" label="Autre"/> + <combo_item name="Select_category"> + Sélectionnez une catégorie + </combo_item> + <combo_item name="Age__Age_play"> + Âge > « Age play » + </combo_item> + <combo_item name="Age__Adult_resident_on_Teen_Second_Life"> + Âge > Résident adulte sur Second Life pour adolescents + </combo_item> + <combo_item name="Age__Underage_resident_outside_of_Teen_Second_Life"> + Âge > Resident mineur en dehors de Teen Second Life + </combo_item> + <combo_item name="Assault__Combat_sandbox___unsafe_area"> + Assaut > Bac à sable utilisé pour des combats/zone non sécurisée + </combo_item> + <combo_item name="Assault__Safe_area"> + Assaut > Zone sécurisée + </combo_item> + <combo_item name="Assault__Weapons_testing_sandbox"> + Assaut > Bac à sable pour tests d'armes à feu + </combo_item> + <combo_item name="Commerce__Failure_to_deliver_product_or_service"> + Commerce > Incapacité à fournir un produit ou service + </combo_item> + <combo_item name="Disclosure__Real_world_information"> + Divulgation > Informations sur la vie réelle + </combo_item> + <combo_item name="Disclosure__Remotely_monitoring chat"> + Divulgation > Écoute d'un chat à distance + </combo_item> + <combo_item name="Disclosure__Second_Life_information_chat_IMs"> + Divulgation > Informations sur Second Life/chat/IM + </combo_item> + <combo_item name="Disturbing_the_peace__Unfair_use_of_region_resources"> + Trouble de la paix > Utilisation inadéquate des ressources de la région + </combo_item> + <combo_item name="Disturbing_the_peace__Excessive_scripted_objects"> + Trouble de la paix > Nombre d'objets scriptés excessif + </combo_item> + <combo_item name="Disturbing_the_peace__Object_littering"> + Trouble de la paix > Abandon d'objets + </combo_item> + <combo_item name="Disturbing_the_peace__Repetitive_spam"> + Trouble de la paix > Spam à répétition + </combo_item> + <combo_item name="Disturbing_the_peace__Unwanted_advert_spam"> + Trouble de la paix > Spam à caractère commercial + </combo_item> + <combo_item name="Fraud__L$"> + Fraude > L$ + </combo_item> + <combo_item name="Fraud__Land"> + Fraude > Terrain + </combo_item> + <combo_item name="Fraud__Pyramid_scheme_or_chain_letter"> + Fraude > Vente pyramidale ou lettre-chaîne + </combo_item> + <combo_item name="Fraud__US$"> + Fraude > US$ + </combo_item> + <combo_item name="Harassment__Advert_farms___visual_spam"> + Harcèlement > Spam visuel + </combo_item> + <combo_item name="Harassment__Defaming_individuals_or_groups"> + Harcèlement > Diffamation envers des individus ou des groupes + </combo_item> + <combo_item name="Harassment__Impeding_movement"> + Harcèlement > Immobilisation + </combo_item> + <combo_item name="Harassment__Sexual_harassment"> + Harcèlement > Harcèlement sexuel + </combo_item> + <combo_item name="Harassment__Solicting_inciting_others_to_violate_ToS"> + Harcèlement > Incitation à enfreindre les Conditions d'utilisation + </combo_item> + <combo_item name="Harassment__Verbal_abuse"> + Harcèlement > Abus verbal + </combo_item> + <combo_item name="Indecency__Broadly_offensive_content_or_conduct"> + Indécence > Contenu ou comportement offensifs + </combo_item> + <combo_item name="Indecency__Inappropriate_avatar_name"> + Indécence > Nom d'avatar inapproprié + </combo_item> + <combo_item name="Indecency__Mature_content_in_PG_region"> + Indécence > Contenu ou conduite inappropriés dans une région PG + </combo_item> + <combo_item name="Indecency__Inappropriate_content_in_Mature_region"> + Indécence > Contenu ou conduite inappropriés dans une région Mature + </combo_item> + <combo_item name="Intellectual_property_infringement_Content_Removal"> + Violation de droits de propriété intellectuelle > Suppression de contenu + </combo_item> + <combo_item name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit"> + Violation de droits de propriété intellectuelle > CopyBot ou exploitation abusive des droits + </combo_item> + <combo_item name="Intolerance"> + Intolérance + </combo_item> + <combo_item name="Land__Abuse_of_sandbox_resources"> + Terrain > Utilisation abusive des ressources du bac à sable + </combo_item> + <combo_item name="Land__Encroachment__Objects_textures"> + Terrain > Empiètement > Objets/textures + </combo_item> + <combo_item name="Land__Encroachment__Particles"> + Terrain > Empiètement > Particules + </combo_item> + <combo_item name="Land__Encroachment__Trees_plants"> + Terrain > Empiètement > Arbres/plantes + </combo_item> + <combo_item name="Wagering_gambling"> + Paris/jeux d'argent + </combo_item> + <combo_item name="Other"> + Autre + </combo_item> </combo_box> <text name="abuser_name_title"> Nom du contrevenant : diff --git a/indra/newview/skins/default/xui/fr/floater_sell_land.xml b/indra/newview/skins/default/xui/fr/floater_sell_land.xml index 186a2786714e36229790b4b3a6ddc1965dbff3b1..6ef12fab4a6d1fe8cd906b711b7c2361f705d60a 100644 --- a/indra/newview/skins/default/xui/fr/floater_sell_land.xml +++ b/indra/newview/skins/default/xui/fr/floater_sell_land.xml @@ -1,15 +1,15 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="sell land" title="Vendre terrain"> - <text name="info_parcel_label" width="48"> + <text name="info_parcel_label"> Parcelle : </text> - <text name="info_parcel" left="66"> + <text name="info_parcel"> PARCEL NAME </text> <text name="info_size_label"> Taille : </text> - <text name="info_size" left="66"> + <text name="info_size"> [AREA] m² </text> <text name="info_action" bottom_delta="-60"> @@ -50,16 +50,12 @@ spécifique. de propriétaire. </text> <radio_group name="sell_objects" right="430" bottom_delta="-54"> - <radio_item name="no"> - Non, rester le propriétaire des objets - </radio_item> - <radio_item name="yes"> - Oui, vendre les objets avec le terrain - </radio_item> + <radio_item name="no" label="Non, rester le propriétaire des objets" /> + <radio_item name="yes" label="Oui, vendre les objets avec le terrain" /> </radio_group> <button label="Afficher les objets" name="show_objects" right="420" width="120"/> <text name="nag_message_label" bottom_delta="-30"> - Rappel : Toute vente est définitive. + Rappel : toute vente est définitive. </text> <button label="Mettre le terrain en vente" name="sell_btn" width="165"/> <button label="Annuler" name="cancel_btn"/> diff --git a/indra/newview/skins/default/xui/fr/floater_snapshot.xml b/indra/newview/skins/default/xui/fr/floater_snapshot.xml index e6f9c27e9747e3cb7f0947cde6b46791de48e1b9..90feea91e092228ac02ff939c63a2979989b13b5 100644 --- a/indra/newview/skins/default/xui/fr/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/fr/floater_snapshot.xml @@ -4,15 +4,9 @@ Destination de la photo </text> <radio_group label="Type de photo" name="snapshot_type_radio" width="228"> - <radio_item name="postcard"> - Envoyer par e-mail - </radio_item> - <radio_item name="texture"> - Enregistrer dans votre inventaire ([AMOUNT] L$) - </radio_item> - <radio_item name="local"> - Enregistrer sur votre disque dur - </radio_item> + <radio_item name="postcard" label="Envoyer par e-mail" /> + <radio_item name="texture" label="Enregistrer dans votre inventaire ([AMOUNT] L$)" /> + <radio_item name="local" label="Enregistrer sur votre disque dur" /> </radio_group> <button label="Plus >>" name="more_btn" tool_tip="Options avancées"/> <button label="<< Moins" name="less_btn" tool_tip="Options avancées"/> diff --git a/indra/newview/skins/default/xui/fr/floater_sound_preview.xml b/indra/newview/skins/default/xui/fr/floater_sound_preview.xml index eb2383b1bcf11b5f96f9afeda62e1d73b971130d..1ab3a4a7147e65746a5ee7968e6ba7894747d9de 100644 --- a/indra/newview/skins/default/xui/fr/floater_sound_preview.xml +++ b/indra/newview/skins/default/xui/fr/floater_sound_preview.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Name/Description" title="sound.wav"> +<floater name="Sound Preview" title="sound.wav"> <text name="name_label"> Nom : </text> @@ -12,17 +12,9 @@ Débit (kbps) : </text> <radio_group name="bitrate"> - <radio_item name="32"> - 32 - </radio_item> - <radio_item name="64"> - 64 - </radio_item> - <radio_item name="96"> - 96 - </radio_item> - <radio_item name="128"> - 128 - </radio_item> + <radio_item name="32" label="32" /> + <radio_item name="64" label="64" /> + <radio_item name="96" label="96" /> + <radio_item name="128" label="128" /> </radio_group> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_statistics.xml b/indra/newview/skins/default/xui/fr/floater_statistics.xml new file mode 100644 index 0000000000000000000000000000000000000000..0768c3ace4998b55d0148896d309b2c47a88f9ea --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_statistics.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="stats floater" title="Statistiques"/> diff --git a/indra/newview/skins/default/xui/fr/floater_tools.xml b/indra/newview/skins/default/xui/fr/floater_tools.xml index a9b7e79ba6930113d375aa4d071bb01cac13465f..8c462fc6ecec9cfef401b7d1da5de340298a6c33 100644 --- a/indra/newview/skins/default/xui/fr/floater_tools.xml +++ b/indra/newview/skins/default/xui/fr/floater_tools.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="toolbox floater" title=""> +<floater name="toolbox floater" title="" short_title="Construire"> <button label="" label_selected="" name="button focus" tool_tip="Mise au point"/> <button label="" label_selected="" name="button move" tool_tip="Déplacer"/> <button label="" label_selected="" name="button edit" tool_tip="Modifier"/> @@ -29,11 +29,10 @@ <check_box label="Utiliser la grille" name="checkbox snap to grid"/> <button label="Options..." label_selected="Options..." name="Options..."/> <text name="text status"> - Faîtes glisser pour déplacer, Maj-faire glisser pour - copier. + Glissez pour déplacer, Maj-glissez pour copier. </text> <button label="" label_selected="" name="ToolCube" tool_tip="Cube"/> - <button label="" label_selected="" name="ToolPrism" tool_tip="Prisme"/> + <button label="" label_selected="" name="ToolPrism" tool_tip="Prisme droit"/> <button label="" label_selected="" name="ToolPyramid" tool_tip="Pyramide"/> <button label="" label_selected="" name="ToolTetrahedron" tool_tip="Tétraèdre"/> <button label="" label_selected="" name="ToolCylinder" tool_tip="Cylindre"/> @@ -58,7 +57,7 @@ <check_box label="Lisser" name="radio smooth"/> <check_box label="Bosseler" name="radio noise"/> <check_box label="Annuler modification" name="radio revert"/> - <button label="Appliquer" label_selected="Appliquer" name="button apply to selection" tool_tip="Modifier le terrain sélectionné"/> + <button label="Appliquer" label_selected="Appliquer" name="button apply to selection" tool_tip="Modifier le terrain sélectionné" left="176"/> <text name="Bulldozer:"> Bulldozer : </text> @@ -104,12 +103,12 @@ </text> <button label="Définir..." label_selected="Définir..." name="button set group"/> <text name="Permissions:"> - Autorisations : + Droits : </text> <text name="perm_modify"> Vous pouvez modifier cet objet. </text> - <check_box label="Partager avec le groupe" name="checkbox share with group" tool_tip="Autoriser les membres du groupe à déplacer, copier et supprimer."/> + <check_box label="Partager avec le groupe" name="checkbox share with group" tool_tip="Autorisez tous les membres du groupe choisi à utiliser et à partager vos droits pour cet objet. Pour activer les restrictions de rôles, vous devez d'abord cliquer sur Transférer."/> <string name="text deed continued"> Transférer... </string> @@ -125,15 +124,9 @@ Prix : L$ </text> <radio_group name="sale type"> - <radio_item name="Original"> - Original - </radio_item> - <radio_item name="Copy"> - Copie - </radio_item> - <radio_item name="Contents"> - Contenus - </radio_item> + <radio_item name="Original" label="Original" /> + <radio_item name="Copy" label="Copie" /> + <radio_item name="Contents" label="Contenus" /> </radio_group> <text name="Next owner can:"> Le prochain propriétaire pourra : @@ -439,7 +432,7 @@ </panel> <panel label="Contenu" name="Contents"> <button label="Nouveau script" label_selected="Nouveau script..." name="button new script"/> - <button label="Permissions..." name="button permissions"/> + <button label="Droits..." name="button permissions"/> </panel> </tab_container> <panel name="land info panel"> @@ -452,43 +445,43 @@ <text name="label_area"> Surface : [AREA] m² </text> - <button label="À propos du terrain..." label_selected="À propos du terrain..." name="button about land" width="132"/> + <button label="À propos du terrain..." label_selected="À propos du terrain..." name="button about land" width="142"/> <check_box label="Afficher les propriétaires" name="checkbox show owners" tool_tip="Colorie les parcelles en fonction de leur propriétaire"/> - <button label="?" label_selected="?" name="button show owners help"/> + <button label="?" label_selected="?" name="button show owners help" left_delta="154"/> <text name="label_parcel_modify"> Modifier la parcelle </text> - <button label="Diviser..." label_selected="Diviser..." name="button subdivide land" width="132"/> - <button label="Fusionner..." label_selected="Fusionner..." name="button join land" width="132"/> + <button label="Diviser..." label_selected="Diviser..." name="button subdivide land" width="142"/> + <button label="Fusionner..." label_selected="Fusionner..." name="button join land" width="142"/> <text name="label_parcel_trans"> Transactions </text> - <button label="Acheter le terrain..." label_selected="Acheter le terrain..." name="button buy land" width="132"/> - <button label="Abandonner le terrain..." label_selected="Abandonner le terrain..." name="button abandon land" width="132"/> + <button label="Acheter le terrain..." label_selected="Acheter le terrain..." name="button buy land" width="142"/> + <button label="Abandonner le terrain..." label_selected="Abandonner le terrain..." name="button abandon land" width="142"/> </panel> <string name="status_rotate"> Pour faire tourner l'objet, faîtes glisser les bandes de couleur. </string> <string name="status_scale"> - Pour étirer le côté sélectionné, cliquez et faites glisser + Pour étirer le côté sélectionné, cliquez et faites glisser. </string> <string name="status_move"> - Faîtes glisser pour déplacer, Maj-faire glisser pour copier. + Glissez pour déplacer, Maj-glissez pour copier. </string> <string name="status_modifyland"> - Cliquez et maintenez pour modifier le terrain + Cliquez et maintenez pour modifier le terrain. </string> <string name="status_camera"> - Cliquez et faites glisser pour changer l'affichage + Cliquez et faites glisser pour changer l'affichage. </string> <string name="status_grab"> - Faîtes glisser pour déplacer, appuyez sur Ctrl pour soulever, Crtl-Maj pour pivoter + Glisser pour déplacer, Ctrl pour soulever, Crtl-Maj pour pivoter. </string> <string name="status_place"> - Cliquez dans le monde pour construire + Cliquez dans le monde pour construire. </string> <string name="status_selectland"> - Cliquez et faites glisser pour sélectionner le terrain + Cliquez et faites glisser pour sélectionner le terrain. </string> <string name="grid_screen_text"> Écran diff --git a/indra/newview/skins/default/xui/fr/floater_top_objects.xml b/indra/newview/skins/default/xui/fr/floater_top_objects.xml index 3be281b6c2b574832453656bc0e3ca6acebad5ba..69a3d0cd18ad2d469baeef7d833c732ed9ae5957 100644 --- a/indra/newview/skins/default/xui/fr/floater_top_objects.xml +++ b/indra/newview/skins/default/xui/fr/floater_top_objects.xml @@ -16,17 +16,17 @@ </text> <button label="Afficher balise" name="show_beacon_btn"/> <text name="obj_name_text"> - Nom : + Objet : </text> <button label="Filtre" name="filter_object_btn"/> <text name="owner_name_text"> - Nom : + Propriétaire : </text> <button label="Filtre" name="filter_owner_btn"/> <button label="Renvoyer" name="return_selected_btn"/> - <button label="Renvoyer tous" name="return_all_btn"/> + <button label="Tout renvoyer" name="return_all_btn"/> <button label="Désactiver" name="disable_selected_btn"/> - <button label="Désactiver tous" name="disable_all_btn"/> + <button label="Tout désactiver" name="disable_all_btn"/> <button label="Rafraîchir" name="refresh_btn"/> <string name="top_scripts_title"> Scripts principaux @@ -41,10 +41,10 @@ Heure Mono </string> <string name="top_colliders_title"> - Objets souvent responsables de collision + Collisions les plus consommatrices </string> <string name="top_colliders_text"> - [COUNT] objets souvent responsables de collisions + [COUNT] collisions les plus consommatrices </string> <string name="colliders_score_label"> Score diff --git a/indra/newview/skins/default/xui/fr/floater_tos.xml b/indra/newview/skins/default/xui/fr/floater_tos.xml index b77838d92ce13cdc418b85e892da637e3535ae6d..dc4bd8cf2bb0e155f1e764e7e9a5240eb2db3cdf 100644 --- a/indra/newview/skins/default/xui/fr/floater_tos.xml +++ b/indra/newview/skins/default/xui/fr/floater_tos.xml @@ -3,12 +3,8 @@ <button label="Continuer" label_selected="Continuer" name="Continue" /> <button label="Annuler" label_selected="Annuler" name="Cancel" /> <radio_group name="tos_agreement"> - <radio_item name="radio_disagree"> - Je n'accepte pas les Conditions Générales d'Utilisation - </radio_item> - <radio_item name="radio_agree"> - J'accepte les Conditions Générales d'Utilisation - </radio_item> + <radio_item name="radio_disagree" label="Je n'accepte pas les Conditions Générales d'Utilisation" /> + <radio_item name="radio_agree" label="J'accepte les Conditions Générales d'Utilisation" /> </radio_group> <text name="tos_title"> Acceptation des Conditions Générales d'Utilisation diff --git a/indra/newview/skins/default/xui/fr/floater_world_map.xml b/indra/newview/skins/default/xui/fr/floater_world_map.xml index 642a258a6f4eccf1d1a2c7a1fb025f4aa095eb03..d7ffe9205d96311463eab2f2a52234b53e5dd81d 100644 --- a/indra/newview/skins/default/xui/fr/floater_world_map.xml +++ b/indra/newview/skins/default/xui/fr/floater_world_map.xml @@ -4,14 +4,6 @@ <panel label="Objets" name="objects_mapview" width="953"/> <panel label="Terrain" name="terrain_mapview" width="953"/> </tab_container> - <icon left="973" name="square"/> - <text name="land_for_sale_label"> - Terrain à vendre - </text> - <icon left="1113" name="square2"/> - <text name="auction_label"> - Terrain aux enchères - </text> <icon left="973" name="self"/> <text name="you_label"> Vous @@ -20,38 +12,32 @@ <text name="home_label"> Domicile </text> - <button label="Aller chez moi" label_selected="Aller chez moi" name="Go Home" tool_tip="Vous téléporte à votre domicile"/> - <text name="classifieds_label"> - Petites annonces + <icon left="973" name="square2"/> + <text name="auction_label"> + Terrain aux enchères </text> - <icon left="977" name="person"/> - <text name="person_label"> - Résident + <icon left="1105" name="square"/> + <text name="land_for_sale_label"> + Terrain à vendre </text> - <check_box label=" " left_delta="60" name="people_chk"/> + <button label="Aller chez moi" label_selected="Aller chez moi" name="Go Home" tool_tip="Vous téléporte à votre domicile"/> + <icon left="977" name="person"/> + <check_box label="Résident" name="people_chk"/> <icon left="973" name="infohub"/> - <text name="infohub_label"> - Infohub - </text> - <check_box label=" " left_delta="60" name="infohub_chk"/> + <check_box label="Infohub" name="infohub_chk"/> <icon left="973" name="telehub"/> - <text name="telehub_label"> - Téléhub - </text> - <check_box label=" " left_delta="60" name="telehubchk"/> - <icon left="1113" name="landforsale"/> - <text name="land_for_sale_label2"> - Terrain à vendre - </text> - <check_box label=" " name="land_for_sale_chk"/> - <icon left="1113" name="event"/> - <text name="events_label"> - Événements + <check_box label="Téléhub" name="telehubchk"/> + <icon left="973" name="landforsale"/> + <check_box label="Terrain à vendre" name="land_for_sale_chk"/> + <text name="events_label" left="1099"> + Événements : </text> - <check_box label=" " name="event_chk"/> - <icon left="1113" name="events_mature_icon"/> - - <check_box name="event_mature_chk"/> + <icon left="1121" name="event"/> + <check_box label="PG" name="event_chk"/> + <icon left="1121" name="events_mature_icon"/> + <check_box label="Mature" name="event_mature_chk"/> + <icon left="1121" name="events_adult_icon"/> + <check_box label="Adult" name="event_adult_chk"/> <icon left="973" name="avatar_icon"/> <combo_box label="Amis connectés" name="friend combo" tool_tip="Ami à afficher sur la carte" width="232"> <combo_box.item name="none_selected" label="Amis connectés" /> @@ -73,13 +59,13 @@ <text left="973" name="location_label"> Emplacement : </text> - <spinner left="993" name="spin x" tool_tip="Coordonnées des X du lieu à afficher sur la carte"/> - <spinner left="993" name="spin y" tool_tip="Coordonnées des Y du lieu à afficher sur la carte"/> - <spinner left="993" name="spin z" tool_tip="Coordonnées des Z du lieu à afficher sur la carte"/> + <spinner left="1078" name="spin x" tool_tip="Coordonnées des X du lieu à afficher sur la carte"/> + <spinner name="spin y" tool_tip="Coordonnées des Y du lieu à afficher sur la carte"/> + <spinner name="spin z" tool_tip="Coordonnées des Z du lieu à afficher sur la carte"/> <button label="Téléporter" label_selected="Téléporter" left="-270" name="Teleport" tool_tip="Téléporter à l'endroit sélectionné"/> <button label="Afficher la destination" label_selected="Afficher la destination" name="Show Destination" tool_tip="Centrer la carte sur l'endroit sélectionné" width="165"/> <button label="Effacer" label_selected="Effacer" left="-270" name="Clear" tool_tip="Arrêter de suivre"/> <button label="Afficher mon emplacement" label_selected="Afficher mon emplacement" name="Show My Location" tool_tip="Centrer la carte sur l'emplacement de votre avatar" width="165"/> - <button label="Copier la SLURL dans le presse-papier" left="-270" name="copy_slurl" tool_tip="Copier l'emplacement actuel comme SLURL pour l'utiliser sur le Web." width="262"/> + <button label="Copier la SLURL dans le presse-papiers" left="-270" name="copy_slurl" tool_tip="Copier l'emplacement actuel comme SLURL pour l'utiliser sur le Web." width="262"/> <slider label="Zoom" left="-270" name="zoom slider"/> </floater> diff --git a/indra/newview/skins/default/xui/fr/menu_login.xml b/indra/newview/skins/default/xui/fr/menu_login.xml index 3b904b6802269569dd230abad6b28002c97257ea..b3169714c348b82f4b69c540019c074a488a6221 100644 --- a/indra/newview/skins/default/xui/fr/menu_login.xml +++ b/indra/newview/skins/default/xui/fr/menu_login.xml @@ -7,7 +7,7 @@ <menu_item_call label="Préférences..." name="Preferences..." /> </menu> <menu label="Aide" name="Help"> - <menu_item_call label="Aide Second Life" name="Second Life Help" /> + <menu_item_call label="Aide de Second Life" name="Second Life Help" /> <menu_item_call label="À propos de Second Life..." name="About Second Life..." /> </menu> </menu_bar> diff --git a/indra/newview/skins/default/xui/fr/menu_mini_map.xml b/indra/newview/skins/default/xui/fr/menu_mini_map.xml new file mode 100644 index 0000000000000000000000000000000000000000..36107885f4ca47f433576d371b46a2fb2b81392d --- /dev/null +++ b/indra/newview/skins/default/xui/fr/menu_mini_map.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="popup"> + <menu_item_call label="Zoom rapproché" name="Zoom Close"/> + <menu_item_call label="Zoom moyen" name="Zoom Medium"/> + <menu_item_call label="Zoom éloigné" name="Zoom Far"/> + <menu_item_call label="Arrêter de suivre" name="Stop Tracking"/> + <menu_item_call label="Profil..." name="Profile"/> +</menu> diff --git a/indra/newview/skins/default/xui/fr/menu_viewer.xml b/indra/newview/skins/default/xui/fr/menu_viewer.xml index f0a4541e6b0a8464d3b264fc33c62cd7c16bc89f..959cc5764c696392ecb0aad8b54ede4b06ef8cae 100644 --- a/indra/newview/skins/default/xui/fr/menu_viewer.xml +++ b/indra/newview/skins/default/xui/fr/menu_viewer.xml @@ -8,7 +8,7 @@ <menu_item_call label="Animation ([COST] L$)..." name="Upload Animation"/> <menu_item_call label="Lot ([COST] L$ par fichier)..." name="Bulk Upload"/> <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="Définir les permissions par défaut..." name="perm prefs"/> + <menu_item_call label="Définir les droits par défaut..." name="perm prefs"/> </menu> <menu_item_separator label="-----------" name="separator"/> <menu_item_call label="Fermer la fenêtre" name="Close Window"/> @@ -83,6 +83,7 @@ <menu_item_separator label="-----------" name="separator3"/> <menu_item_check label="Statistiques" name="Statistics Bar"/> <menu_item_check label="Limites des parcelles" name="Property Lines"/> + <menu_item_check label="Barrières d'interdiction d'accès" name="Banlines"/> <menu_item_check label="Propriétaires fonciers" name="Land Owners"/> <menu_item_separator label="-----------" name="separator4"/> <menu label="Infobulles" name="Hover Tips"> @@ -170,7 +171,6 @@ <menu_item_call label="Zoom sur la sélection" name="Zoom to Selection"/> <menu_item_call label="Acheter l'objet" name="Menu Object Take"/> <menu_item_call label="Prendre une copie" name="Take Copy"/> - <menu_item_call label="Remplacer l'objet dans mon inventaire" name="Save Object Back to My Inventory"/> <menu_item_call label="Remplacer l'objet dans le contenu de l'objet" name="Save Object Back to Object Contents"/> <menu_item_separator label="-----------" name="separator6"/> <menu_item_call label="Afficher la fenêtre d'alertes/erreurs de script" name="Show Script Warning/Error Window"/> @@ -183,12 +183,14 @@ <menu_item_call label="Désactiver les scripts dans la sélection" name="Set Scripts to Not Running in Selection"/> </menu> <menu label="Aide" name="Help"> - <menu_item_call label="Aide Second Life" name="Second Life Help"/> + <menu_item_call label="Aide de Second Life" name="Second Life Help"/> <menu_item_call label="Didacticiel" name="Tutorial"/> <menu_item_separator label="-----------" name="separator"/> <menu_item_call label="Blog officiel..." name="Official Linden Blog..."/> <menu_item_separator label="-----------" name="separator2"/> - <menu_item_call label="Aide sur le LSL..." name="Scripting Portal..."/> + <menu_item_call label="Aide sur le LSL..." name="Scripting Portal..."> + <on_click name="ScriptingPortal_url" userdata="WebLaunchLSLWiki,http://wiki.secondlife.com/wiki/LSL_Portal/fr" /> + </menu_item_call> <menu_item_separator label="-----------" name="separator3"/> <menu_item_call label="Signaler une infraction..." name="Report Abuse..."/> <menu_item_call label="Collisions, coups et bousculades…" name="Bumps, Pushes &amp; Hits..."/> @@ -196,9 +198,13 @@ <menu_item_separator label="-----------" name="separator7"/> <menu label="Signaler des bugs" name="Bug Reporting"> <menu_item_call label="Ouvrir un JIRA..." name="Public Issue Tracker..."/> - <menu_item_call label="Comment utiliser JIRA ?" name="Publc Issue Tracker Help..."/> + <menu_item_call label="Comment utiliser JIRA ?" name="Publc Issue Tracker Help..."> + <on_click name="PublicIssueTrackerHelp_url" userdata="WebLaunchPublicIssueHelp,http://wiki.secondlife.com/wiki/Issue_tracker/fr" /> + </menu_item_call> <menu_item_separator label="-----------" name="separator7"/> - <menu_item_call label="Comment signaler des bugs ?" name="Bug Reporing 101..."/> + <menu_item_call label="Comment signaler des bugs ?" name="Bug Reporing 101..."> + <on_click name="BugReporting101_url" userdata="WebLaunchBugReport101,http://wiki.secondlife.com/wiki/Bug_Reporting_101/fr"/> + </menu_item_call> <menu_item_call label="Comment signaler un problème de sécurité ?" name="Security Issues..."> <on_click name="SecurityIssues_url" userdata="WebLaunchSecurityIssues,http://wiki.secondlife.com/wiki/Security_issues/fr"/> </menu_item_call> diff --git a/indra/newview/skins/default/xui/fr/notifications.xml b/indra/newview/skins/default/xui/fr/notifications.xml index f40ed132038bc9313e122f2d7a1c77b4148668b6..ac8d0cc60508dad315e2c8d1ca066b3736d6f34b 100644 --- a/indra/newview/skins/default/xui/fr/notifications.xml +++ b/indra/newview/skins/default/xui/fr/notifications.xml @@ -1,5732 +1,3009 @@ -<?xml version="1.0" ?><notifications> - - <global name="skipnexttime"> - - Ne plus afficher - </global> - - <global name="alwayschoose"> - - Toujours choisir cette option - </global> - - <template name="okbutton"> - <form> - <button - name="OK" - text="$yestext"/> - </form> - </template> - - <template name="okignore"> - <form> - <button - name="OK" - text="$yestext"/> - <ignore text="$ignoretext"/> - </form> - </template> - - <template name="okcancelbuttons"> - <form> - <button - name="OK" - text="$yestext"/> - <button - name="Cancel" - text="$notext"/> - </form> - </template> - - <template name="okcancelignore"> - <form> - <button - name="OK" - text="$yestext"/> - <button - name="Cancel" - text="$notext"/> - <ignore text="$ignoretext"/> - </form> - </template> - - <template name="okhelpbuttons"> - <form> - <button - name="OK" - text="$yestext"/> - <button - name="Help" - text="$helptext"/> - </form> - </template> - - <template name="yesnocancelbuttons"> - <form> - <button - name="Yes" - text="$yestext"/> - <button - name="No" - text="$notext"/> - <button - name="Cancel" - text="$canceltext"/> - </form> - </template> - - <notification - functor="GenericAcknowledge" - - name="MissingAlert" - > -Le erreur '[_NAME]' n'est pas dans le fichier notifications.xml. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="FloaterNotFound" - > -Erreur floater : impossible de trouver les contrôles suivants : - -[CONTROLS] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="TutorialNotFound" - > -Aucun didacticiel n'est disponible actuellement. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="GenericAlert" - > -[MESSAGE] - </notification> - - <notification - - name="GenericAlertYesCancel" - > -[MESSAGE] - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="Oui"/> - </notification> - - <notification - - name="WearableSave" - > -Enregistrer les changements dans la partie du corps/les habits actuels ? - <usetemplate - canceltext="Cancel" - name="yesnocancelbuttons" - notext="Ne pas enregistrer" - yestext="Enregistrer"/> - </notification> - - <notification - - name="CompileQueueSaveText" - > -Une erreur est survenue lors du chargement du texte pour un script, suite au problème suivant : [REASON]. Veuillez réessayer ultérieurement. - </notification> - - <notification - - name="CompileQueueSaveBytecode" - > -Une erreur est survenue lors du chargement du script compilé, suite au problème suivant : [REASON]. Veuillez réessayer ultérieurement. - </notification> - - <notification - - name="WriteAnimationFail" - > -Une erreur est survenue lors de l'écriture des données d'animation. Veuillez réessayer ultérieurement. - </notification> - - <notification - - name="UploadAuctionSnapshotFail" - > -Un problème est survenu lors du chargement du script compilé, suite au problème suivant : [REASON] - </notification> - - <notification - - name="UnableToViewContentsMoreThanOne" - > -Impossible d'afficher les contenus de plus d'un objet à la fois. -Veuillez ne sélectionner qu'un seul objet. - </notification> - - <notification - - name="SaveClothingBodyChanges" - > -Enregistrer tous les changements dans les habits/parties du corps ? - <usetemplate - canceltext="Annuler" - name="yesnocancelbuttons" - notext="Ne pas enregistrer" - yestext="Tout enregistrer"/> - </notification> - - <notification - - name="GrantModifyRights" - > -Lorsque vous accordez des droits d'édition à un autre résident, vous lui permettez de changer, supprimer ou prendre n'importe lequel de vos objets dans le Monde. Réfléchissez bien avant d'accorder ces droits. -Souhaitez-vous accorder des droits d'édition à [FIRST_NAME] [LAST_NAME] ? - <usetemplate - name="okcancelbuttons" - notext="Non" - yestext="Oui"/> - </notification> - - <notification - - name="GrantModifyRightsMultiple" - > -Lorsque vous accordez des droits d'édition à un autre résident, vous lui permettez de changer n'importe lequel de vos objets dans le Monde. Réfléchissez bien avant d'accorder ces droits. -Souhaitez-vous accorder des droits d'édition aux résidents selectionnés ? - <usetemplate - name="okcancelbuttons" - notext="Non" - yestext="Oui"/> - </notification> - - <notification - - name="RevokeModifyRights" - > -Souhaitez-vous retirer les droits d'édition à [FIRST_NAME] [LAST_NAME] ? - <usetemplate - name="okcancelbuttons" - notext="Non" - yestext="Oui"/> - </notification> - - <notification - - name="RevokeModifyRightsMultiple" - > -Souhaitez-vous retirer les droits d'édition aux résidents selectionnés ? - <usetemplate - name="okcancelbuttons" - notext="Non" - yestext="Oui"/> - </notification> - - <notification - - name="UnableToCreateGroup" - > -Impossible de créer le groupe. -[MESSAGE] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="PanelGroupApply" - > -[NEEDS_APPLY_MESSAGE] -[WANT_APPLY_MESSAGE] - <usetemplate - canceltext="Annuler" - name="yesnocancelbuttons" - notext="Ignorer les modifications" - yestext="Enregistrer les modifications"/> - </notification> - - <notification - - name="MustSpecifyGroupNoticeSubject" - > -Pour envoyer une notice au groupe, vous devez indiquer un sujet. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="AddGroupOwnerWarning" - > -Vous êtes sur le point d'ajouter des membres du groupe dans le rôle de [ROLE_NAME]. -Les membres ne peuvent pas être destitués de ce rôle. -Ils doivent donner eux-mêmes leur démission. -Êtes-vous certain de vouloir continuer ? - <usetemplate - ignoretext="Lorsque vous donnez à des membres du groupe le rôle de « propriétaire »" - name="okcancelignore" - notext="Non" - yestext="Oui"/> - </notification> - - <notification - - name="AssignDangerousActionWarning" - > -Vous êtes sur le point d'ajouter le pouvoir « [ACTION_NAME] » au rôle « [ROLE_NAME] ». - *Avertissement* - Tout membre disposant de ce pouvoir peut s'affecter lui-même, ainsi que tout autre membre, à des rôles disposant de pouvoirs plus importants, et accéder potentiellement à des pouvoirs proches de ceux d'un propriétaire. Assurez-vous de bien comprendre ce que vous faites avant d'attribuer ce pouvoir. - -Ajouter ce pouvoir à « [ROLE_NAME] » ? - <usetemplate - name="okcancelbuttons" - notext="Non" - yestext="Oui"/> - </notification> - - <notification - - name="AssignDangerousAbilityWarning" - > -Vous êtes sur le point d'ajouter le pouvoir « [ACTION_NAME] » au rôle « [ROLE_NAME] ». - - *Avertissement* - Tout membre dans un rôle avec ce pouvoir peut s'attribuer à lui-même, ainsi qu'à tout autre membre, Tous les pouvoirs, et accéder potentiellement à des pouvoirs proches de ceux d'un propriétaire. - -Ajouter ce pouvoir à « [ROLE_NAME] » ? - <usetemplate - name="okcancelbuttons" - notext="Non" - yestext="Oui"/> - </notification> - - <notification - - name="ClickPublishHelpLand" - > -Sélectionner l'option Afficher dans la recherche -En cochant cette case, votre parcelle apparaîtra : -- dans les résultats de recherche ; -- dans les objets publics ; -- dans la recherche web. - </notification> - - <notification - - name="ClickPublishHelpLandDisabled" - > -Cette parcelle ne peut pas apparaître dans la recherche car elle est dans une région où cela n'est pas autorisé. - </notification> - - <notification - - name="ClickPublishHelpAvatar" - > -Si vous sélectionnez Afficher dans la recherche : -- votre profil apparaîtra dans les résultats de recherche ; -- un lien vers votre profil apparaîtra dans les pages de groupe publiques. - </notification> - - <notification - - name="ClickPartnerHelpAvatar" - > -Vous pouvez proposer à un autre résident de devenir votre partenaire ou dissoudre un partenariat existant à partir du site de [SECOND_LIFE]. - -Aller sur le site de Second Life pour avoir plus d'informations sur les partenariats ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="Aller sur cette page"/> - </notification> - - <notification - - name="ClickWebProfileHelpAvatar" - > -Si ce résident a défini une URL de profil web, vous pouvez : - * Cliquer sur Charger pour afficher la page dans cet onglet ; - * Cliquer sur Charger > Dans un navigateur externe, pour afficher la page dans votre navigateur par défaut ; - * Cliquer sur Charger > URL du domicile, pour retourner au profil web du résident. - -Lorsque vous êtes dans votre propre profil, vous pouvez définir n'importe quelle URL comme profil web. Pour cela, saisissez l'URL et cliquez sur OK. -Les autres résidents peuvent visiter l'URL que vous avez définie en regardant votre profil. - </notification> - - <notification - - name="JoinGroupCanAfford" - > -Rejoindre ce groupe coûte [COST] L$. -Voulez-vous continuer ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="Rejoindre"/> - </notification> - - <notification - - name="JoinGroupCannotAfford" - > -Rejoindre ce groupe coûte [COST] L$. -Vous n'avez pas suffisamment de L$ pour rejoindre ce groupe. - </notification> - - <notification - - name="LandBuyPass" - > -Pour [COST] L$ vous pouvez pénétrer sur ce terrain ([PARCEL_NAME]) et y rester [TIME] heures. Acheter un pass ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="SalePriceRestriction" - > -Pour rendre l'annonce disponible à tous, le prix de vente doit être supérieur à 0 L$. -Si le prix de vente est de 0 L$, vous devez choisir un acheteur spécifique. - </notification> - - <notification - - name="ConfirmLandSaleChange" - - > -Le terrain sélectionné, de [LAND_SIZE] m², est mis en vente. -Votre prix de vente sera de [SALE_PRICE] L$ et la vente sera disponible à [NAME]. - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmLandSaleToAnyoneChange" - > -Attention : en cliquant sur Vendre à n'importe qui, vous rendez votre terrain disponible à toute la communauté de Second Life, même aux personnes qui ne sont pas dans cette région. - -Le terrain sélectionné, de [LAND_SIZE] m², est mis en vente. -Votre prix de vente sera de [SALE_PRICE] L$ et la vente sera disponible à [NAME]. - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="ReturnObjectsDeededToGroup" - > -Êtes-vous certain de vouloir renvoyer tous les objets partagés par le groupe [NAME] sur cette parcelle dans l'inventaire du propriétaire précédent ? - -*Avertissement* Tous les objets non transférables cédés au groupe seront supprimés ! - -Objets : [N] - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="ReturnObjectsOwnedByUser" - > -Etes-vous certain de vouloir renvoyer tous les objets que [NAME] possède sur cette parcelle dans son inventaire ? - -Objets : [N] - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="ReturnObjectsOwnedBySelf" - > -Êtes-vous certain de vouloir renvoyer tous les objets que vous possédez sur cette parcelle dans votre inventaire ? - -Objets : [N] - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="ReturnObjectsNotOwnedBySelf" - > -Êtes-vous certain de vouloir renvoyer tous les objets que vous ne possédez pas sur cette parcelle dans l'inventaire de leur propriétaire ? -Les objets transférables cédés à un groupe seront renvoyés aux propriétaires précédents. - -*Avertissement* Tous les objets non transférables cédés au groupe seront supprimés ! - -Objets : [N] - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="ReturnObjectsNotOwnedByUser" - > -Êtes-vous certain de vouloir renvoyer tous les objets que [NAME] ne possède pas sur cette parcelle dans l'inventaire de leur propriétaire ? -Les objets transférables cédés à un groupe seront renvoyés aux propriétaires précédents. - -*Avertissement* Tous les objets non transférables cédés au groupe seront supprimés ! - -Objets : [N] - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="ReturnAllTopObjects" - > -Êtes-vous certain de vouloir renvoyer tous les objets de la liste dans l'inventaire de leur propriétaire ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="DisableAllTopObjects" - > -Êtes-vous certain de vouloir désactiver tous les objets dans cette région ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="ReturnObjectsNotOwnedByGroup" - > -Renvoyer les objets de cette parcelle qui ne sont pas partagés avec le groupe [NAME] à leur propriétaire ? - -Objets : [N] - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="UnableToDisableOutsideScripts" - > -Impossible de désactiver les scripts. -Les dégâts sont autorisés dans toute la région. -Pour que les armes fonctionnent, les scripts doivent être autorisés. - </notification> - - <notification - - name="MustBeInParcel" - > -Pour définir le point d'atterrissage, vous devez vous trouver à l'intérieur de la parcelle. - </notification> - - <notification - - name="PromptRecipientEmail" - > -Veuillez saisir une adresse e-mail valide pour le(s) destinataire(s). - </notification> - - <notification - - name="PromptSelfEmail" - > -Veuillez saisir votre adresse e-mail. - </notification> - - <notification - - name="PromptMissingSubjMsg" - > -Envoyer la photo avec le sujet ou le message par défaut ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="ErrorProcessingSnapshot" - > -Erreur dans le traitement des données de la photo - </notification> - - <notification - - name="ErrorEncodingSnapshot" - > -Erreur d'encodage de la photo. - </notification> - - <notification - - name="ErrorUploadingPostcard" - > -Une erreur est survenue lors du chargement du script compilé, suite au problème suivant : [REASON] - </notification> - - <notification - - name="ErrorUploadingReportScreenshot" - > -Une erreur est survenue lors du chargement de la capture d'écran destinée au rapport, suite au problème suivant : [REASON] - </notification> - - <notification - - name="MustAgreeToLogIn" - > -Pour vous connecter à [SECOND_LIFE], vous devez accepter les Conditions d'utilisation. - </notification> - - <notification - - name="CouldNotPutOnOutfit" - > -Impossible de mettre cet ensemble. -Ce dossier ne contient pas d'habits, de parties du corps ni de pièces jointes. - </notification> - - <notification - - name="CannotWearTrash" - > -Vous ne pouvez pas porter d'habits ni de parties du corps se trouvant dans la corbeille. - </notification> - - <notification - - name="CannotWearInfoNotComplete" - > -Vous ne pouvez pas porter cet article car il n'a pas encore été chargé. Veuillez réessayer dans une minute. - </notification> - - <notification - - name="MustHaveAccountToLogIn" - > -Oups! Vous avez oublié de fournir certaines informations. -Vous devez saisir le nom et le prénom de votre avatar. - -Pour entrer dans [SECOND_LIFE], vous devez avoir un compte. Voulez-vous en créer un maintenant ? - <usetemplate - name="okcancelbuttons" - notext="Réessayer" - yestext="Créer un compte"/> - </notification> - - <notification - - name="AddClassified" - > -Les petites annonces sont publiées à l'onglet Petites annonces de la section Recherche pendant une semaine. -Rédigez votre annonce, puis cliquez sur Publier pour l'ajouter à la liste des annonces. -Au moment de cliquer sur Publier, vous serez invité à payer des frais. -Plus vous payez cher, plus votre annonce est visible dans la liste ainsi que dans les résultats de recherche de mots-clés. - <usetemplate - ignoretext="Lors de l'ajout d'une nouvelle petite annonce" - name="okcancelignore" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="DeleteClassified" - > -Supprimer l'annonce [NAME] ? -Une fois payés, les frais ne sont pas remboursables. - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="ClassifiedSave" - > -Enregistrer les changements dans l'annonce [NAME] ? - <usetemplate - canceltext="Annuler" - name="yesnocancelbuttons" - notext="Ne pas enregistrer" - yestext="Enregistrer"/> - </notification> - - <notification - - name="DeleteAvatarPick" - > -Supprimer le favori [PICK] ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="PromptGoToEventsPage" - > -Aller à la page web de [SECOND_LIFE] réservée aux événements ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="SelectProposalToView" - > -Veuillez sélectionner une proposition. - </notification> - - <notification - - name="SelectHistoryItemToView" - > -Veuillez sélectionner un historique. - </notification> - - <notification - - name="ResetShowNextTimeDialogs" - > -Souhaitez-vous réactiver tous les pop-ups que vous aviez désactivés ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="SkipShowNextTimeDialogs" - > -Voulez-vous désactiver tous les pop-ups qui peuvent être évités ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="CacheWillClear" - > -Le cache sera vidé après le redémarrage de [SECOND_LIFE]. - </notification> - - <notification - - name="CacheWillBeMoved" - > -Le cache sera déplacé après le redémarrage de [SECOND_LIFE]. -Remarque : cela videra le cache. - </notification> - - <notification - - name="ChangeConnectionPort" - > -Les paramètres du port prendront effet après le redémarrage de [SECOND_LIFE]. - </notification> - - <notification - - name="ChangeSkin" - > -Le nouveau thème apparaîtra après le redémarrage de [SECOND_LIFE]. - </notification> - - <notification - - name="GoToAuctionPage" - > -Aller à la page web de [SECOND_LIFE] pour voir le détail des enchères ou enchérir ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="SaveChanges" - > -Enregistrer les changements ? - <usetemplate - canceltext="Annuler" - name="yesnocancelbuttons" - notext="Ne pas enregistrer" - yestext="Enregistrer"/> - </notification> - - <notification - - name="GestureSaveFailedTooManySteps" - > -L'enregistrement du geste a échoué. -Il y a trop d'étapes dans ce geste. -Essayez d'en supprimer quelques-unes. - </notification> - - <notification - - name="GestureSaveFailedTryAgain" - > -L'enregistrement du geste a échoué. Veuillez réessayer dans une minute. - </notification> - - <notification - - name="GestureSaveFailedObjectNotFound" - > -Le geste n'a pas pu être enregistré car l'objet ou l'inventaire de l'objet associé n'a pas été trouvé. -L'objet est peut-être inaccessible ou a peut-être été supprimé. - </notification> - - <notification - - name="GestureSaveFailedReason" - > -Une erreur est survenue lors de l'enregistrement du geste, suite au problème suivant : [REASON]. Essayez d'enregistrer votre geste ultérieurement. - </notification> - - <notification - - name="SaveNotecardFailObjectNotFound" - > -La note n'a pas pu être enregistrée car l'objet ou l'inventaire de l'objet associé n'a pas été trouvé. -L'objet est peut-être inaccessible ou a peut-être été supprimé. - </notification> - - <notification - - name="SaveNotecardFailReason" - > -Une erreur est survenue lors de l'enregistrement de la note, suite au problème suivant : [REASON]. Essayez d'enregistrer votre note ultérieurement. - </notification> - - <notification - - name="ScriptCannotUndo" - > -Impossible d'annuler tous les changements dans votre version du script. -Souhaitez-vous charger la dernière version enregistrée sur le serveur ? -(**Attention** Cette opération est irréversible.) - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="SaveScriptFailReason" - > -Une erreur est survenue lors de l'enregistrement du script, suite au problème suivant : [REASON]. Essayez d'enregistrer votre script ultérieurement. - </notification> - - <notification - - name="SaveScriptFailObjectNotFound" - > -Impossible d'enregistrer le script car l'objet qui le contient est introuvable. -L'objet est peut-être inaccessible ou a peut-être été supprimé. - </notification> - - <notification - - name="SaveBytecodeFailReason" - > -Une erreur est survenue lors de l'enregistrement du script compilé, suite au problème suivant : [REASON]. Essayez d'enregistrer votre script ultérieurement. - </notification> - - <notification - - name="CouldNotStartStopScript" - > -Impossible de lancer ou d'arrêter le script car l'objet qui le contient est introuvable. -L'objet est peut-être inaccessible ou a peut-être été supprimé. - </notification> - - <notification - - name="CannotDownloadFile" - > -Impossible de télécharger le fichier - </notification> - - <notification - - name="CannotWriteFile" - > -Impossible d'écrire le fichier [[FILE]] - </notification> - - <notification - - name="UnsupportedHardware" - > -Avertissement : vous n'avez pas la configuration système requise pour utiliser Second Life. Si vous continuez à utiliser Second Life, votre performance risque d'être moindre. Malheureusement, nous n'offrons aucune assistance pour les problèmes de configuration système. - -MINSPECS -Voulez-vous visiter [_URL] pour plus d'informations ? - <url option="0" name="url"> - - http://secondlife.com/support/sysreqs.php?lang=fr - </url> - <usetemplate - ignoretext="Lors de la détection de matériel non pris en charge" - name="okcancelignore" - notext="Non" - yestext="Oui"/> - </notification> - - <notification - - name="UnknownGPU" - > -Votre système contient une carte graphique que nous ne connaissons pas actuellement. -Cela est souvent le cas avec le nouveau materiel qui n'a pas encore été testé. -Vous pourrez probablement utiliser Second Life sans problème, mais vous devrez peut-être ajuster les paramètres de vos graphiques. -(Menu Édition > Préférences > Graphiques). - <form name="form"> - <ignore name="ignore" - text="Lors de la détection d'une carte graphique inconnue"/> - </form> - </notification> - - <notification - - name="DisplaySettingsNoShaders" - > -[SECOND_LIFE] a planté lors de l'initialisation des drivers graphiques. -La qualité des graphiques sera paramétrée sur Faible pour éviter certaines erreurs de driver fréquentes. -Certaines fonctionnalités graphiques seront donc désactivées. -Nous vous recommandons de mettre à jour les drivers de votre carte graphique. -La qualité des graphiques peut être augmentée à la section Préférences > Graphiques - </notification> - - <notification - - name="RegionNoTerraforming" - > -Le terraformage est interdit dans la région [REGION]. - </notification> - - <notification - - name="CannotCopyWarning" - > -Vous n'êtes pas autorisé à copier cet objet et il disparaîtra de votre inventaire si vous le donnez. Souhaitez-vous vraiment offrir cet objet ? - <usetemplate - name="okcancelbuttons" - notext="Non" - yestext="Oui"/> - </notification> - - <notification - - name="CannotGiveItem" - > -Impossible de donner l'objet de l'inventaire. - </notification> - - <notification - - name="TransactionCancelled" - > -Transaction annulée. - </notification> - - <notification - - name="TooManyItems" - > -Impossible de donner plus de 42 objets au cours d'un seul transfert d'inventaire. - </notification> - - <notification - - name="NoItems" - > -Vous n'êtes pas autorisé à transférer les objets sélectionnés. - </notification> - - <notification - - name="CannotCopyCountItems" - > -Vous n'êtes pas autorisé à copier [COUNT] des objets sélectionnés. Ces objets disparaîtront de votre inventaire. -Souhaitez-vous vraiment donner ces objets ? - <usetemplate - name="okcancelbuttons" - notext="Non" - yestext="Oui"/> - </notification> - - <notification - - name="CannotGiveCategory" - > -Vous n'êtes pas autorisé à transférer le dossier sélectionné. - </notification> - - <notification - - name="FreezeAvatar" - > -Geler cet avatar ? -Il ou elle ne pourra temporairement plus bouger, chatter, ou interagir dans le Monde. - <usetemplate - canceltext="Annuler" - name="yesnocancelbuttons" - notext="Dégeler" - yestext="Geler"/> - </notification> - - <notification - - name="FreezeAvatarFullname" - > -Geler [AVATAR_NAME] ? -Il ou elle ne pourra temporairement plus bouger, chatter, ou interagir dans le Monde. - <usetemplate - canceltext="Annuler" - name="yesnocancelbuttons" - notext="Dégeler" - yestext="Geler"/> - </notification> - - <notification - - name="EjectAvatarFullname" - > -Expulser [AVATAR_NAME] de votre terrain ? - <usetemplate - canceltext="Annuler" - name="yesnocancelbuttons" - notext="Expulser et bannir" - yestext="Expulser"/> - </notification> - - <notification - - name="EjectAvatarNoBan" - > -Expulser cet avatar de votre terrain ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="Expulser"/> - </notification> - - <notification - - name="EjectAvatarFullnameNoBan" - > -Expulser [AVATAR_NAME] de votre terrain ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="Expulser"/> - </notification> - - <notification - - name="AcquireErrorTooManyObjects" - > -Erreur d'acquisition : trop d'objets sélectionnés. - </notification> - - <notification - - name="AcquireErrorObjectSpan" - > -Erreur d'acquisition : les objets sont répartis dans plus d'une région. -Veuillez mettre tous les objets que vous souhaitez acquérir dans la même région. - </notification> - - <notification - - name="PromptGoToCurrencyPage" - > -[EXTRA] - -Aller sur [URL] pour obtenir des informations sur l'achat de devises ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="UnableToLinkObjects" - > -Impossible de lier ces [COUNT] objets. -Vous pouvez lier un maximum de [MAX] objets. - </notification> - - <notification - - name="CannotLinkIncompleteSet" - > -Vous ne pouvez lier que des ensembles d'objets complets et vous devez choisir un minimum de deux objets. - </notification> - - <notification - - name="CannotLinkModify" - > -Impossible de lier car vous n'avez pas la permission de modifier tous les objets. - -Assurez-vous que vous êtes le propriétaire de tous les objets et qu'aucun d'eux n'est verrouillé. - </notification> - - <notification - - name="CannotLinkDifferentOwners" - > -Impossible de lier car les objets n'ont pas tous le même propriétaire. - -Assurez-vous que vous êtes le propriétaire de tous les objets sélectionnés. - </notification> - - <notification - - name="NoFileExtension" - > -Pas d'extension pour le fichier suivant : '[FILE]' - -Assurez-vous que le fichier a l'extension correcte. - </notification> - - <notification - - name="InvalidFileExtension" - > -Extension de fichier [EXTENSION] invalide -[VALIDS] attendu - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="CannotUploadSoundFile" - > -Impossible de lire le fichier son chargé : -[FILE] - </notification> - - <notification - - name="SoundFileNotRIFF" - > -Il semble que le fichier ne soit pas un fichier RIFF WAVE : -[FILE] - </notification> - - <notification - - name="SoundFileNotPCM" - > -Il semble que le fichier ne soit pas un fichier audio PCM WAVE : -[FILE] - </notification> - - <notification - - name="SoundFileInvalidChannelCount" - > -Le fichier contient un nombre de canaux invalide (doit être mono ou stéréo) : -[FILE] - </notification> - - <notification - - name="SoundFileInvalidSampleRate" - > -Le fichier ne semble pas être pris en charge (doit être 44,1 k) : -[FILE] - </notification> - - <notification - - name="SoundFileInvalidWordSize" - > -Le fichier ne semble pas être pris en charge (doit faire 8 ou 16 bit) : -[FILE] - </notification> - - <notification - - name="SoundFileInvalidHeader" - > -Impossible de trouver les données dans l'en-tête WAV : -[FILE] - </notification> - - <notification - - name="SoundFileInvalidTooLong" - > -Le fichier audio est trop long (10 secondes maximum) : -[FILE] - </notification> - - <notification - - name="ProblemWithFile" - > -Problème avec le fichier [FILE] : - -[ERROR] - </notification> - - <notification - - name="CannotOpenTemporarySoundFile" - > -Impossible d'ouvrir le fichier son compressé temporaire : [FILE] - </notification> - - <notification - - name="UnknownVorbisEncodeFailure" - > -Échec d'encodage Vorbis inconnu sur : [FILE] - </notification> - - <notification - - name="CorruptResourceFile" - > -Fichier ressource corrompu : [FILE] - </notification> - - <notification - - name="UnknownResourceFileVersion" - > -Version de fichier ressource Linden inconnu : [FILE] - </notification> - - <notification - - name="UnableToCreateOutputFile" - > -Impossible de créer le fichier de sortie : [FILE] - </notification> - - <notification - - name="DoNotSupportBulkAnimationUpload" - > -Actuellement, nous ne prenons pas en charge le chargement de lots de fichiers d'animation. - </notification> - - <notification - - name="CannotUploadReason" - > -Impossible de charger [FILE] suite au problème suivant : [REASON] -Veuillez réessayer ultérieurement. - </notification> - - <notification - - name="CannotCreateLandmarkNotOwner" - > -Vous ne pouvez pas créer de repère ici car le propriétaire du terrain ne l'autorise pas. - </notification> - - <notification - - name="CannotRecompileSelectObjectsNoScripts" - > -Impossible d'effectuer les recompilations. -Sélectionnez un objet avec un script. - </notification> - - <notification - - name="CannotRecompileSelectObjectsNoPermission" - > -Impossible d'effectuer les recompilations. - -Sélectionnez des objets qui ont des scripts et que vous pouvez modifier. - </notification> - - <notification - - name="CannotResetSelectObjectsNoScripts" - > -Impossible d'effectuer la réinitialisation. - -Veuillez sélectionner des objets avec des scripts. - </notification> - - <notification - - name="CannotResetSelectObjectsNoPermission" - > -Impossible d'effectuer la réinitialisation. - -Sélectionnez des objets qui ont des scripts et que vous pouvez modifier. - </notification> - - <notification - - name="CannotSetRunningSelectObjectsNoScripts" - > -Impossible de définir les scripts sur « exécution ». - -Veuillez sélectionner des objets avec des scripts. - </notification> - - <notification - - name="CannotSetRunningNotSelectObjectsNoScripts" - > -Impossible de définir les scripts sur « non-exécution ». - -Veuillez sélectionner des objets avec des scripts. - </notification> - - <notification - - name="NoFrontmostFloater" - > -Aucun floater frontmost à sauvegarder. - </notification> - - <notification - - name="SeachFilteredOnShortWords" - > -Votre requête a été modifiée et les mots trops courts ont été supprimés. - -Recherche effectuée : [FINALQUERY] - </notification> - - <notification - - name="SeachFilteredOnShortWordsEmpty" - > -Vos termes de recherche étaient trop courts et aucune recherche n'a été effectuée. - </notification> - - <notification - - name="CouldNotTeleportReason" - > -Impossible de téléporter. -[REASON] - </notification> - - <notification - - name="CannotSetLandOwnerNothingSelected" - > -Impossible de définir le propriétaire foncier : -aucune parcelle sélectionnée. - </notification> - - <notification - - name="CannotSetLandOwnerMultipleRegions" - > -Impossible de définir un propriétaire car la sélection couvre plusieurs régions. Veuillez sélectionner une zone plus petite et réessayer. - </notification> - - <notification - - name="ForceOwnerAuctionWarning" - > -Cette parcelle est mise aux enchères. Définir un propriétaire annulerait les enchères, ce qui pourrait être gênant pour certains résidents si ces dernières ont commencé. Souhaitez-vous définir un propriétaire ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="CannotContentifyNothingSelected" - > -Problème : -Aucune parcelle sélectionnée. - </notification> - - <notification - - name="CannotContentifyNoRegion" - > -Problème : -Aucune région sélectionnée. - </notification> - - <notification - - name="CannotReleaseLandNothingSelected" - > -Impossible d'abandonner le terrain : -aucune parcelle sélectionnée. - </notification> - - <notification - - name="CannotReleaseLandNoRegion" - > -Impossible d'abandonner le terrain : -la région est introuvable. - </notification> - - <notification - - name="CannotBuyLandNothingSelected" - > -Impossible d'acheter le terrain : -aucune parcelle sélectionnée. - </notification> - - <notification - - name="CannotBuyLandNoRegion" - > -Impossible d'acheter le terrain : -la région dans laquelle il est situé est introuvable. - </notification> - - <notification - - name="CannotCloseFloaterBuyLand" - > -Vous ne pouvez pas fermer la fenêtre Acheter le terrain avant que Second Life n'estime le montant de cette transaction. - </notification> - - <notification - - name="CannotDeedLandNothingSelected" - > -Cession du terrain impossible : -aucune parcelle sélectionnée. - </notification> - - <notification - - name="CannotDeedLandNoGroup" - > -Cession du terrain impossible : -aucun groupe sélectionné. - </notification> - - <notification - - name="CannotDeedLandNoRegion" - > -Cession du terrain impossible : -la région dans laquelle il est situé est introuvable. -Veuillez utiliser Aide > Signaler des bugs pour signaler le problème. - </notification> - - <notification - - name="CannotDeedLandMultipleSelected" - > -Cession du terrain impossible : -plusieurs parcelles sélectionnées. - -Essayez de ne sélectionner qu'une seule parcelle. - </notification> - - <notification - - name="ParcelCanPlayMedia" - > -Cette parcelle propose des flux de média. -Pour jouer des flux de média, il faut avoir une connexion internet rapide. - -Jouer les flux de média lorsqu'ils sont disponibles ? -(Vous pourrez modifier cette option ultérieurement sous Préférences > Audio et Vidéo.) - <usetemplate - name="okcancelbuttons" - notext="Désactiver" - yestext="Jouer le média"/> - </notification> - - <notification - - name="CannotDeedLandWaitingForServer" - > -Cession du terrain impossible : -rapport de propriété sur le point d'être envoyé par le serveur. - -Merci de réessayer. - </notification> - - <notification - - name="CannotDeedLandNoTransfer" - > -Cession du terrain impossible : -la cession de terrain est interdite dans la région [REGION]. - </notification> - - <notification - - name="CannotReleaseLandWatingForServer" - > -Impossible d'abandonner le terrain : -mise à jour des informations sur la parcelle sur le point d'être envoyée par le serveur. - -Veuillez réessayer dans quelques secondes. - </notification> - - <notification - - name="CannotReleaseLandSelected" - > -Impossible d'abandonner le terrain : -vous n'êtes pas le propriétaire des parcelles sélectionnées. - -Veuillez sélectionner une seule parcelle. - </notification> - - <notification - - name="CannotReleaseLandDontOwn" - > -Impossible d'abandonner le terrain : -vous n'avez pas la permission de libérer cette parcelle. -Les parcelles qui vous appartiennent sont en vert. - </notification> - - <notification - - name="CannotReleaseLandRegionNotFound" - > -Impossible d'abandonner le terrain : -la région dans laquelle il est situé est introuvable. - -Veuillez utiliser Aide > Signaler un bug pour signaler le problème. - </notification> - - <notification - - name="CannotReleaseLandNoTransfer" - > -Impossible d'abandonner le terrain : -le transfert de terrain est interdit dans la région [REGION]. - </notification> - - <notification - - name="CannotReleaseLandPartialSelection" - > -Impossible d'abandonner le terrain : -vous devez sélectionner une parcelle entière pour la libérer. - -Sélectionnez toute la parcelle ou divisez-la d'abord. - </notification> - - <notification - - name="ReleaseLandWarning" - > -Vous vous apprêtez à libérer [AREA] m² de terrain. -Si vous libérez cette parcelle, elle sera supprimée de votre patrimoine, mais vous ne recevrez pas de L$. - -Libérer ce terrain ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="CannotDivideLandNothingSelected" - > -Division du terrain impossible : - -aucune parcelle sélectionnée. - </notification> - - <notification - - name="CannotDivideLandPartialSelection" - > -Division du terrain impossible : - -Toute la parcelle est sélectionnée. -Sélectionnez une partie de la parcelle uniquement. - </notification> - - <notification - - name="LandDivideWarning" - > -Si vous divisez ce terrain, cette parcelle sera partagée en deux et chaque parcelle pourra avoir ses propres paramètres. Après cette opération, certains paramètres reviendront aux paramètres par défaut. - -Diviser le terrain ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="CannotDivideLandNoRegion" - > -Division du terrain impossible : -la région dans laquelle il est situé est introuvable. - -Veuillez utiliser Aide > Signaler un bug pour signaler le problème. - </notification> - - <notification - - name="CannotJoinLandNoRegion" - > -Impossible de fusionner le terrain : -la région dans laquelle il est situé est introuvable. - -Veuillez utiliser Aide > Signaler un bug pour signaler le problème. - </notification> - - <notification - - name="CannotJoinLandNothingSelected" - > -Impossible de fusionner le terrain : -aucune parcelle sélectionnée. - </notification> - - <notification - - name="CannotJoinLandEntireParcelSelected" - > -Impossible de fusionner le terrain : -vous avez sélectionné une seule parcelle. - -Sélectionnez le terrain sur les deux parcelles. - </notification> - - <notification - - name="CannotJoinLandSelection" - > -Impossible de fusionner le terrain : -vous devez sélectionner au moins deux parcelles. - -Sélectionnez le terrain sur les deux parcelles. - </notification> - - <notification - - name="JoinLandWarning" - > -En fusionnant ce terrain, vous créerez une grande parcelle composée de toutes les parcelles se trouvant dans le rectangle sélectionné. -Vous devrez réinitialiser le nom et les options de la nouvelle parcelle. - -Fusionner le terrain ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmNotecardSave" - > -Cette note doit être sauvegardée avant que l'objet ne puisse être copié ou visualisé. Enregistrer la note ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmItemCopy" - > -Copier cet objet dans votre inventaire ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="Copier"/> - </notification> - - <notification - - name="ResolutionSwitchFail" - > -Échec du changement de résolution (à [RESX], de [RESY]) - </notification> - - <notification - - name="ErrorUndefinedGrasses" - > -Erreur : herbes non identifiées : [SPECIES] - </notification> - - <notification - - name="ErrorUndefinedTrees" - > -Erreur : arbres non identifiés : [SPECIES] - </notification> - - <notification - - name="CannotSaveWearableOutOfSpace" - > -Impossible de sauvegarder [NAME]. Pour pouvoir sauvegarder ce fichier, vous devez d'abord libérer de la mémoire sur votre ordinateur. - </notification> - - <notification - - name="CannotSaveToAssetStore" - > -Impossible de sauvegarder le fichier [NAME] dans la base de données centrale. -Cette erreur est généralement temporaire. Veuillez éditer et sauvegarder l'élément endossable à nouveau d'ici quelques minutes. - -Si le problème persiste, veuillez cliquer sur Aide | Signaler un bug dans le menu déroulant en indiquant les détails de votre connexion. - </notification> - - <notification - - name="YouHaveBeenLoggedOut" - > -Vous avez été déconnecté(e) de [SECOND_LIFE] : - [MESSAGE] -Vous pouvez afficher vos messages instantanés et votre chat en cliquant sur Afficher IM et chat. Sinon, cliquez sur Quitter pour quitter immédiatement [SECOND_LIFE]. - <usetemplate - name="okcancelbuttons" - notext="Quitter" - yestext="Afficher IM et chat"/> - </notification> - - <notification - - name="OnlyOfficerCanBuyLand" - > -Impossible d'acheter du terrain pour le groupe : -Vous n'avez pas la permission d'acheter de terrain pour votre groupe. - </notification> - - <notification - - label="Devenir amis" - name="AddFriend" - > -Vous pouvez suivre les déplacements de vos amis sur la carte et voir lorsqu'ils se connectent. - -Proposer à [NAME] de devenir votre ami(e) ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - label="Devenir amis" - name="AddFriendWithMessage" - > -Vous pouvez suivre les déplacements de vos amis sur la carte et voir lorsqu'ils se connectent. - -Proposer à [NAME] de devenir votre ami(e) ? - <form name="form"> - <input name="message" type="text"> -Voulez-vous être mon ami(e) ? - </input> - <button - - - name="Offer" - text="OK"/> - <button - - name="Cancel" - text="Annuler"/> - </form> - </notification> - - <notification - - name="RemoveFromFriends" - > -Voulez-vous supprimer [FIRST_NAME] [LAST_NAME] de votre liste d'amis ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="RemoveMultipleFromFriends" - > -Voulez-vous supprimer plusieurs résidents de votre liste d'amis ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="GodDeleteAllScriptedPublicObjectsByUser" - > -Êtes-vous certain de vouloir supprimer tous les objets scriptés appartenant à ** [AVATAR_NAME] ** sur tous les terrains des autres résidents dans cette région ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="GodDeleteAllScriptedObjectsByUser" - > -Êtes-vous certain de vouloir supprimer tous les objets scriptés appartenant à ** [AVATAR_NAME] ** sur tous les terrains de cette région ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="GodDeleteAllObjectsByUser" - > -Êtes-vous certain de vouloir supprimer tous les objets (scriptés ou pas) appartenant à ** [AVATAR_NAME] ** sur tous les terrains de cette région ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="BlankClassifiedName" - > -Vous devez choisir un nom pour votre petite annonce. - </notification> - - <notification - - name="MinClassifiedPrice" - > -Le coût de l'annonce doit être de [MIN_PRICE] L$ minimum. - -Veuillez saisir un montant plus élevé. - </notification> - - <notification - - name="ConfirmObjectDeleteLock" - > -Au moins un des objets que vous avez sélectionnés est verrouillé. - -Êtes-vous certain de vouloir supprimer ces objets ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectDeleteNoCopy" - > -Au moins un des objets que vous avez sélectionnés n'est pas reproductible. - -Êtes-vous certain de vouloir supprimer ces objets ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectDeleteNoOwn" - > -Au moins un des objets que vous avez sélectionnés ne vous appartient pas. - -Êtes-vous certain de vouloir supprimer ces objets ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectDeleteLockNoCopy" - > -Au moins un des objets est verrouillé. -Au moins un des objets n'est pas reproductible. - -Êtes-vous certain de vouloir supprimer ces objets ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectDeleteLockNoOwn" - > -Au moins un des objets est verrouillé. -Au moins un des objets ne vous appartient pas. - -Êtes-vous certain de vouloir supprimer ces objets ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectDeleteNoCopyNoOwn" - > -Au moins un des objets n'est pas reproductible. -Au moins un des objets ne vous appartient pas. - -Êtes-vous certain de vouloir supprimer ces objets ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectDeleteLockNoCopyNoOwn" - > -Au moins un des objets est verrouillé. -Au moins un des objets n'est pas reproductible. -Au moins un des objets ne vous appartient pas. - -Êtes-vous certain de vouloir supprimer ces objets ? - <usetemplate - name="okcancelbuttons" - notext="annuler" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectTakeLock" - > -Au moins un des objets est verrouillé. - -Êtes-vous certain de vouloir prendre ces objets ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectTakeNoOwn" - > -Vous n'êtes pas le propriétaire de tous les objets que vous prenez. -Si vous continuez, les permissions accordées au prochain propriétaire entreront en vigueur et vous risquez de ne plus pouvoir modifier ou copier les objets. - -Êtes-vous certain de vouloir prendre ces objets ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectTakeLockNoOwn" - > -Au moins un des objets est verrouillé. -Vous n'êtes pas le propriétaire de tous les objets que vous prenez. -Si vous continuez, les permissions accordées au prochain propriétaire entreront en vigueur et vous risquez de ne plus pouvoir modifier ou copier les objets. -Par contre, vous pouvez prendre les objets sélectionnés. - -Êtes-vous certain de vouloir prendre ces objets ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="CantBuyLandAcrossMultipleRegions" - > -Impossible d'acheter le terrain car la sélection couvre plusieurs régions. - -Veuillez sélectionner une zone plus petite et réessayer. - </notification> - - <notification - - name="DeedLandToGroup" - > -Si vous cédez ce terrain, le groupe devra avoir les moyens de le prendre en charge. -Le prix de la vente du terrain n'est pas remboursé par le propriétaire. Si la parcelle que vous cédez se vend, le prix de la vente sera divisé en parts égales parmi les membres du groupe. - -Céder ces [AREA] m² de terrain au groupe [GROUP_NAME] ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="DeedLandToGroupWithContribution" - > -Si vous cédez ce terrain, le groupe devra avoir les moyens de le prendre en charge. -La cession incluera une contribution de terrain simultanée au groupe de [FIRST_NAME] [LAST_NAME]. -Le prix de la vente du terrain n'est pas remboursé par le propriétaire. Si la parcelle que vous cédez se vend, le prix de la vente sera divisé en parts égales parmi les membres du groupe. - -Céder ces [AREA] m² de terrain au groupe [GROUP_NAME] ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="DisplaySetToSafe" - > -Les paramètres d'affichage sont au niveau le plus sûr, comme vous l'aviez indiqué. - </notification> - - <notification - - name="DisplaySetToRecommended" - > -Vos paramètres d'affichage ont été réglés avec une marge de sécurité en fonction de votre configuration système. - </notification> - - <notification - - name="ErrorMessage" - > -[ERROR_MESSAGE] - </notification> - - <notification - - name="AvatarMoved" - > -L'emplacement [TYPE] n'est pas disponible actuellement. [HELP] -Vous avez été déplacé dans une région voisine. - </notification> - - <notification - - name="ClothingLoading" - > -Vos habits sont toujours en train d'être téléchargés. -Vous pouvez utiliser [SECOND_LIFE] sans problème, les autres résidents vous voient normalement. - <form name="form"> - <ignore name="ignore" - text="Lorsque les habits prennent longtemps à télécharger"/> - </form> - </notification> - - <notification - - name="FirstRun" - > -L'installation de [SECOND_LIFE] est terminée. - -S'il s'agit de la première fois que vous utilisez [SECOND_LIFE], vous devrez créer un compte avant de pouvoir vous connecter. -Retourner sur www.secondlife.com pour créer un nouveau compte ? - <usetemplate - name="okcancelbuttons" - notext="Continuer" - yestext="Nouveau compte..."/> - </notification> - - <notification - - name="LoginPacketNeverReceived" - > -Vous avez des problèmes à vous connecter. Il peut s'agir d'un problème avec votre connexion internet ou les serveurs de Second Life. - -Nous vous conseillons de vérifier votre connexion Internet et de réessayer dans quelques minutes, de cliquer sur Aide, ou bien de cliquer sur Téléporter pour être téléporté vers votre domicile. - <form name="form"> - <button - - - name="OK" - text="OK"/> - <button - - name="Help" - text="Aide"/> - <button - - name="Teleport" - text="Téléporter"/> - </form> - </notification> - - <notification - - name="WelcomeChooseSex" - > -Votre personnage va apparaître dans un moment. - -Pour marcher, utilisez les flèches de direction. -Appuyez sur F1 pour obtenir de l'aide ou en savoir plus sur [SECOND_LIFE]. -Choisissez un avatar homme ou femme. -Vous pourrez revenir sur votre décision plus tard. - <usetemplate - name="okcancelbuttons" - notext="Femme" - yestext="Homme"/> - </notification> - - <notification - - name="NotEnoughCurrency" - > -[NAME] [PRICE] L$ Vous n'avez pas suffisamment de L$ pour faire cela. - </notification> - - <notification - - name="GrantedModifyRights" - > -Vous avez reçu la permission de modifier les objets de [FIRST_NAME] [LAST_NAME]. - </notification> - - <notification - - name="RevokedModifyRights" - > -Vous n'avez plus la permission de modifier les objets de [FIRST_NAME] [LAST_NAME]. - </notification> - - <notification - - name="FlushMapVisibilityCaches" - > -Cela videra le cache cartographique de cette région. -Cela n'est vraiment utile que pour faire du débugage. -(En production, attendez 5 minutes. Les cartes seront mises à jour après reconnexion.) - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="OnlyCopyContentsOfSingleItem" - > -Impossible de copier les contenus de plus d'un objet à la fois. -Veuillez ne sélectionner qu'un seul objet. - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="KickUsersFromRegion" - > -Téléporter tous les résidents de cette région chez eux ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="EstateObjectReturn" - > -Etes-vous certain de vouloir renvoyer les objets appartenant à [USER_NAME] ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="InvalidTerrainBitDepth" - > -Impossible de definir les textures de la région : -La texture du terrain [TEXTURE_NUM] a une profondeur invalide ([TEXTURE_BIT_DEPTH]). - -Remplacer la texture [TEXTURE_NUM] avec une image de 24 bits, 512 X 512, ou plus petite, puis cliquez à nouveau sur Appliquer. - </notification> - - <notification - - name="InvalidTerrainSize" - > -Impossible de definir les textures de la région : -La texture du terrain [TEXTURE_NUM] est trop volumineuse ([TEXTURE_SIZE_X] X [TEXTURE_SIZE_Y]). - -Remplacer la texture [TEXTURE_NUM] avec une image de 24 bits, 512 X 512, ou plus petite, puis cliquez à nouveau sur Appliquer. - </notification> - - <notification - - name="RawUploadStarted" - > -Le chargement a commencé. Cela va prendre une à deux minutes, -suivant votre vitesse de connexion. - </notification> - - <notification - - name="ConfirmBakeTerrain" - > -Etes-vous sûr(e) de vouloir figer le relief actuel, en faire le point central des limites d'élévation/abaissement de relief et la valeur par défaut du bouton Annuler modification ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="MaxAllowedAgentOnRegion" - > -Vous ne pouvez pas autoriser plus de [MAX_AGENTS] résidents. - </notification> - - <notification - - name="MaxBannedAgentsOnRegion" - > -Vous ne pouvez pas bannir plus de [MAX_BANNED] résidents. - </notification> - - <notification - - name="MaxAgentOnRegionBatch" - > -Echec lors de la tentative d'ajout de [NUM_ADDED] agents : -Dépasse la limite fixée à [MAX_AGENTS] [LIST_TYPE] de [NUM_EXCESS]. - </notification> - - <notification - - name="MaxAllowedGroupsOnRegion" - > -Vous ne pouvez pas avoir plus que [MAX_GROUPS] groupes autorisés. - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="Figer"/> - </notification> - - <notification - - name="MaxManagersOnRegion" - > -Vous ne pouvez avoir que [MAX_MANAGER] gérants de domaine. - </notification> - - <notification - - name="OwnerCanNotBeDenied" - > -Impossible d'ajouter le propriétaire du domaine à la liste des résidents bannis. - </notification> - - <notification - - name="CanNotChangeAppearanceUntilLoaded" - > -Impossible de changer d'apparence jusqu'à ce que les habits et la silhouette soient chargés. - </notification> - - <notification - - name="ClassifiedMustBeAlphanumeric" - > -Le nom de votre petite annonce doit commencer par un chiffre ou une lettre (A à Z). La ponctuation n'est pas autorisée. - </notification> - - <notification - - name="CantSetBuyObject" - > -Cet objet n'est pas à vendre. -Veuillez choisir un objet à vendre et réessayer. - </notification> - - <notification - - name="FinishedRawDownload" - > -Chargement du fichier de terrain raw effectué vers : -[DOWNLOAD_PATH]. - </notification> - - <notification - - name="DownloadWindowsMandatory" - > -Une nouvelle version de [SECOND_LIFE] est disponible. -[MESSAGE] -Pour utiliser [SECOND_LIFE] vous devez télécharger cette mise à jour. - <usetemplate - name="okcancelbuttons" - notext="Quitter" - yestext="Télécharger"/> - </notification> - - <notification - - name="DownloadWindows" - > -Une mise à jour de [SECOND_LIFE] est disponible. -[MESSAGE] -Cette mise à jour n'est pas requise mais si vous voulez une meilleure performance et plus de stabilité, nous vous recommandons de l'installer. - <usetemplate - name="okcancelbuttons" - notext="Continuer" - yestext="Télécharger"/> - </notification> - - <notification - - name="DownloadWindowsReleaseForDownload" - > -Une mise à jour de [SECOND_LIFE] est disponible. -[MESSAGE] -Cette mise à jour n'est pas requise mais si vous voulez une meilleure performance et plus de stabilité, nous vous recommandons de l'installer. - <usetemplate - name="okcancelbuttons" - notext="Continuer" - yestext="Télécharger"/> - </notification> - - <notification - - name="DownloadMacMandatory" - > -Une nouvelle version de [SECOND_LIFE] est disponible. -[MESSAGE] -Pour utiliser [SECOND_LIFE] vous devez télécharger cette mise à jour. - -Télécharger vers le dossier Applications ? - <usetemplate - name="okcancelbuttons" - notext="Quitter" - yestext="Télécharger"/> - </notification> - - <notification - - name="DownloadMac" - > -Une mise à jour de [SECOND_LIFE] est disponible. -[MESSAGE] -Cette mise à jour n'est pas requise mais si vous voulez une meilleure performance et plus de stabilité, nous vous recommandons de l'installer. - -Télécharger vers le dossier Applications ? - <usetemplate - name="okcancelbuttons" - notext="Continuer" - yestext="Télécharger"/> - </notification> - - <notification - - name="DownloadMacReleaseForDownload" - > -Une mise à jour de [SECOND_LIFE] est disponible. -[MESSAGE] -Cette mise à jour n'est pas requise mais si vous voulez une meilleure performance et plus de stabilité, nous vous recommandons de l'installer. - -Télécharger vers le dossier Applications ? - <usetemplate - name="okcancelbuttons" - notext="Continuer" - yestext="Télécharger"/> - </notification> - - <notification - - name="DeedObjectToGroup" - > -Si vous cédez cet objet, le groupe : -* recevra les L$ versés pour l'objet ; - <usetemplate - ignoretext="Lors de la cession d'objets au groupe" - name="okcancelignore" - notext="Annuler" - yestext="Céder"/> - </notification> - - <notification - - name="WebLaunchExternalTarget" - > -Ouvrir votre navigateur web système pour afficher ce contenu ? - <usetemplate - ignoretext="Lors de l'ouverture de votre navigateur système pour afficher une page web" - name="okcancelignore" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchJoinNow" - > -Aller sur www.secondlife.com pour gérer votre compte ? - <usetemplate - ignoretext="Lors de l'ouverture du navigateur web pour gérer votre compte" - name="okcancelignore" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchBugReport101" - > -Pour apprendre à signaler correctement des bugs, consultez le Wiki de [SECOND_LIFE]. - <usetemplate - ignoretext="Lors de l'ouverture du navigateur web pour consulter le Wiki et apprendre à signaler des bugs" - name="okcancelignore" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchSecurityIssues" - > -Pour apprendre à signaler un problème de sécurité, consultez le Wiki de [SECOND_LIFE]. - <usetemplate - ignoretext="Lors de l'ouverture du navigateur web pour consulter la page Wiki sur les problèmes de sécurité." - name="okcancelignore" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchQAWiki" - > -Consultez le Wiki sur l'Assurance Qualité de [SECOND_LIFE]. - <usetemplate - ignoretext="Lors de l'ouverture du navigateur web pour consulter la page Wiki sur l'Assurance Qualité." - name="okcancelignore" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchPublicIssue" - > -Pour signaler des bugs et autres problèmes, utilisez le JIRA de [SECOND_LIFE]. - <usetemplate - ignoretext="Lors de l'ouverture du navigateur web pour consulter le JIRA" - name="okcancelignore" - notext="Annuler" - yestext="Aller sur cette page"/> - </notification> - - <notification - - name="WebLaunchPublicIssueHelp" - > -Pour apprendre à utiliser JIRA, consultez le Wiki de [SECOND_LIFE]. - <usetemplate - ignoretext="Lors de l'ouverture du navigateur web pour consulter la page Wiki sur le JIRA" - name="okcancelignore" - notext="Annuler" - yestext="Aller sur cette page"/> - </notification> - - <notification - - name="WebLaunchSupportWiki" - > -Visitez le blog officiel des Lindens pour les dernières nouvelles et informations. - <usetemplate - ignoretext="Lors de l'ouverture du navigateur web pour consulter le blog" - name="okcancelignore" - notext="Annuler" - yestext="Aller à la page"/> - </notification> - - <notification - - name="WebLaunchLSLGuide" - > -Consulter le Guide guide pour l'écriture de scripts pour obtenir de l'aide ? - <usetemplate - ignoretext="Lors de l'ouverture du navigateur web pour voir le Guide pour l'écriture de scripts" - name="okcancelignore" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchLSLWiki" - > -Consulter le Wiki LSL pour de l'aide sur les scripts ? - <usetemplate - ignoretext="Lors de l'ouverture du navigateur web pour consulter le Guide sur l'écriture de scripts" - name="okcancelignore" - notext="Annuler" - yestext="Aller à la page"/> - </notification> - - <notification - - name="ReturnToOwner" - > -Êtes-vous certain de vouloir renvoyer les objets sélectionnés à leur propriétaire ? Les objets donnés transférables seront renvoyés à leur ancien propriétaire. - -*Avertissement* Les objets non transférables seront supprimés ! - <usetemplate - ignoretext="Lors du renvoi d'objets à leurs propriétaires" - name="okcancelignore" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="GroupLeaveConfirmMember" - > -Vous êtes actuellement membre du groupe [GROUP]. -Quitter le groupe ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmKick" - > -Souhaitez-vous vraiment éjecter tous les utilisateurs de la grille ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="Éjecter tous"/> - </notification> - - <notification - - name="MuteLinden" - > -Désolé, vous ne pouvez pas ignorer un Linden. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - label="Échec de la fonction Ignorer les objets par nom" - name="MuteByNameFailed" - > -Vous ignorez déjà ce résident. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="RemoveItemWarn" - > -Si vous supprimez des contenus, vous risquez d'endommager l'objet. Souhaitez-vous supprimer cet objet ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="CantOfferCallingCard" - > -Impossible d'offrir une carte de visite actuellement. Veuillez réessayer dans un moment. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="CantOfferFriendship" - > -Impossible de proposer votre amitié actuellement. Veuillez réessayer dans un moment. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="BusyModeSet" - > -Mode occupé activé. -Les chats et les messages instantanés ne s'afficheront pas. Les messages instantanés génèreront la réponse en mode occupé que vous avez créée. Toutes les offres de téléportation seront refusées. Toutes les offres d'inventaire iront dans la corbeille. - <usetemplate - ignoretext="Lors de l'utilisation du mode Occupé" - name="okignore" - yestext="OK"/> - </notification> - - <notification - - name="JoinedTooManyGroupsMember" - > -Vous appartenez déjà à un nombre élevé de groupes et nous ne pouvez pas en rejoindre un nouveau. Avant de pouvoir rejoindre ce groupe, vous devez en quitter un ou refuser cette offre. -Pour quitter un groupe, sélectionnez l'option Groupe dans le menu Éditer. -[NAME] vous invite à rejoindre un groupe. -[INVITE] - <usetemplate - name="okcancelbuttons" - notext="Refuser" - yestext="Rejoindre"/> - </notification> - - <notification - - name="KickUser" - > -Éjecter cet utilisateur avec quel message ? - <form name="form"> - <input name="message" type="text"> -Un administrateur vous a déconnecté. - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Annuler"/> - </form> - </notification> - - <notification - - name="KickAllUsers" - > -Éjecter tous les résidents actuellement en ligne avec quel message ? - <form name="form"> - <input name="message" type="text"> -Un administrateur vous a déconnecté. - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Annuler"/> - </form> - </notification> - - <notification - - name="FreezeUser" - > -Geler cet utilisateur avec quel message ? - <form name="form"> - <input name="message" type="text"> -Vous avez été gelé. Vous ne pouvez ni bouger ni chatter. Un administrateur va vous envoyer un message instantané (IM). - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Annuler"/> - </form> - </notification> - - <notification - - name="UnFreezeUser" - > -Dégeler cet utilisateur avec quel message ? - <form name="form"> - <input name="message" type="text"> -Vous n'êtes plus gelé. - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Annuler"/> - </form> - </notification> - - <notification - - name="OfferTeleport" - > -Proposez une téléportation avec le message suivant ? - <form name="form"> - <input name="message" type="text"> -On se rejoint à [REGION] ? - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Annuler"/> - </form> - </notification> - - <notification - - name="OfferTeleportFromGod" - > -Demander au résident de venir vous rejoindre ? - <form name="form"> - <input name="message" type="text"> -On se rejoint à [REGION] ? - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Annuler"/> - </form> - </notification> - - <notification - - name="TeleportFromLandmark" - > -Êtes-vous certain de vouloir être téléporté ? - <usetemplate - ignoretext="Lors de la téléportation depuis un repère de l'inventaire" - name="okcancelignore" - notext="Annuler" - yestext="Téléporter"/> - </notification> - - <notification - - label="Envoyer un message à tout le monde dans votre domaine" - name="MessageEstate" - > -Saisissez un message court qui sera envoyé à tous les résidents se trouvant actuellement sur votre domaine. - <form name="form"> - <input name="message" type="text"/> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Annuler"/> - </form> - </notification> - - <notification - - label="Modifier un domaine Linden" - name="ChangeLindenEstate" - > -Vous vous apprêtez à modifier un domaine appartenant aux Lindens (continent, zone réservée aux ados, orientation etc.). - -Cela est extrêmement délicat car l'expérience des résidents est en jeu. Sur le continent, cela modifiera des milliers de régions et sera difficile à digérer pour le serveur. - -Continuer ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - label="Modifier l'accès à un domaine Linden" - name="ChangeLindenAccess" - > -Vous vous apprêtez à modifier la liste d'accès à un domaine appartenant aux Linden (continent, zone réservée aux ados, orientation etc.). - -Cette action est délicate et ne doit être effectuée que pour appeler le hack autorisant des objets/L$ à être transférés à l'intérieur/extérieur de la grille. -Cette action modifiera des milliers de régions et sera difficile à digérer pour le serveur. - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - label="Choisir le domaine" - name="EstateAllowedAgentAdd" - > -Ajouter à la liste des résidents autorisés uniquement pour ce domaine ou pour [ALL_ESTATES] ? - <usetemplate - canceltext="Annuler" - name="yesnocancelbuttons" - notext="Tous les domaines" - yestext="Ce domaine"/> - </notification> - - <notification - - label="Choisir le domaine" - name="EstateAllowedAgentRemove" - > -Supprimer de la liste des résidents autorisés uniquement pour ce domaine ou pour [ALL_ESTATES] ? - <usetemplate - canceltext="Annuler" - name="yesnocancelbuttons" - notext="Tous les domaines" - yestext="Ce domaine"/> - </notification> - - <notification - - label="Choisir le domaine" - name="EstateAllowedGroupAdd" - > -Ajouter à la liste des groupes autorisés uniquement pour ce domaine ou pour [ALL_ESTATES] ? - <usetemplate - canceltext="Annuler" - name="yesnocancelbuttons" - notext="Tous les domaines" - yestext="Ce domaine"/> - </notification> - - <notification - - label="Choisir le domaine" - name="EstateAllowedGroupRemove" - > -Supprimer de la liste des groupes autorisés uniquement pour ce domaine ou pour [ALL_ESTATES] ? - <usetemplate - canceltext="Annuler" - name="yesnocancelbuttons" - notext="Tous les domaines" - yestext="Ce domaine"/> - </notification> - - <notification - - label="Choisir le domaine" - name="EstateBannedAgentAdd" - > -Refuser l'accès à ce domaine uniquement ou à [ALL_ESTATES] ? - <usetemplate - canceltext="Annuler" - name="yesnocancelbuttons" - notext="Tous les domaines" - yestext="Ce domaine"/> - </notification> - - <notification - - label="Choisir le domaine" - name="EstateBannedAgentRemove" - > -Supprimer ce résident de la liste des résidents bannis pour ce domaine uniquement ou pour [ALL_ESTATES] ? - <usetemplate - canceltext="Annuler" - name="yesnocancelbuttons" - notext="Tous les domaines" - yestext="Ce domaine"/> - </notification> - - <notification - - label="Choisir le domaine" - name="EstateManagerAdd" - > -Ajouter un gérant de domaine pour ce domaine uniquement ou pour [ALL_ESTATES] ? - <usetemplate - canceltext="Annuler" - name="yesnocancelbuttons" - notext="Tous les domaines" - yestext="Ce domaine"/> - </notification> - - <notification - - label="Choisir le domaine" - name="EstateManagerRemove" - > -Supprimer le gérant de domaine pour ce domaine uniquement ou pour [ALL_ESTATES] ? - <usetemplate - canceltext="Annuler" - name="yesnocancelbuttons" - notext="Tous les domaines" - yestext="Ce domaine"/> - </notification> - - <notification - - label="Confirmer" - name="EstateKickUser" - > -Éjecter [EVIL_USER] de ce domaine ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="EstateChangeCovenant" - > -Êtes-vous certain de vouloir modifier le règlement du domaine ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="ProblemImportingEstateCovenant" - > -Problème lors de l'importation du règlement du domaine. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="ProblemAddingEstateManager" - > -Problèmes lors de l'ajout d'un nouveau gérant de domaine. Il est possible qu'au moins un des domaines ait une liste de gérants complète. - </notification> - - <notification - - name="ProblemAddingEstateGeneric" - > -Problème lors de l'ajout à la liste de ce domaine. Il est possible qu'au moins un des domaines ait une liste complète. - </notification> - - <notification - - name="UnableToLoadNotecard" - > -Impossible de lire les données de la note actuellement. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="NotAllowedToViewNotecard" - > -Permissions pour afficher la note insuffisantes. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="MissingNotecardAssetID" - > -Les références de la note ne se trouvent pas dans la base de données. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="PublishClassified" - > -Rappel : les frais pour passer des petites annonces ne sont pas remboursables. - -Publier cette petite annonce maintenant pour [AMOUNT] L$ ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - - - <notification - - label="Confirmer le redémarrage" - name="ConfirmRestart" - > -Souhaitez-vous vraiment redémarrer cette région dans 2 minutes ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - label="Envoyer un message à tout le monde dans cette région" - name="MessageRegion" - > -Saisissez une message court qui sera envoyé à tous les résidents se trouvant actuellement dans cette région. - <form name="form"> - <input name="message" type="text"/> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Annuler"/> - </form> - </notification> - - <notification - - label="Bloquer le terraformage" - name="HelpRegionBlockTerraform" - > -Si vous cochez cette case, les propriétaires ne pourront plus terraformer leur terrain, quels que soient leurs paramètres à la section Modifier le terrain. - -Défaut : désactivé - </notification> - - <notification - - label="Interdire le vol" - name="HelpRegionBlockFly" - > -Si vous cochez cette case, les résidents ne pourront plus voler dans cette région, quels que soient leurs paramètres. - -Défaut : désactivé - </notification> - - <notification - - label="Autoriser les dégâts" - name="HelpRegionAllowDamage" - > -Si vous cochez cette case, l'alerte santé est désactivée sur toutes les parcelles quels que soient les paramètres individuels de la parcelle. Si la case n'est pas cochée, les propriétaires de parcelles peuvent quand même activer l'alerte santé de manière individuelle sur leurs parcelles. - -Défaut : désactivé - </notification> - - <notification - - label="Nombre limite d'avatars" - name="HelpRegionAgentLimit" - > -Définit le nombre maximum d'avatars autorisés dans cette région. -La performance peut varier en fonction du nombre d'avatars présents. - -Défaut : 40 - </notification> - - <notification - - label="Bonus objet" - name="HelpRegionObjectBonus" - > -Le bonus objet est le multiplicateur de prims autorisés sur une parcelle donnée. L'échelle autorisée est comprise entre 1 et 10. Lorsque ce chiffre est de 1, chaque parcelle de 512 m² peut contenir 117 objets. S'il est de 2, chaque parcelle peut contenir 234 objets, ou deux fois plus, et ainsi de suite. Le nombre maximum d'objets autorisés dans une région est de 15 000, quel que soit le bonus objet. Attention : si vous définissez un bonus objet et décidez ensuite de le diminuer, cela peut entraîner la suppression ou le renvoi d'objets. - -Défaut : 1.0 - </notification> - - - - <notification - - label="Interdire les bousculades" - name="HelpRegionRestrictPushObject" - > -Cette case permet de restreindre les bousculades dans toute une région. -Lorsqu'elle est cochée, les résidents ne peuvent être bousculés que par eux-mêmes ou par le propriétaire de la région. -(Bousculer fait référence à la fonction LSL llPushObjet().) - -Défaut : Désactivé - </notification> - - <notification - - label="Fusionner/Diviser des parcelles" - name="HelpParcelChanges" - > -Cette case permet de choisir si les parcelles n'appartenant pas au gérant du domaine peuvent ou pas être fusionnées ou divisées. -Si cette case n'est pas cochée : - * Seuls les propriétaires ou gérants de domaine peuvent fusionner ou diviser des parcelles. - * Ils ne peuvent fusionner ou diviser que les parcelles du propriétaire, - ou celles d'un groupe dans lequel il ont les pouvoirs nécessaires. -Si cette case est cochée : - * Tous les propriétaires peuvent fusionner ou diviser leurs parcelles. - * Pour les parcelles du groupe, les résidents avec les pouvoirs nécessaires - peuvent fusionner ou diviser les parcelles. - -Défaut : Cochée - </notification> - - <notification - - label="Ne pas montrer dans les résultats de recherche" - name="HelpRegionSearch" - > -Si vous cochez cette option, les propriétaires ne pourront pas faire apparaître leurs parcelles dans les résultats de recherche. -Défaut : Désactivé - </notification> - - <notification - - label="Maturité de la région modifiée" - name="RegionMaturityChange" - > -Le niveau de maturité de cette région a été mis à jour. -Ce changement n'apparaîtra pas immédiatement sur la carte. - </notification> - - <notification - - label="Revente de terrain" - name="HelpRegionLandResell" - > -Les propriétaires et gérants de domaine peuvent vendre n'importe quel terrain appartenant à un propriétaire de domaine. -Si cette option n'est pas cochée, les acheteurs ne peuvent pas revendre leur terrain dans cette région. -Si cette option est cochée, les acheteurs peuvent revendre leur terrain dans cette région. - -Défaut : Ne pas autoriser - </notification> - - <notification - - label="Désactiver les scripts" - name="HelpRegionDisableScripts" - > -Lorsque la performance d'une sim est faible, cela vient peut-être d'un script. Ouvrez la section Statistiques (Ctrl-Maj-1). Consultez le Simulateur de propriétés physiques FPS. -S'il est en dessous de 45, ouvrez le panel Heure situé en bas de la barre de statistiques. Si le script Heure indique 25mn ou moins, cliquez sur le bouton Afficher les scripts fréquemment utilisés. Vous verrez le nom et l'emplacement des scripts qui sont peut-être à l'origine du problème. - -Si vous cochez la case Désactiver les scripts et que vous appuyez sur Appliquer, tous les scripts de cette région seront temporairement désactivés. Vous devrez peut-être faire cela pour aller dans un endroit où se trouve un script fréquemment utilisé. Une fois arrivé, cherchez à savoir si le script est bien à l'origine du problème. Pour cela, vous devrez peut-être contacter le propriétaire du script ou bien supprimer ou renvoyer l'objet. -Décochez la case Désactiver le script, puis cliquez sur Appliquer pour réactiver tous les scripts dans la région. - -Défaut : désactivé - </notification> - - <notification - - label="Désactiver les collisions" - name="HelpRegionDisableCollisions" - > -Lorsque la performance d'une sim est faible, cela vient peut-être des objets physiques. -Ouvrez la barre de statistiques (Ctrl-Maj-1). Consultez le Simulateur de propriétés physiques FPS. S'il est en dessous de 45, ouvrez le panel Heure situé en bas de la barre de statistiques. Si le script Heure indique 25mn ou moins, cliquez sur le bouton Afficher les objets souvent responsables de collision. -Vous verrez le nom et l'emplacement des objets physiques qui sont peut-être à l'origine du problème. - -Si vous décochez la case Désactiver les collisions et que vous appuyez sur Appliquer, toutes les collisions entre objets seront désactivées. Vous devrez peut-être faire cela pour aller dans un endroit où se trouve un objet souvent responsable de collision. Une fois arrivé, cherchez à savoir si l'objet est sans cesse en collision avec d'autres objets. Pour cela, vous devrez peut-être contacter le propriétaire de l'objet ou bien supprimer ou renvoyer l'objet. -Décochez la case Désactiver les collision, puis cliquez sur Appliquer pour réactiver les collisions dans la région. - -Défaut : désactivé - </notification> - - <notification - - label="Désactiver les propriétés physiques" - name="HelpRegionDisablePhysics" - > -L'option Désactiver les propriétés physiques est similaire à l'option Désactiver les collisions sauf qu'elle englobe toutes les simulations physiques. Cela signifie que les objets n'entreront plus en collision et que les avatars ne pourront plus bouger. - -Vous ne devriez utiliser cette option que lorsque l'option Désactiver les collisions ne rend pas sufisamment de performance à la région pour résoudre un problème de physique ou trouver les objets souvent responsables de collisions. - -Une fois que vous avez fini, n'oubliez pas de réactiver les propriétés physiques sinon vos avatars ne pourront pas bouger. - -Défaut : désactivé - </notification> - - <notification - - label="Objets souvent responsables de collision" - name="HelpRegionTopColliders" - > -Montre une liste des objets qui ont le plus de chances d'entrer en collision avec d'autres objets. Ces objets peuvent ralentir votre performance. Sélectionnez Affichage > Statistiques et regardez sous Simulator > Time > Sim Time (Physics) pour voir si les propriétés physiques prennent plus de 20 ms. - </notification> - - <notification - - label="Scripts souvent utilisés" - name="HelpRegionTopScripts" - > -Dresse une liste des objets qui passent le plus de temps à exécuter des scripts LSL. Ces objets peuvent ralentir votre performance. -Sélectionnez Affichage > Statistiques et regardez sous Simulator > Time > Script Time pour voir si les scripts prennent plus de 25 ms. - </notification> - - <notification - - label="Redémarrer la région" - name="HelpRegionRestart" - > -Redémarre le serveur en charge de la région après un avertissement de deux minutes. Tous les résidents dans cette région seront déconnectés. Les données de la région seront sauvegardées et réapparaîtront au bout de 90 secondes. - -Le redémarrage la région ne permet pas de résoudre la plupart des problèmes de performance. Les redémarrages ne doivent avoir lieu que si cela est vraiment nécessaire. - </notification> - - <notification - - label="Niveau de l'eau" - name="HelpRegionWaterHeight" - > -Il s'agit de la hauteur de l'eau en mètres. -Si ce paramètre est différent de 20 et que vous avez de l'eau adjacente au bord du monde ou de l'eau « vide », il y aura un espace vide visible. - - -Défaut : 20 - </notification> - - <notification - - label="Surélévation du terrain" - name="HelpRegionTerrainRaise" - > -Il s'agit de la distance (en mètres) à laquelle les propriétaires de parcelle peuvent surélever leur terrain, par rapport au terrain « figé » dont la hauteur est fixée par défaut. - -Défaut : 4 - </notification> - - <notification - - label="Abaisser le terrain" - name="HelpRegionTerrainLower" - > -Il s'agit de la distance (en mètres) à laquelle les propriétaires de parcelle peuvent abaisser leur terrain, par rapport au terrain « figé » dont la hauteur est fixée par défaut. - -Défaut : -4 - </notification> - - <notification - - label="Charger le terrain au format RAW" - name="HelpRegionUploadRaw" - > -Ce bouton permet de charger un fichier .RAW dans la région où vous vous trouvez. -Ce fichier doit avoir les bonnes dimensions (RGB, 256 x 256) et 13 canaux. Le meilleur moyen de créer un fichier terrain est de télécharger le fichier RAW existant. Un bon moyen est de modifier le canal rouge (hauteur terrain) et de le charger. - -Le chargement peut prendre jusqu'à 45 secondes. Veuillez noter que le chargement d'un fichier terrain ne déplacera pas les objets qui se trouvent sur le terrain, mais seulement le terrain et les permissions associées aux parcelles. Certains objets risquent d'aller sous la terre. - -Pour en savoir plus sur la modification de la hauteur des terrains d'une région, consultez l'Aide F1. - </notification> - - <notification - - label="Télécharger le terrain au format RAW" - name="HelpRegionDownloadRaw" - > -Ce bouton permet de télécharger un fichier contenant les données relatives à la hauteur du terrain, dimensions de la parcelle, les mises en vente ainsi que certaines permissions relatives à la parcelle pour cette région. Lorsque vous ouvrez le fichier avec un programme tel que Photoshop, vous devez indiquer les dimensions du document qui sont les suivantes : RGB, 256 x 256 avec 13 canaux. Le fichier terrain ne peut pas être ouvert différemment. - -Pour en savoir plus sur la modification de la hauteur des terrains d'une région, consultez l'Aide F1. - </notification> - - <notification - - label="Utiliser le soleil du domaine" - name="HelpRegionUseEstateSun" - > -Si vous cochez cette case, la position du soleil dans cette région sera la même que dans le reste du domaine. - -Défaut : activé - </notification> - - <notification - - label="Soleil fixe" - name="HelpRegionFixedSun" - > -Si vous cochez cette case, la position du soleil se fixe sur celle du curseur Phase et le soleil arrête de bouger. - -Défaut : désactivé - </notification> - - <notification - - label="Figer le terrain" - name="HelpRegionBakeTerrain" - > -Ce bouton permet d'enregistrer la forme actuelle du terrain comme nouvelle forme par défaut pour la région. Une fois figé, le terrain peut reprendre la forme enregistrée à partir de l'option Rétablir le terrain à la section Modifer le terrain. Le terrain figé est aussi le point de référence pour les limites de surélévation et d'abaissement. - </notification> - - <notification - - label="Gérants du domaine" - name="HelpEstateEstateManager" - > -Un gérant de domaine est un résident chargé du contrôle de la région et des paramètres du domaine. Un gérant de domaine peut modifier tous les paramètres, mais ne peut pas charger, télécharger ni figer de terrain. Un des pouvoirs principaux du gérant est de bannir ou d'autoriser un résident sur votre domaine. - -Seuls les propriétaires de domaine peuvent ajouter ou supprimer des gérants de domaine. Lorsque vous choisissez un gérant de domaine, prenez un résident en qui vous avez confiance car vous serez en quelque sorte responsable de ses actions. - </notification> - - <notification - - label="Utiliser le temps universel" - name="HelpEstateUseGlobalTime" - > -Cette case permet au soleil de votre domaine de suivre la position du soleil sur les domaines Linden du continent. - -Défaut : activé - </notification> - - <notification - - label="Soleil fixe" - name="HelpEstateFixedSun" - > -Si vous cochez cette case, la position du soleil se fixe sur celle du curseur Phase et le soleil arrête de bouger. - </notification> - - <notification - - label="Accès public" - name="HelpEstateExternallyVisible" - > -Cette option vous permet de choisir quels résidents d'autres domaines peuvent pénétrer sur votre domaine sans devoir être ajoutés à la liste d'accès. - -Défaut : activé - </notification> - - <notification - - label="Autoriser la téléportation directe" - name="HelpEstateAllowDirectTeleport" - > -Lorsqu'elle est cochée, cette option permet aux résidents d'être téléportés à n'importe quel endroit sur votre domaine. Lorsque cette option n'est pas cochée, les résidents sont téléportés au téléhub le plus proche. - -Défaut : désactivé - </notification> - - <notification - - label="Autoriser l'accès" - name="HelpEstateAllowResident" - > -L'accès à ce domaine sera réservé aux résidents figurant dans cette liste et aux groupes ci-dessous. -Cette option n'est disponible que lorsque la case Accès public est décochée. - </notification> - - <notification - - label="Autoriser l'accès de groupe" - name="HelpEstateAllowGroup" - > -L'accès à ce domaine sera réservé aux groupes figurant dans cette liste et aux résidents ci-dessous. Cette option n'est disponible que lorsque la case Accès public est décochée. - </notification> - - <notification - - label="Adresse e-mail où signaler une infraction" - name="HelpEstateAbuseEmailAddress" - > -Si vous utilisez une adresse e-mail valide, les rapports d'infraction de ce domaine iront à cette adresse. -Si vous laissez ce champ vide, les rapports d'infraction seront envoyés à Linden Lab uniquement. - </notification> - - <notification - - label="Refuser l'accès" - name="HelpEstateBanResident" - > -Les résidents figurant sur cette liste ne peuvent pas pénétrer sur votre domaine, quels que soient les autres paramètres. - </notification> - - <notification - - label="Autoriser les chats vocaux" - name="HelpEstateVoiceChat" - > -Les parcelles de ce domaine peuvent avoir leurs propres canaux vocaux, ce qui permet aux résidents de communiquer avec leurs voisins. - -Défaut : désactivé - </notification> - - <notification - - label="Versions de voix non compatibles" - name="VoiceVersionMismatch" - > -Cette version de Second Life n'est pas compatible avec la fonctionnalité de chat vocal dans cette région. Vous devez mettre à jour Second Life pour que le chat vocal fonctionne correctement. - </notification> - - <notification - - label="Règlement du domaine" - name="HelpEstateCovenant" - > -Définir un règlement pour le domaine vous permet de vendre les parcelles de ce domaine. S'il n'y a pas de règlement, vous ne pouvez pas vendre le terrain. Si vous ne souhaitez pas indiquer de règlement ou donner de conseils aux acheteurs, laissez la section relative au règlement vide. - -Un règlement sert à communiquer des règles, des lignes directrices ou informations culturelles, ou simplement à expliquer vos attentes à un acheteur potentiel. Il peut s'agir de régulations concernant la construction, les options de paiement ou tout autre information que vous souhaitez faire passer au résident avant que l'achat n'ait lieu. - -L'acheteur est tenu d'accepter le règlement en cochant une case avant de pouvoir finaliser l'achat. Les règlements, lorsqu'ils existent, apparaissent toujours dans la boîte de dialogue À propos du terrain. - </notification> - - <notification - - label="Impossible d'acheter des objets" - name="BuyObjectOneOwner" - > -Impossible d'acheter simultanément des objets de propriétaires différents. -Veuillez ne sélectionner qu'un seul objet. - </notification> - - <notification - - label="Impossible d'acheter des contenus" - name="BuyContentsOneOnly" - > -Impossible d'acheter les contenus de plus d'un objet à la fois. -Veuillez ne sélectionner qu'un seul objet. - </notification> - - <notification - - label="Impossible d'acheter des contenus" - name="BuyContentsOneOwner" - > -Impossible d'acheter simultanément des objets de propriétaires différents. -Veuillez ne sélectionner qu'un seul objet. - </notification> - - <notification - - name="BuyOriginal" - > -Acheter l'objet original pour [PRICE] L$ à [PRICE] ? -Vous deviendrez le propriétaire de cet objet. -Vous pourrez : - Modifier : [MODIFYPERM] - Copier : [COPYPERM] - Revendre ou donner : [RESELLPERM] - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="BuyOriginalNoOwner" - > -Acheter l'objet original pour [PRICE] L$ ? -Vous deviendrez le propriétaire de cet objet. -Vous pourrez : - Modifier : [MODIFYPERM] - Copier : [COPYPERM] - Revendre ou donner : [RESELLPERM] - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="BuyCopy" - > -Acheter une copie pour [PRICE] L$ à [OWNER] ? -L'objet sera copié dans votre inventaire. -Vous pourrez : - Modifier : [MODIFYPERM] - Copier : [COPYPERM] - Revendre ou donner : [RESELLPERM] - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="BuyCopyNoOwner" - > -Acheter une copie pour [PRICE] L$ ? -L'objet sera copié dans votre inventaire. -Vous pourrez : - Modifier : [MODIFYPERM] - Copier : [COPYPERM] - Revendre ou donner : [RESELLPERM] - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="BuyContents" - > -Acheter des contenus pour [PRICE] L$ à [OWNER] ? -Ils seront copiés dans votre inventaire. - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="BuyContentsNoOwner" - > -Acheter des contenus pour [PRICE] L$ ? -Ils seront copiés dans votre inventaire. - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmPurchase" - > -Suite à cette transaction, vous allez : -[ACTION] - -Êtes-vous certain de vouloir effectuer cette transaction ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmPurchasePassword" - type="password"> -Suite à cette transaction, vous allez : -[ACTION] - -Êtes-vous certain de vouloir effectuer cette transaction ? -Veuillez saisir à nouveau votre mot de passe et cliquer sur OK. - <form name="form"> - <button - name="ConfirmPurchase" - text="OK"/> - <button - name="Cancel" - text="Annuler"/> - </form> - </notification> - - <notification - - name="SetPickLocation" - > -Remarque : -Vous avez mis à jour l'emplacement de ce favori mais les autres détails resteront inchangés. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="MoveInventoryFromObject" - > -Vous avez sélectionné des objets de l'inventaire qui ne peuvent pas être copiés. -Ces objets seront déplacés vers votre inventaire, et non pas copiés. - -Déplacer les objets de l'inventaire ? - <usetemplate - ignoretext="Lors du transfert d'un inventaire non reproductible depuis des objets" - name="okcancelignore" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="MoveInventoryFromScriptedObject" - > -Vous avez sélectionné des objets de l'inventaire qui ne peuvent pas être copiés. Ces objets seront déplacés vers votre inventaire, et non pas copiés. -Étant donné que l'objet est scripté, déplacer ces objets vers votre inventaire risque de causer des problèmes au niveau du script. - -Déplacer les objets de l'inventaire ? - <usetemplate - ignoretext="Lors du transfert d'un inventaire non reproductible depuis des objets scriptés" - name="okcancelignore" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="ClickActionNotPayable" - > -Avertissement : l'action du clic Payer l'objet a été défini mais ne fonctionnera que si un script est ajouté avec l'event money(). - <form name="form"> - <ignore name="ignore" - text="Lors du paramétrage de la fonction Payer sur des objets sans événement monétaire"/> - </form> - </notification> - - <notification - - name="OpenObjectCannotCopy" - > -Vous n'êtes autorisé à copier aucun élément dans cet objet. - </notification> - - <notification - - name="WebLaunchAccountHistory" - > -Aller sur le site de Second Life pour consulter l'historique de votre compte ? - <usetemplate - ignoretext="Lors du chargement de la page web contenant l'historique de votre compte" - name="okcancelignore" - notext="Annuler" - yestext="Aller sur cette page"/> - </notification> - - <notification - - name="ClickOpenF1Help" - > -Visiter les pages d'aide de Second Life ? - <usetemplate - ignoretext="Lors de la visite des pages d'aide de Second Life" - name="okcancelignore" - notext="Annuler" - yestext="Aller"/> - </notification> - - <notification - - name="ConfirmQuit" - > -Êtes-vous certain de vouloir quitter ? - <usetemplate - ignoretext="Lorsque vous quittez Second Life" - name="okcancelignore" - notext="Continuer" - yestext="Quitter"/> - </notification> - - <notification - - name="HelpReportAbuseEmailLL" - > -Utilisez cet outil pour signaler des infractions aux Conditions d'utilisation et aux Règles de la communauté. Voir : - -http://secondlife.com/corporate/tos.php -http://secondlife.com/corporate/cs.php - -Lorsqu'elles sont signalées, toutes les infractions aux Conditions d'utilisation et aux Règles de la communauté font l'objet d'une enquête et sont résolues. Pour accéder aux détails de la résolution d'un incident, allez sur : - -http://secondlife.com/support/incidentreport.php - </notification> - - <notification - - name="HelpReportAbuseEmailEO" - > -Important : ce rapport ira au propriétaire de la région dans laquelle vous êtes et non à Linden Lab. - -Pour aider les résidents et les visiteurs, le propriétaire de la région dans laquelle vous êtes a choisi de recevoir et de s'occuper de tous les rapports envoyés à partir de cette région. Linden Lab n'enquêtera pas sur les rapports que vous envoyez à partir de cet endroit. - -Le propriétaire de la région traitera les rapports en fonction des règles de cette région, comme indiqué dans le réglement du domaine. -(Les réglements sont visibles à partir du menu Monde > À propos du terrain.) - -La résolution de ce rapport ne s'applique qu'à cette région ; L'accès aux autres endroits de Second Life ne sera pas affecté par les résultats de cette enquête. Seul Linden Lab peut interdire l'accès à l'ensemble de Second Life. - </notification> - - <notification - - name="HelpReportBug" - > -N'utilisez cet outil que pour signaler des problèmes techniques et soyez aussi précis que possible. -Vous pouvez répondre à l'e-mail automatique pour ajouter des détails à votre rapport. - -Tous les bugs signalés sont reproduits et évalués. Aucune réponse ne sera envoyée par e-mail. - -Si vous avez un problème technique, veuillez contacter le service clientèle à : - -http://secondlife.com/community/support.php - -Remarque : les rapports incomplets ne feront pas l'objet d'une enquête. - </notification> - - <notification - - name="HelpReportAbuseSelectCategory" - > -Veuillez choisir une catégorie pour ce rapport d'infraction. -Le choix d'une catégorie nous permet de traiter les rapports d'infraction plus rapidement. - </notification> - - <notification - - name="HelpReportBugSelectCategory" - > -Veuillez choisir une catégorie pour ce bug. -Le choix d'une catégorie nous permet de traiter les bugs plus rapidement. - </notification> - - <notification - - name="HelpReportAbuseAbuserNameEmpty" - > -Veuillez saisir le nom du contrevenant. -Lorsque nous avons le nom du contrevenant, nous sommes en mesure de traiter les rapports plus rapidement. - </notification> - - <notification - - name="HelpReportAbuseAbuserLocationEmpty" - > -Veuillez indiquer l'endroit où l'infraction a eu lieu. -Les informations précises et exactes nous permettent de traiter les rapports plus rapidement. - </notification> - - <notification - - name="HelpReportAbuseSummaryEmpty" - > -Veuillez saisir un récapitulatif de l'infraction. -Les récapitulatifs précis nous permettent de traiter les rapports plus rapidement. - </notification> - - <notification - - name="HelpReportBugSummaryEmpty" - > -Veuillez saisir un récapitulatif du bug. -Les récapitulatifs précis nous permettent de résoudre les bugs plus rapidement. - </notification> - - <notification - - name="HelpReportAbuseDetailsEmpty" - > -Veuillez saisir une description détaillée de l'infraction. -Soyez aussi précis que possible et essayez de fournir des noms ainsi que des détails sur l'incident que vous signalez. -Les descriptions précises nous permettent de traiter les rapports plus rapidement. - </notification> - - <notification - - name="HelpReportBugDetailsEmpty" - > -Veuillez saisir une description détaillée du bug. -Soyez aussi spécifique que possible et essayez d'indiquer les étapes à suivre pour reproduire le bug. -Les descriptions précises nous permettent de résoudre les bugs plus rapidement. - </notification> - - <notification - - name="HelpReportAbuseContainsCopyright" - > -Cher résident, - -Il semble que vous souhaitiez reporter une infraction à des droits de propriété intellectuelle. Pour signaler correctement cette infraction : - -(1) Remplissez un rapport d'infraction. Vous pouvez soumettre un rapport d'infraction si vous pensez qu'un résident exploite le système de permissions de Second Life, par exemple en utilisant un CopyBot ou des outils similaires pour enfreindre des droits de propriété intellectuelle. Notre équipe chargée des infractions mènera une enquête et prendra les mesures nécessaires à l'encontre du résident non respectueux des Conditions d'utilisation ou des règles de la communauté. Sachez toutefois que l'équipe chargée des infractions ne supprimera pas de contenu à l'intérieur de Second Life. - -(2) Demandez à ce que du contenu à l'intérieur de Second Life soit supprimé. Pour demander à ce que du contenu soit supprimé de Second Life, vous devez soumettre un rapport d'infraction valide, tel que fourni dans notre Règlement contre les violations des droit d'auteurs (DMCA), à http://secondlife.com/corporate/dmca.php. - -Si vous souhaitez toujours reporter cette infraction, veuillez fermer cette fenêtre et soumettre votre rapport. Vous devrez peut-être sélectionner la catégorie CopyBot ou exploitation abusive des permissions. - -Merci, - -Linden Lab - </notification> - - <notification - - name="FailedRequirementsCheck" - > -Les composantes requises suivantes ne se trouvent pas dans [FLOATER]: -[COMPONENTS] - </notification> - - <notification - - label="Remplacer la pièce-jointe existante" - name="ReplaceAttachment" - > -Vous avez déjà un objet sur cette partie du corps. -Voulez-vous le remplacer par l'objet sélectionné ? - <form name="form"> - <ignore name="ignore" - save_option="true" - text="Lors du remplacement de pièces-jointes existantes"/> - <button - ignore="Remplacer automatiquement" - name="Yes" - text="OK"/> - <button - ignore="Ne jamais remplacer" - name="No" - text="Annuler"/> - </form> - </notification> - - <notification - - label="Réponse si occupé(e)" - name="BusyModePay" - > -Vous êtes en mode occupé et vous ne recevrez donc aucun objet en échange de ce paiement. - -Souhaitez-vous quitter le mode occupé avant de terminer cette transaction ? - <form name="form"> - <ignore name="ignore" - save_option="true" - text="Lorsque vous envoyez de l'argent à une personne en mode Occupé"/> - <button - ignore="Toujours quitter le mode occupé" - name="Yes" - text="OK"/> - <button - ignore="Ne jamais quitter le mode occupé" - name="No" - text="Annuler"/> - </form> - </notification> - - <notification - - name="ConfirmEmptyTrash" - > -Êtes-vous certain de vouloir supprimer le contenu de votre corbeille de manière permanente  ? - <usetemplate - ignoretext="Lorsque vous videz la corbeille de l'inventaire" - name="okcancelignore" - notext="Annuler" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmClearBrowserCache" - > -Êtes-vous certain de vouloir vider le cache de votre navigateur ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="Oui"/> - </notification> - - <notification - - name="ConfirmClearCookies" - > -Êtes-vous certain de vouloir supprimer vos cookies ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="Oui"/> - </notification> - - <notification - - name="ConfirmClearMediaUrlList" - > -Êtes-vous certain de vouloir supprimer la liste des URL enregistrées ? - <usetemplate - name="okcancelbuttons" - notext="Annuler" - yestext="Oui"/> - </notification> - - <notification - - name="ConfirmEmptyLostAndFound" - > -Êtes-vous certain de vouloir supprimer le contenu de votre dossier Objets trouvés de manière permanente ? - <usetemplate - ignoretext="Losque vous videz le dossier Objets trouvés dans votre inventaire" - name="okcancelignore" - notext="Non" - yestext="Oui"/> - </notification> - - <notification - - name="CopySLURL" - > -La SLURL suivante a été copiée dans votre presse-papier : - [SLURL] - -Mettez-la dans une page web pour permettre aux autres résidents d'accéder facilement à cet endroit ou bien collez-la dans la barre d'adresse de votre navigateur. - <form name="form"> - <ignore name="ignore" - text="Lorsque vous copiez une SLURL dans votre presse-papier"/> - </form> - </notification> - - <notification - - name="GraphicsPreferencesHelp" - > -Ce menu permet de contrôler la taille de la fenêtre et la résolution, ainsi que la qualité des graphiques client. Les préférences de l'interface graphique vous permettent de choisir entre 4 niveaux de graphiques : Faible, Moyen, Élevé et Ultra. Personnalisez vos options graphiques en cliquant sur le bouton Personnaliser et en changeant les paramètres suivants : - -Effets : active ou désactive les différents types de shaders pixels. - -Objets reflétés : définit le type d'objets reflétés dans l'eau. - -Rendu de l'avatar : définit les options qui influent sur la manière dont le client rend les avatars. - -Limite d'affichage : la distance à laquelle vous voyez les objets s'afficher dans la scène. - -Nombre de particules max. : définit le nombre maximum de particules que vous pouvez voir à la fois sur votre écran. - -Qualité post-traitement : définit la résolution du rayonnement. - -Détails des rendus : définit le niveau de détail ou le nombre de polygones utilisés dans le rendu de certains objets. Une valeur plus élevée prendra plus de temps pour apparaître, mais permettra d'avoir des objets plus détaillés. - -Sources lumineuses : définit les types de lumières que vous souhaitez faire apparaître. - -Rendu du terrain : définit le niveau de détail que vous souhaitez utiliser dans la texture du terrain. - </notification> - - <notification - - name="WLSavePresetAlert" - > -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 éditer 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="HelpEditSky" - > -Pour créer et sauvegarder plusieurs ciels, utilisez les curseurs WindLight. - </notification> - - <notification - - name="HelpEditDayCycle" - > -Choisissez quel ciel apparaît au cours de la journée. - </notification> - - <notification - - name="EnvSettingsHelpButton" - > -Ces paramètres permettent de modifier l'environnement local sur votre ordinateur. Pour que vous ayez accès à tous les paramètres, votre carte graphique doit prendre en charge les effets atmosphériques. - -Pour changer les différentes phases de la journée sur votre visualisateur, utilisez le curseur Heure de la journée. - -Le curseur Couverture nuageuse permet de contrôler le nombre de nuages dans le ciel. - -L'option Couleur de l'eau vous permet de modifier la couleur de l'eau grâce au sélecteur de couleurs. - -Le curseur Brouillard dans l'eau permet de contrôler la densité du brouillard sous l'eau. - -Pour synchroniser l'heure du jour sur celle de la région, cliquez sur Utiliser heure domaine. - -En cliquant sur le bouton Ciel Avancé, vous aurez accès à tous les réglages relatifs au ciel. - -En cliquant sur le bouton Eau Avancée, vous aurez accès à tous les réglages relatifs à l'eau. - </notification> - - <notification - - name="HelpDayCycle" - > -L'éditeur du cycle du jour vous permet de contrôler le ciel au cours du cycle jour/nuit de second Life. C'est ce même cycle qui est contrôlé par le curseur Heure de la journée dans l'éditeur d'environnement basique. - -L'éditeur du jour fonctionne grâce au réglage d'images-clés. Ces images-clés sont représentées par les marques grises sur la ligne du temps et ont des préréglages qui leurs sont associées. Au cours de la journée et de la nuit, le ciel WindLight s'anime en passant d'une clé à l'autre. - -La flèche jaune au dessus de la ligne du temps représente votre vue actuelle, basée sur l'heure de la journée. Cliquez et faites glisser pour voir l'animation au cours de votre journée. Ajoutez ou supprimez des clés en appuyant sur les boutons Ajouter clé ou Supprimer clé, à droite de la ligne du temps. - -Vous pouvez définir la position d'une clé en la faisant glisser le long de la ligne du temps ou en définissant manuellement ses valeurs dans la section Réglages des images-clés. Dans cette même section, vous pouvez associer chaque clé au préréglage WindLight respectif. - -La Durée du cycle contrôle la durée d'une « journée ». Si vous choisissez une valeur basse (2mn par exemple), cela signifie que toutes les animations de votre journée de 24h se dérouleront en 2mn seulement ! Une fois satisfait de vos choix, utilisez les boutons Jouer et Stop ! pour prévisualiser les résultats. Pour voir l'animation, vous pouvez aussi bouger la flèche jaune au dessus de la ligne du temps. Si vous sélectionnez l'option Utiliser heure domaine, vous synchronisez la durée de votre journée et votre heure avec celle du cycle du jour du domaine. - -Une fois que vous êtes satisfait de votre Cycle du jour, vous pouvez le sauvegarder et le charger grâce aux boutons Enregistrer jour test et Charger Jour Test. Veuillez noter que pour l'instant, nous ne pouvez avoir qu'un seul Cycle du jour. - </notification> - - <notification - - name="HelpBlueHorizon" - > -Utilisez les curseurs Rouge/Vert/Bleu (RVB) pour ajuster la couleur du ciel. Pour déplacer les trois curseurs en même temps, utilisez le curseur Intensité. - </notification> - - <notification - - name="HelpHazeHorizon" - > -Le paramètre Quantité de brume est l'un des plus utiles pour ajuster l'exposition lumineuse de la scène. -Il permet de simuler de nombreux paramètres d'exposition, tels que les voiles blancs créés par le soleil ou des lumières plus foncées. - </notification> - - <notification - - name="HelpBlueDensity" - > -La Densité du bleu affecte la saturation générale des couleurs du ciel et du brouillard. Si vous déplacez le curseur Intensité (I) vers la droite, les couleurs deviennent plus vives et plus vibrantes. Si vous le déplacez complètement à gauche, les couleurs deviennent plus fades, puis finalement noires et blanches. Pour paramétrer avec précision la couleur du ciel, vous pouvez contrôler chacun des éléments de la saturation à l'aide des curseurs Rouge/Vert/Bleu (RVB). - </notification> - - <notification - - name="HelpHazeDensity" - > -Le paramètre Densité de la brume permet de contrôler le niveau de brume grisâtre dans l'atmosphère. Ce paramètre est utile pour simuler les scènes dans lesquelles il y a beaucoup de fumée et de substances polluantes émises par l'homme. Il est également utile pour simuler le brouillard et la brume. - </notification> - - <notification - - name="HelpDensityMult" - > -Utilisez le Multiplicateur de densité pour modifier la densité atmosphérique générale. Une valeur basse donne l'impression d'un air « léger » alors qu'une valeur élevée donne l'impression d'un air « lourd » et enfumé. - </notification> - - <notification - - name="HelpDistanceMult" - > -Ajuste la distance perçue par WindLight. -La valeur zéro désactive l'influence de WindLight sur le terrain et les objets. -Les valeurs supérieures à 1 simulent des distances plus importantes pour des effets atmosphériques plus épais. - </notification> - - <notification - - name="HelpMaxAltitude" - > -L'Altitude max. ajuste les calculs de WindLight lors de la computation de la lumière atmosphérique. Quand la fin de la journée approche, il est utile pour ajuster la « profondeur » du coucher de soleil. - </notification> - - <notification - - name="HelpSunlightColor" - > -Ajuste la couleur et l'intensité de la lumière directe de la scène. - </notification> - - <notification - - name="HelpSunAmbient" - > -Ajuste la couleur et l'intensité de la lumière atmosphérique ambiante. - </notification> - - <notification - - name="HelpSunGlow" - > -Le curseur Taille contrôle la taille du soleil. -Le curseur Netteté permet de rendre le soleil plus ou moins flou dans le ciel. - </notification> - - <notification - - name="HelpSceneGamma" - > -Ajuste la distribution de clair et de foncé sur l'écran. - </notification> - - <notification - - name="HelpStarBrightness" - > -Vous permet de contrôler l'intensité des étoiles dans le ciel. - </notification> - - <notification - - name="HelpTimeOfDay" - > -Contrôle la position du soleil dans le ciel. -Même chose que l'élévation. - </notification> - - <notification - - name="HelpEastAngle" - > -Contrôle la position du soleil dans le ciel. -Même chose que l'azimut. - </notification> - - <notification - - name="HelpCloudColor" - > -Modifie la couleur des nuages. Il est recommandé de laisser les nuages en blanc mais vous pouvez aussi faire preuve de créativité... - </notification> - - <notification - - name="HelpCloudDetail" - > -Contrôle le détail de l'image placée sur l'image du nuage principal. X et Y contrôlent sa position. D (Densité) permet de rendre les nuages plus ou moins pleins ou plus ou moins fracturés. - </notification> - - <notification - - name="HelpCloudDensity" - > -Vous permet de contrôler la position des nuages avec les curseurs X et Y ainsi que leur densité avec le curseur D. - </notification> - - <notification - - name="HelpCloudCoverage" - > -Contrôle la surface du ciel couverte par les nuages. - </notification> - - <notification - - name="HelpCloudScale" - > -Contrôle l'échelle de l'image des nuages sur le dôme du ciel. - </notification> - - <notification - - name="HelpCloudScrollX" - > -Contrôle la vitesse des nuages sur l'axe des X. - </notification> - - <notification - - name="HelpCloudScrollY" - > -Contrôle la vitesse des nuages sur l'axe des Y. - </notification> - - <notification - - name="HelpClassicClouds" - > -Cochez cette option pour utiliser les anciens nuages de Second Life en plus des nuages WindLight. - </notification> - - <notification - - name="HelpWaterFogColor" - > -Permet de sélectionner la couleur du brouillard sous l'eau. - </notification> - - <notification - - name="HelpWaterFogDensity" - > -Contrôle la densité du brouillard sous l'eau, ainsi que votre visibilité. - </notification> - - <notification - - name="HelpUnderWaterFogMod" - > -Modifie l'effet créé par l'option Densité du brouillard pour contrôler votre visibilité quand votre avatar est sous l'eau. - </notification> - - <notification - - name="HelpWaterGlow" - > -Contrôle l'éclat de l'eau à la surface. - </notification> - - <notification - - name="HelpWaterNormalScale" - > -Contrôle l'échelle des trois vaguelettes qui forment l'eau. - </notification> - - <notification - - name="HelpWaterFresnelScale" - > -Contrôle la quantité de lumière réfléchie à des angles différents. - </notification> - - <notification - - name="HelpWaterFresnelOffset" - > -Contrôle l'intensité de la lumière réfléchie. - </notification> - - <notification - - name="HelpWaterScaleAbove" - > -Contrôle la quantité de lumière réfractée lorsque votre avatar regarde au dessus de l'eau. - </notification> - - <notification - - name="HelpWaterScaleBelow" - > -Contrôle la quantité de lumière réfractée lorsque votre avatar est sous l'eau. - </notification> - - <notification - - name="HelpWaterBlurMultiplier" - > -Contrôle le mélange reflets/vagues. - </notification> - - <notification - - name="HelpWaterNormalMap" - > -Contrôle quelle normal map est posée sur l'eau pour déterminer la réflection/réfraction. - </notification> - - <notification - - name="HelpWaterWave1" - > -Contrôle dans quelle direction et à quelle vitesse la version grande échelle de la normal map se déplace sur l'axe des X et l'axe des Y. - </notification> - - <notification - - name="HelpWaterWave2" - > -Contrôle dans quelle direction et à quelle vitesse la version grande échelle de la normal map se déplace sur l'axe des X et l'axe des Y. - </notification> - - <notification - - name="NewSkyPreset" - > -Nommez le nouveau ciel. - <form name="form"> - <input name="message" type="text"> -Nouveau préréglage - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Annuler"/> - </form> - </notification> - - <notification - - name="ExistsSkyPresetAlert" - > -Ce préréglage existe déjà  ! - </notification> - - <notification - - name="NewWaterPreset" - > -Nommez ce nouveau préréglage d'eau. - <form name="form"> - <input name="message" type="text"> -Nouveau préréglage - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Annuler"/> - </form> - </notification> - - <notification - - name="ExistsWaterPresetAlert" - > -Ce préréglage existe déjà  ! - </notification> - - <notification - - name="WaterNoEditDefault" - > -Vous ne pouvez pas éditer ou supprimer un préréglage par défaut. - </notification> - - <notification - - name="ChatterBoxSessionStartError" - > -Impossible de démarrer une nouvelle session de chat avec [RECIPIENT]. -[REASON] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="ChatterBoxSessionEventError" - > -[EVENT] -[REASON] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="ForceCloseChatterBoxSession" - > -Vous devez terminer votre session de chat avec [NAME]. -[REASON] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="Cannot_Purchase_an_Attachment" - > -Les objets qui font partie d'une pièce-jointe ne peuvent pas être achetés. - </notification> - - <notification - - label="À propos des requêtes pour les permissions de débit" - name="DebitPermissionDetails" - > -Accepter cette requête donne au script la permission de prélever des dollars Linden (L$) sur votre compte de manière continue. Pour révoquer cette permission, le propriétaire de l'objet doit supprimer l'objet ou bien réinitialiser les scripts dans l'objet. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="AutoWearNewClothing" - > -Voulez-vous automatiquement porter l'habit que vous créez ? - <usetemplate - ignoretext="Porter automatiquement" - name="okcancelignore" - notext="Non" - yestext="Oui"/> - </notification> - - <notification - - name="NotAgeVerified" - > -Pour que vous puissiez accéder à cette parcelle, votre âge doit être vérifié. -Voulez-vous aller sur le site de Second Life pour vérifier votre âge ? - -[_URL] - <url option="0" name="url"> - - https://secondlife.com/account/verification.php?lang=fr - </url> - <usetemplate - ignoretext="Avertir si l'âge n'a pas été vérifié" - name="okcancelignore" - notext="Non" - yestext="Oui"/> - </notification> - - <notification - - name="Cannot enter parcel: no payment info on file" - > -Avant de pouvoir pénétrer sur cette parcelle, vous devez enregistrer vos informations de paiement. -Voulez-vous aller sur le site de Second Life pour enregistrer ces informations ? - -[_URL] - <url option="0" name="url"> - - https://secondlife.com/account/index.php?lang=fr - </url> - <usetemplate - ignoretext="Avertir si les informations de paiement ne sont pas fournies" - name="okcancelignore" - notext="Non" - yestext="Oui"/> - </notification> - - <notification - - name="MissingString" - > -The string [STRING_NAME] is missing from strings.xml - </notification> - - <notification - - name="SystemMessageTip" - > -[MESSAGE] - </notification> - - <notification - - name="Cancelled" - > -Annulé - </notification> - - <notification - - name="CancelledSit" - > -Action annulée - </notification> - - <notification - - name="CancelledAttach" - > -Attachement annulé - </notification> - - <notification - - name="ReplacedMissingWearable" - > -Habits et parties du corps manquants remplacés par les éléments par défaut. - </notification> - - <notification - - name="GroupNotice" - > -Sujet : [SUBJECT], Message : [MESSAGE] - </notification> - - <notification - - name="FriendOnline" - > -[FIRST] [LAST] est connecté(e) - </notification> - - <notification - - name="FriendOffline" - > -[FIRST] [LAST] est déconnecté(e) - </notification> - - <notification - - name="AddSelfFriend" - > -Vous ne pouvez pas devenir ami avec vous-même. - </notification> - - <notification - - name="UploadingAuctionSnapshot" - > -Importation de photos SL et Web en cours -(prend environ 5 minutes…) - </notification> - - <notification - - name="UploadPayment" - > -Le chargement a coûté [AMOUNT] L$. - </notification> - - <notification - - name="UploadWebSnapshotDone" - > -Photo Web importée - </notification> - - <notification - - name="UploadSnapshotDone" - > -Photo SL importée - </notification> - - <notification - - name="TerrainDownloaded" - > -Fichier terrain.raw téléchargé - </notification> - - <notification - - name="GestureMissing" - > -Geste [NAME] absent de la base de données. - </notification> - - <notification - - name="UnableToLoadGesture" - > -Impossible de charger le geste [NAME]. -Merci de réessayer. - </notification> - - <notification - - name="LandmarkMissing" - > -Repère absent de la base de données. - </notification> - - <notification - - name="UnableToLoadLandmark" - > -Impossible de charger le repère. Merci de réessayer. - </notification> - - <notification - - name="CapsKeyOn" - > -La touche Verr.maj est activée. -Ce mode modifie le mot de passe que vous saisissez, vous devriez le quitter. - </notification> - - <notification - - name="NotecardMissing" - > -Note absente de la base de données. - </notification> - - <notification - - name="NotecardNoPermissions" - > -Permissions insuffisantes pour voir la note. - </notification> - - <notification - - name="RezItemNoPermissions" - > -Permissions insuffisantes pour rezzer l'objet. - </notification> - - <notification - - name="UnableToLoadNotecard" - > -Impossible de charger la note. -Merci de réessayer. - </notification> - - <notification - - name="ScriptMissing" - > -Script absent de la base de données. - </notification> - - <notification - - name="ScriptNoPermissions" - > -Permissions insuffisantes pour voir le script. - </notification> - - <notification - - name="UnableToLoadScript" - > -Impossible de charger le script. Merci de réessayer. - </notification> - - <notification - - name="IncompleteInventory" - > -Tous les éléments que vous souhaitez transférer ne sont pas encore disponibles sur le serveur. -Merci d'essayer à nouveau dans une minute. - </notification> - - <notification - - name="CannotModifyProtectedCategories" - > -Vous ne pouvez pas modifier de catégories protégées. - </notification> - - <notification - - name="CannotRemoveProtectedCategories" - > -Vous ne pouvez pas supprimer de catégories protégées. - </notification> - - <notification - - name="OfferedCard" - > -Vous avez offert votre carte de visite à [FIRST] [LAST] - </notification> - - <notification - - name="UnableToBuyWhileDownloading" - > -Achat impossible durant le chargement de l'objet. -Merci de réessayer. - </notification> - - <notification - - name="UnableToLinkWhileDownloading" - > -Impossible de lier durant le chargement de l'objet. -Merci de réessayer. - </notification> - - <notification - - name="CannotBuyObjectsFromDifferentOwners" - > -Impossible d'acheter simultanément des objets de propriétaires différents. Veuillez sélectionner un seul objet. - </notification> - - <notification - - name="ObjectNotForSale" - > -Cet objet ne semble pas à vendre. - </notification> - - <notification - - name="EnteringGodMode" - > -Activation du mode divin : niveau [LEVEL] - </notification> - - <notification - - name="LeavingGodMode" - > -Désactivation du mode divin : niveau [LEVEL] - </notification> - - <notification - - name="CopyFailed" - > -Copie impossible, permissions insuffisantes. - </notification> - - <notification - - name="InventoryAccepted" - > -[NAME] a accepté votre envoi. - </notification> - - <notification - - name="InventoryDeclined" - > -[NAME] a refusé votre envoi. - </notification> - - <notification - - name="ObjectMessage" - > -[NAME]: [MESSAGE] - </notification> - - <notification - - name="CallingCardAccepted" - > -Votre carte de visite a été acceptée. - </notification> - - <notification - - name="CallingCardDeclined" - > -Votre carte de visite a été refusée. - </notification> - - <notification - - name="TeleportToLandmark" - > -A présent que vous êtes sur le continent, vous pouvez voyager par téléportation (vers [NAME] par exemple). Cliquez sur le bouton Inventaire en bas à droite de l'écran puis sélectionnez le dossier Repères (Landmarks). -Choisissez un repère, double-cliquez dessus et cliquez sur Téléporter. - </notification> - - <notification - - name="TeleportToPerson" - > -A présent que vous êtes sur le continent, vous pouvez contacter des résidents (tel [NAME] par exemple). Cliquez sur le bouton Inventaire en bas à droite de l'écran puis sélectionnez le dossier Cartes de visite (Calling Cards). -Choisissez en une, double-cliquez dessus et cliquez sur Message Instantané. - </notification> - - <notification - - name="CantSelectLandFromMultipleRegions" - > -Vous ne pouvez pas sélectionner de terrain en dehors des limites du serveur. -Veuillez sélectionner un terrain plus petit. - </notification> - - <notification - - name="GroupVote" - > -[NAME] a proposé un vote pour : -[MESSAGE] - <form name="form"> - <button - - name="VoteNow" - text="Voter"/> - <button - - name="Later" - text="Plus tard"/> - </form> - </notification> - - <notification - - name="SystemMessage" - > -[MESSAGE] - </notification> - - <notification - - name="EventNotification" - > -Avis d'événement : - -[NAME] -[DATE] - <form name="form"> - <button - - name="Teleport" - text="Téléporter"/> - <button - - name="Description" - text="Description"/> - <button - - name="Cancel" - text="Annuler"/> - </form> - </notification> - - <notification - - name="TransferObjectsHighlighted" - > -Tous les objets de cette parcelle qui seront transférés à l'acheteur sont maintenant mis en surbrillance. - -* Les arbres et la pelouse qui seront transférés ne sont pas mis en surbrillance. - <form name="form"> - <button - - name="Done" - text="Transfert effectué"/> - </form> - </notification> - - <notification - - name="DeactivatedGesturesTrigger" - > -Gestes désactivés ayant le même mot-clé : -[NAMES] - </notification> - - <notification - - name="NoQuickTime" - > -Le logiciel Apple QuickTime ne semble pas installé sur votre système. -Pour voir les vidéos sur les terrains qui le permettent, allez sur le site de QuickTime (http://www.apple.com/fr/quicktime/download) et installez le lecteur QuickTime. - </notification> - - <notification - - name="OwnedObjectsReturned" - > -Les objets que vous possédez sur la parcelle de terrain sélectionnée ont été renvoyés dans votre inventaire. - </notification> - - <notification - - name="OtherObjectsReturned" - > -Les objets que vous possédez sur la parcelle de terrain appartenant à [FIRST] [LAST] ont été renvoyés dans votre inventaire. - </notification> - - <notification - - name="OtherObjectsReturned2" - > -Les objets sur la parcelle appartenant à « [NAME] » ont étés renvoyés à leur propriétaire. - </notification> - - <notification - - name="GroupObjectsReturned" - > -Les objets sélectionnés sur la parcelle de terrain partagée avec le groupe [GROUPNAME] ont été renvoyés dans l'inventaire de leur propriétaire. -Les objets donnés transférables ont étés renvoyés à leur propriétaire. -Les objets non transférables donnés au groupe ont étés supprimés. - </notification> - - <notification - - name="UnOwnedObjectsReturned" - > -Les objets sélectionnés sur la parcelle et qui ne sont pas à vous ont été rendus à leurs propriétaires. - </notification> - - <notification - - name="NotSafe" - > -Les dégâts sont autorisés sur ce terrain (« non sécurisé »). -Vous pouvez être blessé ici. Si vous décédez, vous serez téléporté à votre domicile. - </notification> - - <notification - - name="NoFly" - > -Le vol est interdit sur ce terrain (« pas de vol »). -Vous ne pouvez pas voler ici. - </notification> - - <notification - - name="PushRestricted" - > -Les bousculades sont interdites sur ce terrain. -Vous ne pouvez pas pousser les autres à moins que vous soyez propriétaire de ce terrain. - </notification> - - <notification - - name="NoVoice" - > -La voix est désactivée sur ce terrain. - </notification> - - <notification - - name="NoBuild" - > -Le mode construction sur ce terrain est désactivé (« pas de construction »). -Vous ne pouvez pas créer d'objets ici. - </notification> - - <notification - - name="ScriptsStopped" - > -Un administrateur a temporairement stoppé les scripts dans cette région. - </notification> - - <notification - - name="ScriptsNotRunning" - > -Aucun script ne fonctionne dans cette région. - </notification> - - <notification - - name="NoOutsideScripts" - > -Les scripts externes sont désactivés sur ce terrain (« pas de scripts externes »). -Aucun script n'est exécuté à part ceux du propriétaire du terrain. - </notification> - - <notification - - name="ClaimPublicLand" - > -Vous ne pouvez réclamer qu'un terrain public dans la région où vous vous trouvez actuellement. - </notification> - - <notification - - name="ObjectGiveItem" - > -Un objet appelé [OBJECTFROMNAME] appartenant à [FIRST] [LAST] vous a donné un [OBJECTTYPE] appelé [OBJECTNAME]. - <form name="form"> - <button - - name="Keep" - text="Garder"/> - <button - - name="Discard" - text="Jeter"/> - <button - - name="Mute" - text="Ignorer"/> - </form> - </notification> - - <notification - - name="ObjectGiveItemUnknownUser" - > -L'objet [OBJECTFROMNAME] appartenant à un utilisateur inconnu vous a donné un(e) [OBJECTTYPE] nommé(e) [OBJECTNAME]. - <form name="form"> - <button - - name="Keep" - text="Garder"/> - <button - - name="Discard" - text="Jeter"/> - <button - - name="Mute" - text="Ignorer"/> - </form> - </notification> - - <notification - - name="UserGiveItem" - > -[NAME] vous a donné un(e) [OBJECTTYPE] nommé(e) [OBJECTNAME]. - <form name="form"> - <button - - name="Keep" - text="Garder"/> - <button - - name="Discard" - text="Jeter"/> - <button - - name="Mute" - text="Ignorer"/> - </form> - </notification> - - <notification - - name="GodMessage" - > -[NAME] -[MESSAGE] - </notification> - - <notification - - name="JoinGroup" - > -[MESSAGE] - <form name="form"> - <button - - name="Join" - text="Rejoindre"/> - <button - - name="Decline" - text="Refuser"/> - <button - - name="Info" - text="Infos"/> - </form> - </notification> - - <notification - - name="TeleportOffered" - > -[NAME] vous propose de le/la rejoindre par téléportation : - -[MESSAGE] - <form name="form"> - <button - - name="Teleport" - text="Téléporter"/> - <button - - name="Cancel" - text="Annuler"/> - </form> - </notification> - - <notification - - name="GotoURL" - > -[MESSAGE] -[URL] - <form name="form"> - <button - - name="Later" - text="Plus tard"/> - <button - - name="GoNow..." - text="Y aller maintenant..."/> - </form> - </notification> - - <notification - - name="OfferFriendship" - > -[NAME] vous demande de devenir son ami(e). - -[MESSAGE] - -(Par défaut, vous pourrez voir lorsque vous êtes tous deux connectés.) - <form name="form"> - <button - - name="Accept" - text="Accepter"/> - <button - - name="Decline" - text="Refuser"/> - </form> - </notification> - - <notification - - name="OfferFriendshipNoMessage" - > -[NAME] vous demande de devenir son ami. - -(Par défaut, vous pourrez voir quand vous êtes tous deux connectés) - <form name="form"> - <button - - name="Accept" - text="Accepter"/> - <button - - name="Decline" - text="Refuser"/> - </form> - </notification> - - <notification - - name="FriendshipAccepted" - > -[NAME] a accepté votre amitié. - </notification> - - <notification - - name="FriendshipDeclined" - > -[NAME] a refusé votre amitié. - </notification> - - <notification - - name="OfferCallingCard" - > -[FIRST] [LAST] vous offre sa carte de visite. -Cela ajoute un marque-page dans votre inventaire, ce qui vous permet d'envoyer rapidement un IM à ce résident. - <form name="form"> - <button - - name="Accept" - text="Accepter"/> - <button - - name="Decline" - text="Refuser"/> - </form> - </notification> - - <notification - - name="RegionRestartMinutes" - - - > -La région va redémarrer dans [MINUTES] minutes. -Si vous restez dans cette région, vous serez déconnecté(e). - </notification> - - <notification - - name="RegionRestartSeconds" - - - > -La région va redémarrer dans [SECONDS] secondes. -Si vous restez dans cette région, vous serez déconnecté(e). - </notification> - - <notification - - name="LoadWebPage" - > -Charger cette page web [URL] ? - -[MESSAGE] - -Venant de l'objet : [OBJECTNAME], appartenant à : [NAME]? - <form name="form"> - <button - - name="Gotopage" - text="Aller sur cette page"/> - <button - - name="Cancel" - text="Annuler"/> - </form> - </notification> - - <notification - - name="FailedToFindWearableUnnamed" - > -La recherche du [TYPE] dans la base de données a échoué. - </notification> - - <notification - - name="FailedToFindWearable" - > -La recherche du [TYPE] nommé(e) [DESC] dans la base de données a échoué. - </notification> - - <notification - - name="ScriptQuestion" - > -'[OBJECTNAME]', un objet appartenant à '[NAME]', aimerait : - -[QUESTIONS] -Acceptez-vous ? - <form name="form"> - <button - - name="Yes" - text="Oui"/> - <button - - name="No" - text="Non"/> - <button - - name="Mute" - text="Ignorer"/> - </form> - </notification> - - <notification - - name="ScriptQuestionCaution" - > -[OBJECTNAME], un objet appartenant à [NAME], aimerait : - -[QUESTIONS] -Si vous n'avez pas confiance en cet objet ni en son créateur, vous devriez refuser cette requête. Pour plus d'informations, cliquez sur le bouton Détails. - -Accepter cette requête ? - <form name="form"> - <button - - name="Grant" - text="Accepter"/> - <button - - name="Deny" - text="Refuser"/> - <button - - name="Details" - text="Détails..."/> - </form> - </notification> - - <notification - - name="ScriptDialog" - > -'[TITLE]' de [FIRST] [LAST] -[MESSAGE] - <form name="form"> - <button - - name="Ignore" - text="Ignorer"/> - </form> - </notification> - - <notification - - name="ScriptDialogGroup" - > -'[TITLE]' de [GROUPNAME] -[MESSAGE] - <form name="form"> - <button - - name="Ignore" - text="Ignorer"/> - </form> - </notification> - - <notification - - name="FirstBalanceIncrease" - > -Vous venez de recevoir [AMOUNT] L$. -Des objets et des utilisateurs peuvent vous donner des L$. -Votre solde est affiché dans le coin en haut à droite de l'écran. - </notification> - - <notification - - name="FirstBalanceDecrease" - > -Vous venez de payer [AMOUNT] L$. -Votre solde est affiché dans le coin en haut à droite de l'écran. - </notification> - - <notification - - name="FirstSit" - > -Vous êtes assis(e). -Utilisez les touches de direction (ou AWSD) pour changer la vue. -Pour vous lever, cliquez sur le bouton Me lever. - </notification> - - <notification - - name="FirstMap" - > -Cliquez et faites glisser pour faire défiler la carte. -Double-cliquez pour vous téléporter. -Utilisez les contrôles à droite pour trouver des choses et afficher différents arrière-plans. - </notification> - - <notification - - name="FirstBuild" - > -Vous pouvez construire des objets dans certaines zones de [SECOND_LIFE]. -Utilisez les outils en haut à gauche pour construire, et gardez la touche Ctrl ou Alt enfoncée pour passer rapidement d'un outil à l'autre. -Appuyez sur la touche Esc pour arrêter de construire. - </notification> - - <notification - - name="FirstLeftClickNoHit" - > -Cliquer à gauche permet d'interagir avec certains objets. -Si le pointeur de la souris se transforme en main, vous pouvez interagir avec l'objet. -Cliquer à droite fait toujours apparaître un menu des choses que vous pouvez faire. - </notification> - - <notification - - name="FirstTeleport" - > -Cette région n'autorise pas la téléportation de point à point. Vous avez donc été transporté au téléhub le plus proche. -Votre destination est marquée par une grande balise. -Suivez la flèche rouge vers la balise ou cliquez sur la flèche pour faire disparaître la balise. - </notification> - - <notification - - name="FirstOverrideKeys" - > -Vos mouvements sont maintenant pris en charge par un objet. -Essayez les flèches de votre clavier ou AWSD pour voir à quoi elles servent. -Certains objets (comme les armes) nécessitent l'activation du mode Vue subjective pour être utilisés. -Pour cela, appuyez sur la touche M. - </notification> - - <notification - - name="FirstAppearance" - > -Vous êtes en train d'éditer votre apparence. -Pour tourner et zoomer, utilisez les flèches de direction. -Lorsque vous avez terminé, appuyez sur Enregistrer tout pour sauvegarder votre apparence et sortir. -Vous pouvez modifier votre apparence aussi souvent que vous le souhaitez. - </notification> - - <notification - - name="FirstInventory" - > -Il s'agit de votre inventaire qui contient des objets, notes, vêtements, et autres possessions. -* Pour porter un objet ou le dossier contenant un ensemble complet, faites-le glisser sur vous-même. -* Pour mettre un objet dans le monde, faites-le glisser sur le sol. -* Pour lire une note, double-cliquez dessus. - </notification> - - <notification - - name="FirstSandbox" - > -Cette région est un bac à sable. -Les objets que vous construisez ici peuvent être supprimés quand vous partez. Les bacs à sable sont nettoyés régulièrement, veuillez lire les informations en haut de l'écran à côté du nom de la région. - -Les régions bacs à sable sont rares et sont signalées par des panneaux. - </notification> - - <notification - - name="FirstFlexible" - > -Cet objet est flexible. -Les objets flexibles ne peuvent pas avoir de propriétés physiques et doivent rester fantômes jusqu'à ce que la case Fantôme soit décochée. - </notification> - - <notification - - name="FirstDebugMenus" - > -Vous avez activé le menu Avancé. -Ce menu contient des fonctionnalités utiles pour les développeurs qui travaillent sur Second Life. -Pour activer/désactiver ce menu sous Windows, appuyez sur Ctrl-Alt-D. Sur un Mac, appuyez sur Cmd-Opt-Maj-D - </notification> - - <notification - - name="FirstSculptedPrim" - > -Vous êtes en train d'éditer un sculptie. -Pour spécifier la forme d'un sculptie, vous devez utiliser une texture spécifique. -Vous trouverez des textures dans la bibliothèque de votre inventaire. - </notification> - - <notification - - name="FirstMedia" - > -Vous avez lancé la lecture d'un média. Dans le menu Préférences, à l'onglet Audio/Vidéo, vous pouvez choisir de lire automatiquement les médias. Notez que cela peut être risqué lorsque les médias viennent de sites que vous ne connaissez pas. - </notification> - - <notification - - name="MaxListSelectMessage" - > -Vous ne pouvez sélectionner que [MAX_SELECT] objets maximum dans cette liste. - </notification> - - <notification - - name="VoiceInviteP2P" - > -[NAME] vous invite à un chat vocal. -Pour y participer, cliquez sur Accepter. Sinon, cliquez sur Refuser. Pour ignorer cette personne, cliquez sur Ignorer. - <form name="form"> - <button - - name="Accept" - text="Accepter"/> - <button - - name="Decline" - text="Refuser"/> - <button - - name="Mute" - text="Ignorer"/> - </form> - </notification> - - <notification - - name="AutoUnmuteByIM" - > -[FIRST] [LAST] a reçu un message instantané et n'est donc plus ignoré. - </notification> - - <notification - - name="AutoUnmuteByMoney" - > -[FIRST] [LAST] a reçu de l'argent et n'est donc plus ignoré. - </notification> - - <notification - - name="AutoUnmuteByInventory" - > -[FIRST] [LAST] a reçu un inventaire et n'est donc plus ignoré. - </notification> - - <notification - - name="VoiceInviteGroup" - > -[NAME] a rejoint un chat vocal avec le groupe [GROUP]. -Pour y participer, cliquez sur Accepter. Sinon, cliquez sur Refuser. Pour ignorer cette personne, cliquez sur Ignorer. - <form name="form"> - <button - - name="Accept" - text="Accepter"/> - <button - - name="Decline" - text="Refuser"/> - <button - - name="Mute" - text="Ignorer"/> - </form> - </notification> - - <notification - - name="VoiceInviteAdHoc" - > -[NAME] a rejoint un chat vocal avec conférence. -Pour y participer, cliquez sur Accepter. Sinon, cliquez sur Refuser. Pour ignorer cet utilisateur, cliquez sur Ignorer. - <form name="form"> - <button - - name="Accept" - text="Accepter"/> - <button - - name="Decline" - text="Refuser"/> - <button - - name="Mute" - text="Ignorer"/> - </form> - </notification> - - <notification - - name="InviteAdHoc" - > -[NAME] vous invite à un chat conférence. -Pour y participer, cliquez sur Accepter. Sinon, cliquez sur Refuser. Pour ignorer cet utilisateur, cliquez sur Ignorer. - <form name="form"> - <button - - name="Accept" - text="Accepter"/> - <button - - name="Decline" - text="Refuser"/> - <button - - name="Mute" - text="Ignorer"/> - </form> - </notification> - - <notification - - name="VoiceChannelFull" - > -L'appel auquel vous essayez de participer, [VOICE_CHANNEL_NAME], a atteint le nombre maximum de participants. Veuillez réessayer ultérieurement. - </notification> - - <notification - - name="ProximalVoiceChannelFull" - > -Nous sommes désolés. Le nombre maximum de conversations vocales a été atteint dans cette zone. Veuillez trouver un autre endroit pour discuter. - </notification> - - <notification - - name="VoiceChannelDisconnected" - > -Vous avez été déconnecté(e) de [VOICE_CHANNEL_NAME]. Vous allez maintenant être reconnecté au chat vocal spatial. - </notification> - - <notification - - name="VoiceChannelDisconnectedP2P" - > -[VOICE_CHANNEL_NAME] a mis fin à l'appel. Vous allez maintenant être reconnecté au chat vocal spatial. - </notification> - - <notification - - name="P2PCallDeclined" - > -[VOICE_CHANNEL_NAME] a refusé votre appel. Vous allez maintenant être reconnecté au chat vocal spatial. - </notification> - - <notification - - name="P2PCallNoAnswer" - > -[VOICE_CHANNEL_NAME] ne peut pas prendre votre appel. Vous allez maintenant être reconnecté au chat vocal spatial. - </notification> - - <notification - - name="VoiceChannelJoinFailed" - > -Echec de la connexion avec [VOICE_CHANNEL_NAME], veuillez réessayer ultérieurement. Vous allez maintenant être reconnecté au chat vocal spatial. - </notification> - - <notification - - name="VoiceLoginRetry" - > -Nous sommes en train de créer un canal vocal pour vous. Veuillez patienter quelques instants. - </notification> - - <notification - - name="Cannot enter parcel: not a group member" - > -Vous ne pouvez pas pénétrer sur ce terrain car vous n'êtes pas membre du groupe adéquat. - </notification> - - <notification - - name="Cannot enter parcel: banned" - > -Vous ne pouvez pas pénétrer sur ce terrain car l'accès vous y est interdit. - </notification> - - <notification - - name="Cannot enter parcel: not on access list" - > -Vous ne pouvez pas pénétrer sur ce terrain car vous n'avez pas les droits d'accès requis. - </notification> - - <notification - - name="VoiceNotAllowed" - > -Vous n'êtes pas autorisé à vous connecter au chat vocal pour [VOICE_CHANNEL_NAME]. - </notification> - - <notification - - name="VoiceCallGenericError" - > -Une erreur est survenue pendant la connexion au chat vocal pour [VOICE_CHANNEL_NAME]. Veuillez réessayer ultérieurement. - </notification> - - <notification - - name="ServerVersionChanged" - > -La région dans laquelle vous avez pénétré utilise une version de simulateur différente. Pour plus de détails, cliquez sur ce message. - </notification> - - <notification - - name="UnableToOpenCommandURL" - > -L'URL sur laquelle vous avez cliqué ne peut pas être ouverte dans ce navigateur. - </notification> - - <global name="UnsupportedCPU"> -- Votre processeur ne remplit pas les conditions minimum requises. - </global> - - <global name="UnsupportedGLRequirements"> -Vous semblez ne pas avoir le matériel requis pour utiliser Second Life. Second Life requiert une carte graphique OpenGL avec une prise en charge du multitexturing. Si vous avez une telle carte, assurez-vous que vous avez aussi les drivers les plus récents pour la carte, ainsi que les service packs et les patchs pour votre système d'exploitation. - -Si vous avez toujours des problèmes, veuillez consulter la page suivante : http://www.secondlife.com/support - </global> - - <global name="UnsupportedCPUAmount"> -796 - </global> - - <global name="UnsupportedRAMAmount"> -510 - </global> - - <global name="UnsupportedGPU"> -- Votre carte graphique ne remplit pas les conditions minimum requises. - </global> - - <global name="UnsupportedRAM"> -- Votre mémoire système ne remplit pas les conditions minimum requises. - </global> - - <global name="PermYes"> -Oui - </global> - - <global name="PermNo"> -Non - </global> -</notifications> +<?xml version="1.0" encoding="utf-8"?> +<notifications> + <global name="skipnexttime"> + Ne plus afficher + </global> + <global name="alwayschoose"> + Toujours choisir cette option + </global> + <template name="okbutton"> + <form> + <button + name="OK" + text="$yestext"/> + </form> + </template> + + <template name="okignore"> + <form> + <button + name="OK" + text="$yestext"/> + <ignore text="$ignoretext"/> + </form> + </template> + + <template name="okcancelbuttons"> + <form> + <button + name="OK" + text="$yestext"/> + <button + name="Cancel" + text="$notext"/> + </form> + </template> + + <template name="okcancelignore"> + <form> + <button + name="OK" + text="$yestext"/> + <button + name="Cancel" + text="$notext"/> + <ignore text="$ignoretext"/> + </form> + </template> + + <template name="okhelpbuttons"> + <form> + <button + name="OK" + text="$yestext"/> + <button + name="Help" + text="$helptext"/> + </form> + </template> + + <template name="yesnocancelbuttons"> + <form> + <button + name="Yes" + text="$yestext"/> + <button + name="No" + text="$notext"/> + <button + name="Cancel" + text="$canceltext"/> + </form> + </template> + <notification functor="GenericAcknowledge" label="Message d'alerte inconnu" name="MissingAlert"> + Votre version de Second Life ne peut afficher ce message d'erreur. + +Détails de l'erreur : L'alerte, appelée '[_NAME]' est introuvable dans notifications.xml. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="FloaterNotFound"> + Erreur floater : impossible de trouver les contrôles suivants : + +[CONTROLS] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="TutorialNotFound"> + Aucun didacticiel n'est disponible actuellement. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="GenericAlert"> + [MESSAGE] + </notification> + <notification name="GenericAlertYesCancel"> + [MESSAGE] + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="Oui"/> + </notification> + <notification name="BadInstallation"> + Une erreur est survenue lors de la mise à jour de Second Life. Veuillez télécharger la dernière version depuis secondlife.com. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="LoginFailedNoNetwork"> + Erreur réseau : impossible d'établir une connexion. +'[DIAGNOSTIC]' +Veuillez vérifier votre connexion. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MessageTemplateNotFound"> + Le modèle de message [PATH] est introuvable. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="WearableSave"> + Enregistrer les changements dans la partie du corps/les habits actuels ? + <usetemplate canceltext="Cancel" name="yesnocancelbuttons" notext="Ne pas enregistrer" yestext="Enregistrer"/> + </notification> + <notification name="CompileQueueSaveText"> + Une erreur est survenue lors du chargement du texte pour un script, suite au problème suivant : [REASON]. Veuillez réessayer ultérieurement. + </notification> + <notification name="CompileQueueSaveBytecode"> + Une erreur est survenue lors du chargement du script compilé, suite au problème suivant : [REASON]. Veuillez réessayer ultérieurement. + </notification> + <notification name="WriteAnimationFail"> + Une erreur est survenue lors de l'écriture des données d'animation. Veuillez réessayer ultérieurement. + </notification> + <notification name="UploadAuctionSnapshotFail"> + Un problème est survenu lors du chargement du script compilé, suite au problème suivant : [REASON] + </notification> + <notification name="UnableToViewContentsMoreThanOne"> + Impossible d'afficher les contenus de plus d'un objet à la fois. +Veuillez ne sélectionner qu'un seul objet. + </notification> + <notification name="SaveClothingBodyChanges"> + Enregistrer tous les changements dans les habits/parties du corps ? + <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Ne pas enregistrer" yestext="Tout enregistrer"/> + </notification> + <notification name="GrantModifyRights"> + Lorsque vous accordez des droits d'édition à un autre résident, vous lui permettez de changer, supprimer ou prendre n'importe lequel de vos objets dans le Monde. Réfléchissez bien avant d'accorder ces droits. +Souhaitez-vous accorder des droits d'édition à [FIRST_NAME] [LAST_NAME] ? + <usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/> + </notification> + <notification name="GrantModifyRightsMultiple"> + Lorsque vous accordez des droits d'édition à un autre résident, vous lui permettez de changer n'importe lequel de vos objets dans le Monde. Réfléchissez bien avant d'accorder ces droits. +Souhaitez-vous accorder des droits d'édition aux résidents selectionnés ? + <usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/> + </notification> + <notification name="RevokeModifyRights"> + Souhaitez-vous retirer les droits d'édition à [FIRST_NAME] [LAST_NAME] ? + <usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/> + </notification> + <notification name="RevokeModifyRightsMultiple"> + Souhaitez-vous retirer les droits d'édition aux résidents selectionnés ? + <usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/> + </notification> + <notification name="UnableToCreateGroup"> + Impossible de créer le groupe. +[MESSAGE] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="PanelGroupApply"> + [NEEDS_APPLY_MESSAGE] +[WANT_APPLY_MESSAGE] + <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Ignorer les modifications" yestext="Enregistrer les modifications"/> + </notification> + <notification name="MustSpecifyGroupNoticeSubject"> + Pour envoyer une notice au groupe, vous devez indiquer un sujet. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="AddGroupOwnerWarning"> + Vous êtes sur le point d'ajouter des membres du groupe dans le rôle de [ROLE_NAME]. +Les membres ne peuvent pas être destitués de ce rôle. +Ils doivent donner eux-mêmes leur démission. +Êtes-vous certain de vouloir continuer ? + <usetemplate ignoretext="Lorsque vous donnez à des membres du groupe le rôle de « propriétaire »" name="okcancelignore" notext="Non" yestext="Oui"/> + </notification> + <notification name="AssignDangerousActionWarning"> + Vous êtes sur le point d'ajouter le pouvoir « [ACTION_NAME] » au rôle « [ROLE_NAME] ». + *Avertissement* + Tout membre disposant de ce pouvoir peut s'affecter lui-même, ainsi que tout autre membre, à des rôles disposant de pouvoirs plus importants, et accéder potentiellement à des pouvoirs proches de ceux d'un propriétaire. Assurez-vous de bien comprendre ce que vous faites avant d'attribuer ce pouvoir. + +Ajouter ce pouvoir à « [ROLE_NAME] » ? + <usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/> + </notification> + <notification name="AssignDangerousAbilityWarning"> + Vous êtes sur le point d'ajouter le pouvoir « [ACTION_NAME] » au rôle « [ROLE_NAME] ». + + *Avertissement* + Tout membre dans un rôle avec ce pouvoir peut s'attribuer à lui-même, ainsi qu'à tout autre membre, Tous les pouvoirs, et accéder potentiellement à des pouvoirs proches de ceux d'un propriétaire. + +Ajouter ce pouvoir à « [ROLE_NAME] » ? + <usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/> + </notification> + <notification name="ClickPublishHelpLand"> + Sélectionner l'option Afficher dans la recherche +En cochant cette case, votre parcelle apparaîtra : +- dans les résultats de recherche ; +- dans les objets publics ; +- dans la recherche web. + </notification> + <notification name="ClickSoundHelpLand"> + La musique et le média ne peuvent être utilisés que sur cette parcelle. Les options Son et Voix peuvent être limités à la parcelle ou seront entendus par les résidents en dehors de la parcelle, en fonction de leur catégorie d'accès. Souhaitez-vous en savoir plus sur le paramétrage de ces options ? + <url name="url"> + http://wiki.secondlife.com/wiki/M%C3%A9dias_sur_la_parcelle_(KB) + </url> + <usetemplate name="okcancelbuttons" notext="Fermer" yestext="Consulter les pages d'aide"/> + </notification> + <notification name="ClickSearchHelpAll"> + Les résultats de recherche sont organisés en fonction de l'onglet dans lequel vous vous trouvez, votre catégorie d'accès, la catégorie choisie, ainsi que d'autres facteurs. Pour plus de détails, veuillez consulter les pages d'aide. + <url name="url"> + http://wiki.secondlife.com/wiki/FAQ_sur_la_recherche_(KB) + </url> + <usetemplate name="okcancelbuttons" notext="Fermer" yestext="Consulter les pages d'aide"/> + </notification> + <notification name="ClickPublishHelpLandDisabled"> + Cette parcelle ne peut pas apparaître dans la recherche car elle est dans une région où cela n'est pas autorisé. + </notification> + <notification name="ClickPublishHelpAvatar"> + Si vous sélectionnez Afficher dans la recherche : +- votre profil apparaîtra dans les résultats de recherche ; +- un lien vers votre profil apparaîtra dans les pages de groupe publiques. + </notification> + <notification name="ClickPartnerHelpAvatar"> + Vous pouvez proposer à un autre résident de devenir votre partenaire ou dissoudre un partenariat existant à partir du site de [SECOND_LIFE]. + +Aller sur le site de Second Life pour avoir plus d'informations sur les partenariats ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="Aller sur cette page"/> + </notification> + <notification name="ClickUploadHelpPermissions"> + Il est possible que vos droits par défaut ne fonctionnent pas dans les anciennes régions. + </notification> + <notification name="ClickWebProfileHelpAvatar"> + Si ce résident a défini une URL de profil web, vous pouvez : + * Cliquer sur Charger pour afficher la page dans cet onglet ; + * Cliquer sur Charger > Dans un navigateur externe, pour afficher la page dans votre navigateur par défaut ; + * Cliquer sur Charger > URL du domicile, pour retourner au profil web du résident. + +Lorsque vous êtes dans votre propre profil, vous pouvez définir n'importe quelle URL comme profil web. Pour cela, saisissez l'URL et cliquez sur OK. +Les autres résidents peuvent visiter l'URL que vous avez définie en regardant votre profil. + </notification> + <notification name="JoinGroupCanAfford"> + Rejoindre ce groupe coûte [COST] L$. +Voulez-vous continuer ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="Rejoindre"/> + </notification> + <notification name="JoinGroupCannotAfford"> + Rejoindre ce groupe coûte [COST] L$. +Vous n'avez pas suffisamment de L$ pour rejoindre ce groupe. + </notification> + <notification name="LandBuyPass"> + Pour [COST] L$ vous pouvez pénétrer sur ce terrain ([PARCEL_NAME]) et y rester [TIME] heures. Acheter un pass ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="SalePriceRestriction"> + Pour rendre l'annonce disponible à tous, le prix de vente doit être supérieur à 0 L$. +Si le prix de vente est de 0 L$, vous devez choisir un acheteur spécifique. + </notification> + <notification name="ConfirmLandSaleChange"> + Le terrain sélectionné, de [LAND_SIZE] m², est mis en vente. +Votre prix de vente sera de [SALE_PRICE] L$ et la vente sera disponible à [NAME]. + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="ConfirmLandSaleToAnyoneChange"> + Attention : en cliquant sur Vendre à n'importe qui, vous rendez votre terrain disponible à toute la communauté de Second Life, même aux personnes qui ne sont pas dans cette région. + +Le terrain sélectionné, de [LAND_SIZE] m², est mis en vente. +Votre prix de vente sera de [SALE_PRICE] L$ et la vente sera disponible à [NAME]. + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="ReturnObjectsDeededToGroup"> + Êtes-vous certain de vouloir renvoyer tous les objets partagés par le groupe [NAME] sur cette parcelle dans l'inventaire du propriétaire précédent ? + +*Avertissement* Tous les objets non transférables cédés au groupe seront supprimés ! + +Objets : [N] + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="ReturnObjectsOwnedByUser"> + Etes-vous certain de vouloir renvoyer tous les objets que [NAME] possède sur cette parcelle dans son inventaire ? + +Objets : [N] + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="ReturnObjectsOwnedBySelf"> + Êtes-vous certain de vouloir renvoyer tous les objets que vous possédez sur cette parcelle dans votre inventaire ? + +Objets : [N] + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="ReturnObjectsNotOwnedBySelf"> + Êtes-vous certain de vouloir renvoyer tous les objets que vous ne possédez pas sur cette parcelle dans l'inventaire de leur propriétaire ? +Les objets transférables cédés à un groupe seront renvoyés aux propriétaires précédents. + +*Avertissement* Tous les objets non transférables cédés au groupe seront supprimés ! + +Objets : [N] + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="ReturnObjectsNotOwnedByUser"> + Êtes-vous certain de vouloir renvoyer tous les objets que [NAME] ne possède pas sur cette parcelle dans l'inventaire de leur propriétaire ? +Les objets transférables cédés à un groupe seront renvoyés aux propriétaires précédents. + +*Avertissement* Tous les objets non transférables cédés au groupe seront supprimés ! + +Objets : [N] + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="ReturnAllTopObjects"> + Êtes-vous certain de vouloir renvoyer tous les objets de la liste dans l'inventaire de leur propriétaire ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="DisableAllTopObjects"> + Êtes-vous certain de vouloir désactiver tous les objets dans cette région ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="ReturnObjectsNotOwnedByGroup"> + Renvoyer les objets de cette parcelle qui ne sont pas partagés avec le groupe [NAME] à leur propriétaire ? + +Objets : [N] + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="UnableToDisableOutsideScripts"> + Impossible de désactiver les scripts. +Les dégâts sont autorisés dans toute la région. +Pour que les armes fonctionnent, les scripts doivent être autorisés. + </notification> + <notification name="MustBeInParcel"> + Pour définir le point d'atterrissage, vous devez vous trouver à l'intérieur de la parcelle. + </notification> + <notification name="PromptRecipientEmail"> + Veuillez saisir une adresse e-mail valide pour le(s) destinataire(s). + </notification> + <notification name="PromptSelfEmail"> + Veuillez saisir votre adresse e-mail. + </notification> + <notification name="PromptMissingSubjMsg"> + Envoyer la photo avec le sujet ou le message par défaut ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="ErrorProcessingSnapshot"> + Erreur dans le traitement des données de la photo + </notification> + <notification name="ErrorEncodingSnapshot"> + Erreur d'encodage de la photo. + </notification> + <notification name="ErrorUploadingPostcard"> + Une erreur est survenue lors du chargement du script compilé, suite au problème suivant : [REASON] + </notification> + <notification name="ErrorUploadingReportScreenshot"> + Une erreur est survenue lors du chargement de la capture d'écran destinée au rapport, suite au problème suivant : [REASON] + </notification> + <notification name="MustAgreeToLogIn"> + Pour vous connecter à [SECOND_LIFE], vous devez accepter les Conditions d'utilisation. + </notification> + <notification name="CouldNotPutOnOutfit"> + Impossible de mettre cet ensemble. +Ce dossier ne contient pas d'habits, de parties du corps ni de pièces jointes. + </notification> + <notification name="CannotWearTrash"> + Vous ne pouvez pas porter d'habits ni de parties du corps se trouvant dans la corbeille. + </notification> + <notification name="CannotWearInfoNotComplete"> + Vous ne pouvez pas porter cet article car il n'a pas encore été chargé. Veuillez réessayer dans une minute. + </notification> + <notification name="MustHaveAccountToLogIn"> + Oups! Vous avez oublié de fournir certaines informations. +Vous devez saisir le nom et le prénom de votre avatar. + +Pour entrer dans [SECOND_LIFE], vous devez avoir un compte. Voulez-vous en créer un maintenant ? + <usetemplate name="okcancelbuttons" notext="Réessayer" yestext="Créer un compte"/> + </notification> + <notification name="AddClassified"> + Les petites annonces sont publiées à l'onglet Petites annonces de la section Recherche pendant une semaine. +Rédigez votre annonce, puis cliquez sur Publier pour l'ajouter à la liste des annonces. +Au moment de cliquer sur Publier, vous serez invité à payer des frais. +Plus vous payez cher, plus votre annonce est visible dans la liste ainsi que dans les résultats de recherche de mots-clés. + <usetemplate ignoretext="Lors de l'ajout d'une nouvelle petite annonce" name="okcancelignore" notext="Annuler" yestext="OK"/> + </notification> + <notification name="DeleteClassified"> + Supprimer l'annonce [NAME] ? +Une fois payés, les frais ne sont pas remboursables. + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="ClassifiedSave"> + Enregistrer les changements dans l'annonce [NAME] ? + <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Ne pas enregistrer" yestext="Enregistrer"/> + </notification> + <notification name="DeleteAvatarPick"> + Supprimer le favori [PICK] ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="PromptGoToEventsPage"> + Aller à la page web de [SECOND_LIFE] réservée aux événements ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="SelectProposalToView"> + Veuillez sélectionner une proposition. + </notification> + <notification name="SelectHistoryItemToView"> + Veuillez sélectionner un historique. + </notification> + <notification name="ResetShowNextTimeDialogs"> + Souhaitez-vous réactiver tous les pop-ups que vous aviez désactivés ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="SkipShowNextTimeDialogs"> + Voulez-vous désactiver tous les pop-ups qui peuvent être évités ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="CacheWillClear"> + Le cache sera vidé après le redémarrage de [SECOND_LIFE]. + </notification> + <notification name="CacheWillBeMoved"> + Le cache sera déplacé après le redémarrage de [SECOND_LIFE]. +Remarque : cela videra le cache. + </notification> + <notification name="ChangeConnectionPort"> + Les paramètres du port prendront effet après le redémarrage de [SECOND_LIFE]. + </notification> + <notification name="ChangeSkin"> + Le nouveau thème apparaîtra après le redémarrage de [SECOND_LIFE]. + </notification> + <notification name="GoToAuctionPage"> + Aller à la page web de [SECOND_LIFE] pour voir le détail des enchères ou enchérir ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="SaveChanges"> + Enregistrer les changements ? + <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Ne pas enregistrer" yestext="Enregistrer"/> + </notification> + <notification name="GestureSaveFailedTooManySteps"> + L'enregistrement du geste a échoué. +Il y a trop d'étapes dans ce geste. +Essayez d'en supprimer quelques-unes. + </notification> + <notification name="GestureSaveFailedTryAgain"> + L'enregistrement du geste a échoué. Veuillez réessayer dans une minute. + </notification> + <notification name="GestureSaveFailedObjectNotFound"> + Le geste n'a pas pu être enregistré car l'objet ou l'inventaire de l'objet associé n'a pas été trouvé. +L'objet est peut-être inaccessible ou a peut-être été supprimé. + </notification> + <notification name="GestureSaveFailedReason"> + Une erreur est survenue lors de l'enregistrement du geste, suite au problème suivant : [REASON]. Essayez d'enregistrer votre geste ultérieurement. + </notification> + <notification name="SaveNotecardFailObjectNotFound"> + La note n'a pas pu être enregistrée car l'objet ou l'inventaire de l'objet associé n'a pas été trouvé. +L'objet est peut-être inaccessible ou a peut-être été supprimé. + </notification> + <notification name="SaveNotecardFailReason"> + Une erreur est survenue lors de l'enregistrement de la note, suite au problème suivant : [REASON]. Essayez d'enregistrer votre note ultérieurement. + </notification> + <notification name="ScriptCannotUndo"> + Impossible d'annuler tous les changements dans votre version du script. +Souhaitez-vous charger la dernière version enregistrée sur le serveur ? +(**Attention** Cette opération est irréversible.) + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="SaveScriptFailReason"> + Une erreur est survenue lors de l'enregistrement du script, suite au problème suivant : [REASON]. Essayez d'enregistrer votre script ultérieurement. + </notification> + <notification name="SaveScriptFailObjectNotFound"> + Impossible d'enregistrer le script car l'objet qui le contient est introuvable. +L'objet est peut-être inaccessible ou a peut-être été supprimé. + </notification> + <notification name="SaveBytecodeFailReason"> + Une erreur est survenue lors de l'enregistrement du script compilé, suite au problème suivant : [REASON]. Essayez d'enregistrer votre script ultérieurement. + </notification> + <notification name="CouldNotStartStopScript"> + Impossible de lancer ou d'arrêter le script car l'objet qui le contient est introuvable. +L'objet est peut-être inaccessible ou a peut-être été supprimé. + </notification> + <notification name="CannotDownloadFile"> + Impossible de télécharger le fichier + </notification> + <notification name="CannotWriteFile"> + Impossible d'écrire le fichier [[FILE]] + </notification> + <notification name="UnsupportedHardware"> + Avertissement : vous n'avez pas la configuration système requise pour utiliser Second Life. Si vous continuez à utiliser Second Life, votre performance risque d'être moindre. Malheureusement, nous n'offrons aucune assistance pour les problèmes de configuration système. + +MINSPECS +Voulez-vous visiter [_URL] pour plus d'informations ? + <url name="url" option="0"> + http://secondlife.com/support/sysreqs.php?lang=fr + </url> + <usetemplate ignoretext="Lors de la détection de matériel non pris en charge" name="okcancelignore" notext="Non" yestext="Oui"/> + </notification> + <notification name="UnknownGPU"> + Votre système contient une carte graphique que nous ne connaissons pas actuellement. +Cela est souvent le cas avec le nouveau materiel qui n'a pas encore été testé. +Vous pourrez probablement utiliser Second Life sans problème, mais vous devrez peut-être ajuster les paramètres de vos graphiques. +(Menu Édition > Préférences > Graphiques). + <form name="form"> + <ignore name="ignore" text="Lors de la détection d'une carte graphique inconnue"/> + </form> + </notification> + <notification name="DisplaySettingsNoShaders"> + [SECOND_LIFE] a planté lors de l'initialisation des drivers graphiques. +La qualité des graphiques sera paramétrée sur Faible pour éviter certaines erreurs de driver fréquentes. +Certaines fonctionnalités graphiques seront donc désactivées. +Nous vous recommandons de mettre à jour les drivers de votre carte graphique. +La qualité des graphiques peut être augmentée à la section Préférences > Graphiques + </notification> + <notification name="RegionNoTerraforming"> + Le terraformage est interdit dans la région [REGION]. + </notification> + <notification name="CannotCopyWarning"> + Vous n'êtes pas autorisé à copier cet objet et il disparaîtra de votre inventaire si vous le donnez. Souhaitez-vous vraiment offrir cet objet ? + <usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/> + </notification> + <notification name="CannotGiveItem"> + Impossible de donner l'objet de l'inventaire. + </notification> + <notification name="TransactionCancelled"> + Transaction annulée. + </notification> + <notification name="TooManyItems"> + Impossible de donner plus de 42 objets au cours d'un seul transfert d'inventaire. + </notification> + <notification name="NoItems"> + Vous n'êtes pas autorisé à transférer les objets sélectionnés. + </notification> + <notification name="CannotCopyCountItems"> + Vous n'êtes pas autorisé à copier [COUNT] des objets sélectionnés. Ces objets disparaîtront de votre inventaire. +Souhaitez-vous vraiment donner ces objets ? + <usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/> + </notification> + <notification name="CannotGiveCategory"> + Vous n'êtes pas autorisé à transférer le dossier sélectionné. + </notification> + <notification name="FreezeAvatar"> + Geler cet avatar ? +Il ou elle ne pourra temporairement plus bouger, chatter, ou interagir dans le Monde. + <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Dégeler" yestext="Geler"/> + </notification> + <notification name="FreezeAvatarFullname"> + Geler [AVATAR_NAME] ? +Il ou elle ne pourra temporairement plus bouger, chatter, ou interagir dans le Monde. + <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Dégeler" yestext="Geler"/> + </notification> + <notification name="EjectAvatarFullname"> + Expulser [AVATAR_NAME] de votre terrain ? + <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Expulser et bannir" yestext="Expulser"/> + </notification> + <notification name="EjectAvatarNoBan"> + Expulser cet avatar de votre terrain ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="Expulser"/> + </notification> + <notification name="EjectAvatarFullnameNoBan"> + Expulser [AVATAR_NAME] de votre terrain ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="Expulser"/> + </notification> + <notification name="AcquireErrorTooManyObjects"> + Erreur d'acquisition : trop d'objets sélectionnés. + </notification> + <notification name="AcquireErrorObjectSpan"> + Erreur d'acquisition : les objets sont répartis dans plus d'une région. +Veuillez mettre tous les objets que vous souhaitez acquérir dans la même région. + </notification> + <notification name="PromptGoToCurrencyPage"> + [EXTRA] + +Aller sur [URL] pour obtenir des informations sur l'achat de devises ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="UnableToLinkObjects"> + Impossible de lier ces [COUNT] objets. +Vous pouvez lier un maximum de [MAX] objets. + </notification> + <notification name="CannotLinkIncompleteSet"> + Vous ne pouvez lier que des ensembles d'objets complets et vous devez choisir un minimum de deux objets. + </notification> + <notification name="CannotLinkModify"> + Impossible de lier car vous n'avez pas le droit de modifier tous les objets. + +Assurez-vous que vous êtes le propriétaire de tous les objets et qu'aucun d'eux n'est verrouillé. + </notification> + <notification name="CannotLinkDifferentOwners"> + Impossible de lier car les objets n'ont pas tous le même propriétaire. + +Assurez-vous que vous êtes le propriétaire de tous les objets sélectionnés. + </notification> + <notification name="NoFileExtension"> + Pas d'extension pour le fichier suivant : '[FILE]' + +Assurez-vous que le fichier a l'extension correcte. + </notification> + <notification name="InvalidFileExtension"> + Extension de fichier [EXTENSION] invalide +[VALIDS] attendu + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="CannotUploadSoundFile"> + Impossible de lire le fichier son chargé : +[FILE] + </notification> + <notification name="SoundFileNotRIFF"> + Il semble que le fichier ne soit pas un fichier RIFF WAVE : +[FILE] + </notification> + <notification name="SoundFileNotPCM"> + Il semble que le fichier ne soit pas un fichier audio PCM WAVE : +[FILE] + </notification> + <notification name="SoundFileInvalidChannelCount"> + Le fichier contient un nombre de canaux invalide (doit être mono ou stéréo) : +[FILE] + </notification> + <notification name="SoundFileInvalidSampleRate"> + Le fichier ne semble pas être pris en charge (doit être 44,1 k) : +[FILE] + </notification> + <notification name="SoundFileInvalidWordSize"> + Le fichier ne semble pas être pris en charge (doit faire 8 ou 16 bit) : +[FILE] + </notification> + <notification name="SoundFileInvalidHeader"> + Impossible de trouver les données dans l'en-tête WAV : +[FILE] + </notification> + <notification name="SoundFileInvalidTooLong"> + Le fichier audio est trop long (10 secondes maximum) : +[FILE] + </notification> + <notification name="ProblemWithFile"> + Problème avec le fichier [FILE] : + +[ERROR] + </notification> + <notification name="CannotOpenTemporarySoundFile"> + Impossible d'ouvrir le fichier son compressé temporaire : [FILE] + </notification> + <notification name="UnknownVorbisEncodeFailure"> + Échec d'encodage Vorbis inconnu sur : [FILE] + </notification> + <notification name="CannotEncodeFile"> + Impossible d'encoder le fichier : [FILE] + </notification> + <notification name="CorruptResourceFile"> + Fichier ressource corrompu : [FILE] + </notification> + <notification name="UnknownResourceFileVersion"> + Version de fichier ressource Linden inconnu : [FILE] + </notification> + <notification name="UnableToCreateOutputFile"> + Impossible de créer le fichier de sortie : [FILE] + </notification> + <notification name="DoNotSupportBulkAnimationUpload"> + Actuellement, nous ne prenons pas en charge le chargement de lots de fichiers d'animation. + </notification> + <notification name="CannotUploadReason"> + Impossible de charger [FILE] suite au problème suivant : [REASON] +Veuillez réessayer ultérieurement. + </notification> + <notification name="CannotCreateLandmarkNotOwner"> + Vous ne pouvez pas créer de repère ici car le propriétaire du terrain ne l'autorise pas. + </notification> + <notification name="CannotRecompileSelectObjectsNoScripts"> + Impossible d'effectuer les recompilations. +Sélectionnez un objet avec un script. + </notification> + <notification name="CannotRecompileSelectObjectsNoPermission"> + Impossible d'effectuer les recompilations. + +Sélectionnez des objets qui ont des scripts et que vous pouvez modifier. + </notification> + <notification name="CannotResetSelectObjectsNoScripts"> + Impossible d'effectuer la réinitialisation. + +Veuillez sélectionner des objets avec des scripts. + </notification> + <notification name="CannotResetSelectObjectsNoPermission"> + Impossible d'effectuer la réinitialisation. + +Sélectionnez des objets qui ont des scripts et que vous pouvez modifier. + </notification> + <notification name="CannotSetRunningSelectObjectsNoScripts"> + Impossible de définir les scripts sur « exécution ». + +Veuillez sélectionner des objets avec des scripts. + </notification> + <notification name="CannotSetRunningNotSelectObjectsNoScripts"> + Impossible de définir les scripts sur « non-exécution ». + +Veuillez sélectionner des objets avec des scripts. + </notification> + <notification name="NoFrontmostFloater"> + Aucun floater frontmost à sauvegarder. + </notification> + <notification name="SeachFilteredOnShortWords"> + Votre requête a été modifiée et les mots trops courts ont été supprimés. + +Recherche effectuée : [FINALQUERY] + </notification> + <notification name="SeachFilteredOnShortWordsEmpty"> + Vos termes de recherche étaient trop courts et aucune recherche n'a été effectuée. + </notification> + <notification name="CouldNotTeleportReason"> + Impossible de téléporter. +[REASON] + </notification> + <notification name="invalid_tport"> + Nous avons rencontré des problèmes en essayant de vous téléporter. Vous devrez peut-être vous reconnecter avant de pouvoir être téléporté. Si vous continuez à recevoir ce message, veuillez consulter le Support à  la page suivante : +www.secondlife.com/support + </notification> + <notification name="invalid_region_handoff"> + Nous avons rencontré des problèmes en essayant de vous téléporter. Vous devrez peut-être vous reconnecter avant de pouvoir être téléporté. Si vous continuez à recevoir ce message, veuillez consulter le Support à  la page suivante : +www.secondlife.com/support + </notification> + <notification name="blocked_tport"> + Désolé, la téléportation est bloquée actuellement. Veuillez réessayer dans un moment. +Si vous ne parvenez toujours pas à être téléporté, déconnectez-vous puis reconnectez-vous pour résoudre le problème. + </notification> + <notification name="nolandmark_tport"> + Désolé, le système n'a pas réussi à localiser la destination de votre repère. + </notification> + <notification name="timeout_tport"> + Désolé, la connexion vers votre lieu de téléportation n'a pas abouti. +Veuillez réessayer dans un moment. + </notification> + <notification name="noaccess_tport"> + Désolé, vous n'avez pas accès à cette destination. + </notification> + <notification name="missing_attach_tport"> + Vos pieces-jointes ne sont pas encore arrivées. Attendez quelques secondes de plus ou déconnectez-vous puis reconnectez-vous avant d'essayer de vous téléporter. + </notification> + <notification name="too_many_uploads_tport"> + Le trafic vers cette région est bouché en ce moment. Votre téléportation ne pourra pas avoir lieu immédiatement. Veuillez réessayer dans quelques minutes ou bien aller dans une zone moins fréquentée. + </notification> + <notification name="expired_tport"> + Désolé, votre demande de téléportation n'a pas abouti assez rapidement. Veuillez réessayer dans quelques minutes. + </notification> + <notification name="expired_region_handoff"> + Désolé, votre demande pour passer dans une autre région n'a pas abouti assez rapidement. Veuillez réessayer dans quelques minutes. + </notification> + <notification name="no_host"> + Impossible de trouver la destination de la téléportation. Il est possible que cette destination soit temporairement indisponible ou qu'elle n'existe plus. Veuillez réessayer dans quelques minutes. + </notification> + <notification name="no_inventory_host"> + L'inventaire est temporairement indisponible. + </notification> + <notification name="CannotSetLandOwnerNothingSelected"> + Impossible de définir le propriétaire foncier : +aucune parcelle sélectionnée. + </notification> + <notification name="CannotSetLandOwnerMultipleRegions"> + Impossible de définir un propriétaire car la sélection couvre plusieurs régions. Veuillez sélectionner une zone plus petite et réessayer. + </notification> + <notification name="ForceOwnerAuctionWarning"> + Cette parcelle est mise aux enchères. Définir un propriétaire annulerait les enchères, ce qui pourrait être gênant pour certains résidents si ces dernières ont commencé. Souhaitez-vous définir un propriétaire ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="CannotContentifyNothingSelected"> + Problème : +Aucune parcelle sélectionnée. + </notification> + <notification name="CannotContentifyNoRegion"> + Problème : +Aucune région sélectionnée. + </notification> + <notification name="CannotReleaseLandNothingSelected"> + Impossible d'abandonner le terrain : +aucune parcelle sélectionnée. + </notification> + <notification name="CannotReleaseLandNoRegion"> + Impossible d'abandonner le terrain : +la région est introuvable. + </notification> + <notification name="CannotBuyLandNothingSelected"> + Impossible d'acheter le terrain : +aucune parcelle sélectionnée. + </notification> + <notification name="CannotBuyLandNoRegion"> + Impossible d'acheter le terrain : +la région dans laquelle il est situé est introuvable. + </notification> + <notification name="CannotCloseFloaterBuyLand"> + Vous ne pouvez pas fermer la fenêtre Acheter le terrain avant que Second Life n'estime le montant de cette transaction. + </notification> + <notification name="CannotDeedLandNothingSelected"> + Cession du terrain impossible : +aucune parcelle sélectionnée. + </notification> + <notification name="CannotDeedLandNoGroup"> + Cession du terrain impossible : +aucun groupe sélectionné. + </notification> + <notification name="CannotDeedLandNoRegion"> + Cession du terrain impossible : +la région dans laquelle il est situé est introuvable. +Veuillez utiliser Aide > Signaler des bugs pour signaler le problème. + </notification> + <notification name="CannotDeedLandMultipleSelected"> + Cession du terrain impossible : +plusieurs parcelles sélectionnées. + +Essayez de ne sélectionner qu'une seule parcelle. + </notification> + <notification name="ParcelCanPlayMedia"> + Cette parcelle propose des flux média. +Pour jouer des flux média, il faut avoir une connexion internet rapide. + +Jouer les flux média lorsqu'ils sont disponibles ? +(Vous pourrez modifier cette option ultérieurement sous Préférences > Audio et vidéo.) + <usetemplate name="okcancelbuttons" notext="Désactiver" yestext="Jouer le média"/> + </notification> + <notification name="CannotDeedLandWaitingForServer"> + Cession du terrain impossible : +rapport de propriété sur le point d'être envoyé par le serveur. + +Merci de réessayer. + </notification> + <notification name="CannotDeedLandNoTransfer"> + Cession du terrain impossible : +la cession de terrain est interdite dans la région [REGION]. + </notification> + <notification name="CannotReleaseLandWatingForServer"> + Impossible d'abandonner le terrain : +mise à jour des informations sur la parcelle sur le point d'être envoyée par le serveur. + +Veuillez réessayer dans quelques secondes. + </notification> + <notification name="CannotReleaseLandSelected"> + Impossible d'abandonner le terrain : +vous n'êtes pas le propriétaire des parcelles sélectionnées. + +Veuillez sélectionner une seule parcelle. + </notification> + <notification name="CannotReleaseLandDontOwn"> + Impossible d'abandonner le terrain : +vous n'avez pas le droit de libérer cette parcelle. +Les parcelles qui vous appartiennent sont en vert. + </notification> + <notification name="CannotReleaseLandRegionNotFound"> + Impossible d'abandonner le terrain : +la région dans laquelle il est situé est introuvable. + +Veuillez utiliser Aide > Signaler un bug pour signaler le problème. + </notification> + <notification name="CannotReleaseLandNoTransfer"> + Impossible d'abandonner le terrain : +le transfert de terrain est interdit dans la région [REGION]. + </notification> + <notification name="CannotReleaseLandPartialSelection"> + Impossible d'abandonner le terrain : +vous devez sélectionner une parcelle entière pour la libérer. + +Sélectionnez toute la parcelle ou divisez-la d'abord. + </notification> + <notification name="ReleaseLandWarning"> + Vous vous apprêtez à libérer [AREA] m² de terrain. +Si vous libérez cette parcelle, elle sera supprimée de votre patrimoine, mais vous ne recevrez pas de L$. + +Libérer ce terrain ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="CannotDivideLandNothingSelected"> + Division du terrain impossible : + +aucune parcelle sélectionnée. + </notification> + <notification name="CannotDivideLandPartialSelection"> + Division du terrain impossible : + +Toute la parcelle est sélectionnée. +Sélectionnez une partie de la parcelle uniquement. + </notification> + <notification name="LandDivideWarning"> + Si vous divisez ce terrain, cette parcelle sera partagée en deux et chaque parcelle pourra avoir ses propres paramètres. Après cette opération, certains paramètres reviendront aux paramètres par défaut. + +Diviser le terrain ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="CannotDivideLandNoRegion"> + Division du terrain impossible : +la région dans laquelle il est situé est introuvable. + +Veuillez utiliser Aide > Signaler un bug pour signaler le problème. + </notification> + <notification name="CannotJoinLandNoRegion"> + Impossible de fusionner le terrain : +la région dans laquelle il est situé est introuvable. + +Veuillez utiliser Aide > Signaler un bug pour signaler le problème. + </notification> + <notification name="CannotJoinLandNothingSelected"> + Impossible de fusionner le terrain : +aucune parcelle sélectionnée. + </notification> + <notification name="CannotJoinLandEntireParcelSelected"> + Impossible de fusionner le terrain : +vous avez sélectionné une seule parcelle. + +Sélectionnez le terrain sur les deux parcelles. + </notification> + <notification name="CannotJoinLandSelection"> + Impossible de fusionner le terrain : +vous devez sélectionner au moins deux parcelles. + +Sélectionnez le terrain sur les deux parcelles. + </notification> + <notification name="JoinLandWarning"> + En fusionnant ce terrain, vous créerez une grande parcelle composée de toutes les parcelles se trouvant dans le rectangle sélectionné. +Vous devrez réinitialiser le nom et les options de la nouvelle parcelle. + +Fusionner le terrain ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="ShowOwnersHelp"> + Afficher les propriétaires : +La couleur des parcelles indique le type de propriété. + +Vert = votre terrain +Turquoise = le terrain de votre groupe +Rouge = appartenant à d'autres +Jaune = en vente +Mauve = aux enchères +Gris = public + </notification> + <notification name="ConfirmNotecardSave"> + Cette note doit être sauvegardée avant que l'objet ne puisse être copié ou visualisé. Enregistrer la note ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="ConfirmItemCopy"> + Copier cet objet dans votre inventaire ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="Copier"/> + </notification> + <notification name="ResolutionSwitchFail"> + Échec du changement de résolution (à [RESX], de [RESY]) + </notification> + <notification name="ErrorUndefinedGrasses"> + Erreur : herbes non identifiées : [SPECIES] + </notification> + <notification name="ErrorUndefinedTrees"> + Erreur : arbres non identifiés : [SPECIES] + </notification> + <notification name="CannotSaveWearableOutOfSpace"> + Impossible de sauvegarder [NAME]. Pour pouvoir sauvegarder ce fichier, vous devez d'abord libérer de la mémoire sur votre ordinateur. + </notification> + <notification name="CannotSaveToAssetStore"> + Impossible de sauvegarder le fichier [NAME] dans la base de données centrale. +Cette erreur est généralement temporaire. Veuillez éditer et sauvegarder l'élément endossable à nouveau d'ici quelques minutes. + +Si le problème persiste, veuillez cliquer sur Aide | Signaler un bug dans le menu déroulant en indiquant les détails de votre connexion. + </notification> + <notification name="YouHaveBeenLoggedOut"> + Vous avez été déconnecté(e) de [SECOND_LIFE] : + [MESSAGE] +Vous pouvez afficher vos messages instantanés et votre chat en cliquant sur Afficher IM et chat. Sinon, cliquez sur Quitter pour quitter immédiatement [SECOND_LIFE]. + <usetemplate name="okcancelbuttons" notext="Quitter" yestext="Afficher IM et chat"/> + </notification> + <notification name="OnlyOfficerCanBuyLand"> + Impossible d'acheter du terrain pour le groupe : +Vous n'avez pas le droit d'acheter de terrain pour votre groupe. + </notification> + <notification label="Devenir amis" name="AddFriend"> + Vous pouvez suivre les déplacements de vos amis sur la carte et voir lorsqu'ils se connectent. + +Proposer à [NAME] de devenir votre ami(e) ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification label="Devenir amis" name="AddFriendWithMessage"> + Vous pouvez suivre les déplacements de vos amis sur la carte et voir lorsqu'ils se connectent. + +Proposer à [NAME] de devenir votre ami(e) ? + <form name="form"> + <input name="message" type="text"> + Voulez-vous être mon ami(e) ? + </input> + <button name="Offer" text="OK"/> + <button name="Cancel" text="Annuler"/> + </form> + </notification> + <notification name="RemoveFromFriends"> + Voulez-vous supprimer [FIRST_NAME] [LAST_NAME] de votre liste d'amis ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="RemoveMultipleFromFriends"> + Voulez-vous supprimer plusieurs résidents de votre liste d'amis ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="GodDeleteAllScriptedPublicObjectsByUser"> + Êtes-vous certain de vouloir supprimer tous les objets scriptés appartenant à ** [AVATAR_NAME] ** sur tous les terrains des autres résidents dans cette région ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="GodDeleteAllScriptedObjectsByUser"> + Êtes-vous certain de vouloir supprimer tous les objets scriptés appartenant à ** [AVATAR_NAME] ** sur tous les terrains de cette région ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="GodDeleteAllObjectsByUser"> + Êtes-vous certain de vouloir supprimer tous les objets (scriptés ou pas) appartenant à ** [AVATAR_NAME] ** sur tous les terrains de cette région ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="BlankClassifiedName"> + Vous devez choisir un nom pour votre petite annonce. + </notification> + <notification name="MinClassifiedPrice"> + Le coût de l'annonce doit être de [MIN_PRICE] L$ minimum. + +Veuillez saisir un montant plus élevé. + </notification> + <notification name="ConfirmObjectDeleteLock"> + Au moins un des objets que vous avez sélectionnés est verrouillé. + +Êtes-vous certain de vouloir supprimer ces objets ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="ConfirmObjectDeleteNoCopy"> + Au moins un des objets que vous avez sélectionnés n'est pas copiable. + +Êtes-vous certain de vouloir supprimer ces objets ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="ConfirmObjectDeleteNoOwn"> + Au moins un des objets que vous avez sélectionnés ne vous appartient pas. + +Êtes-vous certain de vouloir supprimer ces objets ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="ConfirmObjectDeleteLockNoCopy"> + Au moins un des objets est verrouillé. +Au moins un des objets n'est pas copiable. + +Êtes-vous certain de vouloir supprimer ces objets ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="ConfirmObjectDeleteLockNoOwn"> + Au moins un des objets est verrouillé. +Au moins un des objets ne vous appartient pas. + +Êtes-vous certain de vouloir supprimer ces objets ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="ConfirmObjectDeleteNoCopyNoOwn"> + Au moins un des objets n'est pas copiable. +Au moins un des objets ne vous appartient pas. + +Êtes-vous certain de vouloir supprimer ces objets ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="ConfirmObjectDeleteLockNoCopyNoOwn"> + Au moins un des objets est verrouillé. +Au moins un des objets n'est pas copiable. +Au moins un des objets ne vous appartient pas. + +Êtes-vous certain de vouloir supprimer ces objets ? + <usetemplate name="okcancelbuttons" notext="annuler" yestext="OK"/> + </notification> + <notification name="ConfirmObjectTakeLock"> + Au moins un des objets est verrouillé. + +Êtes-vous certain de vouloir prendre ces objets ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="ConfirmObjectTakeNoOwn"> + Vous n'êtes pas le propriétaire de tous les objets que vous prenez. +Si vous continuez, les droits accordés au prochain propriétaire seront activés et vous risquez de ne plus pouvoir modifier ou copier les objets. + +Êtes-vous certain de vouloir prendre ces objets ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="ConfirmObjectTakeLockNoOwn"> + Au moins un des objets est verrouillé. +Vous n'êtes pas le propriétaire de tous les objets que vous prenez. +Si vous continuez, les droits accordés au prochain propriétaire seront activés et vous risquez de ne plus pouvoir modifier ou copier les objets. +Par contre, vous pouvez prendre les objets sélectionnés. + +Êtes-vous certain de vouloir prendre ces objets ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="CantBuyLandAcrossMultipleRegions"> + Impossible d'acheter le terrain car la sélection couvre plusieurs régions. + +Veuillez sélectionner une zone plus petite et réessayer. + </notification> + <notification name="DeedLandToGroup"> + Si vous cédez ce terrain, le groupe devra avoir les moyens de le prendre en charge. +Le prix de la vente du terrain n'est pas remboursé par le propriétaire. Si la parcelle que vous cédez se vend, le prix de la vente sera divisé en parts égales parmi les membres du groupe. + +Céder ces [AREA] m² de terrain au groupe [GROUP_NAME] ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="DeedLandToGroupWithContribution"> + Si vous cédez ce terrain, le groupe devra avoir les moyens de le prendre en charge. +La cession incluera une contribution de terrain simultanée au groupe de [FIRST_NAME] [LAST_NAME]. +Le prix de la vente du terrain n'est pas remboursé par le propriétaire. Si la parcelle que vous cédez se vend, le prix de la vente sera divisé en parts égales parmi les membres du groupe. + +Céder ces [AREA] m² de terrain au groupe [GROUP_NAME] ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="DisplaySetToSafe"> + Les paramètres d'affichage sont au niveau le plus sûr, comme vous l'aviez indiqué. + </notification> + <notification name="DisplaySetToRecommended"> + Vos paramètres d'affichage ont été réglés avec une marge de sécurité en fonction de votre configuration système. + </notification> + <notification name="ErrorMessage"> + [ERROR_MESSAGE] + </notification> + <notification name="AvatarMoved"> + L'emplacement [TYPE] n'est pas disponible actuellement. [HELP] +Vous avez été déplacé dans une région voisine. + </notification> + <notification name="ClothingLoading"> + Vos habits sont toujours en train d'être téléchargés. +Vous pouvez utiliser [SECOND_LIFE] sans problème, les autres résidents vous voient normalement. + <form name="form"> + <ignore name="ignore" text="Lorsque les habits prennent longtemps à télécharger"/> + </form> + </notification> + <notification name="FirstRun"> + L'installation de [SECOND_LIFE] est terminée. + +S'il s'agit de la première fois que vous utilisez [SECOND_LIFE], vous devrez créer un compte avant de pouvoir vous connecter. +Retourner sur www.secondlife.com pour créer un nouveau compte ? + <usetemplate name="okcancelbuttons" notext="Continuer" yestext="Nouveau compte..."/> + </notification> + <notification name="LoginPacketNeverReceived"> + Vous avez des problèmes à vous connecter. Il peut s'agir d'un problème avec votre connexion internet ou les serveurs de Second Life. + +Nous vous conseillons de vérifier votre connexion Internet et de réessayer dans quelques minutes, de cliquer sur Aide, ou bien de cliquer sur Téléporter pour être téléporté vers votre domicile. + <form name="form"> + <button name="OK" text="OK"/> + <button name="Help" text="Aide"/> + <button name="Teleport" text="Téléporter"/> + </form> + </notification> + <notification name="WelcomeChooseSex"> + Votre personnage va apparaître dans un moment. + +Pour marcher, utilisez les flèches de direction. +Appuyez sur F1 pour obtenir de l'aide ou en savoir plus sur [SECOND_LIFE]. +Choisissez un avatar homme ou femme. +Vous pourrez revenir sur votre décision plus tard. + <usetemplate name="okcancelbuttons" notext="Femme" yestext="Homme"/> + </notification> + <notification name="NotEnoughCurrency"> + [NAME] [PRICE] L$ Vous n'avez pas suffisamment de L$ pour faire cela. + </notification> + <notification name="GrantedModifyRights"> + Vous avez reçu le droit de modifier les objets de [FIRST_NAME] [LAST_NAME]. + </notification> + <notification name="RevokedModifyRights"> + Vous n'avez plus le droit de modifier les objets de [FIRST_NAME] [LAST_NAME]. + </notification> + <notification name="FlushMapVisibilityCaches"> + Cela videra le cache cartographique de cette région. +Cela n'est vraiment utile que pour faire du débugage. +(En production, attendez 5 minutes. Les cartes seront mises à jour après reconnexion.) + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="BuyOneObjectOnly"> + Impossible d'acheter plus d'un objet à la fois. Veuillez ne sélectionner qu'un seul objet. + </notification> + <notification name="OnlyCopyContentsOfSingleItem"> + Impossible de copier les contenus de plus d'un objet à la fois. +Veuillez ne sélectionner qu'un seul objet. + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="KickUsersFromRegion"> + Téléporter tous les résidents de cette région chez eux ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="EstateObjectReturn"> + Etes-vous certain de vouloir renvoyer les objets appartenant à [USER_NAME] ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="InvalidTerrainBitDepth"> + Impossible de definir les textures de la région : +La texture du terrain [TEXTURE_NUM] a une profondeur invalide ([TEXTURE_BIT_DEPTH]). + +Remplacer la texture [TEXTURE_NUM] avec une image de 24 bits, 512 X 512, ou plus petite, puis cliquez à nouveau sur Appliquer. + </notification> + <notification name="InvalidTerrainSize"> + Impossible de definir les textures de la région : +La texture du terrain [TEXTURE_NUM] est trop volumineuse ([TEXTURE_SIZE_X] X [TEXTURE_SIZE_Y]). + +Remplacer la texture [TEXTURE_NUM] avec une image de 24 bits, 512 X 512, ou plus petite, puis cliquez à nouveau sur Appliquer. + </notification> + <notification name="RawUploadStarted"> + Le chargement a commencé. Cela va prendre une à deux minutes, +suivant votre vitesse de connexion. + </notification> + <notification name="ConfirmBakeTerrain"> + Etes-vous sûr(e) de vouloir figer le relief actuel, en faire le point central des limites d'élévation/abaissement de relief et la valeur par défaut du bouton Annuler modification ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="MaxAllowedAgentOnRegion"> + Vous ne pouvez pas autoriser plus de [MAX_AGENTS] résidents. + </notification> + <notification name="MaxBannedAgentsOnRegion"> + Vous ne pouvez pas bannir plus de [MAX_BANNED] résidents. + </notification> + <notification name="MaxAgentOnRegionBatch"> + Echec lors de la tentative d'ajout de [NUM_ADDED] agents : +Dépasse la limite fixée à [MAX_AGENTS] [LIST_TYPE] de [NUM_EXCESS]. + </notification> + <notification name="MaxAllowedGroupsOnRegion"> + Vous ne pouvez pas avoir plus que [MAX_GROUPS] groupes autorisés. + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="Figer"/> + </notification> + <notification name="MaxManagersOnRegion"> + Vous ne pouvez avoir que [MAX_MANAGER] gérants de domaine. + </notification> + <notification name="OwnerCanNotBeDenied"> + Impossible d'ajouter le propriétaire du domaine à la liste des résidents bannis. + </notification> + <notification name="CanNotChangeAppearanceUntilLoaded"> + Impossible de changer d'apparence jusqu'à ce que les habits et la silhouette soient chargés. + </notification> + <notification name="ClassifiedMustBeAlphanumeric"> + Le nom de votre petite annonce doit commencer par un chiffre ou une lettre (A à Z). La ponctuation n'est pas autorisée. + </notification> + <notification name="CantSetBuyObject"> + Cet objet n'est pas à vendre. +Veuillez choisir un objet à vendre et réessayer. + </notification> + <notification name="FinishedRawDownload"> + Chargement du fichier de terrain raw effectué vers : +[DOWNLOAD_PATH]. + </notification> + <notification name="DownloadWindowsMandatory"> + Une nouvelle version de [SECOND_LIFE] est disponible. +[MESSAGE] +Pour utiliser [SECOND_LIFE] vous devez télécharger cette mise à jour. + <usetemplate name="okcancelbuttons" notext="Quitter" yestext="Télécharger"/> + </notification> + <notification name="DownloadWindows"> + Une mise à jour de [SECOND_LIFE] est disponible. +[MESSAGE] +Cette mise à jour n'est pas requise mais si vous voulez une meilleure performance et plus de stabilité, nous vous recommandons de l'installer. + <usetemplate name="okcancelbuttons" notext="Continuer" yestext="Télécharger"/> + </notification> + <notification name="DownloadWindowsReleaseForDownload"> + Une mise à jour de [SECOND_LIFE] est disponible. +[MESSAGE] +Cette mise à jour n'est pas requise mais si vous voulez une meilleure performance et plus de stabilité, nous vous recommandons de l'installer. + <usetemplate name="okcancelbuttons" notext="Continuer" yestext="Télécharger"/> + </notification> + <notification name="DownloadMacMandatory"> + Une nouvelle version de [SECOND_LIFE] est disponible. +[MESSAGE] +Pour utiliser [SECOND_LIFE] vous devez télécharger cette mise à jour. + +Télécharger vers le dossier Applications ? + <usetemplate name="okcancelbuttons" notext="Quitter" yestext="Télécharger"/> + </notification> + <notification name="DownloadMac"> + Une mise à jour de [SECOND_LIFE] est disponible. +[MESSAGE] +Cette mise à jour n'est pas requise mais si vous voulez une meilleure performance et plus de stabilité, nous vous recommandons de l'installer. + +Télécharger vers le dossier Applications ? + <usetemplate name="okcancelbuttons" notext="Continuer" yestext="Télécharger"/> + </notification> + <notification name="DownloadMacReleaseForDownload"> + Une mise à jour de [SECOND_LIFE] est disponible. +[MESSAGE] +Cette mise à jour n'est pas requise mais si vous voulez une meilleure performance et plus de stabilité, nous vous recommandons de l'installer. + +Télécharger vers le dossier Applications ? + <usetemplate name="okcancelbuttons" notext="Continuer" yestext="Télécharger"/> + </notification> + <notification name="DeedObjectToGroup"> + Si vous cédez cet objet, le groupe : +* recevra les L$ versés pour l'objet ; + <usetemplate ignoretext="Lors de la cession d'objets au groupe" name="okcancelignore" notext="Annuler" yestext="Céder"/> + </notification> + <notification name="WebLaunchExternalTarget"> + Ouvrir votre navigateur web système pour afficher ce contenu ? + <usetemplate ignoretext="Lors de l'ouverture de votre navigateur système pour afficher une page web" name="okcancelignore" notext="Annuler" yestext="OK"/> + </notification> + <notification name="WebLaunchJoinNow"> + Aller sur www.secondlife.com pour gérer votre compte ? + <usetemplate ignoretext="Lors de l'ouverture du navigateur web pour gérer votre compte" name="okcancelignore" notext="Annuler" yestext="OK"/> + </notification> + <notification name="WebLaunchBugReport101"> + Pour apprendre à signaler correctement des bugs, consultez le Wiki de [SECOND_LIFE]. + <usetemplate ignoretext="Lors de l'ouverture du navigateur web pour consulter le Wiki et apprendre à signaler des bugs" name="okcancelignore" notext="Annuler" yestext="OK"/> + </notification> + <notification name="WebLaunchSecurityIssues"> + Pour apprendre à signaler un problème de sécurité, consultez le Wiki de [SECOND_LIFE]. + <usetemplate ignoretext="Lors de l'ouverture du navigateur web pour consulter la page Wiki sur les problèmes de sécurité." name="okcancelignore" notext="Annuler" yestext="OK"/> + </notification> + <notification name="WebLaunchQAWiki"> + Consultez le Wiki sur l'Assurance Qualité de [SECOND_LIFE]. + <usetemplate ignoretext="Lors de l'ouverture du navigateur web pour consulter la page Wiki sur l'Assurance Qualité." name="okcancelignore" notext="Annuler" yestext="OK"/> + </notification> + <notification name="WebLaunchPublicIssue"> + Pour signaler des bugs et autres problèmes, utilisez le JIRA de [SECOND_LIFE]. + <usetemplate ignoretext="Lors de l'ouverture du navigateur web pour consulter le JIRA" name="okcancelignore" notext="Annuler" yestext="Aller sur cette page"/> + </notification> + <notification name="WebLaunchPublicIssueHelp"> + Pour apprendre à utiliser JIRA, consultez le Wiki de [SECOND_LIFE]. + <usetemplate ignoretext="Lors de l'ouverture du navigateur web pour consulter la page Wiki sur le JIRA" name="okcancelignore" notext="Annuler" yestext="Aller sur cette page"/> + </notification> + <notification name="WebLaunchSupportWiki"> + Visitez le blog officiel des Lindens pour les dernières nouvelles et informations. + <usetemplate ignoretext="Lors de l'ouverture du navigateur web pour consulter le blog" name="okcancelignore" notext="Annuler" yestext="Aller à la page"/> + </notification> + <notification name="WebLaunchLSLGuide"> + Consulter le Guide guide pour l'écriture de scripts pour obtenir de l'aide ? + <usetemplate ignoretext="Lors de l'ouverture du navigateur web pour voir le Guide pour l'écriture de scripts" name="okcancelignore" notext="Annuler" yestext="OK"/> + </notification> + <notification name="WebLaunchLSLWiki"> + Consulter le Wiki LSL pour de l'aide sur les scripts ? + <usetemplate ignoretext="Lors de l'ouverture du navigateur web pour consulter le Guide sur l'écriture de scripts" name="okcancelignore" notext="Annuler" yestext="Aller à la page"/> + </notification> + <notification name="ReturnToOwner"> + Êtes-vous certain de vouloir renvoyer les objets sélectionnés à leur propriétaire ? Les objets donnés transférables seront renvoyés à leur ancien propriétaire. + +*Avertissement* Les objets non transférables seront supprimés ! + <usetemplate ignoretext="Lors du renvoi d'objets à leurs propriétaires" name="okcancelignore" notext="Annuler" yestext="OK"/> + </notification> + <notification name="GroupLeaveConfirmMember"> + Vous êtes actuellement membre du groupe [GROUP]. +Quitter le groupe ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="ConfirmKick"> + Souhaitez-vous vraiment éjecter tous les utilisateurs de la grille ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="Éjecter tous"/> + </notification> + <notification name="MuteLinden"> + Désolé, vous ne pouvez pas ignorer un Linden. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="CannotStartAuctionAlreadyForSale"> + Vous ne pouvez pas démarrer des enchères sur une parcelle déjà en vente. Si vous êtes certain de vouloir démarrer des enchères, mettez fin à la vente. + </notification> + <notification label="Échec de la fonction Ignorer les objets par nom" name="MuteByNameFailed"> + Vous ignorez déjà ce résident. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="RemoveItemWarn"> + Si vous supprimez des contenus, vous risquez d'endommager l'objet. Souhaitez-vous supprimer cet objet ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="CantOfferCallingCard"> + Impossible d'offrir une carte de visite actuellement. Veuillez réessayer dans un moment. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="CantOfferFriendship"> + Impossible de proposer votre amitié actuellement. Veuillez réessayer dans un moment. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="BusyModeSet"> + Mode occupé activé. +Les chats et les messages instantanés ne s'afficheront pas. Vous répondrez aux messages instantanés en utilisant la réponse automatique que vous avez créée. Toutes les propositions de téléportation seront refusées. Tous objets envoyés iront dans la corbeille. + <usetemplate ignoretext="Lors de l'utilisation du mode Occupé" name="okignore" yestext="OK"/> + </notification> + <notification name="JoinedTooManyGroupsMember"> + Vous appartenez déjà à un nombre élevé de groupes et nous ne pouvez pas en rejoindre un nouveau. Avant de pouvoir rejoindre ce groupe, vous devez en quitter un ou refuser cette offre. +Pour quitter un groupe, sélectionnez l'option Groupe dans le menu Éditer. +[NAME] vous invite à rejoindre un groupe. +[INVITE] + <usetemplate name="okcancelbuttons" notext="Refuser" yestext="Rejoindre"/> + </notification> + <notification name="KickUser"> + Éjecter cet utilisateur avec quel message ? + <form name="form"> + <input name="message" type="text"> + Un administrateur vous a déconnecté. + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Annuler"/> + </form> + </notification> + <notification name="KickAllUsers"> + Éjecter tous les résidents actuellement en ligne avec quel message ? + <form name="form"> + <input name="message" type="text"> + Un administrateur vous a déconnecté. + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Annuler"/> + </form> + </notification> + <notification name="FreezeUser"> + Geler cet utilisateur avec quel message ? + <form name="form"> + <input name="message" type="text"> + Vous avez été gelé. Vous ne pouvez ni bouger ni chatter. Un administrateur va vous envoyer un message instantané (IM). + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Annuler"/> + </form> + </notification> + <notification name="UnFreezeUser"> + Dégeler cet utilisateur avec quel message ? + <form name="form"> + <input name="message" type="text"> + Vous n'êtes plus gelé. + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Annuler"/> + </form> + </notification> + <notification name="OfferTeleport"> + Proposez une téléportation avec le message suivant ? + <form name="form"> + <input name="message" type="text"> + On se rejoint à [REGION] ? + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Annuler"/> + </form> + </notification> + <notification name="OfferTeleportFromGod"> + Demander au résident de venir vous rejoindre ? + <form name="form"> + <input name="message" type="text"> + On se rejoint à [REGION] ? + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Annuler"/> + </form> + </notification> + <notification name="TeleportFromLandmark"> + Êtes-vous certain de vouloir être téléporté ? + <usetemplate ignoretext="Lors de la téléportation depuis un repère de l'inventaire" name="okcancelignore" notext="Annuler" yestext="Téléporter"/> + </notification> + <notification label="Envoyer un message à tout le monde dans votre domaine" name="MessageEstate"> + Saisissez un message court qui sera envoyé à tous les résidents se trouvant actuellement sur votre domaine. + <form name="form"> + <input name="message" type="text"/> + <button name="OK" text="OK"/> + <button name="Cancel" text="Annuler"/> + </form> + </notification> + <notification label="Modifier un domaine Linden" name="ChangeLindenEstate"> + Vous vous apprêtez à modifier un domaine appartenant aux Lindens (continent, zone réservée aux ados, orientation etc.). + +Cela est extrêmement délicat car l'expérience des résidents est en jeu. Sur le continent, cela modifiera des milliers de régions et sera difficile à digérer pour le serveur. + +Continuer ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification label="Modifier l'accès à un domaine Linden" name="ChangeLindenAccess"> + Vous vous apprêtez à modifier la liste d'accès à un domaine appartenant aux Linden (continent, zone réservée aux ados, orientation etc.). + +Cette action est délicate et ne doit être effectuée que pour appeler le hack autorisant des objets/L$ à être transférés à l'intérieur/extérieur de la grille. +Cette action modifiera des milliers de régions et sera difficile à digérer pour le serveur. + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification label="Choisir le domaine" name="EstateAllowedAgentAdd"> + Ajouter à la liste des résidents autorisés uniquement pour ce domaine ou pour [ALL_ESTATES] ? + <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Tous les domaines" yestext="Ce domaine"/> + </notification> + <notification label="Choisir le domaine" name="EstateAllowedAgentRemove"> + Supprimer de la liste des résidents autorisés uniquement pour ce domaine ou pour [ALL_ESTATES] ? + <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Tous les domaines" yestext="Ce domaine"/> + </notification> + <notification label="Choisir le domaine" name="EstateAllowedGroupAdd"> + Ajouter à la liste des groupes autorisés uniquement pour ce domaine ou pour [ALL_ESTATES] ? + <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Tous les domaines" yestext="Ce domaine"/> + </notification> + <notification label="Choisir le domaine" name="EstateAllowedGroupRemove"> + Supprimer de la liste des groupes autorisés uniquement pour ce domaine ou pour [ALL_ESTATES] ? + <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Tous les domaines" yestext="Ce domaine"/> + </notification> + <notification label="Choisir le domaine" name="EstateBannedAgentAdd"> + Refuser l'accès à ce domaine uniquement ou à [ALL_ESTATES] ? + <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Tous les domaines" yestext="Ce domaine"/> + </notification> + <notification label="Choisir le domaine" name="EstateBannedAgentRemove"> + Supprimer ce résident de la liste des résidents bannis pour ce domaine uniquement ou pour [ALL_ESTATES] ? + <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Tous les domaines" yestext="Ce domaine"/> + </notification> + <notification label="Choisir le domaine" name="EstateManagerAdd"> + Ajouter un gérant de domaine pour ce domaine uniquement ou pour [ALL_ESTATES] ? + <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Tous les domaines" yestext="Ce domaine"/> + </notification> + <notification label="Choisir le domaine" name="EstateManagerRemove"> + Supprimer le gérant de domaine pour ce domaine uniquement ou pour [ALL_ESTATES] ? + <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Tous les domaines" yestext="Ce domaine"/> + </notification> + <notification label="Confirmer" name="EstateKickUser"> + Éjecter [EVIL_USER] de ce domaine ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="EstateChangeCovenant"> + Êtes-vous certain de vouloir modifier le règlement du domaine ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="RegionEntryAccessBlocked"> + Votre catégorie d'accès ne vous autorise pas à pénétrer dans cette région. Cela vient peut-être du fait qu'il manquait des informations pour valider votre âge. + +Vérifiez que vous avez la toute dernière version du client et consultez les pages d'aide pour savoir comment accéder aux zones ayant ce niveau d'accès. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="RegionEntryAccessBlocked_KB"> + Votre catégorie d'accès ne vous permet pas de pénétrer dans cette région. + +Souhaitez-vous en savoir plus sur les différentes catégories d'accès ? + <url name="url"> + http://wiki.secondlife.com/wiki/Pr%C3%A9sentation_des_cat%C3%A9gories_de_contenu_(KB) + </url> + <usetemplate ignoretext="Lorsque l'accès à une région est bloqué à cause de la catégorie d'accès" name="okcancelignore" notext="Fermer" yestext="Consulter les pages d'aide"/> + </notification> + <notification name="RegionEntryAccessBlocked_Notify"> + Votre catégorie d'accès ne vous permet pas de pénétrer dans cette région. + </notification> + <notification name="RegionEntryAccessBlocked_Change"> + Votre catégorie d'accès ne vous permet pas de pénétrer dans cette région. + +En cliquant sur Modifier les préférences, vous pourrez changer votre catégorie d'accès et pénétrer dans la région. À partir de maintenant, vous pouvez rechercher et accéder au contenu [REGIONMATURITY]. Vous pouvez modifier ce paramètre à partir du menu Édition > Préférences... > Général. + <form name="form"> + <button + name="OK" + text="Modifier les Préférences"/> + <button + default="true" + name="Cancel" + text="Fermer"/> + <ignore name="ignore" text="Lorsque l'accès à une région est bloqué à cause des préférences concernant la catégorie d'accès"/> + </form> + </notification> + <notification name="LandClaimAccessBlocked"> + Votre catégorie d'accès ne vous permet pas de réclamer cette région. Cela vient peut-être du fait qu'il manquait des informations pour valider votre âge. + +Vérifiez que vous avez la toute dernière version du client et consultez les pages d'aide pour savoir comment accéder aux zones ayant ce niveau d'accès. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="LandClaimAccessBlocked_KB"> + Votre catégorie d'accès ne vous permet pas de réclamer cette région. + +Souhaitez-vous en savoir plus sur les différentes catégories d'accès ? + <url name="url"> + http://wiki.secondlife.com/wiki/Pr%C3%A9sentation_des_cat%C3%A9gories_de_contenu_(KB) + </url> + <usetemplate ignoretext="Lorsqu'une région ne peut pas être réclamée à cause de la catégorie d'accès" name="okcancelignore" notext="Fermer" yestext="Consulter les pages d'aide"/> + </notification> + <notification name="LandClaimAccessBlocked_Notify"> + Votre catégorie d'accès ne vous autorise pas à réclamer cette région. + </notification> + <notification name="LandClaimAccessBlocked_Change"> + Votre catégorie d'accès ne vous permet pas de réclamer cette région. + +En cliquant sur Modifier les préférences, vous pourrez changer votre catégorie d'accès et pénétrer dans la région. À partir de maintenant, vous pouvez rechercher et accéder au contenu [REGIONMATURITY]. Vous pouvez modifier ce paramètre à partir du menu Édition > Préférences... > Général. + <usetemplate ignoretext="Lorsqu'une région ne peut pas être réclamée à cause des préférences concernant la catégorie d'accès" name="okcancelignore" notext="Fermer" yestext="Modifier les Préférences"/> + </notification> + <notification name="LandBuyAccessBlocked"> + Votre catégorie d'accès ne vous permet pas d'acheter cette région. Cela vient peut-être du fait qu'il manquait des informations pour valider votre âge. + +Vérifiez que vous avez la toute dernière version du client et consultez les pages d'aide pour savoir comment accéder aux zones ayant ce niveau d'accès. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="LandBuyAccessBlocked_KB"> + Votre catégorie d'accès ne vous permet pas d'acheter cette région. + +Souhaitez-vous en savoir plus sur les différentes catégories d'accès ? + <url name="url"> + http://wiki.secondlife.com/wiki/Pr%C3%A9sentation_des_cat%C3%A9gories_de_contenu_(KB) + </url> + <usetemplate ignoretext="Lorsqu'une région ne peut pas être achetée à cause de la catégorie d'accès" name="okcancelignore" notext="Fermer" yestext="Consulter les pages d'aide"/> + </notification> + <notification name="LandBuyAccessBlocked_Notify"> + Votre catégorie d'accès ne vous permet pas d'acheter cette région. + </notification> + <notification name="LandBuyAccessBlocked_Change"> + Votre catégorie d'accès ne vous autorise pas à acheter cette région. + +En cliquant sur Modifier les préférences, vous pourrez changer votre catégorie d'accès et pénétrer dans la région. À partir de maintenant, vous pouvez rechercher et accéder au contenu [REGIONMATURITY]. Vous pouvez modifier ce paramètre à partir du menu Édition > Préférences... > Général. + <usetemplate ignoretext="Lorsqu'une région ne peut pas être achetée à cause des préférences concernant la catégorie d'accès" name="okcancelignore" notext="Fermer" yestext="Modifier les Préférences"/> + </notification> + <notification name="TooManyPrimsSelected"> + "Vous avez sélectionné trop de prims. Veuillez sélectionner au maximum [MAX_PRIM_COUNT] prims et réessayer." + </notification> + <notification name="ProblemImportingEstateCovenant"> + Problème lors de l'importation du règlement du domaine. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ProblemAddingEstateManager"> + Problèmes lors de l'ajout d'un nouveau gérant de domaine. Il est possible qu'au moins un des domaines ait une liste de gérants complète. + </notification> + <notification name="ProblemAddingEstateGeneric"> + Problème lors de l'ajout à la liste de ce domaine. Il est possible qu'au moins un des domaines ait une liste complète. + </notification> + <notification name="UnableToLoadNotecardAsset"> + Impossible de charger les données de la note actuellement. + </notification> + <notification name="NotAllowedToViewNotecard"> + Permissions pour afficher la note insuffisantes. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MissingNotecardAssetID"> + Les références de la note ne se trouvent pas dans la base de données. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="PublishClassified"> + Rappel : les frais pour passer des petites annonces ne sont pas remboursables. + +Publier cette petite annonce maintenant pour [AMOUNT] L$ ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="SetClassifiedMature"> + Cette petite annonce contient-elle du contenu Mature ? + <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Non" yestext="Oui"/> + </notification> + <notification name="SetGroupMature"> + Ce groupe contient-il du contenu Mature ? + <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Non" yestext="Oui"/> + </notification> + <notification label="Confirmer le redémarrage" name="ConfirmRestart"> + Souhaitez-vous vraiment redémarrer cette région dans 2 minutes ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification label="Envoyer un message à la région" name="MessageRegion"> + Saisissez une message qui sera envoyé à tous les résidents présents dans cette région. + <form name="form"> + <input name="message" type="text"/> + <button name="OK" text="OK"/> + <button name="Cancel" text="Annuler"/> + </form> + </notification> + <notification label="Interdire le terraformage" name="HelpRegionBlockTerraform"> + Si vous cochez cette case, les propriétaires ne pourront plus terraformer leur terrain, quel que soit le paramétrage individuel des parcelles. + +Valeur par défaut : désactivé + </notification> + <notification label="Interdire le vol" name="HelpRegionBlockFly"> + Si vous cochez cette case, les résidents ne pourront plus voler dans cette région, quel que soit le paramétrage individuel des parcelles. + +Valeur par défaut : désactivé + </notification> + <notification label="Modifications groupées des droits relatifs au contenu" name="HelpBulkPermission"> + L'outil Modifications groupées des droits vous permet de modifier rapidement et simultanément les droits dans les contenus des objets séléctionnés. Notez toutefois que vous paramétrez uniquement les droits des objets dans les Contenus des objets sélectionnés, et non les droits sur les objets eux-mêmes. + +Notez aussi que les droits ne s'appliquent pas aux contenus imbriqués dans les objets contenus. Votre requête ne porte que sur les objets de premier niveau. + +Vous pouvez sélectionner quels types d'objets modifier à la section Types de contenu. Les photos sont incluses quand vous sélectionnez Textures. + +* Cet outil ne vous permettra de changer que les droits des objets que vous êtes autorisés à modifier. +* Vous ne pouvez pas accorder de droits que vous n'avez pas au prochain propriétaire. +* Les droits accordés au prochain propriétaire de sont que des requêtes. Si un objet ne peut recevoir tous les nouveaux droits, aucun de ses droits ne changera. + +Lorsque vous êtes prêt à modifier tous les droits, cliquez sur Appliquer et attendez de voir s'afficher les résultats. + +Si vous fermez la fenêtre des modifications groupées alors que les droits sont en train d'être modifiés, vous suspendez l'opération. + </notification> + <notification label="Autoriser les dégâts" name="HelpRegionAllowDamage"> + Si vous cochez cette case, les résidents peuvent subir des dégâts dans toute la région quel que soit le paramétrage individuel des parcelles. Si la case n'est pas cochée, les propriétaires sont libres d'activer ou non cette option sur leur parcelle. + +Valeur par défaut : désactivé + </notification> + <notification label="Nombre maximum d'avatars" name="HelpRegionAgentLimit"> + Définit le nombre maximum d'avatars autorisés dans cette région. +La performance peut varier en fonction du nombre d'avatars présents. + +Valeur par défaut : 40 + </notification> + <notification label="Bonus objet" name="HelpRegionObjectBonus"> + Le bonus objet est le multiplicateur de prims autorisées sur une parcelle donnée. L'échelle autorisée est comprise entre 1 et 10. Lorsque ce chiffre est de 1, chaque parcelle de 512 m² peut contenir 117 prims. S'il est de 2, chaque parcelle peut contenir 234 prims, ou deux fois plus, et ainsi de suite. Le nombre maximum de prims autorisées dans une région est de 15 000, quel que soit le bonus objet. Attention : si vous définissez un bonus objet et décidez ensuite de le diminuer, cela peut entraîner la suppression ou le renvoi d'objets. + +Valeur par défaut : 1.0 + </notification> + <notification label="Accès" name="HelpRegionMaturity"> + Définit la catégorie d'accès de la région, telle qu'affichée dans la barre de menu en haut du client et dans les infobulles de la carte lorsque vous passez votre curseur au-dessus de cette région. Ce paramètre affecte aussi l'accès à cette région et les résultats de recherche. Les autres résidents ne peuvent pénétrer que dans les régions ou n'afficher que les résultats de recherche ayant la même catégorie d'accès que celle indiquée dans leurs Préférences. + +Ce changement n'apparaîtra pas immédiatement sur la carte. + </notification> + <notification label="Interdire les bousculades" name="HelpRegionRestrictPushObject"> + Cette case permet de restreindre les bousculades dans toute une région. +Lorsqu'elle est cochée, les résidents ne peuvent être bousculés que par d'autres résidents ou par le propriétaire de la parcelle. +(Bousculer fait référence à la fonction LSL llPushObjet().) + +Valeur par défaut : désactivé + </notification> + <notification label="Fusionner/Diviser des parcelles" name="HelpParcelChanges"> + Cette case permet de choisir si les parcelles n'appartenant pas au gérant du domaine peuvent ou pas être fusionnées ou divisées. +Si cette case n'est pas cochée : + * Seuls les propriétaires ou gérants de domaine peuvent fusionner ou diviser des parcelles. + * Ils ne peuvent fusionner ou diviser que les parcelles du propriétaire, + ou celles d'un groupe dans lequel ils ont les pouvoirs nécessaires. + Si cette case est cochée : + * Tous les propriétaires peuvent fusionner ou diviser leurs parcelles. + * Pour les parcelles appartenant à un groupe, les membres avec les pouvoirs nécessaires peuvent fusionner ou diviser les parcelles. + +Valeur par défaut : activée + </notification> + <notification label="Ne pas afficher dans la recherche" name="HelpRegionSearch"> + Si vous cochez cette option, les propriétaires ne pourront pas faire apparaître leurs parcelles dans les résultats de recherche. +Valeur par défaut : désactivé + </notification> + <notification label="Catégorie de la région modifiée" name="RegionMaturityChange"> + La catégorie d'accès de cette région a été mise à jour. +Ce changement n'apparaîtra pas immédiatement sur la carte. + </notification> + <notification label="Revente de terrain" name="HelpRegionLandResell"> + Les propriétaires et gérants de domaine peuvent vendre n'importe quel terrain appartenant au propriétaire du domaine. +Si cette option n'est pas cochée, les propriétaires ne peuvent pas revendre leur parcelle. +Si cette option est cochée, les propriétaires sont libres de revendre leur parcelle. + +Valeur par défaut : désactivé + </notification> + <notification label="Désactiver les scripts" name="HelpRegionDisableScripts"> + Lorsque la performance d'une région est faible, cela peut venir d'un script. Ouvrez la section Statistiques (Ctrl-Maj-1) et vérifiez le FPS Physique (Physics FPS) de la section Simulateur. +Si le FPS est en dessous de 45, ouvrez la section Time située en fin de liste. Si le Script Time est au dessus de 25ms, cliquez sur le bouton Afficher les objets scriptés les plus consommateurs. Vous verrez le nom et l'emplacement des scripts éventuellement à l'origine du problème. + +Si vous cochez la case Désactiver les scripts et que vous appuyez sur Appliquer, tous les scripts de cette région seront temporairement désactivés. Vous devrez peut-être faire cela le temps d'arriver à l'endroit su script en cause. Une fois sur place, assurez-vous que le script est bien à l'origine du problème. Pour cela, vous devrez peut-être contacter le propriétaire du script ou bien supprimer ou renvoyer l'objet. +Décochez la case Désactiver le script, puis cliquez sur Appliquer pour réactiver tous les scripts dans la région. + +Valeur par défaut : désactivé + </notification> + <notification label="Désactiver les collisions" name="HelpRegionDisableCollisions"> + Des objets physiques peuvent fortement réduire les performances d'une région. +Ouvrez la barre de statistiques (Ctrl-Maj-1) et vérifiez le FPS Physique (Physics FPS) de la section Simulateur. +Si le FPS est en dessous de 45, ouvrez la section Time située en fin de liste. Si le Script Time est au dessus de 25ms, cliquez sur le bouton Afficher les collisions les plus consommatrices. +Vous verrez le nom et l'emplacement des objets physiques éventuellement à l'origine du problème. + +Si vous décochez la case Désactiver les collisions et que vous cliquez sur Appliquer, toutes les collisions entre objets seront désactivées. Vous pourrez avoir besoin de cette fonction le temps d'arriver à l'emplacement des objets en cause. Une fois sur place, vérifiez que l''objet est bien responsable du problème (entre-t-il sans cesse en collision avec d'autres objets ?) Pour cela, vous devrez peut-être contacter le propriétaire de l'objet ou bien supprimer ou renvoyer l'objet. +Décochez la case Désactiver les collisions, puis cliquez sur le bouton Appliquer pour réactiver les collisions dans la région. + +Valeur par défaut : désactivé + </notification> + <notification label="Désactiver la physique" name="HelpRegionDisablePhysics"> + L'option Désactiver la physique est similaire à l'option Désactiver les collisions sauf qu'elle englobe tous les effets liés à la physique. Cela signifie que les objets n'entreront plus en collision et que les avatars ne pourront plus bouger. + +Vous ne devriez utiliser cette option que lorsque l'option Désactiver les collisions n'améliore pas sufisamment la performance de la région pour résoudre un problème de physique ou trouver les objets entrant en collision. + +Une fois que vous avez fini, n'oubliez pas de réactiver les propriétés physiques sinon les avatars ne pourront pas bouger. + +Valeur par défaut : désactivé + </notification> + <notification label="Afficher les collisions les plus consommatrices" name="HelpRegionTopColliders"> + Montre une liste des objets générant le plus de collisions avec d'autres objets. Ces objets peuvent ralentir les performances de votre région. Sélectionnez Affichage > Statistiques et regardez sous Simulator > Time > Sim Time (Physics) pour voir si le temps du moteur physique est au dessus de 20 ms. + </notification> + <notification label="Afficher les objets scriptés les plus consommateurs" name="HelpRegionTopScripts"> + Dresse une liste des objets dont les scripts consomment le plus de ressources. Ces objets peuvent ralentir la performance de votre région. +Sélectionnez Affichage > Statistiques et regardez sous Simulator > Time > Script Time pour voir si le temps des scripts est au dessus de 25 ms. + </notification> + <notification label="Redémarrer la région" name="HelpRegionRestart"> + Redémarre le serveur en charge de la région après deux minutes d'avertissement. Tous les résidents dans cette région seront déconnectés. Les données de la région seront sauvegardées et réapparaîtront au bout de 90 secondes. + +Le redémarrage de la région ne permet pas de résoudre la plupart des problèmes de performance. Les redémarrages ne doivent avoir lieu qu'en dernier recours. + </notification> + <notification label="Niveau de l'eau" name="HelpRegionWaterHeight"> + Il s'agit de la hauteur de l'eau en mètres. +Si ce paramètre est différent de 20 et que vous avez de l'eau adjacente au bord du monde ou de l'eau « vide », il y aura un espace vide visible. + + +Valeur par défaut : 20 + </notification> + <notification label="Surélévation du terrain" name="HelpRegionTerrainRaise"> + Il s'agit de la distance (en mètres) à laquelle les propriétaires de parcelle peuvent surélever leur terrain, par rapport au terrain « figé » dont la hauteur est fixée par défaut. + +Valeur par défaut : 4 + </notification> + <notification label="Abaisser le terrain" name="HelpRegionTerrainLower"> + Il s'agit de la distance (en mètres) à laquelle les propriétaires de parcelle peuvent abaisser leur terrain, par rapport au terrain « figé » dont la hauteur est fixée par défaut. + +Valeur par défaut : -4 + </notification> + <notification label="Charger le terrain au format RAW" name="HelpRegionUploadRaw"> + Ce bouton permet de charger un fichier .RAW dans la région où vous vous trouvez. +Ce fichier doit avoir les bonnes dimensions (RGB, 256 x 256) et 13 canaux. Le meilleur moyen de créer un fichier terrain est de télécharger le fichier RAW existant. Un bon moyen est de modifier le canal rouge (hauteur terrain) et de le charger. + +Le chargement peut prendre jusqu'à 45 secondes. Veuillez noter que le chargement d'un fichier terrain ne déplacera pas les objets qui se trouvent sur le terrain, mais seulement le terrain et les droits associés aux parcelles. Certains objets risquent d'aller sous la terre. + +Pour en savoir plus sur la modification de la hauteur des terrains d'une région, consultez l'Aide F1. + </notification> + <notification label="Télécharger le terrain au format RAW" name="HelpRegionDownloadRaw"> + Ce bouton permet de télécharger un fichier contenant les données relatives à la hauteur du terrain, dimensions de la parcelle, les mises en vente ainsi que certains droits relatifs à la parcelle pour cette région. Lorsque vous ouvrez le fichier avec un programme tel que Photoshop, vous devez indiquer les dimensions du document qui sont les suivantes : RGB, 256 x 256 avec 13 canaux. Le fichier terrain ne peut pas être ouvert différemment. + +Pour en savoir plus sur la modification de la hauteur des terrains d'une région, consultez l'Aide F1. + </notification> + <notification label="Utiliser le soleil du domaine" name="HelpRegionUseEstateSun"> + Si vous cochez cette case, la position du soleil dans cette région sera la même que dans le reste du domaine. + +Valeur par défaut : activé + </notification> + <notification label="Soleil fixe" name="HelpRegionFixedSun"> + Si vous cochez cette case, la position du soleil se fixe sur celle du curseur Phase et le soleil arrête de bouger. + +Valeur par défaut : désactivé + </notification> + <notification label="Figer le terrain" name="HelpRegionBakeTerrain"> + Ce bouton permet d'enregistrer la forme actuelle du terrain comme nouvelle forme par défaut pour la région. Une fois figé, le terrain peut reprendre la forme enregistrée à partir de l'option Rétablir le terrain à la section Modifer le terrain. Le terrain figé est aussi le point de référence pour les limites de surélévation et d'abaissement. + </notification> + <notification label="Gérants du domaine" name="HelpEstateEstateManager"> + Un gérant de domaine est un résident chargé du contrôle de la région et des paramètres du domaine. Un gérant de domaine peut modifier tous les paramètres, mais ne peut pas charger, télécharger ni figer de terrain. Un des pouvoirs principaux du gérant est de bannir ou d'autoriser un résident sur votre domaine. + +Seuls les propriétaires de domaine peuvent ajouter ou supprimer des gérants de domaine. Lorsque vous choisissez un gérant de domaine, prenez un résident en qui vous avez confiance car vous serez en quelque sorte responsable de ses actions. + </notification> + <notification label="Utiliser le temps universel" name="HelpEstateUseGlobalTime"> + Cette case permet au soleil de votre domaine de suivre la position du soleil sur les domaines Linden du continent. + +Valeur par défaut : activé + </notification> + <notification label="Soleil fixe" name="HelpEstateFixedSun"> + Si vous cochez cette case, la position du soleil se fixe sur celle du curseur Phase et le soleil arrête de bouger. + </notification> + <notification label="Accès public" name="HelpEstateExternallyVisible"> + Cette option vous permet de choisir quels résidents d'autres domaines peuvent pénétrer sur votre domaine sans devoir être ajoutés à la liste d'accès. + +Valeur par défaut : activé + </notification> + <notification label="Autoriser la téléportation directe" name="HelpEstateAllowDirectTeleport"> + Lorsqu'elle est cochée, cette option permet aux résidents d'être téléportés à n'importe quel endroit sur votre domaine. Lorsque cette option n'est pas cochée, les résidents sont téléportés au téléhub le plus proche. + +Valeur par défaut : désactivé + </notification> + <notification label="Autoriser l'accès" name="HelpEstateAllowResident"> + L'accès à ce domaine sera réservé aux résidents figurant dans cette liste et aux groupes ci-dessous. +Cette option n'est disponible que lorsque la case Accès public est décochée. + </notification> + <notification label="Autoriser l'accès de groupe" name="HelpEstateAllowGroup"> + L'accès à ce domaine sera réservé aux groupes figurant dans cette liste et aux résidents ci-dessous. Cette option n'est disponible que lorsque la case Accès public est décochée. + </notification> + <notification label="Adresse e-mail où signaler une infraction" name="HelpEstateAbuseEmailAddress"> + Si vous utilisez une adresse e-mail valide, les rapports d'infraction de ce domaine iront à cette adresse. +Si vous laissez ce champ vide, les rapports d'infraction seront envoyés à Linden Lab uniquement. + </notification> + <notification label="Refuser l'accès" name="HelpEstateBanResident"> + Les résidents figurant sur cette liste ne peuvent pas pénétrer sur votre domaine, quels que soient les autres paramètres. + </notification> + <notification label="Autoriser les chats vocaux" name="HelpEstateVoiceChat"> + Les parcelles de ce domaine peuvent avoir leurs propres canaux vocaux, ce qui permet aux résidents de communiquer avec leurs voisins. + +Valeur par défaut : désactivé + </notification> + <notification label="Versions de voix non compatibles" name="VoiceVersionMismatch"> + Cette version de Second Life n'est pas compatible avec la fonctionnalité de chat vocal dans cette région. Vous devez mettre à jour Second Life pour que le chat vocal fonctionne correctement. + </notification> + <notification label="Règlement du domaine" name="HelpEstateCovenant"> + Définir un règlement pour le domaine vous permet de vendre les parcelles de ce domaine. S'il n'y a pas de règlement, vous ne pouvez pas vendre le terrain. Si vous ne souhaitez pas indiquer de règlement ou donner de conseils aux acheteurs, laissez la section relative au règlement vide. + +Un règlement sert à communiquer des règles, des lignes directrices ou informations culturelles, ou simplement à expliquer vos attentes à un acheteur potentiel. Il peut s'agir de régulations concernant la construction, les options de paiement ou tout autre information que vous souhaitez faire passer au résident avant que l'achat n'ait lieu. + +L'acheteur est tenu d'accepter le règlement en cochant une case avant de pouvoir finaliser l'achat. Les règlements, lorsqu'ils existent, apparaissent toujours dans la boîte de dialogue À propos du terrain. + </notification> + <notification label="Impossible d'acheter des objets" name="BuyObjectOneOwner"> + Impossible d'acheter simultanément des objets de propriétaires différents. +Veuillez ne sélectionner qu'un seul objet. + </notification> + <notification label="Impossible d'acheter des contenus" name="BuyContentsOneOnly"> + Impossible d'acheter les contenus de plus d'un objet à la fois. +Veuillez ne sélectionner qu'un seul objet. + </notification> + <notification label="Impossible d'acheter des contenus" name="BuyContentsOneOwner"> + Impossible d'acheter simultanément des objets de propriétaires différents. +Veuillez ne sélectionner qu'un seul objet. + </notification> + <notification name="BuyOriginal"> + Acheter l'objet original pour [PRICE] L$ à [PRICE] ? +Vous deviendrez le propriétaire de cet objet. +Vous pourrez : + Modifier : [MODIFYPERM] + Copier : [COPYPERM] + Revendre ou donner : [RESELLPERM] + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="BuyOriginalNoOwner"> + Acheter l'objet original pour [PRICE] L$ ? +Vous deviendrez le propriétaire de cet objet. +Vous pourrez : + Modifier : [MODIFYPERM] + Copier : [COPYPERM] + Revendre ou donner : [RESELLPERM] + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="BuyCopy"> + Acheter une copie pour [PRICE] L$ à [OWNER] ? +L'objet sera copié dans votre inventaire. +Vous pourrez : + Modifier : [MODIFYPERM] + Copier : [COPYPERM] + Revendre ou donner : [RESELLPERM] + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="BuyCopyNoOwner"> + Acheter une copie pour [PRICE] L$ ? +L'objet sera copié dans votre inventaire. +Vous pourrez : + Modifier : [MODIFYPERM] + Copier : [COPYPERM] + Revendre ou donner : [RESELLPERM] + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="BuyContents"> + Acheter des contenus pour [PRICE] L$ à [OWNER] ? +Ils seront copiés dans votre inventaire. + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="BuyContentsNoOwner"> + Acheter des contenus pour [PRICE] L$ ? +Ils seront copiés dans votre inventaire. + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="ConfirmPurchase"> + Suite à cette transaction, vous allez : +[ACTION] + +Êtes-vous certain de vouloir effectuer cette transaction ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> + <notification name="ConfirmPurchasePassword" type="password"> + Suite à cette transaction, vous allez : +[ACTION] + +Êtes-vous certain de vouloir effectuer cette transaction ? +Veuillez saisir à nouveau votre mot de passe et cliquer sur OK. + <form name="form"> + <button name="ConfirmPurchase" text="OK"/> + <button name="Cancel" text="Annuler"/> + </form> + </notification> + <notification name="SetPickLocation"> + Remarque : +vous avez mis à jour l'emplacement de ce favori mais les autres détails resteront inchangés. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MoveInventoryFromObject"> + Vous avez sélectionné des objets non copiables. +Ces objets seront déplacés dans votre inventaire et non pas copiés. + +Déplacer les objets de l'inventaire ? + <usetemplate ignoretext="Lors du transfert d'un inventaire non copiable depuis des objets" name="okcancelignore" notext="Annuler" yestext="OK"/> + </notification> + <notification name="MoveInventoryFromScriptedObject"> + Vous avez sélectionné des objets de l'inventaire qui ne peuvent pas être copiés. Ces objets seront déplacés vers votre inventaire, et non pas copiés. +L'objet les contenant est scripté, déplacer ces objets peut causer des problèmes au niveau du script. + +Déplacer les objets de l'inventaire ? + <usetemplate ignoretext="Lors du transfert d'un inventaire non copiable depuis des objets scriptés" name="okcancelignore" notext="Annuler" yestext="OK"/> + </notification> + <notification name="ClickActionNotPayable"> + Avertissement : l'action du clic Payer l'objet a été défini mais ne fonctionnera que si un script est ajouté avec l'event money(). + <form name="form"> + <ignore name="ignore" text="Lors du paramétrage de la fonction Payer sur des objets sans événement monétaire"/> + </form> + </notification> + <notification name="OpenObjectCannotCopy"> + Vous n'êtes autorisé à copier aucun élément dans cet objet. + </notification> + <notification name="WebLaunchAccountHistory"> + Aller sur le site de Second Life pour consulter l'historique de votre compte ? + <usetemplate ignoretext="Lors du chargement de la page web contenant l'historique de votre compte" name="okcancelignore" notext="Annuler" yestext="Aller sur cette page"/> + </notification> + <notification name="ClickOpenF1Help"> + Visiter les pages d'aide de Second Life ? + <usetemplate ignoretext="Lors de la visite des pages d'aide de Second Life" name="okcancelignore" notext="Annuler" yestext="Aller"/> + </notification> + <notification name="ConfirmQuit"> + Êtes-vous certain de vouloir quitter ? + <usetemplate ignoretext="Lorsque vous quittez Second Life" name="okcancelignore" notext="Continuer" yestext="Quitter"/> + </notification> + <notification name="HelpReportAbuseEmailLL"> + Utilisez cet outil pour signaler des infractions aux Conditions d'utilisation et aux Règles de la communauté. Voir : + +http://secondlife.com/corporate/tos.php +http://secondlife.com/corporate/cs.php + +Lorsqu'elles sont signalées, toutes les infractions aux Conditions d'utilisation et aux Règles de la communauté font l'objet d'une enquête et sont résolues. Pour accéder aux détails de la résolution d'un incident, allez sur : + +http://secondlife.com/support/incidentreport.php + </notification> + <notification name="HelpReportAbuseEmailEO"> + Important : ce rapport ira au propriétaire de la région dans laquelle vous êtes et non à Linden Lab. + +Pour aider les résidents et les visiteurs, le propriétaire de la région dans laquelle vous êtes a choisi de recevoir et de s'occuper de tous les rapports envoyés à partir de cette région. Linden Lab n'enquêtera pas sur les rapports que vous envoyez à partir de cet endroit. + +Le propriétaire de la région traitera les rapports en fonction des règles de cette région, comme indiqué dans le réglement du domaine. +(Les réglements sont visibles à partir du menu Monde > À propos du terrain.) + +La résolution de ce rapport ne s'applique qu'à cette région ; L'accès aux autres endroits de Second Life ne sera pas affecté par les résultats de cette enquête. Seul Linden Lab peut interdire l'accès à l'ensemble de Second Life. + </notification> + <notification name="HelpReportBug"> + N'utilisez cet outil que pour signaler des problèmes techniques et soyez aussi précis que possible. +Vous pouvez répondre à l'e-mail automatique pour ajouter des détails à votre rapport. + +Tous les bugs signalés sont reproduits et évalués. Aucune réponse ne sera envoyée par e-mail. + +Si vous avez un problème technique, veuillez contacter le service clientèle à : + +http://secondlife.com/community/support.php + +Remarque : les rapports incomplets ne feront pas l'objet d'une enquête. + </notification> + <notification name="HelpReportAbuseSelectCategory"> + Veuillez choisir une catégorie pour ce rapport d'infraction. +Le choix d'une catégorie nous permet de traiter les rapports d'infraction plus rapidement. + </notification> + <notification name="HelpReportBugSelectCategory"> + Veuillez choisir une catégorie pour ce bug. +Le choix d'une catégorie nous permet de traiter les bugs plus rapidement. + </notification> + <notification name="HelpReportAbuseAbuserNameEmpty"> + Veuillez saisir le nom du contrevenant. +Lorsque nous avons le nom du contrevenant, nous sommes en mesure de traiter les rapports plus rapidement. + </notification> + <notification name="HelpReportAbuseAbuserLocationEmpty"> + Veuillez indiquer l'endroit où l'infraction a eu lieu. +Les informations précises et exactes nous permettent de traiter les rapports plus rapidement. + </notification> + <notification name="HelpReportAbuseSummaryEmpty"> + Veuillez saisir un récapitulatif de l'infraction. +Les récapitulatifs précis nous permettent de traiter les rapports plus rapidement. + </notification> + <notification name="HelpReportBugSummaryEmpty"> + Veuillez saisir un récapitulatif du bug. +Les récapitulatifs précis nous permettent de résoudre les bugs plus rapidement. + </notification> + <notification name="HelpReportAbuseDetailsEmpty"> + Veuillez saisir une description détaillée de l'infraction. +Soyez aussi précis que possible et essayez de fournir des noms ainsi que des détails sur l'incident que vous signalez. +Les descriptions précises nous permettent de traiter les rapports plus rapidement. + </notification> + <notification name="HelpReportBugDetailsEmpty"> + Veuillez saisir une description détaillée du bug. +Soyez aussi spécifique que possible et essayez d'indiquer les étapes à suivre pour reproduire le bug. +Les descriptions précises nous permettent de résoudre les bugs plus rapidement. + </notification> + <notification name="HelpReportAbuseContainsCopyright"> + Cher résident, + +Il semble que vous souhaitiez reporter une infraction à des droits de propriété intellectuelle. Pour signaler correctement cette infraction : + +(1) Remplissez un rapport d'infraction. Vous pouvez soumettre un rapport d'infraction si vous pensez qu'un résident exploite le système de droits de Second Life, par exemple en utilisant un CopyBot ou des outils similaires pour enfreindre des droits de propriété intellectuelle. Notre équipe chargée des infractions mènera une enquête et prendra les mesures nécessaires à l'encontre du résident non respectueux des Conditions d'utilisation ou des règles de la communauté. Sachez toutefois que l'équipe chargée des infractions ne supprimera pas de contenu à l'intérieur de Second Life. + +(2) Demandez à ce que du contenu à l'intérieur de Second Life soit supprimé. Pour demander à ce que du contenu soit supprimé de Second Life, vous devez soumettre un rapport d'infraction valide, tel que fourni dans notre Règlement contre les violations des droit d'auteurs (DMCA), à http://secondlife.com/corporate/dmca.php. + +Si vous souhaitez toujours reporter cette infraction, veuillez fermer cette fenêtre et soumettre votre rapport. Vous devrez peut-être sélectionner la catégorie CopyBot ou exploitation abusive des droits. + +Merci, + +Linden Lab + </notification> + <notification name="FailedRequirementsCheck"> + Les composantes requises suivantes ne se trouvent pas dans [FLOATER]: +[COMPONENTS] + </notification> + <notification label="Remplacer la pièce-jointe existante" name="ReplaceAttachment"> + Vous avez déjà un objet sur cette partie du corps. +Voulez-vous le remplacer par l'objet sélectionné ? + <form name="form"> + <ignore name="ignore" save_option="true" text="Lors du remplacement de pièces-jointes existantes"/> + <button ignore="Remplacer automatiquement" name="Yes" text="OK"/> + <button ignore="Ne jamais remplacer" name="No" text="Annuler"/> + </form> + </notification> + <notification label="Réponse si occupé(e)" name="BusyModePay"> + Vous êtes en mode occupé et vous ne recevrez donc aucun objet en échange de ce paiement. + +Souhaitez-vous quitter le mode occupé avant de terminer cette transaction ? + <form name="form"> + <ignore name="ignore" save_option="true" text="Lorsque vous envoyez de l'argent à une personne en mode Occupé"/> + <button ignore="Toujours quitter le mode occupé" name="Yes" text="OK"/> + <button ignore="Ne jamais quitter le mode occupé" name="No" text="Annuler"/> + </form> + </notification> + <notification name="ConfirmEmptyTrash"> + Êtes-vous certain de vouloir supprimer le contenu de votre corbeille de manière permanente  ? + <usetemplate ignoretext="Lorsque vous videz la corbeille de l'inventaire" name="okcancelignore" notext="Annuler" yestext="OK"/> + </notification> + <notification name="ConfirmClearBrowserCache"> + Êtes-vous certain de vouloir vider le cache de votre navigateur ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="Oui"/> + </notification> + <notification name="ConfirmClearCookies"> + Êtes-vous certain de vouloir supprimer vos cookies ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="Oui"/> + </notification> + <notification name="ConfirmClearMediaUrlList"> + Êtes-vous certain de vouloir supprimer la liste des URL enregistrées ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="Oui"/> + </notification> + <notification name="ConfirmEmptyLostAndFound"> + Êtes-vous certain de vouloir supprimer le contenu de votre dossier Objets trouvés de manière permanente ? + <usetemplate ignoretext="Losque vous videz le dossier Objets trouvés dans votre inventaire" name="okcancelignore" notext="Non" yestext="Oui"/> + </notification> + <notification name="CopySLURL"> + La SLURL suivante a été copiée dans votre presse-papiers : + [SLURL] + +Mettez-la dans une page web pour permettre aux autres résidents d'accéder facilement à cet endroit ou bien collez-la dans la barre d'adresse de votre navigateur. + <form name="form"> + <ignore name="ignore" text="Lorsque vous copiez une SLURL dans votre presse-papier"/> + </form> + </notification> + <notification name="GraphicsPreferencesHelp"> + Ce menu permet de contrôler la taille de la fenêtre et la résolution, ainsi que la qualité des graphiques client. Les préférences de l'interface graphique vous permettent de choisir entre 4 niveaux de graphiques : Faible, Moyen, Élevé et Ultra. Personnalisez vos options graphiques en cliquant sur le bouton Personnaliser et en changeant les paramètres suivants : + +Effets : active ou désactive les différents types de shaders pixels. + +Objets reflétés : définit le type d'objets reflétés dans l'eau. + +Rendu de l'avatar : définit les options qui influent sur la manière dont le client rend les avatars. + +Limite d'affichage : la distance à laquelle vous voyez les objets s'afficher dans la scène. + +Nombre de particules max. : définit le nombre maximum de particules que vous pouvez voir à la fois sur votre écran. + +Qualité post-traitement : définit la résolution du rayonnement. + +Détails des rendus : définit le niveau de détail ou le nombre de polygones utilisés dans le rendu de certains objets. Une valeur plus élevée prendra plus de temps pour apparaître, mais permettra d'avoir des objets plus détaillés. + +Sources lumineuses : définit les types de lumières que vous souhaitez faire apparaître. + +Rendu du terrain : définit le niveau de détail que vous souhaitez utiliser dans la texture du terrain. + </notification> + <notification name="WLSavePresetAlert"> + 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 éditer 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="HelpEditSky"> + Pour créer et sauvegarder plusieurs ciels, utilisez les curseurs WindLight. + </notification> + <notification name="HelpEditDayCycle"> + Choisissez quel ciel apparaît au cours de la journée. + </notification> + <notification name="EnvSettingsHelpButton"> + Ces paramètres permettent de modifier l'environnement local sur votre ordinateur. Pour que vous ayez accès à tous les paramètres, votre carte graphique doit prendre en charge les effets atmosphériques. + +Pour changer les différentes phases de la journée dans le client, utilisez le curseur Heure de la journée. + +Le curseur Couverture nuageuse permet de contrôler le nombre de nuages dans le ciel. + +L'option Couleur de l'eau vous permet de modifier la couleur de l'eau grâce au sélecteur de couleurs. + +Le curseur Brouillard dans l'eau permet de contrôler la densité du brouillard sous l'eau. + +Pour synchroniser l'heure du jour sur celle de la région, cliquez sur Utiliser heure domaine. + +En cliquant sur le bouton Ciel Avancé, vous aurez accès à tous les réglages relatifs au ciel. + +En cliquant sur le bouton Eau Avancée, vous aurez accès à tous les réglages relatifs à l'eau. + </notification> + <notification name="HelpDayCycle"> + L'éditeur du cycle du jour vous permet de contrôler le ciel au cours du cycle jour/nuit de second Life. C'est ce même cycle qui est contrôlé par le curseur Heure de la journée dans l'éditeur d'environnement basique. + +L'éditeur du jour fonctionne grâce au réglage d'images-clés. Ces images-clés sont représentées par les marques grises sur la ligne du temps et ont des préréglages qui leurs sont associées. Au cours de la journée et de la nuit, le ciel WindLight s'anime en passant d'une clé à l'autre. + +La flèche jaune au dessus de la ligne du temps représente votre vue actuelle, basée sur l'heure de la journée. Cliquez et faites glisser pour voir l'animation au cours de votre journée. Ajoutez ou supprimez des clés en appuyant sur les boutons Ajouter clé ou Supprimer clé, à droite de la ligne du temps. + +Vous pouvez définir la position d'une clé en la faisant glisser le long de la ligne du temps ou en définissant manuellement ses valeurs dans la section Réglages des images-clés. Dans cette même section, vous pouvez associer chaque clé au préréglage WindLight respectif. + +La Durée du cycle contrôle la durée d'une « journée ». Si vous choisissez une valeur basse (2mn par exemple), cela signifie que toutes les animations de votre journée de 24h se dérouleront en 2mn seulement ! Une fois satisfait de vos choix, utilisez les boutons Jouer et Stop ! pour prévisualiser les résultats. Pour voir l'animation, vous pouvez aussi bouger la flèche jaune au dessus de la ligne du temps. Si vous sélectionnez l'option Utiliser heure domaine, vous synchronisez la durée de votre journée et votre heure avec celle du cycle du jour du domaine. + +Une fois que vous êtes satisfait de votre Cycle du jour, vous pouvez le sauvegarder et le charger grâce aux boutons Enregistrer jour test et Charger Jour Test. Veuillez noter que pour l'instant, nous ne pouvez avoir qu'un seul Cycle du jour. + </notification> + <notification name="HelpBlueHorizon"> + Utilisez les curseurs Rouge/Vert/Bleu (RVB) pour ajuster la couleur du ciel. Pour déplacer les trois curseurs en même temps, utilisez le curseur Intensité. + </notification> + <notification name="HelpHazeHorizon"> + Le paramètre Quantité de brume est l'un des plus utiles pour ajuster l'exposition lumineuse de la scène. +Il permet de simuler de nombreux paramètres d'exposition, tels que les voiles blancs créés par le soleil ou des lumières plus foncées. + </notification> + <notification name="HelpBlueDensity"> + La Densité du bleu affecte la saturation générale des couleurs du ciel et du brouillard. Si vous déplacez le curseur Intensité (I) vers la droite, les couleurs deviennent plus vives et plus vibrantes. Si vous le déplacez complètement à gauche, les couleurs deviennent plus fades, puis finalement noires et blanches. Pour paramétrer avec précision la couleur du ciel, vous pouvez contrôler chacun des éléments de la saturation à l'aide des curseurs Rouge/Vert/Bleu (RVB). + </notification> + <notification name="HelpHazeDensity"> + Le paramètre Densité de la brume permet de contrôler le niveau de brume grisâtre dans l'atmosphère. Ce paramètre est utile pour simuler les scènes dans lesquelles il y a beaucoup de fumée et de substances polluantes émises par l'homme. Il est également utile pour simuler le brouillard et la brume. + </notification> + <notification name="HelpDensityMult"> + Utilisez le Multiplicateur de densité pour modifier la densité atmosphérique générale. Une valeur basse donne l'impression d'un air « léger » alors qu'une valeur élevée donne l'impression d'un air « lourd » et enfumé. + </notification> + <notification name="HelpDistanceMult"> + Ajuste la distance perçue par WindLight. +La valeur zéro désactive l'influence de WindLight sur le terrain et les objets. +Les valeurs supérieures à 1 simulent des distances plus importantes pour des effets atmosphériques plus épais. + </notification> + <notification name="HelpMaxAltitude"> + L'Altitude max. ajuste les calculs de WindLight lors de la computation de la lumière atmosphérique. Quand la fin de la journée approche, il est utile pour ajuster la « profondeur » du coucher de soleil. + </notification> + <notification name="HelpSunlightColor"> + Ajuste la couleur et l'intensité de la lumière directe de la scène. + </notification> + <notification name="HelpSunAmbient"> + Ajuste la couleur et l'intensité de la lumière atmosphérique ambiante. + </notification> + <notification name="HelpSunGlow"> + Le curseur Taille contrôle la taille du soleil. +Le curseur Netteté permet de rendre le soleil plus ou moins flou dans le ciel. + </notification> + <notification name="HelpSceneGamma"> + Ajuste la distribution de clair et de foncé sur l'écran. + </notification> + <notification name="HelpStarBrightness"> + Vous permet de contrôler l'intensité des étoiles dans le ciel. + </notification> + <notification name="HelpTimeOfDay"> + Contrôle la position du soleil dans le ciel. +Même chose que l'élévation. + </notification> + <notification name="HelpEastAngle"> + Contrôle la position du soleil dans le ciel. +Même chose que l'azimut. + </notification> + <notification name="HelpCloudColor"> + Modifie la couleur des nuages. Il est recommandé de laisser les nuages en blanc mais vous pouvez aussi faire preuve de créativité... + </notification> + <notification name="HelpCloudDetail"> + Contrôle le détail de l'image placée sur l'image du nuage principal. X et Y contrôlent sa position. D (Densité) permet de rendre les nuages plus ou moins pleins ou plus ou moins fracturés. + </notification> + <notification name="HelpCloudDensity"> + Vous permet de contrôler la position des nuages avec les curseurs X et Y ainsi que leur densité avec le curseur D. + </notification> + <notification name="HelpCloudCoverage"> + Contrôle la surface du ciel couverte par les nuages. + </notification> + <notification name="HelpCloudScale"> + Contrôle l'échelle de l'image des nuages sur le dôme du ciel. + </notification> + <notification name="HelpCloudScrollX"> + Contrôle la vitesse des nuages sur l'axe des X. + </notification> + <notification name="HelpCloudScrollY"> + Contrôle la vitesse des nuages sur l'axe des Y. + </notification> + <notification name="HelpClassicClouds"> + Cochez cette option pour utiliser les anciens nuages de Second Life en plus des nuages WindLight. + </notification> + <notification name="HelpWaterFogColor"> + Permet de sélectionner la couleur du brouillard sous l'eau. + </notification> + <notification name="HelpWaterFogDensity"> + Contrôle la densité du brouillard sous l'eau, ainsi que votre visibilité. + </notification> + <notification name="HelpUnderWaterFogMod"> + Modifie l'effet créé par l'option Densité du brouillard pour contrôler votre visibilité quand votre avatar est sous l'eau. + </notification> + <notification name="HelpWaterGlow"> + Contrôle l'éclat de l'eau à la surface. + </notification> + <notification name="HelpWaterNormalScale"> + Contrôle l'échelle des trois vaguelettes qui forment l'eau. + </notification> + <notification name="HelpWaterFresnelScale"> + Contrôle la quantité de lumière réfléchie à des angles différents. + </notification> + <notification name="HelpWaterFresnelOffset"> + Contrôle l'intensité de la lumière réfléchie. + </notification> + <notification name="HelpWaterScaleAbove"> + Contrôle la quantité de lumière réfractée lorsque votre avatar regarde au dessus de l'eau. + </notification> + <notification name="HelpWaterScaleBelow"> + Contrôle la quantité de lumière réfractée lorsque votre avatar est sous l'eau. + </notification> + <notification name="HelpWaterBlurMultiplier"> + Contrôle le mélange reflets/vagues. + </notification> + <notification name="HelpWaterNormalMap"> + Contrôle quelle normal map est posée sur l'eau pour déterminer la réflection/réfraction. + </notification> + <notification name="HelpWaterWave1"> + Contrôle dans quelle direction et à quelle vitesse la version grande échelle de la normal map se déplace sur l'axe des X et l'axe des Y. + </notification> + <notification name="HelpWaterWave2"> + Contrôle dans quelle direction et à quelle vitesse la version grande échelle de la normal map se déplace sur l'axe des X et l'axe des Y. + </notification> + <notification name="NewSkyPreset"> + Nommez le nouveau ciel. + <form name="form"> + <input name="message" type="text"> + Nouveau préréglage + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Annuler"/> + </form> + </notification> + <notification name="ExistsSkyPresetAlert"> + Ce préréglage existe déjà  ! + </notification> + <notification name="NewWaterPreset"> + Nommez ce nouveau préréglage d'eau. + <form name="form"> + <input name="message" type="text"> + Nouveau préréglage + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Annuler"/> + </form> + </notification> + <notification name="ExistsWaterPresetAlert"> + Ce préréglage existe déjà  ! + </notification> + <notification name="WaterNoEditDefault"> + Vous ne pouvez pas éditer ou supprimer un préréglage par défaut. + </notification> + <notification name="ChatterBoxSessionStartError"> + Impossible de démarrer une nouvelle session de chat avec [RECIPIENT]. +[REASON] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ChatterBoxSessionEventError"> + [EVENT] +[REASON] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ForceCloseChatterBoxSession"> + Vous devez terminer votre session de chat avec [NAME]. +[REASON] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="Cannot_Purchase_an_Attachment"> + Les objets qui font partie d'une pièce-jointe ne peuvent pas être achetés. + </notification> + <notification label="À propos des requêtes pour les autorisations de débit" name="DebitPermissionDetails"> + Accepter cette requête donne au script l'autorisation de prélever des dollars Linden (L$) sur votre compte de manière continue. Pour révoquer cette autorisation, le propriétaire de l'objet doit supprimer l'objet ou bien réinitialiser les scripts dans l'objet. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="AutoWearNewClothing"> + Voulez-vous automatiquement porter l'habit que vous créez ? + <usetemplate ignoretext="Porter automatiquement" name="okcancelignore" notext="Non" yestext="Oui"/> + </notification> + <notification name="NotAgeVerified"> + Pour que vous puissiez accéder à cette parcelle, votre âge doit être vérifié. +Voulez-vous aller sur le site de Second Life pour vérifier votre âge ? + +[_URL] + <url name="url" option="0"> + https://secondlife.com/account/verification.php?lang=fr + </url> + <usetemplate ignoretext="Avertir si l'âge n'a pas été vérifié" name="okcancelignore" notext="Non" yestext="Oui"/> + </notification> + <notification name="Cannot enter parcel: no payment info on file"> + Avant de pouvoir pénétrer sur cette parcelle, vous devez enregistrer vos informations de paiement. +Voulez-vous aller sur le site de Second Life pour enregistrer ces informations ? + +[_URL] + <url name="url" option="0"> + https://secondlife.com/account/index.php?lang=fr + </url> + <usetemplate ignoretext="Avertir si les informations de paiement ne sont pas fournies" name="okcancelignore" notext="Non" yestext="Oui"/> + </notification> + <notification name="MissingString"> + The string [STRING_NAME] is missing from strings.xml + </notification> + <notification name="SystemMessageTip"> + [MESSAGE] + </notification> + <notification name="Cancelled"> + Annulé + </notification> + <notification name="CancelledSit"> + Action annulée + </notification> + <notification name="CancelledAttach"> + Attachement annulé + </notification> + <notification name="ReplacedMissingWearable"> + Habits et parties du corps manquants remplacés par les éléments par défaut. + </notification> + <notification name="GroupNotice"> + Sujet : [SUBJECT], Message : [MESSAGE] + </notification> + <notification name="FriendOnline"> + [FIRST] [LAST] est connecté(e) + </notification> + <notification name="FriendOffline"> + [FIRST] [LAST] est déconnecté(e) + </notification> + <notification name="AddSelfFriend"> + Vous ne pouvez pas devenir ami avec vous-même. + </notification> + <notification name="UploadingAuctionSnapshot"> + Importation de photos SL et Web en cours +(prend environ 5 minutes…) + </notification> + <notification name="UploadPayment"> + Le chargement a coûté [AMOUNT] L$. + </notification> + <notification name="UploadWebSnapshotDone"> + Photo Web importée + </notification> + <notification name="UploadSnapshotDone"> + Photo SL importée + </notification> + <notification name="TerrainDownloaded"> + Fichier terrain.raw téléchargé + </notification> + <notification name="GestureMissing"> + Geste [NAME] absent de la base de données. + </notification> + <notification name="UnableToLoadGesture"> + Impossible de charger le geste [NAME]. +Merci de réessayer. + </notification> + <notification name="LandmarkMissing"> + Repère absent de la base de données. + </notification> + <notification name="UnableToLoadLandmark"> + Impossible de charger le repère. Merci de réessayer. + </notification> + <notification name="CapsKeyOn"> + La touche Verr.maj est activée. +Ce mode modifie le mot de passe que vous saisissez, vous devriez le quitter. + </notification> + <notification name="NotecardMissing"> + Note absente de la base de données. + </notification> + <notification name="NotecardNoPermissions"> + Permissions insuffisantes pour voir la note. + </notification> + <notification name="RezItemNoPermissions"> + Permissions insuffisantes pour rezzer l'objet. + </notification> + <notification name="UnableToLoadNotecard"> + Impossible de lire les données de la note actuellement. + </notification> + <notification name="ScriptMissing"> + Script absent de la base de données. + </notification> + <notification name="ScriptNoPermissions"> + Permissions insuffisantes pour voir le script. + </notification> + <notification name="UnableToLoadScript"> + Impossible de charger le script. Merci de réessayer. + </notification> + <notification name="IncompleteInventory"> + Tous les éléments que vous souhaitez transférer ne sont pas encore disponibles sur le serveur. +Merci d'essayer à nouveau dans une minute. + </notification> + <notification name="CannotModifyProtectedCategories"> + Vous ne pouvez pas modifier de catégories protégées. + </notification> + <notification name="CannotRemoveProtectedCategories"> + Vous ne pouvez pas supprimer de catégories protégées. + </notification> + <notification name="OfferedCard"> + Vous avez offert votre carte de visite à [FIRST] [LAST] + </notification> + <notification name="UnableToBuyWhileDownloading"> + Achat impossible durant le chargement de l'objet. +Merci de réessayer. + </notification> + <notification name="UnableToLinkWhileDownloading"> + Impossible de lier durant le chargement de l'objet. +Merci de réessayer. + </notification> + <notification name="CannotBuyObjectsFromDifferentOwners"> + Impossible d'acheter simultanément des objets de propriétaires différents. Veuillez sélectionner un seul objet. + </notification> + <notification name="ObjectNotForSale"> + Cet objet ne semble pas à vendre. + </notification> + <notification name="EnteringGodMode"> + Activation du mode divin : niveau [LEVEL] + </notification> + <notification name="LeavingGodMode"> + Désactivation du mode divin : niveau [LEVEL] + </notification> + <notification name="CopyFailed"> + Copie impossible, droits insuffisants. + </notification> + <notification name="InventoryAccepted"> + [NAME] a accepté votre envoi. + </notification> + <notification name="InventoryDeclined"> + [NAME] a refusé votre envoi. + </notification> + <notification name="ObjectMessage"> + [NAME]: [MESSAGE] + </notification> + <notification name="CallingCardAccepted"> + Votre carte de visite a été acceptée. + </notification> + <notification name="CallingCardDeclined"> + Votre carte de visite a été refusée. + </notification> + <notification name="TeleportToLandmark"> + A présent que vous êtes sur le continent, vous pouvez voyager par téléportation (vers [NAME] par exemple). Cliquez sur le bouton Inventaire en bas à droite de l'écran puis sélectionnez le dossier Repères (Landmarks). +Choisissez un repère, double-cliquez dessus et cliquez sur Téléporter. + </notification> + <notification name="TeleportToPerson"> + A présent que vous êtes sur le continent, vous pouvez contacter des résidents (tel [NAME] par exemple). Cliquez sur le bouton Inventaire en bas à droite de l'écran puis sélectionnez le dossier Cartes de visite (Calling Cards). +Choisissez en une, double-cliquez dessus et cliquez sur Message Instantané. + </notification> + <notification name="CantSelectLandFromMultipleRegions"> + Vous ne pouvez pas sélectionner de terrain en dehors des limites du serveur. +Veuillez sélectionner un terrain plus petit. + </notification> + <notification name="SearchWordBanned"> + Certains termes de votre recherche ont été exclus car ils ne correspondaient pas aux standards fixés dans les Règles communautaires. + </notification> + <notification name="NoContentToSearch"> + Veuillez sélectionner au moins un type de contenu à rechercher (PG, Mature ou Adulte) + </notification> + <notification name="GroupVote"> + [NAME] a proposé un vote pour : +[MESSAGE] + <form name="form"> + <button name="VoteNow" text="Voter"/> + <button name="Later" text="Plus tard"/> + </form> + </notification> + <notification name="SystemMessage"> + [MESSAGE] + </notification> + <notification name="EventNotification"> + Avis d'événement : + +[NAME] +[DATE] + <form name="form"> + <button name="Teleport" text="Téléporter"/> + <button name="Description" text="Description"/> + <button name="Cancel" text="Annuler"/> + </form> + </notification> + <notification name="TransferObjectsHighlighted"> + Tous les objets de cette parcelle qui seront transférés à l'acheteur sont maintenant mis en surbrillance. + +* Les arbres et la pelouse qui seront transférés ne sont pas mis en surbrillance. + <form name="form"> + <button name="Done" text="Transfert effectué"/> + </form> + </notification> + <notification name="DeactivatedGesturesTrigger"> + Gestes désactivés ayant le même mot-clé : +[NAMES] + </notification> + <notification name="NoQuickTime"> + Le logiciel Apple QuickTime ne semble pas installé sur votre système. +Pour voir les vidéos sur les terrains qui le permettent, allez sur le site de QuickTime (http://www.apple.com/fr/quicktime/download) et installez le lecteur QuickTime. + </notification> + <notification name="OwnedObjectsReturned"> + Les objets que vous possédez sur la parcelle de terrain sélectionnée ont été renvoyés dans votre inventaire. + </notification> + <notification name="OtherObjectsReturned"> + Les objets que vous possédez sur la parcelle de terrain appartenant à [FIRST] [LAST] ont été renvoyés dans votre inventaire. + </notification> + <notification name="OtherObjectsReturned2"> + Les objets sur la parcelle appartenant à « [NAME] » ont étés renvoyés à leur propriétaire. + </notification> + <notification name="GroupObjectsReturned"> + Les objets sélectionnés sur la parcelle de terrain partagée avec le groupe [GROUPNAME] ont été renvoyés dans l'inventaire de leur propriétaire. +Les objets donnés transférables ont étés renvoyés à leur propriétaire. +Les objets non transférables donnés au groupe ont étés supprimés. + </notification> + <notification name="UnOwnedObjectsReturned"> + Les objets sélectionnés sur la parcelle et qui ne sont pas à vous ont été rendus à leurs propriétaires. + </notification> + <notification name="NotSafe"> + Les dégâts sont autorisés sur ce terrain (« non sécurisé »). +Vous pouvez être blessé ici. Si vous décédez, vous serez téléporté à votre domicile. + </notification> + <notification name="NoFly"> + Le vol est interdit sur ce terrain (« pas de vol »). +Vous ne pouvez pas voler ici. + </notification> + <notification name="PushRestricted"> + Les bousculades sont interdites sur ce terrain. +Vous ne pouvez pas pousser les autres à moins que vous soyez propriétaire de ce terrain. + </notification> + <notification name="NoVoice"> + La voix est désactivée sur ce terrain. + </notification> + <notification name="NoBuild"> + Le mode construction sur ce terrain est désactivé (« pas de construction »). +Vous ne pouvez pas créer d'objets ici. + </notification> + <notification name="ScriptsStopped"> + Un administrateur a temporairement stoppé les scripts dans cette région. + </notification> + <notification name="ScriptsNotRunning"> + Aucun script ne fonctionne dans cette région. + </notification> + <notification name="NoOutsideScripts"> + Les scripts externes sont désactivés sur ce terrain (« pas de scripts externes »). +Aucun script n'est exécuté à part ceux du propriétaire du terrain. + </notification> + <notification name="ClaimPublicLand"> + Vous ne pouvez réclamer qu'un terrain public dans la région où vous vous trouvez actuellement. + </notification> + <notification name="RegionTPAccessBlocked"> + Votre catégorie d'accès ne vous autorise pas à pénétrer dans cette région. Vous devez sans doute procéder à la vérification de votre âge ou installer une version plus récente du client. + +Pour savoir comment accéder aux zones ayant un tel niveau d'accès, veuillez consulter les pages d'aide. + </notification> + <notification name="URBannedFromRegion"> + Vous avez été banni de cette région. + </notification> + <notification name="NoTeenGridAccess"> + Votre compte ne peut pas se connecter à cette région du Teen grid. + </notification> + <notification name="NoHelpIslandTP"> + Vous ne pouvez pas retourner sur Help Island. +Pour répéter le didacticiel, veuillez aller sur Help Island Public. + </notification> + <notification name="ImproperPaymentStatus"> + Vous n'avez pas le statut de paiement approprié pour pénétrer dans cette région. + </notification> + <notification name="MustGetAgeRgion"> + Pour pouvoir pénétrer dans cette région, vous devez avoir procédé à la vérification de votre âge. + </notification> + <notification name="MustGetAgeParcel"> + Pour pouvoir pénétrer sur cette parcelle, vous devez avoir procédé à la vérification de votre âge. + </notification> + <notification name="NoDestRegion"> + Région de destination introuvable. + </notification> + <notification name="NotAllowedInDest"> + Vous n'êtes pas autorisé dans cette région. + </notification> + <notification name="RegionParcelBan"> + Impossible de traverser une parcelle bannie. Veuillez trouver une autre solution. + </notification> + <notification name="TelehubRedirect"> + Vous avez été redirigé vers un téléhub. + </notification> + <notification name="CouldntTPCloser"> + Il n'a pas été possible de vous téléporter vers une destination plus proche. + </notification> + <notification name="TPCancelled"> + Téléportation annulée. + </notification> + <notification name="FullRegionTryAgain"> + La région dans laquelle vous essayez de pénétrer est pleine actuellement. +Veuillez réessayer dans quelques minutes. + </notification> + <notification name="GeneralFailure"> + Panne générale. + </notification> + <notification name="RoutedWrongRegion"> + Dirigé vers la mauvaise région. Merci de réessayer. + </notification> + <notification name="NoValidAgentID"> + ID agent non valide. + </notification> + <notification name="NoValidSession"> + ID de session non valide. + </notification> + <notification name="NoValidCircuit"> + Aucun code de circuit valide. + </notification> + <notification name="NoValidTimestamp"> + Timestamp non valide. + </notification> + <notification name="NoPendingConnection"> + Impossible de créer la connexion en attente. + </notification> + <notification name="InternalUsherError"> + Erreur interne lors de la tentative de connexion. + </notification> + <notification name="NoGoodTPDestination"> + Impossible de trouver un lieu de téléportation valide dans cette région. + </notification> + <notification name="InternalErrorRegionResolver"> + Une erreur interne est survenue lors de la résolution des coodonnées de la région. + </notification> + <notification name="NoValidLanding"> + Impossible de trouver un point d'atterrissage valide. + </notification> + <notification name="NoValidParcel"> + Aucune parcelle valide n'a été trouvée. + </notification> + <notification name="ObjectGiveItem"> + Un objet appelé [OBJECTFROMNAME] appartenant à [FIRST] [LAST] vous a donné : [OBJECTTYPE] appelé(e) [OBJECTNAME]. + <form name="form"> + <button name="Keep" text="Garder"/> + <button name="Discard" text="Jeter"/> + <button name="Mute" text="Ignorer"/> + </form> + </notification> + <notification name="ObjectGiveItemUnknownUser"> + L'objet [OBJECTFROMNAME] appartenant à un utilisateur inconnu vous a donné un(e) [OBJECTTYPE] nommé(e) [OBJECTNAME]. + <form name="form"> + <button name="Keep" text="Garder"/> + <button name="Discard" text="Jeter"/> + <button name="Mute" text="Ignorer"/> + </form> + </notification> + <notification name="UserGiveItem"> + [NAME] vous a donné un(e) [OBJECTTYPE] nommé(e) [OBJECTNAME]. + <form name="form"> + <button name="Keep" text="Garder"/> + <button name="Discard" text="Jeter"/> + <button name="Mute" text="Ignorer"/> + </form> + </notification> + <notification name="GodMessage"> + [NAME] +[MESSAGE] + </notification> + <notification name="JoinGroup"> + [MESSAGE] + <form name="form"> + <button name="Join" text="Rejoindre"/> + <button name="Decline" text="Refuser"/> + <button name="Info" text="Infos"/> + </form> + </notification> + <notification name="TeleportOffered"> + [NAME] vous propose de le/la rejoindre par téléportation : + +[MESSAGE] + <form name="form"> + <button name="Teleport" text="Téléporter"/> + <button name="Cancel" text="Annuler"/> + </form> + </notification> + <notification name="GotoURL"> + [MESSAGE] +[URL] + <form name="form"> + <button name="Later" text="Plus tard"/> + <button name="GoNow..." text="Y aller maintenant..."/> + </form> + </notification> + <notification name="OfferFriendship"> + [NAME] vous demande de devenir son ami(e). + +[MESSAGE] + +(Par défaut, vous pourrez voir lorsque vous êtes tous deux connectés.) + <form name="form"> + <button name="Accept" text="Accepter"/> + <button name="Decline" text="Refuser"/> + </form> + </notification> + <notification name="OfferFriendshipNoMessage"> + [NAME] vous demande de devenir son ami. + +(Par défaut, vous pourrez voir quand vous êtes tous deux connectés) + <form name="form"> + <button name="Accept" text="Accepter"/> + <button name="Decline" text="Refuser"/> + </form> + </notification> + <notification name="FriendshipAccepted"> + [NAME] a accepté votre amitié. + </notification> + <notification name="FriendshipDeclined"> + [NAME] a refusé votre amitié. + </notification> + <notification name="OfferCallingCard"> + [FIRST] [LAST] vous offre sa carte de visite. +Cela ajoute un marque-page dans votre inventaire, ce qui vous permet d'envoyer rapidement un IM à ce résident. + <form name="form"> + <button name="Accept" text="Accepter"/> + <button name="Decline" text="Refuser"/> + </form> + </notification> + <notification name="RegionRestartMinutes"> + La région va redémarrer dans [MINUTES] minutes. +Si vous restez dans cette région, vous serez déconnecté(e). + </notification> + <notification name="RegionRestartSeconds"> + La région va redémarrer dans [SECONDS] secondes. +Si vous restez dans cette région, vous serez déconnecté(e). + </notification> + <notification name="LoadWebPage"> + Charger cette page web [URL] ? + +[MESSAGE] + +Venant de l'objet : [OBJECTNAME], appartenant à : [NAME]? + <form name="form"> + <button name="Gotopage" text="Charger"/> + <button name="Cancel" text="Annuler"/> + </form> + </notification> + <notification name="FailedToFindWearableUnnamed"> + La recherche du [TYPE] dans la base de données a échoué. + </notification> + <notification name="FailedToFindWearable"> + La recherche du [TYPE] nommé(e) [DESC] dans la base de données a échoué. + </notification> + <notification name="InvalidWearable"> + L'objet que vous essayez de porter utilise une fonctionnalité que le client ne peut lire. Pour porter cet objet, veuillez télécharger une mise à jour du client. + </notification> + <notification name="ScriptQuestion"> + '[OBJECTNAME]', un objet appartenant à '[NAME]', aimerait : + +[QUESTIONS] +Acceptez-vous ? + <form name="form"> + <button name="Yes" text="Oui"/> + <button name="No" text="Non"/> + <button name="Mute" text="Ignorer"/> + </form> + </notification> + <notification name="ScriptQuestionCaution"> + [OBJECTNAME], un objet appartenant à [NAME], aimerait : + +[QUESTIONS] +Si vous n'avez pas confiance en cet objet ni en son créateur, vous devriez refuser cette requête. Pour plus d'informations, cliquez sur le bouton Détails. + +Accepter cette requête ? + <form name="form"> + <button name="Grant" text="Accepter"/> + <button name="Deny" text="Refuser"/> + <button name="Details" text="Détails..."/> + </form> + </notification> + <notification name="ScriptDialog"> + '[TITLE]' de [FIRST] [LAST] +[MESSAGE] + <form name="form"> + <button name="Ignore" text="Ignorer"/> + </form> + </notification> + <notification name="ScriptDialogGroup"> + '[TITLE]' de [GROUPNAME] +[MESSAGE] + <form name="form"> + <button name="Ignore" text="Ignorer"/> + </form> + </notification> + <notification name="FirstBalanceIncrease"> + Vous venez de recevoir [AMOUNT] L$. +Des objets et des utilisateurs peuvent vous donner des L$. +Votre solde est affiché dans le coin supérieur droit de votre écran. + </notification> + <notification name="FirstBalanceDecrease"> + Vous venez de payer [AMOUNT] L$. +Votre solde est affiché dans le coin supérieur droit de votre écran. + </notification> + <notification name="FirstSit"> + Vous êtes assis(e). +Utilisez les touches de direction (ou AWSD) pour changer la vue. +Pour vous lever, cliquez sur le bouton Me lever. + </notification> + <notification name="FirstMap"> + Cliquez et faites glisser pour faire défiler la carte. +Double-cliquez pour vous téléporter. +Utilisez les contrôles à droite pour trouver des choses et afficher différents arrière-plans. + </notification> + <notification name="FirstBuild"> + Vous pouvez construire des objets dans certaines zones de [SECOND_LIFE]. +Utilisez les outils en haut à gauche pour construire et gardez la touche Ctrl ou Alt enfoncée pour passer rapidement d'un outil à l'autre. +Appuyez sur la touche Esc pour arrêter de construire. + </notification> + <notification name="FirstLeftClickNoHit"> + Un clic gauche permet d'interagir avec certains objets. +Si le pointeur de la souris se transforme en main, vous pouvez interagir avec l'objet. +Un clic droit fait toujours apparaître un menu des choses que vous pouvez faire. + </notification> + <notification name="FirstTeleport"> + Cette région n'autorise pas la téléportation de point à point. Vous avez donc été transporté au téléhub le plus proche. +Votre destination est marquée par une grande balise. +Suivez la flèche rouge vers la balise ou cliquez sur la flèche pour faire disparaître la balise. + </notification> + <notification name="FirstOverrideKeys"> + Vos mouvements sont maintenant pris en charge par un objet. +Essayez les flèches de votre clavier ou AWSD pour voir à quoi elles servent. +Certains objets (comme les armes) nécessitent l'activation du mode Vue subjective pour être utilisés. +Pour cela, appuyez sur la touche M. + </notification> + <notification name="FirstAppearance"> + Vous êtes en train d'éditer votre apparence. +Pour tourner et zoomer, utilisez les flèches de direction. +Lorsque vous avez terminé, appuyez sur Enregistrer tout pour sauvegarder votre apparence et sortir. +Vous pouvez modifier votre apparence aussi souvent que vous le souhaitez. + </notification> + <notification name="FirstInventory"> + Il s'agit de votre inventaire qui contient des objets, notes, vêtements, et autres possessions. +* Pour porter un objet ou le dossier contenant un ensemble complet, faites-le glisser sur vous-même. +* Pour mettre un objet dans le monde, faites-le glisser sur le sol. +* Pour lire une note, double-cliquez dessus. + </notification> + <notification name="FirstSandbox"> + Cette région est un bac à sable. +Les objets que vous construisez ici peuvent être supprimés quand vous partez. Les bacs à sable sont nettoyés régulièrement, veuillez lire les informations en haut de l'écran à côté du nom de la région. + +Les régions bacs à sable sont rares et sont signalées par des panneaux. + </notification> + <notification name="FirstFlexible"> + Cet objet est flexible. +Les objets flexibles ne peuvent pas avoir de propriétés physiques et doivent rester fantômes jusqu'à ce que la case Fantôme soit décochée. + </notification> + <notification name="FirstDebugMenus"> + Vous avez activé le menu Avancé. +Ce menu contient des fonctionnalités utiles pour les développeurs qui travaillent sur Second Life. +Pour activer/désactiver ce menu sous Windows, appuyez sur Ctrl-Alt-D. Sur un Mac, appuyez sur Cmd-Opt-Maj-D + </notification> + <notification name="FirstSculptedPrim"> + Vous êtes en train d'éditer un sculptie. +Pour modifier la forme d'un sculptie, vous devez utiliser une texture spécifique. +Vous trouverez des textures dans la bibliothèque de votre inventaire. + </notification> + <notification name="FirstMedia"> + Vous avez lancé la lecture d'un média. Dans le menu Préférences, à l'onglet Audio et vidéo, vous pouvez choisir de lire automatiquement les médias. Notez que cela peut être risqué lorsque les médias viennent de sites que vous ne connaissez pas. + </notification> + <notification name="MaxListSelectMessage"> + Vous ne pouvez sélectionner que [MAX_SELECT] objets maximum dans cette liste. + </notification> + <notification name="VoiceInviteP2P"> + [NAME] vous invite à un chat vocal. +Pour y participer, cliquez sur Accepter. Sinon, cliquez sur Refuser. Pour ignorer cette personne, cliquez sur Ignorer. + <form name="form"> + <button name="Accept" text="Accepter"/> + <button name="Decline" text="Refuser"/> + <button name="Mute" text="Ignorer"/> + </form> + </notification> + <notification name="AutoUnmuteByIM"> + [FIRST] [LAST] a reçu un message instantané et n'est donc plus ignoré. + </notification> + <notification name="AutoUnmuteByMoney"> + [FIRST] [LAST] a reçu de l'argent et n'est donc plus ignoré. + </notification> + <notification name="AutoUnmuteByInventory"> + [FIRST] [LAST] a reçu un inventaire et n'est donc plus ignoré. + </notification> + <notification name="VoiceInviteGroup"> + [NAME] a rejoint un chat vocal avec le groupe [GROUP]. +Pour y participer, cliquez sur Accepter. Sinon, cliquez sur Refuser. Pour ignorer cette personne, cliquez sur Ignorer. + <form name="form"> + <button name="Accept" text="Accepter"/> + <button name="Decline" text="Refuser"/> + <button name="Mute" text="Ignorer"/> + </form> + </notification> + <notification name="VoiceInviteAdHoc"> + [NAME] a rejoint un chat vocal avec conférence. +Pour y participer, cliquez sur Accepter. Sinon, cliquez sur Refuser. Pour ignorer cet utilisateur, cliquez sur Ignorer. + <form name="form"> + <button name="Accept" text="Accepter"/> + <button name="Decline" text="Refuser"/> + <button name="Mute" text="Ignorer"/> + </form> + </notification> + <notification name="InviteAdHoc"> + [NAME] vous invite à un chat conférence. +Pour y participer, cliquez sur Accepter. Sinon, cliquez sur Refuser. Pour ignorer cet utilisateur, cliquez sur Ignorer. + <form name="form"> + <button name="Accept" text="Accepter"/> + <button name="Decline" text="Refuser"/> + <button name="Mute" text="Ignorer"/> + </form> + </notification> + <notification name="VoiceChannelFull"> + L'appel auquel vous essayez de participer, [VOICE_CHANNEL_NAME], a atteint le nombre maximum de participants. Veuillez réessayer ultérieurement. + </notification> + <notification name="ProximalVoiceChannelFull"> + Nous sommes désolés. Le nombre maximum de conversations vocales a été atteint dans cette zone. Veuillez trouver un autre endroit pour discuter. + </notification> + <notification name="VoiceChannelDisconnected"> + Vous avez été déconnecté(e) de [VOICE_CHANNEL_NAME]. Vous allez maintenant être reconnecté au chat vocal spatial. + </notification> + <notification name="VoiceChannelDisconnectedP2P"> + [VOICE_CHANNEL_NAME] a mis fin à l'appel. Vous allez maintenant être reconnecté au chat vocal spatial. + </notification> + <notification name="P2PCallDeclined"> + [VOICE_CHANNEL_NAME] a refusé votre appel. Vous allez maintenant être reconnecté au chat vocal spatial. + </notification> + <notification name="P2PCallNoAnswer"> + [VOICE_CHANNEL_NAME] ne peut pas prendre votre appel. Vous allez maintenant être reconnecté au chat vocal spatial. + </notification> + <notification name="VoiceChannelJoinFailed"> + Echec de la connexion avec [VOICE_CHANNEL_NAME], veuillez réessayer ultérieurement. Vous allez maintenant être reconnecté au chat vocal spatial. + </notification> + <notification name="VoiceLoginRetry"> + Nous sommes en train de créer un canal vocal pour vous. Veuillez patienter quelques instants. + </notification> + <notification name="Cannot enter parcel: not a group member"> + Vous ne pouvez pas pénétrer sur ce terrain car vous n'êtes pas membre du groupe adéquat. + </notification> + <notification name="Cannot enter parcel: banned"> + Vous ne pouvez pas pénétrer sur ce terrain car l'accès vous y est interdit. + </notification> + <notification name="Cannot enter parcel: not on access list"> + Vous ne pouvez pas pénétrer sur ce terrain car vous n'avez pas les droits d'accès requis. + </notification> + <notification name="VoiceNotAllowed"> + Vous n'êtes pas autorisé à vous connecter au chat vocal pour [VOICE_CHANNEL_NAME]. + </notification> + <notification name="VoiceCallGenericError"> + Une erreur est survenue pendant la connexion au chat vocal pour [VOICE_CHANNEL_NAME]. Veuillez réessayer ultérieurement. + </notification> + <notification name="ServerVersionChanged"> + La région dans laquelle vous avez pénétré utilise une version de simulateur différente. Pour plus de détails, cliquez sur ce message. + </notification> + <notification name="UnableToOpenCommandURL"> + L'URL sur laquelle vous avez cliqué ne peut pas être ouverte dans ce navigateur. + </notification> + <global name="UnsupportedCPU"> + - Votre processeur ne remplit pas les conditions minimum requises. + </global> + <global name="UnsupportedGLRequirements"> + Vous semblez ne pas avoir le matériel requis pour utiliser Second Life. Second Life requiert une carte graphique OpenGL avec une prise en charge du multitexturing. Si vous avez une telle carte, assurez-vous que vous avez aussi les drivers les plus récents pour la carte, ainsi que les service packs et les patchs pour votre système d'exploitation. + +Si vous avez toujours des problèmes, veuillez consulter la page suivante : http://www.secondlife.com/support + </global> + <global name="UnsupportedCPUAmount"> + 796 + </global> + <global name="UnsupportedRAMAmount"> + 510 + </global> + <global name="UnsupportedGPU"> + - Votre carte graphique ne remplit pas les conditions minimum requises. + </global> + <global name="UnsupportedRAM"> + - Votre mémoire système ne remplit pas les conditions minimum requises. + </global> + <global name="PermYes"> + Oui + </global> + <global name="PermNo"> + Non + </global> +</notifications> diff --git a/indra/newview/skins/default/xui/fr/panel_friends.xml b/indra/newview/skins/default/xui/fr/panel_friends.xml index fa0d08bb97b76646c4f09280ab9c0a44331c75a9..cbeb10287dd480b2c169b60aaa620c2f7c1479ca 100644 --- a/indra/newview/skins/default/xui/fr/panel_friends.xml +++ b/indra/newview/skins/default/xui/fr/panel_friends.xml @@ -6,15 +6,15 @@ <scroll_list name="friend_list" tool_tip="Pour sélectionner plusieurs amis, cliquez en maintenant la touche Maj ou Ctrl appuyée"> <column name="icon_online_status" tool_tip="Statut en ligne"/> <column label="Nom" name="friend_name" tool_tip="Nom"/> - <column name="icon_visible_online" tool_tip="Vos amis voient si vous êtes connecté(e)"/> - <column name="icon_visible_map" tool_tip="Vos amis peuvent vous situer sur la carte"/> - <column name="icon_edit_mine" tool_tip="Vos amis peuvent modifier, supprimer ou prendre vos objets"/> + <column name="icon_visible_online" tool_tip="Votre ami voit si vous êtes connecté(e)"/> + <column name="icon_visible_map" tool_tip="Votre ami peut vous situer sur la carte"/> + <column name="icon_edit_mine" tool_tip="Votre ami peut modifier, supprimer ou prendre vos objets"/> <column name="icon_edit_theirs" tool_tip="Vous pouvez modifier les objets de cet ami"/> </scroll_list> - <button label="IM/Appel" name="im_btn" tool_tip="Ouvrez une session de messagerie instantanée"/> - <button label="Profil" name="profile_btn" tool_tip="Affichez une photo, vos groupes et autres infos"/> + <button label="IM/Appel" name="im_btn" tool_tip="Envoyez un IM à ce résident"/> + <button label="Profil" name="profile_btn" tool_tip="Consultez le profil de ce résident (photos, groupes et autres infos)"/> <button label="Téléporter..." name="offer_teleport_btn" tool_tip="Proposez à cet ami d'être téléporté là où vous êtes"/> <button label="Payer..." name="pay_btn" tool_tip="Donnez des L$ à cet ami"/> - <button label="Supprimer..." name="remove_btn" tool_tip="Supprimez cette personne de votre liste d'amis"/> + <button label="Supprimer..." name="remove_btn" tool_tip="Supprimez ce résident de votre liste d'amis"/> <button label="Ajouter..." name="add_btn" tool_tip="Demandez à un résident de devenir votre ami"/> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_group_general.xml b/indra/newview/skins/default/xui/fr/panel_group_general.xml index 7c7efdc1f1d8073c84647ce9e28e7cc34e2f0466..2b983ced800eb5c0041a3e09bedd4c1458b0b8be 100644 --- a/indra/newview/skins/default/xui/fr/panel_group_general.xml +++ b/indra/newview/skins/default/xui/fr/panel_group_general.xml @@ -1,22 +1,20 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Général" name="general_tab"> - <text name="help_text"> + <string name="help_text"> L'onglet Général contient les infos générales et les préférences du groupe ainsi que la liste des propriétaires et des membres visibles. - - </text> + </string> <string name="group_info_unchanged"> Le profil du groupe a changé. </string> <button label="?" label_selected="?" name="help_button"/> - <line_editor label="Saisissez le nom du groupe ici" name="group_name_editor"> - Saisissez le nom du groupe ici - </line_editor> + <line_editor label="Saisissez le nom du groupe ici" name="group_name_editor"/> <text name="group_name"> Saisissez le nom du groupe ici </text> <text name="prepend_founded_by"> - Fondé par </text> - <text name="founder_name" left_delta="54"> + Fondé par + </text> + <text left_delta="54" name="founder_name"> (en attente) </text> <text name="group_charter_label"> @@ -28,12 +26,6 @@ </text_editor> <button label="Rejoindre (0L$)" label_selected="Rejoindre (0L$)" name="join_button"/> <button label="Affichage détaillé" label_selected="Affichage détaillé" name="info_button"/> - <text> - Propriétaires et membres visibles - </text> - <text> - (Propriétaires affichés en gras) - </text> <text name="text_owners_and_visible_members"> Propriétaires et membres visibles </text> @@ -48,25 +40,21 @@ <text name="text_group_preferences"> Préférences </text> - <text name="incomplete_member_data_str"> - Extraction des données du résident en cours - </text> - <text name="confirm_group_create_str"> - La création de ce groupe coûte 100 L$. -Êtes-vous vraiment certain de vouloir dépenser 100 L$ pour créer ce groupe ? -Sachez que si personne ne rejoint ce groupe sous 48h, il sera démantelé et ne pourra plus être utilisé. - </text> - <text> - Préférences - </text> <panel name="preferences_container"> <check_box label="Afficher dans la recherche" name="show_in_group_list" tool_tip="Afficher ce groupe dans les résultats de recherche."/> - <check_box label="Publier sur le web" name="publish_on_web" tool_tip="Cochez pour publier les informations de ce groupe sur le web."/> <check_box label="Inscription libre" name="open_enrollement" tool_tip="Indique si une invitation est nécessaire pour devenir membre de ce groupe."/> <check_box label="Frais d'inscription : L$" name="check_enrollment_fee" tool_tip="Indique s'il y a des frais d'inscription pour devenir membre."/> <spinner name="spin_enrollment_fee" tool_tip="Si la case Frais d'inscription est cochée, cela signifie qu'il faut payer des frais pour devenir membre."/> - <check_box name="mature" /> - <combo_box name="group_mature_check" width="195"> + <combo_box name="group_mature_check" tool_tip="Indique si les informations sur votre groupe sont classées Mature." width="195"> + <combo_item name="select_mature"> + - Type de public - + </combo_item> + <combo_item name="mature"> + Contenu Mature + </combo_item> + <combo_item name="pg"> + Contenu PG + </combo_item> </combo_box> <panel name="title_container"> <text name="active_title_label"> @@ -77,4 +65,12 @@ Sachez que si personne ne rejoint ce groupe sous 48h, il sera démantelé et ne <check_box label="Recevoir les notices" name="receive_notices" tool_tip="Cochez si vous souhaitez recevoir les notices envoyées au groupe. Décochez si ce groupe vous envoie des spams."/> <check_box label="Afficher dans mon profil" name="list_groups_in_profile" tool_tip="Indique si vous voulez que ce groupe apparaisse dans votre profil"/> </panel> + <string name="incomplete_member_data_str"> + Extraction des données du résident en cours + </string> + <string name="confirm_group_create_str"> + La création de ce groupe coûte 100 L$. +Êtes-vous vraiment certain de vouloir dépenser 100 L$ pour créer ce groupe ? +Sachez que si personne ne rejoint ce groupe sous 48h, il sera démantelé et ne pourra plus être utilisé. + </string> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_group_land_money.xml b/indra/newview/skins/default/xui/fr/panel_group_land_money.xml index 7fd900acaae539342ade5bd8f40d115704149bb1..551d11d5881084887ea2e9da75d110e05729e5ea 100644 --- a/indra/newview/skins/default/xui/fr/panel_group_land_money.xml +++ b/indra/newview/skins/default/xui/fr/panel_group_land_money.xml @@ -1,16 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Terrain et L$" name="land_money_tab"> - <text name="help_text"> + <string name="help_text"> Les parcelles appartenant au groupe sont indiquées avec le détails des contributions. Un avertissement apparaît si la surface utilisée par le groupe est supérieure ou égale au total des contributions. Les onglets Planification, Détails et Ventes correspondent aux finances du groupe. - </text> + </string> <button label="?" name="help_button"/> - <text name="cant_view_group_land_text"> + <string name="cant_view_group_land_text"> Vous n'avez pas la permission de voir quel terrain possède ce groupe. - </text> - <text name="cant_view_group_accounting_text"> + </string> + <string name="cant_view_group_accounting_text"> Vous n'avez pas la permission d'accéder aux informations financières de ce groupe. - </text> + </string> <string name="loading_txt"> Chargement... </string> @@ -18,8 +18,9 @@ financières de ce groupe. Terrain du groupe </text> <scroll_list name="group_parcel_list"> - <column label="Nom de la parcelle" name="name"/> + <column label="Parcelle" name="name"/> <column label="Région" name="location"/> + <column label="Type" name="type"/> <column label="Surface" name="area"/> <column label="" name="hidden"/> </scroll_list> @@ -45,9 +46,6 @@ financières de ce groupe. <text name="your_contribution_label"> Votre contribution : </text> - <text name="your_contribution_max_value_append"> - mètres carrés - </text> <string name="land_contrib_error"> Impossible de définir votre don de terre. </string> diff --git a/indra/newview/skins/default/xui/fr/panel_notifications_channel.xml b/indra/newview/skins/default/xui/fr/panel_notifications_channel.xml index 4b2dbd0d6e0fffb10e1ace0bffd9b5c2f4defef9..5beb71981c45ffec8c209966ec778099ed1b25bd 100644 --- a/indra/newview/skins/default/xui/fr/panel_notifications_channel.xml +++ b/indra/newview/skins/default/xui/fr/panel_notifications_channel.xml @@ -1,15 +1,15 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="notifications_panel"> - <layout_stack> - <scroll_list name="notifications_list"> - <column label="Nom" name="name"/> - <column label="Contenu" name="content"/> - <column label="Date" name="date"/> - </scroll_list> - <scroll_list name="notification_rejects_list"> - <column label="Nom" name="name"/> - <column label="Contenu" name="content"/> - <column label="Date" name="date"/> - </scroll_list> - </layout_stack> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="notifications_panel"> + <layout_stack name="stack1"> + <scroll_list name="notifications_list"> + <column label="Nom" name="name"/> + <column label="Contenu" name="content"/> + <column label="Date" name="date"/> + </scroll_list> + <scroll_list name="notification_rejects_list"> + <column label="Nom" name="name"/> + <column label="Contenu" name="content"/> + <column label="Date" name="date"/> + </scroll_list> + </layout_stack> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml b/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml index d29ec67272b5196d249a2b107547af4acdb92ee7..5fbd3cec224c010716f168f289f8472c53e5b5fa 100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml @@ -5,15 +5,9 @@ du chat : </text> <radio_group name="chat_font_size"> - <radio_item length="1" name="radio" type="string"> - Petite - </radio_item> - <radio_item length="1" name="radio2" type="string"> - Moyenne - </radio_item> - <radio_item length="1" name="radio3" type="string"> - Grande - </radio_item> + <radio_item length="1" name="radio" type="string" label="Petite" /> + <radio_item length="1" name="radio2" type="string" label="Moyenne" /> + <radio_item length="1" name="radio3" type="string" label="Grande" /> </radio_group> <text length="1" name="text_box2" type="string"> Couleur du chat : diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_general.xml b/indra/newview/skins/default/xui/fr/panel_preferences_general.xml index 9ab01b31892bcae5affdeb8a27808698d7090535..7c366e8bdc07c4d0c56025c0be5378450c9a54a1 100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_general.xml @@ -29,6 +29,26 @@ <check_box label="Utiliser une échelle indépendante de la résolution" name="ui_auto_scale"/> <spinner label="Absent(e) après :" name="afk_timeout_spinner"/> <check_box label="M'avertir lorsque je dépense ou reçois des L$" name="notify_money_change_checkbox"/> + <text name="maturity_desired_label"> + Catégorie de contenu : + </text> + <text name="maturity_desired_prompt"> + Je veux accéder au contenu classé : + </text> + <combo_box name="maturity_desired_combobox" left="340"> + <combo_item name="Desired_Adult"> + PG, Mature et Adult + </combo_item> + <combo_item name="Desired_Mature"> + PG et Mature + </combo_item> + <combo_item name="Desired_PG"> + PG uniquement + </combo_item> + </combo_box> + <text name="maturity_desired_textbox" left="340"> + PG uniquement + </text> <text length="1" name="start_location_textbox" type="string"> Lieu de départ : </text> @@ -74,6 +94,15 @@ de sélection : <combo_box.item length="1" name="Chinese" type="string" label="䏿–‡ (简体) (Chinois) - Bêta"/> <combo_box.item length="1" name="(Japanese)" type="string" label="日本語 (Japonais) - Bêta"/> <combo_box.item length="1" name="(Korean)" type="string" label="한êµì–´ (Coréen) - Bêta"/> + <combo_item name="Italian"> + Italiano (Italien) - Bêta + </combo_item> + <combo_item name="Dutch"> + Nederlands (Néerlandais) - Bêta + </combo_item> + </combo_item> + <combo_item name="Turkish"> + Türkçe (Turc) - Bêta </combo_box> <check_box label="Partager la langue avec les objets" name="language_is_public" tool_tip="Cette option permet de faire connaître aux objets du Monde votre langue favorite."/> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml index bf75fb58a3ba316ce74dbdea29fe072e6bf0f9a6..cc9e2a8569841b0fef79006f2ba5230bbf1289c5 100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml @@ -86,18 +86,10 @@ Objets reflétés : </text> <radio_group name="ReflectionDetailRadio"> - <radio_item name="0"> - Terrain et Arbres - </radio_item> - <radio_item name="1"> - Objets statiques - </radio_item> - <radio_item name="2"> - Objets et avatars - </radio_item> - <radio_item name="3"> - Tout - </radio_item> + <radio_item name="0" label="Terrain et Arbres" /> + <radio_item name="1" label="Objets statiques" /> + <radio_item name="2" label="Objets et avatars" /> + <radio_item name="3" label="Tout" /> </radio_group> <text name="AvatarRenderingText"> Rendu de l'avatar : @@ -148,23 +140,15 @@ Sources lumineuses : </text> <radio_group name="LightingDetailRadio"> - <radio_item name="SunMoon"> - Soleil et lune uniquement - </radio_item> - <radio_item name="LocalLights"> - Lumières à proximité - </radio_item> + <radio_item name="SunMoon" label="Soleil et lune uniquement" /> + <radio_item name="LocalLights" label="Lumières à proximité" /> </radio_group> <text left="380" name="TerrainDetailText"> Rendu du terrain : </text> <radio_group name="TerrainDetailRadio"> - <radio_item name="0"> - Faible - </radio_item> - <radio_item name="2"> - Élevé - </radio_item> + <radio_item name="0" label="Faible" /> + <radio_item name="2" label="Élevé" /> </radio_group> <button label="Paramètres recommandés" name="Defaults"/> <button label="Configuration du matériel" label_selected="Configuration du matériel" name="GraphicsHardwareButton"/> diff --git a/indra/newview/skins/default/xui/fr/panel_region_covenant.xml b/indra/newview/skins/default/xui/fr/panel_region_covenant.xml index 557e88267ddf55a6f68488c6df6b57167d624d79..f2ba297fd276e918056bb6b48fb8043466362480 100644 --- a/indra/newview/skins/default/xui/fr/panel_region_covenant.xml +++ b/indra/newview/skins/default/xui/fr/panel_region_covenant.xml @@ -1,51 +1,82 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Règlement" name="Covenant"> - <text name="covenant_help_text" bottom="-25"> - Les changements apportés au règlement apparaîtront sur toutes les -parcelles du domaine. + <text name="estate_section_lbl"> + Domaine : + </text> + <text bottom_delta="-19" name="estate_name_lbl"> + Nom : + </text> + <text name="estate_name_text"> + continent + </text> + <text bottom_delta="-19" name="estate_owner_lbl"> + Propriétaire : + </text> + <text name="estate_owner_text"> + (aucun) + </text> + <text name="estate_cov_lbl"> + Règlement : + </text> + <text name="covenant_timestamp_text"> + Dernière modification le mercredi 31 décembre 1969 16:00:00 + </text> + <button label="?" name="covenant_help"/> + <text_editor bottom="-263" height="178" name="covenant_editor"> + Il n'y a aucun règlement pour ce domaine. + </text_editor> + <button label="Réinitialiser" name="reset_covenant"/> + <text name="covenant_help_text"> + Les changements apportés au règlement apparaîtront sur toutes + les parcelles du domaine. </text> - <text name="region_name_lbl" bottom_delta="-31"> + <text bottom_delta="-31" name="covenant_instructions"> + Faire glisser une note pour changer le règlement de ce domaine. + </text> + <text name="region_section_lbl"> Région : </text> + <text name="region_name_lbl"> + Nom : + </text> <text name="region_name_text"> - (inconnue) + leyla </text> - <text name="estate_name_lbl" bottom_delta="-19"> - Domaine : + <text name="region_landtype_lbl"> + Type : </text> - <text name="estate_name_text"> - (inconnu) + <text name="region_landtype_text"> + Continent / Homestead </text> - <text name="covenent_instructions"> - Pour modifier le règlement de ce domaine, glissez-déposez une note. + <text name="region_maturity_lbl"> + Catégorie : </text> - <button label="?" name="covenant_help" /> - <button label="Redéfinir" name="reset_covenant" /> - <text name="estate_owner_lbl" bottom_delta="-19"> - Propriétaire : + <text name="region_maturity_text"> + Adult </text> - <text name="estate_owner_text"> - (inconnu) + <text name="resellable_lbl"> + Revendre : </text> <text name="resellable_clause"> - Le terrain acheté dans cette région peut être revendu ou pas. + Le terrain dans cette région ne peut être revendu. + </text> + <text name="changeable_lbl"> + Sous-diviser : </text> <text name="changeable_clause"> - Le terrain acheté dans cette région peut être fusionné/divisé ou pas. + Le terrain dans cette région ne peut être fusionné/divisé. </text> - <text_editor name="covenant_editor"> - Chargement... - </text_editor> - <text name="can_resell"> + <string name="can_resell"> Le terrain acheté dans cette région peut être revendu. - </text> - <text name="can_not_resell"> + </string> + <string name="can_not_resell"> Le terrain acheté dans cette région ne peut pas être revendu. - </text> - <text name="can_change"> + </string> + <string name="can_change"> Le terrain acheté dans cette région peut être fusionné ou divisé. - </text> - <text name="can_not_change"> - Le terrain acheté dans cette région ne peut pas être fusionné ou divisé. - </text> + </string> + <string name="can_not_change"> + Le terrain acheté dans cette région ne peut pas être fusionné ou +divisé. + </string> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_region_debug.xml b/indra/newview/skins/default/xui/fr/panel_region_debug.xml index 92f44fa0e23998536e42324b1bfa4ab069500af1..1338ab9e71c24cc4b03630014e1cdfa6c2a881da 100644 --- a/indra/newview/skins/default/xui/fr/panel_region_debug.xml +++ b/indra/newview/skins/default/xui/fr/panel_region_debug.xml @@ -10,7 +10,7 @@ <button label="?" name="disable_scripts_help"/> <check_box label="Désactiver les collisions" name="disable_collisions_check" tool_tip="Désactiver les collisions entre non-avatars dans cette région"/> <button label="?" name="disable_collisions_help"/> - <check_box label="Désactiver les propriétés physiques" name="disable_physics_check" tool_tip="Désactiver toutes les propriétés physiques dans cette région"/> + <check_box label="Désactiver la physique" name="disable_physics_check" tool_tip="Désactiver tous les effets liés à la physique dans cette région"/> <button label="?" name="disable_physics_help"/> <button label="Appliquer" name="apply_btn" bottom_delta="-38"/> <text name="objret_text_lbl" bottom_delta="-42"> @@ -30,9 +30,9 @@ <check_box label="Ne renvoyer que les objets sur le terrain de quelqu'un d'autre" name="return_other_land" tool_tip="Ne renvoyer que les objets se trouvant sur le terrain de quelqu'un d'autre"/> <check_box label="Renvoyer les objets dans toutes les régions de ce domaine" name="return_estate_wide" tool_tip="Renvoyer les objets dans toutes les régions qui constituent ce domaine"/> <button label="Renvoyer" name="return_btn"/> - <button label="Afficher les objets souvent responsables de collision..." name="top_colliders_btn" tool_tip="Liste des objets avec le plus de collisions potentielles" width="320"/> + <button label="Afficher les collisions les plus consommatrices..." name="top_colliders_btn" tool_tip="Liste des objets avec le plus de collisions potentielles" width="320"/> <button label="?" name="top_colliders_help" left="337"/> - <button label="Afficher les objets exécutant le plus de scripts..." name="top_scripts_btn" tool_tip="Liste des objets qui passent le plus de temps à exécuter des scripts" width="320"/> + <button label="Afficher les objets scriptés les plus consommateurs..." name="top_scripts_btn" tool_tip="Liste des objets qui passent le plus de temps à exécuter des scripts" width="320"/> <button label="?" name="top_scripts_help" left="337"/> <button label="Redémarrer la région" name="restart_btn" tool_tip="Redémarrer la région au bout de 2 minutes" width="160"/> <button label="?" name="restart_help" left="177" /> diff --git a/indra/newview/skins/default/xui/fr/panel_region_general.xml b/indra/newview/skins/default/xui/fr/panel_region_general.xml index 7f272ab4312cea1f204f9bfc199021929c39bb5e..6a8afd24ed09124030f29806fa1da7cd874ef53b 100644 --- a/indra/newview/skins/default/xui/fr/panel_region_general.xml +++ b/indra/newview/skins/default/xui/fr/panel_region_general.xml @@ -12,7 +12,13 @@ <text name="version_channel_text"> (inconnu) </text> - <check_box label="Bloquer le terraformage" name="block_terraform_check"/> + <text name="region_type_lbl"> + Type : + </text> + <text name="region_type"> + (inconnu) + </text> + <check_box label="Interdire le terraformage" name="block_terraform_check"/> <button label="?" name="terraform_help"/> <check_box label="Interdire le vol" name="block_fly_check"/> <button label="?" name="fly_help"/> @@ -26,16 +32,24 @@ <button label="?" name="parcel_changes_help"/> <check_box label="Ne pas afficher dans la recherche" name="block_parcel_search_check" tool_tip="Afficher cette région et ses parcelles dans les résultats de recherche"/> <button label="?" name="parcel_search_help"/> - <spinner label="Nombre limite d'avatars" name="agent_limit_spin" label_width="127" width="190"/> + <spinner label="Nombre maximum d'avatars" label_width="127" name="agent_limit_spin" width="190"/> <button label="?" name="agent_limit_help"/> - <spinner label="Bonus objet" name="object_bonus_spin" label_width="127" width="190"/> + <spinner label="Bonus objet" label_width="127" name="object_bonus_spin" width="190"/> <button label="?" name="object_bonus_help"/> <text label="Maturité" name="access_text"> - Maturité : + Catégorie : </text> - - - + <combo_box label="Mature" name="access_combo"> + <combo_item name="Adult"> + Adult + </combo_item> + <combo_item name="Mature"> + Mature + </combo_item> + <combo_item name="PG"> + PG + </combo_item> + </combo_box> <button label="?" name="access_help"/> <button label="Appliquer" name="apply_btn"/> <button label="Téléporter un résident chez lui..." name="kick_btn"/> diff --git a/indra/newview/skins/default/xui/fr/role_actions.xml b/indra/newview/skins/default/xui/fr/role_actions.xml index 4dd1288e189c3205353dc6ecba3706d794f2f437..a2df596773ca6d15a8ab261406cc90570cc2ae01 100644 --- a/indra/newview/skins/default/xui/fr/role_actions.xml +++ b/indra/newview/skins/default/xui/fr/role_actions.xml @@ -48,7 +48,7 @@ name="group change identity" value="11" /> </action_set> <action_set - description="Ces pouvoirs permettent de transférer, modifier et vendre du terrain appartenant au groupe. Pour accéder au menu À propos du terrain, cliquez sur le nom de la parcelle en haut de l'écran ou cliquez à droite sur le sol." + description="Ces pouvoirs permettent de transférer, modifier et vendre du terrain appartenant au groupe. Pour accéder au menu À propos du terrain, cliquez sur le nom de la parcelle en haut de l'écran ou cliquez-droit sur le sol." name="Parcel Management"> <action description="Transférer et acheter des parcelles pour le groupe" longdescription="Transférez et achetez des parcelles pour le groupe à partir du menu À propos du terrain > Général." @@ -60,7 +60,7 @@ longdescription="Vendez des parcelles du groupe. Attention : ce pouvoir autorise la vente d'un terrain appartenant au groupe. Ce terrain sera alors définitivement perdu. Assurez-vous de bien comprendre ce pouvoir avant de l'attribuer." name="land set sale info" value="14" /> <action description="Diviser et fusionner des parcelles" - longdescription="Divisez et fusionnez des parcelles. Pour cela, cliquez à droite sur le sol, sélectionnez Modifier le terrain, et faites glisser votre souris sur l'endroit que vous souhaitez modifier. Pour diviser le terrain, sélectionnez un endroit puis cliquez sur Diviser... Pour fusionner des parcelles, sélectionnez au moins deux parcelles adjacentes et cliquez sur Fusionner." + longdescription="Divisez et fusionnez des parcelles. Pour cela, cliquez-droit sur le sol, sélectionnez Modifier le terrain, et faites glisser votre souris sur l'endroit que vous souhaitez modifier. Pour diviser le terrain, sélectionnez un endroit puis cliquez sur Diviser... Pour fusionner des parcelles, sélectionnez au moins deux parcelles adjacentes et cliquez sur Fusionner." name="land divide join" value="15" /> </action_set> <action_set diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml index b0efe4f510269197fc38d3bdfca9fa1aed48624a..067c34294d701fade836d3d3b1b75fb73332ec28 100644 --- a/indra/newview/skins/default/xui/fr/strings.xml +++ b/indra/newview/skins/default/xui/fr/strings.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <!-- This file contains strings that used to be hardcoded in the source. - It is only for those strings which don't belong in a floater. + It is only for those strings which do not belong in a floater. For example, the strings used in avatar chat bubbles, and strings that are returned from one component and may appear in many places--> <strings> @@ -95,7 +95,7 @@ Temporaire </string> <string name="TooltipFlagRightClickMenu"> - (cliquez à droite pour le menu) + (cliquez-droit pour le menu) </string> <string name="TooltipFreeToCopy"> Copie autorisée @@ -418,6 +418,30 @@ <string name="shout"> crie : </string> + <string name="SIM_ACCESS_PG"> + PG + </string> + <string name="SIM_ACCESS_MATURE"> + Mature + </string> + <string name="SIM_ACCESS_ADULT"> + Adult + </string> + <string name="SIM_ACCESS_DOWN"> + Hors ligne + </string> + <string name="SIM_ACCESS_MIN"> + Inconnu + </string> + <string name="land_type_unknown"> + (inconnu) + </string> + <string name="covenant_never_modified"> + Dernière modification : (jamais) + </string> + <string name="covenant_modified"> + Dernière modification : + </string> <string name="all_files"> Tous fichiers </string> diff --git a/indra/newview/skins/default/xui/fr/teleport_strings.xml b/indra/newview/skins/default/xui/fr/teleport_strings.xml index 91455297adb626a341bdacfcd1db7ea14738d677..810a32f64ecc4bfe75fcf458b641ec0c663df8ef 100644 --- a/indra/newview/skins/default/xui/fr/teleport_strings.xml +++ b/indra/newview/skins/default/xui/fr/teleport_strings.xml @@ -2,21 +2,16 @@ <teleport_messages name=""> <message_set name="errors"> <message name="invalid_tport"> - Nous avons rencontré des problèmes en essayant de vous téléporter. Vous devrez peut-être -vous reconnecter avant de pouvoir être téléporté. Si vous continuez -à recevoir ce message, veuillez consulter notre FAQ technique à  la page suivante : + Nous avons rencontré des problèmes en essayant de vous téléporter. Vous devrez peut-être vous reconnecter avant de pouvoir être téléporté. Si vous continuez à recevoir ce message, veuillez consulter le Support à  la page suivante : www.secondlife.com/support </message> <message name="invalid_region_handoff"> - Nous avons rencontré des problèmes en essayant de vous téléporter. Vous devrez peut-être -vous reconnecter avant de pouvoir être téléporté. Si vous continuez -à recevoir ce message, veuillez consulter notre FAQ technique à  la page suivante : -www.secondlife.com/support. + Nous avons rencontré des problèmes en essayant de vous téléporter. Vous devrez peut-être vous reconnecter avant de pouvoir être téléporté. Si vous continuez à recevoir ce message, veuillez consulter le Support à  la page suivante : +www.secondlife.com/support </message> <message name="blocked_tport"> Désolé, la téléportation est bloquée actuellement. Veuillez réessayer dans un moment. -Si vous ne parvenez toujours pas à être téléporté, déconnectez-vous puis reconnectez-vous -pour résoudre le problème. +Si vous ne parvenez toujours pas à être téléporté, déconnectez-vous puis reconnectez-vous pour résoudre le problème. </message> <message name="nolandmark_tport"> Désolé, le système n'a pas réussi à localiser la destination de votre repère. @@ -29,27 +24,19 @@ Veuillez réessayer dans un moment. Désolé, vous n'avez pas accès à cette destination. </message> <message name="missing_attach_tport"> - Vos pieces-jointes ne sont pas encore arrivées. Attendez quelques -secondes de plus ou déconnectez-vous puis reconnectez-vous avant d'essayer -de vous téléporter. + Vos pieces-jointes ne sont pas encore arrivées. Attendez quelques secondes de plus ou déconnectez-vous puis reconnectez-vous avant d'essayer de vous téléporter. </message> <message name="too_many_uploads_tport"> - Le trafic vers cette région est bouché en ce moment. Votre téléportation -ne pourra pas avoir lieu immédiatement. Veuillez réessayer -dans quelques minutes ou bien aller dans une zone moins fréquentée. + Le trafic vers cette région est bouché en ce moment. Votre téléportation ne pourra pas avoir lieu immédiatement. Veuillez réessayer dans quelques minutes ou bien aller dans une zone moins fréquentée. </message> <message name="expired_tport"> - Désolé, votre demande de téléportation n'a pas abouti -assez rapidement. Veuillez réessayer dans quelques minutes. + Désolé, votre demande de téléportation n'a pas abouti assez rapidement. Veuillez réessayer dans quelques minutes. </message> <message name="expired_region_handoff"> - Désolé, votre demande pour passer dans une autre région n'a pas abouti -assez rapidement. Veuillez réessayer dans quelques minutes. + Désolé, votre demande pour passer dans une autre région n'a pas abouti assez rapidement. Veuillez réessayer dans quelques minutes. </message> <message name="no_host"> - Impossible de trouver la destination de la téléportation. Il est possible que cette destination soit -temporairement indisponible ou qu'elle n'existe plus. Veuillez réessayer -dans quelques minutes. + Impossible de trouver la destination de la téléportation. Il est possible que cette destination soit temporairement indisponible ou qu'elle n'existe plus. Veuillez réessayer dans quelques minutes. </message> <message name="no_inventory_host"> L'inventaire est temporairement indisponible. diff --git a/indra/newview/skins/default/xui/it/floater_about.xml b/indra/newview/skins/default/xui/it/floater_about.xml index 6eb77adaee8407559a7b8b62ab3279e4f1ddae3b..2ec8bc4dd82313ac536b70a3e94e9edd00e5bf63 100644 --- a/indra/newview/skins/default/xui/it/floater_about.xml +++ b/indra/newview/skins/default/xui/it/floater_about.xml @@ -1,36 +1,36 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_about" title="Informazioni su Second Life"> - <text_editor name="credits_editor"> - Second Life è offerto da Philip, Tessa, Andrew, Cory, James, Ben, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Eve, Hunter, Ian, Jeff, Jennifer, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Avi, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, Bill, Todd, Ryan, Zach, Sarah, Nova, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Ventrella, Jack, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Teeny, Monroe, Icculus, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Satoko, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Mogura, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Rohn, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, Katie, Dawn, Katt, Dusty, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Vidtuts, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, Ann, Meredith, Clare, Joy, Praveen, Cody, Edmund, Ruthe, Sirena, Gayathri, Spider, FJ, Davidoff, Tian, Jennie, Louise, Oskar, Landon, Noelle, Jarv, Ingrid, Al, Sommer, Doc, Aria, Huin, Gray, Lili, Vir, DJ, Yang, T, Simone, Maestro, Scott, Charlene, Quixote, Amanda, Susan, Zed, Anne, Enkidu, Esbee, Joroan, Katelin, Roxie, Tay, Scarlet, Kevin, Johnny, Wolfgang, Andren, Bob, Howard, Merov, Rand, Ray, Michon, Newell, Galen, Dessie, Les and many others. - - Si ringraziano i seguenti residenti per aver contribuito a rendere questa versione la migliore possibile: - - 3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion - APR Copyright (C) 2000-2004 The Apache Software Foundation - cURL Copyright (C) 1996-2002, Daniel Stenberg, (daniel@haxx.se) - DBus/dbus-glib Copyright (C) 2002, 2003 CodeFactory AB / Copyright (C) 2003, 2004 Red Hat, Inc. - expat Copyright (C) 1998, 1999, 2000 Thai Open Source Software Center Ltd. - FreeType Copyright (C) 1996-2002, The FreeType Project (www.freetype.org). - GL Copyright (C) 1999-2004 Brian Paul. - Havok.com(TM) Copyright (C) 1999-2001, Telekinesys Research Limited. - jpeg2000 Copyright (C) 2001, David Taubman, The University of New South Wales (UNSW) - jpeglib Copyright (C) 1991-1998, Thomas G. Lane. - ogg/vorbis Copyright (C) 2001, Xiphophorus - OpenSSL Copyright (C) 1998-2002 The OpenSSL Project. - SDL Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga - SSLeay Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - xmlrpc-epi Copyright (C) 2000 Epinions, Inc. - zlib Copyright (C) 1995-2002 Jean-loup Gailly and Mark Adler. - google-perftools Copyright (c) 2005, Google Inc. - - Tutti i diritti riservati. Leggi licenses.txt per maggiori dettagli. - - Chat vocale Codifica audio: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C) - - - Ce la farò con un piccolo aiuto dai miei amici. --Richard Starkey - </text_editor> - <string name="you_are_at"> - Sei a [POSITION] - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_about" title="Informazioni su Second Life"> + <text_editor name="credits_editor"> + Second Life è offerto da Philip, Tessa, Andrew, Cory, James, Ben, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Eve, Hunter, Ian, Jeff, Jennifer, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Avi, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, Bill, Todd, Ryan, Zach, Sarah, Nova, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Ventrella, Jack, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Teeny, Monroe, Icculus, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Satoko, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Mogura, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Rohn, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, Katie, Dawn, Katt, Dusty, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Vidtuts, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, Ann, Meredith, Clare, Joy, Praveen, Cody, Edmund, Ruthe, Sirena, Gayathri, Spider, FJ, Davidoff, Tian, Jennie, Louise, Oskar, Landon, Noelle, Jarv, Ingrid, Al, Sommer, Doc, Aria, Huin, Gray, Lili, Vir, DJ, Yang, T, Simone, Maestro, Scott, Charlene, Quixote, Amanda, Susan, Zed, Anne, Enkidu, Esbee, Joroan, Katelin, Roxie, Tay, Scarlet, Kevin, Johnny, Wolfgang, Andren, Bob, Howard, Merov, Rand, Ray, Michon, Newell, Galen, Dessie, Les and many others. + + Si ringraziano i seguenti residenti per aver contribuito a rendere questa versione la migliore possibile: + + 3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion + APR Copyright (C) 2000-2004 The Apache Software Foundation + cURL Copyright (C) 1996-2002, Daniel Stenberg, (daniel@haxx.se) + DBus/dbus-glib Copyright (C) 2002, 2003 CodeFactory AB / Copyright (C) 2003, 2004 Red Hat, Inc. + expat Copyright (C) 1998, 1999, 2000 Thai Open Source Software Center Ltd. + FreeType Copyright (C) 1996-2002, The FreeType Project (www.freetype.org). + GL Copyright (C) 1999-2004 Brian Paul. + Havok.com(TM) Copyright (C) 1999-2001, Telekinesys Research Limited. + jpeg2000 Copyright (C) 2001, David Taubman, The University of New South Wales (UNSW) + jpeglib Copyright (C) 1991-1998, Thomas G. Lane. + ogg/vorbis Copyright (C) 2001, Xiphophorus + OpenSSL Copyright (C) 1998-2002 The OpenSSL Project. + SDL Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga + SSLeay Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + xmlrpc-epi Copyright (C) 2000 Epinions, Inc. + zlib Copyright (C) 1995-2002 Jean-loup Gailly and Mark Adler. + google-perftools Copyright (c) 2005, Google Inc. + + Tutti i diritti riservati. Leggi licenses.txt per maggiori dettagli. + + Chat vocale Codifica audio: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C) + + + Per avere successo nel business, sii coraggioso, sii il primo, sii differente. --Henry Marchant + </text_editor> + <string name="you_are_at"> + Sei a [POSITION] + </string> +</floater> 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 e266aa21647eceae67969975caebb93708398174..4f57067cd2ab3c2c950e45fab62956e428e9b43c 100644 --- a/indra/newview/skins/default/xui/it/floater_about_land.xml +++ b/indra/newview/skins/default/xui/it/floater_about_land.xml @@ -1,394 +1,493 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floaterland" title="Informazioni sul terreno"> - <tab_container name="landtab"> - <panel label="Generale" name="land_general_panel"> - <text name="Name:"> - Nome: - </text> - <text name="Description:"> - Descrizione: - </text> - <text name="Owner:"> - Proprietario: - </text> - <text name="OwnerText"> - Leyla Linden - </text> - <button label="Profilo..." label_selected="Profilo..." name="Profile..."/> - <text name="Group:"> - Gruppo: - </text> - <button label="Imposta..." label_selected="Imposta..." name="Set..."/> - <check_box label="Permetti cessione al gruppo" name="check deed" tool_tip="Un funzionario del gruppo può cedere questa terra al gruppo stesso cosicchè essa sarà  supportata dalle terre del gruppo."/> - <button label="Cedi..." label_selected="Cedi..." name="Deed..." tool_tip="Puoi solo offrire terra se sei un funzionario del gruppo selezionato."/> - <check_box label="Il proprietario fa un contributo con la cessione" name="check contrib" tool_tip="Quando la terra è ceduta al gruppo, il proprietario precedente contribuisce con abbastanza allocazione di terra per supportarlo."/> - <text name="For Sale:"> - In vendita: - </text> - <text name="Not for sale."> - Non in vendita. - </text> - <text name="For Sale: Price L$[PRICE]."> - Prezzo: [PRICE] L$. - </text> - <button label="Vendi la terra..." label_selected="Vendi la terra..." name="Sell Land..."/> - <text name="For sale to"> - In vendita a: [BUYER] - </text> - <text name="Sell with landowners objects in parcel."> - Gli oggetti sono inclusi nella vendita. - </text> - <text name="Selling with no objects in parcel."> - Gli oggetti non sono inclusi nella vendita. - </text> - <button label="Annulla la vendita del terreno" label_selected="Annulla la vendita del terreno" name="Cancel Land Sale"/> - <text name="Claimed:"> - Presa in possesso il: - </text> - <text name="DateClaimText"> - Tue Aug 15 13:47:25 2006 - </text> - <text name="PriceLabel"> - Area: - </text> - <text name="PriceText"> - 4048 m² - </text> - <text name="Traffic:"> - Traffico: - </text> - <text name="DwellText"> - 0 - </text> - <button label="Acquista il terreno..." label_selected="Acquista il terreno..." name="Buy Land..."/> - <button label="Acquista per il gruppo..." label_selected="Acquista per il gruppo..." name="Buy For Group..."/> - <button label="Compra pass..." label_selected="Compra pass..." name="Buy Pass..." tool_tip="Un pass ti da un accesso temporaneo in questo territorio."/> - <button label="Abbandona la terra..." label_selected="Abbandona la terra..." name="Abandon Land..."/> - <button label="Reclama la terra..." label_selected="Reclama la terra..." name="Reclaim Land..."/> - <button label="Vendita Linden..." label_selected="Vendita Linden..." name="Linden Sale..." tool_tip="La terra deve essere posseduta, con contenuto impostato, e non già messa in asta."/> - <string name="new users only"> - Solo ai nuovi residenti - </string> - <string name="anyone"> - A chiunque - </string> - <string name="area_text"> - Area - </string> - <string name="area_size_text"> - [AREA] m² - </string> - <string name="auction_id_text"> - Asta n.: [ID] - </string> - <string name="need_tier_to_modify"> - Devi confermare l'acquisto prima di poter modificare il terreno. - </string> - <string name="group_owned_text"> - (Posseduta dal gruppo) - </string> - <string name="profile_text"> - Profilo... - </string> - <string name="info_text"> - Info... - </string> - <string name="public_text"> - (pubblica) - </string> - <string name="none_text"> - (nessuno) - </string> - <string name="sale_pending_text"> - (vendita in corso) - </string> - <string name="no_selection_text"> - Nessun appezzamento selezionato. -Vai al menu Mondo > Informazioni sul terreno oppure seleziona un altro appezzamento per vederne i dettagli. - </string> - </panel> - <panel label="Regolamento" name="land_covenant_panel"> - <text name="covenant_timestamp_text"> - Ultima modifica Wed Dec 31 16:00:00 1969 - </text> - <text name="region_name_lbl"> - Regione: - </text> - <text name="region_name_text"> - leyla - </text> - <text name="estate_name_lbl"> - Proprietà immobiliare: - </text> - <text name="estate_name_text"> - Continente - </text> - <text name="estate_owner_lbl"> - Proprietario immobiliare: - </text> - <text name="estate_owner_text"> - (nessuno) - </text> - <text name="resellable_clause"> - La terra acquistata in questa regione non può essere rivenduta. - </text> - <text name="changeable_clause"> - La terra acquistata in questa regione non può essere unita o suddivisa. - </text> - <text_editor name="covenant_editor"> - Non c'è nessun regolamento imposto in questa regione. - </text_editor> - <string name="can_resell"> - La terra acquistata in questa regione può essere rivenduta. - </string> - <string name="can_not_resell"> - La terra acquistata in questa regione non può essere rivenduta. - </string> - <string name="can_change"> - La terra acquistata in questa regione può essere unita o suddivisa. - </string> - <string name="can_not_change"> - La terra acquistata in questa regione non può essere unita o suddivisa. - </string> - </panel> - <panel label="Oggetti" name="land_objects_panel"> - <text name="parcel_object_bonus"> - Fattore bonus degli oggetti della regione: [BONUS] - </text> - <text name="Simulator primitive usage:"> - Oggetti presenti sul simulatore: - </text> - <text name="objects_available"> - [COUNT] dei [MAX] ([AVAILABLE] dsponibili) - </text> - <string name="objects_available_text"> - [COUNT] dei [MAX] ([AVAILABLE] disponibili) - </string> - <string name="objects_deleted_text"> - [COUNT] dei [MAX] ([DELETED] saranno cancellati) - </string> - <text name="Primitives parcel supports:"> - Numero massimo degli oggetti che il simulatore supporta: - </text> - <text name="object_contrib_text"> - [COUNT] - </text> - <text name="Primitives on parcel:"> - Oggetti sul terreno: - </text> - <text name="total_objects_text"> - [COUNT] - </text> - <text name="Owned by parcel owner:"> - Posseduti dal proprietario: - </text> - <text name="owner_objects_text"> - [COUNT] - </text> - <button label="Mostra" label_selected="Mostra" name="ShowOwner"/> - <button label="Restituisci..." label_selected="Restituisci..." name="ReturnOwner..." tool_tip="Restituisci gli oggetti ai loro proprietari."/> - <text name="Set to group:"> - Imposta al gruppo: - </text> - <text name="group_objects_text"> - [COUNT] - </text> - <button label="Mostra" label_selected="Mostra" name="ShowGroup"/> - <button label="Restituisci..." label_selected="Restituisci..." name="ReturnGroup..." tool_tip="Restituisci gli oggetti ai loro proprietari."/> - <text name="Owned by others:"> - Posseduti da altri: - </text> - <text name="other_objects_text"> - [COUNT] - </text> - <button label="Mostra" label_selected="Mostra" name="ShowOther"/> - <button label="Restituisci..." label_selected="Restituisci..." name="ReturnOther..." tool_tip="Restituisci gli oggetti ai loro proprietari."/> - <text name="Selected / sat upon:"> - Selezionati / sui quali sei sopra: - </text> - <text name="selected_objects_text"> - [COUNT] - </text> - <text name="Autoreturn"> - Autorestituisci gli oggetti degli altri residenti (minuti, 0 per disabilitata): - </text> - <text name="Object Owners:"> - Proprietari degli oggetti: - </text> - <button label="Aggiorna Elenco" label_selected="Aggiorna Elenco" name="Refresh List"/> - <button label="Restituisci oggetti..." label_selected="Restituisci oggetti..." name="Return objects..."/> - <name_list name="owner list"> - <column label="Tipo" name="type"/> - <column label="Nome" name="name"/> - <column label="Conta" name="count"/> - <column label="Più recenti" name="mostrecent"/> - </name_list> - </panel> - <panel label="Opzioni" name="land_options_panel"> - <text name="allow_label"> - Permetti agli altri residenti di: - </text> - <check_box label="Modificare il terreno" name="edit land check" tool_tip="Se spuntato, chiunque può terraformare il tuo terreno. E' preferibile lasciare questo quadrato non spuntato, dato che sarai sempre in grado di modificare il tuo terreno."/> - <check_box label="Creare dei landmark" name="check landmark"/> - <check_box label="Permetti il volo" name="check fly" tool_tip="Se spuntato, gli altri residenti potranno volare sul tuo terreno. Se non spuntato, potranno solamente arrivare in volo o sorvolare il terreno."/> - <text name="allow_label2"> - Creare oggetti: - </text> - <check_box label="Tutti i residenti" name="edit objects check"/> - <check_box label="Gruppo" name="edit group objects check"/> - <text name="allow_label3"> - Entrata oggetti: - </text> - <check_box label="Tutti i residenti" name="all object entry check"/> - <check_box label="Gruppo" name="group object entry check"/> - <text name="allow_label4"> - Avere script attivi: - </text> - <check_box label="Tutti i residenti" name="check other scripts"/> - <check_box label="Gruppo" name="check group scripts"/> - <text name="land_options_label"> - Opzioni della terra: - </text> - <check_box label="Sicuro (senza danno)" name="check safe" tool_tip="Se spuntato, imposta il terreno su 'sicuro', disabilitando i danni da combattimento. Se non spuntato, viene abilitato il combattimento a morte."/> - <check_box label="Nessuna spinta" name="PushRestrictCheck" tool_tip="Previeni i colpi. Selezionare questa opzione può essere utile per prevenire comportamenti dannosi sul tuo terreno."/> - <check_box label="Mostra il luogo nella ricerca (30 L$/week) sotto" name="ShowDirectoryCheck" tool_tip="Lascia che questa terra sia vista dagli altri nei risultati di ricerca"/> - <combo_box name="land category"> - <combo_box.item name="AnyCategory" label="Tutte le categorie"/> - <combo_box.item name="LindenLocation" label="Luogo dei Linden"/> - - <combo_box.item name="Arts&Culture" label="Arte & Cultura"/> - <combo_box.item name="Business" label="Affari"/> - <combo_box.item name="Educational" label="Educazione"/> - <combo_box.item name="Gaming" label="Gioco"/> - <combo_box.item name="Hangout" label="Divertimento"/> - <combo_box.item name="NewcomerFriendly" label="Accoglienza nuovi residenti"/> - <combo_box.item name="Parks&Nature" label="Parchi & Natura"/> - <combo_box.item name="Residential" label="Residenziale"/> - <combo_box.item name="Shopping" label="Shopping"/> - <combo_box.item name="Other" label="Altro"/> - </combo_box> - <button label="?" label_selected="?" name="?"/> - <check_box name="MatureCheck" /> - <text name="Snapshot:"> - Fotografia: - </text> - <texture_picker label="" name="snapshot_ctrl" tool_tip="Clicca per scegliere una immagine"/> - <text name="landing_point"> - Punto di atterraggio: [LANDING] - </text> - <string name="landing_point_none"> - (nessuno) - </string> - <button label="Imposta" label_selected="Imposta" name="Set" tool_tip="Imposta il punto di atterraggio dove arrivano i visitatori. Impostalo nel punto dove si trova il tuo avatar in questo terreno."/> - <button label="Elimina" label_selected="Elimina" name="Clear" tool_tip="Elimina punto di atterraggio."/> - <text name="Teleport Routing: "> - Rotte dei teleport: - </text> - <combo_box name="landing type" tool_tip="Rotte dei teleport -- seleziona come vuoi organizzare i teleport nella tua terra."> - <combo_box.item name="Blocked" label="Bloccati"/> - <combo_box.item name="LandingPoint" label="Punto di atterraggio"/> - <combo_box.item name="Anywhere" label="Ovunque"/> - </combo_box> - <string name="push_restrict_text"> - Nessuna spinta - </string> - <string name="push_restrict_region_text"> - Nessuna spinta (Impostazione regionale) - </string> - </panel> - <panel label="Media" name="land_media_panel"> - <text name="with media:"> - Tipo di Media: - </text> - <combo_box name="media type" tool_tip="Specifica se l'Url è un video, una pagina web, o un altro tipo di media"/> - <text name="at URL:"> - Media URL: - </text> - <button label="Imposta..." label_selected="Imposta..." name="set_media_url"/> - <text name="Description:"> - Descrizione: - </text> - <line_editor name="url_description" tool_tip="Testo che appare vicino al bottone play/carica"/> - <text name="Media texture:"> - Cambia -Texture: - </text> - <texture_picker label="" name="media texture" tool_tip="Clicca per scegliere un'immagine"/> - <text name="replace_texture_help"> - (Gli oggetti che hanno questa texture applicata mostreranno il video o -la pagina web dopo che avrai cliccato sulla freccia play.) - </text> - <text name="Options:"> - Opzioni -Media: - </text> - <check_box label="Auto ridimensiona" name="media_auto_scale" tool_tip="Spuntando questa opzione, nell'appezzamento il contenuto media si ridimensionerà automaticamente. Potrebbe darsi che appaia un po' più lento e che diminuisca la qualità visiva ma nessun altro riadattamento o allineamento della texture sarà necessario."/> - <check_box label="Fai ripetere il video" name="media_loop" tool_tip="Fai ripetere il video continuamente. Quando il video è finito, reinizierà dal principio."/> - <check_box label="Nascondi indirizzo url dei media" name="hide_media_url" tool_tip="Abilitando questa opzione nasconderai l'indirizzo url dei media a tutte le persone non autorizzate a vedere le informazioni del terreno. Nota che questo non è disponibile per contenuto di tipo HTML."/> - <check_box label="Nascondi indirizzo url della musica" name="hide_music_url" tool_tip="Abilitando questa opzione nasconderai l'indirizzo url della musica a tutte le persone non autorizzate a vedere le informazioni del terreno."/> - <text name="media_size" tool_tip="Aumenta grandezza per far vedere meglio i media web, lascia a 0 per impostare il default."> - Grandezza Media: - </text> - <spinner name="media_size_width" tool_tip="Aumenta larghezza per far vedere meglio i media web, lascia a 0 per impostare il default."/> - <spinner name="media_size_height" tool_tip="Aumenta altezza per far vedere meglio i media web, lascia a 0 per impostare il default."/> - <text name="pixels"> - pixels - </text> - <text name="MusicURL:"> - URL Musica: - </text> - <text name="Sound:"> - Suono: - </text> - <check_box label="Restringi il suono dello spazio a questo terreno" name="check sound local"/> - <text name="Voice settings:"> - Voice: - </text> - <radio_group name="parcel_voice_channel"> - <radio_item name="Estate"> - Usa il canale spaziale della regione - </radio_item> - <radio_item name="Private"> - Usa un canale privato - </radio_item> - <radio_item name="Disabled"> - Disabilita audio spaziale in questo terreno - </radio_item> - </radio_group> - </panel> - <panel label="Accesso" name="land_access_panel"> - <text name="Limit access to this parcel to:"> - Accesso a questo terreno - </text> - <check_box label="Permetti accesso pubblico" name="public_access"/> - <text name="Only Allow"> - Blocca l'accesso con: - </text> - <check_box label="Residenti che non hanno dato le proprie informazioni di pagamento alla Linden Lab" name="limit_payment" tool_tip="Manda via residenti non identificati."/> - <check_box label="Residenti che non sono adulti con età verificata" name="limit_age_verified" tool_tip="Manda via residenti che non hanno verificato la loro età . Guarda il sito support.secondlife.com per ulteriori informazioni."/> - <string name="estate_override"> - Una o più di queste impostazioni sono già impostate a livello regionale - </string> - <check_box label="Permetti accesso al gruppo: [Gruppo]" name="GroupCheck" tool_tip="Imposta il gruppo nel pannello generale."/> - <check_box label="Vendi pass a:" name="PassCheck" tool_tip="Permetti in questo terreno l'accesso temporaneo"/> - <combo_box name="pass_combo"> - <combo_box.item name="Anyone" label="Chiunque"/> - <combo_box.item name="Group" label="Gruppo"/> - </combo_box> - <spinner label="Prezzo in L$:" name="PriceSpin"/> - <spinner label="Ore di accesso:" name="HoursSpin"/> - <text label="Permetti sempre" name="AllowedText"> - Residenti permessi - </text> - <name_list name="AccessList" tool_tip="([LISTED] in elenco, [MAX] massimo)"/> - <button label="Aggiungi..." label_selected="Aggiungi..." name="add_allowed"/> - <button label="Rimuovi" label_selected="Rimuovi" name="remove_allowed"/> - <text label="Blocca" name="BanCheck"> - Residenti bloccati - </text> - <name_list name="BannedList" tool_tip="([LISTED] in elenco, [MAX] massimo)"/> - <button label="Aggiungi..." label_selected="Aggiungi..." name="add_banned"/> - <button label="Rimuovi" label_selected="Rimuovi" name="remove_banned"/> - </panel> - </tab_container> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floaterland" title="Informazioni sul terreno"> + <tab_container name="landtab"> + <panel label="Generale" name="land_general_panel"> + <text name="Name:"> + Nome: + </text> + <text name="Description:"> + Descrizione: + </text> + <text name="LandType"> + Tipo: + </text> + <text name="LandTypeText" left="119"> + Mainland / Homestead + </text> + <text name="ContentRating" width="115"> + Categoria di accesso: + </text> + <text name="ContentRatingText" left="119"> + Adult + </text> + <text name="Owner:"> + Proprietario: + </text> + <text name="OwnerText" left="119" width="227"> + Leyla Linden + </text> + <button label="Profilo..." label_selected="Profilo..." name="Profile..."/> + <text name="Group:"> + Gruppo: + </text> + <text left="119" name="GroupText" width="227" /> + <button label="Imposta..." label_selected="Imposta..." name="Set..."/> + <check_box left="119" label="Permetti cessione al gruppo" name="check deed" tool_tip="Un funzionario del gruppo può cedere questa terra al gruppo stesso cosicchè essa sarà  supportata dalle terre del gruppo."/> + <button label="Cedi..." label_selected="Cedi..." name="Deed..." tool_tip="Puoi solo offrire terra se sei un funzionario del gruppo selezionato."/> + <check_box left="119" label="Il proprietario fa un contributo con la cessione" name="check contrib" tool_tip="Quando la terra è ceduta al gruppo, il proprietario precedente contribuisce con abbastanza allocazione di terra per supportarlo."/> + <text name="For Sale:"> + In vendita: + </text> + <text name="Not for sale." left="119"> + Non in vendita. + </text> + <text name="For Sale: Price L$[PRICE]." left="119"> + Prezzo: [PRICE]L$ ([PRICE_PER_SQM]L$/m²). + </text> + <text name="SalePending" left="119" width="321"/> + <button bottom="-242" label="Vendi la terra..." label_selected="Vendi la terra..." name="Sell Land..."/> + <text name="For sale to" left="119"> + In vendita a: [BUYER] + </text> + <text name="Sell with landowners objects in parcel." width="240" left="119"> + Gli oggetti sono inclusi nella vendita. + </text> + <text name="Selling with no objects in parcel." width="240" left="119"> + Gli oggetti non sono inclusi nella vendita. + </text> + <button bottom="-242" font="SansSerifSmall" left="275" width="165" label="Annulla la vendita del terreno" label_selected="Annulla la vendita del terreno" name="Cancel Land Sale"/> + <text name="Claimed:" width="115"> + Presa in possesso il: + </text> + <text name="DateClaimText" left="119"> + Tue Aug 15 13:47:25 2006 + </text> + <text name="PriceLabel"> + Area: + </text> + <text name="PriceText" left="119" width="140"> + 4048 m² + </text> + <text name="Traffic:"> + Traffico: + </text> + <text name="DwellText" left="119" width="140"> + 0 + </text> + <button label="Acquista il terreno..." label_selected="Acquista il terreno..." left="130" name="Buy Land..." width="125"/> + <button label="Acquista per il gruppo..." label_selected="Acquista per il gruppo..." name="Buy For Group..."/> + <button label="Compra pass..." label_selected="Compra pass..." left="130" width="125" name="Buy Pass..." tool_tip="Un pass ti da un accesso temporaneo in questo territorio."/> + <button label="Abbandona la terra..." label_selected="Abbandona la terra..." name="Abandon Land..."/> + <button label="Reclama la terra..." label_selected="Reclama la terra..." name="Reclaim Land..."/> + <button label="Vendita Linden..." label_selected="Vendita Linden..." name="Linden Sale..." tool_tip="La terra deve essere posseduta, con contenuto impostato, e non già messa in asta."/> + <string name="new users only"> + Solo ai nuovi residenti + </string> + <string name="anyone"> + A chiunque + </string> + <string name="area_text"> + Area + </string> + <string name="area_size_text"> + [AREA] m² + </string> + <string name="auction_id_text"> + Asta n.: [ID] + </string> + <string name="need_tier_to_modify"> + Devi confermare l'acquisto prima di poter modificare il terreno. + </string> + <string name="group_owned_text"> + (Posseduta dal gruppo) + </string> + <string name="profile_text"> + Profilo... + </string> + <string name="info_text"> + Info... + </string> + <string name="public_text"> + (pubblica) + </string> + <string name="none_text"> + (nessuno) + </string> + <string name="sale_pending_text"> + (vendita in corso) + </string> + <string name="no_selection_text"> + Nessun appezzamento selezionato. +Vai al menu Mondo > Informazioni sul terreno oppure seleziona un altro appezzamento per vederne i dettagli. + </string> + </panel> + <panel label="Regolamento" name="land_covenant_panel"> + <text name="estate_section_lbl"> + Proprietà : + </text> + <text name="estate_name_lbl"> + Nome: + </text> + <text name="estate_name_text"> + Continente + </text> + <text name="estate_owner_lbl"> + Proprietario: + </text> + <text name="estate_owner_text"> + (nessuno) + </text> + <text_editor name="covenant_editor"> + Non c'è nessun regolamento imposto in questa regione. + </text_editor> + <text name="covenant_timestamp_text"> + Ultima modifica Wed Dec 31 16:00:00 1969 + </text> + <text name="region_section_lbl"> + Regione: + </text> + <text name="region_name_lbl"> + Nome: + </text> + <text name="region_name_text" left="125"> + leyla + </text> + <text name="region_landtype_lbl"> + Tipo: + </text> + <text name="region_landtype_text" left="125"> + Mainland / Homestead + </text> + <text name="region_maturity_lbl" width="115"> + Categoria di accesso: + </text> + <text name="region_maturity_text" left="125"> + Adult + </text> + <text name="resellable_lbl"> + Rivendita: + </text> + <text name="resellable_clause" left="125"> + La terra in questa regione non può essere rivenduta. + </text> + <text name="changeable_lbl"> + Suddividi: + </text> + <text name="changeable_clause" left="125"> + La terra in questa regione non può essere unita/suddivisa. + </text> + <string name="can_resell"> + La terra acquistata in questa regione può essere rivenduta. + </string> + <string name="can_not_resell"> + La terra acquistata in questa regione non può essere rivenduta. + </string> + <string name="can_change"> + La terra acquistata in questa regione può essere unita +o suddivisa. + </string> + <string name="can_not_change"> + La terra acquistata in questa regione non può essere unita +o suddivisa. + </string> + </panel> + <panel label="Oggetti" name="land_objects_panel"> + <text name="parcel_object_bonus"> + Fattore bonus degli oggetti della regione: [BONUS] + </text> + <text name="Simulator primitive usage:"> + Oggetti presenti sul simulatore: + </text> + <text name="objects_available" left="214" width="230" > + [COUNT] dei [MAX] ([AVAILABLE] dsponibili) + </text> + <string name="objects_available_text"> + [COUNT] dei [MAX] ([AVAILABLE] disponibili) + </string> + <string name="objects_deleted_text"> + [COUNT] dei [MAX] ([DELETED] saranno cancellati) + </string> + <text name="Primitives parcel supports:" width="200"> + Oggetti che il terreno supporta: + </text> + <text name="object_contrib_text" left="214" width="152"> + [COUNT] + </text> + <text name="Primitives on parcel:"> + Oggetti sul terreno: + </text> + <text name="total_objects_text" left="214" width="48"> + [COUNT] + </text> + <text name="Owned by parcel owner:" left="14" width="180" > + Posseduti dal proprietario: + </text> + <text name="owner_objects_text" left="214" width="48"> + [COUNT] + </text> + <button label="Mostra" label_selected="Mostra" name="ShowOwner" right="-135" width="60"/> + <button label="Restituisci..." label_selected="Restituisci..." name="ReturnOwner..." tool_tip="Restituisci gli oggetti ai loro proprietari." right="-10" width="119"/> + <text name="Set to group:" left="14" width="180"> + Imposta al gruppo: + </text> + <text name="group_objects_text" left="214" width="48"> + [COUNT] + </text> + <button label="Mostra" label_selected="Mostra" name="ShowGroup" right="-135" width="60"/> + <button label="Restituisci..." label_selected="Restituisci..." name="ReturnGroup..." tool_tip="Restituisci gli oggetti ai loro proprietari." right="-10" width="119"/> + <text name="Owned by others:" left="14" width="180"> + Posseduti da altri: + </text> + <text name="other_objects_text" left="214" width="48"> + [COUNT] + </text> + <button label="Mostra" label_selected="Mostra" name="ShowOther" right="-135" width="60"/> + <button label="Restituisci..." label_selected="Restituisci..." name="ReturnOther..." tool_tip="Restituisci gli oggetti ai loro proprietari." right="-10" width="119"/> + <text name="Selected / sat upon:" left="14" width="193"> + Selezionati / sui quali sei sopra: + </text> + <text name="selected_objects_text" left="214" width="48"> + [COUNT] + </text> + <text name="Autoreturn" left="4" width="412"> + Autorestituisci gli oggetti degli altri residenti (minuti, 0 per disabilitata): + </text> + <line_editor name="clean other time" right="-20" /> + <text name="Object Owners:" width="150"> + Proprietari degli oggetti: + </text> + <button label="Aggiorna Elenco" label_selected="Aggiorna Elenco" name="Refresh List" left="158"/> + <button label="Restituisci oggetti..." label_selected="Restituisci oggetti..." name="Return objects..." left="270" width="164"/> + <name_list name="owner list"> + <column label="Tipo" name="type"/> + <column label="Nome" name="name"/> + <column label="Conta" name="count"/> + <column label="Più recenti" name="mostrecent"/> + </name_list> + </panel> + <panel label="Opzioni" name="land_options_panel"> + <text name="allow_label"> + Permetti agli altri residenti di: + </text> + <check_box label="Modificare il terreno" name="edit land check" tool_tip="Se spuntato, chiunque può terraformare il tuo terreno. E' preferibile lasciare questo quadrato non spuntato, dato che sarai sempre in grado di modificare il tuo terreno."/> + <check_box label="Creare dei landmark" name="check landmark"/> + <check_box label="Permetti il volo" name="check fly" tool_tip="Se spuntato, gli altri residenti potranno volare sul tuo terreno. Se non spuntato, potranno solamente arrivare in volo o sorvolare il terreno."/> + <text name="allow_label2"> + Creare oggetti: + </text> + <check_box label="Tutti i residenti" name="edit objects check"/> + <check_box label="Gruppo" name="edit group objects check"/> + <text name="allow_label3"> + Entrata oggetti: + </text> + <check_box label="Tutti i residenti" name="all object entry check"/> + <check_box label="Gruppo" name="group object entry check"/> + <text name="allow_label4"> + Avere script attivi: + </text> + <check_box label="Tutti i residenti" name="check other scripts"/> + <check_box label="Gruppo" name="check group scripts"/> + <text name="land_options_label"> + Opzioni della terra: + </text> + <check_box label="Sicuro (senza danno)" name="check safe" tool_tip="Se spuntato, imposta il terreno su 'sicuro', disabilitando i danni da combattimento. Se non spuntato, viene abilitato il combattimento a morte."/> + <check_box label="Nessuna spinta" name="PushRestrictCheck" tool_tip="Previeni i colpi. Selezionare questa opzione può essere utile per prevenire comportamenti dannosi sul tuo terreno."/> + <check_box label="Mostra il luogo nella ricerca (30 L$/week) sotto" name="ShowDirectoryCheck" tool_tip="Lascia che questa terra sia vista dagli altri nei risultati di ricerca"/> + <string name="search_enabled_tooltip"> + Fai in modo che la gente trovi questo terreno nei risultati della ricerca. + </string> + <string name="search_disabled_small_tooltip"> + Questa opzione è disabilitata perchè questo terreno ha un'area di 128 m² o inferiore. +Solamente terreni più grandi possono essere abilitati nella ricerca. + </string> + <string name="search_disabled_permissions_tooltip"> + Questa opzione è disabilitata perchè tu non puoi modificare le opzioni di questo terreno. + </string> + <combo_box name="land category with adult"> + <combo_item name="AnyCategory"> + Tutte le categorie + </combo_item> + <combo_item name="LindenLocation"> + Luoghi Linden + </combo_item> + <combo_item name="Adult"> + Adult + </combo_item> + <combo_item name="Arts&Culture"> + Arte & Cultura + </combo_item> + <combo_item name="Business"> + Affari + </combo_item> + <combo_item name="Educational"> + Educazione + </combo_item> + <combo_item name="Gaming"> + Giochi + </combo_item> + <combo_item name="Hangout"> + Divertimento + </combo_item> + <combo_item name="NewcomerFriendly"> + Ospitalità per i nuovi entrati + </combo_item> + <combo_item name="Parks&Nature"> + Parchi & Natura + </combo_item> + <combo_item name="Residential"> + Residenziale + </combo_item> + <combo_item name="Shopping"> + Shopping + </combo_item> + <combo_item name="Other"> + Altro + </combo_item> + </combo_box> + <combo_box name="land category"> + <combo_box.item name="AnyCategory" label="Tutte le categorie"/> + <combo_box.item name="LindenLocation" label="Luogo dei Linden"/> + <combo_box.item name="Arts&Culture" label="Arte & Cultura"/> + <combo_box.item name="Business" label="Affari"/> + <combo_box.item name="Educational" label="Educazione"/> + <combo_box.item name="Gaming" label="Gioco"/> + <combo_box.item name="Hangout" label="Divertimento"/> + <combo_box.item name="NewcomerFriendly" label="Accoglienza nuovi residenti"/> + <combo_box.item name="Parks&Nature" label="Parchi & Natura"/> + <combo_box.item name="Residential" label="Residenziale"/> + <combo_box.item name="Shopping" label="Shopping"/> + <combo_box.item name="Other" label="Altro"/> + </combo_box> + <button label="?" label_selected="?" name="?"/> + <check_box label="Contenuto Mature" name="MatureCheck" tool_tip=" "/> + <string name="mature_check_mature"> + Contenuto Mature + </string> + <string name="mature_check_adult"> + Contenuto Adult + </string> + <string name="mature_check_mature_tooltip"> + Il contenuto o le informazioni del tuo terreno sono considerate Mature. + </string> + <string name="mature_check_adult_tooltip"> + Il contenuto o le informazioni del tuo terreno sono considerate Adult. + </string> + <text name="Snapshot:"> + Fotografia: + </text> + <texture_picker label="" name="snapshot_ctrl" tool_tip="Clicca per scegliere una immagine"/> + <text name="landing_point"> + Punto di atterraggio: [LANDING] + </text> + <string name="landing_point_none"> + (nessuno) + </string> + <button width="60" label="Imposta" label_selected="Imposta" name="Set" tool_tip="Imposta il punto di atterraggio dove arrivano i visitatori. Impostalo nel punto dove si trova il tuo avatar in questo terreno."/> + <button width="60" left="301" label="Elimina" label_selected="Elimina" name="Clear" tool_tip="Elimina punto di atterraggio."/> + <text name="Teleport Routing: "> + Rotte dei teleport: + </text> + <combo_box width="140" name="landing type" tool_tip="Rotte dei teleport -- seleziona come vuoi organizzare i teleport nella tua terra."> + <combo_box.item name="Blocked" label="Bloccati"/> + <combo_box.item name="LandingPoint" label="Punto di atterraggio"/> + <combo_box.item name="Anywhere" label="Ovunque"/> + </combo_box> + <string name="push_restrict_text"> + Nessuna spinta + </string> + <string name="push_restrict_region_text"> + Nessuna spinta (Impostazione regionale) + </string> + </panel> + <panel label="Media" name="land_media_panel"> + <text name="with media:" width="85"> + Tipo di Media: + </text> + <combo_box left="97" name="media type" tool_tip="Specifica se l'Url è un video, una pagina web, o un altro tipo di media"/> + <text name="at URL:" width="85"> + URL Media: + </text> + <line_editor left="97" name="media_url"/> + <button label="Imposta..." label_selected="Imposta..." name="set_media_url" width="63"/> + <text name="Description:"> + Descrizione: + </text> + <line_editor left="97" name="url_description" tool_tip="Testo che appare vicino al bottone play/carica"/> + <text name="Media texture:"> + Cambia +Texture: + </text> + <texture_picker left="97" label="" name="media texture" tool_tip="Clicca per scegliere un'immagine"/> + <text name="replace_texture_help" width="285"> + (Gli oggetti che hanno questa texture applicata +mostreranno il video o la pagina web dopo che avrai +cliccato sulla freccia play.) + </text> + <text name="Options:"> + Opzioni +Media: + </text> + <check_box left="94" label="Auto ridimensiona" name="media_auto_scale" tool_tip="Spuntando questa opzione, nell'appezzamento il contenuto media si ridimensionerà automaticamente. Potrebbe darsi che appaia un po' più lento e che diminuisca la qualità visiva ma nessun altro riadattamento o allineamento della texture sarà necessario."/> + <check_box left="265" label="Fai ripetere il video" name="media_loop" tool_tip="Fai ripetere il video continuamente. Quando il video è finito, reinizierà dal principio."/> + <check_box left="94" label="Nascondi indirizzo URL Media" name="hide_media_url" tool_tip="Abilitando questa opzione nasconderai l'indirizzo url dei media a tutte le persone non autorizzate a vedere le informazioni del terreno. Nota che questo non è disponibile per contenuto di tipo HTML."/> + <check_box left="265" label="Nascondi indirizzo URL Musica" name="hide_music_url" tool_tip="Abilitando questa opzione nasconderai l'indirizzo url della musica a tutte le persone non autorizzate a vedere le informazioni del terreno."/> + <text left="99" width="120" name="media_size" tool_tip="Aumenta grandezza per far vedere meglio i media web, lascia a 0 per impostare il default."> + Grandezza Media: + </text> + <spinner left_delta="104" name="media_size_width" tool_tip="Aumenta larghezza per far vedere meglio i media web, lascia a 0 per impostare il default."/> + <spinner name="media_size_height" tool_tip="Aumenta altezza per far vedere meglio i media web, lascia a 0 per impostare il default."/> + <text name="pixels"> + pixels + </text> + <text name="MusicURL:"> + URL Musica: + </text> + <line_editor left="97" name="music_url"/> + <text name="Sound:"> + Suono: + </text> + <check_box left="94" label="Limita le gesture e i suoni degli oggetti in questo territorio" name="check sound local"/> + <button label="?" label_selected="?" name="?" left="420"/> + <text name="Voice settings:"> + Voice: + </text> + <check_box left="94" label="Abilita il Voice" name="parcel_enable_voice_channel"/> + <check_box left="94" label="Abilita il Voice (stabilito su tutta la proprietà )" name="parcel_enable_voice_channel_is_estate_disabled"/> + <check_box left="114" label="Limita il voice a questa porzione di terreno" name="parcel_enable_voice_channel_parcel"/> + </panel> + <panel label="Accesso" name="land_access_panel"> + <text name="Limit access to this parcel to:"> + Accesso a questo terreno + </text> + <check_box label="Permetti accesso pubblico" name="public_access"/> + <text name="Only Allow"> + Blocca l'accesso con Residenti: + </text> + <check_box label="Che non hanno dato le proprie informazioni di pagamento alla Linden Lab" name="limit_payment" tool_tip="Manda via residenti non identificati."/> + <check_box label="Che non sono adulti con età verificata" name="limit_age_verified" tool_tip="Manda via residenti che non hanno verificato la loro età . Guarda il sito support.secondlife.com per ulteriori informazioni."/> + <string name="estate_override"> + Una o più di queste impostazioni sono già impostate a livello regionale + </string> + <check_box label="Permetti accesso al gruppo: [GROUP]" name="GroupCheck" tool_tip="Imposta il gruppo nel pannello generale."/> + <check_box label="Vendi pass a:" name="PassCheck" tool_tip="Permetti in questo terreno l'accesso temporaneo"/> + <combo_box name="pass_combo"> + <combo_box.item name="Anyone" label="Chiunque"/> + <combo_box.item name="Group" label="Gruppo"/> + </combo_box> + <spinner label="Prezzo in L$:" name="PriceSpin"/> + <spinner label="Ore di accesso:" name="HoursSpin"/> + <text label="Permetti sempre" name="AllowedText"> + Residenti permessi + </text> + <name_list name="AccessList" tool_tip="([LISTED] in elenco, [MAX] massimo)"/> + <button label="Aggiungi..." label_selected="Aggiungi..." name="add_allowed"/> + <button label="Rimuovi" label_selected="Rimuovi" name="remove_allowed"/> + <text label="Blocca" name="BanCheck"> + Residenti bloccati + </text> + <name_list name="BannedList" tool_tip="([LISTED] in elenco, [MAX] massimo)"/> + <button label="Aggiungi..." label_selected="Aggiungi..." name="add_banned"/> + <button label="Rimuovi" label_selected="Rimuovi" name="remove_banned"/> + </panel> + </tab_container> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_animation_preview.xml b/indra/newview/skins/default/xui/it/floater_animation_preview.xml index e72dd4aa20657f98b8651be3a05802de5af0d9ab..b6d6148afb251d3ae11703b4a40f374022604016 100644 --- a/indra/newview/skins/default/xui/it/floater_animation_preview.xml +++ b/indra/newview/skins/default/xui/it/floater_animation_preview.xml @@ -1,89 +1,90 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Animation Preview" title=""> - <text name="name_label"> - Nome: - </text> - <text name="description_label"> - Descrizione: - </text> - <spinner label="Priorità " name="priority" tool_tip="Controlla quali altre animazioni possono essere annullate da questa animazione."/> - <check_box label="Ciclica" name="loop_check" tool_tip="Rende questa animazione ciclica."/> - <spinner label="In(%)" name="loop_in_point" tool_tip="Imposta il punto nell'animazione in cui ritornare dopo ogni ciclo."/> - <spinner label="Out(%)" name="loop_out_point" tool_tip="Imposta il punto nell'animazione in cui terminare dopo ogni ciclo."/> - <text name="hand_label"> - Postura della mano - </text> - <combo_box label="" name="hand_pose_combo" tool_tip="Controlla cosa fanno le mani durante l'animazione."> - <combo_box.item name="Spread" label="Aperte"/> - <combo_box.item name="Relaxed" label="Rilassate"/> - <combo_box.item name="PointBoth" label="Entrambe indicano"/> - <combo_box.item name="Fist" label="Pugno"/> - <combo_box.item name="RelaxedLeft" label="Sinistra Rilassata"/> - <combo_box.item name="PointLeft" label="Sinistra Indica"/> - <combo_box.item name="FistLeft" label="Sinistra a pugno"/> - <combo_box.item name="RelaxedRight" label="Destra rilassata"/> - <combo_box.item name="PointRight" label="Destra Indica"/> - <combo_box.item name="FistRight" label="Destra a Pugno"/> - <combo_box.item name="SaluteRight" label="Destra Saluta"/> - <combo_box.item name="Typing" label="Digitano"/> - <combo_box.item name="PeaceRight" label="Destra 'segno di pace'"/> - </combo_box> - <text name="emote_label"> - Espressione - </text> - <combo_box label="" name="emote_combo" tool_tip="Controlla l'espressione del viso durante l'animazione."> - <combo_box.item name="[None]" label="None]"/> - <combo_box.item name="Aaaaah" label="Aaaaah"/> - <combo_box.item name="Afraid" label="Paura"/> - <combo_box.item name="Angry" label="Rabbia"/> - <combo_box.item name="BigSmile" label="Sorriso Aperto"/> - <combo_box.item name="Bored" label="Noia"/> - <combo_box.item name="Cry" label="Pianto"/> - <combo_box.item name="Disdain" label="Sdegno"/> - <combo_box.item name="Embarrassed" label="Imbarazzo"/> - <combo_box.item name="Frown" label="Accigliato"/> - <combo_box.item name="Kiss" label="Bacio"/> - <combo_box.item name="Laugh" label="Risata"/> - <combo_box.item name="Plllppt" label="Linguaccia"/> - <combo_box.item name="Repulsed" label="Repulsione"/> - <combo_box.item name="Sad" label="Tristezza"/> - <combo_box.item name="Shrug" label="Spallucce"/> - <combo_box.item name="Smile" label="Sorriso"/> - <combo_box.item name="Surprise" label="Sorpresa"/> - <combo_box.item name="Wink" label="Ammiccamento"/> - <combo_box.item name="Worry" label="Preoccupazione"/> - </combo_box> - <text name="preview_label"> - Vedi anteprima mentre - </text> - <combo_box label="" name="preview_base_anim" tool_tip="Da usarsi per controllare il comportamento dell'animazione mentre l'avatar svolge azioni abituali."> - <combo_box.item name="Standing" label="In piedi"/> - <combo_box.item name="Walking" label="Passeggia"/> - <combo_box.item name="Sitting" label="Siede"/> - <combo_box.item name="Flying" label="Vola"/> - </combo_box> - <spinner label="Avvio lento (sec)" name="ease_in_time" tool_tip="Tempo (in secondi) in cui le animazioni iniziano a sfumare."/> - <spinner label="Arresto lento (sec)" name="ease_out_time" tool_tip="Tempo (in secondi) in cui le animazioni iniziano a sfumare."/> - <button label="" name="play_btn" tool_tip="Attiva/sospendi l'animazione."/> - <button label="" name="stop_btn" tool_tip="Ferma la riproduzione dell'animazione"/> - <text name="bad_animation_text"> - Impossibile leggere il file dell'animazione. - -Raccomandiamo file di tipo BVH esportati da Poser 4. - </text> - <button label="Annulla" name="cancel_btn"/> - <button label="Importa ([AMOUNT]L$)" name="ok_btn"/> - <string name="failed_to_initialize"> - Impossibile inizializzare la sequenza - </string> - <string name="anim_too_long"> - Il file dell'animazione è lungo [LENGTH] secondi. - -La lunghezza massima è [MAX_LENGTH] secondi. - </string> - <string name="failed_file_read"> - Impossibile leggere il file dell'animazione. - -[STATUS] - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Animation Preview" title=""> + <text name="name_label"> + Nome: + </text> + <text name="description_label"> + Descrizione: + </text> + <spinner label_width="72" width="110" label="Priorità " name="priority" tool_tip="Controlla quali altre animazioni possono essere annullate da questa animazione."/> + <check_box label="Ciclica" name="loop_check" tool_tip="Rende questa animazione ciclica."/> + <spinner label="In(%)" name="loop_in_point" tool_tip="Imposta il punto nell'animazione in cui ritornare dopo ogni ciclo."/> + <spinner label="Out(%)" name="loop_out_point" tool_tip="Imposta il punto nell'animazione in cui terminare dopo ogni ciclo."/> + <text name="hand_label"> + Postura della mano + </text> + <combo_box left_delta="100" width="184" name="hand_pose_combo" tool_tip="Controlla cosa fanno le mani durante l'animazione."> + <combo_box.item name="Spread" label="Aperte"/> + <combo_box.item name="Relaxed" label="Rilassate"/> + <combo_box.item name="PointBoth" label="Entrambe indicano"/> + <combo_box.item name="Fist" label="Pugno"/> + <combo_box.item name="RelaxedLeft" label="Sinistra Rilassata"/> + <combo_box.item name="PointLeft" label="Sinistra Indica"/> + <combo_box.item name="FistLeft" label="Sinistra a pugno"/> + <combo_box.item name="RelaxedRight" label="Destra rilassata"/> + <combo_box.item name="PointRight" label="Destra Indica"/> + <combo_box.item name="FistRight" label="Destra a Pugno"/> + <combo_box.item name="SaluteRight" label="Destra Saluta"/> + <combo_box.item name="Typing" label="Digitano"/> + <combo_box.item name="PeaceRight" label="Destra 'segno di pace'"/> + </combo_box> + <text name="emote_label"> + Espressione + </text> + <combo_box left_delta="100" width="184" name="emote_combo" tool_tip="Controlla l'espressione del viso durante l'animazione."> + <combo_box.item name="[None]" label="None]"/> + <combo_box.item name="Aaaaah" label="Aaaaah"/> + <combo_box.item name="Afraid" label="Paura"/> + <combo_box.item name="Angry" label="Rabbia"/> + <combo_box.item name="BigSmile" label="Sorriso Aperto"/> + <combo_box.item name="Bored" label="Noia"/> + <combo_box.item name="Cry" label="Pianto"/> + <combo_box.item name="Disdain" label="Sdegno"/> + <combo_box.item name="Embarrassed" label="Imbarazzo"/> + <combo_box.item name="Frown" label="Accigliato"/> + <combo_box.item name="Kiss" label="Bacio"/> + <combo_box.item name="Laugh" label="Risata"/> + <combo_box.item name="Plllppt" label="Linguaccia"/> + <combo_box.item name="Repulsed" label="Repulsione"/> + <combo_box.item name="Sad" label="Tristezza"/> + <combo_box.item name="Shrug" label="Spallucce"/> + <combo_box.item name="Smile" label="Sorriso"/> + <combo_box.item name="Surprise" label="Sorpresa"/> + <combo_box.item name="Wink" label="Ammiccamento"/> + <combo_box.item name="Worry" label="Preoccupazione"/> + </combo_box> + <text name="preview_label" width="250"> + Vedi anteprima mentre + </text> + <combo_box left_delta="154" width="130" name="preview_base_anim" tool_tip="Da usarsi per controllare il comportamento dell'animazione mentre l'avatar svolge azioni abituali."> + <combo_box.item name="Standing" label="In piedi"/> + <combo_box.item name="Walking" label="Passeggia"/> + <combo_box.item name="Sitting" label="Siede"/> + <combo_box.item name="Flying" label="Vola"/> + </combo_box> + <spinner label_width="125" width="192" label="Avvio lento (sec)" name="ease_in_time" tool_tip="Tempo (in secondi) in cui le animazioni iniziano a sfumare."/> + <spinner bottom_delta="-20" label_width="125" left="10" width="192" label="Arresto lento (sec)" name="ease_out_time" tool_tip="Tempo (in secondi) in cui le animazioni iniziano a sfumare."/> + <button bottom_delta="-32" name="play_btn" tool_tip="Attiva/sospendi l'animazione."/> + <button label="" name="stop_btn" tool_tip="Ferma la riproduzione dell'animazione"/> + <text name="bad_animation_text"> + Impossibile leggere il file dell'animazione. + +Raccomandiamo file di tipo BVH esportati da +Poser 4. + </text> + <button label="Annulla" name="cancel_btn"/> + <button label="Importa ([AMOUNT]L$)" name="ok_btn"/> + <string name="failed_to_initialize"> + Impossibile inizializzare la sequenza + </string> + <string name="anim_too_long"> + Il file dell'animazione è lungo [LENGTH] secondi. + +La lunghezza massima è [MAX_LENGTH] secondi. + </string> + <string name="failed_file_read"> + Impossibile leggere il file dell'animazione. + +[STATUS] + </string> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_auction.xml b/indra/newview/skins/default/xui/it/floater_auction.xml index 84b89d9e1f46bab14ff29b2a84522f6f67d602cb..edbb9ab9a93aa6ae33a4381b5093da70a49d46e9 100644 --- a/indra/newview/skins/default/xui/it/floater_auction.xml +++ b/indra/newview/skins/default/xui/it/floater_auction.xml @@ -1,9 +1,9 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_auction" title="Inizia a vendere terra Linden"> - <check_box label="Includi barriere di selezione gialle" name="fence_check"/> - <button label="Fotografia" label_selected="Fotografia" name="snapshot_btn"/> - <button label="OK" label_selected="OK" name="ok_btn"/> - <string name="already for sale"> - Non puoi mettere in asta terreni che sono già in vendita. - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_auction" title="Inizia a vendere terra Linden"> + <check_box label="Includi barriere di selezione gialle" name="fence_check"/> + <button label="Fotografia" label_selected="Fotografia" name="snapshot_btn"/> + <button label="OK" label_selected="OK" name="ok_btn"/> + <string name="already for sale"> + Non puoi mettere in asta terreni che sono già in vendita. + </string> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_avatar_picker.xml b/indra/newview/skins/default/xui/it/floater_avatar_picker.xml index 947f2b7b2c00bc6bf3616bbffc14b22314cc7977..4e63c3b7d63b89c2812a0d03525a0412d129d8a7 100644 --- a/indra/newview/skins/default/xui/it/floater_avatar_picker.xml +++ b/indra/newview/skins/default/xui/it/floater_avatar_picker.xml @@ -1,15 +1,40 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="avatarpicker" title="Scegli residente"> - <text name="instruct_search_resident_name"> - Scrivi parte del nome del residente: - </text> - <button label="Trova" label_selected="Trova" name="Find"/> - <text name="Or select their calling card:"> - Oppure seleziona un biglietto da visita: - </text> - <button label="Chiudi" label_selected="Chiudi" name="Close"/> - <button label="Seleziona" label_selected="Seleziona" name="Select"/> - <string name="NotFound"> - '[TEXT]' non trovato - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="avatarpicker" title="Scegli residente"> + <tab_container name="ResidentChooserTabs"> + <panel label="Cerca" name="SearchPanel"> + <text name="InstructSearchResidentName"> + Scrivi parte del nome del residente: + </text> + <button label="Trova" label_selected="Trova" name="Find"/> + </panel> + <panel label="Biglietti da visita" name="CallingCardsPanel"> + <text name="InstructSelectCallingCard"> + Seleziona un biglietto da visita: + </text> + </panel> + <panel label="Vicino a me" name="NearMePanel"> + <text name="InstructSelectResident"> + Seleziona un residente nelle vicinanze: + </text> + <button label="Aggiorna la lista" label_selected="Aggiorna l'elenco" name="Refresh"/> + <slider label="Range" name="near_me_range"/> + <text name="meters"> + Metri + </text> + </panel> + </tab_container> + <button label="Seleziona" label_selected="Seleziona" name="Select"/> + <button label="Annulla" label_selected="Annulla" name="Cancel"/> + <string name="not_found"> + '[TEXT]' non trovato + </string> + <string name="no_one_near"> + Nessuno è vicino + </string> + <string name="no_results"> + Nessun risultato + </string> + <string name="searching"> + Ricerca... + </string> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_avatar_textures.xml b/indra/newview/skins/default/xui/it/floater_avatar_textures.xml index cb1326aa4eaa8f89b6a76b761e322df88b2cab64..281f436224baa71e07082d7e55091fb8daf8df3a 100644 --- a/indra/newview/skins/default/xui/it/floater_avatar_textures.xml +++ b/indra/newview/skins/default/xui/it/floater_avatar_textures.xml @@ -1,30 +1,30 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="avatar_texture_debug" title="Texture dell'Avatar"> - <text name="baked_label"> - Texture Visualizzate - </text> - <text name="composite_label"> - Texture Composite - </text> - <texture_picker label="Testa" name="baked_head"/> - <texture_picker label="Trucco" name="head_bodypaint"/> - <texture_picker label="Capelli" name="hair"/> - <button label="Deposito" label_selected="Deposito" name="Dump"/> - <texture_picker label="Occhi" name="baked_eyes"/> - <texture_picker label="Occhio" name="eye_texture"/> - <texture_picker label="Parte superiore del corpo" name="baked_upper_body"/> - <texture_picker label="Tatuaggio parte superiore del corpo" name="upper_bodypaint"/> - <texture_picker label="Canottiera" name="undershirt"/> - <texture_picker label="Guanti" name="gloves"/> - <texture_picker label="Maglietta" name="shirt"/> - <texture_picker label="Giacca, parte superiore" name="upper_jacket"/> - <texture_picker label="Parte inferiore del corpo" name="baked_lower_body"/> - <texture_picker label="Tatuaggio parte inferiore del corpo" name="lower_bodypaint"/> - <texture_picker label="Mutande" name="underpants"/> - <texture_picker label="Calze" name="socks"/> - <texture_picker label="Scarpe" name="shoes"/> - <texture_picker label="Pantaloni" name="pants"/> - <texture_picker label="Giacca" name="jacket"/> - <texture_picker label="Gonna" name="baked_skirt"/> - <texture_picker label="Gonna" name="skirt_texture"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="avatar_texture_debug" title="Texture dell'Avatar"> + <text name="baked_label"> + Texture Visualizzate + </text> + <text name="composite_label"> + Texture Composite + </text> + <texture_picker label="Testa" name="baked_head"/> + <texture_picker label="Trucco" name="head_bodypaint"/> + <texture_picker label="Capelli" name="hair"/> + <button label="Deposito" label_selected="Deposito" name="Dump"/> + <texture_picker label="Occhi" name="baked_eyes"/> + <texture_picker label="Occhio" name="eye_texture"/> + <texture_picker label="Parte superiore del corpo" name="baked_upper_body"/> + <texture_picker label="Tatuaggio parte superiore del corpo" name="upper_bodypaint"/> + <texture_picker label="Canottiera" name="undershirt"/> + <texture_picker label="Guanti" name="gloves"/> + <texture_picker label="Maglietta" name="shirt"/> + <texture_picker label="Giacca, parte superiore" name="upper_jacket"/> + <texture_picker label="Parte inferiore del corpo" name="baked_lower_body"/> + <texture_picker label="Tatuaggio parte inferiore del corpo" name="lower_bodypaint"/> + <texture_picker label="Mutande" name="underpants"/> + <texture_picker label="Calze" name="socks"/> + <texture_picker label="Scarpe" name="shoes"/> + <texture_picker label="Pantaloni" name="pants"/> + <texture_picker label="Giacca" name="jacket"/> + <texture_picker label="Gonna" name="baked_skirt"/> + <texture_picker label="Gonna" name="skirt_texture"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_beacons.xml b/indra/newview/skins/default/xui/it/floater_beacons.xml index 5588d0a0a33dca63fc4cbc369f5dc1a93a109c45..035b073729b5882119f990529ac5d2d77ed82571 100644 --- a/indra/newview/skins/default/xui/it/floater_beacons.xml +++ b/indra/newview/skins/default/xui/it/floater_beacons.xml @@ -1,15 +1,15 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="beacons" title="Segnali luminosi"> - <panel name="beacons_panel"> - <check_box label="Oggetti scriptati con solo 'tocca' abilitato" name="touch_only"/> - <check_box label="Oggetti scriptati" name="scripted"/> - <check_box label="Oggetti fisici" name="physical"/> - <check_box label="Sorgenti di suoni" name="sounds"/> - <check_box label="Sorgenti di particelle" name="particles"/> - <check_box label="Visualizza l'evidenziato" name="highlights"/> - <check_box label="Visualizza segnali" name="beacons"/> - <text name="beacon_width_label"> - Ampiezza segnali: - </text> - </panel> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="beacons" title="Segnali luminosi"> + <panel name="beacons_panel"> + <check_box label="Oggetti scriptati con solo 'tocca' abilitato" name="touch_only"/> + <check_box label="Oggetti scriptati" name="scripted"/> + <check_box label="Oggetti fisici" name="physical"/> + <check_box label="Sorgenti di suoni" name="sounds"/> + <check_box label="Sorgenti di particelle" name="particles"/> + <check_box label="Visualizza l'evidenziato" name="highlights"/> + <check_box label="Visualizza segnali" name="beacons"/> + <text name="beacon_width_label"> + Ampiezza segnali: + </text> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_build_options.xml b/indra/newview/skins/default/xui/it/floater_build_options.xml index fe5e23f832cff9e2926f93bd2b385e3dda783026..340d70851cc96fb737c86323b36643aec662d61e 100644 --- a/indra/newview/skins/default/xui/it/floater_build_options.xml +++ b/indra/newview/skins/default/xui/it/floater_build_options.xml @@ -1,8 +1,8 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="build options floater" title="Opzioni della griglia"> - <spinner label="Unità di misura della griglia (metri)" name="GridResolution"/> - <spinner label="Estensione della griglia (metri)" name="GridDrawSize"/> - <check_box label="Abilita sotto-unità di movimento" name="GridSubUnit"/> - <check_box label="Mostra piani d'intersezione" name="GridCrossSection"/> - <slider label="Trasparenza della griglia" name="GridOpacity"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="build options floater" title="Opzioni della griglia"> + <spinner label="Unità di misura della griglia (metri)" name="GridResolution"/> + <spinner label="Estensione della griglia (metri)" name="GridDrawSize"/> + <check_box label="Abilita sotto-unità di movimento" name="GridSubUnit"/> + <check_box label="Mostra piani d'intersezione" name="GridCrossSection"/> + <slider label="Trasparenza della griglia" name="GridOpacity"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_bulk_perms.xml b/indra/newview/skins/default/xui/it/floater_bulk_perms.xml new file mode 100644 index 0000000000000000000000000000000000000000..7ca57f34b3230b3ffddb4132b839e15776efa059 --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_bulk_perms.xml @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floaterbulkperms" title="Modifica in massa i permessi del contenuto"> + <text name="applyto"> + Tipi di contenuto + </text> + <check_box label="Animazioni" name="check_animation"/> + <check_box label="Parti del corpo" name="check_bodypart"/> + <check_box label="Abiti" name="check_clothing"/> + <check_box label="Gesture" name="check_gesture"/> + <check_box label="Landmark" name="check_landmark"/> + <check_box label="Notecard" name="check_notecard"/> + <check_box label="Oggetti" name="check_object"/> + <check_box label="Script" name="check_script"/> + <check_box label="Suoni" name="check_sound"/> + <check_box label="Texture" name="check_texture"/> + <button label="Spunta tutti" label_selected="Tutti" name="check_all"/> + <button label="Togli la spunta a tutti" label_selected="Nessuno" name="check_none"/> + <text name="newperms"> + Nuovi permessi + </text> + <check_box label="Condividi con il gruppo" name="share_with_group"/> + <check_box label="Permetti a tutti di copiare" name="everyone_copy"/> + <text name="NextOwnerLabel"> + Il prossimo proprietario può: + </text> + <check_box label="Modificare" name="next_owner_modify"/> + <check_box label="Copiare" name="next_owner_copy"/> + <check_box label="Rivendere/Regalare" name="next_owner_transfer"/> + <button label="Aiuto" name="help"/> + <button label="Applica" name="apply"/> + <button label="Chiudi" name="close"/> + <string name="nothing_to_modify_text"> + La selezione non contiene nessun contenuto modificabile. + </string> + <string name="status_text"> + Impostazione permessi su [NAME] + </string> + <string name="start_text"> + Avvio richiesta di modifica dei permessi... + </string> + <string name="done_text"> + Conclusa richiesta di modifica dei permessi. + </string> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_bumps.xml b/indra/newview/skins/default/xui/it/floater_bumps.xml index 87be70ec37f232e23bf9a0cde5d0e255861cc2b7..d9ce29fa08a07fac025144e178b6e08f5ed190a2 100644 --- a/indra/newview/skins/default/xui/it/floater_bumps.xml +++ b/indra/newview/skins/default/xui/it/floater_bumps.xml @@ -1,21 +1,21 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_bumps" title="Collisioni, spinte e colpi"> - <string name="none_detected"> - Nessuno rilevato - </string> - <string name="bump"> - [TIME] [FIRST] [LAST] ti ha urtato - </string> - <string name="llpushobject"> - [TIME] [FIRST] [LAST] ti ha spinto per mezzo di uno script - </string> - <string name="selected_object_collide"> - [TIME] [FIRST] [LAST] ti ha colpito con un oggetto - </string> - <string name="scripted_object_collide"> - [TIME] [FIRST] [LAST] ti ha colpito con un oggetto scriptato - </string> - <string name="physical_object_collide"> - [TIME] [FIRST] [LAST] ti ha colpito con un oggetto fisico - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_bumps" title="Collisioni, spinte e colpi"> + <string name="none_detected"> + Nessuno rilevato + </string> + <string name="bump"> + [TIME] [FIRST] [LAST] ti ha urtato + </string> + <string name="llpushobject"> + [TIME] [FIRST] [LAST] ti ha spinto per mezzo di uno script + </string> + <string name="selected_object_collide"> + [TIME] [FIRST] [LAST] ti ha colpito con un oggetto + </string> + <string name="scripted_object_collide"> + [TIME] [FIRST] [LAST] ti ha colpito con un oggetto scriptato + </string> + <string name="physical_object_collide"> + [TIME] [FIRST] [LAST] ti ha colpito con un oggetto fisico + </string> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_buy_contents.xml b/indra/newview/skins/default/xui/it/floater_buy_contents.xml index 2aca4a57e491c0f502167d7ee9a920fff9eafd04..dce10d54937e67a00180bcff50fde242fe3948fd 100644 --- a/indra/newview/skins/default/xui/it/floater_buy_contents.xml +++ b/indra/newview/skins/default/xui/it/floater_buy_contents.xml @@ -1,21 +1,21 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_buy_contents" title="Compra i contenuti"> - <text name="contains_text"> - [NAME] contiene: - </text> - <text name="buy_text"> - Compra per [AMOUNT]L$ da [NAME]? - </text> - <button label="Annulla" label_selected="Annulla" name="cancel_btn"/> - <button label="Compra" label_selected="Compra" name="buy_btn"/> - <check_box label="Indossa adesso l'indumento" name="wear_check"/> - <string name="no_copy_text"> - (non copiabile) - </string> - <string name="no_modify_text"> - (non modificabile) - </string> - <string name="no_transfer_text"> - (non traferibile) - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_buy_contents" title="Compra i contenuti"> + <text name="contains_text"> + [NAME] contiene: + </text> + <text name="buy_text"> + Compra per [AMOUNT]L$ da [NAME]? + </text> + <button label="Annulla" label_selected="Annulla" name="cancel_btn"/> + <button label="Compra" label_selected="Compra" name="buy_btn"/> + <check_box label="Indossa adesso l'indumento" name="wear_check"/> + <string name="no_copy_text"> + (non copiabile) + </string> + <string name="no_modify_text"> + (non modificabile) + </string> + <string name="no_transfer_text"> + (non traferibile) + </string> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_buy_currency.xml b/indra/newview/skins/default/xui/it/floater_buy_currency.xml index ad92a8a478189027eb079a9cff62a208fa33238d..aa840b4de4893e8f6005c2cb6623bd4772fb7d98 100644 --- a/indra/newview/skins/default/xui/it/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/it/floater_buy_currency.xml @@ -1,66 +1,69 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="buy currency" title="Acquista valuta"> - <text name="info_buying"> - Acquistando valuta: - </text> - <text name="info_cannot_buy"> - Non è possibile comprare ora - </text> - <text name="info_need_more"> - Hai bisogno di acquistare ulteriore contante: - </text> - <text name="error_message"> - Qualcosa non è andato a buon fine: - </text> - <button label="Vai al sito web" name="error_web"/> - <text name="contacting"> - Sto contattando il LindeX... - </text> - <text name="buy_action_unknown"> - Compra L$ sul mercato delle valute LindeX - </text> - <text name="buy_action"> - [NAME] [PRICE]L$ - </text> - <text name="currency_action"> - Compra L$ - </text> - <line_editor name="currency_amt"> - 1234 - </line_editor> - <text name="currency_est"> - per circa [USD]US$ - </text> - <text name="getting_data"> - Dati in ricezione... - </text> - <text name="balance_label"> - Attualmente possiedi - </text> - <text name="balance_amount"> - [AMT]L$ - </text> - <text name="buying_label"> - Stai comprando - </text> - <text name="buying_amount"> - [AMT]L$ - </text> - <text name="total_label"> - Il tuo saldo sarà - </text> - <text name="total_amount"> - [AMT]L$ - </text> - <text name="purchase_warning_repurchase"> - Confermando questa operazione si acquisterà solo la valuta. Per acquistare il bene, dovrai riprovare l'operazione nuovamente. - </text> - <text name="purchase_warning_notenough"> - Non stai comprando abbastanza denaro. Devi aumentare l'importo da acquistare. - </text> - <button label="Cancella" name="cancel_btn"/> - <button label="Acquista" name="buy_btn"/> - <string name="buy_currency"> - Compra [LINDENS] L$ per circa [USD] US$ - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="buy currency" title="Acquista valuta"> + <text name="info_buying"> + Acquistando valuta: + </text> + <text name="info_cannot_buy" left="5" right="-5"> + Non è possibile comprare ora + </text> + <text name="info_need_more" left="5" right="-5" font="SansSerifLarge"> + Hai bisogno di acquistare ulteriore contante: + </text> + <text name="error_message"> + Qualcosa non è andato a buon fine. + </text> + <button label="Vai al sito web" name="error_web"/> + <text name="contacting"> + Sto contattando il LindeX... + </text> + <text name="buy_action_unknown"> + Compra L$ sul mercato delle valute LindeX + </text> + <text name="buy_action"> + [NAME] [PRICE]L$ + </text> + <text name="currency_action"> + Compra + </text> + <line_editor name="currency_amt"> + 1234 + </line_editor> + <text name="currency_est"> + L$ per circa [USD]US$ + </text> + <text name="getting_data"> + Dati in ricezione... + </text> + <text name="balance_label"> + Attualmente possiedi + </text> + <text name="balance_amount"> + [AMT]L$ + </text> + <text name="buying_label"> + Stai comprando + </text> + <text name="buying_amount"> + [AMT]L$ + </text> + <text name="total_label"> + Il tuo saldo sarà + </text> + <text name="total_amount"> + [AMT]L$ + </text> + <text name="purchase_warning_repurchase" height="48" bottom_delta="-64" right="-10"> + Confermando questa operazione si acquisterà solo +la valuta. Per acquistare il bene, dovrai riprovare +l'operazione nuovamente. + </text> + <text name="purchase_warning_notenough" bottom_delta="16"> + Non stai comprando abbastanza denaro. +Devi aumentare l'importo da acquistare. + </text> + <button label="Cancella" name="cancel_btn"/> + <button label="Acquista" name="buy_btn"/> + <string name="buy_currency"> + Compra [LINDENS] L$ per circa [USD] US$ + </string> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_buy_land.xml b/indra/newview/skins/default/xui/it/floater_buy_land.xml index b85a776238968ae5f68b13864e31dd3e7703c64a..d6036c19dd6084cf83d02b51304d31c88010cf76 100644 --- a/indra/newview/skins/default/xui/it/floater_buy_land.xml +++ b/indra/newview/skins/default/xui/it/floater_buy_land.xml @@ -1,222 +1,238 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="buy land" title="Compra terra"> - <text name="region_name_label"> - Regione: - </text> - <text name="region_name_text"> - (sconosciuto) - </text> - <text name="estate_name_label"> - Proprietà : - </text> - <text name="estate_name_text"> - (sconosciuto) - </text> - <text name="estate_owner_label"> - Proprietario della regione - </text> - <text name="estate_owner_text"> - (sconosciuto) - </text> - <text name="resellable_changeable_label"> - Terra acquistata in questa regione: - </text> - <text name="resellable_clause"> - La terra acquistata in questa regione può o non può essere rivenduta - </text> - <text name="changeable_clause"> - Può o non può essere unita o suddivisa. - </text> - <text name="covenant_text"> - Devi accettare il regolamento della regione: - </text> - <text_editor name="covenant_editor"> - Attendi... - </text_editor> - <check_box label="Accetto il regolamento succitato." name="agree_covenant"/> - <text name="info_parcel_label"> - Terreno: - </text> - <text name="info_parcel"> - Scotopteryx 138,204 - </text> - <text name="info_size_label"> - Grandezza: - </text> - <text name="info_size"> - 1024 sq. m. - </text> - <text name="info_price_label"> - Prezzo: - </text> - <text name="info_price"> - 1500 L$, oggetti inclusi - </text> - <text name="info_action"> - Comprando questa terra: - </text> - <text name="error_message"> - Qualcosa non è andato a buon fine. - </text> - <button label="Vai al sito" name="error_web"/> - <text name="account_action"> - Trasforma il tuo avatar in un membro premium. - </text> - <text name="account_reason"> - Solo i membri premium possono possedere terra. - </text> - <combo_box name="account_level"> - <combo_box.item name="US$9.95/month,billedmonthly" label="9.95 US$/mese, addebitati mensilmente"/> - <combo_box.item name="US$7.50/month,billedquarterly" label="7.50 US$/mese, addebitati ogni quadrimestre"/> - <combo_box.item name="US$6.00/month,billedannually" label="6.00 US$/mese, addebitati annualmente"/> - </combo_box> - <text name="land_use_action"> - Aumenta il tasso di pagamento mensile delle tasse d'uso della terra a 40 US$/mese. - </text> - <text name="land_use_reason"> - Possiedi 1.309 metri quadri di terra. -Questo appezzamento è di 512 metri quadri. - </text> - <text name="purchase_action"> - Paga il residente Joe 4000 L$ per la terra - </text> - <text name="currency_reason"> - Possiedi 2.100 L$. - </text> - <text name="currency_action"> - Compra ulteriori L$ - </text> - <line_editor name="currency_amt"> - 1000 - </line_editor> - <text name="currency_est"> - per circa [AMOUNT2] US$ - </text> - <text name="currency_balance"> - Possiedi 2.100 L$. - </text> - <check_box label="Rimuovi [AMOUNT] metri quadri di contribuzione dal gruppo." name="remove_contribution"/> - <button label="Compra" name="buy_btn"/> - <button label="Annulla" name="cancel_btn"/> - <string name="can_resell"> - Può essere rivenduta. - </string> - <string name="can_not_resell"> - Può non essere rivenduta. - </string> - <string name="can_change"> - Può essere unita o suddivisa. - </string> - <string name="can_not_change"> - Non può essere unita o suddivisa. - </string> - <string name="cant_buy_for_group"> - Non hai il permesso di comprare terra per il tuo gruppo attivo. - </string> - <string name="no_land_selected"> - Nessuna terra selezionata. - </string> - <string name="multiple_parcels_selected"> - Hai selezionato appezzamenti diversi. -Prova a selezionare un'area più piccola. - </string> - <string name="no_permission"> - Non hai il permesso di comprare terra per il tuo gruppo attivo. - </string> - <string name="parcel_not_for_sale"> - Il terreno selezionato non è in vendita. - </string> - <string name="group_already_owns"> - Il gruppo possiede già il terreno. - </string> - <string name="you_already_own"> - Possiedi già il terreno. - </string> - <string name="set_to_sell_to_other"> - Il terreno selezionato è già impostato per la vendita ad un altro gruppo. - </string> - <string name="no_public_land"> - L'area selezionata non è pubblica. - </string> - <string name="not_owned_by_you"> - Hai selezionato una terra posseduta da un altro utente. -Prova a selezionare un'area più piccola. - </string> - <string name="processing"> - Stiamo elaborando il tuo acquisto... - -(Potrebbe volerci un minuto o due.) - </string> - <string name="fetching_error"> - C'e stato un errore mentre si stavano ottenendo le informazioni sull'acquisto della terra. - </string> - <string name="buying_will"> - Comprando questa terra: - </string> - <string name="buying_for_group"> - Comprando questa terra per il gruppo: - </string> - <string name="cannot_buy_now"> - Non puoi comprare ora: - </string> - <string name="not_for_sale"> - Non in vendita: - </string> - <string name="none_needed"> - nessuno necessario - </string> - <string name="must_upgrade"> - Il tuo tipo di account ha bisogno di un upgrade per possedere terra. - </string> - <string name="cant_own_land"> - Il tuo account può possedere terra. - </string> - <string name="land_holdings"> - Possiedi [BUYER] di metri quadri di terra. - </string> - <string name="pay_to_for_land"> - Paga [AMOUNT] L$ a [SELLER] per questa terra - </string> - <string name="buy_for_US"> - Compra [AMOUNT] L$ per appross. [AMOUNT2] US$, - </string> - <string name="parcel_meters"> - Questo terreno è di [AMOUNT] metri quadri. - </string> - <string name="premium_land"> - Questa terra è premium, e sarà  addebitata come [AMOUNT] metri quadri. - </string> - <string name="discounted_land"> - Questa terra è scontata, e sarà  addebitata come [AMOUNT] metri quadri. - </string> - <string name="meters_supports_object"> - [AMOUNT] metri quadri -supporta [AMOUNT2] oggetti - </string> - <string name="sold_with_objects"> - venduta con oggetti - </string> - <string name="insufficient_land_credits"> - Il gruppo [GROUP] avrà bisogno di contribuzioni anticipate, mediante crediti d'uso terriero, -sufficienti a coprire l'area del terreno prima che l'acquisto -sia completato. - </string> - <string name="have_enough_lindens"> - Hai [AMOUNT] L$, che sono sufficienti per comprare questa terra. - </string> - <string name="not_enough_lindens"> - Hai solo [AMOUNT] L$, ed hai bisogno di altri [AMOUNT2] L$. - </string> - <string name="balance_left"> - Dopo l'acquisto, ti rimarranno [AMOUNT] L$. - </string> - <string name="balance_needed"> - Hai bisogno di acquistare almeno [AMOUNT] L$ per comprare questo terreno. - </string> - <string name="no_parcel_selected"> - (nessun terreno selezionato) - </string> - <string name="buy_currency"> - Compra [LINDENS] L$ per appross. [USD] US$ - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="buy land" title="Compra terra"> + <text name="region_name_label"> + Regione: + </text> + <text name="region_name_text"> + (sconosciuto) + </text> + <text name="region_type_label"> + Tipo: + </text> + <text name="region_type_text"> + (sconosciuto) + </text> + <text name="estate_name_label"> + Proprietà : + </text> + <text name="estate_name_text"> + (sconosciuto) + </text> + <text name="estate_owner_label" width="120" right="575"> + Proprietario della regione: + </text> + <text name="estate_owner_text" left="580" width="155"> + (sconosciuto) + </text> + <text name="resellable_changeable_label"> + Terra acquistata in questa regione: + </text> + <text name="resellable_clause"> + Può o non può essere rivenduta. + </text> + <text name="changeable_clause"> + Può o non può essere unita o suddivisa. + </text> + <text name="covenant_text"> + Devi accettare il regolamento della regione: + </text> + <text left="470" name="covenant_timestamp_text"/> + <text_editor name="covenant_editor"> + Attendi... + </text_editor> + <check_box label="Accetto il regolamento succitato." name="agree_covenant"/> + <text name="info_parcel_label"> + Terreno: + </text> + <text name="info_parcel"> + Scotopteryx 138,204 + </text> + <text name="info_size_label"> + Grandezza: + </text> + <text name="info_size"> + 1024 m² + </text> + <text name="info_price_label"> + Prezzo: + </text> + <text name="info_price"> + 1500 L$ +(1.1 L$/m²) +venduta con gli oggetti + </text> + <text name="info_action"> + Comprando questa terra: + </text> + <text name="error_message"> + Qualcosa non è andato a buon fine. + </text> + <button label="Vai al sito" name="error_web"/> + <text name="account_action"> + Trasforma il tuo avatar in un membro premium. + </text> + <text name="account_reason"> + Solo i membri premium possono possedere terra. + </text> + <combo_box name="account_level"> + <combo_box.item name="US$9.95/month,billedmonthly" label="9.95 US$/mese, addebitati mensilmente"/> + <combo_box.item name="US$7.50/month,billedquarterly" label="7.50 US$/mese, addebitati ogni quadrimestre"/> + <combo_box.item name="US$6.00/month,billedannually" label="6.00 US$/mese, addebitati annualmente"/> + </combo_box> + <text name="land_use_action"> + Aumenta il tasso di pagamento mensile delle tasse d'uso della terra a 40 US$/mese. + </text> + <text name="land_use_reason"> + Possiedi 1309 m² di terra. Questa porzione è 512 m² di terra. + </text> + <text name="purchase_action"> + Paga il residente Joe 4000 L$ per la terra + </text> + <text name="currency_reason"> + Possiedi 2.100 L$. + </text> + <text name="currency_action" width="106"> + Compra ulteriori L$ + </text> + <line_editor name="currency_amt" left="174" width="80"> + 1000 + </line_editor> + <text name="currency_est"> + per circa [AMOUNT2] US$ + </text> + <text name="currency_balance"> + Possiedi 2.100 L$. + </text> + <check_box label="Rimuovi [AMOUNT] metri quadri di contribuzione dal gruppo." name="remove_contribution"/> + <button label="Compra" name="buy_btn"/> + <button label="Annulla" name="cancel_btn"/> + <string name="can_resell"> + Può essere rivenduta. + </string> + <string name="can_not_resell"> + Può non essere rivenduta. + </string> + <string name="can_change"> + Può essere unita o suddivisa. + </string> + <string name="can_not_change"> + Non può essere unita o suddivisa. + </string> + <string name="cant_buy_for_group"> + Non hai il permesso di comprare terra per il tuo gruppo attivo. + </string> + <string name="no_land_selected"> + Nessuna terra selezionata. + </string> + <string name="multiple_parcels_selected"> + Hai selezionato appezzamenti diversi. +Prova a selezionare un'area più piccola. + </string> + <string name="no_permission"> + Non hai il permesso di comprare terra per il tuo gruppo attivo. + </string> + <string name="parcel_not_for_sale"> + Il terreno selezionato non è in vendita. + </string> + <string name="group_already_owns"> + Il gruppo possiede già il terreno. + </string> + <string name="you_already_own"> + Possiedi già il terreno. + </string> + <string name="set_to_sell_to_other"> + Il terreno selezionato è già impostato per la vendita ad un altro gruppo. + </string> + <string name="no_public_land"> + L'area selezionata non è pubblica. + </string> + <string name="not_owned_by_you"> + Hai selezionato una terra posseduta da un altro utente. +Prova a selezionare un'area più piccola. + </string> + <string name="processing"> + Stiamo elaborando il tuo acquisto... + +(Potrebbe volerci un minuto o due.) + </string> + <string name="fetching_error"> + C'e stato un errore mentre si stavano ottenendo le informazioni sull'acquisto della terra. + </string> + <string name="buying_will"> + Comprando questa terra: + </string> + <string name="buying_for_group"> + Comprare la terra per il gruppo farà : + </string> + <string name="cannot_buy_now"> + Non puoi comprare ora: + </string> + <string name="not_for_sale"> + Non in vendita: + </string> + <string name="none_needed"> + nessuno necessario + </string> + <string name="must_upgrade"> + Il tuo tipo di account ha bisogno di un upgrade per possedere terra. + </string> + <string name="cant_own_land"> + Il tuo account può possedere terra. + </string> + <string name="land_holdings"> + Possiedi [BUYER] di metri quadri di terra. + </string> + <string name="pay_to_for_land"> + Paga [AMOUNT] L$ a [SELLER] per questa terra + </string> + <string name="buy_for_US"> + Comprare [AMOUNT] L$ per circa [AMOUNT2] US$, + </string> + <string name="parcel_meters"> + Questo terreno è di [AMOUNT] metri quadri. + </string> + <string name="premium_land"> + Questa terra è premium, e sarà  addebitata come [AMOUNT] metri quadri. + </string> + <string name="discounted_land"> + Questa terra è scontata, e sarà  addebitata come [AMOUNT] metri quadri. + </string> + <string name="meters_supports_object"> + [AMOUNT] metri quadri +supporta [AMOUNT2] oggetti + </string> + <string name="sold_with_objects"> + venduta con oggetti + </string> + <string name="sold_without_objects"> + Oggetti non inclusi + </string> + <string name="info_price_string"> + [PRICE] L$ +([PRICE_PER_SQM] L$/m²) +[SOLD_WITH_OBJECTS] + </string> + <string name="insufficient_land_credits"> + Il gruppo [GROUP] avrà bisogno di contribuzioni anticipate, mediante crediti d'uso terriero, +sufficienti a coprire l'area del terreno prima che l'acquisto +sia completato. + </string> + <string name="have_enough_lindens"> + Hai [AMOUNT] L$, che sono sufficienti per comprare questa terra. + </string> + <string name="not_enough_lindens"> + Hai solo [AMOUNT] L$, ed hai bisogno di altri [AMOUNT2] L$. + </string> + <string name="balance_left"> + Dopo l'acquisto, ti rimarranno [AMOUNT] L$. + </string> + <string name="balance_needed"> + Hai bisogno di acquistare almeno [AMOUNT] L$ per comprare questo terreno. + </string> + <string name="no_parcel_selected"> + (nessun terreno selezionato) + </string> + <string name="buy_currency"> + Compra [LINDENS] L$ per appross. [USD] US$ + </string> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_buy_object.xml b/indra/newview/skins/default/xui/it/floater_buy_object.xml index c41581a52919ed0d7d369c9a5a277c671e8fb87e..90ff84a89c774a1b2942ac0cbbc3404d625f9a0b 100644 --- a/indra/newview/skins/default/xui/it/floater_buy_object.xml +++ b/indra/newview/skins/default/xui/it/floater_buy_object.xml @@ -1,26 +1,26 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="contents" title="Compra una copia dell'oggetto"> - <text name="contents_text"> - e dei suoi contenuti: - </text> - <text name="buy_text"> - Compra per [AMOUNT]L$ da [NAME]? - </text> - <button label="Annulla" label_selected="Annulla" name="cancel_btn"/> - <button label="Compra" label_selected="Compra" name="buy_btn"/> - <string name="title_buy_text"> - Compra - </string> - <string name="title_buy_copy_text"> - Compra un copia di - </string> - <string name="no_copy_text"> - (non copiabile) - </string> - <string name="no_modify_text"> - (non modificabile) - </string> - <string name="no_transfer_text"> - (non trasferibile) - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="contents" title="Compra una copia dell'oggetto"> + <text name="contents_text"> + e dei suoi contenuti: + </text> + <text name="buy_text"> + Compra per [AMOUNT]L$ da [NAME]? + </text> + <button label="Annulla" label_selected="Annulla" name="cancel_btn"/> + <button label="Compra" label_selected="Compra" name="buy_btn"/> + <string name="title_buy_text"> + Compra + </string> + <string name="title_buy_copy_text"> + Compra un copia di + </string> + <string name="no_copy_text"> + (non copiabile) + </string> + <string name="no_modify_text"> + (non modificabile) + </string> + <string name="no_transfer_text"> + (non trasferibile) + </string> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_camera.xml b/indra/newview/skins/default/xui/it/floater_camera.xml index fd2aa9bcf674fe2ad76d75c8d77404331aeb4a5a..9655ed2211a6c302bdf3aab7d84cedf633d00f74 100644 --- a/indra/newview/skins/default/xui/it/floater_camera.xml +++ b/indra/newview/skins/default/xui/it/floater_camera.xml @@ -1,12 +1,12 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="move floater" title=""> - <string name="rotate_tooltip"> - Ruota la telecamera Intorno all'Inquadratura - </string> - <string name="zoom_tooltip"> - Avvicina la telecamera nell'inquadratura - </string> - <string name="move_tooltip"> - Muovi la telecamera su e giù e a sinistra e destra - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="move floater" title=""> + <string name="rotate_tooltip"> + Ruota la telecamera Intorno all'Inquadratura + </string> + <string name="zoom_tooltip"> + Avvicina la telecamera nell'inquadratura + </string> + <string name="move_tooltip"> + Muovi la telecamera su e giù e a sinistra e destra + </string> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_choose_group.xml b/indra/newview/skins/default/xui/it/floater_choose_group.xml index b6fbda411b3459ddaad4488375bef007504dd914..3b5fc79bd8785ba182d4295355cdcdce47a8ffcb 100644 --- a/indra/newview/skins/default/xui/it/floater_choose_group.xml +++ b/indra/newview/skins/default/xui/it/floater_choose_group.xml @@ -1,8 +1,8 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="groups" title="Gruppi"> - <text name="groupdesc"> - Scegli un gruppo: - </text> - <button label="OK" label_selected="OK" name="OK"/> - <button label="Annulla" label_selected="Annulla" name="Cancel"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="groups" title="Gruppi"> + <text name="groupdesc"> + Scegli un gruppo: + </text> + <button label="OK" label_selected="OK" name="OK"/> + <button label="Annulla" label_selected="Annulla" name="Cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_color_picker.xml b/indra/newview/skins/default/xui/it/floater_color_picker.xml index 14858182e98eafb67620aa782a8aa57117d75a2f..93188c29ac996976e0c16984a02953901f3a7ce5 100644 --- a/indra/newview/skins/default/xui/it/floater_color_picker.xml +++ b/indra/newview/skins/default/xui/it/floater_color_picker.xml @@ -1,30 +1,38 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="ColorPicker" title="Tavolozza colori"> - <text name="r_val_text"> - Rosso: - </text> - <text name="g_val_text"> - Verde: - </text> - <text name="b_val_text"> - Blu: - </text> - <text name="h_val_text"> - Tonalità : - </text> - <text name="s_val_text"> - Saturazione: - </text> - <text name="l_val_text"> - Luminosità : - </text> - <check_box label="Applica Immediatamente" name="apply_immediate"/> - <button label="Annulla" label_selected="Annulla" name="cancel_btn"/> - <button label="Seleziona" label_selected="Seleziona" name="select_btn"/> - <text name="Current color:"> - Colore attuale: - </text> - <text name="(Drag below to save.)"> - (Trascina qui sotto per salvare.) - </text> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="ColorPicker" title="Tavolozza colori"> + <text name="r_val_text"> + Rosso: + </text> + <spinner left="84" name="rspin" width="47"/> + <text name="g_val_text"> + Verde: + </text> + <spinner left="84" name="gspin" width="47"/> + <text name="b_val_text"> + Blu: + </text> + <spinner left="84" name="bspin" width="47"/> + <text name="h_val_text"> + Tonalità : + </text> + <spinner left="84" name="hspin" width="47"/> + <text name="s_val_text"> + Saturazione: + </text> + <spinner left="84" name="sspin" width="47"/> + <text name="l_val_text"> + Luminosità : + </text> + <spinner left="84" name="lspin" width="47"/> + <check_box label="Applica Immediatamente" name="apply_immediate"/> + <button left_delta="150" name="color_pipette" /> + <button left_delta="55" label="Annulla" label_selected="Annulla" name="cancel_btn"/> + <button label="Seleziona" label_selected="Seleziona" name="select_btn"/> + <text name="Current color:"> + Colore attuale: + </text> + <text name="(Drag below to save.)"> + (Trascina qui sotto + per salvare.) + </text> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_critical.xml b/indra/newview/skins/default/xui/it/floater_critical.xml index 5ce9ff4de1c87ad2a4370eae5f15fbf58004639f..82850b0ada0ea1fa4c897b714e0c6b5331bab3b3 100644 --- a/indra/newview/skins/default/xui/it/floater_critical.xml +++ b/indra/newview/skins/default/xui/it/floater_critical.xml @@ -1,11 +1,11 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="modal container" title=""> - <button label="Continua" label_selected="Continua" name="Continue"/> - <button label="Annulla" label_selected="Annulla" name="Cancel"/> - <text name="tos_heading"> - Per favore leggi attentamente il seguente messaggio. - </text> - <text_editor name="tos_text"> - TOS_TEXT - </text_editor> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="modal container" title=""> + <button label="Continua" label_selected="Continua" name="Continue"/> + <button label="Annulla" label_selected="Annulla" name="Cancel"/> + <text name="tos_heading"> + Per favore leggi attentamente il seguente messaggio. + </text> + <text_editor name="tos_text"> + TOS_TEXT + </text_editor> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_customize.xml b/indra/newview/skins/default/xui/it/floater_customize.xml index 5af8373d0c08d1a26f729f8c84ff9d4bcee7d09e..70fc27b3bb9cf5236f4c6ebe17c1f7789a1b11f6 100644 --- a/indra/newview/skins/default/xui/it/floater_customize.xml +++ b/indra/newview/skins/default/xui/it/floater_customize.xml @@ -1,427 +1,468 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater customize" title="Aspetto fisico"> - <tab_container name="customize tab container"> - <panel label="Parti del corpo" name="body_parts_placeholder"/> - <panel label="Forma del corpo" name="Shape"> - <button label="Rimuovi le modifiche" label_selected="Rimuovi le modifiche" name="Revert"/> - <button label="Corpo" label_selected="Corpo" name="Body"/> - <button label="Testa" label_selected="Testa" name="Head"/> - <button label="Occhi" label_selected="Occhi" name="Eyes"/> - <button label="Orecchie" label_selected="Orecchie" name="Ears"/> - <button label="Naso" label_selected="Naso" name="Nose"/> - <button label="Bocca" label_selected="Bocca" name="Mouth"/> - <button label="Mento" label_selected="Mento" name="Chin"/> - <button label="Torso" label_selected="Torso" name="Torso"/> - <button label="Gambe" label_selected="Gambe" name="Legs"/> - <radio_group name="sex radio"> - <radio_item name="radio"> - Femmina - </radio_item> - <radio_item name="radio2"> - Maschio - </radio_item> - </radio_group> - <button label="Casuale" label_selected="Casuale" name="Randomize"/> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: immodificabile - </text> - <text name="title_loading"> - [DESC]: in caricamento... - </text> - <text name="title_not_worn"> - [DESC]: non indossato - </text> - <text name="path"> - Ubicato in [PATH] - </text> - <text name="not worn instructions"> - Indossa una nuova Forma del Corpo trascinandone una dall'inventario sul tuo avatar. In alternativa, puoi crearne una nuova ed indossarla. - </text> - <text name="no modify instructions"> - Non hai il permesso di modificare questo indumento. - </text> - <button label="Crea una nuova forma del corpo" label_selected="Crea una nuova forma del corpo" name="Create New"/> - <button label="Togli" label_selected="Togli" name="Take Off"/> - <button label="Salva" label_selected="Salva" name="Save"/> - <button label="Salva come" label_selected="Salva come" name="Save As"/> - </panel> - <panel label="Pelle" name="Skin"> - <button label="Colore della pelle" label_selected="Colore della pelle" name="Skin Color"/> - <button label="Dettagli della faccia" label_selected="Dettagli della faccia" name="Face Detail"/> - <button label="Trucco" label_selected="Trucco" name="Makeup"/> - <button label="Dettagli del corpo" label_selected="Dettagli del corpo" name="Body Detail"/> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: immodificabile - </text> - <text name="title_loading"> - [DESC]: in caricamento... - </text> - <text name="title_not_worn"> - [DESC]: non indossata - </text> - <text name="path"> - Ubicata in [PATH] - </text> - <text name="not worn instructions"> - Indossa una nuova pelle trascinandola dall'inventario al tuo avatar. In alternativa, puoi crearne una nuova da zero ed indossarla. - </text> - <text name="no modify instructions"> - Non hai il permesso di modificare questo indumento. - </text> - <texture_picker label="Tatuaggi della testa" name="Head Tattoos" tool_tip="Clicca per scegliere un'immagine"/> - <texture_picker label="Tatuaggi superiori" name="Upper Tattoos" tool_tip="Clicca per scegliere un'immagine"/> - <texture_picker label="Tatuaggi inferiori" name="Lower Tattoos" tool_tip="Clicca per scegliere un'immagine"/> - <button label="Randomizza" label_selected="Randomizza" name="Randomize"/> - <button label="Crea una nuova pelle" label_selected="Crea una nuova pelle" name="Create New"/> - <button label="Togli" label_selected="Togli" name="Take Off"/> - <button label="Salva" label_selected="Salva" name="Save"/> - <button label="Salva come" label_selected="Salva come" name="Save As"/> - <button label="Rimuovi l'ultima modifica" label_selected="Rimuovi l'ultima modifica" name="Revert"/> - </panel> - <panel label="Capelli" name="Hair"> - <button label="Capelli" label_selected="Colore" name="Color"/> - <button label="Stile" label_selected="Stile" name="Style"/> - <button label="Sopracciglia" label_selected="Sopracciglia" name="Eyebrows"/> - <button label="Facciale" label_selected="Facciale" name="Facial"/> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: immodificabili - </text> - <text name="title_loading"> - [DESC]: in caricamento... - </text> - <text name="title_not_worn"> - [DESC]: non indossati - </text> - <text name="path"> - Ubicati in [PATH] - </text> - <text name="not worn instructions"> - Indossa dei nuovi capelli trascinandoli dall'inventario al tuo avatar. In alternativa, puoi crearne di nuovi da zero ed indossarli. - </text> - <text name="no modify instructions"> - Non hai il permesso per modificare questo indumento. - </text> - <texture_picker label="Texture" name="Texture" tool_tip="Clicca per scegliere un'immagine"/> - <button label="Randomizza" label_selected="Randomizza" name="Randomize"/> - <button label="Crea nuovi capelli" label_selected="Crea nuovi capelli" name="Create New"/> - <button label="Togli" label_selected="Togli" name="Take Off"/> - <button label="Salva" label_selected="Salva" name="Save"/> - <button label="Salva come" label_selected="Salva come" name="Save As"/> - <button label="Rimuovi l'ultima modifica" label_selected="Rimuovi l'ultima modifica" name="Revert"/> - </panel> - <panel label="Occhi" name="Eyes"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: immodificabili - </text> - <text name="title_loading"> - [DESC]: in caricamento... - </text> - <text name="title_not_worn"> - [DESC]: non indossati - </text> - <text name="path"> - Ubicati in [PATH] - </text> - <text name="not worn instructions"> - Indossa dei nuovi occhi trascinandoli dall'inventario al tuo avatar. In alternativa, puoi crearne di nuovi da zero ed indossarli. - </text> - <text name="no modify instructions"> - Non hai il permesso di modificare questo indumento. - </text> - <texture_picker label="Iride" name="Iris" tool_tip="Clicca per scegliere un'immagine"/> - <button label="Randomizza" label_selected="Randomizza" name="Randomize"/> - <button label="Crea nuovi occhi" label_selected="Crea nuovi occhi" name="Create New"/> - <button label="Togli" label_selected="Togli" name="Take Off"/> - <button label="Salva" label_selected="Salva" name="Save"/> - <button label="Salva come" label_selected="Salva come" name="Save As"/> - <button label="Rimuovi l'ultima modifica" label_selected="Rimuovi l'ultima modifica" name="Revert"/> - </panel> - <panel label="Vestiti" name="clothes_placeholder"/> - <panel label="Camicia" name="Shirt"> - <texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere un'immagine"/> - <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per scegliere un colore"/> - <button label="Crea una nuova maglietta" label_selected="Crea una nuova maglietta" name="Create New"/> - <button label="Togli" label_selected="Togli" name="Take Off"/> - <button label="Salva" label_selected="Salva" name="Save"/> - <button label="Salva come" label_selected="Salva come" name="Save As"/> - <button label="Rimuovi l'ultima modifica" label_selected="Rimuovi l'ultima modifica" name="Revert"/> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: immodificabile - </text> - <text name="title_loading"> - [DESC]: in caricamento... - </text> - <text name="title_not_worn"> - [DESC]: non indossata - </text> - <text name="path"> - Ubicata in [PATH] - </text> - <text name="not worn instructions"> - Indossa una nuova maglietta trascinandola dall'inventario al tuo avatar. In alternativa, puoi crearne una nuova da zero ed indossarla. - </text> - <text name="no modify instructions"> - Non hai il permesso di modificare questo indumento. - </text> - </panel> - <panel label="Pantaloni" name="Pants"> - <texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere un'immagine"/> - <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per scegliere un colore"/> - <button label="Crea nuovi pantaloni" label_selected="Crea nuovi pantaloni" name="Create New"/> - <button label="Togli" label_selected="Togli" name="Take Off"/> - <button label="Salva" label_selected="Salva" name="Save"/> - <button label="Salva come" label_selected="Salva come" name="Save As"/> - <button label="Rimuovi l'ultima modifica" label_selected="Rimuovi l'ultima modifica" name="Revert"/> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: immodificabile - </text> - <text name="title_loading"> - [DESC]: in caricamento... - </text> - <text name="title_not_worn"> - [DESC]: non indossato - </text> - <text name="path"> - Ubicati in [PATH] - </text> - <text name="not worn instructions"> - Indossa dei nuovi pantaloni trascinandoli dall'inventario al tuo avatar. In alternativa, puoi crearne uno paio nuovo da zero ed indossarlo. - </text> - <text name="no modify instructions"> - Non hai il permesso di modificare questo indumento. - </text> - </panel> - <panel label="Scarpe" name="Shoes"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: immodificabili - </text> - <text name="title_loading"> - [DESC]: in caricamento... - </text> - <text name="title_not_worn"> - [DESC]: non indossate - </text> - <text name="path"> - Ubicate in [PATH] - </text> - <text name="not worn instructions"> - Indossa delle nuove scarpe trascinandole dall'inventario al tuo avatar. In alternativa, puoi crearne uno paio nuovo da zero ed indossarlo. - </text> - <text name="no modify instructions"> - Non hai il permesso di modificare questo indumento. - </text> - <texture_picker label=">Tessuto" name="Fabric" tool_tip="Clicca per scegliere un'immagine"/> - <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per scegliere un colore"/> - <button label="Crea nuove scarpe" label_selected="Crea nuove scarpe" name="Create New"/> - <button label="Togli" label_selected="Togli" name="Take Off"/> - <button label="Salva" label_selected="Salva" name="Save"/> - <button label="Salva come" label_selected="Salva come" name="Save As"/> - <button label="Rimuovi l'ultima modifica" label_selected="Rimuovi l'ultima modifica" name="Revert"/> - </panel> - <panel label="Calze" name="Socks"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: immodificabili - </text> - <text name="title_loading"> - [DESC]: in caricamento... - </text> - <text name="title_not_worn"> - [DESC]: non indossate - </text> - <text name="path"> - Ubicato in [PATH] - </text> - <text name="not worn instructions"> - Indossa delle nuove calze trascinandole dall'inventario al tuo avatar. In alternativa, puoi crearne uno paio nuovo da zero ed indossarlo. - </text> - <text name="no modify instructions"> - Non hai il permesso di modificare questo indumento. - </text> - <texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere un'immagine"/> - <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per scegliere un colore"/> - <button label="Crea nuove calze" label_selected="Crea nuove calze" name="Create New"/> - <button label="Togli" label_selected="Togli" name="Take Off"/> - <button label="Salva" label_selected="Salva" name="Save"/> - <button label="Salva come" label_selected="Salva come" name="Save As"/> - <button label="Rimuovi l'ultima modifica" label_selected="Rimuovi l'ultima modifica" name="Revert"/> - </panel> - <panel label="Giacca" name="Jacket"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: immodificabile - </text> - <text name="title_loading"> - [DESC]: in caricamento... - </text> - <text name="title_not_worn"> - [DESC]: non indossata - </text> - <text name="path"> - Ubicata in [PATH] - </text> - <text name="not worn instructions"> - Indossa una nuova giacca trascinandola dall'inventario al tuo avatar. In alternativa, puoi crearne una nuova da zero ed indossarla. - </text> - <text name="no modify instructions"> - Non hai il permesso di modificare questo indumento. - </text> - <texture_picker label="Tessuto, parte superiore" name="Upper Fabric" tool_tip="Clicca per scegliere un'immagine"/> - <texture_picker label="Tessuto, parte inferiore" name="Lower Fabric" tool_tip="Clicca per scegliere un'immagine"/> - <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per scegliere il colore"/> - <button label="Crea una nuova giacca" label_selected="Crea una nuova giacca" name="Create New"/> - <button label="Togli" label_selected="Togli" name="Take Off"/> - <button label="Salva" label_selected="Salva" name="Save"/> - <button label="Salva come" label_selected="Salva come" name="Save As"/> - <button label="Rimuovi l'ultima modifica" label_selected="Rimuovi l'ultima modifica" name="Revert"/> - </panel> - <panel label="Guanti" name="Gloves"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: immodificabili - </text> - <text name="title_loading"> - [DESC]: in caricamento... - </text> - <text name="title_not_worn"> - [DESC]: non indossati - </text> - <text name="path"> - Ubicati in [PATH] - </text> - <text name="not worn instructions"> - Indossa dei nuovi guanti trascinandoli dall'inventario al tuo avatar. In alternativa, puoi crearne un paio nuovo da zero ed indossarlo. - </text> - <text name="no modify instructions"> - Non hai il permesso di modificare questo indumento. - </text> - <texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere un'immagine"/> - <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per scegliere il colore"/> - <button label="Crea nuovi guanti" label_selected="Crea nuovi guanti" name="Create New"/> - <button label="Rimuovi l'indumento" label_selected="Rimuovi l'indumento" name="Take Off"/> - <button label="Salva" label_selected="Salva" name="Save"/> - <button label="Salva come" label_selected="Salva come" name="Save As"/> - <button label="Rimuovi l'ultima modifica" label_selected="Rimuovi l'ultima modifica" name="Revert"/> - </panel> - <panel label="Canottiera" name="Undershirt"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: immodificabile - </text> - <text name="title_loading"> - [DESC]: in caricamento... - </text> - <text name="title_not_worn"> - [DESC]: non indossata - </text> - <text name="path"> - Ubicata in [PATH] - </text> - <text name="not worn instructions"> - Indossa una nuova canottiera trascinandola dall'inventario al tuo avatar. In alternativa, puoi crearne una nuovo da zero ed indossarla. - </text> - <text name="no modify instructions"> - Non hai il permesso di modificare questo indumento. - </text> - <texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere un'immagine"/> - <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per scegliere il colore"/> - <button label="Crea una nuova canottiera" label_selected="Crea una nuova canottiera" name="Create New"/> - <button label="Rimuovi l'indumento" label_selected="Rimuovi l'indumento" name="Take Off"/> - <button label="Salva" label_selected="Salva" name="Save"/> - <button label="Salva come" label_selected="Salva come" name="Save As"/> - <button label="Rimuovi l'ultima modifica" label_selected="Rimuovi l'ultima modifica" name="Revert"/> - </panel> - <panel label="Mutande" name="Underpants"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: immodificabili - </text> - <text name="title_loading"> - [DESC]: in caricamento... - </text> - <text name="title_not_worn"> - [DESC]: non indossate - </text> - <text name="path"> - Ubicato in [PATH] - </text> - <text name="not worn instructions"> - Indossa delle nuove mutande trascinandole dall'inventario al tuo avatar. In alternativa, puoi crearne una paio nuovo da zero ed indossarlo. - </text> - <text name="no modify instructions"> - Non hai il permesso di modificare questo indumento. - </text> - <texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere un'immagine"/> - <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per scegliere il colore"/> - <button label="Crea nuove mutande" label_selected="Crea nuove mutande" name="Create New"/> - <button label="Rimuovi l'indumento" label_selected="Rimuovi l'indumento" name="Take Off"/> - <button label="Salva" label_selected="Salva" name="Save"/> - <button label="Salva come" label_selected="Salva come" name="Save As"/> - <button label="Rimuovi l'ultima modifica" label_selected="Rimuovi l'ultima modifica" name="Revert"/> - </panel> - <panel label="Gonna" name="Skirt"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: immodificabile - </text> - <text name="title_loading"> - [DESC]: in caricamento... - </text> - <text name="title_not_worn"> - [DESC]: non indossata - </text> - <text name="path"> - Ubicata in [PATH] - </text> - <text name="not worn instructions"> - Indossa una nuova gonna trascinandola dall'inventario al tuo avatar. In alternativa, puoi crearne una nuova da zero ed indossarla. - </text> - <text name="no modify instructions"> - Non hai il permesso di modificare questo indumento. - </text> - <texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere un'immagine"/> - <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per scegliere il colore"/> - <button label="Crea una nuova gonna" label_selected="Crea una nuova gonna" name="Create New"/> - <button label="Rimuovi l'indumento" label_selected="Rimuovi l'indumento" name="Take Off"/> - <button label="Salva" label_selected="Salva" name="Save"/> - <button label="Salva come" label_selected="Salva come" name="Save As"/> - <button label="Rimuovi l'ultima modifica" label_selected="Rimuovi l'ultima modifica" name="Revert"/> - </panel> - </tab_container> - <button label="Chiudi" label_selected="Chiudi" name="Close"/> - <button label="Salva tutto" label_selected="Salva tutto" name="Save All"/> - <button label="Crea outfit" label_selected="Crea outfit" name="Make Outfit"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater customize" title="Aspetto fisico" width="551"> + <tab_container name="customize tab container" tab_min_width="120" width="549"> + <panel label="Parti del corpo" name="body_parts_placeholder"/> + <panel label="Forma del corpo" name="Shape" left="124" width="389"> + <button font="SansSerifSmall" width="120" left="267" label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert"/> + <button label="Corpo" label_selected="Corpo" name="Body"/> + <button label="Testa" label_selected="Testa" name="Head"/> + <button label="Occhi" label_selected="Occhi" name="Eyes"/> + <button label="Orecchie" label_selected="Orecchie" name="Ears"/> + <button label="Naso" label_selected="Naso" name="Nose"/> + <button label="Bocca" label_selected="Bocca" name="Mouth"/> + <button label="Mento" label_selected="Mento" name="Chin"/> + <button label="Torso" label_selected="Torso" name="Torso"/> + <button label="Gambe" label_selected="Gambe" name="Legs"/> + <radio_group name="sex radio"> + <radio_item name="radio" label="Femmina" /> + <radio_item name="radio2" label="Maschio" /> + </radio_group> + <text name="title"> + [DESC] + </text> + <text name="title_no_modify"> + [DESC]: immodificabile + </text> + <text name="title_loading"> + [DESC]: in caricamento... + </text> + <text name="title_not_worn"> + [DESC]: non indossato + </text> + <text name="path"> + Ubicato in [PATH] + </text> + <text name="not worn instructions"> + Indossa una nuova Forma del Corpo trascinandone una dall'inventario +sul tuo avatar. In alternativa, puoi crearne una nuova ed indossarla. + </text> + <text name="no modify instructions"> + Non hai il permesso di modificare questo indumento. + </text> + <text name="Item Action Label" right="89"> + Forma del corpo: + </text> + <button label="Crea una nuova forma del corpo" label_selected="Crea una nuova forma del corpo" name="Create New" width="190"/> + <button left="95" width="72" label="Salva" label_selected="Salva" name="Save"/> + <button left="171" label="Salva come..." label_selected="Salva come..." name="Save As"/> + </panel> + <panel label="Pelle" name="Skin"> + <button label="Colore della pelle" label_selected="Colore della pelle" name="Skin Color" width="115"/> + <button label="Dettagli della faccia" label_selected="Dettagli della faccia" name="Face Detail" width="115"/> + <button label="Trucco" label_selected="Trucco" name="Makeup" width="115"/> + <button label="Dettagli del corpo" label_selected="Dettagli del corpo" name="Body Detail" width="115"/> + <text name="title"> + [DESC] + </text> + <text name="title_no_modify"> + [DESC]: immodificabile + </text> + <text name="title_loading"> + [DESC]: in caricamento... + </text> + <text name="title_not_worn"> + [DESC]: non indossata + </text> + <text name="path"> + Ubicata in [PATH] + </text> + <text name="not worn instructions"> + Indossa una nuova pelle trascinandola dall'inventario al tuo avatar. +In alternativa, puoi crearne una nuova da zero ed indossarla. + </text> + <text name="no modify instructions"> + Non hai il permesso di modificare questo indumento. + </text> + <text name="Item Action Label" right="89"> + Pelle: + </text> + <texture_picker width="96" label="Tatuaggi: testa" name="Head Tattoos" tool_tip="Clicca per scegliere un'immagine"/> + <texture_picker width="96" label="Tatuaggi: superiori" name="Upper Tattoos" tool_tip="Clicca per scegliere un'immagine"/> + <texture_picker width="96" label="Tatuaggi: inferiori" name="Lower Tattoos" tool_tip="Clicca per scegliere un'immagine"/> + <button label="Crea una nuova pelle" label_selected="Crea una nuova pelle" name="Create New"/> + <button left="95" width="72" label="Salva" label_selected="Salva" name="Save"/> + <button left="171" label="Salva come..." label_selected="Salva come..." name="Save As"/> + <button font="SansSerifSmall" width="120" left="267" label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert"/> + </panel> + <panel label="Capelli" name="Hair"> + <button label="Capelli" label_selected="Colore" name="Color"/> + <button label="Stile" label_selected="Stile" name="Style"/> + <button label="Sopracciglia" label_selected="Sopracciglia" name="Eyebrows"/> + <button label="Facciale" label_selected="Facciale" name="Facial"/> + <text name="title"> + [DESC] + </text> + <text name="title_no_modify"> + [DESC]: immodificabili + </text> + <text name="title_loading"> + [DESC]: in caricamento... + </text> + <text name="title_not_worn"> + [DESC]: non indossati + </text> + <text name="path"> + Ubicati in [PATH] + </text> + <text name="not worn instructions"> + Indossa dei nuovi capelli trascinandoli dall'inventario al tuo avatar. +In alternativa, puoi crearne di nuovi da zero ed indossarli. + </text> + <text name="no modify instructions"> + Non hai il permesso per modificare questo indumento. + </text> + <text name="Item Action Label" right="89"> + Capelli: + </text> + <texture_picker label="Texture" name="Texture" tool_tip="Clicca per scegliere un'immagine"/> + <button label="Crea nuovi capelli" label_selected="Crea nuovi capelli" name="Create New"/> + <button left="95" width="72" label="Salva" label_selected="Salva" name="Save"/> + <button left="171" label="Salva come..." label_selected="Salva come..." name="Save As"/> + <button font="SansSerifSmall" width="120" left="267" label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert"/> + </panel> + <panel label="Occhi" name="Eyes"> + <text name="title"> + [DESC] + </text> + <text name="title_no_modify"> + [DESC]: immodificabili + </text> + <text name="title_loading"> + [DESC]: in caricamento... + </text> + <text name="title_not_worn"> + [DESC]: non indossati + </text> + <text name="path"> + Ubicati in [PATH] + </text> + <text name="not worn instructions"> + Indossa dei nuovi occhi trascinandoli dall'inventario al tuo avatar. +In alternativa, puoi crearne di nuovi da zero ed indossarli. + </text> + <text name="no modify instructions"> + Non hai il permesso di modificare questo indumento. + </text> + <text name="Item Action Label" right="89"> + Occhi: + </text> + <texture_picker label="Iride" name="Iris" tool_tip="Clicca per scegliere un'immagine"/> + <button label="Crea nuovi occhi" label_selected="Crea nuovi occhi" name="Create New"/> + <button left="95" width="72" label="Salva" label_selected="Salva" name="Save"/> + <button left="171" label="Salva come..." label_selected="Salva come..." name="Save As"/> + <button font="SansSerifSmall" width="120" left="267" label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert"/> + </panel> + <panel label="Vestiti" name="clothes_placeholder"/> + <panel label="Camicia" name="Shirt"> + <texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere un'immagine"/> + <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per scegliere un colore"/> + <button label="Crea una nuova camicia" label_selected="Crea una nuova camicia" name="Create New"/> + <button label="Togli" label_selected="Togli" name="Take Off"/> + <button left="95" width="72" label="Salva" label_selected="Salva" name="Save"/> + <button left="171" label="Salva come..." label_selected="Salva come..." name="Save As"/> + <button font="SansSerifSmall" width="120" left="267" label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert"/> + <text name="title"> + [DESC] + </text> + <text name="title_no_modify"> + [DESC]: immodificabile + </text> + <text name="title_loading"> + [DESC]: in caricamento... + </text> + <text name="title_not_worn"> + [DESC]: non indossata + </text> + <text name="path"> + Ubicata in [PATH] + </text> + <text name="not worn instructions"> + Indossa una nuova maglietta trascinandola dall'inventario al tuo avatar. +In alternativa, puoi crearne una nuova da zero ed indossarla. + </text> + <text name="no modify instructions"> + Non hai il permesso di modificare questo indumento. + </text> + <text name="Item Action Label" right="89"> + Camicia: + </text> + </panel> + <panel label="Pantaloni" name="Pants"> + <texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere un'immagine"/> + <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per scegliere un colore"/> + <button label="Crea nuovi pantaloni" label_selected="Crea nuovi pantaloni" name="Create New" /> + <button label="Togli" label_selected="Togli" name="Take Off"/> + <button left="95" width="72" label="Salva" label_selected="Salva" name="Save"/> + <button left="171" label="Salva come..." label_selected="Salva come..." name="Save As"/> + <button font="SansSerifSmall" width="120" left="267" label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert"/> + <text name="title"> + [DESC] + </text> + <text name="title_no_modify"> + [DESC]: immodificabile + </text> + <text name="title_loading"> + [DESC]: in caricamento... + </text> + <text name="title_not_worn"> + [DESC]: non indossato + </text> + <text name="path"> + Ubicati in [PATH] + </text> + <text name="not worn instructions"> + Indossa dei nuovi pantaloni trascinandoli dall'inventario al tuo avatar. +In alternativa, puoi crearne uno paio nuovo da zero ed indossarlo. + </text> + <text name="no modify instructions"> + Non hai il permesso di modificare questo indumento. + </text> + <text name="Item Action Label" right="89"> + Pantaloni: + </text> + </panel> + <panel label="Scarpe" name="Shoes"> + <text name="title"> + [DESC] + </text> + <text name="title_no_modify"> + [DESC]: immodificabili + </text> + <text name="title_loading"> + [DESC]: in caricamento... + </text> + <text name="title_not_worn"> + [DESC]: non indossate + </text> + <text name="path"> + Ubicate in [PATH] + </text> + <text name="not worn instructions"> + Indossa delle nuove scarpe trascinandole dall'inventario al tuo avatar. +In alternativa, puoi crearne uno paio nuovo da zero ed indossarlo. + </text> + <text name="no modify instructions"> + Non hai il permesso di modificare questo indumento. + </text> + <text name="Item Action Label" right="89"> + Scarpe: + </text> + <texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere un'immagine"/> + <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per scegliere un colore"/> + <button label="Crea nuove scarpe" label_selected="Crea nuove scarpe" name="Create New"/> + <button label="Togli" label_selected="Togli" name="Take Off"/> + <button left="95" width="72" label="Salva" label_selected="Salva" name="Save"/> + <button left="171" label="Salva come..." label_selected="Salva come..." name="Save As"/> + <button font="SansSerifSmall" width="120" left="267" label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert"/> + </panel> + <panel label="Calze" name="Socks"> + <text name="title"> + [DESC] + </text> + <text name="title_no_modify"> + [DESC]: immodificabili + </text> + <text name="title_loading"> + [DESC]: in caricamento... + </text> + <text name="title_not_worn"> + [DESC]: non indossate + </text> + <text name="path"> + Ubicato in [PATH] + </text> + <text name="not worn instructions"> + Indossa delle nuove calze trascinandole dall'inventario al tuo avatar. +In alternativa, puoi crearne uno paio nuovo da zero ed indossarlo. + </text> + <text name="no modify instructions"> + Non hai il permesso di modificare questo indumento. + </text> + <text name="Item Action Label" right="89"> + Calze: + </text> + <texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere un'immagine"/> + <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per scegliere un colore"/> + <button label="Crea nuove calze" label_selected="Crea nuove calze" name="Create New" /> + <button label="Togli" label_selected="Togli" name="Take Off"/> + <button left="95" width="72" label="Salva" label_selected="Salva" name="Save"/> + <button left="171" label="Salva come..." label_selected="Salva come..." name="Save As"/> + <button font="SansSerifSmall" width="120" left="267" label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert"/> + </panel> + <panel label="Giacca" name="Jacket"> + <text name="title"> + [DESC] + </text> + <text name="title_no_modify"> + [DESC]: immodificabile + </text> + <text name="title_loading"> + [DESC]: in caricamento... + </text> + <text name="title_not_worn"> + [DESC]: non indossata + </text> + <text name="path"> + Ubicata in [PATH] + </text> + <text name="not worn instructions"> + Indossa una nuova giacca trascinandola dall'inventario al tuo avatar. +In alternativa, puoi crearne una nuova da zero ed indossarla. + </text> + <text name="no modify instructions"> + Non hai il permesso di modificare questo indumento. + </text> + <text name="Item Action Label" right="89"> + Giacca: + </text> + <texture_picker width="96" label="Tessuto: superiore" name="Upper Fabric" tool_tip="Clicca per scegliere un'immagine"/> + <texture_picker width="96" label="Tessuto: inferiore" name="Lower Fabric" tool_tip="Clicca per scegliere un'immagine"/> + <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per scegliere il colore"/> + <button label="Crea una nuova giacca" label_selected="Crea una nuova giacca" name="Create New"/> + <button label="Togli" label_selected="Togli" name="Take Off"/> + <button left="95" width="72" label="Salva" label_selected="Salva" name="Save"/> + <button left="171" label="Salva come..." label_selected="Salva come..." name="Save As"/> + <button font="SansSerifSmall" width="120" left="267" label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert"/> + </panel> + <panel label="Guanti" name="Gloves"> + <text name="title"> + [DESC] + </text> + <text name="title_no_modify"> + [DESC]: immodificabili + </text> + <text name="title_loading"> + [DESC]: in caricamento... + </text> + <text name="title_not_worn"> + [DESC]: non indossati + </text> + <text name="path"> + Ubicati in [PATH] + </text> + <text name="not worn instructions"> + Indossa dei nuovi guanti trascinandoli dall'inventario al tuo avatar. +In alternativa, puoi crearne un paio nuovo da zero ed indossarlo. + </text> + <text name="no modify instructions"> + Non hai il permesso di modificare questo indumento. + </text> + <text name="Item Action Label" right="89"> + Guanti: + </text> + <texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere un'immagine"/> + <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per scegliere il colore"/> + <button label="Crea nuovi guanti" label_selected="Crea nuovi guanti" name="Create New"/> + <button width="115" font="SansSerifSmall" label="Rimuovi l'indumento" label_selected="Rimuovi l'indumento" name="Take Off"/> + <button left="95" width="72" label="Salva" label_selected="Salva" name="Save"/> + <button left="171" label="Salva come..." label_selected="Salva come..." name="Save As"/> + <button font="SansSerifSmall" width="120" left="267" label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert"/> + </panel> + <panel label="Canottiera" name="Undershirt"> + <text name="title"> + [DESC] + </text> + <text name="title_no_modify"> + [DESC]: immodificabile + </text> + <text name="title_loading"> + [DESC]: in caricamento... + </text> + <text name="title_not_worn"> + [DESC]: non indossata + </text> + <text name="path"> + Ubicata in [PATH] + </text> + <text name="not worn instructions"> + Indossa una nuova canottiera trascinandola dall'inventario al tuo avatar. +In alternativa, puoi crearne una nuovo da zero ed indossarla. + </text> + <text name="no modify instructions"> + Non hai il permesso di modificare questo indumento. + </text> + <text name="Item Action Label" right="89"> + Canottiera: + </text> + <texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere un'immagine"/> + <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per scegliere il colore"/> + <button label="Crea una nuova canottiera" label_selected="Crea una nuova canottiera" name="Create New"/> + <button width="115" font="SansSerifSmall" label="Rimuovi l'indumento" label_selected="Rimuovi l'indumento" name="Take Off"/> + <button left="95" width="72" label="Salva" label_selected="Salva" name="Save"/> + <button left="171" label="Salva come..." label_selected="Salva come..." name="Save As"/> + <button font="SansSerifSmall" width="120" left="267" label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert"/> + </panel> + <panel label="Mutande" name="Underpants"> + <text name="title"> + [DESC] + </text> + <text name="title_no_modify"> + [DESC]: immodificabili + </text> + <text name="title_loading"> + [DESC]: in caricamento... + </text> + <text name="title_not_worn"> + [DESC]: non indossate + </text> + <text name="path"> + Ubicato in [PATH] + </text> + <text name="not worn instructions"> + Indossa delle nuove mutande trascinandole dall'inventario al tuo avatar. +In alternativa, puoi crearne una paio nuovo da zero ed indossarlo. + </text> + <text name="no modify instructions"> + Non hai il permesso di modificare questo indumento. + </text> + <text name="Item Action Label" right="89"> + Mutande: + </text> + <texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere un'immagine"/> + <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per scegliere il colore"/> + <button label="Crea nuove mutande" label_selected="Crea nuove mutande" name="Create New"/> + <button width="115" font="SansSerifSmall" label="Rimuovi l'indumento" label_selected="Rimuovi l'indumento" name="Take Off"/> + <button left="95" width="72" label="Salva" label_selected="Salva" name="Save"/> + <button left="171" label="Salva come..." label_selected="Salva come..." name="Save As"/> + <button font="SansSerifSmall" width="120" left="267" label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert"/> + </panel> + <panel label="Gonna" name="Skirt"> + <text name="title"> + [DESC] + </text> + <text name="title_no_modify"> + [DESC]: immodificabile + </text> + <text name="title_loading"> + [DESC]: in caricamento... + </text> + <text name="title_not_worn"> + [DESC]: non indossata + </text> + <text name="path"> + Ubicata in [PATH] + </text> + <text name="not worn instructions"> + Indossa una nuova gonna trascinandola dall'inventario al tuo avatar. +In alternativa, puoi crearne una nuova da zero ed indossarla. + </text> + <text name="no modify instructions"> + Non hai il permesso di modificare questo indumento. + </text> + <text name="Item Action Label" right="89"> + Gonna: + </text> + <texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere un'immagine"/> + <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per scegliere il colore"/> + <button label="Crea una nuova gonna" label_selected="Crea una nuova gonna" name="Create New"/> + <button width="115" font="SansSerifSmall" label="Rimuovi l'indumento" label_selected="Rimuovi l'indumento" name="Take Off"/> + <button left="95" width="72" label="Salva" label_selected="Salva" name="Save"/> + <button left="171" label="Salva come..." label_selected="Salva come..." name="Save As"/> + <button font="SansSerifSmall" width="120" left="267" label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert"/> + </panel> + </tab_container> + <scroll_container left="254" name="panel_container"/> + <button label="Annulla" label_selected="Annulla" name="Cancel"/> + <button label="OK" label_selected="OK" name="Ok"/> + <button label="Crea Outfit..." label_selected="Crea Outfit..." name="Make Outfit" left="122" /> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_day_cycle_options.xml b/indra/newview/skins/default/xui/it/floater_day_cycle_options.xml index 9b10e8f6a5ef75836a35018de170fc12d35eca37..cac43c9b8a8a7001fac9dc54b35ca7ca31bb4638 100644 --- a/indra/newview/skins/default/xui/it/floater_day_cycle_options.xml +++ b/indra/newview/skins/default/xui/it/floater_day_cycle_options.xml @@ -1,94 +1,94 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Day Cycle Floater" title="Editor delle ciclo giorno/notte"> - <tab_container name="Day Cycle Tabs"> - <panel label="Ciclo giorno/notte" name="Day Cycle"> - <button label="?" name="WLDayCycleHelp"/> - <text name="WL12am"> - 12 - </text> - <text name="WL3am"> - 3 - </text> - <text name="WL6am"> - 6 - </text> - <text name="WL9amHash"> - 9 - </text> - <text name="WL12pmHash"> - 24 - </text> - <text name="WL3pm"> - 15 - </text> - <text name="WL6pm"> - 18 - </text> - <text name="WL9pm"> - 21 - </text> - <text name="WL12am2"> - 12 - </text> - <text name="WL12amHash"> - | - </text> - <text name="WL3amHash"> - I - </text> - <text name="WL6amHash"> - | - </text> - <text name="WL9amHash2"> - I - </text> - <text name="WL12pmHash2"> - | - </text> - <text name="WL3pmHash"> - I - </text> - <text name="WL6pmHash"> - | - </text> - <text name="WL9pmHash"> - I - </text> - <text name="WL12amHash2"> - | - </text> - <button label="Aggiungi voce" label_selected="Aggiungi voce" name="WLAddKey"/> - <button label="Cancella voce" label_selected="Cancella voce" name="WLDeleteKey"/> - <text name="WLCurKeyFrameText"> - Impostazioni del fotogramma chiave: - </text> - <text name="WLCurKeyTimeText"> - Tempo: - </text> - <spinner label="Ora" name="WLCurKeyHour"/> - <spinner label="Min" name="WLCurKeyMin"/> - <text name="WLCurKeyTimeText2"> - Impostazione chiave: - </text> - <combo_box label="Programma:" name="WLKeyPresets"/> - <text name="DayCycleText"> - Raggruppa: - </text> - <combo_box label="5 min" name="WLSnapOptions"/> - <text name="DayCycleText2"> - Lunghezza del ciclo: - </text> - <spinner label="Ore" name="WLLengthOfDayHour"/> - <spinner label="Min" name="WLLengthOfDayMin"/> - <spinner label="Sec" name="WLLengthOfDaySec"/> - <text name="DayCycleText3"> - Anteprima: - </text> - <button label="Avvia" label_selected="Avvia" name="WLAnimSky"/> - <button label="Arresta!" label_selected="Arresta" name="WLStopAnimSky"/> - <button label="Usa l'ora della proprietà " label_selected="Vai all'ora della proprietà " name="WLUseLindenTime"/> - <button label="Salva il test del giorno" label_selected="Salva il test del giorno" name="WLSaveDayCycle"/> - <button label="Carica il test del giorno" label_selected="Carica il test del giorno" name="WLLoadDayCycle"/> - </panel> - </tab_container> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Day Cycle Floater" title="Editor delle ciclo giorno/notte"> + <tab_container name="Day Cycle Tabs"> + <panel label="Ciclo giorno/notte" name="Day Cycle"> + <button label="?" name="WLDayCycleHelp"/> + <text name="WL12am"> + 12 + </text> + <text name="WL3am"> + 3 + </text> + <text name="WL6am"> + 6 + </text> + <text name="WL9amHash"> + 9 + </text> + <text name="WL12pmHash"> + 24 + </text> + <text name="WL3pm"> + 15 + </text> + <text name="WL6pm"> + 18 + </text> + <text name="WL9pm"> + 21 + </text> + <text name="WL12am2"> + 12 + </text> + <text name="WL12amHash"> + | + </text> + <text name="WL3amHash"> + I + </text> + <text name="WL6amHash"> + | + </text> + <text name="WL9amHash2"> + I + </text> + <text name="WL12pmHash2"> + | + </text> + <text name="WL3pmHash"> + I + </text> + <text name="WL6pmHash"> + | + </text> + <text name="WL9pmHash"> + I + </text> + <text name="WL12amHash2"> + | + </text> + <button label="Aggiungi voce" label_selected="Aggiungi voce" name="WLAddKey"/> + <button label="Cancella voce" label_selected="Cancella voce" name="WLDeleteKey"/> + <text name="WLCurKeyFrameText"> + Impostazioni del fotogramma chiave: + </text> + <text name="WLCurKeyTimeText"> + Tempo: + </text> + <spinner label="Ora" name="WLCurKeyHour"/> + <spinner label="Min" name="WLCurKeyMin"/> + <text name="WLCurKeyTimeText2"> + Impostazione chiave: + </text> + <combo_box label="Programma:" name="WLKeyPresets"/> + <text name="DayCycleText"> + Raggruppa: + </text> + <combo_box label="5 min" name="WLSnapOptions"/> + <text name="DayCycleText2"> + Lunghezza del ciclo: + </text> + <spinner label="Ore" name="WLLengthOfDayHour"/> + <spinner label="Min" name="WLLengthOfDayMin"/> + <spinner label="Sec" name="WLLengthOfDaySec"/> + <text name="DayCycleText3"> + Anteprima: + </text> + <button label="Avvia" label_selected="Avvia" name="WLAnimSky"/> + <button label="Arresta!" label_selected="Arresta" name="WLStopAnimSky"/> + <button label="Usa l'ora della proprietà " label_selected="Vai all'ora della proprietà " name="WLUseLindenTime"/> + <button label="Salva il test del giorno" label_selected="Salva il test del giorno" name="WLSaveDayCycle"/> + <button label="Carica il test del giorno" label_selected="Carica il test del giorno" name="WLLoadDayCycle"/> + </panel> + </tab_container> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_device_settings.xml b/indra/newview/skins/default/xui/it/floater_device_settings.xml index e1109c38b3fc612d828d610ab76f617eabf39440..cbf965bf93d05f69a2570e599ac3c95eeab94938 100644 --- a/indra/newview/skins/default/xui/it/floater_device_settings.xml +++ b/indra/newview/skins/default/xui/it/floater_device_settings.xml @@ -1,2 +1,2 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_device_settings" title="Impostazioni dispositivi Voice Chat"/> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_device_settings" title="Impostazioni dispositivi Voice Chat"/> diff --git a/indra/newview/skins/default/xui/it/floater_env_settings.xml b/indra/newview/skins/default/xui/it/floater_env_settings.xml index df5a835f51016f387844fb16e96c44fc587a6d72..58fbff5dc9e56f6dc5872e34e01b43d1e48a794c 100644 --- a/indra/newview/skins/default/xui/it/floater_env_settings.xml +++ b/indra/newview/skins/default/xui/it/floater_env_settings.xml @@ -1,23 +1,23 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Environment Editor Floater" title="Editor dell'ambiente"> - <text name="EnvTimeText"> - Ora del giorno - </text> - <text name="EnvTimeText2"> - 12:00 PM - </text> - <text name="EnvCloudText"> - Intensità delle Nuvole - </text> - <text name="EnvWaterColorText"> - Colore dell'Acqua - </text> - <color_swatch label="" name="EnvWaterColor" tool_tip="Clicca per aprire la tavolozza dei colori"/> - <text name="EnvWaterFogText"> - Nebbiosità dell'acqua - </text> - <button label="Usa orario della regione" name="EnvUseEstateTimeButton"/> - <button label="Cielo avanzato" name="EnvAdvancedSkyButton"/> - <button label="Acqua avanzata" name="EnvAdvancedWaterButton"/> - <button label="?" name="EnvSettingsHelpButton"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Environment Editor Floater" title="Editor dell'ambiente"> + <text name="EnvTimeText"> + Ora del giorno + </text> + <text name="EnvTimeText2"> + 12:00 PM + </text> + <text name="EnvCloudText"> + Intensità delle Nuvole + </text> + <text name="EnvWaterColorText"> + Colore dell'Acqua + </text> + <color_swatch label="" name="EnvWaterColor" tool_tip="Clicca per aprire la tavolozza dei colori"/> + <text name="EnvWaterFogText"> + Nebbiosità dell'acqua + </text> + <button label="Usa orario della regione" name="EnvUseEstateTimeButton"/> + <button label="Cielo avanzato" name="EnvAdvancedSkyButton"/> + <button label="Acqua avanzata" name="EnvAdvancedWaterButton"/> + <button label="?" name="EnvSettingsHelpButton"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_font_test.xml b/indra/newview/skins/default/xui/it/floater_font_test.xml new file mode 100644 index 0000000000000000000000000000000000000000..27b87a931d66d05d4a581bb728d191f417d0f0b0 --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_font_test.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="contents" title="Tipo di carattere per test"> + <text name="linea"> + OverrideTest, dovrebbe apparire qui come Times. (Dal default/xui/en-us) + </text> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_gesture.xml b/indra/newview/skins/default/xui/it/floater_gesture.xml index 258bbcb990cfb19d1236070fd2be063d12587c83..27008e97a1b364a22e996b2c98db52c0e36216da 100644 --- a/indra/newview/skins/default/xui/it/floater_gesture.xml +++ b/indra/newview/skins/default/xui/it/floater_gesture.xml @@ -1,15 +1,15 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="gestures" title="Gesture attive"> - <text name="help_label"> - Fai doppio click su una gesture per azionare animazioni e suoni. - </text> - <scroll_list name="gesture_list"> - <column label="Frase scatenante" name="trigger"/> - <column label="Pulsante" name="shortcut"/> - <column label="Nome" name="name"/> - </scroll_list> - <button label="Nuova" name="new_gesture_btn"/> - <button label="Modifica" name="edit_btn"/> - <button label="Play" name="play_btn"/> - <button label="Stop" name="stop_btn"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="gestures" title="Gesture attive"> + <text name="help_label"> + Fai doppio click su una gesture per azionare animazioni e suoni. + </text> + <scroll_list name="gesture_list"> + <column label="Frase scatenante" name="trigger"/> + <column label="Pulsante" name="shortcut"/> + <column label="Nome" name="name"/> + </scroll_list> + <button label="Nuova" name="new_gesture_btn"/> + <button label="Modifica" name="edit_btn"/> + <button label="Play" name="play_btn"/> + <button label="Stop" name="stop_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_hardware_settings.xml b/indra/newview/skins/default/xui/it/floater_hardware_settings.xml index 699a6e80ef292c528b3fa1af0b7207a7620d8002..688f9137a251f6dcba9778e71a4f83660cc8357e 100644 --- a/indra/newview/skins/default/xui/it/floater_hardware_settings.xml +++ b/indra/newview/skins/default/xui/it/floater_hardware_settings.xml @@ -1,28 +1,28 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Hardware Settings Floater" title="Impostazioni Hardware"> - <text name="Filtering:"> - Filtraggio: - </text> - <check_box label="Filtraggio Anisotropico (rallenta se attivato)" name="ani"/> - <text name="Antialiasing:"> - Antialiasing: - </text> - <combo_box label="Antialiasing" name="fsaa"> - <combo_box.item name="FSAADisabled" label="Disattivato"/> - <combo_box.item name="2x" label="2x"/> - <combo_box.item name="4x" label="4x"/> - <combo_box.item name="8x" label="8x"/> - <combo_box.item name="16x" label="16x"/> - </combo_box> - <spinner label="Gamma:" name="gamma"/> - <text name="(brightness, lower is brighter)"> - (luminosità, più basso = più luminoso, 0=default) - </text> - <text name="Enable VBO:"> - Attiva VBO: - </text> - <check_box label="Attiva oggetti OpenGL Vertex Buffer" name="vbo" tool_tip="Attivandolo su un hardware moderno aumenta la performance. Ma, su un vecchio hardware, spesso l'implementazione dei VBO è scarsa e potresti avere dei crash quando è attivato."/> - <slider label="Memoria Texture (MB):" name="GrapicsCardTextureMemory" tool_tip="Quantità di memoria allocata per le texture. Impostata di default sulla memoria della scheda grafica. Ridurla può aumentare la performance, ma può anche rendere le texture sfocate."/> - <spinner label="Indice della distanza della nebbia:" name="fog"/> - <button label="OK" label_selected="OK" name="OK"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Hardware Settings Floater" title="Impostazioni Hardware"> + <text name="Filtering:"> + Filtraggio: + </text> + <check_box label="Filtraggio Anisotropico (rallenta se attivato)" name="ani"/> + <text name="Antialiasing:"> + Antialiasing: + </text> + <combo_box label="Antialiasing" name="fsaa" width="94"> + <combo_box.item name="FSAADisabled" label="Disattivato"/> + <combo_box.item name="2x" label="2x"/> + <combo_box.item name="4x" label="4x"/> + <combo_box.item name="8x" label="8x"/> + <combo_box.item name="16x" label="16x"/> + </combo_box> + <spinner label="Gamma:" name="gamma"/> + <text name="(brightness, lower is brighter)"> + (Luminosità , più basso = più luminoso, 0=default) + </text> + <text name="Enable VBO:"> + Attiva VBO: + </text> + <check_box label="Attiva oggetti OpenGL Vertex Buffer" name="vbo" tool_tip="Attivandolo su un hardware moderno aumenta la performance. Ma, su un vecchio hardware, spesso l'implementazione dei VBO è scarsa e potresti avere dei crash quando è attivato."/> + <slider label="Memoria Texture (MB):" name="GrapicsCardTextureMemory" tool_tip="Quantità di memoria allocata per le texture. Impostata di default sulla memoria della scheda grafica. Ridurla può aumentare la performance, ma può anche rendere le texture sfocate."/> + <spinner label="Indice della distanza della nebbia:" name="fog"/> + <button label="OK" label_selected="OK" name="OK"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_hud.xml b/indra/newview/skins/default/xui/it/floater_hud.xml index c75867956b061cbd5775b3cbc1a5e084a583a276..d31bcedf05e8a65a275f09aedb8d98f19799181b 100644 --- a/indra/newview/skins/default/xui/it/floater_hud.xml +++ b/indra/newview/skins/default/xui/it/floater_hud.xml @@ -1,2 +1,2 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_hud" title="Tutorial"/> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_hud" title="Tutorial"/> diff --git a/indra/newview/skins/default/xui/it/floater_im.xml b/indra/newview/skins/default/xui/it/floater_im.xml index b617128b290eeec43744786566d72af3c099b233..2a9862fe7cd7f537ac6b2c0fe79eb77a749dbad2 100644 --- a/indra/newview/skins/default/xui/it/floater_im.xml +++ b/indra/newview/skins/default/xui/it/floater_im.xml @@ -1,45 +1,45 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<multi_floater name="im_floater" title=""> - <string name="only_user_message"> - Sei l'unico utente di questa sessione. - </string> - <string name="offline_message"> - [FIRST] [LAST] è offline. - </string> - <string name="invite_message"> - Clicca il tasto [BUTTON NAME] per accettare/connetterti a questa voice chat. - </string> - <string name="muted_message"> - Hai mutato questo residente. L'invio di un messaggio lo riabiliterà automaticamente. - </string> - <string name="generic_request_error"> - Errore durante la richiesta, riprova più tardi. - </string> - <string name="insufficient_perms_error"> - Non hai sufficienti permessi. - </string> - <string name="session_does_not_exist_error"> - Questa sessione non esiste più - </string> - <string name="no_ability_error"> - Non hai questa abilitazione. - </string> - <string name="not_a_mod_error"> - Non sei un moderatore. - </string> - <string name="muted_error"> - Un moderatore di gruppo ti ha disabilitato dalla chat di testo. - </string> - <string name="add_session_event"> - Impossibile aggiungere utenti alla chat con [RECIPIENT]. - </string> - <string name="message_session_event"> - Impossibile inviare il messaggio nella chat con [RECIPIENT]. - </string> - <string name="removed_from_group"> - Sei stato espulso dal gruppo. - </string> - <string name="close_on_no_ability"> - Non hai più le abilitazioni per rimanere nella sessione chat. - </string> -</multi_floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<multi_floater name="im_floater" title=""> + <string name="only_user_message"> + Sei l'unico utente di questa sessione. + </string> + <string name="offline_message"> + [FIRST] [LAST] è offline. + </string> + <string name="invite_message"> + Clicca il tasto [BUTTON NAME] per accettare/connetterti a questa voice chat. + </string> + <string name="muted_message"> + Hai mutato questo residente. L'invio di un messaggio lo riabiliterà automaticamente. + </string> + <string name="generic_request_error"> + Errore durante la richiesta, riprova più tardi. + </string> + <string name="insufficient_perms_error"> + Non hai sufficienti permessi. + </string> + <string name="session_does_not_exist_error"> + Questa sessione non esiste più + </string> + <string name="no_ability_error"> + Non hai questa abilitazione. + </string> + <string name="not_a_mod_error"> + Non sei un moderatore. + </string> + <string name="muted_error"> + Un moderatore di gruppo ti ha disabilitato dalla chat di testo. + </string> + <string name="add_session_event"> + Impossibile aggiungere utenti alla chat con [RECIPIENT]. + </string> + <string name="message_session_event"> + Impossibile inviare il messaggio nella chat con [RECIPIENT]. + </string> + <string name="removed_from_group"> + Sei stato espulso dal gruppo. + </string> + <string name="close_on_no_ability"> + Non hai più le abilitazioni per rimanere nella sessione chat. + </string> +</multi_floater> diff --git a/indra/newview/skins/default/xui/it/floater_image_preview.xml b/indra/newview/skins/default/xui/it/floater_image_preview.xml index a4bacba91fee5c9df13fd5e010c127d475d80a32..8ee3181bce33d5b62fd1668d5d60503ce88904be 100644 --- a/indra/newview/skins/default/xui/it/floater_image_preview.xml +++ b/indra/newview/skins/default/xui/it/floater_image_preview.xml @@ -1,32 +1,33 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Image Preview" title=""> - <text name="name_label"> - Nome: - </text> - <text name="description_label"> - Descrizione: - </text> - <text name="preview_label"> - Anteprima dell'immagine come: - </text> - <combo_box label="Tipo d'abito" name="clothing_type_combo"> - <combo_box.item name="Image" label="Immagine"/> - <combo_box.item name="Hair" label="Capelli"/> - <combo_box.item name="FemaleHead" label="Testa femminile"/> - <combo_box.item name="FemaleUpperBody" label="Corpo femminile superiore"/> - <combo_box.item name="FemaleLowerBody" label="Corpo femminile inferiore"/> - <combo_box.item name="MaleHead" label="Testa maschile"/> - <combo_box.item name="MaleUpperBody" label="Corpo maschile superiore"/> - <combo_box.item name="MaleLowerBody" label="Corpo maschile inferiore"/> - <combo_box.item name="Skirt" label="Gonna"/> - <combo_box.item name="SculptedPrim" label="Oggetto sculpt"/> - </combo_box> - <text name="bad_image_text"> - Non è stato possibile leggere l'immagine. - -Prova a salvare in formato targa (.tga) a 24 bit. - </text> - <check_box label="Usa compressione ottimizzata" name="lossless_check"/> - <button label="Annulla" name="cancel_btn"/> - <button label="Carica ([AMOUNT] L$)" name="ok_btn"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Image Preview" title=""> + <text name="name_label"> + Nome: + </text> + <text name="description_label"> + Descrizione: + </text> + <text name="preview_label"> + Anteprima dell' +immagine come: + </text> + <combo_box label="Tipo d'abito" name="clothing_type_combo" left="120" width="166"> + <combo_box.item name="Image" label="Immagine"/> + <combo_box.item name="Hair" label="Capelli"/> + <combo_box.item name="FemaleHead" label="Testa femminile"/> + <combo_box.item name="FemaleUpperBody" label="Corpo femminile superiore"/> + <combo_box.item name="FemaleLowerBody" label="Corpo femminile inferiore"/> + <combo_box.item name="MaleHead" label="Testa maschile"/> + <combo_box.item name="MaleUpperBody" label="Corpo maschile superiore"/> + <combo_box.item name="MaleLowerBody" label="Corpo maschile inferiore"/> + <combo_box.item name="Skirt" label="Gonna"/> + <combo_box.item name="SculptedPrim" label="Oggetto sculpt"/> + </combo_box> + <text name="bad_image_text"> + Non è stato possibile leggere l'immagine. + +Prova a salvare in formato targa (.tga) a 24 bit. + </text> + <check_box label="Usa compressione ottimizzata" name="lossless_check"/> + <button label="Annulla" name="cancel_btn"/> + <button label="Carica ([AMOUNT] L$)" name="ok_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_inspect.xml b/indra/newview/skins/default/xui/it/floater_inspect.xml index 17a0a71719d200d3cb60461eec0c0c60f38dd0ad..cbf2935c77b67a66e0af64a61fe1a57ec3e1955a 100644 --- a/indra/newview/skins/default/xui/it/floater_inspect.xml +++ b/indra/newview/skins/default/xui/it/floater_inspect.xml @@ -1,11 +1,11 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="inspect" title="Ispeziona oggetti"> - <scroll_list name="object_list" tool_tip="Seleziona un oggetto da questo elenco per evidenziarlo inworld"> - <column label="Nome dell'oggetto" name="object_name"/> - <column label="Nome del proprietario" name="owner_name"/> - <column label="Nome del creatore" name="creator_name"/> - <column label="Data di creazione" name="creation_date"/> - </scroll_list> - <button label="Vedi il profilo del proprietario..." label_selected="" name="button owner" tool_tip="Vedi il profilo del proprietario dell'oggetto evidenziato"/> - <button label="Vedi il profilo del creatore..." label_selected="" name="button creator" tool_tip="Vedi il profilo del creatore originale dell'oggetto evidenziato"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="inspect" title="Ispeziona oggetti"> + <scroll_list name="object_list" tool_tip="Seleziona un oggetto da questo elenco per evidenziarlo inworld"> + <column label="Nome dell'oggetto" name="object_name"/> + <column label="Nome del proprietario" name="owner_name"/> + <column label="Nome del creatore" name="creator_name"/> + <column label="Data di creazione" name="creation_date"/> + </scroll_list> + <button label="Vedi il profilo del proprietario..." label_selected="" name="button owner" tool_tip="Vedi il profilo del proprietario dell'oggetto evidenziato"/> + <button label="Vedi il profilo del creatore..." label_selected="" name="button creator" tool_tip="Vedi il profilo del creatore originale dell'oggetto evidenziato"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_inventory.xml b/indra/newview/skins/default/xui/it/floater_inventory.xml index bb7d387f22c35ed80d011e4665b555c465e89e6c..f21f213497649774880db0e79055cfee432cfe6b 100644 --- a/indra/newview/skins/default/xui/it/floater_inventory.xml +++ b/indra/newview/skins/default/xui/it/floater_inventory.xml @@ -1,47 +1,47 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Inventory" title="Inventario"> - <search_editor label="Scrivi qui per cercare" name="inventory search editor"/> - <tab_container name="inventory filter tabs"> - <inventory_panel label="Tutti gli elementi" name="All Items"/> - <inventory_panel label="Elementi recenti" name="Recent Items"/> - </tab_container> - <menu_bar name="Inventory Menu"> - <menu label="File" name="File"> - <menu_item_call label="Apri" name="Open"/> - <menu_item_call label="Nuova finestra" name="New Window"/> - <menu_item_call label="Mostra Filtri" name="Show Filters"/> - <menu_item_call label="Azzera Filtri" name="Reset Current"/> - <menu_item_call label="Chiudi tutte le cartelle" name="Close All Folders"/> - <menu_item_call label="Svuota Cestino" name="Empty Trash"/> - </menu> - <menu label="Crea" name="Create"> - <menu_item_call label="Nuova Cartella" name="New Folder"/> - <menu_item_call label="Nuovo Script" name="New Script"/> - <menu_item_call label="Nuova Nota" name="New Note"/> - <menu_item_call label="Nuova Gesture" name="New Gesture"/> - <menu name="New Clothes"> - <menu_item_call label="Nuova Camicia" name="New Shirt"/> - <menu_item_call label="Nuovi Pantaloni" name="New Pants"/> - <menu_item_call label="Nuove Scarpe" name="New Shoes"/> - <menu_item_call label="Nuove Calze" name="New Socks"/> - <menu_item_call label="Nuova Giacca" name="New Jacket"/> - <menu_item_call label="Nuova Gonna" name="New Skirt"/> - <menu_item_call label="Nuovi Guanti" name="New Gloves"/> - <menu_item_call label="Nuova Canottiera" name="New Undershirt"/> - <menu_item_call label="Nuove Mutande" name="New Underpants"/> - </menu> - <menu name="New Body Parts"> - <menu_item_call label="Nuova Forma del Corpo" name="New Shape"/> - <menu_item_call label="Nuova Pelle" name="New Skin"/> - <menu_item_call label="Nuovi Capelli" name="New Hair"/> - <menu_item_call label="Nuovi Occhi" name="New Eyes"/> - </menu> - </menu> - <menu label="Ordinamento" name="Sort"> - <menu_item_check label="Per nome" name="By Name"/> - <menu_item_check label="Per data" name="By Date"/> - <menu_item_check label="Cartelle sempre per nome" name="Folders Always By Name"/> - <menu_item_check label="Cartelle di sistema sempre in cima" name="System Folders To Top"/> - </menu> - </menu_bar> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Inventory" title="Inventario"> + <search_editor label="Scrivi qui per cercare" name="inventory search editor"/> + <tab_container name="inventory filter tabs"> + <inventory_panel label="Tutti gli elementi" name="All Items"/> + <inventory_panel label="Elementi recenti" name="Recent Items"/> + </tab_container> + <menu_bar name="Inventory Menu"> + <menu label="File" name="File"> + <menu_item_call label="Apri" name="Open"/> + <menu_item_call label="Nuova finestra" name="New Window"/> + <menu_item_call label="Mostra Filtri" name="Show Filters"/> + <menu_item_call label="Azzera Filtri" name="Reset Current"/> + <menu_item_call label="Chiudi tutte le cartelle" name="Close All Folders"/> + <menu_item_call label="Svuota Cestino" name="Empty Trash"/> + </menu> + <menu label="Crea" name="Create"> + <menu_item_call label="Nuova Cartella" name="New Folder"/> + <menu_item_call label="Nuovo Script" name="New Script"/> + <menu_item_call label="Nuova Nota" name="New Note"/> + <menu_item_call label="Nuova Gesture" name="New Gesture"/> + <menu name="New Clothes"> + <menu_item_call label="Nuova Camicia" name="New Shirt"/> + <menu_item_call label="Nuovi Pantaloni" name="New Pants"/> + <menu_item_call label="Nuove Scarpe" name="New Shoes"/> + <menu_item_call label="Nuove Calze" name="New Socks"/> + <menu_item_call label="Nuova Giacca" name="New Jacket"/> + <menu_item_call label="Nuova Gonna" name="New Skirt"/> + <menu_item_call label="Nuovi Guanti" name="New Gloves"/> + <menu_item_call label="Nuova Canottiera" name="New Undershirt"/> + <menu_item_call label="Nuove Mutande" name="New Underpants"/> + </menu> + <menu name="New Body Parts"> + <menu_item_call label="Nuova Forma del Corpo" name="New Shape"/> + <menu_item_call label="Nuova Pelle" name="New Skin"/> + <menu_item_call label="Nuovi Capelli" name="New Hair"/> + <menu_item_call label="Nuovi Occhi" name="New Eyes"/> + </menu> + </menu> + <menu label="Ordinamento" name="Sort"> + <menu_item_check label="Per nome" name="By Name"/> + <menu_item_check label="Per data" name="By Date"/> + <menu_item_check label="Cartelle sempre per nome" name="Folders Always By Name"/> + <menu_item_check label="Cartelle di sistema sempre in cima" name="System Folders To Top"/> + </menu> + </menu_bar> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/it/floater_inventory_item_properties.xml index 1312cac3c557643e754fad0a568d0ce729c80b95..e32f57e9f4e635f4b25701ae4f805ac658e3c0d8 100644 --- a/indra/newview/skins/default/xui/it/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/it/floater_inventory_item_properties.xml @@ -1,85 +1,81 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="item properties" title="Proprietà dell'oggetto nell'inventario"> - <text name="LabelItemNameTitle"> - Nome: - </text> - <text name="LabelItemDescTitle"> - Descrizione: - </text> - <text name="LabelCreatorTitle"> - Creatore: - </text> - <text name="LabelCreatorName"> - Nicole Linden - </text> - <button label="Profilo..." label_selected="" name="BtnCreator"/> - <text name="LabelOwnerTitle"> - proprietario: - </text> - <text name="LabelOwnerName"> - Thrax Linden - </text> - <button label="Profilo..." label_selected="" name="BtnOwner"/> - <text name="LabelAcquiredTitle"> - Acquisito: - </text> - <text name="LabelAcquiredDate"> - Wed May 24 12:50:46 2006 - </text> - <text name="OwnerLabel"> - Tu puoi: - </text> - <check_box label="Modificare" name="CheckOwnerModify"/> - <check_box label="Copiare" name="CheckOwnerCopy"/> - <check_box label="Rivendere/Regalare" name="CheckOwnerTransfer"/> - <text name="BaseMaskDebug"> - B: - </text> - <text name="OwnerMaskDebug"> - O: - </text> - <text name="GroupMaskDebug"> - G: - </text> - <text name="EveryoneMaskDebug"> - E: - </text> - <text name="NextMaskDebug"> - N: - </text> - <check_box label="Condividi con il gruppo" name="CheckShareWithGroup"/> - <check_box label="Permetti a tutti di copiare" name="CheckEveryoneCopy"/> - <text name="NextOwnerLabel"> - Il prossimo proprietario può: - </text> - <check_box label="Modificare" name="CheckNextOwnerModify"/> - <check_box label="Copiare" name="CheckNextOwnerCopy"/> - <check_box label="Rivendere/Regalare" name="CheckNextOwnerTransfer"/> - <text name="SaleLabel"> - Metti l'oggetto: - </text> - <check_box label="In vendita" name="CheckPurchase"/> - <radio_group name="RadioSaleType"> - <radio_item name="radio"> - Originale - </radio_item> - <radio_item name="radio2"> - Copia - </radio_item> - </radio_group> - <text name="TextPrice"> - Prezzo: L$ - </text> - <string name="unknown"> - (sconosciuto) - </string> - <string name="public"> - (pubblico) - </string> - <string name="you_can"> - Tu puoi: - </string> - <string name="owner_can"> - Il proprietario può: - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="item properties" title="Proprietà dell'oggetto nell'inventario"> + <text name="LabelItemNameTitle"> + Nome: + </text> + <text name="LabelItemDescTitle"> + Descrizione: + </text> + <text name="LabelCreatorTitle"> + Creatore: + </text> + <text name="LabelCreatorName"> + Nicole Linden + </text> + <button label="Profilo..." label_selected="" name="BtnCreator"/> + <text name="LabelOwnerTitle"> + proprietario: + </text> + <text name="LabelOwnerName"> + Thrax Linden + </text> + <button label="Profilo..." label_selected="" name="BtnOwner"/> + <text name="LabelAcquiredTitle"> + Acquisito: + </text> + <text name="LabelAcquiredDate"> + Wed May 24 12:50:46 2006 + </text> + <text name="OwnerLabel"> + Tu puoi: + </text> + <check_box label="Modificare" name="CheckOwnerModify"/> + <check_box left_delta="88" label="Copiare" name="CheckOwnerCopy"/> + <check_box label="Rivendere/Regalare" name="CheckOwnerTransfer"/> + <text name="BaseMaskDebug"> + B: + </text> + <text name="OwnerMaskDebug"> + O: + </text> + <text name="GroupMaskDebug"> + G: + </text> + <text name="EveryoneMaskDebug"> + E: + </text> + <text name="NextMaskDebug"> + N: + </text> + <check_box label="Condividi con il gruppo" name="CheckShareWithGroup"/> + <check_box label="Permetti a tutti di copiare" name="CheckEveryoneCopy"/> + <text name="NextOwnerLabel" width="230"> + Il prossimo proprietario può: + </text> + <check_box label="Modificare" name="CheckNextOwnerModify"/> + <check_box left_delta="88" label="Copiare" name="CheckNextOwnerCopy"/> + <check_box label="Rivendere/Regalare" name="CheckNextOwnerTransfer"/> + <text name="SaleLabel"> + Metti l'oggetto: + </text> + <check_box label="In vendita" name="CheckPurchase"/> + <radio_group name="RadioSaleType" left_delta="88" > + <radio_item name="radio" label="Originale" /> + <radio_item name="radio2" label="Copia" /> + </radio_group> + <text name="TextPrice"> + Prezzo: L$ + </text> + <string name="unknown"> + (sconosciuto) + </string> + <string name="public"> + (pubblico) + </string> + <string name="you_can"> + Tu puoi: + </string> + <string name="owner_can"> + Il proprietario può: + </string> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/it/floater_inventory_view_finder.xml index 2311f689931a0696ce06fc0f4c7f06fa1ee28af1..935e1d70492878e23a77ef7b58b04eddabf15305 100644 --- a/indra/newview/skins/default/xui/it/floater_inventory_view_finder.xml +++ b/indra/newview/skins/default/xui/it/floater_inventory_view_finder.xml @@ -1,24 +1,24 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Inventory Finder" title="Inventario_Cose_recenti"> - <check_box label="Animazioni" name="check_animation"/> - <check_box label="Biglietti da visita" name="check_calling_card"/> - <check_box label="Abiti" name="check_clothing"/> - <check_box label="Gesture" name="check_gesture"/> - <check_box label="Landmark" name="check_landmark"/> - <check_box label="Notecard" name="check_notecard"/> - <check_box label="Oggetti" name="check_object"/> - <check_box label="Script" name="check_script"/> - <check_box label="Suoni" name="check_sound"/> - <check_box label="Texture" name="check_texture"/> - <check_box label="Fotografie" name="check_snapshot"/> - <button label="Tutto" label_selected="Tutto" name="All"/> - <button label="Nulla" label_selected="Nulla" name="None"/> - <check_box label="Mostra sempre le cartelle" name="check_show_empty"/> - <check_box label="Dall'ultima sconnessione" name="check_since_logoff"/> - <text name="- OR -"> - - Oppure - - </text> - <spinner label="Ore fa" name="spin_hours_ago"/> - <spinner label="Giorni fa" name="spin_days_ago"/> - <button label="Chiudi" label_selected="Chiudi" name="Close"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Inventory Finder" title="Inventario_Cose_recenti"> + <check_box label="Animazioni" name="check_animation"/> + <check_box label="Biglietti da visita" name="check_calling_card"/> + <check_box label="Abiti" name="check_clothing"/> + <check_box label="Gesture" name="check_gesture"/> + <check_box label="Landmark" name="check_landmark"/> + <check_box label="Notecard" name="check_notecard"/> + <check_box label="Oggetti" name="check_object"/> + <check_box label="Script" name="check_script"/> + <check_box label="Suoni" name="check_sound"/> + <check_box label="Texture" name="check_texture"/> + <check_box label="Fotografie" name="check_snapshot"/> + <button label="Tutto" label_selected="Tutto" name="All"/> + <button label="Nulla" label_selected="Nulla" name="None"/> + <check_box label="Mostra sempre le cartelle" name="check_show_empty"/> + <check_box label="Dall'ultima sconnessione" name="check_since_logoff"/> + <text name="- OR -"> + - Oppure - + </text> + <spinner label="Ore fa" name="spin_hours_ago"/> + <spinner label="Giorni fa" name="spin_days_ago"/> + <button label="Chiudi" label_selected="Chiudi" name="Close"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_joystick.xml b/indra/newview/skins/default/xui/it/floater_joystick.xml index 6f2ee1668f8cf5768fb706de634ea39917ff9ea8..dcd637f199ee155a94124d23c19418d1a3e1987d 100644 --- a/indra/newview/skins/default/xui/it/floater_joystick.xml +++ b/indra/newview/skins/default/xui/it/floater_joystick.xml @@ -1,83 +1,85 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Joystick" title="Configurazione Joystick"> - <check_box name="enable_joystick"> - Abilita Joystick: - </check_box> - <spinner label="Mapping asse X" name="JoystickAxis1"/> - <spinner label="Mapping asse Y" name="JoystickAxis2"/> - <spinner label="Mapping asse Z" name="JoystickAxis0"/> - <spinner label="Mapping della direzione o Pitch" name="JoystickAxis4"/> - <spinner label="Mapping dell'altitudine o Yaw" name="JoystickAxis5"/> - <spinner label="Mapping del Roll" name="JoystickAxis3"/> - <spinner label="Mapping dello Zoom" name="JoystickAxis6"/> - <check_box label="Zoom diretto" name="ZoomDirect"/> - <check_box label="Cursore 3D" name="Cursor3D"/> - <check_box label="Auto livellamento" name="AutoLeveling"/> - <text name="Control Modes:"> - Modalità di controllo: - </text> - <check_box name="JoystickAvatarEnabled"> - Avatar - </check_box> - <check_box name="JoystickBuildEnabled"> - Costruire - </check_box> - <check_box name="JoystickFlycamEnabled"> - Camera dall'alto - </check_box> - <text name="XScale"> - Regolazione X - </text> - <text name="YScale"> - Regolazione Y - </text> - <text name="ZScale"> - Regolazione Z - </text> - <text name="PitchScale"> - Regolazione della direzione o Pitch - </text> - <text name="YawScale"> - Regolazione dell'altitudine o Yaw - </text> - <text name="RollScale"> - Regolazione del Roll - </text> - <text name="XDeadZone"> - Angolo morto X - </text> - <text name="YDeadZone"> - Angolo morto Y - </text> - <text name="ZDeadZone"> - Angolo morto Z - </text> - <text name="PitchDeadZone"> - Angolo morto della direzione o Pitch - </text> - <text name="YawDeadZone"> - Angolo morto dell'altitudine o Yaw - </text> - <text name="RollDeadZone"> - Angolo morto del Roll - </text> - <text name="Feathering"> - Smussamento - </text> - <text name="ZoomScale2"> - Regolazione dello zoom - </text> - <text name="ZoomDeadZone"> - Angolo morto dello zoom - </text> - <button label="SpaceNavigator Defaults" name="SpaceNavigatorDefaults"/> - <string name="JoystickMonitor"> - Monitor del Joystick - </string> - <string name="Axis"> - Assi [NUM] - </string> - <string name="NoDevice"> - nessun dispositivo trovato - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Joystick" title="Configurazione Joystick"> + <check_box name="enable_joystick"> + Abilita Joystick: + </check_box> + <spinner label="Mapping asse X" name="JoystickAxis1"/> + <spinner label="Mapping asse Y" name="JoystickAxis2"/> + <spinner label="Mapping asse Z" name="JoystickAxis0"/> + <spinner label="Mapping della direzione o Pitch" name="JoystickAxis4"/> + <spinner label="Mapping dell'altitudine o Yaw" name="JoystickAxis5"/> + <spinner label="Mapping del Roll" name="JoystickAxis3"/> + <spinner label="Mapping dello Zoom" name="JoystickAxis6"/> + <check_box label="Zoom diretto" name="ZoomDirect"/> + <check_box label="Cursore 3D" name="Cursor3D"/> + <check_box label="Auto livellamento" name="AutoLeveling"/> + <text name="Control Modes:"> + Modalità di controllo: + </text> + <check_box name="JoystickAvatarEnabled"> + Avatar + </check_box> + <check_box name="JoystickBuildEnabled"> + Costruire + </check_box> + <check_box name="JoystickFlycamEnabled"> + Camera dall'alto + </check_box> + <text name="XScale"> + Regolazione X + </text> + <text name="YScale"> + Regolazione Y + </text> + <text name="ZScale"> + Regolazione Z + </text> + <text name="PitchScale"> + Regolazione della direzione o Pitch + </text> + <text name="YawScale"> + Regolazione dell'altitudine o Yaw + </text> + <text name="RollScale"> + Regolazione del Roll + </text> + <text name="XDeadZone"> + Angolo morto X + </text> + <text name="YDeadZone"> + Angolo morto Y + </text> + <text name="ZDeadZone"> + Angolo morto Z + </text> + <text name="PitchDeadZone"> + Angolo morto della direzione o Pitch + </text> + <text name="YawDeadZone"> + Angolo morto dell'altitudine o Yaw + </text> + <text name="RollDeadZone"> + Angolo morto del Roll + </text> + <text name="Feathering"> + Smussamento + </text> + <text name="ZoomScale2"> + Regolazione dello zoom + </text> + <text name="ZoomDeadZone"> + Angolo morto dello zoom + </text> + <button label="SpaceNavigator Defaults" name="SpaceNavigatorDefaults"/> + <button label="OK" label_selected="OK" name="ok_btn"/> + <button label="Annulla" label_selected="Annulla" name="cancel_btn"/> + <string name="JoystickMonitor"> + Monitor del Joystick + </string> + <string name="Axis"> + Assi [NUM] + </string> + <string name="NoDevice"> + nessun dispositivo trovato + </string> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_lagmeter.xml b/indra/newview/skins/default/xui/it/floater_lagmeter.xml index b45ec00d9a9d2c69d1b5d622164ac5e77093dced..d14f12ea4a7210b0b096169914ff739002171372 100644 --- a/indra/newview/skins/default/xui/it/floater_lagmeter.xml +++ b/indra/newview/skins/default/xui/it/floater_lagmeter.xml @@ -1,152 +1,152 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_lagmeter" title="Misuratore del lag"> - <button label="" label_selected="" name="client_lagmeter" tool_tip="Stato del lag del programma in locale"/> - <text name="client"> - Programma in locale: - </text> - <text name="client_text"> - Normale - </text> - <button label="" label_selected="" name="network_lagmeter" tool_tip="Stato del lag del network"/> - <text name="network"> - Network: - </text> - <text name="network_text"> - Normale - </text> - <button label="" label_selected="" name="server_lagmeter" tool_tip="Stato del lag del server"/> - <text name="server"> - Server: - </text> - <text name="server_text"> - Normale - </text> - <button label="?" name="server_help"/> - <button label=">>" name="minimize"/> - <string name="max_title_msg"> - Misuratore del lag - </string> - <string name="max_width_px"> - 360 - </string> - <string name="min_title_msg"> - Lag - </string> - <string name="min_width_px"> - 90 - </string> - <string name="client_text_msg"> - Programma in locale - </string> - <string name="client_frame_rate_critical_fps"> - 10 - </string> - <string name="client_frame_rate_warning_fps"> - 15 - </string> - <string name="client_frame_time_window_bg_msg"> - Normale, finestra sullo sfondo - </string> - <string name="client_frame_time_critical_msg"> - Velocità dei frame del programma in locale al di sotto di [CLIENT_FRAME_RATE_CRITICAL] - </string> - <string name="client_frame_time_warning_msg"> - Velocità dei frame del programma in locale tra [CLIENT_FRAME_RATE_CRITICAL] e [CLIENT_FRAME_RATE_WARNING] - </string> - <string name="client_frame_time_normal_msg"> - Normale - </string> - <string name="client_draw_distance_cause_msg"> - Possibile causa: Campo visivo impostato troppo alto - </string> - <string name="client_texture_loading_cause_msg"> - Possibile causa: Caricamento immagini - </string> - <string name="client_texture_memory_cause_msg"> - Possibile causa: Troppe immagini in memoria - </string> - <string name="client_complex_objects_cause_msg"> - Possibile causa: Troppi oggetti complessi intorno - </string> - <string name="network_text_msg"> - Network - </string> - <string name="network_packet_loss_critical_pct"> - 10 - </string> - <string name="network_packet_loss_warning_pct"> - 5 - </string> - <string name="network_packet_loss_critical_msg"> - La connessione sta calando al di sotto del [NETWORK_PACKET_LOSS_CRITICAL]% di pacchetti - </string> - <string name="network_packet_loss_warning_msg"> - La connessione sta calando tra il [NETWORK_PACKET_LOSS_WARNING]% e il [NETWORK_PACKET_LOSS_CRITICAL]% di pacchetti - </string> - <string name="network_performance_normal_msg"> - Normale - </string> - <string name="network_ping_critical_ms"> - 600 - </string> - <string name="network_ping_warning_ms"> - 300 - </string> - <string name="network_ping_critical_msg"> - Il tempo di ping della connessione è al di sopra di [NETWORK_PING_CRITICAL] ms - </string> - <string name="network_ping_warning_msg"> - Il tempo di ping della connessione è tra [NETWORK_PING_WARNING]-[NETWORK_PING_CRITICAL] ms - </string> - <string name="network_packet_loss_cause_msg"> - Possibile cattiva connessione o la larghezza di banda impostata nelle preferenze troppo alta. - </string> - <string name="network_ping_cause_msg"> - Possibile cattiva connessione o l'apertura di un programma di scambio files. - </string> - <string name="server_text_msg"> - Server - </string> - <string name="server_frame_rate_critical_fps"> - 20 - </string> - <string name="server_frame_rate_warning_fps"> - 30 - </string> - <string name="server_single_process_max_time_ms"> - 20 - </string> - <string name="server_frame_time_critical_msg"> - Velocità del simulatore al di sotto di [SERVER_FRAME_RATE_CRITICAL] - </string> - <string name="server_frame_time_warning_msg"> - Velocità del simulatore tra [SERVER_FRAME_RATE_CRITICAL] e [SERVER_FRAME_RATE_WARNING] - </string> - <string name="server_frame_time_normal_msg"> - Normale - </string> - <string name="server_physics_cause_msg"> - Possibile causa: troppi oggetti fisici - </string> - <string name="server_scripts_cause_msg"> - Possibile causa: troppi oggetti scriptati - </string> - <string name="server_net_cause_msg"> - Possibile causa: eccessivo traffico sulla rete - </string> - <string name="server_agent_cause_msg"> - Possibile causa: troppi residenti in movimento nella regione - </string> - <string name="server_images_cause_msg"> - Possibile causa: troppe elaborazioni di immagini - </string> - <string name="server_generic_cause_msg"> - Possibile causa: carico eccessivo del simulatore - </string> - <string name="smaller_label"> - >> - </string> - <string name="bigger_label"> - << - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_lagmeter" title="Misuratore del lag"> + <button label="" label_selected="" name="client_lagmeter" tool_tip="Stato del lag del programma in locale"/> + <text name="client"> + Programma in locale: + </text> + <text name="client_text"> + Normale + </text> + <button label="" label_selected="" name="network_lagmeter" tool_tip="Stato del lag del network"/> + <text name="network"> + Network: + </text> + <text name="network_text"> + Normale + </text> + <button label="" label_selected="" name="server_lagmeter" tool_tip="Stato del lag del server"/> + <text name="server"> + Server: + </text> + <text name="server_text"> + Normale + </text> + <button label="?" name="server_help"/> + <button label=">>" name="minimize"/> + <string name="max_title_msg"> + Misuratore del lag + </string> + <string name="max_width_px"> + 360 + </string> + <string name="min_title_msg"> + Lag + </string> + <string name="min_width_px"> + 90 + </string> + <string name="client_text_msg"> + Programma in locale + </string> + <string name="client_frame_rate_critical_fps"> + 10 + </string> + <string name="client_frame_rate_warning_fps"> + 15 + </string> + <string name="client_frame_time_window_bg_msg"> + Normale, finestra sullo sfondo + </string> + <string name="client_frame_time_critical_msg"> + Velocità dei frame del programma in locale al di sotto di [CLIENT_FRAME_RATE_CRITICAL] + </string> + <string name="client_frame_time_warning_msg"> + Velocità dei frame del programma in locale tra [CLIENT_FRAME_RATE_CRITICAL] e [CLIENT_FRAME_RATE_WARNING] + </string> + <string name="client_frame_time_normal_msg"> + Normale + </string> + <string name="client_draw_distance_cause_msg"> + Possibile causa: Campo visivo impostato troppo alto + </string> + <string name="client_texture_loading_cause_msg"> + Possibile causa: Caricamento immagini + </string> + <string name="client_texture_memory_cause_msg"> + Possibile causa: Troppe immagini in memoria + </string> + <string name="client_complex_objects_cause_msg"> + Possibile causa: Troppi oggetti complessi intorno + </string> + <string name="network_text_msg"> + Network + </string> + <string name="network_packet_loss_critical_pct"> + 10 + </string> + <string name="network_packet_loss_warning_pct"> + 5 + </string> + <string name="network_packet_loss_critical_msg"> + La connessione sta calando al di sotto del [NETWORK_PACKET_LOSS_CRITICAL]% di pacchetti + </string> + <string name="network_packet_loss_warning_msg"> + La connessione sta calando tra il [NETWORK_PACKET_LOSS_WARNING]% e il [NETWORK_PACKET_LOSS_CRITICAL]% di pacchetti + </string> + <string name="network_performance_normal_msg"> + Normale + </string> + <string name="network_ping_critical_ms"> + 600 + </string> + <string name="network_ping_warning_ms"> + 300 + </string> + <string name="network_ping_critical_msg"> + Il tempo di ping della connessione è al di sopra di [NETWORK_PING_CRITICAL] ms + </string> + <string name="network_ping_warning_msg"> + Il tempo di ping della connessione è tra [NETWORK_PING_WARNING]-[NETWORK_PING_CRITICAL] ms + </string> + <string name="network_packet_loss_cause_msg"> + Possibile cattiva connessione o la larghezza di banda impostata nelle preferenze troppo alta. + </string> + <string name="network_ping_cause_msg"> + Possibile cattiva connessione o l'apertura di un programma di scambio files. + </string> + <string name="server_text_msg"> + Server + </string> + <string name="server_frame_rate_critical_fps"> + 20 + </string> + <string name="server_frame_rate_warning_fps"> + 30 + </string> + <string name="server_single_process_max_time_ms"> + 20 + </string> + <string name="server_frame_time_critical_msg"> + Velocità del simulatore al di sotto di [SERVER_FRAME_RATE_CRITICAL] + </string> + <string name="server_frame_time_warning_msg"> + Velocità del simulatore tra [SERVER_FRAME_RATE_CRITICAL] e [SERVER_FRAME_RATE_WARNING] + </string> + <string name="server_frame_time_normal_msg"> + Normale + </string> + <string name="server_physics_cause_msg"> + Possibile causa: troppi oggetti fisici + </string> + <string name="server_scripts_cause_msg"> + Possibile causa: troppi oggetti scriptati + </string> + <string name="server_net_cause_msg"> + Possibile causa: eccessivo traffico sulla rete + </string> + <string name="server_agent_cause_msg"> + Possibile causa: troppi residenti in movimento nella regione + </string> + <string name="server_images_cause_msg"> + Possibile causa: troppe elaborazioni di immagini + </string> + <string name="server_generic_cause_msg"> + Possibile causa: carico eccessivo del simulatore + </string> + <string name="smaller_label"> + >> + </string> + <string name="bigger_label"> + << + </string> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_land_holdings.xml b/indra/newview/skins/default/xui/it/floater_land_holdings.xml index aa97f5280696fa57563a847f96db24e7006750ae..6ac84b854f83dbaaa86b09fb6d576e749c41c26f 100644 --- a/indra/newview/skins/default/xui/it/floater_land_holdings.xml +++ b/indra/newview/skins/default/xui/it/floater_land_holdings.xml @@ -1,38 +1,39 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="land holdings floater" title="Il mio terreno"> - <scroll_list name="parcel list"> - <column label="Nome" name="name"/> - <column label="Luogo" name="location"/> - <column label="Area" name="area"/> - </scroll_list> - <button label="Teletrasportati" label_selected="Teletrasportati" name="Teleport" tool_tip="Teletrasportati al centro di questo terreno."/> - <button label="Mostra sulla mappa" label_selected="Mostra sulla mappa" name="Show on Map" tool_tip="Mostra questo terreno sulla mappa."/> - <text name="contrib_label"> - Contributi ai tuoi gruppi: - </text> - <scroll_list name="grant list"> - <column label="Gruppo" name="group"/> - <column label="Area" name="area"/> - </scroll_list> - <text name="allowed_label"> - Proprietà di terreni consentite per l'attuale piano di pagamento: - </text> - <text name="allowed_text"> - [AREA] metri quadrati - </text> - <text name="current_label"> - Attuale proprietà di terreni: - </text> - <text name="current_text"> - [AREA] metri quadrati - </text> - <text name="available_label"> - Quantità disponibile per ulteriori acquisti di terreno: - </text> - <text name="available_text"> - [AREA] metri quadrati - </text> - <string name="area_string"> - [AREA] metri quadrati - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="land holdings floater" title="Il mio terreno"> + <scroll_list name="parcel list"> + <column label="Nome del terreno" name="name"/> + <column label="Regione" name="location"/> + <column label="Tipo" name="type"/> + <column label="Area" name="area"/> + </scroll_list> + <button label="Teletrasportati" label_selected="Teletrasportati" name="Teleport" tool_tip="Teletrasportati al centro di questo terreno."/> + <button label="Mostra sulla mappa" label_selected="Mostra sulla mappa" name="Show on Map" tool_tip="Mostra questo terreno sulla mappa."/> + <text name="contrib_label"> + Contributi ai tuoi gruppi: + </text> + <scroll_list name="grant list"> + <column label="Gruppo" name="group"/> + <column label="Area" name="area"/> + </scroll_list> + <text name="allowed_label"> + Proprietà di terreni consentite per l'attuale piano di pagamento: + </text> + <text name="allowed_text"> + [AREA] metri quadrati + </text> + <text name="current_label"> + Attuale proprietà di terreni: + </text> + <text name="current_text"> + [AREA] metri quadrati + </text> + <text name="available_label"> + Quantità disponibile per ulteriori acquisti di terreno: + </text> + <text name="available_text"> + [AREA] metri quadrati + </text> + <string name="area_string"> + [AREA] metri quadrati + </string> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/it/floater_live_lsleditor.xml index be94b597257522b2c3b38673ce9bbaa9ab9064cf..55195a00f113adcaf928b4a9cbb2f9b899ad6f72 100644 --- a/indra/newview/skins/default/xui/it/floater_live_lsleditor.xml +++ b/indra/newview/skins/default/xui/it/floater_live_lsleditor.xml @@ -1,12 +1,12 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="script ed float" title="Script: Nuovo script"> - <button label="Ripristina" label_selected="Ripristina" name="Reset"/> - <check_box label="In esecuzione" name="running"/> - <check_box label="Mono" name="mono"/> - <string name="not_allowed"> - Non sei autorizzato a visualizzare questo script. - </string> - <string name="script_running"> - In esecuzione - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="script ed float" title="Script: Nuovo script"> + <button label="Ripristina" label_selected="Ripristina" name="Reset"/> + <check_box label="In esecuzione" name="running"/> + <check_box label="Mono" name="mono"/> + <string name="not_allowed"> + Non sei autorizzato a visualizzare questo script. + </string> + <string name="script_running"> + In esecuzione + </string> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_lsl_guide.xml b/indra/newview/skins/default/xui/it/floater_lsl_guide.xml index 3083fea0fe484fb0761e8e2cb6c78b4673d8050d..6a27703ad67d5e2e8fad25bad6534021f95ebd36 100644 --- a/indra/newview/skins/default/xui/it/floater_lsl_guide.xml +++ b/indra/newview/skins/default/xui/it/floater_lsl_guide.xml @@ -1,7 +1,7 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="script ed float" title="LSL Wiki"> - <check_box label="Segui il cursore" name="lock_check"/> - <combo_box label="Blocca" name="history_combo"/> - <button label="Indietro" name="back_btn"/> - <button label="Avanti" name="fwd_btn"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="script ed float" title="LSL Wiki"> + <check_box label="Segui il cursore" name="lock_check"/> + <combo_box label="Blocca" name="history_combo"/> + <button label="Indietro" name="back_btn"/> + <button label="Avanti" name="fwd_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_media_browser.xml b/indra/newview/skins/default/xui/it/floater_media_browser.xml index 219b1c9d54b261410e23d6d3f9919b8b35a8c704..1c906f5a4d3d07dc22dfa7988511ff006836a143 100644 --- a/indra/newview/skins/default/xui/it/floater_media_browser.xml +++ b/indra/newview/skins/default/xui/it/floater_media_browser.xml @@ -1,19 +1,19 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_about" title="Browser multimediale"> - <layout_stack name="stack1"> - <layout_panel name="nav_controls"> - <button label="Indietro" name="back"/> - <button label="Avanti" name="forward"/> - <button label="Ricarica" name="reload"/> - <button label="Vai" name="go"/> - </layout_panel> - <layout_panel name="parcel_owner_controls"> - <button label="Invia questo URL al terreno" name="assign"/> - </layout_panel> - <layout_panel name="external_controls"> - <button label="Apri nel web browser" name="open_browser"/> - <check_box label="Apri sempre nel web browser" name="open_always"/> - <button label="Chiudi" name="close"/> - </layout_panel> - </layout_stack> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_about" title="Browser multimediale"> + <layout_stack name="stack1"> + <layout_panel name="nav_controls"> + <button label="Indietro" name="back"/> + <button label="Avanti" name="forward"/> + <button label="Ricarica" name="reload"/> + <button label="Vai" name="go"/> + </layout_panel> + <layout_panel name="parcel_owner_controls"> + <button label="Invia questo URL al terreno" name="assign"/> + </layout_panel> + <layout_panel name="external_controls"> + <button label="Apri nel web browser" name="open_browser"/> + <check_box label="Apri sempre nel web browser" name="open_always"/> + <button label="Chiudi" name="close"/> + </layout_panel> + </layout_stack> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_mem_leaking.xml b/indra/newview/skins/default/xui/it/floater_mem_leaking.xml index e54566f1fac2142a2e4a6191451cfa1a6045b8c3..4bd0e6ae6b79712128ebb938dd3dd8a27094ac6d 100644 --- a/indra/newview/skins/default/xui/it/floater_mem_leaking.xml +++ b/indra/newview/skins/default/xui/it/floater_mem_leaking.xml @@ -1,18 +1,18 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="MemLeak" title="Simulazione di perdità di memoria"> - <spinner label="Perdità di velocità (bytes per frame):" name="leak_speed"/> - <spinner label="Memoria Persa Max (MB):" name="max_leak"/> - <text name="total_leaked_label"> - Memoria persa attuale: [SIZE] KB - </text> - <text name="note_label_1"> - [NOTE1] - </text> - <text name="note_label_2"> - [NOTE2] - </text> - <button label="Inizia" name="start_btn"/> - <button label="Stop" name="stop_btn"/> - <button label="Rilascia" name="release_btn"/> - <button label="Chiudi" name="close_btn"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="MemLeak" title="Simulazione di perdità di memoria"> + <spinner label="Perdità di velocità (bytes per frame):" name="leak_speed"/> + <spinner label="Memoria Persa Max (MB):" name="max_leak"/> + <text name="total_leaked_label"> + Memoria persa attuale: [SIZE] KB + </text> + <text name="note_label_1"> + [NOTE1] + </text> + <text name="note_label_2"> + [NOTE2] + </text> + <button label="Inizia" name="start_btn"/> + <button label="Stop" name="stop_btn"/> + <button label="Rilascia" name="release_btn"/> + <button label="Chiudi" name="close_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_moveview.xml b/indra/newview/skins/default/xui/it/floater_moveview.xml index 35d93f2a1917b176c6323c1ecfcfc776b2ac8ef7..8a869478759174fd2123b38e70972326c5711d14 100644 --- a/indra/newview/skins/default/xui/it/floater_moveview.xml +++ b/indra/newview/skins/default/xui/it/floater_moveview.xml @@ -1,11 +1,11 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="move floater" title=""> - <button label="" label_selected="" name="turn left btn" tool_tip="Gira a sinistra"/> - <button label="" label_selected="" name="turn right btn" tool_tip="Gira a destra"/> - <button label="" label_selected="" name="move up btn" tool_tip="Salta o vola in alto"/> - <button label="" label_selected="" name="move down btn" tool_tip="Inchinati o vola in basso"/> - <joystick_slide name="slide left btn" tool_tip="Vai a sinistra"/> - <joystick_slide name="slide right btn" tool_tip="Vai a destra"/> - <joystick_turn name="forward btn" tool_tip="Vai avanti"/> - <joystick_turn name="backward btn" tool_tip="Vai indietro"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="move floater" title=""> + <button label="" label_selected="" name="turn left btn" tool_tip="Gira a sinistra"/> + <button label="" label_selected="" name="turn right btn" tool_tip="Gira a destra"/> + <button label="" label_selected="" name="move up btn" tool_tip="Salta o vola in alto"/> + <button label="" label_selected="" name="move down btn" tool_tip="Inchinati o vola in basso"/> + <joystick_slide name="slide left btn" tool_tip="Vai a sinistra"/> + <joystick_slide name="slide right btn" tool_tip="Vai a destra"/> + <joystick_turn name="forward btn" tool_tip="Vai avanti"/> + <joystick_turn name="backward btn" tool_tip="Vai indietro"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_mute_object.xml b/indra/newview/skins/default/xui/it/floater_mute_object.xml index a8940799767d2a9ccc9e7c0465bb39f451eb9b0d..4b7370bad0d38188a80536c89468762883143720 100644 --- a/indra/newview/skins/default/xui/it/floater_mute_object.xml +++ b/indra/newview/skins/default/xui/it/floater_mute_object.xml @@ -1,12 +1,12 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="mute by name" title="Ignora l'oggetto dal nome"> - <text name="message"> - Ignora per nome ha effetti sull'oggetto in chat e IM, non nei suoni. -Devi scrivere esattamente il nome dell'oggetto. - </text> - <line_editor name="object_name"> - Nome dell'oggetto - </line_editor> - <button label="Ok" name="OK"/> - <button label="Annulla" name="Cancel"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="mute by name" title="Ignora l'oggetto dal nome"> + <text name="message"> + Ignora per nome ha effetti sull'oggetto in chat e IM, non nei suoni. +Devi scrivere esattamente il nome dell'oggetto. + </text> + <line_editor name="object_name"> + Nome dell'oggetto + </line_editor> + <button label="Ok" name="OK"/> + <button label="Annulla" name="Cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_my_friends.xml b/indra/newview/skins/default/xui/it/floater_my_friends.xml index f38a92b5dbdbdcc0c8b4e305fd65613054ad3d32..a77b8aff80fbb710052a573e1b57e43c70389682 100644 --- a/indra/newview/skins/default/xui/it/floater_my_friends.xml +++ b/indra/newview/skins/default/xui/it/floater_my_friends.xml @@ -1,7 +1,7 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_my_friends" title="Contatti"> - <tab_container name="friends_and_groups"> - <panel label="Amici" name="friends_panel"/> - <panel label="Gruppi" name="groups_panel"/> - </tab_container> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_my_friends" title="Contatti"> + <tab_container name="friends_and_groups"> + <panel label="Amici" name="friends_panel"/> + <panel label="Gruppi" name="groups_panel"/> + </tab_container> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_openobject.xml b/indra/newview/skins/default/xui/it/floater_openobject.xml index 77d4c9d66d23a2e60a99808288c70cdbd5bab9f5..d04a6f3632744d7f1a3f8f82e110ced7306d1d95 100644 --- a/indra/newview/skins/default/xui/it/floater_openobject.xml +++ b/indra/newview/skins/default/xui/it/floater_openobject.xml @@ -1,8 +1,8 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="objectcontents" title="Contenuto dell'oggetto"> - <text name="object_name"> - [DESC]: - </text> - <button label="Copia nell'inventario" label_selected="Copia nell'inventario" name="copy_to_inventory_button"/> - <button label="Copia ed indossa" label_selected="Copia ed indossa" name="copy_and_wear_button"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="objectcontents" title="Contenuto dell'oggetto"> + <text name="object_name"> + [DESC]: + </text> + <button label="Copia nell'inventario" label_selected="Copia nell'inventario" name="copy_to_inventory_button"/> + <button label="Copia ed indossa" label_selected="Copia ed indossa" name="copy_and_wear_button"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_pay.xml b/indra/newview/skins/default/xui/it/floater_pay.xml index c33f7f3d87e7010e62e8e3c79a772cc91adb3036..dbf374a67cf4300ea748fb462a68b8b77a194117 100644 --- a/indra/newview/skins/default/xui/it/floater_pay.xml +++ b/indra/newview/skins/default/xui/it/floater_pay.xml @@ -1,21 +1,21 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Give Money" title=""> - <button label="1 L$" label_selected="1 L$" name="fastpay 1"/> - <button label="5 L$" label_selected="5 L$" name="fastpay 5"/> - <button label="10 L$" label_selected="10 L$" name="fastpay 10"/> - <button label="20 L$" label_selected="20 L$" name="fastpay 20"/> - <button label="Paga" label_selected="Paga" name="pay btn"/> - <button label="Annulla" label_selected="Annulla" name="cancel btn"/> - <text name="payee_label"> - Paga residente: - </text> - <text name="payee_name"> - [FIRST] [LAST] - </text> - <text name="fastpay text"> - Pagamento veloce: - </text> - <text name="amount text"> - Ammontare: - </text> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Give Money" title=""> + <button label="1 L$" label_selected="1 L$" name="fastpay 1"/> + <button label="5 L$" label_selected="5 L$" name="fastpay 5"/> + <button label="10 L$" label_selected="10 L$" name="fastpay 10"/> + <button label="20 L$" label_selected="20 L$" name="fastpay 20"/> + <button label="Paga" label_selected="Paga" name="pay btn"/> + <button label="Annulla" label_selected="Annulla" name="cancel btn"/> + <text name="payee_label"> + Paga residente: + </text> + <text name="payee_name"> + [FIRST] [LAST] + </text> + <text name="fastpay text"> + Pagamento veloce: + </text> + <text name="amount text"> + Ammontare: + </text> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_pay_object.xml b/indra/newview/skins/default/xui/it/floater_pay_object.xml index 8140ed64ab1f8732634db9cabe618697e30ddc3f..021b2d7647f21134ad7dd09f8b6858e5ca8ed6d0 100644 --- a/indra/newview/skins/default/xui/it/floater_pay_object.xml +++ b/indra/newview/skins/default/xui/it/floater_pay_object.xml @@ -1,30 +1,30 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Give Money" title=""> - <text name="payee_group"> - Paga il gruppo: - </text> - <text name="payee_resident"> - Paga il residente: - </text> - <text name="payee_name"> - [FIRST] [LAST] - </text> - <text name="object_name_label"> - Mediante l'oggetto: - </text> - <text name="object_name_text"> - ... - </text> - <text name="fastpay text"> - Pagamento diretto: - </text> - <text name="amount text"> - Ammontare: - </text> - <button label="1 L$" label_selected="1 L$" name="fastpay 1"/> - <button label="5 L$" label_selected="5 L$" name="fastpay 5"/> - <button label="10 L$" label_selected="10 L$" name="fastpay 10"/> - <button label="20 L$" label_selected="20 L$" name="fastpay 20"/> - <button label="Paga" label_selected="Paga" name="pay btn"/> - <button label="Cancella" label_selected="Cancella" name="cancel btn"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Give Money" title=""> + <text name="payee_group"> + Paga il gruppo: + </text> + <text name="payee_resident"> + Paga il residente: + </text> + <text name="payee_name"> + [FIRST] [LAST] + </text> + <text name="object_name_label"> + Mediante l'oggetto: + </text> + <text name="object_name_text"> + ... + </text> + <text name="fastpay text"> + Pagamento diretto: + </text> + <text name="amount text"> + Ammontare: + </text> + <button label="1 L$" label_selected="1 L$" name="fastpay 1"/> + <button label="5 L$" label_selected="5 L$" name="fastpay 5"/> + <button label="10 L$" label_selected="10 L$" name="fastpay 10"/> + <button label="20 L$" label_selected="20 L$" name="fastpay 20"/> + <button label="Paga" label_selected="Paga" name="pay btn"/> + <button label="Cancella" label_selected="Cancella" name="cancel btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_perm_prefs.xml b/indra/newview/skins/default/xui/it/floater_perm_prefs.xml new file mode 100644 index 0000000000000000000000000000000000000000..8037481f37e580b5f6b7d27ed61fbb14df612ff5 --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_perm_prefs.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="perm prefs" title="Permessi di base di importazione"> + <panel label="Permessi" name="permissions"> + <button label="?" label_selected="?" name="help"/> + <check_box label="Condividi con il gruppo" name="share_with_group"/> + <check_box label="Permetti a chiunque di copiare" name="everyone_copy"/> + <text name="NextOwnerLabel"> + Il prossimo possessore può: + </text> + <check_box label="Modificare" name="next_owner_modify"/> + <check_box label="Copiare" name="next_owner_copy"/> + <check_box label="Rivendere/Regalare" name="next_owner_transfer"/> + </panel> + <button label="OK" label_selected="OK" name="ok"/> + <button label="Annulla" label_selected="Annulla" name="cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_post_process.xml b/indra/newview/skins/default/xui/it/floater_post_process.xml index 80118160c917ebd288781bf6ed734840ded71810..226970041b2c04c1c13c0fb3d3f1b6325327676c 100644 --- a/indra/newview/skins/default/xui/it/floater_post_process.xml +++ b/indra/newview/skins/default/xui/it/floater_post_process.xml @@ -1,53 +1,53 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Post-Process Floater" title="Impostazioni di post-produzione"> - <tab_container name="Post-Process Tabs"> - <panel label="Filtro Colore" name="wmiColorFilterPanel"> - <check_box label="Abilita" name="wmiColorFilterToggle"/> - <text name="wmiColorFilterBrightnessText"> - Luminosità - </text> - <text name="wmiColorFilterSaturationText"> - Saturazione - </text> - <text name="wmiColorFilterContrastText"> - Contrasto - </text> - <text name="wmiColorFilterBaseText"> - Colore Base Contrasto - </text> - <slider label="R" name="wmiColorFilterBaseR"/> - <slider label="G" name="wmiColorFilterBaseG"/> - <slider label="B" name="wmiColorFilterBaseB"/> - <slider label="I" name="wmiColorFilterBaseI"/> - </panel> - <panel label="Visione Notturna" name="wmiNightVisionPanel"> - <check_box label="Abilita" name="wmiNightVisionToggle"/> - <text name="wmiNightVisionBrightMultText"> - Amplificazione Multipla Luce - </text> - <text name="wmiNightVisionNoiseSizeText"> - Ampiezza disturbo - </text> - <text name="wmiNightVisionNoiseStrengthText"> - Forza disturbo - </text> - </panel> - <panel label="Raggiatura" name="wmiBloomPanel"> - <check_box label="Abilita" name="wmiBloomToggle"/> - <text name="wmiBloomExtractText"> - Estrazione luminosità - </text> - <text name="wmiBloomSizeText"> - Dimensione raggiatura - </text> - <text name="wmiBloomStrengthText"> - Forza raggiatura - </text> - </panel> - <panel label="Extra" name="Extras"> - <button label="Carica effetto" label_selected="Carica effetto" name="PPLoadEffect"/> - <button label="Salva effetto" label_selected="Salva effetto" name="PPSaveEffect"/> - <line_editor label="Nome Effetto" name="PPEffectNameEditor"/> - </panel> - </tab_container> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Post-Process Floater" title="Impostazioni di post-produzione"> + <tab_container name="Post-Process Tabs"> + <panel label="Filtro Colore" name="wmiColorFilterPanel"> + <check_box label="Abilita" name="wmiColorFilterToggle"/> + <text name="wmiColorFilterBrightnessText"> + Luminosità + </text> + <text name="wmiColorFilterSaturationText"> + Saturazione + </text> + <text name="wmiColorFilterContrastText"> + Contrasto + </text> + <text name="wmiColorFilterBaseText"> + Colore Base Contrasto + </text> + <slider label="R" name="wmiColorFilterBaseR"/> + <slider label="G" name="wmiColorFilterBaseG"/> + <slider label="B" name="wmiColorFilterBaseB"/> + <slider label="I" name="wmiColorFilterBaseI"/> + </panel> + <panel label="Visione Notturna" name="wmiNightVisionPanel"> + <check_box label="Abilita" name="wmiNightVisionToggle"/> + <text name="wmiNightVisionBrightMultText"> + Amplificazione Multipla Luce + </text> + <text name="wmiNightVisionNoiseSizeText"> + Ampiezza disturbo + </text> + <text name="wmiNightVisionNoiseStrengthText"> + Forza disturbo + </text> + </panel> + <panel label="Raggiatura" name="wmiBloomPanel"> + <check_box label="Abilita" name="wmiBloomToggle"/> + <text name="wmiBloomExtractText"> + Estrazione luminosità + </text> + <text name="wmiBloomSizeText"> + Dimensione raggiatura + </text> + <text name="wmiBloomStrengthText"> + Forza raggiatura + </text> + </panel> + <panel label="Extra" name="Extras"> + <button label="Carica effetto" label_selected="Carica effetto" name="PPLoadEffect"/> + <button label="Salva effetto" label_selected="Salva effetto" name="PPSaveEffect"/> + <line_editor label="Nome Effetto" name="PPEffectNameEditor"/> + </panel> + </tab_container> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_postcard.xml b/indra/newview/skins/default/xui/it/floater_postcard.xml index e2dc74b79cc946ef920d58b93314deee4d6b6ea8..b8769f548614535874a9191cc000f1f7a876fb60 100644 --- a/indra/newview/skins/default/xui/it/floater_postcard.xml +++ b/indra/newview/skins/default/xui/it/floater_postcard.xml @@ -1,36 +1,36 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Postcard" title="Invia la fotografia via email"> - <text name="to_label"> - Email del destinatario: - </text> - <text name="from_label"> - La tua email: - </text> - <text name="name_label"> - Il tuo nome: - </text> - <text name="subject_label"> - Soggetto: - </text> - <line_editor label="Scrivi il soggetto qui." name="subject_form"/> - <text name="msg_label"> - Messaggio: - </text> - <text_editor name="msg_form"> - Scrivi il messaggio qui. - </text_editor> - <text name="fine_print"> - Se il tuo destinatario si registrerà in SL, riceverai il relativo bonus. - </text> - <button label="Annulla" name="cancel_btn"/> - <button label="Invia" name="send_btn"/> - <string name="default_subject"> - Cartolina da Second Life. - </string> - <string name="default_message"> - Vieni a vedere! - </string> - <string name="upload_message"> - "In spedizione..." - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Postcard" title="Invia la fotografia via email"> + <text name="to_label"> + Email del destinatario: + </text> + <text name="from_label"> + La tua email: + </text> + <text name="name_label"> + Il tuo nome: + </text> + <text name="subject_label"> + Soggetto: + </text> + <line_editor label="Scrivi il soggetto qui." name="subject_form"/> + <text name="msg_label"> + Messaggio: + </text> + <text_editor name="msg_form"> + Scrivi il messaggio qui. + </text_editor> + <text name="fine_print"> + Se il tuo destinatario si registrerà in SL, riceverai il relativo bonus. + </text> + <button label="Annulla" name="cancel_btn"/> + <button label="Invia" name="send_btn"/> + <string name="default_subject"> + Cartolina da Second Life. + </string> + <string name="default_message"> + Vieni a vedere! + </string> + <string name="upload_message"> + "In spedizione..." + </string> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_preferences.xml b/indra/newview/skins/default/xui/it/floater_preferences.xml index e89d1440a1d66e58c04af01bc07bb99558c672db..726b6dd70b6e36447b2b4ce9658b0acdd825e75b 100644 --- a/indra/newview/skins/default/xui/it/floater_preferences.xml +++ b/indra/newview/skins/default/xui/it/floater_preferences.xml @@ -1,8 +1,8 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Preferences" title="Preferenze"> - <button label="OK" label_selected="OK" name="OK"/> - <button label="Annulla" label_selected="Annulla" name="Cancel"/> - <button label="Applica" label_selected="Applica" name="Apply"/> - <button label="Informazioni..." label_selected="Informazioni..." name="About..."/> - <button label="Aiuto" label_selected="Aiuto" name="Help"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Preferences" title="Preferenze"> + <button label="OK" label_selected="OK" name="OK"/> + <button label="Annulla" label_selected="Annulla" name="Cancel"/> + <button label="Applica" label_selected="Applica" name="Apply"/> + <button label="Informazioni..." label_selected="Informazioni..." name="About..."/> + <button label="Aiuto" label_selected="Aiuto" name="Help"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_preview_animation.xml b/indra/newview/skins/default/xui/it/floater_preview_animation.xml index 93235b785944374ec6ef44bfbf053adfe556ac3f..95a8a960666cd2c596cc70c18c0654e78c1ad95d 100644 --- a/indra/newview/skins/default/xui/it/floater_preview_animation.xml +++ b/indra/newview/skins/default/xui/it/floater_preview_animation.xml @@ -1,8 +1,8 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="preview_anim"> - <text name="desc txt"> - Descrizione: - </text> - <button label="Esegui inworld" label_selected="Ferma" name="Anim play btn" tool_tip="Esegui questa animazione così che altri possano vederla."/> - <button label="Esegui localmente" label_selected="Ferma" name="Anim audition btn" tool_tip="Esegui questa animazione così che solo tu possa vederla."/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="preview_anim"> + <text name="desc txt"> + Descrizione: + </text> + <button label="Esegui inworld" label_selected="Ferma" name="Anim play btn" tool_tip="Esegui questa animazione così che altri possano vederla."/> + <button label="Esegui localmente" label_selected="Ferma" name="Anim audition btn" tool_tip="Esegui questa animazione così che solo tu possa vederla."/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_preview_classified.xml b/indra/newview/skins/default/xui/it/floater_preview_classified.xml index 26e783a7c7da43c4dd421b99a4df9d4a18dd4799..f78c70b1fe08f7582568b2973e03a9225a188868 100644 --- a/indra/newview/skins/default/xui/it/floater_preview_classified.xml +++ b/indra/newview/skins/default/xui/it/floater_preview_classified.xml @@ -1,2 +1,2 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="classified_preview" title="Informazione Riservata"/> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="classified_preview" title="Informazione Riservata"/> diff --git a/indra/newview/skins/default/xui/it/floater_preview_event.xml b/indra/newview/skins/default/xui/it/floater_preview_event.xml index 7fd3407d5ea9e34dc14bb3a9bad6193c5cf96168..7cc99a9fea66094cf5b57e182498fded549d4174 100644 --- a/indra/newview/skins/default/xui/it/floater_preview_event.xml +++ b/indra/newview/skins/default/xui/it/floater_preview_event.xml @@ -1,2 +1,2 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="event_preview" title="Informazione sull'evento"/> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="event_preview" title="Informazione sull'evento"/> diff --git a/indra/newview/skins/default/xui/it/floater_preview_gesture.xml b/indra/newview/skins/default/xui/it/floater_preview_gesture.xml index 13688c4c8da07fa6dee45217a0756f3f0f12dfd4..60d3a7710ef5dc7a56b8b601a3d126f386f3394b 100644 --- a/indra/newview/skins/default/xui/it/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/it/floater_preview_gesture.xml @@ -1,61 +1,58 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="gesture_preview"> - <string name="stop_txt"> - Stop - </string> - <string name="preview_txt"> - Anteprima - </string> - <string name="none_text"> - -- Nulla -- - </string> - <text name="desc_label"> - Descrizione: - </text> - <text name="trigger_label"> - Parole chiave: - </text> - <text name="replace_text" tool_tip="Sostituisci le parole chiave con questi termini. Per esempio, sostituire la parola chiave 'salve' con 'ciao' modificherà la chat 'Volevo solo dire salve' in 'Volevo solo dire ciao' e avvierà la gesture!"> - Sostituisci con: - </text> - <line_editor name="replace_editor" tool_tip="Sostituisci le parole chiave con questi termini. Per esempio, sostituire la parola chiave 'salve' con 'ciao' modificherà la chat 'Volevo solo dire salve' in 'Volevo solo dire ciao' e avvierà la gesture!"/> - <text name="key_label"> - Scorciatoia da tastiera: - </text> - <combo_box label="Nessuno" name="modifier_combo"/> - <combo_box label="Nessuno" name="key_combo"/> - <text name="library_label"> - Libreria: - </text> - <text name="steps_label"> - Fasi: - </text> - <scroll_list name="library_list"> - Animation -Suono -Chat -Pausa - </scroll_list> - <button label="Aggiungi >>" name="add_btn"/> - <button label="Vai su" name="up_btn"/> - <button label="Vai giù" name="down_btn"/> - <button label="Elimina" name="delete_btn"/> - <text name="help_label"> - Tutti i passi avvengono -simultaneamente, a meno che tu -non aggiunga pause. - </text> - <radio_group name="animation_trigger_type"> - <radio_item name="start"> - Avvio - </radio_item> - <radio_item name="stop"> - Stop - </radio_item> - </radio_group> - <check_box label="finché le animazioni sono eseguite" name="wait_anim_check"/> - <check_box label="tempo in secondi" name="wait_time_check"/> - <check_box label="Attiva" name="active_check" tool_tip="Le gesture attivate possono essere eseguite scrivendo in chat la parola chiave o premendo i tasti chiave. Le gesture generalmente si disattivano quando c'è un conflitto nei relativi tasti."/> - <button label="Anteprima" name="preview_btn"/> - <button label="Salva" name="save_btn"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="gesture_preview"> + <string name="stop_txt"> + Stop + </string> + <string name="preview_txt"> + Anteprima + </string> + <string name="none_text"> + -- Nulla -- + </string> + <text name="desc_label"> + Descrizione: + </text> + <text name="trigger_label"> + Parole chiave: + </text> + <text left="208" name="replace_text" tool_tip="Sostituisci le parole chiave con questi termini. Per esempio, sostituire la parola chiave 'salve' con 'ciao' modificherà la chat 'Volevo solo dire salve' in 'Volevo solo dire ciao' e avvierà la gesture!"> + Sostituisci con: + </text> + <line_editor name="replace_editor" tool_tip="Sostituisci le parole chiave con questi termini. Per esempio, sostituire la parola chiave 'salve' con 'ciao' modificherà la chat 'Volevo solo dire salve' in 'Volevo solo dire ciao' e avvierà la gesture!"/> + <text name="key_label"> + Scorciatoia da tastiera: + </text> + <combo_box label="Nessuno" name="modifier_combo" left="156" width="76"/> + <combo_box label="Nessuno" name="key_combo" width="76" left_delta="80"/> + <text name="library_label"> + Libreria: + </text> + <text name="steps_label"> + Fasi: + </text> + <scroll_list name="library_list"> + Animation +Suono +Chat +Pausa + </scroll_list> + <button label="Aggiungi >>" name="add_btn"/> + <button label="Vai su" name="up_btn"/> + <button label="Vai giù" name="down_btn"/> + <button label="Elimina" name="delete_btn"/> + <text name="help_label"> + Tutti i passi avvengono +simultaneamente, a meno che tu +non aggiunga pause. + </text> + <radio_group name="animation_trigger_type"> + <radio_item name="start" label="Avvio" /> + <radio_item name="stop" label="Stop" /> + </radio_group> + <check_box left="226" label="finché le animazioni sono eseguite" name="wait_anim_check"/> + <check_box label="tempo in secondi" name="wait_time_check"/> + <line_editor left_delta="114" name="wait_time_editor" /> + <check_box label="Attiva" name="active_check" tool_tip="Le gesture attivate possono essere eseguite scrivendo in chat la parola chiave o premendo i tasti chiave. Le gesture generalmente si disattivano quando c'è un conflitto nei relativi tasti."/> + <button label="Anteprima" name="preview_btn"/> + <button label="Salva" name="save_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_preview_notecard.xml b/indra/newview/skins/default/xui/it/floater_preview_notecard.xml index 65131e41ed26a0ee6e54525a6f2d703bf152a06f..b0608c8546e7fed7a78f0243cebb12a82e71dd11 100644 --- a/indra/newview/skins/default/xui/it/floater_preview_notecard.xml +++ b/indra/newview/skins/default/xui/it/floater_preview_notecard.xml @@ -1,16 +1,16 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="preview notecard" title="Nota:"> - <button label="Salva" label_selected="Salva" name="Save"/> - <text name="desc txt"> - Descrizione: - </text> - <text_editor name="Notecard Editor"> - In caricamento... - </text_editor> - <string name="no_object"> - Impossibile trovare l'oggetto che contiene questa nota. - </string> - <string name="not_allowed"> - Non ti è permesso vedere questa nota. - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="preview notecard" title="Nota:"> + <button label="Salva" label_selected="Salva" name="Save"/> + <text name="desc txt"> + Descrizione: + </text> + <text_editor name="Notecard Editor"> + In caricamento... + </text_editor> + <string name="no_object"> + Impossibile trovare l'oggetto che contiene questa nota. + </string> + <string name="not_allowed"> + Non ti è permesso vedere questa nota. + </string> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_preview_sound.xml b/indra/newview/skins/default/xui/it/floater_preview_sound.xml index 3a597ba193857153569ff9977b180d20ccd22494..5fd015f7fef7868854b5d701f1b16a04f9cfea5a 100644 --- a/indra/newview/skins/default/xui/it/floater_preview_sound.xml +++ b/indra/newview/skins/default/xui/it/floater_preview_sound.xml @@ -1,8 +1,8 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="preview_sound"> - <text name="desc txt"> - Descrizione: - </text> - <button label="Avvia localmente" label_selected="Avvia localmente" name="Sound audition btn" tool_tip="Avvia questo suono in modo che sia ascoltato solo da te."/> - <button label="Avvia inworld" label_selected="Avvia inworld" name="Sound play btn" tool_tip="Avvia questo suono in modo che sia ascoltato da tutti."/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="preview_sound"> + <text name="desc txt"> + Descrizione: + </text> + <button label="Avvia localmente" label_selected="Avvia localmente" name="Sound audition btn" tool_tip="Avvia questo suono in modo che sia ascoltato solo da te."/> + <button label="Avvia inworld" label_selected="Avvia inworld" name="Sound play btn" tool_tip="Avvia questo suono in modo che sia ascoltato da tutti."/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_preview_texture.xml b/indra/newview/skins/default/xui/it/floater_preview_texture.xml index 94a50752c26fc5f3ec9d83951f4b0db99cd5af70..e3232730e2e7ab0da1a5061612f4a0edcfd97744 100644 --- a/indra/newview/skins/default/xui/it/floater_preview_texture.xml +++ b/indra/newview/skins/default/xui/it/floater_preview_texture.xml @@ -1,9 +1,9 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="preview_texture"> - <text name="desc txt"> - Descrizione: - </text> - <text name="dimensions"> - Dimensioni: [WIDTH] x [HEIGHT] - </text> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="preview_texture"> + <text name="desc txt"> + Descrizione: + </text> + <text name="dimensions"> + Dimensioni: [WIDTH] x [HEIGHT] + </text> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_region_info.xml b/indra/newview/skins/default/xui/it/floater_region_info.xml index 8972eedcef40ae2df29884e283991c279308b475..a802550bf4a15b55de5e53ff3843b164faa940b3 100644 --- a/indra/newview/skins/default/xui/it/floater_region_info.xml +++ b/indra/newview/skins/default/xui/it/floater_region_info.xml @@ -1,2 +1,2 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="regioninfo" title="Regione/Proprietà "/> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="regioninfo" title="Regione/Proprietà "/> diff --git a/indra/newview/skins/default/xui/it/floater_report_abuse.xml b/indra/newview/skins/default/xui/it/floater_report_abuse.xml index 74d07d4d4c4f488e361863a9dfe97a3bae7de771..abcd953c13df42afad0238e9afe9151566e6d783 100644 --- a/indra/newview/skins/default/xui/it/floater_report_abuse.xml +++ b/indra/newview/skins/default/xui/it/floater_report_abuse.xml @@ -1,108 +1,109 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_report_abuse" title="Denuncia di Abuso"> - <check_box label="Includi una fotografia" name="screen_check"/> - <text name="reporter_title"> - Segnalato da: - </text> - <text name="reporter_field"> - Loremipsum Dolorsitamut - </text> - <text name="sim_title"> - Regione: - </text> - <text name="sim_field"> - Nome Regione - </text> - <text name="pos_title"> - Posizione: - </text> - <text name="pos_field"> - {128.1, 128.1, 15.4} - </text> - <text name="select_object_label"> - Clicca sul pulsante e poi sull'oggetto: - </text> - <button label="" label_selected="" name="pick_btn" tool_tip="Selezionatore di oggetti - Identifica un oggetto come argomento di questa segnalazione"/> - <text name="object_name_label"> - Nome: - </text> - <text name="object_name"> - Consetetur Sadipscing - </text> - <text name="owner_name_label"> - Proprietario: - </text> - <text name="owner_name"> - Hendrerit Vulputate - </text> - <combo_box name="category_combo" tool_tip="Categoria -- scegli la categoria che descrive meglio questa segnalazione"> - <combo_box.item name="Select_category" label="Scegli la categoria"/> - <combo_box.item name="Age__Age_play" label="Età > Far finta di essere minore"/> - <combo_box.item name="Age__Adult_resident_on_Teen_Second_Life" label="Età > Residente adulto nella Teen Second Life"/> - - - - <combo_box.item name="Assault__Combat_sandbox___unsafe_area" label="Assalto > sandbox da combattimento / area pericolosa"/> - <combo_box.item name="Assault__Safe_area" label="Assalto > Area sicura"/> - <combo_box.item name="Assault__Weapons_testing_sandbox" label="Assalto > Test di armi in sandbox"/> - <combo_box.item name="Commerce__Failure_to_deliver_product_or_service" label="Commercio > Problema nella consegna di un prodotto o servizio"/> - <combo_box.item name="Disclosure__Real_world_information" label="Divulgazione > Informazioni del mondo reale"/> - <combo_box.item name="Disclosure__Remotely_monitoring chat" label="Divulgazione > Monitoraggio remoto di chat"/> - <combo_box.item name="Disclosure__Second_Life_information_chat_IMs" label="Divulgazione > Informazione/chat/IMs di Second Life"/> - <combo_box.item name="Disturbing_the_peace__Unfair_use_of_region_resources" label="Disturbo della quiete > Uso sleale delle risorse di una regione"/> - <combo_box.item name="Disturbing_the_peace__Excessive_scripted_objects" label="Disturbo della quiete > Numero eccessivo di oggetti scriptati"/> - <combo_box.item name="Disturbing_the_peace__Object_littering" label="Disturbo della quiete > Oggetti messi a soqquadro"/> - <combo_box.item name="Disturbing_the_peace__Repetitive_spam" label="Disturbo della quiete > Spam continuato"/> - <combo_box.item name="Disturbing_the_peace__Unwanted_advert_spam" label="Disturbo della quiete > Spam pubblicitario non richiesto"/> - <combo_box.item name="Fraud__L$" label="Truffa > L$"/> - <combo_box.item name="Fraud__Land" label="Truffa > Terreno"/> - <combo_box.item name="Fraud__Pyramid_scheme_or_chain_letter" label="Truffa > Multilivello o catena di Sant'Antonio"/> - <combo_box.item name="Fraud__US$" label="Truffa > Dollari US$"/> - <combo_box.item name="Harassment__Advert_farms___visual_spam" label="Molestie > Territori adibiti a pubblicità / spam visivo"/> - <combo_box.item name="Harassment__Defaming_individuals_or_groups" label="Molestie > Diffamazione di individui o gruppi"/> - <combo_box.item name="Harassment__Impeding_movement" label="Molestie > Impedimento di movimenti"/> - <combo_box.item name="Harassment__Sexual_harassment" label="Molestie > Molestie sessuali"/> - <combo_box.item name="Harassment__Solicting_inciting_others_to_violate_ToS" label="Molestie > Sollecitare/incitare altri a violare i Termini di Servizio"/> - <combo_box.item name="Harassment__Verbal_abuse" label="Molestie > Abusi verbali"/> - <combo_box.item name="Indecency__Broadly_offensive_content_or_conduct" label="Indecenza > Condotta o contenuti largamente offensivi"/> - - - - <combo_box.item name="Indecency__Inappropriate_avatar_name" label="Indecenza > Nome di un avatar inappropriato"/> - - - - <combo_box.item name="Intellectual_property_infringement_Content_Removal" label="Violazione della proprietà intellettuale > Rimozione contenuti"/> - <combo_box.item name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit" label="Violazione della proprietà intellettuale > CopyBot o sblocco di permessi"/> - <combo_box.item name="Intolerance" label="Intolleranza"/> - <combo_box.item name="Land__Abuse_of_sandbox_resources" label="Terreno > Abuso delle risorse di una sandbox"/> - <combo_box.item name="Land__Encroachment__Objects_textures" label="Terreno > Invasione > Oggetti/textures"/> - <combo_box.item name="Land__Encroachment__Particles" label="Terreno > Invasione > Particelle"/> - <combo_box.item name="Land__Encroachment__Trees_plants" label="Terreno > Invasione > Alberi/piante"/> - <combo_box.item name="Wagering_gambling" label="Chiedere l'elemosina/gioco d'azzardo"/> - <combo_box.item name="Other" label="Altro"/> - </combo_box> - <text name="abuser_name_title"> - Nome di chi ha commesso l'abuso: - </text> - <button label="Scegli un residente" label_selected="" name="select_abuser" tool_tip="Scegli il nome di chi ha commesso l'abuso dalla lista"/> - <check_box label="Non conosco il nome di chi ha fatto l'abuso" name="omit_abuser_name" tool_tip="Metti qui la spunta se non sei in grado di fornire il nome di chi ha fatto l'abuso"/> - <text name="abuser_name_title2"> - Luogo dell'abuso: - </text> - <text name="sum_title"> - Riassunto: - </text> - <text name="dscr_title"> - Dettagli: - </text> - <text name="bug_aviso"> - Ti preghiamo di essere circostanziato riguardo data, luogo, natura -dell'abuso, testo rilevante di chat/IM, e, se possibile, indica l'oggetto. - </text> - <text name="incomplete_title"> - Nota: Segnalazioni incomplete non saranno esaminate. - </text> - <button label="Annulla" label_selected="Annulla" name="cancel_btn"/> - <button label="Segnala abuso" label_selected="Segnala abuso" name="send_btn"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_report_abuse" title="Denuncia di Abuso"> + <check_box label="Includi una fotografia" name="screen_check"/> + <text name="reporter_title"> + Segnalato da: + </text> + <text name="reporter_field"> + Loremipsum Dolorsitamut + </text> + <text name="sim_title"> + Regione: + </text> + <text name="sim_field"> + Nome Regione + </text> + <text name="pos_title"> + Posizione: + </text> + <text name="pos_field"> + {128.1, 128.1, 15.4} + </text> + <text name="select_object_label"> + Clicca sul pulsante e poi sull'oggetto: + </text> + <button label="" label_selected="" name="pick_btn" tool_tip="Selezionatore di oggetti - Identifica un oggetto come argomento di questa segnalazione"/> + <text name="object_name_label"> + Nome: + </text> + <text name="object_name"> + Consetetur Sadipscing + </text> + <text name="owner_name_label"> + Proprietario: + </text> + <text name="owner_name"> + Hendrerit Vulputate + </text> + <combo_box name="category_combo" tool_tip="Categoria -- scegli la categoria che descrive meglio questa segnalazione"> + <combo_box.item name="Select_category" label="Scegli la categoria"/> + <combo_box.item name="Age__Age_play" label="Età > Far finta di essere minore"/> + <combo_box.item name="Age__Adult_resident_on_Teen_Second_Life" label="Età > Residente adulto nella Teen Second Life"/> + <combo_item name="Age__Underage_resident_outside_of_Teen_Second_Life"> + Età > Residente minorenne al di fuori della 'Second Life per Teenager' + </combo_item> + <combo_box.item name="Assault__Combat_sandbox___unsafe_area" label="Assalto > sandbox da combattimento / area pericolosa"/> + <combo_box.item name="Assault__Safe_area" label="Assalto > Area sicura"/> + <combo_box.item name="Assault__Weapons_testing_sandbox" label="Assalto > Test di armi in sandbox"/> + <combo_box.item name="Commerce__Failure_to_deliver_product_or_service" label="Commercio > Problema nella consegna di un prodotto o servizio"/> + <combo_box.item name="Disclosure__Real_world_information" label="Divulgazione > Informazioni del mondo reale"/> + <combo_box.item name="Disclosure__Remotely_monitoring chat" label="Divulgazione > Monitoraggio remoto di chat"/> + <combo_box.item name="Disclosure__Second_Life_information_chat_IMs" label="Divulgazione > Informazione/chat/IMs di Second Life"/> + <combo_box.item name="Disturbing_the_peace__Unfair_use_of_region_resources" label="Disturbo della quiete > Uso sleale delle risorse di una regione"/> + <combo_box.item name="Disturbing_the_peace__Excessive_scripted_objects" label="Disturbo della quiete > Numero eccessivo di oggetti scriptati"/> + <combo_box.item name="Disturbing_the_peace__Object_littering" label="Disturbo della quiete > Oggetti messi a soqquadro"/> + <combo_box.item name="Disturbing_the_peace__Repetitive_spam" label="Disturbo della quiete > Spam continuato"/> + <combo_box.item name="Disturbing_the_peace__Unwanted_advert_spam" label="Disturbo della quiete > Spam pubblicitario non richiesto"/> + <combo_box.item name="Fraud__L$" label="Truffa > L$"/> + <combo_box.item name="Fraud__Land" label="Truffa > Terreno"/> + <combo_box.item name="Fraud__Pyramid_scheme_or_chain_letter" label="Truffa > Multilivello o catena di Sant'Antonio"/> + <combo_box.item name="Fraud__US$" label="Truffa > Dollari US$"/> + <combo_box.item name="Harassment__Advert_farms___visual_spam" label="Molestie > Territori adibiti a pubblicità / spam visivo"/> + <combo_box.item name="Harassment__Defaming_individuals_or_groups" label="Molestie > Diffamazione di individui o gruppi"/> + <combo_box.item name="Harassment__Impeding_movement" label="Molestie > Impedimento di movimenti"/> + <combo_box.item name="Harassment__Sexual_harassment" label="Molestie > Molestie sessuali"/> + <combo_box.item name="Harassment__Solicting_inciting_others_to_violate_ToS" label="Molestie > Sollecitare/incitare altri a violare i Termini di Servizio"/> + <combo_box.item name="Harassment__Verbal_abuse" label="Molestie > Abusi verbali"/> + <combo_box.item name="Indecency__Broadly_offensive_content_or_conduct" label="Indecenza > Condotta o contenuti largamente offensivi"/> + <combo_box.item name="Indecency__Inappropriate_avatar_name" label="Indecenza > Nome di un avatar inappropriato"/> + <combo_item name="Indecency__Mature_content_in_PG_region"> + Indecenza > Contenuto o condotta inappropriata in una regione PG + </combo_item> + <combo_item name="Indecency__Inappropriate_content_in_Mature_region"> + Indecenza > Contenuto o condotta inappropriata in una regione Mature + </combo_item> + <combo_box.item name="Intellectual_property_infringement_Content_Removal" label="Violazione della proprietà intellettuale > Rimozione contenuti"/> + <combo_box.item name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit" label="Violazione della proprietà intellettuale > CopyBot o sblocco di permessi"/> + <combo_box.item name="Intolerance" label="Intolleranza"/> + <combo_box.item name="Land__Abuse_of_sandbox_resources" label="Terreno > Abuso delle risorse di una sandbox"/> + <combo_box.item name="Land__Encroachment__Objects_textures" label="Terreno > Invasione > Oggetti/textures"/> + <combo_box.item name="Land__Encroachment__Particles" label="Terreno > Invasione > Particelle"/> + <combo_box.item name="Land__Encroachment__Trees_plants" label="Terreno > Invasione > Alberi/piante"/> + <combo_box.item name="Wagering_gambling" label="Chiedere l'elemosina/gioco d'azzardo"/> + <combo_box.item name="Other" label="Altro"/> + </combo_box> + <text name="abuser_name_title"> + Nome di chi ha commesso l'abuso: + </text> + <button label="Scegli un residente" label_selected="" name="select_abuser" tool_tip="Scegli il nome di chi ha commesso l'abuso dalla lista"/> + <check_box label="Non conosco il nome di chi ha fatto l'abuso" name="omit_abuser_name" tool_tip="Metti qui la spunta se non sei in grado di fornire il nome di chi ha fatto l'abuso"/> + <text name="abuser_name_title2"> + Luogo dell'abuso: + </text> + <text name="sum_title"> + Riassunto: + </text> + <text name="dscr_title"> + Dettagli: + </text> + <text name="bug_aviso"> + Ti preghiamo di essere circostanziato riguardo data, +luogo, natura dell'abuso, testo rilevante di chat/IM, e, +se possibile, indica l'oggetto. + </text> + <text name="incomplete_title"> + Nota: Segnalazioni incomplete non saranno esaminate. + </text> + <button label="Annulla" label_selected="Annulla" name="cancel_btn"/> + <button label="Segnala abuso" label_selected="Segnala abuso" name="send_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_script_debug.xml b/indra/newview/skins/default/xui/it/floater_script_debug.xml index f66a44a2ea33b6c02d521ac2ddae31242d73c21e..39736dde673fe194b5b4fb404687e2a70a8e1815 100644 --- a/indra/newview/skins/default/xui/it/floater_script_debug.xml +++ b/indra/newview/skins/default/xui/it/floater_script_debug.xml @@ -1,6 +1,6 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<multi_floater name="script debug floater" title="Avvisi/Errori Script"> - <tab_container name="Preview Tabs"> - <floater label="Script" name="all_scripts" title="[Tutti gli script]"/> - </tab_container> -</multi_floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<multi_floater name="script debug floater" title="Avvisi/Errori Script"> + <tab_container name="Preview Tabs"> + <floater label="Script" name="all_scripts" title="[Tutti gli script]"/> + </tab_container> +</multi_floater> diff --git a/indra/newview/skins/default/xui/it/floater_script_preview.xml b/indra/newview/skins/default/xui/it/floater_script_preview.xml index ceead0ab534186b7c85577afa693e62c9e635e4e..20af60b2d49f7de699038b68fc23b101e39b58e6 100644 --- a/indra/newview/skins/default/xui/it/floater_script_preview.xml +++ b/indra/newview/skins/default/xui/it/floater_script_preview.xml @@ -1,6 +1,6 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="preview lsl text" title="Script: Script di rotazione"> - <text name="desc txt"> - Descrizione: - </text> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="preview lsl text" title="Script: Script di rotazione"> + <text name="desc txt"> + Descrizione: + </text> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_script_queue.xml b/indra/newview/skins/default/xui/it/floater_script_queue.xml index 5695abe29502a129d7fc7645a201cdcc362e75fd..e5b38fea62f5982c898d9e173244bc2424861af2 100644 --- a/indra/newview/skins/default/xui/it/floater_script_queue.xml +++ b/indra/newview/skins/default/xui/it/floater_script_queue.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="queue" title="Progressione reset"> - <button label="Chiudi" label_selected="Chiudi" name="close"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="queue" title="Progressione reset"> + <button label="Chiudi" label_selected="Chiudi" name="close"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_script_search.xml b/indra/newview/skins/default/xui/it/floater_script_search.xml index f100ab7f516926b8e182abd86e22163d5f25cc14..ebd8ee359f54a965e0a9af4133d9f3f3bdd7aff9 100644 --- a/indra/newview/skins/default/xui/it/floater_script_search.xml +++ b/indra/newview/skins/default/xui/it/floater_script_search.xml @@ -1,13 +1,13 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="script search" title="Cerca Script"> - <check_box label="Senza distinzione tra maiuscole e minuscole" name="case_text"/> - <button label="Cerca" label_selected="Cerca" name="search_btn"/> - <button label="Sostituisci" label_selected="Sostituisci" name="replace_btn"/> - <button label="Sostituisci tutto" label_selected="Sostituisci tutto" name="replace_all_btn"/> - <text name="txt"> - Cerca - </text> - <text name="txt2"> - Sostituisci - </text> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="script search" title="Cerca Script"> + <check_box label="Senza distinzione tra maiuscole e minuscole" name="case_text"/> + <button label="Cerca" label_selected="Cerca" name="search_btn"/> + <button label="Sostituisci" label_selected="Sostituisci" name="replace_btn"/> + <button label="Sostituisci tutto" label_selected="Sostituisci tutto" name="replace_all_btn"/> + <text name="txt"> + Cerca + </text> + <text name="txt2"> + Sostituisci + </text> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_select_key.xml b/indra/newview/skins/default/xui/it/floater_select_key.xml index bdc0b86a410dcfef8fb741508f01a644ed5c49b4..04a772649727739a72f8746b9c1ae3dbe6f32272 100644 --- a/indra/newview/skins/default/xui/it/floater_select_key.xml +++ b/indra/newview/skins/default/xui/it/floater_select_key.xml @@ -1,7 +1,7 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="modal container" title=""> - <button label="Annulla" label_selected="Annulla" name="Cancel"/> - <text name="Save item as:"> - Premi un tasto per selezionare - </text> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="modal container" title=""> + <button label="Annulla" label_selected="Annulla" name="Cancel"/> + <text name="Save item as:"> + Premi un tasto per selezionare + </text> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_sell_land.xml b/indra/newview/skins/default/xui/it/floater_sell_land.xml index 01c7fca0e6236eab1b44dfc47da33fe1c917d27b..d9cf612d335ef541d34468b77ea90c2cd540bd4e 100644 --- a/indra/newview/skins/default/xui/it/floater_sell_land.xml +++ b/indra/newview/skins/default/xui/it/floater_sell_land.xml @@ -1,62 +1,61 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="sell land" title="Vendi terra"> - <text name="info_parcel_label"> - Terreno: - </text> - <text name="info_parcel"> - NOME APPEZZAMENTO - </text> - <text name="info_size_label"> - Dimensioni: - </text> - <text name="info_size"> - [AREA] mq - </text> - <text name="info_action"> - Per vendere questo terreno: - </text> - <text name="price_label"> - Imposta prezzo: - </text> - <text name="price_text"> - Scegli un prezzo appropriato per questa terra. - </text> - <text name="price_ld"> - L$ - </text> - <text name="price_per_m"> - ([PER_METER] L$ per metro quadro) - </text> - <text name="sell_to_label"> - Vendi la terra a: - </text> - <text name="sell_to_text"> - Scegli se vendere a tutti o ad un compratore in particolare. - </text> - <combo_box name="sell_to"> - <combo_box.item name="--selectone--" label="selezionane uno --"/> - <combo_box.item name="Anyone" label="Chiunque"/> - <combo_box.item name="Specificuser:" label="Utente specifico:"/> - </combo_box> - <button label="Seleziona..." name="sell_to_select_agent"/> - <text name="sell_objects_label"> - Vendi gli oggetti con la terra? - </text> - <text name="sell_objects_text"> - Gli oggetti trasferibili del proprietario della terra sul terreno cambieranno proprietario. - </text> - <radio_group name="sell_objects"> - <radio_item name="no"> - No, voglio mantenere la proprietà degli oggetti - </radio_item> - <radio_item name="yes"> - Si, vendi gli oggetti con la terra - </radio_item> - </radio_group> - <button label="Mostra oggetti" name="show_objects"/> - <text name="nag_message_label"> - RICORDA: tutte le vendite sono definitive. - </text> - <button label="Metti la terra in vendita" name="sell_btn"/> - <button label="Annulla" name="cancel_btn"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="sell land" title="Vendi terra"> + <text name="info_parcel_label"> + Terreno: + </text> + <text name="info_parcel" left="82"> + NOME APPEZZAMENTO + </text> + <text name="info_size_label"> + Dimensioni: + </text> + <text name="info_size" left="82"> + [AREA] m² + </text> + <text height="28" name="info_action" bottom_delta="-57"> + Per vendere questo +terreno: + </text> + <icon bottom_delta="-86" name="step_price" /> + <text name="price_label"> + Imposta prezzo: + </text> + <text name="price_text"> + Scegli un prezzo appropriato per questa terra. + </text> + <text name="price_ld"> + L$ + </text> + <text name="price_per_m"> + ([PER_METER] L$ per metro quadro) + </text> + <text name="sell_to_label"> + Vendi la terra a: + </text> + <text name="sell_to_text"> + Scegli se vendere a tutti o ad un compratore in particolare. + </text> + <combo_box name="sell_to"> + <combo_box.item name="--selectone--" label="selezionane uno --"/> + <combo_box.item name="Anyone" label="Chiunque"/> + <combo_box.item name="Specificuser:" label="Utente specifico:"/> + </combo_box> + <button label="Seleziona..." name="sell_to_select_agent"/> + <text name="sell_objects_label"> + Vendi gli oggetti con la terra? + </text> + <text name="sell_objects_text"> + Gli oggetti trasferibili del proprietario della terra sul terreno +cambieranno proprietario. + </text> + <radio_group name="sell_objects" bottom_delta="-58" > + <radio_item name="no" label="No, voglio mantenere la proprietà degli oggetti" /> + <radio_item name="yes" label="Si, vendi gli oggetti con la terra" /> + </radio_group> + <button label="Mostra oggetti" name="show_objects"/> + <text name="nag_message_label"> + RICORDA: tutte le vendite sono definitive. + </text> + <button label="Metti la terra in vendita" name="sell_btn"/> + <button label="Annulla" name="cancel_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_settings_debug.xml b/indra/newview/skins/default/xui/it/floater_settings_debug.xml index 0f101d8b81218d53ccd538b613c4dcf1deff5a0a..6dd1b7978de2e22fe8235e658113ae9d7cafdf75 100644 --- a/indra/newview/skins/default/xui/it/floater_settings_debug.xml +++ b/indra/newview/skins/default/xui/it/floater_settings_debug.xml @@ -1,13 +1,13 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="settings_debug" title="Configurazioni per il debug"> - <combo_box name="boolean_combo"> - <combo_box.item name="TRUE" label="VERO"/> - <combo_box.item name="FALSE" label="FALSO"/> - </combo_box> - <color_swatch label="Colore" name="color_swatch"/> - <spinner label="x" name="val_spinner_1"/> - <spinner label="x" name="val_spinner_2"/> - <spinner label="x" name="val_spinner_3"/> - <spinner label="x" name="val_spinner_4"/> - <button label="Reimposta i valori di default" name="default_btn"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="settings_debug" title="Configurazioni per il debug"> + <combo_box name="boolean_combo"> + <combo_box.item name="TRUE" label="VERO"/> + <combo_box.item name="FALSE" label="FALSO"/> + </combo_box> + <color_swatch label="Colore" name="color_swatch"/> + <spinner label="x" name="val_spinner_1"/> + <spinner label="x" name="val_spinner_2"/> + <spinner label="x" name="val_spinner_3"/> + <spinner label="x" name="val_spinner_4"/> + <button label="Reimposta i valori di default" name="default_btn" width="210"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_snapshot.xml b/indra/newview/skins/default/xui/it/floater_snapshot.xml index 1c24b53cd8534a54e93fa91f2ba6d37e37cd2803..808158ff7e70eddd57176cf1063c50199fc4cc4c 100644 --- a/indra/newview/skins/default/xui/it/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/it/floater_snapshot.xml @@ -1,85 +1,79 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Snapshot" title="Anteprima della fotografia"> - <text name="type_label"> - Destinazione della fotografia - </text> - <radio_group label="Tipo di fotografia" name="snapshot_type_radio"> - <radio_item name="postcard"> - Invia via email - </radio_item> - <radio_item name="texture"> - Salva nel tuo inventario ([AMOUNT] L$) - </radio_item> - <radio_item name="local"> - Salva sul tuo pc - </radio_item> - </radio_group> - <text name="file_size_label"> - Grandezza del file: [SIZE] KB - </text> - <button label="Aggiorna la fotografia" name="new_snapshot_btn"/> - <button label="Invia" name="send_btn"/> - <button label="Salva ([AMOUNT] L$)" name="upload_btn"/> - <flyout_button label="Salva" name="save_btn" tool_tip="Salva l'immagine come file"> - <flyout_button_item name="save_item" label="Salva"/> - <flyout_button_item name="saveas_item" label="Salva come..."/> - </flyout_button> - <button label="Annulla" name="discard_btn"/> - <button label="Espandi >>" name="more_btn" tool_tip="Opzioni avanzate"/> - <button label="<< Diminuisci" name="less_btn" tool_tip="Opzioni avanzate"/> - <text name="type_label2"> - Grandezza - </text> - <text name="format_label"> - Formato - </text> - <combo_box label="Risoluzione" name="postcard_size_combo"> - <combo_box.item name="CurrentWindow" label="Finestra corrente"/> - <combo_box.item name="640x480" label="640x480"/> - <combo_box.item name="800x600" label="800x600"/> - <combo_box.item name="1024x768" label="1024x768"/> - <combo_box.item name="Custom" label="Personalizzata"/> - </combo_box> - <combo_box label="Risoluzione" name="texture_size_combo"> - <combo_box.item name="CurrentWindow" label="Finestra corrente"/> - <combo_box.item name="Small(128x128)" label="Piccola (128x128)"/> - <combo_box.item name="Medium(256x256)" label="Media (256x256)"/> - <combo_box.item name="Large(512x512)" label="Larga (512x512)"/> - <combo_box.item name="Custom" label="Personalizzata"/> - </combo_box> - <combo_box label="Risoluzione" name="local_size_combo"> - <combo_box.item name="CurrentWindow" label="Finestra corrente"/> - <combo_box.item name="320x240" label="320x240"/> - <combo_box.item name="640x480" label="640x480"/> - <combo_box.item name="800x600" label="800x600"/> - <combo_box.item name="1024x768" label="1024x768"/> - <combo_box.item name="1280x1024" label="1280x1024"/> - <combo_box.item name="1600x1200" label="1600x1200"/> - <combo_box.item name="Custom" label="Personalizzata"/> - </combo_box> - <combo_box label="Formato" name="local_format_combo"> - <combo_box.item name="PNG" label="PNG"/> - <combo_box.item name="JPEG" label="JPEG"/> - <combo_box.item name="BMP" label="BMP"/> - </combo_box> - <spinner label="Larghezza" name="snapshot_width"/> - <spinner label="Altezza" name="snapshot_height"/> - <check_box label="Mantieni le proporzioni" name="keep_aspect_check"/> - <slider label="Qualità d'immagine" name="image_quality_slider"/> - <text name="layer_type_label"> - Fotografa: - </text> - <combo_box label="Layer dell'immagine" name="layer_types"> - <combo_box.item name="Colors" label="Colori"/> - <combo_box.item name="Depth" label="Profondità "/> - <combo_box.item name="ObjectMattes" label="Colori primari degli oggetti"/> - </combo_box> - <check_box label="Mostra l'interfaccia nella fotografia" name="ui_check"/> - <check_box label="Mostra i dispositivi indossati nella fotografia" name="hud_check"/> - <check_box label="Mantieni aperto dopo aver salvato" name="keep_open_check"/> - <check_box label="Blocca l'anteprima (Anteprima a schermo intero)" name="freeze_frame_check"/> - <check_box label="Auto-Aggiorna" name="auto_snapshot_check"/> - <string name="unknown"> - sconosciuto - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Snapshot" title="Anteprima della fotografia" width="247"> + <text name="type_label"> + Destinazione della fotografia + </text> + <radio_group label="Tipo di fotografia" name="snapshot_type_radio" width="228"> + <radio_item name="postcard" label="Invia via email" /> + <radio_item name="texture" label="Salva nel tuo inventario ([AMOUNT] L$)" /> + <radio_item name="local" label="Salva sul tuo pc" /> + </radio_group> + <text name="file_size_label"> + Grandezza del file: [SIZE] KB + </text> + <button label="Aggiorna la fotografia" name="new_snapshot_btn"/> + <button label="Invia" name="send_btn"/> + <button label="Salva ([AMOUNT] L$)" name="upload_btn"/> + <flyout_button label="Salva" name="save_btn" tool_tip="Salva l'immagine come file" > + <flyout_button_item name="save_item" label="Salva"/> + <flyout_button_item name="saveas_item" label="Salva come..."/> + </flyout_button> + <button label="Annulla" name="discard_btn"/> + <button label="Espandi >>" name="more_btn" tool_tip="Opzioni avanzate"/> + <button label="<< Diminuisci" name="less_btn" tool_tip="Opzioni avanzate"/> + <text name="type_label2"> + Grandezza + </text> + <text name="format_label"> + Formato + </text> + <combo_box label="Risoluzione" name="postcard_size_combo"> + <combo_box.item name="CurrentWindow" label="Finestra corrente"/> + <combo_box.item name="640x480" label="640x480"/> + <combo_box.item name="800x600" label="800x600"/> + <combo_box.item name="1024x768" label="1024x768"/> + <combo_box.item name="Custom" label="Personalizzata"/> + </combo_box> + <combo_box label="Risoluzione" name="texture_size_combo"> + <combo_box.item name="CurrentWindow" label="Finestra corrente"/> + <combo_box.item name="Small(128x128)" label="Piccola (128x128)"/> + <combo_box.item name="Medium(256x256)" label="Media (256x256)"/> + <combo_box.item name="Large(512x512)" label="Larga (512x512)"/> + <combo_box.item name="Custom" label="Personalizzata"/> + </combo_box> + <combo_box label="Risoluzione" name="local_size_combo"> + <combo_box.item name="CurrentWindow" label="Finestra corrente"/> + <combo_box.item name="320x240" label="320x240"/> + <combo_box.item name="640x480" label="640x480"/> + <combo_box.item name="800x600" label="800x600"/> + <combo_box.item name="1024x768" label="1024x768"/> + <combo_box.item name="1280x1024" label="1280x1024"/> + <combo_box.item name="1600x1200" label="1600x1200"/> + <combo_box.item name="Custom" label="Personalizzata"/> + </combo_box> + <combo_box label="Formato" name="local_format_combo"> + <combo_box.item name="PNG" label="PNG"/> + <combo_box.item name="JPEG" label="JPEG"/> + <combo_box.item name="BMP" label="BMP"/> + </combo_box> + <spinner label="Larghezza" name="snapshot_width" label_width="58" width="116"/> + <spinner label="Altezza" name="snapshot_height" label_width="41" width="101" left="130"/> + <check_box label="Mantieni le proporzioni" name="keep_aspect_check"/> + <slider label="Qualità d'immagine" name="image_quality_slider"/> + <text name="layer_type_label" width="55"> + Fotografa: + </text> + <combo_box label="Layer dell'immagine" name="layer_types" left="68" width="165"> + <combo_box.item name="Colors" label="Colori"/> + <combo_box.item name="Depth" label="Profondità "/> + <combo_box.item name="ObjectMattes" label="Colori primari degli oggetti"/> + </combo_box> + <check_box label="Mostra l'interfaccia nella fotografia" name="ui_check"/> + <check_box bottom_delta="-17" label="Mostra i dispositivi indossati nella foto" name="hud_check"/> + <check_box bottom_delta="-17" label="Mantieni aperto dopo aver salvato" name="keep_open_check"/> + <check_box bottom_delta="-17" label="Blocca l'anteprima (Anteprima a schermo intero)" name="freeze_frame_check"/> + <check_box bottom_delta="-29" label="Auto-Aggiorna" name="auto_snapshot_check"/> + <string name="unknown"> + sconosciuto + </string> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_sound_preview.xml b/indra/newview/skins/default/xui/it/floater_sound_preview.xml index 5c958da8a8dca221c7cdeaab50f796bb3e0e3f05..86117329839811060819f9d3b437faec34085ca7 100644 --- a/indra/newview/skins/default/xui/it/floater_sound_preview.xml +++ b/indra/newview/skins/default/xui/it/floater_sound_preview.xml @@ -1,11 +1,11 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Name/Description" title="sound.wav"> - <text name="name_label"> - Nome: - </text> - <text name="description_label"> - Descrizione: - </text> - <button label="Annulla" label_selected="Annulla" name="cancel_btn"/> - <button label="Carica ([AMOUNT] L$)" label_selected="Carica ([AMOUNT] L$)" name="ok_btn"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Sound Preview" title="sound.wav"> + <text name="name_label"> + Nome: + </text> + <text name="description_label"> + Descrizione: + </text> + <button label="Annulla" label_selected="Annulla" name="cancel_btn"/> + <button label="Carica ([AMOUNT] L$)" label_selected="Carica ([AMOUNT] L$)" name="ok_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_statistics.xml b/indra/newview/skins/default/xui/it/floater_statistics.xml new file mode 100644 index 0000000000000000000000000000000000000000..6083949b8c19ded88c9c6433379e18256b66917b --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_statistics.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="stats floater" title="Statistiche"/> diff --git a/indra/newview/skins/default/xui/it/floater_telehub.xml b/indra/newview/skins/default/xui/it/floater_telehub.xml index 0344ac9588d3df5db34e72c874ed6da9d6c6edc8..5de215522d17ceee675dc21d991c5908cb04b032 100644 --- a/indra/newview/skins/default/xui/it/floater_telehub.xml +++ b/indra/newview/skins/default/xui/it/floater_telehub.xml @@ -1,28 +1,28 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="telehub" title="Telehub"> - <text name="status_text_connected"> - Telehub connesso all'oggetto [OBJECT] - </text> - <text name="status_text_not_connected"> - Nessun telehub connesso. - </text> - <text name="help_text_connected"> - Per rimuovere, clicca Disconnetti. - </text> - <text name="help_text_not_connected"> - Seleziona l'oggetto e clicca connetti Telehub. - </text> - <button label="Connetti Telehub" name="connect_btn"/> - <button label="Disconnetti" name="disconnect_btn"/> - <text name="spawn_points_text"> - Rigenera i punti (posizioni, non oggetti): - </text> - <button label="Aggiungi punti rigenerazione" name="add_spawn_point_btn"/> - <button label="Rimuovi punti rigenerazione" name="remove_spawn_point_btn"/> - <text name="spawn_point_help"> - Seleziona un oggetto e clicca su aggiungi per specificarne la posizione. -Potrai quindi muovere o rimuovere l'oggetto. -Le posizioni sono relative al centro del telehub. -Seleziona un elemento per vederne la posizione globale. - </text> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="telehub" title="Telehub"> + <text name="status_text_connected"> + Telehub connesso all'oggetto [OBJECT] + </text> + <text name="status_text_not_connected"> + Nessun telehub connesso. + </text> + <text name="help_text_connected"> + Per rimuovere, clicca Disconnetti. + </text> + <text name="help_text_not_connected"> + Seleziona l'oggetto e clicca connetti Telehub. + </text> + <button label="Connetti Telehub" name="connect_btn"/> + <button label="Disconnetti" name="disconnect_btn"/> + <text name="spawn_points_text"> + Rigenera i punti (posizioni, non oggetti): + </text> + <button label="Aggiungi punti rigenerazione" name="add_spawn_point_btn"/> + <button label="Rimuovi punti rigenerazione" name="remove_spawn_point_btn"/> + <text name="spawn_point_help"> + Seleziona un oggetto e clicca su aggiungi per specificarne la posizione. +Potrai quindi muovere o rimuovere l'oggetto. +Le posizioni sono relative al centro del telehub. +Seleziona un elemento per vederne la posizione globale. + </text> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/it/floater_texture_ctrl.xml index 48ac8638321e0ddf73c5e94a0b290710dd3d623c..65bc8ba41db74578442484eb2b65f2b01263867d 100644 --- a/indra/newview/skins/default/xui/it/floater_texture_ctrl.xml +++ b/indra/newview/skins/default/xui/it/floater_texture_ctrl.xml @@ -1,23 +1,23 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="texture picker" title="Preferiti: Immagine"> - <string name="choose_picture"> - Clicca per scegliere l'immagine - </string> - <text name="Multiple"> - Molteplice - </text> - <text name="unknown"> - Dimensioni: [DIMENSIONS] - </text> - <button label="Default" label_selected="Default" name="Default"/> - <button label="Niente" label_selected="Niente" name="None"/> - <button label="Vuoto" label_selected="Vuoto" name="Blank"/> - <check_box label="Visualizza Cartelle" name="show_folders_check"/> - <search_editor label="Scrivi qui per cercare" name="inventory search editor"/> - <check_box label="Applica Subito" name="apply_immediate_check"/> - <button label="Annulla" label_selected="Annulla" name="Cancel"/> - <button label="Seleziona" label_selected="Seleziona" name="Select"/> - <string name="pick title"> - Scegli: - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="texture picker" title="Preferiti: Immagine"> + <string name="choose_picture"> + Clicca per scegliere l'immagine + </string> + <text name="Multiple"> + Molteplice + </text> + <text name="unknown"> + Dimensioni: [DIMENSIONS] + </text> + <button label="Default" label_selected="Default" name="Default"/> + <button label="Niente" label_selected="Niente" name="None"/> + <button label="Vuoto" label_selected="Vuoto" name="Blank"/> + <check_box label="Visualizza Cartelle" name="show_folders_check"/> + <search_editor label="Scrivi qui per cercare" name="inventory search editor"/> + <check_box label="Applica Subito" name="apply_immediate_check"/> + <button label="Annulla" label_selected="Annulla" name="Cancel"/> + <button label="Seleziona" label_selected="Seleziona" name="Select"/> + <string name="pick title"> + Scegli: + </string> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_tools.xml b/indra/newview/skins/default/xui/it/floater_tools.xml index 8bc9e511b5bd4ab92d1337220b6896ebd119e930..a89ae9d8037f46616901a93eb51751bcf460e918 100644 --- a/indra/newview/skins/default/xui/it/floater_tools.xml +++ b/indra/newview/skins/default/xui/it/floater_tools.xml @@ -1,489 +1,621 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="toolbox floater" title=""> - <button label="" label_selected="" name="button focus" tool_tip="Focus"/> - <button label="" label_selected="" name="button move" tool_tip="Muoviti"/> - <button label="" label_selected="" name="button edit" tool_tip="Modifica"/> - <button label="" label_selected="" name="button create" tool_tip="Crea"/> - <button label="" label_selected="" name="button land" tool_tip="Terra"/> - <check_box label="Zoom" name="radio zoom"/> - <check_box label="Guarda ruotando(Ctrl)" name="radio orbit"/> - <check_box label="Guarda panoramicamente (Ctrl-Shift)" name="radio pan"/> - <check_box label="Muovi" name="radio move"/> - <check_box label="Alza (Ctrl)" name="radio lift"/> - <check_box label="Gira intorno (Ctrl-Shift)" name="radio spin"/> - <check_box label="Posizione" name="radio position"/> - <check_box label="Ruota (Ctrl)" name="radio rotate"/> - <check_box label="Ridimensiona (Ctrl-Shift)" name="radio stretch"/> - <check_box label="Seleziona Texture" name="radio select face"/> - <check_box label="Modifica parti unite" name="checkbox edit linked parts"/> - <text name="text ruler mode"> - Modalità  regolo di precisione: - </text> - <combo_box name="combobox grid mode"> - <combo_box.item name="World" label="Globale"/> - <combo_box.item name="Local" label="Locale"/> - <combo_box.item name="Reference" label="Riferito a"/> - </combo_box> - <check_box label="Ridimensiona simmetricamente" name="checkbox uniform"/> - <check_box label="Ridimensiona le Texture" name="checkbox stretch textures"/> - <check_box label="Usa righello" name="checkbox snap to grid"/> - <button label="Opzioni..." label_selected="Opzioni..." name="Options..."/> - <text name="text status"> - Trascina per muovere, trascina+maiuscolo per copiare - </text> - <button label="" label_selected="" name="ToolCube" tool_tip="Cubo"/> - <button label="" label_selected="" name="ToolPrism" tool_tip="Prisma"/> - <button label="" label_selected="" name="ToolPyramid" tool_tip="Piramide"/> - <button label="" label_selected="" name="ToolTetrahedron" tool_tip="Tetraedro"/> - <button label="" label_selected="" name="ToolCylinder" tool_tip="Cilindro"/> - <button label="" label_selected="" name="ToolHemiCylinder" tool_tip="Semicilindro"/> - <button label="" label_selected="" name="ToolCone" tool_tip="Cono"/> - <button label="" label_selected="" name="ToolHemiCone" tool_tip="Semicono"/> - <button label="" label_selected="" name="ToolSphere" tool_tip="Sfera"/> - <button label="" label_selected="" name="ToolHemiSphere" tool_tip="Semisfera"/> - <button label="" label_selected="" name="ToolTorus" tool_tip="Toro"/> - <button label="" label_selected="" name="ToolTube" tool_tip="Tubo"/> - <button label="" label_selected="" name="ToolRing" tool_tip="Anello"/> - <button label="" label_selected="" name="ToolTree" tool_tip="Albero"/> - <button label="" label_selected="" name="ToolGrass" tool_tip="Erba"/> - <check_box label="Mantieni lo strumento selezionato" name="checkbox sticky"/> - <check_box label="Copia la selezione" name="checkbox copy selection"/> - <check_box label="Centra la Copia" name="checkbox copy centers"/> - <check_box label="Ruota la Copia" name="checkbox copy rotates"/> - <check_box label="Seleziona il terreno" name="radio select land"/> - <check_box label="Appiattisci il terreno" name="radio flatten"/> - <check_box label="Alza il terreno" name="radio raise"/> - <check_box label="Abbassa il terreno" name="radio lower"/> - <check_box label="Uniforma il terreno" name="radio smooth"/> - <check_box label="Corruga il terreno" name="radio noise"/> - <check_box label="Ripristina il terreno" name="radio revert"/> - <combo_box name="combobox brush size"> - <combo_box.item name="Small" label="Piccolo"/> - <combo_box.item name="Medium" label="Medio"/> - <combo_box.item name="Large" label="Grande"/> - </combo_box> - <text name="Strength:"> - Pressione: - </text> - <button label="Applica alla selezione" label_selected="Applica alla selezione" name="button apply to selection" tool_tip="Modifica il terreno selezionato"/> - <check_box label="Mostra i proprietari" name="checkbox show owners"/> - <button label="Espandi >>" name="button more" tool_tip="Opzioni avanzate"/> - <button label="<< Restringi" name="button less" tool_tip="Opzioni avanzate"/> - <tab_container name="Object Info Tabs"> - <panel label="Generale" name="General"> - <text name="Name:"> - Nome: - </text> - <text name="Description:"> - Descrizione: - </text> - <text name="Creator:"> - Creatore: - </text> - <text name="Creator Name"> - Thrax Linden - </text> - <button label="Profilo..." label_selected="Profilo..." name="button creator profile"/> - <text name="Owner:"> - Proprietario: - </text> - <text name="Owner Name"> - Thrax Linden - </text> - <button label="Profilo..." label_selected="Profilo..." name="button owner profile"/> - <text name="Group:"> - Gruppo: - </text> - <text name="Group Name Proxy"> - The Lindens - </text> - <button label="Imposta..." label_selected="Imposta..." name="button set group"/> - <text name="prim info"> - 1 Oggetto, 1 Prim - </text> - <text name="Permissions:"> - Permessi: - </text> - <text name="perm_modify"> - Puoi modificare questo oggetto. - </text> - <check_box label="Condividi con il gruppo" name="checkbox share with group" tool_tip="Permetti ai membri del gruppo di muovere, modificare, copiare e cancellare."/> - <string name="text deed continued"> - Cedi al gruppo... - </string> - <string name="text deed"> - Cedi al gruppo - </string> - <button label="Cedi al gruppo..." label_selected="Cedi al gruppo..." name="button deed" tool_tip="Gli oggetti condivisi con il gruppo possono essere ceduti da un funzionario del gruppo."/> - <check_box label="Permetti a chiunque di spostare" name="checkbox allow everyone move"/> - <check_box label="Permetti a chiunque di copiare" name="checkbox allow everyone copy"/> - <check_box label="Mostra nella ricerca" name="search_check" tool_tip="Permetti che l'oggetto sia visibile nella ricerca"/> - <check_box label="In vendita" name="checkbox for sale"/> - <text name="Cost"> - Prezzo: L$ - </text> - <radio_group name="sale type"> - <radio_item name="Original"> - Originale - </radio_item> - <radio_item name="Copy"> - Copia - </radio_item> - <radio_item name="Contents"> - Contenuto - </radio_item> - </radio_group> - <text name="Next owner can:"> - Il prossimo proprietario può: - </text> - <check_box label="Modificare" name="checkbox next owner can modify"/> - <check_box label="Copiare" name="checkbox next owner can copy"/> - <check_box label="Rivendere/Regalare" name="checkbox next owner can transfer"/> - <text name="label click action"> - Se cliccato con il tasto sinistro del mouse - </text> - <combo_box name="clickaction"> - <combo_box.item name="Touch/grab(default)" label="Tocca/Afferra (default)"/> - <combo_box.item name="Sitonobject" label="Siediti sull'oggetto"/> - <combo_box.item name="Buyobject" label="Compra l'oggetto"/> - <combo_box.item name="Payobject" label="Paga l'oggetto"/> - <combo_box.item name="Open" label="Apri"/> - <combo_box.item name="Play" label="Attiva i multimedia del terreno"/> - <combo_box.item name="Opemmedia" label="Apri i multimedia del terreno"/> - </combo_box> - <text name="B:"> - B: - </text> - <text name="O:"> - O; - </text> - <text name="G:"> - G: - </text> - <text name="E:"> - E: - </text> - <text name="N:"> - N: - </text> - <text name="F:"> - F: - </text> - <string name="text modify info 1"> - Puoi modificare questo oggetto. - </string> - <string name="text modify info 2"> - Puoi modificare questi oggetti. - </string> - <string name="text modify info 3"> - Non puoi modificare questo oggetto. - </string> - <string name="text modify info 4"> - Non puoi modificare questi oggetti. - </string> - <string name="text modify warning"> - Devi selezionare l'intero oggetto per impostare i permessi. - </string> - <string name="Cost Default"> - Prezzo: L$ - </string> - <string name="Cost Total"> - Prezzo totale: L$ - </string> - <string name="Cost Per Unit"> - Prezzo per: L$ - </string> - <string name="Cost Mixed"> - Prezzo misto - </string> - <string name="Sale Mixed"> - Vendita mista - </string> - </panel> - <panel label="Oggetto" name="Object"> - <text name="select_single"> - Seleziona solo un prim per modificarne i parametri. - </text> - <text name="edit_object"> - Modifica i parametri dell'oggetto: - </text> - <check_box label="Bloccato" name="checkbox locked" tool_tip="Previene lo spostamento o la cancellazione dell'oggetto. Spesso utile mentre si costruisce per evitare involontarie modifiche."/> - <check_box label="Fisico" name="Physical Checkbox Ctrl" tool_tip="Permette all'oggetto di essere spostato e di subire gli effetti della gravità "/> - <check_box label="Temporaneo" name="Temporary Checkbox Ctrl" tool_tip="Provoca la cancellazione dell'oggetto 1 minuto dopo la sua creazione."/> - <check_box label="Fantasma" name="Phantom Checkbox Ctrl" tool_tip="Rende l'oggetto penetrabile dagli altri oggetti e dagli avatars"/> - <text name="label position"> - Posizione (metri) - </text> - <spinner label="X" name="Pos X"/> - <spinner label="Y" name="Pos Y"/> - <spinner label="Z" name="Pos Z"/> - <text name="label size"> - Dimensioni (metri) - </text> - <spinner label="X" name="Scale X"/> - <spinner label="Y" name="Scale Y"/> - <spinner label="Z" name="Scale Z"/> - <text name="label rotation"> - Rotazione (gradi) - </text> - <spinner label="X" name="Rot X"/> - <spinner label="Y" name="Rot Y"/> - <spinner label="Z" name="Rot Z"/> - <text name="label material"> - Materiale - </text> - <combo_box name="material"> - <combo_box.item name="Stone" label="Pietra"/> - <combo_box.item name="Metal" label="Metallo"/> - <combo_box.item name="Glass" label="Vetro"/> - <combo_box.item name="Wood" label="Legno"/> - <combo_box.item name="Flesh" label="Carne"/> - <combo_box.item name="Plastic" label="Plastica"/> - <combo_box.item name="Rubber" label="Gomma"/> - </combo_box> - <text name="label basetype"> - Forma di costruzione - </text> - <combo_box name="comboBaseType"> - <combo_box.item name="Box" label="Cubo"/> - <combo_box.item name="Cylinder" label="Cilindro"/> - <combo_box.item name="Prism" label="Prisma"/> - <combo_box.item name="Sphere" label="Sfera"/> - <combo_box.item name="Torus" label="Toro"/> - <combo_box.item name="Tube" label="Tubo"/> - <combo_box.item name="Ring" label="Anello"/> - <combo_box.item name="Sculpted" label="Sculpted"/> - </combo_box> - <text name="text cut"> - Linea di taglio Inizio e Fine - </text> - <spinner label="I" name="cut begin"/> - <spinner label="F" name="cut end"/> - <text name="text hollow"> - Foro - </text> - <text name="text skew"> - Asimmetria - </text> - <text name="Hollow Shape"> - Forma del foro - </text> - <combo_box name="hole"> - <combo_box.item name="Default" label="Default"/> - <combo_box.item name="Circle" label="Rotondo"/> - <combo_box.item name="Square" label="Quadrato"/> - <combo_box.item name="Triangle" label="Triangolare"/> - </combo_box> - <text name="text twist"> - Torsione Inizio e Fine - </text> - <spinner label="I" name="Twist Begin"/> - <spinner label="F" name="Twist End"/> - <text name="scale_taper"> - Avvicina i lati - </text> - <text name="scale_hole"> - Grandezza del foro - </text> - <spinner label="X" name="Taper Scale X"/> - <spinner label="Y" name="Taper Scale Y"/> - <text name="text topshear"> - Inclinazione - </text> - <spinner label="X" name="Shear X"/> - <spinner label="Y" name="Shear Y"/> - <text name="advanced_cut"> - Ritaglia il profilo Inizio e Fine - </text> - <text name="advanced_dimple"> - Scava Inizio e Fine - </text> - <spinner label="I" name="Path Limit Begin"/> - <spinner label="F" name="Path Limit End"/> - <text name="text taper2"> - Avvicina - </text> - <spinner label="X" name="Taper X"/> - <spinner label="Y" name="Taper Y"/> - <text name="text radius delta"> - Raggio - </text> - <text name="text revolutions"> - Rivoluzioni - </text> - <texture_picker label="Sculpt Texture" name="sculpt texture control" tool_tip="Clicca per scegliere un'immagine"/> - <check_box label="Rifletti" name="sculpt mirror control" tool_tip="Ribalta lo sculpted prim lungo l'asse X."/> - <check_box label="Rivolta" name="sculpt invert control" tool_tip="Inverte le normali dello sculpted prim, facendolo apparire rivoltato."/> - <text name="label sculpt type"> - Tipo di congiunzione - </text> - <combo_box name="sculpt type control"> - <combo_box.item name="None" label="nessuna)"/> - <combo_box.item name="Sphere" label="Sferica"/> - <combo_box.item name="Torus" label="Toroidale"/> - <combo_box.item name="Plane" label="Piana"/> - <combo_box.item name="Cylinder" label="Cilindrica"/> - </combo_box> - </panel> - <panel label="Caratteristiche" name="Features"> - <text name="select_single"> - Seleziona solo un prim per modificarne le caratteristiche. - </text> - <text name="edit_object"> - Modifica le caratteristiche dell'oggetto: - </text> - <check_box label="Flessibilità " name="Flexible1D Checkbox Ctrl" tool_tip="Permette all'oggetto di flettersi rispetto all'asse Z. (solo lato client)"/> - <spinner label="Morbidezza" name="FlexNumSections"/> - <spinner label="Gravità " name="FlexGravity"/> - <spinner label="Elasticità " name="FlexFriction"/> - <spinner label="Sventolio" name="FlexWind"/> - <spinner label="Tensione" name="FlexTension"/> - <spinner label="Forza X" name="FlexForceX"/> - <spinner label="Forza Y" name="FlexForceY"/> - <spinner label="Forza Z" name="FlexForceZ"/> - <check_box label="Luce" name="Light Checkbox Ctrl" tool_tip="Imposta l'oggetto come sorgente di luce"/> - <text name="label color"> - Colore - </text> - <color_swatch label="" name="colorswatch" tool_tip="Clicca per aprire la tavolozza dei colori"/> - <spinner label="Intensità " name="Light Intensity"/> - <spinner label="Raggio" name="Light Radius"/> - <spinner label="Attenuazione" name="Light Falloff"/> - </panel> - <panel label="Texture" name="Texture"> - <texture_picker label="Texture" name="texture control" tool_tip="Clicca per scegliere un'immagine"/> - <color_swatch label="Colore" name="colorswatch" tool_tip="Clicca per aprire la tavolozza dei colori"/> - <text name="color trans"> - Trasparenza % - </text> - <text name="glow label"> - Bagliore - </text> - <check_box label="Massima luminosità " name="checkbox fullbright"/> - <text name="tex gen"> - Applicazione della texture - </text> - <combo_box name="combobox texgen"> - <combo_box.item name="Default" label="Default"/> - <combo_box.item name="Planar" label="Planare"/> - </combo_box> - <text name="label shininess"> - Brillantezza - </text> - <combo_box name="combobox shininess"> - <combo_box.item name="None" label="Nessuna"/> - <combo_box.item name="Low" label="Bassa"/> - <combo_box.item name="Medium" label="Media"/> - <combo_box.item name="High" label="Alta"/> - </combo_box> - <text name="label bumpiness"> - Rilievo - </text> - <combo_box name="combobox bumpiness"> - <combo_box.item name="None" label="Nessuna"/> - <combo_box.item name="Brightness" label="Luminoso"/> - <combo_box.item name="Darkness" label="Scuro"/> - <combo_box.item name="woodgrain" label="Venature del legno"/> - <combo_box.item name="bark" label="Corteccia"/> - <combo_box.item name="bricks" label="Mattoni"/> - <combo_box.item name="checker" label="Scacchi"/> - <combo_box.item name="concrete" label="Cemento"/> - <combo_box.item name="crustytile" label="Mattonella incrostata"/> - <combo_box.item name="cutstone" label="Mosaico in pietra"/> - <combo_box.item name="discs" label="Dischi"/> - <combo_box.item name="gravel" label="Ghiaia"/> - <combo_box.item name="petridish" label="Sassi"/> - <combo_box.item name="siding" label="Listoni"/> - <combo_box.item name="stonetile" label="Mattonelle in pietra"/> - <combo_box.item name="stucco" label="Stucco"/> - <combo_box.item name="suction" label="Cerchi rialzati"/> - <combo_box.item name="weave" label="Trama"/> - </combo_box> - <text name="tex scale"> - Ripetizioni per faccia - </text> - <spinner label="Orizzontale (U)" name="TexScaleU"/> - <check_box label="Inverti" name="checkbox flip s"/> - <spinner label="Verticale (V)" name="TexScaleV"/> - <check_box label="Inverti" name="checkbox flip t"/> - <text name="tex rotate"> - Rotazione (Gradi) - </text> - <string name="string repeats per meter"> - Ripetizioni per metro - </string> - <string name="string repeats per face"> - Ripetizioni per faccia - </string> - <text name="rpt"> - Ripetizioni per metro - </text> - <button label="Applica" label_selected="Applica" name="button apply"/> - <text name="tex offset"> - Offset - </text> - <spinner label="Orizzontale (U)" name="TexOffsetU"/> - <spinner label="Verticale (V)" name="TexOffsetV"/> - <text name="textbox autofix"> - Allinea texture dei media -(deve prima caricarsi) - </text> - <button label="Allinea" label_selected="Allinea" name="button align"/> - </panel> - <panel label="Contenuto" name="Contents"> - <button label="Nuovo script..." label_selected="Nuovo script..." name="button new script"/> - </panel> - </tab_container> - <panel name="land info panel"> - <text name="label_area_price"> - Prezzo: [PRICE] L$ per [AREA] mq. - </text> - <text name="label_area"> - Area: [AREA] mq. - </text> - <button label="Acquista il terreno..." label_selected="Acquista il terreno..." name="button buy land"/> - <button label="Abbandona il terreno..." label_selected="Abbandona il terreno..." name="button abandon land"/> - <button label="Suddividi..." label_selected="Suddividi..." name="button subdivide land"/> - <button label="Unisci..." label_selected="Unisci..." name="button join land"/> - <button label="Informazioni sul terreno..." label_selected="Informazioni sul terreno..." name="button about land"/> - </panel> - <string name="status_rotate"> - Sposta le fasce colorate per ruotare l'oggetto - </string> - <string name="status_scale"> - Clicca e trascina per ridimensionare il lato selezionato - </string> - <string name="status_move"> - Trascina per spostare, maiuscolo+trascina per copiare - </string> - <string name="status_modifyland"> - Clicca e tieni premuto per modificare il terreno - </string> - <string name="status_camera"> - Clicca e sposta per cambiare visuale - </string> - <string name="status_grab"> - Trascina per spostare gli oggetti, Ctrl per sollevarli, Ctrl+maiuscolo per ruotarli - </string> - <string name="status_place"> - Clicca intorno per creare, Maiuscolo+click per selezionare - </string> - <string name="status_selectland"> - Clicca e trascina per selezionare il terreno - </string> - <string name="grid_screen_text"> - Schermo - </string> - <string name="grid_local_text"> - Locale - </string> - <string name="grid_world_text"> - Globale - </string> - <string name="grid_reference_text"> - Riferimento - </string> - <string name="grid_attachment_text"> - Accessorio - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="toolbox floater" title=""> + <button label="" label_selected="" name="button focus" tool_tip="Focus"/> + <button label="" label_selected="" name="button move" tool_tip="Muoviti"/> + <button label="" label_selected="" name="button edit" tool_tip="Modifica"/> + <button label="" label_selected="" name="button create" tool_tip="Crea"/> + <button label="" label_selected="" name="button land" tool_tip="Terra"/> + <check_box label="Zoom" name="radio zoom"/> + <check_box label="Guarda ruotando(Ctrl)" name="radio orbit"/> + <check_box label="Guarda panoramicamente (Ctrl-Shift)" name="radio pan"/> + <check_box label="Muovi" name="radio move"/> + <check_box label="Alza (Ctrl)" name="radio lift"/> + <check_box label="Gira intorno (Ctrl-Shift)" name="radio spin"/> + <check_box label="Posizione" name="radio position"/> + <check_box label="Ruota (Ctrl)" name="radio rotate"/> + <check_box label="Ridimensiona (Ctrl-Shift)" name="radio stretch"/> + <check_box label="Seleziona Texture" name="radio select face"/> + <check_box label="Modifica parti unite" name="checkbox edit linked parts"/> + <text name="text ruler mode"> + Modalità  regolo di precisione: + </text> + <combo_box name="combobox grid mode"> + <combo_item name="World"> + Globale + </combo_item> + <combo_item name="Local"> + Locale + </combo_item> + <combo_item name="Reference"> + Riferito a + </combo_item> + </combo_box> + <check_box label="Ridimensiona simmetricamente" name="checkbox uniform"/> + <check_box label="Ridimensiona le Texture" name="checkbox stretch textures"/> + <check_box label="Usa righello" name="checkbox snap to grid"/> + <button label="Opzioni..." label_selected="Opzioni..." name="Options..."/> + <text name="text status"> + Trascina per muovere, trascina+maiuscolo per copiare + </text> + <button label="" label_selected="" name="ToolCube" tool_tip="Cubo"/> + <button label="" label_selected="" name="ToolPrism" tool_tip="Prisma"/> + <button label="" label_selected="" name="ToolPyramid" tool_tip="Piramide"/> + <button label="" label_selected="" name="ToolTetrahedron" tool_tip="Tetraedro"/> + <button label="" label_selected="" name="ToolCylinder" tool_tip="Cilindro"/> + <button label="" label_selected="" name="ToolHemiCylinder" tool_tip="Semicilindro"/> + <button label="" label_selected="" name="ToolCone" tool_tip="Cono"/> + <button label="" label_selected="" name="ToolHemiCone" tool_tip="Semicono"/> + <button label="" label_selected="" name="ToolSphere" tool_tip="Sfera"/> + <button label="" label_selected="" name="ToolHemiSphere" tool_tip="Semisfera"/> + <button label="" label_selected="" name="ToolTorus" tool_tip="Toro"/> + <button label="" label_selected="" name="ToolTube" tool_tip="Tubo"/> + <button label="" label_selected="" name="ToolRing" tool_tip="Anello"/> + <button label="" label_selected="" name="ToolTree" tool_tip="Albero"/> + <button label="" label_selected="" name="ToolGrass" tool_tip="Erba"/> + <check_box label="Mantieni selezionato" name="checkbox sticky"/> + <check_box label="Copia la selezione" name="checkbox copy selection"/> + <check_box label="Centra" name="checkbox copy centers"/> + <check_box label="Ruota" name="checkbox copy rotates"/> + <check_box label="Seleziona il terreno" name="radio select land"/> + <check_box label="Appiattisci" name="radio flatten"/> + <check_box label="Eleva" name="radio raise"/> + <check_box label="Abbassa" name="radio lower"/> + <check_box label="Uniforma" name="radio smooth"/> + <check_box label="Ondula" name="radio noise"/> + <check_box label="Ripristina" name="radio revert"/> + <button label="Applica" label_selected="Applica" name="button apply to selection" tool_tip="Modifica il terreno selezionato"/> + <text name="Bulldozer:"> + Bulldozer: + </text> + <text name="Dozer Size:"> + Grandezza + </text> + <text name="Strength:"> + Potenza + </text> + <text name="obj_count"> + Oggetti selezionati: [COUNT] + </text> + <text name="prim_count"> + primitive: [COUNT] + </text> + <tab_container name="Object Info Tabs"> + <panel label="Generale" name="General"> + <text name="Name:"> + Nome: + </text> + <text name="Description:"> + Descrizione: + </text> + <text name="Creator:"> + Creatore: + </text> + <text name="Creator Name"> + Thrax Linden + </text> + <button label="Profilo..." label_selected="Profilo..." name="button creator profile"/> + <text name="Owner:"> + Proprietario: + </text> + <text name="Owner Name"> + Thrax Linden + </text> + <button label="Profilo..." label_selected="Profilo..." name="button owner profile"/> + <text name="Group:"> + Gruppo: + </text> + <text name="Group Name Proxy"> + The Lindens + </text> + <button label="Imposta..." label_selected="Imposta..." name="button set group"/> + <text name="Permissions:"> + Permessi: + </text> + <text name="perm_modify"> + Puoi modificare questo oggetto. + </text> + <check_box label="Condividi con il gruppo" name="checkbox share with group" tool_tip="Permetti a tutti i membri del gruppo di condividere ed utilizzare i tuoi permessi per questo oggetto. Devi cederlo al gruppo per abilitare le restrizioni di ruolo."/> + <string name="text deed continued"> + Cedi al gruppo... + </string> + <string name="text deed"> + Cedi al gruppo + </string> + <button label="Cedi al gruppo..." label_selected="Cedi al gruppo..." name="button deed" tool_tip="Gli oggetti condivisi con il gruppo possono essere ceduti da un funzionario del gruppo."/> + <check_box label="Permetti a chiunque di spostare" name="checkbox allow everyone move"/> + <check_box label="Permetti a chiunque di copiare" name="checkbox allow everyone copy"/> + <check_box label="Mostra nella ricerca" name="search_check" tool_tip="Permetti che l'oggetto sia visibile nella ricerca"/> + <check_box label="In vendita" name="checkbox for sale"/> + <text name="Cost"> + Prezzo: L$ + </text> + <radio_group name="sale type"> + <radio_item name="Original"> + Originale + </radio_item> + <radio_item name="Copy"> + Copia + </radio_item> + <radio_item name="Contents"> + Contenuto + </radio_item> + </radio_group> + <text name="Next owner can:"> + Il prossimo proprietario può: + </text> + <check_box label="Modificare" name="checkbox next owner can modify"/> + <check_box label="Copiare" name="checkbox next owner can copy"/> + <check_box label="Rivendere/Regalare" name="checkbox next owner can transfer"/> + <text name="label click action"> + Se cliccato con il tasto sinistro del mouse + </text> + <combo_box name="clickaction"> + <combo_item name="Touch/grab(default)"> + Tocca/Afferra (default) + </combo_item> + <combo_item name="Sitonobject"> + Siediti sull'oggetto + </combo_item> + <combo_item name="Buyobject"> + Compra l'oggetto + </combo_item> + <combo_item name="Payobject"> + Paga l'oggetto + </combo_item> + <combo_item name="Open"> + Apri + </combo_item> + <combo_item name="Play"> + Attiva i multimedia del terreno + </combo_item> + <combo_item name="Opemmedia"> + Apri i multimedia del terreno + </combo_item> + </combo_box> + <text name="B:"> + B: + </text> + <text name="O:"> + O; + </text> + <text name="G:"> + G: + </text> + <text name="E:"> + E: + </text> + <text name="N:"> + N: + </text> + <text name="F:"> + F: + </text> + <string name="text modify info 1"> + Puoi modificare questo oggetto. + </string> + <string name="text modify info 2"> + Puoi modificare questi oggetti. + </string> + <string name="text modify info 3"> + Non puoi modificare questo oggetto. + </string> + <string name="text modify info 4"> + Non puoi modificare questi oggetti. + </string> + <string name="text modify warning"> + Devi selezionare l'intero oggetto per impostare i permessi. + </string> + <string name="Cost Default"> + Prezzo: L$ + </string> + <string name="Cost Total"> + Prezzo totale: L$ + </string> + <string name="Cost Per Unit"> + Prezzo per: L$ + </string> + <string name="Cost Mixed"> + Prezzo misto + </string> + <string name="Sale Mixed"> + Vendita mista + </string> + </panel> + <panel label="Oggetto" name="Object"> + <text name="select_single"> + Seleziona solo un prim per modificarne i parametri. + </text> + <text name="edit_object"> + Modifica i parametri dell'oggetto: + </text> + <check_box label="Bloccato" name="checkbox locked" tool_tip="Previene lo spostamento o la cancellazione dell'oggetto. Spesso utile mentre si costruisce per evitare involontarie modifiche."/> + <check_box label="Fisico" name="Physical Checkbox Ctrl" tool_tip="Permette all'oggetto di essere spostato e di subire gli effetti della gravità "/> + <check_box label="Temporaneo" name="Temporary Checkbox Ctrl" tool_tip="Provoca la cancellazione dell'oggetto 1 minuto dopo la sua creazione."/> + <check_box label="Fantasma" name="Phantom Checkbox Ctrl" tool_tip="Rende l'oggetto penetrabile dagli altri oggetti e dagli avatars"/> + <text name="label position"> + Posizione (metri) + </text> + <spinner label="X" name="Pos X"/> + <spinner label="Y" name="Pos Y"/> + <spinner label="Z" name="Pos Z"/> + <text name="label size"> + Dimensioni (metri) + </text> + <spinner label="X" name="Scale X"/> + <spinner label="Y" name="Scale Y"/> + <spinner label="Z" name="Scale Z"/> + <text name="label rotation"> + Rotazione (gradi) + </text> + <spinner label="X" name="Rot X"/> + <spinner label="Y" name="Rot Y"/> + <spinner label="Z" name="Rot Z"/> + <text name="label material"> + Materiale + </text> + <combo_box name="material"> + <combo_item name="Stone"> + Pietra + </combo_item> + <combo_item name="Metal"> + Metallo + </combo_item> + <combo_item name="Glass"> + Vetro + </combo_item> + <combo_item name="Wood"> + Legno + </combo_item> + <combo_item name="Flesh"> + Carne + </combo_item> + <combo_item name="Plastic"> + Plastica + </combo_item> + <combo_item name="Rubber"> + Gomma + </combo_item> + </combo_box> + <text name="label basetype"> + Forma di costruzione + </text> + <combo_box name="comboBaseType"> + <combo_item name="Box"> + Cubo + </combo_item> + <combo_item name="Cylinder"> + Cilindro + </combo_item> + <combo_item name="Prism"> + Prisma + </combo_item> + <combo_item name="Sphere"> + Sfera + </combo_item> + <combo_item name="Torus"> + Toro + </combo_item> + <combo_item name="Tube"> + Tubo + </combo_item> + <combo_item name="Ring"> + Anello + </combo_item> + <combo_item name="Sculpted"> + Sculpted + </combo_item> + </combo_box> + <text name="text cut"> + Linea di taglio Inizio e Fine + </text> + <spinner label="I" name="cut begin"/> + <spinner label="F" name="cut end"/> + <text name="text hollow"> + Foro + </text> + <text name="text skew"> + Asimmetria + </text> + <text name="Hollow Shape"> + Forma del foro + </text> + <combo_box name="hole"> + <combo_item name="Default"> + Default + </combo_item> + <combo_item name="Circle"> + Rotondo + </combo_item> + <combo_item name="Square"> + Quadrato + </combo_item> + <combo_item name="Triangle"> + Triangolare + </combo_item> + </combo_box> + <text name="text twist"> + Torsione Inizio e Fine + </text> + <spinner label="I" name="Twist Begin"/> + <spinner label="F" name="Twist End"/> + <text name="scale_taper"> + Avvicina i lati + </text> + <text name="scale_hole"> + Grandezza del foro + </text> + <spinner label="X" name="Taper Scale X"/> + <spinner label="Y" name="Taper Scale Y"/> + <text name="text topshear"> + Inclinazione + </text> + <spinner label="X" name="Shear X"/> + <spinner label="Y" name="Shear Y"/> + <text name="advanced_cut"> + Ritaglia il profilo Inizio e Fine + </text> + <text name="advanced_dimple"> + Scava Inizio e Fine + </text> + <text name="advanced_slice"> + Affetta Inizio e Fine + </text> + <spinner label="I" name="Path Limit Begin"/> + <spinner label="F" name="Path Limit End"/> + <text name="text taper2"> + Avvicina + </text> + <spinner label="X" name="Taper X"/> + <spinner label="Y" name="Taper Y"/> + <text name="text radius delta"> + Raggio + </text> + <text name="text revolutions"> + Rivoluzioni + </text> + <texture_picker label="Sculpt Texture" name="sculpt texture control" tool_tip="Clicca per scegliere un'immagine"/> + <check_box label="Rifletti" name="sculpt mirror control" tool_tip="Ribalta lo sculpted prim lungo l'asse X."/> + <check_box label="Rivolta" name="sculpt invert control" tool_tip="Inverte le normali dello sculpted prim, facendolo apparire rivoltato."/> + <text name="label sculpt type"> + Tipo di congiunzione + </text> + <combo_box name="sculpt type control"> + <combo_item name="None"> + (nessuna) + </combo_item> + <combo_item name="Sphere"> + Sferica + </combo_item> + <combo_item name="Torus"> + Toroidale + </combo_item> + <combo_item name="Plane"> + Piana + </combo_item> + <combo_item name="Cylinder"> + Cilindrica + </combo_item> + </combo_box> + </panel> + <panel label="Caratteristiche" name="Features"> + <text name="select_single"> + Seleziona solo un prim per modificarne le caratteristiche. + </text> + <text name="edit_object"> + Modifica le caratteristiche dell'oggetto: + </text> + <check_box label="Flessibilità " name="Flexible1D Checkbox Ctrl" tool_tip="Permette all'oggetto di flettersi rispetto all'asse Z. (solo lato client)"/> + <spinner label="Morbidezza" name="FlexNumSections"/> + <spinner label="Gravità " name="FlexGravity"/> + <spinner label="Elasticità " name="FlexFriction"/> + <spinner label="Sventolio" name="FlexWind"/> + <spinner label="Tensione" name="FlexTension"/> + <spinner label="Forza X" name="FlexForceX"/> + <spinner label="Forza Y" name="FlexForceY"/> + <spinner label="Forza Z" name="FlexForceZ"/> + <check_box label="Luce" name="Light Checkbox Ctrl" tool_tip="Imposta l'oggetto come sorgente di luce"/> + <text name="label color"> + Colore + </text> + <color_swatch label="" name="colorswatch" tool_tip="Clicca per aprire la tavolozza dei colori"/> + <spinner label="Intensità " name="Light Intensity"/> + <spinner label="Raggio" name="Light Radius"/> + <spinner label="Attenuazione" name="Light Falloff"/> + </panel> + <panel label="Texture" name="Texture"> + <texture_picker label="Texture" name="texture control" tool_tip="Clicca per scegliere un'immagine"/> + <color_swatch label="Colore" name="colorswatch" tool_tip="Clicca per aprire la tavolozza dei colori"/> + <text name="color trans"> + Trasparenza % + </text> + <text name="glow label"> + Bagliore + </text> + <check_box label="Massima luminosità " name="checkbox fullbright"/> + <text name="tex gen"> + Applicazione della texture + </text> + <combo_box name="combobox texgen"> + <combo_item name="Default"> + Default + </combo_item> + <combo_item name="Planar"> + Planare + </combo_item> + </combo_box> + <text name="label shininess"> + Brillantezza + </text> + <combo_box name="combobox shininess"> + <combo_item name="None"> + Nessuna + </combo_item> + <combo_item name="Low"> + Bassa + </combo_item> + <combo_item name="Medium"> + Media + </combo_item> + <combo_item name="High"> + Alta + </combo_item> + </combo_box> + <text name="label bumpiness"> + Rilievo + </text> + <combo_box name="combobox bumpiness"> + <combo_item name="None"> + Nessuna + </combo_item> + <combo_item name="Brightness"> + Luminoso + </combo_item> + <combo_item name="Darkness"> + Scuro + </combo_item> + <combo_item name="woodgrain"> + Venature del legno + </combo_item> + <combo_item name="bark"> + Corteccia + </combo_item> + <combo_item name="bricks"> + Mattoni + </combo_item> + <combo_item name="checker"> + Scacchi + </combo_item> + <combo_item name="concrete"> + Cemento + </combo_item> + <combo_item name="crustytile"> + Mattonella incrostata + </combo_item> + <combo_item name="cutstone"> + Mosaico in pietra + </combo_item> + <combo_item name="discs"> + Dischi + </combo_item> + <combo_item name="gravel"> + Ghiaia + </combo_item> + <combo_item name="petridish"> + Sassi + </combo_item> + <combo_item name="siding"> + Listoni + </combo_item> + <combo_item name="stonetile"> + Mattonelle in pietra + </combo_item> + <combo_item name="stucco"> + Stucco + </combo_item> + <combo_item name="suction"> + Cerchi rialzati + </combo_item> + <combo_item name="weave"> + Trama + </combo_item> + </combo_box> + <text name="tex scale"> + Ripetizioni per faccia + </text> + <spinner label="Orizzontale (U)" name="TexScaleU"/> + <check_box label="Inverti" name="checkbox flip s"/> + <spinner label="Verticale (V)" name="TexScaleV"/> + <check_box label="Inverti" name="checkbox flip t"/> + <text name="tex rotate"> + Rotazione (Gradi) + </text> + <string name="string repeats per meter"> + Ripetizioni per metro + </string> + <string name="string repeats per face"> + Ripetizioni per faccia + </string> + <text name="rpt"> + Ripetizioni per metro + </text> + <button label="Applica" label_selected="Applica" name="button apply"/> + <text name="tex offset"> + Offset + </text> + <spinner label="Orizzontale (U)" name="TexOffsetU"/> + <spinner label="Verticale (V)" name="TexOffsetV"/> + <text name="textbox autofix"> + Allinea texture dei media +(deve prima caricarsi) + </text> + <button label="Allinea" label_selected="Allinea" name="button align"/> + </panel> + <panel label="Contenuto" name="Contents"> + <button label="Nuovo Script" label_selected="Nuovo script..." name="button new script"/> + <button label="Permessi..." name="button permissions"/> + </panel> + </tab_container> + <panel name="land info panel"> + <text name="label_parcel_info"> + Informazioni sul terreno + </text> + <text name="label_area_price"> + Prezzo: [PRICE] L$ per [AREA] mq. + </text> + <text name="label_area"> + Area: [AREA] mq. + </text> + <button label="Informazioni sul terreno..." label_selected="Informazioni sul terreno..." name="button about land"/> + <check_box label="Mostra i proprietari" name="checkbox show owners" tool_tip="Colora i terreni in base ai loro proprietari"/> + <button label="?" label_selected="?" name="button show owners help"/> + <text name="label_parcel_modify"> + Modifica il terreno + </text> + <button label="Suddividi..." label_selected="Suddividi..." name="button subdivide land"/> + <button label="Unisci..." label_selected="Unisci..." name="button join land"/> + <text name="label_parcel_trans"> + Transazioni del territorio + </text> + <button label="Acquista il terreno..." label_selected="Acquista il terreno..." name="button buy land"/> + <button label="Abbandona il terreno..." label_selected="Abbandona il terreno..." name="button abandon land"/> + </panel> + <string name="status_rotate"> + Sposta le fasce colorate per ruotare l'oggetto + </string> + <string name="status_scale"> + Clicca e trascina per ridimensionare il lato selezionato + </string> + <string name="status_move"> + Trascina per spostare, maiuscolo+trascina per copiare + </string> + <string name="status_modifyland"> + Clicca e tieni premuto per modificare il terreno + </string> + <string name="status_camera"> + Clicca e sposta per cambiare visuale + </string> + <string name="status_grab"> + Trascina per muovere, Ctrl per alzare, Ctrl-Shift per ruotare + </string> + <string name="status_place"> + Clicca inworld per costruire + </string> + <string name="status_selectland"> + Clicca e trascina per selezionare il terreno + </string> + <string name="grid_screen_text"> + Schermo + </string> + <string name="grid_local_text"> + Locale + </string> + <string name="grid_world_text"> + Globale + </string> + <string name="grid_reference_text"> + Riferimento + </string> + <string name="grid_attachment_text"> + Accessorio + </string> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_top_objects.xml b/indra/newview/skins/default/xui/it/floater_top_objects.xml index 95bb0e359752f964d48735f485ada577a9799451..ff6e9eb730e1ce3bca1cb7396f8e6fde9a1a6b51 100644 --- a/indra/newview/skins/default/xui/it/floater_top_objects.xml +++ b/indra/newview/skins/default/xui/it/floater_top_objects.xml @@ -1,55 +1,55 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="top_objects" title="In caricamento..."> - <text name="title_text"> - In caricamento... - </text> - <scroll_list name="objects_list"> - <column label="Punteggio" name="score"/> - <column label="Nome" name="name"/> - <column label="Proprietario" name="owner"/> - <column label="Ubicazione" name="location"/> - <column label="Ora" name="time"/> - <column label="Ora (Mono)" name="mono_time"/> - </scroll_list> - <text name="id_text"> - ID oggetto: - </text> - <button label="Mostra segnali luminosi" name="show_beacon_btn"/> - <text name="obj_name_text"> - Nome oggetto: - </text> - <button label="Filtro" name="filter_object_btn"/> - <text name="owner_name_text"> - Nome oggetto: - </text> - <button label="Filtro" name="filter_owner_btn"/> - <button label="Restituisci selezionato" name="return_selected_btn"/> - <button label="Restituisci tutti" name="return_all_btn"/> - <button label="Disabilita selezionato" name="disable_selected_btn"/> - <button label="Disabilita per tutti" name="disable_all_btn"/> - <button label="Aggiorna" name="refresh_btn"/> - <string name="top_scripts_title"> - Script pesanti - </string> - <string name="top_scripts_text"> - [COUNT] script richiedono un totale di [TIME] ms - </string> - <string name="scripts_score_label"> - Ora - </string> - <string name="scripts_mono_time_label"> - Ora 'Mono' - </string> - <string name="top_colliders_title"> - Oggetti con maggiori collisioni - </string> - <string name="top_colliders_text"> - I [COUNT] oggetti che sperimentano il maggior numero di collisioni - </string> - <string name="colliders_score_label"> - Punteggio - </string> - <string name="none_descriptor"> - Nulla di rilevato. - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="top_objects" title="In caricamento..."> + <text name="title_text"> + In caricamento... + </text> + <scroll_list name="objects_list"> + <column label="Punteggio" name="score"/> + <column label="Nome" name="name"/> + <column label="Proprietario" name="owner"/> + <column label="Ubicazione" name="location"/> + <column label="Ora" name="time"/> + <column label="Ora (Mono)" name="mono_time"/> + </scroll_list> + <text name="id_text"> + ID oggetto: + </text> + <button label="Mostra segnali luminosi" name="show_beacon_btn"/> + <text name="obj_name_text"> + Nome oggetto: + </text> + <button label="Filtro" name="filter_object_btn"/> + <text name="owner_name_text"> + Nome oggetto: + </text> + <button label="Filtro" name="filter_owner_btn"/> + <button label="Restituisci selezionato" name="return_selected_btn"/> + <button label="Restituisci tutti" name="return_all_btn"/> + <button label="Disabilita selezionato" name="disable_selected_btn"/> + <button label="Disabilita per tutti" name="disable_all_btn"/> + <button label="Aggiorna" name="refresh_btn"/> + <string name="top_scripts_title"> + Script pesanti + </string> + <string name="top_scripts_text"> + [COUNT] script richiedono un totale di [TIME] ms + </string> + <string name="scripts_score_label"> + Ora + </string> + <string name="scripts_mono_time_label"> + Ora 'Mono' + </string> + <string name="top_colliders_title"> + Oggetti con maggiori collisioni + </string> + <string name="top_colliders_text"> + I [COUNT] oggetti che sperimentano il maggior numero di collisioni + </string> + <string name="colliders_score_label"> + Punteggio + </string> + <string name="none_descriptor"> + Nulla di rilevato. + </string> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_tos.xml b/indra/newview/skins/default/xui/it/floater_tos.xml index da3f2e2c1f1e751c7c9d0513e5d55ec108a02ecb..76dbe86ee656e8bceed9122153e069bed47b9879 100644 --- a/indra/newview/skins/default/xui/it/floater_tos.xml +++ b/indra/newview/skins/default/xui/it/floater_tos.xml @@ -1,16 +1,16 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="modal container" title=""> - <button label="Continua" label_selected="Continua" name="Continue"/> - <button label="Annulla" label_selected="Annulla" name="Cancel"/> - <check_box label="Accetto i Termini di Servizio" name="agree_chk"/> - <text name="tos_heading"> - Leggi attentamente i seguenti Termini di Servizio . Per continuare ad entrare in Second Life, -devi accettare l'accordo. - </text> - <text_editor name="tos_text"> - TOS_TEXT - </text_editor> - <string name="real_url"> - http://secondlife.com/app/tos/ - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="modal container" title=""> + <button label="Continua" label_selected="Continua" name="Continue"/> + <button label="Annulla" label_selected="Annulla" name="Cancel"/> + <check_box label="Accetto i Termini di Servizio" name="agree_chk"/> + <text name="tos_heading"> + Leggi attentamente i seguenti Termini di Servizio . Per continuare ad entrare in Second Life, +devi accettare l'accordo. + </text> + <text_editor name="tos_text"> + TOS_TEXT + </text_editor> + <string name="real_url"> + http://secondlife.com/app/tos/ + </string> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_url_entry.xml b/indra/newview/skins/default/xui/it/floater_url_entry.xml index 0a757edf24f8c5d605bf8230caf46d0aca72e9c5..2968b19d8038c27398bc400352bf6085c08ef849 100644 --- a/indra/newview/skins/default/xui/it/floater_url_entry.xml +++ b/indra/newview/skins/default/xui/it/floater_url_entry.xml @@ -1,12 +1,12 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="url_entry" title=""> - <text name="media_label"> - Media URL: - </text> - <button label="OK" name="ok_btn"/> - <button label="Annulla" name="cancel_btn"/> - <button label="Cancella" name="clear_btn"/> - <text name="loading_label"> - In caricamento... - </text> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="url_entry" title=""> + <text name="media_label"> + Media URL: + </text> + <button label="OK" name="ok_btn"/> + <button label="Annulla" name="cancel_btn"/> + <button label="Cancella" name="clear_btn"/> + <text name="loading_label"> + In caricamento... + </text> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_water.xml b/indra/newview/skins/default/xui/it/floater_water.xml index 0f2444ca70885405203d5ae13ed5a6690f9afe2d..6665d97e2af5672145d03a4e33053a87b1543984 100644 --- a/indra/newview/skins/default/xui/it/floater_water.xml +++ b/indra/newview/skins/default/xui/it/floater_water.xml @@ -1,88 +1,88 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Water Floater" title="Editor avanzato dell'acqua"> - <text name="KeyFramePresetsText"> - Impostazioni predeterminate dell'acqua: - </text> - <button label="Nuovo" label_selected="Nuovo" name="WaterNewPreset"/> - <button label="Salva" label_selected="Salva" name="WaterSavePreset"/> - <button label="Cancella" label_selected="Cancella" name="WaterDeletePreset"/> - <tab_container name="Water Tabs"> - <panel label="Impostazioni" name="Settings"> - <text name="BHText"> - Colore della nebbiosità dell'acqua - </text> - <button label="?" name="WaterFogColorHelp"/> - <color_swatch label="" name="WaterFogColor" tool_tip="Clicca per aprire la selezione colore"/> - <text name="WaterFogDensText"> - Esponente di densità  della nebbia dell'acqua - </text> - <button label="?" name="WaterFogDensityHelp"/> - <text name="WaterUnderWaterFogModText"> - Regolatore effetto nebbia subacquea - </text> - <button label="?" name="WaterUnderWaterFogModHelp"/> - <text name="BDensText"> - Scala di riflessione delle onde - </text> - <button label="?" name="WaterNormalScaleHelp"/> - <text name="BHText2"> - 1 - </text> - <text name="BHText3"> - 2 - </text> - <text name="BHText4"> - 3 - </text> - <text name="HDText"> - Scala Fresnel - </text> - <button label="?" name="WaterFresnelScaleHelp"/> - <text name="FresnelOffsetText"> - Offset Fresnel - </text> - <button label="?" name="WaterFresnelOffsetHelp"/> - <text name="DensMultText"> - Scala di rifrazione nell'acqua dall'alto - </text> - <button label="?" name="WaterScaleAboveHelp"/> - <text name="WaterScaleBelowText"> - Scala di rifrazione nell'acqua dal basso - </text> - <button label="?" name="WaterScaleBelowHelp"/> - <text name="MaxAltText"> - Moltiplicatore della sfocatura - </text> - <button label="?" name="WaterBlurMultiplierHelp"/> - </panel> - <panel label="Immagine" name="Waves"> - <text name="BHText"> - Direzione della grande onda - </text> - <button label="?" name="WaterWave1Help"/> - <text name="WaterWave1DirXText"> - X - </text> - <text name="WaterWave1DirYText"> - Y - </text> - <text name="BHText2"> - Direzione della piccola onda - </text> - <button label="?" name="WaterWave2Help"/> - <text name="WaterWave2DirXText"> - X - </text> - <text name="WaterWave2DirYText"> - Y - </text> - <text name="BHText3"> - Mappatura normale - </text> - <button label="?" name="WaterNormalMapHelp"/> - </panel> - </tab_container> - <string name="WLDefaultWaterNames"> - Default:Glassy:Pond:Murky:Second Plague:SNAKE!!!:Valdez - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Water Floater" title="Editor avanzato dell'acqua"> + <text name="KeyFramePresetsText"> + Impostazioni predeterminate dell'acqua: + </text> + <button label="Nuovo" label_selected="Nuovo" name="WaterNewPreset"/> + <button label="Salva" label_selected="Salva" name="WaterSavePreset"/> + <button label="Cancella" label_selected="Cancella" name="WaterDeletePreset"/> + <tab_container name="Water Tabs"> + <panel label="Impostazioni" name="Settings"> + <text name="BHText"> + Colore della nebbiosità dell'acqua + </text> + <button label="?" name="WaterFogColorHelp"/> + <color_swatch label="" name="WaterFogColor" tool_tip="Clicca per aprire la selezione colore"/> + <text name="WaterFogDensText"> + Esponente di densità  della nebbia dell'acqua + </text> + <button label="?" name="WaterFogDensityHelp"/> + <text name="WaterUnderWaterFogModText"> + Regolatore effetto nebbia subacquea + </text> + <button label="?" name="WaterUnderWaterFogModHelp"/> + <text name="BDensText"> + Scala di riflessione delle onde + </text> + <button label="?" name="WaterNormalScaleHelp"/> + <text name="BHText2"> + 1 + </text> + <text name="BHText3"> + 2 + </text> + <text name="BHText4"> + 3 + </text> + <text name="HDText"> + Scala Fresnel + </text> + <button label="?" name="WaterFresnelScaleHelp"/> + <text name="FresnelOffsetText"> + Offset Fresnel + </text> + <button label="?" name="WaterFresnelOffsetHelp"/> + <text name="DensMultText"> + Scala di rifrazione nell'acqua dall'alto + </text> + <button label="?" name="WaterScaleAboveHelp"/> + <text name="WaterScaleBelowText"> + Scala di rifrazione nell'acqua dal basso + </text> + <button label="?" name="WaterScaleBelowHelp"/> + <text name="MaxAltText"> + Moltiplicatore della sfocatura + </text> + <button label="?" name="WaterBlurMultiplierHelp"/> + </panel> + <panel label="Immagine" name="Waves"> + <text name="BHText"> + Direzione della grande onda + </text> + <button label="?" name="WaterWave1Help"/> + <text name="WaterWave1DirXText"> + X + </text> + <text name="WaterWave1DirYText"> + Y + </text> + <text name="BHText2"> + Direzione della piccola onda + </text> + <button label="?" name="WaterWave2Help"/> + <text name="WaterWave2DirXText"> + X + </text> + <text name="WaterWave2DirYText"> + Y + </text> + <text name="BHText3"> + Mappatura normale + </text> + <button label="?" name="WaterNormalMapHelp"/> + </panel> + </tab_container> + <string name="WLDefaultWaterNames"> + Default:Glassy:Pond:Murky:Second Plague:SNAKE!!!:Valdez + </string> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_wearable_save_as.xml b/indra/newview/skins/default/xui/it/floater_wearable_save_as.xml index 453a0bc8a4230ec0a5d4ce189cf448e98bd6e505..dcb7620bd5a8fd274035b823c438cf3068718393 100644 --- a/indra/newview/skins/default/xui/it/floater_wearable_save_as.xml +++ b/indra/newview/skins/default/xui/it/floater_wearable_save_as.xml @@ -1,11 +1,11 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="modal container" title=""> - <button label="Salva" label_selected="Salva" name="Save"/> - <button label="Annulla" label_selected="Annulla" name="Cancel"/> - <text name="Save item as:"> - Salva oggetto come: - </text> - <line_editor name="name ed"> - Nuovo [DESC] - </line_editor> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="modal container" title=""> + <button label="Salva" label_selected="Salva" name="Save"/> + <button label="Annulla" label_selected="Annulla" name="Cancel"/> + <text name="Save item as:"> + Salva oggetto come: + </text> + <line_editor name="name ed"> + Nuovo [DESC] + </line_editor> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_windlight_options.xml b/indra/newview/skins/default/xui/it/floater_windlight_options.xml index 37ada0f210f0e83ce5c6ac8adf526ab67ac893ee..aa99e1d883fcf3001d1a5eb786769a48232018ef 100644 --- a/indra/newview/skins/default/xui/it/floater_windlight_options.xml +++ b/indra/newview/skins/default/xui/it/floater_windlight_options.xml @@ -1,189 +1,189 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="WindLight floater" title="Editor avanzato del cielo"> - <text name="KeyFramePresetsText"> - Cieli predefiniti: - </text> - <button label="Nuovo" label_selected="Nuovo" name="WLNewPreset"/> - <button label="Salva" label_selected="Salva" name="WLSavePreset"/> - <button label="Elimina" label_selected="Elimina" name="WLDeletePreset"/> - <button label="Editor del ciclo giorno/notte" label_selected="Editor del ciclo giorno/notte" name="WLDayCycleMenuButton"/> - <tab_container name="WindLight Tabs"> - <panel label="Atmosfera" name="Atmosphere"> - <text name="BHText"> - Blu dell'Orizzonte - </text> - <button label="?" name="WLBlueHorizonHelp"/> - <text name="BHText2"> - R - </text> - <text name="BHText3"> - G - </text> - <text name="BHText4"> - B - </text> - <text name="BHText5"> - I - </text> - <text name="BDensText"> - Altezza della Foschia all'Orizzonte - </text> - <button label="?" name="WLHazeHorizonHelp"/> - <text name="BDensText2"> - Densità del Blu - </text> - <button label="?" name="WLBlueDensityHelp"/> - <text name="BHText6"> - R - </text> - <text name="BHText7"> - G - </text> - <text name="BHText8"> - B - </text> - <text name="BHText9"> - I - </text> - <text name="HDText"> - Densità  della Foschia - </text> - <button label="?" name="WLHazeDensityHelp"/> - <text name="DensMultText"> - Moltiplicatore di Densità - </text> - <button label="?" name="WLDensityMultHelp"/> - <text name="WLDistanceMultText"> - Moltiplicatore della Distanza - </text> - <button label="?" name="WLDistanceMultHelp"/> - <text name="MaxAltText"> - Altitudine Massima - </text> - <button label="?" name="WLMaxAltitudeHelp"/> - </panel> - <panel label="Illuminazione" name="Lighting"> - <text name="SLCText"> - Colore Sole/Luna - </text> - <button label="?" name="WLSunlightColorHelp"/> - <text name="BHText"> - R - </text> - <text name="BHText2"> - G - </text> - <text name="BHText3"> - B - </text> - <text name="BHText4"> - I - </text> - <text name="TODText"> - Posizione Sole/Luna - </text> - <button label="?" name="WLTimeOfDayHelp"/> - <text name="WLAmbientText"> - Ambiente - </text> - <button label="?" name="WLAmbientHelp"/> - <text name="BHText5"> - R - </text> - <text name="BHText6"> - G - </text> - <text name="BHText7"> - B - </text> - <text name="BHText8"> - I - </text> - <text name="WLEastAngleText"> - Angolo Est - </text> - <button label="?" name="WLEastAngleHelp"/> - <text name="SunGlowText"> - Corona intorno al sole - </text> - <button label="?" name="WLSunGlowHelp"/> - <slider label="Focus" name="WLGlowB"/> - <slider label="Grandezza" name="WLGlowR"/> - <text name="SceneGammaText"> - Gamma della Scena - </text> - <button label="?" name="WLSceneGammaHelp"/> - <text name="WLStarText"> - Luminosità  delle stelle - </text> - <button label="?" name="WLStarBrightnessHelp"/> - </panel> - <panel label="Nuvole" name="Clouds"> - <text name="WLCloudColorText"> - Colore delle Nuvole - </text> - <button label="?" name="WLCloudColorHelp"/> - <text name="BHText"> - R - </text> - <text name="BHText2"> - G - </text> - <text name="BHText3"> - B - </text> - <text name="BHText4"> - I - </text> - <text name="WLCloudColorText2"> - Nuvole XY/Densità - </text> - <button label="?" name="WLCloudDensityHelp"/> - <text name="BHText5"> - X - </text> - <text name="BHText6"> - Y - </text> - <text name="BHText7"> - D - </text> - <text name="WLCloudCoverageText"> - Copertura delle Nuvole - </text> - <button label="?" name="WLCloudCoverageHelp"/> - <text name="WLCloudScaleText"> - Altitudine delle Nuvole - </text> - <button label="?" name="WLCloudScaleHelp"/> - <text name="WLCloudDetailText"> - Dettagli Nuvole (XY/ Densità ) - </text> - <button label="?" name="WLCloudDetailHelp"/> - <text name="BHText8"> - X - </text> - <text name="BHText9"> - Y - </text> - <text name="BHText10"> - D - </text> - <text name="WLCloudScrollXText"> - Scorrimento delle nuvole X - </text> - <button label="?" name="WLCloudScrollXHelp"/> - <check_box label="Blocca" name="WLCloudLockX"/> - <text name="WLCloudScrollYText"> - Scorrimento delle nuvole Y - </text> - <button label="?" name="WLCloudScrollYHelp"/> - <check_box label="Blocca" name="WLCloudLockY"/> - <check_box label="Mostra le Nuvole Classiche" name="DrawClassicClouds"/> - <button label="?" name="WLClassicCloudsHelp"/> - </panel> - </tab_container> - <string name="WLDefaultSkyNames"> - A-12AM:A-12PM:A-3AM:A-3PM:A-4.30PM:A-6AM:A-6PM:A-9AM:A-9PM:Barcelona:Blizzard:Blue Midday:Coastal Afternoon:Coastal Sunset:Default:Desert Sunset:Fine Day:Fluffy Big Clouds:Foggy:Funky Funky:Funky Funky Funky:Gelatto:Ghost:Incongruent Truths:Midday 1:Midday 2:Midday 3:Midday 4:Night:Pirate:Purple:Sailor's Delight:Sheer Sensuality - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="WindLight floater" title="Editor avanzato del cielo"> + <text name="KeyFramePresetsText"> + Cieli predefiniti: + </text> + <button label="Nuovo" label_selected="Nuovo" name="WLNewPreset"/> + <button label="Salva" label_selected="Salva" name="WLSavePreset"/> + <button label="Elimina" label_selected="Elimina" name="WLDeletePreset"/> + <button label="Editor del ciclo giorno/notte" label_selected="Editor del ciclo giorno/notte" name="WLDayCycleMenuButton"/> + <tab_container name="WindLight Tabs"> + <panel label="Atmosfera" name="Atmosphere"> + <text name="BHText"> + Blu dell'Orizzonte + </text> + <button label="?" name="WLBlueHorizonHelp"/> + <text name="BHText2"> + R + </text> + <text name="BHText3"> + G + </text> + <text name="BHText4"> + B + </text> + <text name="BHText5"> + I + </text> + <text name="BDensText"> + Altezza della Foschia all'Orizzonte + </text> + <button label="?" name="WLHazeHorizonHelp"/> + <text name="BDensText2"> + Densità del Blu + </text> + <button label="?" name="WLBlueDensityHelp"/> + <text name="BHText6"> + R + </text> + <text name="BHText7"> + G + </text> + <text name="BHText8"> + B + </text> + <text name="BHText9"> + I + </text> + <text name="HDText"> + Densità  della Foschia + </text> + <button label="?" name="WLHazeDensityHelp"/> + <text name="DensMultText"> + Moltiplicatore di Densità + </text> + <button label="?" name="WLDensityMultHelp"/> + <text name="WLDistanceMultText"> + Moltiplicatore della Distanza + </text> + <button label="?" name="WLDistanceMultHelp"/> + <text name="MaxAltText"> + Altitudine Massima + </text> + <button label="?" name="WLMaxAltitudeHelp"/> + </panel> + <panel label="Illuminazione" name="Lighting"> + <text name="SLCText"> + Colore Sole/Luna + </text> + <button label="?" name="WLSunlightColorHelp"/> + <text name="BHText"> + R + </text> + <text name="BHText2"> + G + </text> + <text name="BHText3"> + B + </text> + <text name="BHText4"> + I + </text> + <text name="TODText"> + Posizione Sole/Luna + </text> + <button label="?" name="WLTimeOfDayHelp"/> + <text name="WLAmbientText"> + Ambiente + </text> + <button label="?" name="WLAmbientHelp"/> + <text name="BHText5"> + R + </text> + <text name="BHText6"> + G + </text> + <text name="BHText7"> + B + </text> + <text name="BHText8"> + I + </text> + <text name="WLEastAngleText"> + Angolo Est + </text> + <button label="?" name="WLEastAngleHelp"/> + <text name="SunGlowText"> + Corona intorno al sole + </text> + <button label="?" name="WLSunGlowHelp"/> + <slider label="Focus" name="WLGlowB"/> + <slider label="Grandezza" name="WLGlowR"/> + <text name="SceneGammaText"> + Gamma della Scena + </text> + <button label="?" name="WLSceneGammaHelp"/> + <text name="WLStarText"> + Luminosità  delle stelle + </text> + <button label="?" name="WLStarBrightnessHelp"/> + </panel> + <panel label="Nuvole" name="Clouds"> + <text name="WLCloudColorText"> + Colore delle Nuvole + </text> + <button label="?" name="WLCloudColorHelp"/> + <text name="BHText"> + R + </text> + <text name="BHText2"> + G + </text> + <text name="BHText3"> + B + </text> + <text name="BHText4"> + I + </text> + <text name="WLCloudColorText2"> + Nuvole XY/Densità + </text> + <button label="?" name="WLCloudDensityHelp"/> + <text name="BHText5"> + X + </text> + <text name="BHText6"> + Y + </text> + <text name="BHText7"> + D + </text> + <text name="WLCloudCoverageText"> + Copertura delle Nuvole + </text> + <button label="?" name="WLCloudCoverageHelp"/> + <text name="WLCloudScaleText"> + Altitudine delle Nuvole + </text> + <button label="?" name="WLCloudScaleHelp"/> + <text name="WLCloudDetailText"> + Dettagli Nuvole (XY/ Densità ) + </text> + <button label="?" name="WLCloudDetailHelp"/> + <text name="BHText8"> + X + </text> + <text name="BHText9"> + Y + </text> + <text name="BHText10"> + D + </text> + <text name="WLCloudScrollXText"> + Scorrimento delle nuvole X + </text> + <button label="?" name="WLCloudScrollXHelp"/> + <check_box label="Blocca" name="WLCloudLockX"/> + <text name="WLCloudScrollYText"> + Scorrimento delle nuvole Y + </text> + <button label="?" name="WLCloudScrollYHelp"/> + <check_box label="Blocca" name="WLCloudLockY"/> + <check_box label="Mostra le Nuvole Classiche" name="DrawClassicClouds"/> + <button label="?" name="WLClassicCloudsHelp"/> + </panel> + </tab_container> + <string name="WLDefaultSkyNames"> + A-12AM:A-12PM:A-3AM:A-3PM:A-4.30PM:A-6AM:A-6PM:A-9AM:A-9PM:Barcelona:Blizzard:Blue Midday:Coastal Afternoon:Coastal Sunset:Default:Desert Sunset:Fine Day:Fluffy Big Clouds:Foggy:Funky Funky:Funky Funky Funky:Gelatto:Ghost:Incongruent Truths:Midday 1:Midday 2:Midday 3:Midday 4:Night:Pirate:Purple:Sailor's Delight:Sheer Sensuality + </string> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_world_map.xml b/indra/newview/skins/default/xui/it/floater_world_map.xml index f1074b16b535053e1552220fe854455e555f2a1b..088c8a7189a7110905caee12b64e32004861cb2a 100644 --- a/indra/newview/skins/default/xui/it/floater_world_map.xml +++ b/indra/newview/skins/default/xui/it/floater_world_map.xml @@ -1,59 +1,59 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="worldmap" title="Mappa"> - <tab_container name="maptab"> - <panel label="Oggetti" name="objects_mapview"/> - <panel label="Terreno" name="terrain_mapview"/> - </tab_container> - <text name="land_for_sale_label"> - Terreno in vendita - </text> - <text name="auction_label"> - Asta - </text> - <text name="you_label"> - Tu - </text> - <text name="home_label"> - Casa - </text> - <button label="Vai a Casa" label_selected="Vai a Casa" name="Go Home" tool_tip="Teletrasportati a casa"/> - <text name="person_label"> - Persona - </text> - <text name="infohub_label"> - Punto d'informazione - </text> - <text name="telehub_label"> - Snodo di teleport - </text> - <text name="land_for_sale_label2"> - Terreno in vendita - </text> - <text name="events_label"> - Eventi - </text> - - <combo_box label="Amici Online" name="friend combo" tool_tip="Amici da mostrare sulla mappa"> - <combo_box.item name="none_selected" label="Amici Online"/> - </combo_box> - <combo_box label="Landmark" name="landmark combo" tool_tip="Landmarks da mostrare sulla mappa"> - <combo_box.item name="none_selected" label="Landmark"/> - </combo_box> - <line_editor label="Cerca per nome di regione" name="location" tool_tip="Scrivi il nome di una regione"/> - <button label="Cerca" name="DoSearch" tool_tip="Cerca regione"/> - <text name="search_label"> - Cerca tra i risultati: - </text> - <text name="location_label"> - Luogo: - </text> - <spinner name="spin x" tool_tip="Coordinata X del luogo da mostrare sulla mappa"/> - <spinner name="spin y" tool_tip="Coordinata Y del luogo da mostrare sulla mappa"/> - <spinner name="spin z" tool_tip="Coordinata Z del luogo da mostrare sulla mappa"/> - <button label="Teletrasporto" label_selected="Teletrasporto" name="Teleport" tool_tip="Teletrasporto al luogo prescelto"/> - <button label="Mostra destinazione" label_selected="Mostra destinazione" name="Show Destination" tool_tip="Centra la mappa sul luogo prescelto"/> - <button label="Pulisci" label_selected="Pulisci" name="Clear" tool_tip="Togli traccia"/> - <button label="Mostra la mia posizione" label_selected="Mostra la mia posizione" name="Show My Location" tool_tip="Centra la mappa alla posizione del tuo avatar"/> - <button label="Copia lo SLURL negli appunti" name="copy_slurl" tool_tip="Copia l'attuale posizione quale SLURL utilizzabile nel web."/> - <slider label="Zoom" name="zoom slider"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="worldmap" title="Mappa"> + <tab_container name="maptab"> + <panel label="Oggetti" name="objects_mapview"/> + <panel label="Terreno" name="terrain_mapview"/> + </tab_container> + <text name="you_label"> + Tu + </text> + <text name="home_label"> + Casa + </text> + <text name="auction_label"> + Asta + </text> + <text name="land_for_sale_label"> + Terreno in vendita + </text> + <button label="Vai a Casa" label_selected="Vai a Casa" name="Go Home" tool_tip="Teletrasportati a casa"/> + <check_box label="Residenti" name="people_chk"/> + <check_box label="Punto informativo" name="infohub_chk"/> + <check_box label="Punto di snodo di teletrasporto" name="telehubchk"/> + <icon bottom="-170" name="landforsale" /> + <check_box label="Terra in vendita" name="land_for_sale_chk" bottom="-170"/> + <text name="events_label"> + Eventi: + </text> + <check_box label="PG" name="event_chk"/> + <check_box label="Mature" name="event_mature_chk"/> + <check_box label="Adult" name="event_adult_chk"/> + <icon bottom="-200" name="avatar_icon" /> + <combo_box label="Amici Online" name="friend combo" tool_tip="Amici da mostrare sulla mappa"> + <combo_box.item name="none_selected" label="Amici Online"/> + </combo_box> + <combo_box label="Landmark" name="landmark combo" tool_tip="Landmarks da mostrare sulla mappa"> + <combo_box.item name="none_selected" label="Landmark"/> + </combo_box> + <line_editor label="Cerca per nome di regione" name="location" tool_tip="Scrivi il nome di una regione"/> + <button label="Cerca" name="DoSearch" tool_tip="Cerca regione"/> + <text name="search_label"> + Cerca tra i risultati: + </text> + <scroll_list name="search_results" bottom_delta="-310" height="304" > + <column label="" name="icon"/> + <column label="" name="sim_name"/> + </scroll_list> + <text name="location_label"> + Luogo: + </text> + <spinner name="spin x" tool_tip="Coordinata X del luogo da mostrare sulla mappa"/> + <spinner name="spin y" tool_tip="Coordinata Y del luogo da mostrare sulla mappa"/> + <spinner name="spin z" tool_tip="Coordinata Z del luogo da mostrare sulla mappa"/> + <button font="SansSerifSmall" label="Teletrasporto" label_selected="Teletrasporto" name="Teleport" tool_tip="Teletrasporto al luogo prescelto"/> + <button font="SansSerifSmall" left_delta="91" width="135" label="Mostra destinazione" label_selected="Mostra destinazione" name="Show Destination" tool_tip="Centra la mappa sul luogo prescelto"/> + <button font="SansSerifSmall" label="Pulisci" label_selected="Pulisci" name="Clear" tool_tip="Togli traccia"/> + <button font="SansSerifSmall" left_delta="91" width="135" label="Mostra la mia posizione" label_selected="Mostra la mia posizione" name="Show My Location" tool_tip="Centra la mappa alla posizione del tuo avatar"/> + <button font="SansSerifSmall" label="Copia lo SLURL negli appunti" name="copy_slurl" tool_tip="Copia l'attuale posizione quale SLURL utilizzabile nel web."/> + <slider label="Zoom" name="zoom slider"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/menu_inventory.xml b/indra/newview/skins/default/xui/it/menu_inventory.xml index 396390e209f6de39d98110ec9713f5051e213b84..31b50e8d6b1ecb76e0e5bd6fb9a99b035869fc89 100644 --- a/indra/newview/skins/default/xui/it/menu_inventory.xml +++ b/indra/newview/skins/default/xui/it/menu_inventory.xml @@ -1,65 +1,66 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<menu name="Popup"> - <menu_item_call label="Compra" name="Task Buy"/> - <menu_item_call label="Apri" name="Task Open"/> - <menu_item_call label="Esegui" name="Task Play"/> - <menu_item_call label="Proprietà " name="Task Properties"/> - <menu_item_call label="Rinomina" name="Task Rename"/> - <menu_item_call label="Elimina" name="Task Remove"/> - <menu_item_call label="Svuota il Cestino" name="Empty Trash"/> - <menu_item_call label="Svuota gli oggetti persi e ritrovati" name="Empty Lost And Found"/> - <menu_item_call label="Nuova Cartella" name="New Folder"/> - <menu_item_call label="Nuovo Script" name="New Script"/> - <menu_item_call label="Nuova Notecard" name="New Note"/> - <menu_item_call label="Nuova Gesture" name="New Gesture"/> - <menu name="New Clothes"> - <menu_item_call label="Nuova Maglietta" name="New Shirt"/> - <menu_item_call label="Nuovi Pantaloni" name="New Pants"/> - <menu_item_call label="Nuove Scarpe" name="New Shoes"/> - <menu_item_call label="Nuove Calze" name="New Socks"/> - <menu_item_call label="Nuova Giacca" name="New Jacket"/> - <menu_item_call label="Nuova Gonna" name="New Skirt"/> - <menu_item_call label="Nuovi Guanti" name="New Gloves"/> - <menu_item_call label="Nuova Canottiera" name="New Undershirt"/> - <menu_item_call label="Nuove Mutande" name="New Underpants"/> - </menu> - <menu name="New Body Parts"> - <menu_item_call label="Nuova Forma del corpo" name="New Shape"/> - <menu_item_call label="Nuova Pelle" name="New Skin"/> - <menu_item_call label="Nuovi Capelli" name="New Hair"/> - <menu_item_call label="Nuovi Occhi" name="New Eyes"/> - </menu> - <menu_item_call label="Teletrasportati" name="Landmark Open"/> - <menu_item_call label="Apri" name="Animation Open"/> - <menu_item_call label="Apri" name="Sound Open"/> - <menu_item_call label="Elimina oggetto" name="Purge Item"/> - <menu_item_call label="Ripristina oggetto" name="Restore Item"/> - <menu_item_call label="Apri" name="Open"/> - <menu_item_call label="Proprietà " name="Properties"/> - <menu_item_call label="Rinomina" name="Rename"/> - <menu_item_call label="Copia UUID dell'oggetto" name="Copy Asset UUID"/> - <menu_item_call label="Copia" name="Copy"/> - <menu_item_call label="Incolla" name="Paste"/> - <menu_item_call label="Cancella" name="Delete"/> - <menu_item_call label="Togli gli oggetti" name="Take Off Items"/> - <menu_item_call label="Aggiungi all'outfit" name="Add To Outfit"/> - <menu_item_call label="Sostituisci outfit" name="Replace Outfit"/> - <menu_item_call label="Inizia la conferenza chat" name="Conference Chat Folder"/> - <menu_item_call label="Esegui" name="Sound Play"/> - <menu_item_call label="Informazioni sul landmark" name="Teleport To Landmark"/> - <menu_item_call label="Esegui inworld" name="Animation Play"/> - <menu_item_call label="Esegui localmente" name="Animation Audition"/> - <menu_item_call label="Invia un Instant Message" name="Send Instant Message"/> - <menu_item_call label="Offri teletrasporto..." name="Offer Teleport..."/> - <menu_item_call label="Inizia una conferenza chat" name="Conference Chat"/> - <menu_item_call label="Attiva" name="Activate"/> - <menu_item_call label="Disattiva" name="Deactivate"/> - <menu_item_call label="Stacca da te" name="Detach From Yourself"/> - <menu_item_call label="Indossa" name="Object Wear"/> - <menu label="Attacca a" name="Attach To"/> - <menu label="Attacca all'HUD" name="Attach To HUD"/> - <menu_item_call label="Modifica" name="Wearable Edit"/> - <menu_item_call label="Indossa" name="Wearable Wear"/> - <menu_item_call label="Togli" name="Take Off"/> - <menu_item_call label="--nessuna opzione--" name="--no options--"/> -</menu> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Popup"> + <menu_item_call label="Compra" name="Task Buy"/> + <menu_item_call label="Apri" name="Task Open"/> + <menu_item_call label="Esegui" name="Task Play"/> + <menu_item_call label="Proprietà " name="Task Properties"/> + <menu_item_call label="Rinomina" name="Task Rename"/> + <menu_item_call label="Elimina" name="Task Remove"/> + <menu_item_call label="Svuota il Cestino" name="Empty Trash"/> + <menu_item_call label="Svuota gli oggetti persi e ritrovati" name="Empty Lost And Found"/> + <menu_item_call label="Nuova Cartella" name="New Folder"/> + <menu_item_call label="Nuovo Script" name="New Script"/> + <menu_item_call label="Nuova Notecard" name="New Note"/> + <menu_item_call label="Nuova Gesture" name="New Gesture"/> + <menu name="New Clothes"> + <menu_item_call label="Nuova Maglietta" name="New Shirt"/> + <menu_item_call label="Nuovi Pantaloni" name="New Pants"/> + <menu_item_call label="Nuove Scarpe" name="New Shoes"/> + <menu_item_call label="Nuove Calze" name="New Socks"/> + <menu_item_call label="Nuova Giacca" name="New Jacket"/> + <menu_item_call label="Nuova Gonna" name="New Skirt"/> + <menu_item_call label="Nuovi Guanti" name="New Gloves"/> + <menu_item_call label="Nuova Canottiera" name="New Undershirt"/> + <menu_item_call label="Nuove Mutande" name="New Underpants"/> + </menu> + <menu name="New Body Parts"> + <menu_item_call label="Nuova Forma del corpo" name="New Shape"/> + <menu_item_call label="Nuova Pelle" name="New Skin"/> + <menu_item_call label="Nuovi Capelli" name="New Hair"/> + <menu_item_call label="Nuovi Occhi" name="New Eyes"/> + </menu> + <menu_item_call label="Teletrasportati" name="Landmark Open"/> + <menu_item_call label="Apri" name="Animation Open"/> + <menu_item_call label="Apri" name="Sound Open"/> + <menu_item_call label="Elimina oggetto" name="Purge Item"/> + <menu_item_call label="Ripristina oggetto" name="Restore Item"/> + <menu_item_call label="Apri" name="Open"/> + <menu_item_call label="Proprietà " name="Properties"/> + <menu_item_call label="Rinomina" name="Rename"/> + <menu_item_call label="Copia UUID dell'oggetto" name="Copy Asset UUID"/> + <menu_item_call label="Copia" name="Copy"/> + <menu_item_call label="Incolla" name="Paste"/> + <menu_item_call label="Cancella" name="Delete"/> + <menu_item_call label="Togli gli oggetti" name="Take Off Items"/> + <menu_item_call label="Aggiungi all'outfit" name="Add To Outfit"/> + <menu_item_call label="Sostituisci outfit" name="Replace Outfit"/> + <menu_item_call label="Inizia la conferenza chat" name="Conference Chat Folder"/> + <menu_item_call label="Esegui" name="Sound Play"/> + <menu_item_call label="Informazioni sul landmark" name="Teleport To Landmark"/> + <menu_item_call label="Esegui inworld" name="Animation Play"/> + <menu_item_call label="Esegui localmente" name="Animation Audition"/> + <menu_item_call label="Invia un Instant Message" name="Send Instant Message"/> + <menu_item_call label="Offri teletrasporto..." name="Offer Teleport..."/> + <menu_item_call label="Inizia una conferenza chat" name="Conference Chat"/> + <menu_item_call label="Attiva" name="Activate"/> + <menu_item_call label="Disattiva" name="Deactivate"/> + <menu_item_call label="Stacca da te" name="Detach From Yourself"/> + <menu_item_call label="Ripristina all'ultima posizione" name="Restore to Last Position"/> + <menu_item_call label="Indossa" name="Object Wear"/> + <menu label="Attacca a" name="Attach To"/> + <menu label="Attacca all'HUD" name="Attach To HUD"/> + <menu_item_call label="Modifica" name="Wearable Edit"/> + <menu_item_call label="Indossa" name="Wearable Wear"/> + <menu_item_call label="Togli" name="Take Off"/> + <menu_item_call label="--nessuna opzione--" name="--no options--"/> +</menu> diff --git a/indra/newview/skins/default/xui/it/menu_login.xml b/indra/newview/skins/default/xui/it/menu_login.xml index 70b3ea528ddf386c9c7b06d59f4ca0786c92be22..45ee43102a17663e97cfce4f17ad907c27c2a3b4 100644 --- a/indra/newview/skins/default/xui/it/menu_login.xml +++ b/indra/newview/skins/default/xui/it/menu_login.xml @@ -1,13 +1,13 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<menu_bar name="Login Menu"> - <menu label="File" name="File"> - <menu_item_call label="Chiudi" name="Quit"/> - </menu> - <menu label="Modifica" name="Edit"> - <menu_item_call label="Preferenze...." name="Preferences..."/> - </menu> - <menu label="Aiuto" name="Help"> - <menu_item_call label="Aiuto di Second Life" name="Second Life Help"/> - <menu_item_call label="Informazioni su Second Life..." name="About Second Life..."/> - </menu> -</menu_bar> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu_bar name="Login Menu"> + <menu label="File" name="File"> + <menu_item_call label="Chiudi" name="Quit"/> + </menu> + <menu label="Modifica" name="Edit"> + <menu_item_call label="Preferenze...." name="Preferences..."/> + </menu> + <menu label="Aiuto" name="Help"> + <menu_item_call label="Aiuto di Second Life" name="Second Life Help"/> + <menu_item_call label="Informazioni su Second Life..." name="About Second Life..."/> + </menu> +</menu_bar> diff --git a/indra/newview/skins/default/xui/it/menu_mini_map.xml b/indra/newview/skins/default/xui/it/menu_mini_map.xml new file mode 100644 index 0000000000000000000000000000000000000000..1109f3f6466bcfc111aa56172853a721795a6556 --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_mini_map.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="popup"> + <menu_item_call label="Zoom ravvicinato" name="Zoom Close"/> + <menu_item_call label="Zoom Medio" name="Zoom Medium"/> + <menu_item_call label="Zoom Distante" name="Zoom Far"/> + <menu_item_call label="Ferma il puntamento" name="Stop Tracking"/> + <menu_item_call label="Profilo..." name="Profile"/> +</menu> diff --git a/indra/newview/skins/default/xui/it/menu_slurl.xml b/indra/newview/skins/default/xui/it/menu_slurl.xml index ed56599d37af6dcbff68c142834a3afb99da07ef..283fd92b19722d0591442ecb45e8fb93f8905ddf 100644 --- a/indra/newview/skins/default/xui/it/menu_slurl.xml +++ b/indra/newview/skins/default/xui/it/menu_slurl.xml @@ -1,6 +1,6 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<menu name="Popup"> - <menu_item_call label="Informazioni sull'indirizzo URL" name="about_url"/> - <menu_item_call label="Teleportati all'indirizzo URL" name="teleport_to_url"/> - <menu_item_call label="Mostra sulla mappa" name="show_on_map"/> -</menu> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Popup"> + <menu_item_call label="Informazioni sull'indirizzo URL" name="about_url"/> + <menu_item_call label="Teleportati all'indirizzo URL" name="teleport_to_url"/> + <menu_item_call label="Mostra sulla mappa" name="show_on_map"/> +</menu> diff --git a/indra/newview/skins/default/xui/it/menu_viewer.xml b/indra/newview/skins/default/xui/it/menu_viewer.xml index 21e587cbd5d2d639db782cdd3f09068ddc9d1e17..3dd4e6a94b4b2e1e2b852fbdc3cd3d081b746e91 100644 --- a/indra/newview/skins/default/xui/it/menu_viewer.xml +++ b/indra/newview/skins/default/xui/it/menu_viewer.xml @@ -1,203 +1,205 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<menu_bar name="Main Menu"> - <menu label="File" name="File"> - <tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/> - <menu label="Carica" name="upload"> - <menu_item_call label="Carica immagine ([COST] L$)..." name="Upload Image"/> - <menu_item_call label="Carica Suono ([COST] L$)..." name="Upload Sound"/> - <menu_item_call label="Carica Animazione ([COST] L$)..." name="Upload Animation"/> - <menu_item_call label="Caricamento multiplo ([COST] L$ per file)..." name="Bulk Upload"/> - </menu> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="Chiudi la finestra" name="Close Window"/> - <menu_item_call label="Chiudi tutte le finestre" name="Close All Windows"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_call label="Salva la texture come..." name="Save Texture As..."/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_call label="Fai una fotografia" name="Take Snapshot"/> - <menu_item_call label="Salva la fotografia sul tuo disco" name="Snapshot to Disk"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu_item_call label="Disconnetti" name="Quit"/> - </menu> - <menu label="Modifica" name="Edit"> - <menu_item_call label="Annulla" name="Undo"/> - <menu_item_call label="Ripeti" name="Redo"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="Taglia" name="Cut"/> - <menu_item_call label="Copia" name="Copy"/> - <menu_item_call label="Incolla" name="Paste"/> - <menu_item_call label="Cancella" name="Delete"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_call label="Cerca..." name="Search..."/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_call label="Seleziona tutto" name="Select All"/> - <menu_item_call label="Deseleziona" name="Deselect"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu_item_call label="Duplica" name="Duplicate"/> - <menu_item_separator label="-----------" name="separator5"/> - <menu label="Indossa l'oggetto" name="Attach Object"/> - <menu label="Togli l'oggetto" name="Detach Object"/> - <menu label="Spogliati dei vestiti" name="Take Off Clothing"> - <menu_item_call label="Maglietta" name="Shirt"/> - <menu_item_call label="Pantaloni" name="Pants"/> - <menu_item_call label="Scarpe" name="Shoes"/> - <menu_item_call label="Calze" name="Socks"/> - <menu_item_call label="Giacca" name="Jacket"/> - <menu_item_call label="Guanti" name="Gloves"/> - <menu_item_call label="Canottiera" name="Menu Undershirt"/> - <menu_item_call label="Mutande" name="Menu Underpants"/> - <menu_item_call label="Gonna" name="Skirt"/> - <menu_item_call label="Tutti i vestiti" name="All Clothes"/> - </menu> - <menu_item_separator label="-----------" name="separator6"/> - <menu_item_call label="Gesture..." name="Gestures..."/> - <menu_item_call label="Profilo..." name="Profile..."/> - <menu_item_call label="Aspetto fisico..." name="Appearance..."/> - <menu_item_separator label="-----------" name="separator7"/> - <menu_item_check label="Amici..." name="Friends..."/> - <menu_item_call label="Gruppi..." name="Groups..."/> - <menu_item_separator label="-----------" name="separator8"/> - <menu_item_call label="Preferenze..." name="Preferences..."/> - </menu> - <menu label="Visualizza" name="View"> - <tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/> - <menu_item_call label="Visualizzazione in soggettiva" name="Mouselook"/> - <menu_item_check label="Costruisci" name="Build"/> - <menu_item_check label="Camera dall'alto" name="Joystick Flycam"/> - <menu_item_call label="Reimposta la visuale" name="Reset View"/> - <menu_item_call label="Guarda l'ultimo che ha parlato" name="Look at Last Chatter"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_check label="Strumenti" name="Toolbar"/> - <menu_item_check label="Chat locale" name="Chat History"/> - <menu_item_check label="Comunica" name="Instant Message"/> - <menu_item_check label="Inventario" name="Inventory"/> - <menu_item_check label="Residenti con voice attivo" name="Active Speakers"/> - <menu_item_check label="Muta la lista" name="Mute List"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_check label="Controlli della telecamera" name="Camera Controls"/> - <menu_item_check label="Controlli dei movimenti" name="Movement Controls"/> - <menu_item_check label="Mappa globale" name="World Map"/> - <menu_item_check label="Mini-Mappa" name="Mini-Map"/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_check label="Barra delle statistiche" name="Statistics Bar"/> - <menu_item_check label="Confini della proprietÃ" name="Property Lines"/> - <menu_item_check label="Proprietari dei terreni" name="Land Owners"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu label="Suggerimenti" name="Hover Tips"> - <menu_item_check label="Mostra suggerimenti" name="Show Tips"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_check label="Suggerimenti sul terreno" name="Land Tips"/> - <menu_item_check label="Suggerimenti su tutti gli oggetti" name="Tips On All Objects"/> - </menu> - <menu_item_check label="Evidenzia oggetti trasparenti" name="Highlight Transparent"/> - <menu_item_check label="Tracciatori" name="beacons"/> - <menu_item_check label="Nascondi le particelle" name="Hide Particles"/> - <menu_item_check label="Mostra dispositivi HUD indossati" name="Show HUD Attachments"/> - <menu_item_separator label="-----------" name="separator5"/> - <menu_item_call label="Zoom Avanti" name="Zoom In"/> - <menu_item_call label="Zoom Default" name="Zoom Default"/> - <menu_item_call label="Zoom Indietro" name="Zoom Out"/> - <menu_item_separator label="-----------" name="separator6"/> - <menu_item_call label="Alterna schermo intero" name="Toggle Fullscreen"/> - <menu_item_call label="Reimposta la grandezza dell'interfaccia al default" name="Set UI Size to Default"/> - </menu> - <menu label="Mondo" name="World"> - <menu_item_call label="Chat" name="Chat"/> - <menu_item_check label="Corri sempre" name="Always Run"/> - <menu_item_check label="Vola" name="Fly"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="Crea qui un landmark" name="Create Landmark Here"/> - <menu_item_call label="Imposta la tua casa qui" name="Set Home to Here"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_call label="Teleportati a casa" name="Teleport Home"/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_call label="Imposta come 'Assente'" name="Set Away"/> - <menu_item_call label="Imposta occupato" name="Set Busy"/> - <menu_item_call label="Ferma tutte le animazioni" name="Stop All Animations"/> - <menu_item_call label="Rilascia tutti i dispositivi" name="Release Keys"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu_item_call label="Estratto conto..." name="Account History..."/> - <menu_item_call label="Gestisci il mio account..." name="Manage My Account..."/> - <menu_item_call label="Compra L$..." name="Buy and Sell L$..."/> - <menu_item_separator label="-----------" name="separator5"/> - <menu_item_call label="Il mio terreno..." name="My Land..."/> - <menu_item_call label="Informazioni sul terreno..." name="About Land..."/> - <menu_item_call label="Acquista il terreno..." name="Buy Land..."/> - <menu_item_call label="Regione/Proprietà Immobiliari..." name="Region/Estate..."/> - <menu_item_separator label="-----------" name="separator6"/> - <menu label="Impostazioni dell'ambiente" name="Environment Settings"> - <menu_item_call label="Alba" name="Sunrise"/> - <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="Reimposta al default della regione" name="Revert to Region Default"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="Editor dell'ambiente" name="Environment Editor"/> - </menu> - </menu> - <menu label="Strumenti" name="Tools"> - <menu label="Seleziona strumento" name="Select Tool"> - <menu_item_call label="Focalizza" name="Focus"/> - <menu_item_call label="Muovi" name="Move"/> - <menu_item_call label="Modifica" name="Edit"/> - <menu_item_call label="Crea" name="Create"/> - <menu_item_call label="Terra" name="Land"/> - </menu> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_check label="Seleziona solo i miei oggetti" name="Select Only My Objects"/> - <menu_item_check label="Seleziona solo gli oggetti mobili" name="Select Only Movable Objects"/> - <menu_item_check label="Seleziona solo se racchiuso" name="Select By Surrounding"/> - <menu_item_check label="Mostra selezione nascosta" name="Show Hidden Selection"/> - <menu_item_check label="Mostra raggio di luce per la selezione" name="Show Light Radius for Selection"/> - <menu_item_check label="Mostra raggio di selezione" name="Show Selection Beam"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_check label="Allinea al righello" name="Snap to Grid"/> - <menu_item_call label="Allinea l'oggetto XY al righello" name="Snap Object XY to Grid"/> - <menu_item_call label="Usa la selezione come righello" name="Use Selection for Grid"/> - <menu_item_call label="Opzioni del righello..." name="Grid Options..."/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_check label="Modifica parti di oggetti uniti" name="Edit Linked Parts"/> - <menu_item_call label="Unisci" name="Link"/> - <menu_item_call label="Dividi" name="Unlink"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu_item_call label="Focalizza la selezione" name="Focus on Selection"/> - <menu_item_call label="Fai zoom sulla selezione" name="Zoom to Selection"/> - <menu_item_call label="Compra l'oggetto" name="Menu Object Take"/> - <menu_item_call label="Prendi una copia" name="Take Copy"/> - <menu_item_call label="Salva nuovamente l'oggetto nel mio inventario" name="Save Object Back to My Inventory"/> - <menu_item_call label="Salva nuovamente l'oggetto nel contenuto dell'oggetto" name="Save Object Back to Object Contents"/> - <menu_item_separator label="-----------" name="separator6"/> - <menu_item_call label="Mostra avvisi script/finestra degli errori" name="Show Script Warning/Error Window"/> - <menu label="Ricompila gli script nella selezione" name="Recompile Scripts in Selection"> - <menu_item_call label="Mono" name="Mono"/> - <menu_item_call label="LSL" name="LSL"/> - </menu> - <menu_item_call label="Reimposta gli script nella selezione" name="Reset Scripts in Selection"/> - <menu_item_call label="Attiva gli script nella selezione" name="Set Scripts to Running in Selection"/> - <menu_item_call label="Disattiva gli script nella selezione" name="Set Scripts to Not Running in Selection"/> - </menu> - <menu label="Aiuto" name="Help"> - <menu_item_call label="Aiuto di Secondlife" name="Second Life Help"/> - <menu_item_call label="Tutorial" name="Tutorial"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="Blog ufficiale Linden..." name="Official Linden Blog..."/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_call label="Portale degli script..." name="Scripting Portal..."/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_call label="Denuncia di abuso..." name="Report Abuse..."/> - <menu_item_call label="Collisioni, Spinte & Colpi..." name="Bumps, Pushes &amp; Hits..."/> - <menu_item_call label="Misuratore del lag" name="Lag Meter"/> - <menu_item_separator label="-----------" name="separator7"/> - <menu label="Segnalazione di un bug" name="Bug Reporting"> - <menu_item_call label="Registro pubblico errori..." name="Public Issue Tracker..."/> - <menu_item_call label="Aiuto per il registro pubblico errori..." name="Publc Issue Tracker Help..."/> - <menu_item_separator label="-----------" name="separator7"/> - <menu_item_call label="Come fare la segnalazione di un bug..." name="Bug Reporing 101..."/> - <menu_item_call label="Problematiche di sicurezza..." name="Security Issues..."/> - <menu_item_call label="Wiki QA - controllo qualità ..." name="QA Wiki..."/> - <menu_item_separator label="-----------" name="separator9"/> - <menu_item_call label="Segnala un bug..." name="Report Bug..."/> - </menu> - <menu_item_call label="Informazioni su Second Life..." name="About Second Life..."/> - </menu> -</menu_bar> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu_bar name="Main Menu"> + <menu label="File" name="File"> + <tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/> + <menu label="Carica" name="upload"> + <menu_item_call label="Immagine ([COST]L$)..." name="Upload Image"/> + <menu_item_call label="Suono ([COST]L$)..." name="Upload Sound"/> + <menu_item_call label="Animazione ([COST]L$)..." name="Upload Animation"/> + <menu_item_call label="Multiplo ([COST]L$ per file)..." name="Bulk Upload"/> + <menu_item_separator label="-----------" name="separator"/> + <menu_item_call label="Imposta i permessi di base..." name="perm prefs"/> + </menu> + <menu_item_separator label="-----------" name="separator"/> + <menu_item_call label="Chiudi la finestra" name="Close Window"/> + <menu_item_call label="Chiudi tutte le finestre" name="Close All Windows"/> + <menu_item_separator label="-----------" name="separator2"/> + <menu_item_call label="Salva la texture come..." name="Save Texture As..."/> + <menu_item_separator label="-----------" name="separator3"/> + <menu_item_call label="Fai una fotografia" name="Take Snapshot"/> + <menu_item_call label="Salva la fotografia sul tuo disco" name="Snapshot to Disk"/> + <menu_item_separator label="-----------" name="separator4"/> + <menu_item_call label="Disconnetti" name="Quit"/> + </menu> + <menu label="Modifica" name="Edit"> + <menu_item_call label="Annulla" name="Undo"/> + <menu_item_call label="Ripeti" name="Redo"/> + <menu_item_separator label="-----------" name="separator"/> + <menu_item_call label="Taglia" name="Cut"/> + <menu_item_call label="Copia" name="Copy"/> + <menu_item_call label="Incolla" name="Paste"/> + <menu_item_call label="Cancella" name="Delete"/> + <menu_item_separator label="-----------" name="separator2"/> + <menu_item_call label="Cerca..." name="Search..."/> + <menu_item_separator label="-----------" name="separator3"/> + <menu_item_call label="Seleziona tutto" name="Select All"/> + <menu_item_call label="Deseleziona" name="Deselect"/> + <menu_item_separator label="-----------" name="separator4"/> + <menu_item_call label="Duplica" name="Duplicate"/> + <menu_item_separator label="-----------" name="separator5"/> + <menu label="Indossa l'oggetto" name="Attach Object"/> + <menu label="Togli l'oggetto" name="Detach Object"/> + <menu label="Spogliati dei vestiti" name="Take Off Clothing"> + <menu_item_call label="Maglietta" name="Shirt"/> + <menu_item_call label="Pantaloni" name="Pants"/> + <menu_item_call label="Scarpe" name="Shoes"/> + <menu_item_call label="Calze" name="Socks"/> + <menu_item_call label="Giacca" name="Jacket"/> + <menu_item_call label="Guanti" name="Gloves"/> + <menu_item_call label="Canottiera" name="Menu Undershirt"/> + <menu_item_call label="Mutande" name="Menu Underpants"/> + <menu_item_call label="Gonna" name="Skirt"/> + <menu_item_call label="Tutti i vestiti" name="All Clothes"/> + </menu> + <menu_item_separator label="-----------" name="separator6"/> + <menu_item_call label="Gesture..." name="Gestures..."/> + <menu_item_call label="Profilo..." name="Profile..."/> + <menu_item_call label="Aspetto fisico..." name="Appearance..."/> + <menu_item_separator label="-----------" name="separator7"/> + <menu_item_check label="Amici..." name="Friends..."/> + <menu_item_call label="Gruppi..." name="Groups..."/> + <menu_item_separator label="-----------" name="separator8"/> + <menu_item_call label="Preferenze..." name="Preferences..."/> + </menu> + <menu label="Visualizza" name="View"> + <tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/> + <menu_item_call label="Visualizzazione in soggettiva" name="Mouselook"/> + <menu_item_check label="Costruisci" name="Build"/> + <menu_item_check label="Camera dall'alto" name="Joystick Flycam"/> + <menu_item_call label="Reimposta la visuale" name="Reset View"/> + <menu_item_call label="Guarda l'ultimo che ha parlato" name="Look at Last Chatter"/> + <menu_item_separator label="-----------" name="separator"/> + <menu_item_check label="Strumenti" name="Toolbar"/> + <menu_item_check label="Chat locale" name="Chat History"/> + <menu_item_check label="Comunica" name="Instant Message"/> + <menu_item_check label="Inventario" name="Inventory"/> + <menu_item_check label="Residenti con voice attivo" name="Active Speakers"/> + <menu_item_check label="Residenti ignorati & Oggetti" name="Mute List"/> + <menu_item_separator label="-----------" name="separator2"/> + <menu_item_check label="Controlli della telecamera" name="Camera Controls"/> + <menu_item_check label="Controlli dei movimenti" name="Movement Controls"/> + <menu_item_check label="Mappa globale" name="World Map"/> + <menu_item_check label="Mini-Mappa" name="Mini-Map"/> + <menu_item_separator label="-----------" name="separator3"/> + <menu_item_check label="Barra delle statistiche" name="Statistics Bar"/> + <menu_item_check label="Confini della proprietÃ" name="Property Lines"/> + <menu_item_check label="Linee di confini privati" name="Banlines"/> + <menu_item_check label="Proprietari dei terreni" name="Land Owners"/> + <menu_item_separator label="-----------" name="separator4"/> + <menu label="Suggerimenti" name="Hover Tips"> + <menu_item_check label="Mostra suggerimenti" name="Show Tips"/> + <menu_item_separator label="-----------" name="separator"/> + <menu_item_check label="Suggerimenti sul terreno" name="Land Tips"/> + <menu_item_check label="Suggerimenti su tutti gli oggetti" name="Tips On All Objects"/> + </menu> + <menu_item_check label="Evidenzia oggetti trasparenti" name="Highlight Transparent"/> + <menu_item_check label="Tracciatori" name="beacons"/> + <menu_item_check label="Nascondi le particelle" name="Hide Particles"/> + <menu_item_check label="Mostra dispositivi HUD indossati" name="Show HUD Attachments"/> + <menu_item_separator label="-----------" name="separator5"/> + <menu_item_call label="Zoom Avanti" name="Zoom In"/> + <menu_item_call label="Zoom Default" name="Zoom Default"/> + <menu_item_call label="Zoom Indietro" name="Zoom Out"/> + <menu_item_separator label="-----------" name="separator6"/> + <menu_item_call label="Alterna schermo intero" name="Toggle Fullscreen"/> + <menu_item_call label="Reimposta la grandezza dell'interfaccia al default" name="Set UI Size to Default"/> + </menu> + <menu label="Mondo" name="World"> + <menu_item_call label="Chat" name="Chat"/> + <menu_item_check label="Corri sempre" name="Always Run"/> + <menu_item_check label="Vola" name="Fly"/> + <menu_item_separator label="-----------" name="separator"/> + <menu_item_call label="Crea qui un landmark" name="Create Landmark Here"/> + <menu_item_call label="Imposta la tua casa qui" name="Set Home to Here"/> + <menu_item_separator label="-----------" name="separator2"/> + <menu_item_call label="Teleportati a casa" name="Teleport Home"/> + <menu_item_separator label="-----------" name="separator3"/> + <menu_item_call label="Imposta come 'Assente'" name="Set Away"/> + <menu_item_call label="Imposta occupato" name="Set Busy"/> + <menu_item_call label="Ferma le animazioni sul mio avatar" name="Stop Animating My Avatar"/> + <menu_item_call label="Rilascia tutti i dispositivi" name="Release Keys"/> + <menu_item_separator label="-----------" name="separator4"/> + <menu_item_call label="Estratto conto..." name="Account History..."/> + <menu_item_call label="Gestisci il mio account..." name="Manage My Account..."/> + <menu_item_call label="Compra L$..." name="Buy and Sell L$..."/> + <menu_item_separator label="-----------" name="separator5"/> + <menu_item_call label="Il mio terreno..." name="My Land..."/> + <menu_item_call label="Informazioni sul terreno..." name="About Land..."/> + <menu_item_call label="Acquista il terreno..." name="Buy Land..."/> + <menu_item_call label="Regione/Proprietà Immobiliari..." name="Region/Estate..."/> + <menu_item_separator label="-----------" name="separator6"/> + <menu label="Impostazioni dell'ambiente" name="Environment Settings"> + <menu_item_call label="Alba" name="Sunrise"/> + <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="Reimposta al default della regione" name="Revert to Region Default"/> + <menu_item_separator label="-----------" name="separator"/> + <menu_item_call label="Editor dell'ambiente" name="Environment Editor"/> + </menu> + </menu> + <menu label="Strumenti" name="Tools"> + <menu label="Seleziona strumento" name="Select Tool"> + <menu_item_call label="Focalizza" name="Focus"/> + <menu_item_call label="Muovi" name="Move"/> + <menu_item_call label="Modifica" name="Edit"/> + <menu_item_call label="Crea" name="Create"/> + <menu_item_call label="Terra" name="Land"/> + </menu> + <menu_item_separator label="-----------" name="separator"/> + <menu_item_check label="Seleziona solo i miei oggetti" name="Select Only My Objects"/> + <menu_item_check label="Seleziona solo gli oggetti mobili" name="Select Only Movable Objects"/> + <menu_item_check label="Seleziona solo se racchiuso" name="Select By Surrounding"/> + <menu_item_check label="Mostra selezione nascosta" name="Show Hidden Selection"/> + <menu_item_check label="Mostra raggio di luce per la selezione" name="Show Light Radius for Selection"/> + <menu_item_check label="Mostra raggio di selezione" name="Show Selection Beam"/> + <menu_item_separator label="-----------" name="separator2"/> + <menu_item_check label="Allinea al righello" name="Snap to Grid"/> + <menu_item_call label="Allinea l'oggetto XY al righello" name="Snap Object XY to Grid"/> + <menu_item_call label="Usa la selezione come righello" name="Use Selection for Grid"/> + <menu_item_call label="Opzioni del righello..." name="Grid Options..."/> + <menu_item_separator label="-----------" name="separator3"/> + <menu_item_check label="Modifica parti di oggetti uniti" name="Edit Linked Parts"/> + <menu_item_call label="Unisci" name="Link"/> + <menu_item_call label="Dividi" name="Unlink"/> + <menu_item_separator label="-----------" name="separator4"/> + <menu_item_call label="Focalizza la selezione" name="Focus on Selection"/> + <menu_item_call label="Fai zoom sulla selezione" name="Zoom to Selection"/> + <menu_item_call label="Compra l'oggetto" name="Menu Object Take"/> + <menu_item_call label="Prendi una copia" name="Take Copy"/> + <menu_item_call label="Salva nuovamente l'oggetto nel contenuto dell'oggetto" name="Save Object Back to Object Contents"/> + <menu_item_separator label="-----------" name="separator6"/> + <menu_item_call label="Mostra avvisi script/finestra degli errori" name="Show Script Warning/Error Window"/> + <menu label="Ricompila gli script nella selezione" name="Recompile Scripts in Selection"> + <menu_item_call label="Mono" name="Mono"/> + <menu_item_call label="LSL" name="LSL"/> + </menu> + <menu_item_call label="Reimposta gli script nella selezione" name="Reset Scripts in Selection"/> + <menu_item_call label="Attiva gli script nella selezione" name="Set Scripts to Running in Selection"/> + <menu_item_call label="Disattiva gli script nella selezione" name="Set Scripts to Not Running in Selection"/> + </menu> + <menu label="Aiuto" name="Help"> + <menu_item_call label="Aiuto di Secondlife" name="Second Life Help"/> + <menu_item_call label="Tutorial" name="Tutorial"/> + <menu_item_separator label="-----------" name="separator"/> + <menu_item_call label="Blog ufficiale Linden..." name="Official Linden Blog..."/> + <menu_item_separator label="-----------" name="separator2"/> + <menu_item_call label="Portale degli script..." name="Scripting Portal..."/> + <menu_item_separator label="-----------" name="separator3"/> + <menu_item_call label="Denuncia di abuso..." name="Report Abuse..."/> + <menu_item_call label="Collisioni, Spinte & Colpi..." name="Bumps, Pushes &amp; Hits..."/> + <menu_item_call label="Misuratore del lag" name="Lag Meter"/> + <menu_item_separator label="-----------" name="separator7"/> + <menu label="Segnalazione di un bug" name="Bug Reporting"> + <menu_item_call label="Registro pubblico errori..." name="Public Issue Tracker..."/> + <menu_item_call label="Aiuto per il registro pubblico errori..." name="Publc Issue Tracker Help..."/> + <menu_item_separator label="-----------" name="separator7"/> + <menu_item_call label="Come fare la segnalazione di un bug..." name="Bug Reporing 101..."/> + <menu_item_call label="Problematiche di sicurezza..." name="Security Issues..."/> + <menu_item_call label="Wiki QA - controllo qualità ..." name="QA Wiki..."/> + <menu_item_separator label="-----------" name="separator9"/> + <menu_item_call label="Segnala un bug..." name="Report Bug..."/> + </menu> + <menu_item_call label="Informazioni su Second Life..." name="About Second Life..."/> + </menu> +</menu_bar> diff --git a/indra/newview/skins/default/xui/it/mime_types.xml b/indra/newview/skins/default/xui/it/mime_types.xml index 4de7d2a70c5488898285a7b84136ccfee311afa5..5eda7a57521b0473b89b8447222d630d93426885 100644 --- a/indra/newview/skins/default/xui/it/mime_types.xml +++ b/indra/newview/skins/default/xui/it/mime_types.xml @@ -1,230 +1,230 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<mimetypes name="default"> - <widgetset name="web"> - <label name="web_label"> - Contenuto Web - </label> - <tooltip name="web_tooltip"> - Questo luogo ha un contenuto web - </tooltip> - <playtip name="web_playtip"> - Visualizza il contenuto web - </playtip> - </widgetset> - <widgetset name="movie"> - <label name="movie_label"> - Video - </label> - <tooltip name="movie_tooltip"> - C'è un video da riprodurre qui. - </tooltip> - <playtip name="movie_playtip"> - Riproduci video - </playtip> - </widgetset> - <widgetset name="none"> - <label name="none_label"> - Senza Contenuti - </label> - <tooltip name="none_tooltip"> - Nessun video qui - </tooltip> - </widgetset> - <widgetset name="image"> - <label name="image_label"> - Immagine - </label> - <tooltip name="image_tooltip"> - C'è un'immagine in questo luogo - </tooltip> - <playtip name="image_playtip"> - Visualizza l'immagine di questo posto - </playtip> - </widgetset> - <widgetset name="audio"> - <label name="audio_label"> - Audio - </label> - <tooltip name="audio_tooltip"> - C'è l'audio in questo luogo - </tooltip> - <playtip name="audio_playtip"> - Riproduci l'audio di questo posto - </playtip> - </widgetset> - <scheme name="rtsp"> - <label name="rtsp_label"> - Streaming in tempo reale - </label> - </scheme> - <mimetype name="blank"> - <label name="blank_label"> - - Nessuno - - </label> - </mimetype> - <mimetype name="none/none"> - <label name="none/none_label"> - - Nessuno - - </label> - </mimetype> - <mimetype name="audio/*"> - <label name="audio2_label"> - Audio - </label> - </mimetype> - <mimetype name="video/*"> - <label name="video2_label"> - Video - </label> - </mimetype> - <mimetype name="image/*"> - <label name="image2_label"> - Immagine - </label> - </mimetype> - <mimetype name="video/vnd.secondlife.qt.legacy"> - <label name="vnd.secondlife.qt.legacy_label"> - Video (QuickTime) - </label> - </mimetype> - <mimetype name="application/javascript"> - <label name="application/javascript_label"> - Javascript - </label> - </mimetype> - <mimetype name="application/ogg"> - <label name="application/ogg_label"> - Ogg Audio/Video - </label> - </mimetype> - <mimetype name="application/pdf"> - <label name="application/pdf_label"> - Documento PDF - </label> - </mimetype> - <mimetype name="application/postscript"> - <label name="application/postscript_label"> - Documento Postscript - </label> - </mimetype> - <mimetype name="application/rtf"> - <label name="application/rtf_label"> - Rich Text (RTF) - </label> - </mimetype> - <mimetype name="application/smil"> - <label name="application/smil_label"> - Synchronized Multimedia Integration Language (SMIL) - </label> - </mimetype> - <mimetype name="application/xhtml+xml"> - <label name="application/xhtml+xml_label"> - Pagina Web (XHTML) - </label> - </mimetype> - <mimetype name="application/x-director"> - <label name="application/x-director_label"> - Macromedia Director - </label> - </mimetype> - <mimetype name="application/x-shockwave-flash"> - <label name="application/x-shockwave-flash_label"> - Flash - </label> - </mimetype> - <mimetype name="audio/mid"> - <label name="audio/mid_label"> - Audio (MIDI) - </label> - </mimetype> - <mimetype name="audio/mpeg"> - <label name="audio/mpeg_label"> - Audio (MP3) - </label> - </mimetype> - <mimetype name="audio/x-aiff"> - <label name="audio/x-aiff_label"> - Audio (AIFF) - </label> - </mimetype> - <mimetype name="audio/x-wav"> - <label name="audio/x-wav_label"> - Audio (WAV) - </label> - </mimetype> - <mimetype name="image/bmp"> - <label name="image/bmp_label"> - Immagine (BMP) - </label> - </mimetype> - <mimetype name="image/gif"> - <label name="image/gif_label"> - Immagine (GIF) - </label> - </mimetype> - <mimetype name="image/jpeg"> - <label name="image/jpeg_label"> - Immagine (JPEG) - </label> - </mimetype> - <mimetype name="image/png"> - <label name="image/png_label"> - Immagine (PNG) - </label> - </mimetype> - <mimetype name="image/svg+xml"> - <label name="image/svg+xml_label"> - Immagine (SVG) - </label> - </mimetype> - <mimetype name="image/tiff"> - <label name="image/tiff_label"> - Immagine (TIFF) - </label> - </mimetype> - <mimetype name="text/html"> - <label name="text/html_label"> - Pagina Web - </label> - </mimetype> - <mimetype name="text/plain"> - <label name="text/plain_label"> - Testo - </label> - </mimetype> - <mimetype name="text/xml"> - <label name="text/xml_label"> - XML - </label> - </mimetype> - <mimetype name="video/mpeg"> - <label name="video/mpeg_label"> - Video (MPEG) - </label> - </mimetype> - <mimetype name="video/mp4"> - <label name="video/mp4_label"> - Video (MP4) - </label> - </mimetype> - <mimetype name="video/quicktime"> - <label name="video/quicktime_label"> - Video (QuickTime) - </label> - </mimetype> - <mimetype name="video/x-ms-asf"> - <label name="video/x-ms-asf_label"> - Video (Windows Media ASF) - </label> - </mimetype> - <mimetype name="video/x-ms-wmv"> - <label name="video/x-ms-wmv_label"> - Video (Windows Media WMV) - </label> - </mimetype> - <mimetype name="video/x-msvideo"> - <label name="video/x-msvideo_label"> - Video (AVI) - </label> - </mimetype> -</mimetypes> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<mimetypes name="default"> + <widgetset name="web"> + <label name="web_label"> + Contenuto Web + </label> + <tooltip name="web_tooltip"> + Questo luogo ha un contenuto web + </tooltip> + <playtip name="web_playtip"> + Visualizza il contenuto web + </playtip> + </widgetset> + <widgetset name="movie"> + <label name="movie_label"> + Video + </label> + <tooltip name="movie_tooltip"> + C'è un video da riprodurre qui. + </tooltip> + <playtip name="movie_playtip"> + Riproduci video + </playtip> + </widgetset> + <widgetset name="none"> + <label name="none_label"> + Senza Contenuti + </label> + <tooltip name="none_tooltip"> + Nessun video qui + </tooltip> + </widgetset> + <widgetset name="image"> + <label name="image_label"> + Immagine + </label> + <tooltip name="image_tooltip"> + C'è un'immagine in questo luogo + </tooltip> + <playtip name="image_playtip"> + Visualizza l'immagine di questo posto + </playtip> + </widgetset> + <widgetset name="audio"> + <label name="audio_label"> + Audio + </label> + <tooltip name="audio_tooltip"> + C'è l'audio in questo luogo + </tooltip> + <playtip name="audio_playtip"> + Riproduci l'audio di questo posto + </playtip> + </widgetset> + <scheme name="rtsp"> + <label name="rtsp_label"> + Streaming in tempo reale + </label> + </scheme> + <mimetype name="blank"> + <label name="blank_label"> + - Nessuno - + </label> + </mimetype> + <mimetype name="none/none"> + <label name="none/none_label"> + - Nessuno - + </label> + </mimetype> + <mimetype name="audio/*"> + <label name="audio2_label"> + Audio + </label> + </mimetype> + <mimetype name="video/*"> + <label name="video2_label"> + Video + </label> + </mimetype> + <mimetype name="image/*"> + <label name="image2_label"> + Immagine + </label> + </mimetype> + <mimetype name="video/vnd.secondlife.qt.legacy"> + <label name="vnd.secondlife.qt.legacy_label"> + Video (QuickTime) + </label> + </mimetype> + <mimetype name="application/javascript"> + <label name="application/javascript_label"> + Javascript + </label> + </mimetype> + <mimetype name="application/ogg"> + <label name="application/ogg_label"> + Ogg Audio/Video + </label> + </mimetype> + <mimetype name="application/pdf"> + <label name="application/pdf_label"> + Documento PDF + </label> + </mimetype> + <mimetype name="application/postscript"> + <label name="application/postscript_label"> + Documento Postscript + </label> + </mimetype> + <mimetype name="application/rtf"> + <label name="application/rtf_label"> + Rich Text (RTF) + </label> + </mimetype> + <mimetype name="application/smil"> + <label name="application/smil_label"> + Synchronized Multimedia Integration Language (SMIL) + </label> + </mimetype> + <mimetype name="application/xhtml+xml"> + <label name="application/xhtml+xml_label"> + Pagina Web (XHTML) + </label> + </mimetype> + <mimetype name="application/x-director"> + <label name="application/x-director_label"> + Macromedia Director + </label> + </mimetype> + <mimetype name="application/x-shockwave-flash"> + <label name="application/x-shockwave-flash_label"> + Flash + </label> + </mimetype> + <mimetype name="audio/mid"> + <label name="audio/mid_label"> + Audio (MIDI) + </label> + </mimetype> + <mimetype name="audio/mpeg"> + <label name="audio/mpeg_label"> + Audio (MP3) + </label> + </mimetype> + <mimetype name="audio/x-aiff"> + <label name="audio/x-aiff_label"> + Audio (AIFF) + </label> + </mimetype> + <mimetype name="audio/x-wav"> + <label name="audio/x-wav_label"> + Audio (WAV) + </label> + </mimetype> + <mimetype name="image/bmp"> + <label name="image/bmp_label"> + Immagine (BMP) + </label> + </mimetype> + <mimetype name="image/gif"> + <label name="image/gif_label"> + Immagine (GIF) + </label> + </mimetype> + <mimetype name="image/jpeg"> + <label name="image/jpeg_label"> + Immagine (JPEG) + </label> + </mimetype> + <mimetype name="image/png"> + <label name="image/png_label"> + Immagine (PNG) + </label> + </mimetype> + <mimetype name="image/svg+xml"> + <label name="image/svg+xml_label"> + Immagine (SVG) + </label> + </mimetype> + <mimetype name="image/tiff"> + <label name="image/tiff_label"> + Immagine (TIFF) + </label> + </mimetype> + <mimetype name="text/html"> + <label name="text/html_label"> + Pagina Web + </label> + </mimetype> + <mimetype name="text/plain"> + <label name="text/plain_label"> + Testo + </label> + </mimetype> + <mimetype name="text/xml"> + <label name="text/xml_label"> + XML + </label> + </mimetype> + <mimetype name="video/mpeg"> + <label name="video/mpeg_label"> + Video (MPEG) + </label> + </mimetype> + <mimetype name="video/mp4"> + <label name="video/mp4_label"> + Video (MP4) + </label> + </mimetype> + <mimetype name="video/quicktime"> + <label name="video/quicktime_label"> + Video (QuickTime) + </label> + </mimetype> + <mimetype name="video/x-ms-asf"> + <label name="video/x-ms-asf_label"> + Video (Windows Media ASF) + </label> + </mimetype> + <mimetype name="video/x-ms-wmv"> + <label name="video/x-ms-wmv_label"> + Video (Windows Media WMV) + </label> + </mimetype> + <mimetype name="video/x-msvideo"> + <label name="video/x-msvideo_label"> + Video (AVI) + </label> + </mimetype> +</mimetypes> diff --git a/indra/newview/skins/default/xui/it/notifications.xml b/indra/newview/skins/default/xui/it/notifications.xml index c5b84da4c9ef5ae4df05acb4e7608824d4607b51..786bfdf7efac414390e13d99c7e4f38d917e1ddd 100644 --- a/indra/newview/skins/default/xui/it/notifications.xml +++ b/indra/newview/skins/default/xui/it/notifications.xml @@ -1,5795 +1,3089 @@ -<?xml version="1.0" ?><notifications> - - <global name="skipnexttime"> - - Non mostrare più la prossima volta - </global> - - <global name="alwayschoose"> - - Scegli sempre questa opzione - </global> - - <template name="okbutton"> - <form> - <button - - - name="OK" - text="$yestext"/> - </form> - </template> - - <template name="okignore"> - <form> - <button - - - name="OK" - text="$yestext"/> - <ignore text="$ignoretext"/> - </form> - </template> - - <template name="okcancelbuttons"> - <form> - <button - - - name="OK" - text="$yestext"/> - <button - - name="Cancel" - text="$notext"/> - </form> - </template> - - <template name="okcancelignore"> - <form> - <button - - - name="OK" - text="$yestext"/> - <button - - name="Cancel" - text="$notext"/> - <ignore text="$ignoretext"/> - </form> - </template> - - <template name="okhelpbuttons"> - <form> - <button - - - name="OK" - text="$yestext"/> - <button - - name="Help" - text="$helptext"/> - </form> - </template> - - <template name="yesnocancelbuttons"> - <form> - <button - - - name="Yes" - text="$yestext"/> - <button - - name="No" - text="$notext"/> - <button - - name="Cancel" - text="$canceltext"/> - </form> - </template> - - <notification - functor="GenericAcknowledge" - - name="MissingAlert" - > -'[_NAME]' non trovato in notifications.xml. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="FloaterNotFound" - > -Errore visualizzazione finestra: Non trovati i seguenti controlli: - -[CONTROLS] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="TutorialNotFound" - > -Nessun tutorial disponibile al momento. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="GenericAlert" - > -[MESSAGE] - </notification> - - <notification - - name="GenericAlertYesCancel" - > -[MESSAGE] - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="Si"/> - </notification> - - <notification - - name="WearableSave" - > -Salva i cambiamenti all'attuale parte del corpo/abito? - <usetemplate - canceltext="Annulla" - name="yesnocancelbuttons" - notext="Non salvare" - yestext="Salva"/> - </notification> - - <notification - - name="CompileQueueSaveText" - > -C'è stato un problema importando il testo di uno script per la seguente ragione: [REASON]. Riprova più tardi. - </notification> - - <notification - - name="CompileQueueSaveBytecode" - > -C'è stato un problema importando lo script compilato per la seguente ragione: [REASON]. Riprova più tardi. - </notification> - - <notification - - name="WriteAnimationFail" - > -C'è stato un problema di scrittura dati dell'animazione. Riprova più tardi. - </notification> - - <notification - - name="UploadAuctionSnapshotFail" - > -C'è stato un problema importando la fotografia dell'asta per la seguente ragione: [REASON] - </notification> - - <notification - - name="UnableToViewContentsMoreThanOne" - > -Non è possibile vedere il contenuto di più di un elemento per volta. -Scegli solo un oggetto e riprova. - </notification> - - <notification - - name="SaveClothingBodyChanges" - > -Salva tutte le modifiche alle parti del corpo/abiti? - <usetemplate - canceltext="Annulla" - name="yesnocancelbuttons" - notext="Non Salvare" - yestext="Salva Tutto"/> - </notification> - - <notification - - name="GrantModifyRights" - > -Dare i diritti di modifica ad un altro residente gli consente di cambiare, cancellare o prendere QUALUNQUE oggetto che hai in Second Life. Fai MOLTA attenzione quando concedi questo permesso. -Vuoi davvero dare i diritti di modifica a [FIRST_NAME] [LAST_NAME]? - <usetemplate - name="okcancelbuttons" - notext="No" - yestext="Si"/> - </notification> - - <notification - - name="GrantModifyRightsMultiple" - > -Dare i diritti di modifica ad un altro residente gli consente di cambiare QUALUNQUE oggetto che hai in Second Life. Fai MOLTA attenzione quando concedi questo permesso. -Vuoi davvero dare i diritti di modifica ai residenti selezionati? - <usetemplate - name="okcancelbuttons" - notext="No" - yestext="Si"/> - </notification> - - <notification - - name="RevokeModifyRights" - > -Vuoi revocare i diritti di modifica dati a [FIRST_NAME] [LAST_NAME]? - <usetemplate - name="okcancelbuttons" - notext="No" - yestext="Si"/> - </notification> - - <notification - - name="RevokeModifyRightsMultiple" - > -Vuoi revocare i permessi di modifica dati ai residenti selezionati? - <usetemplate - name="okcancelbuttons" - notext="No" - yestext="Si"/> - </notification> - - <notification - - name="UnableToCreateGroup" - > -Non è possibile creare il gruppo. -[MESSAGE] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="PanelGroupApply" - > -[NEEDS_APPLY_MESSAGE] -[WANT_APPLY_MESSAGE] - <usetemplate - canceltext="Annulla" - name="yesnocancelbuttons" - notext="Ignora le modifiche" - yestext="Applica le modifiche"/> - </notification> - - <notification - - name="MustSpecifyGroupNoticeSubject" - > -Devi specificare un oggetto per mandare una notice al gruppo. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="AddGroupOwnerWarning" - > -Stai per aggiungere dei membri al ruolo [ROLE_NAME]. -Non si possono rimuovere membri da quel ruolo. -I membri devono dimettersi volontariamente dal ruolo. -Confermi l'operazione? - <usetemplate - ignoretext="Quando si aggiungono membri al ruolo di proprietario" - name="okcancelignore" - notext="No" - yestext="Si"/> - </notification> - - <notification - - name="AssignDangerousActionWarning" - > -Stai per aggiungere il potere '[ACTION_NAME]' al ruolo '[ROLE_NAME]'. - - *ATTENZIONE* - Ogni membro di un ruolo con questo potere può assegnare a sè stesso -- e a qualunque altro membro -- ruoli che hanno più poteri di quelli che hanno correntemente, potenzialmente consentendogli di avere quasi i poteri del proprietario. Accertati di sapere quello che stai facendo prima di assegnare questo potere. - -Aggiungi questo potere a '[ROLE_NAME]'? - <usetemplate - name="okcancelbuttons" - notext="No" - yestext="Si"/> - </notification> - - <notification - - name="AssignDangerousAbilityWarning" - > -Stai per aggiungere il potere '[ACTION_NAME]' al ruolo '[ROLE_NAME]'. - - *ATTENZIONE* - Ogni membro di un ruolo con questo potere può assegnare a sè stesso -- e a qualunque altro membro -- tutti i poteri, elevandosi al livello di quasi proprietario. - -Aggiungi questo potere a '[ROLE_NAME]'? - <usetemplate - name="okcancelbuttons" - notext="No" - yestext="Si"/> - </notification> - - <notification - - name="ClickPublishHelpLand" - > -Selezionare "Pubblica in Ricerca" -Marcando questo campo si mostrerà : -- questo terreno nei risultati di ricerca -- gli oggetti pubblici di questo terreno -- questo terreno nella ricerca web - </notification> - - <notification - - name="ClickPublishHelpLandDisabled" - > -Non puoi rendere questo terreno visibile nella ricerca perchè è in una regione che non lo consente. - </notification> - - <notification - - name="ClickPublishHelpAvatar" - > -Scegliendo "Mostra in Ricerca" verrà mostrato: -- il mio profilo nei risultati della ricerca -- un link al mio profilo nelle pagine pubbliche del gruppo - </notification> - - <notification - - name="ClickPartnerHelpAvatar" - > -Puoi proporre o cancellare una partnership con un altro/a residente attraverso il sito web [SECOND_LIFE]. - -Vai al sito web di Second Life per ulteriori informazioni sulla partnership? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="Vai alla pagina"/> - </notification> - - <notification - - name="ClickWebProfileHelpAvatar" - > -Se questo/a residente ha impostato una URL nel suo profilo puoi: - * Cliccare 'Carica' per vedere la pagina in questa finestra web. - * Cliccare Carica > 'nel browser esterno' per vedere la pagina nel vostro browser web preimpostato. - * Cliccare Carica > 'URL Principale' per ritornare alla pagina web del profile di questo/a Residente se hai cambiato pagina. - -Quando visiti il tuo profilo, puoi specificare qualunque URL come tuo profilo web e cliccare OK per impostarla. -Altri residenti possono visitare la URL che hai impostato cliccando sul tuo profilo. - </notification> - - <notification - - name="JoinGroupCanAfford" - > -Iscriversi a questo gruppo costa [COST]L$. -Vuoi proseguire? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="Iscriviti"/> - </notification> - - <notification - - name="JoinGroupCannotAfford" - > -Iscriversi a questo gruppo costa [COST]L$. -Non hai abbastanza L$ per iscriverti a questo gruppo. - </notification> - - <notification - - name="LandBuyPass" - > -Pagando [COST]L$ puoi entrare in questa terra ('[PARCEL_NAME]') per [TIME] ore. Compri un pass? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="SalePriceRestriction" - > -Il prezzo di vendita deve essere superiore a 0L$ se vendi a tutti. -Seleziona una vendita individuale per vendere a 0L$. - </notification> - - <notification - - name="ConfirmLandSaleChange" - - > -Il terreno selezionato di [LAND_SIZE] m² sta per essere messo in vendita. -Il tuo prezzo di vendità è [SALE_PRICE]L$ ed è autorizzato alla vendita a [NAME]. - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmLandSaleToAnyoneChange" - > -ATTENZIONE: Cliccando 'vendi a tutti' rende il tuo terrono disponibile all'intera comunità di Second Life, anche non in questa regione. - -Il terreno selezionato di [LAND_SIZE] m² sta per essere messo in vendita. -Il tuo prezzo di vendità è [SALE_PRICE]L$ ed è autorizzato alla vendita a [NAME]. - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="ReturnObjectsDeededToGroup" - > -Confermi di volere restituire tutti gli oggetti condivisi con il gruppo '[NAME]' di questo terreno agli inventari dei proprietari precedenti? - -*ATTENZIONE* Questo cancellerà gli oggetti non trasferibili ceduti al gruppo! - -Oggetti: [N] - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="ReturnObjectsOwnedByUser" - > -Confermi di volere restituire tutti gli oggetti posseduti dal residente '[NAME]' in questo terreno al suo inventario? - -Oggetti: [N] - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="ReturnObjectsOwnedBySelf" - > -Confermi di volere restituire tutti gli oggetti posseduti da te in questo terreno, di nuovo nel tuo inventario? - -Oggetti: [N] - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="ReturnObjectsNotOwnedBySelf" - > -Confermi di volere restituire tutti gli oggetti di cui NON sei proprietario in questo terreno all'inventario dei rispettivi proprietari? -Gli oggetti trasferibili ceduti al gruppo verranno restituiti ai loro proprietari precedenti. - -*ATTENZIONE* Questo cancellerà gli oggetti non trasferibili ceduti al gruppo! - -Oggetti: [N] - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="ReturnObjectsNotOwnedByUser" - > -Confermi di volere restituire tutti gli oggetti NON posseduti da [NAME] in questo terreno nell'inventario dei loro proprietari? -Gli oggetti trasferibili ceduti al gruppo verranno restituiti ai loro proprietari precedenti. - -*ATTENZIONE* Questo cancellerà gli oggetti non trasferibili ceduti al gruppo! - -Oggetti: [N] - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="ReturnAllTopObjects" - > -Confermi di volere restituire tutti gli oggetti elencati nell'inventario dei loro proprietari? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="DisableAllTopObjects" - > -Confermi di volere disabilitare tutti gli oggetti in questa regione? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="ReturnObjectsNotOwnedByGroup" - > -Restituisci gli oggetti in questo terreno che NON sono condivisi con il gruppo [NAME] ai loro proprietari? - -Oggetti: [N] - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="UnableToDisableOutsideScripts" - > -Non è possibile disabilitare gli script. -L'intera regione ha l'abilitazione danni. -Gli script devono essere autorizzati all'esecuzione affinchè le armi funzionino. - </notification> - - <notification - - name="MustBeInParcel" - > -Devi essere dentro il terreno per impostare il suo Punto di Atterraggio. - </notification> - - <notification - - name="PromptRecipientEmail" - > -Introduci un indirizzo email per il destinatario/i. - </notification> - - <notification - - name="PromptSelfEmail" - > -Introduci il tuo indirizzo email. - </notification> - - <notification - - name="PromptMissingSubjMsg" - > -Invia la foto via email con soggetto o messaggio predefinito? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="ErrorProcessingSnapshot" - > -Errore nell'elaborazione della fotografia. - </notification> - - <notification - - name="ErrorEncodingSnapshot" - > -Errore nella codifica della fotografia. - </notification> - - <notification - - name="ErrorUploadingPostcard" - > -C'è stato un problema inviando la fotografia per il seguente motivo: [REASON] - </notification> - - <notification - - name="ErrorUploadingReportScreenshot" - > -C'è stato un problema importando la foto del rapporto per il seguente motivo: [REASON] - </notification> - - <notification - - name="MustAgreeToLogIn" - > -Devi accettare i Termini di Servizio prima di proseguire il collegamento con [SECOND_LIFE]. - </notification> - - <notification - - name="CouldNotPutOnOutfit" - > -Non è stato possibile indossare un equipaggiamento. -La cartella equipaggiamento non contiene abbigliamento, parti del corpo o attachment. - </notification> - - <notification - - name="CannotWearTrash" - > -Non puoi indossare abiti e parti del corpo che sono nel cestino - </notification> - - <notification - - name="CannotWearInfoNotComplete" - > -Non puoi indossare quell'elemento perchè non è ancora stato caricato. Riprova fra un minuto. - </notification> - - <notification - - name="MustHaveAccountToLogIn" - > -Qualcosa è rimasto vuoto. -Devi inserire sia il nome che il cognome del tuo avatar. - -Hai bisogno di un account per entrare in [SECOND_LIFE]. Ne vuoi creare uno adesso? - <usetemplate - name="okcancelbuttons" - notext="Riprova" - yestext="Crea un nuovo account"/> - </notification> - - <notification - - name="AddClassified" - > -Gli annunci appaiono nella sezione 'Annunci' della ricerca nel database e su www.secondlife.com per una settimana. -Compila il tuo annuncio e clicca 'Pubblica...' per aggiungerlo al database. -Ti verrà chiesto un prezzo da pagare quando clicchi su Pubblica. -Pagare un prezzo più alto fa sì che il tuo annuncio compaia più in alto nella lista, e che sia più facile da trovare quando la gente ricerca per parole chiavi. - <usetemplate - ignoretext="Mentre si aggiunge un annuncio" - name="okcancelignore" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="DeleteClassified" - > -Cancella annuncio '[NAME]'? -Non ci sono rimborsi per la tariffa pagata. - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="ClassifiedSave" - > -Salva le modifiche all'annuncio [NAME]? - <usetemplate - canceltext="Annulla" - name="yesnocancelbuttons" - notext="Non salvare" - yestext="Salva"/> - </notification> - - <notification - - name="DeleteAvatarPick" - > -Cancella il favorito [PICK]? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="PromptGoToEventsPage" - > -Vai alla pagina degli eventi di [SECOND_LIFE]? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="SelectProposalToView" - > -Scegli una proposta da vedere. - </notification> - - <notification - - name="SelectHistoryItemToView" - > -Scegli un item storico da vedere. - </notification> - - <notification - - name="ResetShowNextTimeDialogs" - > -Vuoi riabilitare tutti le finestre di popup, che precedentemente hai indicato che 'Non vuoi vedere più'? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="SkipShowNextTimeDialogs" - > -Vuoi disabilitare tutti i popup che possono essere ignorati? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="CacheWillClear" - > -La Cache verrà pulita dopo il riavvio di [SECOND_LIFE]. - </notification> - - <notification - - name="CacheWillBeMoved" - > -La Cache verrà traslocata dopo il riavvio di [SECOND_LIFE]. -Nota: Questo pulirà la cache. - </notification> - - <notification - - name="ChangeConnectionPort" - > -Le impostazioni delle porte avranno effetto dopo il riavvio di [SECOND_LIFE]. - </notification> - - <notification - - name="ChangeSkin" - > -La nuova pelle apparità dopo il riavvio di [SECOND_LIFE]. - </notification> - - <notification - - name="GoToAuctionPage" - > -Vai alla pagina web [SECOND_LIFE] per vedere i dettagli dell'asta oppure fai un'offerta? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="SaveChanges" - > -Salva le modifiche? - <usetemplate - canceltext="Annulla" - name="yesnocancelbuttons" - notext="Non salvare" - yestext="Salva"/> - </notification> - - <notification - - name="GestureSaveFailedTooManySteps" - > -Il salvataggio della Gesture è fallito. -La gesture ha troppi passi. -Prova a togliere qualche passo e quindi risalva. - </notification> - - <notification - - name="GestureSaveFailedTryAgain" - > -Il salvataggio della gesture è fallito. Riprova fra un minuto. - </notification> - - <notification - - name="GestureSaveFailedObjectNotFound" - > -Non è possibile salvare la gesture perchè non è stato trovato l'oggetto o l'inventario associato. -L'oggetto potrebbe essere troppo lontano oppure essere stato cancellato. - </notification> - - <notification - - name="GestureSaveFailedReason" - > -C'è stato un problema salvando la gesture a causa del seguente motivo: [REASON]. Riprova a salvare la gesture più tardi. - </notification> - - <notification - - name="SaveNotecardFailObjectNotFound" - > -Non è possibile salvare la notecard perchè non è stato trovato l'oggetto o l'inventario associato. -L'oggetto potrebbe essere troppo lontano oppure essere stato cancellato. - </notification> - - <notification - - name="SaveNotecardFailReason" - > -C'è stato un problema salvando la notecard a causa del seguente motivo: [REASON]. Riprova a salvare la notecard più tardi. - </notification> - - <notification - - name="ScriptCannotUndo" - > -Non è stato possibile annullare tutti i cambiamenti nella tua versione dello script. -Vuoi ripristinare l'ultima versione salvata sul server? -(**Attenzione** Questa operazione non è reversibile) - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="SaveScriptFailReason" - > -C'è stato un problema salvando lo script a causa del seguente motivo : [REASON]. Riprova a salvare lo script più tardi. - </notification> - - <notification - - name="SaveScriptFailObjectNotFound" - > -Non è stato possibile salvare lo script perchè l'oggetto che lo contiene non è stato trovato. -L'oggetto potrebbe essere troppo lontano oppure essere stato cancellato. - </notification> - - <notification - - name="SaveBytecodeFailReason" - > -C'è stato un problema salvando lo script compilato a causa del seguente motivo: [REASON]. Riprova a salvare lo script più tardi. - </notification> - - <notification - - name="CouldNotStartStopScript" - > -Non è stato possibile lanciare o fermare lo script perchè l'oggetto che lo contiene non è stato trovato. -L'oggetto potrebbe essere troppo lontano oppure essere stato cancellato. - </notification> - - <notification - - name="CannotDownloadFile" - > -Non è stato possibile scaricare il file - </notification> - - <notification - - name="CannotWriteFile" - > -Non è stato possibile scrivere il file [[FILE]] - </notification> - - <notification - - name="UnsupportedHardware" - > -Attenzione: Il tuo sistema non soddisfa i requisiti minimi per il funzionamento Second Life. Se continui ad usare Second Life, potresti osservare una lentezza eccessiva. Sfortunatamente non possiamo fornire supporto tecnico per configurazioni di sistema non supportate. - -MINSPECS -Vuoi visitare [_URL] per maggiori informazioni? - <url option="0" name="url"> - - http://secondlife.com/support/sysreqs.php?lang=it - </url> - <usetemplate - ignoretext="Mentre sto individuando hardware non supportato" - name="okcancelignore" - notext="No" - yestext="Si"/> - </notification> - - <notification - - name="UnknownGPU" - > -Il tuo sistema contiene una scheda grafica che attualmente non supportiamo. -Questo succede spesso con nuovi prodotti che non siamo riusciti a verificare. Probabilmente Second Life funzionerà correttamente ma forse dovrai modificare le impostazioni grafiche in modo appropriato. -(Modifica > Preferenze > Grafica). - <form name="form"> - <ignore name="ignore" - text="Mentre stavo valutando una scheda grafica sconosciuta"/> - </form> - </notification> - - <notification - - name="DisplaySettingsNoShaders" - > -[SECOND_LIFE] si è bloccata mentre stava inizializzando i driver grafici. -La qualità grafica verrà impostata al valore basso per evitare alcuni degli errori più comuni con i driver. -Questo però disabiliterà alcune funzioni grafiche. -Ti raccomandiamo di aggiornare i driver della tua scheda grafica. -La qualità grafica può essere aumentara in Preferenze > Grafica. - </notification> - - <notification - - name="RegionNoTerraforming" - > -La regione [REGION] non consente di terraformare. - </notification> - - <notification - - name="CannotCopyWarning" - > -Non hai il permesso di copiare questo elemento e lo perderai dal tuo inventario se lo regali. -Confermi veramente di offrire questo elemento? - <usetemplate - name="okcancelbuttons" - notext="No" - yestext="Si"/> - </notification> - - <notification - - name="CannotGiveItem" - > -Impossibile consegnare l'elemento dell'inventario. - </notification> - - <notification - - name="TransactionCancelled" - > -La transazione è stata annullata. - </notification> - - <notification - - name="TooManyItems" - > -Non è possibile dare più di 42 elementi in un singolo trasferimento di inventario. - </notification> - - <notification - - name="NoItems" - > -Non hai i permessi di trasferimento per gli elementi selezionati. - </notification> - - <notification - - name="CannotCopyCountItems" - > -Non hai i permessi di copia per copiare [COUNT] -degli elementi selezionati. Perderai questi elementi dal tuo inventario. -Vuoi veramente perdere questi elementi? - <usetemplate - name="okcancelbuttons" - notext="No" - yestext="Si"/> - </notification> - - <notification - - name="CannotGiveCategory" - > -Non hai i permessi per trasferire la cartella selezionata. - </notification> - - <notification - - name="FreezeAvatar" - > -Immobilizza questo avatar? -Non potrà temporaneamente muoversi, chiacchierare in chat, o interagire con il mondo. - <usetemplate - canceltext="Annulla" - name="yesnocancelbuttons" - notext="Smobilizza" - yestext="Immobilizza"/> - </notification> - - <notification - - name="FreezeAvatarFullname" - > -Immobilizza [AVATAR_NAME]? -Non potrà temporaneamente muoversi, chiacchierare in chat, o interagire con il mondo. - <usetemplate - canceltext="Annulla" - name="yesnocancelbuttons" - notext="Smobilizza" - yestext="Immobilizza"/> - </notification> - - <notification - - name="EjectAvatarFullname" - > -Espelli [AVATAR_NAME] dal tuo terreno? - <usetemplate - canceltext="Annulla" - name="yesnocancelbuttons" - notext="Espelli e blocca" - yestext="Espelli"/> - </notification> - - <notification - - name="EjectAvatarNoBan" - > -Espelli questo avatar dal tuo terreno? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="Espelli"/> - </notification> - - <notification - - name="EjectAvatarFullnameNoBan" - > -Espelli [AVATAR_NAME] dal tuo terreno? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="Espelli"/> - </notification> - - <notification - - name="AcquireErrorTooManyObjects" - > -ERRORE DI ACQUISIZIONE: hai selezionato troppi oggetti. - </notification> - - <notification - - name="AcquireErrorObjectSpan" - > -ERRORE DI ACQUISIZIONE: Gli oggetti sono a cavallo di più di una regione. -Sposta tutti gli oggetti che vuoi acquisire su una sola regione. - </notification> - - <notification - - name="PromptGoToCurrencyPage" - > -[EXTRA] - -Vuoi andare su [URL] per maggiori informazioni su come acquistare denaro? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="UnableToLinkObjects" - > -Impossibile unire questi [COUNT] oggetti. -Puoi unire al massimo [MAX] oggetti. - </notification> - - <notification - - name="CannotLinkIncompleteSet" - > -Puoi unire soltanto un insieme completo di oggetti, e devi selezionare più di un oggetto. - </notification> - - <notification - - name="CannotLinkModify" - > -Impossibile unire perchè non hai il diritto di modifica su tutti gli oggetti. - -Accertati che nessuno sia bloccato e che li possiedi tutti. - </notification> - - <notification - - name="CannotLinkDifferentOwners" - > -Impossibile unire perche non tutti gli oggetti hanno lo stesso proprietario. - -Accertati di possedere tutti gli oggetti selezionati. - </notification> - - <notification - - name="NoFileExtension" - > -Manca l'estensione per il file: '[FILE]' - -Accertati che il file abbia una estensione corretta. - </notification> - - <notification - - name="InvalidFileExtension" - > -L'estensione [EXTENSION] del file non è valida -Attese [VALIDS] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="CannotUploadSoundFile" - > -Impossibile aprire in lettura il file di suono importato: -[FILE] - </notification> - - <notification - - name="SoundFileNotRIFF" - > -Il file audio non sembra essere di tipo RIFF WAVE: -[FILE] - </notification> - - <notification - - name="SoundFileNotPCM" - > -Il file audio non sembra essere di tipo PCM WAVE: -[FILE] - </notification> - - <notification - - name="SoundFileInvalidChannelCount" - > -Il file ha un numero sbagliato di canali (deve essere mono oppure stereo): -[FILE] - </notification> - - <notification - - name="SoundFileInvalidSampleRate" - > -Il file non sembra essere della frequenza di campionamento supportata (deve essere 44.1k): -[FILE] - </notification> - - <notification - - name="SoundFileInvalidWordSize" - > -Il file non sembra avere una dimensione della parola supportata (deve essere a 8 o a 16 bit): -[FILE] - </notification> - - <notification - - name="SoundFileInvalidHeader" - > -Impossibile trovare il frammento 'data' nell'intestazione WAV: -[FILE] - </notification> - - <notification - - name="SoundFileInvalidTooLong" - > -Il file audio è troppo lungo (deve essere al massimo 10 secondi): -[FILE] - </notification> - - <notification - - name="ProblemWithFile" - > -Problemi con il file [FILE]: - -[ERROR] - </notification> - - <notification - - name="CannotOpenTemporarySoundFile" - > -Impossibile aprire in scrittura il file temporaneamente compresso: [FILE] - </notification> - - <notification - - name="UnknownVorbisEncodeFailure" - > -Errore di codifica Vorbis sconosciuta per: [FILE] - </notification> - - <notification - - name="CorruptResourceFile" - > -File risorsa corrotto: [FILE] - </notification> - - <notification - - name="UnknownResourceFileVersion" - > -Versione di risorsa Linden sconosciuta nel file: [FILE] - </notification> - - <notification - - name="UnableToCreateOutputFile" - > -Impossibile creare il file in uscita: [FILE] - </notification> - - <notification - - name="DoNotSupportBulkAnimationUpload" - > -Non supportiamo attualmente l'upload multiplo di file di animazione. - </notification> - - <notification - - name="CannotUploadReason" - > -Impossibile importare il file [FILE] a causa del seguente motivo: [REASON] -Riprova più tardi. - </notification> - - <notification - - name="CannotCreateLandmarkNotOwner" - > -Non puoi creare qui un landmark perchè il proprietario di questo terreno non lo consente. - </notification> - - <notification - - name="CannotRecompileSelectObjectsNoScripts" - > -Impossibile fare la 'ricompilazione'. -Seleziona un oggetto con uno script. - </notification> - - <notification - - name="CannotRecompileSelectObjectsNoPermission" - > -Impossibile fare la 'ricompilazione'. - -Seleziona oggetti con script su cui hai i permessi di modifica. - </notification> - - <notification - - name="CannotResetSelectObjectsNoScripts" - > -Impossibile fare 'ripristino'. - -Seleziona oggetti con degli script. - </notification> - - <notification - - name="CannotResetSelectObjectsNoPermission" - > -Impossibile fare 'ripristino'. - -Seleziona oggetti con script su cui hai i permessi di modifica. - </notification> - - <notification - - name="CannotSetRunningSelectObjectsNoScripts" - > -Impossibile mettere 'in esecuzione' gli script. - -Seleziona oggetti con script. - </notification> - - <notification - - name="CannotSetRunningNotSelectObjectsNoScripts" - > -Impossibile impostare script a 'non in esecuzione'. - -Seleziona oggetti con script. - </notification> - - <notification - - name="NoFrontmostFloater" - > -Non c'è nessuna finestra in evidenza (in primo piano) da salvare. - </notification> - - <notification - - name="SeachFilteredOnShortWords" - > -La tua ricerca è stata modificata. -Le parole troppo corte sono state rimosse. - -Ho cercato: [FINALQUERY] - </notification> - - <notification - - name="SeachFilteredOnShortWordsEmpty" - > -Le parole che hai usato per la ricerca sono troppo corte e non è stato possibile iniziare la ricerca. - </notification> - - <notification - - name="CouldNotTeleportReason" - > -Impossibile eseguire il teleport. -[REASON] - </notification> - - <notification - - name="CannotSetLandOwnerNothingSelected" - > -Impossibile impostare il proprietario del terreno: -Nessun terreno selezionato. - </notification> - - <notification - - name="CannotSetLandOwnerMultipleRegions" - > -Impossibile forzare la proprietà del terreno perchè la selezione si estende su diverse regioni. Seleziona una area più piccola e riprova. - </notification> - - <notification - - name="ForceOwnerAuctionWarning" - > -Questo terreno è venduta all'asta. Forzare la proprietà cancellerà l'asta e potrebbe disturbare residenti che abbiano già fatto offerte. -Vuoi forzare la proprietà ? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="CannotContentifyNothingSelected" - > -Impossibile fare la contentificazione: -Nessun terreno selezionato. - </notification> - - <notification - - name="CannotContentifyNoRegion" - > -Impossibile fare la contentificazione: -Nessuna regione selezionata. - </notification> - - <notification - - name="CannotReleaseLandNothingSelected" - > -Impossibile abbandonare il terreno: -Nessun terreno selezionato. - </notification> - - <notification - - name="CannotReleaseLandNoRegion" - > -Impossibile abbandonare il terreno: -Non riesco a trovare la regione. - </notification> - - <notification - - name="CannotBuyLandNothingSelected" - > -Impossibile comprare il terreno: -Nessun terreno selezionato. - </notification> - - <notification - - name="CannotBuyLandNoRegion" - > -Impossibile comprare il terreno: -Non riesco a trovare la regione dove è situato il terreno. - </notification> - - <notification - - name="CannotCloseFloaterBuyLand" - > -Non puoi chiudere la finestra di Acquisto Terreno finchè Second Life non stima il prezzo di questa transazione. - </notification> - - <notification - - name="CannotDeedLandNothingSelected" - > -Impossibile cedere il terreno: -Nessun terreno selezionato. - </notification> - - <notification - - name="CannotDeedLandNoGroup" - > -Impossibile cedere il terreno: -Nessun gruppo selezionato. - </notification> - - <notification - - name="CannotDeedLandNoRegion" - > -Impossibile cedere il terreno: -Non riesco a trovare la regione dove è situato il terreno. -Usa Strumenti -> Segnala Bug per segnalare il problema. - </notification> - - <notification - - name="CannotDeedLandMultipleSelected" - > -Impossibile cedere il terreno: -Hai selezionato più di un terreno. - -Prova a selezionare un solo terreno. - </notification> - - <notification - - name="ParcelCanPlayMedia" - > -Questo posto offre contenuto multimediale in streaming. -Ricevere lo streaming multimediale richiede una connessione internet veloce. - -Vuoi vedere il contenuto multimediale quando è disponibile? -(Puoi cambiare questa opzione in seguito scegliendo Preferenze > Audio & Video.) - <usetemplate - name="okcancelbuttons" - notext="Disabilita" - yestext="Abilita MultiMedia"/> - </notification> - - <notification - - name="CannotDeedLandWaitingForServer" - > -Impossibile cedere il terreno: -Sto aspettando il server per segnalare la proprietà . - -Riprova di nuovo. - </notification> - - <notification - - name="CannotDeedLandNoTransfer" - > -Impossibile cedere il terreno: -La regione [REGION] non consente il trasferimento di terreni. - </notification> - - <notification - - name="CannotReleaseLandWatingForServer" - > -Impossibile abbandonare il terreno: -Sto aspettando il server per aggiornare le informazioni del terreno. - -Riprova fra poco. - </notification> - - <notification - - name="CannotReleaseLandSelected" - > -Impossibile abbandonare il terreno: -Non possiedi tutti i terreni selezionati. - -Seleziona un solo terreno. - </notification> - - <notification - - name="CannotReleaseLandDontOwn" - > -Impossibile abbandonare il terreno: -Non hai i permessi per rilasciare questo terreno. -I terreni di tua proprietà vengono visualizzati in verde. - </notification> - - <notification - - name="CannotReleaseLandRegionNotFound" - > -Impossibile abbandonare il terreno: -Non riesco a trovare la regione dove è situato il terreno. - -Usa Strumenti > Segnala Bug segnalare questo problema. - </notification> - - <notification - - name="CannotReleaseLandNoTransfer" - > -Impossibile abbandonare il terreno: -La regione [REGION] non consente il trasferimento di terreni. - </notification> - - <notification - - name="CannotReleaseLandPartialSelection" - > -Impossibile abbandonare il terreno: -Devi selezionare un terreno intero per rilasciarla. - -Seleziona un terreno intero, oppure dividi prima il tuo terreno. - </notification> - - <notification - - name="ReleaseLandWarning" - > -Stai per rilasciare [AREA] m² di terreno. -Rilasciare questo appezzamento di terreno lo toglierà dalle tue proprietà , ma non ti verranno dati L$. - -Rilasciare questo terreno? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="CannotDivideLandNothingSelected" - > -Impossibile dividere il terreno: - -Non sono stati selezionati terreni. - </notification> - - <notification - - name="CannotDivideLandPartialSelection" - > -Impossibile dividere il terreno: - -Hai selezionato unintero terreno. -Prova a selezionare unappezzamento di terreno. - </notification> - - <notification - - name="LandDivideWarning" - > -La suddivisione di questo terreno lo dividerà in due parti ed ognuna potrà avere le sue impostazioni. Alcune impostazioni verranno reimpostate ai valori iniziali dopo l'operazione. - -Dividi il terreno? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="CannotDivideLandNoRegion" - > -Impossibile dividere il terreno: -Non riesco a trovare la regione dove è situato. - -Usa Strumenti -> Segnala Bug per segnalare il problema. - </notification> - - <notification - - name="CannotJoinLandNoRegion" - > -Impossibile unire il terreno: -Non riesco a trovare la regione dove è situato. - -Usa Strumenti -> Segnala Bug per segnalare il problema. - </notification> - - <notification - - name="CannotJoinLandNothingSelected" - > -Impossibile unire il terreno: -Non hai selezionato terreno. - </notification> - - <notification - - name="CannotJoinLandEntireParcelSelected" - > -Impossibile unire il terreno: -Hai selezionato un solo terreno. - -Devi selezionare il terreno comprendendo entrambi gli appezzamenti. - </notification> - - <notification - - name="CannotJoinLandSelection" - > -Impossibile unire il terreno: -Devi selezionare più di un terreno. - -Devi selezionare il terreno comprendendo entrambi gli appezzamenti. - </notification> - - <notification - - name="JoinLandWarning" - > -Unire questi appezzamenti creerà un terreno più grande a partire da tutti gli appezzamenti che si intersecano nel rettangolo selezionato. -Dovrai reimpostare il nome e le opzioni del nuovo terreno. - -Unisci il terreno? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmNotecardSave" - > -Questa notecard deve essere salvata prima che l'elemento possa essere copiato o visualizzato. Salva la notecard? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmItemCopy" - > -Copia questo elemento nel tuo inventario? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="Copia"/> - </notification> - - <notification - - name="ResolutionSwitchFail" - > -Non sono riuscito a cambiare la risoluzione al valore [RESX] x [RESY] - </notification> - - <notification - - name="ErrorUndefinedGrasses" - > -Errore: Erba sconosciuta: [SPECIES] - </notification> - - <notification - - name="ErrorUndefinedTrees" - > -Errore: Alberi sconosciuti: [SPECIES] - </notification> - - <notification - - name="CannotSaveWearableOutOfSpace" - > -Impossibile salvare '[NAME]' nel file di oggetti indossabili. Dovrai liberare dello spazio sul tuo computer e salvare di nuovo. - </notification> - - <notification - - name="CannotSaveToAssetStore" - > -Impossibile salvare [NAME] nel database centrale. -Normalmente questo problema è temporaneo. Riprova a generare la parte indossabile e a salvarla fra qualche minuto. - -Se questo problema persiste, clicca sul menu a tendina 'Strumenti > Segnala Bug' e fornisci i dettagli sulla tua configurazione di rete. - </notification> - - <notification - - name="YouHaveBeenLoggedOut" - > -Sei stato sconnesso da [SECOND_LIFE]: - [MESSAGE] -Puoi ancora vedere i tuoi IM e la chat cliccando 'Vedi IM & Chat'. Altrimenti, clicca 'Esci' per uscire immediatamente da [SECOND_LIFE]. - <usetemplate - name="okcancelbuttons" - notext="Esci" - yestext="Vedi IM & Chat"/> - </notification> - - <notification - - name="OnlyOfficerCanBuyLand" - > -Impossibile comprare terreno per il gruppo: -Non hai i permessi per comprare il terreno per il tuo gruppo attivo. - </notification> - - <notification - - label="Aggiungi Amico" - name="AddFriend" - > -Gli amici possono autorizzarsi a vedersi l'un l'altro sulla mappa e sapere quando sono collegati. - -Offri l'amicizia a [NAME]? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - label="Aggiungi Amico" - name="AddFriendWithMessage" - > -Gli amici possono autorizzarsi a vedersi l'un l'altro sulla mappa e sapere quando sono collegati. - -Offri l'amicizia a [NAME]? - <form name="form"> - <input name="message" type="text"> -Vorresti essere mio amico? - </input> - <button - - - name="Offer" - text="OK"/> - <button - - name="Cancel" - text="Annulla"/> - </form> - </notification> - - <notification - - name="RemoveFromFriends" - > -Vuoi rimuovere remove [FIRST_NAME] [LAST_NAME] dalla lista dei tuoi amici? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="RemoveMultipleFromFriends" - > -Vuoi rimuovere gli amici selezionati dalla lista dei tuoi amici? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="GodDeleteAllScriptedPublicObjectsByUser" - > -Confermi di volere cancellare tutti gli oggetti scriptati della proprietà di -** [AVATAR_NAME] ** -su tutti gli altri terreni di questa sim? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="GodDeleteAllScriptedObjectsByUser" - > -Confermi la CANCELLAZIONE di TUTTI gli oggetti scriptati posseduti da -** [AVATAR_NAME] ** -su TUTTI I TERRENI di questa sim? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="GodDeleteAllObjectsByUser" - > -Confermi la CANCELLAZIONE di TUTTI gli oggetti (scriptati o no) posseduti da -** [AVATAR_NAME] ** -su TUTTI I TERRENI di questa sim? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="BlankClassifiedName" - > -Devi specificare un nome per il tuo annuncio. - </notification> - - <notification - - name="MinClassifiedPrice" - > -Il prezzo da pagare per essere messo in lista deve essere almeno [MIN_PRICE]L$. - -Introduci un prezzo più alto. - </notification> - - <notification - - name="ConfirmObjectDeleteLock" - > -Almeno uno degli elementi selezionati è bloccato. - -Confermi di voler cancellare questi elementi? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectDeleteNoCopy" - > -Almeno uno degli elementi selezionati non è copiabile. - -Confermi di voler cancellare questi elementi? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectDeleteNoOwn" - > -Non possiedi neanche uno degli oggetti selezionati. - -Confermi di voler cancellare questi elementi? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectDeleteLockNoCopy" - > -Almeno un oggetto è bloccato. -Almeno un oggetto è non copiabile. - -Confermi di voler cancellare questi elementi? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectDeleteLockNoOwn" - > -Almeno un oggetto è bloccato. -Non possiedi neanche un oggetto. - -Confermi di voler cancellare questi elementi? - <usetemplate - name="okcancelbuttons" - notext="Cancella" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectDeleteNoCopyNoOwn" - > -Almeno un oggetto non è copiabile. -Non possiedi neanche un oggetto. - -Confermi di voler cancellare questi elementi? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectDeleteLockNoCopyNoOwn" - > -Almeno un oggetto è bloccato. -Almeno un oggetto è non copiabile. -Non possiedi neanche un oggetto. - -Confermi di voler cancellare questi elementi? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectTakeLock" - > -Almeno un oggetto è bloccato. - -Confermi di voler prendere questi elementi? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectTakeNoOwn" - > -Non possiedi tutti gli oggetti che stai prendendo. -Se continui, verranno applicate i permessi per il prossimo proprietario e di conseguenza potrebbero venire ristrette le tue possibilità di modificarli o di copiarli. - -Confermi di voler prendere questi elementi? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectTakeLockNoOwn" - > -Almeno un oggetto è bloccato. -Non possiedi tutti gli oggetti che stai prendendo. -Se continui, verranno applicate i permessi per il prossimo proprietario e di conseguenza potrebbero venire ristrette le tue possibilità di modificarli o di copiarli. -Puoi comunque prendere gli oggetti selezionati. - -Confermi di voler prendere questi elementi? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="CantBuyLandAcrossMultipleRegions" - > -Impossibile comprare il terreno perchè la selezione comprende più regioni. - -Seleziona un'area più piccola e riprova. - </notification> - - <notification - - name="DeedLandToGroup" - > -Cedendo questo terreno al gruppo sara richiesto ai componenti di avere e di mantenere il terreno con un credito sufficiente. -Il prezzo di acquisto del terreno non è rifondibile al proprietario. -Se una terreno ceduto al gruppo viene venduto, il prezzo di vendita verrà diviso in parti uguali fra i membri del gruppo. - -Cedi questo terreno di [AREA] m² al gruppo '[GROUP_NAME]'? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="DeedLandToGroupWithContribution" - > -Cedendo questo terreno al gruppo sara richiesto hai componenti di avere e di mantenere il terreno con un credito sufficiente. -La cessione include un contributo simultaneo di terreno al gruppo da '[FIRST_NAME] [LAST_NAME]'. -Il prezzo di acquisto del terreno non è rifondibile al proprietario. -Se una terreno ceduto al gruppo viene venduto, il prezzo di vendita viene diviso in parti uguali fra i membri del gruppo. - -Cedi questo terreno di [AREA] m² al gruppo '[GROUP_NAME]'? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="DisplaySetToSafe" - > -Le impostazioni dello schermo sono state impostate a valori di sicurezza perchè hai specificato l'opzione -safe. - </notification> - - <notification - - name="DisplaySetToRecommended" - > -Le impostazioni dello schermo sono state impostate a valori ottimali basati sulla tua configurazione di sistema. - </notification> - - <notification - - name="ErrorMessage" - > -[ERROR_MESSAGE] - </notification> - - <notification - - name="AvatarMoved" - > -La tua locazione [TYPE] non è al momento disponibile. -[HELP] -Il tuo avatar è stato spostato in una regione vicina. - </notification> - - <notification - - name="ClothingLoading" - > -I tuoi vestiti stanno ancora scaricandosi. -Puoi usare [SECOND_LIFE] normalmente e gli altri utenti ti vedranno correttamente. - <form name="form"> - <ignore name="ignore" - text="se gli abiti ci impiegano troppo tempo a scaricarsi"/> - </form> - </notification> - - <notification - - name="FirstRun" - > -L'installazione di [SECOND_LIFE] è completata. - -Se questa è la prima volta che usi [SECOND_LIFE], avari bisogno di creare un account prima di poterti collegare. -Vai su www.secondlife.com per creare un nuovo account? - <usetemplate - name="okcancelbuttons" - notext="Continua" - yestext="Nuovo Account..."/> - </notification> - - <notification - - name="LoginPacketNeverReceived" - > -Ci sono stati problemi durante la connessione. Potrebbero esserci problemi con la tua connessione ad internet oppure con i server di Second Life. - -Puoi controllare la tua connessione internet e riprovare fra qualche minuto, oppure cliccare su Aiuto per collegarti al nostro sito di supporto, oppure cliccare teleporta per cercare di teleportarti a casa. - <form name="form"> - <button - - - name="OK" - text="OK"/> - <button - - name="Help" - text="Aiuto"/> - <button - - name="Teleport" - text="Teleportati"/> - </form> - </notification> - - <notification - - name="WelcomeChooseSex" - > -Il tuo avatar apparirà fra un attimo. - -Usa le frecce per camminare. -Premi F1 in qualunque momento per aiuto o per apprendere altre cose su [SECOND_LIFE]. -Scegli l'avatar maschile o femminile. Puoi sempre cambiare idea più tardi. - <usetemplate - name="okcancelbuttons" - notext="Femminile" - yestext="Maschile"/> - </notification> - - <notification - - name="NotEnoughCurrency" - > -[NAME] [PRICE]L$ Non hai abbastanza L$ per farlo. - </notification> - - <notification - - name="GrantedModifyRights" - > -Ti sono stati accordati i privilegi di modifica degli oggetti di [FIRST_NAME] [LAST_NAME]. - </notification> - - <notification - - name="RevokedModifyRights" - > -Ti sono stati revocati i privilegi di modifica degli oggetti di [FIRST_NAME] [LAST_NAME]. - </notification> - - <notification - - name="FlushMapVisibilityCaches" - > -Questo reinizializzerà la cache della mappa di questa regione. -Funzione usata solo per il debug. -(Per la produzione, attendere 5 minuti, dopo di che tutte le mappe di ognuno si aggiorneranno dopo la loro riconnessione) - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="OnlyCopyContentsOfSingleItem" - > -Impossibile copiare il contenuto di più di un elemento alla volta. -Scegli solo un oggetto e riprova. - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="KickUsersFromRegion" - > -Teleporta a casa tutti i residenti in questa regione? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="EstateObjectReturn" - > -Confermi di voler restituire gli oggetti di proprietà di [USER_NAME] ? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="InvalidTerrainBitDepth" - > -Impossibile impostare le texture della regione: -La texture del terreno [TEXTURE_NUM] ha una profondità di bit pari a [TEXTURE_BIT_DEPTH] non corretta. - -Sostituisci la texture [TEXTURE_NUM] con una a 24-bit 512x512 o una immagine più piccola e quindi clicca nuovamente su "Applica". - </notification> - - <notification - - name="InvalidTerrainSize" - > -Impossibile impostare le texture di regione: -La texture del terreno [TEXTURE_NUM] è troppo grande se a [TEXTURE_SIZE_X]x[TEXTURE_SIZE_Y]. - -Sostituisci la texture [TEXTURE_NUM] con una a 24-bit 512x512 oppure con una immagine più piccola e quindi clicca di nuovo "Applica". - </notification> - - <notification - - name="RawUploadStarted" - > -Importazione iniziata. Può impiegare fino a due minuti, a seconda della velocità della tua connessione. - </notification> - - <notification - - name="ConfirmBakeTerrain" - > -Vuoi veramente impostare come base il terreno corrente, impostarlo come riferimento per i limiti dei rialzi/abbassamenti di tutto il territorio ed il suo valore impostato come base per lo strumento 'Ripristina'? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="MaxAllowedAgentOnRegion" - > -Puoi avere al massimo [MAX_AGENTS] residenti consentiti. - </notification> - - <notification - - name="MaxBannedAgentsOnRegion" - > -Puoi avere al massimo [MAX_BANNED] residenti bloccati. - </notification> - - <notification - - name="MaxAgentOnRegionBatch" - > -E' fallito il tentativo di aggiungere [NUM_ADDED] avatar: -Eccede il [MAX_AGENTS] [LIST_TYPE] limite di [NUM_EXCESS]. - </notification> - - <notification - - name="MaxAllowedGroupsOnRegion" - > -Puoi avere al massimo [MAX_GROUPS] gruppi. - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="Imposta come predefinito"/> - </notification> - - <notification - - name="MaxManagersOnRegion" - > -Puoi avere al massimo [MAX_MANAGER] manager della proprietà immobiliare. - </notification> - - <notification - - name="OwnerCanNotBeDenied" - > -Impossibile aggiungere i proprietari della proprietà immobiliare alla lista dei residenti bloccati. - </notification> - - <notification - - name="CanNotChangeAppearanceUntilLoaded" - > -Impossibile cambiare l'aspetto fisico finchè gli abiti e i vestiti non sono caricati. - </notification> - - <notification - - name="ClassifiedMustBeAlphanumeric" - > -Il nome del tuo annuncio deve iniziare con una lettera da A a Z oppure con un numero. -Non sono consentiti caratteri di punteggiatura. - </notification> - - <notification - - name="CantSetBuyObject" - > -Impossibile impostare 'Compra l'oggetto', perchè l'oggetto non è in vendita. -Imposta l'oggetto per la vendita e riprova. - </notification> - - <notification - - name="FinishedRawDownload" - > -Hai terminato di scaricare il file del terreno nella cartella: -[DOWNLOAD_PATH]. - </notification> - - <notification - - name="DownloadWindowsMandatory" - > -E' disponibile una nuova versione di [SECOND_LIFE]. -[MESSAGE] -Devi scaricare questo aggiornamento per usare [SECOND_LIFE]. - <usetemplate - name="okcancelbuttons" - notext="Esci" - yestext="Scarica l'aggiornamento"/> - </notification> - - <notification - - name="DownloadWindows" - > -E' disponibile una versione aggiornata di [SECOND_LIFE]. -[MESSAGE] -Questo aggiornamento non è obbligatorio, ma ti suggeriamo di installarlo per migliorarne le prestazioni e la stabilità . - <usetemplate - name="okcancelbuttons" - notext="Continua" - yestext="Scarica l'aggiornamento"/> - </notification> - - <notification - - name="DownloadWindowsReleaseForDownload" - > -E' disponibile una versione aggiornata di [SECOND_LIFE]. -[MESSAGE] -Questo aggiornamento non è obbligatorio, ma ti suggeriamo di installarlo per migliorarne le prestazioni e la stabilità . - <usetemplate - name="okcancelbuttons" - notext="Continua" - yestext="Scarica l'aggiornamento"/> - </notification> - - <notification - - name="DownloadMacMandatory" - > -E' disponibile una nuova versione di [SECOND_LIFE]. -[MESSAGE] -Devi scaricare questo aggiornamento per usare [SECOND_LIFE]. - -Vuoi avviarne lo scaricamento nella tua cartella applicazioni? - <usetemplate - name="okcancelbuttons" - notext="Esci" - yestext="Scarica l'aggiornamento"/> - </notification> - - <notification - - name="DownloadMac" - > -E' disponibile una versione aggiornata di [SECOND_LIFE]. -[MESSAGE] -Questo aggiornamento non è obbligatorio, ma ti suggeriamo di installarlo per migliorarne le prestazioni e la stabilità . - -Vuoi avviarne lo scaricamento nella tua cartella applicazioni? - <usetemplate - name="okcancelbuttons" - notext="Continua" - yestext="Scarica l'aggiornamento"/> - </notification> - - <notification - - name="DownloadMacReleaseForDownload" - > -E' disponibile una versione aggiornata di [SECOND_LIFE]. -[MESSAGE] -Questo aggiornamento non è obbligatorio, ma ti suggeriamo di installarlo per migliorarne le prestazioni e la stabilità . - -Vuoi avviarne lo scaricamento nella tua cartella applicazioni? - <usetemplate - name="okcancelbuttons" - notext="Continua" - yestext="Scarica l'aggiornamento"/> - </notification> - - <notification - - name="DeedObjectToGroup" - > -La cessione di questo oggetto farà in modo che il gruppo: -* Riceva i L$ pagati all'oggetto - <usetemplate - ignoretext="Quando cedi oggetti ai gruppi" - name="okcancelignore" - notext="Annulla" - yestext="Cedi"/> - </notification> - - <notification - - name="WebLaunchExternalTarget" - > -Apri il tuo browser web per vedere questo contenuto? - <usetemplate - ignoretext="Quando apri il browser di sistema per vedere una pagina web" - name="okcancelignore" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchJoinNow" - > -Vuoi andare su www.secondlife.com per gestire il tuo account? - <usetemplate - ignoretext="Quando lanci il browser web per gestire il tuo account" - name="okcancelignore" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchBugReport101" - > -Visita la Wiki di [SECOND_LIFE] per imparare a segnalare un bug correttamente. - <usetemplate - ignoretext="Quando lanci il browser web per vedere la Wiki di segnalazione bug base" - name="okcancelignore" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchSecurityIssues" - > -Visita la Wiki di [SECOND_LIFE] per i dettagli su come segnalare un problema di sicurezza. - <usetemplate - ignoretext="Quando lanci il browser web per vedere la Wiki sui problemi di sicurezza" - name="okcancelignore" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchQAWiki" - > -Visita il controllo di qualità Wiki [SECOND_LIFE]. - <usetemplate - ignoretext="Quando lanci il browser web per vedere il controllo di qualità Wiki" - name="okcancelignore" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchPublicIssue" - > -Visita il registro pubblico dei problemi di [SECOND_LIFE], dove puoi segnalare bug ed altri problemi. - <usetemplate - ignoretext="Quando lanci il browser web per vedere il registro pubblico dei problemi" - name="okcancelignore" - notext="Annulla" - yestext="Vai alla pagina"/> - </notification> - - <notification - - name="WebLaunchPublicIssueHelp" - > -Visita la Wiki di [SECOND_LIFE] per le informazioni su come usare il registro pubblico dei problemi. - <usetemplate - ignoretext="Quando lanci il browser web per vedere la Wiki del registro pubblico dei problemi" - name="okcancelignore" - notext="Annulla" - yestext="Vai alla pagina"/> - </notification> - - <notification - - name="WebLaunchSupportWiki" - > -Vai al blog ufficiale Linden, per le ultime notizie ed informazioni. - <usetemplate - ignoretext="Quando lanci il browser web per vedere il blog" - name="okcancelignore" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchLSLGuide" - > -Vai alla guida dello scripting per l'aiuto sullo scripting? - <usetemplate - ignoretext="Quando lanci il browser web per vedere la guida dello scripting" - name="okcancelignore" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchLSLWiki" - > -Vai al portale LSL per aiuto sullo scripting? - <usetemplate - ignoretext="Quando lanci il browser web per vedere il portale LSL" - name="okcancelignore" - notext="Annulla" - yestext="Vai alla pagina"/> - </notification> - - <notification - - name="ReturnToOwner" - > -Confermi di voler restituire gli oggetti selezionati ai loro proprietari? Gli oggetti trasferibili ceduti al gruppo, verranno restituiti ai proprietari precedenti. - -*ATTENZIONE* Gli oggetti ceduti non trasferibili verranno cancellati! - <usetemplate - ignoretext="Quando restituisci gli oggetti ai loro proprietari" - name="okcancelignore" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="GroupLeaveConfirmMember" - > -Sei attualmente un membro del gruppo [GROUP]. -Vuoi lasciare il gruppo? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmKick" - > -Vuoi VERAMENTE espellere tutti gli utenti dalla griglia? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="Espelli tutti gli utenti"/> - </notification> - - <notification - - name="MuteLinden" - > -Mi dispiace, ma non puoi mutare un Linden. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - label="Non è stato possibile mutare l'oggetto per nome" - name="MuteByNameFailed" - > -Hai già mutato questo nome. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="RemoveItemWarn" - > -Sebbene consentita, la cancellazione di contenuti può danneggiare l'oggetto. -Vuoi cancellare quell'elemento? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="CantOfferCallingCard" - > -Impossibile offrire un biglietto da visita in questo momento. Riprova fra poco. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="CantOfferFriendship" - > -Impossibile offrire l'amicizia in questo momento. Riprova fra poco. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="BusyModeSet" - > -Impostata la modalità 'Occupato'. -La chat e i messaggi verranno nascosti. I messaggi IM riceveranno la risposta impostata per la modalità 'Occupato'. Tutte le offerte di teleport verranno declinate. Tutte le offerte di inventario andranno nel cestino. - <usetemplate - ignoretext="Quando si imposta la modalità occupato" - name="okignore" - yestext="OK"/> - </notification> - - <notification - - name="JoinedTooManyGroupsMember" - > -Sei membro di troppi gruppi per poterti unire ad uno nuovo. -Abbandona almeno un gruppo prima di unirti a questo, oppure declina l'offerta. -Per abbandonare un gruppo seleziona l'opzione 'Gruppi..' dal menu 'Modifica'. -[NAME] ti ha invitato ad unirti ad un gruppo come membro. - -[INVITE] - <usetemplate - name="okcancelbuttons" - notext="Declino" - yestext="Unisciti"/> - </notification> - - <notification - - name="KickUser" - > -Espelli questo utente con quale messaggio? - <form name="form"> - <input name="message" type="text"> -Un amministratore ti ha disconnesso. - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Annulla"/> - </form> - </notification> - - <notification - - name="KickAllUsers" - > -Espelli tutti quelli che sono sulla griglia con quale messaggio? - <form name="form"> - <input name="message" type="text"> -Un amministratore ti ha disconnesso. - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Annulla"/> - </form> - </notification> - - <notification - - name="FreezeUser" - > -Immobilizza questo utente con quale messaggio? - <form name="form"> - <input name="message" type="text"> -Sei stato immobilizzato. Non puoi muoverti o usare la chat. Un amministratore ti contatterà con un messaggio (IM). - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Annulla"/> - </form> - </notification> - - <notification - - name="UnFreezeUser" - > -Smobilizza questo utente con quale messaggio? - <form name="form"> - <input name="message" type="text"> -Non sei più immobilizzato. - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Annulla"/> - </form> - </notification> - - <notification - - name="OfferTeleport" - > -Offri un teleport nel posto dove sei con il seguente messaggio? - <form name="form"> - <input name="message" type="text"> -Raggiungimi a [REGION] - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Annulla"/> - </form> - </notification> - - <notification - - name="OfferTeleportFromGod" - > -Vuoi trasportare divinamente l'utente nel posto dove sei? - <form name="form"> - <input name="message" type="text"> -Raggiungimi in [REGION] - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Annulla"/> - </form> - </notification> - - <notification - - name="TeleportFromLandmark" - > -Confermi di volerti teleportare? - <usetemplate - ignoretext="Quando ti teleporti da un landmark nell'inventario" - name="okcancelignore" - notext="Annulla" - yestext="Teleportati"/> - </notification> - - <notification - - label="Manda un messaggio a tutti nella tua proprietà " - name="MessageEstate" - > -Scrivi un annuncio breve che verrà mandato a tutti quelli che sono in questo momento nella tua proprietà . - <form name="form"> - <input name="message" type="text"/> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Annulla"/> - </form> - </notification> - - <notification - - label="Cambia la tipologia della proprietà Linden" - name="ChangeLindenEstate" - > -Stai per cambiare la tipologia della proprietà Linden (mainland, griglia minorenni, orientamento, ecc.). - -Questo è ESTREMAMENTE PERICOLOSO perchè può cambiare radicalmente l'esperienza degli utenti. Sulla mainland cambierà migliaia di regioni e produrrà seri problemi ai vari server. - -Confermi? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - label="Cambia la tipologia Linden di accesso alla proprietà " - name="ChangeLindenAccess" - > -Stai per cambiare la lista di accesso per una proprietà Linden (mainland, griglia minorenni, orientamento, ecc.). - -Questo è PERICOLOSO e dovrebbe essere fatto soltanto per poter lanciare il programma che consente agli oggetti/L$ di essere trasferiti fra griglie diverse. -Cambierà migliaia di regioni e produrrà seri problemi ai vari server. - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - label="Seleziona la proprietà " - name="EstateAllowedAgentAdd" - > -Aggiungi alla lista di accesso solo per questa proprietà oppure per [ALL_ESTATES]? - <usetemplate - canceltext="Annulla" - name="yesnocancelbuttons" - notext="Tutte le proprietà " - yestext="Questa proprietà "/> - </notification> - - <notification - - label="Seleziona la proprietà " - name="EstateAllowedAgentRemove" - > -Rimuovi dalla lista di accesso solo per questa proprietà oppure per [ALL_ESTATES]? - <usetemplate - canceltext="Annulla" - name="yesnocancelbuttons" - notext="Tutte le proprietà " - yestext="Questa proprietà "/> - </notification> - - <notification - - label="Seleziona la proprietà " - name="EstateAllowedGroupAdd" - > -Aggiungi al gruppo di accesso solo per questa proprietà oppure per [ALL_ESTATES]? - <usetemplate - canceltext="Annulla" - name="yesnocancelbuttons" - notext="Tutte le proprietà " - yestext="Questa proprietà "/> - </notification> - - <notification - - label="Seleziona la proprietà " - name="EstateAllowedGroupRemove" - > -Rimuovi dal gruppo di accesso solo per questa proprietà oppure per [ALL_ESTATES]? - <usetemplate - canceltext="Annulla" - name="yesnocancelbuttons" - notext="Tutte le proprietà " - yestext="Questa proprietà "/> - </notification> - - <notification - - label="Seleziona la proprietà " - name="EstateBannedAgentAdd" - > -Rifiuta l'accesso solo a questa proprietà oppure per [ALL_ESTATES]? - <usetemplate - canceltext="Annulla" - name="yesnocancelbuttons" - notext="Tutte le proprietà " - yestext="Questa proprietà "/> - </notification> - - <notification - - label="Seleziona la proprietà " - name="EstateBannedAgentRemove" - > -Rimuovi questo residente dalla lista dei residenti bloccati nell'accesso solo a questa proprietà oppure per [ALL_ESTATES]? - <usetemplate - canceltext="Annulla" - name="yesnocancelbuttons" - notext="Tutte le proprietà " - yestext="Questa proprietà "/> - </notification> - - <notification - - label="Seleziona la proprietà " - name="EstateManagerAdd" - > -Aggiungi come gestore della proprietà solo a questa proprietà oppure per [ALL_ESTATES]? - <usetemplate - canceltext="Annulla" - name="yesnocancelbuttons" - notext="Tutte le proprietà " - yestext="Questa proprietà "/> - </notification> - - <notification - - label="Seleziona la proprietà " - name="EstateManagerRemove" - > -Rimuovi come gestore della proprietà solo per questa proprietà oppure per [ALL_ESTATES]? - <usetemplate - canceltext="Annulla" - name="yesnocancelbuttons" - notext="Tutte le proprietà " - yestext="Questa proprietà "/> - </notification> - - <notification - - label="Conferma espulsione" - name="EstateKickUser" - > -Espelli [EVIL_USER] da questa proprietà ? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="EstateChangeCovenant" - > -Confermi di voler cambiare il Regolamento della proprietà ? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="ProblemImportingEstateCovenant" - > -Problemi nell'importazione del regolamento della proprietà . - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="ProblemAddingEstateManager" - > -Si sono riscontrati problemi nell'aggiungere un nuovo manager della proprietà . Una o più proprietà potrebbero avere la lista dei manager piena. - </notification> - - <notification - - name="ProblemAddingEstateGeneric" - > -Si sono riscontrati problemi nell'aggiunta a questo elenco della proprietà . Una o più proprietà potrebbe avere una lista piena. - </notification> - - <notification - - name="UnableToLoadNotecard" - > -Impossibile caricare la notecard in questo momento. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="NotAllowedToViewNotecard" - > -Permessi insufficienti per vedere la notecard associata con l'asset ID richiesto. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="MissingNotecardAssetID" - > -L'asset ID della notecard è mancante dal database. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="PublishClassified" - > -Ricorda: le tariffe per gli annunci non sono rimborsabili. - -Pubblica questo annuncio adesso per [AMOUNT]L$? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - - - - - <notification - - label="Conferma il riavvio" - name="ConfirmRestart" - > -Vuoi veramente far ripartire la regione in 2 minuti? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - label="Manda un messaggio a tutti in questa regione" - name="MessageRegion" - > -Scrivi un breve annuncio che verrà mandato a tutti in questa regione. - <form name="form"> - <input name="message" type="text"/> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Annulla"/> - </form> - </notification> - - <notification - - label="Blocca il terraforming" - name="HelpRegionBlockTerraform" - > -Se questa casella è selezionata, i proprietari dei terreni non potranno terraformare il loro terreno indipendentemente dall'impostazione locale di 'Modifica Terreno'. - -Impostazione base: spenta - </notification> - - <notification - - label="Blocca il volo" - name="HelpRegionBlockFly" - > -Se questa casella è selezionata, le persone non potranno volare in questa regione indipendentemente dall'impostazione locale di 'Volo'. - -Impostazione base: spenta - </notification> - - <notification - - label="Consenti Danni" - name="HelpRegionAllowDamage" - > -Se questa casella è selezionata, il sistema del livello vitale su tutti i terreni sarà abilitato indipendentemente dalle impostazioni locali. Se la casella è lasciata vuota i proprietari dei singoli terreni individuali potranno comunque essere in grado di attivare il sistema di livello vitale sulla loro terra. - -Impostazione base: spenta - </notification> - - <notification - - label="Limite avatar" - name="HelpRegionAgentLimit" - > -Imposta il massimo numero di avatar consentito in questa regione. -Le prestazioni possono variare a seconda del numero totale di avatar presenti. - -Impostazione base: 40 - </notification> - - <notification - - label="Coefficiente bonus oggetti" - name="HelpRegionObjectBonus" - > -Il coefficiente bonus oggetti è un moltiplicatore per i prim consentiti su ogni terreno. -Si può specificare da 1 a 10. Impostandolo ad 1, ogni terreno di 512m² consentià 117 oggetti. Impostandolo a 2, ogni terreno di 512m² ne consentirà 234 o il doppio, e così via. Il numero complessivo di oggetti consentiti per una regione rimane comunque 15.000 indipendentemente dal coefficiente di bonus. -Una volta impostato, fai attenzione che abbassare il bonus può causare la cancellazione o restituzione di oggetti. - -Impostazione base: 1.0 - </notification> - - - - <notification - - label="Limita gli urti" - name="HelpRegionRestrictPushObject" - > -Questa casella limita per tutta la regione i permessi di urto (spinte). -Se abilitata, i residenti possono essere urtati/spinti solo da sè stessi o dal proprietario del terreno. -(La spinta si riferisce all'uso della funzione LSL llPushObject()) - -Impostazione base: spenta - </notification> - - <notification - - label="Unisci/Dividi terreno" - name="HelpParcelChanges" - > -Questa casella imposta se i terreni non posseduti dal possessore della proprietà immobiliare possano essere unite o divise. -Se questa opzione è deselezionata: - * Soltanto i possessori o i manager della proprietà immobiliare possono unire o dividere i terreni. - * Possono solo unire o dividere terreni che appartengono al proprietario, o ad un gruppo dove hanno poteri appropriati. -Se questa opzione è selezionata: - * Tutti i proprietari del terreno possono unire o dividere i terreni che possiedono. - * Per i terreni di proprietà del gruppo, solo coloro con poteri appropriati possono unire o dividere il terreno. - -Impostazione base: Selezionata - </notification> - - <notification - - label="Non mostrare in ricerca" - name="HelpRegionSearch" - > -Selezionare questa casella bloccherà i proprietari dei terreni dal mettere in lista i loro terreni nella ricerca - -Impostazione base: spenta - </notification> - - <notification - - label="Cambiato il contenuto Mature" - name="RegionMaturityChange" - > -La classificazione del contenuto Mature di questa regione è stata aggiornata. -Può essere necessario un po' di tempo prima che questo cambiamento sia visibile sulle mappe. - </notification> - - <notification - - label="Rivendita dei Terreni" - name="HelpRegionLandResell" - > -I possessori e i manager della proprietà immobiliare possono vendere tutte le terre di cui sono proprietari. -Se questa opzione è lasciata deselezionata i compratori non potranno rivendere le proprie terre in questa regione. -Se questa opzione è selezionato i compratori possono rivendere i loro terreni in questa regione. - -Impostazione base: Non consentire - </notification> - - <notification - - label="Disabilita gli script" - name="HelpRegionDisableScripts" - > -Se le prestazioni di una sim sono basse, probabilmente è colpa di uno script. Apri la 'barra delle statistiche' (Ctrl-Shift-1). Controlla il FPS della fisica del simulatore. -Se è più basso di 45, apri il pannello "Tempi" collocato ln fondo alla 'barra delle statistiche' -Se il tempo per gli script è di 25 ms o più alto, clicca sul bottone 'individua script pesanti'. Ti verrà dato il nome e l'ubicazione degli script che probabilmente causano una cattiva prestazione. - -Selezionare la casella della disabilitazione script e, premendo il bottone applica, disabilitare temporaneamente tutti gli script in questa regione. Questo è necessario per poterti recare verso l'ubicazione dello script definito nell'elenco come 'script più pesante'. Una volta arrivato all'oggetto, studia lo script per capire se è quello che sta causando il problema. Potresti dover contattare il proprietario dello script oppure cancellare o restituire l'oggetto. -Disabilita la casella e quindi premere applica per riattivare gli script nella regione. - -Impostazione base: spento - </notification> - - <notification - - label="Disabilita le collisioni" - name="HelpRegionDisableCollisions" - > -Quando le prestazioni della sim sono basse, può darsi che la colpa sia di oggetti fisici. -Apri la 'barra delle statistiche' (Ctrl-Shift-1). -Controlla il FPS della fisica del simulatore. -Se è più basso di 45, apri il pannello "Tempi" collocato in fondo alla 'barra delle statistiche'. -Se il tempo della sim (fisica) risulta 20 ms o più, clicca sul bottone "mostra gli oggetti che collidono di più". -Ti verranno dati il nome e l'ubicazione degli oggetti fisici che possono causare una cattiva prestazione. - -Selezionare la casella disabilita collisioni e, premendo il bottone applica, disabilitare temporaneamente le collisioni oggetto-oggetto. Questo è necessario per poterti recare verso l'ubicazione dell'oggetto che sta collidendo eccessivamente. -Una volta arrivato sul posto, studia l'oggetto - sta collidendo costantemente con altri oggetti? Potresti dover contattare il proprietario dell'oggetto oppure cancellare o restituire l'oggetto. -Disabilitare la casella disabilita collisioni e quindi premere applica per riattivare le collisioni nella regione. - -Impostazione base: spento - </notification> - - <notification - - label="Disabilita la fisica" - name="HelpRegionDisablePhysics" - > -Disabilitare la fisica è simile alla disabilitazione delle collisioni eccetto che tutte le simulazioni fisiche sono disabilitate. Questo significa che non solo gli oggetti cessano di collidere, ma anche gli avatar non riusciranno più a muoversi. - -Questo dovrebbe essere utilizzato solo se il 'disabilita collisioni' non restituisce abbastanza prestazioni alla regione dopo aver cercato un problema fisico o un oggetto che collide eccessivamente. - -Fai attenzione a riabilitare la fisica quando hai terminato, altrimenti nessun avatar riuscirà a muoversi. - -Impostazione base: spento - </notification> - - <notification - - label="Oggetti con maggiori collisioni" - name="HelpRegionTopColliders" - > -Mostra una lista di oggetti che sperimentano la maggior quantità di potenziali collisioni oggetto-oggetto. Questi oggetti possono abbassare le prestazioni. -Seleziona Vista > Barra Statistiche e guarda sotto Simulatore > Tempi > Tempo Sim (fisica) per controllare se un tempo di più di 20 ms è impiegato nella fisica. - </notification> - - <notification - - label="Script pesanti" - name="HelpRegionTopScripts" - > -Mostra una lista degli oggetti che occupano la maggior parte del loro tempo eseguendo script LSL. Questi oggetti possono abbassare le prestazioni. -Seleziona Vista > Barra statistiche e guarda sotto Simulatore > Tempi > Tempo Script per controllare se un tempo di più di 20 ms è impiegato per gli script. - </notification> - - <notification - - label="Fai ripartire la regione" - name="HelpRegionRestart" - > -Fai ripartire i processi del server che gestisce questa regione dopo un avvertimento di due minuti. Tutti i residenti nella regione verranno scollegati. -La regione salverà i suoi dati e dovrebbe tornare attiva entro 90 secondi. - -Far ripartire la regione non risolverà i problemi maggiori delle prestazioni e dovrebbe essere fatta solo se necessario. - </notification> - - <notification - - label="Altezza dell'acqua" - name="HelpRegionWaterHeight" - > -Questa è l'altezza in metri del mare dove deve apparire l'acqua. -Se questa impostazione è diversa da 20 e l'acqua circonda il confine di terra o acqua della tua sim, vedrai una discontinuità fra la sim e il mare. - -Impostazione base: 20 - </notification> - - <notification - - label="Sollevamento terreno" - name="HelpRegionTerrainRaise" - > -Questa è l'ulteriore altezza in metri entro la quale i proprietari di appezzamenti possono alzare il loro terreno partendo dall'altezza preimpostata. - -Impostazione base: 4 - </notification> - - <notification - - label="Abbassamento terreno" - name="HelpRegionTerrainLower" - > -Questa è l'ulteriore altezza in metri entro la quale i proprietari di appezzamenti possono abbassare il loro terreno partendo dall'altezza preimpostata. - -Impostazione base: -4 - </notification> - - <notification - - label="Importa terreno RAW" - name="HelpRegionUploadRaw" - > -Questo bottone importa un file .RAW nella regione in cui sei. -Il file deve avere le corrette dimensioni (RGB, 256x256) e 13 canali. Il modo migliore per creare un file di terreno è di scaricare un file RAW esistente. Un buon primo passo è quello di modificare il canale del rosso (altezza della terra), ed importarlo. - -L'importazione può impiegare fino a 45 secondi. Nota che importare un file del terreno *non muoverà * gli oggetti che sono sulla sim, soltanto il terreno stesso e i permessi associati agli appezzamenti. -Questo potrebbe far sì che gli oggetti vadano sotto terra. - -Per maggiori informazioni sulle modifiche dei campi dell'altezza della regione, consulta il tasto F1 Aiuto. - </notification> - - <notification - - label="Scarica il terreno RAW" - name="HelpRegionDownloadRaw" - > -Questo bottone scarica un file che contiene i dati dell'altezza, delle dimensioni, dello stato di vendita del terreno e di alcuni permessi degli appezzamenti di questa regione. -Aprendo questo file in un programma come Photoshop devi specificare le dimensioni che sono: RGB, 256x256 con 13 channels. Questo file del terreno non può essere aperto in nessun altro modo. - -Per maggiori informazioni sulle modifiche dei campi dell'altezza della regione, consulta il tasto F1 Aiuto. - </notification> - - <notification - - label="Usa il sole della proprietà " - name="HelpRegionUseEstateSun" - > -Questa casella fa si che la posizione del sole in questa regione coincida con la posizione del sole nel resto della proprietà . - -Impostazione base: attivo - </notification> - - <notification - - label="Sole fisso" - name="HelpRegionFixedSun" - > -Questa casella imposta la posizione del sole ad un valore definito nel cursore delle fasi e fa in modo che il sole non si muova. - -Impostazione base: spento - </notification> - - <notification - - label="Crea il Terreno" - name="HelpRegionBakeTerrain" - > -Questo bottone salva l'attuale forma del terreno come impostazione base per la regione. Una volta creato, il terreno può riassumere la forma base ogni volta che che tu o altri dovessero usare l'opzione 'Reimposta' della modifica del terreno. -Il terreno creato è anche il punto intermedio dei limiti di sollevamento ed abbassamento terreno. - </notification> - - <notification - - label="Manager della proprietà " - name="HelpEstateEstateManager" - > -Un manager della proprietà è un residente a cui avete delegato il controllo di una regione o di una proprietà . Un manager della proprietà può cambiare qualunque impostazione in queste finestre, eccezion fatta per l'importazione, l'esportazione e la creazione del terreno. In particolare, possono consentire o bloccare l'accesso ai residenti nella tua proprietà . - -I manager della proprietà possono essere soltanto aggiunti o rimossi dal possessore della proprietà e non possono farlo loro l'un l'altro. Scegli solo residenti di cui ti fidi come manager della proprietà , dato che tu sarai responsabile per le loro azioni. - </notification> - - <notification - - label="Usa l'ora globale" - name="HelpEstateUseGlobalTime" - > -Questa casella fa si che il sole nella vostra proprietà segua la stessa posizione della mainland Linden. - -Impostazione base: on - </notification> - - <notification - - label="Sole Fisso" - name="HelpEstateFixedSun" - > -Questa casella imposta la posizione del sole su una posizione del cursore di Fase del sole e lo blocca in quella posizione. - </notification> - - <notification - - label="Accesso Pubblico" - name="HelpEstateExternallyVisible" - > -Questa casella permette ai residenti che sono su altre regioni, di entrare in questa proprietà anche se non sono nella lista di accesso. - -Impostazione base: attivo - </notification> - - <notification - - label="Consenti teleport diretto" - name="HelpEstateAllowDirectTeleport" - > -Se selezionato, consente ai residenti di teleportarsi direttamente in qualunque punto di questa proprietà . -Se deselezionato, i residenti si teleporteranno al più vicino snodo. - -Impostazione base: spento - </notification> - - <notification - - label="Consenti accesso" - name="HelpEstateAllowResident" - > -L'accesso a questa proprietà verrà limitata solo ai residenti ed ai gruppi elencati più sotto. Questa impostazione è disponibile solo se l'accesso pubblico è deselezionato. - </notification> - - <notification - - label="Consenti Accesso di gruppo" - name="HelpEstateAllowGroup" - > -L'accesso a questa proprietà verrà limitata solo ai gruppi qui elencati e ai residenti loro appartenenti. Questa impostazione è disponibile soltanto se l'accesso pubblico è deselezionato. - </notification> - - <notification - - label="Indirizzo di posta email per le segnalazioni di abuso" - name="HelpEstateAbuseEmailAddress" - > -Impostando qui un indirizzo di posta elettronica valido, farà si che le segnalazioni di abuso, fatte su questa proprietà , siano mandate a quell'indirizzo. -Lasciandolo vuoto causerà l'invio delle segnalazioni di abuso soltanto ai Linden Lab. - </notification> - - <notification - - label="Rifiuta accesso" - name="HelpEstateBanResident" - > -I residenti su questa lista non saranno accettati nella tua proprietà , indipendentemente da qualunque altra impostazione. - </notification> - - <notification - - label="Consenti la voice chat" - name="HelpEstateVoiceChat" - > -I terreni di questa proprietà potranno avere i loro canali voce nei quali i residenti potranno parlare con gli avatar vicini. - -Impostazione base: spento - </notification> - - <notification - - label="Versione voice non compatibile" - name="VoiceVersionMismatch" - > -Questa versione di Second Life non è compatibile con le impostazioni di voice chat di questa regione. Per poter fare funzionare correttamente la chat voce devi aggiornare Second Life. - </notification> - - <notification - - label="Regolamento della proprietà " - name="HelpEstateCovenant" - > -Impostare un regolamento della proprietà ti consente di vendere i terreni all'interno di quella proprietà . Se non imposti un regolamento, non puoi vendere i terreni. La notecard per il tuo regolamente può essere vuota se non desideri applicare nessuna regola o informare i compratori di cose inerenti la terra, prima dell'acquisto. - -Un regolamento può essere usato per comunicare regole, linee guida, informazioni culturali o semplicemente ciò che ti aspetti dal possibile compratore. Questo può includere impostazioni in zone, regolamenti architettonici, opzioni di pagamento o qualunque altra informazione che ritieni importante che il nuovo proprietario debba aver visto e accettato prima dell'acquisto. - -Il compratore deve accettare il regolamento selezionando la casella appropriata per poter completare l'acquisto. I regolamenti delle proprietà sono sempre visibili nella finestra "Informazioni sul terreno" in tutti gli appezzamenti in cui è stato impostato. - </notification> - - <notification - - label="Impossibile comprare oggetti" - name="BuyObjectOneOwner" - > -Impossibile comprare oggetti da proprietari diversi nello stesso momento. -Seleziona solo un oggetto e riprova. - </notification> - - <notification - - label="Impossibile comprare il contenuto" - name="BuyContentsOneOnly" - > -Impossibile comprare il contenuto di più di un oggetto per volta. -Seleziona solo un oggetto e riprova. - </notification> - - <notification - - label="Impossibile comprare il contenuto" - name="BuyContentsOneOwner" - > -Impossibile comprare oggetti da proprietari differenti nello stesso momento. -Scegli un solo oggetto e riprova. - </notification> - - <notification - - name="BuyOriginal" - > -Compra l'oggetto originale da [OWNER] per [PRICE]L$? -Diventerai proprietario di questo oggetto. -Sarai in grado di: - Modificare: [MODIFYPERM] - Copiare: [COPYPERM] - Rivendere o regalare: [RESELLPERM] - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="BuyOriginalNoOwner" - > -Compra l'oggetto originale per [PRICE]L$? -Diventerai proprietario di questo oggetto. -Sarai in grado di: - Modificare: [MODIFYPERM] - Copiare: [COPYPERM] - Rivendere o regalare: [RESELLPERM] - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="BuyCopy" - > -Compra una copia da [OWNER] per [PRICE]L$? -L'oggetto verrà copiato nel tuo inventario. -Sarai in grado di: - Modificare: [MODIFYPERM] - Copiare: [COPYPERM] - Rivendere o regalare: [RESELLPERM] - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="BuyCopyNoOwner" - > -Compra una copia per [PRICE]L$? -L'oggetto verrà copiato nel tuo inventario. -Sarai in grado di: - Modificare: [MODIFYPERM] - Copiare: [COPYPERM] - Rivendere o regalare: [RESELLPERM] - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="BuyContents" - > -Compra il contenuto da [OWNER] per [PRICE]L$? -Il contenuto verrà copiato nel tuo inventario. - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="BuyContentsNoOwner" - > -Compra il contenuto per [PRICE]L$? -Il contenuto verrà copiato nel tuo inventario. - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmPurchase" - > -Questa transazione farà : -[ACTION] - -Confermi di voler procedere all'acquisto? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmPurchasePassword" - type="password"> -Questa transazione farà : -[ACTION] - -Confermi di voler procedere all'acquisto? -Ridigita la tua password e premi OK. - <form name="form"> - <input - name="message" - type="password"/> - <button - - - name="ConfirmPurchase" - text="OK"/> - <button - - name="Cancel" - text="Annulla"/> - </form> - </notification> - - <notification - - name="SetPickLocation" - > -Nota: -Hai aggiornato l'ubicazione di questo preferito ma gli altri dettagli conserveranno il loro valore originale. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="MoveInventoryFromObject" - > -Hai selezionato elementi dall'inventario 'non copiabili'. -Questi elementi verranno trasferiti nel tuo inventario, ma non copiati. - -Trasferisci gli elementi nell'inventario? - <usetemplate - ignoretext="Quando si trasferiscono, dagli oggetti all'inventario, elementi non copiabili" - name="okcancelignore" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="MoveInventoryFromScriptedObject" - > -Hai selezionato elementi dell'inventario non copiabili. Questi elementi verranno trasferiti nel tuo inventario, non verranno copiati. -Dato che questo oggetto è scriptato, il trasferimento di questi elementi nel tuo inventario potrebbe causare un malfunzionamento degli script. - -Trasferisci gli elementi nell'inventario? - <usetemplate - ignoretext="Quando si trasferiscono oggetti scriptati non copiabili nell'inventario" - name="okcancelignore" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="ClickActionNotPayable" - > -Attenzione: L'azione di pagamento automatico al click è stata impostata, ma funzionerà solo se aggiungi uno script con un evento money(). - <form name="form"> - <ignore name="ignore" - text="Quando imposti il "Pagamento" di oggetti senza l'evento money()"/> - </form> - </notification> - - <notification - - name="OpenObjectCannotCopy" - > -Non ci sono elementi in questo oggetto che tu possa copiare. - </notification> - - <notification - - name="WebLaunchAccountHistory" - > -Vai nel sito web di Second Life per vedere il tuo estratto conto? - <usetemplate - ignoretext="Quando carichi la pagina web dell'estratto conto" - name="okcancelignore" - notext="Annulla" - yestext="Vai alla pagina"/> - </notification> - - <notification - - name="ClickOpenF1Help" - > -Visita il sito di supporto di Second Life? - <usetemplate - ignoretext="Quando visiti il sito del supporto di Second Life." - name="okcancelignore" - notext="Annulla" - yestext="Vai"/> - </notification> - - <notification - - name="ConfirmQuit" - > -Confermi di voler uscire? - <usetemplate - ignoretext="Quando esci da Second Life." - name="okcancelignore" - notext="Continua" - yestext="Esci"/> - </notification> - - <notification - - name="HelpReportAbuseEmailLL" - > -Usa questo strumento per segnalare violazioni ai Termini di Servizio e agli standard della Comunità . Vedi: - -http://secondlife.com/corporate/tos.php -http://secondlife.com/corporate/cs.php - -Tutte gli abusi ai Termini di Servizio e agli Standard della Comunità segnalati, sono indagati e risolti. Puoi controllare la risoluzione degli abusi visitando la pagina delle Risoluzioni degli Incidenti: - -http://secondlife.com/support/incidentreport.php - </notification> - - <notification - - name="HelpReportAbuseEmailEO" - > -IMPORTANTE: questo rapporto verrà inviato al proprietario della regione dove sei in questo momento e non ai Linden Lab. - -Come servizio ai residenti e ai visitatori, il proprietario della regione in cui ti trovi, ha scelto di ricevere e risolvere le segnalazioni di abuso che nascono in questa regione. Il Linden Lab non investiga sulle segnalazione inviate da qui. - -Il proprietario della regione risolverà le segnalazione basandosi sulle regole locali di questa regione così come sono indicate dal regolamento della proprietà . -(Puoi vedere il regolamento andando sul menu Mondo e selezionando Informazioni sul terreno.) - -La risoluzione di questa segnalazione verrà applicata solo in questa regione; L'accesso dei residenti ad altre aree di Second Life non verrà influenzato dal risultato di questa segnalazione. Soltanto i Linden Lab possono restringere l'accesso alla totalità di Second Life. - </notification> - - <notification - - name="HelpReportBug" - > -Usa questo strumento per segnalare *soltanto* caratteristiche tecniche che non funzionano come descitto o atteso, fornisci quanti più dettagli è possibile, Puoi rispondere all'email automatica aggiungendo ulteriori dettagli sulla tua segnalazione. - -Tutte le segnalazioni di bug sono investigate e valutate. Non vengono inviate risposte via email. - -Se hai difficoltà tecniche contatta il supporto: - -http://secondlife.com/community/support.php - -Nota: segnalazioni incomplete non verranno prese in considerazione - </notification> - - <notification - - name="HelpReportAbuseSelectCategory" - > -Scegli una categoria per questa segnalazione di abuso. -Scegliere una categoria, ci aiuta a gestire ed elaborare le segnalazioni di abuso. - </notification> - - <notification - - name="HelpReportBugSelectCategory" - > -Scegli una categoria per questo bug. -Scegliere una categoria, ci aiuta a gestire ed elaborare le segnalazioni di bug. - </notification> - - <notification - - name="HelpReportAbuseAbuserNameEmpty" - > -Introduci il nome di chi abusa. -Introducendo un valore accurato, ci aiuti a gestire ed elaborare le segnalazioni di abuso. - </notification> - - <notification - - name="HelpReportAbuseAbuserLocationEmpty" - > -Inserisci il luogo dove l'abuso è avvenuto. -Introducendo un valore accurato, ci aiuti a gestire ed elaborare le segnalazioni di abuso. - </notification> - - <notification - - name="HelpReportAbuseSummaryEmpty" - > -Inserisci un yiyolo descrittivo dell'abuso che è avvenuto. -Introducendo un titolo descrittivo accurato, ci aiuti a gestire ed elaborare le segnalazioni di abuso. - </notification> - - <notification - - name="HelpReportBugSummaryEmpty" - > -Introduci una descrizione del bug. -Introducendo una descrizione accurata ci aiuti a gestire ed elaborare le segnalazioni di bug. - </notification> - - <notification - - name="HelpReportAbuseDetailsEmpty" - > -Inserisci una descrizione dettagliata dell'abuso che è avvenuto. -Devi essere il più specifico possibile, includendo i nomi e i dettagli dell'incidente che stai segnalando. -Inserendo una descrizione accurata ci aiuti a gestire ed elaborare le segnalazioni di abuso. - </notification> - - <notification - - name="HelpReportBugDetailsEmpty" - > -Inserisci una descrizione dettagliata del bug. -Devi essere il pià specifico possibile, includendo se possibil i passi per riprodurre il problema. -Inserendo una descrizione accurata, ci aiuti a gestire ed elaborare le segnalazioni di bug. - </notification> - - <notification - - name="HelpReportAbuseContainsCopyright" - > -Caro residente, - -Sembra che stai segnalando un problema di furto di proprietà intellettuale. Cerca di essere sicuro che la tua segnalazione stia riportando correttamente: - -(1) Il processo di abuso. Puoi sottomettere una segnalazione di abuso se ritieni che un residente stia sfruttando il sistema di permessi di Second Life, per esempio, usando CopyBot oppure simili strumenti di copia, per rubare i diritti della proprietà intellettuale. L'ufficio Abusi investigherà e deciderà delle azioni disciplinari adeguate per comportamenti che violano gli standard di comunità di Second Life o i Termini di Servizio. Si tenga però presente che l'ufficio Abusi non gestisce e non risponde alle richieste di rimozione di contenuto da Second Life. - -(2) Il processo di rimozione DMCA o processo di rimozione dei contenuti. Per richiedere la rimozione di contenuto da Second Life, DEVI sottomettere una notifica valida di furto intellettuale come definito nella nostra politica DMCA che trovi a http://secondlife.com/corporate/dmca.php. - -Se desideri egualmente continuare con il processo di abuso, chiudi questa finestra e termina di compilare la segnalazione. Potresti dover selezionare la categoria specifica 'CopyBot o Sfruttamento permessi'. - -Grazie, -La Linden Lab - </notification> - - <notification - - name="FailedRequirementsCheck" - > -I seguenti componenti obbligatori sono mancanti da [FLOATER]: -[COMPONENTS] - </notification> - - <notification - - label="Sostituisci gli oggetti indossati" - name="ReplaceAttachment" - > -C'è già un oggetto indossato in questo punto del corpo. -Vuoi sostituirlo con l'oggetto selezionato? - <form name="form"> - <ignore name="ignore" - save_option="true" - text="Quando avviene la sostituzione di un oggetto indossato già esistente"/> - <button - - - - name="Yes" - text="OK"/> - <button - - - name="No" - text="Annulla"/> - </form> - </notification> - - <notification - - label="Avviso di 'Occupato'" - name="BusyModePay" - > -Sei in modalità 'Occupato', ciò significa che non riceverai ciò che attendi per questo pagamento. - -Desideri abbandonare la modalità 'Occupato' prima di completare questa transazione? - <form name="form"> - <ignore name="ignore" - save_option="true" - text="Quando avviene il pagamento di una persona o oggetto in modalità 'Occupato'"/> - <button - - - - name="Yes" - text="OK"/> - <button - - - name="No" - text="Abbandona"/> - </form> - </notification> - - <notification - - name="ConfirmEmptyTrash" - > -Confermi di volere permanentemente rimuovere il contenuto del tuo cartella Cestino? - <usetemplate - ignoretext="Quando svuoti la cartella cestino del tuo inventario" - name="okcancelignore" - notext="Annulla" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmClearBrowserCache" - > -Confermi di voler pulire la cache del tuo browser? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="Si"/> - </notification> - - <notification - - name="ConfirmClearCookies" - > -Confermi di volere cancellare i tuoi cookie? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="Si"/> - </notification> - - <notification - - name="ConfirmClearMediaUrlList" - > -Confermi di voler cancellare la lista degli URL salvati? - <usetemplate - name="okcancelbuttons" - notext="Annulla" - yestext="Si"/> - </notification> - - <notification - - name="ConfirmEmptyLostAndFound" - > -Confermi di volere rimuovere permanentemente il contenuto della tua cartalla Persi e ritrovati? - <usetemplate - ignoretext="Quando cancelli la cartella persi e ritrovati del tuo inventario" - name="okcancelignore" - notext="No" - yestext="Si"/> - </notification> - - <notification - - name="CopySLURL" - > -Lo SLURL seguente è stato copiato nei tuoi appunti: - [SLURL] - -Lo puoi inserire in una pagina web per dare ad altri modo di accedere a questo posto o puoi provare a copiarla nella barra indirizzi del tuo browser web. - <form name="form"> - <ignore name="ignore" - text="Quando copi lo SLURL negli appunti"/> - </form> - </notification> - - <notification - - name="GraphicsPreferencesHelp" - > -Questo pannello controlla la dimensione delle finestre, la risoluzione e la qualità della grafica del tuo browser. Le Preferenze > Grafica consente di scegliere fra quattro livelli grafici: Basso, Medio, Alto, e Ultra. Puoi anche modificare le impostazioni grafiche selezionando la casella Personalizza e manipolando le seguenti impostazioni: - -Effetti grafici: Abilita o disabilita vari tipi di effetti grafici. - -Oggetti riflettenti: Imposta le tipologie di oggetti riflessi dall'acqua. - -Visualizzazione Avatar: Imposta le opzioni che influenzano come il client visualizza gli avatar. - -Campo visivo: Imposta quanto lontano dalla tua posizione gli oggetti vengono visualizzati nella scena. - -Massima quantità di particelle: Imposta il valore massimo di particelle che puoi vedere contemporaneamente sullo schermo. - -Qualità post elaborazione: Imposta la risoluzione con il quale il bagliore è visualizzato. - -Dettaglio della retinatura: Imposta il dettaglio o il numero di triangoli che sono usati per visualizzare determinati oggetti. Un valore più alto impiega più tempo ad essere visualizzato, ma rende questi oggetti più dettagliati. - -Dettagli dell'illuminazione: Seleziona quali tipi di luce vuoi visualizzare. - -Dettaglio del terreno: Imposta la quantità di dettagli che vuoi vedere per le texture del terreno. - </notification> - - <notification - - name="WLSavePresetAlert" - > -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="HelpEditSky" - > -Modifica i cursori di WindLight per creare e savare un insieme di cieli. - </notification> - - <notification - - name="HelpEditDayCycle" - > -Scegli quale cielo impostare per ciclo giornaliero. - </notification> - - <notification - - name="EnvSettingsHelpButton" - > -Queste impostazioni modificano il modo in cui l'ambiente viene visto localmente sul tuo computer. La tua scheda grafica deve supportare gli effetti atmosferici per poter accedere a tutte le impostazioni. - -Modifica il cursore "Ora del Giorno " per cambiare la fase giornaliera locale sul client. - -Modifica il cursore "Intensità delle nuvole" per controllare la quantità di nuvole che coprono il cielo. - -Scegli un colore nella tavolozza colori per il "colore dell'acqua" per cambiare il colore dell'acqua. - -Modifica il cursore "Nebbiosità dell'acqua" per controllare quanto densa è la nebbia sott'acqua. - -Clicca "Usa l'ora della proprietà " per sincronizzare il tempo del giorno con l'ora del giorno della regione e collegarle stabilmente. - -Clicca "Cielo avanzato" per visualizzare un editor con le impostazioni avanzate per il cielo. - -Clicca "Acqua Avanzata" per visualizzare un editor con le impostazini avanzate per l'acqua. - </notification> - - <notification - - name="HelpDayCycle" - > -L'editor del Ciclo Giorno/Notte permette di controllare il cielo durante il ciclo giornaliero di Second Life. Questo è il ciclo che è usato dal cursore dell'editor base dell'ambiente. - -L'editor del ciclo giorno/notte funziona impostando i fotogrammi chiave. Questi sono nodi (rappresentati da tacche grige sul grafico temporale) che hanno delle preregolazioni associate del cielo. Man mano che l'ora del giorno procede, il cielo di WindLight"si anima" interpolando i valori fra questi fotogrammi chiave. - -La freccia gialla sopra la linea del tempo rappresenta la tua vista corrente, basata sull'ora del giorno. Cliccandola e spostandola vedrai come il giorno si animerebbe. Si può aggiungere o cancellare fotogrammi chiave cliccando sui tasti 'Aggiungi Fotogramma Chiave' e 'Cancella Fotogramma Chiave' alla destra della linea del tempo. - -Si possono impostare le posizioni temporali dei fotogrammi chiave spostandole lungo la linea del tempo o impostando il loro valore a mano nella finestra di impostazione dei fotogrammi chiave. All'interno della finestra di impostazione si può associare il fotogramma chiave con le impostazioni corrispondenti di Wind Light. - -La durata del ciclo definisce la durata complessiva di un "giorno". Impostando questo ad un valore basso (per esempio, 2 minuti) tutto il ciclo di 24 ore verrà completato in solo 2 minuti reali! Una volta soddisfatto dell tua linea del tempo e le impostazioni dei fotogrammi chiave, usa i bottoni Play e Stop per vederne in anteprima i risultati. Attenzione: si può sempre spostare la freccia gialla indicatrice del tempo sopra la linea del tempo per vedere il ciclo animarsi interattivamente. Scegliendo invece il pulsanto 'Usa il tempo della regione' ci si sincronizza con il le durate del ciclo definite per questa regione. - -Una volta soddisfatto del ciclo giornaliero, puoi salvarlo o ricaricarlo con i bottoni 'Salva test del giorno' e 'Carica il test del giorno'. Attualmente è possibile definire un solo ciclo giorno/notte - </notification> - - <notification - - name="HelpBlueHorizon" - > -Si usano i cursori RGB (Rosso/Verde/Blu) per modificare il colore del cielo. Si può usare il cursore I (Intensità ) per alterare i tre cursori all'unisono. - </notification> - - <notification - - name="HelpHazeHorizon" - > -Altezza della foschia all'orizzonte è uno dei parametri più utili per modificare l'esposizione di luce complessiva nella scena. -E' utile per simulare molte impostazioni di esposizione, come la sovraesposizione del sole e impostazioni più scure a diaframma chiuso. - </notification> - - <notification - - name="HelpBlueDensity" - > -La densità del blu influenza la saturazione complessiva del cielo e della nebbia. Se impostate il cursore (I) Intensità verso destra i colori diventeranno più brillanti e accesi. Se lo impostate tutto a sinistra, i colori diventeranno opachi e ultimamente si confonderanno con il bianco/nero. Se si vuole controllare in modo preciso l'equilibro di colori del cielo, si può agire sui singoli elementi di saturazione utilizzando i tre cursori RGB (Rosso, Verde, Blu). - </notification> - - <notification - - name="HelpHazeDensity" - > -La densità della foschia controlla il livello di foschia grigia generale nell'atmosfera. -E' utile per simulare scene con un livello alto di fumo e di inquinamento di origine umana. -E' anche utile per simulare la nebbia e la foschia al mattino. - </notification> - - <notification - - name="HelpDensityMult" - > -Il moltiplicatore di densità può essere usato per influenzare la densità atmosferica generale. Con valori bassi, crea la sensazione di "aria sottile", con valori alti crea un effetto molto pesante, annebbiato. - </notification> - - <notification - - name="HelpDistanceMult" - > -Modifica la distanza percepita da WindLight. -Immettendo il valore zero si spegne l'influenza di WindLight sul terreno e gli oggetti. -Valori più grandi di 1 simulano distanze più grandi per effetti atmosferici più spessi. - </notification> - - <notification - - name="HelpMaxAltitude" - > -Altitudine Massima modifica i calcoli di altezza che fa WindLight quando calcola l'illuminazione atmosferica. -In periodi successivi del giorno, è utile per modificare quanto "profondo" appaia il tramonto. - </notification> - - <notification - - name="HelpSunlightColor" - > -Modifica il colore e l'intensità della luce diretta nella scena. - </notification> - - <notification - - name="HelpSunAmbient" - > -Modifica il colore e l'intensità della luce atmosferica ambientale nella scena. - </notification> - - <notification - - name="HelpSunGlow" - > -Il cursore Dimensione controlla la dimensione del sole. -Lo slider "Focus" controlla quanto è offuscato il sole sopra il cielo. - </notification> - - <notification - - name="HelpSceneGamma" - > -Modifica la distribuzione di luci e ombre nello schermo. - </notification> - - <notification - - name="HelpStarBrightness" - > -Modifica la brillantezza delle stelle nel cielo. - </notification> - - <notification - - name="HelpTimeOfDay" - > -Controlla la posizione del sole nel cielo. -Simile all'elevazione. - </notification> - - <notification - - name="HelpEastAngle" - > -Controlla la posizione del sole nel cielo. -Simile all'azimuth. - </notification> - - <notification - - name="HelpCloudColor" - > -Modifica il colore delle nuvole. Normalmente si raccomanda di mantenere un colore verso il bianco, ma puoi sbizzarrirti. - </notification> - - <notification - - name="HelpCloudDetail" - > -Controlla l'immagine dei dettagli che è sovraimposta sopra l'immagine principale delle nuvole. -X e Y controllano la sua posizione. -D (Densità ) controlla quanto gonfie o spezzettate appaiono le nuvole. - </notification> - - <notification - - name="HelpCloudDensity" - > -Consente di controllare la posizione delle nuvole usando i cursori X e Y e quanto dense siano usando il cursore D. - </notification> - - <notification - - name="HelpCloudCoverage" - > -Controlla quanto le nuvole coprono il cielo. - </notification> - - <notification - - name="HelpCloudScale" - > -Controlla le dimensioni delle immagini delle nuvole sul cielo stellato. - </notification> - - <notification - - name="HelpCloudScrollX" - > -Controlla la velocità delle nuvole lungo la direzione X. - </notification> - - <notification - - name="HelpCloudScrollY" - > -Controlla la velocità delle nuvole lungo la direzione Y. - </notification> - - <notification - - name="HelpClassicClouds" - > -Seleziona questa casella per consentire la visualizzazione delle nuvole nello stile classico in aggiunta alle nuvole Windlight. - </notification> - - <notification - - name="HelpWaterFogColor" - > -Sceglie il Colore della nebbiosità dell'acqua. - </notification> - - <notification - - name="HelpWaterFogDensity" - > -Controlla la densità della foschia dell'acqua e quanto lontano si può vedere sott'acqua. - </notification> - - <notification - - name="HelpUnderWaterFogMod" - > -Modifica l'effetto dell'Esponente Densità Vapore Acqueo per controllare quanto lontano può vedere il vostro avatar quando è sott'acqua. - </notification> - - <notification - - name="HelpWaterGlow" - > -Controlla la quantità del bagliore dell'acqua. - </notification> - - <notification - - name="HelpWaterNormalScale" - > -Controlla le dimensioni delle tre wavelet che compongono l'acqua. - </notification> - - <notification - - name="HelpWaterFresnelScale" - > -Controlla quanta luce è riflessa ad angoli differenti. - </notification> - - <notification - - name="HelpWaterFresnelOffset" - > -Controlla quanta intensità di luce è riflessa. - </notification> - - <notification - - name="HelpWaterScaleAbove" - > -Controlla quanta luce è rifratta guardando dal di sopra della superficie dell'acqua. - </notification> - - <notification - - name="HelpWaterScaleBelow" - > -Controlla quanta luce è rifratta guardando dal di sotto della superficie dell'acqua. - </notification> - - <notification - - name="HelpWaterBlurMultiplier" - > -Controlla come le onde e le riflessioni vengono miscelate. - </notification> - - <notification - - name="HelpWaterNormalMap" - > -Controlla quale mappa normale è sovraimposta nell'acqua per determinare le riflessioni/rifrazioni. - </notification> - - <notification - - name="HelpWaterWave1" - > -Controlla dove e quanto velocemente la versione ingrandita della mappa normale si muove lungo le direzioni X e Y. - </notification> - - <notification - - name="HelpWaterWave2" - > -Controlla dove e quanto velocemente la versione ridotta della mappa normale si muove lungo le direzioni X e Y. - </notification> - - <notification - - name="NewSkyPreset" - > -Fornisci il nome per il nuovo cielo. - <form name="form"> - <input name="message" type="text"> -Nuova preimpostazione - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Annulla"/> - </form> - </notification> - - <notification - - name="ExistsSkyPresetAlert" - > -La preimpostazione esiste già ! - </notification> - - <notification - - name="NewWaterPreset" - > -Fornisci il nome per la nuova preregolazione del livello dell'acqua. - <form name="form"> - <input name="message" type="text"> -Nuova preimpostazione - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Annulla"/> - </form> - </notification> - - <notification - - name="ExistsWaterPresetAlert" - > -La preimpostazione esiste già ! - </notification> - - <notification - - name="WaterNoEditDefault" - > -Non puoi modificare o cancellare una preimpostazione. - </notification> - - <notification - - name="ChatterBoxSessionStartError" - > -Impossibile iniziare una nuova sessione di chat con [RECIPIENT]. -[REASON] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="ChatterBoxSessionEventError" - > -[EVENT] -[REASON] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="ForceCloseChatterBoxSession" - > -La sessione chat con [NAME] deve chiudere. -[REASON] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="Cannot_Purchase_an_Attachment" - > -Gli elementi non possono essere comprati mentre sono indossati. - </notification> - - <notification - - label="Informazioni sulle richieste per il permesso di addebito" - name="DebitPermissionDetails" - > -Accettare questa richiesta da allo script il permesso continuativo di prendere Linden dollar (L$) dal tuo account. Per revocare questo permesso, il proprietario dell'oggetto deve cancellare l'oggetto oppure reimpostare gli script nell'oggetto. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="AutoWearNewClothing" - > -Vuoi indossare automaticamente i vestiti che crei? - <usetemplate - ignoretext="Indossa automaticamente i nuovi vestiti." - name="okcancelignore" - notext="No" - yestext="Si"/> - </notification> - - <notification - - name="NotAgeVerified" - > -La tua età deve essere verificata per poter entrare in questo territorio. -Vuoi visitare il sito di Second Life per verificare la tua eta? - -[_URL] - <url option="0" name="url"> - - https://secondlife.com/account/verification.php - </url> - <usetemplate - ignoretext="Avviso per mancanza della verifica dell'età " - name="okcancelignore" - notext="No" - yestext="Si"/> - </notification> - - <notification - - name="Cannot enter parcel: no payment info on file" - > -Questo terreno richiede che tu abbia registrato le tue informazioni di pagamento prima che tu possa accedervi. -Vuoi visitare il sito di Second Life per impostarle? - -[_URL] - <url option="0" name="url"> - - https://secondlife.com/account/index.php?lang=it - </url> - <usetemplate - ignoretext="Avviso per mancanza di informazioni di pagamento registrato" - name="okcancelignore" - notext="No" - yestext="Si"/> - </notification> - - <notification - - name="MissingString" - > -La stringa [STRING_NAME] non è presente in strings.xml - </notification> - - <notification - - name="SystemMessageTip" - > -[MESSAGE] - </notification> - - <notification - - name="Cancelled" - > -Annullato - </notification> - - <notification - - name="CancelledSit" - > -Seduta annullata - </notification> - - <notification - - name="CancelledAttach" - > -Attaccamento annullato - </notification> - - <notification - - name="ReplacedMissingWearable" - > -Gli abiti/parti del corpo mancanti sono stati sostituiti con quelli di default . - </notification> - - <notification - - name="GroupNotice" - > -Oggetto: [SUBJECT], Messaggio: [MESSAGE] - </notification> - - <notification - - name="FriendOnline" - > -[FIRST] [LAST] è Online - </notification> - - <notification - - name="FriendOffline" - > -[FIRST] [LAST] è Offline - </notification> - - <notification - - name="AddSelfFriend" - > -Non puoi aggiungere te stesso come amico. - </notification> - - <notification - - name="UploadingAuctionSnapshot" - > -Sto importando le fotografie per l'uso inworld e per il web... -(Durata circa 5 minuti.) - </notification> - - <notification - - name="UploadPayment" - > -Hai pagato [AMOUNT]L$ per il caricamento. - </notification> - - <notification - - name="UploadWebSnapshotDone" - > -Il caricamento della fotografia nel sito web è andato a buon fine. - </notification> - - <notification - - name="UploadSnapshotDone" - > -Il caricamento della fotografia inworld è andato a buon fine. - </notification> - - <notification - - name="TerrainDownloaded" - > -Terrain.raw caricato - </notification> - - <notification - - name="GestureMissing" - > -La gesture [NAME] non è stata trovata nel database. - </notification> - - <notification - - name="UnableToLoadGesture" - > -Impossibile caricare la gesture [NAME]. -Riprova. - </notification> - - <notification - - name="LandmarkMissing" - > -Landmark non trovato nel database. - </notification> - - <notification - - name="UnableToLoadLandmark" - > -Impossibile caricare il Landmark di riferimento. Riprova. - </notification> - - <notification - - name="CapsKeyOn" - > -Il tasto BLOC MAIUSC è attivato. -Dato che questo tasto ha effetto su come scrivi la password, forse sarebbe preferibile disattivarlo. - </notification> - - <notification - - name="NotecardMissing" - > -Notecard non trovata nel database. - </notification> - - <notification - - name="NotecardNoPermissions" - > -Permessi insufficienti per visualizzare la notecard. - </notification> - - <notification - - name="RezItemNoPermissions" - > -Permessi insufficienti per creare un oggetto. - </notification> - - <notification - - name="UnableToLoadNotecard" - > -Impossibile caricare la notecard. -Riprova. - </notification> - - <notification - - name="ScriptMissing" - > -Script non trovato nel database. - </notification> - - <notification - - name="ScriptNoPermissions" - > -Permessi insufficenti per visualizzare lo script. - </notification> - - <notification - - name="UnableToLoadScript" - > -Impossibile caricare lo script. Riprova. - </notification> - - <notification - - name="IncompleteInventory" - > -Il contenuto che stai offrendo per il momento non è localmente disponibile. Prova a rioffrire gli oggetti fra un minuto. - </notification> - - <notification - - name="CannotModifyProtectedCategories" - > -Non è possibile modificare le categorie protette. - </notification> - - <notification - - name="CannotRemoveProtectedCategories" - > -Non è possibile rimuovere le categorie protette. - </notification> - - <notification - - name="OfferedCard" - > -Hai offerto un biglietto da visita a [FIRST] [LAST] - </notification> - - <notification - - name="UnableToBuyWhileDownloading" - > -Impossibile acquistare l'oggetto durante il download dei dati. -Riprova. - </notification> - - <notification - - name="UnableToLinkWhileDownloading" - > -Impossibile collegare l'oggetto durante il download dei dati. -Riprova. - </notification> - - <notification - - name="CannotBuyObjectsFromDifferentOwners" - > -Non è possibile acquistare oggetti provenienti da diversi proprietari allo stesso tempo. -Seleziona un oggetto singolo per volta. - </notification> - - <notification - - name="ObjectNotForSale" - > -L'oggetto non sembra essere in vendita - </notification> - - <notification - - name="EnteringGodMode" - > -Entra in modalità divina, livello [LEVEL] - </notification> - - <notification - - name="LeavingGodMode" - > -Esci dalla modalità divina, livello [LEVEL] - </notification> - - <notification - - name="CopyFailed" - > -La copia non è riuscita perche non hai il permesso di copiare. - </notification> - - <notification - - name="InventoryAccepted" - > -[NAME] ha accettato la tua offerta dall'inventario. - </notification> - - <notification - - name="InventoryDeclined" - > -[NAME] non ha accettato la tua offerta dall'inventario. - </notification> - - <notification - - name="ObjectMessage" - > -[NAME]: [MESSAGE] - </notification> - - <notification - - name="CallingCardAccepted" - > -Il tuo biglietto da visita è stato accettato. - </notification> - - <notification - - name="CallingCardDeclined" - > -Il tuo biglietto da visita non è stato accettato. - </notification> - - <notification - - name="TeleportToLandmark" - > -Ora che hai raggiunto la mainland, puoi teleportarti in posti come '[NAME]' cliccando inventario in basso a destra del tuo schermo, e selezionando la cartella dei Landmarks. -Fai doppio click su un landmark e poi clicca su Teleport per andare là . - </notification> - - <notification - - name="TeleportToPerson" - > -Ora che hai raggiunto la mainland, puoi contattare residenti con '[NAME]' cliccando inventario in basso a destra del tuo schermo, e selezionando la cartella dei biglietti da visita. -Fai doppio click sul biglietto, clicca su IM messaggio istantaneo, e scrivi il messaggio. - </notification> - - <notification - - name="CantSelectLandFromMultipleRegions" - > -Non è possibile selezionare il terreno attraverso i confini del server. -Prova a selezionare una parte di terreno più piccola. - </notification> - - <notification - - name="GroupVote" - > -[NAME] ha proposto di votare su: -[MESSAGE] - <form name="form"> - <button - - name="VoteNow" - text="Vota ora"/> - <button - - name="Later" - text="Successivo"/> - </form> - </notification> - - <notification - - name="SystemMessage" - > -[MESSAGE] - </notification> - - <notification - - name="EventNotification" - > -Notifica eventi: - -[NAME] -[DATE] - <form name="form"> - <button - - name="Teleport" - text="Teleport"/> - <button - - name="Description" - text="Descrizione"/> - <button - - name="Cancel" - text="Cancella"/> - </form> - </notification> - - <notification - - name="TransferObjectsHighlighted" - > -Tutti gli oggetti presenti sul terreno, che saranno trasferiti al compratore di questa terra, saranno ora evidenziati. - -* Gli alberi e l'erba che cederai non saranno evidenziati. - <form name="form"> - <button - - name="Done" - text="Fatto"/> - </form> - </notification> - - <notification - - name="DeactivatedGesturesTrigger" - > -Usa lo stesso tasto per disattivare la gesture: -[NAMES] - </notification> - - <notification - - name="NoQuickTime" - > -Il software Apple QuickTime sembra non essere installato nel tuo sistema. -Se desideri visualizzare il video streaming nei terreni supportati si consiglia di andare sul sito di QuickTime (http://www.apple.com/quicktime) e procedere con l'installazione di QuickTime Player. - </notification> - - <notification - - name="OwnedObjectsReturned" - > -Gli oggetti che possiedi sul terreno selezionato ti sono stati restituiti nell'inventario. - </notification> - - <notification - - name="OtherObjectsReturned" - > -Gli oggetti selezionati sul terreno che è di proprietà di [FIRST] [LAST] sono stati restituiti nel suo inventario. - </notification> - - <notification - - name="OtherObjectsReturned2" - > -Gli oggetti selezionati sul terreno di proprietà del residente '[NAME]' sono stati restituiti al loro proprietario. - </notification> - - <notification - - name="GroupObjectsReturned" - > -Gli oggetti selezionati sul terreno e condivisi con il gruppo [GROUPNAME] sono stati restituiti nell'inventario dei propietari. -Gli oggetti trasferibili ceduti sono stati restituiti ai proprietari precedenti. -Gli oggetti non trasferibili che erano stati ceduti al gruppo sono stati cancellati. - </notification> - - <notification - - name="UnOwnedObjectsReturned" - > -Gli oggetti selezionati sul terreno che non sono di tua proprietà sono stati restituiti ai loro proprietari. - </notification> - - <notification - - name="NotSafe" - > -In questa terra il danno è abilitato ('non sicura'). -Puoi farti male qui. Se muori, sarai teleportato a casa. - </notification> - - <notification - - name="NoFly" - > -Questa terra ha il volo disabilitato ('non puoi volare'). -Non è possibile volare qui. - </notification> - - <notification - - name="PushRestricted" - > -Questa terra è 'Senza spinte'. -Non si puo spingere gli altri a meno che tu non sia propietario del terreno. - </notification> - - <notification - - name="NoVoice" - > -Questa terra ha il voice disabilitato. - </notification> - - <notification - - name="NoBuild" - > -Questo terreno ha la costruzione disabilitata ('non puoi costruire'). -Non puoi costruire qui. - </notification> - - <notification - - name="ScriptsStopped" - > -Un amministratore ha temporaneamente disabilitato gli script in questa regione. - </notification> - - <notification - - name="ScriptsNotRunning" - > -In questa terra nessuno script è attivo. - </notification> - - <notification - - name="NoOutsideScripts" - > -Questa land ha script esterni disabilitati. -('nessuno script esterno'). -Nessuno script esterno funzionerà tranne quelli del propietario del terreno. - </notification> - - <notification - - name="ClaimPublicLand" - > -Puoi solo prendere possesso di terra pubblica nella regione dove sei attualmente. - </notification> - - <notification - - name="ObjectGiveItem" - > -Un oggetto chiamato [OBJECTFROMNAME] di proprietà di [FIRST] [LAST] ti ha dato un [OBJECTTYPE] che si chiama [OBJECTNAME]. - <form name="form"> - <button - - name="Keep" - text="Prendi"/> - <button - - name="Discard" - text="Rifiuta"/> - <button - - name="Mute" - text="Muta"/> - </form> - </notification> - - <notification - - name="ObjectGiveItemUnknownUser" - > -Un oggetto chiamato [OBJECTFROMNAME] di proprietà di (un utente sconosciuto) ti ha dato un [OBJECTTYPE] che si chiama [OBJECTNAME]. - <form name="form"> - <button - - name="Keep" - text="Prendi"/> - <button - - name="Discard" - text="Rifiuta"/> - <button - - name="Mute" - text="Muta"/> - </form> - </notification> - - <notification - - name="UserGiveItem" - > -[NAME] ti ha dato un [OBJECTTYPE] chiamato '[OBJECTNAME]'. - <form name="form"> - <button - - name="Keep" - text="Prendi"/> - <button - - name="Discard" - text="Rifiuta"/> - <button - - name="Mute" - text="Muta"/> - </form> - </notification> - - <notification - - name="GodMessage" - > -[NAME] -[MESSAGE] - </notification> - - <notification - - name="JoinGroup" - > -[MESSAGE] - <form name="form"> - <button - - name="Join" - text="Iscriviti"/> - <button - - name="Decline" - text="Rifiuta"/> - <button - - name="Info" - text="Info"/> - </form> - </notification> - - <notification - - name="TeleportOffered" - > -[NAME] ti ha offerto di teleportarti dove sta ora: - -[MESSAGE] - <form name="form"> - <button - - name="Teleport" - text="Teleport"/> - <button - - name="Cancel" - text="Cancella"/> - </form> - </notification> - - <notification - - name="GotoURL" - > -[MESSAGE] -[URL] - <form name="form"> - <button - - name="Later" - text="Successivo"/> - <button - - name="GoNow..." - text="Vai ora..."/> - </form> - </notification> - - <notification - - name="OfferFriendship" - > -[NAME] ti ha offerto la sua amicizia. - -[MESSAGE] - -(Di default, potrete vedervi reciprocamente online.) - <form name="form"> - <button - - name="Accept" - text="Accetta"/> - <button - - name="Decline" - text="Rifiuta"/> - </form> - </notification> - - <notification - - name="OfferFriendshipNoMessage" - > -[NAME] ti ha offerto la sua amicizia. - -(Di default, potrete vedervi reciprocamente online.) - <form name="form"> - <button - - name="Accept" - text="Accetta"/> - <button - - name="Decline" - text="Rifiuta"/> - </form> - </notification> - - <notification - - name="FriendshipAccepted" - > -[NAME] ha accettato la tua offerta di amicizia. - </notification> - - <notification - - name="FriendshipDeclined" - > -[NAME] ha rifiutato la tua offerta di amicizia. - </notification> - - <notification - - name="OfferCallingCard" - > -[FIRST] [LAST] ti ha offerto il suo biglietto da visita. -Questo aggiungerà un segnalibro nel tuo inventario. -in modo da poter rapidamente inviargli un IM al residente. - <form name="form"> - <button - - name="Accept" - text="Accetta"/> - <button - - name="Decline" - text="Rifiuta"/> - </form> - </notification> - - <notification - - name="RegionRestartMinutes" - - - > -Il riavvio della regione avverrà tra [MINUTES] minuti. -Se rimani in questa regione sarai disconnesso. - </notification> - - <notification - - name="RegionRestartSeconds" - - - > -Il riavvio della regione avverrà tra [SECONDS] secondi. -Se rimani in questa regione sarai disconnesso. - </notification> - - <notification - - name="LoadWebPage" - > -Caricare pagina web [URL]? - -[MESSAGE] - -Dall'oggetto: [OBJECTNAME], di: [NAME]? - <form name="form"> - <button - - name="Gotopage" - text="Vai alla pagina"/> - <button - - name="Cancel" - text="Annulla"/> - </form> - </notification> - - <notification - - name="FailedToFindWearableUnnamed" - > -Impossibile trovare [TYPE] nel database. - </notification> - - <notification - - name="FailedToFindWearable" - > -Impossibile trovare [TYPE] chiamato [DESC] nel database. - </notification> - - <notification - - name="ScriptQuestion" - > -'[OBJECTNAME]', un oggetto di proprietà di '[NAME]', vorrebbe: - -[QUESTIONS] -Va bene? - <form name="form"> - <button - - name="Yes" - text="Si"/> - <button - - name="No" - text="No"/> - <button - - name="Mute" - text="Muta"/> - </form> - </notification> - - <notification - - name="ScriptQuestionCaution" - > -'[OBJECTNAME]', un oggetto di proprietà di '[NAME]', vorrebbe: - -[QUESTIONS] -Se non ci si fida dell'oggetto e del suo creatore, si dovrebbe negare la richiesta. Per ulteriori informazioni, fai clic sul pulsante 'Dettagli'. - -Accettare tale richiesta? - <form name="form"> - <button - - name="Grant" - text="Accetta"/> - <button - - name="Deny" - text="Nega"/> - <button - - name="Details" - text="Dettagli..."/> - </form> - </notification> - - <notification - - name="ScriptDialog" - > -[FIRST] [LAST] '[TITLE]' -[MESSAGE] - <form name="form"> - <button - - name="Ignore" - text="Ignora"/> - </form> - </notification> - - <notification - - name="ScriptDialogGroup" - > -[GROUPNAME] '[TITLE]' -[MESSAGE] - <form name="form"> - <button - - name="Ignore" - text="Ignora"/> - </form> - </notification> - - <notification - - name="FirstBalanceIncrease" - > -Hai appena ricevuto [AMOUNT]L$. -Gli oggetti e gli altri utenti possono darti L$. -Il tuo saldo è indicato nell'angolo in alto a destra dello schermo. - </notification> - - <notification - - name="FirstBalanceDecrease" - > -Hai appena pagato [AMOUNT]L$. -Il tuo saldo è indicato nell'angolo in alto a destra dello schermo. - </notification> - - <notification - - name="FirstSit" - > -Sei seduto. -Utilizza i tasti freccia (o AWSD) per cambiare visualizzazione. -Fai clic sul pulsante 'Alzati' per rialzarti. - </notification> - - <notification - - name="FirstMap" - > -Fai clic e trascina per scorrere la mappa. -Doppio click per teleportarti. -Utilizza i controlli sulla destra per trovare le cose e visualizzare sfondi differenti. - </notification> - - <notification - - name="FirstBuild" - > -È possibile creare nuovi oggetti in alcune zone di [SECOND_LIFE]. -Utilizza gli strumenti in alto a sinistra per costruire, e prova a tenere premuto Ctrl o Alt per passare rapidamente tra uno strumento e l'altro. -Premi Esc per smettere di costruire. - </notification> - - <notification - - name="FirstLeftClickNoHit" - > -Cliccare con il tasto sinistro fa interagire con particolari oggetti. -Se il puntatore del mouse si trasforma in una mano, puoi interagire con l'oggetto. -Se fai clic col tasto destro ti verranno sempre mostrati menù con le cose che puoi fare. - </notification> - - <notification - - name="FirstTeleport" - > -Questa regione non permette i teleport da punto a punto, cosi sei stato teletrasportato nel punto più vicino. -La tua destinazione originale è comunque segnata da un segnale luminoso. -Segui la freccia rossa per arrivare a destinazione, o fai clic sulla freccia per spegnerla. - </notification> - - <notification - - name="FirstOverrideKeys" - > -I tuoi movimenti della tastiera vengono ora gestiti da un oggetto. -Prova i tasti freccia o AWSD per vedere quello che fanno. -Alcuni oggetti (come pistole) richiedono di andare in mouselook per il loro utilizzo. -Premi 'M' per farlo. - </notification> - - <notification - - name="FirstAppearance" - > -Stai modificando il tuo aspetto. -Per ruotare e fare uno zoom, utilizza le frecce della tastiera. -Quando hai finito, premi 'Salva tutto' -per salvare il tuo look e uscire. -Puoi modificare il tuo aspetto ogni qualvolta vuoi. - </notification> - - <notification - - name="FirstInventory" - > -Questo è il tuo inventario, che contiene gli oggetti, notecard, abbigliamento, e altre cose che possiedi. -* Per indossare un oggetto o un outfit completo contenuto in una cartella, trascinali su te stesso. -* Per ricreare un oggetto inworld, trascinalo sul terreno. -* Per leggere una notecard, fai doppio clic su di essa. - </notification> - - <notification - - name="FirstSandbox" - > -Questa è una regione sandbox. -Gli oggetti che costruisci qui, potrebbero essere cancellati dopo che lasci questa area, dato che le sandbox si autopuliscono regolarmente. Leggi le informazioni scritte al riguardo, vicino al nome della regione in alto sullo schermo. - -Le regioni sandbox sono rare, e sono contrassegnate da segnali. - </notification> - - <notification - - name="FirstFlexible" - > -Questo oggetto è flessibile. -Gli oggetti flessibili non possono essere fisici e devano essere fantasma fino a quando la casella di controllo della flessibilità verrà deselezionata. - </notification> - - <notification - - name="FirstDebugMenus" - > -Hai attivato il menu Avanzato. -Questo menu contiene funzioni utili per gli sviluppatori per il debug di Second Life. -Per attivare o disattivare questo menu su Windows premere Ctrl-Alt-D. Su Mac premere Cmd-Opt-Shift-D. - </notification> - - <notification - - name="FirstSculptedPrim" - > -Si sta modificando uno sculpted prim. -Gli sculpted prim richiedono una speciale texture che ne specifichi la forma. -Puoi trovare esempi di texture sculpted nella libreria dell'inventario. - </notification> - - <notification - - name="FirstMedia" - > -Hai iniziato la riproduzione dei media. I media possono essere impostati per essere riprodotti automaticamente nella finestra delle Preferenze sotto la voce Audio / Video. Questo può essere un rischio di sicurezza da media che non sono affidabili. - </notification> - - <notification - - name="MaxListSelectMessage" - > -È possibile selezionare solo fino a [MAX_SELECT] oggetti da questa lista. - </notification> - - <notification - - name="VoiceInviteP2P" - > -[NAME] ti ha invitato a una chiamata Voice. -Fai clic su Accetta per partecipare alla chiamata o su Rifiuta per rifiutare l'invito. fai clic sul pulsante Muta per mutare il chiamante. - <form name="form"> - <button - - name="Accept" - text="Accetta"/> - <button - - name="Decline" - text="Rifiuta"/> - <button - - name="Mute" - text="Muta"/> - </form> - </notification> - - <notification - - name="AutoUnmuteByIM" - > -A [FIRST] [LAST] e' stato mandato un messaggio instantaneo ed è stato quindi automaticamente non mutato. - </notification> - - <notification - - name="AutoUnmuteByMoney" - > -A [FIRST] [LAST] è stato dato del denaro ed è stato automaticamente non mutato. - </notification> - - <notification - - name="AutoUnmuteByInventory" - > -A [FIRST] [LAST] é stato passato qualcosa dall'inventario ed è stato automaticamente non mutato. - </notification> - - <notification - - name="VoiceInviteGroup" - > -[NAME] ha iniziato una chiamata Voice-Chat con il gruppo [GROUP]. -Fai clic su Accetta per partecipare alla chiamata o Rifiuta per Rifiutare l'invito. Fai clic sul pulsante muta per mutare il chiamante. - <form name="form"> - <button - - name="Accept" - text="Accetta"/> - <button - - name="Decline" - text="Rifiuta"/> - <button - - name="Mute" - text="Muta"/> - </form> - </notification> - - <notification - - name="VoiceInviteAdHoc" - > -[NAME] ha iniziato una chiamata Voice Chat mediante una conferenza chat.. -Fai clic su Accetta per partecipare alla chiamata o Rifiuta per Rifiutare l'invito. Fai clic sul pulsante muta per mutare il chiamante. - <form name="form"> - <button - - name="Accept" - text="Accetta"/> - <button - - name="Decline" - text="Rifiuta"/> - <button - - name="Mute" - text="Muta"/> - </form> - </notification> - - <notification - - name="InviteAdHoc" - > -[NAME] ti ha invitato ad una conferenza chat. -Fai clic su Accetta per partecipare alla chiamata o su Rifiuta per rifiutare l'invito. Fai clic sul pulsante muta per mutare il chiamante. - <form name="form"> - <button - - name="Accept" - text="Accetta"/> - <button - - name="Decline" - text="Rifiuta"/> - <button - - name="Mute" - text="Muta"/> - </form> - </notification> - - <notification - - name="VoiceChannelFull" - > -La chiamata vocale a cui si sta cercando di unirsi, [VOICE_CHANNEL_NAME], ha raggiunto la capacità massima. Si prega di riprovare più tardi. - </notification> - - <notification - - name="ProximalVoiceChannelFull" - > -Siamo spiacenti. Questa area ha raggiunto la capacità massima per le chiamate voice. Si prega di provare ad usare il voice in un'altra area. - </notification> - - <notification - - name="VoiceChannelDisconnected" - > -Sei stato disconnesso da [VOICE_CHANNEL_NAME]. Ora verrai riconnesso al canale voice chat pubblico. - </notification> - - <notification - - name="VoiceChannelDisconnectedP2P" - > -[VOICE_CHANNEL_NAME] ha chiuso la chiamata. Ora verrai riconnesso al canale voice chat pubblico. - </notification> - - <notification - - name="P2PCallDeclined" - > -[VOICE_CHANNEL_NAME] ha rifiutato la tua chiamata. Ora verrai riconnesso al canale voice chat pubblico. - </notification> - - <notification - - name="P2PCallNoAnswer" - > -[VOICE_CHANNEL_NAME] non è disponibile per rispondere alla chiamata. Ora verrai riconnesso al canale voice chat pubblico. - </notification> - - <notification - - name="VoiceChannelJoinFailed" - > -Impossibile connettersi con [VOICE_CHANNEL_NAME], si prega di riprovare più tardi. Ora verrai riconnesso al canale voice chat pubblico. - </notification> - - <notification - - name="VoiceLoginRetry" - > -Stiamo creando una canale voice per te. Questo può richiedere fino a un minuto. - </notification> - - <notification - - name="Cannot enter parcel: not a group member" - > -Non puoi entrare nel terreno, non sei un membro del gruppo appropriato. - </notification> - - <notification - - name="Cannot enter parcel: banned" - > -Non puoi entrare nel terreno, sei stato bloccato. - </notification> - - <notification - - name="Cannot enter parcel: not on access list" - > -Non puoi entrare nel terreno, non fai parte della lista di accesso. - </notification> - - <notification - - name="VoiceNotAllowed" - > -Non hai il permesso di collegarti ad una voice chat con [VOICE_CHANNEL_NAME]. - </notification> - - <notification - - name="VoiceCallGenericError" - > -Si è verificato un errore durante il tentativo di collegarti a una voice chat con [VOICE_CHANNEL_NAME]. Riprova più tardi. - </notification> - - <notification - - name="ServerVersionChanged" - > -La regione in cui sei entrato, gira su una versione di simulatore differente. Fai clic su questo messaggio per i dettagli. - </notification> - - <notification - - name="UnableToOpenCommandURL" - > -L'URL che hai selezionato non può essere aperto da questo browser. - </notification> - - <global name="UnsupportedCPU"> -- La velocità della tua CPU non soddisfa i requisiti minimi. - </global> - - <global name="UnsupportedGLRequirements"> -Sembra che tu non abbia i requisiti appropriati hardware per Second Life. Second Life ha bisogno di una scheda grafica OpenGL che abbia il supporto multitexture. Se ritieni di avere l'hardware giusto verifica di avere installati i driver più aggiornati per la tua scheda grafica e gli aggiornamenti e service pack appropriati per il tuo sistema operativo. - -Se continui ad avere problemi, visita il sito: http://www.secondlife.com/support - </global> - - <global name="UnsupportedCPUAmount"> -796 - </global> - - <global name="UnsupportedRAMAmount"> -510 - </global> - - <global name="UnsupportedGPU"> -- La tua scheda grafica non soddisfa i requisiti minimi. - </global> - - <global name="UnsupportedRAM"> -- La memoria del tuo sistema non soddisfa i requisiti minimi. - </global> - - <global name="PermYes"> -Si - </global> - - <global name="PermNo"> -No - </global> -</notifications> - +<?xml version="1.0" encoding="utf-8"?> +<notifications> + <global name="skipnexttime"> + Non mostrare più la prossima volta + </global> + <global name="alwayschoose"> + Scegli sempre questa opzione + </global> + <template name="okbutton"> + <form> + <button + name="OK" + text="$yestext"/> + </form> + </template> + + <template name="okignore"> + <form> + <button + name="OK" + text="$yestext"/> + <ignore text="$ignoretext"/> + </form> + </template> + + <template name="okcancelbuttons"> + <form> + <button + name="OK" + text="$yestext"/> + <button + name="Cancel" + text="$notext"/> + </form> + </template> + + <template name="okcancelignore"> + <form> + <button + name="OK" + text="$yestext"/> + <button + name="Cancel" + text="$notext"/> + <ignore text="$ignoretext"/> + </form> + </template> + + <template name="okhelpbuttons"> + <form> + <button + name="OK" + text="$yestext"/> + <button + name="Help" + text="$helptext"/> + </form> + </template> + + <template name="yesnocancelbuttons"> + <form> + <button + name="Yes" + text="$yestext"/> + <button + name="No" + text="$notext"/> + <button + name="Cancel" + text="$canceltext"/> + </form> + </template> + <notification functor="GenericAcknowledge" label="Messaggio di allerta sconosciuto" name="MissingAlert"> + La tua versione di Second Life non sa come visualizzare il messaggio di allerta appena ricevuto. + +Dettagli dell'errore: il messaggio di allerta '[_NAME]' non è stato trovato in notifications.xml. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="FloaterNotFound"> + Errore visualizzazione finestra: Non trovati i seguenti controlli: + +[CONTROLS] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="TutorialNotFound"> + Nessun tutorial disponibile al momento. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="GenericAlert"> + [MESSAGE] + </notification> + <notification name="GenericAlertYesCancel"> + [MESSAGE] + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Si"/> + </notification> + <notification name="BadInstallation"> + Si è verificato un errore durante l'aggiornamento di Second Life. Scarica l'ultima versione da secondlife.com. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + <notification name="LoginFailedNoNetwork"> + Errore di rete: non è stato possibile stabilire una connessione. +'[DIAGNOSTIC]' +Per favore controlla la tua connessione. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + <notification name="MessageTemplateNotFound"> + Il modello di messaggio [PATH] non è stato trovato. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + <notification name="WearableSave"> + Salva i cambiamenti all'attuale parte del corpo/abito? + <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Non salvare" yestext="Salva"/> + </notification> + <notification name="CompileQueueSaveText"> + C'è stato un problema importando il testo di uno script per la seguente ragione: [REASON]. Riprova più tardi. + </notification> + <notification name="CompileQueueSaveBytecode"> + C'è stato un problema importando lo script compilato per la seguente ragione: [REASON]. Riprova più tardi. + </notification> + <notification name="WriteAnimationFail"> + C'è stato un problema di scrittura dati dell'animazione. Riprova più tardi. + </notification> + <notification name="UploadAuctionSnapshotFail"> + C'è stato un problema importando la fotografia dell'asta per la seguente ragione: [REASON] + </notification> + <notification name="UnableToViewContentsMoreThanOne"> + Non è possibile vedere il contenuto di più di un elemento per volta. +Scegli solo un oggetto e riprova. + </notification> + <notification name="SaveClothingBodyChanges"> + Salva tutte le modifiche alle parti del corpo/abiti? + <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Non Salvare" yestext="Salva Tutto"/> + </notification> + <notification name="GrantModifyRights"> + Dare i diritti di modifica ad un altro residente gli consente di cambiare, cancellare o prendere QUALUNQUE oggetto che hai in Second Life. Fai MOLTA attenzione quando concedi questo permesso. +Vuoi davvero dare i diritti di modifica a [FIRST_NAME] [LAST_NAME]? + <usetemplate name="okcancelbuttons" notext="No" yestext="Si"/> + </notification> + <notification name="GrantModifyRightsMultiple"> + Dare i diritti di modifica ad un altro residente gli consente di cambiare QUALUNQUE oggetto che hai in Second Life. Fai MOLTA attenzione quando concedi questo permesso. +Vuoi davvero dare i diritti di modifica ai residenti selezionati? + <usetemplate name="okcancelbuttons" notext="No" yestext="Si"/> + </notification> + <notification name="RevokeModifyRights"> + Vuoi revocare i diritti di modifica dati a [FIRST_NAME] [LAST_NAME]? + <usetemplate name="okcancelbuttons" notext="No" yestext="Si"/> + </notification> + <notification name="RevokeModifyRightsMultiple"> + Vuoi revocare i permessi di modifica dati ai residenti selezionati? + <usetemplate name="okcancelbuttons" notext="No" yestext="Si"/> + </notification> + <notification name="UnableToCreateGroup"> + Non è possibile creare il gruppo. +[MESSAGE] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="PanelGroupApply"> + [NEEDS_APPLY_MESSAGE] +[WANT_APPLY_MESSAGE] + <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Ignora le modifiche" yestext="Applica le modifiche"/> + </notification> + <notification name="MustSpecifyGroupNoticeSubject"> + Devi specificare un oggetto per mandare una notice al gruppo. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="AddGroupOwnerWarning"> + Stai per aggiungere dei membri al ruolo [ROLE_NAME]. +Non si possono rimuovere membri da quel ruolo. +I membri devono dimettersi volontariamente dal ruolo. +Confermi l'operazione? + <usetemplate ignoretext="Quando si aggiungono membri al ruolo di proprietario" name="okcancelignore" notext="No" yestext="Si"/> + </notification> + <notification name="AssignDangerousActionWarning"> + Stai per aggiungere il potere '[ACTION_NAME]' al ruolo '[ROLE_NAME]'. + + *ATTENZIONE* + Ogni membro di un ruolo con questo potere può assegnare a sè stesso -- e a qualunque altro membro -- ruoli che hanno più poteri di quelli che hanno correntemente, potenzialmente consentendogli di avere quasi i poteri del proprietario. Accertati di sapere quello che stai facendo prima di assegnare questo potere. + +Aggiungi questo potere a '[ROLE_NAME]'? + <usetemplate name="okcancelbuttons" notext="No" yestext="Si"/> + </notification> + <notification name="AssignDangerousAbilityWarning"> + Stai per aggiungere il potere '[ACTION_NAME]' al ruolo '[ROLE_NAME]'. + + *ATTENZIONE* + Ogni membro di un ruolo con questo potere può assegnare a sè stesso -- e a qualunque altro membro -- tutti i poteri, elevandosi al livello di quasi proprietario. + +Aggiungi questo potere a '[ROLE_NAME]'? + <usetemplate name="okcancelbuttons" notext="No" yestext="Si"/> + </notification> + <notification name="ClickPublishHelpLand"> + Selezionare "Pubblica in Ricerca" +Marcando questo campo si mostrerà : +- questo terreno nei risultati di ricerca +- gli oggetti pubblici di questo terreno +- questo terreno nella ricerca web + </notification> + <notification name="ClickSoundHelpLand"> + I media e la musica possono essere fruiti solo all'interno del terreno. Le opzioni dei suoni e del voice possono essere limitati al terreno o potranno essere sentiti dai residenti al di fuori del terreno, a seconda della loro categoria di accesso. Vuoi andare alla Knowledge Base per ulteriori informazioni su come impostare queste opzioni? + <url name="url"> + https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=5046 + </url> + <usetemplate + name="okcancelbuttons" + yestext="Vai alla Knowledge Base" + notext="Chiudi" /> + </notification> + <notification name="ClickSearchHelpAll"> + I risultati della ricerca sono basati sul tipo di scheda nella quale ti trovi, la tua categoria di accesso, la categoria scelta e altri fattori. Per maggiori dettagli, vai alla Knowledge Base. + <url name="url"> + https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=4722 + </url> + <usetemplate + name="okcancelbuttons" + yestext="Vai alla Knowledge Base" + notext="Chiudi" /> + </notification> + <notification name="ClickPublishHelpLandDisabled"> + Non puoi rendere questo terreno visibile nella ricerca perchè è in una regione che non lo consente. + </notification> + <notification name="ClickPublishHelpAvatar"> + Scegliendo "Mostra in Ricerca" verrà mostrato: +- il mio profilo nei risultati della ricerca +- un link al mio profilo nelle pagine pubbliche del gruppo + </notification> + <notification name="ClickPartnerHelpAvatar"> + Puoi proporre o cancellare una partnership con un altro/a residente attraverso il sito web [SECOND_LIFE]. + +Vai al sito web di Second Life per ulteriori informazioni sulla partnership? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Vai alla pagina"/> + </notification> + <notification name="ClickUploadHelpPermissions"> + I tuoi permessi di base possono non funzionare nelle regioni più vecchie. + </notification> + <notification name="ClickWebProfileHelpAvatar"> + Se questo/a residente ha impostato una URL nel suo profilo puoi: + * Cliccare 'Carica' per vedere la pagina in questa finestra web. + * Cliccare Carica > 'nel browser esterno' per vedere la pagina nel vostro browser web preimpostato. + * Cliccare Carica > 'URL Principale' per ritornare alla pagina web del profile di questo/a Residente se hai cambiato pagina. + +Quando visiti il tuo profilo, puoi specificare qualunque URL come tuo profilo web e cliccare OK per impostarla. +Altri residenti possono visitare la URL che hai impostato cliccando sul tuo profilo. + </notification> + <notification name="JoinGroupCanAfford"> + Iscriversi a questo gruppo costa [COST]L$. +Vuoi proseguire? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Iscriviti"/> + </notification> + <notification name="JoinGroupCannotAfford"> + Iscriversi a questo gruppo costa [COST]L$. +Non hai abbastanza L$ per iscriverti a questo gruppo. + </notification> + <notification name="LandBuyPass"> + Pagando [COST]L$ puoi entrare in questa terra ('[PARCEL_NAME]') per [TIME] ore. Compri un pass? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="SalePriceRestriction"> + Il prezzo di vendita deve essere superiore a 0L$ se vendi a tutti. +Seleziona una vendita individuale per vendere a 0L$. + </notification> + <notification name="ConfirmLandSaleChange"> + Il terreno selezionato di [LAND_SIZE] m² sta per essere messo in vendita. +Il tuo prezzo di vendità è [SALE_PRICE]L$ ed è autorizzato alla vendita a [NAME]. + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="ConfirmLandSaleToAnyoneChange"> + ATTENZIONE: Cliccando 'vendi a tutti' rende il tuo terrono disponibile all'intera comunità di Second Life, anche non in questa regione. + +Il terreno selezionato di [LAND_SIZE] m² sta per essere messo in vendita. +Il tuo prezzo di vendità è [SALE_PRICE]L$ ed è autorizzato alla vendita a [NAME]. + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="ReturnObjectsDeededToGroup"> + Confermi di volere restituire tutti gli oggetti condivisi con il gruppo '[NAME]' di questo terreno agli inventari dei proprietari precedenti? + +*ATTENZIONE* Questo cancellerà gli oggetti non trasferibili ceduti al gruppo! + +Oggetti: [N] + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="ReturnObjectsOwnedByUser"> + Confermi di volere restituire tutti gli oggetti posseduti dal residente '[NAME]' in questo terreno al suo inventario? + +Oggetti: [N] + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="ReturnObjectsOwnedBySelf"> + Confermi di volere restituire tutti gli oggetti posseduti da te in questo terreno, di nuovo nel tuo inventario? + +Oggetti: [N] + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="ReturnObjectsNotOwnedBySelf"> + Confermi di volere restituire tutti gli oggetti di cui NON sei proprietario in questo terreno all'inventario dei rispettivi proprietari? +Gli oggetti trasferibili ceduti al gruppo verranno restituiti ai loro proprietari precedenti. + +*ATTENZIONE* Questo cancellerà gli oggetti non trasferibili ceduti al gruppo! + +Oggetti: [N] + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="ReturnObjectsNotOwnedByUser"> + Confermi di volere restituire tutti gli oggetti NON posseduti da [NAME] in questo terreno nell'inventario dei loro proprietari? +Gli oggetti trasferibili ceduti al gruppo verranno restituiti ai loro proprietari precedenti. + +*ATTENZIONE* Questo cancellerà gli oggetti non trasferibili ceduti al gruppo! + +Oggetti: [N] + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="ReturnAllTopObjects"> + Confermi di volere restituire tutti gli oggetti elencati nell'inventario dei loro proprietari? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="DisableAllTopObjects"> + Confermi di volere disabilitare tutti gli oggetti in questa regione? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="ReturnObjectsNotOwnedByGroup"> + Restituisci gli oggetti in questo terreno che NON sono condivisi con il gruppo [NAME] ai loro proprietari? + +Oggetti: [N] + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="UnableToDisableOutsideScripts"> + Non è possibile disabilitare gli script. +L'intera regione ha l'abilitazione danni. +Gli script devono essere autorizzati all'esecuzione affinchè le armi funzionino. + </notification> + <notification name="MustBeInParcel"> + Devi essere dentro il terreno per impostare il suo Punto di Atterraggio. + </notification> + <notification name="PromptRecipientEmail"> + Introduci un indirizzo email per il destinatario/i. + </notification> + <notification name="PromptSelfEmail"> + Introduci il tuo indirizzo email. + </notification> + <notification name="PromptMissingSubjMsg"> + Invia la foto via email con soggetto o messaggio predefinito? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="ErrorProcessingSnapshot"> + Errore nell'elaborazione della fotografia. + </notification> + <notification name="ErrorEncodingSnapshot"> + Errore nella codifica della fotografia. + </notification> + <notification name="ErrorUploadingPostcard"> + C'è stato un problema inviando la fotografia per il seguente motivo: [REASON] + </notification> + <notification name="ErrorUploadingReportScreenshot"> + C'è stato un problema importando la foto del rapporto per il seguente motivo: [REASON] + </notification> + <notification name="MustAgreeToLogIn"> + Devi accettare i Termini di Servizio prima di proseguire il collegamento con [SECOND_LIFE]. + </notification> + <notification name="CouldNotPutOnOutfit"> + Non è stato possibile indossare un equipaggiamento. +La cartella equipaggiamento non contiene abbigliamento, parti del corpo o attachment. + </notification> + <notification name="CannotWearTrash"> + Non puoi indossare abiti e parti del corpo che sono nel cestino + </notification> + <notification name="CannotWearInfoNotComplete"> + Non puoi indossare quell'elemento perchè non è ancora stato caricato. Riprova fra un minuto. + </notification> + <notification name="MustHaveAccountToLogIn"> + Qualcosa è rimasto vuoto. +Devi inserire sia il nome che il cognome del tuo avatar. + +Hai bisogno di un account per entrare in [SECOND_LIFE]. Ne vuoi creare uno adesso? + <usetemplate name="okcancelbuttons" notext="Riprova" yestext="Crea un nuovo account"/> + </notification> + <notification name="AddClassified"> + Gli annunci appaiono nella sezione 'Annunci' della ricerca nel database e su www.secondlife.com per una settimana. +Compila il tuo annuncio e clicca 'Pubblica...' per aggiungerlo al database. +Ti verrà chiesto un prezzo da pagare quando clicchi su Pubblica. +Pagare un prezzo più alto fa sì che il tuo annuncio compaia più in alto nella lista, e che sia più facile da trovare quando la gente ricerca per parole chiavi. + <usetemplate ignoretext="Mentre si aggiunge un annuncio" name="okcancelignore" notext="Annulla" yestext="OK"/> + </notification> + <notification name="DeleteClassified"> + Cancella annuncio '[NAME]'? +Non ci sono rimborsi per la tariffa pagata. + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="ClassifiedSave"> + Salva le modifiche all'annuncio [NAME]? + <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Non salvare" yestext="Salva"/> + </notification> + <notification name="DeleteAvatarPick"> + Cancella il favorito [PICK]? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="PromptGoToEventsPage"> + Vai alla pagina degli eventi di [SECOND_LIFE]? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="SelectProposalToView"> + Scegli una proposta da vedere. + </notification> + <notification name="SelectHistoryItemToView"> + Scegli un item storico da vedere. + </notification> + <notification name="ResetShowNextTimeDialogs"> + Vuoi riabilitare tutti le finestre di popup, che precedentemente hai indicato che 'Non vuoi vedere più'? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="SkipShowNextTimeDialogs"> + Vuoi disabilitare tutti i popup che possono essere ignorati? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="CacheWillClear"> + La Cache verrà pulita dopo il riavvio di [SECOND_LIFE]. + </notification> + <notification name="CacheWillBeMoved"> + La Cache verrà traslocata dopo il riavvio di [SECOND_LIFE]. +Nota: Questo pulirà la cache. + </notification> + <notification name="ChangeConnectionPort"> + Le impostazioni delle porte avranno effetto dopo il riavvio di [SECOND_LIFE]. + </notification> + <notification name="ChangeSkin"> + La nuova pelle apparità dopo il riavvio di [SECOND_LIFE]. + </notification> + <notification name="GoToAuctionPage"> + Vai alla pagina web [SECOND_LIFE] per vedere i dettagli dell'asta oppure fai un'offerta? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="SaveChanges"> + Salva le modifiche? + <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Non salvare" yestext="Salva"/> + </notification> + <notification name="GestureSaveFailedTooManySteps"> + Il salvataggio della Gesture è fallito. +La gesture ha troppi passi. +Prova a togliere qualche passo e quindi risalva. + </notification> + <notification name="GestureSaveFailedTryAgain"> + Il salvataggio della gesture è fallito. Riprova fra un minuto. + </notification> + <notification name="GestureSaveFailedObjectNotFound"> + Non è possibile salvare la gesture perchè non è stato trovato l'oggetto o l'inventario associato. +L'oggetto potrebbe essere troppo lontano oppure essere stato cancellato. + </notification> + <notification name="GestureSaveFailedReason"> + C'è stato un problema salvando la gesture a causa del seguente motivo: [REASON]. Riprova a salvare la gesture più tardi. + </notification> + <notification name="SaveNotecardFailObjectNotFound"> + Non è possibile salvare la notecard perchè non è stato trovato l'oggetto o l'inventario associato. +L'oggetto potrebbe essere troppo lontano oppure essere stato cancellato. + </notification> + <notification name="SaveNotecardFailReason"> + C'è stato un problema salvando la notecard a causa del seguente motivo: [REASON]. Riprova a salvare la notecard più tardi. + </notification> + <notification name="ScriptCannotUndo"> + Non è stato possibile annullare tutti i cambiamenti nella tua versione dello script. +Vuoi ripristinare l'ultima versione salvata sul server? +(**Attenzione** Questa operazione non è reversibile) + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="SaveScriptFailReason"> + C'è stato un problema salvando lo script a causa del seguente motivo : [REASON]. Riprova a salvare lo script più tardi. + </notification> + <notification name="SaveScriptFailObjectNotFound"> + Non è stato possibile salvare lo script perchè l'oggetto che lo contiene non è stato trovato. +L'oggetto potrebbe essere troppo lontano oppure essere stato cancellato. + </notification> + <notification name="SaveBytecodeFailReason"> + C'è stato un problema salvando lo script compilato a causa del seguente motivo: [REASON]. Riprova a salvare lo script più tardi. + </notification> + <notification name="CouldNotStartStopScript"> + Non è stato possibile lanciare o fermare lo script perchè l'oggetto che lo contiene non è stato trovato. +L'oggetto potrebbe essere troppo lontano oppure essere stato cancellato. + </notification> + <notification name="CannotDownloadFile"> + Non è stato possibile scaricare il file + </notification> + <notification name="CannotWriteFile"> + Non è stato possibile scrivere il file [[FILE]] + </notification> + <notification name="UnsupportedHardware"> + Attenzione: Il tuo sistema non soddisfa i requisiti minimi per il funzionamento Second Life. Se continui ad usare Second Life, potresti osservare una lentezza eccessiva. Sfortunatamente non possiamo fornire supporto tecnico per configurazioni di sistema non supportate. + +MINSPECS +Vuoi visitare [_URL] per maggiori informazioni? + <url name="url" option="0"> + http://secondlife.com/support/sysreqs.php?lang=it + </url> + <usetemplate ignoretext="Mentre sto individuando hardware non supportato" name="okcancelignore" notext="No" yestext="Si"/> + </notification> + <notification name="UnknownGPU"> + Il tuo sistema contiene una scheda grafica che attualmente non supportiamo. +Questo succede spesso con nuovi prodotti che non siamo riusciti a verificare. Probabilmente Second Life funzionerà correttamente ma forse dovrai modificare le impostazioni grafiche in modo appropriato. +(Modifica > Preferenze > Grafica). + <form name="form"> + <ignore name="ignore" text="Mentre stavo valutando una scheda grafica sconosciuta"/> + </form> + </notification> + <notification name="DisplaySettingsNoShaders"> + [SECOND_LIFE] si è bloccata mentre stava inizializzando i driver grafici. +La qualità grafica verrà impostata al valore basso per evitare alcuni degli errori più comuni con i driver. +Questo però disabiliterà alcune funzioni grafiche. +Ti raccomandiamo di aggiornare i driver della tua scheda grafica. +La qualità grafica può essere aumentara in Preferenze > Grafica. + </notification> + <notification name="RegionNoTerraforming"> + La regione [REGION] non consente di terraformare. + </notification> + <notification name="CannotCopyWarning"> + Non hai il permesso di copiare questo elemento e lo perderai dal tuo inventario se lo regali. +Confermi veramente di offrire questo elemento? + <usetemplate name="okcancelbuttons" notext="No" yestext="Si"/> + </notification> + <notification name="CannotGiveItem"> + Impossibile consegnare l'elemento dell'inventario. + </notification> + <notification name="TransactionCancelled"> + La transazione è stata annullata. + </notification> + <notification name="TooManyItems"> + Non è possibile dare più di 42 elementi in un singolo trasferimento di inventario. + </notification> + <notification name="NoItems"> + Non hai i permessi di trasferimento per gli elementi selezionati. + </notification> + <notification name="CannotCopyCountItems"> + Non hai i permessi di copia per copiare [COUNT] +degli elementi selezionati. Perderai questi elementi dal tuo inventario. +Vuoi veramente perdere questi elementi? + <usetemplate name="okcancelbuttons" notext="No" yestext="Si"/> + </notification> + <notification name="CannotGiveCategory"> + Non hai i permessi per trasferire la cartella selezionata. + </notification> + <notification name="FreezeAvatar"> + Immobilizza questo avatar? +Non potrà temporaneamente muoversi, chiacchierare in chat, o interagire con il mondo. + <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Smobilizza" yestext="Immobilizza"/> + </notification> + <notification name="FreezeAvatarFullname"> + Immobilizza [AVATAR_NAME]? +Non potrà temporaneamente muoversi, chiacchierare in chat, o interagire con il mondo. + <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Smobilizza" yestext="Immobilizza"/> + </notification> + <notification name="EjectAvatarFullname"> + Espelli [AVATAR_NAME] dal tuo terreno? + <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Espelli e blocca" yestext="Espelli"/> + </notification> + <notification name="EjectAvatarNoBan"> + Espelli questo avatar dal tuo terreno? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Espelli"/> + </notification> + <notification name="EjectAvatarFullnameNoBan"> + Espelli [AVATAR_NAME] dal tuo terreno? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Espelli"/> + </notification> + <notification name="AcquireErrorTooManyObjects"> + ERRORE DI ACQUISIZIONE: hai selezionato troppi oggetti. + </notification> + <notification name="AcquireErrorObjectSpan"> + ERRORE DI ACQUISIZIONE: Gli oggetti sono a cavallo di più di una regione. +Sposta tutti gli oggetti che vuoi acquisire su una sola regione. + </notification> + <notification name="PromptGoToCurrencyPage"> + [EXTRA] + +Vuoi andare su [URL] per maggiori informazioni su come acquistare denaro? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="UnableToLinkObjects"> + Impossibile unire questi [COUNT] oggetti. +Puoi unire al massimo [MAX] oggetti. + </notification> + <notification name="CannotLinkIncompleteSet"> + Puoi unire soltanto un insieme completo di oggetti, e devi selezionare più di un oggetto. + </notification> + <notification name="CannotLinkModify"> + Impossibile unire perchè non hai il diritto di modifica su tutti gli oggetti. + +Accertati che nessuno sia bloccato e che li possiedi tutti. + </notification> + <notification name="CannotLinkDifferentOwners"> + Impossibile unire perche non tutti gli oggetti hanno lo stesso proprietario. + +Accertati di possedere tutti gli oggetti selezionati. + </notification> + <notification name="NoFileExtension"> + Manca l'estensione per il file: '[FILE]' + +Accertati che il file abbia una estensione corretta. + </notification> + <notification name="InvalidFileExtension"> + L'estensione [EXTENSION] del file non è valida +Attese [VALIDS] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="CannotUploadSoundFile"> + Impossibile aprire in lettura il file di suono importato: +[FILE] + </notification> + <notification name="SoundFileNotRIFF"> + Il file audio non sembra essere di tipo RIFF WAVE: +[FILE] + </notification> + <notification name="SoundFileNotPCM"> + Il file audio non sembra essere di tipo PCM WAVE: +[FILE] + </notification> + <notification name="SoundFileInvalidChannelCount"> + Il file ha un numero sbagliato di canali (deve essere mono oppure stereo): +[FILE] + </notification> + <notification name="SoundFileInvalidSampleRate"> + Il file non sembra essere della frequenza di campionamento supportata (deve essere 44.1k): +[FILE] + </notification> + <notification name="SoundFileInvalidWordSize"> + Il file non sembra avere una dimensione della parola supportata (deve essere a 8 o a 16 bit): +[FILE] + </notification> + <notification name="SoundFileInvalidHeader"> + Impossibile trovare il frammento 'data' nell'intestazione WAV: +[FILE] + </notification> + <notification name="SoundFileInvalidTooLong"> + Il file audio è troppo lungo (deve essere al massimo 10 secondi): +[FILE] + </notification> + <notification name="ProblemWithFile"> + Problemi con il file [FILE]: + +[ERROR] + </notification> + <notification name="CannotOpenTemporarySoundFile"> + Impossibile aprire in scrittura il file temporaneamente compresso: [FILE] + </notification> + <notification name="UnknownVorbisEncodeFailure"> + Errore di codifica Vorbis sconosciuta per: [FILE] + </notification> + <notification name="CannotEncodeFile"> + Impossibile codificare il file: [FILE] + </notification> + <notification name="CorruptResourceFile"> + File risorsa corrotto: [FILE] + </notification> + <notification name="UnknownResourceFileVersion"> + Versione di risorsa Linden sconosciuta nel file: [FILE] + </notification> + <notification name="UnableToCreateOutputFile"> + Impossibile creare il file in uscita: [FILE] + </notification> + <notification name="DoNotSupportBulkAnimationUpload"> + Non supportiamo attualmente l'upload multiplo di file di animazione. + </notification> + <notification name="CannotUploadReason"> + Impossibile importare il file [FILE] a causa del seguente motivo: [REASON] +Riprova più tardi. + </notification> + <notification name="CannotCreateLandmarkNotOwner"> + Non puoi creare qui un landmark perchè il proprietario di questo terreno non lo consente. + </notification> + <notification name="CannotRecompileSelectObjectsNoScripts"> + Impossibile fare la 'ricompilazione'. +Seleziona un oggetto con uno script. + </notification> + <notification name="CannotRecompileSelectObjectsNoPermission"> + Impossibile fare la 'ricompilazione'. + +Seleziona oggetti con script su cui hai i permessi di modifica. + </notification> + <notification name="CannotResetSelectObjectsNoScripts"> + Impossibile fare 'ripristino'. + +Seleziona oggetti con degli script. + </notification> + <notification name="CannotResetSelectObjectsNoPermission"> + Impossibile fare 'ripristino'. + +Seleziona oggetti con script su cui hai i permessi di modifica. + </notification> + <notification name="CannotSetRunningSelectObjectsNoScripts"> + Impossibile mettere 'in esecuzione' gli script. + +Seleziona oggetti con script. + </notification> + <notification name="CannotSetRunningNotSelectObjectsNoScripts"> + Impossibile impostare script a 'non in esecuzione'. + +Seleziona oggetti con script. + </notification> + <notification name="NoFrontmostFloater"> + Non c'è nessuna finestra in evidenza (in primo piano) da salvare. + </notification> + <notification name="SeachFilteredOnShortWords"> + La tua ricerca è stata modificata. +Le parole troppo corte sono state rimosse. + +Ho cercato: [FINALQUERY] + </notification> + <notification name="SeachFilteredOnShortWordsEmpty"> + Le parole che hai usato per la ricerca sono troppo corte e non è stato possibile iniziare la ricerca. + </notification> + <notification name="CouldNotTeleportReason"> + Impossibile eseguire il teleport. +[REASON] + </notification> + + <notification name="invalid_tport"> +C'è stato un problema nell'elaborare la tua richiesta di teletrasporto. Potresti aver bisogno di ricollegarti prima di poter usare il teletrasporto. Se continui ad avere problemi, controlla per favore le FAQ del Supporto Tecnico a: +www.secondlife.com/support + </notification> + <notification name="invalid_region_handoff"> +C'è stato un problema nell'elaborare il cambio di regione. Potresti aver bisogno di ricollegarti prima di poterlo effetuare. Se continui ad avere problemi, controlla per favore le FAQ del Supporto Tecnico a: +www.secondlife.com/support + </notification> + <notification name="blocked_tport"> +Spiacenti, il teletrasporto è bloccato al momento. Prova di nuovo tra pochi istanti. Se ancora non potrai teletrasportarti, per favore scollegati e ricollegati per risolvere il problema. + </notification> + <notification name="nolandmark_tport"> +Spiacenti, ma il sistema non riesce a localizzare la destinazione del landmark + </notification> + <notification name="timeout_tport"> +Spiacenti, il sistema non riesce a completare il teletrasporto. Riprova tra un attimo. + </notification> + <notification name="noaccess_tport"> +Spiacenti, ma non hai accesso nel luogo di destinazione richiesto. + </notification> + <notification name="missing_attach_tport"> +Gli oggetti da te indossati non sono ancoa arrivati. Attendi ancora qualche secondo o scollegati e ricollegati prima di provare a teleportarti. + </notification> + <notification name="too_many_uploads_tport"> +La gestione dati della regione è al momento occupata e la tua richiesta di teletrasporto non può essere soddisfatta entro breve tempo. Per favore prova di nuovo tra qualche minuto o spostati in un'area meno affollata. + </notification> + <notification name="expired_tport"> +Spiacenti, il sistema non riesce a soddisfare la tua richiesta di teletrasporto entro un tempo ragionevole. Riprova tra qualche minuto. + </notification> + <notification name="expired_region_handoff"> +Spiacenti, il sistema non riesce a completare il cambio di regione entro un tempo ragionevole. Riprova tra qualche minuto. + </notification> + <notification name="no_host"> +Impossibile trovare la destinazione del teletrasporto; potrebbe essere temporaneamente non accessibile o non esistere più. Riprovaci tra qualche minuto. + </notification> + <notification name="no_inventory_host"> +L'inventario è temporaneamente inaccessibile. + </notification> + + <notification name="CannotSetLandOwnerNothingSelected"> + Impossibile impostare il proprietario del terreno: +Nessun terreno selezionato. + </notification> + <notification name="CannotSetLandOwnerMultipleRegions"> + Impossibile forzare la proprietà del terreno perchè la selezione si estende su diverse regioni. Seleziona una area più piccola e riprova. + </notification> + <notification name="ForceOwnerAuctionWarning"> + Questo terreno è venduta all'asta. Forzare la proprietà cancellerà l'asta e potrebbe disturbare residenti che abbiano già fatto offerte. +Vuoi forzare la proprietà ? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="CannotContentifyNothingSelected"> + Impossibile fare la contentificazione: +Nessun terreno selezionato. + </notification> + <notification name="CannotContentifyNoRegion"> + Impossibile fare la contentificazione: +Nessuna regione selezionata. + </notification> + <notification name="CannotReleaseLandNothingSelected"> + Impossibile abbandonare il terreno: +Nessun terreno selezionato. + </notification> + <notification name="CannotReleaseLandNoRegion"> + Impossibile abbandonare il terreno: +Non riesco a trovare la regione. + </notification> + <notification name="CannotBuyLandNothingSelected"> + Impossibile comprare il terreno: +Nessun terreno selezionato. + </notification> + <notification name="CannotBuyLandNoRegion"> + Impossibile comprare il terreno: +Non riesco a trovare la regione dove è situato il terreno. + </notification> + <notification name="CannotCloseFloaterBuyLand"> + Non puoi chiudere la finestra di Acquisto Terreno finchè Second Life non stima il prezzo di questa transazione. + </notification> + <notification name="CannotDeedLandNothingSelected"> + Impossibile cedere il terreno: +Nessun terreno selezionato. + </notification> + <notification name="CannotDeedLandNoGroup"> + Impossibile cedere il terreno: +Nessun gruppo selezionato. + </notification> + <notification name="CannotDeedLandNoRegion"> + Impossibile cedere il terreno: +Non riesco a trovare la regione dove è situato il terreno. +Usa Strumenti -> Segnala Bug per segnalare il problema. + </notification> + <notification name="CannotDeedLandMultipleSelected"> + Impossibile cedere il terreno: +Hai selezionato più di un terreno. + +Prova a selezionare un solo terreno. + </notification> + <notification name="ParcelCanPlayMedia"> + Questo posto offre contenuto multimediale in streaming. +Ricevere lo streaming multimediale richiede una connessione internet veloce. + +Vuoi vedere il contenuto multimediale quando è disponibile? +(Puoi cambiare questa opzione in seguito scegliendo Preferenze > Audio & Video.) + <usetemplate name="okcancelbuttons" notext="Disabilita" yestext="Abilita MultiMedia"/> + </notification> + <notification name="CannotDeedLandWaitingForServer"> + Impossibile cedere il terreno: +Sto aspettando il server per segnalare la proprietà . + +Riprova di nuovo. + </notification> + <notification name="CannotDeedLandNoTransfer"> + Impossibile cedere il terreno: +La regione [REGION] non consente il trasferimento di terreni. + </notification> + <notification name="CannotReleaseLandWatingForServer"> + Impossibile abbandonare il terreno: +Sto aspettando il server per aggiornare le informazioni del terreno. + +Riprova fra poco. + </notification> + <notification name="CannotReleaseLandSelected"> + Impossibile abbandonare il terreno: +Non possiedi tutti i terreni selezionati. + +Seleziona un solo terreno. + </notification> + <notification name="CannotReleaseLandDontOwn"> + Impossibile abbandonare il terreno: +Non hai i permessi per rilasciare questo terreno. +I terreni di tua proprietà vengono visualizzati in verde. + </notification> + <notification name="CannotReleaseLandRegionNotFound"> + Impossibile abbandonare il terreno: +Non riesco a trovare la regione dove è situato il terreno. + +Usa Strumenti > Segnala Bug segnalare questo problema. + </notification> + <notification name="CannotReleaseLandNoTransfer"> + Impossibile abbandonare il terreno: +La regione [REGION] non consente il trasferimento di terreni. + </notification> + <notification name="CannotReleaseLandPartialSelection"> + Impossibile abbandonare il terreno: +Devi selezionare un terreno intero per rilasciarla. + +Seleziona un terreno intero, oppure dividi prima il tuo terreno. + </notification> + <notification name="ReleaseLandWarning"> + Stai per rilasciare [AREA] m² di terreno. +Rilasciare questo appezzamento di terreno lo toglierà dalle tue proprietà , ma non ti verranno dati L$. + +Rilasciare questo terreno? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="CannotDivideLandNothingSelected"> + Impossibile dividere il terreno: + +Non sono stati selezionati terreni. + </notification> + <notification name="CannotDivideLandPartialSelection"> + Impossibile dividere il terreno: + +Hai selezionato unintero terreno. +Prova a selezionare unappezzamento di terreno. + </notification> + <notification name="LandDivideWarning"> + La suddivisione di questo terreno lo dividerà in due parti ed ognuna potrà avere le sue impostazioni. Alcune impostazioni verranno reimpostate ai valori iniziali dopo l'operazione. + +Dividi il terreno? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="CannotDivideLandNoRegion"> + Impossibile dividere il terreno: +Non riesco a trovare la regione dove è situato. + +Usa Strumenti -> Segnala Bug per segnalare il problema. + </notification> + <notification name="CannotJoinLandNoRegion"> + Impossibile unire il terreno: +Non riesco a trovare la regione dove è situato. + +Usa Strumenti -> Segnala Bug per segnalare il problema. + </notification> + <notification name="CannotJoinLandNothingSelected"> + Impossibile unire il terreno: +Non hai selezionato terreno. + </notification> + <notification name="CannotJoinLandEntireParcelSelected"> + Impossibile unire il terreno: +Hai selezionato un solo terreno. + +Devi selezionare il terreno comprendendo entrambi gli appezzamenti. + </notification> + <notification name="CannotJoinLandSelection"> + Impossibile unire il terreno: +Devi selezionare più di un terreno. + +Devi selezionare il terreno comprendendo entrambi gli appezzamenti. + </notification> + <notification name="JoinLandWarning"> + Unire questi appezzamenti creerà un terreno più grande a partire da tutti gli appezzamenti che si intersecano nel rettangolo selezionato. +Dovrai reimpostare il nome e le opzioni del nuovo terreno. + +Unisci il terreno? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="ShowOwnersHelp"> + Mostra i proprietari: +colora i terreni per mostrare i diversi tipi di proprietari. + +Verde = il tuo terreno +Acqua = la terra del tuo gruppo +Rosso = posseduta da altri +Giallo = in vendita +Viola = in asta +Grigia = pubblica + </notification> + <notification name="ConfirmNotecardSave"> + Questa notecard deve essere salvata prima che l'elemento possa essere copiato o visualizzato. Salva la notecard? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="ConfirmItemCopy"> + Copia questo elemento nel tuo inventario? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Copia"/> + </notification> + <notification name="ResolutionSwitchFail"> + Non sono riuscito a cambiare la risoluzione al valore [RESX] x [RESY] + </notification> + <notification name="ErrorUndefinedGrasses"> + Errore: Erba sconosciuta: [SPECIES] + </notification> + <notification name="ErrorUndefinedTrees"> + Errore: Alberi sconosciuti: [SPECIES] + </notification> + <notification name="CannotSaveWearableOutOfSpace"> + Impossibile salvare '[NAME]' nel file di oggetti indossabili. Dovrai liberare dello spazio sul tuo computer e salvare di nuovo. + </notification> + <notification name="CannotSaveToAssetStore"> + Impossibile salvare [NAME] nel database centrale. +Normalmente questo problema è temporaneo. Riprova a generare la parte indossabile e a salvarla fra qualche minuto. + +Se questo problema persiste, clicca sul menu a tendina 'Strumenti > Segnala Bug' e fornisci i dettagli sulla tua configurazione di rete. + </notification> + <notification name="YouHaveBeenLoggedOut"> + Sei stato sconnesso da [SECOND_LIFE]: + [MESSAGE] +Puoi ancora vedere i tuoi IM e la chat cliccando 'Vedi IM & Chat'. Altrimenti, clicca 'Esci' per uscire immediatamente da [SECOND_LIFE]. + <usetemplate name="okcancelbuttons" notext="Esci" yestext="Vedi IM & Chat"/> + </notification> + <notification name="OnlyOfficerCanBuyLand"> + Impossibile comprare terreno per il gruppo: +Non hai i permessi per comprare il terreno per il tuo gruppo attivo. + </notification> + <notification label="Aggiungi Amico" name="AddFriend"> + Gli amici possono autorizzarsi a vedersi l'un l'altro sulla mappa e sapere quando sono collegati. + +Offri l'amicizia a [NAME]? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification label="Aggiungi Amico" name="AddFriendWithMessage"> + Gli amici possono autorizzarsi a vedersi l'un l'altro sulla mappa e sapere quando sono collegati. + +Offri l'amicizia a [NAME]? + <form name="form"> + <input name="message" type="text"> + Vorresti essere mio amico? + </input> + <button name="Offer" text="OK"/> + <button name="Cancel" text="Annulla"/> + </form> + </notification> + <notification name="RemoveFromFriends"> + Vuoi rimuovere remove [FIRST_NAME] [LAST_NAME] dalla lista dei tuoi amici? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="RemoveMultipleFromFriends"> + Vuoi rimuovere gli amici selezionati dalla lista dei tuoi amici? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="GodDeleteAllScriptedPublicObjectsByUser"> + Confermi di volere cancellare tutti gli oggetti scriptati della proprietà di +** [AVATAR_NAME] ** +su tutti gli altri terreni di questa sim? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="GodDeleteAllScriptedObjectsByUser"> + Confermi la CANCELLAZIONE di TUTTI gli oggetti scriptati posseduti da +** [AVATAR_NAME] ** +su TUTTI I TERRENI di questa sim? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="GodDeleteAllObjectsByUser"> + Confermi la CANCELLAZIONE di TUTTI gli oggetti (scriptati o no) posseduti da +** [AVATAR_NAME] ** +su TUTTI I TERRENI di questa sim? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="BlankClassifiedName"> + Devi specificare un nome per il tuo annuncio. + </notification> + <notification name="MinClassifiedPrice"> + Il prezzo da pagare per essere messo in lista deve essere almeno [MIN_PRICE]L$. + +Introduci un prezzo più alto. + </notification> + <notification name="ConfirmObjectDeleteLock"> + Almeno uno degli elementi selezionati è bloccato. + +Confermi di voler cancellare questi elementi? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="ConfirmObjectDeleteNoCopy"> + Almeno uno degli elementi selezionati non è copiabile. + +Confermi di voler cancellare questi elementi? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="ConfirmObjectDeleteNoOwn"> + Non possiedi neanche uno degli oggetti selezionati. + +Confermi di voler cancellare questi elementi? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="ConfirmObjectDeleteLockNoCopy"> + Almeno un oggetto è bloccato. +Almeno un oggetto è non copiabile. + +Confermi di voler cancellare questi elementi? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="ConfirmObjectDeleteLockNoOwn"> + Almeno un oggetto è bloccato. +Non possiedi neanche un oggetto. + +Confermi di voler cancellare questi elementi? + <usetemplate name="okcancelbuttons" notext="Cancella" yestext="OK"/> + </notification> + <notification name="ConfirmObjectDeleteNoCopyNoOwn"> + Almeno un oggetto non è copiabile. +Non possiedi neanche un oggetto. + +Confermi di voler cancellare questi elementi? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="ConfirmObjectDeleteLockNoCopyNoOwn"> + Almeno un oggetto è bloccato. +Almeno un oggetto è non copiabile. +Non possiedi neanche un oggetto. + +Confermi di voler cancellare questi elementi? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="ConfirmObjectTakeLock"> + Almeno un oggetto è bloccato. + +Confermi di voler prendere questi elementi? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="ConfirmObjectTakeNoOwn"> + Non possiedi tutti gli oggetti che stai prendendo. +Se continui, verranno applicate i permessi per il prossimo proprietario e di conseguenza potrebbero venire ristrette le tue possibilità di modificarli o di copiarli. + +Confermi di voler prendere questi elementi? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="ConfirmObjectTakeLockNoOwn"> + Almeno un oggetto è bloccato. +Non possiedi tutti gli oggetti che stai prendendo. +Se continui, verranno applicate i permessi per il prossimo proprietario e di conseguenza potrebbero venire ristrette le tue possibilità di modificarli o di copiarli. +Puoi comunque prendere gli oggetti selezionati. + +Confermi di voler prendere questi elementi? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="CantBuyLandAcrossMultipleRegions"> + Impossibile comprare il terreno perchè la selezione comprende più regioni. + +Seleziona un'area più piccola e riprova. + </notification> + <notification name="DeedLandToGroup"> + Cedendo questo terreno al gruppo sara richiesto ai componenti di avere e di mantenere il terreno con un credito sufficiente. +Il prezzo di acquisto del terreno non è rifondibile al proprietario. +Se una terreno ceduto al gruppo viene venduto, il prezzo di vendita verrà diviso in parti uguali fra i membri del gruppo. + +Cedi questo terreno di [AREA] m² al gruppo '[GROUP_NAME]'? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="DeedLandToGroupWithContribution"> + Cedendo questo terreno al gruppo sara richiesto hai componenti di avere e di mantenere il terreno con un credito sufficiente. +La cessione include un contributo simultaneo di terreno al gruppo da '[FIRST_NAME] [LAST_NAME]'. +Il prezzo di acquisto del terreno non è rifondibile al proprietario. +Se una terreno ceduto al gruppo viene venduto, il prezzo di vendita viene diviso in parti uguali fra i membri del gruppo. + +Cedi questo terreno di [AREA] m² al gruppo '[GROUP_NAME]'? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="DisplaySetToSafe"> + Le impostazioni dello schermo sono state impostate a valori di sicurezza perchè hai specificato l'opzione -safe. + </notification> + <notification name="DisplaySetToRecommended"> + Le impostazioni dello schermo sono state impostate a valori ottimali basati sulla tua configurazione di sistema. + </notification> + <notification name="ErrorMessage"> + [ERROR_MESSAGE] + </notification> + <notification name="AvatarMoved"> + La tua locazione [TYPE] non è al momento disponibile. +[HELP] +Il tuo avatar è stato spostato in una regione vicina. + </notification> + <notification name="ClothingLoading"> + I tuoi vestiti stanno ancora scaricandosi. +Puoi usare [SECOND_LIFE] normalmente e gli altri utenti ti vedranno correttamente. + <form name="form"> + <ignore name="ignore" text="se gli abiti ci impiegano troppo tempo a scaricarsi"/> + </form> + </notification> + <notification name="FirstRun"> + L'installazione di [SECOND_LIFE] è completata. + +Se questa è la prima volta che usi [SECOND_LIFE], avari bisogno di creare un account prima di poterti collegare. +Vai su www.secondlife.com per creare un nuovo account? + <usetemplate name="okcancelbuttons" notext="Continua" yestext="Nuovo Account..."/> + </notification> + <notification name="LoginPacketNeverReceived"> + Ci sono stati problemi durante la connessione. Potrebbero esserci problemi con la tua connessione ad internet oppure con i server di Second Life. + +Puoi controllare la tua connessione internet e riprovare fra qualche minuto, oppure cliccare su Aiuto per collegarti al nostro sito di supporto, oppure cliccare teleporta per cercare di teleportarti a casa. + <form name="form"> + <button name="OK" text="OK"/> + <button name="Help" text="Aiuto"/> + <button name="Teleport" text="Teleportati"/> + </form> + </notification> + <notification name="WelcomeChooseSex"> + Il tuo avatar apparirà fra un attimo. + +Usa le frecce per camminare. +Premi F1 in qualunque momento per aiuto o per apprendere altre cose su [SECOND_LIFE]. +Scegli l'avatar maschile o femminile. Puoi sempre cambiare idea più tardi. + <usetemplate name="okcancelbuttons" notext="Femminile" yestext="Maschile"/> + </notification> + <notification name="NotEnoughCurrency"> + [NAME] [PRICE]L$ Non hai abbastanza L$ per farlo. + </notification> + <notification name="GrantedModifyRights"> + Ti sono stati accordati i privilegi di modifica degli oggetti di [FIRST_NAME] [LAST_NAME]. + </notification> + <notification name="RevokedModifyRights"> + Ti sono stati revocati i privilegi di modifica degli oggetti di [FIRST_NAME] [LAST_NAME]. + </notification> + <notification name="FlushMapVisibilityCaches"> + Questo reinizializzerà la cache della mappa di questa regione. +Funzione usata solo per il debug. +(Per la produzione, attendere 5 minuti, dopo di che tutte le mappe di ognuno si aggiorneranno dopo la loro riconnessione) + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="BuyOneObjectOnly"> + Non è possibile acquistare più di un oggetto alla volta. Riprova selezionando un solo oggetto. + </notification> + <notification name="OnlyCopyContentsOfSingleItem"> + Impossibile copiare il contenuto di più di un elemento alla volta. +Scegli solo un oggetto e riprova. + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="KickUsersFromRegion"> + Teleporta a casa tutti i residenti in questa regione? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="EstateObjectReturn"> + Confermi di voler restituire gli oggetti di proprietà di [USER_NAME] ? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="InvalidTerrainBitDepth"> + Impossibile impostare le texture della regione: +La texture del terreno [TEXTURE_NUM] ha una profondità di bit pari a [TEXTURE_BIT_DEPTH] non corretta. + +Sostituisci la texture [TEXTURE_NUM] con una a 24-bit 512x512 o una immagine più piccola e quindi clicca nuovamente su "Applica". + </notification> + <notification name="InvalidTerrainSize"> + Impossibile impostare le texture di regione: +La texture del terreno [TEXTURE_NUM] è troppo grande se a [TEXTURE_SIZE_X]x[TEXTURE_SIZE_Y]. + +Sostituisci la texture [TEXTURE_NUM] con una a 24-bit 512x512 oppure con una immagine più piccola e quindi clicca di nuovo "Applica". + </notification> + <notification name="RawUploadStarted"> + Importazione iniziata. Può impiegare fino a due minuti, a seconda della velocità della tua connessione. + </notification> + <notification name="ConfirmBakeTerrain"> + Vuoi veramente impostare come base il terreno corrente, impostarlo come riferimento per i limiti dei rialzi/abbassamenti di tutto il territorio ed il suo valore impostato come base per lo strumento 'Ripristina'? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="MaxAllowedAgentOnRegion"> + Puoi avere al massimo [MAX_AGENTS] residenti consentiti. + </notification> + <notification name="MaxBannedAgentsOnRegion"> + Puoi avere al massimo [MAX_BANNED] residenti bloccati. + </notification> + <notification name="MaxAgentOnRegionBatch"> + E' fallito il tentativo di aggiungere [NUM_ADDED] avatar: +Eccede il [MAX_AGENTS] [LIST_TYPE] limite di [NUM_EXCESS]. + </notification> + <notification name="MaxAllowedGroupsOnRegion"> + Puoi avere al massimo [MAX_GROUPS] gruppi. + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Imposta come predefinito"/> + </notification> + <notification name="MaxManagersOnRegion"> + Puoi avere al massimo [MAX_MANAGER] manager della proprietà immobiliare. + </notification> + <notification name="OwnerCanNotBeDenied"> + Impossibile aggiungere i proprietari della proprietà immobiliare alla lista dei residenti bloccati. + </notification> + <notification name="CanNotChangeAppearanceUntilLoaded"> + Impossibile cambiare l'aspetto fisico finchè gli abiti e i vestiti non sono caricati. + </notification> + <notification name="ClassifiedMustBeAlphanumeric"> + Il nome del tuo annuncio deve iniziare con una lettera da A a Z oppure con un numero. +Non sono consentiti caratteri di punteggiatura. + </notification> + <notification name="CantSetBuyObject"> + Impossibile impostare 'Compra l'oggetto', perchè l'oggetto non è in vendita. +Imposta l'oggetto per la vendita e riprova. + </notification> + <notification name="FinishedRawDownload"> + Hai terminato di scaricare il file del terreno nella cartella: +[DOWNLOAD_PATH]. + </notification> + <notification name="DownloadWindowsMandatory"> + E' disponibile una nuova versione di [SECOND_LIFE]. +[MESSAGE] +Devi scaricare questo aggiornamento per usare [SECOND_LIFE]. + <usetemplate name="okcancelbuttons" notext="Esci" yestext="Scarica l'aggiornamento"/> + </notification> + <notification name="DownloadWindows"> + E' disponibile una versione aggiornata di [SECOND_LIFE]. +[MESSAGE] +Questo aggiornamento non è obbligatorio, ma ti suggeriamo di installarlo per migliorarne le prestazioni e la stabilità . + <usetemplate name="okcancelbuttons" notext="Continua" yestext="Scarica l'aggiornamento"/> + </notification> + <notification name="DownloadWindowsReleaseForDownload"> + E' disponibile una versione aggiornata di [SECOND_LIFE]. +[MESSAGE] +Questo aggiornamento non è obbligatorio, ma ti suggeriamo di installarlo per migliorarne le prestazioni e la stabilità . + <usetemplate name="okcancelbuttons" notext="Continua" yestext="Scarica l'aggiornamento"/> + </notification> + <notification name="DownloadMacMandatory"> + E' disponibile una nuova versione di [SECOND_LIFE]. +[MESSAGE] +Devi scaricare questo aggiornamento per usare [SECOND_LIFE]. + +Vuoi avviarne lo scaricamento nella tua cartella applicazioni? + <usetemplate name="okcancelbuttons" notext="Esci" yestext="Scarica l'aggiornamento"/> + </notification> + <notification name="DownloadMac"> + E' disponibile una versione aggiornata di [SECOND_LIFE]. +[MESSAGE] +Questo aggiornamento non è obbligatorio, ma ti suggeriamo di installarlo per migliorarne le prestazioni e la stabilità . + +Vuoi avviarne lo scaricamento nella tua cartella applicazioni? + <usetemplate name="okcancelbuttons" notext="Continua" yestext="Scarica l'aggiornamento"/> + </notification> + <notification name="DownloadMacReleaseForDownload"> + E' disponibile una versione aggiornata di [SECOND_LIFE]. +[MESSAGE] +Questo aggiornamento non è obbligatorio, ma ti suggeriamo di installarlo per migliorarne le prestazioni e la stabilità . + +Vuoi avviarne lo scaricamento nella tua cartella applicazioni? + <usetemplate name="okcancelbuttons" notext="Continua" yestext="Scarica l'aggiornamento"/> + </notification> + <notification name="DeedObjectToGroup"> + La cessione di questo oggetto farà in modo che il gruppo: +* Riceva i L$ pagati all'oggetto + <usetemplate ignoretext="Quando cedi oggetti ai gruppi" name="okcancelignore" notext="Annulla" yestext="Cedi"/> + </notification> + <notification name="WebLaunchExternalTarget"> + Apri il tuo browser web per vedere questo contenuto? + <usetemplate ignoretext="Quando apri il browser di sistema per vedere una pagina web" name="okcancelignore" notext="Annulla" yestext="OK"/> + </notification> + <notification name="WebLaunchJoinNow"> + Vuoi andare su www.secondlife.com per gestire il tuo account? + <usetemplate ignoretext="Quando lanci il browser web per gestire il tuo account" name="okcancelignore" notext="Annulla" yestext="OK"/> + </notification> + <notification name="WebLaunchBugReport101"> + Visita la Wiki di [SECOND_LIFE] per imparare a segnalare un bug correttamente. + <usetemplate ignoretext="Quando lanci il browser web per vedere la Wiki di segnalazione bug base" name="okcancelignore" notext="Annulla" yestext="OK"/> + </notification> + <notification name="WebLaunchSecurityIssues"> + Visita la Wiki di [SECOND_LIFE] per i dettagli su come segnalare un problema di sicurezza. + <usetemplate ignoretext="Quando lanci il browser web per vedere la Wiki sui problemi di sicurezza" name="okcancelignore" notext="Annulla" yestext="OK"/> + </notification> + <notification name="WebLaunchQAWiki"> + Visita il controllo di qualità Wiki [SECOND_LIFE]. + <usetemplate ignoretext="Quando lanci il browser web per vedere il controllo di qualità Wiki" name="okcancelignore" notext="Annulla" yestext="OK"/> + </notification> + <notification name="WebLaunchPublicIssue"> + Visita il registro pubblico dei problemi di [SECOND_LIFE], dove puoi segnalare bug ed altri problemi. + <usetemplate ignoretext="Quando lanci il browser web per vedere il registro pubblico dei problemi" name="okcancelignore" notext="Annulla" yestext="Vai alla pagina"/> + </notification> + <notification name="WebLaunchPublicIssueHelp"> + Visita la Wiki di [SECOND_LIFE] per le informazioni su come usare il registro pubblico dei problemi. + <usetemplate ignoretext="Quando lanci il browser web per vedere la Wiki del registro pubblico dei problemi" name="okcancelignore" notext="Annulla" yestext="Vai alla pagina"/> + </notification> + <notification name="WebLaunchSupportWiki"> + Vai al blog ufficiale Linden, per le ultime notizie ed informazioni. + <usetemplate ignoretext="Quando lanci il browser web per vedere il blog" name="okcancelignore" notext="Annulla" yestext="OK"/> + </notification> + <notification name="WebLaunchLSLGuide"> + Vai alla guida dello scripting per l'aiuto sullo scripting? + <usetemplate ignoretext="Quando lanci il browser web per vedere la guida dello scripting" name="okcancelignore" notext="Annulla" yestext="OK"/> + </notification> + <notification name="WebLaunchLSLWiki"> + Vai al portale LSL per aiuto sullo scripting? + <usetemplate ignoretext="Quando lanci il browser web per vedere il portale LSL" name="okcancelignore" notext="Annulla" yestext="Vai alla pagina"/> + </notification> + <notification name="ReturnToOwner"> + Confermi di voler restituire gli oggetti selezionati ai loro proprietari? Gli oggetti trasferibili ceduti al gruppo, verranno restituiti ai proprietari precedenti. + +*ATTENZIONE* Gli oggetti ceduti non trasferibili verranno cancellati! + <usetemplate ignoretext="Quando restituisci gli oggetti ai loro proprietari" name="okcancelignore" notext="Annulla" yestext="OK"/> + </notification> + <notification name="GroupLeaveConfirmMember"> + Sei attualmente un membro del gruppo [GROUP]. +Vuoi lasciare il gruppo? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="ConfirmKick"> + Vuoi VERAMENTE espellere tutti gli utenti dalla griglia? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Espelli tutti gli utenti"/> + </notification> + <notification name="MuteLinden"> + Mi dispiace, ma non puoi mutare un Linden. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="CannotStartAuctionAlreadyForSale"> + Non è possibile mettere in vendita all'asta un terreno che è già impostato per la vendita. Disabilita la vendita del terreno, se sei certo di voler avviare una vendita all'asta. + </notification> + <notification label="Non è stato possibile mutare l'oggetto per nome" name="MuteByNameFailed"> + Hai già mutato questo nome. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="RemoveItemWarn"> + Sebbene consentita, la cancellazione di contenuti può danneggiare l'oggetto. +Vuoi cancellare quell'elemento? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="CantOfferCallingCard"> + Impossibile offrire un biglietto da visita in questo momento. Riprova fra poco. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="CantOfferFriendship"> + Impossibile offrire l'amicizia in questo momento. Riprova fra poco. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="BusyModeSet"> + Impostata la modalità 'Occupato'. +La chat e i messaggi verranno nascosti. I messaggi IM riceveranno la risposta impostata per la modalità 'Occupato'. Tutte le offerte di teleport verranno declinate. Tutte le offerte di inventario andranno nel cestino. + <usetemplate ignoretext="Quando si imposta la modalità occupato" name="okignore" yestext="OK"/> + </notification> + <notification name="JoinedTooManyGroupsMember"> + Sei membro di troppi gruppi per poterti unire ad uno nuovo. +Abbandona almeno un gruppo prima di unirti a questo, oppure declina l'offerta. +Per abbandonare un gruppo seleziona l'opzione 'Gruppi..' dal menu 'Modifica'. +[NAME] ti ha invitato ad unirti ad un gruppo come membro. + +[INVITE] + <usetemplate name="okcancelbuttons" notext="Declino" yestext="Unisciti"/> + </notification> + <notification name="KickUser"> + Espelli questo utente con quale messaggio? + <form name="form"> + <input name="message" type="text"> + Un amministratore ti ha disconnesso. + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Annulla"/> + </form> + </notification> + <notification name="KickAllUsers"> + Espelli tutti quelli che sono sulla griglia con quale messaggio? + <form name="form"> + <input name="message" type="text"> + Un amministratore ti ha disconnesso. + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Annulla"/> + </form> + </notification> + <notification name="FreezeUser"> + Immobilizza questo utente con quale messaggio? + <form name="form"> + <input name="message" type="text"> + Sei stato immobilizzato. Non puoi muoverti o usare la chat. Un amministratore ti contatterà con un messaggio (IM). + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Annulla"/> + </form> + </notification> + <notification name="UnFreezeUser"> + Smobilizza questo utente con quale messaggio? + <form name="form"> + <input name="message" type="text"> + Non sei più immobilizzato. + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Annulla"/> + </form> + </notification> + <notification name="OfferTeleport"> + Offri un teleport nel posto dove sei con il seguente messaggio? + <form name="form"> + <input name="message" type="text"> + Raggiungimi a [REGION] + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Annulla"/> + </form> + </notification> + <notification name="OfferTeleportFromGod"> + Vuoi trasportare divinamente l'utente nel posto dove sei? + <form name="form"> + <input name="message" type="text"> + Raggiungimi in [REGION] + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Annulla"/> + </form> + </notification> + <notification name="TeleportFromLandmark"> + Confermi di volerti teleportare? + <usetemplate ignoretext="Quando ti teleporti da un landmark nell'inventario" name="okcancelignore" notext="Annulla" yestext="Teleportati"/> + </notification> + <notification label="Manda un messaggio a tutti nella tua proprietà " name="MessageEstate"> + Scrivi un annuncio breve che verrà mandato a tutti quelli che sono in questo momento nella tua proprietà . + <form name="form"> + <input name="message" type="text"/> + <button name="OK" text="OK"/> + <button name="Cancel" text="Annulla"/> + </form> + </notification> + <notification label="Cambia la tipologia della proprietà Linden" name="ChangeLindenEstate"> + Stai per cambiare la tipologia della proprietà Linden (mainland, griglia minorenni, orientamento, ecc.). + +Questo è ESTREMAMENTE PERICOLOSO perchè può cambiare radicalmente l'esperienza degli utenti. Sulla mainland cambierà migliaia di regioni e produrrà seri problemi ai vari server. + +Confermi? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification label="Cambia la tipologia Linden di accesso alla proprietà " name="ChangeLindenAccess"> + Stai per cambiare la lista di accesso per una proprietà Linden (mainland, griglia minorenni, orientamento, ecc.). + +Questo è PERICOLOSO e dovrebbe essere fatto soltanto per poter lanciare il programma che consente agli oggetti/L$ di essere trasferiti fra griglie diverse. +Cambierà migliaia di regioni e produrrà seri problemi ai vari server. + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification label="Seleziona la proprietà " name="EstateAllowedAgentAdd"> + Aggiungi alla lista di accesso solo per questa proprietà oppure per [ALL_ESTATES]? + <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Tutte le proprietà " yestext="Questa proprietà "/> + </notification> + <notification label="Seleziona la proprietà " name="EstateAllowedAgentRemove"> + Rimuovi dalla lista di accesso solo per questa proprietà oppure per [ALL_ESTATES]? + <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Tutte le proprietà " yestext="Questa proprietà "/> + </notification> + <notification label="Seleziona la proprietà " name="EstateAllowedGroupAdd"> + Aggiungi al gruppo di accesso solo per questa proprietà oppure per [ALL_ESTATES]? + <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Tutte le proprietà " yestext="Questa proprietà "/> + </notification> + <notification label="Seleziona la proprietà " name="EstateAllowedGroupRemove"> + Rimuovi dal gruppo di accesso solo per questa proprietà oppure per [ALL_ESTATES]? + <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Tutte le proprietà " yestext="Questa proprietà "/> + </notification> + <notification label="Seleziona la proprietà " name="EstateBannedAgentAdd"> + Rifiuta l'accesso solo a questa proprietà oppure per [ALL_ESTATES]? + <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Tutte le proprietà " yestext="Questa proprietà "/> + </notification> + <notification label="Seleziona la proprietà " name="EstateBannedAgentRemove"> + Rimuovi questo residente dalla lista dei residenti bloccati nell'accesso solo a questa proprietà oppure per [ALL_ESTATES]? + <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Tutte le proprietà " yestext="Questa proprietà "/> + </notification> + <notification label="Seleziona la proprietà " name="EstateManagerAdd"> + Aggiungi come gestore della proprietà solo a questa proprietà oppure per [ALL_ESTATES]? + <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Tutte le proprietà " yestext="Questa proprietà "/> + </notification> + <notification label="Seleziona la proprietà " name="EstateManagerRemove"> + Rimuovi come gestore della proprietà solo per questa proprietà oppure per [ALL_ESTATES]? + <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Tutte le proprietà " yestext="Questa proprietà "/> + </notification> + <notification label="Conferma espulsione" name="EstateKickUser"> + Espelli [EVIL_USER] da questa proprietà ? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="EstateChangeCovenant"> + Confermi di voler cambiare il Regolamento della proprietà ? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="RegionEntryAccessBlocked"> + Non sei ammesso in questa regione a causa della tua categoria di accesso. Questo può risultare da una mancanza di informazioni necessarie per convalidare la tua età . + +Verifica di avere installato l'ultima versione del programma e vai alla Knowledge Base per ulteriori informazioni su come accedere nelle zone con tale categoria di accesso. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + <notification name="RegionEntryAccessBlocked_KB"> + Non sei ammesso in questa regione a causa della tua categoria d'accesso. + +Vuoi andare alla Knowledge Base per ulteriori informazioni sulle categorie di accesso? + <url name="url"> + https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=6010 + </url> + <usetemplate + name="okcancelignore" + yestext="Vai alla Knowledge Base" + notext="Chiudi" + ignoretext="Quando l'entrata nella regione è bloccata a causa delle categorie di accesso"/> + </notification> + <notification name="RegionEntryAccessBlocked_Notify"> + Non sei ammesso in questa regione a causa della tua categoria d'accesso. + </notification> + <notification name="RegionEntryAccessBlocked_Change"> + Non puoi entrare in quella regione a causa delle tue preferenze sulle categorie di accesso. + +Puoi cliccare su 'Cambia le preferenze' per aumentare subito le tue preferenze sulle categorie di accesso e riuscire ad entrare. Ti sarà permesso cercare ed avere accesso al contenuto [REGIONMATURITY] da quel momento in poi. Volendo poi ripristinare le impostazioni, potrai andare in Modifica > Preferenze... > Generale. + <form name="form"> + <button + name="OK" + text="Cambia le preferenze"/> + <button + default="true" + name="Cancel" + text="Chiudi"/> + <ignore name="ignore" text="Quando l'entrata nella regione è bloccata a causa delle preferenze sulle categorie di accesso"/> + </form> + </notification> + <notification name="LandClaimAccessBlocked"> + Non puoi prendere possesso di questo terreno a causa della tua categoria di accesso. Questo può essere dovuto ad una mancanza di informazioni valide che confermino la tua età . + +Verifica di avere installato l'ultima versione del programma e vai alla Knowledge Base per informazioni sull'accesso ad aree con queste categorie di accesso. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + <notification name="LandClaimAccessBlocked_KB"> + Non puoi prendere possesso di questa terra a causa delle preferenze sulle categorie di accesso. + +Vuoi andare alla Knowledge Base per maggiori informazioni sulle categorie di accesso? + <url name="url"> + https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=6010 + </url> + <usetemplate + name="okcancelignore" + yestext="Vai alla Knowledge Base" + notext="Chiudi" + ignoretext="Quando la presa di possesso della terra è bloccata a causa delle categorie di accesso"/> + </notification> + <notification name="LandClaimAccessBlocked_Notify"> + Non puoi prendere possesso di questa terra a causa della tua categoria di accesso. + </notification> + <notification name="LandClaimAccessBlocked_Change"> + Non puoi prendere possesso di questa terra a causa della tua categoria di accesso. + +Puoi cliccare su 'Cambia le preferenze' per aumentare subito le tue preferenze sulle categorie di accesso e riuscire ad entrare. Ti sarà permesso cercare ed avere accesso al contenuto [REGIONMATURITY] da quel momento in poi. Volendo poi ripristinare le impostazioni, potrai andare in Modifica > Preferenze... > Generale. + <usetemplate + name="okcancelignore" + yestext="Cambia le preferenze" + notext="Chiudi" + ignoretext="Quando la presa di possesso della terra è bloccata a causa delle preferenze sulle categorie di accesso"/> + </notification> + <notification name="LandBuyAccessBlocked"> + Non puoi acquistare questo terreno a causa della tua categoria di accesso. Questo può essere dovuto ad una mancanza di informazioni valide che confermino la tua età . + +Verifica di avere installato l'ultima versione del programma e vai alla Knowledge Base per informazioni sull'accesso ad aree con queste categorie di accesso. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + <notification name="LandBuyAccessBlocked_KB"> + Non puoi acquistare questo terreno a causa della tua categoria di accesso. + +Vuoi andare alla Knowledge Base per maggiori informazioni sulle categorie di accesso? + <url name="url"> + https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=6010 + </url> + <usetemplate + name="okcancelignore" + yestext="Vai alla Knowledge Base" + notext="Chiudi" + ignoretext="Quando un acquisto di terra è bloccato a causa delle categorie di accesso"/> + </notification> + <notification name="LandBuyAccessBlocked_Notify"> + Non puoi acquistare questa land a causa della tua categoria di accesso. + </notification> + <notification name="LandBuyAccessBlocked_Change"> + Non puoi acquistare questa terra a causa delle tue preferenze sulle categorie di accesso . + +Puoi cliccare su 'Cambia le preferenze' per aumentare subito le tue preferenze sulle categorie di accesso e riuscire ad entrare. Ti sarà permesso cercare ed avere accesso al contenuto [REGIONMATURITY] da quel momento in poi. Volendo poi ripristinare le impostazioni, potrai andare in Modifica > Preferenze... > Generale. + <usetemplate + name="okcancelignore" + yestext="Cambia le preferenze" + notext="Chiudi" + ignoretext="Quando un acquisto di terra è bloccato a causa delle preferenze sulle categorie di accesso"/> + </notification> + <notification name="TooManyPrimsSelected"> + "Hai selezionato troppi prims. Seleziona [MAX_PRIM_COUNT] o meno prims e riprova." + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ProblemImportingEstateCovenant"> + Problemi nell'importazione del regolamento della proprietà . + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ProblemAddingEstateManager"> + Si sono riscontrati problemi nell'aggiungere un nuovo manager della proprietà . Una o più proprietà potrebbero avere la lista dei manager piena. + </notification> + <notification name="ProblemAddingEstateGeneric"> + Si sono riscontrati problemi nell'aggiunta a questo elenco della proprietà . Una o più proprietà potrebbe avere una lista piena. + </notification> + <notification name="UnableToLoadNotecardAsset"> + Impossibile caricare la risorsa della notecard in questo momento. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="NotAllowedToViewNotecard"> + Permessi insufficienti per vedere la notecard associata con l'asset ID richiesto. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MissingNotecardAssetID"> + L'asset ID della notecard è mancante dal database. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="PublishClassified"> + Ricorda: le tariffe per gli annunci non sono rimborsabili. + +Pubblica questo annuncio adesso per [AMOUNT]L$? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="SetClassifiedMature"> + Queste inserzioni includono contenuto Mature? + <usetemplate + canceltext="Annulla" + name="yesnocancelbuttons" + notext="No" + yestext="Si"/> + </notification> + <notification name="SetGroupMature"> + Questo gruppo include contenuto Mature? + <usetemplate + canceltext="Annulla" + name="yesnocancelbuttons" + notext="No" + yestext="Si"/> + </notification> + <notification label="Conferma il riavvio" name="ConfirmRestart"> + Vuoi veramente far ripartire la regione in 2 minuti? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification label="Manda un messaggio a tutti in questa regione" name="MessageRegion"> + Scrivi un breve annuncio che verrà mandato a tutti in questa regione. + <form name="form"> + <input name="message" type="text"/> + <button name="OK" text="OK"/> + <button name="Cancel" text="Annulla"/> + </form> + </notification> + <notification label="Blocca il terraforming" name="HelpRegionBlockTerraform"> + Se questa casella è selezionata, i proprietari dei terreni non potranno terraformare il loro terreno indipendentemente dall'impostazione locale di 'Modifica Terreno'. + +Impostazione base: spenta + </notification> + <notification label="Blocca il volo" name="HelpRegionBlockFly"> + Se questa casella è selezionata, le persone non potranno volare in questa regione indipendentemente dall'impostazione locale di 'Volo'. + +Impostazione base: spenta + </notification> + <notification label="Cambiamento in massa delle autorizzazioni del contenuto" name="HelpBulkPermission"> + Lo strumento delle autorizzazioni in massa ti aiuta a modificare rapidamente i permessi su oggetti multipli nel contenuto dell'oggetto/i selezionato/i. Ma tieni presente che stai solo impostando autorizzazioni per gli oggetti presenti nel contenuto e non le autorizzazioni per l'oggetto/i che li contiene. + +Inoltre, le autorizzazioni non vengono applicate agli oggetti a loro volta contenuti all'interno degli oggetti di cui stiamo cambiando i permessi. Il cambiamento sarà operato solo ed esclusivamente alla profondità di un livello. + +È possibile scegliere selettivamente quali tipi di oggetti modificare usando questa lista di controllo dei 'Tipi di contenuto'. Le fotografie sono incluse quando si seleziona textures. + +* Questo strumento riuscirà solo a modificare le autorizzazioni degli oggetti che già tu puoi cambiare. +* Non è possibile impostare in aumento, per il successivo proprietario, alcuna autorizzazione che non sia già in essere. +* I permessi impostabili per il successivo proprietario sono solo richieste di cambiamento. Se un qualsiasi oggetto non può assumere tutte le nuove autorizzazioni impostate, nessuno dei suoi permessi cambierà . + +Quando si è pronti a cambiare i permessi in massa, fare clic su 'Applica' e attendere la visualizzazione dei risultati. + +Se si chiude la finestra dello strumento autorizzazioni, mentre le autorizzazioni si stanno modificando, l'operazione si arresterà . + </notification> + <notification label="Consenti Danni" name="HelpRegionAllowDamage"> + Se questa casella è selezionata, il sistema del livello vitale su tutti i terreni sarà abilitato indipendentemente dalle impostazioni locali. Se la casella è lasciata vuota i proprietari dei singoli terreni individuali potranno comunque essere in grado di attivare il sistema di livello vitale sulla loro terra. + +Impostazione base: spenta + </notification> + <notification label="Limite avatar" name="HelpRegionAgentLimit"> + Imposta il massimo numero di avatar consentito in questa regione. +Le prestazioni possono variare a seconda del numero totale di avatar presenti. + +Impostazione base: 40 + </notification> + <notification label="Coefficiente bonus oggetti" name="HelpRegionObjectBonus"> + Il coefficiente bonus oggetti è un moltiplicatore per i prim consentiti su ogni terreno. +Si può specificare da 1 a 10. Impostandolo ad 1, ogni terreno di 512m² consentià 117 oggetti. Impostandolo a 2, ogni terreno di 512m² ne consentirà 234 o il doppio, e così via. Il numero complessivo di oggetti consentiti per una regione rimane comunque 15.000 indipendentemente dal coefficiente di bonus. +Una volta impostato, fai attenzione che abbassare il bonus può causare la cancellazione o restituzione di oggetti. + +Impostazione base: 1.0 + </notification> + <notification label="Categoria di accesso" name="HelpRegionMaturity"> + Imposta la categoria di accesso della regione, come mostrato nella barra dei menu nella parte superiore dello schermo di qualsiasi residente e nelle tooltip sulla mappa di Second Life, quando il cursore si muove su questa regione. Questa impostazione influenza anche l'accesso a questa regione e i risultati della ricerca. Altri residenti possono entrare solo in regioni o visualizzare risultati della ricerca con la stessa categoria di accesso che hanno scelto nella loro preferenze. + +Può trascorrere un po' di tempo prima che questa modifica si rifletta sulla mappa. + </notification> + <notification label="Limita gli urti" name="HelpRegionRestrictPushObject"> + Questa casella limita per tutta la regione i permessi di urto (spinte). +Se abilitata, i residenti possono essere urtati/spinti solo da sè stessi o dal proprietario del terreno. +(La spinta si riferisce all'uso della funzione LSL llPushObject()) + +Impostazione base: spenta + </notification> + <notification label="Unisci/Dividi terreno" name="HelpParcelChanges"> + Questa casella imposta se i terreni non posseduti dal possessore della proprietà immobiliare possano essere unite o divise. +Se questa opzione è deselezionata: + * Soltanto i possessori o i manager della proprietà immobiliare possono unire o dividere i terreni. + * Possono solo unire o dividere terreni che appartengono al proprietario, o ad un gruppo dove hanno poteri appropriati. +Se questa opzione è selezionata: + * Tutti i proprietari del terreno possono unire o dividere i terreni che possiedono. + * Per i terreni di proprietà del gruppo, solo coloro con poteri appropriati possono unire o dividere il terreno. + +Impostazione base: Selezionata + </notification> + <notification label="Non mostrare in ricerca" name="HelpRegionSearch"> + Selezionare questa casella bloccherà i proprietari dei terreni dal mettere in lista i loro terreni nella ricerca + +Impostazione base: spenta + </notification> + <notification label="Cambiato il contenuto Mature" name="RegionMaturityChange"> + La classificazione del contenuto Mature di questa regione è stata aggiornata. +Può essere necessario un po' di tempo prima che questo cambiamento sia visibile sulle mappe. + </notification> + <notification label="Rivendita dei Terreni" name="HelpRegionLandResell"> + I possessori e i manager della proprietà immobiliare possono vendere tutte le terre di cui sono proprietari. +Se questa opzione è lasciata deselezionata i compratori non potranno rivendere le proprie terre in questa regione. +Se questa opzione è selezionato i compratori possono rivendere i loro terreni in questa regione. + +Impostazione base: Non consentire + </notification> + <notification label="Disabilita gli script" name="HelpRegionDisableScripts"> + Se le prestazioni di una sim sono basse, probabilmente è colpa di uno script. Apri la 'barra delle statistiche' (Ctrl-Shift-1). Controlla il FPS della fisica del simulatore. +Se è più basso di 45, apri il pannello "Tempi" collocato ln fondo alla 'barra delle statistiche' +Se il tempo per gli script è di 25 ms o più alto, clicca sul bottone 'individua script pesanti'. Ti verrà dato il nome e l'ubicazione degli script che probabilmente causano una cattiva prestazione. + +Selezionare la casella della disabilitazione script e, premendo il bottone applica, disabilitare temporaneamente tutti gli script in questa regione. Questo è necessario per poterti recare verso l'ubicazione dello script definito nell'elenco come 'script più pesante'. Una volta arrivato all'oggetto, studia lo script per capire se è quello che sta causando il problema. Potresti dover contattare il proprietario dello script oppure cancellare o restituire l'oggetto. +Disabilita la casella e quindi premere applica per riattivare gli script nella regione. + +Impostazione base: spento + </notification> + <notification label="Disabilita le collisioni" name="HelpRegionDisableCollisions"> + Quando le prestazioni della sim sono basse, può darsi che la colpa sia di oggetti fisici. +Apri la 'barra delle statistiche' (Ctrl-Shift-1). +Controlla il FPS della fisica del simulatore. +Se è più basso di 45, apri il pannello "Tempi" collocato in fondo alla 'barra delle statistiche'. +Se il tempo della sim (fisica) risulta 20 ms o più, clicca sul bottone "mostra gli oggetti che collidono di più". +Ti verranno dati il nome e l'ubicazione degli oggetti fisici che possono causare una cattiva prestazione. + +Selezionare la casella disabilita collisioni e, premendo il bottone applica, disabilitare temporaneamente le collisioni oggetto-oggetto. Questo è necessario per poterti recare verso l'ubicazione dell'oggetto che sta collidendo eccessivamente. +Una volta arrivato sul posto, studia l'oggetto - sta collidendo costantemente con altri oggetti? Potresti dover contattare il proprietario dell'oggetto oppure cancellare o restituire l'oggetto. +Disabilitare la casella disabilita collisioni e quindi premere applica per riattivare le collisioni nella regione. + +Impostazione base: spento + </notification> + <notification label="Disabilita la fisica" name="HelpRegionDisablePhysics"> + Disabilitare la fisica è simile alla disabilitazione delle collisioni eccetto che tutte le simulazioni fisiche sono disabilitate. Questo significa che non solo gli oggetti cessano di collidere, ma anche gli avatar non riusciranno più a muoversi. + +Questo dovrebbe essere utilizzato solo se il 'disabilita collisioni' non restituisce abbastanza prestazioni alla regione dopo aver cercato un problema fisico o un oggetto che collide eccessivamente. + +Fai attenzione a riabilitare la fisica quando hai terminato, altrimenti nessun avatar riuscirà a muoversi. + +Impostazione base: spento + </notification> + <notification label="Oggetti con maggiori collisioni" name="HelpRegionTopColliders"> + Mostra una lista di oggetti che sperimentano la maggior quantità di potenziali collisioni oggetto-oggetto. Questi oggetti possono abbassare le prestazioni. +Seleziona Vista > Barra Statistiche e guarda sotto Simulatore > Tempi > Tempo Sim (fisica) per controllare se un tempo di più di 20 ms è impiegato nella fisica. + </notification> + <notification label="Script pesanti" name="HelpRegionTopScripts"> + Mostra una lista degli oggetti che occupano la maggior parte del loro tempo eseguendo script LSL. Questi oggetti possono abbassare le prestazioni. +Seleziona Vista > Barra statistiche e guarda sotto Simulatore > Tempi > Tempo Script per controllare se un tempo di più di 20 ms è impiegato per gli script. + </notification> + <notification label="Fai ripartire la regione" name="HelpRegionRestart"> + Fai ripartire i processi del server che gestisce questa regione dopo un avvertimento di due minuti. Tutti i residenti nella regione verranno scollegati. +La regione salverà i suoi dati e dovrebbe tornare attiva entro 90 secondi. + +Far ripartire la regione non risolverà i problemi maggiori delle prestazioni e dovrebbe essere fatta solo se necessario. + </notification> + <notification label="Altezza dell'acqua" name="HelpRegionWaterHeight"> + Questa è l'altezza in metri del mare dove deve apparire l'acqua. +Se questa impostazione è diversa da 20 e l'acqua circonda il confine di terra o acqua della tua sim, vedrai una discontinuità fra la sim e il mare. + +Impostazione base: 20 + </notification> + <notification label="Sollevamento terreno" name="HelpRegionTerrainRaise"> + Questa è l'ulteriore altezza in metri entro la quale i proprietari di appezzamenti possono alzare il loro terreno partendo dall'altezza preimpostata. + +Impostazione base: 4 + </notification> + <notification label="Abbassamento terreno" name="HelpRegionTerrainLower"> + Questa è l'ulteriore altezza in metri entro la quale i proprietari di appezzamenti possono abbassare il loro terreno partendo dall'altezza preimpostata. + +Impostazione base: -4 + </notification> + <notification label="Importa terreno RAW" name="HelpRegionUploadRaw"> + Questo bottone importa un file .RAW nella regione in cui sei. +Il file deve avere le corrette dimensioni (RGB, 256x256) e 13 canali. Il modo migliore per creare un file di terreno è di scaricare un file RAW esistente. Un buon primo passo è quello di modificare il canale del rosso (altezza della terra), ed importarlo. + +L'importazione può impiegare fino a 45 secondi. Nota che importare un file del terreno *non muoverà * gli oggetti che sono sulla sim, soltanto il terreno stesso e i permessi associati agli appezzamenti. +Questo potrebbe far sì che gli oggetti vadano sotto terra. + +Per maggiori informazioni sulle modifiche dei campi dell'altezza della regione, consulta il tasto F1 Aiuto. + </notification> + <notification label="Scarica il terreno RAW" name="HelpRegionDownloadRaw"> + Questo bottone scarica un file che contiene i dati dell'altezza, delle dimensioni, dello stato di vendita del terreno e di alcuni permessi degli appezzamenti di questa regione. +Aprendo questo file in un programma come Photoshop devi specificare le dimensioni che sono: RGB, 256x256 con 13 channels. Questo file del terreno non può essere aperto in nessun altro modo. + +Per maggiori informazioni sulle modifiche dei campi dell'altezza della regione, consulta il tasto F1 Aiuto. + </notification> + <notification label="Usa il sole della proprietà " name="HelpRegionUseEstateSun"> + Questa casella fa si che la posizione del sole in questa regione coincida con la posizione del sole nel resto della proprietà . + +Impostazione base: attivo + </notification> + <notification label="Sole fisso" name="HelpRegionFixedSun"> + Questa casella imposta la posizione del sole ad un valore definito nel cursore delle fasi e fa in modo che il sole non si muova. + +Impostazione base: spento + </notification> + <notification label="Crea il Terreno" name="HelpRegionBakeTerrain"> + Questo bottone salva l'attuale forma del terreno come impostazione base per la regione. Una volta creato, il terreno può riassumere la forma base ogni volta che che tu o altri dovessero usare l'opzione 'Reimposta' della modifica del terreno. +Il terreno creato è anche il punto intermedio dei limiti di sollevamento ed abbassamento terreno. + </notification> + <notification label="Manager della proprietà " name="HelpEstateEstateManager"> + Un manager della proprietà è un residente a cui avete delegato il controllo di una regione o di una proprietà . Un manager della proprietà può cambiare qualunque impostazione in queste finestre, eccezion fatta per l'importazione, l'esportazione e la creazione del terreno. In particolare, possono consentire o bloccare l'accesso ai residenti nella tua proprietà . + +I manager della proprietà possono essere soltanto aggiunti o rimossi dal possessore della proprietà e non possono farlo loro l'un l'altro. Scegli solo residenti di cui ti fidi come manager della proprietà , dato che tu sarai responsabile per le loro azioni. + </notification> + <notification label="Usa l'ora globale" name="HelpEstateUseGlobalTime"> + Questa casella fa si che il sole nella vostra proprietà segua la stessa posizione della mainland Linden. + +Impostazione base: on + </notification> + <notification label="Sole Fisso" name="HelpEstateFixedSun"> + Questa casella imposta la posizione del sole su una posizione del cursore di Fase del sole e lo blocca in quella posizione. + </notification> + <notification label="Accesso Pubblico" name="HelpEstateExternallyVisible"> + Questa casella permette ai residenti che sono su altre regioni, di entrare in questa proprietà anche se non sono nella lista di accesso. + +Impostazione base: attivo + </notification> + <notification label="Consenti teleport diretto" name="HelpEstateAllowDirectTeleport"> + Se selezionato, consente ai residenti di teleportarsi direttamente in qualunque punto di questa proprietà . +Se deselezionato, i residenti si teleporteranno al più vicino snodo. + +Impostazione base: spento + </notification> + <notification label="Consenti accesso" name="HelpEstateAllowResident"> + L'accesso a questa proprietà verrà limitata solo ai residenti ed ai gruppi elencati più sotto. Questa impostazione è disponibile solo se l'accesso pubblico è deselezionato. + </notification> + <notification label="Consenti Accesso di gruppo" name="HelpEstateAllowGroup"> + L'accesso a questa proprietà verrà limitata solo ai gruppi qui elencati e ai residenti loro appartenenti. Questa impostazione è disponibile soltanto se l'accesso pubblico è deselezionato. + </notification> + <notification label="Indirizzo di posta email per le segnalazioni di abuso" name="HelpEstateAbuseEmailAddress"> + Impostando qui un indirizzo di posta elettronica valido, farà si che le segnalazioni di abuso, fatte su questa proprietà , siano mandate a quell'indirizzo. +Lasciandolo vuoto causerà l'invio delle segnalazioni di abuso soltanto ai Linden Lab. + </notification> + <notification label="Rifiuta accesso" name="HelpEstateBanResident"> + I residenti su questa lista non saranno accettati nella tua proprietà , indipendentemente da qualunque altra impostazione. + </notification> + <notification label="Consenti la voice chat" name="HelpEstateVoiceChat"> + I terreni di questa proprietà potranno avere i loro canali voce nei quali i residenti potranno parlare con gli avatar vicini. + +Impostazione base: spento + </notification> + <notification label="Versione voice non compatibile" name="VoiceVersionMismatch"> + Questa versione di Second Life non è compatibile con le impostazioni di voice chat di questa regione. Per poter fare funzionare correttamente la chat voce devi aggiornare Second Life. + </notification> + <notification label="Regolamento della proprietà " name="HelpEstateCovenant"> + Impostare un regolamento della proprietà ti consente di vendere i terreni all'interno di quella proprietà . Se non imposti un regolamento, non puoi vendere i terreni. La notecard per il tuo regolamente può essere vuota se non desideri applicare nessuna regola o informare i compratori di cose inerenti la terra, prima dell'acquisto. + +Un regolamento può essere usato per comunicare regole, linee guida, informazioni culturali o semplicemente ciò che ti aspetti dal possibile compratore. Questo può includere impostazioni in zone, regolamenti architettonici, opzioni di pagamento o qualunque altra informazione che ritieni importante che il nuovo proprietario debba aver visto e accettato prima dell'acquisto. + +Il compratore deve accettare il regolamento selezionando la casella appropriata per poter completare l'acquisto. I regolamenti delle proprietà sono sempre visibili nella finestra "Informazioni sul terreno" in tutti gli appezzamenti in cui è stato impostato. + </notification> + <notification label="Impossibile comprare oggetti" name="BuyObjectOneOwner"> + Impossibile comprare oggetti da proprietari diversi nello stesso momento. +Seleziona solo un oggetto e riprova. + </notification> + <notification label="Impossibile comprare il contenuto" name="BuyContentsOneOnly"> + Impossibile comprare il contenuto di più di un oggetto per volta. +Seleziona solo un oggetto e riprova. + </notification> + <notification label="Impossibile comprare il contenuto" name="BuyContentsOneOwner"> + Impossibile comprare oggetti da proprietari differenti nello stesso momento. +Scegli un solo oggetto e riprova. + </notification> + <notification name="BuyOriginal"> + Compra l'oggetto originale da [OWNER] per [PRICE]L$? +Diventerai proprietario di questo oggetto. +Sarai in grado di: + Modificare: [MODIFYPERM] + Copiare: [COPYPERM] + Rivendere o regalare: [RESELLPERM] + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="BuyOriginalNoOwner"> + Compra l'oggetto originale per [PRICE]L$? +Diventerai proprietario di questo oggetto. +Sarai in grado di: + Modificare: [MODIFYPERM] + Copiare: [COPYPERM] + Rivendere o regalare: [RESELLPERM] + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="BuyCopy"> + Compra una copia da [OWNER] per [PRICE]L$? +L'oggetto verrà copiato nel tuo inventario. +Sarai in grado di: + Modificare: [MODIFYPERM] + Copiare: [COPYPERM] + Rivendere o regalare: [RESELLPERM] + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="BuyCopyNoOwner"> + Compra una copia per [PRICE]L$? +L'oggetto verrà copiato nel tuo inventario. +Sarai in grado di: + Modificare: [MODIFYPERM] + Copiare: [COPYPERM] + Rivendere o regalare: [RESELLPERM] + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="BuyContents"> + Compra il contenuto da [OWNER] per [PRICE]L$? +Il contenuto verrà copiato nel tuo inventario. + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="BuyContentsNoOwner"> + Compra il contenuto per [PRICE]L$? +Il contenuto verrà copiato nel tuo inventario. + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="ConfirmPurchase"> + Questa transazione farà : +[ACTION] + +Confermi di voler procedere all'acquisto? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> + <notification name="ConfirmPurchasePassword" type="password"> + Questa transazione farà : +[ACTION] + +Confermi di voler procedere all'acquisto? +Ridigita la tua password e premi OK. + <form name="form"> + <input name="message" type="password"/> + <button name="ConfirmPurchase" text="OK"/> + <button name="Cancel" text="Annulla"/> + </form> + </notification> + <notification name="SetPickLocation"> + Nota: +Hai aggiornato l'ubicazione di questo preferito ma gli altri dettagli conserveranno il loro valore originale. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MoveInventoryFromObject"> + Hai selezionato elementi dall'inventario 'non copiabili'. +Questi elementi verranno trasferiti nel tuo inventario, ma non copiati. + +Trasferisci gli elementi nell'inventario? + <usetemplate ignoretext="Quando si trasferiscono, dagli oggetti all'inventario, elementi non copiabili" name="okcancelignore" notext="Annulla" yestext="OK"/> + </notification> + <notification name="MoveInventoryFromScriptedObject"> + Hai selezionato elementi dell'inventario non copiabili. Questi elementi verranno trasferiti nel tuo inventario, non verranno copiati. +Dato che questo oggetto è scriptato, il trasferimento di questi elementi nel tuo inventario potrebbe causare un malfunzionamento degli script. + +Trasferisci gli elementi nell'inventario? + <usetemplate ignoretext="Quando si trasferiscono oggetti scriptati non copiabili nell'inventario" name="okcancelignore" notext="Annulla" yestext="OK"/> + </notification> + <notification name="ClickActionNotPayable"> + Attenzione: L'azione di pagamento automatico al click è stata impostata, ma funzionerà solo se aggiungi uno script con un evento money(). + <form name="form"> + <ignore name="ignore" text="Quando imposti il "Pagamento" di oggetti senza l'evento money()"/> + </form> + </notification> + <notification name="OpenObjectCannotCopy"> + Non ci sono elementi in questo oggetto che tu possa copiare. + </notification> + <notification name="WebLaunchAccountHistory"> + Vai nel sito web di Second Life per vedere il tuo estratto conto? + <usetemplate ignoretext="Quando carichi la pagina web dell'estratto conto" name="okcancelignore" notext="Annulla" yestext="Vai alla pagina"/> + </notification> + <notification name="ClickOpenF1Help"> + Visita il sito di supporto di Second Life? + <usetemplate ignoretext="Quando visiti il sito del supporto di Second Life." name="okcancelignore" notext="Annulla" yestext="Vai"/> + </notification> + <notification name="ConfirmQuit"> + Confermi di voler uscire? + <usetemplate ignoretext="Quando esci da Second Life." name="okcancelignore" notext="Continua" yestext="Esci"/> + </notification> + <notification name="HelpReportAbuseEmailLL"> + Usa questo strumento per segnalare violazioni ai Termini di Servizio e agli standard della Comunità . Vedi: + +http://secondlife.com/corporate/tos.php +http://secondlife.com/corporate/cs.php + +Tutte gli abusi ai Termini di Servizio e agli Standard della Comunità segnalati, sono indagati e risolti. Puoi controllare la risoluzione degli abusi visitando la pagina delle Risoluzioni degli Incidenti: + +http://secondlife.com/support/incidentreport.php + </notification> + <notification name="HelpReportAbuseEmailEO"> + IMPORTANTE: questo rapporto verrà inviato al proprietario della regione dove sei in questo momento e non ai Linden Lab. + +Come servizio ai residenti e ai visitatori, il proprietario della regione in cui ti trovi, ha scelto di ricevere e risolvere le segnalazioni di abuso che nascono in questa regione. Il Linden Lab non investiga sulle segnalazione inviate da qui. + +Il proprietario della regione risolverà le segnalazione basandosi sulle regole locali di questa regione così come sono indicate dal regolamento della proprietà . +(Puoi vedere il regolamento andando sul menu Mondo e selezionando Informazioni sul terreno.) + +La risoluzione di questa segnalazione verrà applicata solo in questa regione; L'accesso dei residenti ad altre aree di Second Life non verrà influenzato dal risultato di questa segnalazione. Soltanto i Linden Lab possono restringere l'accesso alla totalità di Second Life. + </notification> + <notification name="HelpReportBug"> + Usa questo strumento per segnalare *soltanto* caratteristiche tecniche che non funzionano come descitto o atteso, fornisci quanti più dettagli è possibile, Puoi rispondere all'email automatica aggiungendo ulteriori dettagli sulla tua segnalazione. + +Tutte le segnalazioni di bug sono investigate e valutate. Non vengono inviate risposte via email. + +Se hai difficoltà tecniche contatta il supporto: + +http://secondlife.com/community/support.php + +Nota: segnalazioni incomplete non verranno prese in considerazione + </notification> + <notification name="HelpReportAbuseSelectCategory"> + Scegli una categoria per questa segnalazione di abuso. +Scegliere una categoria, ci aiuta a gestire ed elaborare le segnalazioni di abuso. + </notification> + <notification name="HelpReportBugSelectCategory"> + Scegli una categoria per questo bug. +Scegliere una categoria, ci aiuta a gestire ed elaborare le segnalazioni di bug. + </notification> + <notification name="HelpReportAbuseAbuserNameEmpty"> + Introduci il nome di chi abusa. +Introducendo un valore accurato, ci aiuti a gestire ed elaborare le segnalazioni di abuso. + </notification> + <notification name="HelpReportAbuseAbuserLocationEmpty"> + Inserisci il luogo dove l'abuso è avvenuto. +Introducendo un valore accurato, ci aiuti a gestire ed elaborare le segnalazioni di abuso. + </notification> + <notification name="HelpReportAbuseSummaryEmpty"> + Inserisci un yiyolo descrittivo dell'abuso che è avvenuto. +Introducendo un titolo descrittivo accurato, ci aiuti a gestire ed elaborare le segnalazioni di abuso. + </notification> + <notification name="HelpReportBugSummaryEmpty"> + Introduci una descrizione del bug. +Introducendo una descrizione accurata ci aiuti a gestire ed elaborare le segnalazioni di bug. + </notification> + <notification name="HelpReportAbuseDetailsEmpty"> + Inserisci una descrizione dettagliata dell'abuso che è avvenuto. +Devi essere il più specifico possibile, includendo i nomi e i dettagli dell'incidente che stai segnalando. +Inserendo una descrizione accurata ci aiuti a gestire ed elaborare le segnalazioni di abuso. + </notification> + <notification name="HelpReportBugDetailsEmpty"> + Inserisci una descrizione dettagliata del bug. +Devi essere il pià specifico possibile, includendo se possibil i passi per riprodurre il problema. +Inserendo una descrizione accurata, ci aiuti a gestire ed elaborare le segnalazioni di bug. + </notification> + <notification name="HelpReportAbuseContainsCopyright"> + Caro residente, + +Sembra che stai segnalando un problema di furto di proprietà intellettuale. Cerca di essere sicuro che la tua segnalazione stia riportando correttamente: + +(1) Il processo di abuso. Puoi sottomettere una segnalazione di abuso se ritieni che un residente stia sfruttando il sistema di permessi di Second Life, per esempio, usando CopyBot oppure simili strumenti di copia, per rubare i diritti della proprietà intellettuale. L'ufficio Abusi investigherà e deciderà delle azioni disciplinari adeguate per comportamenti che violano gli standard di comunità di Second Life o i Termini di Servizio. Si tenga però presente che l'ufficio Abusi non gestisce e non risponde alle richieste di rimozione di contenuto da Second Life. + +(2) Il processo di rimozione DMCA o processo di rimozione dei contenuti. Per richiedere la rimozione di contenuto da Second Life, DEVI sottomettere una notifica valida di furto intellettuale come definito nella nostra politica DMCA che trovi a http://secondlife.com/corporate/dmca.php. + +Se desideri egualmente continuare con il processo di abuso, chiudi questa finestra e termina di compilare la segnalazione. Potresti dover selezionare la categoria specifica 'CopyBot o Sfruttamento permessi'. + +Grazie, +La Linden Lab + </notification> + <notification name="FailedRequirementsCheck"> + I seguenti componenti obbligatori sono mancanti da [FLOATER]: +[COMPONENTS] + </notification> + <notification label="Sostituisci gli oggetti indossati" name="ReplaceAttachment"> + C'è già un oggetto indossato in questo punto del corpo. +Vuoi sostituirlo con l'oggetto selezionato? + <form name="form"> + <ignore name="ignore" save_option="true" text="Quando avviene la sostituzione di un oggetto indossato già esistente"/> + <button name="Yes" text="OK"/> + <button name="No" text="Annulla"/> + </form> + </notification> + <notification label="Avviso di 'Occupato'" name="BusyModePay"> + Sei in modalità 'Occupato', ciò significa che non riceverai ciò che attendi per questo pagamento. + +Desideri abbandonare la modalità 'Occupato' prima di completare questa transazione? + <form name="form"> + <ignore name="ignore" save_option="true" text="Quando avviene il pagamento di una persona o oggetto in modalità 'Occupato'"/> + <button name="Yes" text="OK"/> + <button name="No" text="Abbandona"/> + </form> + </notification> + <notification name="ConfirmEmptyTrash"> + Confermi di volere permanentemente rimuovere il contenuto del tuo cartella Cestino? + <usetemplate ignoretext="Quando svuoti la cartella cestino del tuo inventario" name="okcancelignore" notext="Annulla" yestext="OK"/> + </notification> + <notification name="ConfirmClearBrowserCache"> + Confermi di voler pulire la cache del tuo browser? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Si"/> + </notification> + <notification name="ConfirmClearCookies"> + Confermi di volere cancellare i tuoi cookie? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Si"/> + </notification> + <notification name="ConfirmClearMediaUrlList"> + Confermi di voler cancellare la lista degli URL salvati? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Si"/> + </notification> + <notification name="ConfirmEmptyLostAndFound"> + Confermi di volere rimuovere permanentemente il contenuto della tua cartalla Persi e ritrovati? + <usetemplate ignoretext="Quando cancelli la cartella persi e ritrovati del tuo inventario" name="okcancelignore" notext="No" yestext="Si"/> + </notification> + <notification name="CopySLURL"> + Lo SLURL seguente è stato copiato nei tuoi appunti: + [SLURL] + +Lo puoi inserire in una pagina web per dare ad altri modo di accedere a questo posto o puoi provare a copiarla nella barra indirizzi del tuo browser web. + <form name="form"> + <ignore name="ignore" text="Quando copi lo SLURL negli appunti"/> + </form> + </notification> + <notification name="GraphicsPreferencesHelp"> + Questo pannello controlla la dimensione delle finestre, la risoluzione e la qualità della grafica del tuo browser. Le Preferenze > Grafica consente di scegliere fra quattro livelli grafici: Basso, Medio, Alto, e Ultra. Puoi anche modificare le impostazioni grafiche selezionando la casella Personalizza e manipolando le seguenti impostazioni: + +Effetti grafici: Abilita o disabilita vari tipi di effetti grafici. + +Oggetti riflettenti: Imposta le tipologie di oggetti riflessi dall'acqua. + +Visualizzazione Avatar: Imposta le opzioni che influenzano come il client visualizza gli avatar. + +Campo visivo: Imposta quanto lontano dalla tua posizione gli oggetti vengono visualizzati nella scena. + +Massima quantità di particelle: Imposta il valore massimo di particelle che puoi vedere contemporaneamente sullo schermo. + +Qualità post elaborazione: Imposta la risoluzione con il quale il bagliore è visualizzato. + +Dettaglio della retinatura: Imposta il dettaglio o il numero di triangoli che sono usati per visualizzare determinati oggetti. Un valore più alto impiega più tempo ad essere visualizzato, ma rende questi oggetti più dettagliati. + +Dettagli dell'illuminazione: Seleziona quali tipi di luce vuoi visualizzare. + +Dettaglio del terreno: Imposta la quantità di dettagli che vuoi vedere per le texture del terreno. + </notification> + <notification name="WLSavePresetAlert"> + 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="HelpEditSky"> + Modifica i cursori di WindLight per creare e savare un insieme di cieli. + </notification> + <notification name="HelpEditDayCycle"> + Scegli quale cielo impostare per ciclo giornaliero. + </notification> + <notification name="EnvSettingsHelpButton"> + Queste impostazioni modificano il modo in cui l'ambiente viene visto localmente sul tuo computer. La tua scheda grafica deve supportare gli effetti atmosferici per poter accedere a tutte le impostazioni. + +Modifica il cursore "Ora del Giorno " per cambiare la fase giornaliera locale sul client. + +Modifica il cursore "Intensità delle nuvole" per controllare la quantità di nuvole che coprono il cielo. + +Scegli un colore nella tavolozza colori per il "colore dell'acqua" per cambiare il colore dell'acqua. + +Modifica il cursore "Nebbiosità dell'acqua" per controllare quanto densa è la nebbia sott'acqua. + +Clicca "Usa l'ora della proprietà " per sincronizzare il tempo del giorno con l'ora del giorno della regione e collegarle stabilmente. + +Clicca "Cielo avanzato" per visualizzare un editor con le impostazioni avanzate per il cielo. + +Clicca "Acqua Avanzata" per visualizzare un editor con le impostazini avanzate per l'acqua. + </notification> + <notification name="HelpDayCycle"> + L'editor del Ciclo Giorno/Notte permette di controllare il cielo durante il ciclo giornaliero di Second Life. Questo è il ciclo che è usato dal cursore dell'editor base dell'ambiente. + +L'editor del ciclo giorno/notte funziona impostando i fotogrammi chiave. Questi sono nodi (rappresentati da tacche grige sul grafico temporale) che hanno delle preregolazioni associate del cielo. Man mano che l'ora del giorno procede, il cielo di WindLight"si anima" interpolando i valori fra questi fotogrammi chiave. + +La freccia gialla sopra la linea del tempo rappresenta la tua vista corrente, basata sull'ora del giorno. Cliccandola e spostandola vedrai come il giorno si animerebbe. Si può aggiungere o cancellare fotogrammi chiave cliccando sui tasti 'Aggiungi Fotogramma Chiave' e 'Cancella Fotogramma Chiave' alla destra della linea del tempo. + +Si possono impostare le posizioni temporali dei fotogrammi chiave spostandole lungo la linea del tempo o impostando il loro valore a mano nella finestra di impostazione dei fotogrammi chiave. All'interno della finestra di impostazione si può associare il fotogramma chiave con le impostazioni corrispondenti di Wind Light. + +La durata del ciclo definisce la durata complessiva di un "giorno". Impostando questo ad un valore basso (per esempio, 2 minuti) tutto il ciclo di 24 ore verrà completato in solo 2 minuti reali! Una volta soddisfatto dell tua linea del tempo e le impostazioni dei fotogrammi chiave, usa i bottoni Play e Stop per vederne in anteprima i risultati. Attenzione: si può sempre spostare la freccia gialla indicatrice del tempo sopra la linea del tempo per vedere il ciclo animarsi interattivamente. Scegliendo invece il pulsanto 'Usa il tempo della regione' ci si sincronizza con il le durate del ciclo definite per questa regione. + +Una volta soddisfatto del ciclo giornaliero, puoi salvarlo o ricaricarlo con i bottoni 'Salva test del giorno' e 'Carica il test del giorno'. Attualmente è possibile definire un solo ciclo giorno/notte + </notification> + <notification name="HelpBlueHorizon"> + Si usano i cursori RGB (Rosso/Verde/Blu) per modificare il colore del cielo. Si può usare il cursore I (Intensità ) per alterare i tre cursori all'unisono. + </notification> + <notification name="HelpHazeHorizon"> + Altezza della foschia all'orizzonte è uno dei parametri più utili per modificare l'esposizione di luce complessiva nella scena. +E' utile per simulare molte impostazioni di esposizione, come la sovraesposizione del sole e impostazioni più scure a diaframma chiuso. + </notification> + <notification name="HelpBlueDensity"> + La densità del blu influenza la saturazione complessiva del cielo e della nebbia. Se impostate il cursore (I) Intensità verso destra i colori diventeranno più brillanti e accesi. Se lo impostate tutto a sinistra, i colori diventeranno opachi e ultimamente si confonderanno con il bianco/nero. Se si vuole controllare in modo preciso l'equilibro di colori del cielo, si può agire sui singoli elementi di saturazione utilizzando i tre cursori RGB (Rosso, Verde, Blu). + </notification> + <notification name="HelpHazeDensity"> + La densità della foschia controlla il livello di foschia grigia generale nell'atmosfera. +E' utile per simulare scene con un livello alto di fumo e di inquinamento di origine umana. +E' anche utile per simulare la nebbia e la foschia al mattino. + </notification> + <notification name="HelpDensityMult"> + Il moltiplicatore di densità può essere usato per influenzare la densità atmosferica generale. Con valori bassi, crea la sensazione di "aria sottile", con valori alti crea un effetto molto pesante, annebbiato. + </notification> + <notification name="HelpDistanceMult"> + Modifica la distanza percepita da WindLight. +Immettendo il valore zero si spegne l'influenza di WindLight sul terreno e gli oggetti. +Valori più grandi di 1 simulano distanze più grandi per effetti atmosferici più spessi. + </notification> + <notification name="HelpMaxAltitude"> + Altitudine Massima modifica i calcoli di altezza che fa WindLight quando calcola l'illuminazione atmosferica. +In periodi successivi del giorno, è utile per modificare quanto "profondo" appaia il tramonto. + </notification> + <notification name="HelpSunlightColor"> + Modifica il colore e l'intensità della luce diretta nella scena. + </notification> + <notification name="HelpSunAmbient"> + Modifica il colore e l'intensità della luce atmosferica ambientale nella scena. + </notification> + <notification name="HelpSunGlow"> + Il cursore Dimensione controlla la dimensione del sole. +Lo slider "Focus" controlla quanto è offuscato il sole sopra il cielo. + </notification> + <notification name="HelpSceneGamma"> + Modifica la distribuzione di luci e ombre nello schermo. + </notification> + <notification name="HelpStarBrightness"> + Modifica la brillantezza delle stelle nel cielo. + </notification> + <notification name="HelpTimeOfDay"> + Controlla la posizione del sole nel cielo. +Simile all'elevazione. + </notification> + <notification name="HelpEastAngle"> + Controlla la posizione del sole nel cielo. +Simile all'azimuth. + </notification> + <notification name="HelpCloudColor"> + Modifica il colore delle nuvole. Normalmente si raccomanda di mantenere un colore verso il bianco, ma puoi sbizzarrirti. + </notification> + <notification name="HelpCloudDetail"> + Controlla l'immagine dei dettagli che è sovraimposta sopra l'immagine principale delle nuvole. +X e Y controllano la sua posizione. +D (Densità ) controlla quanto gonfie o spezzettate appaiono le nuvole. + </notification> + <notification name="HelpCloudDensity"> + Consente di controllare la posizione delle nuvole usando i cursori X e Y e quanto dense siano usando il cursore D. + </notification> + <notification name="HelpCloudCoverage"> + Controlla quanto le nuvole coprono il cielo. + </notification> + <notification name="HelpCloudScale"> + Controlla le dimensioni delle immagini delle nuvole sul cielo stellato. + </notification> + <notification name="HelpCloudScrollX"> + Controlla la velocità delle nuvole lungo la direzione X. + </notification> + <notification name="HelpCloudScrollY"> + Controlla la velocità delle nuvole lungo la direzione Y. + </notification> + <notification name="HelpClassicClouds"> + Seleziona questa casella per consentire la visualizzazione delle nuvole nello stile classico in aggiunta alle nuvole Windlight. + </notification> + <notification name="HelpWaterFogColor"> + Sceglie il Colore della nebbiosità dell'acqua. + </notification> + <notification name="HelpWaterFogDensity"> + Controlla la densità della foschia dell'acqua e quanto lontano si può vedere sott'acqua. + </notification> + <notification name="HelpUnderWaterFogMod"> + Modifica l'effetto dell'Esponente Densità Vapore Acqueo per controllare quanto lontano può vedere il vostro avatar quando è sott'acqua. + </notification> + <notification name="HelpWaterGlow"> + Controlla la quantità del bagliore dell'acqua. + </notification> + <notification name="HelpWaterNormalScale"> + Controlla le dimensioni delle tre wavelet che compongono l'acqua. + </notification> + <notification name="HelpWaterFresnelScale"> + Controlla quanta luce è riflessa ad angoli differenti. + </notification> + <notification name="HelpWaterFresnelOffset"> + Controlla quanta intensità di luce è riflessa. + </notification> + <notification name="HelpWaterScaleAbove"> + Controlla quanta luce è rifratta guardando dal di sopra della superficie dell'acqua. + </notification> + <notification name="HelpWaterScaleBelow"> + Controlla quanta luce è rifratta guardando dal di sotto della superficie dell'acqua. + </notification> + <notification name="HelpWaterBlurMultiplier"> + Controlla come le onde e le riflessioni vengono miscelate. + </notification> + <notification name="HelpWaterNormalMap"> + Controlla quale mappa normale è sovraimposta nell'acqua per determinare le riflessioni/rifrazioni. + </notification> + <notification name="HelpWaterWave1"> + Controlla dove e quanto velocemente la versione ingrandita della mappa normale si muove lungo le direzioni X e Y. + </notification> + <notification name="HelpWaterWave2"> + Controlla dove e quanto velocemente la versione ridotta della mappa normale si muove lungo le direzioni X e Y. + </notification> + <notification name="NewSkyPreset"> + Fornisci il nome per il nuovo cielo. + <form name="form"> + <input name="message" type="text"> + Nuova preimpostazione + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Annulla"/> + </form> + </notification> + <notification name="ExistsSkyPresetAlert"> + La preimpostazione esiste già ! + </notification> + <notification name="NewWaterPreset"> + Fornisci il nome per la nuova preregolazione del livello dell'acqua. + <form name="form"> + <input name="message" type="text"> + Nuova preimpostazione + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Annulla"/> + </form> + </notification> + <notification name="ExistsWaterPresetAlert"> + La preimpostazione esiste già ! + </notification> + <notification name="WaterNoEditDefault"> + Non puoi modificare o cancellare una preimpostazione. + </notification> + <notification name="ChatterBoxSessionStartError"> + Impossibile iniziare una nuova sessione di chat con [RECIPIENT]. +[REASON] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ChatterBoxSessionEventError"> + [EVENT] +[REASON] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ForceCloseChatterBoxSession"> + La sessione chat con [NAME] deve chiudere. +[REASON] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="Cannot_Purchase_an_Attachment"> + Gli elementi non possono essere comprati mentre sono indossati. + </notification> + <notification label="Informazioni sulle richieste per il permesso di addebito" name="DebitPermissionDetails"> + Accettare questa richiesta da allo script il permesso continuativo di prendere Linden dollar (L$) dal tuo account. Per revocare questo permesso, il proprietario dell'oggetto deve cancellare l'oggetto oppure reimpostare gli script nell'oggetto. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="AutoWearNewClothing"> + Vuoi indossare automaticamente i vestiti che crei? + <usetemplate ignoretext="Indossa automaticamente i nuovi vestiti." name="okcancelignore" notext="No" yestext="Si"/> + </notification> + <notification name="NotAgeVerified"> + La tua età deve essere verificata per poter entrare in questo territorio. +Vuoi visitare il sito di Second Life per verificare la tua eta? + +[_URL] + <url name="url" option="0"> + https://secondlife.com/account/verification.php + </url> + <usetemplate ignoretext="Avviso per mancanza della verifica dell'età " name="okcancelignore" notext="No" yestext="Si"/> + </notification> + <notification name="Cannot enter parcel: no payment info on file"> + Questo terreno richiede che tu abbia registrato le tue informazioni di pagamento prima che tu possa accedervi. +Vuoi visitare il sito di Second Life per impostarle? + +[_URL] + <url name="url" option="0"> + https://secondlife.com/account/index.php?lang=it + </url> + <usetemplate ignoretext="Avviso per mancanza di informazioni di pagamento registrato" name="okcancelignore" notext="No" yestext="Si"/> + </notification> + <notification name="MissingString"> + La stringa [STRING_NAME] non è presente in strings.xml + </notification> + <notification name="SystemMessageTip"> + [MESSAGE] + </notification> + <notification name="Cancelled"> + Annullato + </notification> + <notification name="CancelledSit"> + Seduta annullata + </notification> + <notification name="CancelledAttach"> + Attaccamento annullato + </notification> + <notification name="ReplacedMissingWearable"> + Gli abiti/parti del corpo mancanti sono stati sostituiti con quelli di default . + </notification> + <notification name="GroupNotice"> + Oggetto: [SUBJECT], Messaggio: [MESSAGE] + </notification> + <notification name="FriendOnline"> + [FIRST] [LAST] è Online + </notification> + <notification name="FriendOffline"> + [FIRST] [LAST] è Offline + </notification> + <notification name="AddSelfFriend"> + Non puoi aggiungere te stesso come amico. + </notification> + <notification name="UploadingAuctionSnapshot"> + Sto importando le fotografie per l'uso inworld e per il web... +(Durata circa 5 minuti.) + </notification> + <notification name="UploadPayment"> + Hai pagato [AMOUNT]L$ per il caricamento. + </notification> + <notification name="UploadWebSnapshotDone"> + Il caricamento della fotografia nel sito web è andato a buon fine. + </notification> + <notification name="UploadSnapshotDone"> + Il caricamento della fotografia inworld è andato a buon fine. + </notification> + <notification name="TerrainDownloaded"> + Terrain.raw caricato + </notification> + <notification name="GestureMissing"> + La gesture [NAME] non è stata trovata nel database. + </notification> + <notification name="UnableToLoadGesture"> + Impossibile caricare la gesture [NAME]. +Riprova. + </notification> + <notification name="LandmarkMissing"> + Landmark non trovato nel database. + </notification> + <notification name="UnableToLoadLandmark"> + Impossibile caricare il Landmark di riferimento. Riprova. + </notification> + <notification name="CapsKeyOn"> + Il tasto BLOC MAIUSC è attivato. +Dato che questo tasto ha effetto su come scrivi la password, forse sarebbe preferibile disattivarlo. + </notification> + <notification name="NotecardMissing"> + Notecard non trovata nel database. + </notification> + <notification name="NotecardNoPermissions"> + Permessi insufficienti per visualizzare la notecard. + </notification> + <notification name="RezItemNoPermissions"> + Permessi insufficienti per creare un oggetto. + </notification> + <notification name="UnableToLoadNotecard"> + Impossibile caricare la notecard in questo momento. + </notification> + <notification name="ScriptMissing"> + Script non trovato nel database. + </notification> + <notification name="ScriptNoPermissions"> + Permessi insufficenti per visualizzare lo script. + </notification> + <notification name="UnableToLoadScript"> + Impossibile caricare lo script. Riprova. + </notification> + <notification name="IncompleteInventory"> + Il contenuto che stai offrendo per il momento non è localmente disponibile. Prova a rioffrire gli oggetti fra un minuto. + </notification> + <notification name="CannotModifyProtectedCategories"> + Non è possibile modificare le categorie protette. + </notification> + <notification name="CannotRemoveProtectedCategories"> + Non è possibile rimuovere le categorie protette. + </notification> + <notification name="OfferedCard"> + Hai offerto un biglietto da visita a [FIRST] [LAST] + </notification> + <notification name="UnableToBuyWhileDownloading"> + Impossibile acquistare l'oggetto durante il download dei dati. +Riprova. + </notification> + <notification name="UnableToLinkWhileDownloading"> + Impossibile collegare l'oggetto durante il download dei dati. +Riprova. + </notification> + <notification name="CannotBuyObjectsFromDifferentOwners"> + Non è possibile acquistare oggetti provenienti da diversi proprietari allo stesso tempo. +Seleziona un oggetto singolo per volta. + </notification> + <notification name="ObjectNotForSale"> + L'oggetto non sembra essere in vendita + </notification> + <notification name="EnteringGodMode"> + Entra in modalità divina, livello [LEVEL] + </notification> + <notification name="LeavingGodMode"> + Esci dalla modalità divina, livello [LEVEL] + </notification> + <notification name="CopyFailed"> + La copia non è riuscita perche non hai il permesso di copiare. + </notification> + <notification name="InventoryAccepted"> + [NAME] ha accettato la tua offerta dall'inventario. + </notification> + <notification name="InventoryDeclined"> + [NAME] non ha accettato la tua offerta dall'inventario. + </notification> + <notification name="ObjectMessage"> + [NAME]: [MESSAGE] + </notification> + <notification name="CallingCardAccepted"> + Il tuo biglietto da visita è stato accettato. + </notification> + <notification name="CallingCardDeclined"> + Il tuo biglietto da visita non è stato accettato. + </notification> + <notification name="TeleportToLandmark"> + Ora che hai raggiunto la mainland, puoi teleportarti in posti come '[NAME]' cliccando inventario in basso a destra del tuo schermo, e selezionando la cartella dei Landmarks. +Fai doppio click su un landmark e poi clicca su Teleport per andare là . + </notification> + <notification name="TeleportToPerson"> + Ora che hai raggiunto la mainland, puoi contattare residenti con '[NAME]' cliccando inventario in basso a destra del tuo schermo, e selezionando la cartella dei biglietti da visita. +Fai doppio click sul biglietto, clicca su IM messaggio istantaneo, e scrivi il messaggio. + </notification> + <notification name="CantSelectLandFromMultipleRegions"> + Non è possibile selezionare il terreno attraverso i confini del server. +Prova a selezionare una parte di terreno più piccola. + </notification> + <notification name="SearchWordBanned"> + Alcuni termini della ricerca sono stati esclusi a causa delle restrizioni di contenuto come esposto negli Standard della comunità . + </notification> + <notification name="NoContentToSearch"> + Seleziona almeno un tipo di contenuto per la ricerca (PG, Mature, o Adult). + </notification> + <notification name="GroupVote"> + [NAME] ha proposto di votare su: +[MESSAGE] + <form name="form"> + <button name="VoteNow" text="Vota ora"/> + <button name="Later" text="Successivo"/> + </form> + </notification> + <notification name="SystemMessage"> + [MESSAGE] + </notification> + <notification name="EventNotification"> + Notifica eventi: + +[NAME] +[DATE] + <form name="form"> + <button name="Teleport" text="Teleport"/> + <button name="Description" text="Descrizione"/> + <button name="Cancel" text="Cancella"/> + </form> + </notification> + <notification name="TransferObjectsHighlighted"> + Tutti gli oggetti presenti sul terreno, che saranno trasferiti al compratore di questa terra, saranno ora evidenziati. + +* Gli alberi e l'erba che cederai non saranno evidenziati. + <form name="form"> + <button name="Done" text="Fatto"/> + </form> + </notification> + <notification name="DeactivatedGesturesTrigger"> + Usa lo stesso tasto per disattivare la gesture: +[NAMES] + </notification> + <notification name="NoQuickTime"> + Il software Apple QuickTime sembra non essere installato nel tuo sistema. +Se desideri visualizzare il video streaming nei terreni supportati si consiglia di andare sul sito di QuickTime (http://www.apple.com/quicktime) e procedere con l'installazione di QuickTime Player. + </notification> + <notification name="OwnedObjectsReturned"> + Gli oggetti che possiedi sul terreno selezionato ti sono stati restituiti nell'inventario. + </notification> + <notification name="OtherObjectsReturned"> + Gli oggetti selezionati sul terreno che è di proprietà di [FIRST] [LAST] sono stati restituiti nel suo inventario. + </notification> + <notification name="OtherObjectsReturned2"> + Gli oggetti selezionati sul terreno di proprietà del residente '[NAME]' sono stati restituiti al loro proprietario. + </notification> + <notification name="GroupObjectsReturned"> + Gli oggetti selezionati sul terreno e condivisi con il gruppo [GROUPNAME] sono stati restituiti nell'inventario dei propietari. +Gli oggetti trasferibili ceduti sono stati restituiti ai proprietari precedenti. +Gli oggetti non trasferibili che erano stati ceduti al gruppo sono stati cancellati. + </notification> + <notification name="UnOwnedObjectsReturned"> + Gli oggetti selezionati sul terreno che non sono di tua proprietà sono stati restituiti ai loro proprietari. + </notification> + <notification name="NotSafe"> + In questa terra il danno è abilitato ('non sicura'). +Puoi farti male qui. Se muori, sarai teleportato a casa. + </notification> + <notification name="NoFly"> + Questa terra ha il volo disabilitato ('non puoi volare'). +Non è possibile volare qui. + </notification> + <notification name="PushRestricted"> + Questa terra è 'Senza spinte'. +Non si puo spingere gli altri a meno che tu non sia propietario del terreno. + </notification> + <notification name="NoVoice"> + Questa terra ha il voice disabilitato. + </notification> + <notification name="NoBuild"> + Questo terreno ha la costruzione disabilitata ('non puoi costruire'). +Non puoi costruire qui. + </notification> + <notification name="ScriptsStopped"> + Un amministratore ha temporaneamente disabilitato gli script in questa regione. + </notification> + <notification name="ScriptsNotRunning"> + In questa terra nessuno script è attivo. + </notification> + <notification name="NoOutsideScripts"> + Questa land ha script esterni disabilitati. +('nessuno script esterno'). +Nessuno script esterno funzionerà tranne quelli del propietario del terreno. + </notification> + <notification name="ClaimPublicLand"> + Puoi solo prendere possesso di terra pubblica nella regione dove sei attualmente. + </notification> + <notification name="RegionTPAccessBlocked"> + Non puoi entrare in quella regione a causa della tua categoria di accesso. Può essere necessario validare l'età e/o installare l'ultima versione del programma. + +Visita la Knowledge Base per informazioni sull'accesso alle aree con queste categorie di accesso. + </notification> + <notification name="URBannedFromRegion"> + Tu hai l'accesso bloccato a questa regione. + </notification> + <notification name="NoTeenGridAccess"> + Il tuo account non può connettersi a questa regione della griglia per Teenager. + </notification> + <notification name="NoHelpIslandTP"> + Non è possibile per te ritornare all'Help Island. +Vai alla 'Help Island Public' per ripetere il tutorial. + </notification> + <notification name="ImproperPaymentStatus"> + Non hai una impostazioni di pagamento corrette per entrare in questa regione. + </notification> + <notification name="MustGetAgeRgion"> + Devi avere un'età verificata per entrare in questa regione. + </notification> + <notification name="MustGetAgeParcel"> + Devi essere di età verificata per entrare in questa terra. + </notification> + <notification name="NoDestRegion"> + Non è stata trovata nessuna regione di destinazione. + </notification> + <notification name="NotAllowedInDest"> + Non hai il permesso di accedere alla regione di destinazione. + </notification> + <notification name="RegionParcelBan"> + Non puoi attraversare la regione passando su un terreno ad accesso interdetto. Prova in un altro modo. + </notification> + <notification name="TelehubRedirect"> + Sei stato rediretto ad un punto di snodo di teletrasporto. + </notification> + <notification name="CouldntTPCloser"> + Non è stato possibile teleportarti più vicino al luogo di destinazione. + </notification> + <notification name="TPCancelled"> + Teletrasporto annullato. + </notification> + <notification name="FullRegionTryAgain"> + La regione in cui stai tentando di accedere è attualmente piena. +Riprova tra qualche istante. + </notification> + <notification name="GeneralFailure"> + Fallimento generale. + </notification> + <notification name="RoutedWrongRegion"> + Sei stato instradato verso la regione sbagliata. Riprova. + </notification> + <notification name="NoValidAgentID"> + Nessun ID valido. + </notification> + <notification name="NoValidSession"> + Nessun ID valido. + </notification> + <notification name="NoValidCircuit"> + Nessun codice circuito valido. + </notification> + <notification name="NoValidTimestamp"> + Nessuna data/timestamp valido. + </notification> + <notification name="NoPendingConnection"> + Impossibile creare la connessione in sospeso. + </notification> + <notification name="InternalUsherError"> + Si è verificato un errore interno durante il tentativo di trasportarti alla destinazione. Potrebbero esserci problemi in Second Life al momento. + </notification> + <notification name="NoGoodTPDestination"> + Impossibile trovare una buona destinazione per il teletrasporto in questa regione. + </notification> + <notification name="InternalErrorRegionResolver"> + Si è verificato un errore interno durante il tentativo di risolvere le coordinate per la richiesta di teletrasporto. Può darsi che ci siano problemi in Second Life al momento. + </notification> + <notification name="NoValidLanding"> + Non è stato trovato un punto di atterraggio valido. + </notification> + <notification name="NoValidParcel"> + Non è stato trovato nessun territorio valido. + </notification> + <notification name="ObjectGiveItem"> + Un oggetto chiamato [OBJECTFROMNAME] di proprietà di [FIRST] [LAST] ti ha dato un [OBJECTTYPE] che si chiama [OBJECTNAME]. + <form name="form"> + <button name="Keep" text="Prendi"/> + <button name="Discard" text="Rifiuta"/> + <button name="Mute" text="Muta"/> + </form> + </notification> + <notification name="ObjectGiveItemUnknownUser"> + Un oggetto chiamato [OBJECTFROMNAME] di proprietà di (un utente sconosciuto) ti ha dato un [OBJECTTYPE] che si chiama [OBJECTNAME]. + <form name="form"> + <button name="Keep" text="Prendi"/> + <button name="Discard" text="Rifiuta"/> + <button name="Mute" text="Muta"/> + </form> + </notification> + <notification name="UserGiveItem"> + [NAME] ti ha dato un [OBJECTTYPE] chiamato '[OBJECTNAME]'. + <form name="form"> + <button name="Keep" text="Prendi"/> + <button name="Discard" text="Rifiuta"/> + <button name="Mute" text="Muta"/> + </form> + </notification> + <notification name="GodMessage"> + [NAME] +[MESSAGE] + </notification> + <notification name="JoinGroup"> + [MESSAGE] + <form name="form"> + <button name="Join" text="Iscriviti"/> + <button name="Decline" text="Rifiuta"/> + <button name="Info" text="Info"/> + </form> + </notification> + <notification name="TeleportOffered"> + [NAME] ti ha offerto di teleportarti dove sta ora: + +[MESSAGE] + <form name="form"> + <button name="Teleport" text="Teleport"/> + <button name="Cancel" text="Cancella"/> + </form> + </notification> + <notification name="GotoURL"> + [MESSAGE] +[URL] + <form name="form"> + <button name="Later" text="Successivo"/> + <button name="GoNow..." text="Vai ora..."/> + </form> + </notification> + <notification name="OfferFriendship"> + [NAME] ti ha offerto la sua amicizia. + +[MESSAGE] + +(Di default, potrete vedervi reciprocamente online.) + <form name="form"> + <button name="Accept" text="Accetta"/> + <button name="Decline" text="Rifiuta"/> + </form> + </notification> + <notification name="OfferFriendshipNoMessage"> + [NAME] ti ha offerto la sua amicizia. + +(Di default, potrete vedervi reciprocamente online.) + <form name="form"> + <button name="Accept" text="Accetta"/> + <button name="Decline" text="Rifiuta"/> + </form> + </notification> + <notification name="FriendshipAccepted"> + [NAME] ha accettato la tua offerta di amicizia. + </notification> + <notification name="FriendshipDeclined"> + [NAME] ha rifiutato la tua offerta di amicizia. + </notification> + <notification name="OfferCallingCard"> + [FIRST] [LAST] ti ha offerto il suo biglietto da visita. +Questo aggiungerà un segnalibro nel tuo inventario. +in modo da poter rapidamente inviargli un IM al residente. + <form name="form"> + <button name="Accept" text="Accetta"/> + <button name="Decline" text="Rifiuta"/> + </form> + </notification> + <notification name="RegionRestartMinutes"> + Il riavvio della regione avverrà tra [MINUTES] minuti. +Se rimani in questa regione sarai disconnesso. + </notification> + <notification name="RegionRestartSeconds"> + Il riavvio della regione avverrà tra [SECONDS] secondi. +Se rimani in questa regione sarai disconnesso. + </notification> + <notification name="LoadWebPage"> + Caricare pagina web [URL]? + +[MESSAGE] + +Dall'oggetto: [OBJECTNAME], di: [NAME]? + <form name="form"> + <button name="Gotopage" text="Caricare"/> + <button name="Cancel" text="Annulla"/> + </form> + </notification> + <notification name="FailedToFindWearableUnnamed"> + Impossibile trovare [TYPE] nel database. + </notification> + <notification name="FailedToFindWearable"> + Impossibile trovare [TYPE] chiamato [DESC] nel database. + </notification> + <notification name="InvalidWearable"> + L'oggetto che si sta tentando di indossare utilizza una funzione che il programma non riesce a leggere. Aggiorna la tua versione di Second Life per riuscire a indossare l'oggetto. + </notification> + <notification name="ScriptQuestion"> + '[OBJECTNAME]', un oggetto di proprietà di '[NAME]', vorrebbe: + +[QUESTIONS] +Va bene? + <form name="form"> + <button name="Yes" text="Si"/> + <button name="No" text="No"/> + <button name="Mute" text="Muta"/> + </form> + </notification> + <notification name="ScriptQuestionCaution"> + '[OBJECTNAME]', un oggetto di proprietà di '[NAME]', vorrebbe: + +[QUESTIONS] +Se non ci si fida dell'oggetto e del suo creatore, si dovrebbe negare la richiesta. Per ulteriori informazioni, fai clic sul pulsante 'Dettagli'. + +Accettare tale richiesta? + <form name="form"> + <button name="Grant" text="Accetta"/> + <button name="Deny" text="Nega"/> + <button name="Details" text="Dettagli..."/> + </form> + </notification> + <notification name="ScriptDialog"> + [FIRST] [LAST] '[TITLE]' +[MESSAGE] + <form name="form"> + <button name="Ignore" text="Ignora"/> + </form> + </notification> + <notification name="ScriptDialogGroup"> + [GROUPNAME] '[TITLE]' +[MESSAGE] + <form name="form"> + <button name="Ignore" text="Ignora"/> + </form> + </notification> + <notification name="FirstBalanceIncrease"> + Hai appena ricevuto [AMOUNT]L$. +Gli oggetti e gli altri utenti possono darti L$. +Il tuo saldo è indicato nell'angolo in alto a destra dello schermo. + </notification> + <notification name="FirstBalanceDecrease"> + Hai appena pagato [AMOUNT]L$. +Il tuo saldo è indicato nell'angolo in alto a destra dello schermo. + </notification> + <notification name="FirstSit"> + Sei seduto. +Utilizza i tasti freccia (o AWSD) per cambiare visualizzazione. +Fai clic sul pulsante 'Alzati' per rialzarti. + </notification> + <notification name="FirstMap"> + Fai clic e trascina per scorrere la mappa. +Doppio click per teleportarti. +Utilizza i controlli sulla destra per trovare le cose e visualizzare sfondi differenti. + </notification> + <notification name="FirstBuild"> + È possibile creare nuovi oggetti in alcune zone di [SECOND_LIFE]. +Utilizza gli strumenti in alto a sinistra per costruire, e prova a tenere premuto Ctrl o Alt per passare rapidamente tra uno strumento e l'altro. +Premi Esc per smettere di costruire. + </notification> + <notification name="FirstLeftClickNoHit"> + Cliccare con il tasto sinistro fa interagire con particolari oggetti. +Se il puntatore del mouse si trasforma in una mano, puoi interagire con l'oggetto. +Se fai clic col tasto destro ti verranno sempre mostrati menù con le cose che puoi fare. + </notification> + <notification name="FirstTeleport"> + Questa regione non permette i teleport da punto a punto, cosi sei stato teletrasportato nel punto più vicino. +La tua destinazione originale è comunque segnata da un segnale luminoso. +Segui la freccia rossa per arrivare a destinazione, o fai clic sulla freccia per spegnerla. + </notification> + <notification name="FirstOverrideKeys"> + I tuoi movimenti della tastiera vengono ora gestiti da un oggetto. +Prova i tasti freccia o AWSD per vedere quello che fanno. +Alcuni oggetti (come pistole) richiedono di andare in mouselook per il loro utilizzo. +Premi 'M' per farlo. + </notification> + <notification name="FirstAppearance"> + Stai modificando il tuo aspetto. +Per ruotare e fare uno zoom, utilizza le frecce della tastiera. +Quando hai finito, premi 'Salva tutto' +per salvare il tuo look e uscire. +Puoi modificare il tuo aspetto ogni qualvolta vuoi. + </notification> + <notification name="FirstInventory"> + Questo è il tuo inventario, che contiene gli oggetti, notecard, abbigliamento, e altre cose che possiedi. +* Per indossare un oggetto o un outfit completo contenuto in una cartella, trascinali su te stesso. +* Per ricreare un oggetto inworld, trascinalo sul terreno. +* Per leggere una notecard, fai doppio clic su di essa. + </notification> + <notification name="FirstSandbox"> + Questa è una regione sandbox. +Gli oggetti che costruisci qui, potrebbero essere cancellati dopo che lasci questa area, dato che le sandbox si autopuliscono regolarmente. Leggi le informazioni scritte al riguardo, vicino al nome della regione in alto sullo schermo. + +Le regioni sandbox sono rare, e sono contrassegnate da segnali. + </notification> + <notification name="FirstFlexible"> + Questo oggetto è flessibile. +Gli oggetti flessibili non possono essere fisici e devano essere fantasma fino a quando la casella di controllo della flessibilità verrà deselezionata. + </notification> + <notification name="FirstDebugMenus"> + Hai attivato il menu Avanzato. +Questo menu contiene funzioni utili per gli sviluppatori per il debug di Second Life. +Per attivare o disattivare questo menu su Windows premere Ctrl-Alt-D. Su Mac premere Cmd-Opt-Shift-D. + </notification> + <notification name="FirstSculptedPrim"> + Si sta modificando uno sculpted prim. +Gli sculpted prim richiedono una speciale texture che ne specifichi la forma. +Puoi trovare esempi di texture sculpted nella libreria dell'inventario. + </notification> + <notification name="FirstMedia"> + Hai iniziato la riproduzione dei media. I media possono essere impostati per essere riprodotti automaticamente nella finestra delle Preferenze sotto la voce Audio / Video. Questo può essere un rischio di sicurezza da media che non sono affidabili. + </notification> + <notification name="MaxListSelectMessage"> + È possibile selezionare solo fino a [MAX_SELECT] oggetti da questa lista. + </notification> + <notification name="VoiceInviteP2P"> + [NAME] ti ha invitato a una chiamata Voice. +Fai clic su Accetta per partecipare alla chiamata o su Rifiuta per rifiutare l'invito. fai clic sul pulsante Muta per mutare il chiamante. + <form name="form"> + <button name="Accept" text="Accetta"/> + <button name="Decline" text="Rifiuta"/> + <button name="Mute" text="Muta"/> + </form> + </notification> + <notification name="AutoUnmuteByIM"> + A [FIRST] [LAST] e' stato mandato un messaggio instantaneo ed è stato quindi automaticamente non mutato. + </notification> + <notification name="AutoUnmuteByMoney"> + A [FIRST] [LAST] è stato dato del denaro ed è stato automaticamente non mutato. + </notification> + <notification name="AutoUnmuteByInventory"> + A [FIRST] [LAST] é stato passato qualcosa dall'inventario ed è stato automaticamente non mutato. + </notification> + <notification name="VoiceInviteGroup"> + [NAME] ha iniziato una chiamata Voice-Chat con il gruppo [GROUP]. +Fai clic su Accetta per partecipare alla chiamata o Rifiuta per Rifiutare l'invito. Fai clic sul pulsante muta per mutare il chiamante. + <form name="form"> + <button name="Accept" text="Accetta"/> + <button name="Decline" text="Rifiuta"/> + <button name="Mute" text="Muta"/> + </form> + </notification> + <notification name="VoiceInviteAdHoc"> + [NAME] ha iniziato una chiamata Voice Chat mediante una conferenza chat.. +Fai clic su Accetta per partecipare alla chiamata o Rifiuta per Rifiutare l'invito. Fai clic sul pulsante muta per mutare il chiamante. + <form name="form"> + <button name="Accept" text="Accetta"/> + <button name="Decline" text="Rifiuta"/> + <button name="Mute" text="Muta"/> + </form> + </notification> + <notification name="InviteAdHoc"> + [NAME] ti ha invitato ad una conferenza chat. +Fai clic su Accetta per partecipare alla chiamata o su Rifiuta per rifiutare l'invito. Fai clic sul pulsante muta per mutare il chiamante. + <form name="form"> + <button name="Accept" text="Accetta"/> + <button name="Decline" text="Rifiuta"/> + <button name="Mute" text="Muta"/> + </form> + </notification> + <notification name="VoiceChannelFull"> + La chiamata vocale a cui si sta cercando di unirsi, [VOICE_CHANNEL_NAME], ha raggiunto la capacità massima. Si prega di riprovare più tardi. + </notification> + <notification name="ProximalVoiceChannelFull"> + Siamo spiacenti. Questa area ha raggiunto la capacità massima per le chiamate voice. Si prega di provare ad usare il voice in un'altra area. + </notification> + <notification name="VoiceChannelDisconnected"> + Sei stato disconnesso da [VOICE_CHANNEL_NAME]. Ora verrai riconnesso al canale voice chat pubblico. + </notification> + <notification name="VoiceChannelDisconnectedP2P"> + [VOICE_CHANNEL_NAME] ha chiuso la chiamata. Ora verrai riconnesso al canale voice chat pubblico. + </notification> + <notification name="P2PCallDeclined"> + [VOICE_CHANNEL_NAME] ha rifiutato la tua chiamata. Ora verrai riconnesso al canale voice chat pubblico. + </notification> + <notification name="P2PCallNoAnswer"> + [VOICE_CHANNEL_NAME] non è disponibile per rispondere alla chiamata. Ora verrai riconnesso al canale voice chat pubblico. + </notification> + <notification name="VoiceChannelJoinFailed"> + Impossibile connettersi con [VOICE_CHANNEL_NAME], si prega di riprovare più tardi. Ora verrai riconnesso al canale voice chat pubblico. + </notification> + <notification name="VoiceLoginRetry"> + Stiamo creando una canale voice per te. Questo può richiedere fino a un minuto. + </notification> + <notification name="Cannot enter parcel: not a group member"> + Non puoi entrare nel terreno, non sei un membro del gruppo appropriato. + </notification> + <notification name="Cannot enter parcel: banned"> + Non puoi entrare nel terreno, sei stato bloccato. + </notification> + <notification name="Cannot enter parcel: not on access list"> + Non puoi entrare nel terreno, non fai parte della lista di accesso. + </notification> + <notification name="VoiceNotAllowed"> + Non hai il permesso di collegarti ad una voice chat con [VOICE_CHANNEL_NAME]. + </notification> + <notification name="VoiceCallGenericError"> + Si è verificato un errore durante il tentativo di collegarti a una voice chat con [VOICE_CHANNEL_NAME]. Riprova più tardi. + </notification> + <notification name="ServerVersionChanged"> + La regione in cui sei entrato, gira su una versione di simulatore differente. Fai clic su questo messaggio per i dettagli. + </notification> + <notification name="UnableToOpenCommandURL"> + L'URL che hai selezionato non può essere aperto da questo browser. + </notification> + <global name="UnsupportedCPU"> + - La velocità della tua CPU non soddisfa i requisiti minimi. + </global> + <global name="UnsupportedGLRequirements"> + Sembra che tu non abbia i requisiti appropriati hardware per Second Life. Second Life ha bisogno di una scheda grafica OpenGL che abbia il supporto multitexture. Se ritieni di avere l'hardware giusto verifica di avere installati i driver più aggiornati per la tua scheda grafica e gli aggiornamenti e service pack appropriati per il tuo sistema operativo. + +Se continui ad avere problemi, visita il sito: http://www.secondlife.com/support + </global> + <global name="UnsupportedCPUAmount"> + 796 + </global> + <global name="UnsupportedRAMAmount"> + 510 + </global> + <global name="UnsupportedGPU"> + - La tua scheda grafica non soddisfa i requisiti minimi. + </global> + <global name="UnsupportedRAM"> + - La memoria del tuo sistema non soddisfa i requisiti minimi. + </global> + <global name="PermYes"> + Si + </global> + <global name="PermNo"> + No + </global> +</notifications> diff --git a/indra/newview/skins/default/xui/it/panel_audio_device.xml b/indra/newview/skins/default/xui/it/panel_audio_device.xml index 6a5e220d185f27d38fd6c718781bedfaa7ea8882..166db8199952be5a6e8fff142482101a8b6cfee3 100644 --- a/indra/newview/skins/default/xui/it/panel_audio_device.xml +++ b/indra/newview/skins/default/xui/it/panel_audio_device.xml @@ -1,25 +1,25 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="device_settings"> - <text name="Audio Devices"> - Periferiche audio - </text> - <text name="Input device (microphone):"> - Periferica di input (microfono): - </text> - <text name="Output device (speakers):"> - Periferica di Output (altoparlanti): - </text> - <text name="Input level:"> - Livello d'ingresso - </text> - <text_editor name="voice_intro_text1"> - Sposta il cursore per impostare il livello della tua voce per gli altri residenti. Per controllare il livello di ingresso, parla semplicemente nel microfono. - </text_editor> - <volume_slider name="mic_volume_slider" tool_tip="Cambia il volume usando il cursore"/> - <text name="wait_text"> - Attendi - </text> - <string name="default_text"> - Default - </string> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="device_settings"> + <text name="Audio Devices"> + Periferiche audio + </text> + <text name="Input device (microphone):"> + Periferica di input (microfono): + </text> + <text name="Output device (speakers):"> + Periferica di Output (altoparlanti): + </text> + <text name="Input level:"> + Livello d'ingresso + </text> + <text_editor name="voice_intro_text1"> + Sposta il cursore per impostare il livello della tua voce per gli altri residenti. Per controllare il livello di ingresso, parla semplicemente nel microfono. + </text_editor> + <volume_slider name="mic_volume_slider" tool_tip="Cambia il volume usando il cursore"/> + <text name="wait_text"> + Attendi + </text> + <string name="default_text"> + Default + </string> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_friends.xml b/indra/newview/skins/default/xui/it/panel_friends.xml index ec3801a9697d358746d1a9d74ea4a6fc6166e5ff..78e0d542f3d5fd3099339d3394157da368d08e38 100644 --- a/indra/newview/skins/default/xui/it/panel_friends.xml +++ b/indra/newview/skins/default/xui/it/panel_friends.xml @@ -1,20 +1,20 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="friends"> - <string name="Multiple"> - Amici multipli... - </string> - <scroll_list name="friend_list" tool_tip="Tieni premuto shift o control mentre clicchi per selezionare più di un amico"> - <column name="icon_online_status" tool_tip="Stato Online"/> - <column label="Nome" name="friend_name" tool_tip="Nome"/> - <column name="icon_visible_online" tool_tip="Questo amico può vedere quando sei online"/> - <column name="icon_visible_map" tool_tip="Questo amico può localizzarti sulla mappa"/> - <column name="icon_edit_mine" tool_tip="Questo amico può modificare, cancellare o prendere i tuoi oggetti"/> - <column name="icon_edit_theirs" tool_tip="Puoi modificare gli oggetti di questo amico"/> - </scroll_list> - <button label="IM/Chiama" name="im_btn" tool_tip="Apri una sessione di IM - Messaggio Privato"/> - <button label="Profilo" name="profile_btn" tool_tip="Mostra foto, gruppi, ed altre informazioni"/> - <button label="Teleport..." name="offer_teleport_btn" tool_tip="Offri a questo amico un teleport per dove sei tu ora"/> - <button label="Paga..." name="pay_btn" tool_tip="Dai Linden dollar (L$) a questo amico"/> - <button label="Rimuovi..." name="remove_btn" tool_tip="Rimuovi questa persona dalla tua lista amici"/> - <button label="Aggiungi come amico..." name="add_btn" tool_tip="Offri amicizia ad un residente"/> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="friends"> + <string name="Multiple"> + Amici multipli... + </string> + <scroll_list name="friend_list" tool_tip="Tieni premuto shift o control mentre clicchi per selezionare più di un amico"> + <column name="icon_online_status" tool_tip="Stato Online"/> + <column label="Nome" name="friend_name" tool_tip="Nome"/> + <column name="icon_visible_online" tool_tip="Questo amico può vedere quando sei online"/> + <column name="icon_visible_map" tool_tip="Questo amico può localizzarti sulla mappa"/> + <column name="icon_edit_mine" tool_tip="Questo amico può modificare, cancellare o prendere i tuoi oggetti"/> + <column name="icon_edit_theirs" tool_tip="Puoi modificare gli oggetti di questo amico"/> + </scroll_list> + <button label="IM/Chiama" name="im_btn" tool_tip="Apri una sessione di IM - Messaggio Privato"/> + <button label="Profilo" name="profile_btn" tool_tip="Mostra foto, gruppi, ed altre informazioni"/> + <button label="Teleport..." name="offer_teleport_btn" tool_tip="Offri a questo amico un teleport per dove sei tu ora"/> + <button label="Paga..." name="pay_btn" tool_tip="Dai Linden dollar (L$) a questo amico"/> + <button label="Rimuovi..." name="remove_btn" tool_tip="Rimuovi questa persona dalla tua lista amici"/> + <button label="Aggiungi come amico..." name="add_btn" tool_tip="Offri amicizia ad un residente"/> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_group_general.xml b/indra/newview/skins/default/xui/it/panel_group_general.xml index 70bf6a266819011cc878bf1e1ba8f17663a273e0..cc044a2e560a512665b77b93a63845d42ee1773c 100644 --- a/indra/newview/skins/default/xui/it/panel_group_general.xml +++ b/indra/newview/skins/default/xui/it/panel_group_general.xml @@ -1,70 +1,80 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Generale" name="general_tab"> - <string name="help_text"> - Il pannello 'Generale' contiene informazioni generali riguardanti il -gruppo, un elenco dei proprietari e i membri visibili, -le preferenze generali di gruppo e le opzioni dei membri. - -Passa il mouse sulle opzioni per un aiuto aggiuntivo. - </string> - <string name="group_info_unchanged"> - Le informazioni generali del gruppo sono cambiate. - </string> - <button label="?" label_selected="?" name="help_button"/> - <line_editor label="Scrivi il nome del nuovo gruppo qui" name="group_name_editor"/> - <text name="group_name"> - Scrivi il nome del nuovo gruppo qui - </text> - <text name="prepend_founded_by"> - Fondato da - </text> - <text name="founder_name"> - (attendi) - </text> - <text name="group_charter_label"> - Statuto del gruppo - </text> - <texture_picker label="Immagine del gruppo" name="insignia" tool_tip="Clicca per scegliere una immagine"/> - <text_editor name="charter"> - Statuto del gruppo - </text_editor> - <button label="Unisciti (0 L$)" label_selected="Unisciti (0 L$)" name="join_button"/> - <button label="Visualizza dettagli" label_selected="Visualizza dettagli" name="info_button"/> - <text name="text_owners_and_visible_members"> - Proprietari & Membri visibili - </text> - <text name="text_owners_are_shown_in_bold"> - (I proprietari sono scritti in neretto) - </text> - <name_list name="visible_members"> - <column label="Nome del membro" name="name"/> - <column label="Titolo" name="title"/> - <column label="Ultimo login" name="online"/> - </name_list> - <text name="text_group_preferences"> - Preferenze di gruppo - </text> - <panel name="preferences_container"> - <check_box label="Mostra nella ricerca" name="show_in_group_list" tool_tip="Lascia che i residenti vedano questo gruppo nella ricerca."/> - <check_box label="Iscrizione libera" name="open_enrollement" tool_tip="Imposta se questo gruppo permette ai nuovi membri di unirsi senza essere invitati."/> - <check_box label="Tassa di iscrizione: L$" name="check_enrollment_fee" tool_tip="Imposta se richiedere una tassa di iscrizione per unirsi al gruppo."/> - <spinner name="spin_enrollment_fee" tool_tip="I nuovi membri devono pagare questa tassa per unirsi al gruppo. La tassa di iscrizione è selezionata."/> - - <panel name="title_container"> - <text name="active_title_label"> - Il mio titolo attivo - </text> - <combo_box name="active_title" tool_tip="Imposta il titolo che appare sulla testa del tuo avatar quando il gruppo è attivo."/> - </panel> - <check_box label="Ricevi avvisi dal gruppo" name="receive_notices" tool_tip="Imposta se vuoi ricevere avvisi da questo gruppo. Togli la spunta da questa casella se questo gruppo ti sta spammando."/> - <check_box label="Elenca il gruppo nel mio profilo" name="list_groups_in_profile" tool_tip="Imposta se vuoi elencare questo gruppo nel tuo profilo"/> - </panel> - <string name="incomplete_member_data_str"> - Rilevando i dati dei membri - </string> - <string name="confirm_group_create_str"> - Creare questo gruppo ti costerà 100 L$. -Sei davvero, davvero, DAVVERO sicuro che vuoi spendere 100 L$ per creare questo gruppo? -Fai attenzione che se nessun altro viene unito al gruppo entro 48 ore, questo gruppo verrà dismesso e il nome del gruppo non sarà più disponibile in futuro. - </string> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Generale" name="general_tab"> + <string name="help_text"> + Il pannello 'Generale' contiene informazioni generali riguardanti il +gruppo, un elenco dei proprietari e i membri visibili, +le preferenze generali di gruppo e le opzioni dei membri. + +Passa il mouse sulle opzioni per un aiuto aggiuntivo. + </string> + <string name="group_info_unchanged"> + Le informazioni generali del gruppo sono cambiate. + </string> + <button label="?" label_selected="?" name="help_button"/> + <line_editor label="Scrivi il nome del nuovo gruppo qui" name="group_name_editor"/> + <text name="group_name"> + Scrivi il nome del nuovo gruppo qui + </text> + <text name="prepend_founded_by"> + Fondato da + </text> + <text name="founder_name"> + (attendi) + </text> + <text name="group_charter_label"> + Statuto del gruppo + </text> + <texture_picker label="Immagine del gruppo" name="insignia" tool_tip="Clicca per scegliere una immagine"/> + <text_editor name="charter"> + Statuto del gruppo + </text_editor> + <button label="Unisciti (0 L$)" label_selected="Unisciti (0 L$)" name="join_button"/> + <button label="Visualizza dettagli" label_selected="Visualizza dettagli" name="info_button"/> + <text name="text_owners_and_visible_members"> + Proprietari & Membri visibili + </text> + <text name="text_owners_are_shown_in_bold"> + (I proprietari sono scritti in neretto) + </text> + <name_list name="visible_members"> + <column label="Nome del membro" name="name"/> + <column label="Titolo" name="title"/> + <column label="Ultimo login" name="online"/> + </name_list> + <text name="text_group_preferences"> + Preferenze di gruppo + </text> + <panel name="preferences_container"> + <check_box label="Mostra nella ricerca" name="show_in_group_list" tool_tip="Lascia che i residenti vedano questo gruppo nella ricerca."/> + <check_box label="Iscrizione libera" name="open_enrollement" tool_tip="Imposta se questo gruppo permette ai nuovi membri di unirsi senza essere invitati."/> + <check_box label="Tassa di iscrizione: L$" name="check_enrollment_fee" tool_tip="Imposta se richiedere una tassa di iscrizione per unirsi al gruppo."/> + <spinner name="spin_enrollment_fee" tool_tip="I nuovi membri devono pagare questa tassa per unirsi al gruppo. La tassa di iscrizione è selezionata."/> + <combo_box name="group_mature_check" tool_tip="Imposta se le informazioni sul tuo gruppo sono da considerarsi Mature."> + <combo_item name="select_mature"> + - Seleziona - + </combo_item> + <combo_item name="mature"> + Contenuto Mature + </combo_item> + <combo_item name="pg"> + Contenuto PG + </combo_item> + </combo_box> + <panel name="title_container"> + <text name="active_title_label"> + Il mio titolo attivo + </text> + <combo_box name="active_title" tool_tip="Imposta il titolo che appare sulla testa del tuo avatar quando il gruppo è attivo."/> + </panel> + <check_box label="Ricevi avvisi dal gruppo" name="receive_notices" tool_tip="Imposta se vuoi ricevere avvisi da questo gruppo. Togli la spunta da questa casella se questo gruppo ti sta spammando."/> + <check_box label="Elenca il gruppo nel mio profilo" name="list_groups_in_profile" tool_tip="Imposta se vuoi elencare questo gruppo nel tuo profilo"/> + </panel> + <string name="incomplete_member_data_str"> + Rilevando i dati dei membri + </string> + <string name="confirm_group_create_str"> + Creare questo gruppo ti costerà 100 L$. +Sei davvero, davvero, DAVVERO sicuro che vuoi spendere 100 L$ per creare questo gruppo? +Fai attenzione che se nessun altro viene unito al gruppo entro 48 ore, questo gruppo verrà dismesso e il nome del gruppo non sarà più disponibile in futuro. + </string> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_group_invite.xml b/indra/newview/skins/default/xui/it/panel_group_invite.xml index c17321fcf63c9b13d18af2c2ea4d9570d70ccf6b..d75b3a46e8f01bdd6d5a3642fffd04f1b53c25ad 100644 --- a/indra/newview/skins/default/xui/it/panel_group_invite.xml +++ b/indra/newview/skins/default/xui/it/panel_group_invite.xml @@ -1,23 +1,23 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Invita una persona" name="invite_panel"> - <text name="help_text"> - Puoi selezionare residenti multipli -da invitare nel tuo gruppo. Clicca 'Apri seleziona persone' -per iniziare. - </text> - <button label="Apri seleziona persone" name="add_button" tool_tip=""/> - <name_list name="invitee_list" tool_tip="Tieni premuto il tasto ctrl e clicca i nomi dei residenti per avere una selezione multipla."/> - <button label="Rimuovi i selezionati dall'elenco" name="remove_button" tool_tip="Rimuove i residenti qui sopra selezionati, dall'elenco degli inviti."/> - <text name="role_text"> - Scegli che ruolo assegnare loro: - </text> - <combo_box name="role_name" tool_tip="Scegli dall'elenco dei ruoli che tu sei abilitato ad assegnare."/> - <button label="Manda gli inviti" name="ok_button"/> - <button label="Annulla" name="cancel_button"/> - <string name="confirm_invite_owner_str"> - Sei sicuro di voler invitare nuovi capogruppo? Questa azione è irrevocabile! - </string> - <string name="loading"> - (Attendi...) - </string> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Invita una persona" name="invite_panel"> + <text name="help_text"> + Puoi selezionare più di un residente +da invitare nel tuo gruppo. Clicca su 'Scelta +residenti' per iniziare. + </text> + <button label="Scelta residenti" name="add_button" tool_tip=""/> + <name_list name="invitee_list" tool_tip="Tieni premuto il tasto ctrl e clicca i nomi dei residenti per avere una selezione multipla."/> + <button label="Rimuovi i selezionati dall'elenco" name="remove_button" tool_tip="Rimuove i residenti qui sopra selezionati, dall'elenco degli inviti."/> + <text name="role_text"> + Scegli che ruolo assegnare loro: + </text> + <combo_box name="role_name" tool_tip="Scegli dall'elenco dei ruoli che tu sei abilitato ad assegnare."/> + <button label="Manda gli inviti" name="ok_button"/> + <button label="Annulla" name="cancel_button"/> + <string name="confirm_invite_owner_str"> + Sei sicuro di voler invitare nuovi capogruppo? Questa azione è irrevocabile! + </string> + <string name="loading"> + (Attendi...) + </string> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_group_land_money.xml b/indra/newview/skins/default/xui/it/panel_group_land_money.xml index fe2ba27a1a9463cc5a907f2dfa8a05ed29e7a480..907ce8ea5afc1cca06702fc54e6e6481c1a14c5d 100644 --- a/indra/newview/skins/default/xui/it/panel_group_land_money.xml +++ b/indra/newview/skins/default/xui/it/panel_group_land_money.xml @@ -1,74 +1,80 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Terra & L$" name="land_money_tab"> - <string name="help_text"> - Porzioni di terreno posseduti dal gruppo sono elencati insieme ai dettagli dei contributi. Un avvertimento sarà visualizzato finchè la terra totale in uso è minore o uguale al totale delle contribuzioni. Le pagine 'Dettagli' e 'Vendite' forniscono informazioni riguardanti lo stato finanziario del gruppo. - </string> - <button label="?" name="help_button"/> - <string name="cant_view_group_land_text"> - Non hai i permessi necessari per visualizzare la terra posseduta dal gruppo. - </string> - <string name="cant_view_group_accounting_text"> - Non hai i permessi necessari per visualizzare i movimenti finanziari del gruppo. - </string> - <string name="loading_txt"> - Attendi... - </string> - <text name="group_land_heading"> - Terra posseduta dal gruppo - </text> - <scroll_list name="group_parcel_list"> - <column label="Nome dell'appezzamento" name="name"/> - <column label="Regione" name="location"/> - <column label="Area" name="area"/> - </scroll_list> - <button label="Mostra sulla mappa" label_selected="Mostra sulla mappa" name="map_button"/> - <text name="total_contributed_land_label"> - Total Contribution: - </text> - <text name="total_contributed_land_value"> - [AREA] metri quadri - </text> - <text name="total_land_in_use_label"> - Terra totale in uso: - </text> - <text name="total_land_in_use_value"> - [AREA] metri quadri - </text> - <text name="land_available_label"> - Terra disponibile: - </text> - <text name="land_available_value"> - [AREA] metri quadri - </text> - <text name="your_contribution_label"> - Il tuo contributo: - </text> - <string name="land_contrib_error"> - Non è possibile impostare i tuoi contributi in terra. - </string> - <text name="your_contribution_max_value"> - metri quadri ([AMOUNT] massimo) - </text> - <text name="group_over_limit_text"> - I membri del gruppo devono contribuire con più crediti per mantenere la quantità  di terra in uso. - </text> - <text name="group_money_heading"> - L$ del gruppo - </text> - <tab_container name="group_money_tab_container"> - <panel label="Dettagli" name="group_money_details_tab"> - <text_editor name="group_money_details_text"> - Calcolo... - </text_editor> - <button label="< Precedente" label_selected="< Precedente" name="earlier_details_button" tool_tip="Vai ai dettagli precedenti"/> - <button label="Successivo >" label_selected="Successivo >" name="later_details_button" tool_tip="Vai ai dettagli successivi"/> - </panel> - <panel label="Vendite" name="group_money_sales_tab"> - <text_editor name="group_money_sales_text"> - Calcolo... - </text_editor> - <button label="< Precedente" label_selected="< Precedente" name="earlier_sales_button" tool_tip="Vai ai dettagli precedenti"/> - <button label="Successivo >" label_selected="Successivo >" name="later_sales_button" tool_tip="Vai ai dettagli successivi"/> - </panel> - </tab_container> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Terra & L$" name="land_money_tab"> + <string name="help_text"> + I terreni di proprietà del gruppo sono elencati insieme ai dettagli delle contribuzioni. Un avviso viene visualizzato se la superficie totale in uso è inferiore o pari al totale delle contribuzioni. Le schede: Pianificazione, Dettagli e Vendite forniscono informazioni sulle finanze del gruppo. + </string> + <button label="?" name="help_button"/> + <string name="cant_view_group_land_text"> + Non hai i permessi necessari per visualizzare la terra posseduta dal gruppo. + </string> + <string name="cant_view_group_accounting_text"> + Non hai i permessi necessari per visualizzare i movimenti finanziari del gruppo. + </string> + <string name="loading_txt"> + Attendi... + </string> + <text name="group_land_heading"> + Terra posseduta dal gruppo + </text> + <scroll_list name="group_parcel_list"> + <column label="Nome dell'appezzamento" name="name"/> + <column label="Regione" name="location"/> + <column label="Tipo" name="type"/> + <column label="Area" name="area"/> + </scroll_list> + <button label="Mostra sulla mappa" label_selected="Mostra sulla mappa" name="map_button"/> + <text name="total_contributed_land_label"> + Total Contribution: + </text> + <text name="total_contributed_land_value"> + [AREA] metri quadri + </text> + <text name="total_land_in_use_label"> + Terra totale in uso: + </text> + <text name="total_land_in_use_value"> + [AREA] metri quadri + </text> + <text name="land_available_label"> + Terra disponibile: + </text> + <text name="land_available_value"> + [AREA] metri quadri + </text> + <text name="your_contribution_label"> + Il tuo contributo: + </text> + <string name="land_contrib_error"> + Non è possibile impostare i tuoi contributi in terra. + </string> + <text name="your_contribution_max_value"> + metri quadri ([AMOUNT] massimo) + </text> + <text name="group_over_limit_text"> + I membri del gruppo devono contribuire con più crediti per mantenere la quantità  di terra in uso. + </text> + <text name="group_money_heading"> + L$ del gruppo + </text> + <tab_container name="group_money_tab_container"> + <panel label="Pianificazione" name="group_money_planning_tab"> + <text_editor name="group_money_planning_text"> + Conteggio... + </text_editor> + </panel> + <panel label="Dettagli" name="group_money_details_tab"> + <text_editor name="group_money_details_text"> + Calcolo... + </text_editor> + <button label="< Precedente" label_selected="< Precedente" name="earlier_details_button" tool_tip="Vai ai dettagli precedenti"/> + <button label="Successivo >" label_selected="Successivo >" name="later_details_button" tool_tip="Vai ai dettagli successivi"/> + </panel> + <panel label="Vendite" name="group_money_sales_tab"> + <text_editor name="group_money_sales_text"> + Calcolo... + </text_editor> + <button label="< Precedente" label_selected="< Precedente" name="earlier_sales_button" tool_tip="Vai ai dettagli precedenti"/> + <button label="Successivo >" label_selected="Successivo >" name="later_sales_button" tool_tip="Vai ai dettagli successivi"/> + </panel> + </tab_container> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_group_notices.xml b/indra/newview/skins/default/xui/it/panel_group_notices.xml index 7f65ca0abdea8bea50082942dd980dc72ecc5c0f..7f1f37d67ecf30cc4aab43e19327491310491b3e 100644 --- a/indra/newview/skins/default/xui/it/panel_group_notices.xml +++ b/indra/newview/skins/default/xui/it/panel_group_notices.xml @@ -1,71 +1,71 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Notice" name="notices_tab"> - <string name="help_text"> - Le notice sono un modo veloce per comunicare in un -gruppo diffondendo un messaggio e recapitando un -eventuale oggetto allegato. Le notice arrivano solo ai -membri del gruppo il cui ruolo è abilitato a riceverli. -Puoi disattivare la ricezione delle notice -nella finestra principale. - </string> - <string name="no_notices_text"> - Non ci sono vecchie notice. - </string> - <button label="?" label_selected="?" name="help_button"/> - <text name="lbl"> - Archivio delle notice del gruppo - </text> - <text name="lbl2"> - Le notice sono conservate per 14 giorni. Clicca la notice qui sotto che desideri leggere. -Clicca il bottone 'Aggiorna' per controllare se sono arrivate nuove notice. -Il numero delle notice è limitato a 200 notice per gruppo al giorno. - </text> - <scroll_list name="notice_list"> - <column label="Oggetto" name="subject"/> - <column label="Da" name="from"/> - <column label="Data" name="date"/> - </scroll_list> - <text name="notice_list_none_found"> - Nessuna notice trovata. - </text> - <button label="Crea una nuova notice" label_selected="Crea una nuova notice" name="create_new_notice"/> - <button label="Aggiorna" label_selected="Aggiorna l'elenco" name="refresh_notices"/> - <panel label="Crea una nuova notice" name="panel_create_new_notice"> - <text name="lbl"> - Crea una notice - </text> - <text name="lbl2"> - Devi scrivere l'oggetto della notice per poterla inviare. -Puoi aggiungere un solo allegato alla notice trascinandolo -dal tuo inventario in questa finestra. L'allegato deve essere copiabile e cedibile, -e non puoi allegare una cartella. - </text> - <text name="lbl3"> - Oggetto: - </text> - <text name="lbl4"> - Messaggio: - </text> - <text name="lbl5"> - Allega: - </text> - <button label="Rimuovi allegato" label_selected="Rimuovi allegato" name="remove_attachment"/> - <button label="Invia la notice" label_selected="Invia la notice" name="send_notice"/> - <panel name="drop_target" tool_tip="Trascina un oggetto dall'inventario sulla casella del messaggio per inviarlo con la notice. Devi avere il permesso di copia e trasferimento dell'oggetto per poterlo inviare con la notice."/> - </panel> - <panel label="Vedi le notice precedenti" name="panel_view_past_notice"> - <text name="lbl"> - Notice archiviate - </text> - <text name="lbl2"> - Per mandare una nuova notice, clicca il bottone 'Crea una nuova notice' qui sopra. - </text> - <text name="lbl3"> - Oggetto: - </text> - <text name="lbl4"> - Messaggio: - </text> - <button label="Apri l'allegato" label_selected="Apri l'allegato" name="open_attachment"/> - </panel> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Notice" name="notices_tab"> + <string name="help_text"> + Le notice sono un modo veloce per comunicare in un +gruppo diffondendo un messaggio e recapitando un +eventuale oggetto allegato. Le notice arrivano solo ai +membri del gruppo il cui ruolo è abilitato a riceverli. +Puoi disattivare la ricezione delle notice +nella finestra principale. + </string> + <string name="no_notices_text"> + Non ci sono vecchie notice. + </string> + <button label="?" label_selected="?" name="help_button"/> + <text name="lbl"> + Archivio delle notice del gruppo + </text> + <text name="lbl2"> + Le notice sono conservate per 14 giorni. Clicca la notice qui sotto che desideri leggere. +Clicca il bottone 'Aggiorna' per controllare se sono arrivate nuove notice. +Il numero delle notice è limitato a 200 notice per gruppo al giorno. + </text> + <scroll_list name="notice_list"> + <column label="Oggetto" name="subject"/> + <column label="Da" name="from"/> + <column label="Data" name="date"/> + </scroll_list> + <text name="notice_list_none_found"> + Nessuna notice trovata. + </text> + <button label="Crea una nuova notice" label_selected="Crea una nuova notice" name="create_new_notice"/> + <button label="Aggiorna" label_selected="Aggiorna l'elenco" name="refresh_notices"/> + <panel label="Crea una nuova notice" name="panel_create_new_notice"> + <text name="lbl"> + Crea una notice + </text> + <text name="lbl2"> + Devi scrivere l'oggetto della notice per poterla inviare. +Puoi aggiungere un solo allegato alla notice trascinandolo +dal tuo inventario in questa finestra. L'allegato deve essere copiabile e cedibile, +e non puoi allegare una cartella. + </text> + <text name="lbl3"> + Oggetto: + </text> + <text name="lbl4"> + Messaggio: + </text> + <text name="lbl5"> + Allega: + </text> + <button label="Rimuovi allegato" label_selected="Rimuovi allegato" name="remove_attachment"/> + <button label="Invia la notice" label_selected="Invia la notice" name="send_notice"/> + <panel name="drop_target" tool_tip="Trascina un oggetto dall'inventario sulla casella del messaggio per inviarlo con la notice. Devi avere il permesso di copia e trasferimento dell'oggetto per poterlo inviare con la notice."/> + </panel> + <panel label="Vedi le notice precedenti" name="panel_view_past_notice"> + <text name="lbl"> + Notice archiviate + </text> + <text name="lbl2"> + Per mandare una nuova notice, clicca il bottone 'Crea una nuova notice' qui sopra. + </text> + <text name="lbl3"> + Oggetto: + </text> + <text name="lbl4"> + Messaggio: + </text> + <button label="Apri l'allegato" label_selected="Apri l'allegato" name="open_attachment"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_group_roles.xml b/indra/newview/skins/default/xui/it/panel_group_roles.xml index bf0492dde1fee8c1f2d61f044bbccf9c2c20fd0f..2629b91db5dd14aa93810c12755f94552ab766dd 100644 --- a/indra/newview/skins/default/xui/it/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/it/panel_group_roles.xml @@ -1,143 +1,143 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Membri & Ruoli" name="roles_tab"> - <string name="default_needs_apply_text"> - Ci sono modifiche non applicate nella scheda attuale. - </string> - <string name="want_apply_text"> - Vuoi applicare questi cambiamenti? - </string> - <button label="?" name="help_button"/> - <panel name="members_header"> - <text name="static"> - Membri & Ruoli - </text> - <text name="static2"> - I membri del Gruppo hanno ricevuto ruoli con delle abilità . Queste impostazioni possono -essere facilmente personalizzate, permettendo una maggiore organizzazione e flessibilità . - </text> - </panel> - <panel name="roles_header"> - <text name="static"> - Ruoli - </text> - <text name="role_properties_modifiable"> - Seleziona un ruolo qui sotto. È possibile modificarne il nome, la descrizione e il titolo. - </text> - <text name="role_properties_not_modifiable"> - Seleziona un ruolo qui sotto per vederne le proprietà , i membri e i permessi abilitati. - </text> - <text name="role_actions_modifiable"> - Puoi anche assegnare abilità al ruolo. - </text> - <text name="role_actions_not_modifiable"> - Puoi vedere, ma non modificare, le abilità assegnate. - </text> - </panel> - <panel name="actions_header"> - <text name="static"> - Abilità - </text> - <text name="static2"> - Puoi vedere la descrizione delle abilità e quali ruoli e membri possono -eseguire tali abilità . - </text> - </panel> - <tab_container name="roles_tab_container"> - <panel label="Membri" name="members_sub_tab" tool_tip="Membri"> - <button label="Cerca" name="search_button"/> - <button label="Mostra tutti" name="show_all_button"/> - <name_list name="member_list"> - <column label="Nome del membro" name="name"/> - <column label="Contributo donato" name="donated"/> - <column label="Ultimo accesso" name="online"/> - </name_list> - <button label="Invitare una nuova persona..." name="member_invite"/> - <button label="Espellere dal gruppo" name="member_eject"/> - <string name="help_text"> - Puoi aggiungere o rimuovere i ruoli assegnati ai membri. -Seleziona più membri tenendo premuto il tasto Ctrl e -cliccando sui loro nomi. - </string> - </panel> - <panel label="Ruoli" name="roles_sub_tab"> - <button label="Cerca" name="search_button"/> - <button label="Mostra tutti" name="show_all_button"/> - <scroll_list name="role_list"> - <column label="Nome del ruolo" name="name"/> - <column label="Titolo" name="title"/> - <column label="Membri" name="members"/> - </scroll_list> - <button label="Crea un nuovo ruolo..." name="role_create"/> - <button label="Elimina ruolo" name="role_delete"/> - <string name="help_text"> - I ruoli hanno un titolo e un elenco di abilità permesse -che i membri possono eseguire. I membri possono appartenere a -uno o più ruoli. Un gruppo può avere fino a 10 ruoli, -compresi il ruolo base o 'Membro' e il ruolo del Capogruppo. - </string> - <string name="cant_delete_role"> - I ruoli 'Membro' e 'Capogruppo' sono ruoli speciali e non possono essere eliminati. - </string> - </panel> - <panel label="Abilità " name="actions_sub_tab"> - <button label="Cerca" name="search_button"/> - <button label="Visualizza tutto" name="show_all_button"/> - <scroll_list name="action_list" tool_tip="Seleziona una abilità per vederne maggiori dettagli."/> - <string name="help_text"> - Le abilità permettono ai membri nei ruoli di fare cose specifiche -in questo gruppo. C'è una vasta gamma di abilità . - </string> - </panel> - </tab_container> - <panel name="members_footer"> - <text name="static"> - Ruoli assegnati - </text> - <text name="static2"> - Abilità permesse - </text> - <scroll_list name="member_allowed_actions" tool_tip="Per i dettagli di ogni abilità consentita vedi il pannello abilità ."/> - </panel> - <panel name="roles_footer"> - <text name="static"> - Nome - </text> - <text name="static2"> - Descrizione - </text> - <line_editor name="role_name"> - Addetti - </line_editor> - <text name="static3"> - Titolo - </text> - <line_editor name="role_title"> - (attendi) - </line_editor> - <text_editor name="role_description"> - (attendi) - </text_editor> - <text name="static4"> - Membri assegnati - </text> - <text name="static5" tool_tip="Una lista delle abilità che il ruolo ora selezionato può eseguire."> - Abilità permesse - </text> - <check_box label="I membri sono visibili" name="role_visible_in_list" tool_tip="Serve ad impostare se i membri di questo ruolo sono visibili nel pannello generale ai residenti al di fuori del gruppo."/> - <scroll_list name="role_allowed_actions" tool_tip="Per i dettagli di ogni abilità consentita vedi il pannello abilità ."/> - </panel> - <panel name="actions_footer"> - <text name="static"> - Descrizione - </text> - <text_editor name="action_description"> - Questa abilità è 'Espelli i membri dal gruppo'. Solo un Capogruppo puo espellere un'altro Capogruppo. - </text_editor> - <text name="static2"> - Ruoli con abilità - </text> - <text name="static3"> - Membri con abilità - </text> - </panel> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Membri & Ruoli" name="roles_tab"> + <string name="default_needs_apply_text"> + Ci sono modifiche non applicate nella scheda attuale. + </string> + <string name="want_apply_text"> + Vuoi applicare questi cambiamenti? + </string> + <button label="?" name="help_button"/> + <panel name="members_header"> + <text name="static"> + Membri & Ruoli + </text> + <text name="static2"> + I membri del Gruppo hanno ricevuto ruoli con delle abilità . Queste impostazioni possono +essere facilmente personalizzate, permettendo una maggiore organizzazione e flessibilità . + </text> + </panel> + <panel name="roles_header"> + <text name="static"> + Ruoli + </text> + <text name="role_properties_modifiable"> + Seleziona un ruolo qui sotto. È possibile modificarne il nome, la descrizione e il titolo. + </text> + <text name="role_properties_not_modifiable"> + Seleziona un ruolo qui sotto per vederne le proprietà , i membri e i permessi abilitati. + </text> + <text name="role_actions_modifiable"> + Puoi anche assegnare abilità al ruolo. + </text> + <text name="role_actions_not_modifiable"> + Puoi vedere, ma non modificare, le abilità assegnate. + </text> + </panel> + <panel name="actions_header"> + <text name="static"> + Abilità + </text> + <text name="static2"> + Puoi vedere la descrizione delle abilità e quali ruoli e membri possono +eseguire tali abilità . + </text> + </panel> + <tab_container name="roles_tab_container"> + <panel label="Membri" name="members_sub_tab" tool_tip="Membri"> + <button label="Cerca" name="search_button"/> + <button label="Mostra tutti" name="show_all_button"/> + <name_list name="member_list"> + <column label="Nome del membro" name="name"/> + <column label="Contributo donato" name="donated"/> + <column label="Ultimo accesso" name="online"/> + </name_list> + <button label="Invita un nuovo membro ..." name="member_invite"/> + <button label="Espellere dal gruppo" name="member_eject"/> + <string name="help_text"> + Puoi aggiungere o rimuovere i ruoli assegnati ai membri. +Seleziona più membri tenendo premuto il tasto Ctrl e +cliccando sui loro nomi. + </string> + </panel> + <panel label="Ruoli" name="roles_sub_tab"> + <button label="Cerca" name="search_button"/> + <button label="Mostra tutti" name="show_all_button"/> + <scroll_list name="role_list"> + <column label="Nome del ruolo" name="name"/> + <column label="Titolo" name="title"/> + <column label="Membri" name="members"/> + </scroll_list> + <button label="Crea un nuovo ruolo..." name="role_create"/> + <button label="Elimina ruolo" name="role_delete"/> + <string name="help_text"> + I ruoli hanno un titolo e un elenco di abilità permesse +che i membri possono eseguire. I membri possono appartenere a +uno o più ruoli. Un gruppo può avere fino a 10 ruoli, +compresi il ruolo base o 'Membro' e il ruolo del Capogruppo. + </string> + <string name="cant_delete_role"> + I ruoli 'Membro' e 'Capogruppo' sono ruoli speciali e non possono essere eliminati. + </string> + </panel> + <panel label="Abilità " name="actions_sub_tab"> + <button label="Cerca" name="search_button"/> + <button label="Visualizza tutto" name="show_all_button"/> + <scroll_list name="action_list" tool_tip="Seleziona una abilità per vederne maggiori dettagli."/> + <string name="help_text"> + Le abilità permettono ai membri nei ruoli di fare cose specifiche +in questo gruppo. C'è una vasta gamma di abilità . + </string> + </panel> + </tab_container> + <panel name="members_footer"> + <text name="static"> + Ruoli assegnati + </text> + <text name="static2"> + Abilità permesse + </text> + <scroll_list name="member_allowed_actions" tool_tip="Per i dettagli di ogni abilità consentita vedi il pannello abilità ."/> + </panel> + <panel name="roles_footer"> + <text name="static"> + Nome + </text> + <text name="static2"> + Descrizione + </text> + <line_editor name="role_name"> + Addetti + </line_editor> + <text name="static3"> + Titolo + </text> + <line_editor name="role_title"> + (attendi) + </line_editor> + <text_editor name="role_description"> + (attendi) + </text_editor> + <text name="static4"> + Membri assegnati + </text> + <text name="static5" tool_tip="Una lista delle abilità che il ruolo ora selezionato può eseguire."> + Abilità permesse + </text> + <check_box label="I membri sono visibili" name="role_visible_in_list" tool_tip="Serve ad impostare se i membri di questo ruolo sono visibili nel pannello generale ai residenti al di fuori del gruppo."/> + <scroll_list name="role_allowed_actions" tool_tip="Per i dettagli di ogni abilità consentita vedi il pannello abilità ."/> + </panel> + <panel name="actions_footer"> + <text name="static"> + Descrizione + </text> + <text_editor name="action_description"> + Questa abilità è 'Espelli i membri dal gruppo'. Solo un Capogruppo puo espellere un'altro Capogruppo. + </text_editor> + <text name="static2"> + Ruoli con abilità + </text> + <text name="static3"> + Membri con abilità + </text> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_groups.xml b/indra/newview/skins/default/xui/it/panel_groups.xml index 58d62c24e22a1ab372f76c67fc667e33612b5593..75bccb71a33e5a4836ba852657945daaa48d383a 100644 --- a/indra/newview/skins/default/xui/it/panel_groups.xml +++ b/indra/newview/skins/default/xui/it/panel_groups.xml @@ -1,15 +1,15 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="groups"> - <text name="groupdesc"> - Il tuo gruppo attualmente attivo è visualizzato in grassetto. - </text> - <text name="groupcount"> - Appartieni a [COUNT] gruppi (su un massimo di [MAX]). - </text> - <button label="IM/Chiama" name="IM" tool_tip="Apri una sessione di IM/Instant Messages"/> - <button label="Informazioni" name="Info"/> - <button label="Attiva" name="Activate"/> - <button label="Abbandona" name="Leave"/> - <button label="Crea..." name="Create"/> - <button label="Cerca..." name="Search..."/> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="groups"> + <text name="groupdesc"> + Il tuo gruppo attualmente attivo è visualizzato in grassetto. + </text> + <text name="groupcount"> + Appartieni a [COUNT] gruppi (su un massimo di [MAX]). + </text> + <button label="IM/Chiama" name="IM" tool_tip="Apri una sessione di IM/Instant Messages"/> + <button label="Informazioni" name="Info"/> + <button label="Attiva" name="Activate"/> + <button label="Abbandona" name="Leave"/> + <button label="Crea..." name="Create"/> + <button label="Cerca..." name="Search..."/> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_login.xml b/indra/newview/skins/default/xui/it/panel_login.xml index 58d1c09a4b7152275f1f0ac5f01c894759acc48d..acd047d75dff14301fbbe59e95dce68452d36e3b 100644 --- a/indra/newview/skins/default/xui/it/panel_login.xml +++ b/indra/newview/skins/default/xui/it/panel_login.xml @@ -1,37 +1,45 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="panel_login"> - <string name="real_url"> - http://secondlife.com/app/login/ - </string> - <string name="forgot_password_url"> - http://secondlife.com/account/request.php - </string> - <text name="first_name_text"> - Nome: - </text> - <text name="last_name_text"> - Cognome: - </text> - <text name="password_text"> - Password: - </text> - <text name="start_location_text"> - Luogo di partenza: - </text> - <combo_box name="start_location_combo"> - <combo_box.item name="MyHome" label="Casa Mia"/> - <combo_box.item name="MyLastLocation" label="Ultimo luogo dove sono stato"/> - <combo_box.item name="Typeregionname" label="lt;Scrivi la regione di partenza>"/> - </combo_box> - <check_box label="Ricorda password" name="remember_check"/> - <button label="Log In" label_selected="Log In" name="connect_btn"/> - <text name="create_new_account_text"> - Registra un account - </text> - <text name="forgot_password_text"> - Hai dimenticato il tuo nome o la password? - </text> - <text name="channel_text"> - [VERSION] - </text> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_login"> + <string name="real_url"> + http://secondlife.com/app/login/ + </string> + <string name="forgot_password_url"> + http://secondlife.com/account/request.php + </string> + <text name="first_name_text" left="20"> + Nome: + </text> + <line_editor left="20" name="first_name_edit" width="126" /> + <text name="last_name_text" left="158"> + Cognome: + </text> + <line_editor left="158" name="last_name_edit" width="126" /> + <text name="password_text"> + Password: + </text> + <text name="start_location_text" left="20" width="105"> + Punto di partenza: + </text> + <combo_box name="start_location_combo" left_delta="105" width="160"> + <combo_item name="MyHome"> + Casa Mia + </combo_item> + <combo_item name="MyLastLocation"> + Ultimo luogo visitato + </combo_item> + <combo_item name="Typeregionname"> + <Scrivi la regione> + </combo_item> + </combo_box> + <check_box label="Ricorda password" name="remember_check" left_delta="168"/> + <button label="Log In" label_selected="Log In" name="connect_btn"/> + <text name="create_new_account_text"> + Registra un account + </text> + <text name="forgot_password_text" left="-240" width="230"> + Hai dimenticato il tuo nome o la password? + </text> + <text name="channel_text"> + [VERSION] + </text> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_preferences_chat.xml b/indra/newview/skins/default/xui/it/panel_preferences_chat.xml index aa5e2bc9e6c34c3363bbaca8633fae51023e585b..8afcd74bf7c6f312e077a4d52a543e5eee8a1081 100644 --- a/indra/newview/skins/default/xui/it/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/it/panel_preferences_chat.xml @@ -1,57 +1,52 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Text Chat" name="chat"> - <text name="text_box"> - Grandezza carattere chat: - </text> - <radio_group name="chat_font_size"> - <radio_item name="radio"> - Piccolo - </radio_item> - <radio_item name="radio2"> - Medio - </radio_item> - <radio_item name="radio3"> - Grande - </radio_item> - </radio_group> - <text name="text_box2"> - Colore carattere chat: - </text> - <color_swatch label="Tuo" name="user"/> - <color_swatch label="Altri" name="agent" width="60" left_delta="48"/> - <color_swatch label="IM" name="im" left_delta="64" /> - <color_swatch label="Sistema" name="system"/> - <color_swatch label="Errori" name="script_error"/> - <color_swatch label="Oggetti" name="objects"/> - <color_swatch label="Proprietario" name="owner" width="60" left_delta="48"/> - <color_swatch label="Vignetta" name="background" left_delta="64" /> - <color_swatch label="URLs" name="links"/> - <text name="text_box8"> - Errori script: - </text> - <check_box label="Mostra errori script ed avvertimenti nella chat principale" name="script_errors_as_chat"/> - <text name="text_box3"> - Console della chat: - </text> - <spinner label="Dissolvi la chat dopo" name="fade_chat_time" label_width="112" width="162"/> - <text name="text_box4" left="313" > - (s) - </text> - <text name="text_box5"> - (# linee) - </text> - <slider label="Opacità " name="console_opacity"/> - <check_box label="Utilzza la larghezza intera dello schermo (Richiede riavvio)" name="chat_full_width_check"/> - <text name="text_box6"> - Opzioni chat: - </text> - <check_box label="Chiudi la barra chat dopo aver premuto invio" name="close_chat_on_return_check"/> - <check_box label="Le frecce muovono comunque l'avatar quando si sta scrivendo" name="arrow_keys_move_avatar_check"/> - <check_box label="Mostra orario nella chat principale" name="show_timestamps_check"/> - <check_box label="Simula la battitura tasti quando chatti" name="play_typing_animation"/> - <text name="text_box7"> - Chat con vignette: - </text> - <check_box label="Mostra vignette chat" name="bubble_text_chat"/> - <slider label="Opacità " name="bubble_chat_opacity"/> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Text Chat" name="chat"> + <text name="text_box"> + Grandezza carattere +chat: + </text> + <radio_group name="chat_font_size"> + <radio_item name="radio" label="Piccolo" /> + <radio_item name="radio2" label="Medio" /> + <radio_item name="radio3" label="Grande" /> + </radio_group> + <text name="text_box2"> + Colore carattere chat: + </text> + <color_swatch label="Tuo" name="user"/> + <color_swatch label="Altri" name="agent" width="60" left_delta="48"/> + <color_swatch label="IM" name="im" left_delta="64" /> + <color_swatch label="Sistema" name="system"/> + <color_swatch label="Errori" name="script_error"/> + <color_swatch label="Oggetti" name="objects"/> + <color_swatch label="Proprietario" name="owner" width="60" left_delta="48"/> + <color_swatch label="Vignetta" name="background" left_delta="64" /> + <color_swatch label="URLs" name="links"/> + <text name="text_box8"> + Errori script: + </text> + <check_box label="Mostra errori script ed avvertimenti nella chat principale" name="script_errors_as_chat"/> + <text name="text_box3"> + Console della chat: + </text> + <spinner label="Dissolvi la chat dopo" name="fade_chat_time" label_width="112" width="162"/> + <text name="text_box4" left="313" > + (s) + </text> + <text name="text_box5"> + (# linee) + </text> + <slider label="Opacità " name="console_opacity"/> + <check_box label="Utilzza la larghezza intera dello schermo (Richiede riavvio)" name="chat_full_width_check"/> + <text name="text_box6"> + Opzioni chat: + </text> + <check_box label="Chiudi la barra chat dopo aver premuto invio" name="close_chat_on_return_check"/> + <check_box label="Le frecce muovono comunque l'avatar quando si sta scrivendo" name="arrow_keys_move_avatar_check"/> + <check_box label="Mostra orario nella chat principale" name="show_timestamps_check"/> + <check_box label="Simula la battitura tasti quando scrivi" name="play_typing_animation"/> + <text name="text_box7"> + Chat con vignette: + </text> + <check_box label="Mostra vignette chat" name="bubble_text_chat"/> + <slider label="Opacità " name="bubble_chat_opacity"/> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_preferences_general.xml b/indra/newview/skins/default/xui/it/panel_preferences_general.xml index 74f846095dbab59eb94586b1e75eea5c094826ce..620cd33c0a4f9f5f78c30526a6482fe91403501a 100644 --- a/indra/newview/skins/default/xui/it/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/it/panel_preferences_general.xml @@ -1,78 +1,111 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Generale" name="general_panel"> - <radio_group name="default_start_location"> - <radio_item name="MyHome" tool_tip="Vai a casa di default quando fai login"> - Casa mia - </radio_item> - <radio_item name="MyLastLocation" tool_tip="Vai nell'ultimo posto visitato di default quando fai login."> - Ultimo posto visitato - </radio_item> - </radio_group> - <check_box label="Mostra il posto di partenza sulla schermata d'inizio" name="show_location_checkbox"/> - <combo_box name="fade_out_combobox" width="166"> - <combo_box.item name="Never" label="Mai"/> - <combo_box.item name="Show Temporarily" label="Mostra temporanemente"/> - <combo_box.item name="Always" label="Sempre"/> - </combo_box> - <check_box label="Nomi avatar in piccolo" name="small_avatar_names_checkbox"/> - <check_box label="Nascondi il mio nome sul mio schermo" name="show_my_name_checkbox"/> - <text name="group_titles_textbox"> - Titoli di gruppo: - </text> - <check_box label="Nascondi i titoli di gruppo" name="show_all_title_checkbox"/> - <check_box label="Nascondi il mio titolo di gruppo" name="show_my_title_checkbox"/> - <color_swatch label="" name="effect_color_swatch" tool_tip="Clicca per aprire la tavolozza dei colori"/> - <text name="UI Size:"> - Dimensione interfaccia: - </text> - <check_box label="Usa ridimensionamento indipendente dalla risoluzione" name="ui_auto_scale"/> - <spinner label="Assente dopo:" name="afk_timeout_spinner"/> - <check_box label="Ruota la Mini-Mappa" name="rotate_mini_map_checkbox"/> - <check_box label="Avvisami quando spendo o ricevo Linden Dollars (L$)" name="notify_money_change_checkbox"/> - <check_box label="Usa la tavolozza di scelta colori di default del sistema" name="use_system_color_picker_checkbox" tool_tip="Usa la tavolozza di scelta colori di default del sistema, invece di quella integrata in Second Life."/> - <check_box label="Mostra il pannello di ricerca nella barra" name="show_search_panel" tool_tip="Visualizza il pannello di ricerca integrato."/> - <text name="start_location_textbox"> - Punto di inizio: - </text> - <text name="show_names_textbox"> - Mostra Nomi: - </text> - <text name="effects_color_textbox"> - Colore per i miei effetti: - </text> - <text name="seconds_textbox"> - secondi - </text> - <text name="crash_report_textbox"> - Rapporti crash: - </text> - <text name="language_textbox"> - Lingua: - </text> - <text name="language_textbox2" left_delta="313"> - (Richiede restart) - </text> - <string name="region_name_prompt"> - <Scrivi il nome della regione> - </string> - <combo_box name="crash_behavior_combobox" width="166"> - <combo_box.item name="Askbeforesending" label="Chiedi prima di inviare"/> - <combo_box.item name="Alwayssend" label="Invia sempre"/> - <combo_box.item name="Neversend" label="Non inviare mai"/> - </combo_box> - <combo_box name="language_combobox" width="166"> - <combo_box.item name="System Default Language" label="Default di sistema"/> - <combo_box.item name="English" label="English"/> - <combo_box.item name="Danish" label="Dansk (Danese) - Beta"/> - <combo_box.item name="Deutsch(German)" label="Deutsch (Tedesco) - Beta"/> - <combo_box.item name="Spanish" label="Español (Spagnolo) - Beta"/> - <combo_box.item name="French" label="Français (Francese) - Beta"/> - <combo_box.item name="Hungarian" label="Magyar (Ungherese) - Beta"/> - <combo_box.item name="Polish" label="Polski (Polacco) - Beta"/> - <combo_box.item name="Portugese" label="Portugués (Portoghese) - Beta"/> - <combo_box.item name="Chinese" label="䏿–‡ (简体) (Cinese) - Beta"/> - <combo_box.item name="(Japanese)" label="日本語 (Giapponese) - Beta"/> - <combo_box.item name="(Korean)" label="한êµì–´ (Coreano) - Beta"/> - </combo_box> - <check_box label="Condividi la tua lingua con gli oggetti" name="language_is_public" tool_tip="Questo fa in modo che gli oggetti inworld riconoscano la tua lingua."/> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Generale" name="general_panel"> + <radio_group name="default_start_location"> + <radio_item name="MyHome" tool_tip="Vai a casa di default quando fai login"> + Casa mia + </radio_item> + <radio_item name="MyLastLocation" tool_tip="Vai nell'ultimo posto visitato di default quando fai login."> + Ultimo posto visitato + </radio_item> + </radio_group> + <check_box label="Mostra il punto di partenza nella schermata d'inizio" name="show_location_checkbox"/> + <combo_box name="fade_out_combobox" width="166"> + <combo_box.item name="Never" label="Mai"/> + <combo_box.item name="Show Temporarily" label="Mostra temporanemente"/> + <combo_box.item name="Always" label="Sempre"/> + </combo_box> + <check_box label="Nomi avatar in piccolo" name="small_avatar_names_checkbox"/> + <check_box label="Nascondi il mio nome sul mio schermo" name="show_my_name_checkbox"/> + <text name="group_titles_textbox"> + Titoli di gruppo: + </text> + <check_box label="Nascondi i titoli di gruppo" name="show_all_title_checkbox"/> + <check_box label="Nascondi il mio titolo di gruppo" name="show_my_title_checkbox"/> + <color_swatch label="" name="effect_color_swatch" tool_tip="Clicca per aprire la tavolozza dei colori"/> + <text name="UI Size:"> + Dimensione interfaccia: + </text> + <check_box label="Usa ridimensionamento indipendente dalla risoluzione" name="ui_auto_scale"/> + <spinner label="Assente dopo:" name="afk_timeout_spinner"/> + <check_box label="Avvisami quando spendo o ricevo Linden Dollars (L$)" name="notify_money_change_checkbox"/> + <text name="maturity_desired_label" bottom="-312"> + Categoria di accesso: + </text> + <text name="maturity_desired_prompt" bottom="-312"> + Voglio accedere al +contenuto di tipo: + </text> + <combo_box name="maturity_desired_combobox" bottom="-330" left="274"> + <combo_item name="Desired_Adult"> + PG, Mature e Adult + </combo_item> + <combo_item name="Desired_Mature"> + PG e Mature + </combo_item> + <combo_item name="Desired_PG"> + solo PG + </combo_item> + </combo_box> + <text name="maturity_desired_textbox" bottom="-324" left="274"> + solo PG + </text> + <text name="start_location_textbox"> + Punto di partenza: + </text> + <text name="show_names_textbox"> + Mostra Nomi: + </text> + <text name="effects_color_textbox"> + Colore per i miei effetti: + </text> + <text name="seconds_textbox"> + secondi + </text> + <text name="crash_report_textbox"> + Rapporti crash: + </text> + <text name="language_textbox"> + Lingua: + </text> + <text left_delta="313" name="language_textbox2"> + (Richiede il riavvio) + </text> + <string name="region_name_prompt"> + <Scrivi il nome della regione> + </string> + <combo_box name="crash_behavior_combobox" width="166"> + <combo_box.item name="Askbeforesending" label="Chiedi prima di inviare"/> + <combo_box.item name="Alwayssend" label="Invia sempre"/> + <combo_box.item name="Neversend" label="Non inviare mai"/> + </combo_box> + <combo_box name="language_combobox" width="166"> + <combo_box.item name="System Default Language" label="Default di sistema"/> + <combo_box.item name="English" label="English"/> + <combo_box.item name="Danish" label="Dansk (Danese) - Beta"/> + <combo_box.item name="Deutsch(German)" label="Deutsch (Tedesco) - Beta"/> + <combo_box.item name="Spanish" label="Español (Spagnolo) - Beta"/> + <combo_box.item name="French" label="Français (Francese) - Beta"/> + <combo_box.item name="Hungarian" label="Magyar (Ungherese) - Beta"/> + <combo_box.item name="Polish" label="Polski (Polacco) - Beta"/> + <combo_box.item name="Portugese" label="Portugués (Portoghese) - Beta"/> + <combo_box.item name="Chinese" label="䏿–‡ (简体) (Cinese) - Beta"/> + <combo_box.item name="(Japanese)" label="日本語 (Giapponese) - Beta"/> + <combo_box.item name="(Korean)" label="한êµì–´ (Coreano) - Beta"/> + <combo_item name="Italian"> + Italiano - Beta + </combo_item> + <combo_item name="Dutch"> + Nederlands (Olandese) - Beta + </combo_item> + <combo_item name="Russian"> + РуÑÑкий (Russo) - Beta + </combo_item> + <combo_item name="Turkish"> + Türkçe (Turco) - Beta + </combo_item> + <combo_item name="Ukrainian"> + УкраїнÑька (Ukraino) - Beta + </combo_item> + </combo_box> + <check_box label="Condividi la tua lingua con gli oggetti" name="language_is_public" tool_tip="Questo fa in modo che gli oggetti inworld riconoscano la tua lingua."/> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml index 267a57202f518cdb06b907e8b16a4563d58af495..f9aaa58f09b04a4fdcb6aafadececefcc526986d 100644 --- a/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml @@ -1,158 +1,142 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Grafica" name="Display panel"> - <button label="?" name="GraphicsPreferencesHelpButton"/> - <check_box label="Esegui Second Life in una finestra" name="windowed mode"/> - <text_editor name="FullScreenInfo"> - Se deselezionato, il viewer partirà a schermo intero all'avvio. - </text_editor> - <text name="WindowSizeLabel"> - Dimensione della finestra: - </text> - <combo_box name="windowsize combo"> - <combo_box.item name="640x480" label="640x480"/> - <combo_box.item name="800x600" label="800x600"/> - <combo_box.item name="720x480" label="720x480 (NTSC)"/> - <combo_box.item name="768x576" label="768x576 (PAL)"/> - <combo_box.item name="1024x768" label="1024x768"/> - </combo_box> - <text name="DisplayResLabel"> - Risoluzione del monitor: - </text> - <text name="AspectRatioLabel1" tool_tip="larghezza/altezza"> - Rapporto di visualizzazione: - </text> - <combo_box name="aspect_ratio" tool_tip="larghezza/altezza"> - <combo_box.item name="4:3(StandardCRT)" label="4:3 (Monitor Standard)"/> - <combo_box.item name="5:4(1280x1024LCD)" label="5:4 (1280x1024 LCD)"/> - <combo_box.item name="8:5(Widescreen)" label="8:5 (Widescreen)"/> - <combo_box.item name="16:9(Widescreen)" label="16:9 (Widescreen)"/> - </combo_box> - <check_box label="Autoconfigurazione" name="aspect_auto_detect"/> - <text name="HigherText"> - Qualità e - </text> - <text name="QualityText"> - Performance: - </text> - <text name="FasterText"> - Più veloce - </text> - <text name="ShadersPrefText"> - Basso - </text> - <text name="ShadersPrefText2"> - Medio - </text> - <text name="ShadersPrefText3"> - Alto - </text> - <text name="ShadersPrefText4"> - Ultra - </text> - <text name="HigherText2"> - più alto - </text> - <text name="QualityText2"> - Qualità - </text> - <check_box label="Personalizzate" name="CustomSettings"/> - <text name="ShadersText"> - Effetti grafici: - </text> - <check_box label="Bump Mapping (piccoli rilievi) e scintillii" name="BumpShiny"/> - <check_box label="Effetti grafici base" name="BasicShaders" tool_tip="Disabilite questa opzione può evitare che qualche scheda grafica vada in crash."/> - <check_box label="Effetti grafici atmosferici" name="WindLightUseAtmosShaders"/> - <check_box label="Riflessi dell'acqua" name="Reflections"/> - <text name="ReflectionDetailText"> - Dettaglio dei riflessi - </text> - <radio_group name="ReflectionDetailRadio"> - <radio_item name="0"> - Terreno ed alberi - </radio_item> - <radio_item name="1"> - Tutti gli aggetti statici - </radio_item> - <radio_item name="2"> - Tutti gli avatar e gli oggetti - </radio_item> - <radio_item name="3"> - Tutto - </radio_item> - </radio_group> - <text name="AvatarRenderingText"> - Rendering dell'avatar: - </text> - <check_box label="Avatar bidimensionali (Impostor)" name="AvatarImpostors"/> - <check_box label="Hardware Skinning" name="AvatarVertexProgram"/> - <check_box label="Abiti dell'avatar" name="AvatarCloth"/> - <text name="DrawDistanceMeterText1"> - m - </text> - <text name="DrawDistanceMeterText2"> - m - </text> - <slider label="Distanza di disegno:" name="DrawDistance"/> - <slider label="Conteggio massimo particelle:" name="MaxParticleCount"/> - <slider label="Qualità in post-produzione:" name="RenderPostProcess"/> - <text name="MeshDetailText"> - Dettagli reticolo: - </text> - <slider label="Oggetti:" name="ObjectMeshDetail"/> - <slider label="Prims flessibili:" name="FlexibleMeshDetail"/> - <slider label="Alberi:" name="TreeMeshDetail"/> - <slider label="Avatar:" name="AvatarMeshDetail"/> - <slider label="Terreno:" name="TerrainMeshDetail"/> - <slider label="Cielo:" name="SkyMeshDetail"/> - <text name="PostProcessText"> - Basso - </text> - <text name="ObjectMeshDetailText"> - Basso - </text> - <text name="FlexibleMeshDetailText"> - Basso - </text> - <text name="TreeMeshDetailText"> - Basso - </text> - <text name="AvatarMeshDetailText"> - Basso - </text> - <text name="TerrainMeshDetailText"> - Basso - </text> - <text name="SkyMeshDetailText"> - Basso - </text> - <text name="LightingDetailText"> - Dettagli illuminazione: - </text> - <radio_group name="LightingDetailRadio"> - <radio_item name="SunMoon"> - Sole e luna solamente - </radio_item> - <radio_item name="LocalLights"> - Luci locali - </radio_item> - </radio_group> - <text name="TerrainDetailText"> - Dettagli terreno: - </text> - <radio_group name="TerrainDetailRadio"> - <radio_item name="0"> - Bassi - </radio_item> - <radio_item name="2"> - Alti - </radio_item> - </radio_group> - <button label="Configurazione raccomandata" name="Defaults" left="110" width="190" /> - <button label="Opzioni hardware" label_selected="Opzioni hardware" name="GraphicsHardwareButton"/> - <string name="resolution_format"> - [RES_X] x [RES_Y] - </string> - <string name="aspect_ratio_text"> - [NUM]:[DEN] - </string> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Grafica" name="Display panel"> + <button label="?" name="GraphicsPreferencesHelpButton"/> + <check_box label="Esegui Second Life in una finestra" name="windowed mode"/> + <text_editor name="FullScreenInfo" width="480"> + Se deselezionato, all'avvio il programma partirà a schermo intero. + </text_editor> + <text name="WindowSizeLabel"> + Dimensione della finestra: + </text> + <combo_box name="windowsize combo"> + <combo_box.item name="640x480" label="640x480"/> + <combo_box.item name="800x600" label="800x600"/> + <combo_box.item name="720x480" label="720x480 (NTSC)"/> + <combo_box.item name="768x576" label="768x576 (PAL)"/> + <combo_box.item name="1024x768" label="1024x768"/> + </combo_box> + <text name="DisplayResLabel"> + Risoluzione del monitor: + </text> + <text name="AspectRatioLabel1" tool_tip="larghezza/altezza"> + Rapporto di visualizzazione: + </text> + <combo_box name="aspect_ratio" tool_tip="larghezza/altezza"> + <combo_box.item name="4:3(StandardCRT)" label="4:3 (Monitor Standard)"/> + <combo_box.item name="5:4(1280x1024LCD)" label="5:4 (1280x1024 LCD)"/> + <combo_box.item name="8:5(Widescreen)" label="8:5 (Widescreen)"/> + <combo_box.item name="16:9(Widescreen)" label="16:9 (Widescreen)"/> + </combo_box> + <check_box label="Autoconfigurazione" name="aspect_auto_detect"/> + <text name="HigherText"> + Qualità e + </text> + <text name="QualityText"> + Performance: + </text> + <text name="FasterText"> + Più veloce + </text> + <text name="ShadersPrefText"> + Basso + </text> + <text name="ShadersPrefText2"> + Medio + </text> + <text name="ShadersPrefText3"> + Alto + </text> + <text name="ShadersPrefText4"> + Ultra + </text> + <text name="HigherText2"> + Più alto + </text> + <text name="QualityText2"> + Qualità + </text> + <check_box label="Personalizzate" name="CustomSettings"/> + <text name="ShadersText"> + Effetti grafici: + </text> + <check_box label="Piccoli rilievi e scintillii" name="BumpShiny"/> + <check_box label="Effetti grafici base" name="BasicShaders" tool_tip="Disabilitare questa opzione può evitare che qualche scheda grafica vada in crash."/> + <check_box label="Effetti grafici atmosferici" name="WindLightUseAtmosShaders"/> + <check_box label="Riflessi dell'acqua" name="Reflections"/> + <text name="ReflectionDetailText"> + Dettaglio dei riflessi + </text> + <radio_group name="ReflectionDetailRadio"> + <radio_item name="0" label="Terreno ed alberi" /> + <radio_item name="1" label="Tutti gli aggetti statici" /> + <radio_item name="2" label="Tutti gli avatar e gli oggetti" /> + <radio_item name="3" label="Tutto" /> + </radio_group> + <text name="AvatarRenderingText"> + Rendering dell'avatar: + </text> + <check_box label="Avatar bidimensionali (Impostor)" name="AvatarImpostors"/> + <check_box label="Hardware Skinning" name="AvatarVertexProgram"/> + <check_box label="Abiti dell'avatar" name="AvatarCloth"/> + <text name="DrawDistanceMeterText1"> + m + </text> + <text name="DrawDistanceMeterText2"> + m + </text> + <slider label="Distanza di disegno:" name="DrawDistance" label_width="158" width="255"/> + <slider label="Conteggio massimo particelle:" name="MaxParticleCount" label_width="158" width="262" /> + <slider label="Qualità in post-produzione:" name="RenderPostProcess" label_width="158" width="223"/> + <text name="MeshDetailText"> + Dettagli reticolo: + </text> + <slider label=" Oggetti:" name="ObjectMeshDetail"/> + <slider label=" Prims flessibili:" name="FlexibleMeshDetail"/> + <slider label=" Alberi:" name="TreeMeshDetail"/> + <slider label=" Avatar:" name="AvatarMeshDetail"/> + <slider label=" Terreno:" name="TerrainMeshDetail"/> + <slider label=" Cielo:" name="SkyMeshDetail"/> + <text name="PostProcessText"> + Basso + </text> + <text name="ObjectMeshDetailText"> + Basso + </text> + <text name="FlexibleMeshDetailText"> + Basso + </text> + <text name="TreeMeshDetailText"> + Basso + </text> + <text name="AvatarMeshDetailText"> + Basso + </text> + <text name="TerrainMeshDetailText"> + Basso + </text> + <text name="SkyMeshDetailText"> + Basso + </text> + <text name="LightingDetailText"> + Dettagli illuminazione: + </text> + <radio_group name="LightingDetailRadio"> + <radio_item name="SunMoon" label="Solo il sole e la luna" /> + <radio_item name="LocalLights" label="Luci locali" /> + </radio_group> + <text name="TerrainDetailText"> + Dettagli terreno: + </text> + <radio_group name="TerrainDetailRadio"> + <radio_item name="0" label="Bassi" /> + <radio_item name="2" label="Alti" /> + </radio_group> + <button label="Configurazione raccomandata" name="Defaults" left="110" width="190" /> + <button label="Opzioni hardware" label_selected="Opzioni hardware" name="GraphicsHardwareButton"/> + <string name="resolution_format"> + [RES_X] x [RES_Y] + </string> + <string name="aspect_ratio_text"> + [NUM]:[DEN] + </string> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_region_covenant.xml b/indra/newview/skins/default/xui/it/panel_region_covenant.xml index 0089967aca3350e2de949ebd82c1240ea08a9fa7..802156ea0bc62d872da51fb6b773bed084ec392f 100644 --- a/indra/newview/skins/default/xui/it/panel_region_covenant.xml +++ b/indra/newview/skins/default/xui/it/panel_region_covenant.xml @@ -1,50 +1,80 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Regolamento" name="Covenant"> - <text name="covenant_help_text"> - Le modifiche alle informazioni del regolamento saranno esposte in tutti i terreni della proprietà immobiliare. - </text> - <text name="region_name_lbl"> - Regione: - </text> - <text name="region_name_text"> - (sconosciuta) - </text> - <text name="estate_name_lbl"> - Proprietà immobiliare: - </text> - <text name="estate_name_text"> - (sconosciuta) - </text> - <text name="estate_owner_lbl"> - Proprietario immobiliare: - </text> - <text name="estate_owner_text"> - (sconosciuto) - </text> - <text name="resellable_clause"> - Un terreno acquistato in questa regione può o non può essere rivenduto. - </text> - <text name="changeable_clause"> - Un terreno acquistato in questa regione può o non può essere unito o suddiviso. - </text> - <text name="covenent_instructions"> - Trascina e rilascia una notecard per cambiare il Regolamento di questa Proprietà Immobiliare. - </text> - <text_editor name="covenant_editor"> - In caricamento... - </text_editor> - <button label="Ripristina" name="reset_covenant"/> - <string name="can_resell"> - Un terreno acquistato in questa regione può essere rivenduto. - </string> - <string name="can_not_resell"> - Un terreno acquistato in questa regione non può essere rivenduto. - </string> - <string name="can_change"> - Un terreno acquistato in questa regione può essere unito o suddiviso. - </string> - <string name="can_not_change"> - Un terreno acquistato in questa regione non può essere unito o suddiviso. - </string> - <button label="?" name="covenant_help"/> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Regolamento" name="Covenant"> + <text name="estate_section_lbl"> + Proprietà : + </text> + <text name="estate_name_lbl"> + Nome: + </text> + <text name="estate_name_text"> + mainland + </text> + <text name="estate_owner_lbl"> + Proprietario: + </text> + <text name="estate_owner_text"> + (nessuno) + </text> + <text name="estate_cov_lbl"> + Regolamento: + </text> + <text name="covenant_timestamp_text"> + Ultima modifica Merc 31 Dic 1969 16:00:00 + </text> + <button label="?" name="covenant_help"/> + <text_editor name="covenant_editor"> + Per questa proprietà non è stato emesso alcun regolamento. + </text_editor> + <button label="Ripristina" name="reset_covenant"/> + <text name="covenant_help_text"> + Le modifiche nel regolamento saranno visibili su tutti i terreni della proprietà . + </text> + <text name="covenant_instructions"> + Trascina e rilascia una notecard per cambiare il regolamento di questa proprietà . + </text> + <text name="region_section_lbl"> + Regione: + </text> + <text name="region_name_lbl"> + Nome: + </text> + <text name="region_name_text"> + leyla + </text> + <text name="region_landtype_lbl"> + Tipo: + </text> + <text name="region_landtype_text"> + Mainland / Homestead + </text> + <text name="region_maturity_lbl"> + Categoria di accesso: + </text> + <text name="region_maturity_text"> + Adult + </text> + <text name="resellable_lbl"> + Rivendita: + </text> + <text name="resellable_clause"> + La terra in questa regione non può essere rivenduta. + </text> + <text name="changeable_lbl"> + Suddividi: + </text> + <text name="changeable_clause"> + La terra in questa regione non può essere unita/suddivisa. + </text> + <string name="can_resell"> + Un terreno acquistato in questa regione può essere rivenduto. + </string> + <string name="can_not_resell"> + Un terreno acquistato in questa regione non può essere rivenduto. + </string> + <string name="can_change"> + Un terreno acquistato in questa regione può essere unito o suddiviso. + </string> + <string name="can_not_change"> + Un terreno acquistato in questa regione non può essere unito o suddiviso. + </string> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_region_debug.xml b/indra/newview/skins/default/xui/it/panel_region_debug.xml index eee72843e97c1048ed0c1e63ebb4440e8d8ae983..fddc14e85cc921723d4654af285d08fb6f1e1f92 100644 --- a/indra/newview/skins/default/xui/it/panel_region_debug.xml +++ b/indra/newview/skins/default/xui/it/panel_region_debug.xml @@ -1,40 +1,40 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Debug - individuazione errori" name="Debug"> - <text name="region_text_lbl"> - Regione: - </text> - <text name="region_text"> - sconosciuta - </text> - <check_box label="Disabilita gli script" name="disable_scripts_check" tool_tip="Disabilita tutti gli script in questa regione"/> - <button label="?" name="disable_scripts_help"/> - <check_box label="Disabilita le collisioni" name="disable_collisions_check" tool_tip="Disabilita tutte le collisioni non di avatar in questa regione"/> - <button label="?" name="disable_collisions_help"/> - <check_box label="Disabilita la fisica" name="disable_physics_check" tool_tip="Disabilita tutta la fisica dei corpi in questa regione"/> - <button label="?" name="disable_physics_help"/> - <button label="Applica" name="apply_btn"/> - <text name="objret_text_lbl"> - Restituisci oggetti - </text> - <text name="resident_text_lbl"> - Residente: - </text> - <line_editor name="target_avatar_name"> - (nessuno) - </line_editor> - <button label="Scegli..." name="choose_avatar_btn"/> - <text name="options_text_lbl"> - Opzioni: - </text> - <check_box label="Restituisci gli oggetti con script" name="return_scripts" tool_tip="Restituisci solo gli oggetti contenenti script."/> - <check_box label="Restituisci solo gli oggetti che sono sulle terre altrui" name="return_other_land" tool_tip="Restituisci solo gli oggetti che sono in terreni appartenenti a qualcun altro"/> - <check_box label="Restituisci gli oggetti in ogni regione di questi possedimenti" name="return_estate_wide" tool_tip="Restituisci tutti gli oggetti nelle varie regioni che costituiscono l'insieme dei possedimenti terrieri"/> - <button label="Restituisci" name="return_btn"/> - <button label="Visualizza l'elenco dei maggiori collidenti..." name="top_colliders_btn" tool_tip="Elenco degli oggetti che stanno potenzialmente subendo le maggiori collisioni"/> - <button label="?" name="top_colliders_help"/> - <button label="Visualizza l'elenco degli script più pesanti..." name="top_scripts_btn" tool_tip="Elenco degli oggetti che impiegano più tempo a far girare gli script"/> - <button label="?" name="top_scripts_help"/> - <button label="Riavvia la regione" name="restart_btn" tool_tip="Dai 2 minuti di tempo massimo e fai riavviare la regione"/> - <button label="?" name="restart_help"/> - <button label="Ritarda il riavvio" name="cancel_restart_btn" tool_tip="Ritarda il riavvio della regione di un'ora"/> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Debug - individuazione errori" name="Debug"> + <text name="region_text_lbl"> + Regione: + </text> + <text name="region_text"> + sconosciuta + </text> + <check_box label="Disabilita gli script" name="disable_scripts_check" tool_tip="Disabilita tutti gli script in questa regione"/> + <button label="?" name="disable_scripts_help"/> + <check_box label="Disabilita le collisioni" name="disable_collisions_check" tool_tip="Disabilita tutte le collisioni non di avatar in questa regione"/> + <button label="?" name="disable_collisions_help"/> + <check_box label="Disabilita la fisica" name="disable_physics_check" tool_tip="Disabilita tutta la fisica dei corpi in questa regione"/> + <button label="?" name="disable_physics_help"/> + <button label="Applica" name="apply_btn"/> + <text name="objret_text_lbl"> + Restituisci oggetti + </text> + <text name="resident_text_lbl"> + Residente: + </text> + <line_editor name="target_avatar_name"> + (nessuno) + </line_editor> + <button label="Scegli..." name="choose_avatar_btn"/> + <text name="options_text_lbl"> + Opzioni: + </text> + <check_box label="Restituisci gli oggetti con script" name="return_scripts" tool_tip="Restituisci solo gli oggetti contenenti script."/> + <check_box label="Restituisci solo gli oggetti che sono sulle terre altrui" name="return_other_land" tool_tip="Restituisci solo gli oggetti che sono in terreni appartenenti a qualcun altro"/> + <check_box label="Restituisci gli oggetti in ogni regione di questi possedimenti" name="return_estate_wide" tool_tip="Restituisci tutti gli oggetti nelle varie regioni che costituiscono l'insieme dei possedimenti terrieri"/> + <button label="Restituisci" name="return_btn"/> + <button label="Visualizza l'elenco dei maggiori collidenti..." name="top_colliders_btn" tool_tip="Elenco degli oggetti che stanno potenzialmente subendo le maggiori collisioni"/> + <button label="?" name="top_colliders_help"/> + <button label="Visualizza l'elenco degli script più pesanti..." name="top_scripts_btn" tool_tip="Elenco degli oggetti che impiegano più tempo a far girare gli script"/> + <button label="?" name="top_scripts_help"/> + <button label="Riavvia la regione" name="restart_btn" tool_tip="Dai 2 minuti di tempo massimo e fai riavviare la regione"/> + <button label="?" name="restart_help"/> + <button label="Ritarda il riavvio" name="cancel_restart_btn" tool_tip="Ritarda il riavvio della regione di un'ora"/> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_region_estate.xml b/indra/newview/skins/default/xui/it/panel_region_estate.xml index f99a9068687e2149b7431cfc4fbfc22b11f83051..a27e3a716c43e0fd318ddc2513d0b82c15bc0789 100644 --- a/indra/newview/skins/default/xui/it/panel_region_estate.xml +++ b/indra/newview/skins/default/xui/it/panel_region_estate.xml @@ -1,69 +1,69 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Proprietà immobiliari" name="Estate"> - <text name="estate_help_text"> - I cambiamenti alle impostazioni in questa finestra avranno effetto su tutte -le regioni della proprietà . - </text> - <text name="estate_text"> - Proprietà immobiliari: - </text> - <text name="estate_name"> - (sconosciuto) - </text> - <text name="owner_text"> - Proprietario: - </text> - <text name="estate_owner"> - (sconosciuto) - </text> - <check_box label="Usa orario globale" name="use_global_time_check"/> - <button label="?" name="use_global_time_help"/> - <check_box label="Sole fisso" name="fixed_sun_check"/> - <button label="?" name="fixed_sun_help"/> - <slider label="Fase" name="sun_hour_slider"/> - <check_box label="Permetti accesso pubblico" name="externally_visible_check"/> - <button label="?" name="externally_visible_help"/> - <text name="Only Allow"> - Limita l'accesso a: - </text> - <check_box label="residenti che hanno dato informazioni di pagamento" name="limit_payment" tool_tip="Blocca residenti non identificati."/> - <check_box label="Adulti con età verificata" name="limit_age_verified" tool_tip="Blocca residenti che non hanno verificato la loro età . Per maggiori informazioni vai a support.secondlife.com."/> - <check_box label="Permetti la chat voice" name="voice_chat_check"/> - <button label="?" name="voice_chat_help"/> - <check_box label="Permetti teleport diretto" name="allow_direct_teleport"/> - <button label="?" name="allow_direct_teleport_help"/> - <text name="abuse_email_text"> - Indirizzo email per la denuncia di abuso: - </text> - <string name="email_unsupported"> - Tipologia non supportata - </string> - <button label="?" name="abuse_email_address_help"/> - <button label="Applica" name="apply_btn"/> - <button label="Espelli persona dalle proprietà ..." name="kick_user_from_estate_btn"/> - <button label="Manda un messaggio ai residenti di tutte le tue proprietà ..." name="message_estate_btn"/> - <text name="estate_manager_label"> - Manager delle proprietà : - </text> - <button label="?" name="estate_manager_help"/> - <button label="Rimuovi..." name="remove_estate_manager_btn"/> - <button label="Aggiungi..." name="add_estate_manager_btn"/> - <text name="allow_resident_label"> - Residenti autorizzati: - </text> - <button label="?" name="allow_resident_help"/> - <button label="Rimuovi..." name="remove_allowed_avatar_btn"/> - <button label="Aggiungi..." name="add_allowed_avatar_btn"/> - <text name="allow_group_label"> - Gruppi autorizzati: - </text> - <button label="?" name="allow_group_help"/> - <button label="Rimuovi..." name="remove_allowed_group_btn"/> - <button label="Aggiungi..." name="add_allowed_group_btn"/> - <text name="ban_resident_label"> - Residenti bloccati: - </text> - <button label="?" name="ban_resident_help"/> - <button label="Rimuovi..." name="remove_banned_avatar_btn"/> - <button label="Aggiungi..." name="add_banned_avatar_btn"/> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Proprietà immobiliari" name="Estate"> + <text name="estate_help_text"> + I cambiamenti alle impostazioni in questa finestra avranno effetto su tutte +le regioni della proprietà . + </text> + <text name="estate_text"> + Proprietà immobiliari: + </text> + <text name="estate_name"> + (sconosciuto) + </text> + <text name="owner_text"> + Proprietario: + </text> + <text name="estate_owner"> + (sconosciuto) + </text> + <check_box label="Usa orario globale" name="use_global_time_check"/> + <button label="?" name="use_global_time_help"/> + <check_box label="Sole fisso" name="fixed_sun_check"/> + <button label="?" name="fixed_sun_help"/> + <slider label="Fase" name="sun_hour_slider"/> + <check_box label="Permetti accesso pubblico" name="externally_visible_check"/> + <button label="?" name="externally_visible_help"/> + <text name="Only Allow"> + Limita l'accesso a: + </text> + <check_box label="residenti che hanno dato informazioni di pagamento" name="limit_payment" tool_tip="Blocca residenti non identificati."/> + <check_box label="Adulti con età verificata" name="limit_age_verified" tool_tip="Blocca residenti che non hanno verificato la loro età . Per maggiori informazioni vai a support.secondlife.com."/> + <check_box label="Permetti la chat voice" name="voice_chat_check"/> + <button label="?" name="voice_chat_help"/> + <check_box label="Permetti teleport diretto" name="allow_direct_teleport"/> + <button label="?" name="allow_direct_teleport_help"/> + <text name="abuse_email_text"> + Indirizzo email per la denuncia di abuso: + </text> + <string name="email_unsupported"> + Tipologia non supportata + </string> + <button label="?" name="abuse_email_address_help"/> + <button label="Applica" name="apply_btn"/> + <button label="Espelli persona dalle proprietà ..." name="kick_user_from_estate_btn"/> + <button label="Manda un messaggio ai residenti di tutte le tue proprietà ..." name="message_estate_btn"/> + <text name="estate_manager_label"> + Manager delle proprietà : + </text> + <button label="?" name="estate_manager_help"/> + <button label="Rimuovi..." name="remove_estate_manager_btn"/> + <button label="Aggiungi..." name="add_estate_manager_btn"/> + <text name="allow_resident_label"> + Residenti autorizzati: + </text> + <button label="?" name="allow_resident_help"/> + <button label="Rimuovi..." name="remove_allowed_avatar_btn"/> + <button label="Aggiungi..." name="add_allowed_avatar_btn"/> + <text name="allow_group_label"> + Gruppi autorizzati: + </text> + <button label="?" name="allow_group_help"/> + <button label="Rimuovi..." name="remove_allowed_group_btn"/> + <button label="Aggiungi..." name="add_allowed_group_btn"/> + <text name="ban_resident_label"> + Residenti bloccati: + </text> + <button label="?" name="ban_resident_help"/> + <button label="Rimuovi..." name="remove_banned_avatar_btn"/> + <button label="Aggiungi..." name="add_banned_avatar_btn"/> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_region_general.xml b/indra/newview/skins/default/xui/it/panel_region_general.xml index 9b167bebd1d4147a3d490d528068bd5890a4289f..fffe51770e3d56fac6f6e33ba79e7bf354cf5877 100644 --- a/indra/newview/skins/default/xui/it/panel_region_general.xml +++ b/indra/newview/skins/default/xui/it/panel_region_general.xml @@ -1,43 +1,59 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Regione" name="General"> - <text name="region_text_lbl"> - Regione: - </text> - <text name="region_text"> - sconosciuta - </text> - <text name="version_channel_text_lbl"> - Versione: - </text> - <text name="version_channel_text"> - sconosciuta - </text> - <check_box label="Proibisci la modifica del terreno" name="block_terraform_check"/> - <button label="?" name="terraform_help"/> - <check_box label="Impedisci il volo" name="block_fly_check"/> - <button label="?" name="fly_help"/> - <check_box label="Abilita i danni" name="allow_damage_check"/> - <button label="?" name="damage_help"/> - <check_box label="Limita gli urti" name="restrict_pushobject"/> - <button label="?" name="restrict_pushobject_help"/> - <check_box label="Abilita la rivendita del terreno" name="allow_land_resell_check"/> - <button label="?" name="land_resell_help"/> - <check_box label="Abilita unione/suddivisione del terreno" name="allow_parcel_changes_check"/> - <button label="?" name="parcel_changes_help"/> - <check_box label="Proibisci che il terreno appaia nelle ricerche" name="block_parcel_search_check" tool_tip="Permetti che le persone vedano questa regione e le sue suddivisioni nei risultati delle ricerche"/> - <button label="?" name="parcel_search_help"/> - <spinner label="Limite massimo di avatar" name="agent_limit_spin"/> - <button label="?" name="agent_limit_help"/> - <spinner label="Bonus di oggetti" name="object_bonus_spin"/> - <button label="?" name="object_bonus_help"/> - <text label="Maturità " name="access_text"> - Maturità : - </text> - - <button label="?" name="access_help"/> - <button label="Applica" name="apply_btn"/> - <button label="Teletrasporta a casa un utente..." name="kick_btn"/> - <button label="Teletrasporta a casa tutti gli utenti..." name="kick_all_btn"/> - <button label="Invia messaggio alla regione..." name="im_btn"/> - <button label="Gestisci snodo di teleport..." name="manage_telehub_btn"/> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Regione" name="General"> + <text name="region_text_lbl"> + Regione: + </text> + <text name="region_text"> + sconosciuta + </text> + <text name="version_channel_text_lbl"> + Versione: + </text> + <text name="version_channel_text"> + sconosciuta + </text> + <text name="region_type_lbl"> + Tipo: + </text> + <text name="region_type"> + sconosciuto + </text> + <check_box label="Proibisci la modifica del terreno" name="block_terraform_check"/> + <button label="?" name="terraform_help"/> + <check_box label="Impedisci il volo" name="block_fly_check"/> + <button label="?" name="fly_help"/> + <check_box label="Abilita i danni" name="allow_damage_check"/> + <button label="?" name="damage_help"/> + <check_box label="Limita gli urti" name="restrict_pushobject"/> + <button label="?" name="restrict_pushobject_help"/> + <check_box label="Abilita la rivendita del terreno" name="allow_land_resell_check"/> + <button label="?" name="land_resell_help"/> + <check_box label="Abilita unione/suddivisione del terreno" name="allow_parcel_changes_check"/> + <button label="?" name="parcel_changes_help"/> + <check_box label="Proibisci che il terreno appaia nelle ricerche" name="block_parcel_search_check" tool_tip="Permetti che le persone vedano questa regione e le sue suddivisioni nei risultati delle ricerche"/> + <button label="?" name="parcel_search_help"/> + <spinner label="Limite massimo di avatar" name="agent_limit_spin"/> + <button label="?" name="agent_limit_help"/> + <spinner label="Bonus di oggetti" name="object_bonus_spin"/> + <button label="?" name="object_bonus_help"/> + <text label="Maturità " name="access_text"> + Categoria di accesso: + </text> + <combo_box label="Mature" name="access_combo"> + <combo_item name="Adult"> + Adult + </combo_item> + <combo_item name="Mature"> + Mature + </combo_item> + <combo_item name="PG"> + PG + </combo_item> + </combo_box> + <button label="?" name="access_help"/> + <button label="Applica" name="apply_btn"/> + <button label="Teletrasporta a casa un utente..." name="kick_btn"/> + <button label="Teletrasporta a casa tutti gli utenti..." name="kick_all_btn"/> + <button label="Invia messaggio alla regione..." name="im_btn"/> + <button label="Gestisci snodo di teleport..." name="manage_telehub_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 27ec475881db283dfa61c934e74c3f971754db7d..70072275eb2ec8ca09d91125ecf5be8c64043b4b 100644 --- a/indra/newview/skins/default/xui/it/panel_region_terrain.xml +++ b/indra/newview/skins/default/xui/it/panel_region_terrain.xml @@ -1,27 +1,27 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Terreno" name="Terrain"> - <text name="region_text_lbl"> - Regione: - </text> - <text name="region_text"> - 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"/> - <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"/> - <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 label="Trasforma il terreno" name="bake_terrain_btn" tool_tip="Imposta il terreno corrente come punto medio per i limiti di innalzamento/abbassamento"/> - <button label="?" name="bake_terrain_help"/> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Terreno" name="Terrain"> + <text name="region_text_lbl"> + Regione: + </text> + <text name="region_text"> + 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"/> + <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"/> + <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 label="Trasforma il terreno" name="bake_terrain_btn" tool_tip="Imposta il terreno corrente come punto medio per i limiti di innalzamento/abbassamento"/> + <button label="?" name="bake_terrain_help"/> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_region_texture.xml b/indra/newview/skins/default/xui/it/panel_region_texture.xml index 6b0c4cf9dfa814e93abb8c4aeec40c3983332b96..4e39db9b1d62a26c5f59a6797dd3e0ce7c1a89c8 100644 --- a/indra/newview/skins/default/xui/it/panel_region_texture.xml +++ b/indra/newview/skins/default/xui/it/panel_region_texture.xml @@ -1,57 +1,57 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Texture del terreno" name="Textures"> - <text name="region_text_lbl"> - Regione: - </text> - <text name="region_text"> - sconosciuto - </text> - <text name="detail_texture_text"> - Texture del terreno (è necessario siano 512x512, 24 bit .tga files) - </text> - <text name="height_text_lbl"> - 1 (Bassa) - </text> - <text name="height_text_lbl2"> - 2 - </text> - <text name="height_text_lbl3"> - 3 - </text> - <text name="height_text_lbl4"> - 4 (Alta) - </text> - <text name="height_text_lbl5"> - Range di elevazione della texture - </text> - <text name="height_text_lbl6"> - Sud Ovest - </text> - <text name="height_text_lbl7"> - Nord Ovest - </text> - <text name="height_text_lbl8"> - Sud Est - </text> - <text name="height_text_lbl9"> - Nord Est - </text> - <spinner label="Bassa" name="height_start_spin_0"/> - <spinner label="Bassa" name="height_start_spin_1"/> - <spinner label="Bassa" name="height_start_spin_2"/> - <spinner label="Bassa" name="height_start_spin_3"/> - <spinner label="Alta" name="height_range_spin_0"/> - <spinner label="Alta" name="height_range_spin_1"/> - <spinner label="Alta" name="height_range_spin_2"/> - <spinner label="Alta" name="height_range_spin_3"/> - <text name="height_text_lbl10"> - Questi valori rappresentano l'intervallo di miscelazione delle texture qui sopra. - </text> - <text name="height_text_lbl11"> - Misurato in metri, il valore più BASSO corrisponde all'altezza MASSIMA della Texture #1, - </text> - <text name="height_text_lbl12"> - e il valore più ALTO all'altezza MINIMA della Texture #4. - </text> - <button label="Applica" name="apply_btn"/> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Texture del terreno" name="Textures"> + <text name="region_text_lbl"> + Regione: + </text> + <text name="region_text"> + sconosciuto + </text> + <text name="detail_texture_text"> + Texture del terreno (è necessario siano 512x512, 24 bit .tga files) + </text> + <text name="height_text_lbl"> + 1 (Bassa) + </text> + <text name="height_text_lbl2"> + 2 + </text> + <text name="height_text_lbl3"> + 3 + </text> + <text name="height_text_lbl4"> + 4 (Alta) + </text> + <text name="height_text_lbl5"> + Range di elevazione della texture + </text> + <text name="height_text_lbl6"> + Sud Ovest + </text> + <text name="height_text_lbl7"> + Nord Ovest + </text> + <text name="height_text_lbl8"> + Sud Est + </text> + <text name="height_text_lbl9"> + Nord Est + </text> + <spinner label="Bassa" name="height_start_spin_0"/> + <spinner label="Bassa" name="height_start_spin_1"/> + <spinner label="Bassa" name="height_start_spin_2"/> + <spinner label="Bassa" name="height_start_spin_3"/> + <spinner label="Alta" name="height_range_spin_0"/> + <spinner label="Alta" name="height_range_spin_1"/> + <spinner label="Alta" name="height_range_spin_2"/> + <spinner label="Alta" name="height_range_spin_3"/> + <text name="height_text_lbl10"> + Questi valori rappresentano l'intervallo di miscelazione delle texture qui sopra. + </text> + <text name="height_text_lbl11"> + Misurato in metri, il valore più BASSO corrisponde all'altezza MASSIMA della Texture #1, + </text> + <text name="height_text_lbl12"> + e il valore più ALTO all'altezza MINIMA della Texture #4. + </text> + <button label="Applica" name="apply_btn"/> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_scrolling_param.xml b/indra/newview/skins/default/xui/it/panel_scrolling_param.xml index e7c35f590db43af54b3c3bc947b140fab7f5442c..b5f8c8d6f000015d09fae2c6237500b568de3ef7 100644 --- a/indra/newview/skins/default/xui/it/panel_scrolling_param.xml +++ b/indra/newview/skins/default/xui/it/panel_scrolling_param.xml @@ -1,10 +1,10 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="LLScrollingPanelParam"> - <text name="Loading..."> - Attendi... - </text> - <text name="Loading...2"> - Attendi... - </text> - <slider label="[DESC]" name="param slider"/> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="LLScrollingPanelParam"> + <text name="Loading..."> + Attendi... + </text> + <text name="Loading...2"> + Attendi... + </text> + <slider label="[DESC]" name="param slider"/> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_status_bar.xml b/indra/newview/skins/default/xui/it/panel_status_bar.xml index 581e0c0e6a8285b942e9b21b94f0666143350024..2403dce20e86e35441d9acb1e1661334976b7ef5 100644 --- a/indra/newview/skins/default/xui/it/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/it/panel_status_bar.xml @@ -1,38 +1,38 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="status"> - <text name="ParcelNameText" tool_tip="Nome dell'appezzamento di terreno su cui sei. Clicca 'Informazioni sul terreno'."> - indica qui il nome del terreno - </text> - <text name="BalanceText" tool_tip="Saldo dell'Account"> - In caricamento ... - </text> - <button label="" label_selected="" name="buycurrency" tool_tip="Acquista valuta"/> - <text name="TimeText" tool_tip="Ora corrente (Pacifico)"> - 12:00 AM - </text> - <string name="StatBarDaysOfWeek"> - Domenica:Lunedì:Martedì:Mercoledì:Giovedì:Venerdì:Sabato - </string> - <string name="StatBarMonthsOfYear"> - Gennaio:Febbraio:Marzo:Aprile:Maggio:Giugno:Luglio:Agosto:Settembre:Ottobre:Novembre:Dicembre - </string> - <button label="" label_selected="" name="scriptout" tool_tip="Avvisi ed Errori degli script"/> - <button label="" label_selected="" name="health" tool_tip="Salute"/> - <text name="HealthText" tool_tip="Salute"> - 100% - </text> - <button label="" label_selected="" name="no_fly" tool_tip="Volo non permesso"/> - <button label="" label_selected="" name="no_build" tool_tip="Costruzione non permessa"/> - <button label="" label_selected="" name="no_scripts" tool_tip="Script non permessi"/> - <button label="" label_selected="" name="restrictpush" tool_tip="Vietato spingere"/> - <button label="" label_selected="" name="status_no_voice" tool_tip="Voice non disponibile qui"/> - <button label="" label_selected="" name="buyland" tool_tip="Compra questo terreno"/> - <line_editor label="Cerca" name="search_editor" tool_tip="Cerca in Second Life"/> - <button label="" label_selected="" name="search_btn" tool_tip="Cerca in Second Life"/> - <string name="packet_loss_tooltip"> - Perdita di pacchetti - </string> - <string name="bandwidth_tooltip"> - Larghezza di banda - </string> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="status"> + <text name="ParcelNameText" tool_tip="Nome dell'appezzamento di terreno su cui sei. Clicca 'Informazioni sul terreno'."> + indica qui il nome del terreno + </text> + <text name="BalanceText" tool_tip="Saldo dell'Account"> + In caricamento ... + </text> + <button label="" label_selected="" name="buycurrency" tool_tip="Acquista valuta"/> + <text name="TimeText" tool_tip="Ora corrente (Pacifico)"> + 12:00 AM + </text> + <string name="StatBarDaysOfWeek"> + Domenica:Lunedì:Martedì:Mercoledì:Giovedì:Venerdì:Sabato + </string> + <string name="StatBarMonthsOfYear"> + Gennaio:Febbraio:Marzo:Aprile:Maggio:Giugno:Luglio:Agosto:Settembre:Ottobre:Novembre:Dicembre + </string> + <button label="" label_selected="" name="scriptout" tool_tip="Avvisi ed Errori degli script"/> + <button label="" label_selected="" name="health" tool_tip="Salute"/> + <text name="HealthText" tool_tip="Salute"> + 100% + </text> + <button label="" label_selected="" name="no_fly" tool_tip="Volo non permesso"/> + <button label="" label_selected="" name="no_build" tool_tip="Costruzione non permessa"/> + <button label="" label_selected="" name="no_scripts" tool_tip="Script non permessi"/> + <button label="" label_selected="" name="restrictpush" tool_tip="Vietato spingere"/> + <button label="" label_selected="" name="status_no_voice" tool_tip="Voice non disponibile qui"/> + <button label="" label_selected="" name="buyland" tool_tip="Compra questo terreno"/> + <line_editor label="Cerca" name="search_editor" tool_tip="Cerca in Second Life"/> + <button label="" label_selected="" name="search_btn" tool_tip="Cerca in Second Life"/> + <string name="packet_loss_tooltip"> + Perdita di pacchetti + </string> + <string name="bandwidth_tooltip"> + Larghezza di banda + </string> +</panel> diff --git a/indra/newview/skins/default/xui/it/strings.xml b/indra/newview/skins/default/xui/it/strings.xml index f58a9131ae36ce19881fd8c460b0cc61d3af5920..d7884cfbdbba6f1176dd6c2ce8676374bec12f20 100644 --- a/indra/newview/skins/default/xui/it/strings.xml +++ b/indra/newview/skins/default/xui/it/strings.xml @@ -1,421 +1,486 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<!-- This file contains strings that used to be hardcoded in the source. - It is only for those strings which don't belong in a floater. - For example, the strings used in avatar chat bubbles, and strings - that are returned from one component and may appear in many places--> -<strings> - <string name="LoginInProgress"> - In connessione. [APP_NAME] può sembrare rallentata. Attendi. - </string> - <string name="LoginAuthenticating"> - In autenticazione - </string> - <string name="LoginMaintenance"> - Aggiornamento account in corso... - </string> - <string name="LoginAttempt"> - Un precedente tentativo di login è fallito. Tentativo di connessione [NUMBER] - </string> - <string name="LoginPrecaching"> - Sto caricando SecondLife... - </string> - <string name="LoginInitializingBrowser"> - Inizializzazione del browser web incorporato... - </string> - <string name="LoginInitializingMultimedia"> - Inizializzazione dati multimediali... - </string> - <string name="LoginVerifyingCache"> - Verifica della cache corso (può impiegarci dai 60-90 secondi)... - </string> - <string name="LoginProcessingResponse"> - Risposta in elaborazione... - </string> - <string name="LoginInitializingWorld"> - Inizializzazione... - </string> - <string name="LoginDecodingImages"> - Decodifica immagini... - </string> - <string name="LoginInitializingQuicktime"> - Inizializzazione QuickTime... - </string> - <string name="LoginQuicktimeNotFound"> - QuickTime non trovato - impossibile inizializzare. - </string> - <string name="LoginQuicktimeOK"> - QuickTime configurato con successo. - </string> - <string name="LoginWaitingForRegionHandshake"> - In attesa della risposta della regione... - </string> - <string name="LoginConnectingToRegion"> - Connessione alla regione... - </string> - <string name="LoginDownloadingClothing"> - Sto caricando i vestiti... - </string> - <string name="LoginFailedNoNetwork"> - Errore di rete: impossibile connettersi, verifica la tua connessione. - </string> - <string name="AgentLostConnection"> - Questa regione sta avendo problemi. Verifica la tua connessione a Internet. - </string> - <string name="TooltipPerson"> - Persona - </string> - <string name="TooltipNoName"> - (nessun nome) - </string> - <string name="TooltipOwner"> - Proprietario: - </string> - <string name="TooltipPublic"> - Pubblico - </string> - <string name="TooltipIsGroup"> - (Gruppo) - </string> - <string name="TooltipFlagScript"> - Script - </string> - <string name="TooltipFlagPhysics"> - Fisica - </string> - <string name="TooltipFlagTouch"> - Tocca - </string> - <string name="TooltipFlagL$"> - L$ - </string> - <string name="TooltipFlagDropInventory"> - Prendi dall'inventario - </string> - <string name="TooltipFlagPhantom"> - Fantasma - </string> - <string name="TooltipFlagTemporary"> - Temporaneo - </string> - <string name="TooltipFlagRightClickMenu"> - (Clicca con il tasto destro per il menù) - </string> - <string name="TooltipFreeToCopy"> - Copia consentita - </string> - <string name="TooltipForSaleL$"> - In Vendita: [AMOUNT]L$ - </string> - <string name="TooltipForSaleMsg"> - In Vendita: [MESSAGE] - </string> - <string name="TooltipFlagGroupBuild"> - Costruzione solo con gruppo - </string> - <string name="TooltipFlagNoBuild"> - Divieto di Costruire - </string> - <string name="TooltipFlagNoEdit"> - Costruzione solo con gruppo - </string> - <string name="TooltipFlagNotSafe"> - Non Sicuro - </string> - <string name="TooltipFlagNoFly"> - Divieto di Volare - </string> - <string name="TooltipFlagGroupScripts"> - Script solo con gruppo - </string> - <string name="TooltipFlagNoScripts"> - Script vietati - </string> - <string name="TooltipLand"> - Terreno: - </string> - <string name="TooltipMustSingleDrop"> - Solo un singolo oggetto può essere creato qui - </string> - <string name="RetrievingData"> - Recupero dati in corso... - </string> - <string name="ReleaseNotes"> - Note sulla versione - </string> - <string name="LoadingData"> - In caricamento... - </string> - <string name="AvatarNameNobody"> - (nessuno) - </string> - <string name="AvatarNameWaiting"> - (in attesa) - </string> - <string name="AvatarNameHippos"> - (hippos) - </string> - <string name="GroupNameNone"> - (nessuno) - </string> - <string name="AssetErrorNone"> - Nessun errore - </string> - <string name="AssetErrorRequestFailed"> - Richiesta risorsa: fallita - </string> - <string name="AssetErrorNonexistentFile"> - Richiesta risorsa: file non esistente - </string> - <string name="AssetErrorNotInDatabase"> - Richiesta risorsa: risorsa non trovata nel database - </string> - <string name="AssetErrorEOF"> - Fine del file - </string> - <string name="AssetErrorCannotOpenFile"> - Apertura del file non possibile - </string> - <string name="AssetErrorFileNotFound"> - File non trovato - </string> - <string name="AssetErrorTCPTimeout"> - Tempo esaurito per il trasferimento file - </string> - <string name="AssetErrorCircuitGone"> - Circuito perso - </string> - <string name="AssetErrorUnknownStatus"> - Stato sconosciuto - </string> - <string name="AvatarEditingApparance"> - (In modifica dell'aspetto fisico) - </string> - <string name="AvatarAway"> - Assente - </string> - <string name="AvatarBusy"> - Occupato - </string> - <string name="AvatarMuted"> - Mutato - </string> - <string name="anim_express_afraid"> - Dispiaciuto - </string> - <string name="anim_express_anger"> - Arrabbiato - </string> - <string name="anim_away"> - Assente - </string> - <string name="anim_backflip"> - Salto all'indietro - </string> - <string name="anim_express_laugh"> - Ridere a crepapelle - </string> - <string name="anim_express_toothsmile"> - Gran sorriso - </string> - <string name="anim_blowkiss"> - Lancia un bacio - </string> - <string name="anim_express_bored"> - Noia - </string> - <string name="anim_bow"> - Inchino - </string> - <string name="anim_clap"> - Applauso - </string> - <string name="anim_courtbow"> - Inchino a corte - </string> - <string name="anim_express_cry"> - Pianto - </string> - <string name="anim_dance1"> - Ballo 1 - </string> - <string name="anim_dance2"> - Ballo 2 - </string> - <string name="anim_dance3"> - Ballo 3 - </string> - <string name="anim_dance4"> - Ballo 4 - </string> - <string name="anim_dance5"> - Ballo 5 - </string> - <string name="anim_dance6"> - Ballo 6 - </string> - <string name="anim_dance7"> - Ballo 7 - </string> - <string name="anim_dance8"> - Dance 8 - </string> - <string name="anim_express_disdain"> - Sdegno - </string> - <string name="anim_drink"> - Bere - </string> - <string name="anim_express_embarrased"> - Imbarazzo - </string> - <string name="anim_angry_fingerwag"> - Negare col dito - </string> - <string name="anim_fist_pump"> - Esultare con pugno - </string> - <string name="anim_yoga_float"> - Yoga fluttuante - </string> - <string name="anim_express_frown"> - Acciglio - </string> - <string name="anim_impatient"> - Impazienza - </string> - <string name="anim_jumpforjoy"> - Salto di gioia - </string> - <string name="anim_kissmybutt"> - Baciami il sedere - </string> - <string name="anim_express_kiss"> - Bacio - </string> - <string name="anim_laugh_short"> - Risata - </string> - <string name="anim_musclebeach"> - Muscoli da spiaggia - </string> - <string name="anim_no_unhappy"> - No (Scontento) - </string> - <string name="anim_no_head"> - No - </string> - <string name="anim_nyanya"> - Na-na-na - </string> - <string name="anim_punch_onetwo"> - Uno-due pugno - </string> - <string name="anim_express_open_mouth"> - Bocca aperta - </string> - <string name="anim_peace"> - Pace - </string> - <string name="anim_point_you"> - Indicare altri - </string> - <string name="anim_point_me"> - Indicare te stesso - </string> - <string name="anim_punch_l"> - Pugno a sinistra - </string> - <string name="anim_punch_r"> - Pugno a destra - </string> - <string name="anim_rps_countdown"> - Contare nella morra cinese - </string> - <string name="anim_rps_paper"> - Carta nella morra cinese - </string> - <string name="anim_rps_rock"> - Sasso nella morra cinese - </string> - <string name="anim_rps_scissors"> - Forbici nella morra cinese - </string> - <string name="anim_express_repulsed"> - Repulsione - </string> - <string name="anim_kick_roundhouse_r"> - Calcio con rotazione - </string> - <string name="anim_express_sad"> - Triste - </string> - <string name="anim_salute"> - Saluto - </string> - <string name="anim_shout"> - Urlo - </string> - <string name="anim_express_shrug"> - Spallucce - </string> - <string name="anim_express_smile"> - Sorriso - </string> - <string name="anim_smoke_idle"> - Fumare - </string> - <string name="anim_smoke_inhale"> - Fumare inspirazione - </string> - <string name="anim_smoke_throw_down"> - Fumare mandando giù - </string> - <string name="anim_express_surprise"> - Sorpresa - </string> - <string name="anim_sword_strike_r"> - Colpo di spada - </string> - <string name="anim_angry_tantrum"> - Collera - </string> - <string name="anim_express_tongue_out"> - Linguaccia - </string> - <string name="anim_hello"> - Saluto con mano - </string> - <string name="anim_whisper"> - Sussurro - </string> - <string name="anim_whistle"> - Fischio - </string> - <string name="anim_express_wink"> - Ammicca - </string> - <string name="anim_wink_hollywood"> - Ammicca (Hollywood) - </string> - <string name="anim_express_worry"> - Preoccupato - </string> - <string name="anim_yes_happy"> - Si (Felice) - </string> - <string name="anim_yes_head"> - Si - </string> - <string name="texture_loading"> - Caricando... - </string> - <string name="worldmap_offline"> - Offline - </string> - <string name="whisper"> - sussurra: - </string> - <string name="shout"> - grida: - </string> -</strings> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- This file contains strings that used to be hardcoded in the source. + It is only for those strings which do not belong in a floater. + For example, the strings used in avatar chat bubbles, and strings + that are returned from one component and may appear in many places--> +<strings> + <string name="LoginInProgress"> + In connessione. [APP_NAME] può sembrare rallentata. Attendi. + </string> + <string name="LoginAuthenticating"> + In autenticazione + </string> + <string name="LoginMaintenance"> + Aggiornamento account in corso... + </string> + <string name="LoginAttempt"> + Un precedente tentativo di login è fallito. Tentativo di connessione [NUMBER] + </string> + <string name="LoginPrecaching"> + Sto caricando SecondLife... + </string> + <string name="LoginInitializingBrowser"> + Inizializzazione del browser web incorporato... + </string> + <string name="LoginInitializingMultimedia"> + Inizializzazione dati multimediali... + </string> + <string name="LoginVerifyingCache"> + Verifica della cache corso (può impiegarci dai 60-90 secondi)... + </string> + <string name="LoginProcessingResponse"> + Risposta in elaborazione... + </string> + <string name="LoginInitializingWorld"> + Inizializzazione... + </string> + <string name="LoginDecodingImages"> + Decodifica immagini... + </string> + <string name="LoginInitializingQuicktime"> + Inizializzazione QuickTime... + </string> + <string name="LoginQuicktimeNotFound"> + QuickTime non trovato - impossibile inizializzare. + </string> + <string name="LoginQuicktimeOK"> + QuickTime configurato con successo. + </string> + <string name="LoginWaitingForRegionHandshake"> + In attesa della risposta della regione... + </string> + <string name="LoginConnectingToRegion"> + Connessione alla regione... + </string> + <string name="LoginDownloadingClothing"> + Sto caricando i vestiti... + </string> + <string name="AgentLostConnection"> + Questa regione sta avendo problemi. Verifica la tua connessione a Internet. + </string> + <string name="TooltipPerson"> + Persona + </string> + <string name="TooltipNoName"> + (nessun nome) + </string> + <string name="TooltipOwner"> + Proprietario: + </string> + <string name="TooltipPublic"> + Pubblico + </string> + <string name="TooltipIsGroup"> + (Gruppo) + </string> + <string name="TooltipFlagScript"> + Script + </string> + <string name="TooltipFlagPhysics"> + Fisica + </string> + <string name="TooltipFlagTouch"> + Tocca + </string> + <string name="TooltipFlagL$"> + L$ + </string> + <string name="TooltipFlagDropInventory"> + Prendi dall'inventario + </string> + <string name="TooltipFlagPhantom"> + Fantasma + </string> + <string name="TooltipFlagTemporary"> + Temporaneo + </string> + <string name="TooltipFlagRightClickMenu"> + (Clicca con il tasto destro per il menù) + </string> + <string name="TooltipFreeToCopy"> + Copia consentita + </string> + <string name="TooltipForSaleL$"> + In Vendita: [AMOUNT]L$ + </string> + <string name="TooltipForSaleMsg"> + In Vendita: [MESSAGE] + </string> + <string name="TooltipFlagGroupBuild"> + Costruzione solo con gruppo + </string> + <string name="TooltipFlagNoBuild"> + Divieto di Costruire + </string> + <string name="TooltipFlagNoEdit"> + Costruzione solo con gruppo + </string> + <string name="TooltipFlagNotSafe"> + Non Sicuro + </string> + <string name="TooltipFlagNoFly"> + Divieto di Volare + </string> + <string name="TooltipFlagGroupScripts"> + Script solo con gruppo + </string> + <string name="TooltipFlagNoScripts"> + Script vietati + </string> + <string name="TooltipLand"> + Terreno: + </string> + <string name="TooltipMustSingleDrop"> + Solo un singolo oggetto può essere creato qui + </string> + <string name="RetrievingData"> + Recupero dati in corso... + </string> + <string name="ReleaseNotes"> + Note sulla versione + </string> + <string name="LoadingData"> + In caricamento... + </string> + <string name="AvatarNameNobody"> + (nessuno) + </string> + <string name="AvatarNameWaiting"> + (in attesa) + </string> + <string name="AvatarNameHippos"> + (hippos) + </string> + <string name="GroupNameNone"> + (nessuno) + </string> + <string name="AssetErrorNone"> + Nessun errore + </string> + <string name="AssetErrorRequestFailed"> + Richiesta risorsa: fallita + </string> + <string name="AssetErrorNonexistentFile"> + Richiesta risorsa: file non esistente + </string> + <string name="AssetErrorNotInDatabase"> + Richiesta risorsa: risorsa non trovata nel database + </string> + <string name="AssetErrorEOF"> + Fine del file + </string> + <string name="AssetErrorCannotOpenFile"> + Apertura del file non possibile + </string> + <string name="AssetErrorFileNotFound"> + File non trovato + </string> + <string name="AssetErrorTCPTimeout"> + Tempo esaurito per il trasferimento file + </string> + <string name="AssetErrorCircuitGone"> + Circuito perso + </string> + <string name="AssetErrorPriceMismatch"> + Il programma e il server non combaciano nel prezzo + </string> + <string name="AssetErrorUnknownStatus"> + Stato sconosciuto + </string> + <string name="AvatarEditingApparance"> + (In modifica dell'aspetto fisico) + </string> + <string name="AvatarAway"> + Assente + </string> + <string name="AvatarBusy"> + Occupato + </string> + <string name="AvatarMuted"> + Mutato + </string> + <string name="anim_express_afraid"> + Dispiaciuto + </string> + <string name="anim_express_anger"> + Arrabbiato + </string> + <string name="anim_away"> + Assente + </string> + <string name="anim_backflip"> + Salto all'indietro + </string> + <string name="anim_express_laugh"> + Ridere a crepapelle + </string> + <string name="anim_express_toothsmile"> + Gran sorriso + </string> + <string name="anim_blowkiss"> + Lancia un bacio + </string> + <string name="anim_express_bored"> + Noia + </string> + <string name="anim_bow"> + Inchino + </string> + <string name="anim_clap"> + Applauso + </string> + <string name="anim_courtbow"> + Inchino a corte + </string> + <string name="anim_express_cry"> + Pianto + </string> + <string name="anim_dance1"> + Ballo 1 + </string> + <string name="anim_dance2"> + Ballo 2 + </string> + <string name="anim_dance3"> + Ballo 3 + </string> + <string name="anim_dance4"> + Ballo 4 + </string> + <string name="anim_dance5"> + Ballo 5 + </string> + <string name="anim_dance6"> + Ballo 6 + </string> + <string name="anim_dance7"> + Ballo 7 + </string> + <string name="anim_dance8"> + Dance 8 + </string> + <string name="anim_express_disdain"> + Sdegno + </string> + <string name="anim_drink"> + Bere + </string> + <string name="anim_express_embarrased"> + Imbarazzo + </string> + <string name="anim_angry_fingerwag"> + Negare col dito + </string> + <string name="anim_fist_pump"> + Esultare con pugno + </string> + <string name="anim_yoga_float"> + Yoga fluttuante + </string> + <string name="anim_express_frown"> + Acciglio + </string> + <string name="anim_impatient"> + Impazienza + </string> + <string name="anim_jumpforjoy"> + Salto di gioia + </string> + <string name="anim_kissmybutt"> + Baciami il sedere + </string> + <string name="anim_express_kiss"> + Bacio + </string> + <string name="anim_laugh_short"> + Risata + </string> + <string name="anim_musclebeach"> + Muscoli da spiaggia + </string> + <string name="anim_no_unhappy"> + No (Scontento) + </string> + <string name="anim_no_head"> + No + </string> + <string name="anim_nyanya"> + Na-na-na + </string> + <string name="anim_punch_onetwo"> + Uno-due pugno + </string> + <string name="anim_express_open_mouth"> + Bocca aperta + </string> + <string name="anim_peace"> + Pace + </string> + <string name="anim_point_you"> + Indicare altri + </string> + <string name="anim_point_me"> + Indicare te stesso + </string> + <string name="anim_punch_l"> + Pugno a sinistra + </string> + <string name="anim_punch_r"> + Pugno a destra + </string> + <string name="anim_rps_countdown"> + Contare nella morra cinese + </string> + <string name="anim_rps_paper"> + Carta nella morra cinese + </string> + <string name="anim_rps_rock"> + Sasso nella morra cinese + </string> + <string name="anim_rps_scissors"> + Forbici nella morra cinese + </string> + <string name="anim_express_repulsed"> + Repulsione + </string> + <string name="anim_kick_roundhouse_r"> + Calcio con rotazione + </string> + <string name="anim_express_sad"> + Triste + </string> + <string name="anim_salute"> + Saluto + </string> + <string name="anim_shout"> + Urlo + </string> + <string name="anim_express_shrug"> + Spallucce + </string> + <string name="anim_express_smile"> + Sorriso + </string> + <string name="anim_smoke_idle"> + Fumare + </string> + <string name="anim_smoke_inhale"> + Fumare inspirazione + </string> + <string name="anim_smoke_throw_down"> + Fumare mandando giù + </string> + <string name="anim_express_surprise"> + Sorpresa + </string> + <string name="anim_sword_strike_r"> + Colpo di spada + </string> + <string name="anim_angry_tantrum"> + Collera + </string> + <string name="anim_express_tongue_out"> + Linguaccia + </string> + <string name="anim_hello"> + Saluto con mano + </string> + <string name="anim_whisper"> + Sussurro + </string> + <string name="anim_whistle"> + Fischio + </string> + <string name="anim_express_wink"> + Ammicca + </string> + <string name="anim_wink_hollywood"> + Ammicca (Hollywood) + </string> + <string name="anim_express_worry"> + Preoccupato + </string> + <string name="anim_yes_happy"> + Si (Felice) + </string> + <string name="anim_yes_head"> + Si + </string> + <string name="texture_loading"> + Caricando... + </string> + <string name="worldmap_offline"> + Offline + </string> + <string name="whisper"> + sussurra: + </string> + <string name="shout"> + grida: + </string> + <string name="SIM_ACCESS_PG"> + PG + </string> + <string name="SIM_ACCESS_MATURE"> + Mature + </string> + <string name="SIM_ACCESS_ADULT"> + Adult + </string> + <string name="SIM_ACCESS_DOWN"> + Offline + </string> + <string name="SIM_ACCESS_MIN"> + Sconosciuto + </string> + <string name="land_type_unknown"> + (sconosciuto) + </string> + <string name="covenant_never_modified">Ultima modifica: (mai)</string> + <string name="covenant_modified">Ultima modifica: </string> + <string name="all_files"> + Tutti i file + </string> + <string name="sound_files"> + Suoni + </string> + <string name="animation_files"> + Animazioni + </string> + <string name="image_files"> + Immagini + </string> + <string name="save_file_verb"> + Salva + </string> + <string name="load_file_verb"> + Carica + </string> + <string name="targa_image_files"> + Immagini Targa + </string> + <string name="bitmap_image_files"> + Immagini Bitmap + </string> + <string name="avi_movie_file"> + File video AVI + </string> + <string name="xaf_animation_file"> + File animazione XAF + </string> + <string name="xml_file"> + File XML + </string> + <string name="dot_raw_file"> + File RAW + </string> + <string name="compressed_image_files"> + Immagini compresse + </string> + <string name="load_files"> + Carica i file + </string> + <string name="choose_the_directory"> + Scegli la cartella + </string> +</strings> diff --git a/indra/newview/skins/default/xui/it/teleport_strings.xml b/indra/newview/skins/default/xui/it/teleport_strings.xml index 8973ca2fe8a823dbcb30e0f5fa8a823cedadd096..4ef802dc5bf280c8eb5b05f4c39884faf8be279c 100644 --- a/indra/newview/skins/default/xui/it/teleport_strings.xml +++ b/indra/newview/skins/default/xui/it/teleport_strings.xml @@ -1,73 +1,75 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<teleport_messages> - <message_set name="errors"> - <message name="invalid_tport"> - C'è stato un problema nell'elaborare la tua richiesta di teletrasporto. Potresti aver bisogno di ricollegarti prima di poter usare il teletrasporto. Se continui ad avere problemi, controlla per favore le FAQ del Supporto Tecnico a: www.secondlife.com/support - </message> - <message name="invalid_region_handoff"> - C'è stato un problema nell'elaborare il cambio di regione. Potresti aver bisogno di ricollegarti prima di poterlo effetuare. Se continui ad avere problemi, controlla per favore le FAQ del Supporto Tecnico a: www.secondlife.com/support - </message> - <message name="blocked_tport"> - Spiacenti, il teletrasporto è bloccato al momento. Prova di nuovo tra pochi istanti. Se ancora non potrai teletrasportarti, per favore scollegati e ricollegati per risolvere il problema. - </message> - <message name="nolandmark_tport"> - Spiacenti, ma il sistema non riesce a localizzare la destinazione del landmark - </message> - <message name="timeout_tport"> - Spiacenti, il sistema non riesce a completare il teletrasporto. Riprova tra un attimo. - </message> - <message name="noaccess_tport"> - Spiacenti, ma non hai accesso nel luogo di destinazione richiesto. - </message> - <message name="missing_attach_tport"> - Gli oggetti da te indossati non sono ancoa arrivati. Attendi ancora qualche secondo o scollegati e ricollegati prima di provare a teleportarti. - </message> - <message name="too_many_uploads_tport"> - La gestione dati della regione è al momento occupata e la tua richiesta di teletrasporto non può essere soddisfatta entro breve tempo. Per favore prova di nuovo tra qualche minuto o spostati in un'area meno affollata. - </message> - <message name="expired_tport"> - Spiacenti, il sistema non riesce a soddisfare la tua richiesta di teletrasporto entro un tempo ragionevole. Riprova tra qualche minuto. - </message> - <message name="expired_region_handoff"> - Spiacenti, il sistema non riesce a completare il cambio di regione entro un tempo ragionevole. Riprova tra qualche minuto. - </message> - <message name="no_host"> - Impossibile trovare la destinazione del teletrasporto; potrebbe essere temporaneamente non accessibile o non esistere più. Riprovaci tra qualche minuto. - </message> - <message name="no_inventory_host"> - L'inventario è temporaneamente inaccessibile. - </message> - </message_set> - <message_set name="progress"> - <message name="sending_dest"> - In invio verso la destinazione. - </message> - <message name="redirecting"> - In reindirizzamento ad una nuova destinazione. - </message> - <message name="relaying"> - In ritrasmissione alla destinazione. - </message> - <message name="sending_home"> - In invio la richiesta di ubicazione casa. - </message> - <message name="sending_landmark"> - In invio la richiesta della destinazione del landmark. - </message> - <message name="completing"> - Teletrasporto completato - </message> - <message name="resolving"> - Destinazione in elaborazione. - </message> - <message name="contacting"> - Si sta contattando la nuova regione. - </message> - <message name="arriving"> - In arrivo... - </message> - <message name="requesting"> - Teletrasporto in avvio... - </message> - </message_set> -</teleport_messages> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<teleport_messages> + <message_set name="errors"> + <message name="invalid_tport"> + C'è stato un problema nell'elaborare la tua richiesta di teletrasporto. Potresti aver bisogno di ricollegarti prima di poter usare il teletrasporto. Se continui ad avere problemi, controlla per favore le FAQ del Supporto Tecnico a: +www.secondlife.com/support + </message> + <message name="invalid_region_handoff"> + C'è stato un problema nell'elaborare il cambio di regione. Potresti aver bisogno di ricollegarti prima di poterlo effetuare. Se continui ad avere problemi, controlla per favore le FAQ del Supporto Tecnico a: +www.secondlife.com/support + </message> + <message name="blocked_tport"> + Spiacenti, il teletrasporto è bloccato al momento. Prova di nuovo tra pochi istanti. Se ancora non potrai teletrasportarti, per favore scollegati e ricollegati per risolvere il problema. + </message> + <message name="nolandmark_tport"> + Spiacenti, ma il sistema non riesce a localizzare la destinazione del landmark + </message> + <message name="timeout_tport"> + Spiacenti, il sistema non riesce a completare il teletrasporto. Riprova tra un attimo. + </message> + <message name="noaccess_tport"> + Spiacenti, ma non hai accesso nel luogo di destinazione richiesto. + </message> + <message name="missing_attach_tport"> + Gli oggetti da te indossati non sono ancoa arrivati. Attendi ancora qualche secondo o scollegati e ricollegati prima di provare a teleportarti. + </message> + <message name="too_many_uploads_tport"> + La gestione dati della regione è al momento occupata e la tua richiesta di teletrasporto non può essere soddisfatta entro breve tempo. Per favore prova di nuovo tra qualche minuto o spostati in un'area meno affollata. + </message> + <message name="expired_tport"> + Spiacenti, il sistema non riesce a soddisfare la tua richiesta di teletrasporto entro un tempo ragionevole. Riprova tra qualche minuto. + </message> + <message name="expired_region_handoff"> + Spiacenti, il sistema non riesce a completare il cambio di regione entro un tempo ragionevole. Riprova tra qualche minuto. + </message> + <message name="no_host"> + Impossibile trovare la destinazione del teletrasporto; potrebbe essere temporaneamente non accessibile o non esistere più. Riprovaci tra qualche minuto. + </message> + <message name="no_inventory_host"> + L'inventario è temporaneamente inaccessibile. + </message> + </message_set> + <message_set name="progress"> + <message name="sending_dest"> + In invio verso la destinazione. + </message> + <message name="redirecting"> + In reindirizzamento ad una nuova destinazione. + </message> + <message name="relaying"> + In ritrasmissione alla destinazione. + </message> + <message name="sending_home"> + In invio la richiesta di ubicazione casa. + </message> + <message name="sending_landmark"> + In invio la richiesta della destinazione del landmark. + </message> + <message name="completing"> + Teletrasporto completato + </message> + <message name="resolving"> + Destinazione in elaborazione. + </message> + <message name="contacting"> + Si sta contattando la nuova regione. + </message> + <message name="arriving"> + In arrivo... + </message> + <message name="requesting"> + Teletrasporto in avvio... + </message> + </message_set> +</teleport_messages> diff --git a/indra/newview/skins/default/xui/ja/floater_about.xml b/indra/newview/skins/default/xui/ja/floater_about.xml index c8f6b76babf01a40ca30a8f397a811b88772ecc9..ffdbec666d5cf6dddacc6a101fcce82fcfc83e1a 100644 --- a/indra/newview/skins/default/xui/ja/floater_about.xml +++ b/indra/newview/skins/default/xui/ja/floater_about.xml @@ -20,13 +20,14 @@ SSLeay Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) xmlrpc-epi Copyright (C) 2000 Epinions, Inc. zlib Copyright (C) 1995-2002 Jean-loup Gailly and Mark Adler. - + google-perftools Copyright (c) 2005, Google Inc. + ç„¡æ–転写ã€è¤‡è£½ã€è»¢è¼‰ã‚’ç¦ã˜ã¾ã™ã€‚ 詳細ã¯licenses.txtã‚’å‚ç…§ã—ã¦ãã ã•ã„。 Voice chat Audio coding: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C) - å‹é”ã®åŠ©ã‘ãŒã‚れã°ä½•ã¨ã‹ã‚„ã£ã¦ã„ã‘ã‚‹ --リãƒãƒ£ãƒ¼ãƒ‰ãƒ»ã‚¹ã‚¿ãƒ¼ã‚ー + ビジãƒã‚¹ã§æˆåŠŸã™ã‚‹ã«ã¯ã€å‹‡æ°—ã‚’æŒã£ã¦ã€èª°ã‚ˆã‚Šã‚‚å…ˆã«ã€äººã¨é•ã£ãŸã“ã¨ã‚’ã™ã‚‹ã“ã¨ã 。 --Henry Marchant </text_editor> <text name="you_are_at"> [POSITION] 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 8cc28cb01fe6175768ec70f72e5b829b5d867ed3..26c8a462702b229f80b79fb39cdb77d1f4b38388 100644 --- a/indra/newview/skins/default/xui/ja/floater_about_land.xml +++ b/indra/newview/skins/default/xui/ja/floater_about_land.xml @@ -9,6 +9,18 @@ <text length="1" name="Description:" type="string"> 説明: </text> + <text name="LandType"> + 種類: + </text> + <text name="LandTypeText"> + メインランド/ホームステッド + </text> + <text name="ContentRating"> + 区分: + </text> + <text name="ContentRatingText"> + Adult + </text> <text length="1" name="Owner:" type="string"> オーナー: </text> @@ -24,7 +36,7 @@ <button label="è²æ¸¡..." label_selected="è²æ¸¡..." name="Deed..." tool_tip="é¸æŠžã•れãŸã‚°ãƒ«ãƒ¼ãƒ—ã®ã‚ªãƒ•ィサーã§ã‚ã‚‹ã¨ãã®ã¿ã€åœŸåœ°ã‚’è²æ¸¡ã§ãã¾ã™ã€‚"/> <check_box label="オーナーãŒè²æ¸¡ã¨å…±ã«å¯„付" name="check contrib" tool_tip="土地ãŒã‚°ãƒ«ãƒ¼ãƒ—ã«è²æ¸¡ã•れるã¨ãã€å‰ã®æ‰€æœ‰è€…ã¯è²æ¸¡ãŒæˆç«‹ã™ã‚‹ã‚ˆã†ã€å分ãªåœŸåœ°ã‚’寄付ã—ã¾ã™ã€‚"/> <text length="1" name="For Sale:" type="string"> - 売り出ã—ä¸ï¼š + è²©å£²ã®æœ‰ç„¡ï¼š </text> <text length="1" name="Not for sale." type="string"> 販売対象外 @@ -44,7 +56,7 @@ </text> <button label="土地販売ã®å–り消ã—" label_selected="土地販売ã®å–り消ã—" name="Cancel Land Sale"/> <text length="1" name="Claimed:" type="string"> - è¦æ±‚: + å–得日時: </text> <text length="1" name="DateClaimText" type="string"> 2006å¹´8月15æ—¥ç«æ›œæ—¥13:47:25 @@ -61,11 +73,11 @@ <text length="1" name="DwellText" type="string"> 誤 </text> - <button label="土地を購入..." label_selected="土地を購入..." name="Buy Land..." width="125" left="130"/> + <button label="土地を購入..." label_selected="土地を購入..." left="130" name="Buy Land..." width="125"/> <button label="グループ用ã«è³¼å…¥..." label_selected="グループ用ã«è³¼å…¥..." name="Buy For Group..."/> - <button label="å…¥å ´è¨±å¯ã‚’購入..." label_selected="å…¥å ´è¨±å¯ã‚’購入..." name="Buy Pass..." tool_tip="ã“ã®åœŸåœ°ã¸ã®ä¸€æ™‚çš„ãªã‚¢ã‚¯ã‚»ã‚¹ã‚’許å¯ã—ã¾ã™ã€‚" width="125" left="130"/> + <button label="å…¥å ´è¨±å¯ã‚’購入..." label_selected="å…¥å ´è¨±å¯ã‚’購入..." left="130" name="Buy Pass..." tool_tip="ã“ã®åœŸåœ°ã¸ã®ä¸€æ™‚çš„ãªã‚¢ã‚¯ã‚»ã‚¹ã‚’許å¯ã—ã¾ã™ã€‚" width="125"/> <button label="土地を放棄..." label_selected="土地を放棄..." name="Abandon Land..."/> - <button label="土地開拓..." label_selected="土地開拓..." name="Reclaim Land..."/> + <button label="土地ã®è¿”é‚„ã‚’è¦æ±‚..." label_selected="土地ã®è¿”é‚„ã‚’è¦æ±‚..." name="Reclaim Land..."/> <button label="Lindenセール..." label_selected="Lindenセール..." name="Linden Sale..." tool_tip="åœŸåœ°ãŒæ‰€æœ‰ã•れã¦ãŠã‚Šã€ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ãŒè¨å®šã•れã¦ã„ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚オークションã®å¯¾è±¡ã«ãªã£ã¦ã„ãªã„ã“ã¨ã‚‚å¿…è¦æ¡ä»¶ã§ã™ã€‚"/> <string name="new users only"> æ–°è¦ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ã¿ @@ -74,7 +86,7 @@ 誰ã§ã‚‚ </string> <string name="area_text"> - エリア + é¢ç©ï¼š </string> <string name="area_size_text"> [AREA]平方メートル @@ -105,40 +117,65 @@ </string> <string name="no_selection_text"> 区画ãŒé¸å®šã•れã¦ã„ã¾ã›ã‚“。 -[世界]メニュー>[åœŸåœ°æƒ…å ±]ã«é€²ã‚€ã‹ã€åˆ¥ã®åŒºç”»ã‚’é¸æŠžã—ã¦ã€è©³ç´°ã‚’表示ã—ã¾ã™ã€‚ +「世界ã€ãƒ¡ãƒ‹ãƒ¥ãƒ¼ï¼žã€ŒåœŸåœ°æƒ…å ±ã€ã«é€²ã‚€ã‹ã€åˆ¥ã®åŒºç”»ã‚’é¸æŠžã—ã¦ã€è©³ç´°ã‚’表示ã—ã¾ã™ã€‚ </string> </panel> <panel label="約款" name="land_covenant_panel"> + <text font="SansSerifLarge" name="estate_section_lbl"> + ä¸å‹•産: + </text> + <text length="1" name="estate_name_lbl" type="string"> + åå‰ï¼š + </text> + <text length="1" name="estate_name_text" type="string"> + メインランド + </text> + <text length="1" name="estate_owner_lbl" type="string"> + オーナー: + </text> + <text length="1" name="estate_owner_text" type="string"> + (ãªã—) + </text> + <text_editor length="1" name="covenant_editor" type="string"> + ã“ã®ä¸å‹•産ã«ã¯ç´„款ãŒã‚りã¾ã›ã‚“。 + </text_editor> <text length="1" name="covenant_timestamp_text" type="string"> æœ€å¾Œã®æ›´æ–°1969å¹´12月31日水曜日16:00:00 </text> - <text length="1" name="region_name_lbl" type="string"> + <text font="SansSerifLarge" name="region_section_lbl"> 地域: </text> + <text length="1" name="region_name_lbl" type="string"> + åå‰ï¼š + </text> <text length="1" name="region_name_text" type="string"> Leyla </text> - <text length="1" name="estate_name_lbl" type="string"> - ä¸å‹•産: + <text name="region_landtype_lbl"> + 種類: </text> - <text length="1" name="estate_name_text" type="string"> - メインランド + <text name="region_landtype_text"> + メインランド/ホームステッド </text> - <text length="1" name="estate_owner_lbl" type="string"> - ä¸å‹•産オーナー: + <text name="region_maturity_lbl"> + 区分: </text> - <text length="1" name="estate_owner_text" type="string"> - (ãªã—) + <text name="region_maturity_text"> + Adult + </text> + <text name="resellable_lbl"> + å†è²©ï¼š </text> <text length="1" name="resellable_clause" type="string"> - ã“ã®åœ°åŸŸã§è³¼å…¥ã—ãŸåœŸåœ°ã¯ã€å†è²©ã§ããªã„ã“ã¨ãŒã‚りã¾ã™ã€‚ + ã“ã®åœ°åŸŸï¼ˆãƒªãƒ¼ã‚¸ãƒ§ãƒ³ï¼‰ã«ã‚る土地ã¯å†è²©ã§ãã¾ã›ã‚“。 + </text> + <text name="changeable_lbl"> + å†åˆ†å‰²ï¼š </text> <text length="1" name="changeable_clause" type="string"> - ã“ã®åœ°åŸŸã§è³¼å…¥ã—ãŸåœŸåœ°ã¯ã€çµ±åˆï¼å†åˆ†å‰²ã§ããªã„ã“ã¨ãŒã‚りã¾ã™ã€‚ + ã“ã®åœ°åŸŸï¼ˆãƒªãƒ¼ã‚¸ãƒ§ãƒ³ï¼‰ã«ã‚る土地ã¯çµ±åˆã¾ãŸã¯åˆ†å‰²ãŒã§ã +ã¾ã›ã‚“。 </text> - <text_editor length="1" name="covenant_editor" type="string"> - ã“ã®ä¸å‹•産ã«ã¯ç´„款ãŒã‚りã¾ã›ã‚“。 - </text_editor> <string name="can_resell"> ã“ã®åœ°åŸŸã§è³¼å…¥ã—ãŸåœŸåœ°ã¯ã€å†è²©ã§ãã¾ã™ã€‚ </string> @@ -149,7 +186,8 @@ ã“ã®åœ°åŸŸã§è³¼å…¥ã—ãŸåœŸåœ°ã¯ã€çµ±åˆã¾ãŸã¯å†åˆ†å‰²ã§ãã¾ã™ã€‚ </string> <string name="can_not_change"> - ã“ã®åœ°åŸŸã§è³¼å…¥ã—ãŸåœŸåœ°ã¯ã€çµ±åˆï¼å†åˆ†å‰²ã§ããªã„ã“ã¨ãŒã‚りã¾ã™ã€‚ + ã“ã®åœ°åŸŸã§è³¼å…¥ã—ãŸåœŸåœ°ã¯ã€çµ±åˆï¼å†åˆ†å‰²ã§ããªã„ã“ã¨ãŒ +ã‚りã¾ã™ã€‚ </string> </panel> <panel label="オブジェクト" name="land_objects_panel"> @@ -255,10 +293,60 @@ <check_box label="安全(ダメージãªã—)" name="check safe" tool_tip="ãƒã‚§ãƒƒã‚¯ã‚’入れるã¨ã“ã®åœŸåœ°ã§ã®ãƒ€ãƒ¡ãƒ¼ã‚¸ã‚³ãƒ³ãƒãƒƒãƒˆãŒç„¡åйã«ãªã‚Šã€ã€Œå®‰å…¨ã€ã«è¨å®šã•れã¾ã™ã€‚ ãƒã‚§ãƒƒã‚¯ã‚’外ã™ã¨ãƒ€ãƒ¡ãƒ¼ã‚¸ã‚³ãƒ³ãƒãƒƒãƒˆãŒæœ‰åйã«ãªã‚Šã¾ã™ã€‚"/> <check_box label="プッシングを制é™" name="PushRestrictCheck" tool_tip="スクリプトã«ã‚ˆã‚‹ãƒ—ッシングを制é™ã—ã¾ã™ã€‚ ã“ã®ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã‚’é¸æŠžã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šã€ã‚ãªãŸã®åœŸåœ°ã§ã®ç ´å£Šçš„行動を妨ã’ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"/> <check_box label="検索ã«è¡¨ç¤ºï¼žï¼ˆé€±L$30)以下ã®å ´æ‰€" name="ShowDirectoryCheck" tool_tip="æ¤œç´¢çµæžœã§ã“ã®åŒºç”»ã‚’表示ã•ã›ã‚‹"/> + <string name="search_enabled_tooltip"> + ã“ã®åŒºç”»ã‚’æ¤œç´¢çµæžœã«è¡¨ç¤ºã™ã‚‹ + </string> + <string name="search_disabled_small_tooltip"> + 区画é¢ç©ãŒ128平方メートルã‹ãれ以下ã®ãŸã‚ã€ã“ã®ã‚ªãƒ—ションã¯ç„¡åйã§ã™ã€‚ +大ããªåŒºç”»ã®ã¿æ¤œç´¢ã«è¡¨ç¤ºã•ã›ã‚‹ã“ã¨ãŒå¯èƒ½ã§ã™ã€‚ + </string> + <string name="search_disabled_permissions_tooltip"> + ã‚ãªãŸã¯ã“ã®åŒºç”»ã®è¨å®šç·¨é›†ãŒã§ããªã„ãŸã‚ã€ã“ã®ã‚ªãƒ—ションã¯ç„¡åйã§ã™ã€‚ + </string> + <combo_box name="land category with adult"> + <combo_item name="AnyCategory"> + 全カテゴリ + </combo_item> + <combo_item name="LindenLocation"> + Linden所在地 + </combo_item> + <combo_item name="Adult"> + Adult + </combo_item> + <combo_item name="Arts&Culture"> + アートã¨ã‚«ãƒ«ãƒãƒ£ãƒ¼ + </combo_item> + <combo_item name="Business"> + ビジãƒã‚¹ + </combo_item> + <combo_item name="Educational"> + 教育的 + </combo_item> + <combo_item name="Gaming"> + ゲーム+ </combo_item> + <combo_item name="Hangout"> + ãŸã¾ã‚Šå ´ + </combo_item> + <combo_item name="NewcomerFriendly"> + æ–°ä½äººã«å¥½æ„çš„ + </combo_item> + <combo_item name="Parks&Nature"> + 公園ã¨è‡ªç„¶ + </combo_item> + <combo_item name="Residential"> + ä½å®…用 + </combo_item> + <combo_item name="Shopping"> + ショッピング + </combo_item> + <combo_item name="Other"> + ãã®ä»– + </combo_item> + </combo_box> <combo_box name="land category"> <combo_box.item name="AnyCategory" label="全カテゴリー"/> <combo_box.item name="LindenLocation" label="Linden所在地"/> - <combo_box.item name="Arts&Culture" label="アート&カルãƒãƒ£ãƒ¼"/> <combo_box.item name="Business" label="ビジãƒã‚¹"/> <combo_box.item name="Educational" label="教育的"/> @@ -271,18 +359,30 @@ <combo_box.item name="Other" label="ãã®ä»–"/> </combo_box> <button label="?" label_selected="?" name="?"/> - <check_box name="MatureCheck" /> + <check_box label="Matureコンテンツ" name="MatureCheck" tool_tip=""/> + <string name="mature_check_mature"> + Matureコンテンツ + </string> + <string name="mature_check_adult"> + Adultコンテンツ + </string> + <string name="mature_check_mature_tooltip"> + ã‚ãªãŸã®åŒºç”»æƒ…å ±åŠã³ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã¯Matureã¨ã•れã¦ã„ã¾ã™ã€‚ + </string> + <string name="mature_check_adult_tooltip"> + ã‚ãªãŸã®åŒºç”»æƒ…å ±åŠã³ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã¯Adultã¨ã•れã¦ã„ã¾ã™ã€‚ + </string> <text length="1" name="Snapshot:" type="string"> スナップショット: </text> <texture_picker label="" left="116" name="snapshot_ctrl" tool_tip="写真をクリックã—ã¦é¸æŠž"/> <text name="landing_point"> - ç€é™¸åœ°ç‚¹: [LANDING] + ç€åœ°ç‚¹: [LANDING] </text> <string name="landing_point_none"> (ãªã—) </string> - <button label="è¨å®š" label_selected="è¨å®š" name="Set" tool_tip="訪å•者ã®ç€åœ°åœ°ç‚¹ã®è¨å®šã‚’行ã„ã¾ã™ã€‚ã“ã®åŒºç”»å†…ã«ç«‹ã£ã¦è¡Œã£ã¦ãã ã•ã„。"/> + <button label="è¨å®š" label_selected="è¨å®š" name="Set" tool_tip="訪å•者ã®ç€åœ°ç‚¹ã®è¨å®šã‚’行ã„ã¾ã™ã€‚ã“ã®åŒºç”»å†…ã«ç«‹ã£ã¦è¡Œã£ã¦ãã ã•ã„。"/> <button label="クリア" label_selected="クリア" name="Clear" tool_tip="ç€åœ°ç‚¹ã‚’クリアã—ã¦ãã ã•ã„。"/> <text length="1" name="Teleport Routing: " type="string"> テレãƒãƒ¼ãƒˆåˆ¶é™ï¼š @@ -317,9 +417,10 @@ ãƒ£å–æ›¿ï¼š </text> <texture_picker label="" name="media texture" tool_tip="写真をクリックã—ã¦é¸æŠž"/> - <text name="replace_texture_help"> - ï¼»å†ç”Ÿï¼½çŸ¢å°ã‚’クリックã™ã‚‹ã¨ã€ã“ã®ãƒ†ã‚¯ã‚¹ãƒãƒ£ãƒ¼ã‚’使用ã™ã‚‹ã‚ªãƒ–ジェクト㫠-å‹•ç”»ã¾ãŸã¯ã‚¦ã‚§ãƒ–・ページãŒè¡¨ç¤ºã•れã¾ã™ã€‚ + <text name="replace_texture_help" width="290"> + 「å†ç”Ÿã€çŸ¢å°ã‚’クリックã™ã‚‹ã¨ã€ã“ã®ãƒ†ã‚¯ã‚¹ãƒãƒ£ãƒ¼ã‚’ + 使用ã™ã‚‹ã‚ªãƒ–ジェクトã«å‹•ç”»ã¾ãŸã¯ã‚¦ã‚§ãƒ–・ページ + ãŒè¡¨ç¤ºã•れã¾ã™ã€‚ </text> <text name="Options:"> メディア @@ -343,21 +444,14 @@ <text name="Sound:"> サウンド: </text> - <check_box label="ã“ã®åŒºç”»ã ã‘ã«é™å®š" name="check sound local"/> + <check_box label="ジェスãƒãƒ£ãƒ¼ã¨ã‚ªãƒ–ジェクトã®éŸ³ã‚’ã“ã®åŒºç”»ã ã‘ã«é™å®š" name="check sound local"/> + <button label="?" label_selected="?" left="408" name="?"/> <text name="Voice settings:"> ボイス: </text> - <radio_group name="parcel_voice_channel" width="310"> - <radio_item name="Estate"> - ä¸å‹•産(エステート)全体 - </radio_item> - <radio_item name="Private"> - ã“ã®åŒºç”»ã®ã¿ - </radio_item> - <radio_item name="Disabled"> - 使用ä¸å¯ - </radio_item> - </radio_group> + <check_box label="ボイスを有効ã«ã™ã‚‹" name="parcel_enable_voice_channel"/> + <check_box label="ボイスを有効ã«ã™ã‚‹ï¼ˆä¸å‹•産è¨å®šï¼‰" name="parcel_enable_voice_channel_is_estate_disabled"/> + <check_box label="ã“ã®åŒºç”»ã§ã®ãƒœã‚¤ã‚¹ä½¿ç”¨ã‚’制é™ã™ã‚‹" name="parcel_enable_voice_channel_parcel"/> </panel> <panel label="アクセス" name="land_access_panel"> <text length="1" name="Limit access to this parcel to:" type="string"> diff --git a/indra/newview/skins/default/xui/ja/floater_avatar_picker.xml b/indra/newview/skins/default/xui/ja/floater_avatar_picker.xml index a23c6f02ad3c40292419c506933190bb5d70cc19..ea076846529674cd4ec62288c84795bb6b1ca794 100644 --- a/indra/newview/skins/default/xui/ja/floater_avatar_picker.xml +++ b/indra/newview/skins/default/xui/ja/floater_avatar_picker.xml @@ -1,21 +1,40 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="avatarpicker" title="ä½äººã‚’é¸æŠž"> - <text name="Type part of the person's name:"> - ä½äººã®åå‰ã®ä¸€éƒ¨ã‚’入力ã—ã¦ãã ã•ã„。 - </text> - <text name="instruct_search_resident_name"> - ä½äººã®åå‰ã‚’一部入力ã—ã¦ãã ã•ã„: - </text> - <button label="検索" label_selected="検索" name="Find" /> - <text name="Or select a calling card:"> - ã¾ãŸã¯ã‚³ãƒ¼ãƒªãƒ³ã‚°ãƒ»ã‚«ãƒ¼ãƒ‰ã‚’é¸æŠžï¼š - </text> - <text name="Or select their calling card:"> - ã¾ãŸã¯ã€ã‚³ãƒ¼ãƒªãƒ³ã‚°ã‚«ãƒ¼ãƒ‰ã‚’é¸æŠžï¼š - </text> - <button label="é¸æŠž" label_selected="é¸æŠž" name="Select" /> - <button label="é–‰ã˜ã‚‹" label_selected="é–‰ã˜ã‚‹" name="Close" /> - <text name="NotFound"> - '[TEXT]'ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。 - </text> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="avatarpicker" title="ä½äººã‚’é¸æŠž" min_width="275" width="275"> + <tab_container name="ResidentChooserTabs" width="265"> + <panel label="検索" name="SearchPanel" width="145"> + <text name="InstructSearchResidentName"> + ä½äººã®åå‰ã®ä¸€éƒ¨ã‚’入力: + </text> + <button label="検索" label_selected="検索" name="Find"/> + </panel> + <panel label="コーリングカード" name="CallingCardsPanel" width="145"> + <text name="InstructSelectCallingCard"> + ã‚³ãƒ¼ãƒªãƒ³ã‚°ã‚«ãƒ¼ãƒ‰ã‚’é¸æŠžï¼š + </text> + </panel> + <panel label="自分ã®è¿‘ã" name="NearMePanel" width="145"> + <text name="InstructSelectResident"> + è¿‘ãã®ä½äººã‚’é¸æŠžï¼š + </text> + <button label="リスト更新" label_selected="リスト更新" name="Refresh"/> + <slider label="範囲" name="near_me_range"/> + <text name="meters" width="50"> + メートル + </text> + </panel> + </tab_container> + <button label="é¸æŠž" label_selected="é¸æŠž" name="Select"/> + <button label="å–り消ã—" label_selected="å–り消ã—" name="Cancel"/> + <string name="not_found"> + 「[TEXT]ã€ã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—㟠+ </string> + <string name="no_one_near"> + è¿‘ãã«èª°ã‚‚ã„ã¾ã›ã‚“ + </string> + <string name="no_results"> + æ¤œç´¢çµæžœï¼šã‚¼ãƒ + </string> + <string name="searching"> + 検索ä¸... + </string> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_avatar_textures.xml b/indra/newview/skins/default/xui/ja/floater_avatar_textures.xml index fb0659f69422b60507686c8d005c442487429b1e..95940dba969f0ef5c0a031d86ef125f835d55c9d 100644 --- a/indra/newview/skins/default/xui/ja/floater_avatar_textures.xml +++ b/indra/newview/skins/default/xui/ja/floater_avatar_textures.xml @@ -1,30 +1,31 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="avatar_texture_debug" title="ã‚¢ãƒã‚¿ãƒ¼ãƒ»ãƒ†ã‚¯ã‚¹ãƒãƒ£ãƒ¼"> - <text name="baked_label" width="128"> - 構築ã•れãŸï¾ƒï½¸ï½½ï¾ï½¬ï½° + <text name="label"> + ベークドテクスãƒãƒ£ </text> <text name="composite_label" width="128"> åˆæˆãƒ†ã‚¯ã‚¹ãƒãƒ£ãƒ¼ </text> - <texture_picker label="é " name="baked_head" /> - <texture_picker label="メイクアップ" name="head_bodypaint" /> - <texture_picker label="髪" name="hair" /> - <button label="æ¨ã¦ã‚‹" label_selected="æ¨ã¦ã‚‹" name="Dump" /> - <texture_picker label="眼" name="baked_eyes" /> - <texture_picker label="眼" name="eye_texture" /> - <texture_picker label="上åŠèº«" name="baked_upper_body" /> - <texture_picker label="上åŠèº«ã®ã‚¿ãƒˆã‚¥ãƒ¼" name="upper_bodypaint" /> - <texture_picker label="(下ç€ã®ï¼‰ã‚·ãƒ£ãƒ„" name="undershirt" /> - <texture_picker label="手袋" name="gloves" /> - <texture_picker label="シャツ" name="shirt" /> - <texture_picker label="上åŠèº«ã®ã‚¸ãƒ£ã‚±ãƒƒãƒˆ" name="upper_jacket" /> - <texture_picker label="下åŠèº«" name="baked_lower_body" /> - <texture_picker label="下åŠèº«ã®ã‚¿ãƒˆã‚¥ãƒ¼" name="lower_bodypaint" /> - <texture_picker label="(下ç€ã®ï¼‰ãƒ‘ンツ" name="underpants" /> - <texture_picker label="é´ä¸‹" name="socks" /> - <texture_picker label="é´" name="shoes" /> - <texture_picker label="ズボン" name="pants" /> - <texture_picker label="ジャケット" name="jacket" /> - <texture_picker label="スカート" name="baked_skirt" /> - <texture_picker label="スカート" name="skirt_texture" /> + <button label="テクスãƒãƒ£IDä¸€è¦§ã‚’ã‚³ãƒ³ã‚½ãƒ¼ãƒ«ã«æ›¸ã込む" label_selected="æ¨ã¦ã‚‹" name="Dump"/> + <texture_picker label="髪型" name="hair-baked"/> + <texture_picker label="髪" name="hair"/> + <texture_picker label="é " name="head-baked"/> + <texture_picker label="メイクアップ" name="head bodypaint"/> + <texture_picker label="ç›®" name="eyes-baked"/> + <texture_picker label="ç›®" name="iris"/> + <texture_picker label="上åŠèº«" name="upper-baked"/> + <texture_picker label="上åŠèº«ã®ã‚¿ãƒˆã‚¥ãƒ¼" name="upper bodypaint"/> + <texture_picker label="(下ç€ã®ï¼‰ã‚·ãƒ£ãƒ„" name="undershirt"/> + <texture_picker label="手袋" name="gloves"/> + <texture_picker label="シャツ" name="shirt"/> + <texture_picker label="上ç€" name="upper jacket"/> + <texture_picker label="下åŠèº«" name="lower-baked"/> + <texture_picker label="下åŠèº«ã®ã‚¿ãƒˆã‚¥ãƒ¼" name="lower bodypaint"/> + <texture_picker label="(下ç€ã®ï¼‰ãƒ‘ンツ" name="underpants"/> + <texture_picker label="é´ä¸‹" name="socks"/> + <texture_picker label="é´" name="shoes"/> + <texture_picker label="ズボン" name="pants"/> + <texture_picker label="上ç€" name="lower jacket"/> + <texture_picker label="スカート" name="skirt-baked"/> + <texture_picker label="スカート" name="skirt"/> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_bulk_perms.xml b/indra/newview/skins/default/xui/ja/floater_bulk_perms.xml index 1f5c713cdbe458ba56000b2d873ac5e871082a00..6ee90038fb7aa624e90ea7f10ad00a3a4b450b5c 100644 --- a/indra/newview/skins/default/xui/ja/floater_bulk_perms.xml +++ b/indra/newview/skins/default/xui/ja/floater_bulk_perms.xml @@ -1,43 +1,44 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floaterbulkperms" title="コンテンツ権é™ã®ä¸€æ‹¬å¤‰æ›´"> - <text name="applyto"> - コンテンツã®ç¨®é¡ž - </text> - <check_box label="アニメーション" name="check_animation"/> - <check_box label="身体部ä½" name="check_bodypart"/> - <check_box label="æœ" name="check_clothing"/> - <check_box label="ジェスãƒãƒ£ãƒ¼" name="check_gesture"/> - <check_box label="ランドマーク" name="check_landmark"/> - <check_box label="ノートカード" name="check_notecard"/> - <check_box label="オブジェクト" name="check_object"/> - <check_box label="スクリプト" name="check_script"/> - <check_box label="サウンド" name="check_sound"/> - <check_box label="テクスãƒãƒ£ãƒ¼" name="check_texture"/> - <button label="å…¨ã¦é¸æŠž" label_selected="å…¨ã¦" name="check_all"/> - <button label="å…¨ã¦è§£é™¤" label_selected="ãªã—" name="check_none"/> - <text name="newperms"> - æ–°ã—ã„æ¨©é™ - </text> - <check_box label="グループã§å…±åŒç®¡ç†" name="share_with_group"/> - <check_box label="誰ã«å¯¾ã—ã¦ã‚‚コピーを許å¯" name="everyone_copy"/> - <text name="NextOwnerLabel"> - 次ã®ã‚ªãƒ¼ãƒŠãƒ¼ãŒã§ãã‚‹æ“作: - </text> - <check_box label="ä¿®æ£" name="next_owner_modify"/> - <check_box label="コピー" name="next_owner_copy"/> - <check_box label="å†è²©/プレゼント" name="next_owner_transfer"/> - <button label="é©ç”¨" name="apply"/> - <button label="é–‰ã˜ã‚‹" name="close"/> - <string name="nothing_to_modify_text"> - é¸æŠžã—ãŸä¸ã«ç·¨é›†ã§ããªã„コンテンツãŒå«ã¾ã‚Œã¦ã„ã¾ã™ - </string> - <string name="status_text"> - [NAME]ã«æ¨©é™ã‚’è¨å®šä¸ã§ã™ã€‚ - </string> - <string name="start_text"> - 権é™å¤‰æ›´ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’ã—ã¦ã„ã¾ã™ - </string> - <string name="done_text"> - 権é™å¤‰æ›´ãƒªã‚¯ã‚¨ã‚¹ãƒˆãŒå®Œäº†ã—ã¾ã—㟠- </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floaterbulkperms" title="コンテンツ権é™ã®ä¸€æ‹¬å¤‰æ›´"> + <text name="applyto"> + コンテンツã®ç¨®é¡ž + </text> + <check_box label="アニメーション" name="check_animation"/> + <check_box label="身体部ä½" name="check_bodypart"/> + <check_box label="æœ" name="check_clothing"/> + <check_box label="ジェスãƒãƒ£ãƒ¼" name="check_gesture"/> + <check_box label="ランドマーク" name="check_landmark"/> + <check_box label="ノートカード" name="check_notecard"/> + <check_box label="オブジェクト" name="check_object"/> + <check_box label="スクリプト" name="check_script"/> + <check_box label="サウンド" name="check_sound"/> + <check_box label="テクスãƒãƒ£ãƒ¼" name="check_texture"/> + <button label="å…¨ã¦é¸æŠž" label_selected="å…¨ã¦" name="check_all"/> + <button label="å…¨ã¦è§£é™¤" label_selected="ãªã—" name="check_none"/> + <text name="newperms"> + æ–°ã—ã„æ¨©é™ + </text> + <check_box label="グループã§å…±åŒç®¡ç†" name="share_with_group"/> + <check_box label="誰ã«å¯¾ã—ã¦ã‚‚コピーを許å¯" name="everyone_copy"/> + <text name="NextOwnerLabel"> + 次ã®ã‚ªãƒ¼ãƒŠãƒ¼ãŒã§ãã‚‹æ“作: + </text> + <check_box label="ä¿®æ£" name="next_owner_modify"/> + <check_box label="コピー" name="next_owner_copy"/> + <check_box label="å†è²©/プレゼント" name="next_owner_transfer"/> + <button label="ヘルプ" name="help"/> + <button label="é©ç”¨" name="apply"/> + <button label="é–‰ã˜ã‚‹" name="close"/> + <string name="nothing_to_modify_text"> + é¸æŠžã—ãŸä¸ã«ç·¨é›†ã§ããªã„コンテンツãŒå«ã¾ã‚Œã¦ã„ã¾ã™ + </string> + <string name="status_text"> + [NAME]ã«æ¨©é™ã‚’è¨å®šä¸ã§ã™ã€‚ + </string> + <string name="start_text"> + 権é™å¤‰æ›´ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’ã—ã¦ã„ã¾ã™ + </string> + <string name="done_text"> + 権é™å¤‰æ›´ãƒªã‚¯ã‚¨ã‚¹ãƒˆãŒå®Œäº†ã—ã¾ã—㟠+ </string> +</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_buy_currency.xml b/indra/newview/skins/default/xui/ja/floater_buy_currency.xml index a532640d91d3c3ed718524df594a8e70063b4c24..9d5aea612b409bc2c340fc5c440ab58a663f5bc8 100644 --- a/indra/newview/skins/default/xui/ja/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/ja/floater_buy_currency.xml @@ -12,7 +12,7 @@ <text name="error_message"> 何ã‹å¤‰ã§ã™ã€‚ </text> - <button label="ウェブ・サイトã«ç§»å‹•" name="error_web" /> + <button label="ウェブ・サイトã«ç§»å‹•" name="error_web" width="140"/> <text name="contacting"> LindeXã¨ã‚³ãƒ³ã‚¿ã‚¯ãƒˆä¸â€¦ </text> @@ -31,7 +31,7 @@ <text name="currency_est"> ç´„US$ [USD] </text> - <text name="getting_data"> + <text name="getting_data" left_delta="3"> データをå–å¾—ã—ã¦ã„ã¾ã™... </text> <text name="balance_label"> diff --git a/indra/newview/skins/default/xui/ja/floater_buy_land.xml b/indra/newview/skins/default/xui/ja/floater_buy_land.xml index b046b48caa106d8c558c744071b6f3f8bcaddb66..1ccd1f53a4ca28ddfd927c04d2fc39fc951e577d 100644 --- a/indra/newview/skins/default/xui/ja/floater_buy_land.xml +++ b/indra/newview/skins/default/xui/ja/floater_buy_land.xml @@ -6,6 +6,12 @@ <text name="region_name_text"> ï¼ˆä¸æ˜Žï¼‰ </text> + <text name="region_type_label"> + 種類: + </text> + <text name="region_type_text"> + ï¼ˆä¸æ˜Žï¼‰ + </text> <text name="estate_name_label"> ä¸å‹•産: </text> @@ -22,14 +28,15 @@ ã“ã®åœ°åŸŸã§è³¼å…¥ã—ãŸåœŸåœ°ï¼š </text> <text name="resellable_clause"> - ã“ã®åœ°åŸŸã§è³¼å…¥ã—ãŸåœŸåœ°ã¯ã€å†è²©ãŒå¯èƒ½ãªå ´åˆã¨ãã†ã§ãªã„å ´åˆãŒã‚りã¾ã™ + å†è²©ã§ãã‚‹å ´åˆã¨ã§ããªã„å ´åˆãŒã‚りã¾ã™ã€‚ </text> <text name="changeable_clause"> - çµ±åˆã¾ãŸã¯å†åˆ†å‰²ã•れるå¯èƒ½æ€§ã‚‚ã€ã•れãªã„å¯èƒ½æ€§ã‚‚ã‚りã¾ã™ + çµ±åˆã¾ãŸã¯å†åˆ†å‰²ã§ãã‚‹å ´åˆã¨ã§ããªã„å ´åˆãŒã‚りã¾ã™ã€‚ </text> <text name="covenant_text"> ä¸å‹•産約款ã«åŒæ„ã—ã¦ãã ã•ã„: </text> + <text left="470" name="covenant_timestamp_text"/> <text_editor name="covenant_editor"> ãƒãƒ¼ãƒ‰ä¸ï¼Žï¼Žï¼Ž </text_editor> @@ -156,7 +163,7 @@ ã“ã®åœŸåœ°ã‚’è²·ã†ã¨ï¼š </string> <string name="buying_for_group"> - グループ用ã«åœŸåœ°ã‚’購入: + グループ用ã®åœŸåœ°ã‚’購入ã™ã‚‹ã¨ï¼š </string> <string name="cannot_buy_now"> ç¾åœ¨è³¼å…¥ä¸å¯ï¼š @@ -186,10 +193,10 @@ ã“ã®åŒºç”»ã¯ [AMOUNT] 平方メートルã‚りã¾ã™ </string> <string name="premium_land"> - ã“ã®åœŸåœ°ã¯ãƒ—レミアムãªã®ã§ã€ [AMOUNT] 平方メートル ã¨ã—ã¦è«‹æ±‚ã•れã¾ã™ + ã“ã®åœŸåœ°ã¯å‰²ã‚Šå¢—ã—付ã§ã™ã€‚ [AMOUNT] å¹³æ–¹ãƒ¡ãƒ¼ãƒˆãƒ«ã®æ–™é‡‘ãŒã‹ã‹ã‚Šã¾ã™ã€‚ </string> <string name="discounted_land"> - ã“ã®åœŸåœ°ã¯å€¤ä¸‹ã’ã•れã€[AMOUNT]平方メートルã¨ã—ã¦è«‹æ±‚ã•れã¾ã™ + ã“ã®åœŸåœ°ã¯ãƒ‡ã‚£ã‚¹ã‚«ã‚¦ãƒ³ãƒˆã•れã¦ã„ã¾ã™ã€‚ [AMOUNT] å¹³æ–¹ãƒ¡ãƒ¼ãƒˆãƒ«ã®æ–™é‡‘ãŒã‹ã‹ã‚Šã¾ã™ã€‚ </string> <string name="meters_supports_object"> [AMOUNT]平方メートルã§ã‚れã°ã€ @@ -204,13 +211,11 @@ </string> <string name="info_price_string"> L$ [PRICE] -L$[PRICE] (L$[PRICE_PER_SQM]/平方メートル) +(L$ [PRICE_PER_SQM]/平方メートル) [SOLD_WITH_OBJECTS] </string> <string name="insufficient_land_credits"> - ã“ã® [GROUP] ãŒåŒºç”»ã®è³¼å…¥æ‰‹ç¶šãを完了ã™ã‚‹ã«ã¯ã€ -ä¾¡æ ¼ã«è¦‹åˆã†ã ã‘ã®å¯„付ã•れãŸåœŸåœ°ã®åˆ©ç”¨å®Ÿç¸¾ãŒ -å¿…è¦ã§ã™ + ã“ã® [GROUP] ãŒåŒºç”»ã®è³¼å…¥æ‰‹ç¶šãを完了ã™ã‚‹ã«ã¯ã€ ä¾¡æ ¼ã«è¦‹åˆã†ã ã‘ã®å¯„付ã•れãŸåœŸåœ°ã®åˆ©ç”¨å®Ÿç¸¾ãŒå¿…è¦ã§ã™ </string> <string name="have_enough_lindens"> ã‚ãªãŸã®æ‰€æŒã™ã‚‹ L$ [AMOUNT]ã§ã€ã“ã®åœŸåœ°ã‚’購入ã§ãã¾ã™ diff --git a/indra/newview/skins/default/xui/ja/floater_customize.xml b/indra/newview/skins/default/xui/ja/floater_customize.xml index 4b420dbc2e7c5aa7f4357734c09de014e099bb4d..27fa434963b6d5fe0129bee3b60f467fc7591167 100644 --- a/indra/newview/skins/default/xui/ja/floater_customize.xml +++ b/indra/newview/skins/default/xui/ja/floater_customize.xml @@ -1,469 +1,471 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater customize" title="容姿"> <tab_container name="customize tab container"> - <panel label="身体部ä½" /> - <panel label="身体部ä½" name="body_parts_placeholder" /> + <panel label="身体部ä½" name="body_parts_placeholder"/> <panel label="シェイプ" name="Shape"> - <button label="戻ã™" label_selected="戻ã™" name="Revert" /> - <button label="身体" label_selected="身体" name="Body" /> - <button label="é " label_selected="é " name="Head" /> - <button label="眼" label_selected="眼" name="Eyes" /> - <button label="耳" label_selected="耳" name="Ears" /> - <button label="é¼»" label_selected="é¼»" name="Nose" /> - <button label="å£" label_selected="å£" name="Mouth" /> - <button label="ã‚ã”" label_selected="ã‚ã”" name="Chin" /> - <button label="胴体" label_selected="胴体" name="Torso" /> - <button label="両脚" label_selected="両脚" name="Legs" /> + <button label="戻ã™" label_selected="戻ã™" name="Revert"/> + <button label="身体" label_selected="身体" name="Body"/> + <button label="é " label_selected="é " name="Head"/> + <button label="眼" label_selected="眼" name="Eyes"/> + <button label="耳" label_selected="耳" name="Ears"/> + <button label="é¼»" label_selected="é¼»" name="Nose"/> + <button label="å£" label_selected="å£" name="Mouth"/> + <button label="ã‚ã”" label_selected="ã‚ã”" name="Chin"/> + <button label="胴体" label_selected="胴体" name="Torso"/> + <button label="両脚" label_selected="両脚" name="Legs"/> <radio_group name="sex radio"> - <radio_item type="string" length="1" name="radio"> + <radio_item length="1" name="radio" type="string"> 女性 </radio_item> - <radio_item type="string" length="1" name="radio2"> + <radio_item length="1" name="radio2" type="string"> 男性 </radio_item> </radio_group> - <button label="ランダム化" label_selected="ランダム化" name="Randomize" /> - <text type="string" length="1" name="title"> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: ä¿®æ£ã§ãã¾ã›ã‚“。 </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: ãƒãƒ¼ãƒ‰ä¸ï¼Žï¼Žï¼Ž </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: 未装ç€ã€‚ </text> - <text type="string" length="1" name="path"> - [PATH]ã«æ‰€åœ¨ + <text length="1" name="path" type="string"> + [PATH] ã«æ‰€åœ¨ </text> - <text type="string" length="1" name="not worn instructions"> - æ–°ã—ã„シェイプ(体型)ã‚’æŒã¡ç‰©ã‹ã‚‰ã‚¢ãƒã‚¿ãƒ¼ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦è£…ç€ã—ã¾ã—ょã†ã€‚å®Œå…¨ã«æ–°è¦ã®çŠ¶æ…‹ã‹ã‚‰ä½œæˆã—ã¦è£…ç€ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ + <text length="1" name="not worn instructions" type="string"> + æ–°ã—ã„シェイプ(体型)ã‚’æŒã¡ç‰©ã‹ã‚‰ã‚¢ãƒã‚¿ãƒ¼ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦è£…ç€ã—ã¾ +ã—ょã†ã€‚å®Œå…¨ã«æ–°è¦ã®çŠ¶æ…‹ã‹ã‚‰ä½œæˆã—ã¦è£…ç€ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> ã‚ãªãŸã¯ã“ã®æœã®ä¿®æ£ã‚’許ã•れã¦ã„ã¾ã›ã‚“。 </text> - <button label="æ–°ã—ã„シェイプ(体型)を作æˆ" label_selected="æ–°ã—ã„シェイプ(体型)を作æˆ" - name="Create New" /> - <button label="å–り外ã™" label_selected="å–り外ã™" name="Take Off" /> - <button label="ä¿å˜" label_selected="ä¿å˜" name="Save" /> - <button label="別åã§ä¿å˜" label_selected="別åã§ä¿å˜" name="Save As" /> + <text name="Item Action Label"> + シェイプ: + </text> + <button label="æ–°ã—ã„シェイプ(体型)を作æˆ" label_selected="æ–°ã—ã„シェイプ(体型)を作æˆ" name="Create New"/> + <button label="ä¿å˜" label_selected="ä¿å˜" name="Save"/> + <button label="別åã§ä¿å˜..." label_selected="別åã§ä¿å˜..." name="Save As"/> </panel> <panel label="スã‚ン" name="Skin"> - <button label="スã‚ンã®è‰²" label_selected="スã‚ンã®è‰²" name="Skin Color" /> - <button label="é¡”ã®ç´°éƒ¨" label_selected="é¡”ã®ç´°éƒ¨" name="Face Detail" /> - <button label="メイクアップ" label_selected="メイクアップ" name="Makeup" /> - <button label="身体細部" label_selected="身体細部" name="Body Detail" /> - <text type="string" length="1" name="title"> + <button label="スã‚ンã®è‰²" label_selected="スã‚ンã®è‰²" name="Skin Color"/> + <button label="é¡”ã®ç´°éƒ¨" label_selected="é¡”ã®ç´°éƒ¨" name="Face Detail"/> + <button label="メイクアップ" label_selected="メイクアップ" name="Makeup"/> + <button label="身体細部" label_selected="身体細部" name="Body Detail"/> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: ä¿®æ£ã§ãã¾ã›ã‚“。 </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: ãƒãƒ¼ãƒ‰ä¸ï¼Žï¼Žï¼Ž </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: 未装ç€ã€‚ </text> - <text type="string" length="1" name="path"> - [PATH]ã«æ‰€åœ¨ + <text length="1" name="path" type="string"> + [PATH] ã«æ‰€åœ¨ </text> - <text type="string" length="1" name="not worn instructions"> + <text length="1" name="not worn instructions" type="string"> æ–°ã—ã„スã‚ンをæŒã¡ç‰©ã‹ã‚‰ã‚¢ãƒã‚¿ãƒ¼ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦è£…ç€ã—ã¾ã—ょã†ã€‚ å®Œå…¨ã«æ–°è¦ã®çŠ¶æ…‹ã‹ã‚‰ä½œæˆã—ã¦è£…ç€ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> ã‚ãªãŸã¯ã“ã®æœã®ä¿®æ£ã‚’許ã•れã¦ã„ã¾ã›ã‚“。 </text> - <texture_picker label="é éƒ¨ã®ã‚¿ãƒˆã‚¥ãƒ¼" name="Head Tattoos" - tool_tip="写真をクリックã—ã¦é¸æŠž" /> - <texture_picker label="上åŠèº«ã®ã‚¿ãƒˆã‚¥ãƒ¼" name="Upper Tattoos" - tool_tip="写真をクリックã—ã¦é¸æŠž" /> - <texture_picker label="下部ã®ã‚¿ãƒˆã‚¥ãƒ¼" name="Lower Tattoos" - tool_tip="写真をクリックã—ã¦é¸æŠž" /> - <button label="ランダム化" label_selected="ランダム化" name="Randomize" /> - <button label="æ–°ã—ã„スã‚ンを作æˆ" - label_selected="æ–°ã—ã„スã‚ンを作æˆ" name="Create New" /> - <button label="å–り外ã™" label_selected="å–り外ã™" name="Take Off" /> - <button label="ä¿å˜" label_selected="ä¿å˜" name="Save" /> - <button label="別åã§ä¿å˜" label_selected="別åã§ä¿å˜" name="Save As" /> - <button label="戻ã™" label_selected="戻ã™" name="Revert" /> + <text name="Item Action Label"> + スã‚ン: + </text> + <texture_picker label="é 部ã®ã‚¿ãƒˆã‚¥ãƒ¼" name="Head Tattoos" tool_tip="写真をクリックã—ã¦é¸æŠž"/> + <texture_picker label="上åŠèº«ã®ã‚¿ãƒˆã‚¥ãƒ¼" name="Upper Tattoos" tool_tip="写真をクリックã—ã¦é¸æŠž"/> + <texture_picker label="下部ã®ã‚¿ãƒˆã‚¥ãƒ¼" name="Lower Tattoos" tool_tip="写真をクリックã—ã¦é¸æŠž"/> + <button label="æ–°ã—ã„スã‚ンを作æˆ" label_selected="æ–°ã—ã„スã‚ンを作æˆ" name="Create New"/> + <button label="ä¿å˜" label_selected="ä¿å˜" name="Save"/> + <button label="別åã§ä¿å˜..." label_selected="別åã§ä¿å˜..." name="Save As"/> + <button label="戻ã™" label_selected="戻ã™" name="Revert"/> </panel> <panel label="髪" name="Hair"> - <button label="色" label_selected="色" name="Color" /> - <button label="スタイル" label_selected="スタイル" name="Style" /> - <button label="眉毛" label_selected="眉毛" name="Eyebrows" /> - <button label="é¡”" label_selected="é¡”" name="Facial" /> - <text type="string" length="1" name="title"> + <button label="色" label_selected="色" name="Color"/> + <button label="スタイル" label_selected="スタイル" name="Style"/> + <button label="眉毛" label_selected="眉毛" name="Eyebrows"/> + <button label="é¡”" label_selected="é¡”" name="Facial"/> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: ä¿®æ£ã§ãã¾ã›ã‚“。 </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: ãƒãƒ¼ãƒ‰ä¸ï¼Žï¼Žï¼Ž </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: 未装ç€ã€‚ </text> - <text type="string" length="1" name="path"> - [PATH]ã«æ‰€åœ¨ + <text length="1" name="path" type="string"> + [PATH] ã«æ‰€åœ¨ </text> - <text type="string" length="1" name="not worn instructions"> + <text length="1" name="not worn instructions" type="string"> æ–°ã—ã„髪型をæŒã¡ç‰©ã‹ã‚‰ã‚¢ãƒã‚¿ãƒ¼ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦è£…ç€ã—ã¾ã—ょã†ã€‚ å®Œå…¨ã«æ–°è¦ã®çŠ¶æ…‹ã‹ã‚‰ä½œæˆã—ã¦è£…ç€ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> ã‚ãªãŸã¯ã“ã®æœã®ä¿®æ£ã‚’許ã•れã¦ã„ã¾ã›ã‚“。 </text> - <texture_picker label="テクスãƒãƒ£ãƒ¼" name="Texture" - tool_tip="写真をクリックã—ã¦é¸æŠž" /> - <button label="ランダム化" label_selected="ランダム化" name="Randomize" /> - <button label="æ–°ã—ã„髪を作æˆ" label_selected="æ–°ã—ã„髪を作æˆ" - name="Create New" /> - <button label="å–り外ã™" label_selected="å–り外ã™" name="Take Off" /> - <button label="ä¿å˜" label_selected="ä¿å˜" name="Save" /> - <button label="別åã§ä¿å˜" label_selected="別åã§ä¿å˜" name="Save As" /> - <button label="戻ã™" label_selected="戻ã™" name="Revert" /> + <text name="Item Action Label"> + 髪型: + </text> + <texture_picker label="テクスãƒãƒ£ãƒ¼" name="Texture" tool_tip="写真をクリックã—ã¦é¸æŠž"/> + <button label="æ–°ã—ã„髪を作æˆ" label_selected="æ–°ã—ã„髪を作æˆ" name="Create New"/> + <button label="ä¿å˜" label_selected="ä¿å˜" name="Save"/> + <button label="別åã§ä¿å˜..." label_selected="別åã§ä¿å˜..." name="Save As"/> + <button label="戻ã™" label_selected="戻ã™" name="Revert"/> </panel> <panel label="眼" name="Eyes"> - <text type="string" length="1" name="title"> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: ä¿®æ£ã§ãã¾ã›ã‚“。 </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: ãƒãƒ¼ãƒ‰ä¸ï¼Žï¼Žï¼Ž </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: 未装ç€ã€‚ </text> - <text type="string" length="1" name="path"> - [PATH]ã«æ‰€åœ¨ + <text length="1" name="path" type="string"> + [PATH] ã«æ‰€åœ¨ </text> - <text type="string" length="1" name="not worn instructions"> + <text length="1" name="not worn instructions" type="string"> æ–°ã—ã„眼をæŒã¡ç‰©ã‹ã‚‰ã‚¢ãƒã‚¿ãƒ¼ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦è£…ç€ã—ã¾ã—ょã†ã€‚ å®Œå…¨ã«æ–°è¦ã®çŠ¶æ…‹ã‹ã‚‰ä½œæˆã—ã¦è£…ç€ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> ã‚ãªãŸã¯ã“ã®æœã®ä¿®æ£ã‚’許ã•れã¦ã„ã¾ã›ã‚“。 </text> - <texture_picker label="虹彩" name="Iris" tool_tip="写真をクリックã—ã¦é¸æŠž" /> - <button label="ランダム化" label_selected="ランダム化" name="Randomize" /> - <button label="æ–°ã—ã„眼を作æˆ" label_selected="æ–°ã—ã„眼を作æˆ" - name="Create New" /> - <button label="å–り外ã™" label_selected="å–り外ã™" name="Take Off" /> - <button label="ä¿å˜" label_selected="ä¿å˜" name="Save" /> - <button label="別åã§ä¿å˜" label_selected="別åã§ä¿å˜" name="Save As" /> - <button label="戻ã™" label_selected="戻ã™" name="Revert" /> + <text name="Item Action Label"> + 目: + </text> + <texture_picker label="虹彩" name="Iris" tool_tip="写真をクリックã—ã¦é¸æŠž"/> + <button label="æ–°ã—ã„眼を作æˆ" label_selected="æ–°ã—ã„眼を作æˆ" name="Create New"/> + <button label="ä¿å˜" label_selected="ä¿å˜" name="Save"/> + <button label="別åã§ä¿å˜..." label_selected="別åã§ä¿å˜..." name="Save As"/> + <button label="戻ã™" label_selected="戻ã™" name="Revert"/> </panel> - <panel label="æœ" /> - <panel label="æœ" name="clothes_placeholder" /> + <panel label="æœ" name="clothes_placeholder"/> <panel label="シャツ" name="Shirt"> - <texture_picker label="生地" name="Fabric" tool_tip="写真をクリックã—ã¦é¸æŠž" /> - <color_swatch label="è‰²ï¼æ˜Žæš—" name="Color/Tint" - tool_tip="カラー・ピッカーをクリックã—ã¦é–‹ã" /> - <button label="æ–°ã—ã„シャツを作æˆ" - label_selected="æ–°ã—ã„シャツを作æˆ" name="Create New" /> - <button label="å–り外ã™" label_selected="å–り外ã™" name="Take Off" /> - <button label="ä¿å˜" label_selected="ä¿å˜" name="Save" /> - <button label="別åã§ä¿å˜" label_selected="別åã§ä¿å˜" name="Save As" /> - <button label="戻ã™" label_selected="戻ã™" name="Revert" /> - <text type="string" length="1" name="title"> + <texture_picker label="生地" name="Fabric" tool_tip="写真をクリックã—ã¦é¸æŠž"/> + <color_swatch label="è‰²ï¼æ˜Žæš—" name="Color/Tint" tool_tip="カラー・ピッカーをクリックã—ã¦é–‹ã"/> + <button label="æ–°ã—ã„シャツを作æˆ" label_selected="æ–°ã—ã„シャツを作æˆ" name="Create New"/> + <button label="å–り外ã™" label_selected="å–り外ã™" name="Take Off"/> + <button label="ä¿å˜" label_selected="ä¿å˜" name="Save"/> + <button label="別åã§ä¿å˜..." label_selected="別åã§ä¿å˜..." name="Save As"/> + <button label="戻ã™" label_selected="戻ã™" name="Revert"/> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: ä¿®æ£ã§ãã¾ã›ã‚“。 </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: ãƒãƒ¼ãƒ‰ä¸ï¼Žï¼Žï¼Ž </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: 未装ç€ã€‚ </text> - <text type="string" length="1" name="path"> - [PATH]ã«æ‰€åœ¨ + <text length="1" name="path" type="string"> + [PATH] ã«æ‰€åœ¨ </text> - <text type="string" length="1" name="not worn instructions"> + <text length="1" name="not worn instructions" type="string"> æ–°ã—ã„シャツをæŒã¡ç‰©ã‹ã‚‰ã‚¢ãƒã‚¿ãƒ¼ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦è£…ç€ã—ã¾ã—ょã†ã€‚ å®Œå…¨ã«æ–°è¦ã®çŠ¶æ…‹ã‹ã‚‰ä½œæˆã—ã¦è£…ç€ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> ã‚ãªãŸã¯ã“ã®æœã®ä¿®æ£ã‚’許ã•れã¦ã„ã¾ã›ã‚“。 </text> + <text name="Item Action Label"> + シャツ: + </text> </panel> <panel label="ズボン" name="Pants"> - <texture_picker label="生地" name="Fabric" tool_tip="写真をクリックã—ã¦é¸æŠž" /> - <color_swatch label="è‰²ï¼æ˜Žæš—" name="Color/Tint" - tool_tip="カラー・ピッカーをクリックã—ã¦é–‹ã" /> - <button label="æ–°ã—ã„ズボンを作æˆ" - label_selected="æ–°ã—ã„ズボンを作æˆ" name="Create New" /> - <button label="å–り外ã™" label_selected="å–り外ã™" name="Take Off" /> - <button label="ä¿å˜" label_selected="ä¿å˜" name="Save" /> - <button label="別åã§ä¿å˜" label_selected="別åã§ä¿å˜" name="Save As" /> - <button label="戻ã™" label_selected="戻ã™" name="Revert" /> - <text type="string" length="1" name="title"> + <texture_picker label="生地" name="Fabric" tool_tip="写真をクリックã—ã¦é¸æŠž"/> + <color_swatch label="è‰²ï¼æ˜Žæš—" name="Color/Tint" tool_tip="カラー・ピッカーをクリックã—ã¦é–‹ã"/> + <button label="æ–°ã—ã„ズボンを作æˆ" label_selected="æ–°ã—ã„ズボンを作æˆ" name="Create New"/> + <button label="å–り外ã™" label_selected="å–り外ã™" name="Take Off"/> + <button label="ä¿å˜" label_selected="ä¿å˜" name="Save"/> + <button label="別åã§ä¿å˜..." label_selected="別åã§ä¿å˜..." name="Save As"/> + <button label="戻ã™" label_selected="戻ã™" name="Revert"/> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: ä¿®æ£ã§ãã¾ã›ã‚“。 </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: ãƒãƒ¼ãƒ‰ä¸ï¼Žï¼Žï¼Ž </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: 未装ç€ã€‚ </text> - <text type="string" length="1" name="path"> - [PATH]ã«æ‰€åœ¨ + <text length="1" name="path" type="string"> + [PATH] ã«æ‰€åœ¨ </text> - <text type="string" length="1" name="not worn instructions"> + <text length="1" name="not worn instructions" type="string"> æ–°ã—ã„ズボンをæŒã¡ç‰©ã‹ã‚‰ã‚¢ãƒã‚¿ãƒ¼ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦è£…ç€ã—ã¾ã—ょã†ã€‚ å®Œå…¨ã«æ–°è¦ã®çŠ¶æ…‹ã‹ã‚‰ä½œæˆã—ã¦è£…ç€ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> ã‚ãªãŸã¯ã“ã®æœã®ä¿®æ£ã‚’許ã•れã¦ã„ã¾ã›ã‚“。 </text> + <text name="Item Action Label"> + ズボン: + </text> </panel> <panel label="é´" name="Shoes"> - <text type="string" length="1" name="title"> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: ä¿®æ£ã§ãã¾ã›ã‚“。 </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: ãƒãƒ¼ãƒ‰ä¸ï¼Žï¼Žï¼Ž </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: 未装ç€ã€‚ </text> - <text type="string" length="1" name="path"> - [PATH]ã«æ‰€åœ¨ + <text length="1" name="path" type="string"> + [PATH] ã«æ‰€åœ¨ </text> - <text type="string" length="1" name="not worn instructions"> + <text length="1" name="not worn instructions" type="string"> æ–°ã—ã„é´ã‚’æŒã¡ç‰©ã‹ã‚‰ã‚¢ãƒã‚¿ãƒ¼ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦è£…ç€ã—ã¾ã—ょã†ã€‚ å®Œå…¨ã«æ–°è¦ã®çŠ¶æ…‹ã‹ã‚‰ä½œæˆã—ã¦è£…ç€ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> ã‚ãªãŸã¯ã“ã®æœã®ä¿®æ£ã‚’許ã•れã¦ã„ã¾ã›ã‚“。 </text> - <texture_picker label="生地" name="Fabric" tool_tip="写真をクリックã—ã¦é¸æŠž" /> - <color_swatch label="è‰²ï¼æ˜Žæš—" name="Color/Tint" - tool_tip="カラー・ピッカーをクリックã—ã¦é–‹ã" /> - <button label="æ–°ã—ã„é´ã‚’作æˆ" label_selected="æ–°ã—ã„é´ã‚’作æˆ" - name="Create New" /> - <button label="å–り外ã™" label_selected="å–り外ã™" name="Take Off" /> - <button label="ä¿å˜" label_selected="ä¿å˜" name="Save" /> - <button label="別åã§ä¿å˜" label_selected="別åã§ä¿å˜" name="Save As" /> - <button label="戻ã™" label_selected="戻ã™" name="Revert" /> + <text name="Item Action Label"> + é´ï¼š + </text> + <texture_picker label="生地" name="Fabric" tool_tip="写真をクリックã—ã¦é¸æŠž"/> + <color_swatch label="è‰²ï¼æ˜Žæš—" name="Color/Tint" tool_tip="カラー・ピッカーをクリックã—ã¦é–‹ã"/> + <button label="æ–°ã—ã„é´ã‚’作æˆ" label_selected="æ–°ã—ã„é´ã‚’作æˆ" name="Create New"/> + <button label="å–り外ã™" label_selected="å–り外ã™" name="Take Off"/> + <button label="ä¿å˜" label_selected="ä¿å˜" name="Save"/> + <button label="別åã§ä¿å˜..." label_selected="別åã§ä¿å˜..." name="Save As"/> + <button label="戻ã™" label_selected="戻ã™" name="Revert"/> </panel> <panel label="é´ä¸‹" name="Socks"> - <text type="string" length="1" name="title"> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: ä¿®æ£ã§ãã¾ã›ã‚“。 </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: ãƒãƒ¼ãƒ‰ä¸ï¼Žï¼Žï¼Ž </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: 未装ç€ã€‚ </text> - <text type="string" length="1" name="path"> - [PATH]ã«æ‰€åœ¨ + <text length="1" name="path" type="string"> + [PATH] ã«æ‰€åœ¨ </text> - <text type="string" length="1" name="not worn instructions"> + <text length="1" name="not worn instructions" type="string"> æ–°ã—ã„é´ä¸‹ã‚’æŒã¡ç‰©ã‹ã‚‰ã‚¢ãƒã‚¿ãƒ¼ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦è£…ç€ã—ã¾ã—ょã†ã€‚ å®Œå…¨ã«æ–°è¦ã®çŠ¶æ…‹ã‹ã‚‰ä½œæˆã—ã¦è£…ç€ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> ã‚ãªãŸã¯ã“ã®æœã®ä¿®æ£ã‚’許ã•れã¦ã„ã¾ã›ã‚“。 </text> - <texture_picker label="生地" name="Fabric" tool_tip="写真をクリックã—ã¦é¸æŠž" /> - <color_swatch label="è‰²ï¼æ˜Žæš—" name="Color/Tint" - tool_tip="カラー・ピッカーをクリックã—ã¦é–‹ã" /> - <button label="æ–°ã—ã„é´ä¸‹ã‚’作æˆ" label_selected="æ–°ã—ã„é´ä¸‹ã‚’作æˆ" - name="Create New" /> - <button label="å–り外ã™" label_selected="å–り外ã™" name="Take Off" /> - <button label="ä¿å˜" label_selected="ä¿å˜" name="Save" /> - <button label="別åã§ä¿å˜" label_selected="別åã§ä¿å˜" name="Save As" /> - <button label="戻ã™" label_selected="戻ã™" name="Revert" /> + <text name="Item Action Label"> + é´ä¸‹ï¼š + </text> + <texture_picker label="生地" name="Fabric" tool_tip="写真をクリックã—ã¦é¸æŠž"/> + <color_swatch label="è‰²ï¼æ˜Žæš—" name="Color/Tint" tool_tip="カラー・ピッカーをクリックã—ã¦é–‹ã"/> + <button label="æ–°ã—ã„é´ä¸‹ã‚’作æˆ" label_selected="æ–°ã—ã„é´ä¸‹ã‚’作æˆ" name="Create New"/> + <button label="å–り外ã™" label_selected="å–り外ã™" name="Take Off"/> + <button label="ä¿å˜" label_selected="ä¿å˜" name="Save"/> + <button label="別åã§ä¿å˜..." label_selected="別åã§ä¿å˜..." name="Save As"/> + <button label="戻ã™" label_selected="戻ã™" name="Revert"/> </panel> <panel label="上ç€" name="Jacket"> - <text type="string" length="1" name="title"> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: ä¿®æ£ã§ãã¾ã›ã‚“。 </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: ãƒãƒ¼ãƒ‰ä¸ï¼Žï¼Žï¼Ž </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: 未装ç€ã€‚ </text> - <text type="string" length="1" name="path"> - [PATH]ã«æ‰€åœ¨ + <text length="1" name="path" type="string"> + [PATH] ã«æ‰€åœ¨ </text> - <text type="string" length="1" name="not worn instructions"> + <text length="1" name="not worn instructions" type="string"> æ–°ã—ã„上ç€ã‚’æŒã¡ç‰©ã‹ã‚‰ã‚¢ãƒã‚¿ãƒ¼ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦è£…ç€ã—ã¾ã—ょã†ã€‚ å®Œå…¨ã«æ–°è¦ã®çŠ¶æ…‹ã‹ã‚‰ä½œæˆã—ã¦è£…ç€ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> ã‚ãªãŸã¯ã“ã®æœã®ä¿®æ£ã‚’許ã•れã¦ã„ã¾ã›ã‚“。 </text> - <texture_picker label="上åŠèº«ã®ç”Ÿåœ°" name="Upper Fabric" - tool_tip="写真をクリックã—ã¦é¸æŠž" /> - <texture_picker label="下層生地" name="Lower Fabric" - tool_tip="写真をクリックã—ã¦é¸æŠž" /> - <color_swatch label="è‰²ï¼æ˜Žæš—" name="Color/Tint" - tool_tip="カラー・ピッカーをクリックã—ã¦é–‹ã" /> - <button label="æ–°ã—ã„上ç€ã‚’作æˆ" label_selected="æ–°ã—ã„上ç€ã‚’作æˆ" - name="Create New" /> - <button label="å–り外ã™" label_selected="å–り外ã™" name="Take Off" /> - <button label="ä¿å˜" label_selected="ä¿å˜" name="Save" /> - <button label="別åã§ä¿å˜" label_selected="別åã§ä¿å˜" name="Save As" /> - <button label="戻ã™" label_selected="戻ã™" name="Revert" /> + <text name="Item Action Label"> + 上ç€ï¼š + </text> + <texture_picker label="上åŠèº«ã®ç”Ÿåœ°" name="Upper Fabric" tool_tip="写真をクリックã—ã¦é¸æŠž"/> + <texture_picker label="下層生地" name="Lower Fabric" tool_tip="写真をクリックã—ã¦é¸æŠž"/> + <color_swatch label="è‰²ï¼æ˜Žæš—" name="Color/Tint" tool_tip="カラー・ピッカーをクリックã—ã¦é–‹ã"/> + <button label="æ–°ã—ã„上ç€ã‚’作æˆ" label_selected="æ–°ã—ã„上ç€ã‚’作æˆ" name="Create New"/> + <button label="å–り外ã™" label_selected="å–り外ã™" name="Take Off"/> + <button label="ä¿å˜" label_selected="ä¿å˜" name="Save"/> + <button label="別åã§ä¿å˜..." label_selected="別åã§ä¿å˜..." name="Save As"/> + <button label="戻ã™" label_selected="戻ã™" name="Revert"/> </panel> <panel label="手袋" name="Gloves"> - <text type="string" length="1" name="title"> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: ä¿®æ£ã§ãã¾ã›ã‚“。 </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: ãƒãƒ¼ãƒ‰ä¸ï¼Žï¼Žï¼Ž </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: 未装ç€ã€‚ </text> - <text type="string" length="1" name="path"> - [PATH]ã«æ‰€åœ¨ + <text length="1" name="path" type="string"> + [PATH] ã«æ‰€åœ¨ </text> - <text type="string" length="1" name="not worn instructions"> + <text length="1" name="not worn instructions" type="string"> æ–°ã—ã„æ‰‹è¢‹ã‚’æŒã¡ç‰©ã‹ã‚‰ã‚¢ãƒã‚¿ãƒ¼ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦è£…ç€ã—ã¾ã—ょã†ã€‚ å®Œå…¨ã«æ–°è¦ã®çŠ¶æ…‹ã‹ã‚‰ä½œæˆã—ã¦è£…ç€ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> ã‚ãªãŸã¯ã“ã®æœã®ä¿®æ£ã‚’許ã•れã¦ã„ã¾ã›ã‚“。 </text> - <texture_picker label="生地" name="Fabric" tool_tip="写真をクリックã—ã¦é¸æŠž" /> - <color_swatch label="è‰²ï¼æ˜Žæš—" name="Color/Tint" - tool_tip="カラー・ピッカーをクリックã—ã¦é–‹ã" /> - <button label="æ–°ã—ã„æ‰‹è¢‹ã‚’作æˆ" label_selected="æ–°ã—ã„æ‰‹è¢‹ã‚’作æˆ" - name="Create New" /> - <button label="å–り外ã™" label_selected="å–り外ã™" name="Take Off" /> - <button label="ä¿å˜" label_selected="ä¿å˜" name="Save" /> - <button label="別åã§ä¿å˜" label_selected="別åã§ä¿å˜" name="Save As" /> - <button label="戻ã™" label_selected="戻ã™" name="Revert" /> + <text name="Item Action Label"> + 手袋: + </text> + <texture_picker label="生地" name="Fabric" tool_tip="写真をクリックã—ã¦é¸æŠž"/> + <color_swatch label="è‰²ï¼æ˜Žæš—" name="Color/Tint" tool_tip="カラー・ピッカーをクリックã—ã¦é–‹ã"/> + <button label="æ–°ã—ã„æ‰‹è¢‹ã‚’作æˆ" label_selected="æ–°ã—ã„æ‰‹è¢‹ã‚’作æˆ" name="Create New"/> + <button label="å–り外ã™" label_selected="å–り外ã™" name="Take Off"/> + <button label="ä¿å˜" label_selected="ä¿å˜" name="Save"/> + <button label="別åã§ä¿å˜..." label_selected="別åã§ä¿å˜..." name="Save As"/> + <button label="戻ã™" label_selected="戻ã™" name="Revert"/> </panel> <panel label="下ç€ã‚·ãƒ£ãƒ„" name="Undershirt"> - <text type="string" length="1" name="title"> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: ä¿®æ£ã§ãã¾ã›ã‚“。 </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: ãƒãƒ¼ãƒ‰ä¸ï¼Žï¼Žï¼Ž </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: 未装ç€ã€‚ </text> - <text type="string" length="1" name="path"> - [PATH]ã«æ‰€åœ¨ + <text length="1" name="path" type="string"> + [PATH] ã«æ‰€åœ¨ </text> - <text type="string" length="1" name="not worn instructions"> + <text length="1" name="not worn instructions" type="string"> æ–°ã—ã„下ç€ã‚’æŒã¡ç‰©ã‹ã‚‰ã‚¢ãƒã‚¿ãƒ¼ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦è£…ç€ã—ã¾ã—ょã†ã€‚ å®Œå…¨ã«æ–°è¦ã®çŠ¶æ…‹ã‹ã‚‰ä½œæˆã—ã¦è£…ç€ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> ã‚ãªãŸã¯ã“ã®æœã®ä¿®æ£ã‚’許ã•れã¦ã„ã¾ã›ã‚“。 </text> - <texture_picker label="生地" name="Fabric" tool_tip="写真をクリックã—ã¦é¸æŠž" /> - <color_swatch label="è‰²ï¼æ˜Žæš—" name="Color/Tint" - tool_tip="カラー・ピッカーをクリックã—ã¦é–‹ã" /> - <button label="æ–°ã—ã„下ç€ã‚·ãƒ£ãƒ„を作æˆ" - label_selected="æ–°ã—ã„下ç€ã‚·ãƒ£ãƒ„を作æˆ" name="Create New" /> - <button label="å–り外ã™" label_selected="å–り外ã™" name="Take Off" /> - <button label="ä¿å˜" label_selected="ä¿å˜" name="Save" /> - <button label="別åã§ä¿å˜" label_selected="別åã§ä¿å˜" name="Save As" /> - <button label="戻ã™" label_selected="戻ã™" name="Revert" /> + <text name="Item Action Label"> + 下ç€ã‚·ãƒ£ãƒ„: + </text> + <texture_picker label="生地" name="Fabric" tool_tip="写真をクリックã—ã¦é¸æŠž"/> + <color_swatch label="è‰²ï¼æ˜Žæš—" name="Color/Tint" tool_tip="カラー・ピッカーをクリックã—ã¦é–‹ã"/> + <button label="æ–°ã—ã„下ç€ã‚·ãƒ£ãƒ„を作æˆ" label_selected="æ–°ã—ã„下ç€ã‚·ãƒ£ãƒ„を作æˆ" name="Create New"/> + <button label="å–り外ã™" label_selected="å–り外ã™" name="Take Off"/> + <button label="ä¿å˜" label_selected="ä¿å˜" name="Save"/> + <button label="別åã§ä¿å˜..." label_selected="別åã§ä¿å˜..." name="Save As"/> + <button label="戻ã™" label_selected="戻ã™" name="Revert"/> </panel> <panel label="下ç€ãƒ‘ンツ" name="Underpants"> - <text type="string" length="1" name="title"> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: ä¿®æ£ã§ãã¾ã›ã‚“。 </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: ãƒãƒ¼ãƒ‰ä¸ï¼Žï¼Žï¼Ž </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: 未装ç€ã€‚ </text> - <text type="string" length="1" name="path"> - [PATH]ã«æ‰€åœ¨ + <text length="1" name="path" type="string"> + [PATH] ã«æ‰€åœ¨ </text> - <text type="string" length="1" name="not worn instructions"> + <text length="1" name="not worn instructions" type="string"> æ–°ã—ã„パンツをæŒã¡ç‰©ã‹ã‚‰ã‚¢ãƒã‚¿ãƒ¼ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦è£…ç€ã—ã¾ã—ょã†ã€‚ å®Œå…¨ã«æ–°è¦ã®çŠ¶æ…‹ã‹ã‚‰ä½œæˆã—ã¦è£…ç€ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> ã‚ãªãŸã¯ã“ã®æœã®ä¿®æ£ã‚’許ã•れã¦ã„ã¾ã›ã‚“。 </text> - <texture_picker label="生地" name="Fabric" tool_tip="写真をクリックã—ã¦é¸æŠž" /> - <color_swatch label="è‰²ï¼æ˜Žæš—" name="Color/Tint" - tool_tip="カラー・ピッカーをクリックã—ã¦é–‹ã" /> - <button label="æ–°ã—ã„パンツを作æˆ" - label_selected="æ–°ã—ã„パンツを作æˆ" name="Create New" /> - <button label="å–り外ã™" label_selected="å–り外ã™" name="Take Off" /> - <button label="ä¿å˜" label_selected="ä¿å˜" name="Save" /> - <button label="別åã§ä¿å˜" label_selected="別åã§ä¿å˜" name="Save As" /> - <button label="戻ã™" label_selected="戻ã™" name="Revert" /> + <text name="Item Action Label"> + 下ç€ãƒ‘ンツ: + </text> + <texture_picker label="生地" name="Fabric" tool_tip="写真をクリックã—ã¦é¸æŠž"/> + <color_swatch label="è‰²ï¼æ˜Žæš—" name="Color/Tint" tool_tip="カラー・ピッカーをクリックã—ã¦é–‹ã"/> + <button label="æ–°ã—ã„パンツを作æˆ" label_selected="æ–°ã—ã„パンツを作æˆ" name="Create New"/> + <button label="å–り外ã™" label_selected="å–り外ã™" name="Take Off"/> + <button label="ä¿å˜" label_selected="ä¿å˜" name="Save"/> + <button label="別åã§ä¿å˜..." label_selected="別åã§ä¿å˜..." name="Save As"/> + <button label="戻ã™" label_selected="戻ã™" name="Revert"/> </panel> <panel label="スカート" name="Skirt"> - <text type="string" length="1" name="title"> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: ä¿®æ£ã§ãã¾ã›ã‚“。 </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: ãƒãƒ¼ãƒ‰ä¸ï¼Žï¼Žï¼Ž </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: 未装ç€ã€‚ </text> - <text type="string" length="1" name="path"> - [PATH]ã«æ‰€åœ¨ + <text length="1" name="path" type="string"> + [PATH] ã«æ‰€åœ¨ </text> - <text type="string" length="1" name="not worn instructions"> + <text length="1" name="not worn instructions" type="string"> æ–°ã—ã„スカートをæŒç‰©ã‹ã‚‰ã‚¢ãƒã‚¿ãƒ¼ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦è£…ç€ã—ã¾ã—ょã†ã€‚ å®Œå…¨ã«æ–°è¦ã®çŠ¶æ…‹ã‹ã‚‰ä½œæˆã—ã¦è£…ç€ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> ã‚ãªãŸã¯ã“ã®æœã®ä¿®æ£ã‚’許ã•れã¦ã„ã¾ã›ã‚“。 </text> - <texture_picker label="生地" name="Fabric" tool_tip="写真をクリックã—ã¦é¸æŠž" /> - <color_swatch label="è‰²ï¼æ˜Žæš—" name="Color/Tint" - tool_tip="カラー・ピッカーをクリックã—ã¦é–‹ã" /> - <button label="スカートを作æˆ" label_selected="スカートを作æˆ" - name="Create New" /> - <button label="å–り外ã™" label_selected="å–り外ã™" name="Take Off" /> - <button label="ä¿å˜" label_selected="ä¿å˜" name="Save" /> - <button label="別åã§ä¿å˜" label_selected="別åã§ä¿å˜" name="Save As" /> - <button label="戻ã™" label_selected="戻ã™" name="Revert" /> + <text name="Item Action Label"> + スカート: + </text> + <texture_picker label="生地" name="Fabric" tool_tip="写真をクリックã—ã¦é¸æŠž"/> + <color_swatch label="è‰²ï¼æ˜Žæš—" name="Color/Tint" tool_tip="カラー・ピッカーをクリックã—ã¦é–‹ã"/> + <button label="スカートを作æˆ" label_selected="スカートを作æˆ" name="Create New"/> + <button label="å–り外ã™" label_selected="å–り外ã™" name="Take Off"/> + <button label="ä¿å˜" label_selected="ä¿å˜" name="Save"/> + <button label="別åã§ä¿å˜..." label_selected="別åã§ä¿å˜..." name="Save As"/> + <button label="戻ã™" label_selected="戻ã™" name="Revert"/> </panel> </tab_container> - <button label="æœè£…を作æˆ" label_selected="æœè£…を作æˆ" name="Make Outfit" /> - <button label="ã™ã¹ã¦ä¿å˜" label_selected="ã™ã¹ã¦ä¿å˜" name="Save All" /> - <button label="é–‰ã˜ã‚‹" label_selected="é–‰ã˜ã‚‹" name="Close" /> + <button label="ã‚ャンセル" label_selected="ã‚ャンセル" name="Cancel"/> + <button label="OK" label_selected="OK" name="Ok"/> + <button label="æœè£…を作æˆ..." label_selected="æœè£…を作æˆ..." name="Make Outfit"/> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_font_test.xml b/indra/newview/skins/default/xui/ja/floater_font_test.xml new file mode 100644 index 0000000000000000000000000000000000000000..b853f395dd53a27338288df0afe60bd2264a2f52 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_font_test.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="contents" title="フォントã®ãƒ†ã‚¹ãƒˆ"> + <text name="linea"> + オーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ãƒ†ã‚¹ãƒˆ - Times Romanã§ã“ã“ã«è¡¨ç¤ºã•れã¾ã™ã€‚ (default/xui/en-us フォルダー内) + </text> +</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_god_tools.xml b/indra/newview/skins/default/xui/ja/floater_god_tools.xml index d822bd420312ebd6c9d93fe396383a2e41a95025..d91744c391831ab4ed64f3bbd9c05c883a2faf83 100644 --- a/indra/newview/skins/default/xui/ja/floater_god_tools.xml +++ b/indra/newview/skins/default/xui/ja/floater_god_tools.xml @@ -122,17 +122,29 @@ 目的地: </text> <combo_box name="destination"> - <combo_box.item name="Selection" label="é¸æŠž" /> - <combo_box.item name="AgentRegion" label="エージェント地域" /> + <combo_item name="Selection"> + é¸æŠž + </combo_item> + <combo_item name="AgentRegion"> + エージェント地域 + </combo_item> </combo_box> <text name="Request:"> è¦æ±‚: </text> <combo_box name="request"> - <combo_box.item name="colliders<steps>" label="コライダー<ステップ>" /> - <combo_box.item name="scripts<count>,<optionalpattern>" label="スクリプト<回数>ã€ï¼œã‚ªãƒ—ション・パターン>" /> - <combo_box.item name="objects<pattern>" label="オブジェクト<パターン>" /> - <combo_box.item name="rez<asset_id>" label="rez <asset_id>" /> + <combo_item name="colliders<steps>"> + コライダー<ステップ> + </combo_item> + <combo_item name="scripts<count>,<optionalpattern>"> + スクリプト<回数>ã€ï¼œã‚ªãƒ—ション・パターン> + </combo_item> + <combo_item name="objects<pattern>"> + オブジェクト<パターン> + </combo_item> + <combo_item name="rez<asset_id>"> + rez <asset_id> + </combo_item> </combo_box> <text name="Parameter:"> パラメーター: diff --git a/indra/newview/skins/default/xui/ja/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/ja/floater_inventory_item_properties.xml index 9a408b92a9404e5b64f00a2f8611b6da6476ec68..8588ee1a96669a6a589f628837bb91809a95497e 100644 --- a/indra/newview/skins/default/xui/ja/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/ja/floater_inventory_item_properties.xml @@ -60,12 +60,8 @@ </text> <check_box label="売り出ã—ä¸" name="CheckPurchase" /> <radio_group name="RadioSaleType"> - <radio_item name="radio"> - オリジナル - </radio_item> - <radio_item name="radio2"> - コピー - </radio_item> + <radio_item name="radio" label="オリジナル" /> + <radio_item name="radio2" label="コピー" /> </radio_group> <text name="TextPrice"> 料金:L$ diff --git a/indra/newview/skins/default/xui/ja/floater_land_holdings.xml b/indra/newview/skins/default/xui/ja/floater_land_holdings.xml index ba85592dd93eebe95472ffd1f197dbbe165c4b4d..cb87dafb49f2688e9723009806c98005ff1d2468 100644 --- a/indra/newview/skins/default/xui/ja/floater_land_holdings.xml +++ b/indra/newview/skins/default/xui/ja/floater_land_holdings.xml @@ -1,8 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="land holdings floater" title="自分ã®åœŸåœ°"> <scroll_list name="parcel list"> - <column label="åå‰" name="name"/> - <column label="ä½ç½®" name="location"/> + <column label="区画å" name="name"/> + <column label="地域(リージョン)" name="location"/> + <column label="種類" name="type"/> <column label="é¢ç©" name="area"/> <column label="" name="hidden"/> </scroll_list> diff --git a/indra/newview/skins/default/xui/ja/floater_notification.xml b/indra/newview/skins/default/xui/ja/floater_notification.xml index fcddc7d2e0ed2af6a8b493aecba28b56ad996de8..0f37b30f522a0be7b9fcd5db3b7132f109bd63fc 100644 --- a/indra/newview/skins/default/xui/ja/floater_notification.xml +++ b/indra/newview/skins/default/xui/ja/floater_notification.xml @@ -1,7 +1,7 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="notification" title="通知コンソール"> - <text_editor name="payload"> - ãƒãƒ¼ãƒ‡ã‚£ãƒ³ã‚°... - </text_editor> - <combo_box label="応ç”" name="response"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="notification" title="通知コンソール"> + <text_editor name="payload"> + ãƒãƒ¼ãƒ‡ã‚£ãƒ³ã‚°... + </text_editor> + <combo_box label="応ç”" name="response"/> +</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_notifications_console.xml b/indra/newview/skins/default/xui/ja/floater_notifications_console.xml index fa5ca6672ce1f0d98a2370d687f85eb47237248a..c9d9ea7acbd3ecd14c5068379ebc0b0098ff05dc 100644 --- a/indra/newview/skins/default/xui/ja/floater_notifications_console.xml +++ b/indra/newview/skins/default/xui/ja/floater_notifications_console.xml @@ -1,5 +1,5 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="notifications_console" title="通知コンソール"> - <combo_box label="ç¨®é¡žã‚’é¸æŠž" name="notification_types"/> - <button label="è¿½åŠ " name="add_notification"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="notifications_console" title="通知コンソール"> + <combo_box label="ç¨®é¡žã‚’é¸æŠž" name="notification_types"/> + <button label="è¿½åŠ " name="add_notification"/> +</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_perm_prefs.xml b/indra/newview/skins/default/xui/ja/floater_perm_prefs.xml index 4969eb4d715996417c560b9fd034c2d74f7ea5ad..adbb8596d3b5ddeb46614e6e023023cbd7313689 100644 --- a/indra/newview/skins/default/xui/ja/floater_perm_prefs.xml +++ b/indra/newview/skins/default/xui/ja/floater_perm_prefs.xml @@ -1,16 +1,16 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="perm prefs" title="デフォルトã®ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰æ¨©é™"> - <panel label="権é™" name="permissions"> - <button label="?" label_selected="?" name="help"/> - <check_box label="グループã§å…±åŒç®¡ç†" name="share_with_group"/> - <check_box label="誰ã«å¯¾ã—ã¦ã‚‚コピーを許å¯" name="everyone_copy"/> - <text name="NextOwnerLabel"> - 次ã®ã‚ªãƒ¼ãƒŠãƒ¼ãŒã§ãã‚‹æ“作: - </text> - <check_box label="ä¿®æ£" name="next_owner_modify"/> - <check_box label="コピー" name="next_owner_copy"/> - <check_box label="å†è²©/プレゼント" name="next_owner_transfer"/> - </panel> - <button label="OK" label_selected="OK" name="ok"/> - <button label="å–り消ã—" label_selected="å–り消ã—" name="cancel"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="perm prefs" title="デフォルトã®ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰æ¨©é™"> + <panel label="権é™" name="permissions"> + <button label="?" label_selected="?" name="help"/> + <check_box label="グループã§å…±åŒç®¡ç†" name="share_with_group"/> + <check_box label="誰ã«å¯¾ã—ã¦ã‚‚コピーを許å¯" name="everyone_copy"/> + <text name="NextOwnerLabel"> + 次ã®ã‚ªãƒ¼ãƒŠãƒ¼ãŒã§ãã‚‹æ“作: + </text> + <check_box label="ä¿®æ£" name="next_owner_modify"/> + <check_box label="コピー" name="next_owner_copy"/> + <check_box label="å†è²©/プレゼント" name="next_owner_transfer"/> + </panel> + <button label="OK" label_selected="OK" name="ok"/> + <button label="å–り消ã—" label_selected="å–り消ã—" name="cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml b/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml index 177895f44ec1724907b4b552cd656aee45ff5642..1ec868d0d8fc57cc128e257dc5280e4652763aab 100644 --- a/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml @@ -15,10 +15,10 @@ <text name="trigger_label"> トリガー: </text> - <text name="replace_text" tool_tip="トリガー・ワードをã“れらã®å˜èªžã«ç½®ãæ›ãˆã¾ã™ã€‚ ãŸã¨ãˆã°ã€ãƒˆãƒªã‚¬ãƒ¼'hello'ã‚’'Howdy'ã«ç½®æ›ã™ã‚‹ã¨ã€'I wanted to say hello'ã¨ã„ã†ãƒãƒ£ãƒƒãƒˆæ–‡ãŒ'I wanted to say howdy'ã«å¤‰ã‚りã€ã‚¸ã‚§ã‚¹ãƒãƒ£ãƒ¼ã«ã‚‚ç½®æ›ãŒåæ˜ ã•れã¾ã™ã€‚"> + <text name="replace_text" tool_tip="トリガー・ワードをã“れらã®å˜èªžã«ç½®ãæ›ãˆã¾ã™ã€‚ ãŸã¨ãˆã°ã€ãƒˆãƒªã‚¬ãƒ¼ã€Œhelloã€ã‚’「Howdyã€ã«ç½®æ›ã™ã‚‹ã¨ã€ã€ŒI wanted to say helloã€ã¨ã„ã†ãƒãƒ£ãƒƒãƒˆæ–‡ãŒã€ŒI wanted to say howdyã€ã«å¤‰ã‚りã€ã‚¸ã‚§ã‚¹ãƒãƒ£ãƒ¼ã«ã‚‚ç½®æ›ãŒåæ˜ ã•れã¾ã™ã€‚"> ç½®æ›ï¼š </text> - <line_editor name="replace_editor" tool_tip="トリガー・ワードをã“れらã®å˜èªžã«ç½®ãæ›ãˆã¾ã™ã€‚ ãŸã¨ãˆã°ã€ãƒˆãƒªã‚¬ãƒ¼'hello'ã‚’'Howdy'ã«ç½®æ›ã™ã‚‹ã¨ã€'I wanted to say hello'ã¨ã„ã†ãƒãƒ£ãƒƒãƒˆæ–‡ãŒ'I wanted to say howdy'ã«å¤‰ã‚りã€ã‚¸ã‚§ã‚¹ãƒãƒ£ãƒ¼ã«ã‚‚ç½®æ›ãŒåæ˜ ã•れã¾ã™ã€‚"/> + <line_editor name="replace_editor" tool_tip="トリガー・ワードをã“れらã®å˜èªžã«ç½®ãæ›ãˆã¾ã™ã€‚ ãŸã¨ãˆã°ã€ãƒˆãƒªã‚¬ãƒ¼ã€Œhelloã€ã‚’「Howdyã€ã«ç½®æ›ã™ã‚‹ã¨ã€ã€ŒI wanted to say helloã€ã¨ã„ã†ãƒãƒ£ãƒƒãƒˆæ–‡ãŒã€ŒI wanted to say howdyã€ã«å¤‰ã‚りã€ã‚¸ã‚§ã‚¹ãƒãƒ£ãƒ¼ã«ã‚‚ç½®æ›ãŒåæ˜ ã•れã¾ã™ã€‚"/> <text name="key_label"> ショートカット・ã‚ー: </text> @@ -46,12 +46,8 @@ ã¾ã™ã€‚ </text> <radio_group name="animation_trigger_type"> - <radio_item name="start"> - é–‹å§‹ - </radio_item> - <radio_item name="stop"> - åœæ¢ - </radio_item> + <radio_item name="start" label="é–‹å§‹" /> + <radio_item name="stop" label="åœæ¢" /> </radio_group> <check_box label="アニメーションãŒå®Œäº†ã™ã‚‹ã¾ã§" name="wait_anim_check"/> <check_box label="ç§’è¡¨ç¤ºã®æ™‚é–“" name="wait_time_check"/> diff --git a/indra/newview/skins/default/xui/ja/floater_report_abuse.xml b/indra/newview/skins/default/xui/ja/floater_report_abuse.xml index 885a841127d3daba1c724533bec8dd9355d4a219..b523023e6e2792560218afe62e6c6ed0e619136f 100644 --- a/indra/newview/skins/default/xui/ja/floater_report_abuse.xml +++ b/indra/newview/skins/default/xui/ja/floater_report_abuse.xml @@ -37,51 +37,123 @@ Hendrerit Vulputate </text> <combo_box name="category_combo" tool_tip="カテゴリー -- ã“ã®å ±å‘Šã«æœ€ã‚‚é©ã—ãŸã‚«ãƒ†ã‚´ãƒªãƒ¼ã‚’é¸æŠžã—ã¦ãã ã•ã„"> - <combo_box.item name="Select_category" label="ã‚«ãƒ†ã‚´ãƒªãƒ¼ã‚’é¸æŠž"/> - <combo_box.item name="Age__Age_play" label="å¹´é½¢>å¹´é½¢å½è¨¼"/> - <combo_box.item name="Age__Adult_resident_on_Teen_Second_Life" label="å¹´é½¢>æˆäººã®ä½äººãŒTeen Second Life上ã«ã„ã‚‹"/> - - - - <combo_box.item name="Assault__Combat_sandbox___unsafe_area" label="攻撃>コンãƒãƒƒãƒˆãƒ»ã‚µãƒ³ãƒ‰ãƒœãƒƒã‚¯ã‚¹/å±é™ºãªã‚¨ãƒªã‚¢"/> - <combo_box.item name="Assault__Safe_area" label="攻撃>安全ãªã‚¨ãƒªã‚¢"/> - <combo_box.item name="Assault__Weapons_testing_sandbox" label="攻撃>æ¦å™¨ãƒ†ã‚¹ãƒˆç”¨ã‚µãƒ³ãƒ‰ãƒœãƒƒã‚¯ã‚¹"/> - <combo_box.item name="Commerce__Failure_to_deliver_product_or_service" label="商å–引>製å“ã¾ãŸã¯ã‚µãƒ¼ãƒ“ã‚¹ã®æä¾›ãŒè¡Œã‚れãªã„"/> - <combo_box.item name="Disclosure__Real_world_information" label="開示 > ãƒªã‚¢ãƒ«ãƒ¯ãƒ¼ãƒ«ãƒ‰ã®æƒ…å ±"/> - <combo_box.item name="Disclosure__Remotely_monitoring chat" label="開示>離れãŸã¨ã“ã‚ã‹ã‚‰ãƒãƒ£ãƒƒãƒˆã‚’モニターã—ã¦ã„ã‚‹"/> - <combo_box.item name="Disclosure__Second_Life_information_chat_IMs" label="開示>Second Lifeã®æƒ…å ±/ãƒãƒ£ãƒƒãƒˆ/IM"/> - <combo_box.item name="Disturbing_the_peace__Unfair_use_of_region_resources" label="å¹³ç©ã‚’ä¹±ã™è¡Œç‚º>地域リソースã®ä½¿ç”¨ãŒä¸å…¬å¹³"/> - <combo_box.item name="Disturbing_the_peace__Excessive_scripted_objects" label="å¹³ç©ã‚’ä¹±ã™è¡Œç‚º>スクリプト・オブジェクトã®ä¹±ç”¨"/> - <combo_box.item name="Disturbing_the_peace__Object_littering" label="å¹³ç©ã‚’ä¹±ã™è¡Œç‚º>ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æ¨ã¦ç½®ã"/> - <combo_box.item name="Disturbing_the_peace__Repetitive_spam" label="å¹³ç©ã‚’ä¹±ã™è¡Œç‚º>繰り返ã—スパム"/> - <combo_box.item name="Disturbing_the_peace__Unwanted_advert_spam" label="å¹³ç©ã‚’ä¹±ã™è¡Œç‚º>ä¸è¦ãªåºƒå‘Šã‚¹ãƒ‘ム"/> - <combo_box.item name="Fraud__L$" label="è©æ¬º> L$"/> - <combo_box.item name="Fraud__Land" label="è©æ¬º>土地"/> - <combo_box.item name="Fraud__Pyramid_scheme_or_chain_letter" label="è©æ¬º>マルãƒå•†æ³•ã¾ãŸã¯ãƒã‚§ãƒ¼ãƒ³ãƒ»ãƒ¡ãƒ¼ãƒ«"/> - <combo_box.item name="Fraud__US$" label="è©æ¬º> US$"/> - <combo_box.item name="Harassment__Advert_farms___visual_spam" label="嫌ãŒã‚‰ã›>広告委託/視覚的ãªã‚¹ãƒ‘ム"/> - <combo_box.item name="Harassment__Defaming_individuals_or_groups" label="嫌ãŒã‚‰ã›>個人ã¾ãŸã¯ã‚°ãƒ«ãƒ¼ãƒ—ã®ä¸å‚·"/> - <combo_box.item name="Harassment__Impeding_movement" label="嫌ãŒã‚‰ã›>移動ã®å¦¨å®³"/> - <combo_box.item name="Harassment__Sexual_harassment" label="嫌ãŒã‚‰ã›>性的ãªå«ŒãŒã‚‰ã›"/> - <combo_box.item name="Harassment__Solicting_inciting_others_to_violate_ToS" label="嫌ãŒã‚‰ã›>利用è¦ç´„(ToS)ã«é•åã™ã‚‹è¡Œç‚ºã‚’行ã†ã‚ˆã†ä»–者を勧誘/扇動"/> - <combo_box.item name="Harassment__Verbal_abuse" label="嫌ãŒã‚‰ã›>暴言"/> - <combo_box.item name="Indecency__Broadly_offensive_content_or_conduct" label="ã‚ã„ã›ã¤>è‘—ã—ãä¸å¿«ã§ã‚ã‚‹ã¨è¦‹ãªã•れるコンテンツã¾ãŸã¯è¡Œç‚º"/> - - - - <combo_box.item name="Indecency__Inappropriate_avatar_name" label="ã‚ã„ã›ã¤>ä¸é©åˆ‡ãªã‚¢ãƒã‚¿ãƒ¼å"/> - - - - <combo_box.item name="Intellectual_property_infringement_Content_Removal" label="知的財産ã®ä¾µå®³ > ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã®æ’¤åŽ»"/> - <combo_box.item name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit" label="知的財産ã®ä¾µå®³ > コピーBotåŠã³æ¨©é™ã®æ‚ªç”¨"/> - <combo_box.item name="Intolerance" label="ä¸å¯›å®¹"/> - <combo_box.item name="Land__Abuse_of_sandbox_resources" label="土地>サンドボックス・リソースã®ä¹±ç”¨"/> - <combo_box.item name="Land__Encroachment__Objects_textures" label="土地>䏿³•侵入>オブジェクト/テクスãƒãƒ£ãƒ¼"/> - <combo_box.item name="Land__Encroachment__Particles" label="土地>䏿³•侵入>パーティクル"/> - <combo_box.item name="Land__Encroachment__Trees_plants" label="土地>䏿³•侵入>樹木/æ¤ç‰©"/> - <combo_box.item name="Wagering_gambling" label="è³ã‘/ギャンブル"/> - <combo_box.item name="Other" label="ãã®ä»–"/> + <combo_item name="Select_category"> + ã‚«ãƒ†ã‚´ãƒªãƒ¼ã‚’é¸æŠž + </combo_item> + <combo_item name="Age__Age_play"> + 年齢>年齢å½è¨¼ + </combo_item> + <combo_item name="Age__Adult_resident_on_Teen_Second_Life"> + 年齢>æˆäººã®ä½äººãŒTeen Second Life上ã«ã„ã‚‹ + </combo_item> + <combo_item name="Age__Underage_resident_outside_of_Teen_Second_Life"> + 年齢>未æˆå¹´ãªä½äººãŒTeen Second Lifeã®å¤–ã«ã„ã‚‹ + </combo_item> + <combo_item name="Assault__Combat_sandbox___unsafe_area"> + 攻撃>コンãƒãƒƒãƒˆãƒ»ã‚µãƒ³ãƒ‰ãƒœãƒƒã‚¯ã‚¹/å±é™ºãªã‚¨ãƒªã‚¢ + </combo_item> + <combo_item name="Assault__Safe_area"> + 攻撃>安全ãªã‚¨ãƒªã‚¢ + </combo_item> + <combo_item name="Assault__Weapons_testing_sandbox"> + 攻撃>æ¦å™¨ãƒ†ã‚¹ãƒˆç”¨ã‚µãƒ³ãƒ‰ãƒœãƒƒã‚¯ã‚¹ + </combo_item> + <combo_item name="Commerce__Failure_to_deliver_product_or_service"> + 商å–引>製å“ã¾ãŸã¯ã‚µãƒ¼ãƒ“ã‚¹ã®æä¾›ãŒè¡Œã‚れãªã„ + </combo_item> + <combo_item name="Disclosure__Real_world_information"> + é–‹ç¤ºï¼žãƒªã‚¢ãƒ«ãƒ¯ãƒ¼ãƒ«ãƒ‰ã®æƒ…å ± + </combo_item> + <combo_item name="Disclosure__Remotely_monitoring chat"> + 開示>離れãŸã¨ã“ã‚ã‹ã‚‰ãƒãƒ£ãƒƒãƒˆã‚’モニターã—ã¦ã„ã‚‹ + </combo_item> + <combo_item name="Disclosure__Second_Life_information_chat_IMs"> + 開示>Second Lifeã®æƒ…å ±/ãƒãƒ£ãƒƒãƒˆ/IM + </combo_item> + <combo_item name="Disturbing_the_peace__Unfair_use_of_region_resources"> + å¹³ç©ã‚’ä¹±ã™è¡Œç‚ºï¼žåœ°åŸŸãƒªã‚½ãƒ¼ã‚¹ã®ä½¿ç”¨ãŒä¸å…¬å¹³ + </combo_item> + <combo_item name="Disturbing_the_peace__Excessive_scripted_objects"> + å¹³ç©ã‚’ä¹±ã™è¡Œç‚ºï¼žã‚¹ã‚¯ãƒªãƒ—ト・オブジェクトã®ä¹±ç”¨ + </combo_item> + <combo_item name="Disturbing_the_peace__Object_littering"> + å¹³ç©ã‚’ä¹±ã™è¡Œç‚ºï¼žã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æ¨ã¦ç½®ã + </combo_item> + <combo_item name="Disturbing_the_peace__Repetitive_spam"> + å¹³ç©ã‚’ä¹±ã™è¡Œç‚ºï¼žç¹°ã‚Šè¿”ã—スパム+ </combo_item> + <combo_item name="Disturbing_the_peace__Unwanted_advert_spam"> + å¹³ç©ã‚’ä¹±ã™è¡Œç‚ºï¼žä¸è¦ãªåºƒå‘Šã‚¹ãƒ‘ム+ </combo_item> + <combo_item name="Fraud__L$"> + è©æ¬ºï¼ž L$ + </combo_item> + <combo_item name="Fraud__Land"> + è©æ¬ºï¼žåœŸåœ° + </combo_item> + <combo_item name="Fraud__Pyramid_scheme_or_chain_letter"> + è©æ¬ºï¼žãƒžãƒ«ãƒå•†æ³•ã¾ãŸã¯ãƒã‚§ãƒ¼ãƒ³ãƒ»ãƒ¡ãƒ¼ãƒ« + </combo_item> + <combo_item name="Fraud__US$"> + è©æ¬ºï¼ž US$ + </combo_item> + <combo_item name="Harassment__Advert_farms___visual_spam"> + 嫌ãŒã‚‰ã›ï¼žåºƒå‘Šå§”託/視覚的ãªã‚¹ãƒ‘ム+ </combo_item> + <combo_item name="Harassment__Defaming_individuals_or_groups"> + 嫌ãŒã‚‰ã›ï¼žå€‹äººã¾ãŸã¯ã‚°ãƒ«ãƒ¼ãƒ—ã®ä¸å‚· + </combo_item> + <combo_item name="Harassment__Impeding_movement"> + 嫌ãŒã‚‰ã›ï¼žç§»å‹•ã®å¦¨å®³ + </combo_item> + <combo_item name="Harassment__Sexual_harassment"> + 嫌ãŒã‚‰ã›ï¼žæ€§çš„ãªå«ŒãŒã‚‰ã› + </combo_item> + <combo_item name="Harassment__Solicting_inciting_others_to_violate_ToS"> + 嫌ãŒã‚‰ã›ï¼žåˆ©ç”¨è¦ç´„(ToS)ã«é•åã™ã‚‹è¡Œç‚ºã‚’行ã†ã‚ˆã†ä»–者を勧誘/扇動 + </combo_item> + <combo_item name="Harassment__Verbal_abuse"> + 嫌ãŒã‚‰ã›ï¼žæš´è¨€ + </combo_item> + <combo_item name="Indecency__Broadly_offensive_content_or_conduct"> + ã‚ã„ã›ã¤ï¼žè‘—ã—ãä¸å¿«ã§ã‚ã‚‹ã¨è¦‹ãªã•れるコンテンツã¾ãŸã¯è¡Œç‚º + </combo_item> + <combo_item name="Indecency__Inappropriate_avatar_name"> + ã‚ã„ã›ã¤ï¼žä¸é©åˆ‡ãªã‚¢ãƒã‚¿ãƒ¼å + </combo_item> + <combo_item name="Indecency__Mature_content_in_PG_region"> + ã‚ã„ã›ã¤ï¼žPG地域ã§ã®ä¸é©åˆ‡ãªã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã¾ãŸã¯è¡Œç‚º + </combo_item> + <combo_item name="Indecency__Inappropriate_content_in_Mature_region"> + ã‚ã„ã›ã¤ï¼žMature地域ã§ã®ä¸é©åˆ‡ãªã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã¾ãŸã¯è¡Œç‚º + </combo_item> + <combo_item name="Intellectual_property_infringement_Content_Removal"> + 知的財産ã®ä¾µå®³ï¼žã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã®æ’¤åŽ» + </combo_item> + <combo_item name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit"> + 知的財産ã®ä¾µå®³ï¼žã‚³ãƒ”ーBotåŠã³æ¨©é™ã®æ‚ªç”¨ + </combo_item> + <combo_item name="Intolerance"> + ä¸å¯›å®¹ + </combo_item> + <combo_item name="Land__Abuse_of_sandbox_resources"> + 土地>サンドボックス・リソースã®ä¹±ç”¨ + </combo_item> + <combo_item name="Land__Encroachment__Objects_textures"> + åœŸåœ°ï¼žä¸æ³•侵入>オブジェクト/テクスãƒãƒ£ãƒ¼ + </combo_item> + <combo_item name="Land__Encroachment__Particles"> + åœŸåœ°ï¼žä¸æ³•侵入>パーティクル + </combo_item> + <combo_item name="Land__Encroachment__Trees_plants"> + åœŸåœ°ï¼žä¸æ³•侵入>樹木/æ¤ç‰© + </combo_item> + <combo_item name="Wagering_gambling"> + è³ã‘/ギャンブル + </combo_item> + <combo_item name="Other"> + ãã®ä»– + </combo_item> </combo_box> <text name="abuser_name_title"> 迷惑ユーザーã®åå‰ï¼š diff --git a/indra/newview/skins/default/xui/ja/floater_sell_land.xml b/indra/newview/skins/default/xui/ja/floater_sell_land.xml index 47fb2e2f9b9d9ced165972c499f6bbf63c980709..3860c599fbaa0cb8d98fec77da2697db799ad43e 100644 --- a/indra/newview/skins/default/xui/ja/floater_sell_land.xml +++ b/indra/newview/skins/default/xui/ja/floater_sell_land.xml @@ -1,20 +1,22 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="sell land" title="土地を販売" height="511" min_height="511" > +<floater name="sell land" title="土地を販売" height="496" min_height="496" > <text name="info_parcel_label"> 区画: </text> - <text name="info_parcel" left="62"> + <text name="info_parcel"> 区画å </text> <text name="info_size_label"> サイズ: </text> - <text name="info_size" left="62"> + <text name="info_size"> [AREA]平方メートル </text> - <text name="info_action"> - ã“ã®åŒºç”»ã‚’販売ã™ã‚‹ã«ã¯: + <text name="info_action" bottom_delta="-57"> + ã“ã®åŒºç”»ã‚’販売㙠+ã‚‹ã«ã¯: </text> + <icon bottom_delta="-86" name="step_price" /> <text name="price_label"> ä¾¡æ ¼ã‚’è¨å®šï¼š </text> @@ -59,6 +61,6 @@ <text name="nag_message_label"> 注æ„:返å“や交æ›ã¯ã§ãã¾ã›ã‚“ </text> - <button label="売り地ã®è¨å®š" name="sell_btn" bottom="-505"/> + <button label="販売を決定" name="sell_btn" bottom="-489"/> <button label="å–り消ã—" name="cancel_btn" /> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_snapshot.xml b/indra/newview/skins/default/xui/ja/floater_snapshot.xml index e389e7304f99f4d1e71f3875db59f952cd2716f4..98db0e358e55308c9220a2cb73064416febdf994 100644 --- a/indra/newview/skins/default/xui/ja/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/ja/floater_snapshot.xml @@ -4,15 +4,9 @@ スナップショットã®é€ã‚Šå…ˆ </text> <radio_group label="スナップショット・タイプ" name="snapshot_type_radio"> - <radio_item name="postcard"> - Eメールã§é€ä¿¡ - </radio_item> - <radio_item name="texture"> - æŒã¡ç‰©ã«ä¿å˜ï¼ˆL$[AMOUNT]) - </radio_item> - <radio_item name="local"> - ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã«ä¿å˜ - </radio_item> + <radio_item name="postcard" label="Eメールã§é€ä¿¡" /> + <radio_item name="texture" label="æŒã¡ç‰©ã«ä¿å˜ï¼ˆL$[AMOUNT])" /> + <radio_item name="local" label="ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã«ä¿å˜" /> </radio_group> <text name="file_size_label"> ファイル・サイズ: [SIZE] KB diff --git a/indra/newview/skins/default/xui/ja/floater_sound_preview.xml b/indra/newview/skins/default/xui/ja/floater_sound_preview.xml index cc890ce5be3d152fd73354fdd882a1642c2f0578..b24791438992c83aabd64c66ac84eea92fa7cf5d 100644 --- a/indra/newview/skins/default/xui/ja/floater_sound_preview.xml +++ b/indra/newview/skins/default/xui/ja/floater_sound_preview.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="Name/Description" title="sound.wav"> +<floater name="Sound Preview" title="sound.wav"> <text name="name_label"> åå‰ï¼š </text> @@ -12,17 +12,9 @@ ビットレート(kbps): </text> <radio_group name="bitrate"> - <radio_item name="32"> - 32 - </radio_item> - <radio_item name="64"> - 64 - </radio_item> - <radio_item name="96"> - 96 - </radio_item> - <radio_item name="128"> - 128 - </radio_item> + <radio_item name="32" label="32" /> + <radio_item name="64" label="64" /> + <radio_item name="96" label="96" /> + <radio_item name="128" label="128" /> </radio_group> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_statistics.xml b/indra/newview/skins/default/xui/ja/floater_statistics.xml new file mode 100644 index 0000000000000000000000000000000000000000..de83e97b80309e0d2392fe3f8e5913b70ee61b4b --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_statistics.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="stats floater" title="統計"/> diff --git a/indra/newview/skins/default/xui/ja/floater_telehub.xml b/indra/newview/skins/default/xui/ja/floater_telehub.xml index 9570d4079f8dd2cebcf75f285e6fc6c4cb107693..cd590abe3c8bab69c7cd6314cf24f3b932177f3b 100644 --- a/indra/newview/skins/default/xui/ja/floater_telehub.xml +++ b/indra/newview/skins/default/xui/ja/floater_telehub.xml @@ -7,10 +7,10 @@ テレãƒãƒ–未接続 </text> <text name="help_text_connected"> - [切æ–]をクリックã—ã¦å‰Šé™¤ã—ã¾ã™ã€‚ + 「切æ–ã€ã‚’クリックã—ã¦å‰Šé™¤ã—ã¾ã™ã€‚ </text> <text name="help_text_not_connected"> - ç‰©ä½“ã‚’é¸æŠžã—[テレãƒãƒ–ã®æŽ¥ç¶šã€ã‚’クリックã™ã‚‹ + ç‰©ä½“ã‚’é¸æŠžã—「テレãƒãƒ–ã®æŽ¥ç¶šã€ã‚’クリックã™ã‚‹ </text> <button label="テレãƒãƒ–ã®æŽ¥ç¶š" name="connect_btn" /> <button label="切æ–" name="disconnect_btn" /> @@ -20,7 +20,7 @@ <button label="出ç¾ä½ç½®ã‚’è¿½åŠ " name="add_spawn_point_btn" /> <button label="出ç¾åœ°ç‚¹ã‚’削除" name="remove_spawn_point_btn" /> <text name="spawn_point_help"> - ç‰©ä½“ã‚’é¸æŠžã—[è¿½åŠ ]をクリックã—ä½ç½®ã‚’指定。 + ç‰©ä½“ã‚’é¸æŠžã—ã€Œè¿½åŠ ã€ã‚’クリックã—ä½ç½®ã‚’指定。 物体を移動ã¾ãŸã¯å‰Šé™¤ã§ãる。 ä½ç½®ã¯ãƒ†ãƒ¬ãƒãƒ–・センターãŒåŸºæº–ã®ç›¸å¯¾ä½ç½®ã€‚ リスト内å“ç›®ã‚’é¸æŠžã—ワールド内ä½ç½®ã‚’示ã™ã€‚ diff --git a/indra/newview/skins/default/xui/ja/floater_tools.xml b/indra/newview/skins/default/xui/ja/floater_tools.xml index a3d01362a36d22887fbf729eb9d296712adf4f93..477ba2bdcb507579b23e04d5e0fdfdc63c98e2cc 100644 --- a/indra/newview/skins/default/xui/ja/floater_tools.xml +++ b/indra/newview/skins/default/xui/ja/floater_tools.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="toolbox floater" title=""> +<floater name="toolbox floater" title="" short_title="制作"> <button label="" label_selected="" name="button focus" tool_tip="フォーカス"/> <button label="" label_selected="" name="button move" tool_tip="å‹•ã‹ã™"/> <button label="" label_selected="" name="button edit" tool_tip="編集"/> @@ -7,26 +7,26 @@ <button label="" label_selected="" name="button land" tool_tip="土地"/> <check_box label="ズーム" name="radio zoom"/> <check_box label="軌跡(Ctrl)" name="radio orbit"/> - <check_box label="パン(Ctrl+Shift)" name="radio pan"/> + <check_box label="パン(Ctrl+Shift)" name="radio pan"/> <check_box label="移動" name="radio move"/> <check_box label="æŒã¡ä¸Šã’る(Ctrl)" name="radio lift"/> - <check_box label="スピン(Ctrl+Shift)" name="radio spin"/> + <check_box label="スピン(Ctrl+Shift)" name="radio spin"/> <check_box label="ä½ç½®" name="radio position"/> <check_box label="回転(Ctrl)" name="radio rotate"/> - <check_box label="引伸ã°ã™ï¼ˆCtrl+Shift)" name="radio stretch"/> + <check_box label="引伸ã°ã™ï¼ˆCtrl+Shift)" name="radio stretch"/> <check_box label="テクスãƒãƒ£ãƒ¼ã‚’é¸æŠž" name="radio select face"/> <check_box label="リンク部ä½ã‚’編集" name="checkbox edit linked parts"/> - <text name="text ruler mode" width="120"> + <text name="text ruler mode" width="88"> ルーラー: </text> - <combo_box left_delta="110" name="combobox grid mode" width="60"> + <combo_box left_delta="60" name="combobox grid mode" width="76"> <combo_box.item name="World" label="世界"/> <combo_box.item name="Local" label="ãƒãƒ¼ã‚«ãƒ«"/> <combo_box.item name="Reference" label="リファレンス"/> </combo_box> <check_box label="両å´ã‚’引伸ã°ã™" left="116" name="checkbox uniform"/> <check_box label="テクスãƒãƒ£ãƒ¼ã‚’引伸ã°ã™" name="checkbox stretch textures"/> - <check_box label="グリッド使用" left_delta="27" name="checkbox snap to grid"/> + <check_box label="グリッド使用" left_delta="27" name="checkbox snap to grid"/> <button label="オプション" label_selected="オプション" name="Options..."/> <text name="text status"> 移動ã™ã‚‹ã«ã¯ãƒ‰ãƒ©ãƒƒã‚°ã€ã‚³ãƒ”ーã™ã‚‹ã«ã¯Shiftã‚ーを押ã—ãªãŒã‚‰ãƒ‰ãƒ©ãƒƒã‚° @@ -68,10 +68,10 @@ 強度 </text> <text name="obj_count"> - é¸æŠžã—ãŸã‚ªãƒ–ジェクト: [COUNT] + é¸æŠžã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆ:[COUNT] </text> <text name="prim_count"> - プリム: [COUNT] + プリム:[COUNT] </text> <tab_container name="Object Info Tabs" tab_max_width="150" tab_min_width="30"> <panel label="一般" name="General"> @@ -87,14 +87,14 @@ <text name="Creator Name"> Thrax Linden </text> - <button label="プロフィール..." label_selected="プロフィール..." name="button creator profile"/> + <button label="æƒ…å ±..." label_selected="æƒ…å ±..." name="button creator profile"/> <text name="Owner:"> オーナー: </text> <text name="Owner Name"> Thrax Linden </text> - <button label="プロフィール..." label_selected="プロフィール..." name="button owner profile"/> + <button label="æƒ…å ±..." label_selected="æƒ…å ±..." name="button owner profile"/> <text name="Group:"> グループ: </text> @@ -108,7 +108,7 @@ <text name="perm_modify"> ã“ã®ã‚ªãƒ–ジェクトã¯ä¿®æ£ã§ãã¾ã™ã€‚ </text> - <check_box label="グループã§å…±åŒç®¡ç†" name="checkbox share with group" tool_tip="グループ・メンãƒãƒ¼ã«å¯¾ã—ã¦ç§»å‹•ã€ä¿®æ£ã€ã‚³ãƒ”ーã€å‰Šé™¤ã‚’許å¯"/> + <check_box label="グループã§å…±åŒç®¡ç†" name="checkbox share with group" tool_tip="è¨å®šã—ãŸã‚°ãƒ«ãƒ¼ãƒ—ã«å±žã™ã‚‹ã™ã¹ã¦ã®ãƒ¡ãƒ³ãƒãƒ¼ã¨ã“ã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æ¨©é™ã‚’共有ã—ã¾ã™ã€‚ 役割制é™ã‚’有効ã«ã™ã‚‹ã«ã¯ã€è²æ¸¡ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚"/> <string name="text deed continued"> è²æ¸¡... </string> @@ -124,15 +124,9 @@ ä¾¡æ ¼ï¼š L$ </text> <radio_group left="30" name="sale type"> - <radio_item name="Original"> - オリジナル - </radio_item> - <radio_item left="82" name="Copy"> - コピー - </radio_item> - <radio_item left="148" name="Contents"> - コンテンツ - </radio_item> + <radio_item name="Original" label="オリジナル" /> + <radio_item left="82" name="Copy" label="コピー" /> + <radio_item left="148" name="Contents" label="コンテンツ" /> </radio_group> <text name="Next owner can:"> 次ã®ã‚ªãƒ¼ãƒŠãƒ¼ãŒå®Ÿè¡Œã§ãã‚‹æ“作: @@ -186,7 +180,7 @@ 権é™ã‚’è¨å®šã™ã‚‹ã«ã¯ã€ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆå…¨ä½“ã‚’é¸æŠžã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ </string> <string name="Cost Default"> - ä¾¡æ ¼ï¼š L$ + ä¾¡æ ¼ï¼š L$ </string> <string name="Cost Total"> åˆè¨ˆä¾¡æ ¼ï¼š L$ @@ -201,7 +195,7 @@ æ··åˆè²©å£² </string> </panel> - <panel label="オブジェクト" name="Object"> + <panel label="形状" name="Object"> <text name="select_single"> プリムを1ã¤ã ã‘é¸æŠžã—ã¦ç·¨é›†ã—ã¦ãã ã•ã„ </text> @@ -337,24 +331,24 @@ オブジェクトã®ç‰¹å¾´ã‚’編集: </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" width="135" label_width="72"/> + <spinner label="é‡åŠ›" name="FlexGravity" width="135" label_width="72"/> + <spinner label="ドラッグ" name="FlexFriction" width="135" label_width="72"/> + <spinner label="風" name="FlexWind" width="135" label_width="72"/> + <spinner label="ç·Šå¼µ" name="FlexTension" width="135" label_width="72"/> + <spinner label="X軸方å‘ã®åŠ›" name="FlexForceX" width="135" label_width="72"/> + <spinner label="Y軸方å‘ã®åŠ›" name="FlexForceY" width="135" label_width="72"/> + <spinner label="Z軸方å‘ã®åŠ›" name="FlexForceZ" width="135" label_width="72"/> <check_box label="å…‰" name="Light Checkbox Ctrl" tool_tip="オブジェクトãŒç™ºå…‰"/> <text name="label color"> 色 </text> - <color_swatch label="" name="colorswatch" tool_tip="カラー・ピッカーをクリックã—ã¦é–‹ã"/> - <spinner label="è¼åº¦" name="Light Intensity"/> - <spinner label="åŠå¾„" name="Light Radius"/> - <spinner label="å¼±ã¾ã‚‹" name="Light Falloff"/> + <color_swatch label="" name="colorswatch" tool_tip="カラー・ピッカーをクリックã—ã¦é–‹ã" left_delta="74"/> + <spinner label="è¼åº¦" name="Light Intensity" width="135" label_width="72"/> + <spinner label="åŠå¾„" name="Light Radius" width="135" label_width="72"/> + <spinner label="å¼±ã¾ã‚‹" name="Light Falloff" width="135" label_width="72"/> </panel> - <panel label="テクスãƒãƒ£ãƒ¼" name="Texture"> + <panel label="æè³ª" name="Texture"> <texture_picker label="テクスãƒãƒ£ãƒ¼" name="texture control" tool_tip="写真をクリックã—ã¦é¸æŠž"/> <color_swatch label="色" name="colorswatch" tool_tip="カラー・ピッカーをクリックã—ã¦é–‹ã"/> <text name="color trans"> @@ -432,11 +426,11 @@ メディア・テクスãƒãƒ£ãƒ¼ã‚’æƒãˆã‚‹ (最åˆã«ãƒãƒ¼ãƒ‰ã™ã‚‹ã“ã¨ï¼‰ </text> - <button bottom="-361" label="æƒãˆã‚‹" label_selected="æƒãˆã‚‹" left="155" name="button align"/> + <button bottom="-365" label="æƒãˆã‚‹" label_selected="æƒãˆã‚‹" left="155" name="button align"/> </panel> - <panel label="コンテンツ" name="Contents"> - <button label="æ–°ã—ã„スクリプト" label_selected="æ–°ã—ã„スクリプト..." name="button new script"/> - <button label="権é™..." name="button permissions"/> + <panel label="ä¸èº«" name="Contents"> + <button label="æ–°ã—ã„スクリプト" label_selected="æ–°ã—ã„スクリプト" name="button new script" width="120"/> + <button label="権é™..." name="button permissions" left_delta="130" width="80"/> </panel> </tab_container> <panel name="land info panel"> @@ -451,7 +445,7 @@ </text> <button label="åœŸåœ°æƒ…å ±..." label_selected="åœŸåœ°æƒ…å ±..." name="button about land"/> <check_box label="オーナーを表示" name="checkbox show owners" tool_tip="所有権別ã«åŒºç”»ã‚’色分ã‘ã—ã¾ã™"/> - <button label="?" label_selected="?" name="button show owners help"/> + <button label="?" label_selected="?" name="button show owners help" left_delta="114"/> <text name="label_parcel_modify"> 区画ã®ç·¨é›† </text> @@ -470,7 +464,7 @@ é¸æŠžã—ãŸå´ã‚’クリックã—ã€ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦å¼•ã伸ã°ã™ </string> <string name="status_move"> - ドラッグã—移動、シフトキーを押ã—ãªãŒã‚‰ï¾„゙ラッグã—コピー + 移動:ドラッグã€ã‚³ãƒ”ー:Shiftを押ã—ãªãŒã‚‰ï¾„゙ラッグ </string> <string name="status_modifyland"> 土地をクリックã—ã€ãƒœã‚¿ãƒ³ã‚’押ã—ãŸã¾ã¾å…¥åŠ›ã—ã¦ä¿®æ£å¤‰æ›´ @@ -479,7 +473,7 @@ クリックã—ドラッグã—ã¦è¦–界を調整 </string> <string name="status_grab"> - ドラッグã§ç§»å‹•ã€Ctrlã§æŒã¡ä¸Šã’ã€Ctrl-Shiftã§å›žè»¢ + ç§»å‹•ï¼šï¾„ï¾žï¾—ï½¯ï½¸ï¾žã€æŒã¡ä¸Šã’:Ctrlã€å›žè»¢ï¼šCtrl+Shift </string> <string name="status_place"> インワールドã§ã‚¯ãƒªãƒƒã‚¯ã—ã¦ä½œæˆ diff --git a/indra/newview/skins/default/xui/ja/floater_tos.xml b/indra/newview/skins/default/xui/ja/floater_tos.xml index 31e3a240459a4ce52b2107cd6de9ce1c54aa68a0..c0d1af1d6ac589e7aad2ca20645f72171ac42a35 100644 --- a/indra/newview/skins/default/xui/ja/floater_tos.xml +++ b/indra/newview/skins/default/xui/ja/floater_tos.xml @@ -3,12 +3,8 @@ <button label="続行" label_selected="続行" name="Continue" /> <button label="å–り消ã—" label_selected="å–り消ã—" name="Cancel" /> <radio_group name="tos_agreement"> - <radio_item name="radio_disagree"> - 利用è¦ç´„ã«åŒæ„ã—ã¾ã›ã‚“ - </radio_item> - <radio_item name="radio_agree"> - 利用è¦ç´„ã«åŒæ„ã—ã¾ã™ - </radio_item> + <radio_item name="radio_disagree" label="利用è¦ç´„ã«åŒæ„ã—ã¾ã›ã‚“" /> + <radio_item name="radio_agree" label="利用è¦ç´„ã«åŒæ„ã—ã¾ã™" /> </radio_group> <text name="tos_title"> 利用è¦ç´„ diff --git a/indra/newview/skins/default/xui/ja/floater_world_map.xml b/indra/newview/skins/default/xui/ja/floater_world_map.xml index bc60bda694ecfaff39e187379622ea4a3dbd6137..c6385980efe14f906f6c4154a0e94a3ba1253898 100644 --- a/indra/newview/skins/default/xui/ja/floater_world_map.xml +++ b/indra/newview/skins/default/xui/ja/floater_world_map.xml @@ -1,88 +1,58 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="worldmap" title="世界地図"> <tab_container name="maptab"> - <panel label="オブジェクト" name="objects_mapview" /> - <panel label="地形" name="terrain_mapview" /> + <panel label="オブジェクト" name="objects_mapview"/> + <panel label="地形" name="terrain_mapview"/> </tab_container> - <text name="land_for_sale_label"> - 売出ã—ä¸ã®åœŸåœ° - </text> - <text name="auction_label"> - オークション - </text> <text name="you_label"> ã‚ãªãŸ </text> <text name="home_label"> ホーム</text> - <button label="ホームã¸" label_selected="ホームã¸" name="Go Home" - tool_tip="自分ã®ãƒ›ãƒ¼ãƒ ã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆ" /> - <text name="classifieds_label"> - クラシファイド広告 - </text> - <check_box label=" " name="class_chk" /> - <text name="person_label"> - 人 - </text> - <check_box label=" " name="people_chk" /> - <text name="infohub_label"> - インフォãƒãƒ– - </text> - <check_box label=" " name="infohub_chk" /> - <text name="telehub_label"> - テレãƒãƒ– - </text> - <check_box label=" " name="telehubchk" /> - <text name="popular_label"> - 人気 + <text name="auction_label"> + オークション </text> - <check_box label=" " name="popular_chk" /> - <text left_delta="15" name="land_for_sale_label2"> + <icon left="1123" name="square"/> + <text left_delta="20" name="land_for_sale_label"> 売出ã—ä¸ã®åœŸåœ° </text> - <check_box label=" " left_delta="85" name="land_for_sale_chk" /> + <button label="ホームã¸" label_selected="ホームã¸" name="Go Home" tool_tip="自分ã®ãƒ›ãƒ¼ãƒ ã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆ"/> + <check_box label="ä½äºº" name="people_chk"/> + <check_box label="インフォãƒãƒ–" name="infohub_chk"/> + <check_box label="テレãƒãƒ–" name="telehubchk"/> + <check_box label="売り地" name="land_for_sale_chk"/> <text name="events_label"> - イベント + イベント: </text> - <check_box label=" " name="event_chk" /> - - <check_box label="" name="event_mature_chk" /> - <combo_box label="オンラインã®ãƒ•レンド" name="friend combo" - tool_tip="Friend to Show on Map"> + <check_box label="PG" name="event_chk"/> + <check_box label="Mature" name="event_mature_chk"/> + <check_box label="Adult" name="event_adult_chk"/> + <combo_box label="オンラインã®ãƒ•レンド" name="friend combo" tool_tip="地図ã«è¡¨ç¤ºã•れãŸãƒ•レンド"> <combo_box.item name="none_selected" label="オンラインã®ãƒ•レンド" /> </combo_box> - <combo_box label="ランドマーク" name="landmark combo" - tool_tip="Landmark to Show on Map"> + <combo_box label="ランドマーク" name="landmark combo" tool_tip="地図ã«è¡¨ç¤ºã•れãŸãƒ©ãƒ³ãƒ‰ãƒžãƒ¼ã‚¯"> <combo_box.item name="none_selected" label="ランドマーク" /> </combo_box> - <line_editor label="地域åã§æ¤œç´¢" name="location" - tool_tip="地域åを入力ã—ã¦ãã ã•ã„。" /> - <button label="検索" name="DoSearch" tool_tip="地域検索" /> + <line_editor label="地域åã§æ¤œç´¢" name="location" tool_tip="地域åを入力ã—ã¦ãã ã•ã„。"/> + <button label="検索" name="DoSearch" tool_tip="地域検索"/> <text name="search_label"> æ¤œç´¢çµæžœï¼š </text> <scroll_list name="search_results"> - <column label="" name="icon" /> - <column label="" name="sim_name" /> + <column label="" name="icon"/> + <column label="" name="sim_name"/> </scroll_list> <text name="location_label"> - ãƒã‚±ãƒ¼ã‚·ãƒ§ãƒ³ï¼š - </text> - <spinner name="spin x" tool_tip="地図上ã«è¡¨ç¤ºã•れるä½ç½®ã®X座標" /> - <spinner name="spin y" tool_tip="地図上ã«è¡¨ç¤ºã•れるä½ç½®ã®Y座標" /> - <spinner name="spin z" tool_tip="地図上ã«è¡¨ç¤ºã•れるä½ç½®ã®Z座標" /> - <button label="テレãƒãƒ¼ãƒˆ" label_selected="テレãƒãƒ¼ãƒˆ" name="Teleport" - tool_tip="é¸æŠžã•れãŸãƒã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆ" /> - <button label="目的地を表示" label_selected="目的地を表示" - name="Show Destination" - tool_tip="é¸æŠžã—ãŸãƒã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã‚’地図ã®ä¸å¿ƒã«ã™ã‚‹" /> - <button label="クリア" label_selected="クリア" name="Clear" - tool_tip="トラッã‚ãƒ³ã‚°ã‚’åœæ¢" /> - <button label="ç¾åœ¨åœ°ã‚’表示" label_selected="ç¾åœ¨åœ°ã‚’表示" - name="Show My Location" - tool_tip="ã‚ãªãŸã®ã‚¢ãƒã‚¿ãƒ¼ã®ãƒã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã‚’地図ã®ä¸å¿ƒã«ã™ã‚‹" /> - <button label="SLURLをクリップボードã«ã‚³ãƒ”ー" name="copy_slurl" - tool_tip="ç¾åœ¨åœ°ã‚’SLURLã¨ã—ã¦ã‚³ãƒ”ーã—ã€ã‚¦ã‚§ãƒ–ã§ä½¿ç”¨" /> - <slider label="ズーム" name="zoom slider" /> + ä½ç½®ï¼š + </text> + <spinner name="spin x" tool_tip="地図上ã«è¡¨ç¤ºã•れるä½ç½®ã®X座標"/> + <spinner name="spin y" tool_tip="地図上ã«è¡¨ç¤ºã•れるä½ç½®ã®Y座標"/> + <spinner name="spin z" tool_tip="地図上ã«è¡¨ç¤ºã•れるä½ç½®ã®Z座標"/> + <button label="テレãƒãƒ¼ãƒˆ" label_selected="テレãƒãƒ¼ãƒˆ" name="Teleport" tool_tip="é¸æŠžã•れãŸãƒã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆ"/> + <button label="目的地を表示" label_selected="目的地を表示" name="Show Destination" tool_tip="é¸æŠžã—ãŸãƒã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã‚’地図ã®ä¸å¿ƒã«ã™ã‚‹"/> + <button label="クリア" label_selected="クリア" name="Clear" tool_tip="トラッã‚ãƒ³ã‚°ã‚’åœæ¢"/> + <button label="ç¾åœ¨åœ°ã‚’表示" label_selected="ç¾åœ¨åœ°ã‚’表示" name="Show My Location" tool_tip="ã‚ãªãŸã®ã‚¢ãƒã‚¿ãƒ¼ã®ãƒã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã‚’地図ã®ä¸å¿ƒã«ã™ã‚‹"/> + <button label="SLURLをクリップボードã«ã‚³ãƒ”ー" name="copy_slurl" tool_tip="ç¾åœ¨åœ°ã‚’SLURLã¨ã—ã¦ã‚³ãƒ”ーã—ã€ã‚¦ã‚§ãƒ–ã§ä½¿ç”¨"/> + <slider label="ズーム" name="zoom slider"/> </floater> diff --git a/indra/newview/skins/default/xui/ja/menu_login.xml b/indra/newview/skins/default/xui/ja/menu_login.xml index 1ebc9d1c88cbdbcc1709ccd2a89b547559c2e1d3..906822e54b0f61391452537ecd23c5ee381903d6 100644 --- a/indra/newview/skins/default/xui/ja/menu_login.xml +++ b/indra/newview/skins/default/xui/ja/menu_login.xml @@ -7,7 +7,7 @@ <menu_item_call label="環境è¨å®š..." name="Preferences..." /> </menu> <menu label="ヘルプ" name="Help"> - <menu_item_call label="セカンドライフヘルプ" name="Second Life Help" /> + <menu_item_call label="Second Lifeヘルプ" name="Second Life Help" /> <menu_item_call label="Second Lifeã«ã¤ã„ã¦..." name="About Second Life..." /> </menu> </menu_bar> diff --git a/indra/newview/skins/default/xui/ja/menu_mini_map.xml b/indra/newview/skins/default/xui/ja/menu_mini_map.xml new file mode 100644 index 0000000000000000000000000000000000000000..c8828a50beffa58d6af5ee1104fd318854936293 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_mini_map.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="popup"> + <menu_item_call label="ズーム(近)" name="Zoom Close"/> + <menu_item_call label="ズーム(ä¸ï¼‰" name="Zoom Medium"/> + <menu_item_call label="ズーム(é )" name="Zoom Far"/> + <menu_item_call label="追跡をやã‚ã‚‹" name="Stop Tracking"/> + <menu_item_call label="プãƒãƒ•ィール..." name="Profile"/> +</menu> diff --git a/indra/newview/skins/default/xui/ja/menu_viewer.xml b/indra/newview/skins/default/xui/ja/menu_viewer.xml index 9d18436f1eb9fb16a5c876a020a781ed7c061395..c994995ed26bb1afdc6d116b265f5ec6b3dc3ddc 100644 --- a/indra/newview/skins/default/xui/ja/menu_viewer.xml +++ b/indra/newview/skins/default/xui/ja/menu_viewer.xml @@ -4,7 +4,7 @@ <tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/> <menu label="アップãƒãƒ¼ãƒ‰" name="upload"> <menu_item_call label="ç”»åƒ ï¼ˆL$[COST])..." name="Upload Image"/> - <menu_item_call label="アニメーション (L$[COST])..." name="Upload Sound"/> + <menu_item_call label="サウンド (L$[COST])..." name="Upload Sound"/> <menu_item_call label="アニメーション (L$[COST])..." name="Upload Animation"/> <menu_item_call label="一括 (ファイルã«ã¤ãL$[COST])..." name="Bulk Upload"/> <menu_item_separator label="-----------" name="separator"/> @@ -83,6 +83,7 @@ <menu_item_separator label="-----------" name="separator3"/> <menu_item_check label="地域ã®çµ±è¨ˆæƒ…å ±" name="Statistics Bar"/> <menu_item_check label="土地ã®å¢ƒç•Œç·š" name="Property Lines"/> + <menu_item_check label="ç«‹å…¥ç¦æ¢ãƒ©ã‚¤ãƒ³" name="Banlines"/> <menu_item_check label="土地オーナー" name="Land Owners"/> <menu_item_separator label="-----------" name="separator4"/> <menu label="ヒントã®ãƒãƒƒãƒ—アップ" name="Hover Tips"> @@ -170,7 +171,6 @@ <menu_item_call label="é¸æŠžç¯„å›²ã«ã‚ºãƒ¼ãƒ イン" name="Zoom to Selection"/> <menu_item_call label="オブジェクトを購入" name="Menu Object Take"/> <menu_item_call label="コピーをå–ã‚‹" name="Take Copy"/> - <menu_item_call label="オブジェクトをæŒã¡ç‰©ã«æˆ»ã—ã¦ä¿å˜" name="Save Object Back to My Inventory"/> <menu_item_call label="ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆãƒ»ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã«æˆ»ã—ã¦ä¿å˜" name="Save Object Back to Object Contents"/> <menu_item_separator label="-----------" name="separator6"/> <menu_item_call label="スクリプトè¦å‘Šï¼ã‚¨ãƒ©ãƒ¼ãƒ»ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’表示" name="Show Script Warning/Error Window"/> @@ -188,7 +188,9 @@ <menu_item_separator label="-----------" name="separator"/> <menu_item_call label="Lindenå…¬å¼ãƒ–ãƒã‚°..." name="Official Linden Blog..."/> <menu_item_separator label="-----------" name="separator2"/> - <menu_item_call label="スクリプト・ãƒãƒ¼ã‚¿ãƒ«..." name="Scripting Portal..."/> + <menu_item_call label="スクリプト・ãƒãƒ¼ã‚¿ãƒ«..." name="Scripting Portal..."> + <on_click name="ScriptingPortal_url" userdata="WebLaunchLSLWiki,http://wiki.secondlife.com/wiki/LSL_Portal/ja" /> + </menu_item_call> <menu_item_separator label="-----------" name="separator3"/> <menu_item_call label="嫌ãŒã‚‰ã›ã®å ±å‘Š..." name="Report Abuse..."/> <menu_item_call label="è¡çªã®è¨˜éŒ²..." name="Bumps, Pushes &amp; Hits..."/> @@ -196,9 +198,13 @@ <menu_item_separator label="-----------" name="separator7"/> <menu label="ãƒã‚°ã®å ±å‘Š" name="Bug Reporting"> <menu_item_call label="パブリックå•題トラッカー..." name="Public Issue Tracker..."/> - <menu_item_call label="パブリックå•題トラッカー ヘルプ..." name="Publc Issue Tracker Help..."/> + <menu_item_call label="パブリックå•題トラッカー ヘルプ..." name="Publc Issue Tracker Help..."> + <on_click name="PublicIssueTrackerHelp_url" userdata="WebLaunchPublicIssueHelp,http://wiki.secondlife.com/wiki/Issue_tracker/ja" /> + </menu_item_call> <menu_item_separator label="-----------" name="separator7"/> - <menu_item_call label="ãƒã‚°ã®å ±å‘Š 101..." name="Bug Reporing 101..."/> + <menu_item_call label="ãƒã‚°ã®å ±å‘Š 101..." name="Bug Reporing 101..."> + <on_click name="BugReporting101_url" userdata="WebLaunchBugReport101,http://wiki.secondlife.com/wiki/Bug_Reporting_101"/> + </menu_item_call> <menu_item_call label="ã‚»ã‚ュリティå•題..." name="Security Issues..."> <on_click name="SecurityIssues_url" userdata="WebLaunchSecurityIssues,http://wiki.secondlife.com/wiki/Security_issues/ja"/> </menu_item_call> diff --git a/indra/newview/skins/default/xui/ja/notifications.xml b/indra/newview/skins/default/xui/ja/notifications.xml index 4a3a19508007bb54fa0bbb733ea3b35dd2605bdd..c20a4f50b486b6f28f522cd3ad9311cf0eb9e564 100644 --- a/indra/newview/skins/default/xui/ja/notifications.xml +++ b/indra/newview/skins/default/xui/ja/notifications.xml @@ -1,5947 +1,3300 @@ -<?xml version="1.0" ?><notifications> - - <global name="skipnexttime"> - - 今後ã¯è¡¨ç¤ºã—ãªã„ - </global> - - <global name="alwayschoose"> - - 常ã«ã“ã®ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã‚’é¸æŠž - </global> - - <template name="okbutton"> - <form> - <button - name="OK" - text="$yestext"/> - </form> - </template> - - <template name="okignore"> - <form> - <button - name="OK" - text="$yestext"/> - <ignore text="$ignoretext"/> - </form> - </template> - - <template name="okcancelbuttons"> - <form> - <button - name="OK" - text="$yestext"/> - <button - name="Cancel" - text="$notext"/> - </form> - </template> - - <template name="okcancelignore"> - <form> - <button - name="OK" - text="$yestext"/> - <button - name="Cancel" - text="$notext"/> - <ignore text="$ignoretext"/> - </form> - </template> - - <template name="okhelpbuttons"> - <form> - <button - name="OK" - text="$yestext"/> - <button - name="Help" - text="$helptext"/> - </form> - </template> - - <template name="yesnocancelbuttons"> - <form> - <button - name="Yes" - text="$yestext"/> - <button - name="No" - text="$notext"/> - <button - name="Cancel" - text="$canceltext"/> - </form> - </template> - - <notification - functor="GenericAcknowledge" - - name="MissingAlert" - > -「[_NAME]ã€ãŒnotifications.xmlã«å«ã¾ã‚Œã¦ã„ã¾ã›ã‚“ï¼ - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="FloaterNotFound" - > -フãƒãƒ¼ã‚¿ãƒ»ã‚¨ãƒ©ãƒ¼ï¼šä¸‹è¨˜ã®ã‚³ãƒ³ãƒˆãƒãƒ¼ãƒ«ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸï¼š -[CONTROLS] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="TutorialNotFound" - > -ç¾åœ¨åˆ©ç”¨å¯èƒ½ãªãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ã¯ã‚りã¾ã›ã‚“。 - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="GenericAlert" - > -[MESSAGE] - </notification> - - <notification - - name="GenericAlertYesCancel" - > -[MESSAGE] - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="ã¯ã„"/> - </notification> - - <notification - - name="WearableSave" - > -ç¾åœ¨ã®è¡£æœ/ボディーパーツã®å¤‰æ›´ã‚’ä¿å˜ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - canceltext="ã‚ャンセル" - name="yesnocancelbuttons" - notext="ä¿å˜ã—ãªã„" - yestext="ä¿å˜"/> - </notification> - - <notification - - name="CompileQueueSaveText" - > -次ã®ç†ç”±ã§ã€ã‚¹ã‚¯ãƒªãƒ—ト用テã‚ストã®ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰æ™‚ã«å•題ãŒèµ·ã“りã¾ã—ãŸã€‚ [REASON] 後ã§ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="CompileQueueSaveBytecode" - > -次ã®ç†ç”±ã§ã€ã‚³ãƒ³ãƒ‘イルã—ãŸã‚¹ã‚¯ãƒªãƒ—トã®ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰æ™‚ã«å•題ãŒèµ·ã“りã¾ã—ãŸã€‚ [REASON]後ã§ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="WriteAnimationFail" - > -ã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ãƒ‡ãƒ¼ã‚¿ã®æ›¸ãè¾¼ã¿ã«å•題ãŒã‚りã¾ã™ã€‚後ã§ã‚‚ã†ä¸€åº¦ãŠè©¦ã—ãã ã•ã„。 - </notification> - - <notification - - name="UploadAuctionSnapshotFail" - > -次ã®ç†ç”±ã§ã€ã‚ªãƒ¼ã‚¯ã‚·ãƒ§ãƒ³ã®ã‚¹ãƒŠãƒƒãƒ—ショットã®ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰æ™‚ã«å•題ãŒèµ·ã“りã¾ã—ãŸã€‚ [REASON] - </notification> - - <notification - - name="UnableToViewContentsMoreThanOne" - > -一度ã«è¤‡æ•°ã®ã‚¢ã‚¤ãƒ†ãƒ ã®ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã¯è¡¨ç¤ºã§ãã¾ã›ã‚“。 -é¸æŠžã™ã‚‹ã‚¢ã‚¤ãƒ†ãƒ ã‚’1ã¤ã ã‘ã«ã—ã¦ã€ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="SaveClothingBodyChanges" - > -è¡£æœï¼èº«ä½“部ä½ã«å¯¾ã™ã‚‹å¤‰æ›´ã‚’ã™ã¹ã¦ä¿å˜ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - canceltext="å–り消ã—" - name="yesnocancelbuttons" - notext="ä¿å˜ã—ãªã„" - yestext="ã™ã¹ã¦ä¿å˜"/> - </notification> - - <notification - - name="GrantModifyRights" - > -ä»–ã®ä½äººã«å¤‰æ›´æ¨©é™ã‚’与ãˆã‚‹ã¨ã€ãã®äººã¯ã‚ãªãŸãŒæ‰€æœ‰ã—ã¦ã„ã‚‹ -ã™ã¹ã¦ã®ã‚ªãƒ–ジェクトを変更ã€å‰Šé™¤ã€ã¾ãŸã¯å–å¾—ã™ã‚‹ã“ã¨ãŒã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚ã“ã®è¨±å¯ã‚’与ãˆã‚‹ã¨ãã¯ç´°å¿ƒã®æ³¨æ„を払ã£ã¦ãã ã•ã„。 -[FIRST_NAME] [LAST_NAME]ã«å¯¾ã—ã¦å¤‰æ›´æ¨©é™ã‚’与ãˆã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="ã„ã„ãˆ" - yestext="ã¯ã„"/> - </notification> - - <notification - - name="GrantModifyRightsMultiple" - > -変更権é™ã‚’与ãˆã‚‹ã¨ã€ãã®äººã¯ã‚ãªãŸãŒä½œæˆã—ãŸå…¨ã¦ã®ã‚ªãƒ–ジェクトを -変更ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ã“ã®è¨±å¯ã‚’与ãˆã‚‹ã¨ãã«ã¯ç´°å¿ƒã®æ³¨æ„ã‚’ -払ã£ã¦ãã ã•ã„。 -é¸æŠžã—ãŸä½äººã«å¤‰æ›´æ¨©é™ã‚’与ãˆã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="ã„ã„ãˆ" - yestext="ã¯ã„"/> - </notification> - - <notification - - name="RevokeModifyRights" - > -[FIRST_NAME] [LAST_NAME]ã«å¯¾ã—ã¦å¤‰æ›´æ¨©é™ã‚’å–り消ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="ã„ã„ãˆ" - yestext="ã¯ã„"/> - </notification> - - <notification - - name="RevokeModifyRightsMultiple" - > -é¸æŠžã—ãŸä½äººã‹ã‚‰å¤‰æ›´æ¨©é™ã‚’å–り下ã’ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="ã„ã„ãˆ" - yestext="ã¯ã„"/> - </notification> - - <notification - - name="UnableToCreateGroup" - > -グループを作æˆã§ãã¾ã›ã‚“。 -[MESSAGE] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="PanelGroupApply" - > -[NEEDS_APPLY_MESSAGE] -[WANT_APPLY_MESSAGE] - <usetemplate - canceltext="å–り消ã—" - name="yesnocancelbuttons" - notext="変更を無視" - yestext="変更をé©ç”¨"/> - </notification> - - <notification - - name="MustSpecifyGroupNoticeSubject" - > -グループ通知ã®é€ä¿¡ã«ã¯ã€ä»¶åã®è¨˜å…¥ãŒå¿…è¦ã§ã™ã€‚ - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="AddGroupOwnerWarning" - > -ã‚ãªãŸã¯ [ROLE_NAME]ã®å½¹å‰²ã«ãƒ¡ãƒ³ãƒãƒ¼ã‚’åŠ ãˆã‚ˆã†ã¨ã—ã¦ã„ã¾ã™ã€‚ -任命ã•れãŸãƒ¡ãƒ³ãƒãƒ¼ãŒè‡ªã‚‰é€€ä»»ã—ãªã„ -é™ã‚Šã€å½¼ã‚‰ã‚’役柄ã‹ã‚‰å‰Šé™¤ã§ãã¾ã›ã‚“。 -æ“作を続行ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - ignoretext="オーナーã®å½¹å‰²ã«ã‚°ãƒ«ãƒ¼ãƒ—・メンãƒãƒ¼ã‚’åŠ ãˆã‚‹ã¨ã" - name="okcancelignore" - notext="ã„ã„ãˆ" - yestext="ã¯ã„"/> - </notification> - - <notification - - name="AssignDangerousActionWarning" - > -ã‚ãªãŸã¯[ROLE_NAME]ã« [ACTION_NAME]ã®èƒ½åŠ›ã‚’ -åŠ ãˆã‚ˆã†ã¨ã—ã¦ã„ã¾ã™ã€‚ - - *è¦å‘Š* - ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ - 自分ã¨ä»–ã®ãƒ¡ãƒ³ãƒãƒ¼ã«ç¾åœ¨ã‚ˆã‚Šå¼·åŠ›ãªæ¨©é™ã‚’割り当ã¦ã€ -自分をオーナーã¨ã»ã¼åŒæ§˜ã®ç«‹å ´ã« -任命ã™ã‚‹ã“ã¨ã‚‚ã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚ ã“ã®è¡Œç‚ºã®æ„味をよãç†è§£ã—ã¦ã‹ã‚‰ -実行ã—ã¦ãã ã•ã„。 - -ã“ã®èƒ½åŠ›ã‚’[ROLE_NAME]ã«åŠ ãˆã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="ã„ã„ãˆ" - yestext="ã¯ã„"/> - </notification> - - <notification - - name="AssignDangerousAbilityWarning" - > -ã‚ãªãŸã¯[ROLE_NAME]ã« [ACTION_NAME]ã®èƒ½åŠ›ã‚’ -åŠ ãˆã‚ˆã†ã¨ã—ã¦ã„ã¾ã™ã€‚ - - *è¦å‘Š* - ã“ã®èƒ½åŠ›ã‚’ã‚‚ã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€è‡ªåˆ†ã¨ä»–ã®ãƒ¡ãƒ³ãƒãƒ¼ã«ã™ã¹ã¦ã® -能力を割り当ã¦ã€è‡ªåˆ†ã‚’オーナーã¨ã»ã¼åŒæ§˜ã®ç«‹å ´ã« -任命ã§ãã¾ã™ã€‚ - -ã“ã®èƒ½åŠ›ã‚’[ROLE_NAME]ã«åŠ ãˆã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="ã„ã„ãˆ" - yestext="ã¯ã„"/> - </notification> - - <notification - - name="ClickPublishHelpLand" - > -「検索ã§å…¬é–‹ã€ã‚’é¸æŠž -ã“ã®ãƒœãƒƒã‚¯ã‚¹ã«ãƒã‚§ãƒƒã‚¯ã™ã‚‹ã¨è¡¨ç¤ºï¼š -- æ¤œç´¢çµæžœã«ãŠã‘ã‚‹ã“ã®åŒºç”» -- ã“ã®åŒºç”»ã®ãƒ‘ブリック・オブジェクト -- ウェブ検索ã«ãŠã‘ã‚‹ã“ã®åŒºç”» - </notification> - - <notification - - name="ClickPublishHelpLandDisabled" - > -ã“ã®åŒºç”»ã¯æ¤œç´¢ã‚’ç¦ãšã‚‹åœ°åŸŸã«ã‚ã‚‹ãŸã‚〠-ã“ã®åŒºç”»ã‚’検索ã«è¡¨ç¤ºã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 - </notification> - - <notification - - name="ClickPublishHelpAvatar" - > -「検索ã«è¡¨ç¤ºã€ã‚’é¸æŠžã™ã‚‹ã¨è¡¨ç¤ºï¼š -- æ¤œç´¢çµæžœã«ãŠã‘る自分ã®ãƒ—ãƒãƒ•ィール -- パブリック・グループ・ページã«ãŠã‘る自分ã®ãƒ—ãƒãƒ•ィールã¸ã®ãƒªãƒ³ã‚¯ - </notification> - - <notification - - name="ClickPartnerHelpAvatar" - > -[SECOND_LIFE]ã®ã‚¦ã‚§ãƒ–・サイトã‹ã‚‰ã€ä»–ã®ä½äººã¸ã®ãƒ—ãƒãƒãƒ¼ã‚ºã€ãƒ‘ートナー解消ãŒã§ãã¾ã™ã€‚ - -ウェブ・サイトã«è¡Œã£ã¦ パートナーã«é–¢ã™ã‚‹æƒ…å ±ã‚’å–å¾—ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="ページã«ç§»å‹•"/> - </notification> - - <notification - - name="ClickWebProfileHelpAvatar" - > -ã“ã®ä½äººãŒã‚¦ã‚§ãƒ–・プãƒãƒ•ィールURLã‚’è¨å®šã—ã¦ã„ã‚‹å ´åˆã¯ã€ä»¥ä¸‹ã®ã“ã¨ãŒå¯èƒ½ã§ã™ã€‚ - * 「ãƒãƒ¼ãƒ‰ã€ã‚’クリックã—ã€ã“ã®ã‚¦ã‚§ãƒ–・タブ内ã§ãƒšãƒ¼ã‚¸ã‚’表示 - * 「ãƒãƒ¼ãƒ‰ã€ï¼žã€Œå¤–部ブラウザ〠をクリックã—ã€ãƒ‡ã‚£ãƒ•ォルトã®ã‚¦ã‚§ãƒ–・ブラウザã§ãƒšãƒ¼ã‚¸ã‚’表示 - * 「ãƒãƒ¼ãƒ‰ã€ï¼žã€Œãƒ›ãƒ¼ãƒ URL〠をクリックã—ã€ä»–ã®ãƒšãƒ¼ã‚¸ã‹ã‚‰ã“ã®ä½äººã®ã‚¦ã‚§ãƒ–・プãƒãƒ•ã‚£ãƒ¼ãƒ«ã«æˆ»ã‚‹ - -自分ã®ãƒ—ãƒãƒ•ィールã«ä»»æ„ã®URLを入力ã—OKをクリックã—ã¦ã€ã‚¦ã‚§ãƒ–・プãƒãƒ•ィールã¨ã—ã¦è¨å®šã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ -ãれを見ãŸä»–ã®ä½äººãŒãã®ã‚µã‚¤ãƒˆã‚’訪れるã“ã¨ãŒã§ãã¾ã™ã€‚ - </notification> - - <notification - - name="JoinGroupCanAfford" - > -ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«å‚åŠ ã™ã‚‹ã«ã¯ã€L$[COST]ã‹ã‹ã‚Šã¾ã™ã€‚ -続行ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="å‚åŠ "/> - </notification> - - <notification - - name="JoinGroupCannotAfford" - > -ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«åŠ å…¥ã™ã‚‹ã«ã¯ã€L$[COST]å¿…è¦ã§ã™ã€‚ -L$ãŒä¸è¶³ã—ã¦ã„ã‚‹ã®ã§ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«å‚åŠ ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。 - </notification> - - <notification - - name="LandBuyPass" - > -L$[COST]ã§ [TIME] 時間ã«ã‚ãŸã£ã¦ã€ã“ã®åœŸåœ°[PARCEL_NAME]ã«å…¥ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚パスを購入ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="SalePriceRestriction" - > -ä¸ç‰¹å®šã®äººã«å£²å´ã™ã‚‹å ´åˆã«ã¯ã€å£²å´ä¾¡æ ¼ã¯L$0以上ã«è¨å®šã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ -売å´ä¾¡æ ¼ã‚’L$0ã«è¨å®šã™ã‚‹å ´åˆã¯ã€å£²å´ã™ã‚‹å€‹äººã‚’é¸æŠžã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="ConfirmLandSaleChange" - - > -é¸æŠžã•れãŸ[LAND_SIZE]平方メートルã®åœŸåœ°ã¯ã€å£²ã‚Šå‡ºã—ä¸ã«è¨å®šã•れã¦ã„ã¾ã™ã€‚ -売å´ä¾¡æ ¼L$[SALE_PRICE]ã§ã€[NAME]ã«å£²å´ã‚’èªå¯ã—ã¾ã™ã€‚ - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmLandSaleToAnyoneChange" - > -注:「誰ã«ã§ã‚‚売å´ã™ã‚‹ã€ã‚’クリックã™ã‚‹ã¨ã€ã‚ãªãŸã®åœŸåœ°ã¯ã€Second Lifeã®ã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ã®ã©ã“ã‹ã‚‰ã§ã‚‚(ã“ã®åœ°åŸŸã«ãªã„コミュニティをå«ã‚€ï¼‰è³¼å…¥ã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚ - -é¸æŠžã•れãŸ[LAND_SIZE]平方メートルã®åœŸåœ°ã¯ã€å£²ã‚Šå‡ºã—ä¸ã«è¨å®šã•れã¦ã„ã¾ã™ã€‚ -売å´ä¾¡æ ¼L$[SALE_PRICE]ã§ã€[NAME]ã«å£²å´ã‚’èªå¯ã—ã¾ã™ã€‚ - <usetemplate - name="okcancelbuttons" - notext="ã‚ャンセル" - yestext="OK"/> - </notification> - - <notification - - name="ReturnObjectsDeededToGroup" - > -ã“ã®åŒºç”»ã®ã‚°ãƒ«ãƒ¼ãƒ—[NAME]共有ã®ã™ã¹ã¦ã®ã‚ªãƒ–ジェクトをã€ä»¥å‰ã®ã‚ªãƒ¼ãƒŠãƒ¼ã®æŒã¡ç‰©ã«æˆ»ãã†ã¨ã—ã¦ã„ã¾ã™ã€‚ -æ“作を続行ã—ã¾ã™ã‹ï¼Ÿ - -*è¦å‘Š* ã“れã«ã‚ˆã‚Šã€ -ãã®ã‚°ãƒ«ãƒ¼ãƒ—ã«è²æ¸¡ã•れ㟠-è²æ¸¡ä¸å¯èƒ½ãªã‚ªãƒ–ジェクトã¯å‰Šé™¤ã•れã¾ã™ï¼ -オブジェクト: [N] - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="ReturnObjectsOwnedByUser" - > -ã“ã®åŒºç”»ã§ã€ -ä½äºº[NAME]ãŒæ‰€æœ‰ã™ã‚‹å…¨ã¦ã®ã‚ªãƒ–ジェクトを -å½¼ã‚‰ã®æŒã¡ç‰©ã«æœ¬å½“ã«è¿”å´ã—ã¦ã‚‚よã„ã§ã™ã‹ï¼Ÿ - -オブジェクト: [N] - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="ReturnObjectsOwnedBySelf" - > -ã“ã®åœŸåœ°åŒºç”»å†…ã®ã‚ªãƒ–ジェクトã®ã†ã¡ã€ -ã‚ãªãŸãŒæ‰€æœ‰ã™ã‚‹ã™ã¹ã¦ã®ã‚ªãƒ–ジェクトを -ã‚ãªãŸã®æŒã¡ç‰©ã«æˆ»ãã†ã¨ã—ã¦ã„ã¾ã™ã€‚æ“作を続行ã—ã¾ã™ã‹ï¼Ÿ - -オブジェクト: [N] - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="ReturnObjectsNotOwnedBySelf" - > -ã“ã®åœŸåœ°åŒºç”»å†…ã®ã‚ªãƒ–ジェクトã®ã†ã¡ã€ -ã‚ãªãŸãŒæ‰€æœ‰ã—ã¦ã„ãªã„ã™ã¹ã¦ã®ã‚ªãƒ–ジェクトをãれãžã‚Œã®ã‚ªãƒ¼ãƒŠãƒ¼ã®æŒã¡ç‰©ã«æˆ»ãã†ã¨ã—ã¦ã„ã¾ã™ã€‚ -æ“作を続行ã—ã¾ã™ã‹ï¼Ÿã‚°ãƒ«ãƒ¼ãƒ—ã«è²æ¸¡ã•れãŸè²æ¸¡å¯èƒ½ã‚ªãƒ–ジェクトã¯ã€ä»¥å‰ã®ã‚ªãƒ¼ãƒŠãƒ¼ã«è¿”å´ã•れã¾ã™ã€‚ - -*è¦å‘Š* ã“れã«ã‚ˆã‚Šã€ -ãã®ã‚°ãƒ«ãƒ¼ãƒ—ã«è²æ¸¡ã•れ㟠-è²æ¸¡ä¸å¯èƒ½ãªã‚ªãƒ–ジェクトã¯å‰Šé™¤ã•れã¾ã™ï¼ -オブジェクト: [N] - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="ReturnObjectsNotOwnedByUser" - > -ã“ã®åœŸåœ°åŒºç”»å†…ã®ã‚ªãƒ–ジェクトã®ã†ã¡ã€ -[NAME]ãŒæ‰€æœ‰ã—ã¦ã„ãªã„ã™ã¹ã¦ã®ã‚ªãƒ–ジェクトをãれãžã‚Œã®ã‚ªãƒ¼ãƒŠãƒ¼ã®æŒã¡ç‰©ã«è¿”å´ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚ -æ“作を続行ã—ã¾ã™ã‹ï¼Ÿã‚°ãƒ«ãƒ¼ãƒ—ã«è²æ¸¡ã•れãŸè²æ¸¡å¯èƒ½ã‚ªãƒ–ジェクトã¯ã€ä»¥å‰ã®ã‚ªãƒ¼ãƒŠãƒ¼ã«è¿”å´ã•れã¾ã™ã€‚ - -*è¦å‘Š* ã“れã«ã‚ˆã‚Šã€ -ãã®ã‚°ãƒ«ãƒ¼ãƒ—ã«è²æ¸¡ã•れ㟠-è²æ¸¡ä¸å¯èƒ½ãªã‚ªãƒ–ジェクトã¯å‰Šé™¤ã•れã¾ã™ï¼ -オブジェクト: [N] - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="ReturnAllTopObjects" - > -å…¨ã¦ã®ãƒªã‚¹ãƒˆã•れãŸã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’æ‰€æœ‰è€…ã«æœ¬å½“ã«è¿”å´ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="DisableAllTopObjects" - > -ã“ã®åœ°åŸŸå†…ã®ã™ã¹ã¦ã®ã‚ªãƒ–ジェクトを無効ã«ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚æ“作を続行ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="ReturnObjectsNotOwnedByGroup" - > -ã“ã®åœŸåœ°ã®åŒºç”»ä¸Šã®ã‚ªãƒ–ジェクトã®ã†ã¡ã€ã‚°ãƒ«ãƒ¼ãƒ—[NAME] -ã¨ã®é–“ã§å…±æœ‰ã—ã¦ã„ãªã„オブジェクトをオーナーã«è¿”å´ã—ã¾ã™ã‹ï¼Ÿ - -オブジェクト: [N] - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="UnableToDisableOutsideScripts" - > -スクリプトを無効ã«ã§ãã¾ã›ã‚“。 -ã“ã®åœ°åŸŸå…¨ä½“ãŒã€Œãƒ€ãƒ¡ãƒ¼ã‚¸æœ‰åйã€ã«è¨å®šã•れã¦ã„ã¾ã™ã€‚ -æ¦å™¨ã‚’使用ã™ã‚‹ã«ã¯ã‚¹ã‚¯ãƒªãƒ—トã®å®Ÿè¡Œã‚’許å¯ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ - </notification> - - <notification - - name="MustBeInParcel" - > -ç€åœ°ç‚¹ã‚’è¨å®šã™ã‚‹ã«ã¯ã€ã“ã®åŒºç”»ã®å†…å´ã« -ç«‹ã£ã¦ãã ã•ã„。 - </notification> - - <notification - - name="PromptRecipientEmail" - > -å—ä¿¡è€…ã®æœ‰åйãªEメールアドレスを入力ã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="PromptSelfEmail" - > -ã‚ãªãŸã®Eメール・アドレスを入力ã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="PromptMissingSubjMsg" - > -デフォルトã®ä»¶åã¾ãŸã¯ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’付ã‘ã¦ã€ã‚¹ãƒŠãƒƒãƒ—ショットをé€ä¿¡ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="ã‚ャンセル" - yestext="OK"/> - </notification> - - <notification - - name="ErrorProcessingSnapshot" - > -スナップショット・データã®å‡¦ç†ã‚¨ãƒ©ãƒ¼ - </notification> - - <notification - - name="ErrorEncodingSnapshot" - > -スナップショットã®ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‰åŒ–ã§ã‚¨ãƒ©ãƒ¼ãŒå‡ºã¾ã—ãŸï¼ - </notification> - - <notification - - name="ErrorUploadingPostcard" - > -次ã®ç†ç”±ã§ã€ã‚¹ãƒŠãƒƒãƒ—ショットã®é€ä¿¡æ™‚ã«å•題ãŒèµ·ã“りã¾ã—ãŸï¼š [REASON] - </notification> - - <notification - - name="ErrorUploadingReportScreenshot" - > -次ã®ç†ç”±ã§ã€ãƒ¬ãƒãƒ¼ãƒˆã®ã‚¹ã‚¯ãƒªãƒ¼ãƒ³ã‚·ãƒ§ãƒƒãƒˆã®ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰æ™‚ã«å•題ãŒèµ·ã“りã¾ã—ãŸã€‚ [REASON] - </notification> - - <notification - - name="MustAgreeToLogIn" - > -[SECOND_LIFE]ã¸ã®ãƒã‚°ã‚¤ãƒ³ã‚’ç¶šã‘ã‚‹ã«ã¯ã€åˆ©ç”¨è¦ç´„ã«åŒæ„ã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="CouldNotPutOnOutfit" - > -æœè£…を装ç€ã§ãã¾ã›ã‚“。 -æœè£…フォルダã«è¡£æœã€èº«ä½“部ä½ã€ä»˜å±žå“ãŒã‚りã¾ã›ã‚“。 - </notification> - - <notification - - name="CannotWearTrash" - > -ゴミ箱ã«ã‚ã‚‹æœã‚„ボディーパーツã®ç€ç”¨ã¯ã§ãã¾ã›ã‚“。 - </notification> - - <notification - - name="CannotWearInfoNotComplete" - > -ã¾ã èªã¿è¾¼ã¾ã‚Œã¦ã„ãªã„ãŸã‚ã€ãã®ã‚¢ã‚¤ãƒ†ãƒ を装ç€ã§ãã¾ã›ã‚“。後ã§ã‚„り直ã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="MustHaveAccountToLogIn" - > -ãŠã£ã¨! 記入æ¼ã‚ŒãŒã‚りã¾ã™ã‚ˆã€‚ -ã‚¢ãƒã‚¿ãƒ¼ã®ãƒ•ァーストãƒãƒ¼ãƒ ã¨ãƒ©ã‚¹ãƒˆãƒãƒ¼ãƒ ã®ä¸¡æ–¹ã‚’入力ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ - -[SECOND_LIFE]ã«å…¥ã‚‹ã«ã¯ã€ã‚¢ã‚«ã‚¦ãƒ³ãƒˆãŒå¿…è¦ã§ã™ã€‚ アカウントを作æˆã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="ã‚‚ã†ä¸€åº¦è©¦ã™" - yestext="æ–°ã—ã„アカウントを作æˆ"/> - </notification> - - <notification - - name="AddClassified" - > -検索ディレクトリã®ã€Œã‚¯ãƒ©ã‚·ãƒ•ァイドã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã«ã€ -クラシファイド広告ãŒ1週間掲載ã•れã¾ã™ã€‚ -広告を記入後ã€ã€Œå…¬é–‹ã€ã‚’クリックã—ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã« -è¿½åŠ ã—ã¾ã™ã€‚ -「公開ã€ã‚’クリックã™ã‚‹ã¨ã€æ”¯æ‰•金é¡ã‚’å°‹ãられã¾ã™ã€‚ -å¤šãæ‰•ã†ã»ã©ã€åºƒå‘ŠãŒã‚¯ãƒ©ã‚·ãƒ•ァイド・リストã¨ã‚ーワード検索 -ã®ä¸Šä½ã«è¡¨ç¤ºã•れã¾ã™ã€‚ - <usetemplate - ignoretext="æ–°ã—ã„ã‚¯ãƒ©ã‚·ãƒ•ã‚¡ã‚¤ãƒ‰åºƒå‘Šã‚’åŠ ãˆã‚‹ã¨ã" - name="okcancelignore" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="DeleteClassified" - > -クラシファイド広告[NAME]ã®å‰Šé™¤ã‚’ã—ã¾ã™ã‹ï¼Ÿ -æ”¯æ‰•ã„æ¸ˆã¿ã®æ–™é‡‘ã¯è¿”金ã•れã¾ã›ã‚“。 - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="ClassifiedSave" - > -クラシファイド広告[NAME]ã¸ã®å¤‰æ›´ã‚’ä¿å˜ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - canceltext="ã‚ャンセル" - name="yesnocancelbuttons" - notext="ä¿å˜ã—ãªã„" - yestext="ä¿å˜"/> - </notification> - - <notification - - name="DeleteAvatarPick" - > -ピック[PICK]を削除ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="PromptGoToEventsPage" - > -[SECOND_LIFE]イベント・ウェブ・ページã«ç§»å‹•ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="SelectProposalToView" - > -表示ã™ã‚‹ææ¡ˆã‚’é¸æŠžã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="SelectHistoryItemToView" - > -表示ã™ã‚‹å±¥æ´ã‚¢ã‚¤ãƒ†ãƒ ã‚’é¸æŠžã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="ResetShowNextTimeDialogs" - > -ã“れらã®ãƒãƒƒãƒ—アップ全ã¦ã‚’å†åº¦æœ‰åŠ¹åŒ–ã—ã¾ã™ã‹ï¼Ÿï¼ˆä»¥å‰ã€Œä»Šå¾Œã¯è¡¨ç¤ºã—ãªã„ã€ã¨æŒ‡å®šã—ã¦ã„ã¾ã™ï¼‰ - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="SkipShowNextTimeDialogs" - > -スã‚ップå¯èƒ½ãªãƒãƒƒãƒ—アップ全ã¦ã‚’無効化ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="ã‚ャンセル" - yestext="OK"/> - </notification> - - <notification - - name="CacheWillClear" - > -[SECOND_LIFE]ã®å†èµ·å‹•後ã«ã‚ャッシュãŒã‚¯ãƒªã‚¢ã•れã¾ã™ã€‚ - </notification> - - <notification - - name="CacheWillBeMoved" - > -[SECOND_LIFE]ã®å†èµ·å‹•後ã«ã‚ャッシュãŒç§»å‹•ã•れã¾ã™ã€‚ -メモ:ã“れã«ã‚ˆã‚Šã‚ャッシュãŒã‚¯ãƒªã‚¢ã•れã¾ã™ã€‚ - </notification> - - <notification - - name="ChangeConnectionPort" - > -ãƒãƒ¼ãƒˆã®è¨å®šã¯ã€[SECOND_LIFE]ã®å†èµ·å‹•å¾Œã«æœ‰åйã«ãªã‚Šã¾ã™ã€‚ - </notification> - - <notification - - name="ChangeSkin" - > -æ–°ã—ã„スã‚ンã¯[SECOND_LIFE]ã‚’å†èµ·å‹•ã™ã‚‹ã¨ç¾ã‚Œã¾ã™ - </notification> - - <notification - - name="GoToAuctionPage" - > -[SECOND_LIFE]ウェブ・ページã«ç§»å‹•ã—〠入æœã‚ã‚‹ã„ã¯ã‚ªãƒ¼ã‚¯ã‚·ãƒ§ãƒ³ã®è©³ç´°ã‚’確èªã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="SaveChanges" - > -変更をä¿å˜ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - canceltext="å–り消ã—" - name="yesnocancelbuttons" - notext="ä¿å˜ã—ãªã„" - yestext="ä¿å˜"/> - </notification> - - <notification - - name="GestureSaveFailedTooManySteps" - > -ジェスãƒãƒ£ãƒ¼ã®ä¿å˜ã«å¤±æ•—ã—ã¾ã—ãŸã€‚ -ステップãŒå¤šã™ãŽã¾ã™ã€‚ -ステップをã„ãã¤ã‹å‰Šé™¤ã—ã¦ã‹ã‚‰å†ä¿å˜ã—ã¦ãã ã•ã„ - </notification> - - <notification - - name="GestureSaveFailedTryAgain" - > -ジェスãƒãƒ£ãƒ¼ã®ä¿å˜ã«å¤±æ•—ã—ã¾ã—ãŸã€‚å°‘ã—å¾…ã£ã¦ã‹ã‚‰ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="GestureSaveFailedObjectNotFound" - > -ジェスãƒãƒ£ãƒ¼ã®ä¿å˜ã«å¤±æ•—ã—ã¾ã—ãŸã€‚オブジェクトã€ã¾ãŸã¯é–¢é€£ã™ã‚‹ã‚ªãƒ–ジェクトæŒã¡ç‰©ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。 -オブジェクトãŒç¯„囲内ã«å˜åœ¨ã—ãªã„ã‹ã€ã¾ãŸã¯å‰Šé™¤ã•れãŸå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ - </notification> - - <notification - - name="GestureSaveFailedReason" - > -次ã®ç†ç”±ã§ã€ã‚¸ã‚§ã‚¹ãƒãƒ£ãƒ¼ã®ä¿å˜æ™‚ã«å•題ãŒèµ·ã“りã¾ã—ãŸã€‚ [REASON]。 後ã§ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="SaveNotecardFailObjectNotFound" - > -ノートカードã®ä¿å˜ã«å¤±æ•—ã—ã¾ã—ãŸã€‚オブジェクトã€ã¾ãŸã¯é–¢é€£ã™ã‚‹ã‚ªãƒ–ジェクトæŒã¡ç‰©ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。 -オブジェクトãŒç¯„囲内ã«å˜åœ¨ã—ãªã„ã‹ã€ã¾ãŸã¯å‰Šé™¤ã•れãŸå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ - </notification> - - <notification - - name="SaveNotecardFailReason" - > -次ã®ç†ç”±ã§ã€ãƒŽãƒ¼ãƒˆã‚«ãƒ¼ãƒ‰ã®ä¿å˜æ™‚ã«å•題ãŒèµ·ã“りã¾ã—ãŸã€‚ [REASON]。 後ã§ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="ScriptCannotUndo" - > -ã‚ãªãŸã®ã‚¹ã‚¯ãƒªãƒ—トã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã¯ã€å¤‰æ›´ã‚’å…ƒã«æˆ»ã™ã“ã¨ã¯ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ -サーãƒãƒ¼ã®æœ€æ–°ä¿å˜ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’ãƒãƒ¼ãƒ‰ã—ã¾ã™ã‹ï¼Ÿ -(**è¦å‘Š**:ã“ã®æ“作ã¯å…ƒã«æˆ»ã™ã“ã¨ãŒã§ãã¾ã›ã‚“) - <usetemplate - name="okcancelbuttons" - notext="ã‚ャンセル" - yestext="OK"/> - </notification> - - <notification - - name="SaveScriptFailReason" - > -次ã®ç†ç”±ã§ã€ã‚¹ã‚¯ãƒªãƒ—トã®ä¿å˜ã«å•題ãŒèµ·ã“りã¾ã—ãŸã€‚ [REASON]。 後ã§ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="SaveScriptFailObjectNotFound" - > -スクリプトã®ä¿å˜ã«å¤±æ•—ã—ã¾ã—ãŸã€‚スクリプトãŒå…¥ã£ãŸã‚ªãƒ–ジェクトãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。 -オブジェクトã¯ç¯„囲外ã‹ã€ã¾ãŸã¯å‰Šé™¤ã•れã¦ã„ã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“。 - </notification> - - <notification - - name="SaveBytecodeFailReason" - > -次ã®ç†ç”±ã§ã€ã‚³ãƒ³ãƒ‘イルã—ãŸã‚¹ã‚¯ãƒªãƒ—トã®ä¿å˜æ™‚ã«å•題ãŒèµ·ã“りã¾ã—ãŸã€‚ [REASON]。 後ã§ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="CouldNotStartStopScript" - > -スクリプトã®èµ·å‹•ã¾ãŸã¯åœæ¢ã«å¤±æ•—ã—ã¾ã—ãŸã€‚ã‚¹ã‚¯ãƒªãƒ—ãƒˆãŒæ ¼ç´ã•れã¦ã„るオブジェクトãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。 -オブジェクトãŒç¯„囲内ã«å˜åœ¨ã—ãªã„ã‹ã€ã¾ãŸã¯å‰Šé™¤ã•れãŸå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ - </notification> - - <notification - - name="CannotDownloadFile" - > -ファイルをダウンãƒãƒ¼ãƒ‰ã§ãã¾ã›ã‚“。 - </notification> - - <notification - - name="CannotWriteFile" - > -ファイル[[FILE]]を書ãè¾¼ã‚ã¾ã›ã‚“。 - </notification> - - <notification - - name="UnsupportedHardware" - > -è¦å‘Šï¼š ã‚ãªãŸã®ã‚·ã‚¹ãƒ†ãƒ 㯠Second Life を使用ã™ã‚‹ãŸã‚ã«å¿…è¦ãªå¿…é ˆå‹•ä½œç’°å¢ƒã®æ¡ä»¶ã‚’満ãŸã—ã¦ã„ã¾ã›ã‚“。 Second Life ã‚’ã“ã®ã¾ã¾ã”使用ã«ãªã‚‹ã¨ã€ä¸å分ãªãƒ‘フォーマンスã—ã‹å¾—られãªã„ãŠãれãŒã‚りã¾ã™ã€‚ ã¾ãŸã€ã‚µãƒãƒ¼ãƒˆå¤–ã®ã‚·ã‚¹ãƒ†ãƒ æ§‹æˆã§ã”使用ã®å ´åˆã€ãƒ†ã‚¯ãƒ‹ã‚«ãƒ«ã‚µãƒãƒ¼ãƒˆã‚’ã”利用ã„ãŸã ãã“ã¨ãŒã§ãã¾ã›ã‚“。 - - å¿…é ˆå‹•ä½œç’°å¢ƒã®æ¡ä»¶ -[_URL] ã«ã‚¢ã‚¯ã‚»ã‚¹ã—ã¦ã€ã•らã«è©³ã—ã„æƒ…å ±ã‚’ã”覧ã«ãªã‚Šã¾ã™ã‹ï¼Ÿ - <url option="0" name="url"> - - http://secondlife.com/support/sysreqs.php?lang=ja - </url> - <usetemplate - ignoretext="サãƒãƒ¼ãƒˆå¤–ã®ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ã®æ¤œå‡ºæ™‚" - name="okcancelignore" - notext="ã„ã„ãˆ" - yestext="ã¯ã„"/> - </notification> - - <notification - - name="UnknownGPU" - > -ãŠä½¿ã„ã®ã‚·ã‚¹ãƒ†ãƒ ã«ã¯ã€ç¾æ™‚点ã§ã¯ä¸æ˜Žãªã‚°ãƒ©ãƒ•ã‚£ãƒƒã‚¯ãƒ»ã‚«ãƒ¼ãƒ‰ãŒæè¼‰ã•れã¦ã„ã¾ã™ã€‚ -ã“れã¯ã€å½“社ã«ã‚ˆã‚‹å‹•作テストãŒè¡Œã‚れã¦ã„ãªã„æ–°ã—ã„ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ãŒä½¿ç”¨ã•れã¦ã„ã‚‹å ´åˆãŒã»ã¨ã‚“ã©ã§ã™ã€‚ Second Lifeã¯ã»ã¼é–“é•ã„ãªãæ£å¸¸ã«å‹•作ã—ã¾ã™ãŒã€å¿…è¦ã«å¿œã˜ãŸã‚°ãƒ©ãƒ•ィックè¨å®šã®èª¿æ•´ãŒå¿…è¦ã«ãªã‚‹å ´åˆãŒã‚りã¾ã™ã€‚ -(「編集ã€ï¼žã€Œç’°å¢ƒè¨å®šã€ï¼žã€Œã‚°ãƒ©ãƒ•ィックã€ï¼‰ã€‚ - <form name="form"> - <ignore name="ignore" text="䏿˜Žãªã‚°ãƒ©ãƒ•ã‚£ãƒƒã‚¯ãƒ»ã‚«ãƒ¼ãƒ‰ã®æ¤œå‡ºæ™‚"/> - </form> - </notification> - - <notification - - name="DisplaySettingsNoShaders" - > -[SECOND_LIFE] ã¯ã€ã‚°ãƒ©ãƒ•ィック・ドライãƒã®åˆæœŸåŒ–ä¸ã«ã‚¯ãƒ©ãƒƒã‚·ãƒ¥ã—ã¾ã—ãŸã€‚ -一般的ãªãƒ‰ãƒ©ã‚¤ãƒãƒ»ã‚¨ãƒ©ãƒ¼ã‚’回é¿ã™ã‚‹ãŸã‚ã€ã€Œã‚°ãƒ©ãƒ•ィックã®å“質ã€ã¯ã€Œä½Žã€ã«è¨å®šã•れã¾ã™ã€‚ -ã“れã«ã‚ˆã‚Šã€ã„ãã¤ã‹ã®ã‚°ãƒ©ãƒ•ィックス機能ã¯ç„¡åйã«ãªã‚Šã¾ã™ã€‚ -グラフィックカード・ドライãƒã®ã‚¢ãƒƒãƒ—デートをãŠå‹§ã‚ã—ã¾ã™ã€‚ -「グラフィックã®å“質ã€ã¯ã€Œç’°å¢ƒè¨å®šã€ï¼žã€Œã‚°ãƒ©ãƒ•ィックã€ã‹ã‚‰ä¸Šã’ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ - </notification> - - <notification - - name="RegionNoTerraforming" - > -ã“ã®åœ°åŸŸ[REGION] ã¯ã€ãƒ†ãƒ©ãƒ•ォーミングãŒã§ãã¾ã›ã‚“。 - </notification> - - <notification - - name="CannotCopyWarning" - > -ã‚ãªãŸã¯ã“ã®ã‚¢ã‚¤ãƒ†ãƒ ã®ã‚³ãƒ”ーを -許ã•れã¦ã„ãªã„ã®ã§ã€äººã«ã‚ã’る㨠-æŒã¡ç‰©ã‹ã‚‰å¤±ã‚れã¾ã™ã€‚ 本当㫠-ã“れをã‚ã’ãŸã„ã§ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="ã„ã„ãˆ" - yestext="ã¯ã„"/> - </notification> - - <notification - - name="CannotGiveItem" - > -æŒã¡ç‰©ã®ã‚¢ã‚¤ãƒ†ãƒ を渡ã›ã¾ã›ã‚“。 - </notification> - - <notification - - name="TransactionCancelled" - > -å–引ãŒã‚ャンセルã•れã¾ã—ãŸã€‚ - </notification> - - <notification - - name="TooManyItems" - > -一度ã®ã‚¤ãƒ³ãƒ™ãƒ³ãƒˆãƒªäº¤æ›ã§ã€42以上ã®ã‚¢ã‚¤ãƒ†ãƒ ã¯é€ã‚Œã¾ã›ã‚“。 - </notification> - - <notification - - name="NoItems" - > -é¸æŠžã—ãŸã‚¢ã‚¤ãƒ†ãƒ ã‚’è²æ¸¡ã§ãる権é™ãŒã‚りã¾ã›ã‚“。 - </notification> - - <notification - - name="CannotCopyCountItems" - > -ã‚ãªãŸã¯é¸æŠžã•れãŸã‚¢ã‚¤ãƒ†ãƒ ã®[COUNT]ã®ã‚³ãƒ”ーを -許ã•れã¦ã„ã¾ã›ã‚“。 ã“れらã®ã‚¢ã‚¤ãƒ†ãƒ ã¯ã‚ãªãŸã® -æŒã¡ç‰©ã‹ã‚‰å¤±ã‚れã¾ã™ã€‚ -本当ã«ã‚¢ã‚¤ãƒ†ãƒ ã‚’ã‚ã’ãŸã„ã§ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="ã„ã„ãˆ" - yestext="ã¯ã„"/> - </notification> - - <notification - - name="CannotGiveCategory" - > -é¸æŠžã—ãŸãƒ•ã‚©ãƒ«ãƒ€ã‚’è²æ¸¡ã§ãã‚‹æ¨©é™ -ãŒã‚りã¾ã›ã‚“ - </notification> - - <notification - - name="FreezeAvatar" - > -ã“ã®ã‚¢ãƒã‚¿ãƒ¼ã‚’フリーズã—ã¾ã™ã‹ï¼Ÿ -ã‚¢ãƒã‚¿ãƒ¼ã¯ä¸€æ™‚çš„ã«å‹•ã‘ãªããªã‚Šã€ -ãƒãƒ£ãƒƒãƒˆãªã©ã€ã“ã®ä¸–界ã«å¯¾ã™ã‚‹é–¢ã‚りをæŒã¤ã“ã¨ãŒã§ããªããªã‚Šã¾ã™ã€‚ - <usetemplate - canceltext="å–り消ã—" - name="yesnocancelbuttons" - notext="è§£å‡" - yestext="フリーズ"/> - </notification> - - <notification - - name="FreezeAvatarFullname" - > -[AVATAR_NAME]をフリーズã—ã¾ã™ã‹ï¼Ÿ -フリーズã•れãŸäººã¯ä¸€æ™‚çš„ã«å‹•ã‘ãªããªã‚Šã€ãƒãƒ£ãƒƒãƒˆãªã©ã€ã“ã®ä¸–界ã«å¯¾ã™ã‚‹é–¢ã‚りをæŒã¤ã“ã¨ãŒã§ããªããªã‚Šã¾ã™ã€‚ - <usetemplate - canceltext="ã‚ャンセル" - name="yesnocancelbuttons" - notext="è§£å‡" - yestext="フリーズ"/> - </notification> - - <notification - - name="EjectAvatarFullname" - > -ã‚ãªãŸã®åœŸåœ°ã‹ã‚‰[AVATAR_NAME]を追放ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - canceltext="ã‚ャンセル" - name="yesnocancelbuttons" - notext="追放ã¨ç¦æ¢" - yestext="追放"/> - </notification> - - <notification - - name="EjectAvatarNoBan" - > -ã“ã®ã‚¢ãƒã‚¿ãƒ¼ã‚’ã‚ãªãŸã®åœŸåœ°ã‹ã‚‰è¿½æ”¾ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="ã‚ャンセル" - yestext="追放"/> - </notification> - - <notification - - name="EjectAvatarFullnameNoBan" - > -[AVATAR_NAME] ã‚’ã‚ãªãŸã®åœŸåœ°ã‹ã‚‰è¿½æ”¾ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="ã‚ャンセル" - yestext="追放"/> - </notification> - - <notification - - name="AcquireErrorTooManyObjects" - > -å–å¾—ã‚¨ãƒ©ãƒ¼ï¼šé¸æŠžã—ãŸã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æ•°ãŒå¤šã™ãŽã¾ã™ã€‚ - </notification> - - <notification - - name="AcquireErrorObjectSpan" - > -å–得エラー:オブジェクトãŒè¤‡æ•°ã®åœ°åŸŸã«ã¾ãŸãŒã£ã¦å˜åœ¨ã—ã¦ã„ã¾ã™ã€‚ -å–å¾—ã™ã‚‹ã‚ªãƒ–ジェクトã¯ã€ã™ã¹ã¦åŒã˜åœ°åŸŸå†…ã«ç§»å‹•ã•ã›ã¦ãã ã•ã„。 - </notification> - - <notification - - name="PromptGoToCurrencyPage" - > -[EXTRA] - -[URL]ã«ç§»å‹•ã—ã¦è²¨å¹£è³¼å…¥ã«é–¢ã™ã‚‹æƒ…å ±ã‚’ç¢ºèªã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="UnableToLinkObjects" - > -ã“れらã®[COUNT]オブジェクトをリンクã§ãã¾ã›ã‚“。 -最大[MAX]オブジェクトをリンクã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ - </notification> - - <notification - - name="CannotLinkIncompleteSet" - > -セットã¨ã—ã¦æƒã£ã¦ã„るオブジェクトã®ã¿ãƒªãƒ³ã‚¯ã§ãã¾ã™ã€‚複数㮠-ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’é¸æŠžã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="CannotLinkModify" - > -ã™ã¹ã¦ã®ã‚ªãƒ–ジェクトã«å¯¾ã™ã‚‹ä¿®æ£è¨±å¯ãŒã‚ãªãŸã«ãªã„ãŸã‚〠-リンクã§ãã¾ã›ã‚“。 - -オブジェクトãŒã™ã¹ã¦ãƒãƒƒã‚¯ã•れã¦ãŠã‚‰ãšã€ã‚ãªãŸã®ã‚‚ã®ã§ã‚ã‚‹ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="CannotLinkDifferentOwners" - > -所有者ãŒç•°ãªã‚‹ãŸã‚ã€ã™ã¹ã¦ã®ã‚ªãƒ–ジェクトを -リンクã§ãã¾ã›ã‚“。 - -è‡ªåˆ†ãŒæ‰€æœ‰ã—ã¦ã„るオブジェクトã ã‘ã‚’é¸æŠžã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="NoFileExtension" - > -ファイル「[FILE]ã€ã®æ‹¡å¼µåãŒç„¡åйã§ã™ã€‚ - -ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã®æ‹¡å¼µåãŒæ£ã—ã„ã‹ã©ã†ã‹ã‚’確èªã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="InvalidFileExtension" - > -ファイル拡張å[EXTENSION]ã¯ç„¡åйã§ã™ -æ£ã—ã„æ‹¡å¼µå:[VALIDS] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="CannotUploadSoundFile" - > -èªã¿è¾¼ã¿ã®ãŸã‚ã«ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ã•れãŸã‚µã‚¦ãƒ³ãƒ‰ãƒ•ァイルを開ã‘ã¾ã›ã‚“: -[FILE] - </notification> - - <notification - - name="SoundFileNotRIFF" - > -ファイルãŒRIFF WAVEファイルã¨ã—ã¦èªè˜ã•れã¾ã›ã‚“: -[FILE] - </notification> - - <notification - - name="SoundFileNotPCM" - > -ファイルãŒPCM WAVEオーディオ・ファイルã¨ã—ã¦èªè˜ã•れã¾ã›ã‚“: -[FILE] - </notification> - - <notification - - name="SoundFileInvalidChannelCount" - > -ファイルã®ãƒãƒ£ãƒ³ãƒãƒ«æ•°ãŒç„¡åйã§ã™ï¼ˆãƒ¢ãƒŽãƒ©ãƒ«ã¾ãŸã¯ã‚¹ãƒ†ãƒ¬ã‚ªã‚’使用ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ï¼‰ï¼š -[FILE] - </notification> - - <notification - - name="SoundFileInvalidSampleRate" - > -ファイルã®ã‚µãƒ³ãƒ—ル・レートãŒã‚µãƒãƒ¼ãƒˆå¤–ã§ã™ï¼ˆ44.1kを指定ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ï¼‰ï¼š -[FILE] - </notification> - - <notification - - name="SoundFileInvalidWordSize" - > -ファイルã®ãƒ¯ãƒ¼ãƒ‰ãƒ»ã‚µã‚¤ã‚ºãŒã‚µãƒãƒ¼ãƒˆå¤–ã§ã™ï¼ˆ8ã¾ãŸã¯16ビットを指定ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ï¼‰ï¼š -[FILE] - </notification> - - <notification - - name="SoundFileInvalidHeader" - > -WAVヘッダーã«ãƒ‡ãƒ¼ã‚¿ãƒ»ãƒãƒ£ãƒ³ã‚¯ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“: -[FILE] - </notification> - - <notification - - name="SoundFileInvalidTooLong" - > -オーディオ・ファイルãŒé•·ã™ãŽã¾ã™ã€‚(最大10秒): -[FILE] - </notification> - - <notification - - name="ProblemWithFile" - > -ファイル[FILE]ã«ã‚¨ãƒ©ãƒ¼ãŒã‚りã¾ã™ã€‚ - -[ERROR] - </notification> - - <notification - - name="CannotOpenTemporarySoundFile" - > -書ãè¾¼ã¿ç”¨ã®ä¸€æ™‚圧縮サウンド・ファイルを開ãã“ã¨ãŒã§ãã¾ã›ã‚“:[FILE] - </notification> - - <notification - - name="UnknownVorbisEncodeFailure" - > -未知ã®Vorbis æš—å·åŒ–ã«å¤±æ•—: [FILE] - </notification> - - <notification - - name="CorruptResourceFile" - > -ç ´æã—ãŸãƒªã‚½ãƒ¼ã‚¹ãƒ•ァイル: [FILE] - </notification> - - <notification - - name="UnknownResourceFileVersion" - > -未知ã®lindenリソースファイルã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ï¼š [FILE] - </notification> - - <notification - - name="UnableToCreateOutputFile" - > -æœè£…ファイルを作æˆã§ãã¾ã›ã‚“: [FILE] - </notification> - - <notification - - name="DoNotSupportBulkAnimationUpload" - > -アニメーションファイルã®ãƒãƒ«ã‚¯ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ã¯ç¾åœ¨ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。 - </notification> - - <notification - - name="CannotUploadReason" - > -次ã®ç†ç”±ã§ã€[FILE] をアップãƒãƒ¼ãƒ‰ã§ãã¾ã›ã‚“: [REASON] -ã‚ã¨ã§ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="CannotCreateLandmarkNotOwner" - > -åœŸåœ°ã®æ‰€æœ‰è€…ãŒè¨±å¯ã—ã¦ã„ãªã„ãŸã‚〠-ランドマークを作æˆã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 - </notification> - - <notification - - name="CannotRecompileSelectObjectsNoScripts" - > -å†ç·¨é›†ã¯ä¸å¯èƒ½ã§ã™ã€‚ -スクリプト化ã•れãŸã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’é¸æŠžã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="CannotRecompileSelectObjectsNoPermission" - > -「å†ç·¨é›†ã€ã¯ä¸å¯èƒ½ã§ã™ã€‚ - -å¤‰æ›´ä¿®æ£æ¨©é™ã®ã‚ã‚‹ -スクリプト化ã•れãŸã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’é¸æŠžã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="CannotResetSelectObjectsNoScripts" - > -「å†è¨å®šã€ã‚’行ã†ã“ã¨ãŒã§ãã¾ã›ã‚“。 - -スクリプト化ã•れãŸã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’é¸æŠžã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="CannotResetSelectObjectsNoPermission" - > -「å†è¨å®šã€ã‚’行ã†ã“ã¨ãŒã§ãã¾ã›ã‚“。 - -å¤‰æ›´ä¿®æ£æ¨©é™ã®ã‚ã‚‹ -スクリプト化ã•れãŸã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’é¸æŠžã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="CannotSetRunningSelectObjectsNoScripts" - > -スクリプトã®ã€Œå®Ÿè¡Œã€ã®è¨å®šãŒã§ãã¾ã›ã‚“。 - -スクリプト化ã•れãŸã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’é¸æŠžã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="CannotSetRunningNotSelectObjectsNoScripts" - > -スクリプトを「実行ã—ãªã„ã€ã«è¨å®šã§ãã¾ã›ã‚“。 - -スクリプト化ã•れãŸã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’é¸æŠžã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="NoFrontmostFloater" - > -ä¿å˜ã™ã¹ãfrontmostフãƒãƒ¼ã‚¿ãŒã‚りã¾ã›ã‚“。 - </notification> - - <notification - - name="SeachFilteredOnShortWords" - > -指定ã—ãŸæ¤œç´¢ã‚¯ã‚¨ãƒªã¯å¤‰æ›´ã•れã€çŸã™ãŽã‚‹èªžå¥ã¯å–り除ã‹ã‚Œã¦ã„ã¾ã™ã€‚ - -検索語å¥ï¼š [FINALQUERY] - </notification> - - <notification - - name="SeachFilteredOnShortWordsEmpty" - > -指定ã—ãŸæ¤œç´¢èªžå¥ãŒçŸã™ãŽãŸãŸã‚ã€æ¤œç´¢ã¯è¡Œã‚れã¾ã›ã‚“ã§ã—ãŸã€‚ - </notification> - - <notification - - name="CouldNotTeleportReason" - > -テレãƒãƒ¼ãƒˆã«å¤±æ•—ã—ã¾ã—ãŸã€‚ -[REASON] - </notification> - - <notification - - name="CannotSetLandOwnerNothingSelected" - > -土地所有者è¨å®šãŒã§ãã¾ã›ã‚“: -区画ãŒé¸å®šã•れã¦ã„ã¾ã›ã‚“。 - </notification> - - <notification - - name="CannotSetLandOwnerMultipleRegions" - > -複数ã®åœ°åŸŸãŒé¸æŠžã•れãŸãŸã‚ã€åœŸåœ°ã®æ‰€æœ‰æ¨©ã‚’主張 -ã§ãã¾ã›ã‚“。 é¸æŠžã™ã‚‹é¢ç©ã‚’å°ã•ãã—ã¦ã€ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="ForceOwnerAuctionWarning" - > -ã“ã®åŒºç”»ã¯ã‚ªãƒ¼ã‚¯ã‚·ãƒ§ãƒ³ã«å‡ºå“ã•れã¦ã„ã¾ã™ã€‚ åŒºç”»ã®æ‰€æœ‰æ¨©ã‚’主張ã™ã‚‹ã¨ -オークションãŒç„¡åйã«ãªã‚Šã€å…¥æœãŒé–‹å§‹ã—ã¦ã„ãŸã‚‰ä¸æº€ã«æ€ã† -ä½äººãŒå‡ºã¦ãã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“。 所有権を主張ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="CannotContentifyNothingSelected" - > -コンテンツ化ã¯ä¸å¯èƒ½ã§ã™ï¼š -区画ãŒé¸å®šã•れã¦ã„ã¾ã›ã‚“。 - </notification> - - <notification - - name="CannotContentifyNoRegion" - > -コンテンツ化ã¯ä¸å¯èƒ½ã§ã™ï¼š -土地ãŒé¸æŠžã•れã¦ã„ã¾ã›ã‚“。 - </notification> - - <notification - - name="CannotReleaseLandNothingSelected" - > -土地をæ¨ã¦ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“: -区画ãŒé¸å®šã•れã¦ã„ã¾ã›ã‚“。 - </notification> - - <notification - - name="CannotReleaseLandNoRegion" - > -åœŸåœ°ã‚’ç ´æ£„ã§ãã¾ã›ã‚“: -地域ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。 - </notification> - - <notification - - name="CannotBuyLandNothingSelected" - > -土地を購入ã§ãã¾ã›ã‚“: -区画ãŒé¸å®šã•れã¦ã„ã¾ã›ã‚“。 - </notification> - - <notification - - name="CannotBuyLandNoRegion" - > -土地を購入ã§ãã¾ã›ã‚“: -ã“ã®åœŸåœ°ãŒã‚る地域を見ã¤ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ - </notification> - - <notification - - name="CannotCloseFloaterBuyLand" - > -Second Lifeã«ã‚ˆã‚‹ã“ã®å–引ã®è¦‹ç©ã‚ŠãŒå®Œäº†ã™ã‚‹ã¾ã§ã€ŒåœŸåœ°ã‚’購入ã€ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’é–‰ã˜ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 - </notification> - - <notification - - name="CannotDeedLandNothingSelected" - > -åœŸåœ°ã‚’è²æ¸¡ã§ãã¾ã›ã‚“: -区画ãŒé¸å®šã•れã¦ã„ã¾ã›ã‚“。 - </notification> - - <notification - - name="CannotDeedLandNoGroup" - > -åœŸåœ°ã‚’è²æ¸¡ã§ãã¾ã›ã‚“: -グループãŒé¸æŠžã•れã¦ã„ã¾ã›ã‚“。 - </notification> - - <notification - - name="CannotDeedLandNoRegion" - > -åœŸåœ°ã‚’è²æ¸¡ã§ãã¾ã›ã‚“: -ã“ã®åœŸåœ°ãŒã‚る地域ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。 -「ツールã€ï¼žã€Œãƒã‚°ã‚’å ±å‘Šã™ã‚‹ã€ã‚’使ã£ã¦å ±å‘Šã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="CannotDeedLandMultipleSelected" - > -åœŸåœ°ã‚’è²æ¸¡ã§ãã¾ã›ã‚“: -複数ã®åŒºç”»ãŒé¸æŠžã•れã¦ã„ã¾ã™ã€‚ - -ã“れより1ã¤ã®åŒºç”»ã‚’é¸æŠžã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="ParcelCanPlayMedia" - > -ã“ã“ã§ã¯ã‚¹ãƒˆãƒªãƒ¼ãƒŸãƒ³ã‚°ãƒ»ãƒ¡ãƒ‡ã‚£ã‚¢å†ç”ŸãŒå¯èƒ½ã§ã™ã€‚ -メディアã®ã‚¹ãƒˆãƒªãƒ¼ãƒŸãƒ³ã‚°ã«ã¯ã€é«˜é€Ÿãªã‚¤ãƒ³ã‚¿ãƒ¼ãƒãƒƒãƒˆæŽ¥ç¶šç’°å¢ƒãŒå¿…è¦ã§ã™ã€‚ - -利用å¯èƒ½ã«ãªã£ãŸã‚‰å†ç”Ÿã—ã¾ã™ã‹ï¼Ÿ -(ã“ã®ã‚ªãƒ—ションã¯ã€ã€Œç’°å¢ƒè¨å®šã€ï¼žã€Œã‚ªãƒ¼ãƒ‡ã‚£ã‚ªï¼†ãƒ“デオã€ã§å¾Œã‹ã‚‰ã§ã‚‚変更ã§ãã¾ã™ï¼‰ - <usetemplate - name="okcancelbuttons" - notext="無効化" - yestext="メディアをå†ç”Ÿ"/> - </notification> - - <notification - - name="CannotDeedLandWaitingForServer" - > -åœŸåœ°ã‚’è²æ¸¡ã§ãã¾ã›ã‚“: -サーãƒãƒ¼ã‹ã‚‰ã®æ‰€æœ‰æ¨©æƒ…å ±ã‚’å¾…ã£ã¦ã„ã¾ã™ã€‚ - -å†åº¦ã€è©¦ã¿ã¦ãã ã•ã„。 - </notification> - - <notification - - name="CannotDeedLandNoTransfer" - > -åœŸåœ°ã‚’è²æ¸¡ã§ãã¾ã›ã‚“: -ã“ã®åœ°åŸŸ [REGION] ã§ã¯åœŸåœ°ã®è²æ¸¡ãŒè¨±ã•れã¦ã„ã¾ã›ã‚“。 - </notification> - - <notification - - name="CannotReleaseLandWatingForServer" - > -åœŸåœ°ã‚’ç ´æ£„ã§ãã¾ã›ã‚“: -サーãƒãƒ¼ãŒåŒºç”»æƒ…å ±ã‚’æ›´æ–°ã™ã‚‹ã®ã‚’å¾…ã£ã¦ã„ã¾ã™ã€‚ - -ã‚‚ã†å°‘ã—後ã§ã‚„り直ã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="CannotReleaseLandSelected" - > -åœŸåœ°ã‚’ç ´æ£„ã§ãã¾ã›ã‚“: -ã‚ãªãŸã¯ã€é¸æŠžã—ãŸã™ã¹ã¦ã®åŒºç”»ã‚’所有ã—ã¦ã„ã¾ã›ã‚“。 - -1ã¤ã®åŒºç”»ã‚’é¸æŠžã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="CannotReleaseLandDontOwn" - > -åœŸåœ°ã‚’ç ´æ£„ã§ãã¾ã›ã‚“: -ã‚ãªãŸã¯ã“ã®åœŸåœ°ã‚’手放ã™ã“ã¨ã‚’許å¯ã•れã¦ã„ã¾ã›ã‚“。 -ã‚ãªãŸã®åŒºç”»ã¯ç·‘色ã§è¡¨ç¤ºã•れã¦ã„ã¾ã™ã€‚ - </notification> - - <notification - - name="CannotReleaseLandRegionNotFound" - > -åœŸåœ°ã‚’ç ´æ£„ã§ãã¾ã›ã‚“: -ã“ã®åœŸåœ°ãŒã‚る地域ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。 - -「ツールã€ï¼žã€Œãƒã‚°ã‚’å ±å‘Šã™ã‚‹ã€ã‚’使ã£ã¦å ±å‘Šã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="CannotReleaseLandNoTransfer" - > -åœŸåœ°ã‚’ç ´æ£„ã§ãã¾ã›ã‚“: -ã“ã® [REGION] ã§ã¯åœŸåœ°ã®è²æ¸¡ãŒè¨±ã•れã¦ã„ã¾ã›ã‚“。 - </notification> - - <notification - - name="CannotReleaseLandPartialSelection" - > -åœŸåœ°ã‚’ç ´æ£„ã§ãã¾ã›ã‚“: -åŒºç”»å…¨ä½“ã‚’é¸æŠžã—ã¦è§£æ”¾ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ - -åŒºç”»å…¨ä½“ã‚’é¸æŠžã™ã‚‹ã‹ã€ã¾ãŸã¯ã€ã¾ãšæœ€åˆã«åŒºç”»ã‚’分割ã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="ReleaseLandWarning" - > -ã‚ãªãŸã¯ã€[AREA]平方メートルã®åœŸåœ°ã‚’解放ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚ -ã“ã®åŒºç”»ã‚’解放ã™ã‚‹ã¨ã€ã‚ãªãŸã®åœŸåœ°æ‰€æœ‰ã‹ã‚‰å¤–れã¾ã™ãŒã€ -L$ã¯è´ˆä¸Žã•れã¾ã›ã‚“。 - -土地を解放ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="CannotDivideLandNothingSelected" - > -土地を分割ã§ãã¾ã›ã‚“: - -区画ãŒé¸å®šã•れã¦ã„ã¾ã›ã‚“。 - </notification> - - <notification - - name="CannotDivideLandPartialSelection" - > -土地を分割ã§ãã¾ã›ã‚“: - -区画全体ãŒé¸æŠžã•れã¦ã„ã¾ã™ã€‚ -区画ã®ä¸€éƒ¨ã‚’é¸æŠžã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="LandDivideWarning" - > -ã“ã®åœŸåœ°ã‚’分割ã™ã‚‹ã¨ã€2ã¤ã®åŒºç”»ã«åˆ¥ã‚Œã¾ã™ã€‚ -区画ã”ã¨ã®è¨å®šãŒå¯èƒ½ã«ãªã‚Šã¾ã™ã€‚ ã“ã®æ“作を行ã†ã¨ã€ä¸€éƒ¨ã®è¨å®šãŒãƒ‡ãƒ•ォルトã«ãƒªã‚»ãƒƒãƒˆã•れã¾ã™ã€‚ - -土地ã®åˆ†å‰²æ“作を続行ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="CannotDivideLandNoRegion" - > -土地を分割ã§ãã¾ã›ã‚“: -ã“ã®åœŸåœ°ãŒã‚る地域ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。 - -「ツールã€ï¼žã€Œãƒã‚°ã‚’å ±å‘Šã™ã‚‹ã€ã‚’使ã£ã¦å ±å‘Šã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="CannotJoinLandNoRegion" - > -土地を統åˆã§ãã¾ã›ã‚“: -ã“ã®åœŸåœ°ãŒã‚る地域ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。 - -「ツールã€ï¼žã€Œãƒã‚°ã‚’å ±å‘Šã™ã‚‹ã€ã‚’使ã£ã¦å ±å‘Šã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="CannotJoinLandNothingSelected" - > -土地を統åˆã§ãã¾ã›ã‚“ã§ã—ãŸï¼š -区画ãŒé¸å®šã•れã¦ã„ã¾ã›ã‚“。 - </notification> - - <notification - - name="CannotJoinLandEntireParcelSelected" - > -土地を統åˆã§ãã¾ã›ã‚“: -1ã¤ã®åŒºç”»ã—ã‹é¸æŠžã•れã¦ã„ã¾ã›ã‚“。 - -両方ã®åŒºç”»ã‚’ã¾ãŸã„ã§åœŸåœ°ã‚’é¸æŠžã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="CannotJoinLandSelection" - > -土地を統åˆã§ãã¾ã›ã‚“: -1ã¤ä»¥ä¸Šã®åŒºç”»ã‚’é¸æŠžã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ - -両方ã®åŒºç”»ã‚’ã¾ãŸã„ã§åœŸåœ°ã‚’é¸æŠžã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="JoinLandWarning" - > -ã“ã®åœŸåœ°ã‚’çµ±åˆã™ã‚‹ã¨ã€é¸æŠžã•れãŸé•·æ–¹å½¢ã«äº¤å·®ã™ã‚‹ -å…¨ã¦ã®åŒºç”»ã‚’基ã«ã—ã¦1ã¤ã®å¤§ããªåŒºç”»ãŒä½œæˆã•れã¾ã™ã€‚ -æ–°ã—ã„区画ã®åå‰ã¨ã‚ªãƒ—ションをå†è¨å®šã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ - -土地を統åˆã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmNotecardSave" - > -ã“ã®ã‚¢ã‚¤ãƒ†ãƒ をコピーã€è¡¨ç¤ºã™ã‚‹å‰ã«ã€ãƒŽãƒ¼ãƒˆã‚«ãƒ¼ãƒ‰ã®ä¿å˜ãŒå¿…è¦ã§ã™ã€‚ ä¿å˜ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmItemCopy" - > -ã“ã®ã‚¢ã‚¤ãƒ†ãƒ ã‚’ã‚ãªãŸã®æŒã¡ç‰©ã«ã‚³ãƒ”ーã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="コピー"/> - </notification> - - <notification - - name="ResolutionSwitchFail" - > -è§£åƒåº¦ã‚’ [RESX]x[RESY]ã«åˆ‡ã‚Šæ›¿ãˆã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ - </notification> - - <notification - - name="ErrorUndefinedGrasses" - > -ã‚¨ãƒ©ãƒ¼ï¼šæœªå®šç¾©ã®æ¤ç‰©ï¼š[SPECIES] - </notification> - - <notification - - name="ErrorUndefinedTrees" - > -ã‚¨ãƒ©ãƒ¼ï¼šæœªå®šç¾©ã®æ¨¹æœ¨ï¼š[SPECIES] - </notification> - - <notification - - name="CannotSaveWearableOutOfSpace" - > -「[NAME]ã€ã‚’æœã®ãƒ•ァイルã«ä¿å˜ã§ãã¾ã›ã‚“。 コンピューター㮠-ディスクスペースを少ã—増やã—ã¦ã‹ã‚‰ã€ã‚‚ã†ä¸€åº¦ -ä¿å˜ã—ã¦ã¿ã¦ãã ã•ã„。 - </notification> - - <notification - - name="CannotSaveToAssetStore" - > -[NAME]ã‚’ä¸å¤®è³‡ç”£æ ¼ç´åº«ã«ä¿å˜ã§ãã¾ã›ã‚“。 -ã“れã¯ä¸€æ™‚çš„ãªä¸å…·åˆã§ã™ã€‚æœé£¾å“ãªã©ã‚’ -カスタマイズã—ã€æ•°åˆ†å¾Œã«ã‚‚ã†ä¸€åº¦ -ä¿å˜ã—ã¦ãã ã•ã„。 - -ã“ã®å•題ãŒç¶šãよã†ãªã‚‰ã€ã€Œãƒ„ールã€ï¼žã€Œãƒã‚°ã‚’å ±å‘Šã™ã‚‹ã€ã‚’クリックã—ã€ãŠä½¿ã„ã®ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯è¨å®šã®è©³ç´°ã‚’å ±å‘Šã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="YouHaveBeenLoggedOut" - > -ã‚ãªãŸã¯[SECOND_LIFE]ã‹ã‚‰ãƒã‚°ã‚¢ã‚¦ãƒˆã•れã¾ã—ãŸã€‚ - [MESSAGE] -「IMã¨ãƒãƒ£ãƒƒãƒˆã‚’表示ã€ã‚’クリックã™ã‚‹ã¨ã€ç¾åœ¨ã‚ã‚‹IMã¨ãƒãƒ£ãƒƒãƒˆã‚’確èªã§ãã¾ã™ã€‚ 確èªã—ãªã„å ´åˆã¯ã€ã€Œçµ‚了ã€ã‚’クリックã—ã¦ã€ã™ãã«[SECOND_LIFE]を終了ã—ã¦ãã ã•ã„。 - <usetemplate - name="okcancelbuttons" - notext="終了" - yestext="IMã¨ãƒãƒ£ãƒƒãƒˆã‚’表示"/> - </notification> - - <notification - - name="OnlyOfficerCanBuyLand" - > -グループ用ã®åœŸåœ°ã®è³¼å…¥ãŒã§ãã¾ã›ã‚“: -ã‚ãªãŸã«ã¯ã‚¢ã‚¯ãƒ†ã‚£ãƒ–ãªã‚°ãƒ«ãƒ¼ãƒ—ã®ãŸã‚ã«åœŸåœ°ã‚’購入ã™ã‚‹æ¨©é™ãŒã‚りã¾ã›ã‚“。 - </notification> - - <notification - - label="ãƒ•ãƒ¬ãƒ³ãƒ‰ã‚’è¿½åŠ " - name="AddFriend" - > -フレンドã¨ã—ã¦è¿½åŠ ã™ã‚‹ã¨ã€ãŠäº’ã„ã®ç¾åœ¨åœ°ã®åœ°å›³ã¸ã®è¡¨ç¤ºè¨±å¯ã€ã‚ªãƒ³ãƒ©ã‚¤ãƒ³ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹è¡¨ç¤ºã®è¨å®šã‚’ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ - -[NAME] ã«ãƒ•レンドシップをé€ã‚Šã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - label="ãƒ•ãƒ¬ãƒ³ãƒ‰ã‚’è¿½åŠ " - name="AddFriendWithMessage" - > -フレンドã¨ã—ã¦è¿½åŠ ã™ã‚‹ã¨ã€ãŠäº’ã„ã®ç¾åœ¨åœ°ã®åœ°å›³ã¸ã®è¡¨ç¤ºè¨±å¯ã€ã‚ªãƒ³ãƒ©ã‚¤ãƒ³ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹è¡¨ç¤ºã®è¨å®šã‚’ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ - -[NAME] ã«ãƒ•レンドシップã®ã‚ªãƒ•ァーをã—ã¾ã™ã‹ï¼Ÿ - <form name="form"> - <input name="message" type="text"> -フレンドã¨ã—ã¦ç™»éŒ²ã—ã¦ãれã¾ã™ã‹ï¼Ÿ - </input> - <button - - - name="Offer" - text="OK"/> - <button - - name="Cancel" - text="ã‚ャンセル"/> - </form> - </notification> - - <notification - - name="RemoveFromFriends" - > -[FIRST_NAME] [LAST_NAME]をフレンドリストã‹ã‚‰å‰Šé™¤ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="RemoveMultipleFromFriends" - > -フレンドリストã‹ã‚‰è¤‡æ•°ã®ãƒ•レンドを削除ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="GodDeleteAllScriptedPublicObjectsByUser" - > -**[AVATAR_NAME]** -所有ã®ã™ã¹ã¦ã®ã‚¹ã‚¯ãƒªãƒ—ト・オブジェクトをã“ã®ã‚·ãƒ 内ã®ä»–ã®ã™ã¹ã¦ã®åœŸåœ°ã‹ã‚‰å‰Šé™¤ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚æ“作を続行ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="GodDeleteAllScriptedObjectsByUser" - > -**[AVATAR_NAME]** -所有ã®ã™ã¹ã¦ã®ã‚¹ã‚¯ãƒªãƒ—ト・オブジェクトをã“ã®ã‚·ãƒ 内ã®ã™ã¹ã¦ã®åœŸåœ°ã‹ã‚‰å‰Šé™¤ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚æ“作を続行ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="GodDeleteAllObjectsByUser" - > -**[AVATAR_NAME]** -所有ã®ã™ã¹ã¦ã®ã‚ªãƒ–ジェクト(スクリプト・オブジェクトã¨éžã‚¹ã‚¯ãƒªãƒ—ト・オブジェクト)を -ã“ã®ã‚·ãƒ 内ã®ã™ã¹ã¦ã®åœŸåœ°ã‹ã‚‰å‰Šé™¤ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚æ“作を続行ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="BlankClassifiedName" - > -クラシファイドã«åå‰ã‚’指定ã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="MinClassifiedPrice" - > -åºƒå‘Šæ–™ã®æ”¯æ‰•ã„金é¡ã¯ã€Lã¨[MIN_PRICE]ãŒä¸‹é™ã§ã™ã€‚ - -金é¡ã‚’増やã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="ConfirmObjectDeleteLock" - > -é¸æŠžã—ãŸã‚¢ã‚¤ãƒ†ãƒ ã®1ã¤ä»¥ä¸ŠãŒãƒãƒƒã‚¯ã•れã¦ã„ã¾ã™ã€‚ - -本当ã«ã“れらã®ã‚¢ã‚¤ãƒ†ãƒ ã®å‰Šé™¤ã‚’ç¶šã‘ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="ã‚ャンセル" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectDeleteNoCopy" - > -é¸æŠžã—ãŸã‚¢ã‚¤ãƒ†ãƒ ã®1ã¤ä»¥ä¸ŠãŒã‚³ãƒ”ーã§ãã¾ã›ã‚“。 - -本当ã«ã“れらã®ã‚¢ã‚¤ãƒ†ãƒ ã®å‰Šé™¤ã‚’ç¶šã‘ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="ã‚ャンセル" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectDeleteNoOwn" - > -é¸æŠžã—ãŸã‚¢ã‚¤ãƒ†ãƒ ã®1ã¤ä»¥ä¸Šã‚’ã€ã‚ãªãŸã¯æ‰€æœ‰ã—ã¦ã„ã¾ã›ã‚“。 - -本当ã«ã“れらã®ã‚¢ã‚¤ãƒ†ãƒ ã®å‰Šé™¤ã‚’ç¶šã‘ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="ã‚ャンセル" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectDeleteLockNoCopy" - > -一ã¤ä»¥ä¸Šã®ã‚ªãƒ–ジェクトãŒãƒãƒƒã‚¯ã•れã¦ã„ã¾ã™ã€‚ -一ã¤ä»¥ä¸Šã®ã‚ªãƒ–ジェクトãŒã‚³ãƒ”ーã§ãã¾ã›ã‚“。 - -本当ã«ã“れらã®ã‚¢ã‚¤ãƒ†ãƒ ã®å‰Šé™¤ã‚’ç¶šã‘ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="ã‚ャンセル" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectDeleteLockNoOwn" - > -一ã¤ä»¥ä¸Šã®ã‚ªãƒ–ジェクトãŒãƒãƒƒã‚¯ã•れã¦ã„ã¾ã™ã€‚ -1ã¤ä»¥ä¸Šã®ã‚ªãƒ–ジェクトをã€ã‚ãªãŸã¯æ‰€æœ‰ã—ã¦ã„ã¾ã›ã‚“。 - -本当ã«ã“れらã®ã‚¢ã‚¤ãƒ†ãƒ ã®å‰Šé™¤ã‚’ç¶šã‘ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="ã‚ャンセル" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectDeleteNoCopyNoOwn" - > -一ã¤ä»¥ä¸Šã®ã‚ªãƒ–ジェクトãŒã‚³ãƒ”ーã§ãã¾ã›ã‚“。 -1ã¤ä»¥ä¸Šã®ã‚ªãƒ–ジェクトをã€ã‚ãªãŸã¯æ‰€æœ‰ã—ã¦ã„ã¾ã›ã‚“。 - -本当ã«ã“れらã®ã‚¢ã‚¤ãƒ†ãƒ ã®å‰Šé™¤ã‚’ç¶šã‘ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="ã‚ャンセル" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectDeleteLockNoCopyNoOwn" - > -一ã¤ä»¥ä¸Šã®ã‚ªãƒ–ジェクトãŒãƒãƒƒã‚¯ã•れã¦ã„ã¾ã™ã€‚ -一ã¤ä»¥ä¸Šã®ã‚ªãƒ–ジェクトãŒã‚³ãƒ”ーã§ãã¾ã›ã‚“。 -1ã¤ä»¥ä¸Šã®ã‚ªãƒ–ジェクトをã€ã‚ãªãŸã¯æ‰€æœ‰ã—ã¦ã„ã¾ã›ã‚“。 - -本当ã«ã“れらã®ã‚¢ã‚¤ãƒ†ãƒ ã®å‰Šé™¤ã‚’ç¶šã‘ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="ã‚ャンセル" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectTakeLock" - > -一ã¤ä»¥ä¸Šã®ã‚ªãƒ–ジェクトãŒãƒãƒƒã‚¯ã•れã¦ã„ã¾ã™ã€‚ - -ã“れらã®ã‚¢ã‚¤ãƒ†ãƒ ã®å–å¾—ã‚’ç¶šã‘ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="ã‚ャンセル" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectTakeNoOwn" - > -å–å¾—ã—よã†ã¨ã—ã¦ã„るオブジェクトã«ã¯ã€ã‚ãªãŸã®æ‰€æœ‰ç‰©ã§ãªã„オブジェクトãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚ -ã‚ãªãŸã®æ‰€æœ‰ç‰©ã§ã¯ãªã„オブジェクトをå–å¾—ã™ã‚‹ã¨ã€æ¬¡ã®ã‚ªãƒ¼ãƒŠãƒ¼ã®æ¨©é™ãŒ -ãã®ã‚ªãƒ–ジェクトã«é©ç”¨ã•れã¾ã™ã€‚ -ãã®ãŸã‚ã€å°†æ¥ã€å¤‰æ›´ã‚„コピーã®èƒ½åŠ›ãŒåˆ¶é™ã•れるå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ - -ã“れらã®ã‚¢ã‚¤ãƒ†ãƒ ã®å–å¾—ã‚’ç¶šã‘ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="ã‚ャンセル" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectTakeLockNoOwn" - > -1ã¤ä»¥ä¸Šã®ã‚ªãƒ–ジェクトãŒãƒãƒƒã‚¯ã•れã¦ã„ã¾ã™ã€‚ -å–å¾—ã—よã†ã¨ã—ã¦ã„るオブジェクトã«ã¯ã€ã‚ãªãŸã®æ‰€æœ‰ç‰©ã§ãªã„オブジェクトãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚ -ã‚ãªãŸã®æ‰€æœ‰ç‰©ã§ã¯ãªã„オブジェクトをå–å¾—ã™ã‚‹ã¨ã€æ¬¡ã®ã‚ªãƒ¼ãƒŠãƒ¼ã®æ¨©é™ãŒ -ãã®ã‚ªãƒ–ジェクトã«é©ç”¨ã•れã¾ã™ã€‚ -ãã®ãŸã‚ã€å°†æ¥ã€å¤‰æ›´ã‚„コピーã®èƒ½åŠ›ãŒåˆ¶é™ã•れるå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ -ã“ã®é¸æŠžå†…容ã®ã¾ã¾ã§ç¶šè¡Œã™ã‚‹ã“ã¨ã¯å¯èƒ½ã§ã™ãŒã€ - -ã“れらã®ã‚¢ã‚¤ãƒ†ãƒ ã®å–å¾—ã‚’ç¶šã‘ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="ã‚ャンセル" - yestext="OK"/> - </notification> - - <notification - - name="CantBuyLandAcrossMultipleRegions" - > -複数ã®åœ°åŸŸãŒé¸æŠžã•れãŸãŸã‚ã€åœŸåœ°ã‚’購入ã§ãã¾ã›ã‚“。 - -é¸æŠžã™ã‚‹é¢ç©ã‚’å°ã•ãã—ã¦ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="DeedLandToGroup" - > -ã“ã®åŒºç”»ã®è²æ¸¡ã«éš›ã—ã¦ã¯ã€ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ãŒå分ãªåœŸåœ°ã‚¯ãƒ¬ã‚¸ãƒƒãƒˆã‚’ -ä¿æœ‰ãŠã‚ˆã³ç¶æŒã—ã¦ã„ã‚‹ã“ã¨ãŒå¿…è¦ã§ã™ã€‚ -土地ã®è³¼å…¥ä¾¡æ ¼ã¯ã€ã‚ªãƒ¼ãƒŠãƒ¼ã«è¿”金ã•れã¾ã›ã‚“ã€‚è²æ¸¡ã•れãŸåŒºç”»ãŒå£²ã‚Œã‚‹ã¨ã€è²©å£²ä¾¡æ ¼ã¯ -グループ・メンãƒãƒ¼ã«å‡ç‰ã«åˆ†é…ã•れã¾ã™ã€‚ - -ã“ã®[AREA]平方メートルã®åœŸåœ°ã‚’ã€ã‚°ãƒ«ãƒ¼ãƒ— -「[GROUP_NAME]ã€ã«è²æ¸¡ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="DeedLandToGroupWithContribution" - > -ã“ã®åŒºç”»ã®è²æ¸¡ã«éš›ã—ã¦ã¯ã€ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—㌠-å分ãªåœŸåœ°ã‚¯ãƒ¬ã‚¸ãƒƒãƒˆã‚’ä¿æœ‰ãŠã‚ˆã³ç¶æŒã—ã¦ã„ã‚‹ã“ã¨ãŒå¿…è¦ã§ã™ã€‚ -ã“ã®è²æ¸¡ã«ã‚ˆã‚Šã€ -「[FIRST_NAME] [LAST_NAME]ã€ã‹ã‚‰ã‚°ãƒ«ãƒ¼ãƒ—ã«å¯¾ã—ã¦åœŸåœ°ãŒåŒæ™‚ã«æä¾›ã•れã¾ã™ã€‚ -土地ã®è³¼å…¥ä¾¡æ ¼ã¯ã€ã‚ªãƒ¼ãƒŠãƒ¼ã« -返金ã•れã¾ã›ã‚“ã€‚è²æ¸¡ã•れãŸåŒºç”»ãŒå£²ã‚Œã‚‹ã¨ã€ -è²©å£²ä¾¡æ ¼ã¯ã‚°ãƒ«ãƒ¼ãƒ—・メンãƒãƒ¼ã«å‡ç‰ã«åˆ†é…ã•れã¾ã™ã€‚ - -ã“ã®[AREA]平方メートルã®åœŸåœ°ã‚’ã€ã‚°ãƒ«ãƒ¼ãƒ—「[GROUP_NAME]ã€ã«è²æ¸¡ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="DisplaySetToSafe" - > --safeオプションを指定ã—ãŸã®ã§ã€ -表示è¨å®šã¯ã‚»ãƒ¼ãƒ•・レベルã«è¨å®šã•れã¦ã„ã¾ã™ã€‚ - </notification> - - <notification - - name="DisplaySetToRecommended" - > -表示è¨å®šã¯ã€ã‚ãªãŸã®ã‚·ã‚¹ãƒ†ãƒ æ§‹æˆã« -基ã¥ã„ã¦æŽ¨å¥¨ã•れãŸãƒ¬ãƒ™ãƒ«ã«è¨å®šã•れã¦ã„ã¾ã™ã€‚ - </notification> - - <notification - - name="ErrorMessage" - > -[ERROR_MESSAGE] - </notification> - - <notification - - name="AvatarMoved" - > -ã‚ãªãŸãŒè¨ªã‚ŒãŸã„[TYPE]ã®ãƒã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã¯ç¾åœ¨ã”利用ã§ãã¾ã›ã‚“。 [HELP] -è¿‘ãã®åœ°åŸŸã«ç§»å‹•ã—ã¾ã—ãŸã€‚ - </notification> - - <notification - - name="ClothingLoading" - > -ã‚ãªãŸã®æœã‚’ã€ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ä¸ã§ã™ã€‚ -通常ã©ãŠã‚Šã«[SECOND_LIFE]を使ãˆã€ä»–ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚‚ã‚ãªãŸã‚’æ£å¸¸ã«è¦‹ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ - <form name="form"> - <ignore name="ignore" text="æœã®ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ã«é•·ã„時間ãŒã‹ã‹ã‚‹å ´åˆ"/> - </form> - </notification> - - <notification - - name="FirstRun" - > -[SECOND_LIFE]ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ãŒå®Œäº†ã—ã¾ã—ãŸã€‚ - -[SECOND_LIFE]ã®ä½¿ç”¨ãŒåˆã‚ã¦ã®æ–¹ã¯ã€ãƒã‚°ã‚¤ãƒ³å‰ã«ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã®ä½œæˆãŒå¿…è¦ã§ã™ã€‚ -www.secondlife.comã«æˆ»ã£ã¦ã€æ–°è¦ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã®ä½œæˆã‚’行ã„ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="続行" - yestext="æ–°è¦ã‚¢ã‚«ã‚¦ãƒ³ãƒˆ..."/> - </notification> - - <notification - - name="LoginPacketNeverReceived" - > -接続ã«å•題ãŒç”Ÿã˜ã¦ã„ã¾ã™ã€‚ ã‚ãªãŸã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒãƒƒãƒˆæŽ¥ç¶šã€ã¾ãŸã¯Second Lifeサーãƒãƒ¼ã«å•題ãŒã‚ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ - -ã‚ãªãŸã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒãƒƒãƒˆæŽ¥ç¶šã‚’確èªã—ã¦æ•°åˆ†å¾Œã«ã‚‚ã†ä¸€åº¦è©¦ã¿ã‚‹ã‹ã€ã€Œãƒ˜ãƒ«ãƒ—ã€ã‚’クリックã—ã¦å½“社ã®ã‚µãƒãƒ¼ãƒˆãƒ»ã‚µã‚¤ãƒˆã«æŽ¥ç¶šã—ã¦ãã ã•ã„。ã¾ãŸã¯ã€ã€Œãƒ†ãƒ¬ãƒãƒ¼ãƒˆã€ã‚’クリックã—ã¦ãƒ›ãƒ¼ãƒ ã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã—ã¦ã¿ã¦ãã ã•ã„。 - <form name="form"> - <button - - - name="OK" - text="OK"/> - <button - - name="Help" - text="ヘルプ"/> - <button - - name="Teleport" - text="テレãƒãƒ¼ãƒˆ"/> - </form> - </notification> - - <notification - - name="WelcomeChooseSex" - > -ã¾ã‚‚ãªãã‚ãªãŸã®ã‚¢ãƒã‚¿ãƒ¼ãŒè¡¨ç¤ºã•れã¾ã™ã€‚ - -矢å°ã‚ーを使用ã—ã¦æ©ãã¾ã™ã€‚ -ヘルプãŒå¿…è¦ãªã¨ãã‚„[SECOND_LIFE]ã«ã¤ã„ã¦çŸ¥ã‚ŠãŸã„ã¨ãã¯ã€ -F1ã‚ーを押ã—ã¦ãã ã•ã„。 -男性ã‚ã‚‹ã„ã¯å¥³æ€§ã®ã‚¢ãƒã‚¿ãƒ¼ã‚’é¸æŠžã—ã¦ãã ã•ã„。 -ã‚ãªãŸã®æ±ºå®šã¯å¾Œã§å¤‰æ›´ã§ãã¾ã™ã€‚ - <usetemplate - name="okcancelbuttons" - notext="女性" - yestext="男性"/> - </notification> - - <notification - - name="NotEnoughCurrency" - > -[NAME] L$[PRICE] 残高ä¸è¶³ã®ãŸã‚実行ä¸å¯ã§ã™ã€‚ - </notification> - - <notification - - name="GrantedModifyRights" - > -ã‚ãªãŸã«ã¯ã€ [FIRST_NAME] [LAST_NAME]ã®ã‚ªãƒ–ジェクトを修æ£ã™ã‚‹ç‰¹æ¨©ãŒä¸Žãˆã‚‰ã‚Œã¦ã„ã¾ã™ã€‚ - </notification> - - <notification - - name="RevokedModifyRights" - > -[FIRST_NAME] [LAST_NAME]ã®ã‚ªãƒ–ジェクトを修æ£ã™ã‚‹ç‰¹æ¨©ãŒå–り消ã•れã¾ã—ãŸã€‚ - </notification> - - <notification - - name="FlushMapVisibilityCaches" - > -ã“ã®æ‰‹é †ã¯ã€ã“ã®åœ°åŸŸã®åœ°å›³ã®ã‚ャッシュを消去ã—ã¾ã™ã€‚ -ã“れãŒä¾¿åˆ©ãªã®ã¯ãƒ‡ãƒãƒƒã‚°æ™‚ã®ã¿ã§ã™ã€‚ -(作æˆä¸ã¯5分間経ã¤ã¨ã€å…¨å“¡ã®åœ°å›³ãŒå†åº¦ãƒã‚°ã‚¤ãƒ³å¾Œã« -æ›´æ–°ã•れã¾ã™ï¼‰ - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="OnlyCopyContentsOfSingleItem" - > -一度ã«è¤‡æ•°ã®ã‚¢ã‚¤ãƒ†ãƒ ã®ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã¯ã‚³ãƒ”ーã§ãã¾ã›ã‚“。 -é¸æŠžã™ã‚‹ã‚ªãƒ–ジェクトを1ã¤ã ã‘ã«ã—ã¦ã€ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="KickUsersFromRegion" - > -ã“ã®åœ°åŸŸã®å…¨ã¦ã®ä½äººã‚’ホームã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="EstateObjectReturn" - > -[USER_NAME]ãŒæ‰€æœ‰ã—ã¦ã„るオブジェクトを返å´ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="ã‚ャンセル" - yestext="OK"/> - </notification> - - <notification - - name="InvalidTerrainBitDepth" - > -地域テクスãƒãƒ£ã‚’è¨å®šã§ãã¾ã›ã‚“ã§ã—ãŸï¼š -地形テクスãƒãƒ£[TEXTURE_NUM]ã¯ã€ç„¡åйã®ãƒ“ット深度[TEXTURE_BIT_DEPTH]ã§ã™ã€‚ - -テクスãƒãƒ£[TEXTURE_NUM]ã‚’24ビット512x512ã‹ãれ以下ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ã¨äº¤æ›ã—〠-「é©ç”¨ã€ã‚’å†åº¦ã‚¯ãƒªãƒƒã‚¯ã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="InvalidTerrainSize" - > -地域テクスãƒãƒ£ã‚’è¨å®šã§ãã¾ã›ã‚“ã§ã—ãŸï¼š -地形テクスãƒãƒ£[TEXTURE_NUM]ã¯ã€[TEXTURE_SIZE_X]x[TEXTURE_SIZE_Y]ã§ã¯å¤§ãã™ãŽã¾ã™ã€‚ - -テクスãƒãƒ£[TEXTURE_NUM]ã‚’24ビット512x512ã‹ãれ以下ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ã¨äº¤æ›ã—〠-「é©ç”¨ã€ã‚’å†åº¦ã‚¯ãƒªãƒƒã‚¯ã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="RawUploadStarted" - > -アップãƒãƒ¼ãƒ‰é–‹å§‹ã€‚ 接続速度ã«ã‚ˆã£ã¦ã¯ã€ -最大2分間ã‹ã‹ã‚Šã¾ã™ã€‚ - </notification> - - <notification - - name="ConfirmBakeTerrain" - > -ç¾åœ¨ã®åœ°å½¢ã‚’構築ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚ -ã“ã®æ“作を行ã†ã¨ã€ç¾åœ¨ã®åœ°å½¢ãŒä¸Šæ˜‡ï¼ä¸‹é™ã®åˆ¶é™ç¯„囲ã®ä¸å¿ƒã«ãªã‚Šã€ã€Œå¾©å¸°ã€ãƒ„ールã®ãƒ‡ãƒ•ォルトã«ãªã‚Šã¾ã™ã€‚ -æ“作を続行ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="MaxAllowedAgentOnRegion" - > -許å¯ä½äººã¯ [MAX_AGENTS] 人ã¾ã§ã§ã™ã€‚ - </notification> - - <notification - - name="MaxBannedAgentsOnRegion" - > -ç¦æ¢ä½äººã¯[MAX_BANNED]人ã¾ã§ã§ã™ã€‚ - </notification> - - <notification - - name="MaxAgentOnRegionBatch" - > -[NUM_ADDED] 個ã®ã‚¨ãƒ¼ã‚¸ã‚§ãƒ³ãƒˆã‚’è¿½åŠ ã—よã†ã¨ã—ã¦å¤±æ•—ã—ã¾ã—ãŸï¼š [MAX_AGENTS] [LIST_TYPE] 制é™ã‚’ [NUM_EXCESS] 個超éŽã—ã¦ã„ã¾ã™ã€‚ - </notification> - - <notification - - name="MaxAllowedGroupsOnRegion" - > -許å¯ã‚°ãƒ«ãƒ¼ãƒ—ã¯[MAX_GROUPS]グループã¾ã§ã§ã™ã€‚ - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="構築ã™ã‚‹"/> - </notification> - - <notification - - name="MaxManagersOnRegion" - > -ä¸å‹•産マãƒãƒ¼ã‚¸ãƒ£ãƒ¼ã¯[MAX_MANAGER]人ã¾ã§ã§ã™ã€‚ - </notification> - - <notification - - name="OwnerCanNotBeDenied" - > -ä¸å‹•産オーナーをä¸å‹•ç”£ã€Œç¦æ¢ä½äººã€ãƒªã‚¹ãƒˆã«è¿½åŠ ã§ãã¾ã›ã‚“。 - </notification> - - <notification - - name="CanNotChangeAppearanceUntilLoaded" - > -æœãŠã‚ˆã³å½¢ãŒãƒãƒ¼ãƒ‰ã•れるã¾ã§ã€å®¹å§¿ã®å¤‰æ›´ã¯ã§ãã¾ã›ã‚“。 - </notification> - - <notification - - name="ClassifiedMustBeAlphanumeric" - > -クラシファイド広告ã®åå‰ã¯ã€ã‚¢ãƒ«ãƒ•ァベット㋠-æ•°å—ã§å§‹ã‚ã¾ã™ã€‚ å¥èªç‚¹ã§ã¯å§‹ã‚られã¾ã›ã‚“。 - </notification> - - <notification - - name="CantSetBuyObject" - > -オブジェクトãŒè²©å£²å¯¾è±¡ã§ã¯ãªã„ãŸã‚ã€ã‚ªãƒ–ジェクトã®è³¼å…¥ãŒè¨å®šã§ãã¾ã›ã‚“。 -販売対象ã®ã‚ªãƒ–ジェクトをè¨å®šã—ã€ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="FinishedRawDownload" - > -æœªåŠ å·¥ã®åœ°å½¢ãƒ•ァイルを次ã¸ã¨ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ã—ã¾ã—ãŸï¼š -[DOWNLOAD_PATH]。 - </notification> - - <notification - - name="DownloadWindowsMandatory" - > -[SECOND_LIFE]ã®æ–°ã—ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒåˆ©ç”¨å¯èƒ½ã§ã™ã€‚ -[MESSAGE] -[SECOND_LIFE]を使用ã™ã‚‹ãŸã‚ã«ã€ã“ã®ã‚¢ãƒƒãƒ—デートをダウンãƒãƒ¼ãƒ‰ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ - <usetemplate - name="okcancelbuttons" - notext="終了" - yestext="ダウンãƒãƒ¼ãƒ‰"/> - </notification> - - <notification - - name="DownloadWindows" - > -[SECOND_LIFE]ã®ã‚¢ãƒƒãƒ—デート・ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒåˆ©ç”¨å¯èƒ½ã§ã™ã€‚ -[MESSAGE] -ã“ã®ã‚¢ãƒƒãƒ—デートã¯å¿…é ˆã§ã¯ã‚りã¾ã›ã‚“ãŒã€ãƒ‘フォーマンスã¨å®‰å®šæ€§ã‚’å‘上ã•ã›ã‚‹ãŸã‚ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹ã“ã¨ã‚’ãŠå‹§ã‚ã—ã¾ã™ã€‚ - <usetemplate - name="okcancelbuttons" - notext="続行" - yestext="ダウンãƒãƒ¼ãƒ‰"/> - </notification> - - <notification - - name="DownloadWindowsReleaseForDownload" - > -[SECOND_LIFE]ã®ã‚¢ãƒƒãƒ—デート・ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒåˆ©ç”¨å¯èƒ½ã§ã™ã€‚ -[MESSAGE] -ã“ã®ã‚¢ãƒƒãƒ—デートã¯å¿…é ˆã§ã¯ã‚りã¾ã›ã‚“ãŒã€ãƒ‘フォーマンスã¨å®‰å®šæ€§ã‚’å‘上ã•ã›ã‚‹ãŸã‚ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹ã“ã¨ã‚’ãŠå‹§ã‚ã—ã¾ã™ã€‚ - <usetemplate - name="okcancelbuttons" - notext="続行" - yestext="ダウンãƒãƒ¼ãƒ‰"/> - </notification> - - <notification - - name="DownloadMacMandatory" - > -[SECOND_LIFE]ã®æ–°ã—ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒåˆ©ç”¨å¯èƒ½ã§ã™ã€‚ -[MESSAGE] -[SECOND_LIFE]を使用ã™ã‚‹ãŸã‚ã«ã€ã“ã®ã‚¢ãƒƒãƒ—デートをダウンãƒãƒ¼ãƒ‰ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ - -アプリケーションãŒã‚るフォルダã«ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="終了" - yestext="ダウンãƒãƒ¼ãƒ‰"/> - </notification> - - <notification - - name="DownloadMac" - > -[SECOND_LIFE]ã®ã‚¢ãƒƒãƒ—デート・ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒåˆ©ç”¨å¯èƒ½ã§ã™ã€‚ -[MESSAGE] -ã“ã®ã‚¢ãƒƒãƒ—デートã¯å¿…é ˆã§ã¯ã‚りã¾ã›ã‚“ãŒã€ãƒ‘フォーマンスã¨å®‰å®šæ€§ã‚’å‘上ã•ã›ã‚‹ãŸã‚ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹ã“ã¨ã‚’ãŠå‹§ã‚ã—ã¾ã™ã€‚ - -アプリケーションãŒã‚るフォルダã«ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="続行" - yestext="ダウンãƒãƒ¼ãƒ‰"/> - </notification> - - <notification - - name="DownloadMacReleaseForDownload" - > -[SECOND_LIFE]ã®ã‚¢ãƒƒãƒ—デート・ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒåˆ©ç”¨å¯èƒ½ã§ã™ã€‚ -[MESSAGE] -ã“ã®ã‚¢ãƒƒãƒ—デートã¯å¿…é ˆã§ã¯ã‚りã¾ã›ã‚“ãŒã€ãƒ‘フォーマンスã¨å®‰å®šæ€§ã‚’å‘上ã•ã›ã‚‹ãŸã‚ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹ã“ã¨ã‚’ãŠå‹§ã‚ã—ã¾ã™ã€‚ - -アプリケーションãŒã‚るフォルダã«ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="続行" - yestext="ダウンãƒãƒ¼ãƒ‰"/> - </notification> - - <notification - - name="DeedObjectToGroup" - > -ã“ã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’è²æ¸¡ã™ã‚‹ã¨ã‚°ãƒ«ãƒ¼ãƒ—ã«ä»¥ä¸‹ã®ã“ã¨ãŒèµ·ã“りã¾ã™ï¼š -* ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã«æ”¯æ‰•ã‚れãŸL$ã‚’å—é ˜ã—ã¾ã™ã€‚ - <usetemplate - ignoretext="オブジェクトをグループã«è²æ¸¡ã™ã‚‹ã¨ã" - name="okcancelignore" - notext="å–り消ã—" - yestext="è²æ¸¡"/> - </notification> - - <notification - - name="WebLaunchExternalTarget" - > -ãŠä½¿ã„ã®ã‚·ã‚¹ãƒ†ãƒ ã®ã‚¦ã‚§ãƒ–・ブラウザを開ã„ã¦ã€ã“ã®å†…容を表示ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - ignoretext="ãŠä½¿ã„ã®ã‚·ã‚¹ãƒ†ãƒ ã®ãƒ–ラウザを開ã„ã¦ã‚¦ã‚§ãƒ–・ページを表示ã—よã†ã¨ã—ãŸã¨ã" - name="okcancelignore" - notext="ã‚ャンセル" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchJoinNow" - > -www.secondlife.comã«ç§»å‹•ã—ã¦ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’管ç†ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - ignoretext="アカウントを管ç†ã™ã‚‹ãŸã‚ã€ã‚¦ã‚§ãƒ–・ブラウザを起動ã™ã‚‹ã¨ã" - name="okcancelignore" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchBugReport101" - > -[SECOND_LIFE]Wikiã§ã€ãƒã‚°ã‚’å ±å‘Šã™ã‚‹æ£ã—ã„æ–¹æ³•ã‚’ã”覧ãã ã•ã„。 - <usetemplate - ignoretext="ãƒã‚°ãƒ¬ãƒãƒ¼ãƒˆ101 Wikiを閲覧ã™ã‚‹ãŸã‚ã®ãƒ–ラウザを開ãã«ã‚ãŸã£ã¦" - name="okcancelignore" - notext="ã‚ャンセル" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchSecurityIssues" - > -[SECOND_LIFE]Wikiã§ã€ã‚»ã‚ュリティå•é¡Œã‚’å ±å‘Šã™ã‚‹æ–¹æ³•ã‚’ã”覧ãã ã•ã„。 - <usetemplate - ignoretext="ã‚»ã‚ュリティå•題Wikiを閲覧ã™ã‚‹ãŸã‚ã«ã‚¦ã‚§ãƒ–・ブラウザを起動ã™ã‚‹ã«ã‚ãŸã£ã¦" - name="okcancelignore" - notext="ã‚ャンセル" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchQAWiki" - > -[SECOND_LIFE] å“質ä¿è¨¼é–¢é€£Wikiã‚’ã”覧ãã ã•ã„。 - <usetemplate - ignoretext="å“質ä¿è¨¼é–¢é€£Wikiを閲覧ã™ã‚‹ãŸã‚ã«ã‚¦ã‚§ãƒ–・ブラウザを起動ã™ã‚‹ã«ã‚ãŸã£ã¦" - name="okcancelignore" - notext="ã‚ャンセル" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchPublicIssue" - > -[SECOND_LIFE]ã®ãƒ‘ブリックå•題トラッカーã§ã€ãƒã‚°ã‚„ãã®ä»–ã®å•é¡Œã‚’å ±å‘Šã§ãã¾ã™ã€‚ - <usetemplate - ignoretext="パブリックå•題トラッカーを閲覧ã™ã‚‹ãŸã‚ã«ã‚¦ã‚§ãƒ–・ブラウザを起動ã™ã‚‹ã«ã‚ãŸã£ã¦" - name="okcancelignore" - notext="ã‚ャンセル" - yestext="ページã¸è¡Œã"/> - </notification> - - <notification - - name="WebLaunchPublicIssueHelp" - > -[SECOND_LIFE]Wikiã§ã€ãƒ‘ブリックå•題トラッカーã®ä½¿ç”¨æ–¹æ³•ã‚’ã”覧ãã ã•ã„。 - <usetemplate - ignoretext="パブリックå•題トラッカーWikiを閲覧ã™ã‚‹ãŸã‚ã«ã‚¦ã‚§ãƒ–・ブラウザを起動ã™ã‚‹ã«ã‚ãŸã£ã¦" - name="okcancelignore" - notext="ã‚ャンセル" - yestext="ページã¸è¡Œã"/> - </notification> - - <notification - - name="WebLaunchSupportWiki" - > -Lindenå…¬å¼ãƒ–ãƒã‚°ã§ã€æœ€æ–°ã®ãƒ‹ãƒ¥ãƒ¼ã‚¹ã‚„æƒ…å ±ã‚’å…¥æ‰‹ã—ã¦ãã ã•ã„。 - <usetemplate - ignoretext="ブãƒã‚°ã‚’表示ã™ã‚‹ãŸã‚ã€ã‚¦ã‚§ãƒ–・ブラウザを起動ã™ã‚‹ã¨ã" - name="okcancelignore" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchLSLGuide" - > -スクリプトガイドを開ã„ã¦ã€ã‚¹ã‚¯ãƒªãƒ—トã®ãƒ˜ãƒ«ãƒ—ã‚’å‚ç…§ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - ignoretext="LSLガイドを表示ã™ã‚‹ãŸã‚ã€ã‚¦ã‚§ãƒ–・ブラウザを起動ã™ã‚‹ã¨ã" - name="okcancelignore" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchLSLWiki" - > -LSLãƒãƒ¼ã‚¿ãƒ«ã‚’é–‹ã„ã¦ã‚¹ã‚¯ãƒªãƒ—トã®ãƒ˜ãƒ«ãƒ—ã‚’å‚ç…§ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - ignoretext="LSLãƒãƒ¼ã‚¿ãƒ«ã‚’表示ã™ã‚‹ãŸã‚ã«ã€ã‚¦ã‚§ãƒ–・ブラウザを起動ã™ã‚‹ã¨ã" - name="okcancelignore" - notext="å–り消ã—" - yestext="ページã«ç§»å‹•"/> - </notification> - - <notification - - name="ReturnToOwner" - > -é¸æŠžã—ãŸã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’ã€æ‰€æœ‰è€…ã«è¿”å´ã—ã¾ã™ã‹ï¼Ÿ -è²æ¸¡å¯èƒ½ãªã‚ªãƒ–ジェクト㯠-以å‰ã®æ‰€æœ‰è€…ã«è¿”å´ã•れã¾ã™ã€‚ - -*è¦å‘Š* 移転ãŒä¸å¯èƒ½ã®è²æ¸¡ã•れãŸã‚ªãƒ–ジェクトã¯å‰Šé™¤ã•れã¾ã™ï¼ - <usetemplate - ignoretext="オブジェクトをæŒã¡ä¸»ã«è¿”å´ã™ã‚‹ã¨ã" - name="okcancelignore" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="GroupLeaveConfirmMember" - > -ç¾åœ¨ã‚ãªãŸã¯ [GROUP]ã®ãƒ¡ãƒ³ãƒãƒ¼ã§ã™ã€‚ -ã“ã“ã‹ã‚‰æŠœã‘ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmKick" - > -ã™ã¹ã¦ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’グリッド外ã«ã‚ックã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚æ“作を続行ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="ã‚ャンセル" - yestext="å…¨ã¦ã®ãƒ¦ãƒ¼ã‚¶ã‚’追ã„出ã™"/> - </notification> - - <notification - - name="MuteLinden" - > -残念ãªãŒã‚‰ã€Lindenをミュートã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - label="オブジェクトをåå‰ã§ãƒŸãƒ¥ãƒ¼ãƒˆã§ãã¾ã›ã‚“ã§ã—ãŸ" - name="MuteByNameFailed" - > -ã‚ãªãŸã¯ã™ã§ã«ã“ã®åå‰ã‚’ミュートã—ã¦ã„ã¾ã™ã€‚ - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="RemoveItemWarn" - > -コンテンツを削除ã™ã‚‹ã¨ã€è¨±å¯ãŒã‚ã£ã¦ã‚‚ã€ã‚ªãƒ–ジェクトã«ãƒ€ãƒ¡ãƒ¼ã‚¸ã‚’与ãˆã‚‹ã“ã¨ãŒã‚りã¾ã™ã€‚ -ãã®ã‚¢ã‚¤ãƒ†ãƒ ã®å‰Šé™¤ã‚’ç¶šã‘ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="ã‚ャンセル" - yestext="OK"/> - </notification> - - <notification - - name="CantOfferCallingCard" - > -ç¾åœ¨ã‚³ãƒ¼ãƒªãƒ³ã‚°ãƒ»ã‚«ãƒ¼ãƒ‰ã‚’贈れã¾ã›ã‚“。数分後ã«ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="CantOfferFriendship" - > -ç¾åœ¨ãƒ•レンドシップを贈れã¾ã›ã‚“。数分後ã«è©¦ã—ã¦ãã ã•ã„。 - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="BusyModeSet" - > -å–り込ã¿ä¸ã«è¨å®šã•れã¾ã—ãŸã€‚ -ãƒãƒ£ãƒƒãƒˆã¨ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ãƒˆãƒ»ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ï¼ˆIM)ãŒéš れã¾ã™ã€‚ -相手ã¯ã€Œå–り込ã¿ä¸å¿œç”メッセージã€ã‚’IMã§å—ã‘å–りã¾ã™ã€‚ -テレãƒãƒ¼ãƒˆã®ã‚ªãƒ•ァーã¯å…¨ã¦æ‹’å¦ã•ã‚Œã€æŒã¡ç‰©ã®ã‚ªãƒ•ァーã¯å…¨ã¦ã‚´ãƒŸç®±ã«é€ã‚‰ã‚Œã¾ã™ã€‚ - <usetemplate - ignoretext="å–り込ã¿ä¸ã®è¨å®šã‚’ã™ã‚‹ã¨ã" - name="okignore" - yestext="OK"/> - </notification> - - <notification - - name="JoinedTooManyGroupsMember" - > -ã‚ãªãŸã¯ç¾åœ¨ãƒ¡ãƒ³ãƒãƒ¼ã«ãªã£ã¦ã„るグループãŒå¤šã™ãŽã‚‹ãŸã‚〠-ä»–ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«å‚åŠ ã§ãã¾ã›ã‚“。少ãªãã¨ã‚‚1ã¤ã®ã‚°ãƒ«ãƒ¼ãƒ—を脱退ã—ã¦ã‹ã‚‰ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«å‚åŠ ã™ã‚‹ã‹ã€ -ã“ã®æ‹›å¾…ã‚’æ–ã£ã¦ãã ã•ã„。 -グループを抜ã‘ã‚‹ã«ã¯ã€ç·¨é›†ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã‹ã‚‰ã€Œã‚°ãƒ«ãƒ¼ãƒ—...ã€ã‚ªãƒ—ションを -ã‚’é¸æŠžã—ã¾ã™ã€‚ -[NAME]ã¯ã€ã‚ãªãŸã‚’メンãƒãƒ¼ã¨ã—ã¦ã‚°ãƒ«ãƒ¼ãƒ—ã«æ‹›å¾…ã—ã¦ã„ã¾ã™ã€‚ -[INVITE] - <usetemplate - name="okcancelbuttons" - notext="辞退" - yestext="å‚åŠ "/> - </notification> - - <notification - - name="KickUser" - > -ã©ã‚“ãªãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’表示ã—ã¦ã€ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’追ã„出ã—ã¾ã™ã‹ï¼Ÿ - <form name="form"> - <input name="message" type="text"> -ã‚ãªãŸã¯ç®¡ç†è€…ã«ã‚ˆã‚Šãƒã‚°ã‚ªãƒ•ã•れã¾ã—ãŸã€‚ - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="å–り消ã—"/> - </form> - </notification> - - <notification - - name="KickAllUsers" - > -ã©ã‚“ãªãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’表示ã—ã¦ã€ã‚°ãƒªãƒƒãƒ‰ã«ã„る全員を追ã„出ã—ã¾ã™ã‹ï¼Ÿ - <form name="form"> - <input name="message" type="text"> -ã‚ãªãŸã¯ç®¡ç†è€…ã«ã‚ˆã‚Šãƒã‚°ã‚ªãƒ•ã•れã¾ã—ãŸã€‚ - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="å–り消ã—"/> - </form> - </notification> - - <notification - - name="FreezeUser" - > -ã©ã‚“ãªãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’表示ã—ã¦ã€ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’フリーズã—ã¾ã™ã‹ï¼Ÿ - <form name="form"> - <input name="message" type="text"> -ã‚ãªãŸã¯ãƒ•リーズã•れã¦ã„ã¾ã™ã€‚ å‹•ãã“ã¨ã‚‚ãƒãƒ£ãƒƒãƒˆã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã›ã‚“。 管ç†è€…ãŒIMを通ã˜ã¦ã‚ãªãŸã«é€£çµ¡ã—ã¾ã™ã€‚ - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="å–り消ã—"/> - </form> - </notification> - - <notification - - name="UnFreezeUser" - > -ã©ã‚“ãªãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’表示ã—ã¦ã€ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ãƒ•リーズを解除ã—ã¾ã™ã‹ï¼Ÿ - <form name="form"> - <input name="message" type="text"> -ã‚‚ã†ãƒ•リーズã•れã¦ã„ã¾ã›ã‚“。 - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="å–り消ã—"/> - </form> - </notification> - - <notification - - name="OfferTeleport" - > -次ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’æ·»ãˆã¦ã‚ãªãŸãŒä»Šã„ã‚‹å ´æ‰€ã¸ã®ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã‚’é€ã‚Šã¾ã™ã‹ï¼Ÿ - <form name="form"> - <input name="message" type="text"> -[REGION]ã«æ¥ã¾ã›ã‚“ã‹ï¼Ÿ - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="å–り消ã—"/> - </form> - </notification> - - <notification - - name="OfferTeleportFromGod" - > -ユーザーをゴッド・コールã§å‘¼ã³å¯„ã›ã¾ã™ã‹ï¼Ÿ - <form name="form"> - <input name="message" type="text"> -[REGION]ã«æ¥ã¾ã›ã‚“ã‹ï¼Ÿ - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="å–り消ã—"/> - </form> - </notification> - - <notification - - name="TeleportFromLandmark" - > -本当ã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - ignoretext="æŒã¡ç‰©ã®ãƒ©ãƒ³ãƒ‰ãƒžãƒ¼ã‚¯ã‹ã‚‰ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã™ã‚‹æ™‚" - name="okcancelignore" - notext="ã‚ャンセル" - yestext="テレãƒãƒ¼ãƒˆ"/> - </notification> - - <notification - - label="ã‚ãªãŸã®ä¸å‹•産内ã®å…¨å“¡ã«ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’é€ä¿¡" - name="MessageEstate" - > -今ã‚ãªãŸã®ä¸å‹•産ã«ã„る人全員ã«é€ã‚‹ -çŸã„メッセージを入力ã—ã¦ãã ã•ã„。 - <form name="form"> - <input name="message" type="text"/> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="å–り消ã—"/> - </form> - </notification> - - <notification - - label="Lindenã®ä¸å‹•産を変更" - name="ChangeLindenEstate" - > -ã‚ãªãŸã¯Linden所有ã®ä¸å‹•産(メインランドã€ãƒ†ã‚£ãƒ¼ãƒ³ãƒ»ã‚°ãƒªãƒƒãƒ‰ã€ã‚ªãƒªã‚¨ãƒ³ãƒ†ãƒ¼ã‚·ãƒ§ãƒ³ãªã©ï¼‰ã‚’変更ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚ - -ã“れã¯ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®çµŒé¨“ã‚’æ ¹æœ¬ã‹ã‚‰æºã‚‹ãŒã—ã‹ããªã„「éžå¸¸ã«å±é™ºãªè¡Œç‚ºã€ã§ã™ã€‚ -ã“れã«ã‚ˆã‚Šã€ãƒ¡ã‚¤ãƒ³ãƒ©ãƒ³ãƒ‰ã§å¤šæ•°ã®åœ°åŸŸãŒå¤‰æ›´ã•れã€ã‚¹ãƒšãƒ¼ã‚¹ã‚µãƒ¼ãƒãƒ¼ã«æ‚ªå½±éŸ¿ãŒç”Ÿã˜ã¾ã™ã€‚ - -æ“作を続行ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - label="Lindenã®ä¸å‹•産ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’変更" - name="ChangeLindenAccess" - > -ã‚ãªãŸã¯Linden所有ã®ä¸å‹•産(メインランドã€ãƒ†ã‚£ãƒ¼ãƒ³ãƒ»ã‚°ãƒªãƒƒãƒ‰ã€ã‚ªãƒªã‚¨ãƒ³ãƒ†ãƒ¼ã‚·ãƒ§ãƒ³ãªã©ï¼‰ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ãƒ»ãƒªã‚¹ãƒˆã‚’変更ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚ - -ã“ã®è¡Œç‚ºã¯ã€Œå±é™ºã€ã§ã‚りã€ã‚°ãƒªãƒƒãƒ‰ã‹ã‚‰ã‚ªãƒ–ジェクトやãŠé‡‘ã®è»¢é€ã‚’ã‚‚ãŸã‚‰ã™ -ãƒãƒƒã‚ングを引ãèµ·ã“ã™å¯èƒ½æ€§ãŒ -ã‚ã‚‹ãŸã‚ã€å®Œå…¨ã«ãれをæ„図ã—ãŸå ´åˆã®ã¿è¡Œã†ã¹ãã‚‚ã®ã§ã™ã€‚ -ã“れã«ã‚ˆã‚Šå¤šæ•°ã®åœ°åŸŸãŒå¤‰æ›´ã•れã€ã‚¹ãƒšãƒ¼ã‚¹ã‚µãƒ¼ãƒãƒ¼ã« -悪影響ãŒç”Ÿã˜ã¾ã™ã€‚ - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - label="ä¸å‹•ç”£ã‚’é¸æŠž" - name="EstateAllowedAgentAdd" - > -ã“ã®ä¸å‹•産ã®è¨±å¯ãƒªã‚¹ãƒˆã ã‘ã«è¿½åŠ ã—ã¾ã™ã‹ï¼Ÿ ãれã¨ã‚‚[ALL_ESTATES]ã®ã™ã¹ã¦ã®è¨±å¯ãƒªã‚¹ãƒˆã«è¿½åŠ ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - canceltext="å–り消ã—" - name="yesnocancelbuttons" - notext="ã™ã¹ã¦ã®ä¸å‹•産" - yestext="ã“ã®ä¸å‹•産"/> - </notification> - - <notification - - label="ä¸å‹•ç”£ã‚’é¸æŠž" - name="EstateAllowedAgentRemove" - > -許å¯ãƒªã‚¹ãƒˆã‹ã‚‰ã®å‰Šé™¤ã‚’ã“ã®ä¸å‹•産ã«ã¤ã„ã¦ã®ã¿è¡Œã„ã¾ã™ã‹ï¼Ÿ ãれã¨ã‚‚ã€[ALL_ESTATES]ã«ã¤ã„ã¦è¡Œã„ã¾ã™ã‹ï¼Ÿ - <usetemplate - canceltext="å–り消ã—" - name="yesnocancelbuttons" - notext="ã™ã¹ã¦ã®ä¸å‹•産" - yestext="ã“ã®ä¸å‹•産"/> - </notification> - - <notification - - label="ä¸å‹•ç”£ã‚’é¸æŠž" - name="EstateAllowedGroupAdd" - > -ã“ã®ä¸å‹•産ã®ã‚°ãƒ«ãƒ¼ãƒ—許å¯ãƒªã‚¹ãƒˆã ã‘ã«è¿½åŠ ã—ã¾ã™ã‹ï¼Ÿ ãれã¨ã‚‚[ALL_ESTATES]ã®ã‚°ãƒ«ãƒ¼ãƒ—許å¯ãƒªã‚¹ãƒˆã«è¿½åŠ ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - canceltext="å–り消ã—" - name="yesnocancelbuttons" - notext="ã™ã¹ã¦ã®ä¸å‹•産" - yestext="ã“ã®ä¸å‹•産"/> - </notification> - - <notification - - label="ä¸å‹•ç”£ã‚’é¸æŠž" - name="EstateAllowedGroupRemove" - > -許å¯ãƒªã‚¹ãƒˆã‹ã‚‰ã®å‰Šé™¤ã‚’ã“ã®ä¸å‹•産ã«ã¤ã„ã¦ã®ã¿è¡Œã„ã¾ã™ã‹ï¼Ÿ ãれã¨ã‚‚ã€[ALL_ESTATES]ã«ã¤ã„ã¦è¡Œã„ã¾ã™ã‹ï¼Ÿ - <usetemplate - canceltext="å–り消ã—" - name="yesnocancelbuttons" - notext="ã™ã¹ã¦ã®ä¸å‹•産" - yestext="ã“ã®ä¸å‹•産"/> - </notification> - - <notification - - label="ä¸å‹•ç”£ã‚’é¸æŠž" - name="EstateBannedAgentAdd" - > -ã“ã®ä¸å‹•産ã«ã¤ã„ã¦ã®ã¿ã‚¢ã‚¯ã‚»ã‚¹ã‚’æ‹’å¦ã—ã¾ã™ã‹ï¼Ÿ ãれã¨ã‚‚[ALL_ESTATE]ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’æ‹’å¦ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - canceltext="å–り消ã—" - name="yesnocancelbuttons" - notext="ã™ã¹ã¦ã®ä¸å‹•産" - yestext="ã“ã®ä¸å‹•産"/> - </notification> - - <notification - - label="ä¸å‹•ç”£ã‚’é¸æŠž" - name="EstateBannedAgentRemove" - > -ã“ã®ä½äººã‚’ã€ã“ã®ä¸å‹•産ã®ã¿ã€ã¾ãŸã¯[ALL_ESTATES]ã¸ã¨ã‚¢ã‚¯ã‚»ã‚¹ã§ãるよã†ã«ã€ç¦æ¢ãƒªã‚¹ãƒˆã‹ã‚‰å‰Šé™¤ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - canceltext="å–り消ã—" - name="yesnocancelbuttons" - notext="ã™ã¹ã¦ã®ä¸å‹•産" - yestext="ã“ã®ä¸å‹•産"/> - </notification> - - <notification - - label="ä¸å‹•ç”£ã‚’é¸æŠž" - name="EstateManagerAdd" - > -ã“ã®ä¸å‹•産ã®ã¿ã€ã¾ãŸã¯[ALL_ESTATES]ã«å¯¾ã—ã¦ã€ä¸å‹•産マãƒãƒ¼ã‚¸ãƒ£ãƒ¼ã‚’è¿½åŠ ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - canceltext="å–り消ã—" - name="yesnocancelbuttons" - notext="ã™ã¹ã¦ã®ä¸å‹•産" - yestext="ã“ã®ä¸å‹•産"/> - </notification> - - <notification - - label="ä¸å‹•ç”£ã‚’é¸æŠž" - name="EstateManagerRemove" - > -ä¸å‹•産マãƒãƒ¼ã‚¸ãƒ£ãƒ¼ã‚’ã€ã“ã®ä¸å‹•産ã®ã¿ã€ã¾ãŸã¯[ALL_ESTATES]ã‹ã‚‰ã€å‰Šé™¤ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - canceltext="å–り消ã—" - name="yesnocancelbuttons" - notext="ã™ã¹ã¦ã®ä¸å‹•産" - yestext="ã“ã®ä¸å‹•産"/> - </notification> - - <notification - - label="ã‚ックを確èª" - name="EstateKickUser" - > -ã“ã®ä¸å‹•産ã‹ã‚‰[EVIL_USER]を追ã„出ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="EstateChangeCovenant" - > -ä¸å‹•産約款を変更ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚æ“作を続行ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="ProblemImportingEstateCovenant" - > -ä¸å‹•産約款ã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆæ™‚ã«å•題発生。 - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="ProblemAddingEstateManager" - > -æ–°ã—ã„ä¸å‹•産マãƒãƒ¼ã‚¸ãƒ£ãƒ¼ã®è¿½åŠ ã«é–¢ã™ã‚‹å•題。1ã¤ä»¥ä¸Šã®ä¸å‹•産ã§ã€ãƒžãƒãƒ¼ã‚¸ãƒ£ãƒ¼ãƒªã‚¹ãƒˆãŒæº€æ¯ã«ãªã£ã¦ã„ã¾ã™ã€‚ - </notification> - - <notification - - name="ProblemAddingEstateGeneric" - > -ä¸å‹•産リストã®è¿½åŠ ã«é–¢ã™ã‚‹å•題。1ã¤ä»¥ä¸Šã®ä¸å‹•産ã§ã€ãƒªã‚¹ãƒˆãŒæº€æ¯ã«ãªã£ã¦ã„ã¾ã™ã€‚ - </notification> - - <notification - - name="UnableToLoadNotecard" - > -ç¾åœ¨ãƒŽãƒ¼ãƒˆã‚«ãƒ¼ãƒ‰ã®è³‡ç”£ã‚’ãƒãƒ¼ãƒ‰ã§ãã¾ã›ã‚“。 - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="NotAllowedToViewNotecard" - > -è¦æ±‚ã•れãŸè³‡ç”£IDã«é–¢ã™ã‚‹ãƒŽãƒ¼ãƒˆã‚«ãƒ¼ãƒ‰ã‚’閲覧ã™ã‚‹ã«ã¯æ¨©é™ãŒä¸å分ã§ã™ã€‚ - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="MissingNotecardAssetID" - > -ノートカード用資産IDãŒãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«ç™»éŒ²ã•れã¦ã„ã¾ã›ã‚“。 - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="PublishClassified" - > -注æ„ï¼šã‚¯ãƒ©ã‚·ãƒ•ã‚¡ã‚¤ãƒ‰åºƒå‘Šã®æ–™é‡‘ã¯æ‰•ã„æˆ»ã—ã•れã¾ã›ã‚“。 - -L$[AMOUNT]ã§ã€ã“ã®ã‚¯ãƒ©ã‚·ãƒ•ァイド広告を今ã™ã公開ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - - - - - <notification - - label="å†èµ·å‹•を確èª" - name="ConfirmRestart" - > -ã“ã®åœ°åŸŸã‚’2分後ã«å†èµ·å‹•ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚æ“作を続行ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - label="ã“ã®åœ°åŸŸå†…ã®å…¨å“¡ã«ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’é€ä¿¡" - name="MessageRegion" - > -ã“ã®åœ°åŸŸã«ã„る人全員ã«é€ã‚‹ -çŸã„メッセージを入力ã—ã¦ãã ã•ã„。 - <form name="form"> - <input name="message" type="text"/> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="å–り消ã—"/> - </form> - </notification> - - <notification - - label="土地整備をブãƒãƒƒã‚¯" - name="HelpRegionBlockTerraform" - > -ã“ã®ãƒœãƒƒã‚¯ã‚¹ãŒãƒã‚§ãƒƒã‚¯ã•れã¦ã„ã‚‹å ´åˆã€ -区画ã”ã¨ã®ã€Œé ˜åŸŸã‚’編集ã€ã®è¨å®šã«ã‹ã‹ã‚らãšã€åœŸåœ°ã‚ªãƒ¼ãƒŠãƒ¼ã¯åœŸåœ°æ•´å‚™ãŒã§ãã¾ã›ã‚“。 - -デフォルト:オフ - </notification> - - <notification - - label="飛行をブãƒãƒƒã‚¯" - name="HelpRegionBlockFly" - > -ã“ã®ãƒœãƒƒã‚¯ã‚¹ã‚’ãƒã‚§ãƒƒã‚¯ã™ã‚‹ã¨ã€åŒºç”»ã”ã¨ã®ã€Œé£›è¡Œã€è¨å®šã«é–¢ã‚らãšé£›è¡ŒãŒã§ããªããªã‚Šã¾ã™ã€‚ - -デフォルト:オフ - </notification> - - <notification - - label="ダメージ許å¯" - name="HelpRegionAllowDamage" - > -ã“ã®ãƒœãƒƒã‚¯ã‚¹ã‚’ãƒã‚§ãƒƒã‚¯ã™ã‚‹ã¨ã€å„区画ã®å€‹åˆ¥ã®è¨å®šã«ã‹ã‹ã‚らãšã€å…¨ã¦ã®åŒºç”»ã«ãŠã‘ã‚‹ -ヘルスシステムを有効ã«ã—ã¾ã™ã€‚ã“ã®ãƒœãƒƒã‚¯ã‚¹ãŒãƒã‚§ãƒƒã‚¯ã•れã¦ã„ãªã„å ´åˆã§ã‚‚〠-個別ã®åŒºç”»ã®ã‚ªãƒ¼ãƒŠãƒ¼ã¯ã€è‡ªåˆ†ã®åŒºç”»ã«å¯¾ã™ã‚‹ãƒ˜ãƒ«ã‚¹ã‚·ã‚¹ãƒ†ãƒ ã‚’ -有効ã«ã§ãã¾ã™ã€‚ - -デフォルト: オフ - </notification> - - <notification - - label="人物ã®åˆ¶é™" - name="HelpRegionAgentLimit" - > -ã“ã®åœ°åŸŸã«è¨±å¯ã•れるアãƒã‚¿ãƒ¼ã®æœ€å¤§æ•°ã‚’è¨å®šã—ã¾ã™ã€‚ -1ã¤ã®åœ°åŸŸã«ã‚¢ãƒã‚¿ãƒ¼ãŒå¤šã„ã¨ãƒ‘フォーマンス㌠-低下ã™ã‚‹åŽŸå› ã«ãªã‚‹ã®ã§æ³¨æ„ã—ã¦ãã ã•ã„。 - -デフォルト: 40 - </notification> - - <notification - - label="物体ボーナス" - name="HelpRegionObjectBonus" - > -オブジェクトボーナスã¯ã€åŒºç”»ã«ãŠã„ã¦è¨±å¯ã•れã¦ã„るプリムã®å€çŽ‡æ•°ã‚’ -æ„味ã—ã¾ã™ã€‚èªå¯ã•れã¦ã„る範囲ã¯1ã‹ã‚‰10ã§ã™ã€‚ã—ãŸãŒã£ã¦ã€ã€Œ1ã€ã«è¨å®šã™ã‚‹ã¨ã€512 m²ã®åœŸåœ°ã«ã¯ã€ -117ã®ã‚ªãƒ–ジェクトãŒè¨±å¯ã•れã¾ã™ã€‚「2ã€ã«è¨å®šã™ã‚‹ã¨ã€åŒã˜512 m²ã®åœŸåœ°ã«ã¯ã€1ã®ã¨ãã®2å€ã«ã‚ãŸã‚‹ -234ã®ã‚ªãƒ–ジェクトãŒè¨±å¯ã•れã€3以é™ã‚‚åŒæ§˜ã«å¢—ãˆã¦ã„ãã¾ã™ã€‚å…¨åœ°åŸŸã®æœ€é«˜ã‚ªãƒ–ジェクト数ã¯ã€ -オブジェクトボーナスã®å€¤ã«å½±éŸ¿ã•れãšã€ -15,000ã®ã¾ã¾å¤‰ã‚りã¾ã›ã‚“。ã„ã£ãŸã‚“決定ã—ãŸå¾Œã§ã‚ªãƒ–ジェクトボーナスã®å€¤ã‚’下ã’ã‚‹ã¨ã€ã‚ªãƒ–ジェクトãŒè¿”å´ã¾ãŸã¯å‰Šé™¤ã•れるå¯èƒ½æ€§ãŒã‚りã¾ã™ã®ã§ã”注æ„ãã ã•ã„。 -ディフォルト: 1.0 - </notification> - - - - <notification - - label="プッシュを制é™" - name="HelpRegionRestrictPushObject" - > -ã“ã®ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹ã¯ã€åˆ¶é™ã•れãŸãƒ—ッシュ権é™ã‚’全地域ã«é©ç”¨ã—ã¾ã™ã€‚ -有効ã«ãªã£ã¦ã„ã‚‹å ´åˆã€å±…ä½è€…ã¯è‡ªåˆ†è‡ªèº«ã§ã®ãƒ—ッシュ〠-ã‚ã‚‹ã„ã¯åŒºç”»ã®æ‰€æœ‰è€…ã«ã‚ˆã‚‹ãƒ—ッシュã ã‘ã«åˆ¶é™ã§ãã¾ã™ã€‚ -(プッシュã¯ã€LSLã® llPushObject() 機能をå‚ç…§ã—ã¾ã™ã€‚) - -デフォルト: オフ - </notification> - - <notification - - label="区画統åˆï¼å†åˆ†å‰²" - name="HelpParcelChanges" - > -ã“ã®ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹ã¯ã€ä¸å‹•ç”£ã‚ªãƒ¼ãƒŠãƒ¼ãŒæ‰€æœ‰ã—ã¦ã„ãªã„区画を〠-çµ±åˆã¾ãŸã¯å†åˆ†å‰²ã§ãã‚‹ã‹ã©ã†ã‹ã‚’è¨å®šã—ã¾ã™ã€‚ -本オプションãŒç„¡åйãªå ´åˆï¼š -* ä¸å‹•産オーナーã€ã¾ãŸã¯ç®¡ç†è€…ã®ã¿ãŒã€çµ±åˆï¼å†åˆ†å‰²ã‚’行ã†ã“ã¨ãŒã§ãã¾ã™ã€‚ -* オーナーã€ã¾ãŸã¯ã€é©åˆ‡ãªæ¨©é™ã‚’æŒã¤ã‚°ãƒ«ãƒ¼ãƒ—ã«å±žã™ã‚‹åŒºç”»ã®ã¿ã‚’ -çµ±åˆï¼å†åˆ†å‰²ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ -æœ¬ã‚ªãƒ—ã‚·ãƒ§ãƒ³ãŒæœ‰åйãªå ´åˆï¼š -* å…¨ã¦ã®åŒºç”»ã‚ªãƒ¼ãƒŠãƒ¼ã¯ã€æ‰€æœ‰ã™ã‚‹åŒºç”»ã®çµ±åˆï¼å†åˆ†å‰²ãŒã§ãã¾ã™ã€‚ -* グループ所有ã®åŒºç”»ã¯ã€é©åˆ‡ãªæ¨©é™ã‚’æŒã¤ã‚°ãƒ«ãƒ¼ãƒ—ã«å±žã™ã‚‹åŒºç”»ã‚’〠-çµ±åˆï¼å†åˆ†å‰²ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ - -デフォルト:ãƒã‚§ãƒƒã‚¯ã‚り - </notification> - - <notification - - label="検索ã§è¡¨ç¤ºã—ãªã„" - name="HelpRegionSearch" - > -ã“ã®ãƒœãƒƒã‚¯ã‚¹ã‚’ãƒã‚§ãƒƒã‚¯ã™ã‚‹ã¨ã€åŒºç”»ã®ã‚ªãƒ¼ãƒŠãƒ¼ã¯ã€è‡ªåˆ†ã®åŒºç”»ãŒæ¤œç´¢çµæžœã«ãƒªã‚¹ãƒˆã•れるã“ã¨ã‚’阻æ¢ã§ãã¾ã™ã€‚ -デフォルト:オフ - </notification> - - <notification - - label="åœ°åŸŸã®æˆäººæŒ‡å®šå¤‰æ›´æ¸ˆã¿" - name="RegionMaturityChange" - > -ã“ã®åœ°åŸŸã®æˆäººæŒ‡å®šãŒã‚¢ãƒƒãƒ—デートã•れã¾ã—ãŸã€‚ -ã“ã®å¤‰æ›´ãŒåœ°å›³ã«åæ˜ ã•れるã¾ã§ã«ã¯ã€ã—ã°ã‚‰ã時間ãŒã‹ã‹ã‚Šã¾ã™ã€‚ - </notification> - - <notification - - label="土地ã®å†è²©" - name="HelpRegionLandResell" - > -ä¸å‹•産ã®ã‚ªãƒ¼ãƒŠãƒ¼ã¨ç®¡ç†è€…ã¯ã€ä¸å‹•産オーナーã®åœŸåœ°ã‚’販売ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ -ã“ã®ã‚ªãƒ—ションをãƒã‚§ãƒƒã‚¯ã—ãªã„å ´åˆã€è³¼å…¥è€…ãŒæœ¬åœ°åŸŸã«ãŠã‘る土地をå†è²©ã™ã‚‹ã“ã¨ã¯ã§ããªããªã‚Šã¾ã™ã€‚ -ã“ã®ã‚ªãƒ—ションをãƒã‚§ãƒƒã‚¯ã—ãŸå ´åˆã€è³¼å…¥è€…ã¯æœ¬åœ°åŸŸã«ãŠã‘る土地をå†è²©ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ - -デフォルト:許å¯ã—ãªã„ - </notification> - - <notification - - label="スクリプトを無効化" - name="HelpRegionDisableScripts" - > -スクリプトãŒåŽŸå› ã§ã‚·ãƒ ã®çжæ³ãŒæ‚ªããªã‚‹å ´åˆãŒã‚りã¾ã™ã€‚統計グラフを -ã ã—ã¦ï¼ˆCtrl-Shift-1)シミュレーターフィジックスFPSを見ã¦ãã ã•ã„。 -45より数ãŒä½Žã‘れã°ã€ä¸€ç•ªä¸‹ã«ä½ç½®ã—ã¦ã„るタイムパãƒãƒ«ã‚’ -é–‹ã„ã¦ãã ã•ã„。スクリプト時間ãŒ25ms以上ã§ã‚れã°ã€ -「トップスクリプトをå–å¾—ã€ãƒœã‚¿ãƒ³ã‚’クリックã—ã¾ã™ã€‚悪影響をåŠã¼ã—ã¦ã„るスクリプト㮠-åå‰ã¨ä½ç½®ãŒç¾ã‚Œã¾ã™ã€‚ - -「スクリプトを無効ã«ã™ã‚‹ã€ã‚’ãƒã‚§ãƒƒã‚¯ã—「é©ç”¨ã€ã‚’クリックã™ã‚‹ã¨ã€ -地域内ã®å…¨ã¦ã®ã‚¹ã‚¯ãƒªãƒ—トãŒä¸€æ™‚çš„ã«ç„¡åйã«ãªã‚Šã¾ã™ã€‚トップスクリプト㧠-検索ã—ãŸã‚¹ã‚¯ãƒªãƒ—トã®ä½ç½®ã¾ã§åˆ°é”ã™ã‚‹ã«ã¯ã€ -ã“ã®ã‚¹ãƒ†ãƒƒãƒ—ãŒå¿…è¦ã«ãªã‚‹å ´åˆã‚‚ã‚りã¾ã™ã€‚スクリプトä½ç½®ã«åˆ°ç€å¾Œã€ -ã‚¹ã‚¯ãƒªãƒ—ãƒˆã‚’è¦‹ã¦æ‚ªå½±éŸ¿ã‚’与ãˆã¦ã„ã‚‹ã‹èª¿æŸ»ã—ã¦ãã ã•ã„ã€‚ã‚¹ã‚¯ãƒªãƒ—ãƒˆã®æ‰€æœ‰è€…ã« -連絡ã™ã‚‹ã‹ã€ã‚ã‚‹ã„ã¯ã‚ªãƒ–ジェクトã®å‰Šé™¤ã¾ãŸã¯è¿”å´ã‚‚考ãˆã‚‰ã‚Œã¾ã™ã€‚ -「スクリプトを無効ã«ã™ã‚‹ã€ã®ãƒã‚§ãƒƒã‚¯ã‚’外ã—ã€ã€Œé©ç”¨ã€ã‚’クリックã—㦠-地域全体ã®ã‚¹ã‚¯ãƒªãƒ—ãƒˆã‚’æœ‰åŠ¹ã«æˆ»ã—ã¦ãã ã•ã„。 - -デフォルト:オフ - </notification> - - <notification - - label="è¡çªã‚’無効化" - name="HelpRegionDisableCollisions" - > -物ç†çš„オブジェクトãŒåŽŸå› ã§ã‚·ãƒ ã®å‡¦ç†ãŒé‡ããªã‚‹å ´åˆãŒã‚りã¾ã™ã€‚ -統計グラフを開ã„ã¦ï¼ˆCtrl-Shift-1) シミュレーターフィジックス -FPSを見ã¦ãã ã•ã„。 数値ãŒ45より低ã‘れã°ã€çµ±è¨ˆãƒãƒ¼ã®ä¸‹ã«ä½ç½®ã—ã¦ã„るタイムパãƒãƒ«ã‚’ -é–‹ã„ã¦ãã ã•ã„。 ã‚‚ã—シムタイム(物ç†çš„作用) -ãŒ20 msより長ã„å ´åˆã¯ã€ã€Œãƒˆãƒƒãƒ—・コライダーをå–å¾—ã€ã‚’クリックã—ã¦ãã ã•ã„。 -悪影響をåŠã¼ã—ã¦ã„ã‚‹å¯èƒ½æ€§ãŒã‚る物ç†ã‚ªãƒ–ジェクト㮠-åå‰ã¨ä½ç½®ãŒç¾ã‚Œã¾ã™ã€‚ - -「è¡çªã‚’無効ã«ã™ã‚‹ã€ã‚’ãƒã‚§ãƒƒã‚¯ã—「é©ç”¨ã€ã‚’クリックã™ã‚‹ã¨ã€ -オブジェクトåŒå£«ã®è¡çªãŒä¸€æ™‚çš„ã«ç„¡åйã«ãªã‚Šã¾ã™ã€‚ 当該ã®ãƒˆãƒƒãƒ—・コライダー -ã®ä½ç½®ã¾ã§åˆ°é”ã™ã‚‹ã«ã¯ -上記ã®ã‚¹ãƒ†ãƒƒãƒ—ãŒå¿…è¦ã«ãªã‚‹å ´åˆã‚‚ã‚りã¾ã™ã€‚ 到ç€å¾Œã€ -オブジェクトを見ã¦å¸¸æ™‚ä»–ã®ã‚ªãƒ–ジェクトã¨è¡çªã—ã¦ã„ã‚‹ã‹èª¿æŸ»ã—ã¦ãã ã•ã„。 ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æ‰€æœ‰è€…ã« -連絡ã™ã‚‹ã‹ã€ã‚ã‚‹ã„ã¯ã‚ªãƒ–ジェクトã®å‰Šé™¤ã¾ãŸã¯è¿”å´ã‚’考慮ã™ã¹ãã‹ã‚‚ã—れã¾ã›ã‚“。 -「è¡çªã‚’無効ã«ã™ã‚‹ã€ã®ãƒã‚§ãƒƒã‚¯ã‚’外ã—ã€ã€Œé©ç”¨ã€ã‚’クリックã—㦠-地域全体ã®è¡çªã‚’æœ‰åŠ¹ã«æˆ»ã—ã¦ãã ã•ã„。 - -デフォルト:オフ - </notification> - - <notification - - label="物ç†ä½œç”¨ã‚’無効化" - name="HelpRegionDisablePhysics" - > -物ç†çš„作用を無効ã«ã™ã‚‹ã“ã¨ã¯ã€ç‰©ç†çš„シミュレーション全ã¦ã®ç„¡åŠ¹ã‚’é™¤ã„ã¦ã€ -è¡çªã‚’無効ã«ã™ã‚‹ã“ã¨ã¨ä¼¼ã¦ã„ã¾ã™ã€‚ã“れã¯ã€ã‚ªãƒ–ジェクトã®è¡çªã‚’æ¢ã‚ã‚‹ã®ã¿ãªã‚‰ãšã€ -ã‚¢ãƒã‚¿ãƒ¼ã®ç§»å‹•ãŒã§ããªããªã‚‹ã“ã¨ã‚’æ„味ã—ã¾ã™ã€‚ - -ã“ã®æ©Ÿèƒ½ã¯ã€ç‰©ç†çš„ãªå•題ãªã®ã‹ã€ã¾ãŸã¯ãƒˆãƒƒãƒ—・コライダーãªã®ã‹ã‚’調査ã™ã‚‹ã«ã‚ãŸã‚Šã€ -è¡çªã®ç„¡åйãŒåœ°åŸŸã«å¯¾ã—ã¦å分ãªãƒ‘フォーマンスを発æ®ã—ãªã„å ´åˆã«ã®ã¿ -使用ã—ã¦ãã ã•ã„。 - -終了ã™ã‚‹æ™‚ã«ã¯ã€ç‰©ç†çš„作用をå†åº¦å¯èƒ½ã«è¨å®šã—ã¦ãã ã•ã„。 -ãã®ã¾ã¾ã ã¨ã€ã‚¢ãƒã‚¿ãƒ¼ã¯ãšã£ã¨å‹•ã‘ã¾ã›ã‚“。 - -デフォルト:オフ - </notification> - - <notification - - label="トップ・コライダー" - name="HelpRegionTopColliders" - > -オブジェクトåŒå£«ã®è¡çªãŒæœ€ã‚‚多ã„å¯èƒ½æ€§ã®ã‚ã‚‹ -オブジェクトã®ãƒªã‚¹ãƒˆã‚’表示ã—ã¾ã™ã€‚ã“れらã®ã‚ªãƒ–ジェクトã¯ã€ -パフォーマンスを低下ã•ã›ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ビューã‹ã‚‰çµ±è¨ˆãƒãƒ¼ã‚’é¸æŠžã—〠-シミュレータ>時間>シム時間 (物ç†çš„作用) ã§ã€ -物ç†çš„作用ã«20 ms以上を費ã—ã¦ã„ã‚‹ã‹ã‚’確èªã—ã¦ãã ã•ã„。 - </notification> - - <notification - - label="トップ・スクリプト" - name="HelpRegionTopScripts" - > -LSLスクリプトã®å®Ÿè¡Œã«ä¸€ç•ªæ™‚間を費やã—ã¦ã„るオブジェクトã®ãƒªã‚¹ãƒˆã‚’ -入手ã—ã¾ã™ã€‚ã“れらã®ã‚ªãƒ–ジェクトã¯ã€ãƒ‘フォーマンスを低下ã•ã›ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ -ビューã‹ã‚‰çµ±è¨ˆãƒãƒ¼ã‚’é¸æŠžã—〠-ミュレータ>時間>スクリプト時間ã§ã€ -スクリプトã«25 ms以上を費ã—ã¦ã„ã‚‹ã‹ã‚’確èªã—ã¦ãã ã•ã„。 - </notification> - - <notification - - label="地域をリスタート" - name="HelpRegionRestart" - > -2分後ã«ã‚µãƒ¼ãƒãƒ¼ãŒå†èµ·å‹•ã•れるã¨ã„ã†è¦å‘Šãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®å¾Œã«ã€ã“ã®åœ°åŸŸã®ã‚µãƒ¼ãƒãƒ¼ãƒ—ãƒã‚»ã‚¹ã‚’ -å†èµ·å‹•ã—ã¾ã™ã€‚ã“ã®åœ°åŸŸã®ã™ã¹ã¦ã®ä½äººã® -接続ãŒåˆ‡æ–ã•れã¾ã™ã€‚地域ã®ãƒ‡ãƒ¼ã‚¿ã¯ä¿å˜ã•れ〠-90秒以内ã«å›žå¾©ã—ã¾ã™ã€‚ - -ã“ã®åœ°åŸŸã‚’å†èµ·å‹•ã—ã¦ã‚‚ã€ã»ã¨ã‚“ã©ã®ãƒ‘フォーマンスã®å•題ã«å¤‰åŒ–ã¯ã‚りã¾ã›ã‚“。 -指示ã•ã‚ŒãŸæ™‚ã ã‘利用ã—ã¦ãã ã•ã„。 - </notification> - - <notification - - label="æ°´é¢ã®é«˜ã•" - name="HelpRegionWaterHeight" - > -ã“れã¯ã€æ°´ãŒç¾ã‚Œã‚‹é«˜ã•(å˜ä½ï¼šãƒ¡ãƒ¼ãƒˆãƒ«ï¼‰ã§ã™ã€‚ -ã“ã®è¨å®šãŒ20以外ã§ã€æ°´ãŒä¸–界㮠-端やã€ã€Œç©ºã®ã€æ°´ã«è¿‘ã‘れã°ã€ -æºãŒè¦‹ãˆã‚‹ã§ã—ょã†ã€‚ - -デフォルト: 20 - </notification> - - <notification - - label="地形ã®ä¸Šæ˜‡" - name="HelpRegionTerrainRaise" - > -ã“ã®æ•°å€¤ã¯ã€ã€Œãƒ™ãƒ¼ã‚¯ã€åœ°å½¢ã®ãƒ‡ãƒ•ォルトã®é«˜ã•以上ã«ã€ -åŒºç”»ã®æ‰€æœ‰è€…ãŒåœŸåœ°ã‚’上ã’られるメートル -æ•°ã§ã™ã€‚ - -デフォルト: 4 - </notification> - - <notification - - label="地形ã®ä¸‹é™" - name="HelpRegionTerrainLower" - > -ã“ã®æ•°å€¤ã¯ã€ã€Œãƒ™ãƒ¼ã‚¯ã€åœ°å½¢ã®ãƒ‡ãƒ•ォルトã®é«˜ã•以下ã«ã€ -åŒºç”»ã®æ‰€æœ‰è€…ãŒåœŸåœ°ã‚’下ã’られるメートル -æ•°ã§ã™ã€‚ - -デフォルト: -4 - </notification> - - <notification - - label="RAW地形をアップãƒãƒ¼ãƒ‰" - name="HelpRegionUploadRaw" - > -ã“ã®ãƒœã‚¿ãƒ³ã§ã€.RAW ファイルをã€ç¾åœ¨ã‚ãªãŸãŒå±…る地域ã«ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ã—ã¾ã™ã€‚ -ファイルãŒå¿…ãšæ£ã—ã„サイズã®256x256ã€RGB〠-ã¾ãŸã€ãƒãƒ£ãƒ³ãƒãƒ«æ•°ãŒ13ã§ã‚ã‚‹ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。地形 -(Terrain) ファイルを作æˆã™ã‚‹æœ€è‰¯ã®æ–¹æ³•ã¯ã€æ—¢å˜ã®RAWファイルをダウンãƒãƒ¼ãƒ‰ã™ã‚‹ã“ã¨ã§ã™ã€‚ã¾ãš -最åˆã®ãƒãƒ£ãƒ³ãƒãƒ«ï¼ˆåœŸåœ°ã®é«˜ã•)を変更ã—ã€ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ã™ã‚‹ã“ã¨ã‹ã‚‰ -å§‹ã‚られã¾ã™ã€‚ - -アップãƒãƒ¼ãƒ‰ã«ã¯45ç§’ã»ã©ã‹ã‹ã‚‹ã“ã¨ãŒã‚りã¾ã™ã€‚ã“ã“ã§æ³¨æ„ã™ã‚‹ã“ã¨ã¯ã€ -地形ファイルã®ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ã«ã‚ˆã£ã¦ã€åœŸåœ°ã«é…ç½®ã•れã¦ã„るオブジェクトã¯ã€Œå‹•ã‹ãªã„ã€ã¨ã„ã†ã“ã¨ã§ã™ã€‚ -影響ãŒã‚ã‚‹ã®ã¯ã€åœ°å½¢è‡ªä½“ã¨ã€åœŸåœ°ã«é–¢ä¿‚ã™ã‚‹ -許å¯ã®ã¿ã§ã™ã€‚よã£ã¦ã€ã‚ªãƒ–ジェクトãŒåœ°ä¸‹ã«åŸ‹ã¾ã£ã¦ã—ã¾ã†ã“ã¨ãŒã‚ã‚‹ã®ã§ã”注æ„ãã ã•ã„。 - -地形è¨å®šç·¨é›†ã®æƒ…å ±ã¨è©³ç´°ã«ã¤ã„ã¦ã¯ã€F1ヘルプをã”覧ãã ã•ã„。 - </notification> - - <notification - - label="RAW地形をダウンãƒãƒ¼ãƒ‰" - name="HelpRegionDownloadRaw" - > -ã“ã®ãƒœã‚¿ãƒ³ã‚’押ã™ã¨ã€æ¨™é«˜ãƒ•ィールドデータ〠-区画寸法ã€å£²ã‚Šå‡ºã—区画ステータスã€ã“ã®åœ°åŸŸã«ãŠã‘る許å¯ã‚’ -å«ã‚€ãƒ•ァイルをダウンãƒãƒ¼ãƒ‰ã—ã¾ã™ã€‚フォトショップã®ã‚ˆã†ãªãƒ—ãƒã‚°ãƒ©ãƒ ã§ã“ã®ãƒ•ァイルを開ãã«ã¯ã€ -以下ã®ã‚ˆã†ãªãƒ‰ã‚ュメントã®ã‚µã‚¤ã‚ºã‚’ -指定ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ï¼šRGBã€256x256ã§ã€ãƒãƒ£ãƒ³ãƒãƒ«æ•°ãŒ13。ã“ã®åœ°å½¢ãƒ•ァイルã¯ã€ -ä»–ã®æ–¹æ³•ã§ã¯é–‹ãã“ã¨ã¯ã§ãã¾ã›ã‚“。 - -地形ã«ãŠã‘る標高フィールドã®ç·¨é›†ã«é–¢ã™ã‚‹è©³ç´°ã«ã¤ã„ã¦ã¯ã€F1ヘルプをã”覧ãã ã•ã„。 - </notification> - - <notification - - label="ä¸å‹•産ã®å¤ªé™½ã‚’使用" - name="HelpRegionUseEstateSun" - > -ã“ã®ãƒœãƒƒã‚¯ã‚¹ãŒãƒã‚§ãƒƒã‚¯ã•れã¦ã„ã‚‹ã¨ã€ã“ã®åœ°åŸŸã®å¤ªé™½ã¯ -ä¸å‹•産ã®ä»–ã®å ´æ‰€ã«ãŠã‘る太陽ã¨ä½ç½®ãŒåŒã˜ã«ãªã‚Šã¾ã™ã€‚ - -デフォルト: オン - </notification> - - <notification - - label="太陽固定" - name="HelpRegionFixedSun" - > -ã“ã®ãƒœãƒƒã‚¯ã‚¹ã‚’ãƒã‚§ãƒƒã‚¯ã™ã‚‹ã¨ã€å¤ªé™½ã®ä½ç½®ã¯æ®µéšŽã‚¹ãƒ©ã‚¤ãƒ€ãƒ¼å†…ã« -è¨å®šã•れã€å‹•ã‹ãªããªã‚Šã¾ã™ã€‚ -デフォルト: オフ - </notification> - - <notification - - label="地形を構築ã™ã‚‹" - name="HelpRegionBakeTerrain" - > -ã“ã®ãƒœã‚¿ãƒ³ã«ã‚ˆã‚Šã€ç¾åœ¨ã®åœ°å½¢ã®å½¢çŠ¶ã‚’æ–°ãŸãª -デフォルトã¨ã—ã¦ä¿å˜ã—ã¾ã™ã€‚一度ベークã•れるã¨ã€ -ã‚ãªãŸã‚„ä»–ã®äººãŒåœ°å½¢ç·¨é›†ã®ã€Œå¾©å¸°ã€ã‚ªãƒ—ションï¼ãƒ„ールを使用ã—ãŸéš›ã«ã€ -ä¿å˜ã•れãŸå½¢çжã«å›žå¾©ã§ãã¾ã™ã€‚ベークã•れãŸåœ°å½¢ã¯ã€ -地形上昇ãŠã‚ˆã³ä¸‹é™å¢ƒç•Œã®ä¸é–“点ã§ã‚‚ã‚りã¾ã™ã€‚ - </notification> - - <notification - - label="ä¸å‹•産マãƒãƒ¼ã‚¸ãƒ£ãƒ¼" - name="HelpEstateEstateManager" - > -ä¸å‹•産マãƒãƒ¼ã‚¸ãƒ£ãƒ¼ã¨ã¯ã€åœ°åŸŸã‚³ãƒ³ãƒˆãƒãƒ¼ãƒ«ã¨ -ä¸å‹•産è¨å®šãŒå§”ä»»ã•れãŸä½äººã‚’ã•ã—ã¾ã™ã€‚ä¸å‹•産マãƒãƒ¼ã‚¸ãƒ£ãƒ¼ã¯ã€ -アップãƒãƒ¼ãƒ‰ã€ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ã€ãŠã‚ˆã³åœ°å½¢æ§‹ç¯‰ã‚’除ã„ãŸãƒ‘ãƒãƒ«å†…ã® -è¨å®šã‚’変更ã§ãã¾ã™ã€‚特ç†ã™ã¹ãã¯ã€ -ä½äººã®ã‚¢ã‚¯ã‚»ã‚¹è¨±å¯ã¾ãŸã¯ç¦æ¢ã®è¨å®šãŒã§ãã‚‹ã“ã¨ã§ã™ã€‚ - -ä¸å‹•産マãƒãƒ¼ã‚¸ãƒ£ãƒ¼ã®è¿½åŠ ã¨å‰Šé™¤ã¯ã€ä¸å‹•産オーナーã®ã¿ãŒè¡Œã†ã“ã¨ãŒã§ã〠-マãƒãƒ¼ã‚¸ãƒ£ãƒ¼åŒå£«ã§ã¯ä¸å¯èƒ½ã§ã™ã€‚ä¿¡é ¼ã§ãã‚‹ä½äººã®ã¿ -ä¸å‹•産マãƒãƒ¼ã‚¸ãƒ£ãƒ¼ã«ä»»å‘½ã—ã¦ãã ã•ã„。彼らã®è¡Œå‹•ã® -全責任ã¯ã€æœ€çµ‚çš„ã«ã¯ã‚ãªãŸã«ã‚りã¾ã™ã€‚ - </notification> - - <notification - - label="ã‚°ãƒãƒ¼ãƒãƒ«ãƒ»ã‚¿ã‚¤ãƒ を使用" - name="HelpEstateUseGlobalTime" - > -ã“ã®ãƒœãƒƒã‚¯ã‚¹ãŒãƒã‚§ãƒƒã‚¯ã•れã¦ã„ã‚‹ã¨ã€ã‚ãªãŸã®æ‰€æœ‰åœ°ã®å¤ªé™½ã¯ -Linden社所有ã®ãƒ¡ã‚¤ãƒ³ãƒ©ãƒ³ãƒ‰ã®ä¸å‹•産ã§ã®å¤ªé™½ã®ä½ç½®ã« -準ã˜ã¾ã™ã€‚ - -デフォルト: オン - </notification> - - <notification - - label="太陽固定" - name="HelpEstateFixedSun" - > -ã“ã®ãƒœãƒƒã‚¯ã‚¹ãŒãƒã‚§ãƒƒã‚¯ã•れã¦ã„ã‚‹ã¨ã€å¤ªé™½ã®ä½ç½®ã¯æ®µéšŽã‚¹ãƒ©ã‚¤ãƒ€ãƒ¼å†…ã« -è¨å®šã•れã€å‹•ã‹ãªããªã‚Šã¾ã™ã€‚ - </notification> - - <notification - - label="パブリック・アクセス" - name="HelpEstateExternallyVisible" - > -ã“ã®ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹ã¯ã€ä»–ã®ä¸å‹•産ã«ã„ã‚‹ä½äººãŒã€ã‚¢ã‚¯ã‚»ã‚¹ãƒªã‚¹ãƒˆã«ç™»éŒ²ã•れã¦ã„ãªãã¦ã‚‚ã€ã“ã®ä¸å‹•産ã«ç«‹ã¡å…¥ã‚‹ã“ã¨ãŒã§ãã‚‹ã‹ã©ã†ã‹ã‚’ -è¨å®šã—ã¾ã™ã€‚ - -デフォルト: オン - </notification> - - <notification - - label="直接テレãƒãƒ¼ãƒˆã‚’許å¯" - name="HelpEstateAllowDirectTeleport" - > -ãƒã‚§ãƒƒã‚¯ã•れã¦ã„ã‚‹ã¨ã€ä¸å‹•産ã®ã©ã“ã«ã§ã‚‚直接テレãƒãƒ¼ãƒˆãŒ -å¯èƒ½ã«ãªã‚Šã¾ã™ã€‚ãƒã‚§ãƒƒã‚¯ã•れã¦ã„ãªã„ã¨ã€æœ€ã‚‚è¿‘ã„テレãƒãƒ–ã« -テレãƒãƒ¼ãƒˆã—ã¾ã™ã€‚ - -デフォルト: オフ - </notification> - - <notification - - label="アクセスを許å¯" - name="HelpEstateAllowResident" - > -ã“ã®ä¸å‹•産ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã¯ã€ã“ã“ã«ç™»éŒ²ã•れã¦ã„ã‚‹ä½äººã¨ -下記ã§ç‰¹åˆ¥ã«ç™»éŒ²ã•れãŸã‚°ãƒ«ãƒ¼ãƒ—ã®ã¿ã«è¨±å¯ã•れã¾ã™ã€‚ ã“ã®è¨å®šã¯ -「パブリック・アクセスã€ãŒã‚ªãƒ•ã«ãªã£ã¦ã‚‹ã¨ãã®ã¿ã€ -使用å¯èƒ½ã§ã™ã€‚ - </notification> - - <notification - - label="グループ・アクセスを許å¯" - name="HelpEstateAllowGroup" - > -ã“ã®ä¸å‹•産ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã¯ã€ã“ã“ã«ç™»éŒ²ã•れã¦ã„るグループ㨠-下記ã§ç‰¹åˆ¥ã«ç™»éŒ²ã•れãŸä½äººã®ã¿ã«è¨±å¯ã•れã¾ã™ã€‚ ã“ã®è¨å®šã¯ -「パブリック・アクセスã€ãŒã‚ªãƒ•ã«ãªã£ã¦ã‚‹ã¨ãã®ã¿ã€ -使用å¯èƒ½ã§ã™ã€‚ - </notification> - - <notification - - label="嫌ãŒã‚‰ã›ã«é–¢ã™ã‚‹ãƒ¡ãƒ¼ãƒ«å…ˆ" - name="HelpEstateAbuseEmailAddress" - > -ã“れを有効ãªãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã«è¨å®šã™ã‚‹ã¨ã€ãã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã«ã“ã®ä¸å‹•産ã«ãŠã„ã¦è¡Œã‚れ㟠-嫌ãŒã‚‰ã›ã®å ±å‘ŠãŒé€ä¿¡ã•れるよã†ã«ãªã‚Šã¾ã™ã€‚ -è¨å®šã‚’行ã‚ãªã„å ´åˆï¼ˆç©ºç™½ï¼‰ã€å«ŒãŒã‚‰ã›å ±å‘Šã¯ Linden Lab ã«ã®ã¿ -é€ä¿¡ã•れã¾ã™ã€‚ - </notification> - - <notification - - label="アクセス拒å¦" - name="HelpEstateBanResident" - > -ã“ã®ãƒªã‚¹ãƒˆã®ä½äººã¯ã€ä»–ã®è¨å®šã«ã‹ã‹ã‚らãšã€ã‚ãªãŸã®ä¸å‹•産ã¸ã® -アクセスãŒç¦æ¢ã•れã¦ã„ã¾ã™ã€‚ - </notification> - - <notification - - label="ボイスãƒãƒ£ãƒƒãƒˆã‚’許å¯" - name="HelpEstateVoiceChat" - > -ã“ã®ä¸å‹•産ã®åŒºç”»ã¯ã€ä½äººãŒè¿‘所ã®äººã¨å¯¾è©±ã§ãã‚‹ -独自ã®ãƒœã‚¤ã‚¹ãƒãƒ£ãƒ³ãƒãƒ«ã‚’æŒã¤ã“ã¨ãŒ -ã§ãã¾ã™ã€‚ - -デフォルト: オフ - </notification> - - <notification - - label="ボイスãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ä¸ä¸€è‡´" - name="VoiceVersionMismatch" - > -ã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã® Second Life ã¯ã€ã“ã®åœ°åŸŸã®ãƒœã‚¤ã‚¹ãƒãƒ£ãƒƒãƒˆæ©Ÿèƒ½ã«å¯¾å¿œã—ã¦ã„ã¾ã›ã‚“。ボイスãƒãƒ£ãƒƒãƒˆã‚’æ£ã—ã使用ã™ã‚‹ã«ã¯ã€Second Life ã®ã‚¢ãƒƒãƒ—デートãŒå¿…è¦ã§ã™ã€‚ - </notification> - - <notification - - label="ä¸å‹•産約款" - name="HelpEstateCovenant" - > -ä¸å‹•産約款を定ã‚ã‚‹ã¨ã€è‡ªåˆ†ã®ä¸å‹•産内ã®åŒºç”»ã‚’販売\ã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚ 約款を定ã‚ã¦ã„ãªã„ã¨ã€\土地ã¯å£²ã‚Œã¾ã›ã‚“。 土地ã«é–¢ã™ã‚‹è¦å‰‡ã‚’é©ç”¨ã—ãŸããªã‹ã£ãŸã‚Šã€è³¼å…¥å‰ã«\土地ã«é–¢ã™ã‚‹æƒ…å ±ã‚’è³¼å…¥è€…ã«çŸ¥ã‚‰ã›ãŸããªã‹ã£ãŸã‚‰ã€\ã‚ãªãŸã®ç´„款ã®ãƒŽãƒ¼ãƒˆã‚«ãƒ¼ãƒ‰ã¯ç™½ç´™ã§ã‹ã¾ã„ã¾ã›ã‚“。 - -約款ã¯è³¼å…¥ã‚’考ãˆã¦ã„る人ã«ã€è¦å‰‡ã€ã‚¬ã‚¤ãƒ‰ãƒ©ã‚¤ãƒ³ã€\æ–‡åŒ–çš„æƒ…å ±ã‚„å˜ã«ã‚ãªãŸãŒæœŸå¾…ã™ã‚‹ã“ã¨ã‚’ä¼ãˆã‚‹ãŸã‚ã«ã‚‚\使ãˆã¾ã™ã€‚ ã“ã“ã«ã¯ã€åŒºç”»è¦åˆ¶ã€å»ºé€ 物è¦åˆ¶ã€\支払ã„オプションã€ãれã‹ã‚‰è³¼å…¥è€…ãŒäº‹å‰ã«\目を通ã—ã¦åŒæ„ã—ã¦ãŠãã¹ãã ã¨ã‚ãªãŸãŒæ€ã†é‡è¦ãªæƒ…å ±ã‚’ã™ã¹ã¦\入れるã“ã¨ãŒã§ãã¾ã™ã€‚ - -購入者ãŒãƒœãƒƒã‚¯ã‚¹ã‚’ãƒã‚§ãƒƒã‚¯ã—ã¦ç´„款ã«åŒæ„ã—ãªã„ã‹ãŽã‚Šã€\è³¼å…¥ã®æ‰‹ç¶šãã¯å®Œäº†ã—ã¾ã›ã‚“。 ä¸å‹•産\約款ãŒå®šã‚られã¦ã„る区画ã§ã‚れã°ã€ã™ã¹ã¦ã€ŒåœŸåœ°æƒ…å ±ã€ã‹ã‚‰\約款をã„ã¤ã§ã‚‚閲覧ã§ãã¾ã™ã€‚ - </notification> - - <notification - - label="オブジェクトを購入ã§ãã¾ã›ã‚“" - name="BuyObjectOneOwner" - > -複数ã®ã‚ªãƒ¼ãƒŠãƒ¼ã‹ã‚‰åŒæ™‚ã«ã‚ªãƒ–ジェクトを購入ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 -å˜ä¸€ã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’é¸æŠžã—ã€ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 - </notification> - - <notification - - label="コンテンツを購入ã§ãã¾ã›ã‚“" - name="BuyContentsOneOnly" - > -一度ã«è¤‡æ•°ã®ã‚ªãƒ–ジェクトã®ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã¯è³¼å…¥ã§ãã¾ã›ã‚“。 -é¸æŠžã™ã‚‹ã‚ªãƒ–ジェクトを1ã¤ã ã‘ã«ã—ã¦ã€ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 - </notification> - - <notification - - label="コンテンツを購入ã§ãã¾ã›ã‚“" - name="BuyContentsOneOwner" - > -複数ã®ã‚ªãƒ¼ãƒŠãƒ¼ã‹ã‚‰åŒæ™‚ã«ã‚ªãƒ–ジェクトを購入ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 -å˜ä¸€ã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’é¸æŠžã—ã€ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="BuyOriginal" - > -オリジナルã®ã‚ªãƒ–ジェクトを[OWNER]ã‹ã‚‰L$[PRICE]ã§è³¼å…¥ã—ã¾ã™ã‹ï¼Ÿ -ã“れã«ã‚ˆã‚Šã€ã‚ãªãŸãŒã‚ªãƒ–ジェクトã®ã‚ªãƒ¼ãƒŠãƒ¼ã«ãªã‚Šã¾ã™ã€‚ -å¯èƒ½ãªæ“作ã¯ã€ -変更:[MODIFYPERM] -ã€ã‚³ãƒ”ー:[COPYPERM] -ã€å†è²©ï¼ãƒ—レゼント[RESELLPERM]ã§ã™ã€‚ - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="BuyOriginalNoOwner" - > -L$[PRICE]ã§ã‚ªãƒªã‚¸ãƒŠãƒ«ã®ã‚ªãƒ–ジェクトを購入ã—ã¾ã™ã‹ï¼Ÿ -ã“れã«ã‚ˆã‚Šã€ã‚ãªãŸãŒã‚ªãƒ–ジェクトã®ã‚ªãƒ¼ãƒŠãƒ¼ã«ãªã‚Šã¾ã™ã€‚ -å¯èƒ½ãªæ“作ã¯ã€ -変更:[MODIFYPERM] -ã€ã‚³ãƒ”ー:[COPYPERM] -ã€å†è²©ï¼ãƒ—レゼント[RESELLPERM]ã§ã™ã€‚ - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="BuyCopy" - > -コピーを[OWNER]ã‹ã‚‰L$[PRICE]ã§è³¼å…¥ã—ã¾ã™ã‹ï¼Ÿ -購入ã—ãŸã‚ªãƒ–ジェクトã¯ã€ã‚ãªãŸã®æŒã¡ç‰©ã«ã‚³ãƒ”ーã•れã¾ã™ã€‚ -å¯èƒ½ãªæ“作ã¯ã€å¤‰æ›´ï¼š[MODIFYPERM] -ã€ã‚³ãƒ”ー:[COPYPERM] -ã€å†è²©ï¼ãƒ—レゼント[RESELLPERM]ã§ã™ã€‚ - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="BuyCopyNoOwner" - > -L$[PRICE]ã§ã‚³ãƒ”ーを購入ã—ã¾ã™ã‹ï¼Ÿ -購入ã—ãŸã‚ªãƒ–ジェクトã¯ã€ã‚ãªãŸã®æŒã¡ç‰©ã«ã‚³ãƒ”ーã•れã¾ã™ã€‚ -å¯èƒ½ãªæ“作ã¯ã€å¤‰æ›´ï¼š[MODIFYPERM] -ã€ã‚³ãƒ”ー:[COPYPERM] -ã€å†è²©ï¼ãƒ—レゼント[RESELLPERM]ã§ã™ã€‚ - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="BuyContents" - > -コンテンツを[OWNER]ã‹ã‚‰L$[PRICE]ã§è³¼å…¥ã—ã¾ã™ã‹ï¼Ÿ -購入ã—ãŸã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã¯ã€ã‚ãªãŸã®æŒã¡ç‰©ã«ã‚³ãƒ”ーã•れã¾ã™ã€‚ - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="BuyContentsNoOwner" - > -L$[PRICE]ã§ã‚³ãƒ³ãƒ†ãƒ³ãƒ„を購入ã—ã¾ã™ã‹ï¼Ÿ -購入ã—ãŸã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã¯ã€ã‚ãªãŸã®æŒã¡ç‰©ã«ã‚³ãƒ”ーã•れã¾ã™ã€‚ - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmPurchase" - > -ã“ã®å–引ã¯ä»¥ä¸‹ã®ã¨ãŠã‚Šè¡Œã‚れã¾ã™ï¼š -[ACTION] - -ã“ã®è³¼å…¥ã‚’続行ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="å–り消ã—" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmPurchasePassword" - type="password"> -ã“ã®å–引ã¯ä»¥ä¸‹ã®ã¨ãŠã‚Šè¡Œã‚れã¾ã™ï¼š -[ACTION] - -ã“ã®è³¼å…¥ã‚’続行ã—ã¾ã™ã‹ï¼Ÿ -パスワードをå†å…¥åŠ›ã—ã€ã€ŒOKã€ã‚’クリックã—ã¦ãã ã•ã„。 - <form name="form"> - <input - name="message" - type="password"/> - <button - - - name="ConfirmPurchase" - text="OK"/> - <button - - name="Cancel" - text="å–り消ã—"/> - </form> - </notification> - - <notification - - name="SetPickLocation" - > -メモ: -本ピックã®ãƒã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã‚’æ›´æ–°ã—ã¾ã—ãŸãŒ -ã€ä»–ã®è©³ç´°ã¯å…ƒã®å€¤ã®ã¾ã¾ã«ãªã‚Šã¾ã™ã€‚ - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="MoveInventoryFromObject" - > -ã€Œã‚³ãƒ”ãƒ¼ç¦æ¢ã€ã®æŒã¡ç‰©ã‚¢ã‚¤ãƒ†ãƒ ãŒé¸æŠžã•れã¾ã—ãŸã€‚ -ã“れらã®~アイテムã¯ã‚³ãƒ”ーã•れãªã„ã¾ã¾ã€ã‚ãªãŸã®æŒã¡ç‰©ã«ç§»å‹•ã•れã¾ã™ã€‚ - - -アイテムを動ã‹ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - ignoretext="ã‚³ãƒ”ãƒ¼ç¦æ¢ã®æŒã¡ç‰©ã‚’オブジェクトã‹ã‚‰ç§»å‹•ã•ã›ã‚‹ã¨ã" - name="okcancelignore" - notext="ã‚ャンセル" - yestext="OK"/> - </notification> - - <notification - - name="MoveInventoryFromScriptedObject" - > -ã€Œã‚³ãƒ”ãƒ¼ç¦æ¢ã€ã®æŒã¡ç‰©ã‚¢ã‚¤ãƒ†ãƒ ãŒé¸æŠžã•れã¾ã—ãŸã€‚ã“れらã®ã‚¢ã‚¤ãƒ†ãƒ 㯠-コピーã•れるã®ã§ã¯ãªãã€ã‚ãªãŸã®æŒã¡ç‰©ã«ç§»å‹•ã•れã¾ã™ã€‚ -ã“ã®ã‚ªãƒ–ジェクトã¯ã‚¹ã‚¯ãƒªãƒ—ト付ããªã®ã§ã€æŒã¡ç‰©ã«ç§»å‹•ã•ã›ã‚‹ã¨ -スクリプトã«èª¤å‹•作ãŒèµ·ãã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ - -æŒã¡ç‰©ã‚¢ã‚¤ãƒ†ãƒ を移動ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - ignoretext="ã‚³ãƒ”ãƒ¼ç¦æ¢ã®æŒã¡ç‰©ã‚’スクリプト付ãオブジェクトã‹ã‚‰ç§»å‹•ã•ã›ã‚‹ã¨ã" - name="okcancelignore" - notext="ã‚ャンセル" - yestext="OK"/> - </notification> - - <notification - - name="ClickActionNotPayable" - > -è¦å‘Šï¼šã€Œã‚¯ãƒªãƒƒã‚¯ã§ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã«æ”¯æ‰•ã„ã€ã®è¨å®šãŒã•れã¾ã—ãŸã€‚ -ãŸã ã—ã€ã“れã¯ã‚¹ã‚¯ãƒªãƒ—トãŒé‡‘éŠmoney() イベントã«è¿½åŠ ã•れãŸå ´åˆã«ã®ã¿ä½œå‹•ã—ã¾ã™ã€‚ - <form name="form"> - <ignore name="ignore" - text="money()イベントãªã—ã«ã€Œã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã«æ”¯æ‰•ã†ã€ã‚’è¨å®šã™ã‚‹ã¨ã"/> - </form> - </notification> - - <notification - - name="OpenObjectCannotCopy" - > -ã“ã®ã‚ªãƒ–ジェクトã«ã‚ãªãŸãŒã‚³ãƒ”ーã—ã¦ã‚ˆã„アイテムã¯ã‚りã¾ã›ã‚“。 - </notification> - - <notification - - name="WebLaunchAccountHistory" - > -SecondLifeウェブ・ページを開ã„ã¦ã‚¢ã‚«ã‚¦ãƒ³ãƒˆå±¥æ´ã‚’確èªã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - ignoretext="アカウント履æ´ã®ã‚¦ã‚§ãƒ–・ページをãƒãƒ¼ãƒ‰ã™ã‚‹ã¨ã" - name="okcancelignore" - notext="å–り消ã—" - yestext="ページã«ç§»å‹•"/> - </notification> - - <notification - - name="ClickOpenF1Help" - > -Second Life ã®ã‚µãƒãƒ¼ãƒˆã‚¦ã‚§ãƒ–サイトを利用ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - ignoretext="Second Life ã®ã‚µãƒãƒ¼ãƒˆã‚¦ã‚§ãƒ–サイトを閲覧ã™ã‚‹ã«ã‚ãŸã£ã¦ã€‚" - name="okcancelignore" - notext="ã‚ャンセル" - yestext="行ã"/> - </notification> - - <notification - - name="ConfirmQuit" - > -終了ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚æ“作を続行ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - ignoretext="Second Life ã®çµ‚了ã«ã‚ãŸã£ã¦ã€‚" - name="okcancelignore" - notext="継続" - yestext="終了"/> - </notification> - - <notification - - name="HelpReportAbuseEmailLL" - > -利用è¦ç´„é•åã¨ã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ãƒ¼ã‚¹ã‚¿ãƒ³ãƒ€ãƒ¼ãƒ‰é•åã®å ±å‘Šã«ã“ã®ãƒ„ールをã”使用ãã ã•ã„。 å‚照: - -http://secondlife.com/corporate/tos.php -http://secondlife.com/corporate/cs.php - -利用è¦ç´„é•åã¨ã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ãƒ¼ã‚¹ã‚¿ãƒ³ãƒ€ãƒ¼ãƒ‰é•åã«é–¢ã™ã‚‹å…¨ã¦ã®ãƒ¬ãƒãƒ¼ãƒˆã¯ã€èª¿æŸ»ã•れã€è§£æ±ºã•れã¾ã™ã€‚ -以下ã®ãƒªãƒ³ã‚¯å…ˆã®Incident Reportã«ã¦ãã®ç¢ºèªã‚’ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ - -http://secondlife.com/support/incidentreport.php - </notification> - - <notification - - name="HelpReportAbuseEmailEO" - > -é‡è¦ï¼š ã“ã®ãƒ¬ãƒãƒ¼ãƒˆã¯Linden Lab社ã§ã¯ãªãã€\ã‚ãªãŸãŒç¾åœ¨ã„る地域ã®ã‚ªãƒ¼ãƒŠãƒ¼ã«é€ã‚‰ã‚Œã¾ã™ã€‚ -- -ã‚ãªãŸãŒä»Šã„る地域ã®ã‚ªãƒ¼ãƒŠãƒ¼ã¯ã€ä½äººã¨è¨ªå•者ã¸ã®\サービスã®ä¸€ç’°ã¨ã—ã¦ã€ã“ã®åœ°åŸŸã‹ã‚‰ã®ãƒ¬ãƒãƒ¼ãƒˆã‚’ã™ã¹ã¦\å—ã‘付ã‘ã€è§£æ±ºã™ã‚‹ã“ã¨ã«åŒæ„ã—ã¦ã„ã¾ã™ã€‚ Linden Lab社ãŒ\ã‚ãªãŸãŒã“ã“ã‹ã‚‰æå‡ºã™ã‚‹ãƒ¬ãƒãƒ¼ãƒˆã‚’調査ã™ã‚‹ã“ã¨ã¯ã‚りã¾ã›ã‚“。 -地域ã®ã‚ªãƒ¼ãƒŠãƒ¼ã¯ã€ä¸å‹•ç”£ç´„æ¬¾ã§æŒ‡å®šã—ã¦ã„ã‚‹\地元ã®è¦å‰‡ã‚’基ã«ã€å ±å‘Šã•れãŸå•題を解決ã—ã¾ã™ã€‚ -(「世界ã€ã®ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã‹ã‚‰ã€ŒåœŸåœ°æƒ…å ±ã€ã‚’é¸ã¶ã¨ã€ç´„款を\閲覧ã§ãã¾ã™ã€‚) -- -ã“ã®ãƒ¬ãƒãƒ¼ãƒˆã«é–¢ã™ã‚‹è§£æ±ºç–ã¯ã€ã“ã®åœ°åŸŸã«ã ã‘当ã¦ã¯ã¾ã‚Šã¾ã™ã€‚\ä½äººãŒã‚»ã‚«ãƒ³ãƒ‰ãƒ©ã‚¤ãƒ•ã®ä»–ã®åœ°åŸŸã¸ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹éš›ã€\ã“ã®ãƒ¬ãƒãƒ¼ãƒˆã®çµæžœã«å½±éŸ¿ã•れるã“ã¨ã¯ã‚りã¾ã›ã‚“。 Linden Lab社ã ã‘ãŒ\セカンドライフ全域ã«ãŠã‘ã‚‹ã‚¢ã‚¯ã‚»ã‚¹åˆ¶é™æ¨©ã‚’æŒã£ã¦ã„ã¾ã™ã€‚ - </notification> - - <notification - - name="HelpReportBug" - > -ã“ã®ãƒ„ールã¯ã€èª¬æ˜Žã©ãŠã‚Šã«å‹•作ã—ãªã„ãªã©ã®ãƒ†ã‚¯ãƒ‹ã‚«ãƒ«ãªãƒ•ィーãƒãƒ£ãƒ¼ã®ãƒ¬ãƒãƒ¼ãƒˆã®ã¿ã« -使用ã—ã¦ãã ã•ã„。ã§ãã‚‹ã ã‘詳ã—ã„æƒ…å ±ã‚’æä¾›ã—ã¦ãã ã•ã„。 -自動返ç”メールã«ã€ã‚ˆã‚Šè©³ã—ã„æƒ…å ±ã‚’ä»˜ã‘åŠ ãˆã¦è¿”ä¿¡ã™ã‚‹ã“ã¨ã‚‚ -ã§ãã¾ã™ã€‚ -ãƒã‚°ãƒ¬ãƒãƒ¼ãƒˆã¯å…¨ã¦èª¿æŸ»ã•れ解決ã•れã¾ã™ã€‚ã“れã«ã‚ˆã£ã¦Eメールã§è¿”ç”ãŒé€ã‚‰ã‚Œã¦ãã‚‹ã“ã¨ã¯ã‚りã¾ã›ã‚“。 -- -テクニカルãªå•題ãŒç”Ÿã˜ãŸå ´åˆã¯ã€æ¬¡ã®ã‚µãƒãƒ¼ãƒˆã«é€£çµ¡ã—ã¦ãã ã•ã„: -http://secondlife.com/community/support.php -- -注æ„:未完æˆã®å ±å‘Šã¯èª¿æŸ»ã•れã¾ã›ã‚“。 - </notification> - - <notification - - name="HelpReportAbuseSelectCategory" - > -嫌ãŒã‚‰ã›å ±å‘Šã®ã‚«ãƒ†ã‚´ãƒªã‚’é¸æŠžã—ã¦ãã ã•ã„。 -ã‚«ãƒ†ã‚´ãƒªã‚’é¸æŠžã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šã€å«ŒãŒã‚‰ã›å ±å‘Šã®å‡¦ç†ã‚„ä¿ç®¡ã«å¤§å¤‰å½¹ç«‹ã¡ã¾ã™ã€‚ - </notification> - - <notification - - name="HelpReportBugSelectCategory" - > -ãƒã‚°ã®ã‚«ãƒ†ã‚´ãƒªã‚’é¸æŠžã—ã¦ãã ã•ã„。 -ã‚«ãƒ†ã‚´ãƒªã‚’é¸æŠžã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šã€ãƒã‚°å ±å‘Šã®å‡¦ç†ã‚„ä¿ç®¡ã«å¤§å¤‰å½¹ç«‹ã¡ã¾ã™ã€‚ - </notification> - - <notification - - name="HelpReportAbuseAbuserNameEmpty" - > -嫌ãŒã‚‰ã›è¡Œç‚ºã‚’ã—ãŸäººã®åå‰ã‚’入力ã—ã¦ãã ã•ã„。 -æ£ç¢ºãªæƒ…å ±ã®å…¥åŠ›ã¯ã€å«ŒãŒã‚‰ã›å ±å‘Šã®å‡¦ç†ã‚„ä¿ç®¡ã«å¤§å¤‰å½¹ç«‹ã¡ã¾ã™ã€‚ - </notification> - - <notification - - name="HelpReportAbuseAbuserLocationEmpty" - > -嫌ãŒã‚‰ã›ãŒã‚ã£ãŸå ´æ‰€ã‚’入力ã—ã¦ãã ã•ã„。 -æ£ç¢ºãªæƒ…å ±ã®å…¥åŠ›ã¯ã€å«ŒãŒã‚‰ã›å ±å‘Šã®å‡¦ç†ã‚„ä¿ç®¡ã«å¤§å¤‰å½¹ç«‹ã¡ã¾ã™ã€‚ - </notification> - - <notification - - name="HelpReportAbuseSummaryEmpty" - > -嫌ãŒã‚‰ã›ã®æ¦‚è¦ã‚’入力ã—ã¦ãã ã•ã„。 -æ£ç¢ºãªæ¦‚è¦ã®å…¥åŠ›ã¯ã€å«ŒãŒã‚‰ã›å ±å‘Šã®å‡¦ç†ã‚„ä¿ç®¡ã«å¤§å¤‰å½¹ç«‹ã¡ã¾ã™ã€‚ - </notification> - - <notification - - name="HelpReportBugSummaryEmpty" - > -ãƒã‚°ã®æ¦‚è¦ã‚’入力ã—ã¦ãã ã•ã„。 -æ£ç¢ºãªæ¦‚è¦ã®å…¥åŠ›ã¯ã€ãƒã‚°å ±å‘Šã®å‡¦ç†ã‚„ä¿ç®¡ã«å¤§å¤‰å½¹ç«‹ã¡ã¾ã™ã€‚ - </notification> - - <notification - - name="HelpReportAbuseDetailsEmpty" - > -嫌ãŒã‚‰ã›ã®è©³ç´°ãªèª¬æ˜Žã‚’入力ã—ã¦ãã ã•ã„。 -åå‰ã‚„嫌ãŒã‚‰ã›ã®è©³ç´°ã‚’ã€ã§ãã‚‹ã ã‘具体的ã«å…¥åŠ›ã—ã¦ãã ã•ã„。 - -æ£ç¢ºãªèª¬æ˜Žã®å…¥åŠ›ã¯ã€å«ŒãŒã‚‰ã›å ±å‘Šã®å‡¦ç†ã‚„ä¿ç®¡ã«å¤§å¤‰å½¹ç«‹ã¡ã¾ã™ã€‚ - </notification> - - <notification - - name="HelpReportBugDetailsEmpty" - > -ãƒã‚°ã®è©³ç´°ãªèª¬æ˜Žã‚’入力ã—ã¦ãã ã•ã„。 -ãƒã‚°ãŒã©ã®ã‚ˆã†ãªæ¡ä»¶ã§å†ç¾ã™ã‚‹ã‹ãªã©ã‚’ã€ã§ãã‚‹ã ã‘具体的ã«å…¥åŠ›ã—ã¦ãã ã•ã„。 - -æ£ç¢ºãªèª¬æ˜Žã®å…¥åŠ›ã¯ã€ãƒã‚°å ±å‘Šã®å‡¦ç†ã‚„ä¿ç®¡ã«å¤§å¤‰å½¹ç«‹ã¡ã¾ã™ã€‚ - </notification> - - <notification - - name="HelpReportAbuseContainsCopyright" - > -Dear Resident, - -知的財産ã®ä¾µå®³ã«é–¢ã™ã‚‹å ±å‘Šã‚’行ã†éš›ã«ã¯ã€ä»¥ä¸‹ã®ç‚¹ã«æ³¨æ„ã—ã¦ãã ã•ã„。 - -(1) 嫌ãŒã‚‰ã›ã®å ±å‘Šã®ãƒ—ãƒã‚»ã‚¹ã€‚Second Lifeã®æ¨©é™ã‚·ã‚¹ãƒ†ãƒ を悪用ã—ã¦ã„ã‚‹ä½äººã‚’見ã¤ã‘ãŸã‚‰ã€å«ŒãŒã‚‰ã›ã®å ±å‘Šã‚’行ã£ã¦ãã ã•ã„。 -例ãˆã°ã‚³ãƒ”ーBotã®ä½¿ç”¨ã€ãれã«ä¼¼ãŸãƒ„ールã®ä½¿ç”¨ã«ã‚ˆã‚‹çŸ¥çš„財産権ã®ä¾µå®³ãŒã‚りã¾ã™ã€‚ -アビューズãƒãƒ¼ãƒ ã¯èª¿æŸ»ã«åŸºã¥ãSecond Lifeã®ã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ãƒ¼ã‚¹ã‚¿ãƒ³ãƒ€ãƒ¼ãƒ‰ã‚„利用è¦ç´„ã«é•åã™ã‚‹è¡Œç‚ºã¨åˆ¤æ–ã•れãŸå ´åˆã«ã¯é©åˆ‡ãªå‡¦ç½®ã‚’行ã£ã¦ã„ã¾ã™ã€‚ -ãŸã ã—ã€ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã‚’Second Lifeã‹ã‚‰æ’¤åŽ»ã—ã¦ã»ã—ã„ã€ã¨ã„ã£ãŸè¦æœ›ã«ã¯ã‚¢ãƒ“ューズãƒãƒ¼ãƒ ã¯å¿œãˆã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。 - -(2) DMCA(デジタルミレニアム著作権法)åŠã³ã‚³ãƒ³ãƒ†ãƒ³ãƒ„撤去プãƒã‚»ã‚¹ã€‚ Second Lifeã‹ã‚‰ã®ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã®æ’¤åŽ»ã‚’ãƒªã‚¯ã‚¨ã‚¹ãƒˆã™ã‚‹ã«ã¯ã€è‘—ä½œæ¨©ä¾µå®³é€šçŸ¥ã®æå‡ºã‚’è¡Œã†å¿…è¦ãŒã‚りã¾ã™ã€‚ -å‚照: http://secondlife.com/corporate/dmca.php - -ã“ã®ä»¶ã«é–¢ã™ã‚‹å«ŒãŒã‚‰ã›ã®å ±å‘Šã‚’ç¶šã‘ã‚‹éš›ã¯ã€ã“ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’é–‰ã˜ã¦ãã ã•ã„ã€‚é¸æŠžã™ã¹ãカテゴリã¯ã€ŒçŸ¥çš„財産ã®ä¾µå®³ï¼žã‚³ãƒ”ーBotåŠã³æ¨©é™ã®æ‚ªç”¨ã€ãŒé©ã—ã¦ã„ã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“ã®ã§ã”確èªãã ã•ã„。 - -Thank you, - -Linden Lab - </notification> - - <notification - - name="FailedRequirementsCheck" - > -以下ã®å¿…è¦ãªã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆãŒã€[FLOATER]ã‹ã‚‰æŠœã‘è½ã¡ã¦ã„ã¾ã™ -[COMPONENTS] - </notification> - - <notification - - label="æ—¢å˜ã®ä»˜å±žå“ã‚’ç½®æ›" - name="ReplaceAttachment" - > -体ã®ã“ã®éƒ¨ä½ã«ã¯ã‚ªãƒ–ジェクトãŒè£…ç€ã•れã¦ã„ã¾ã™ã€‚ -é¸æŠžã•れãŸã‚ªãƒ–ジェクトã¨ç½®ãæ›ãˆã¾ã™ã‹ï¼Ÿ - <form name="form"> - <ignore name="ignore" - save_option="true" - text="ç¾åœ¨ã€è£…ç€ã—ã¦ã„ã‚‹ã‚‚ã®ã‚’ç½®æ›ã™ã‚‹ã¨ã"/> - <button - - ignore="Replace Automatically" - - name="Yes" - text="OK"/> - <button - ignore="Never Replace" - - name="No" - text="ã‚ャンセル"/> - </form> - </notification> - - <notification - - label="å–り込ã¿ä¸ã®è¦å‘Š" - name="BusyModePay" - > -ç¾åœ¨ã€å–り込ã¿ä¸ã®ãŸã‚ã€ã“ã®æ”¯æ‰•ã„㨠-å¼•ãæ›ãˆã®ã‚¢ã‚¤ãƒ†ãƒ ã‚’å—ã‘å–ã‚‹ã“ã¨ãŒ -ã§ãã¾ã›ã‚“。 - -ã“ã®å–引を完了ã™ã‚‹å‰ã«ã€å–り込ã¿ä¸ã®è¨å®šã‚’解除ã—ã¾ã™ã‹ï¼Ÿ - <form name="form"> - <ignore name="ignore" - save_option="true" - text="å–り込ã¿ä¸ã®äººã¾ãŸã¯ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã«æ”¯æ‰•ã†ã¨ã"/> - <button - - ignore="Always leave Busy Mode" - - name="Yes" - text="OK"/> - <button - ignore="Never leave Busy Mode" - - name="No" - text="ã‚ャンセル"/> - </form> - </notification> - - <notification - - name="ConfirmEmptyTrash" - > -ゴミ箱フォルダã®ä¸èº«ã‚’完全ã«å‰Šé™¤ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚æ“作を続行ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - ignoretext="æŒã¡ç‰©å†…ã®ã€Œã”ã¿ç®±ã€ãƒ•ォルダを空ã«ã™ã‚‹ã¨ã" - name="okcancelignore" - notext="ã‚ャンセル" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmClearBrowserCache" - > -本当ã«ãƒ–ラウザã®ã‚ャッシュをクリアã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="ã‚ャンセル" - yestext="ã¯ã„"/> - </notification> - - <notification - - name="ConfirmClearCookies" - > -本当ã«ã‚¯ãƒƒã‚ーをクリアã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="ã‚ャンセル" - yestext="ã¯ã„"/> - </notification> - - <notification - - name="ConfirmClearMediaUrlList" - > -ä¿å˜ã•れ㟠URL ã®ãƒªã‚¹ãƒˆã‚’消去ã—ã¾ã™ã€‚よã‚ã—ã„ã§ã™ã‹ï¼Ÿ - <usetemplate - name="okcancelbuttons" - notext="ã‚ャンセル" - yestext="ã¯ã„"/> - </notification> - - <notification - - name="ConfirmEmptyLostAndFound" - > -éºå¤±ç‰©ãƒ•ォルダã®ä¸èº«ã‚’完全ã«å‰Šé™¤ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚æ“作を続行ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - ignoretext="æŒã¡ç‰©å†…ã®ã€Œéºå¤±ç‰©ã€ãƒ•ォルダを空ã«ã™ã‚‹ã¨ã" - name="okcancelignore" - notext="ã„ã„ãˆ" - yestext="ã¯ã„"/> - </notification> - - <notification - - name="CopySLURL" - > -以下ã®SLURLãŒã‚¯ãƒªãƒƒãƒ—ボードã«ã‚³ãƒ”ーã•れã¾ã—ãŸã€‚ - [SLURL] - -ä»–ã®äººãŒã‚¢ã‚¯ã‚»ã‚¹ã—ã‚„ã™ã„よã†ã«ã‚¦ã‚§ãƒ–・ページã«è¼‰ã›ãŸã‚Šã€ -ブラウザã®ã‚¢ãƒ‰ãƒ¬ã‚¹ãƒ»ãƒãƒ¼ã«è²¼ã‚Šä»˜ã‘ã¦ã€è‡ªåˆ†ã§ã‚¢ã‚¯ã‚»ã‚¹ã—ã¦ã¿ã¾ã—ょã†ã€‚ - <form name="form"> - <ignore name="ignore" text="SLURLをクリップボードã«ã‚³ãƒ”ーã™ã‚‹ã¨ã"/> - </form> - </notification> - - <notification - - name="GraphicsPreferencesHelp" - > -ã“ã®ãƒ‘ãƒãƒ«ã§ã¯ã€ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã®ã‚µã‚¤ã‚ºã¨è§£åƒåº¦ã€ãŠã‚ˆã³ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã®ã‚°ãƒ©ãƒ•ィックã®å“質をè¨å®šã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚「環境è¨å®šã€ï¼žã€Œè¡¨ç¤ºã€ã®ã‚¤ãƒ³ã‚¿ãƒ•ェースã§ã¯ã€ä½Žã€ä¸ã€é«˜ã€è¶…高ã®4ã¤ã®ä¸ã‹ã‚‰ã‚°ãƒ©ãƒ•ã‚£ãƒƒã‚¯ãƒ»ãƒ¬ãƒ™ãƒ«ã‚’é¸æŠžã§ãã¾ã™ã€‚ã¾ãŸã€ã€Œã‚«ã‚¹ã‚¿ãƒ ã€ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹ã‚’クリックã—ã€ä»¥ä¸‹ã®ã‚°ãƒ©ãƒ•ィックスã®è¨å®šã‚’カスタマイズã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ - -シェーダー:ピクセル・シェーダーã®ã•ã¾ã–ã¾ãªç¨®é¡žã‚’有効ã¾ãŸã¯ç„¡åйã«ã—ã¾ã™ã€‚ - -å射詳細:水ãŒåå°„ã™ã‚‹ã‚ªãƒ–ジェクトã®ç¨®é¡žã‚’è¨å®šã—ã¾ã™ã€‚ - -ã‚¢ãƒã‚¿ãƒ¼ãƒ»ãƒ¬ãƒ³ãƒ€ãƒªãƒ³ã‚°ï¼šã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã«ã‚ˆã‚‹ã‚¢ãƒã‚¿ãƒ¼ã®ãƒ¬ãƒ³ãƒ€ãƒªãƒ³ã‚°æ–¹æ³•ã«å½±éŸ¿ã™ã‚‹ã‚ªãƒ—ションをè¨å®šã—ã¾ã™ã€‚ - -æç”»è·é›¢ï¼šã‚ãªãŸã®è¦–点ã‹ã‚‰è¦–界ã®ã©ã®ãらã„ã®è·é›¢ã¾ã§ã€ã‚ªãƒ–ジェクトãŒãƒ¬ãƒ³ãƒ€ãƒªãƒ³ã‚°ã•れるã‹ã«å½±éŸ¿ã—ã¾ã™ã€‚ - -最大パーティクル数:画é¢ã«ä¸€åº¦ã«è¦‹ã‚‹ã“ã¨ãŒã§ãã‚‹ãƒ‘ãƒ¼ãƒ†ã‚£ã‚¯ãƒ«ã®æœ€å¤§æ•°ã‚’è¨å®šã—ã¾ã™ã€‚ - -ãƒã‚¹ãƒˆãƒ—ãƒã‚»ã‚¹å“質:グãƒãƒ¼åŠ¹æžœï¼ˆè¼ã)ãŒãƒ¬ãƒ³ãƒ€ãƒªãƒ³ã‚°ã•れる際ã®è§£åƒåº¦ã‚’è¨å®šã—ã¾ã™ã€‚ - -メッシュ詳細: 特定ã®ã‚ªãƒ–ジェクトã®ãƒ¬ãƒ³ãƒ€ãƒªãƒ³ã‚°æ™‚ã®ç´°éƒ¨è¡¨ç¾ã€ã¾ãŸã¯ä¸‰è§’å½¢ã®æ•°ã‚’è¨å®šã—ã¾ã™ã€‚ 値を大ããã™ã‚‹ã»ã©ãƒ¬ãƒ³ãƒ€ãƒªãƒ³ã‚°ã«æ™‚é–“ãŒã‹ã‹ã‚Šã¾ã™ãŒã€ã‚ªãƒ–ジェクトãŒã‚ˆã‚Šè©³ç´°ã«è¡¨ç¤ºã•れã¾ã™ã€‚ - -ライティング詳細:レンダリングã™ã‚‹å…‰æºã®ç¨®é¡žã‚’é¸æŠžã—ã¾ã™ã€‚ - -地形詳細: 地形テクスãƒãƒ£ã®ç´°éƒ¨è¡¨ç¾ã‚’è¨å®šã—ã¾ã™ã€‚ - </notification> - - <notification - - name="WLSavePresetAlert" - > -ä¿å˜ã•れãŸäº‹å‰è¨å®šã‚’上書ãã—ã¾ã™ã‹ï¼Ÿ - <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="HelpEditSky" - > -ウィンドライトã®å„種スライダーを編集ã—ã¦ç©ºã‚’作æˆãŠã‚ˆã³ä¿å˜ã—ã¾ã™ã€‚ - </notification> - - <notification - - name="HelpEditDayCycle" - > -1 日を通ã—ã¦å¤‰åŒ–ã™ã‚‹ç©ºã®æ§˜åã‚’è¨å®šã—ã¾ã™ã€‚ - </notification> - - <notification - - name="EnvSettingsHelpButton" - > -次ã®å„è¨å®šã¯ã‚³ãƒ³ãƒ”ュータ上ã§ã‚¤ãƒ³ãƒ¯ãƒ¼ãƒ«ãƒ‰ã®ç’°å¢ƒãŒã©ã®ã‚ˆã†ã«è¡¨ç¤ºã•れるã‹ã‚’調整ã—ã¾ã™ã€‚ è¨å®šã®ã™ã¹ã¦ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã«ã¯ãŠä½¿ã„ã®ã‚°ãƒ©ãƒ•ィック・カードãŒå‘¨å›²ï¼ˆå¤§æ°—)シェーダー (atmospheric shaders) をサãƒãƒ¼ãƒˆã—ã¦ã„ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ - -「時間帯ã€ã‚¹ãƒ©ã‚¤ãƒ€ãƒ¼ã‚’調整ã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šãƒ“ューワã§å®Ÿéš›ã«ä½¿ç”¨ã™ã‚‹æ™‚間帯を変更ã§ãã¾ã™ã€‚ - -「雲ã®é‡ã€ã‚¹ãƒ©ã‚¤ãƒ€ãƒ¼ã‚’調整ã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šç©ºã‚’ãŠãŠã†é›²ã®é‡ã‚’制御ã§ãã¾ã™ã€‚ - -「水ã®è‰²ã€ã‚«ãƒ©ãƒ¼ãƒ»ãƒ”ッカーã§è‰²ã‚’é¸æŠžã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šæ°´ã®è‰²ã‚’変更ã§ãã¾ã™ã€‚ - -「水ä¸ã®ãƒ•ォグ効果ã€ã‚¹ãƒ©ã‚¤ãƒ€ãƒ¼ã‚’調整ã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šæ°´ã®é€æ˜Žåº¦ã‚’制御ã§ãã¾ã™ã€‚ - -「ä¸å‹•ç”£ã®æ™‚刻を使用ã€ã‚’クリックã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šæ™‚刻ã¯ãƒªã‚»ãƒƒãƒˆã•れ地域ã®ç¾åœ¨æ™‚刻ã«é€£å‹•ã•ã›ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ - -「空ã®é«˜åº¦ãªè¨å®šã€ã‚’クリックã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šç©ºã®ã‚ˆã‚Šé«˜åº¦ãªè¨å®šã‚’行ã†ãŸã‚ã®ç·¨é›†ãƒ—ãƒã‚°ãƒ©ãƒ ã‚’èµ·å‹•ã§ãã¾ã™ã€‚ - -「水ã®é«˜åº¦ãªè¨å®šã€ã‚’クリックã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šæ°´ã®ã‚ˆã‚Šé«˜åº¦ãªè¨å®šã‚’行ã†ãŸã‚ã®ç·¨é›†ãƒ—ãƒã‚°ãƒ©ãƒ ã‚’èµ·å‹•ã§ãã¾ã™ã€‚ - </notification> - - <notification - - name="HelpDayCycle" - > -「デイ・サイクル編集ã€ã§ã¯ Second Life ã§ã®æ˜¼ã¨å¤œã®ç©ºã®å¤‰åŒ–を制御ã§ãã¾ã™ã€‚ ã“れã¯ã€ŒåŸºæœ¬ç’°å¢ƒç·¨é›†ã€ã®ã€Œæ™‚間帯ã€ã‚¹ãƒ©ã‚¤ãƒ€ãƒ¼ã§ä½¿ç”¨ã•れるサイクルã§ã™ã€‚ - -「デイ・サイクル編集ã€ã¯ã‚ーフレームをè¨å®šã™ã‚‹ã“ã¨ã§æ©Ÿèƒ½ã—ã¾ã™ã€‚ å„ã‚ーフレームã«ã¯ãƒ—リセットã•れãŸç©ºã®è¨å®šãŒé–¢é€£ä»˜ã‘られã¦ã„ã¾ã™ï¼ˆæ™‚間グラフã«ç°è‰²ã®ç¯€ã¨ã—ã¦è¡¨ç¤ºã•れã¾ã™ï¼‰ã€‚ ウィンドライト( WindLight )ã¯ã‚ーフレーム間をデータ補間ã—ã€æ™‚é–“ã®çµŒéŽã¨ã¨ã‚‚ã«ç©ºã®è‡ªç„¶ãªã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ã‚’作り出ã—ã¾ã™ã€‚ - -時間グラフã®ä¸Šã«è¡¨ç¤ºã•れる黄色ã®çŸ¢å°ã¯ã€æ™‚刻をもã¨ã«ã—ãŸç¾åœ¨ã®çœºã‚を表ã—ã¦ã„ã¾ã™ã€‚ 黄色ã®çŸ¢å°ã‚’クリック&ドラッグã™ã‚‹ã“ã¨ã§ã€1 æ—¥ã®ç§»ã‚Šå¤‰ã‚りを見るã“ã¨ãŒã§ãã¾ã™ã€‚ 「ã‚ーã®è¿½åŠ ã€ãƒœã‚¿ãƒ³ã¾ãŸã¯ã€Œã‚ーã®å‰Šé™¤ã€ãƒœã‚¿ãƒ³ã‚’押ã—ã¦æ™‚間グラフã®å³å´ã«ã‚ãƒ¼ãƒ•ãƒ¬ãƒ¼ãƒ ã‚’è¿½åŠ ã‚ã‚‹ã„ã¯å‰Šé™¤ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ - -ã‚ãƒ¼ãƒ•ãƒ¬ãƒ¼ãƒ ã®æ™‚刻を指定ã™ã‚‹ã«ã¯ã€æ™‚é–“ã‚°ãƒ©ãƒ•ã«æ²¿ã£ã¦ãƒ‰ãƒ©ãƒƒã‚°ã™ã‚‹ã‹ã€Œã‚ーフレームã®è¨å®šã€ã®ãƒ•レーム内ã§å€¤ã‚’直接入力ã—ã¾ã™ã€‚ 「ã‚ーフレームã®è¨å®šã€ã®ãƒ•レーム内ã§ã¯ã‚ーフレームã«ã‚¦ã‚£ãƒ³ãƒ‰ãƒ©ã‚¤ãƒˆï¼ˆ WindLight )ã®äº‹å‰è¨å®šã‚’関連付ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ - -「サイクルã®é•·ã•ã€ã§ã¯1 æ—¥å…¨ä½“ã®æ™‚間を指定ã§ãã¾ã™ã€‚ ã“ã®å€¤ã‚’低ãè¨å®šã™ã‚‹ã¨ï¼ˆä¾‹ãˆã°ï¼’分)ã€24 æ™‚é–“ã®æ™‚間グラフã¯å®Ÿæ™‚é–“ã® 2 分間ã«ç›¸å½“ã™ã‚‹ã“ã¨ã‚’æ„味ã—ã¾ã™ã€‚ 時間グラフã¨ã‚ーフレーム・サイクルã®è¨å®šãŒå®Œäº†ã—ãŸã‚‰ã€ã€Œå†ç”Ÿã€ãƒœã‚¿ãƒ³ã¨ã€Œåœæ¢ã€ãƒœã‚¿ãƒ³ã‚’使用ã—ã¦çµæžœã‚’プレビューã—ã¦ã¿ã¾ã—ょã†ã€‚ ã¾ãŸã€æ™‚間グラフ上ã®é»„è‰²ã„æ™‚刻表示矢å°ã‚’移動ã™ã‚‹ã“ã¨ã«ã‚ˆã£ã¦ã‚‚サイクルã®å¤‰åŒ–をインタラクティブã«ç¢ºèªã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ 「ä¸å‹•ç”£ã®æ™‚刻を使用ã€ãƒœã‚¿ãƒ³ã‚’使用ã™ã‚‹ã“ã¨ã§æ—¥ã®é•·ã•ã¨æ™‚刻ãŒä¸å‹•産ã®ãƒ‡ã‚¤ãƒ»ã‚µã‚¤ã‚¯ãƒ«ã«åŒæœŸã•れã¾ã™ã€‚ - -デイ・サイクルã®è¨å®šãŒå®Œäº†ã—ãŸã‚‰ã€ã€Œãƒ‡ã‚¤ãƒ»ãƒ†ã‚¹ãƒˆã‚’ä¿å˜ã€ãƒœã‚¿ãƒ³ãŠã‚ˆã³ã€Œãƒ‡ã‚¤ãƒ»ãƒ†ã‚¹ãƒˆã‚’ãƒãƒ¼ãƒ‰ã€ãƒœã‚¿ãƒ³ã‚’使用ã—ã¦ãƒ‡ã‚¤ãƒ»ã‚µã‚¤ã‚¯ãƒ«ã‚’ä¿å˜ãŠã‚ˆã³ãƒãƒ¼ãƒ‰ã—ã¾ã™ã€‚ å°šã€ç¾åœ¨ã®ä»•様ã§ã¯ãƒ‡ã‚¤ãƒ»ã‚µã‚¤ã‚¯ãƒ«ã§æŒ‡å®šã§ãã‚‹ã®ã¯ 1 日分ã ã‘ã§ã™ã€‚ - </notification> - - <notification - - name="HelpBlueHorizon" - > -空ã®è‰²ã‚’調整ã™ã‚‹ã«ã¯ 「R〠(赤)ã€ã€ŒG〠(緑)ã€ã€ŒB〠(é’) ã®å„スライダーを使用ã—ã¾ã™ã€‚  「I〠スライダーを使用ã™ã‚‹ã¨ã€3 ã¤ã® RGB スライダーを一斉ã«å‹•ã‹ã™ã“ã¨ãŒã§ãã¾ã™ã€‚ - </notification> - - <notification - - name="HelpHazeHorizon" - > -「空ã¨é 景ã®éœ²å…‰ã€ã¯é¢¨æ™¯ã®éœ²å…‰é‡å…¨ä½“を調整ã™ã‚‹ä¸Šã§æœ€ã‚‚便利ãªãƒ‘ラメーター㮠1 ã¤ã§ã™ã€‚ 太陽光ã«ã‚ˆã‚‹ãƒ›ãƒ¯ã‚¤ãƒˆã‚¢ã‚¦ãƒˆç¾è±¡ã‚„æš—ã絞り込んã è¨å®šãªã©ã€ã•ã¾ã–ã¾ãªéœ²å‡ºè¨å®šã‚’シミュレーションã§ãã¾ã™ã€‚ - </notification> - - <notification - - name="HelpBlueDensity" - > -「空ã®é…è‰²ã¨æ¿ƒåº¦ã€ã¯ç©ºã¨éœ§ã®å½©åº¦å…¨ä½“ã«å½±éŸ¿ã—ã¾ã™ã€‚ 「I〠スライダーをå³ã«ç§»å‹•ã™ã‚‹ã¨è‰²ã¯æ˜Žã‚‹ããã£ãりã¨ãªã‚Šã¾ã™ã€‚ ã“ã®ã‚¹ãƒ©ã‚¤ãƒ€ãƒ¼ã‚’左端ã«ç§»å‹•ã™ã‚‹ã¨ã€è‰²ã¯å½©ã‚Šã‚’失ã„ã€ç™½é»’ã«é€€è‰²ã—ã¾ã™ã€‚ 空ã®è‰²ã‚’微調整ã™ã‚‹å ´åˆã¯ã€ã€ŒR〠(赤)〠「G〠(緑)〠「B〠(é’) ã®å„スライダーを使用ã—ã¦å½©åº¦ã‚’個別ã«åˆ¶å¾¡ã§ãã¾ã™ã€‚ - </notification> - - <notification - - name="HelpHazeDensity" - > -「大気ã®ä¸é€æ˜Žåº¦ã€ã¯å¤§æ°—ä¸ã®ã©ã‚“よりã¨ã—ãŸç©ºã®é›°å›²æ°—ã€ã‚°ãƒ¬ãƒ¼ãŒã‹ã£ãŸéœ§ã®ãƒ¬ãƒ™ãƒ«ã‚’制御ã—ã¾ã™ã€‚ 濃ã„煙や大気汚染ãªã© -を表ç¾ã™ã‚‹ã®ã«é©ã—ã¦ã„ã¾ã™ã€‚ 霧やもやãªã©ã®è¡¨ç¾æ‰‹æ®µã¨ã—ã¦ã‚‚効果的ã§ã™ã€‚ - </notification> - - <notification - - name="HelpDensityMult" - > -「大気ã®ä¸é€æ˜Žåº¦ã®å¢—å¹…ã€ã¯ç©ºæ°—ã®æ¿ƒåº¦å…¨ä½“を制御ã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã§ãã¾ã™ã€‚ ã“ã®å€¤ã‚’低ãè¨å®šã™ã‚‹ã¨ã€Œå¤§æ°—ã®è–„ã„状態ã€ã‚’演出ã—ã€é«˜ã„数値ã«è¨å®šã™ã‚‹ã¨ã¨ã¦ã‚‚ã©ã‚“よりã¨ã—ãŸã‚¹ãƒ¢ãƒƒã‚°ã®ã‹ã‹ã£ãŸé›°å›²æ°—を表ç¾ã§ãã¾ã™ã€‚ - </notification> - - <notification - - name="HelpDistanceMult" - > -ウィンドライトã®è¦–覚的è·é›¢ã‚’調整ã—ã¾ã™ã€‚ 値ã¨ã—ã¦ã‚¼ãƒã‚’è¨å®šã™ã‚‹ã¨ã€åœ°å½¢ãŠã‚ˆã³ã‚ªãƒ–ジェクトã«å¯¾ã™ã‚‹ -ウィンドライトã®å½±éŸ¿ã‚’効果的ã«å–り消ã™ã“ã¨ãŒã§ãã¾ã™ã€‚ 1 より大ããªå€¤ã‚’è¨å®šã™ã‚‹å ´åˆã€å€¤ãŒå¤§ãããªã‚‹ã«ã¤ã‚Œã¦ -å¤§æ°—ãŒæ¬¡ç¬¬ã«æ¿ƒããªã‚‹ã‚ˆã†ãªåŠ¹æžœãŒå¾—られã¾ã™ã€‚ - </notification> - - <notification - - name="HelpMaxAltitude" - > -「最大高度ã€ã§ã¯å¤§æ°—ä¸ã®å…‰ã®é‡ã‚’算出ã™ã‚‹ã¨ãã« -ウィンドライトãŒç®—出ã—ãŸé«˜åº¦ã‚’調整ã—ã¾ã™ã€‚ 1 æ—¥ã®çµ‚ã‚りã«å¤•焼ã‘ã®åº¦åˆã„を調整ã™ã‚‹ã¨ãã«å½¹ç«‹ã¡ã¾ã™ã€‚ - </notification> - - <notification - - name="HelpSunlightColor" - > -風景ã®ä¸ã§ç›´å°„日光ã®è‰²ã‚„å¼·ã•を調整ã—ã¾ã™ã€‚ - </notification> - - <notification - - name="HelpSunAmbient" - > -風景ã®ä¸ã§å‘¨å›²ã‚’ã¨ã‚Šã¾ã大気ä¸ã®ã‚¢ãƒ³ãƒ“エント光ã®è‰²ã‚„å¼·ã•を調整ã—ã¾ã™ã€‚ - </notification> - - <notification - - name="HelpSunGlow" - > -「サイズã€ã‚¹ãƒ©ã‚¤ãƒ€ãƒ¼ã¯å¤ªé™½ã®å¤§ãã•を制御ã—ã¾ã™ã€‚ -「フォーカスã€ã‚¹ãƒ©ã‚¤ãƒ€ãƒ¼ã¯ç©ºã‚’背ã«ã—ãŸå¤ªé™½ã®ã‹ã™ã¿å…·åˆã‚’制御ã—ã¾ã™ã€‚ - </notification> - - <notification - - name="HelpSceneGamma" - > -風景ã®ä¸ã§æ˜Žæš—ã®é…分を調整ã—ã¾ã™ã€‚ - </notification> - - <notification - - name="HelpStarBrightness" - > -ç©ºã®æ˜Ÿã®è¼ãを調整ã—ã¾ã™ã€‚ - </notification> - - <notification - - name="HelpTimeOfDay" - > -空ã®å¤ªé™½ã®å ´æ‰€ã‚’調整ã—ã¾ã™ã€‚ -標高ã«ä¼¼ã¦ã„ã¾ã™ã€‚ - </notification> - - <notification - - name="HelpEastAngle" - > -空ã®å¤ªé™½ã®å ´æ‰€ã‚’調整ã—ã¾ã™ã€‚ -æ–¹ä½è§’ã«ä¼¼ã¦ã„ã¾ã™ã€‚ - </notification> - - <notification - - name="HelpCloudColor" - > -雲ã®è‰²ã‚’編集ã—ã¾ã™ã€‚ 通常ã¯ç™½ã£ã½ã„色をãŠå‹§ã‚ã—ã¾ã™ãŒã€ã‚‚ã¡ã‚ã‚“ -ãŠå¥½ã¿ã®è‰²ã‚’è¨å®šã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="HelpCloudDetail" - > -主è¦ãªé›²ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ã®ä¸Šã«ãƒ¬ã‚¤ãƒ¤ãƒ¼ã•れãŸè©³ç´°ãªã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’制御ã—ã¾ã™ã€‚ X 㨠Y ã§ãã®ä½ç½®ã‚’制御ã—ã¾ã™ã€‚ 「D〠(濃度) ã¯çœŸç¶¿ã®ã‚ˆã†ãªæ§˜åや雲ã®å‰²ã‚Œç›®ã® -様åãªã©é›²ã®å¤–観を制御ã—ã¾ã™ã€‚ - </notification> - - <notification - - name="HelpCloudDensity" - > -「X〠㨠「Y〠ã®ã‚¹ãƒ©ã‚¤ãƒ€ãƒ¼ã§é›²ã®ä½ç½®ã‚’〠-「D〠ã®ã‚¹ãƒ©ã‚¤ãƒ€ãƒ¼ã§ãã®å¯†åº¦ã‚’制御 -ã§ãã¾ã™ã€‚ - </notification> - - <notification - - name="HelpCloudCoverage" - > -空を覆ã†é›²ã®é‡ã‚’制御ã—ã¾ã™ã€‚ - </notification> - - <notification - - name="HelpCloudScale" - > -ç©ºã«æµ®ã‹ã¶é›²ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ã®ç¸®å°ºã‚’制御ã—ã¾ã™ã€‚ - </notification> - - <notification - - name="HelpCloudScrollX" - > -「Xã€ ã®æ–¹å‘ã«é›²ãŒç§»å‹•ã™ã‚‹éš›ã®é€Ÿåº¦ã‚’制御ã—ã¾ã™ã€‚ - </notification> - - <notification - - name="HelpCloudScrollY" - > -「Yã€ ã®æ–¹å‘ã«é›²ãŒç§»å‹•ã™ã‚‹éš›ã®é€Ÿåº¦ã‚’制御ã—ã¾ã™ã€‚ - </notification> - - <notification - - name="HelpClassicClouds" - > -ã“ã®ãƒœãƒƒã‚¯ã‚¹ã‚’有効ã«ã™ã‚‹ã¨ã€WindLight ã®é›²ã«åŠ ãˆã¦ã€Second Life ã®å¾“æ¥ã®é›²ã‚‚レンダリングã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚ - </notification> - - <notification - - name="HelpWaterFogColor" - > -æ°´ä¸ã®ãƒ•ォグ効果ã«è‰²ã‚’ã¤ã‘ã¾ã™ã€‚ - </notification> - - <notification - - name="HelpWaterFogDensity" - > -æ°´ä¸ã®ãƒ•ォグ効果ã®å¼·å¼±ã€æ°´ä¸ã§ã©ã®ãらã„ã®è·é›¢ã¾ã§è¦‹æ¸¡ã›ã‚‹ã‹ã‚’制御ã—ã¾ã™ã€‚ - </notification> - - <notification - - name="HelpUnderWaterFogMod" - > -「水ä¸ã®ãƒ•ォグ濃度指数ã€ã®åŠ¹æžœã‚’åŠ æ¸›ã—ã¦ã€ã‚ãªãŸã®ã‚¢ãƒã‚¿ãƒ¼ãŒæ°´ä¸ã«ã„ã‚‹ã¨ãã€ã©ã®ãらã„é ãã¾ã§è¦‹ã‚‹ã“ã¨ãŒã§ãã‚‹ã‹ã‚’制御ã—ã¾ã™ã€‚ - </notification> - - <notification - - name="HelpWaterGlow" - > -æ°´é¢ã®è¼ãã®åº¦åˆã„を制御ã—ã¾ã™ã€‚ - </notification> - - <notification - - name="HelpWaterNormalScale" - > -æ°´é¢ã‚’表ç¾ã™ã‚‹ 3 種類ã®ã•ã–æ³¢ã®ç¸®å°ºã‚’制御ã—ã¾ã™ã€‚ - </notification> - - <notification - - name="HelpWaterFresnelScale" - > -ã•ã¾ã–ã¾ãªè§’度ã§ã€åå°„ã™ã‚‹å…‰ã®é‡ã‚’制御ã—ã¾ã™ã€‚ - </notification> - - <notification - - name="HelpWaterFresnelOffset" - > -åå°„ã™ã‚‹å…‰åº¦ã®é‡ã‚’制御ã—ã¾ã™ã€‚ - </notification> - - <notification - - name="HelpWaterScaleAbove" - > -上ã‹ã‚‰æ°´ä¸ã‚’見ãŸã¨ãã®å…‰ã®å±ˆæŠ˜å…·åˆã‚’制御ã—ã¾ã™ã€‚ - </notification> - - <notification - - name="HelpWaterScaleBelow" - > -æ°´ä¸ã‹ã‚‰è¦‹ãŸã¨ãã®å…‰ã®å±ˆæŠ˜å…·åˆã‚’制御ã—ã¾ã™ã€‚ - </notification> - - <notification - - name="HelpWaterBlurMultiplier" - > -æ³¢ã¨åå°„ã®æ··ã–り具åˆã‚’制御ã—ã¾ã™ã€‚ - </notification> - - <notification - - name="HelpWaterNormalMap" - > -å射や屈折を決定ã™ã‚‹ãŸã‚ã«æ°´ã«é‡ãられるノーマル・マップを制御ã—ã¾ã™ã€‚ - </notification> - - <notification - - name="HelpWaterWave1" - > -拡大ã•れãŸãƒŽãƒ¼ãƒžãƒ«ãƒ»ãƒžãƒƒãƒ—ãŒç§»å‹•ã™ã‚‹æ–¹å‘(X 軸㨠Y 軸ã§è¡¨ç¾ï¼‰ã¨é€Ÿåº¦ã‚’制御ã—ã¾ã™ã€‚ - </notification> - - <notification - - name="HelpWaterWave2" - > -縮å°ã•れãŸãƒŽãƒ¼ãƒžãƒ«ãƒ»ãƒžãƒƒãƒ—ãŒç§»å‹•ã™ã‚‹æ–¹å‘(X 軸㨠Y 軸ã§è¡¨ç¾ï¼‰ã¨é€Ÿåº¦ã‚’制御ã—ã¾ã™ã€‚ - </notification> - - <notification - - name="NewSkyPreset" - > -æ–°ã—ã„空ã®åå‰ã‚’指定ã—ã¦ãã ã•ã„。 - <form name="form"> - <input name="message" type="text"> -æ–°ã—ã„事å‰è¨å®š - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="ã‚ャンセル"/> - </form> - </notification> - - <notification - - name="ExistsSkyPresetAlert" - > -事å‰è¨å®šãŒã™ã§ã«å˜åœ¨ã—ã¾ã™ï¼ - </notification> - - <notification - - name="NewWaterPreset" - > -æ–°ã—ã„æ°´ã®äº‹å‰è¨å®šã®åå‰ã‚’指定ã—ã¦ãã ã•ã„。 - <form name="form"> - <input name="message" type="text"> -æ–°ã—ã„事å‰è¨å®š - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="ã‚ャンセル"/> - </form> - </notification> - - <notification - - name="ExistsWaterPresetAlert" - > -事å‰è¨å®šãŒã™ã§ã«å˜åœ¨ã—ã¾ã™ï¼ - </notification> - - <notification - - name="WaterNoEditDefault" - > -デフォルトã®è¨å®šã‚’編集ã—ãŸã‚Šå‰Šé™¤ã—ãŸã‚Šã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 - </notification> - - <notification - - name="ChatterBoxSessionStartError" - > -[RECIPIENT]ã¨ã®æ–°ã—ã„ãƒãƒ£ãƒƒãƒˆã‚’é–‹å§‹ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ -[REASON] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="ChatterBoxSessionEventError" - > -[EVENT] -[REASON] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="ForceCloseChatterBoxSession" - > -[NAME]ã¨ã®ãƒãƒ£ãƒƒãƒˆã‚»ãƒƒã‚·ãƒ§ãƒ³ã‚’é–‰ã˜ã¾ã™ã€‚ -[REASON] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="Cannot_Purchase_an_Attachment" - > -ã‚¢ã‚¤ãƒ†ãƒ ãŒæ·»ä»˜ç‰©ã®ä¸€éƒ¨ã§ã‚ã‚‹é–“ã¯ã€ -アイテムを購入ã§ãã¾ã›ã‚“。 - </notification> - - <notification - - label="デビット許å¯ã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆã«ã¤ã„ã¦" - name="DebitPermissionDetails" - > -ã“ã®è¦æ±‚を許å¯ã™ã‚‹ã¨ã€ã‚¹ã‚¯ãƒªãƒ—トã‹ã‚‰ã‚ãªãŸã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã«ãƒªãƒ³ãƒ‡ãƒ³ãƒ»ãƒ‰ãƒ«ã‚’課金ã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚ ã“ã®è¨±å¯ã‚’å–り消ã™ã«ã¯ã€ã‚ªãƒ–ジェクトã®ã‚ªãƒ¼ãƒŠãƒ¼ã¯ã‚ªãƒ–ジェクトを削除ã™ã‚‹ã‹ã€ã‚ªãƒ–ジェクトã®ã‚¹ã‚¯ãƒªãƒ—トをリセットã—ãªã‘れã°ãªã‚Šã¾ã›ã‚“。 - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="AutoWearNewClothing" - > -ã‚ãªãŸãŒä½œæˆã—ãŸæœã‚¢ã‚¤ãƒ†ãƒ を自動的ã«è£…ç€ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate - ignoretext="æ–°ã—ã„æœã‚’自動的ã«è£…ç€ã™ã‚‹" - name="okcancelignore" - notext="ã„ã„ãˆ" - yestext="ã¯ã„"/> - </notification> - - <notification - - name="NotAgeVerified" - > -ã“ã®åŒºç”»ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ãŸã‚ã«ã¯ã€å¹´é½¢ç¢ºèªã‚’行ã†å¿…è¦ãŒã‚りã¾ã™ã€‚ -Second Lifeã®ã‚¦ã‚§ãƒ–サイトã«ã‚¢ã‚¯ã‚»ã‚¹ã—ã¦ã€å¹´é½¢ç¢ºèªã‚’行ã„ã¾ã™ã‹ï¼Ÿ - -[_URL] - <url option="0" name="url"> - - https://secondlife.com/account/verification.php?lang=ja - </url> - <usetemplate - ignoretext="å¹´é½¢ã®æœªç¢ºèªã«ã¤ã„ã¦è¦å‘Šã™ã‚‹" - name="okcancelignore" - notext="ã„ã„ãˆ" - yestext="ã¯ã„"/> - </notification> - - <notification - - name="Cannot enter parcel: no payment info on file" - > -ã“ã®åŒºç”»ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã«ã¯ã€æ”¯æ‰•ã„æƒ…å ±ãŒäº‹å‰ã«ç™»éŒ²ã•れã¦ã„ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ -Second Lifeã®ã‚¦ã‚§ãƒ–サイトã«ã‚¢ã‚¯ã‚»ã‚¹ã—ã¦ã€è¨å®šã—ã¾ã™ã‹ï¼Ÿ - -[_URL] - <url option="0" name="url"> - - https://secondlife.com/account/index.php?lang=ja - </url> - <usetemplate - ignoretext="æ”¯æ‰•ã„æƒ…å ±ã®æœªç™»éŒ²ã«ã¤ã„ã¦è¦å‘Šã™ã‚‹" - name="okcancelignore" - notext="ã„ã„ãˆ" - yestext="ã¯ã„"/> - </notification> - - <notification - - name="MissingString" - > -æ–‡å—列[STRING_NAME]ãŒstrings.xmlã«å«ã¾ã‚Œã¦ã„ã¾ã›ã‚“ - </notification> - - <notification - - name="SystemMessageTip" - > -[MESSAGE] - </notification> - - <notification - - name="Cancelled" - > -å–り消ã•れã¾ã—㟠- </notification> - - <notification - - name="CancelledSit" - > -座るã®ã‚’å–り消ã•れã¾ã—㟠- </notification> - - <notification - - name="CancelledAttach" - > -添付ã¯å–り消ã•れã¾ã—㟠- </notification> - - <notification - - name="ReplacedMissingWearable" - > -æ¬ è½ã—ã¦ã„ã‚‹æœï¼èº«ä½“部ä½ã‚’デフォルトã«ç½®æ›ã—ã¾ã™ã€‚ - </notification> - - <notification - - name="GroupNotice" - > -ä»¶å: [SUBJECT], メッセージ: [MESSAGE] - </notification> - - <notification - - name="FriendOnline" - > -[FIRST] [LAST]ã¯ã‚ªãƒ³ãƒ©ã‚¤ãƒ³ã§ã™ã€‚ - </notification> - - <notification - - name="FriendOffline" - > -[FIRST] [LAST]ã¯ã‚ªãƒ•ラインã§ã™ã€‚ - </notification> - - <notification - - name="AddSelfFriend" - > -自分自身をフレンドã«ã¯ã§ãã¾ã›ã‚“。 - </notification> - - <notification - - name="UploadingAuctionSnapshot" - > -インワールドã¨ã‚¦ã‚§ãƒ–・サイトã®ã‚¹ãƒŠãƒƒãƒ—ショットをアップãƒãƒ¼ãƒ‰ä¸ã§ã™... -ï¼ˆæ‰€è¦æ™‚間:約5分) - </notification> - - <notification - - name="UploadPayment" - > -アップãƒãƒ¼ãƒ‰ã« L$[AMOUNT] 支払ã„ã¾ã—ãŸã€‚ - </notification> - - - - <notification - - name="UploadSnapshotDone" - > -インワールドã§ã®ã‚¹ãƒŠãƒƒãƒ—ショットã®ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ãŒå®Œäº†ã—ã¾ã—ãŸã€‚ - </notification> - - <notification - - name="TerrainDownloaded" - > -raw地形ãŒãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ã•れã¾ã—㟠- </notification> - - <notification - - name="GestureMissing" - > -ジェスãƒãƒ£ãƒ¼[NAME]ãŒãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«ã‚りã¾ã›ã‚“。 - </notification> - - <notification - - name="UnableToLoadGesture" - > -ジェスãƒãƒ£ãƒ¼[NAME]ã‚’èªã¿è¾¼ã‚€ã“ã¨ãŒã§ãã¾ã›ã‚“。 -å†åº¦ã€è©¦ã¿ã¦ãã ã•ã„。 - </notification> - - <notification - - name="LandmarkMissing" - > -データベースã«ãƒ©ãƒ³ãƒ‰ãƒžãƒ¼ã‚¯ãŒã‚りã¾ã›ã‚“。 - </notification> - - <notification - - name="UnableToLoadLandmark" - > -ランドマークをãƒãƒ¼ãƒ‰ã§ãã¾ã›ã‚“。 ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="CapsKeyOn" - > -コンピューター㮠Caps Lockã‚ー㌠-有効ã«ãªã£ã¦ã„ã¾ã™ã€‚パスワード入力㫠-影響ã™ã‚‹ã®ã§è§£é™¤ã—ã¾ã—ょã†ã€‚ - </notification> - - <notification - - name="NotecardMissing" - > -ノートカードãŒãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«ã‚りã¾ã›ã‚“。 - </notification> - - <notification - - name="NotecardNoPermissions" - > -ノートカードを閲覧ã™ã‚‹ã«ã¯æ¨©é™ãŒä¸å分ã§ã™ã€‚ - </notification> - - <notification - - name="RezItemNoPermissions" - > -オブジェクトをrezã™ã‚‹ã«ã¯ãƒ‘ーミッション(承èªï¼‰ãŒä¸è¶³ã—ã¦ã¾ã™ã€‚ - </notification> - - <notification - - name="UnableToLoadNotecard" - > -ノートカードをãƒãƒ¼ãƒ‰ã§ãã¾ã›ã‚“。 -ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="ScriptMissing" - > -データベースã«ã‚¹ã‚¯ãƒªãƒ—トãŒã‚りã¾ã›ã‚“。 - </notification> - - <notification - - name="ScriptNoPermissions" - > -スクリプトを閲覧ã™ã‚‹ã«ã¯æ¨©é™ãŒä¸å分ã§ã™ã€‚ - </notification> - - <notification - - name="UnableToLoadScript" - > -スクリプトをãƒãƒ¼ãƒ‰ã§ãã¾ã›ã‚“。 ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="IncompleteInventory" - > -ã‚ãªãŸã®æä¾›ã™ã‚‹ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã¯ã€ã“ã®å ´æ‰€ã§ã¯ã¾ã 全部æƒã„ã¾ã›ã‚“。 -å°‘ã—ã—ã¦ã‹ã‚‰ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="CannotModifyProtectedCategories" - > -ä¿è·ã•れãŸã‚«ãƒ†ã‚´ãƒªãƒ¼ã¯ä¿®æ£ã§ãã¾ã›ã‚“。 - </notification> - - <notification - - name="CannotRemoveProtectedCategories" - > -ä¿è·ã•れãŸã‚«ãƒ†ã‚´ãƒªãƒ¼ã¯å‰Šé™¤ã§ãã¾ã›ã‚“。 - </notification> - - <notification - - name="OfferedCard" - > -ã‚ãªãŸã¯[FIRST] [LAST]ã«ã‚³ãƒ¼ãƒªãƒ³ã‚°ãƒ»ã‚«ãƒ¼ãƒ‰ã‚’é€ã‚Šã¾ã—ãŸã€‚ - </notification> - - <notification - - name="UnableToBuyWhileDownloading" - > -オブジェクトデータã®ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ä¸ã¯è³¼å…¥ã§ãã¾ã›ã‚“。 -ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="UnableToLinkWhileDownloading" - > -オブジェクトデータã®ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ä¸ã¯ãƒªãƒ³ã‚¯ã§ãã¾ã›ã‚“。 -ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="CannotBuyObjectsFromDifferentOwners" - > -複数ã®ã‚ªãƒ¼ãƒŠãƒ¼ã‹ã‚‰åŒæ™‚ã«ã‚ªãƒ–ジェクトを購入ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 -å˜ä¸€ã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’é¸æŠžã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="ObjectNotForSale" - > -オブジェクトã¯è²©å£²å¯¾è±¡ã§ã¯ã‚りã¾ã›ã‚“。 - </notification> - - <notification - - name="EnteringGodMode" - > -レベル[LEVEL]ã®ã‚´ãƒƒãƒ‰ãƒ»ãƒ¢ãƒ¼ãƒ‰ã«å…¥ã‚Šã¾ã™ - </notification> - - <notification - - name="LeavingGodMode" - > -レベル[LEVEL]ã®ã‚´ãƒƒãƒ‰ãƒ»ãƒ¢ãƒ¼ãƒ‰ã‚’解除 - </notification> - - <notification - - name="CopyFailed" - > -コピー権é™ãŒãªã„ãŸã‚ã€ã‚³ãƒ”ーãŒå¤±æ•—ã—ã¾ã—ãŸã€‚ - </notification> - - <notification - - name="InventoryAccepted" - > -[NAME]ã¯ã€æŒã¡ç‰©ã®æä¾›ã‚’å—ã‘入れã¾ã—ãŸã€‚ - </notification> - - <notification - - name="InventoryDeclined" - > -[NAME]ã¯ã€æŒã¡ç‰©ã®æä¾›ã‚’æ–りã¾ã—ãŸã€‚ - </notification> - - <notification - - name="ObjectMessage" - > -[NAME]: [MESSAGE] - </notification> - - <notification - - name="CallingCardAccepted" - > -コーリング・カードãŒå—ç†ã•れã¾ã—ãŸã€‚ - </notification> - - <notification - - name="CallingCardDeclined" - > -ã‚³ãƒ¼ãƒªãƒ³ã‚°ãƒ»ã‚«ãƒ¼ãƒ‰ãŒæ‹’å¦ã•れã¾ã—ãŸã€‚ - </notification> - - <notification - - name="TeleportToLandmark" - > -本土ã«åˆ°é”ã—ã¾ã—ãŸã€‚[NAME]ãªã©ã®å ´æ‰€ã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã™ã‚‹ã«ã¯ã€ç”»é¢å³ä¸‹ã«ã‚ã‚‹æŒã¡ç‰©ãƒœã‚¿ãƒ³ã‚’クリックã—ã€ãƒ©ãƒ³ãƒ‰ãƒžãƒ¼ã‚¯ãƒ•ã‚©ãƒ«ãƒ€ã‚’é¸æŠžã—ã¦ãã ã•ã„。 -ランドマークをダブルクリックã—ãŸå¾Œã€Œãƒ†ãƒ¬ãƒãƒ¼ãƒˆã€ã‚’クリックã™ã‚‹ã¨ãã®å ´æ‰€ã¸ç§»å‹•ã—ã¾ã™ã€‚ - </notification> - - <notification - - name="TeleportToPerson" - > -本土ã«åˆ°é”ã—ã¾ã—ãŸã€‚ä½äººã®[NAME]ã¨æŽ¥è§¦ã™ã‚‹ã«ã¯ã€ç”»é¢å³ä¸‹ã«ã‚ã‚‹æŒã¡ç‰©ãƒœã‚¿ãƒ³ã‚’クリックã—ã€ã‚³ãƒ¼ãƒªãƒ³ã‚°ãƒ»ã‚«ãƒ¼ãƒ‰ãƒ»ãƒ•ã‚©ãƒ«ãƒ€ã‚’é¸æŠžã—ã¦ãã ã•ã„。 -カードをダブルクリックã—ã€ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ãƒˆãƒ»ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’クリックã—ã€ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’é€ä¿¡ã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="CantSelectLandFromMultipleRegions" - > -サーãƒãƒ¼ã®å¢ƒç•Œã‚’è¶Šãˆã¦åœŸåœ°ã‚’é¸æŠžã™ã‚‹ã“ã¨ã§ãã¾ã›ã‚“。 -ã‚‚ã£ã¨å°ã•ãªåœŸåœ°ã‚’é¸æŠžã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="GroupVote" - > -[NAME] ã¯æŠ•ç¥¨ã®ç”³è«‹ã‚’ã—ã¦ã„ã¾ã™ï¼š -[MESSAGE] - <form name="form"> - <button - - name="VoteNow" - text="今ã™ã投票ã™ã‚‹"/> - <button - - name="Later" - text="ã‚ã¨ã§"/> - </form> - </notification> - - <notification - - name="SystemMessage" - > -[MESSAGE] - </notification> - - <notification - - name="EventNotification" - > -イベント通知: - -[NAME] -[DATE] - <form name="form"> - <button - - name="Teleport" - text="テレãƒãƒ¼ãƒˆ"/> - <button - - name="Description" - text="説明"/> - <button - - name="Cancel" - text="å–り消ã—"/> - </form> - </notification> - - <notification - - name="TransferObjectsHighlighted" - > -ã“ã®åŒºç”»ä¸Šã«å˜åœ¨ã™ã‚‹ã‚ªãƒ–ジェクトã®ã†ã¡ã€ã“ã®åŒºç”»ã®è³¼å…¥è€…ã«è²æ¸¡ã•れるオブジェクトãŒã™ã¹ã¦å¼·èª¿è¡¨ç¤ºã•れã¾ã™ã€‚ - - -*è²æ¸¡ã•れる樹木やæ¤ç‰©ã¯ã€å¼·èª¿è¡¨ç¤ºã•れã¾ã›ã‚“。 - <form name="form"> - <button - - name="Done" - text="完了"/> - </form> - </notification> - - <notification - - name="DeactivatedGesturesTrigger" - > -åŒã˜ãƒˆãƒªã‚¬ãƒ¼ã§ã‚¢ã‚¯ãƒ†ã‚£ãƒ–ã«ã—ãªã„ジェスãƒãƒ£ãƒ¼ï¼š -[NAMES] - </notification> - - <notification - - name="NoQuickTime" - > -Apple社ã®QuickTimeãŒã‚·ã‚¹ãƒ†ãƒ ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¦ã„ãªã„ã¨æ€ã‚れã¾ã™ã€‚ -ストリーミング・メディアã®å†ç”Ÿã‚’行ã„ãŸã„å ´åˆã¯ã€QuickTimeã®ã‚µã‚¤ãƒˆï¼ˆhttp://www.apple.com/quicktime)ã«ã‚¢ã‚¯ã‚»ã‚¹ã—ã¦ã€QuickTime Playerをインストールã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="OwnedObjectsReturned" - > -é¸æŠžã•れãŸåœŸåœ°ã®åŒºç”»ä¸Šã«ã‚ã£ãŸã‚ãªãŸã®ã‚ªãƒ–ジェクト㯠-ã‚ãªãŸã®æŒã¡ç‰©ã«è¿”å´ã•れã¾ã—ãŸã€‚ - </notification> - - <notification - - name="OtherObjectsReturned" - > -é¸æŠžã•れã¦ã„る土地ã®åŒºç”»ä¸Šã«ã‚ã£ãŸ - [FIRST] [LAST]ãŒæ‰€æœ‰ã™ã‚‹ã‚ªãƒ–ジェクトã¯ã‚ªãƒ¼ãƒŠãƒ¼ã®æŒã¡ç‰©ã«è¿”å´ã•れã¾ã—ãŸã€‚ - </notification> - - <notification - - name="OtherObjectsReturned2" - > -é¸æŠžã•れãŸåœŸåœ°ã®åŒºç”»ä¸Šã«ã‚りã€ä½äººã® -[NAME]ã®æ‰€æœ‰ã ã£ãŸã‚ªãƒ–ジェクトã¯ã‚ªãƒ¼ãƒŠãƒ¼ã«è¿”å´ã•れã¾ã—ãŸã€‚ - </notification> - - <notification - - name="GroupObjectsReturned" - > -é¸æŠžã•れã¦ã„る区画上ã«ã‚りã€[GROUPNAME] ã¨ã„ã†ã‚°ãƒ«ãƒ¼ãƒ—ã¨å…±æœ‰ã ã£ãŸã‚ªãƒ–ジェクトã¯ã€ã‚ªãƒ¼ãƒŠãƒ¼ã®æŒã¡ç‰©ã«è¿”å´ã•れã¾ã—ãŸã€‚ -è²æ¸¡ã•れã¦ã„ãŸè²æ¸¡å¯èƒ½ãªã‚ªãƒ–ジェクトã¯ã€å‰ã®ã‚ªãƒ¼ãƒŠãƒ¼ã«è¿”å´ã•れã¾ã—ãŸã€‚ -グループã«è²æ¸¡ã•れã¦ã„ãŸè²æ¸¡ä¸å¯èƒ½ãªã‚ªãƒ–ジェクトã¯ã€å‰Šé™¤ã•れã¾ã—ãŸã€‚ - </notification> - - <notification - - name="UnOwnedObjectsReturned" - > -é¸æŠžã•れãŸåœŸåœ°ã®åŒºç”»ä¸Šã«ã‚りã€ã‚ãªãŸã®æ‰€æœ‰ã§ã€Œãªã‹ã£ãŸã€ã‚ªãƒ–ジェクトã¯ã€æœ¬æ¥ã®ã‚ªãƒ¼ãƒŠãƒ¼ã«è¿”å´ã•れã¾ã—ãŸã€‚ - </notification> - - <notification - - name="NotSafe" - > -ã“ã®åœŸåœ°ã¯ãƒ€ãƒ¡ãƒ¼ã‚¸ãŒæœ‰åŠ¹ï¼ˆã€Œå®‰å…¨ã§ã¯ãªã„ã€ï¼‰ã«è¨å®šã•れã¦ã„ã¾ã™ã€‚ -ケガをã™ã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“。 命をè½ã¨ã—ãŸå ´åˆã¯ã€ãƒ›ãƒ¼ãƒ ã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã•れã¾ã™ã€‚ - </notification> - - <notification - - name="NoFly" - > -ã“ã®åœŸåœ°ã¯é£›è¡ŒãŒç„¡åŠ¹ï¼ˆã€Œé£›è¡Œç¦æ¢ã€ï¼‰ã«è¨å®šã•れã¦ã„ã¾ã™ã€‚ -ã“ã“ã§é£›ã¶ã“ã¨ã¯ã§ãã¾ã›ã‚“。 - </notification> - - <notification - - name="PushRestricted" - > -ã“ã®åœŸåœ°ã§ã¯ã€Œãƒ—ãƒƒã‚·ãƒ³ã‚°ç¦æ¢ã€ã§ã™ã€‚ -土地所有者以外ã¯ã“ã“ã§ä»–人をプッシュã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 - </notification> - - <notification - - name="NoVoice" - > -ã“ã®åœŸåœ°ã¯ãƒœã‚¤ã‚¹ãŒç„¡åйã«è¨å®šã•れã¦ã„ã¾ã™ã€‚ - </notification> - - <notification - - name="NoBuild" - > -ã“ã®åœŸåœ°ã¯ã‚ªãƒ–ジェクトã®ä½œæˆç¦æ¢ã«è¨å®šã•れã¦ã„ã¾ã™ã€‚ -ã“ã“ã§ã‚ªãƒ–ジェクトを作るã“ã¨ã¯ã§ãã¾ã›ã‚“。 - </notification> - - <notification - - name="ScriptsStopped" - > -管ç†è€…ãŒã“ã®åœ°åŸŸå†…ã®ã‚¹ã‚¯ãƒªãƒ—ãƒˆã‚’ä¸€æ™‚åœæ¢ã•ã›ã¾ã—ãŸã€‚ - </notification> - - <notification - - name="ScriptsNotRunning" - > -ã“ã®åœ°åŸŸã§ã¯ã‚¹ã‚¯ãƒªãƒ—トã®ä½¿ç”¨ãŒç¦æ¢ã•れã¦ã„ã¾ã™ - </notification> - - <notification - - name="NoOutsideScripts" - > -ã“ã®åœŸåœ°ã§ã¯å¤–部スクリプトãŒç„¡åйã«è¨å®šã•れã¦ã„ã¾ã™ã€‚ -ï¼ˆã€Œå¤–éƒ¨ã‚¹ã‚¯ãƒªãƒ—ãƒˆç¦æ¢ã€ï¼‰ -土地所有者以外ã®ã‚¹ã‚¯ãƒªãƒ—トã¯èµ·å‹•ã§ãã¾ã›ã‚“。 - </notification> - - <notification - - name="ClaimPublicLand" - > -自分ãŒã„る地域ã§ã®ã¿å…¬å…±ã®åœŸåœ°ã‚’ç²å¾—ã§ãã¾ã™ã€‚ - </notification> - - <notification - - name="ObjectGiveItem" - > -[FIRST] [LAST]所有ã®[OBJECTFROMNAME]ã‹ã‚‰ã€[OBJECTNAME]ã¨ã„ã†[OBJECTTYPE]ãŒé€ã‚‰ã‚Œã¦ãã¾ã—ãŸã€‚ - <form name="form"> - <button - - name="Keep" - text="å—ã‘å–ã‚‹"/> - <button - - name="Discard" - text="ç ´æ£„"/> - <button - - name="Mute" - text="無視リストã¸"/> - </form> - </notification> - - <notification - - name="ObjectGiveItemUnknownUser" - > -(未知ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ï¼‰ 所有ã®[OBJECTFROMNAME]ã‹ã‚‰ã€ã‚ãªãŸã«[OBJECTNAME]ã¨ã„ã†[OBJECTTYPE]ãŒé€ã‚‰ã‚Œã¦ãã¾ã—ãŸã€‚ - <form name="form"> - <button - - name="Keep" - text="å—ã‘å–ã‚‹"/> - <button - - name="Discard" - text="ç ´æ£„"/> - <button - - name="Mute" - text="無視リストã¸"/> - </form> - </notification> - - <notification - - name="UserGiveItem" - > -[NAME]ã¯ã€ã‚ãªãŸã«[OBJECTNAME]ã¨ã„ã†åå‰ã®[OBJECTTYPE]を渡ã—ã¾ã—ãŸã€‚ - <form name="form"> - <button - - name="Keep" - text="å—ã‘å–ã‚‹"/> - <button - - name="Discard" - text="ç ´æ£„"/> - <button - - name="Mute" - text="無視リストã¸"/> - </form> - </notification> - - <notification - - name="GodMessage" - > -[NAME] -[MESSAGE] - </notification> - - <notification - - name="JoinGroup" - > -[MESSAGE] - <form name="form"> - <button - - name="Join" - text="å‚åŠ "/> - <button - - name="Decline" - text="辞退"/> - <button - - name="Info" - text="æƒ…å ±"/> - </form> - </notification> - - <notification - - name="TeleportOffered" - > -[NAME]ã¯ã‚ãªãŸã‚’テレãƒãƒ¼ãƒˆã§å‘¼ã³å¯„ã›ã‚ˆã†ã¨ã—ã¦ã„ã¾ã™ï¼š - -[MESSAGE] - <form name="form"> - <button - - name="Teleport" - text="テレãƒãƒ¼ãƒˆ"/> - <button - - name="Cancel" - text="å–り消ã—"/> - </form> - </notification> - - <notification - - name="GotoURL" - > -[MESSAGE] -[URL] - <form name="form"> - <button - - name="Later" - text="ã‚ã¨ã§"/> - <button - - name="GoNow..." - text="今ã™ã行ã..."/> - </form> - </notification> - - <notification - - name="OfferFriendship" - > -[NAME]ã¯ã€ãƒ•レンド 登録を申ã—込んã§ã„ã¾ã™ã€‚ - -[MESSAGE] - -(デフォルトã§ãŠäº’ã„ã®ã‚ªãƒ³ãƒ©ã‚¤ãƒ³ãƒ»ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’見るã“ã¨ãŒã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚) - <form name="form"> - <button - - name="Accept" - text="å—ã‘入れる"/> - <button - - name="Decline" - text="辞退"/> - </form> - </notification> - - <notification - - name="OfferFriendshipNoMessage" - > -[NAME]ã¯ã€ãƒ•レンド 登録を申ã—込んã§ã„ã¾ã™ã€‚ - -(デフォルトã§ãŠäº’ã„ã®ã‚ªãƒ³ãƒ©ã‚¤ãƒ³ãƒ»ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’見るã“ã¨ãŒã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚) - <form name="form"> - <button - - name="Accept" - text="å—ã‘入れる"/> - <button - - name="Decline" - text="æ‹’å¦"/> - </form> - </notification> - - <notification - - name="FriendshipAccepted" - > -[NAME]ã¯ã€ãƒ•レンド 登録をå—ã‘入れã¾ã—ãŸã€‚ - </notification> - - <notification - - name="FriendshipDeclined" - > -[NAME]ã¯ã€ãƒ•レンド 登録をæ–りã¾ã—ãŸã€‚ - </notification> - - <notification - - name="OfferCallingCard" - > -[FIRST] [LAST]ãŒã‚³ãƒ¼ãƒªãƒ³ã‚°ãƒ»ã‚«ãƒ¼ãƒ‰ã‚’é€ã£ã¦ãã¦ã„ã¾ã™ã€‚ -ã“れã«ã‚ˆã‚Šã€ã‚ãªãŸã®æŒã¡ç‰©ã«ãƒ–ックマークãŒè¿½åŠ ã•れ〠-ã“ã®ä½äººã«ã™ã°ã‚„ãIMã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ - <form name="form"> - <button - - name="Accept" - text="å—ã‘入れる"/> - <button - - name="Decline" - text="辞退"/> - </form> - </notification> - - <notification - - name="RegionRestartMinutes" - - - > -ã“ã®åœ°åŸŸã¯[MINUTES]分後ã«å†èµ·å‹•ã•れã¾ã™ã€‚ -強制ãƒã‚°ã‚¢ã‚¦ãƒˆã¨ãªã‚Šã¾ã™ã®ã§ã€ã“ã®åœ°åŸŸã®å¤–ã«å‡ºã¦ãã ã•ã„。 - </notification> - - <notification - - name="RegionRestartSeconds" - - - > -ã“ã®åœ°åŸŸã¯[SECONDS]秒後ã«å†èµ·å‹•ã•れã¾ã™ã€‚ -強制ãƒã‚°ã‚¢ã‚¦ãƒˆã¨ãªã‚Šã¾ã™ã®ã§ã€ã“ã®åœ°åŸŸã®å¤–ã«å‡ºã¦ãã ã•ã„。 - </notification> - - <notification - - name="LoadWebPage" - > -ウェブ・ページ[URL]ã‚’ãƒãƒ¼ãƒ‰ã—ã¾ã™ã‹ï¼Ÿ - -[MESSAGE] - -ãƒãƒ¼ãƒ‰å…ƒã®ã‚ªãƒ–ジェクト:[OBJECTNAME]ã€ã‚ªãƒ¼ãƒŠãƒ¼ï¼š[NAME]? - <form name="form"> - <button - - name="Gotopage" - text="ページã«ç§»å‹•"/> - <button - - name="Cancel" - text="å–り消ã—"/> - </form> - </notification> - - <notification - - name="FailedToFindWearableUnnamed" - > -データベースã«[TYPE]ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚ - </notification> - - <notification - - name="FailedToFindWearable" - > -データベースã«[DESC]ã¨ã„ã†åå‰ã®[TYPE]ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚ - </notification> - - <notification - - name="ScriptQuestion" - > -「[NAME]ã€ãŒæ‰€æœ‰ã™ã‚‹ã‚ªãƒ–ジェクト「[OBJECTNAME]ã€ã‚’: - -[QUESTIONS] -よã‚ã—ã„ã§ã™ã‹ï¼Ÿ - <form name="form"> - <button - - name="Yes" - text="ã¯ã„"/> - <button - - name="No" - text="ã„ã„ãˆ"/> - <button - - name="Mute" - text="無視リストã«è¿½åŠ "/> - </form> - </notification> - - <notification - - name="ScriptQuestionCaution" - > -「[OBJECTNAME]ã€ãŒæ‰€æœ‰ã™ã‚‹ã‚ªãƒ–ジェクト「[NAME]ã€ã¯ã€æ¬¡ã®ã“ã¨ã‚’求ã‚ã¦ã„ã¾ã™ï¼š - -[QUESTIONS] -ã“ã®ã‚ªãƒ–ジェクトã¨åˆ¶ä½œè€…ãŒä¿¡ç”¨ã§ããªã„å ´åˆã¯ã€ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’æ‹’å¦ã—ã¦ãã ã•ã„ã€‚è¿½åŠ æƒ…å ±ã¯ã€è©³ç´°ãƒœã‚¿ãƒ³ã‚’クリックã—ã¦ãã ã•ã„。 - -ã“ã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’許å¯ã—ã¾ã™ã‹ï¼Ÿ - <form name="form"> - <button - - name="Grant" - text="許å¯"/> - <button - - name="Deny" - text="æ‹’å¦"/> - <button - - name="Details" - text="詳細..."/> - </form> - </notification> - - <notification - - name="ScriptDialog" - > -[FIRST] [LAST]ã®ã€Œ[TITLE]〠-[MESSAGE] - <form name="form"> - <button - - name="Ignore" - text="無視ã™ã‚‹"/> - </form> - </notification> - - <notification - - name="ScriptDialogGroup" - > -[GROUPNAME]ã®ã€Œ[TITLE]〠-[MESSAGE] - <form name="form"> - <button - - name="Ignore" - text="無視ã™ã‚‹"/> - </form> - </notification> - - <notification - - name="FirstBalanceIncrease" - > -L$[AMOUNT]ã‚’å—ã‘å–りã¾ã—ãŸã€‚ -オブジェクトãŠã‚ˆã³ä»–ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒã‚ãªãŸã«ãŠé‡‘を支払ã£ãŸã‚ˆã†ã§ã™ã€‚ -ã‚ãªãŸã®æ®‹é«˜ã¯ç”»é¢ã®å³ä¸Šã«è¡¨ç¤ºã•れ㦠ã„ã¾ã™ã€‚ - </notification> - - <notification - - name="FirstBalanceDecrease" - > -L$[AMOUNT]を支払ã„ã¾ã—ãŸã€‚ -ã‚ãªãŸã®æ®‹é«˜ã¯ç”»é¢ã®å³ä¸Šã«è¡¨ç¤ºã•れ㦠ã„ã¾ã™ã€‚ - </notification> - - <notification - - name="FirstSit" - > -ã‚ãªãŸã¯åº§ã£ã¦ã„ã¾ã™ã€‚ -矢å°ï¼ˆã¾ãŸã¯ AWSD)ã®ã‚ーを使ã£ã¦è¦–点を変ãˆã¾ã™ã€‚ -ç«‹ã¡ä¸ŠãŒã‚‹ã«ã¯ã€Œç«‹ã¡ä¸ŠãŒã‚‹ã€ã‚’クリックã—ã¾ã™ã€‚ - </notification> - - <notification - - name="FirstMap" - > -地図をスクãƒãƒ¼ãƒ«ã™ã‚‹ã«ã¯ã€ã‚¯ãƒªãƒƒã‚¯ã—ã¦ãƒ‰ãƒ©ãƒƒã‚°ã—ã¾ã™ã€‚ -テレãƒãƒ¼ãƒˆã™ã‚‹ã«ã¯ã€ãƒ€ãƒ–ルクリックã—ã¾ã™ã€‚ -å³å´ã®ã‚³ãƒ³ãƒˆãƒãƒ¼ãƒ«ã‚’使用ã™ã‚‹ã¨ã€ç‰©ã‚’見ã¤ã‘ãŸã‚Šã€ -別ã®èƒŒæ™¯ã‚’表示ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ - </notification> - - <notification - - name="FirstBuild" - > -[SECOND_LIFE]ã«ã¯ã€æ–°ã—ã„オブジェクトを作るã“ã¨ãŒã§ãる地域ãŒã‚りã¾ã™ã€‚ -作æˆã«ã¯ç”»é¢ä¸Šéƒ¨å·¦ã®ãƒ„ールãŒä½¿ãˆã€Ctrl ã‚ーや - Alt ã‚ーを押ã—ãŸã¾ã¾ã«ã™ã‚Œã°ç´ æ—©ãツールを切り替ãˆã‚‰ã‚Œã¾ã™ã€‚ - Escã‚ーを押ã™ã¨ã€ä½œæˆã¯çµ‚了ã—ã¾ã™ã€‚ - </notification> - - <notification - - name="FirstLeftClickNoHit" - > -左クリックã«ã‚ˆã‚Šã€ç‰¹åˆ¥ãªã‚ªãƒ–ジェクトをæ“作ã§ãã¾ã™ã€‚ -マウス・ãƒã‚¤ãƒ³ã‚¿ãŒæ‰‹ã®ãƒžãƒ¼ã‚¯ã«å¤‰ã‚ã‚‹å ´åˆã€ -ãƒã‚¤ãƒ³ãƒˆã—ã¦ã„るオブジェクトをæ“作ã§ãã¾ã™ã€‚ -å³ã‚¯ãƒªãƒƒã‚¯ã«ã‚ˆã‚Šã€å®Ÿè¡Œå¯èƒ½ãªæ“作ã®ãƒ¡ãƒ‹ãƒ¥ãƒ¼ãŒè¡¨ç¤ºã•れã¾ã™ã€‚ - </notification> - - <notification - - name="FirstTeleport" - > -ã“ã®åœ°åŸŸã§ã¯ã€ãƒã‚¤ãƒ³ãƒˆé–“ã®ãƒ†ãƒ¬ãƒãƒ¼ãƒˆãŒèªã‚られã¦ã„ã¾ã›ã‚“ã®ã§ã€æœ€ã‚‚è¿‘ã„テレãƒãƒ–周辺ã«ç§»å‹•ã—ã¾ã—ãŸã€‚ -ã‚ãªãŸã®ç›®çš„地ã¯ã€å¤§ããªæ¨™è˜ï¼ˆãƒ“ーコン)ã§è¡¨ç¤ºã•れã¦ã„ã¾ã™ã€‚赤ã„矢å°ã«å‘ã‹ã£ã¦é€²ã‚€ã¨æ¨™è˜ï¼ˆãƒ“ーコン)ã¸è¾¿ã‚Šç€ãã¾ã™ã€‚ -矢å°ã‚’クリックã™ã‚‹ã¨æ¨™è˜ï¼ˆãƒ“ーコン)を消ã›ã¾ã™ - </notification> - - <notification - - name="FirstOverrideKeys" - > -ã‚ãªãŸã®ç§»å‹•ã‚ãƒ¼ã‚’ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆãŒæ“作ã—ã¦ã„ã¾ã™ã€‚ -矢å°ã‹AWSDã®ã‚ーã§å‹•作を確èªã—ã¦ãã ã•ã„。 -銃ãªã©ã®ã‚ªãƒ–ジェクトã ã¨ã€ä¸€äººç§°è¦–点(マウスルック)ã«å¤‰æ›´ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ -Mã‚ーを押ã—ã¦å¤‰æ›´ã—ã¾ã™ã€‚ - </notification> - - <notification - - name="FirstAppearance" - > -ã‚ãªãŸã¯å®¹å§¿ã‚’編集ä¸ã§ã™ã€‚ -回転ã€ã‚ºãƒ¼ãƒ ã™ã‚‹ã«ã¯çŸ¢å°ã‚ーを使ã„ã¾ã™ã€‚ -編集ãŒçµ‚ã‚ã£ãŸã‚‰ã€Œã™ã¹ã¦ä¿å˜ã€ã‚’クリックã—ã¦å®¹å§¿ã‚’ä¿å˜ã—ã€çµ‚了ã—ã¾ã™ã€‚ -容姿ã®ç·¨é›†ã¯ä½•度ã§ã‚‚行ãˆã¾ã™ã€‚ - </notification> - - <notification - - name="FirstInventory" - > -ã“れã¯ã€ã‚ªãƒ–ジェクトã€ãƒŽãƒ¼ãƒˆã‚«ãƒ¼ãƒ‰ã€æœã€ãã®ä»–ã‚ãªãŸã®æ‰€æœ‰ç‰©ãŒã™ã¹ã¦å…¥ã£ãŸã€ŒæŒã¡ç‰©ã€ã§ã™ã€‚ -*マウスã§ã‚¢ãƒã‚¿ãƒ¼ã«ã‚ªãƒ–ジェクトやæœè£…フォルダをドラッグã—ã¦è£…ç€ã—ã¾ã™ã€‚ -*オブジェクトを地é¢ã®ä¸Šã«ãƒ‰ãƒ©ãƒƒã‚°ã™ã‚‹ã¨ã€å‘¨å›²ã®ä¸–界ã«è¡¨ç¤ºã•ã›ã¾ã™ã€‚(Rez) -*ノートカードをèªã‚€ã«ã¯ã€ãƒ€ãƒ–ルクリックã—ã¾ã™ã€‚ - </notification> - - <notification - - name="FirstSandbox" - > -ã“ã“ã¯ã‚µãƒ³ãƒ‰ãƒœãƒƒã‚¯ã‚¹ã§ã™ã€‚ -ã‚ãªãŸãŒã“ã“ã§ä½œã£ãŸã‚ªãƒ–ジェクトã¯ã‚ãªãŸãŒç«‹ã¡åŽ»ã£ãŸå¾Œã€å‰Šé™¤ã•れるã‹ã‚‚ã—れã¾ã›ã‚“。サンドボックスã¯å®šæœŸçš„ã«æ¸…掃ã•れã¾ã™ã€‚詳細ã«ã¤ã„ã¦ã¯ã€ç”»é¢ä¸Šéƒ¨ã€åœ°åŸŸåã®éš£ã®æƒ…å ±ã‚’å‚ç…§ã—ã¦ãã ã•ã„。 - -サンドボックスã¯ç‰¹åˆ¥ãªã‚¨ãƒªã‚¢ã§ã€ç›®å°ã®ã‚µã‚¤ãƒ³ãŒã¤ã„ã¦ã„ã¾ã™ã€‚ - </notification> - - <notification - - name="FirstFlexible" - > -ã“ã®ã‚ªãƒ–ジェクト㯠フレã‚シブルã§ã™ã€‚ -フレã‚シブル・ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹ã®ãƒã‚§ãƒƒã‚¯ãŒå¤–ã•れるã¾ã§ã¯ã€ -オブジェクトã¯ç‰©ç†çš„ã§ãªãファントムã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“。 - </notification> - - <notification - - name="FirstDebugMenus" - > -高度ãªè¨å®šã‚’有効ã«ã—ã¾ã—ãŸã€‚ -ã“ã®ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã«ã¯ã€Second Life をデãƒãƒƒã‚°ã™ã‚‹ãƒ‡ãƒ™ãƒãƒƒãƒ‘ーã«ã¨ã£ã¦æœ‰ç”¨ãªæ©Ÿèƒ½ãŒã‚りã¾ã™ã€‚ -ã“ã®ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã‚’切り替ãˆã‚‹ã«ã¯ã€Windows ã§ã¯ Ctrl-Alt-Dを押ã—ã¾ã™ã€‚Macã®å ´åˆã¯ã€Cmd-Opt-Shift-Dを押ã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="FirstSculptedPrim" - > -スカルプトプリムを編集ã—ã¦ã„ã¾ã™ã€‚ -スカルプトプリムã¯ã€å½¢çŠ¶ã‚’æŒ‡å®šã™ã‚‹ãŸã‚ã®ç‰¹åˆ¥ãªãƒ†ã‚¯ã‚¹ãƒãƒ£ãƒ¼ãŒå¿…è¦ã§ã™ã€‚ -æŒã¡ç‰©ãƒ©ã‚¤ãƒ–ラリã§ã€ã‚¹ã‚«ãƒ«ãƒ—トテクスãƒãƒ£ãƒ¼ã®ã‚µãƒ³ãƒ—ルをå‚ç…§ã§ãã¾ã™ã€‚ - </notification> - - <notification - - name="FirstMedia" - > -メディアã®å†ç”Ÿã‚’é–‹å§‹ã—ã¾ã—ãŸã€‚ オーディオ/ビデオã®ç’°å¢ƒè¨å®šã§ã€è‡ªå‹•çš„ã«ãƒ¡ãƒ‡ã‚£ã‚¢ã‚’å†ç”Ÿã™ã‚‹ã‚ˆã†ã«è¨å®šã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ 注: ã“ã®è¨å®šã«ã‚ˆã‚Šã€ä¿¡é ¼ã—ãªã„ãƒ¡ãƒ‡ã‚£ã‚¢ãƒ»ã‚µã‚¤ãƒˆã«æŽ¥ç¶šã•れるセã‚ュリティ・リスクãŒä¼´ã„ã¾ã™ã€‚ - </notification> - - <notification - - name="MaxListSelectMessage" - > -ã“ã®ãƒªã‚¹ãƒˆã‹ã‚‰ã€ [MAX_SELECT] 個ã¾ã§ã®ã‚¢ã‚¤ãƒ†ãƒ ã‚’é¸æŠžã§ãã¾ã™ã€‚ - </notification> - - <notification - - name="VoiceInviteP2P" - > -[NAME]ãŒã€ã‚ãªãŸã‚’ボイスãƒãƒ£ãƒƒãƒˆã‚³ãƒ¼ãƒ«ã«æ‹›å¾…ã—ã¦ã„ã¾ã™ã€‚ -コールã«å‚åŠ ã™ã‚‹ã«ã¯ã€Œå—ã‘入れるã€ã‚’クリックã—ã€æ‹›å¾…ã‚’æ–ã‚‹ã¨ãã¯ã€Œæ‹’å¦ã€ã‚’クリックã—ã¦ãã ã•ã„。ã“ã®ã‚³ãƒ¼ãƒ«ã‚’ã—ã¦ã„る人をミュートã«ã™ã‚‹å ´åˆã¯ã€ŒãƒŸãƒ¥ãƒ¼ãƒˆã€ã‚’クリックã—ã¦ãã ã•ã„。 - <form name="form"> - <button - - name="Accept" - text="å—ã‘入れる"/> - <button - - name="Decline" - text="æ‹’å¦"/> - <button - - name="Mute" - text="ミュート"/> - </form> - </notification> - - <notification - - name="AutoUnmuteByIM" - > -[FIRST] [LAST]ã«ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ãƒˆãƒ»ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒé€ä¿¡ã•れ〠無視è¨å®šãŒè‡ªå‹•çš„ã«è§£é™¤ã•れã¾ã—ãŸã€‚ - </notification> - - <notification - - name="AutoUnmuteByMoney" - > -[FIRST] [LAST]ã«ãŠé‡‘を渡ã—ãŸãŸã‚〠無視è¨å®šãŒè‡ªå‹•çš„ã«è§£é™¤ã•れã¾ã—ãŸã€‚ - </notification> - - <notification - - name="AutoUnmuteByInventory" - > -[FIRST] [LAST]ã«æŒã¡ç‰©ã‚’渡ã—ãŸãŸã‚〠無視è¨å®šãŒè‡ªå‹•çš„ã«è§£é™¤ã•れã¾ã—ãŸã€‚ - </notification> - - <notification - - name="VoiceInviteGroup" - > -[NAME]ãŒã€ã‚°ãƒ«ãƒ¼ãƒ—[GROUP]ã¨ã®ãƒœã‚¤ã‚¹ãƒãƒ£ãƒƒãƒˆã‚³ãƒ¼ãƒ«ã«å‚åŠ ã—ã¾ã—ãŸã€‚ -コールã«å‚åŠ ã™ã‚‹ã«ã¯ã€Œå—ã‘入れるã€ã‚’クリックã—ã€æ‹›å¾…ã‚’æ–ã‚‹ã¨ãã¯ã€Œæ‹’å¦ã€ã‚’クリックã—ã¦ãã ã•ã„。ã“ã®ã‚³ãƒ¼ãƒ«ã‚’ã—ã¦ã„る人をミュートã«ã™ã‚‹å ´åˆã¯ã€ŒãƒŸãƒ¥ãƒ¼ãƒˆã€ã‚’クリックã—ã¦ãã ã•ã„。 - <form name="form"> - <button - - name="Accept" - text="å—ã‘入れる"/> - <button - - name="Decline" - text="æ‹’å¦"/> - <button - - name="Mute" - text="ミュート"/> - </form> - </notification> - - <notification - - name="VoiceInviteAdHoc" - > -[NAME]ãŒã€ä¼šè°ãƒãƒ£ãƒƒãƒˆã§ãƒœã‚¤ã‚¹ãƒãƒ£ãƒƒãƒˆã‚³ãƒ¼ãƒ«ã«å‚åŠ ã—ã¾ã—ãŸã€‚ -コールã«å‚åŠ ã™ã‚‹ã«ã¯ã€Œå—ã‘入れるã€ã‚’クリックã—ã€æ‹›å¾…ã‚’æ–ã‚‹ã¨ãã¯ã€Œæ‹’å¦ã€ã‚’クリックã—ã¦ãã ã•ã„。 ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’ミュート(消声)ã™ã‚‹å ´åˆã¯ã€ŒãƒŸãƒ¥ãƒ¼ãƒˆã€ã‚’クリックã—ã¦ãã ã•ã„。 - <form name="form"> - <button - - name="Accept" - text="å—ã‘入れる"/> - <button - - name="Decline" - text="æ‹’å¦"/> - <button - - name="Mute" - text="ミュート"/> - </form> - </notification> - - <notification - - name="InviteAdHoc" - > -[NAME]ãŒã€ã‚ãªãŸã‚’会è°ãƒãƒ£ãƒƒãƒˆã«æ‹›å¾…ã—ã¦ã„ã¾ã™ã€‚ -ãƒãƒ£ãƒƒãƒˆã«å‚åŠ ã™ã‚‹ã«ã¯ã€Œå—ã‘入れるã€ã‚’クリックã—ã€æ‹›å¾…ã‚’æ–ã‚‹ã¨ãã¯ã€Œæ‹’å¦ã€ã‚’クリックã—ã¦ãã ã•ã„。ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’ミュート(消声)ã™ã‚‹å ´åˆã¯ã€ŒãƒŸãƒ¥ãƒ¼ãƒˆã€ã‚’クリックã—ã¦ãã ã•ã„。 - <form name="form"> - <button - - name="Accept" - text="å—ã‘入れる"/> - <button - - name="Decline" - text="æ‹’å¦"/> - <button - - name="Mute" - text="ミュート"/> - </form> - </notification> - - <notification - - name="VoiceChannelFull" - > -ã‚ãªãŸãŒå‚åŠ ã—よã†ã¨ã—ã¦ã„るボイスコール[VOICE_CHANNEL_NAME]ã¯ã€å‚åŠ è€…ãŒæœ€å¤§é™ã«é”ã—ã¾ã—ãŸã€‚後ã§ã‚‚ã†ä¸€åº¦ãŠè©¦ã—ãã ã•ã„。 - </notification> - - <notification - - name="ProximalVoiceChannelFull" - > -ã“ã®ã‚¨ãƒªã‚¢ã®ãƒœã‚¤ã‚¹ãƒãƒ£ãƒƒãƒˆã¯æ··é›‘ã®ãŸã‚容é‡ã‚’è¶…ãˆã¦ã—ã¾ã£ã¦ã„ã¾ã™ã€‚申ã—訳ã‚りã¾ã›ã‚“ãŒã€ä»–ã®ã‚¨ãƒªã‚¢ã§ãƒœã‚¤ã‚¹ãƒãƒ£ãƒƒãƒˆã‚’ãŠè©¦ã—ãã ã•ã„ - </notification> - - <notification - - name="VoiceChannelDisconnected" - > -[VOICE_CHANNEL_NAME]ã¸ã®æŽ¥ç¶šãŒåˆ‡æ–ã•れã¾ã—ãŸã€‚空間ボイスãƒãƒ£ãƒƒãƒˆã«å†æŽ¥ç¶šã•れã¾ã™ã€‚ - </notification> - - <notification - - name="VoiceChannelDisconnectedP2P" - > -[VOICE_CHANNEL_NAME]ã¯ã€ã‚³ãƒ¼ãƒ«ã‚’終了ã—ã¾ã—ãŸã€‚空間ボイスãƒãƒ£ãƒƒãƒˆã«å†æŽ¥ç¶šã•れã¾ã™ã€‚ - </notification> - - <notification - - name="P2PCallDeclined" - > -[VOICE_CHANNEL_NAME]ã¯ã€ã‚ãªãŸã®ã‚³ãƒ¼ãƒ«ã‚’æ‹’å¦ã—ã¾ã—ãŸã€‚空間ボイスãƒãƒ£ãƒƒãƒˆã«å†æŽ¥ç¶šã•れã¾ã™ã€‚ - </notification> - - <notification - - name="P2PCallNoAnswer" - > -[VOICE_CHANNEL_NAME]ã¯ã€ã‚ãªãŸã®ã‚³ãƒ¼ãƒ«ã‚’å—ã‘å–れã¾ã›ã‚“。空間ボイスãƒãƒ£ãƒƒãƒˆã«å†æŽ¥ç¶šã•れã¾ã™ã€‚ - </notification> - - <notification - - name="VoiceChannelJoinFailed" - > -[VOICE_CHANNEL_NAME]ã¸ã®æŽ¥ç¶šã«å¤±æ•—ã—ã¾ã—ãŸã€‚時間をãŠã„ã¦ã€å†åº¦ã€è©¦ã¿ã¦ãã ã•ã„。空間ボイスãƒãƒ£ãƒƒãƒˆã«å†æŽ¥ç¶šã•れã¾ã™ã€‚ - </notification> - - <notification - - name="VoiceLoginRetry" - > -ã‚ãªãŸç”¨ã®ãƒœã‚¤ã‚¹ãƒãƒ£ãƒ³ãƒãƒ«ã‚’作æˆã—ã¦ã„ã¾ã™ã€‚1分ã»ã©ã‹ã‹ã‚Šã¾ã™ã€‚ - </notification> - - <notification - - name="Cannot enter parcel: not a group member" - > -é©åˆ‡ãªã‚°ãƒ«ãƒ¼ãƒ—ã®ãƒ¡ãƒ³ãƒãƒ¼ã§ã¯ãªã„ãŸã‚ã€åŒºç”»ã«å…¥ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。 - </notification> - - <notification - - name="Cannot enter parcel: banned" - > -排除ã•れã¦ã„ã‚‹ãŸã‚ã€åŒºç”»ã«å…¥ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。 - </notification> - - <notification - - name="Cannot enter parcel: not on access list" - > -アクセス・リストã«å«ã¾ã‚Œã¦ã„ãªã„ãŸã‚ã€åŒºç”»ã«å…¥ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。 - </notification> - - <notification - - name="VoiceNotAllowed" - > -ã‚ãªãŸã«ã¯[VOICE_CHANNEL_NAME]ã®ãƒœã‚¤ã‚¹ãƒ»ãƒãƒ£ãƒƒãƒˆã«æŽ¥ç¶šã™ã‚‹æ¨©é™ãŒã‚りã¾ã›ã‚“。 - </notification> - - <notification - - name="VoiceCallGenericError" - > -[VOICE_CHANNEL_NAME]ã®ãƒœã‚¤ã‚¹ãƒ»ãƒãƒ£ãƒƒãƒˆã«æŽ¥ç¶šä¸ã«ã€ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚後ã§ã‚‚ã†ä¸€åº¦ãŠè©¦ã—ãã ã•ã„。 - </notification> - - <notification - - name="ServerVersionChanged" - > -到ç€ã—ãŸåœ°åŸŸã¯ç•°ãªã‚‹ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚¿ãƒ¼ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§å®Ÿè¡Œã•れã¦ã„ã¾ã™ã€‚ 詳細ã«ã¤ã„ã¦ã¯ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’クリックã—ã¦ãã ã•ã„。 - </notification> - - <notification - - name="UnableToOpenCommandURL" - > -クリックã—ãŸURLã¯ã“ã®ã‚¦ã‚§ãƒ–ブラウザã§ã¯é–‹ã‘ã¾ã›ã‚“ - </notification> - - <global name="UnsupportedCPU"> -- ã‚ãªãŸã® CPU ã®é€Ÿåº¦ã¯å¿…é ˆå‹•ä½œç’°å¢ƒã®æ¡ä»¶ã‚’満ãŸã—ã¦ã„ã¾ã›ã‚“。 - </global> - - <global name="UnsupportedGLRequirements"> -Second Life ã®ä½¿ç”¨ã«å¿…è¦ãªãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ã®ç’°å¢ƒãŒæº€ãŸã•れã¦ã„ãªã„よã†ã§ã™ã€‚ Second Life ã§ã¯ãƒžãƒ«ãƒãƒ†ã‚¯ã‚¹ãƒãƒ£ãƒ¼ã«å¯¾å¿œã—ãŸOpenGLグラフィック・カードãŒå¿…è¦ã§ã™ã€‚ ã“ã®å ´åˆã€ã‚°ãƒ©ãƒ•ã‚£ãƒƒã‚¯ãƒ»ã‚«ãƒ¼ãƒ‰ã®æœ€æ–°ãƒ‰ãƒ©ã‚¤ãƒãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¦ã„ã‚‹ã“ã¨ã€ãŠã‚ˆã³ã‚ªãƒšãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°ãƒ»ã‚·ã‚¹ãƒ†ãƒ ã«ã‚µãƒ¼ãƒ“ス・パックã¨ä¿®æ£ãƒ—ãƒã‚°ãƒ©ãƒ ãŒé©ç”¨ã•れã¦ã„ã‚‹ã“ã¨ã‚’ã”確èªãã ã•ã„。 - -å•題ãŒè§£æ±ºã•れãªã„å ´åˆã«ã¯ã€æ¬¡ã®ã‚µã‚¤ãƒˆã«ã‚¢ã‚¯ã‚»ã‚¹ã—ã¦ãã ã•ã„。 http://www.secondlife.com/support - </global> - - <global name="UnsupportedCPUAmount"> -796 - </global> - - <global name="UnsupportedRAMAmount"> -510 - </global> - - <global name="UnsupportedGPU"> -- ã‚ãªãŸã®ã‚°ãƒ©ãƒ•ィック・カードã¯å¿…é ˆå‹•ä½œç’°å¢ƒã®æ¡ä»¶ã‚’満ãŸã—ã¦ã„ã¾ã›ã‚“。 - </global> - - <global name="UnsupportedRAM"> -- ã‚ãªãŸã®ã‚·ã‚¹ãƒ†ãƒ ・メモリã¯å¿…é ˆå‹•ä½œç’°å¢ƒã®æ¡ä»¶ã‚’満ãŸã—ã¦ã„ã¾ã›ã‚“。 - </global> - - <global name="PermYes"> -ã¯ã„ - </global> - - <global name="PermNo"> -ã„ã„㈠- </global> -</notifications> - +<?xml version="1.0" encoding="utf-8"?> +<notifications> + <global name="skipnexttime"> + 今後ã¯è¡¨ç¤ºã—ãªã„ + </global> + <global name="alwayschoose"> + 常ã«ã“ã®ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã‚’é¸æŠž + </global> + <template name="okbutton"> + <form> + <button + name="OK" + text="$yestext"/> + </form> + </template> + + <template name="okignore"> + <form> + <button + name="OK" + text="$yestext"/> + <ignore text="$ignoretext"/> + </form> + </template> + + <template name="okcancelbuttons"> + <form> + <button + name="OK" + text="$yestext"/> + <button + name="Cancel" + text="$notext"/> + </form> + </template> + + <template name="okcancelignore"> + <form> + <button + name="OK" + text="$yestext"/> + <button + name="Cancel" + text="$notext"/> + <ignore text="$ignoretext"/> + </form> + </template> + + <template name="okhelpbuttons"> + <form> + <button + name="OK" + text="$yestext"/> + <button + name="Help" + text="$helptext"/> + </form> + </template> + + <template name="yesnocancelbuttons"> + <form> + <button + name="Yes" + text="$yestext"/> + <button + name="No" + text="$notext"/> + <button + name="Cancel" + text="$canceltext"/> + </form> + </template> + <notification functor="GenericAcknowledge" label="䏿˜Žãªè¦å‘Šãƒ¡ãƒƒã‚»ãƒ¼ã‚¸" name="MissingAlert"> + ã‚ãªãŸã® Second Life ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã¯ã€ +今å—ã‘å–ã£ãŸè¦å‘Šãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’表示ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。 + +エラー詳細: 「[_NAME]ã€ã¨ã„ã†è¦å‘Šã¯ notifications.xml ã«ã‚りã¾ã›ã‚“ã§ã—ãŸã€‚ + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="FloaterNotFound"> + フãƒãƒ¼ã‚¿ãƒ»ã‚¨ãƒ©ãƒ¼ï¼šä¸‹è¨˜ã®ã‚³ãƒ³ãƒˆãƒãƒ¼ãƒ«ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸï¼š +[CONTROLS] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="TutorialNotFound"> + ç¾åœ¨åˆ©ç”¨å¯èƒ½ãªãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ã¯ã‚りã¾ã›ã‚“。 + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="GenericAlert"> + [MESSAGE] + </notification> + <notification name="GenericAlertYesCancel"> + [MESSAGE] + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="ã¯ã„"/> + </notification> + <notification name="BadInstallation"> + Second Life をアップデートä¸ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚ secondlife.com ã‹ã‚‰æœ€æ–°ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’ダウンãƒãƒ¼ãƒ‰ã—ã¦ãã ã•ã„。 + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="LoginFailedNoNetwork"> + ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚¨ãƒ©ãƒ¼ï¼š 接続ãŒç¢ºç«‹ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ +「[DIAGNOSTIC]〠+ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯æŽ¥ç¶šã‚’確èªã—ã¦ãã ã•ã„。 + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MessageTemplateNotFound"> + メッセージテンプレート [PATH] ãŒã‚りã¾ã›ã‚“ã§ã—ãŸã€‚ + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="WearableSave"> + ç¾åœ¨ã®è¡£æœ/ボディーパーツã®å¤‰æ›´ã‚’ä¿å˜ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate canceltext="ã‚ャンセル" name="yesnocancelbuttons" notext="ä¿å˜ã—ãªã„" yestext="ä¿å˜"/> + </notification> + <notification name="CompileQueueSaveText"> + 次ã®ç†ç”±ã§ã€ã‚¹ã‚¯ãƒªãƒ—ト用テã‚ストã®ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰æ™‚ã«å•題ãŒèµ·ã“りã¾ã—ãŸã€‚ [REASON] 後ã§ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 + </notification> + <notification name="CompileQueueSaveBytecode"> + 次ã®ç†ç”±ã§ã€ã‚³ãƒ³ãƒ‘イルã—ãŸã‚¹ã‚¯ãƒªãƒ—トã®ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰æ™‚ã«å•題ãŒèµ·ã“りã¾ã—ãŸã€‚ [REASON]後ã§ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 + </notification> + <notification name="WriteAnimationFail"> + ã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ãƒ‡ãƒ¼ã‚¿ã®æ›¸ãè¾¼ã¿ã«å•題ãŒã‚りã¾ã™ã€‚後ã§ã‚‚ã†ä¸€åº¦ãŠè©¦ã—ãã ã•ã„。 + </notification> + <notification name="UploadAuctionSnapshotFail"> + 次ã®ç†ç”±ã§ã€ã‚ªãƒ¼ã‚¯ã‚·ãƒ§ãƒ³ã®ã‚¹ãƒŠãƒƒãƒ—ショットã®ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰æ™‚ã«å•題ãŒèµ·ã“りã¾ã—ãŸã€‚ [REASON] + </notification> + <notification name="UnableToViewContentsMoreThanOne"> + 一度ã«è¤‡æ•°ã®ã‚¢ã‚¤ãƒ†ãƒ ã®ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã¯è¡¨ç¤ºã§ãã¾ã›ã‚“。 +é¸æŠžã™ã‚‹ã‚¢ã‚¤ãƒ†ãƒ ã‚’1ã¤ã ã‘ã«ã—ã¦ã€ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 + </notification> + <notification name="SaveClothingBodyChanges"> + è¡£æœï¼èº«ä½“部ä½ã«å¯¾ã™ã‚‹å¤‰æ›´ã‚’ã™ã¹ã¦ä¿å˜ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate canceltext="å–り消ã—" name="yesnocancelbuttons" notext="ä¿å˜ã—ãªã„" yestext="ã™ã¹ã¦ä¿å˜"/> + </notification> + <notification name="GrantModifyRights"> + ä»–ã®ä½äººã«å¤‰æ›´æ¨©é™ã‚’与ãˆã‚‹ã¨ã€ãã®äººã¯ã‚ãªãŸãŒæ‰€æœ‰ã—ã¦ã„ã‚‹ +ã™ã¹ã¦ã®ã‚ªãƒ–ジェクトを変更ã€å‰Šé™¤ã€ã¾ãŸã¯å–å¾—ã™ã‚‹ã“ã¨ãŒã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚ã“ã®è¨±å¯ã‚’与ãˆã‚‹ã¨ãã¯ç´°å¿ƒã®æ³¨æ„を払ã£ã¦ãã ã•ã„。 +[FIRST_NAME] [LAST_NAME]ã«å¯¾ã—ã¦å¤‰æ›´æ¨©é™ã‚’与ãˆã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="ã„ã„ãˆ" yestext="ã¯ã„"/> + </notification> + <notification name="GrantModifyRightsMultiple"> + 変更権é™ã‚’与ãˆã‚‹ã¨ã€ãã®äººã¯ã‚ãªãŸãŒä½œæˆã—ãŸå…¨ã¦ã®ã‚ªãƒ–ジェクトを変更ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ +ã“ã®è¨±å¯ã‚’与ãˆã‚‹ã¨ãã«ã¯ç´°å¿ƒã®æ³¨æ„を払ã£ã¦ãã ã•ã„。 +é¸æŠžã—ãŸä½äººã«å¤‰æ›´æ¨©é™ã‚’与ãˆã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="ã„ã„ãˆ" yestext="ã¯ã„"/> + </notification> + <notification name="RevokeModifyRights"> + [FIRST_NAME] [LAST_NAME]ã«å¯¾ã—ã¦å¤‰æ›´æ¨©é™ã‚’å–り消ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="ã„ã„ãˆ" yestext="ã¯ã„"/> + </notification> + <notification name="RevokeModifyRightsMultiple"> + é¸æŠžã—ãŸä½äººã‹ã‚‰å¤‰æ›´æ¨©é™ã‚’å–り下ã’ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="ã„ã„ãˆ" yestext="ã¯ã„"/> + </notification> + <notification name="UnableToCreateGroup"> + グループを作æˆã§ãã¾ã›ã‚“。 +[MESSAGE] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="PanelGroupApply"> + [NEEDS_APPLY_MESSAGE] +[WANT_APPLY_MESSAGE] + <usetemplate canceltext="å–り消ã—" name="yesnocancelbuttons" notext="変更を無視" yestext="変更をé©ç”¨"/> + </notification> + <notification name="MustSpecifyGroupNoticeSubject"> + グループ通知ã®é€ä¿¡ã«ã¯ã€ä»¶åã®è¨˜å…¥ãŒå¿…è¦ã§ã™ã€‚ + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="AddGroupOwnerWarning"> + ã‚ãªãŸã¯ [ROLE_NAME]ã®å½¹å‰²ã«ãƒ¡ãƒ³ãƒãƒ¼ã‚’与ãˆã‚ˆã†ã¨ã—ã¦ã„ã¾ã™ã€‚ +任命ã•れãŸãƒ¡ãƒ³ãƒãƒ¼ãŒè‡ªã‚‰é€€ä»»ã—ãªã„é™ã‚Šã€ +彼らを役柄ã‹ã‚‰å‰Šé™¤ã§ãã¾ã›ã‚“。 +æ“作を続行ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate ignoretext="オーナーã®å½¹å‰²ã«ã‚°ãƒ«ãƒ¼ãƒ—・メンãƒãƒ¼ã‚’åŠ ãˆã‚‹ã¨ã" name="okcancelignore" notext="ã„ã„ãˆ" yestext="ã¯ã„"/> + </notification> + <notification name="AssignDangerousActionWarning"> + ã‚ãªãŸã¯[ROLE_NAME]ã« [ACTION_NAME]ã®èƒ½åŠ›ã‚’ +与ãˆã‚ˆã†ã¨ã—ã¦ã„ã¾ã™ã€‚ + + *è¦å‘Š* +ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ +自分ã¨ä»–ã®ãƒ¡ãƒ³ãƒãƒ¼ã«ç¾åœ¨ã‚ˆã‚Šå¼·åŠ›ãªæ¨©é™ã‚’割り当ã¦ã€ +自分をオーナーã¨ã»ã¼åŒæ§˜ã®ç«‹å ´ã« +任命ã™ã‚‹ã“ã¨ã‚‚ã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚ ã“ã®è¡Œç‚ºã®æ„味をよãç†è§£ã—ã¦ã‹ã‚‰ +実行ã—ã¦ãã ã•ã„。 + +ã“ã®èƒ½åŠ›ã‚’[ROLE_NAME]ã«å‰²ã‚Šå½“ã¦ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="ã„ã„ãˆ" yestext="ã¯ã„"/> + </notification> + <notification name="AssignDangerousAbilityWarning"> + ã‚ãªãŸã¯[ROLE_NAME]ã« [ACTION_NAME]ã®èƒ½åŠ›ã‚’ +与ãˆã‚ˆã†ã¨ã—ã¦ã„ã¾ã™ã€‚ + + *è¦å‘Š* +ã“ã®èƒ½åŠ›ã‚’ã‚‚ã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ +自分ã¨ä»–ã®ãƒ¡ãƒ³ãƒãƒ¼ã«ã™ã¹ã¦ã®èƒ½åŠ›ã‚’å‰²ã‚Šå½“ã¦ã€ +自分をオーナーã¨ã»ã¼åŒæ§˜ã®ç«‹å ´ã«ä»»å‘½ã§ãã¾ã™ã€‚ + +ã“ã®èƒ½åŠ›ã‚’[ROLE_NAME]ã«å‰²ã‚Šå½“ã¦ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="ã„ã„ãˆ" yestext="ã¯ã„"/> + </notification> + <notification name="ClickPublishHelpLand"> + 「検索ã§å…¬é–‹ã€ã‚’é¸æŠž +ã“ã®ãƒœãƒƒã‚¯ã‚¹ã«ãƒã‚§ãƒƒã‚¯ã™ã‚‹ã¨è¡¨ç¤ºï¼š +- æ¤œç´¢çµæžœã«ãŠã‘ã‚‹ã“ã®åŒºç”» +- ã“ã®åŒºç”»ã®ãƒ‘ブリック・オブジェクト +- ウェブ検索ã«ãŠã‘ã‚‹ã“ã®åŒºç”» + </notification> + <notification name="ClickSoundHelpLand"> + メディアã¨éŸ³æ¥½ã¯ã“ã®åŒºç”»å†…ã§ã®ã¿ãŠæ¥½ã—ã¿ã„ãŸã ã‘ã¾ã™ã€‚ サウンドã¨ãƒœã‚¤ã‚¹ã¯åŒºç”»å†…é™å®šã‹ã€å„自ã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†ã«ã‚ˆã£ã¦ã¯åŒºç”»å¤–ã§ã‚‚èžãã“ã¨ãŒã§ãã¾ã™ã€‚ ナレッジベースを開ã„ã¦è¨å®šã®ä»•方をå¦ã³ã¾ã™ã‹ï¼Ÿ + <url name="url"> + http://wiki.secondlife.com/wiki/区画上ã®ãƒ¡ãƒ‡ã‚£ã‚¢_(KB) + </url> + <usetemplate name="okcancelbuttons" notext="é–‰ã˜ã‚‹" yestext="ナレッジベースを開ã"/> + </notification> + <notification name="ClickSearchHelpAll"> + æ¤œç´¢çµæžœã¯ä»Šè¦‹ã¦ã„るタブã€ã‚ãªãŸã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†ã€é¸æŠžã—ãŸã‚«ãƒ†ã‚´ãƒªãã®ä»–ã‚’å…ƒã«ç·¨æˆã•れã¦ã„ã¾ã™ã€‚ 詳細ã¯ãƒŠãƒ¬ãƒƒã‚¸ãƒ™ãƒ¼ã‚¹ã‚’ã”覧ãã ã•ã„。 + <url name="url"> + http://wiki.secondlife.com/wiki/検索ã«é–¢ã™ã‚‹ã‚ˆãã‚る質å•集_(KB) + </url> + <usetemplate name="okcancelbuttons" notext="é–‰ã˜ã‚‹" yestext="ナレッジベースを開ã"/> + </notification> + <notification name="ClickPublishHelpLandDisabled"> + ã“ã®åŒºç”»ã¯æ¤œç´¢ã‚’ç¦ãšã‚‹åœ°åŸŸã«ã‚ã‚‹ãŸã‚〠+ã“ã®åŒºç”»ã‚’検索ã«è¡¨ç¤ºã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 + </notification> + <notification name="ClickPublishHelpAvatar"> + 「検索ã«è¡¨ç¤ºã€ã‚’é¸æŠžã™ã‚‹ã¨è¡¨ç¤ºï¼š +- æ¤œç´¢çµæžœã«ãŠã‘る自分ã®ãƒ—ãƒãƒ•ィール +- 公開グループ・ページã«ãŠã‘る自分ã®ãƒ—ãƒãƒ•ィールã¸ã®ãƒªãƒ³ã‚¯ + </notification> + <notification name="ClickPartnerHelpAvatar"> + [SECOND_LIFE]ã®ã‚¦ã‚§ãƒ–・サイトã‹ã‚‰ã€ +ä»–ã®ä½äººã¸ã®ãƒ—ãƒãƒãƒ¼ã‚ºã€ãƒ‘ートナー解消手続ããŒã§ãã¾ã™ã€‚ + +ウェブ・サイトã«è¡Œã£ã¦ パートナーã«é–¢ã™ã‚‹æƒ…å ±ã‚’å–å¾—ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="ページã«ç§»å‹•"/> + </notification> + <notification name="ClickUploadHelpPermissions"> + ã‚ãªãŸã®æŒã¤ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®æ¨©é™ã¯å¤ã„地域ã§ã¯ä½¿ãˆã¾ã›ã‚“。 + </notification> + <notification name="ClickWebProfileHelpAvatar"> + ã“ã®ä½äººãŒã‚¦ã‚§ãƒ–・プãƒãƒ•ィールURLã‚’è¨å®šã—ã¦ã„ã‚‹å ´åˆã¯ã€ä»¥ä¸‹ã®ã“ã¨ãŒå¯èƒ½ã§ã™ã€‚ + * 「ãƒãƒ¼ãƒ‰ã€ã‚’クリックã—ã€ã“ã®ã‚¦ã‚§ãƒ–・タブ内ã§ãƒšãƒ¼ã‚¸ã‚’表示 + * 「ãƒãƒ¼ãƒ‰ã€ï¼žã€Œå¤–部ブラウザ〠をクリックã—ã€ãƒ‡ã‚£ãƒ•ォルトã®ã‚¦ã‚§ãƒ–・ブラウザã§ãƒšãƒ¼ã‚¸ã‚’表示 + * 「ãƒãƒ¼ãƒ‰ã€ï¼žã€Œãƒ›ãƒ¼ãƒ URL〠をクリックã—ã€ä»–ã®ãƒšãƒ¼ã‚¸ã‹ã‚‰ã“ã®ä½äººã®ã‚¦ã‚§ãƒ–・プãƒãƒ•ã‚£ãƒ¼ãƒ«ã«æˆ»ã‚‹ + +自分ã®ãƒ—ãƒãƒ•ィールã«ä»»æ„ã®URLを入力ã—OKをクリックã—ã¦ã€ã‚¦ã‚§ãƒ–・プãƒãƒ•ィールã¨ã—ã¦è¨å®šã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ +ãれを見ãŸä»–ã®ä½äººãŒãã®ã‚µã‚¤ãƒˆã‚’訪れるã“ã¨ãŒã§ãã¾ã™ã€‚ + </notification> + <notification name="JoinGroupCanAfford"> + ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«å‚åŠ ã™ã‚‹ã«ã¯ã€L$[COST]ã‹ã‹ã‚Šã¾ã™ã€‚ +続行ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="å‚åŠ "/> + </notification> + <notification name="JoinGroupCannotAfford"> + ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«åŠ å…¥ã™ã‚‹ã«ã¯ã€L$[COST]å¿…è¦ã§ã™ã€‚ +L$ãŒä¸è¶³ã—ã¦ã„ã‚‹ã®ã§ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«å‚åŠ ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。 + </notification> + <notification name="LandBuyPass"> + L$[COST]ã§ [TIME]時間ã“ã®åœŸåœ°[PARCEL_NAME]ã«å…¥ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ +å…¥å ´è¨±å¯ã‚’購入ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="SalePriceRestriction"> + ä¸ç‰¹å®šã®äººã«å£²å´ã™ã‚‹å ´åˆã«ã¯ã€ +売å´ä¾¡æ ¼ã¯L$0以上ã«è¨å®šã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ +売å´ä¾¡æ ¼ã‚’L$0ã«è¨å®šã™ã‚‹å ´åˆã¯ã€ +売å´ã™ã‚‹å€‹äººã‚’é¸æŠžã—ã¦ãã ã•ã„。 + </notification> + <notification name="ConfirmLandSaleChange"> + é¸æŠžã•れãŸ[LAND_SIZE]平方メートルã®åœŸåœ°ã¯ã€å£²ã‚Šå‡ºã—ä¸ã«è¨å®šã•れã¦ã„ã¾ã™ã€‚ +売å´ä¾¡æ ¼L$[SALE_PRICE]ã§ã€[NAME]ã«å£²å´ã‚’èªå¯ã—ã¾ã™ã€‚ + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="ConfirmLandSaleToAnyoneChange"> + 注:「誰ã«ã§ã‚‚売å´ã™ã‚‹ã€ã‚’クリックã™ã‚‹ã¨ã€ +ã‚ãªãŸã®åœŸåœ°ã¯Second Life ã®ã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ã®ã©ã“ã‹ã‚‰ã§ã‚‚ +(ã“ã®åœ°åŸŸã«ãªã„コミュニティをå«ã‚€ï¼‰è³¼å…¥ã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚ + +é¸æŠžã•れãŸ[LAND_SIZE]平方メートルã®åœŸåœ°ã¯ã€ +売り出ã—ä¸ã«è¨å®šã•れã¦ã„ã¾ã™ã€‚ +売å´ä¾¡æ ¼L$[SALE_PRICE]ã§ã€[NAME]ã«å£²å´ã‚’èªå¯ã—ã¾ã™ã€‚ + <usetemplate name="okcancelbuttons" notext="ã‚ャンセル" yestext="OK"/> + </notification> + <notification name="ReturnObjectsDeededToGroup"> + ã“ã®åŒºç”»ã®ã‚°ãƒ«ãƒ¼ãƒ—[NAME]共有ã®ã™ã¹ã¦ã®ã‚ªãƒ–ジェクトをã€ä»¥å‰ã®ã‚ªãƒ¼ãƒŠãƒ¼ã®æŒã¡ç‰©ã«æˆ»ãã†ã¨ã—ã¦ã„ã¾ã™ã€‚ +æ“作を続行ã—ã¾ã™ã‹ï¼Ÿ + +*è¦å‘Š* ã“れã«ã‚ˆã‚Šã€ +グループã«è²æ¸¡ã•れãŸè²æ¸¡ä¸å¯èƒ½ãªã‚ªãƒ–ジェクトã¯å‰Šé™¤ã•れã¾ã™ï¼ +オブジェクト: [N] + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="ReturnObjectsOwnedByUser"> + ã“ã®åŒºç”»ã§ã€ +ä½äºº[NAME]ãŒæ‰€æœ‰ã™ã‚‹å…¨ã¦ã®ã‚ªãƒ–ジェクトを +å½¼ã‚‰ã®æŒã¡ç‰©ã«æœ¬å½“ã«è¿”å´ã—ã¦ã‚‚よã„ã§ã™ã‹ï¼Ÿ + +オブジェクト: [N] + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="ReturnObjectsOwnedBySelf"> + ã“ã®åœŸåœ°åŒºç”»å†…ã«ã‚ã‚‹ã€ã‚ãªãŸãŒæ‰€æœ‰ã™ã‚‹ã™ã¹ã¦ã®ã‚ªãƒ–ジェクトを〠+ã‚ãªãŸã®æŒã¡ç‰©ã«æˆ»ãã†ã¨ã—ã¦ã„ã¾ã™ã€‚æ“作を続行ã—ã¾ã™ã‹ï¼Ÿ + +オブジェクト: [N] + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="ReturnObjectsNotOwnedBySelf"> + ã“ã®åœŸåœ°åŒºç”»å†…ã«ã‚ã‚‹ã€ã‚ãªãŸä»¥å¤–ãŒæ‰€æœ‰ã™ã‚‹ã™ã¹ã¦ã®ã‚ªãƒ–ジェクトを〠+ãれãžã‚Œã®ã‚ªãƒ¼ãƒŠãƒ¼ã®æŒã¡ç‰©ã«æˆ»ãã†ã¨ã—ã¦ã„ã¾ã™ã€‚ +æ“作を続行ã—ã¾ã™ã‹ï¼Ÿ +グループã«è²æ¸¡ã•れãŸè²æ¸¡å¯èƒ½ã‚ªãƒ–ジェクトã¯ã€ä»¥å‰ã®ã‚ªãƒ¼ãƒŠãƒ¼ã«è¿”å´ã•れã¾ã™ã€‚ + +*è¦å‘Š* ã“れã«ã‚ˆã‚Šã€ +グループã«è²æ¸¡ã•れãŸè²æ¸¡ä¸å¯èƒ½ãªã‚ªãƒ–ジェクトã¯å‰Šé™¤ã•れã¾ã™ï¼ +オブジェクト: [N] + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="ReturnObjectsNotOwnedByUser"> + ã“ã®åœŸåœ°åŒºç”»å†…ã«ã‚る〠+[NAME]以外ã«ã‚ˆã‚‹æ‰€æœ‰ã®ã‚ªãƒ–ジェクトをã™ã¹ã¦ãれãžã‚Œã®ã‚ªãƒ¼ãƒŠãƒ¼ã®æŒã¡ç‰©ã«è¿”å´ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚ +æ“作を続行ã—ã¾ã™ã‹ï¼Ÿã‚°ãƒ«ãƒ¼ãƒ—ã«è²æ¸¡ã•れãŸè²æ¸¡å¯èƒ½ã‚ªãƒ–ジェクトã¯ã€ä»¥å‰ã®ã‚ªãƒ¼ãƒŠãƒ¼ã«è¿”å´ã•れã¾ã™ã€‚ + +*è¦å‘Š* ã“れã«ã‚ˆã‚Šã€ +グループã«è²æ¸¡ã•れãŸè²æ¸¡ä¸å¯èƒ½ãªã‚ªãƒ–ジェクトã¯å‰Šé™¤ã•れã¾ã™ï¼ +オブジェクト: [N] + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="ReturnAllTopObjects"> + å…¨ã¦ã®ãƒªã‚¹ãƒˆã•れãŸã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’æ‰€æœ‰è€…ã«æœ¬å½“ã«è¿”å´ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="DisableAllTopObjects"> + ã“ã®åœ°åŸŸå†…ã®ã™ã¹ã¦ã®ã‚ªãƒ–ジェクトを無効ã«ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚æ“作を続行ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="ReturnObjectsNotOwnedByGroup"> + ã“ã®åœŸåœ°ã®åŒºç”»ä¸Šã®ã‚ªãƒ–ジェクトã®ã†ã¡ã€ã‚°ãƒ«ãƒ¼ãƒ—[NAME] +ã¨ã®é–“ã§å…±æœ‰ã—ã¦ã„ãªã„オブジェクトをオーナーã«è¿”å´ã—ã¾ã™ã‹ï¼Ÿ + +オブジェクト: [N] + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="UnableToDisableOutsideScripts"> + スクリプトを無効ã«ã§ãã¾ã›ã‚“。 +ã“ã®åœ°åŸŸå…¨ä½“ãŒã€Œãƒ€ãƒ¡ãƒ¼ã‚¸æœ‰åйã€ã«è¨å®šã•れã¦ã„ã¾ã™ã€‚ +æ¦å™¨ã‚’使用ã™ã‚‹ã«ã¯ã‚¹ã‚¯ãƒªãƒ—トã®å®Ÿè¡Œã‚’許å¯ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ + </notification> + <notification name="MustBeInParcel"> + ç€åœ°ç‚¹ã‚’è¨å®šã™ã‚‹ã«ã¯ã€ã“ã®åŒºç”»ã®å†…å´ã« +ç«‹ã£ã¦ãã ã•ã„。 + </notification> + <notification name="PromptRecipientEmail"> + å—ä¿¡è€…ã®æœ‰åйãªEメールアドレスを入力ã—ã¦ãã ã•ã„。 + </notification> + <notification name="PromptSelfEmail"> + ã‚ãªãŸã®Eメール・アドレスを入力ã—ã¦ãã ã•ã„。 + </notification> + <notification name="PromptMissingSubjMsg"> + デフォルトã®ä»¶åã¾ãŸã¯ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’付ã‘ã¦ã€ã‚¹ãƒŠãƒƒãƒ—ショットをé€ä¿¡ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="ã‚ャンセル" yestext="OK"/> + </notification> + <notification name="ErrorProcessingSnapshot"> + スナップショット・データã®å‡¦ç†ã‚¨ãƒ©ãƒ¼ + </notification> + <notification name="ErrorEncodingSnapshot"> + スナップショットã®ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‰åŒ–ã§ã‚¨ãƒ©ãƒ¼ãŒå‡ºã¾ã—ãŸï¼ + </notification> + <notification name="ErrorUploadingPostcard"> + 次ã®ç†ç”±ã§ã€ã‚¹ãƒŠãƒƒãƒ—ショットã®é€ä¿¡æ™‚ã«å•題ãŒèµ·ã“りã¾ã—ãŸï¼š [REASON] + </notification> + <notification name="ErrorUploadingReportScreenshot"> + 次ã®ç†ç”±ã§ã€ãƒ¬ãƒãƒ¼ãƒˆã®ã‚¹ã‚¯ãƒªãƒ¼ãƒ³ã‚·ãƒ§ãƒƒãƒˆã®ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰æ™‚ã«å•題ãŒèµ·ã“りã¾ã—ãŸã€‚ [REASON] + </notification> + <notification name="MustAgreeToLogIn"> + [SECOND_LIFE] ã¸ã®ãƒã‚°ã‚¤ãƒ³ã‚’ç¶šã‘ã‚‹ã«ã¯ã€åˆ©ç”¨è¦ç´„ã«åŒæ„ã—ã¦ãã ã•ã„。 + </notification> + <notification name="CouldNotPutOnOutfit"> + æœè£…を装ç€ã§ãã¾ã›ã‚“。 +æœè£…フォルダã«è¡£æœã€èº«ä½“部ä½ã€ä»˜å±žå“ãŒã‚りã¾ã›ã‚“。 + </notification> + <notification name="CannotWearTrash"> + ゴミ箱ã«ã‚ã‚‹æœã‚„ボディーパーツã®ç€ç”¨ã¯ã§ãã¾ã›ã‚“。 + </notification> + <notification name="CannotWearInfoNotComplete"> + ã¾ã èªã¿è¾¼ã¾ã‚Œã¦ã„ãªã„ãŸã‚ã€ãã®ã‚¢ã‚¤ãƒ†ãƒ を装ç€ã§ãã¾ã›ã‚“。後ã§ã‚„り直ã—ã¦ãã ã•ã„。 + </notification> + <notification name="MustHaveAccountToLogIn"> + ãŠã£ã¨! 記入æ¼ã‚ŒãŒã‚りã¾ã™ã‚ˆã€‚ +ã‚¢ãƒã‚¿ãƒ¼ã®ãƒ•ァーストãƒãƒ¼ãƒ ã¨ãƒ©ã‚¹ãƒˆãƒãƒ¼ãƒ ã®ä¸¡æ–¹ã‚’入力ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ + +[SECOND_LIFE]ã«å…¥ã‚‹ã«ã¯ã€ã‚¢ã‚«ã‚¦ãƒ³ãƒˆãŒå¿…è¦ã§ã™ã€‚ アカウントを作æˆã—ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="ã‚‚ã†ä¸€åº¦è©¦ã™" yestext="æ–°ã—ã„アカウントを作æˆ"/> + </notification> + <notification name="AddClassified"> + 検索ディレクトリã®ã€Œã‚¯ãƒ©ã‚·ãƒ•ァイドã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã«ã€ +クラシファイド広告ãŒ1週間掲載ã•れã¾ã™ã€‚ +広告を記入後ã€ã€Œå…¬é–‹ã€ã‚’クリックã—ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã« +è¿½åŠ ã—ã¾ã™ã€‚ +「公開ã€ã‚’クリックã™ã‚‹ã¨ã€æ”¯æ‰•金é¡ã‚’å°‹ãられã¾ã™ã€‚ +å¤šãæ‰•ã†ã»ã©ã€åºƒå‘ŠãŒã‚¯ãƒ©ã‚·ãƒ•ァイド・リストã¨ã‚ーワード検索 +ã®ä¸Šä½ã«è¡¨ç¤ºã•れã¾ã™ã€‚ + <usetemplate ignoretext="æ–°ã—ã„ã‚¯ãƒ©ã‚·ãƒ•ã‚¡ã‚¤ãƒ‰åºƒå‘Šã‚’åŠ ãˆã‚‹ã¨ã" name="okcancelignore" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="DeleteClassified"> + クラシファイド広告[NAME]ã®å‰Šé™¤ã‚’ã—ã¾ã™ã‹ï¼Ÿ +æ”¯æ‰•ã„æ¸ˆã¿ã®æ–™é‡‘ã¯è¿”金ã•れã¾ã›ã‚“。 + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="ClassifiedSave"> + クラシファイド広告[NAME]ã¸ã®å¤‰æ›´ã‚’ä¿å˜ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate canceltext="ã‚ャンセル" name="yesnocancelbuttons" notext="ä¿å˜ã—ãªã„" yestext="ä¿å˜"/> + </notification> + <notification name="DeleteAvatarPick"> + ピック[PICK]を削除ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="PromptGoToEventsPage"> + [SECOND_LIFE]イベント・ウェブ・ページã«ç§»å‹•ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="SelectProposalToView"> + 表示ã™ã‚‹ææ¡ˆã‚’é¸æŠžã—ã¦ãã ã•ã„。 + </notification> + <notification name="SelectHistoryItemToView"> + 表示ã™ã‚‹å±¥æ´ã‚¢ã‚¤ãƒ†ãƒ ã‚’é¸æŠžã—ã¦ãã ã•ã„。 + </notification> + <notification name="ResetShowNextTimeDialogs"> + ã“れらã®ãƒãƒƒãƒ—アップ全ã¦ã‚’å†åº¦æœ‰åŠ¹åŒ–ã—ã¾ã™ã‹ï¼Ÿï¼ˆä»¥å‰ã€Œä»Šå¾Œã¯è¡¨ç¤ºã—ãªã„ã€ã¨æŒ‡å®šã—ã¦ã„ã¾ã™ï¼‰ + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="SkipShowNextTimeDialogs"> + スã‚ップå¯èƒ½ãªãƒãƒƒãƒ—アップ全ã¦ã‚’無効化ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="ã‚ャンセル" yestext="OK"/> + </notification> + <notification name="CacheWillClear"> + [SECOND_LIFE]ã®å†èµ·å‹•後ã«ã‚ャッシュãŒã‚¯ãƒªã‚¢ã•れã¾ã™ã€‚ + </notification> + <notification name="CacheWillBeMoved"> + [SECOND_LIFE]ã®å†èµ·å‹•後ã«ã‚ャッシュãŒç§»å‹•ã•れã¾ã™ã€‚ +注æ„:ã“れã«ã‚ˆã‚Šã‚ャッシュãŒã‚¯ãƒªã‚¢ã•れã¾ã™ã€‚ + </notification> + <notification name="ChangeConnectionPort"> + ãƒãƒ¼ãƒˆã®è¨å®šã¯ã€[SECOND_LIFE]ã®å†èµ·å‹•å¾Œã«æœ‰åйã«ãªã‚Šã¾ã™ã€‚ + </notification> + <notification name="ChangeSkin"> + æ–°ã—ã„スã‚ンã¯[SECOND_LIFE]ã‚’å†èµ·å‹•ã™ã‚‹ã¨ç¾ã‚Œã¾ã™ + </notification> + <notification name="GoToAuctionPage"> + [SECOND_LIFE]ウェブ・ページã«ç§»å‹•ã—〠入æœã‚ã‚‹ã„ã¯ã‚ªãƒ¼ã‚¯ã‚·ãƒ§ãƒ³ã®è©³ç´°ã‚’確èªã—ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="SaveChanges"> + 変更をä¿å˜ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate canceltext="å–り消ã—" name="yesnocancelbuttons" notext="ä¿å˜ã—ãªã„" yestext="ä¿å˜"/> + </notification> + <notification name="GestureSaveFailedTooManySteps"> + ジェスãƒãƒ£ãƒ¼ã®ä¿å˜ã«å¤±æ•—ã—ã¾ã—ãŸã€‚ +ステップãŒå¤šã™ãŽã¾ã™ã€‚ +ステップをã„ãã¤ã‹å‰Šé™¤ã—ã¦ã‹ã‚‰å†ä¿å˜ã—ã¦ãã ã•ã„ + </notification> + <notification name="GestureSaveFailedTryAgain"> + ジェスãƒãƒ£ãƒ¼ã®ä¿å˜ã«å¤±æ•—ã—ã¾ã—ãŸã€‚å°‘ã—å¾…ã£ã¦ã‹ã‚‰ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 + </notification> + <notification name="GestureSaveFailedObjectNotFound"> + ジェスãƒãƒ£ãƒ¼ã®ä¿å˜ã«å¤±æ•—ã—ã¾ã—ãŸã€‚オブジェクトã€ã¾ãŸã¯é–¢é€£ã™ã‚‹ã‚ªãƒ–ジェクトæŒã¡ç‰©ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。 +オブジェクトãŒç¯„囲内ã«å˜åœ¨ã—ãªã„ã‹ã€ã¾ãŸã¯å‰Šé™¤ã•れãŸå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ + </notification> + <notification name="GestureSaveFailedReason"> + 次ã®ç†ç”±ã§ã€ã‚¸ã‚§ã‚¹ãƒãƒ£ãƒ¼ã®ä¿å˜æ™‚ã«å•題ãŒèµ·ã“りã¾ã—ãŸã€‚ [REASON]。 後ã§ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 + </notification> + <notification name="SaveNotecardFailObjectNotFound"> + ノートカードã®ä¿å˜ã«å¤±æ•—ã—ã¾ã—ãŸã€‚オブジェクトã€ã¾ãŸã¯é–¢é€£ã™ã‚‹ã‚ªãƒ–ジェクトæŒã¡ç‰©ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。 +オブジェクトãŒç¯„囲内ã«å˜åœ¨ã—ãªã„ã‹ã€ã¾ãŸã¯å‰Šé™¤ã•れãŸå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ + </notification> + <notification name="SaveNotecardFailReason"> + 次ã®ç†ç”±ã§ã€ãƒŽãƒ¼ãƒˆã‚«ãƒ¼ãƒ‰ã®ä¿å˜æ™‚ã«å•題ãŒèµ·ã“りã¾ã—ãŸã€‚ [REASON]。 後ã§ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 + </notification> + <notification name="ScriptCannotUndo"> + ã‚ãªãŸã®ã‚¹ã‚¯ãƒªãƒ—トã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã¯ã€å¤‰æ›´ã‚’å…ƒã«æˆ»ã™ã“ã¨ã¯ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ +サーãƒãƒ¼ã®æœ€æ–°ä¿å˜ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’ãƒãƒ¼ãƒ‰ã—ã¾ã™ã‹ï¼Ÿ +(**è¦å‘Š**:ã“ã®æ“ä½œå¾Œå…ƒã«æˆ»ã™ã“ã¨ã¯ã§ãã¾ã›ã‚“) + <usetemplate name="okcancelbuttons" notext="ã‚ャンセル" yestext="OK"/> + </notification> + <notification name="SaveScriptFailReason"> + 次ã®ç†ç”±ã§ã€ã‚¹ã‚¯ãƒªãƒ—トã®ä¿å˜ã«å•題ãŒèµ·ã“りã¾ã—ãŸã€‚ [REASON]。 後ã§ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 + </notification> + <notification name="SaveScriptFailObjectNotFound"> + スクリプトã®ä¿å˜ã«å¤±æ•—ã—ã¾ã—ãŸã€‚スクリプトãŒå…¥ã£ãŸã‚ªãƒ–ジェクトãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。 +オブジェクトã¯ç¯„囲外ã‹ã€ã¾ãŸã¯å‰Šé™¤ã•れã¦ã„ã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“。 + </notification> + <notification name="SaveBytecodeFailReason"> + 次ã®ç†ç”±ã§ã€ã‚³ãƒ³ãƒ‘イルã—ãŸã‚¹ã‚¯ãƒªãƒ—トã®ä¿å˜æ™‚ã«å•題ãŒèµ·ã“りã¾ã—ãŸã€‚ [REASON]。 後ã§ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 + </notification> + <notification name="CouldNotStartStopScript"> + スクリプトã®èµ·å‹•ã¾ãŸã¯åœæ¢ã«å¤±æ•—ã—ã¾ã—ãŸã€‚ã‚¹ã‚¯ãƒªãƒ—ãƒˆãŒæ ¼ç´ã•れã¦ã„るオブジェクトãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。 +オブジェクトãŒç¯„囲内ã«å˜åœ¨ã—ãªã„ã‹ã€ã¾ãŸã¯å‰Šé™¤ã•れãŸå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ + </notification> + <notification name="CannotDownloadFile"> + ファイルをダウンãƒãƒ¼ãƒ‰ã§ãã¾ã›ã‚“。 + </notification> + <notification name="CannotWriteFile"> + ファイル[[FILE]]を書ãè¾¼ã‚ã¾ã›ã‚“。 + </notification> + <notification name="UnsupportedHardware"> + è¦å‘Šï¼š ã‚ãªãŸã®ã‚·ã‚¹ãƒ†ãƒ 㯠Second Life を使用ã™ã‚‹ãŸã‚ã«å¿…è¦ãªå¿…é ˆå‹•ä½œç’°å¢ƒã®æ¡ä»¶ã‚’満ãŸã—ã¦ã„ã¾ã›ã‚“。 +Second Life ã‚’ã“ã®ã¾ã¾ã”使用ã«ãªã‚‹ã¨ã€ä¸å分ãªãƒ‘フォーマンスã—ã‹å¾—られãªã„ãŠãれãŒã‚りã¾ã™ã€‚ +ã¾ãŸã€ã‚µãƒãƒ¼ãƒˆå¤–ã®ã‚·ã‚¹ãƒ†ãƒ æ§‹æˆã§ã”使用ã®å ´åˆã€ãƒ†ã‚¯ãƒ‹ã‚«ãƒ«ã‚µãƒãƒ¼ãƒˆã‚’ã”利用ã„ãŸã ãã“ã¨ãŒã§ãã¾ã›ã‚“。 + + å¿…é ˆå‹•ä½œç’°å¢ƒã®æ¡ä»¶ +[_URL] ã«ã‚¢ã‚¯ã‚»ã‚¹ã—ã¦ã€ã•らã«è©³ã—ã„æƒ…å ±ã‚’ã”覧ã«ãªã‚Šã¾ã™ã‹ï¼Ÿ + <url name="url" option="0"> + http://secondlife.com/support/sysreqs.php?lang=ja + </url> + <usetemplate ignoretext="サãƒãƒ¼ãƒˆå¤–ã®ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ã®æ¤œå‡ºæ™‚" name="okcancelignore" notext="ã„ã„ãˆ" yestext="ã¯ã„"/> + </notification> + <notification name="UnknownGPU"> + ãŠä½¿ã„ã®ã‚·ã‚¹ãƒ†ãƒ ã«ã¯ã€ç¾æ™‚点ã§ã¯ä¸æ˜Žãªã‚°ãƒ©ãƒ•ã‚£ãƒƒã‚¯ãƒ»ã‚«ãƒ¼ãƒ‰ãŒæè¼‰ã•れã¦ã„ã¾ã™ã€‚ +ã“れã¯ã€å½“社ã«ã‚ˆã‚‹å‹•作テストãŒè¡Œã‚れã¦ã„ãªã„æ–°ã—ã„ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ãŒä½¿ç”¨ã•れã¦ã„ã‚‹å ´åˆãŒã»ã¨ã‚“ã©ã§ã™ã€‚ +Second Life ã¯ã»ã¼é–“é•ã„ãªãæ£å¸¸ã«å‹•作ã—ã¾ã™ãŒã€ +å¿…è¦ã«å¿œã˜ãŸã‚°ãƒ©ãƒ•ィックè¨å®šã®èª¿æ•´ãŒå¿…è¦ã«ãªã‚‹å ´åˆãŒã‚りã¾ã™ã€‚ +(「編集ã€ï¼žã€Œç’°å¢ƒè¨å®šã€ï¼žã€Œè¡¨ç¤ºã€ï¼‰ + <form name="form"> + <ignore name="ignore" text="䏿˜Žãªã‚°ãƒ©ãƒ•ã‚£ãƒƒã‚¯ãƒ»ã‚«ãƒ¼ãƒ‰ã®æ¤œå‡ºæ™‚"/> + </form> + </notification> + <notification name="DisplaySettingsNoShaders"> + [SECOND_LIFE] ã¯ã€ +グラフィック・ドライãƒã®åˆæœŸåŒ–ä¸ã«ã‚¯ãƒ©ãƒƒã‚·ãƒ¥ã—ã¾ã—ãŸã€‚ +一般的ãªãƒ‰ãƒ©ã‚¤ãƒãƒ»ã‚¨ãƒ©ãƒ¼ã‚’回é¿ã™ã‚‹ãŸã‚ã€ã€Œå“質ãŠã‚ˆã³ãƒ‘フォーマンスã€ã¯ã€Œä½Žã€ã«è¨å®šã•れã¾ã™ã€‚ +ã“れã«ã‚ˆã‚Šã€ã„ãã¤ã‹ã®ã‚°ãƒ©ãƒ•ィックス機能ã¯ç„¡åйã«ãªã‚Šã¾ã™ã€‚ +グラフィックカード・ドライãƒã®ã‚¢ãƒƒãƒ—デートをãŠå‹§ã‚ã—ã¾ã™ã€‚ +「グラフィックã®å“質ã€ã¯ã€Œç’°å¢ƒè¨å®šã€ï¼žã€Œè¡¨ç¤ºã€ã‹ã‚‰ä¸Šã’ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + </notification> + <notification name="RegionNoTerraforming"> + ã“ã®åœ°åŸŸ[REGION] ã¯ã€ãƒ†ãƒ©ãƒ•ォーミングãŒã§ãã¾ã›ã‚“。 + </notification> + <notification name="CannotCopyWarning"> + ã‚ãªãŸã¯ã“ã®ã‚¢ã‚¤ãƒ†ãƒ ã®ã‚³ãƒ”ーを +許ã•れã¦ã„ãªã„ã®ã§ã€äººã«ã‚ã’る㨠+æŒã¡ç‰©ã‹ã‚‰å¤±ã‚れã¾ã™ã€‚ 本当㫠+ã“れをã‚ã’ãŸã„ã§ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="ã„ã„ãˆ" yestext="ã¯ã„"/> + </notification> + <notification name="CannotGiveItem"> + æŒã¡ç‰©ã®ã‚¢ã‚¤ãƒ†ãƒ を渡ã›ã¾ã›ã‚“。 + </notification> + <notification name="TransactionCancelled"> + å–引ãŒã‚ャンセルã•れã¾ã—ãŸã€‚ + </notification> + <notification name="TooManyItems"> + 一度ã®ã‚¤ãƒ³ãƒ™ãƒ³ãƒˆãƒªäº¤æ›ã§ã€42以上ã®ã‚¢ã‚¤ãƒ†ãƒ ã¯é€ã‚Œã¾ã›ã‚“。 + </notification> + <notification name="NoItems"> + é¸æŠžã—ãŸã‚¢ã‚¤ãƒ†ãƒ ã‚’è²æ¸¡ã§ãる権é™ãŒã‚りã¾ã›ã‚“。 + </notification> + <notification name="CannotCopyCountItems"> + ã‚ãªãŸã¯é¸æŠžã—ãŸã‚¢ã‚¤ãƒ†ãƒ ã®[COUNT]ã®ã‚³ãƒ”ーを +許ã•れã¦ã„ã¾ã›ã‚“。 +ã“れらã®ã‚¢ã‚¤ãƒ†ãƒ ã¯ã‚ãªãŸã®æŒã¡ç‰©ã‹ã‚‰å¤±ã‚れã¾ã™ã€‚ +本当ã«ã‚¢ã‚¤ãƒ†ãƒ ã‚’ã‚ã’ãŸã„ã§ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="ã„ã„ãˆ" yestext="ã¯ã„"/> + </notification> + <notification name="CannotGiveCategory"> + é¸æŠžã—ãŸãƒ•ã‚©ãƒ«ãƒ€ã‚’è²æ¸¡ã§ãる権é™ãŒã‚りã¾ã›ã‚“ + </notification> + <notification name="FreezeAvatar"> + ã“ã®ã‚¢ãƒã‚¿ãƒ¼ã‚’フリーズã—ã¾ã™ã‹ï¼Ÿ +ã‚¢ãƒã‚¿ãƒ¼ã¯ä¸€æ™‚çš„ã«å‹•ã‘ãªããªã‚Šã€ +ãƒãƒ£ãƒƒãƒˆãªã©ã€ã“ã®ä¸–界ã«å¯¾ã™ã‚‹é–¢ã‚りをæŒã¤ã“ã¨ãŒã§ããªããªã‚Šã¾ã™ã€‚ + <usetemplate canceltext="å–り消ã—" name="yesnocancelbuttons" notext="è§£å‡" yestext="フリーズ"/> + </notification> + <notification name="FreezeAvatarFullname"> + [AVATAR_NAME]をフリーズã—ã¾ã™ã‹ï¼Ÿ +フリーズã•れãŸäººã¯ä¸€æ™‚çš„ã«å‹•ã‘ãªããªã‚Šã€ãƒãƒ£ãƒƒãƒˆãªã©ã€ã“ã®ä¸–界ã«å¯¾ã™ã‚‹é–¢ã‚りをæŒã¤ã“ã¨ãŒã§ããªããªã‚Šã¾ã™ã€‚ + <usetemplate canceltext="ã‚ャンセル" name="yesnocancelbuttons" notext="è§£å‡" yestext="フリーズ"/> + </notification> + <notification name="EjectAvatarFullname"> + ã‚ãªãŸã®åœŸåœ°ã‹ã‚‰[AVATAR_NAME]を追放ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate canceltext="ã‚ャンセル" name="yesnocancelbuttons" notext="追放ã¨ç¦æ¢" yestext="追放"/> + </notification> + <notification name="EjectAvatarNoBan"> + ã“ã®ã‚¢ãƒã‚¿ãƒ¼ã‚’ã‚ãªãŸã®åœŸåœ°ã‹ã‚‰è¿½æ”¾ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="ã‚ャンセル" yestext="追放"/> + </notification> + <notification name="EjectAvatarFullnameNoBan"> + [AVATAR_NAME] ã‚’ã‚ãªãŸã®åœŸåœ°ã‹ã‚‰è¿½æ”¾ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="ã‚ャンセル" yestext="追放"/> + </notification> + <notification name="AcquireErrorTooManyObjects"> + å–å¾—ã‚¨ãƒ©ãƒ¼ï¼šé¸æŠžã—ãŸã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æ•°ãŒå¤šã™ãŽã¾ã™ã€‚ + </notification> + <notification name="AcquireErrorObjectSpan"> + å–得エラー: +オブジェクトãŒè¤‡æ•°ã®åœ°åŸŸã«ã¾ãŸãŒã£ã¦å˜åœ¨ã—ã¦ã„ã¾ã™ã€‚ +å–å¾—ã™ã‚‹ã‚ªãƒ–ジェクトã¯ã€ +ã™ã¹ã¦åŒã˜åœ°åŸŸå†…ã«ç§»å‹•ã•ã›ã¦ãã ã•ã„。 + </notification> + <notification name="PromptGoToCurrencyPage"> + [EXTRA] + +[URL]ã«ç§»å‹•ã—ã¦è²¨å¹£è³¼å…¥ã«é–¢ã™ã‚‹æƒ…å ±ã‚’ç¢ºèªã—ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="UnableToLinkObjects"> + ã“れらã®[COUNT]オブジェクトをリンクã§ãã¾ã›ã‚“。 +最大[MAX]オブジェクトをリンクã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + </notification> + <notification name="CannotLinkIncompleteSet"> + セットã¨ã—ã¦æƒã£ã¦ã„るオブジェクトã®ã¿ãƒªãƒ³ã‚¯ã§ãã¾ã™ã€‚複数㮠+ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’é¸æŠžã—ã¦ãã ã•ã„。 + </notification> + <notification name="CannotLinkModify"> + ã™ã¹ã¦ã®ã‚ªãƒ–ジェクトã«å¯¾ã™ã‚‹ä¿®æ£è¨±å¯ãŒã‚ãªãŸã«ãªã„ãŸã‚〠+リンクã§ãã¾ã›ã‚“。 + +オブジェクトãŒã™ã¹ã¦ãƒãƒƒã‚¯ã•れã¦ãŠã‚‰ãšã€ã‚ãªãŸã®ã‚‚ã®ã§ã‚ã‚‹ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。 + </notification> + <notification name="CannotLinkDifferentOwners"> + 所有者ãŒç•°ãªã‚‹ãŸã‚ã€ã™ã¹ã¦ã®ã‚ªãƒ–ジェクトを +リンクã§ãã¾ã›ã‚“。 + +è‡ªåˆ†ãŒæ‰€æœ‰ã—ã¦ã„るオブジェクトã ã‘ã‚’é¸æŠžã—ã¦ãã ã•ã„。 + </notification> + <notification name="NoFileExtension"> + ファイル「[FILE]ã€ã®æ‹¡å¼µåãŒç„¡åйã§ã™ã€‚ + +ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã®æ‹¡å¼µåãŒæ£ã—ã„ã‹ã©ã†ã‹ã‚’確èªã—ã¦ãã ã•ã„。 + </notification> + <notification name="InvalidFileExtension"> + ファイル拡張å[EXTENSION]ã¯ç„¡åйã§ã™ +æ£ã—ã„æ‹¡å¼µå:[VALIDS] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="CannotUploadSoundFile"> + èªã¿è¾¼ã¿ã®ãŸã‚ã«ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ã•れãŸã‚µã‚¦ãƒ³ãƒ‰ãƒ•ァイルを開ã‘ã¾ã›ã‚“: +[FILE] + </notification> + <notification name="SoundFileNotRIFF"> + ファイルãŒRIFF WAVEファイルã¨ã—ã¦èªè˜ã•れã¾ã›ã‚“: +[FILE] + </notification> + <notification name="SoundFileNotPCM"> + ファイルãŒPCM WAVEオーディオ・ファイルã¨ã—ã¦èªè˜ã•れã¾ã›ã‚“: +[FILE] + </notification> + <notification name="SoundFileInvalidChannelCount"> + ファイルã®ãƒãƒ£ãƒ³ãƒãƒ«æ•°ãŒç„¡åйã§ã™ï¼ˆãƒ¢ãƒŽãƒ©ãƒ«ã¾ãŸã¯ã‚¹ãƒ†ãƒ¬ã‚ªã‚’使用ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ï¼‰ï¼š +[FILE] + </notification> + <notification name="SoundFileInvalidSampleRate"> + ファイルã®ã‚µãƒ³ãƒ—ル・レートãŒã‚µãƒãƒ¼ãƒˆå¤–ã§ã™ï¼ˆ44.1kを指定ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ï¼‰ï¼š +[FILE] + </notification> + <notification name="SoundFileInvalidWordSize"> + ファイルã®ãƒ¯ãƒ¼ãƒ‰ãƒ»ã‚µã‚¤ã‚ºãŒã‚µãƒãƒ¼ãƒˆå¤–ã§ã™ï¼ˆ8ã¾ãŸã¯16ビットを指定ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ï¼‰ï¼š +[FILE] + </notification> + <notification name="SoundFileInvalidHeader"> + WAVヘッダーã«ãƒ‡ãƒ¼ã‚¿ãƒ»ãƒãƒ£ãƒ³ã‚¯ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“: +[FILE] + </notification> + <notification name="SoundFileInvalidTooLong"> + オーディオ・ファイルãŒé•·ã™ãŽã¾ã™ã€‚(最大10秒): +[FILE] + </notification> + <notification name="ProblemWithFile"> + ファイル[FILE]ã«ã‚¨ãƒ©ãƒ¼ãŒã‚りã¾ã™ã€‚ + +[ERROR] + </notification> + <notification name="CannotOpenTemporarySoundFile"> + 書ãè¾¼ã¿ç”¨ã®ä¸€æ™‚圧縮サウンド・ファイルを開ãã“ã¨ãŒã§ãã¾ã›ã‚“:[FILE] + </notification> + <notification name="UnknownVorbisEncodeFailure"> + 未知ã®Vorbis æš—å·åŒ–ã«å¤±æ•—: [FILE] + </notification> + <notification name="CannotEncodeFile"> + 次ã®ãƒ•ァイルã®ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‰ãŒã§ãã¾ã›ã‚“: [FILE] + </notification> + <notification name="CorruptResourceFile"> + ç ´æã—ãŸãƒªã‚½ãƒ¼ã‚¹ãƒ•ァイル: [FILE] + </notification> + <notification name="UnknownResourceFileVersion"> + 未知ã®lindenリソースファイルã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ï¼š [FILE] + </notification> + <notification name="UnableToCreateOutputFile"> + æœè£…ファイルを作æˆã§ãã¾ã›ã‚“: [FILE] + </notification> + <notification name="DoNotSupportBulkAnimationUpload"> + アニメーションファイルã®ãƒãƒ«ã‚¯ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ã¯ç¾åœ¨ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。 + </notification> + <notification name="CannotUploadReason"> + 次ã®ç†ç”±ã§ã€[FILE] をアップãƒãƒ¼ãƒ‰ã§ãã¾ã›ã‚“: [REASON] +ã‚ã¨ã§ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 + </notification> + <notification name="CannotCreateLandmarkNotOwner"> + åœŸåœ°ã®æ‰€æœ‰è€…ãŒè¨±å¯ã—ã¦ã„ãªã„ãŸã‚〠+ランドマークを作æˆã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 + </notification> + <notification name="CannotRecompileSelectObjectsNoScripts"> + å†ç·¨é›†ã¯ä¸å¯èƒ½ã§ã™ã€‚ +スクリプト化ã•れãŸã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’é¸æŠžã—ã¦ãã ã•ã„。 + </notification> + <notification name="CannotRecompileSelectObjectsNoPermission"> + 「å†ç·¨é›†ã€ã¯ä¸å¯èƒ½ã§ã™ã€‚ + +å¤‰æ›´ä¿®æ£æ¨©é™ã®ã‚ã‚‹ +スクリプト化ã•れãŸã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’é¸æŠžã—ã¦ãã ã•ã„。 + </notification> + <notification name="CannotResetSelectObjectsNoScripts"> + 「å†è¨å®šã€ã‚’行ã†ã“ã¨ãŒã§ãã¾ã›ã‚“。 + +スクリプト化ã•れãŸã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’é¸æŠžã—ã¦ãã ã•ã„。 + </notification> + <notification name="CannotResetSelectObjectsNoPermission"> + 「å†è¨å®šã€ã‚’行ã†ã“ã¨ãŒã§ãã¾ã›ã‚“。 + +å¤‰æ›´ä¿®æ£æ¨©é™ã®ã‚ã‚‹ +スクリプト化ã•れãŸã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’é¸æŠžã—ã¦ãã ã•ã„。 + </notification> + <notification name="CannotSetRunningSelectObjectsNoScripts"> + スクリプトã®ã€Œå®Ÿè¡Œã€ã®è¨å®šãŒã§ãã¾ã›ã‚“。 + +スクリプト化ã•れãŸã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’é¸æŠžã—ã¦ãã ã•ã„。 + </notification> + <notification name="CannotSetRunningNotSelectObjectsNoScripts"> + スクリプトを「実行ã—ãªã„ã€ã«è¨å®šã§ãã¾ã›ã‚“。 + +スクリプト化ã•れãŸã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’é¸æŠžã—ã¦ãã ã•ã„。 + </notification> + <notification name="NoFrontmostFloater"> + ä¿å˜ã™ã¹ãfrontmostフãƒãƒ¼ã‚¿ãŒã‚りã¾ã›ã‚“。 + </notification> + <notification name="SeachFilteredOnShortWords"> + 指定ã—ãŸæ¤œç´¢ã‚¯ã‚¨ãƒªã¯å¤‰æ›´ã•れã€çŸã™ãŽã‚‹èªžå¥ã¯å–り除ã‹ã‚Œã¦ã„ã¾ã™ã€‚ + +検索語å¥ï¼š [FINALQUERY] + </notification> + <notification name="SeachFilteredOnShortWordsEmpty"> + 指定ã—ãŸæ¤œç´¢èªžå¥ãŒçŸã™ãŽãŸãŸã‚ã€æ¤œç´¢ã¯è¡Œã‚れã¾ã›ã‚“ã§ã—ãŸã€‚ + </notification> + <notification name="CouldNotTeleportReason"> + テレãƒãƒ¼ãƒˆã«å¤±æ•—ã—ã¾ã—ãŸã€‚ +[REASON] + </notification> + <notification name="invalid_tport"> + テレãƒãƒ¼ãƒˆãƒ»ãƒªã‚¯ã‚¨ã‚¹ãƒˆã®å‡¦ç†ä¸ã«å•題ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚テレãƒãƒ¼ãƒˆã™ã‚‹ã«ã¯ã€å†åº¦ãƒã‚°ã‚¤ãƒ³ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ +ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒå¼•ãç¶šã表示ã•ã‚Œã‚‹å ´åˆã¯ã€æŠ€è¡“サãƒãƒ¼ãƒˆFAQ(www.secondlife.com/support)をå‚ç…§ã—ã¦ãã ã•ã„。 + </notification> + <notification name="invalid_region_handoff"> + 地域間ã®ç§»å‹•ã®å‡¦ç†ä¸ã«å•題ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚地域間を移動ã™ã‚‹ã«ã¯ã€å†åº¦ãƒã‚°ã‚¤ãƒ³ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ +ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒå¼•ãç¶šã表示ã•ã‚Œã‚‹å ´åˆã¯ã€æŠ€è¡“サãƒãƒ¼ãƒˆFAQ(www.secondlife.com/support)をå‚ç…§ã—ã¦ãã ã•ã„。 + </notification> + <notification name="blocked_tport"> + 申ã—訳ã”ã–ã„ã¾ã›ã‚“。テレãƒãƒ¼ãƒˆã¯ç¾åœ¨ã€ãƒ–ãƒãƒƒã‚¯ã•れã¦ã„ã¾ã™ã€‚ã‚‚ã†å°‘ã—後ã§ã‚„り直ã—ã¦ãã ã•ã„。 +やり直ã—ã¦ã‚‚テレãƒãƒ¼ãƒˆã§ããªã„å ´åˆã¯ã€ã„ã£ãŸã‚“ãƒã‚°ã‚¢ã‚¦ãƒˆã—ã€å†åº¦ãƒã‚°ã‚¤ãƒ³ã—ã¦å•題を解決ã—ã¦ãã ã•ã„。 + </notification> + <notification name="nolandmark_tport"> + 残念ãªãŒã‚‰ã€ã‚·ã‚¹ãƒ†ãƒ ã¯ãƒ©ãƒ³ãƒ‰ãƒžãƒ¼ã‚¯ç›®çš„地を探ã›ã¾ã›ã‚“ã§ã—ãŸã€‚ + </notification> + <notification name="timeout_tport"> + 申ã—訳ã”ã–ã„ã¾ã›ã‚“。システムã¯ãƒ†ãƒ¬ãƒãƒ¼ãƒˆæŽ¥ç¶šã‚’完了ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ +ã‚‚ã†å°‘ã—後ã§ã‚„り直ã—ã¦ãã ã•ã„。 + </notification> + <notification name="noaccess_tport"> + 残念ãªãŒã‚‰ã€ãã®ãƒ†ãƒ¬ãƒãƒ¼ãƒˆç›®çš„地ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ãŒã‚りã¾ã›ã‚“。 + </notification> + <notification name="missing_attach_tport"> + 添付物ã¯ã€ã¾ã 到ç€ã—ã¦ã„ã¾ã›ã‚“。ã‚ã¨æ•°ç§’é–“ãŠå¾…ã¡ã„ãŸã ãã‹ã€ã„ã£ãŸã‚“ãƒã‚°ã‚¢ã‚¦ãƒˆã—ã€å†åº¦ãƒã‚°ã‚¤ãƒ³ã—ã¦ã‹ã‚‰ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã‚’やり直ã—ã¦ã ã•ã„。 + </notification> + <notification name="too_many_uploads_tport"> + ã“ã®åœ°åŸŸã®è³‡ç”£ã‚ューãŒç¾åœ¨è¾¼ã¿åˆã£ã¦ã„ã‚‹ãŸã‚ã€ãƒ†ãƒ¬ãƒãƒ¼ãƒˆãƒ»ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’時間通りã«å‡¦ç†ã™ã‚‹ã“ã¨ãŒé›£ã—ã„状æ³ã§ã™ã€‚ +数分後ã«ã‚„り直ã™ã‹ã€ã¾ãŸã¯æ··é›‘ã—ã¦ã„ãªã„ä»–ã®åœ°åŸŸã‚’ãŠè©¦ã—ãã ã•ã„。 + </notification> + <notification name="expired_tport"> + 申ã—訳ã”ã–ã„ã¾ã›ã‚“。システムã¯ãƒ†ãƒ¬ãƒãƒ¼ãƒˆãƒ»ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’時間ã©ãŠã‚Šã«å®Œäº†ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚数分後ã«ã‚„り直ã—ã¦ãã ã•ã„。 + </notification> + <notification name="expired_region_handoff"> + 申ã—訳ã”ã–ã„ã¾ã›ã‚“。システムã¯åœ°åŸŸé–“ã®ç§»å‹•を時間ã©ãŠã‚Šã«å®Œäº†ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ +数分後ã«ã‚„り直ã—ã¦ãã ã•ã„。 + </notification> + <notification name="no_host"> + テレãƒãƒ¼ãƒˆç›®çš„地を見ã¤ã‘られã¾ã›ã‚“。目的地ãŒä¸€æ™‚çš„ã«åˆ©ç”¨ã§ããªã„状態ã‹ã€ã¾ãŸã¯ã™ã§ã«æ¶ˆæ»…ã—ã¦ã„ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚数分後ã«ã‚„り直ã—ã¦ãã ã•ã„。 + </notification> + <notification name="no_inventory_host"> + æŒã¡ç‰©ã‚·ã‚¹ãƒ†ãƒ ã¯ç¾åœ¨åˆ©ç”¨ã§ãã¾ã›ã‚“。 + </notification> + <notification name="CannotSetLandOwnerNothingSelected"> + 土地所有者è¨å®šãŒã§ãã¾ã›ã‚“: +区画ãŒé¸å®šã•れã¦ã„ã¾ã›ã‚“。 + </notification> + <notification name="CannotSetLandOwnerMultipleRegions"> + 複数ã®åœ°åŸŸãŒé¸æŠžã•れãŸãŸã‚〠+åœŸåœ°ã®æ‰€æœ‰æ¨©ã‚’å–å¾—ã§ãã¾ã›ã‚“。 +é¸æŠžã™ã‚‹é¢ç©ã‚’å°ã•ãã—ã¦ã€ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 + </notification> + <notification name="ForceOwnerAuctionWarning"> + ã“ã®åŒºç”»ã¯ã‚ªãƒ¼ã‚¯ã‚·ãƒ§ãƒ³ã«å‡ºå“ã•れã¦ã„ã¾ã™ã€‚ +åŒºç”»ã®æ‰€æœ‰æ¨©ã‚’å–å¾—ã™ã‚‹ã¨ã‚ªãƒ¼ã‚¯ã‚·ãƒ§ãƒ³ãŒç„¡åйã«ãªã‚Šã€ +å…¥æœãŒé–‹å§‹ã—ã¦ã„ãŸã‚‰ä¸æº€ã«æ€ã†ä½äººãŒå‡ºã¦ãã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“。 +所有権をå–å¾—ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="CannotContentifyNothingSelected"> + コンテンツ化ã¯ä¸å¯èƒ½ã§ã™ï¼š +区画ãŒé¸å®šã•れã¦ã„ã¾ã›ã‚“。 + </notification> + <notification name="CannotContentifyNoRegion"> + コンテンツ化ã¯ä¸å¯èƒ½ã§ã™ï¼š +土地ãŒé¸æŠžã•れã¦ã„ã¾ã›ã‚“。 + </notification> + <notification name="CannotReleaseLandNothingSelected"> + åœŸåœ°ã‚’ç ´æ£„ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“: +区画ãŒé¸å®šã•れã¦ã„ã¾ã›ã‚“。 + </notification> + <notification name="CannotReleaseLandNoRegion"> + åœŸåœ°ã‚’ç ´æ£„ã§ãã¾ã›ã‚“: +地域ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。 + </notification> + <notification name="CannotBuyLandNothingSelected"> + 土地を購入ã§ãã¾ã›ã‚“: +区画ãŒé¸å®šã•れã¦ã„ã¾ã›ã‚“。 + </notification> + <notification name="CannotBuyLandNoRegion"> + 土地を購入ã§ãã¾ã›ã‚“: +ã“ã®åœŸåœ°ãŒã‚る地域を見ã¤ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ + </notification> + <notification name="CannotCloseFloaterBuyLand"> + Second Lifeã«ã‚ˆã‚‹ã€ +ã“ã®å–引ã®è¦‹ç©ã‚ŠãŒå®Œäº†ã™ã‚‹ã¾ã§ã€ŒåœŸåœ°ã‚’購入ã€ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’é–‰ã˜ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 + </notification> + <notification name="CannotDeedLandNothingSelected"> + åœŸåœ°ã‚’è²æ¸¡ã§ãã¾ã›ã‚“: +区画ãŒé¸å®šã•れã¦ã„ã¾ã›ã‚“。 + </notification> + <notification name="CannotDeedLandNoGroup"> + åœŸåœ°ã‚’è²æ¸¡ã§ãã¾ã›ã‚“: +グループãŒé¸æŠžã•れã¦ã„ã¾ã›ã‚“。 + </notification> + <notification name="CannotDeedLandNoRegion"> + åœŸåœ°ã‚’è²æ¸¡ã§ãã¾ã›ã‚“: +ã“ã®åœŸåœ°ãŒã‚る地域ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。 +「ツールã€ï¼žã€Œãƒã‚°ã‚’å ±å‘Šã™ã‚‹ã€ã‚’使ã£ã¦å ±å‘Šã—ã¦ãã ã•ã„。 + </notification> + <notification name="CannotDeedLandMultipleSelected"> + åœŸåœ°ã‚’è²æ¸¡ã§ãã¾ã›ã‚“: +複数ã®åŒºç”»ãŒé¸æŠžã•れã¦ã„ã¾ã™ã€‚ + +ã“れより1ã¤ã®åŒºç”»ã‚’é¸æŠžã—ã¦ãã ã•ã„。 + </notification> + <notification name="ParcelCanPlayMedia"> + ã“ã“ã§ã¯ã‚¹ãƒˆãƒªãƒ¼ãƒŸãƒ³ã‚°ãƒ»ãƒ¡ãƒ‡ã‚£ã‚¢å†ç”ŸãŒå¯èƒ½ã§ã™ã€‚ +メディアã®ã‚¹ãƒˆãƒªãƒ¼ãƒŸãƒ³ã‚°ã«ã¯ã€é«˜é€Ÿãªã‚¤ãƒ³ã‚¿ãƒ¼ãƒãƒƒãƒˆæŽ¥ç¶šç’°å¢ƒãŒå¿…è¦ã§ã™ã€‚ + +利用å¯èƒ½ã«ãªã£ãŸã‚‰å†ç”Ÿã—ã¾ã™ã‹ï¼Ÿ +(ã“ã®ã‚ªãƒ—ションã¯ã€ã€Œç’°å¢ƒè¨å®šã€ï¼žã€ŒéŸ³å£°ã¨ãƒ“デオã€ã§å¾Œã‹ã‚‰ã§ã‚‚変更ã§ãã¾ã™ï¼‰ + <usetemplate name="okcancelbuttons" notext="無効化" yestext="メディアをå†ç”Ÿ"/> + </notification> + <notification name="CannotDeedLandWaitingForServer"> + åœŸåœ°ã‚’è²æ¸¡ã§ãã¾ã›ã‚“: +サーãƒãƒ¼ã‹ã‚‰ã®æ‰€æœ‰æ¨©æƒ…å ±ã‚’å¾…ã£ã¦ã„ã¾ã™ã€‚ + +å†åº¦ã€è©¦ã¿ã¦ãã ã•ã„。 + </notification> + <notification name="CannotDeedLandNoTransfer"> + åœŸåœ°ã‚’è²æ¸¡ã§ãã¾ã›ã‚“: +ã“ã®åœ°åŸŸ [REGION] ã§ã¯åœŸåœ°ã®è²æ¸¡ãŒè¨±ã•れã¦ã„ã¾ã›ã‚“。 + </notification> + <notification name="CannotReleaseLandWatingForServer"> + åœŸåœ°ã‚’ç ´æ£„ã§ãã¾ã›ã‚“: +サーãƒãƒ¼ãŒåŒºç”»æƒ…å ±ã‚’æ›´æ–°ã™ã‚‹ã®ã‚’å¾…ã£ã¦ã„ã¾ã™ã€‚ + +ã‚‚ã†å°‘ã—後ã§ã‚„り直ã—ã¦ãã ã•ã„。 + </notification> + <notification name="CannotReleaseLandSelected"> + åœŸåœ°ã‚’ç ´æ£„ã§ãã¾ã›ã‚“: +ã‚ãªãŸã¯ã€é¸æŠžã—ãŸã™ã¹ã¦ã®åŒºç”»ã‚’所有ã—ã¦ã„ã¾ã›ã‚“。 + +1ã¤ã®åŒºç”»ã‚’é¸æŠžã—ã¦ãã ã•ã„。 + </notification> + <notification name="CannotReleaseLandDontOwn"> + åœŸåœ°ã‚’ç ´æ£„ã§ãã¾ã›ã‚“: +ã‚ãªãŸã¯ã“ã®åœŸåœ°ã‚’手放ã™ã“ã¨ã‚’許å¯ã•れã¦ã„ã¾ã›ã‚“。 +ã‚ãªãŸã®åŒºç”»ã¯ç·‘色ã§è¡¨ç¤ºã•れã¦ã„ã¾ã™ã€‚ + </notification> + <notification name="CannotReleaseLandRegionNotFound"> + åœŸåœ°ã‚’ç ´æ£„ã§ãã¾ã›ã‚“: +ã“ã®åœŸåœ°ãŒã‚る地域ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。 + +「ツールã€ï¼žã€Œãƒã‚°ã‚’å ±å‘Šã™ã‚‹ã€ã‚’使ã£ã¦å ±å‘Šã—ã¦ãã ã•ã„。 + </notification> + <notification name="CannotReleaseLandNoTransfer"> + åœŸåœ°ã‚’ç ´æ£„ã§ãã¾ã›ã‚“: +ã“ã® [REGION] ã§ã¯åœŸåœ°ã®è²æ¸¡ãŒè¨±ã•れã¦ã„ã¾ã›ã‚“。 + </notification> + <notification name="CannotReleaseLandPartialSelection"> + åœŸåœ°ã‚’ç ´æ£„ã§ãã¾ã›ã‚“: +åŒºç”»å…¨ä½“ã‚’é¸æŠžã—ã¦ç ´æ£„ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ + +åŒºç”»å…¨ä½“ã‚’é¸æŠžã™ã‚‹ã‹ã€ã¾ãŸã¯ã€ã¾ãšæœ€åˆã«åŒºç”»ã‚’分割ã—ã¦ãã ã•ã„。 + </notification> + <notification name="ReleaseLandWarning"> + ã‚ãªãŸã¯ã€[AREA]平方メートルã®åœŸåœ°ã‚’ç ´æ£„ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚ +ã“ã®åŒºç”»ã‚’ç ´æ£„ã™ã‚‹ã¨ã‚ãªãŸã®åœŸåœ°ã§ã¯ãªããªã‚Šã¾ã™ãŒã€ +L$ã¯è¿”金ã•れã¾ã›ã‚“。 + +åœŸåœ°ã‚’ç ´æ£„ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="CannotDivideLandNothingSelected"> + 土地を分割ã§ãã¾ã›ã‚“: + +区画ãŒé¸å®šã•れã¦ã„ã¾ã›ã‚“。 + </notification> + <notification name="CannotDivideLandPartialSelection"> + 土地を分割ã§ãã¾ã›ã‚“: + +区画全体ãŒé¸æŠžã•れã¦ã„ã¾ã™ã€‚ +区画ã®ä¸€éƒ¨ã‚’é¸æŠžã—ã¦ãã ã•ã„。 + </notification> + <notification name="LandDivideWarning"> + ã“ã®åœŸåœ°ã‚’分割ã™ã‚‹ã¨ã€2ã¤ã®åŒºç”»ã«åˆ¥ã‚Œã¾ã™ã€‚ +区画ã”ã¨ã®è¨å®šãŒå¯èƒ½ã«ãªã‚Šã¾ã™ã€‚ ã“ã®æ“作を行ã†ã¨ã€ä¸€éƒ¨ã®è¨å®šãŒãƒ‡ãƒ•ォルトã«ãƒªã‚»ãƒƒãƒˆã•れã¾ã™ã€‚ + +土地ã®åˆ†å‰²æ“作を続行ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="CannotDivideLandNoRegion"> + 土地を分割ã§ãã¾ã›ã‚“: +ã“ã®åœŸåœ°ãŒã‚る地域ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。 + +「ツールã€ï¼žã€Œãƒã‚°ã‚’å ±å‘Šã™ã‚‹ã€ã‚’使ã£ã¦å ±å‘Šã—ã¦ãã ã•ã„。 + </notification> + <notification name="CannotJoinLandNoRegion"> + 土地を統åˆã§ãã¾ã›ã‚“: +ã“ã®åœŸåœ°ãŒã‚る地域ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。 + +「ツールã€ï¼žã€Œãƒã‚°ã‚’å ±å‘Šã™ã‚‹ã€ã‚’使ã£ã¦å ±å‘Šã—ã¦ãã ã•ã„。 + </notification> + <notification name="CannotJoinLandNothingSelected"> + 土地を統åˆã§ãã¾ã›ã‚“ã§ã—ãŸï¼š +区画ãŒé¸å®šã•れã¦ã„ã¾ã›ã‚“。 + </notification> + <notification name="CannotJoinLandEntireParcelSelected"> + 土地を統åˆã§ãã¾ã›ã‚“: +1ã¤ã®åŒºç”»ã—ã‹é¸æŠžã•れã¦ã„ã¾ã›ã‚“。 + +両方ã®åŒºç”»ã‚’ã¾ãŸã„ã§åœŸåœ°ã‚’é¸æŠžã—ã¦ãã ã•ã„。 + </notification> + <notification name="CannotJoinLandSelection"> + 土地を統åˆã§ãã¾ã›ã‚“: +1ã¤ä»¥ä¸Šã®åŒºç”»ã‚’é¸æŠžã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ + +両方ã®åŒºç”»ã‚’ã¾ãŸã„ã§åœŸåœ°ã‚’é¸æŠžã—ã¦ãã ã•ã„。 + </notification> + <notification name="JoinLandWarning"> + ã“ã®åœŸåœ°ã‚’çµ±åˆã™ã‚‹ã¨ã€é¸æŠžã•れãŸé•·æ–¹å½¢ã«äº¤å·®ã™ã‚‹ +å…¨ã¦ã®åŒºç”»ã‚’基ã«ã—ã¦1ã¤ã®å¤§ããªåŒºç”»ãŒä½œæˆã•れã¾ã™ã€‚ +æ–°ã—ã„区画ã®åå‰ã¨ã‚ªãƒ—ションをå†è¨å®šã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ + +土地を統åˆã—ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="ShowOwnersHelp"> + オーナーを表示: +区画ã«è‰²ã‚’付ã‘ã¦ã‚ªãƒ¼ãƒŠãƒ¼ã®ç¨®é¡žã‚’表示 + +ç·‘ = ã‚ãªãŸã®åœŸåœ° +アクア = ã‚ãªãŸã®ã‚°ãƒ«ãƒ¼ãƒ—所有地 +赤 = ä»–äººãŒæ‰€æœ‰ã™ã‚‹åœŸåœ° +黄色 = 売り出ã—ä¸ +ç´« = オークション +グレー = パブリック + </notification> + <notification name="ConfirmNotecardSave"> + ã“ã®ã‚¢ã‚¤ãƒ†ãƒ をコピーã€è¡¨ç¤ºã™ã‚‹å‰ã«ã€ãƒŽãƒ¼ãƒˆã‚«ãƒ¼ãƒ‰ã®ä¿å˜ãŒå¿…è¦ã§ã™ã€‚ ä¿å˜ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="ConfirmItemCopy"> + ã“ã®ã‚¢ã‚¤ãƒ†ãƒ ã‚’ã‚ãªãŸã®æŒã¡ç‰©ã«ã‚³ãƒ”ーã—ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="コピー"/> + </notification> + <notification name="ResolutionSwitchFail"> + è§£åƒåº¦ã‚’ [RESX]x[RESY]ã«åˆ‡ã‚Šæ›¿ãˆã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ + </notification> + <notification name="ErrorUndefinedGrasses"> + ã‚¨ãƒ©ãƒ¼ï¼šæœªå®šç¾©ã®æ¤ç‰©ï¼š[SPECIES] + </notification> + <notification name="ErrorUndefinedTrees"> + ã‚¨ãƒ©ãƒ¼ï¼šæœªå®šç¾©ã®æ¨¹æœ¨ï¼š[SPECIES] + </notification> + <notification name="CannotSaveWearableOutOfSpace"> + 「[NAME]ã€ã‚’æœã®ãƒ•ァイルã«ä¿å˜ã§ãã¾ã›ã‚“。 コンピューター㮠+ディスクスペースを少ã—増やã—ã¦ã‹ã‚‰ã€ã‚‚ã†ä¸€åº¦ +ä¿å˜ã—ã¦ã¿ã¦ãã ã•ã„。 + </notification> + <notification name="CannotSaveToAssetStore"> + [NAME]ã‚’ä¸å¤®è³‡ç”£æ ¼ç´åº«ã«ä¿å˜ã§ãã¾ã›ã‚“。 +ã“れã¯ä¸€æ™‚çš„ãªä¸å…·åˆã§ã™ã€‚ +æœé£¾å“ãªã©ã‚’カスタマイズã—ã€æ•°åˆ†å¾Œã«ã‚‚ã†ä¸€åº¦ä¿å˜ã—ã¦ãã ã•ã„。 + +ã“ã®å•題ãŒç¶šãよã†ãªã‚‰ã€ã€Œãƒ„ールã€ï¼žã€Œãƒã‚°ã‚’å ±å‘Šã™ã‚‹ã€ã‚’クリックã—ã€ãŠä½¿ã„ã®ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯è¨å®šã®è©³ç´°ã‚’å ±å‘Šã—ã¦ãã ã•ã„。 + </notification> + <notification name="YouHaveBeenLoggedOut"> + ã‚ãªãŸã¯[SECOND_LIFE]ã‹ã‚‰ãƒã‚°ã‚¢ã‚¦ãƒˆã•れã¾ã—ãŸã€‚ + [MESSAGE] +「IMã¨ãƒãƒ£ãƒƒãƒˆã‚’表示ã€ã‚’クリックã™ã‚‹ã¨ã€ +ç¾åœ¨ã‚ã‚‹IMã¨ãƒãƒ£ãƒƒãƒˆã‚’確èªã§ãã¾ã™ã€‚ +確èªã—ãªã„å ´åˆã¯ã€Œçµ‚了ã€ã‚’クリックã—〠+ã™ãã«[SECOND_LIFE]を終了ã—ã¦ãã ã•ã„。 + <usetemplate name="okcancelbuttons" notext="終了" yestext="IMã¨ãƒãƒ£ãƒƒãƒˆã‚’表示"/> + </notification> + <notification name="OnlyOfficerCanBuyLand"> + グループ用ã®åœŸåœ°ã®è³¼å…¥ãŒã§ãã¾ã›ã‚“: +ã‚ãªãŸã«ã¯ã‚¢ã‚¯ãƒ†ã‚£ãƒ–ãªã‚°ãƒ«ãƒ¼ãƒ—ã®ãŸã‚ã«åœŸåœ°ã‚’購入ã™ã‚‹æ¨©é™ãŒã‚りã¾ã›ã‚“。 + </notification> + <notification label="ãƒ•ãƒ¬ãƒ³ãƒ‰ã‚’è¿½åŠ " name="AddFriend"> + フレンドã¨ã—ã¦è¿½åŠ ã™ã‚‹ã¨ã€ãŠäº’ã„ã®ç¾åœ¨åœ°ã®åœ°å›³ã¸ã®è¡¨ç¤ºè¨±å¯ã€ã‚ªãƒ³ãƒ©ã‚¤ãƒ³ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹è¡¨ç¤ºã®è¨å®šã‚’ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + +[NAME] ã«ãƒ•レンドシップをé€ã‚Šã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification label="ãƒ•ãƒ¬ãƒ³ãƒ‰ã‚’è¿½åŠ " name="AddFriendWithMessage"> + フレンドã¨ã—ã¦è¿½åŠ ã™ã‚‹ã¨ã€ãŠäº’ã„ã®ç¾åœ¨åœ°ã®åœ°å›³ã¸ã®è¡¨ç¤ºè¨±å¯ã€ã‚ªãƒ³ãƒ©ã‚¤ãƒ³ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹è¡¨ç¤ºã®è¨å®šã‚’ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + +[NAME] ã«ãƒ•レンドシップã®ã‚ªãƒ•ァーをã—ã¾ã™ã‹ï¼Ÿ + <form name="form"> + <input name="message" type="text"> + フレンドã¨ã—ã¦ç™»éŒ²ã—ã¦ãれã¾ã™ã‹ï¼Ÿ + </input> + <button name="Offer" text="OK"/> + <button name="Cancel" text="ã‚ャンセル"/> + </form> + </notification> + <notification name="RemoveFromFriends"> + [FIRST_NAME] [LAST_NAME]をフレンドリストã‹ã‚‰å‰Šé™¤ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="RemoveMultipleFromFriends"> + フレンドリストã‹ã‚‰è¤‡æ•°ã®ãƒ•レンドを削除ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="GodDeleteAllScriptedPublicObjectsByUser"> + **[AVATAR_NAME]** +所有ã®ã™ã¹ã¦ã®ã‚¹ã‚¯ãƒªãƒ—ト・オブジェクトをã“ã®ã‚·ãƒ 内ã®ä»–ã®ã™ã¹ã¦ã®åœŸåœ°ã‹ã‚‰å‰Šé™¤ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚æ“作を続行ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="GodDeleteAllScriptedObjectsByUser"> + **[AVATAR_NAME]** +所有ã®ã™ã¹ã¦ã®ã‚¹ã‚¯ãƒªãƒ—ト・オブジェクトをã“ã®ã‚·ãƒ 内ã®ã™ã¹ã¦ã®åœŸåœ°ã‹ã‚‰å‰Šé™¤ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚æ“作を続行ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="GodDeleteAllObjectsByUser"> + **[AVATAR_NAME]** +所有ã®ã™ã¹ã¦ã®ã‚ªãƒ–ジェクト(スクリプト・オブジェクトã¨éžã‚¹ã‚¯ãƒªãƒ—ト・オブジェクト)を +ã“ã®ã‚·ãƒ 内ã®ã™ã¹ã¦ã®åœŸåœ°ã‹ã‚‰å‰Šé™¤ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚æ“作を続行ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="BlankClassifiedName"> + クラシファイドã«åå‰ã‚’指定ã—ã¦ãã ã•ã„。 + </notification> + <notification name="MinClassifiedPrice"> + åºƒå‘Šæ–™ã®æ”¯æ‰•ã„金é¡ã¯ã€Lã¨[MIN_PRICE]ãŒä¸‹é™ã§ã™ã€‚ + +金é¡ã‚’増やã—ã¦ãã ã•ã„。 + </notification> + <notification name="ConfirmObjectDeleteLock"> + é¸æŠžã—ãŸã‚¢ã‚¤ãƒ†ãƒ ã®1ã¤ä»¥ä¸ŠãŒãƒãƒƒã‚¯ã•れã¦ã„ã¾ã™ã€‚ + +本当ã«ã“れらã®ã‚¢ã‚¤ãƒ†ãƒ ã®å‰Šé™¤ã‚’ç¶šã‘ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="ã‚ャンセル" yestext="OK"/> + </notification> + <notification name="ConfirmObjectDeleteNoCopy"> + é¸æŠžã—ãŸã‚¢ã‚¤ãƒ†ãƒ ã®1ã¤ä»¥ä¸ŠãŒã‚³ãƒ”ーã§ãã¾ã›ã‚“。 + +本当ã«ã“れらã®ã‚¢ã‚¤ãƒ†ãƒ ã®å‰Šé™¤ã‚’ç¶šã‘ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="ã‚ャンセル" yestext="OK"/> + </notification> + <notification name="ConfirmObjectDeleteNoOwn"> + é¸æŠžã—ãŸã‚¢ã‚¤ãƒ†ãƒ ã®1ã¤ä»¥ä¸Šã‚’ã€ã‚ãªãŸã¯æ‰€æœ‰ã—ã¦ã„ã¾ã›ã‚“。 + +本当ã«ã“れらã®ã‚¢ã‚¤ãƒ†ãƒ ã®å‰Šé™¤ã‚’ç¶šã‘ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="ã‚ャンセル" yestext="OK"/> + </notification> + <notification name="ConfirmObjectDeleteLockNoCopy"> + 一ã¤ä»¥ä¸Šã®ã‚ªãƒ–ジェクトãŒãƒãƒƒã‚¯ã•れã¦ã„ã¾ã™ã€‚ +一ã¤ä»¥ä¸Šã®ã‚ªãƒ–ジェクトãŒã‚³ãƒ”ーã§ãã¾ã›ã‚“。 + +本当ã«ã“れらã®ã‚¢ã‚¤ãƒ†ãƒ ã®å‰Šé™¤ã‚’ç¶šã‘ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="ã‚ャンセル" yestext="OK"/> + </notification> + <notification name="ConfirmObjectDeleteLockNoOwn"> + 一ã¤ä»¥ä¸Šã®ã‚ªãƒ–ジェクトãŒãƒãƒƒã‚¯ã•れã¦ã„ã¾ã™ã€‚ +1ã¤ä»¥ä¸Šã®ã‚ªãƒ–ジェクトをã€ã‚ãªãŸã¯æ‰€æœ‰ã—ã¦ã„ã¾ã›ã‚“。 + +本当ã«ã“れらã®ã‚¢ã‚¤ãƒ†ãƒ ã®å‰Šé™¤ã‚’ç¶šã‘ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="ã‚ャンセル" yestext="OK"/> + </notification> + <notification name="ConfirmObjectDeleteNoCopyNoOwn"> + 一ã¤ä»¥ä¸Šã®ã‚ªãƒ–ジェクトãŒã‚³ãƒ”ーã§ãã¾ã›ã‚“。 +1ã¤ä»¥ä¸Šã®ã‚ªãƒ–ジェクトをã€ã‚ãªãŸã¯æ‰€æœ‰ã—ã¦ã„ã¾ã›ã‚“。 + +本当ã«ã“れらã®ã‚¢ã‚¤ãƒ†ãƒ ã®å‰Šé™¤ã‚’ç¶šã‘ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="ã‚ャンセル" yestext="OK"/> + </notification> + <notification name="ConfirmObjectDeleteLockNoCopyNoOwn"> + 一ã¤ä»¥ä¸Šã®ã‚ªãƒ–ジェクトãŒãƒãƒƒã‚¯ã•れã¦ã„ã¾ã™ã€‚ +一ã¤ä»¥ä¸Šã®ã‚ªãƒ–ジェクトãŒã‚³ãƒ”ーã§ãã¾ã›ã‚“。 +1ã¤ä»¥ä¸Šã®ã‚ªãƒ–ジェクトをã€ã‚ãªãŸã¯æ‰€æœ‰ã—ã¦ã„ã¾ã›ã‚“。 + +本当ã«ã“れらã®ã‚¢ã‚¤ãƒ†ãƒ ã®å‰Šé™¤ã‚’ç¶šã‘ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="ã‚ャンセル" yestext="OK"/> + </notification> + <notification name="ConfirmObjectTakeLock"> + 一ã¤ä»¥ä¸Šã®ã‚ªãƒ–ジェクトãŒãƒãƒƒã‚¯ã•れã¦ã„ã¾ã™ã€‚ + +ã“れらã®ã‚¢ã‚¤ãƒ†ãƒ ã®å–å¾—ã‚’ç¶šã‘ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="ã‚ャンセル" yestext="OK"/> + </notification> + <notification name="ConfirmObjectTakeNoOwn"> + å–å¾—ã—よã†ã¨ã—ã¦ã„るオブジェクトã«ã¯ã€ã‚ãªãŸã®æ‰€æœ‰ç‰©ã§ãªã„オブジェクトãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚ +ã‚ãªãŸã®æ‰€æœ‰ç‰©ã§ã¯ãªã„オブジェクトをå–å¾—ã™ã‚‹ã¨ã€æ¬¡ã®ã‚ªãƒ¼ãƒŠãƒ¼ã®æ¨©é™ãŒãã®ã‚ªãƒ–ジェクトã«é©ç”¨ã•れã¾ã™ã€‚ +ãã®ãŸã‚ã€å°†æ¥ã€å¤‰æ›´ã‚„コピーã®èƒ½åŠ›ãŒåˆ¶é™ã•れるå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ + +ã“れらã®ã‚¢ã‚¤ãƒ†ãƒ ã®å–å¾—ã‚’ç¶šã‘ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="ã‚ャンセル" yestext="OK"/> + </notification> + <notification name="ConfirmObjectTakeLockNoOwn"> + 1ã¤ä»¥ä¸Šã®ã‚ªãƒ–ジェクトãŒãƒãƒƒã‚¯ã•れã¦ã„ã¾ã™ã€‚ +å–å¾—ã—よã†ã¨ã—ã¦ã„るオブジェクトã«ã¯ã€ã‚ãªãŸã®æ‰€æœ‰ç‰©ã§ãªã„オブジェクトãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚ +ã‚ãªãŸã®æ‰€æœ‰ç‰©ã§ã¯ãªã„オブジェクトをå–å¾—ã™ã‚‹ã¨ã€æ¬¡ã®ã‚ªãƒ¼ãƒŠãƒ¼ã®æ¨©é™ãŒãã®ã‚ªãƒ–ジェクトã«é©ç”¨ã•れã¾ã™ã€‚ +ãã®ãŸã‚ã€å°†æ¥ã€å¤‰æ›´ã‚„コピーã®èƒ½åŠ›ãŒåˆ¶é™ã•れるå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ +ã“ã®é¸æŠžå†…容ã®ã¾ã¾ã§ç¶šè¡Œã™ã‚‹ã“ã¨ã¯å¯èƒ½ã§ã™ãŒã€ + +ã“れらã®ã‚¢ã‚¤ãƒ†ãƒ ã®å–å¾—ã‚’ç¶šã‘ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="ã‚ャンセル" yestext="OK"/> + </notification> + <notification name="CantBuyLandAcrossMultipleRegions"> + 複数ã®åœ°åŸŸãŒé¸æŠžã•れãŸãŸã‚ã€åœŸåœ°ã‚’購入ã§ãã¾ã›ã‚“。 + +é¸æŠžã™ã‚‹é¢ç©ã‚’å°ã•ãã—ã¦ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 + </notification> + <notification name="DeedLandToGroup"> + ã“ã®åŒºç”»ã®è²æ¸¡ã«éš›ã—ã¦ã¯ã€ +ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ãŒå分ãªåœŸåœ°ã‚¯ãƒ¬ã‚¸ãƒƒãƒˆã‚’ä¿æœ‰ãŠã‚ˆã³ç¶æŒã—ã¦ã„ã‚‹ã“ã¨ãŒå¿…è¦ã§ã™ã€‚ +土地ã®è³¼å…¥ä¾¡æ ¼ã¯ã€ã‚ªãƒ¼ãƒŠãƒ¼ã«è¿”金ã•れã¾ã›ã‚“ã€‚è²æ¸¡ã•れãŸåŒºç”»ãŒå£²ã‚Œã‚‹ã¨ã€è²©å£²ä¾¡æ ¼ã¯ã‚°ãƒ«ãƒ¼ãƒ—・メンãƒãƒ¼ã«å‡ç‰ã«åˆ†é…ã•れã¾ã™ã€‚ + +ã“ã®[AREA]平方メートルã®åœŸåœ°ã‚’ã€ã‚°ãƒ«ãƒ¼ãƒ— +「[GROUP_NAME]ã€ã«è²æ¸¡ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="DeedLandToGroupWithContribution"> + ã“ã®åŒºç”»ã®è²æ¸¡ã«éš›ã—ã¦ã¯ã€ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—㌠+å分ãªåœŸåœ°ã‚¯ãƒ¬ã‚¸ãƒƒãƒˆã‚’ä¿æœ‰ãŠã‚ˆã³ç¶æŒã—ã¦ã„ã‚‹ã“ã¨ãŒå¿…è¦ã§ã™ã€‚ +ã“ã®è²æ¸¡ã«ã‚ˆã‚Šã€ +「[FIRST_NAME] [LAST_NAME]ã€ã‹ã‚‰ +グループã«å¯¾ã—ã¦åœŸåœ°ãŒåŒæ™‚ã«æä¾›ã•れã¾ã™ã€‚ +土地ã®è³¼å…¥ä¾¡æ ¼ã¯ã€ã‚ªãƒ¼ãƒŠãƒ¼ã«è¿”金ã•れã¾ã›ã‚“。 +è²æ¸¡ã•れãŸåŒºç”»ãŒå£²ã‚Œã‚‹ã¨ã€è²©å£²æ–™é‡‘ã¯ã‚°ãƒ«ãƒ¼ãƒ—・メンãƒãƒ¼ã«å‡ç‰ã«åˆ†é…ã•れã¾ã™ã€‚ + +ã“ã®[AREA]平方メートルã®åœŸåœ°ã‚’ã€ã‚°ãƒ«ãƒ¼ãƒ—「[GROUP_NAME]ã€ã«è²æ¸¡ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="DisplaySetToSafe"> + -safeオプションを指定ã—ãŸã®ã§ã€ +表示è¨å®šã¯ã‚»ãƒ¼ãƒ•・レベルã«è¨å®šã•れã¦ã„ã¾ã™ã€‚ + </notification> + <notification name="DisplaySetToRecommended"> + 表示è¨å®šã¯ã€ã‚ãªãŸã®ã‚·ã‚¹ãƒ†ãƒ æ§‹æˆã« +基ã¥ã„ã¦æŽ¨å¥¨ã•れãŸãƒ¬ãƒ™ãƒ«ã«è¨å®šã•れã¦ã„ã¾ã™ã€‚ + </notification> + <notification name="ErrorMessage"> + [ERROR_MESSAGE] + </notification> + <notification name="AvatarMoved"> + ã‚ãªãŸãŒè¨ªã‚ŒãŸã„[TYPE]ã®ãƒã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã¯ç¾åœ¨ã”利用ã§ãã¾ã›ã‚“。 [HELP] +è¿‘ãã®åœ°åŸŸã«ç§»å‹•ã—ã¾ã—ãŸã€‚ + </notification> + <notification name="ClothingLoading"> + ã‚ãªãŸã®æœã‚’ダウンãƒãƒ¼ãƒ‰ä¸ã§ã™ã€‚ +通常ã©ãŠã‚Šã«[SECOND_LIFE]を使ãˆã€ +ä»–ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚‚ã‚ãªãŸã‚’æ£å¸¸ã«è¦‹ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + <form name="form"> + <ignore name="ignore" text="æœã®ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ã«é•·ã„時間ãŒã‹ã‹ã‚‹å ´åˆ"/> + </form> + </notification> + <notification name="FirstRun"> + [SECOND_LIFE]ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ãŒå®Œäº†ã—ã¾ã—ãŸã€‚ + +[SECOND_LIFE] ã®ä½¿ç”¨ãŒåˆã‚ã¦ã®æ–¹ã¯ã€ +ãƒã‚°ã‚¤ãƒ³å‰ã«ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã®ä½œæˆãŒå¿…è¦ã§ã™ã€‚ +www.secondlife.comã«ç§»å‹•ã—ã€æ–°è¦ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã®ä½œæˆã‚’行ã„ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="続行" yestext="æ–°è¦ã‚¢ã‚«ã‚¦ãƒ³ãƒˆ..."/> + </notification> + <notification name="LoginPacketNeverReceived"> + 接続ã«å•題ãŒç”Ÿã˜ã¦ã„ã¾ã™ã€‚ ã‚ãªãŸã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒãƒƒãƒˆæŽ¥ç¶šã€ã¾ãŸã¯Second Life サーãƒãƒ¼ã«å•題ãŒã‚ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ + +インターãƒãƒƒãƒˆæŽ¥ç¶šã‚’確èªã—ã¦æ•°åˆ†å¾Œã«ã‚‚ã†ä¸€åº¦è©¦ã¿ã‚‹ã‹ã€ã€Œãƒ˜ãƒ«ãƒ—ã€ã‚’クリックã—ã¦å½“社ã®ã‚µãƒãƒ¼ãƒˆã‚µã‚¤ãƒˆã«æŽ¥ç¶šã—ã¦ãã ã•ã„。ã¾ãŸã¯ã€ã€Œãƒ†ãƒ¬ãƒãƒ¼ãƒˆã€ã‚’クリックã—ã¦ãƒ›ãƒ¼ãƒ ã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã—ã¦ã¿ã¦ãã ã•ã„。 + <form name="form"> + <button name="OK" text="OK"/> + <button name="Help" text="ヘルプ"/> + <button name="Teleport" text="テレãƒãƒ¼ãƒˆ"/> + </form> + </notification> + <notification name="WelcomeChooseSex"> + ã¾ã‚‚ãªãã‚ãªãŸã®ã‚¢ãƒã‚¿ãƒ¼ãŒè¡¨ç¤ºã•れã¾ã™ã€‚ + +矢å°ã‚ーを使用ã—ã¦æ©ãã¾ã™ã€‚ +ヘルプãŒå¿…è¦ãªã¨ãã‚„[SECOND_LIFE]ã«ã¤ã„ã¦çŸ¥ã‚ŠãŸã„ã¨ãã¯ã€ +F1ã‚ーを押ã—ã¦ãã ã•ã„。 +男性ã‚ã‚‹ã„ã¯å¥³æ€§ã®ã‚¢ãƒã‚¿ãƒ¼ã‚’é¸æŠžã—ã¦ãã ã•ã„。 +ã‚ãªãŸã®æ±ºå®šã¯å¾Œã§å¤‰æ›´ã§ãã¾ã™ã€‚ + <usetemplate name="okcancelbuttons" notext="女性" yestext="男性"/> + </notification> + <notification name="NotEnoughCurrency"> + [NAME] L$[PRICE] 残高ä¸è¶³ã®ãŸã‚実行ä¸å¯ã§ã™ã€‚ + </notification> + <notification name="GrantedModifyRights"> + ã‚ãªãŸã«ã¯ã€ +[FIRST_NAME] [LAST_NAME] +ã®ã‚ªãƒ–ジェクトを修æ£ã™ã‚‹æ¨©é™ãŒä¸Žãˆã‚‰ã‚Œã¦ã„ã¾ã™ã€‚ + </notification> + <notification name="RevokedModifyRights"> + [FIRST_NAME] [LAST_NAME] +ã®ã‚ªãƒ–ジェクトを修æ£ã™ã‚‹æ¨©é™ãŒå–り消ã•れã¾ã—ãŸã€‚ + </notification> + <notification name="FlushMapVisibilityCaches"> + ã“ã®æ‰‹é †ã¯ã€ã“ã®åœ°åŸŸã®åœ°å›³ã®ã‚ャッシュを消去ã—ã¾ã™ã€‚ +ã“れãŒä¾¿åˆ©ãªã®ã¯ãƒ‡ãƒãƒƒã‚°æ™‚ã®ã¿ã§ã™ã€‚ +(作æˆä¸ã¯5分間経ã¤ã¨ã€å…¨å“¡ã®åœ°å›³ãŒå†åº¦ãƒã‚°ã‚¤ãƒ³å¾Œã« +æ›´æ–°ã•れã¾ã™ï¼‰ + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="BuyOneObjectOnly"> + 一度ã«ä¸€ã¤ä»¥ä¸Šã®ã‚ªãƒ–ジェクトをã¨è²·ã†ã“ã¨ã¯ã§ãã¾ã›ã‚“。 オブジェクトを一ã¤ã ã‘é¸ã‚“ã§ã‚‚ã†ä¸€åº¦ãŠè©¦ã—ãã ã•ã„。 + </notification> + <notification name="OnlyCopyContentsOfSingleItem"> + 一度ã«è¤‡æ•°ã®ã‚¢ã‚¤ãƒ†ãƒ ã®ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã¯ã‚³ãƒ”ーã§ãã¾ã›ã‚“。 +é¸æŠžã™ã‚‹ã‚ªãƒ–ジェクトを1ã¤ã ã‘ã«ã—ã¦ã€ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="KickUsersFromRegion"> + ã“ã®åœ°åŸŸã®å…¨ã¦ã®ä½äººã‚’ホームã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã—ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="EstateObjectReturn"> + [USER_NAME]ãŒæ‰€æœ‰ã—ã¦ã„るオブジェクトを返å´ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="ã‚ャンセル" yestext="OK"/> + </notification> + <notification name="InvalidTerrainBitDepth"> + 地域テクスãƒãƒ£ã‚’è¨å®šã§ãã¾ã›ã‚“ã§ã—ãŸï¼š +地形テクスãƒãƒ£[TEXTURE_NUM]ã¯ã€ç„¡åйã®ãƒ“ット深度[TEXTURE_BIT_DEPTH]ã§ã™ã€‚ + +テクスãƒãƒ£[TEXTURE_NUM]ã‚’24ビット512x512ã‹ãれ以下ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ã¨äº¤æ›ã—ã€ã€Œé©ç”¨ã€ã‚’å†åº¦ã‚¯ãƒªãƒƒã‚¯ã—ã¦ãã ã•ã„。 + </notification> + <notification name="InvalidTerrainSize"> + 地域テクスãƒãƒ£ã‚’è¨å®šã§ãã¾ã›ã‚“ã§ã—ãŸï¼š +地形テクスãƒãƒ£[TEXTURE_NUM]ã¯ã€[TEXTURE_SIZE_X]x[TEXTURE_SIZE_Y]ã§ã¯å¤§ãã™ãŽã¾ã™ã€‚ + +テクスãƒãƒ£[TEXTURE_NUM]ã‚’24ビット512x512ã‹ãれ以下ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ã¨äº¤æ›ã—ã€ã€Œé©ç”¨ã€ã‚’å†åº¦ã‚¯ãƒªãƒƒã‚¯ã—ã¦ãã ã•ã„。 + </notification> + <notification name="RawUploadStarted"> + アップãƒãƒ¼ãƒ‰é–‹å§‹ã€‚ 接続速度ã«ã‚ˆã£ã¦ã¯ã€ +最大2分間ã‹ã‹ã‚Šã¾ã™ã€‚ + </notification> + <notification name="ConfirmBakeTerrain"> + ç¾åœ¨ã®åœ°å½¢ã‚’構築ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚ +ã“ã®æ“作を行ã†ã¨ã€ç¾åœ¨ã®åœ°å½¢ãŒä¸Šæ˜‡ï¼ä¸‹é™ã®åˆ¶é™ç¯„囲ã®ä¸å¿ƒã«ãªã‚Šã€ã€Œå¾©å¸°ã€ãƒ„ールã®ãƒ‡ãƒ•ォルトã«ãªã‚Šã¾ã™ã€‚ +æ“作を続行ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="MaxAllowedAgentOnRegion"> + 許å¯ä½äººã¯ [MAX_AGENTS] 人ã¾ã§ã§ã™ã€‚ + </notification> + <notification name="MaxBannedAgentsOnRegion"> + ç¦æ¢ä½äººã¯[MAX_BANNED]人ã¾ã§ã§ã™ã€‚ + </notification> + <notification name="MaxAgentOnRegionBatch"> + [NUM_ADDED] 個ã®ã‚¨ãƒ¼ã‚¸ã‚§ãƒ³ãƒˆã‚’è¿½åŠ ã—よã†ã¨ã—ã¦å¤±æ•—ã—ã¾ã—ãŸï¼š [MAX_AGENTS] [LIST_TYPE] 制é™ã‚’ [NUM_EXCESS] 個超éŽã—ã¦ã„ã¾ã™ã€‚ + </notification> + <notification name="MaxAllowedGroupsOnRegion"> + 許å¯ã‚°ãƒ«ãƒ¼ãƒ—ã¯[MAX_GROUPS]グループã¾ã§ã§ã™ã€‚ + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="構築ã™ã‚‹"/> + </notification> + <notification name="MaxManagersOnRegion"> + ä¸å‹•産マãƒãƒ¼ã‚¸ãƒ£ãƒ¼ã¯[MAX_MANAGER]人ã¾ã§ã§ã™ã€‚ + </notification> + <notification name="OwnerCanNotBeDenied"> + ä¸å‹•産オーナーをä¸å‹•ç”£ã€Œç¦æ¢ä½äººã€ãƒªã‚¹ãƒˆã«è¿½åŠ ã§ãã¾ã›ã‚“。 + </notification> + <notification name="CanNotChangeAppearanceUntilLoaded"> + æœãŠã‚ˆã³å½¢ãŒãƒãƒ¼ãƒ‰ã•れるã¾ã§ã€å®¹å§¿ã®å¤‰æ›´ã¯ã§ãã¾ã›ã‚“。 + </notification> + <notification name="ClassifiedMustBeAlphanumeric"> + クラシファイド広告ã®åå‰ã¯ã€ã‚¢ãƒ«ãƒ•ァベット㋠+æ•°å—ã§å§‹ã‚ã¾ã™ã€‚ å¥èªç‚¹ã§ã¯å§‹ã‚られã¾ã›ã‚“。 + </notification> + <notification name="CantSetBuyObject"> + オブジェクトãŒè²©å£²å¯¾è±¡ã§ã¯ãªã„ãŸã‚ã€ã‚ªãƒ–ジェクトã®è³¼å…¥ãŒè¨å®šã§ãã¾ã›ã‚“。 +販売対象ã®ã‚ªãƒ–ジェクトをè¨å®šã—ã€ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 + </notification> + <notification name="FinishedRawDownload"> + æœªåŠ å·¥ã®åœ°å½¢ãƒ•ァイルを次ã¸ã¨ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ã—ã¾ã—ãŸï¼š +[DOWNLOAD_PATH]。 + </notification> + <notification name="DownloadWindowsMandatory"> + [SECOND_LIFE]ã®æ–°ã—ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒåˆ©ç”¨å¯èƒ½ã§ã™ã€‚ +[MESSAGE] +[SECOND_LIFE]を使用ã™ã‚‹ãŸã‚ã«ã¯ã€ +ã“ã®ã‚¢ãƒƒãƒ—デートをダウンãƒãƒ¼ãƒ‰ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ + <usetemplate name="okcancelbuttons" notext="終了" yestext="ダウンãƒãƒ¼ãƒ‰"/> + </notification> + <notification name="DownloadWindows"> + [SECOND_LIFE]ã®ã‚¢ãƒƒãƒ—デート・ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒåˆ©ç”¨å¯èƒ½ã§ã™ã€‚ +[MESSAGE] +ã“ã®ã‚¢ãƒƒãƒ—デートã¯å¿…é ˆã§ã¯ã‚りã¾ã›ã‚“ãŒã€ãƒ‘フォーマンスã¨å®‰å®šæ€§ã‚’å‘上ã•ã›ã‚‹ãŸã‚ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹ã“ã¨ã‚’ãŠå‹§ã‚ã—ã¾ã™ã€‚ + <usetemplate name="okcancelbuttons" notext="続行" yestext="ダウンãƒãƒ¼ãƒ‰"/> + </notification> + <notification name="DownloadWindowsReleaseForDownload"> + [SECOND_LIFE]ã®ã‚¢ãƒƒãƒ—デート・ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒåˆ©ç”¨å¯èƒ½ã§ã™ã€‚ +[MESSAGE] +ã“ã®ã‚¢ãƒƒãƒ—デートã¯å¿…é ˆã§ã¯ã‚りã¾ã›ã‚“ãŒã€ãƒ‘フォーマンスã¨å®‰å®šæ€§ã‚’å‘上ã•ã›ã‚‹ãŸã‚ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹ã“ã¨ã‚’ãŠå‹§ã‚ã—ã¾ã™ã€‚ + <usetemplate name="okcancelbuttons" notext="続行" yestext="ダウンãƒãƒ¼ãƒ‰"/> + </notification> + <notification name="DownloadMacMandatory"> + [SECOND_LIFE]ã®æ–°ã—ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒåˆ©ç”¨å¯èƒ½ã§ã™ã€‚ +[MESSAGE] +[SECOND_LIFE]を使用ã™ã‚‹ãŸã‚ã«ã€ +ã“ã®ã‚¢ãƒƒãƒ—デートをダウンãƒãƒ¼ãƒ‰ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ + +アプリケーションãŒã‚るフォルダã«ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="終了" yestext="ダウンãƒãƒ¼ãƒ‰"/> + </notification> + <notification name="DownloadMac"> + [SECOND_LIFE]ã®ã‚¢ãƒƒãƒ—デート・ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒåˆ©ç”¨å¯èƒ½ã§ã™ã€‚ +[MESSAGE] +ã“ã®ã‚¢ãƒƒãƒ—デートã¯å¿…é ˆã§ã¯ã‚りã¾ã›ã‚“ãŒã€ãƒ‘フォーマンスã¨å®‰å®šæ€§ã‚’å‘上ã•ã›ã‚‹ãŸã‚ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹ã“ã¨ã‚’ãŠå‹§ã‚ã—ã¾ã™ã€‚ + +アプリケーションãŒã‚るフォルダã«ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="続行" yestext="ダウンãƒãƒ¼ãƒ‰"/> + </notification> + <notification name="DownloadMacReleaseForDownload"> + [SECOND_LIFE]ã®ã‚¢ãƒƒãƒ—デート・ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒåˆ©ç”¨å¯èƒ½ã§ã™ã€‚ +[MESSAGE] +ã“ã®ã‚¢ãƒƒãƒ—デートã¯å¿…é ˆã§ã¯ã‚りã¾ã›ã‚“ãŒã€ãƒ‘フォーマンスã¨å®‰å®šæ€§ã‚’å‘上ã•ã›ã‚‹ãŸã‚ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹ã“ã¨ã‚’ãŠå‹§ã‚ã—ã¾ã™ã€‚ + +アプリケーションãŒã‚るフォルダã«ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="続行" yestext="ダウンãƒãƒ¼ãƒ‰"/> + </notification> + <notification name="DeedObjectToGroup"> + ã“ã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’è²æ¸¡ã™ã‚‹ã¨ã‚°ãƒ«ãƒ¼ãƒ—ã¯ä»¥ä¸‹ã®ã“ã¨ãŒå¯èƒ½ã§ã™ï¼š +* ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã«æ”¯æ‰•ã‚れãŸL$ã‚’å—é ˜ã—ã¾ã™ã€‚ + <usetemplate ignoretext="オブジェクトをグループã«è²æ¸¡ã™ã‚‹ã¨ã" name="okcancelignore" notext="å–り消ã—" yestext="è²æ¸¡"/> + </notification> + <notification name="WebLaunchExternalTarget"> + ãŠä½¿ã„ã®ã‚·ã‚¹ãƒ†ãƒ ã®ã‚¦ã‚§ãƒ–・ブラウザを開ã„ã¦ã€ã“ã®å†…容を表示ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate ignoretext="ãŠä½¿ã„ã®ã‚·ã‚¹ãƒ†ãƒ ã®ãƒ–ラウザを開ã„ã¦ã‚¦ã‚§ãƒ–・ページを表示ã—よã†ã¨ã—ãŸã¨ã" name="okcancelignore" notext="ã‚ャンセル" yestext="OK"/> + </notification> + <notification name="WebLaunchJoinNow"> + www.secondlife.comã«ç§»å‹•ã—ã¦ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’管ç†ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate ignoretext="アカウントを管ç†ã™ã‚‹ãŸã‚ã€ã‚¦ã‚§ãƒ–・ブラウザを起動ã™ã‚‹ã¨ã" name="okcancelignore" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="WebLaunchBugReport101"> + [SECOND_LIFE]Wikiã§ã€ãƒã‚°ã‚’å ±å‘Šã™ã‚‹æ£ã—ã„æ–¹æ³•ã‚’ã”覧ãã ã•ã„。 + <usetemplate ignoretext="ãƒã‚°ãƒ¬ãƒãƒ¼ãƒˆ101 Wikiを閲覧ã™ã‚‹ãŸã‚ã®ãƒ–ラウザを開ãã«ã‚ãŸã£ã¦" name="okcancelignore" notext="ã‚ャンセル" yestext="OK"/> + </notification> + <notification name="WebLaunchSecurityIssues"> + [SECOND_LIFE] Wikiã§ã€ +ã‚»ã‚ュリティå•é¡Œã‚’å ±å‘Šã™ã‚‹æ–¹æ³•ã‚’ã”覧ãã ã•ã„。 + <usetemplate ignoretext="ã‚»ã‚ュリティå•題Wikiを閲覧ã™ã‚‹ãŸã‚ã«ã‚¦ã‚§ãƒ–・ブラウザを起動ã™ã‚‹ã«ã‚ãŸã£ã¦" name="okcancelignore" notext="ã‚ャンセル" yestext="OK"/> + </notification> + <notification name="WebLaunchQAWiki"> + [SECOND_LIFE] å“質ä¿è¨¼é–¢é€£Wikiã‚’ã”覧ãã ã•ã„。 + <usetemplate ignoretext="å“質ä¿è¨¼é–¢é€£Wikiを閲覧ã™ã‚‹ãŸã‚ã«ã‚¦ã‚§ãƒ–・ブラウザを起動ã™ã‚‹ã«ã‚ãŸã£ã¦" name="okcancelignore" notext="ã‚ャンセル" yestext="OK"/> + </notification> + <notification name="WebLaunchPublicIssue"> + [SECOND_LIFE]ã®ãƒ‘ブリックå•題トラッカーã§ã€ +ãƒã‚°ã‚„ãã®ä»–ã®å•é¡Œã‚’å ±å‘Šã§ãã¾ã™ã€‚ + <usetemplate ignoretext="パブリックå•題トラッカーを閲覧ã™ã‚‹ãŸã‚ã«ã‚¦ã‚§ãƒ–・ブラウザを起動ã™ã‚‹ã«ã‚ãŸã£ã¦" name="okcancelignore" notext="ã‚ャンセル" yestext="ページã¸è¡Œã"/> + </notification> + <notification name="WebLaunchPublicIssueHelp"> + [SECOND_LIFE] Wikiã§ã€ +パブリックå•題トラッカーã®ä½¿ç”¨æ–¹æ³•ã‚’ã”覧ãã ã•ã„。 + <usetemplate ignoretext="パブリックå•題トラッカーWikiを閲覧ã™ã‚‹ãŸã‚ã«ã‚¦ã‚§ãƒ–・ブラウザを起動ã™ã‚‹ã«ã‚ãŸã£ã¦" name="okcancelignore" notext="ã‚ャンセル" yestext="ページã¸è¡Œã"/> + </notification> + <notification name="WebLaunchSupportWiki"> + Lindenå…¬å¼ãƒ–ãƒã‚°ã§ã€æœ€æ–°ã®ãƒ‹ãƒ¥ãƒ¼ã‚¹ã‚„æƒ…å ±ã‚’å…¥æ‰‹ã—ã¦ãã ã•ã„。 + <usetemplate ignoretext="ブãƒã‚°ã‚’表示ã™ã‚‹ãŸã‚ã€ã‚¦ã‚§ãƒ–・ブラウザを起動ã™ã‚‹ã¨ã" name="okcancelignore" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="WebLaunchLSLGuide"> + スクリプトガイドを開ã„ã¦ã€ã‚¹ã‚¯ãƒªãƒ—トã®ãƒ˜ãƒ«ãƒ—ã‚’å‚ç…§ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate ignoretext="LSLガイドを表示ã™ã‚‹ãŸã‚ã€ã‚¦ã‚§ãƒ–・ブラウザを起動ã™ã‚‹ã¨ã" name="okcancelignore" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="WebLaunchLSLWiki"> + LSLãƒãƒ¼ã‚¿ãƒ«ã‚’é–‹ã„ã¦ã‚¹ã‚¯ãƒªãƒ—トã®ãƒ˜ãƒ«ãƒ—ã‚’å‚ç…§ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate ignoretext="LSLãƒãƒ¼ã‚¿ãƒ«ã‚’表示ã™ã‚‹ãŸã‚ã«ã€ã‚¦ã‚§ãƒ–・ブラウザを起動ã™ã‚‹ã¨ã" name="okcancelignore" notext="å–り消ã—" yestext="ページã«ç§»å‹•"/> + </notification> + <notification name="ReturnToOwner"> + é¸æŠžã—ãŸã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’ã€æ‰€æœ‰è€…ã«è¿”å´ã—ã¾ã™ã‹ï¼Ÿ +è²æ¸¡å¯èƒ½ãªã‚ªãƒ–ジェクト㯠+以å‰ã®æ‰€æœ‰è€…ã«è¿”å´ã•れã¾ã™ã€‚ + +*è¦å‘Š* 移転ãŒä¸å¯èƒ½ã®è²æ¸¡ã•れãŸã‚ªãƒ–ジェクトã¯å‰Šé™¤ã•れã¾ã™ï¼ + <usetemplate ignoretext="オブジェクトをæŒã¡ä¸»ã«è¿”å´ã™ã‚‹ã¨ã" name="okcancelignore" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="GroupLeaveConfirmMember"> + ç¾åœ¨ã‚ãªãŸã¯ [GROUP]ã®ãƒ¡ãƒ³ãƒãƒ¼ã§ã™ã€‚ +ã“ã“ã‹ã‚‰æŠœã‘ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="ConfirmKick"> + ã™ã¹ã¦ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’グリッド外ã«ã‚ックã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚æ“作を続行ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="ã‚ャンセル" yestext="å…¨ã¦ã®ãƒ¦ãƒ¼ã‚¶ã‚’追ã„出ã™"/> + </notification> + <notification name="MuteLinden"> + 残念ãªãŒã‚‰Lindenを無視è¨å®šã«å…¥ã‚Œã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="CannotStartAuctionAlreadyForSale"> + æ—¢ã«å£²ã‚Šå‡ºã—ä¸ã®åŒºç”»ãªã®ã§ã‚ªãƒ¼ã‚¯ã‚·ãƒ§ãƒ³ã«ã‹ã‘ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 オークションã«ã‹ã‘ãŸã„å ´åˆã¯å£²ã‚Šå‡ºã—è¨å®šã‚’解除ã—ã¦ã‹ã‚‰è¡Œã£ã¦ãã ã•ã„。 + </notification> + <notification label="オブジェクトをåå‰ã§ãƒŸãƒ¥ãƒ¼ãƒˆã§ãã¾ã›ã‚“ã§ã—ãŸ" name="MuteByNameFailed"> + ã‚ãªãŸã¯ã™ã§ã«ã“ã®åå‰ã‚’ミュートã—ã¦ã„ã¾ã™ã€‚ + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="RemoveItemWarn"> + コンテンツを削除ã™ã‚‹ã¨ã€è¨±å¯ãŒã‚ã£ã¦ã‚‚ã€ã‚ªãƒ–ジェクトã«ãƒ€ãƒ¡ãƒ¼ã‚¸ã‚’与ãˆã‚‹ã“ã¨ãŒã‚りã¾ã™ã€‚ +ãã®ã‚¢ã‚¤ãƒ†ãƒ ã®å‰Šé™¤ã‚’ç¶šã‘ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="ã‚ャンセル" yestext="OK"/> + </notification> + <notification name="CantOfferCallingCard"> + ç¾åœ¨ã‚³ãƒ¼ãƒªãƒ³ã‚°ã‚«ãƒ¼ãƒ‰ã‚’é€ã‚Œã¾ã›ã‚“。数分後ã«ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="CantOfferFriendship"> + ç¾åœ¨ãƒ•レンドシップをé€ã‚Œã¾ã›ã‚“。数分後ã«è©¦ã—ã¦ãã ã•ã„。 + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="BusyModeSet"> + å–り込ã¿ä¸ã«è¨å®šã•れã¾ã—ãŸã€‚ +ãƒãƒ£ãƒƒãƒˆã¨ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ãƒˆãƒ»ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ï¼ˆIM)ãŒéš れã¾ã™ã€‚ +相手ã¯ã€Œå–り込ã¿ä¸å¿œç”メッセージã€ã‚’IMã§å—ã‘å–りã¾ã™ã€‚ +テレãƒãƒ¼ãƒˆã®ã‚ªãƒ•ァーã¯å…¨ã¦æ‹’å¦ã•ã‚Œã€æŒã¡ç‰©ã®ã‚ªãƒ•ァーã¯å…¨ã¦ã‚´ãƒŸç®±ã«é€ã‚‰ã‚Œã¾ã™ã€‚ + <usetemplate ignoretext="å–り込ã¿ä¸ã®è¨å®šã‚’ã™ã‚‹ã¨ã" name="okignore" yestext="OK"/> + </notification> + <notification name="JoinedTooManyGroupsMember"> + ã‚ãªãŸã¯ç¾åœ¨ãƒ¡ãƒ³ãƒãƒ¼ã«ãªã£ã¦ã„るグループãŒå¤šã™ãŽã‚‹ãŸã‚〠+ä»–ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«å‚åŠ ã§ãã¾ã›ã‚“。少ãªãã¨ã‚‚1ã¤ã®ã‚°ãƒ«ãƒ¼ãƒ—を脱退ã—ã¦ã‹ã‚‰ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«å‚åŠ ã™ã‚‹ã‹ã€ã“ã®æ‹›å¾…ã‚’æ–ã£ã¦ãã ã•ã„。 +グループを抜ã‘ã‚‹ã«ã¯ã€ç·¨é›†ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã‹ã‚‰ã€Œã‚°ãƒ«ãƒ¼ãƒ—...ã€ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã‚’ã‚’é¸æŠžã—ã¾ã™ã€‚ +[NAME]ã¯ã€ã‚ãªãŸã‚’メンãƒãƒ¼ã¨ã—ã¦ã‚°ãƒ«ãƒ¼ãƒ—ã«æ‹›å¾…ã—ã¦ã„ã¾ã™ã€‚ +[INVITE] + <usetemplate name="okcancelbuttons" notext="辞退" yestext="å‚åŠ "/> + </notification> + <notification name="KickUser"> + ã©ã‚“ãªãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’表示ã—ã¦ã€ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’追ã„出ã—ã¾ã™ã‹ï¼Ÿ + <form name="form"> + <input name="message" type="text"> + ã‚ãªãŸã¯ç®¡ç†è€…ã«ã‚ˆã‚Šãƒã‚°ã‚ªãƒ•ã•れã¾ã—ãŸã€‚ + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="å–り消ã—"/> + </form> + </notification> + <notification name="KickAllUsers"> + ã©ã‚“ãªãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’表示ã—ã¦ã€ã‚°ãƒªãƒƒãƒ‰ã«ã„る全員を追ã„出ã—ã¾ã™ã‹ï¼Ÿ + <form name="form"> + <input name="message" type="text"> + ã‚ãªãŸã¯ç®¡ç†è€…ã«ã‚ˆã‚Šãƒã‚°ã‚ªãƒ•ã•れã¾ã—ãŸã€‚ + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="å–り消ã—"/> + </form> + </notification> + <notification name="FreezeUser"> + ã©ã‚“ãªãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’表示ã—ã¦ã€ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’フリーズã—ã¾ã™ã‹ï¼Ÿ + <form name="form"> + <input name="message" type="text"> + ã‚ãªãŸã¯ãƒ•リーズã•れã¦ã„ã¾ã™ã€‚ å‹•ãã“ã¨ã‚‚ãƒãƒ£ãƒƒãƒˆã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã›ã‚“。 管ç†è€…ãŒIMを通ã˜ã¦ã‚ãªãŸã«é€£çµ¡ã—ã¾ã™ã€‚ + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="å–り消ã—"/> + </form> + </notification> + <notification name="UnFreezeUser"> + ã©ã‚“ãªãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’表示ã—ã¦ã€ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ãƒ•リーズを解除ã—ã¾ã™ã‹ï¼Ÿ + <form name="form"> + <input name="message" type="text"> + ã‚‚ã†ãƒ•リーズã•れã¦ã„ã¾ã›ã‚“。 + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="å–り消ã—"/> + </form> + </notification> + <notification name="OfferTeleport"> + 次ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’æ·»ãˆã¦ã‚ãªãŸãŒä»Šã„ã‚‹å ´æ‰€ã¸ã®ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã‚’é€ã‚Šã¾ã™ã‹ï¼Ÿ + <form name="form"> + <input name="message" type="text"> + [REGION]ã«æ¥ã¾ã›ã‚“ã‹ï¼Ÿ + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="å–り消ã—"/> + </form> + </notification> + <notification name="OfferTeleportFromGod"> + ユーザーをゴッド・コールã§å‘¼ã³å¯„ã›ã¾ã™ã‹ï¼Ÿ + <form name="form"> + <input name="message" type="text"> + [REGION]ã«æ¥ã¾ã›ã‚“ã‹ï¼Ÿ + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="å–り消ã—"/> + </form> + </notification> + <notification name="TeleportFromLandmark"> + 本当ã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã—ã¾ã™ã‹ï¼Ÿ + <usetemplate ignoretext="æŒã¡ç‰©ã®ãƒ©ãƒ³ãƒ‰ãƒžãƒ¼ã‚¯ã‹ã‚‰ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã™ã‚‹æ™‚" name="okcancelignore" notext="ã‚ャンセル" yestext="テレãƒãƒ¼ãƒˆ"/> + </notification> + <notification label="ã‚ãªãŸã®ä¸å‹•産内ã®å…¨å“¡ã«ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’é€ä¿¡" name="MessageEstate"> + 今ã‚ãªãŸã®ä¸å‹•産ã«ã„る人全員ã«é€ã‚‹ +çŸã„メッセージを入力ã—ã¦ãã ã•ã„。 + <form name="form"> + <input name="message" type="text"/> + <button name="OK" text="OK"/> + <button name="Cancel" text="å–り消ã—"/> + </form> + </notification> + <notification label="Lindenã®ä¸å‹•産を変更" name="ChangeLindenEstate"> + ã‚ãªãŸã¯Linden所有ã®ä¸å‹•産(メインランドã€ãƒ†ã‚£ãƒ¼ãƒ³ã‚°ãƒªãƒƒãƒ‰ã€ã‚ªãƒªã‚¨ãƒ³ãƒ†ãƒ¼ã‚·ãƒ§ãƒ³ãªã©ï¼‰ã‚’変更ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚ + +ã“れã¯ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®çµŒé¨“ã‚’æ ¹æœ¬ã‹ã‚‰æºã‚‹ãŒã—ã‹ããªã„「éžå¸¸ã«å±é™ºãªè¡Œç‚ºã€ã§ã™ã€‚ã“れã«ã‚ˆã‚Šã€ãƒ¡ã‚¤ãƒ³ãƒ©ãƒ³ãƒ‰ã§å¤šæ•°ã®åœ°åŸŸãŒå¤‰æ›´ã•れã€ã‚¹ãƒšãƒ¼ã‚¹ã‚µãƒ¼ãƒãƒ¼ã«æ‚ªå½±éŸ¿ãŒç”Ÿã˜ã¾ã™ã€‚ + +æ“作を続行ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification label="Lindenã®ä¸å‹•産ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’変更" name="ChangeLindenAccess"> + ã‚ãªãŸã¯Linden所有ã®ä¸å‹•産(メインランドã€ãƒ†ã‚£ãƒ¼ãƒ³ã‚°ãƒªãƒƒãƒ‰ã€ã‚ªãƒªã‚¨ãƒ³ãƒ†ãƒ¼ã‚·ãƒ§ãƒ³ãªã©ï¼‰ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ãƒªã‚¹ãƒˆã‚’変更ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚ + +ã“ã®è¡Œç‚ºã¯ã€Œå±é™ºã€ã§ã‚りã€ã‚°ãƒªãƒƒãƒ‰ã‹ã‚‰ã‚ªãƒ–ジェクトやãŠé‡‘ã®è»¢é€ã‚’ã‚‚ãŸã‚‰ã™ãƒãƒƒã‚ングを引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚ã‚‹ãŸã‚ã€å®Œå…¨ã«ãれをæ„図ã—ãŸå ´åˆã®ã¿è¡Œã†ã¹ãã‚‚ã®ã§ã™ã€‚ +ã“れã«ã‚ˆã‚Šå¤šæ•°ã®åœ°åŸŸãŒå¤‰æ›´ã•れã€ã‚¹ãƒšãƒ¼ã‚¹ã‚µãƒ¼ãƒãƒ¼ã«æ‚ªå½±éŸ¿ãŒç”Ÿã˜ã¾ã™ã€‚ + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification label="ä¸å‹•ç”£ã‚’é¸æŠž" name="EstateAllowedAgentAdd"> + ã“ã®ä¸å‹•産ã®è¨±å¯ãƒªã‚¹ãƒˆã ã‘ã«è¿½åŠ ã—ã¾ã™ã‹ï¼Ÿ ãれã¨ã‚‚[ALL_ESTATES]ã®ã™ã¹ã¦ã®è¨±å¯ãƒªã‚¹ãƒˆã«è¿½åŠ ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate canceltext="å–り消ã—" name="yesnocancelbuttons" notext="ã™ã¹ã¦ã®ä¸å‹•産" yestext="ã“ã®ä¸å‹•産"/> + </notification> + <notification label="ä¸å‹•ç”£ã‚’é¸æŠž" name="EstateAllowedAgentRemove"> + 許å¯ãƒªã‚¹ãƒˆã‹ã‚‰ã®å‰Šé™¤ã‚’ã“ã®ä¸å‹•産ã«ã¤ã„ã¦ã®ã¿è¡Œã„ã¾ã™ã‹ï¼Ÿ ãれã¨ã‚‚ã€[ALL_ESTATES]ã«ã¤ã„ã¦è¡Œã„ã¾ã™ã‹ï¼Ÿ + <usetemplate canceltext="å–り消ã—" name="yesnocancelbuttons" notext="ã™ã¹ã¦ã®ä¸å‹•産" yestext="ã“ã®ä¸å‹•産"/> + </notification> + <notification label="ä¸å‹•ç”£ã‚’é¸æŠž" name="EstateAllowedGroupAdd"> + ã“ã®ä¸å‹•産ã®ã‚°ãƒ«ãƒ¼ãƒ—許å¯ãƒªã‚¹ãƒˆã ã‘ã«è¿½åŠ ã—ã¾ã™ã‹ï¼Ÿ ãれã¨ã‚‚[ALL_ESTATES]ã®ã‚°ãƒ«ãƒ¼ãƒ—許å¯ãƒªã‚¹ãƒˆã«è¿½åŠ ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate canceltext="å–り消ã—" name="yesnocancelbuttons" notext="ã™ã¹ã¦ã®ä¸å‹•産" yestext="ã“ã®ä¸å‹•産"/> + </notification> + <notification label="ä¸å‹•ç”£ã‚’é¸æŠž" name="EstateAllowedGroupRemove"> + 許å¯ãƒªã‚¹ãƒˆã‹ã‚‰ã®å‰Šé™¤ã‚’ã“ã®ä¸å‹•産ã«ã¤ã„ã¦ã®ã¿è¡Œã„ã¾ã™ã‹ï¼Ÿ ãれã¨ã‚‚ã€[ALL_ESTATES]ã«ã¤ã„ã¦è¡Œã„ã¾ã™ã‹ï¼Ÿ + <usetemplate canceltext="å–り消ã—" name="yesnocancelbuttons" notext="ã™ã¹ã¦ã®ä¸å‹•産" yestext="ã“ã®ä¸å‹•産"/> + </notification> + <notification label="ä¸å‹•ç”£ã‚’é¸æŠž" name="EstateBannedAgentAdd"> + ã“ã®ä¸å‹•産ã«ã¤ã„ã¦ã®ã¿ã‚¢ã‚¯ã‚»ã‚¹ã‚’æ‹’å¦ã—ã¾ã™ã‹ï¼Ÿ ãれã¨ã‚‚[ALL_ESTATE]ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’æ‹’å¦ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate canceltext="å–り消ã—" name="yesnocancelbuttons" notext="ã™ã¹ã¦ã®ä¸å‹•産" yestext="ã“ã®ä¸å‹•産"/> + </notification> + <notification label="ä¸å‹•ç”£ã‚’é¸æŠž" name="EstateBannedAgentRemove"> + ã“ã®ä½äººã‚’ã€ã“ã®ä¸å‹•産ã®ã¿ã€ã¾ãŸã¯[ALL_ESTATES]ã¸ã¨ã‚¢ã‚¯ã‚»ã‚¹ã§ãるよã†ã«ã€ç¦æ¢ãƒªã‚¹ãƒˆã‹ã‚‰å‰Šé™¤ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate canceltext="å–り消ã—" name="yesnocancelbuttons" notext="ã™ã¹ã¦ã®ä¸å‹•産" yestext="ã“ã®ä¸å‹•産"/> + </notification> + <notification label="ä¸å‹•ç”£ã‚’é¸æŠž" name="EstateManagerAdd"> + ã“ã®ä¸å‹•産ã®ã¿ã€ã¾ãŸã¯[ALL_ESTATES]ã«å¯¾ã—ã¦ã€ä¸å‹•産マãƒãƒ¼ã‚¸ãƒ£ãƒ¼ã‚’è¿½åŠ ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate canceltext="å–り消ã—" name="yesnocancelbuttons" notext="ã™ã¹ã¦ã®ä¸å‹•産" yestext="ã“ã®ä¸å‹•産"/> + </notification> + <notification label="ä¸å‹•ç”£ã‚’é¸æŠž" name="EstateManagerRemove"> + ä¸å‹•産マãƒãƒ¼ã‚¸ãƒ£ãƒ¼ã‚’ã€ã“ã®ä¸å‹•産ã®ã¿ã€ã¾ãŸã¯[ALL_ESTATES]ã‹ã‚‰ã€å‰Šé™¤ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate canceltext="å–り消ã—" name="yesnocancelbuttons" notext="ã™ã¹ã¦ã®ä¸å‹•産" yestext="ã“ã®ä¸å‹•産"/> + </notification> + <notification label="ã‚ックを確èª" name="EstateKickUser"> + ã“ã®ä¸å‹•産ã‹ã‚‰[EVIL_USER]を追ã„出ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="EstateChangeCovenant"> + ä¸å‹•産約款を変更ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚æ“作を続行ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="RegionEntryAccessBlocked"> + ã‚ãªãŸã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†ã«ã‚ˆã‚Šã€ãã®åœ°åŸŸï¼ˆãƒªãƒ¼ã‚¸ãƒ§ãƒ³ï¼‰ã¸ã¯å…¥ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。 年齢を確èªã™ã‚‹éš›ã®æƒ…å ±ã«ä¸è¶³ãŒã‚ã£ãŸãŸã‚ã¨è€ƒãˆã‚‰ã‚Œã¾ã™ã€‚ + +最新ビューワãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¦ã„ã‚‹ã‹ã‚’ã”確èªãã ã•ã„。ã“ã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†ã§ã®ã‚¢ã‚¯ã‚»ã‚¹ã«é–¢ã™ã‚‹è©³ç´°ã¯ãƒŠãƒ¬ãƒƒã‚¸ãƒ™ãƒ¼ã‚¹ã‚’ã”覧ãã ã•ã„。 + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="RegionEntryAccessBlocked_KB"> + ã‚ãªãŸã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†ã«ã‚ˆã‚Šã€ãã®åœ°åŸŸï¼ˆãƒªãƒ¼ã‚¸ãƒ§ãƒ³ï¼‰ã¸ã¯å…¥ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。 + +ナレッジベースを開ãレーティング区分ã«ã¤ã„ã¦å¦ã³ã¾ã™ã‹ï¼Ÿ + <url name="url"> + http://wiki.secondlife.com/wiki/レーティング区分概è¦_(KB) + </url> + <usetemplate ignoretext="レーティング区分ã«ã‚ˆã£ã¦åœ°åŸŸï¼ˆãƒªãƒ¼ã‚¸ãƒ§ãƒ³ï¼‰ã«å…¥ã‚Œãªã„ã¨ã" name="okcancelignore" notext="é–‰ã˜ã‚‹" yestext="ナレッジベースを開ã"/> + </notification> + <notification name="RegionEntryAccessBlocked_Notify"> + ã‚ãªãŸã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†ã«ã‚ˆã‚Šã€ãã®åœ°åŸŸï¼ˆãƒªãƒ¼ã‚¸ãƒ§ãƒ³ï¼‰ã¸ã¯å…¥ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。 + </notification> + <notification name="RegionEntryAccessBlocked_Change"> + ã‚ãªãŸã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†è¨å®šã«ã‚ˆã‚Šã€ãã®åœ°åŸŸï¼ˆãƒªãƒ¼ã‚¸ãƒ§ãƒ³ï¼‰ã¸ã¯å…¥ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。 + +「è¨å®šã‚’変更ã€ã‚’クリックã™ã‚‹ã¨ã‚ãªãŸã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†ãŒä¸ŠãŒã‚Šã€å…¥ã‚Œã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚ ã‚ãªãŸã¯ä»Šå¾Œ [REGIONMATURITY] ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã®æ¤œç´¢åŠã³ã‚¢ã‚¯ã‚»ã‚¹ãŒå¯èƒ½ã¨ãªã‚Šã¾ã™ã€‚ +ã‚ã¨ã§è¨å®šã‚’å…ƒã«æˆ»ã—ãŸã„å ´åˆã¯ã€ã€Œç·¨é›†ã€ï¼žã€Œç’°å¢ƒè¨å®šã€ï¼žã€Œä¸€èˆ¬ã€ã‚’ã”覧ãã ã•ã„。 + <form name="form"> + <button + name="OK" + text="è¨å®šã®å¤‰æ›´"/> + <button + default="true" + name="Cancel" + text="é–‰ã˜ã‚‹"/> + <ignore name="ignore" text="レーティング区分è¨å®šã«ã‚ˆã£ã¦åœ°åŸŸï¼ˆãƒªãƒ¼ã‚¸ãƒ§ãƒ³ï¼‰ã«å…¥ã‚Œãªã„ã¨ã"/> + </form> + </notification> + <notification name="LandClaimAccessBlocked"> + ã‚ãªãŸã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†ã«ã‚ˆã‚Šã€ã“ã®åœŸåœ°ã‚’å–å¾—ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 年齢を確èªã™ã‚‹éš›ã®æƒ…å ±ã«ä¸è¶³ãŒã‚ã£ãŸãŸã‚ã¨è€ƒãˆã‚‰ã‚Œã¾ã™ã€‚ + +最新ビューワãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¦ã„ã‚‹ã‹ã‚’ã”確èªãã ã•ã„。ã“ã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†ã§ã®ã‚¢ã‚¯ã‚»ã‚¹ã«é–¢ã™ã‚‹è©³ç´°ã¯ãƒŠãƒ¬ãƒƒã‚¸ãƒ™ãƒ¼ã‚¹ã‚’ã”覧ãã ã•ã„。 + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="LandClaimAccessBlocked_KB"> + ã‚ãªãŸã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†ã«ã‚ˆã‚Šã€ã“ã®åœŸåœ°ã‚’å–å¾—ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 + +ナレッジベースを開ãレーティング区分ã«ã¤ã„ã¦å¦ã³ã¾ã™ã‹ï¼Ÿ + <url name="url"> + http://wiki.secondlife.com/wiki/レーティング区分概è¦_(KB) + </url> + <usetemplate ignoretext="レーティング区分ã«ã‚ˆã£ã¦åœŸåœ°ã‚’å–å¾—ã§ããªã„ã¨ã" name="okcancelignore" notext="é–‰ã˜ã‚‹" yestext="ナレッジベースを開ã"/> + </notification> + <notification name="LandClaimAccessBlocked_Notify"> + ã‚ãªãŸã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†ã«ã‚ˆã‚Šã€ã“ã®åœŸåœ°ã‚’å–å¾—ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 + </notification> + <notification name="LandClaimAccessBlocked_Change"> + ã‚ãªãŸã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†è¨å®šã«ã‚ˆã‚Šã€ã“ã®åœŸåœ°ã‚’å–å¾—ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 + +「è¨å®šã‚’変更ã€ã‚’クリックã™ã‚‹ã¨ã‚ãªãŸã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†ãŒä¸ŠãŒã‚Šã€å…¥ã‚Œã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚ ã‚ãªãŸã¯ä»Šå¾Œ [REGIONMATURITY] ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã®æ¤œç´¢åŠã³ã‚¢ã‚¯ã‚»ã‚¹ãŒå¯èƒ½ã¨ãªã‚Šã¾ã™ã€‚ +ã‚ã¨ã§è¨å®šã‚’å…ƒã«æˆ»ã—ãŸã„å ´åˆã¯ã€ã€Œç·¨é›†ã€ï¼žã€Œç’°å¢ƒè¨å®šã€ï¼žã€Œä¸€èˆ¬ã€ã‚’ã”覧ãã ã•ã„。 + <usetemplate ignoretext="レーティング区分è¨å®šã«ã‚ˆã£ã¦åœŸåœ°ã‚’å–å¾—ã§ããªã„ã¨ã" name="okcancelignore" notext="é–‰ã˜ã‚‹" yestext="è¨å®šã®å¤‰æ›´"/> + </notification> + <notification name="LandBuyAccessBlocked"> + ã‚ãªãŸã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†ã«ã‚ˆã‚Šã€ã“ã®åœŸåœ°ã‚’購入ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 年齢を確èªã™ã‚‹éš›ã®æƒ…å ±ã«ä¸è¶³ãŒã‚ã£ãŸãŸã‚ã¨è€ƒãˆã‚‰ã‚Œã¾ã™ã€‚ + +最新ビューワãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¦ã„ã‚‹ã‹ã‚’ã”確èªãã ã•ã„。ã“ã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†ã§ã®ã‚¢ã‚¯ã‚»ã‚¹ã«é–¢ã™ã‚‹è©³ç´°ã¯ãƒŠãƒ¬ãƒƒã‚¸ãƒ™ãƒ¼ã‚¹ã‚’ã”覧ãã ã•ã„。 + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="LandBuyAccessBlocked_KB"> + ã‚ãªãŸã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†ã«ã‚ˆã‚Šã€ã“ã®åœŸåœ°ã‚’購入ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 + +ナレッジベースを開ãレーティング区分ã«ã¤ã„ã¦å¦ã³ã¾ã™ã‹ï¼Ÿ + <url name="url"> + http://wiki.secondlife.com/wiki/レーティング区分概è¦_(KB) + </url> + <usetemplate ignoretext="レーティング区分ã«ã‚ˆã£ã¦åœŸåœ°ã‚’購入ã§ããªã„ã¨ã" name="okcancelignore" notext="é–‰ã˜ã‚‹" yestext="ナレッジベースを開ã"/> + </notification> + <notification name="LandBuyAccessBlocked_Notify"> + ã‚ãªãŸã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†ã«ã‚ˆã‚Šã€ã“ã®åœŸåœ°ã‚’購入ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 + </notification> + <notification name="LandBuyAccessBlocked_Change"> + ã‚ãªãŸã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†è¨å®šã«ã‚ˆã‚Šã€ã“ã®åœŸåœ°ã‚’購入ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。 + +「è¨å®šã‚’変更ã€ã‚’クリックã™ã‚‹ã¨ã‚ãªãŸã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†ãŒä¸ŠãŒã‚Šã€å…¥ã‚Œã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚ ã‚ãªãŸã¯ä»Šå¾Œ [REGIONMATURITY] ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã®æ¤œç´¢åŠã³ã‚¢ã‚¯ã‚»ã‚¹ãŒå¯èƒ½ã¨ãªã‚Šã¾ã™ã€‚ +ã‚ã¨ã§è¨å®šã‚’å…ƒã«æˆ»ã—ãŸã„å ´åˆã¯ã€ã€Œç·¨é›†ã€ï¼žã€Œç’°å¢ƒè¨å®šã€ï¼žã€Œä¸€èˆ¬ã€ã‚’ã”覧ãã ã•ã„。 + <usetemplate ignoretext="レーティング区分è¨å®šã«ã‚ˆã£ã¦åœŸåœ°ã‚’購入ã§ããªã„ã¨ã" name="okcancelignore" notext="é–‰ã˜ã‚‹" yestext="è¨å®šã®å¤‰æ›´"/> + </notification> + <notification name="TooManyPrimsSelected"> + é¸æŠžã—ãŸãƒ—リムãŒå¤šã™ãŽã¾ã™ã€‚ +[MAX_PRIM_COUNT] ã‚’é¸æŠžã™ã‚‹ã‹ã€ +プリム数を減らã—ã¦ã‚‚ã†ä¸€åº¦ãŠè©¦ã—ãã ã•ã„。 + </notification> + <notification name="ProblemImportingEstateCovenant"> + ä¸å‹•産約款ã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆæ™‚ã«å•題発生。 + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ProblemAddingEstateManager"> + æ–°ã—ã„ä¸å‹•産マãƒãƒ¼ã‚¸ãƒ£ãƒ¼ã®è¿½åŠ ã«é–¢ã™ã‚‹å•題: +1ã¤ä»¥ä¸Šã®ä¸å‹•産ã§ã€ãƒžãƒãƒ¼ã‚¸ãƒ£ãƒ¼ãƒªã‚¹ãƒˆãŒæº€æ¯ã«ãªã£ã¦ã„ã¾ã™ã€‚ + </notification> + <notification name="ProblemAddingEstateGeneric"> + ä¸å‹•産リストã®è¿½åŠ ã«é–¢ã™ã‚‹å•題: +1ã¤ä»¥ä¸Šã®ä¸å‹•産ã§ã€ãƒªã‚¹ãƒˆãŒæº€æ¯ã«ãªã£ã¦ã„ã¾ã™ã€‚ + </notification> + <notification name="UnableToLoadNotecardAsset"> + ç¾åœ¨ãƒŽãƒ¼ãƒˆã‚«ãƒ¼ãƒ‰ã®è³‡ç”£IDã‚’èªã¿è¾¼ã‚€ã“ã¨ãŒã§ãã¾ã›ã‚“。 + </notification> + <notification name="NotAllowedToViewNotecard"> + è¦æ±‚ã•れãŸè³‡ç”£IDã«é–¢ã™ã‚‹ãƒŽãƒ¼ãƒˆã‚«ãƒ¼ãƒ‰ã‚’閲覧ã™ã‚‹ã«ã¯æ¨©é™ãŒä¸å分ã§ã™ã€‚ + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MissingNotecardAssetID"> + ノートカード用資産IDãŒãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«ç™»éŒ²ã•れã¦ã„ã¾ã›ã‚“。 + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="PublishClassified"> + 注æ„ï¼šã‚¯ãƒ©ã‚·ãƒ•ã‚¡ã‚¤ãƒ‰åºƒå‘Šã®æ–™é‡‘ã¯æ‰•ã„æˆ»ã—ã•れã¾ã›ã‚“。 + +L$[AMOUNT]ã§ã€ã“ã®ã‚¯ãƒ©ã‚·ãƒ•ァイド広告を今ã™ã公開ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="SetClassifiedMature"> + ã“ã®åºƒå‘Šã«Matureコンテンツã¯å«ã¾ã‚Œã¦ã„ã¾ã™ã‹ï¼Ÿ + <usetemplate canceltext="ã‚ャンセル" name="yesnocancelbuttons" notext="ã„ã„ãˆ" yestext="ã¯ã„"/> + </notification> + <notification name="SetGroupMature"> + ã“ã®åºƒå‘Šã«Matureコンテンツã¯å«ã¾ã‚Œã¦ã„ã¾ã™ã‹ï¼Ÿ + <usetemplate canceltext="ã‚ャンセル" name="yesnocancelbuttons" notext="ã„ã„ãˆ" yestext="ã¯ã„"/> + </notification> + <notification label="å†èµ·å‹•を確èª" name="ConfirmRestart"> + ã“ã®åœ°åŸŸã‚’2分後ã«å†èµ·å‹•ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚ +æ“作を続行ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification label="ã“ã®åœ°åŸŸå†…ã®å…¨å“¡ã«ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’é€ä¿¡" name="MessageRegion"> + ã“ã®åœ°åŸŸã«ã„る人全員ã«é€ã‚‹ +çŸã„メッセージを入力ã—ã¦ãã ã•ã„。 + <form name="form"> + <input name="message" type="text"/> + <button name="OK" text="OK"/> + <button name="Cancel" text="å–り消ã—"/> + </form> + </notification> + <notification label="土地整備をブãƒãƒƒã‚¯" name="HelpRegionBlockTerraform"> + ã“ã®ãƒœãƒƒã‚¯ã‚¹ãŒãƒã‚§ãƒƒã‚¯ã•れã¦ã„ã‚‹å ´åˆã€ +区画ã”ã¨ã®ã€Œé ˜åŸŸã‚’編集ã€ã®è¨å®šã«ã‹ã‹ã‚らãšã€åœŸåœ°ã‚ªãƒ¼ãƒŠãƒ¼ã¯åœŸåœ°æ•´å‚™ãŒã§ãã¾ã›ã‚“。 + +デフォルト:オフ + </notification> + <notification label="飛行をブãƒãƒƒã‚¯" name="HelpRegionBlockFly"> + ã“ã®ãƒœãƒƒã‚¯ã‚¹ã‚’ãƒã‚§ãƒƒã‚¯ã™ã‚‹ã¨ã€åŒºç”»ã”ã¨ã®ã€Œé£›è¡Œã€è¨å®šã«é–¢ã‚らãšé£›è¡ŒãŒã§ããªããªã‚Šã¾ã™ã€‚ + +デフォルト:オフ + </notification> + <notification label="コンテンツ権é™ã®ä¸€æ‹¬å¤‰æ›´" name="HelpBulkPermission"> + 権é™ã®ä¸€æ‹¬å¤‰æ›´ãƒ„ールã§ã¯ã€é¸æŠžã—ãŸè¤‡æ•°ã®ã‚¢ã‚¤ãƒ†ãƒ ã®æ¨©é™ã‚’ç´ æ—©ã変更ã™ã‚‹ã“ã¨ãŒå¯èƒ½ã§ã™ã€‚ +ã—ã‹ã—é¸æŠžã—ãŸã‚ªãƒ–ジェクトã®ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã®ä¸èº«ã®æ¨©é™è¨å®šã‚’ã™ã‚‹ã ã‘ã§ã€ã‚ªãƒ–ジェクトãã®ã‚‚ã®ã§ã¯ãªã„ã“ã¨ã«ã”注æ„ãã ã•ã„。 + +ã¾ãŸã€æ¨©é™ã¯ä¸ã«ã‚るアイテムã®ãã®ä¸èº«ã«ã¯é©ç”¨ã•れãªã„ã“ã¨ã‚‚ã”æ³¨æ„ãã ã•ã„。 1段階層ã®ã‚¢ã‚¤ãƒ†ãƒ ã®ã¿ã¸ã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆã¨ãªã‚Šã¾ã™ã€‚ + +「コンテンツã®ç¨®é¡žã€ã«ã‚ã‚‹ãƒã‚§ãƒƒã‚¯ãƒªã‚¹ãƒˆã‚’使ã£ã¦ã€ä¿®æ£ã™ã‚‹ã‚¢ã‚¤ãƒ†ãƒ ã®ç¨®é¡žã‚’é¸æŠžã—ã¾ã™ã€‚ テクスãƒãƒ£ãƒ¼ã‚’é¸æŠžã™ã‚‹ã¨ã€ã‚¹ãƒŠãƒƒãƒ—ショットもå«ã¾ã‚Œã¾ã™ã€‚ + +* ã“ã®ãƒ„ールã®ä½¿ç”¨ã¯ã€ +ã‚ãªãŸãŒå¤‰æ›´ã™ã‚‹ã“ã¨ã®ã§ãるアイテムã«ã®ã¿æœ‰åйã§ã™ã€‚ +* 次ã®ã‚ªãƒ¼ãƒŠãƒ¼ã®æ¨©é™ãŒã‚ãªãŸã«ãªã„å ´åˆã¯ã€é©ç”¨ã•れã¾ã›ã‚“。 +* 次ã®ã‚ªãƒ¼ãƒŠãƒ¼ã®æ¨©é™ã¯å˜ã«ãƒªã‚¯ã‚¨ã‚¹ãƒˆã«ã™ãŽã¾ã›ã‚“。 ã©ã‚Œã‹ä¸€ã¤ã®ã‚¢ã‚¤ãƒ†ãƒ ã§ã‚‚æ–°ã—ã„æ¨©é™ã®è¨å®šã‚’å—ã‘付ã‘ãªã„å ´åˆã€ã™ã¹ã¦ã®æ¨©é™ã®è¨å®šã¯ãã®ã¾ã¾ç¶æŒã•れã¾ã™ã€‚ + +ä¸€æ‹¬å¤‰æ›´ã®æº–å‚™ãŒã§ããŸã‚‰ã€ã€Œé©ç”¨ã€ã‚’クリックã—ã¦çµæžœãŒè¡¨ç¤ºã•れるã®ã‚’ãŠå¾…ã¡ãã ã•ã„。 + +権é™å¤‰æ›´ä¸ã«æ¨©é™ã®ä¸€æ‹¬å¤‰æ›´ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’é–‰ã˜ãŸå ´åˆã€å‡¦ç†ã¯åœæ¢ã•れã¾ã™ã€‚ + </notification> + <notification label="ダメージ許å¯" name="HelpRegionAllowDamage"> + ã“ã®ãƒœãƒƒã‚¯ã‚¹ã‚’ãƒã‚§ãƒƒã‚¯ã™ã‚‹ã¨ã€ +å„区画ã®å€‹åˆ¥ã®è¨å®šã«ã‹ã‹ã‚らãšã€å…¨ã¦ã®åŒºç”»ã«ãŠã‘るヘルスシステムを有効ã«ã—ã¾ã™ã€‚ +ã“ã®ãƒœãƒƒã‚¯ã‚¹ãŒãƒã‚§ãƒƒã‚¯ã•れã¦ã„ãªã„å ´åˆã§ã‚‚〠+個別ã®åŒºç”»ã®ã‚ªãƒ¼ãƒŠãƒ¼ã¯ã€è‡ªåˆ†ã®åŒºç”»ã«å¯¾ã™ã‚‹ãƒ˜ãƒ«ã‚¹ã‚·ã‚¹ãƒ†ãƒ を有効ã«ã§ãã¾ã™ã€‚ + +デフォルト: オフ + </notification> + <notification label="人物ã®åˆ¶é™" name="HelpRegionAgentLimit"> + ã“ã®åœ°åŸŸã«è¨±å¯ã•れるアãƒã‚¿ãƒ¼ã®æœ€å¤§æ•°ã‚’è¨å®šã—ã¾ã™ã€‚ +1ã¤ã®åœ°åŸŸã«ã‚¢ãƒã‚¿ãƒ¼ãŒå¤šã„ã¨ãƒ‘フォーマンス㌠+低下ã™ã‚‹åŽŸå› ã«ãªã‚‹ã®ã§æ³¨æ„ã—ã¦ãã ã•ã„。 + +デフォルト: 40 + </notification> + <notification label="物体ボーナス" name="HelpRegionObjectBonus"> + オブジェクトボーナスã¯ã€åŒºç”»ã«ãŠã„ã¦è¨±å¯ã•れã¦ã„るプリムã®å€çŽ‡æ•°ã‚’æ„味ã—ã¾ã™ã€‚ +èªå¯ã•れã¦ã„る範囲ã¯1ã‹ã‚‰10ã§ã™ã€‚ +ã—ãŸãŒã£ã¦ã€ã€Œ1ã€ã«è¨å®šã™ã‚‹ã¨ã€512 m²ã®åœŸåœ°ã«ã¯ã€117ã®ã‚ªãƒ–ジェクトãŒè¨±å¯ã•れã¾ã™ã€‚ +「2ã€ã«è¨å®šã™ã‚‹ã¨ã€åŒã˜512 m²ã®åœŸåœ°ã«ã¯ã€1ã®ã¨ãã®2å€ã«ã‚ãŸã‚‹234ã®ã‚ªãƒ–ジェクトãŒè¨±å¯ã•れã€3以é™ã‚‚åŒæ§˜ã«å¢—ãˆã¦ã„ãã¾ã™ã€‚ +å…¨åœ°åŸŸã®æœ€é«˜ã‚ªãƒ–ジェクト数ã¯ã€ã‚ªãƒ–ジェクトボーナスã®å€¤ã«å½±éŸ¿ã•れãšã€ +15,000ã®ã¾ã¾å¤‰ã‚りã¾ã›ã‚“。 +ã„ã£ãŸã‚“決定ã—ãŸå¾Œã§ã‚ªãƒ–ジェクトボーナスã®å€¤ã‚’下ã’ã‚‹ã¨ã€ã‚ªãƒ–ジェクトãŒè¿”å´ã¾ãŸã¯å‰Šé™¤ã•れるå¯èƒ½æ€§ãŒã‚りã¾ã™ã®ã§ã”注æ„ãã ã•ã„。 +ディフォルト: 1.0 + </notification> + <notification label="レーティング区分" name="HelpRegionMaturity"> + ä½äººã®ãƒ“ューワ上部ã®ãƒ¡ãƒ‹ãƒ¥ãƒ¼ãƒãƒ¼ã«è¡¨ç¤ºã•れるã€åœ°åŸŸï¼ˆãƒªãƒ¼ã‚¸ãƒ§ãƒ³ï¼‰ã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†ã‚’è¨å®šã—ã¾ã™ã€‚ +世界地図上ã§ã‚«ãƒ¼ã‚½ãƒ«ã‚’ã“ã®åœ°åŸŸã«ä¹—ã›ã‚‹ã¨ãƒ„ールãƒãƒƒãƒ—ã«è¡¨ç¤ºã•れã¾ã™ã€‚ +ã“ã®è¨å®šã¯ã“ã®åœ°åŸŸå…¨ä½“ã¨æ¤œç´¢çµæžœã«åæ˜ ã•れã¾ã™ã€‚ +ä»–ã®ä½äººã¯ç’°å¢ƒè¨å®šã§é¸æŠžã—ãŸãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†ã«åˆã£ãŸåœ°åŸŸã«å…¥ã‚‹ã“ã¨ãŒã§ãã€æ¤œç´¢çµæžœã‚’見るã“ã¨ãŒã§ãã¾ã™ã€‚ + +地図ã«ã“ã®å¤‰æ›´ãŒåæ˜ ã™ã‚‹ã«ã¯æ•°åˆ†ã‹ã‹ã‚‹ã“ã¨ãŒã‚りã¾ã™ã€‚ + </notification> + <notification label="プッシュを制é™" name="HelpRegionRestrictPushObject"> + ã“ã®ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹ã¯ã€åˆ¶é™ã•れãŸãƒ—ッシュ権é™ã‚’全地域ã«é©ç”¨ã—ã¾ã™ã€‚ +有効ã«ãªã£ã¦ã„ã‚‹å ´åˆã€ä½äººã¯è‡ªåˆ†è‡ªèº«ã§ã®ãƒ—ッシュ〠+ã‚ã‚‹ã„ã¯åŒºç”»ã®æ‰€æœ‰è€…ã«ã‚ˆã‚‹ãƒ—ッシュã ã‘ã«åˆ¶é™ã§ãã¾ã™ã€‚ +(プッシュã¯ã€LSLã® llPushObject() 機能をå‚ç…§ã—ã¾ã™ã€‚) + +デフォルト: オフ + </notification> + <notification label="区画統åˆï¼å†åˆ†å‰²" name="HelpParcelChanges"> + ã“ã®ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹ã¯ã€ä¸å‹•ç”£ã‚ªãƒ¼ãƒŠãƒ¼ãŒæ‰€æœ‰ã—ã¦ã„ãªã„区画を統åˆã¾ãŸã¯å†åˆ†å‰²ã§ãã‚‹ã‹ã©ã†ã‹ã‚’è¨å®šã—ã¾ã™ã€‚ +本オプションãŒç„¡åйãªå ´åˆï¼š +*ä¸å‹•産オーナーã€ã¾ãŸã¯ç®¡ç†è€…ã®ã¿ãŒã€çµ±åˆï¼å†åˆ†å‰²ã‚’行ã†ã“ã¨ãŒã§ãã¾ã™ã€‚ +*オーナーã€ã¾ãŸã¯ã€é©åˆ‡ãªæ¨©é™ã‚’æŒã¤ã‚°ãƒ«ãƒ¼ãƒ—ã«å±žã™ã‚‹åŒºç”»ã®ã¿ã‚’ +çµ±åˆï¼å†åˆ†å‰²ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ +æœ¬ã‚ªãƒ—ã‚·ãƒ§ãƒ³ãŒæœ‰åйãªå ´åˆï¼š +*å…¨ã¦ã®åŒºç”»ã‚ªãƒ¼ãƒŠãƒ¼ã¯ã€æ‰€æœ‰ã™ã‚‹åŒºç”»ã®çµ±åˆï¼å†åˆ†å‰²ãŒã§ãã¾ã™ã€‚ +*グループ所有ã®åŒºç”»ã¯ã€é©åˆ‡ãªæ¨©é™ã‚’æŒã¤ã‚°ãƒ«ãƒ¼ãƒ—ã«å±žã™ã‚‹åŒºç”»ã‚’çµ±åˆï¼å†åˆ†å‰²ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + +デフォルト:ãƒã‚§ãƒƒã‚¯ã‚り + </notification> + <notification label="検索ã§è¡¨ç¤ºã—ãªã„" name="HelpRegionSearch"> + ã“ã®ãƒœãƒƒã‚¯ã‚¹ã‚’ãƒã‚§ãƒƒã‚¯ã™ã‚‹ã¨ã€åŒºç”»ã®ã‚ªãƒ¼ãƒŠãƒ¼ã¯ã€è‡ªåˆ†ã®åŒºç”»ãŒæ¤œç´¢çµæžœã«ãƒªã‚¹ãƒˆã•れるã“ã¨ã‚’阻æ¢ã§ãã¾ã™ã€‚ +デフォルト:オフ + </notification> + <notification label="地域ã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†æŒ‡å®šå¤‰æ›´æ¸ˆã¿" name="RegionMaturityChange"> + ã“ã®åœ°åŸŸã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†æŒ‡å®šãŒã‚¢ãƒƒãƒ—デートã•れã¾ã—ãŸã€‚ +ã“ã®å¤‰æ›´ãŒåœ°å›³ã«åæ˜ ã•れるã¾ã§ã«ã¯ã—ã°ã‚‰ã時間ãŒã‹ã‹ã‚Šã¾ã™ã€‚ + </notification> + <notification label="土地ã®å†è²©" name="HelpRegionLandResell"> + ä¸å‹•産ã®ã‚ªãƒ¼ãƒŠãƒ¼ã¨ç®¡ç†è€…ã¯ã€ä¸å‹•産オーナーã®åœŸåœ°ã‚’販売ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ +ã“ã®ã‚ªãƒ—ションをãƒã‚§ãƒƒã‚¯ã—ãªã„å ´åˆã€è³¼å…¥è€…ãŒæœ¬åœ°åŸŸã«ãŠã‘る土地をå†è²©ã™ã‚‹ã“ã¨ã¯ã§ããªããªã‚Šã¾ã™ã€‚ +ã“ã®ã‚ªãƒ—ションをãƒã‚§ãƒƒã‚¯ã—ãŸå ´åˆã€è³¼å…¥è€…ã¯æœ¬åœ°åŸŸã«ãŠã‘る土地をå†è²©ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + +デフォルト:許å¯ã—ãªã„ + </notification> + <notification label="スクリプトを無効化" name="HelpRegionDisableScripts"> + スクリプトãŒåŽŸå› ã§ã‚·ãƒ ã®çжæ³ãŒæ‚ªããªã‚‹å ´åˆãŒã‚りã¾ã™ã€‚ +統計グラフをã ã—ã¦ï¼ˆCtrl-Shift-1)〠+シミュレーターフィジックスFPSを見ã¦ãã ã•ã„。 +45より数ãŒä½Žã‘れã°ã€ä¸€ç•ªä¸‹ã«ä½ç½®ã—ã¦ã„るタイムパãƒãƒ«ã‚’é–‹ã„ã¦ãã ã•ã„。 +スクリプト時間ãŒ25ms以上ã§ã‚れã°ã€ +「トップスクリプトをå–å¾—ã€ãƒœã‚¿ãƒ³ã‚’クリックã—ã¾ã™ã€‚ +悪影響をåŠã¼ã—ã¦ã„るスクリプトã®åå‰ã¨ä½ç½®ãŒç¾ã‚Œã¾ã™ã€‚ + +「スクリプトを無効ã«ã™ã‚‹ã€ã‚’ãƒã‚§ãƒƒã‚¯ã—「é©ç”¨ã€ã‚’クリックã™ã‚‹ã¨ã€åœ°åŸŸå†…ã®å…¨ã¦ã®ã‚¹ã‚¯ãƒªãƒ—トãŒä¸€æ™‚çš„ã«ç„¡åйã«ãªã‚Šã¾ã™ã€‚ +ãƒˆãƒƒãƒ—ã‚¹ã‚¯ãƒªãƒ—ãƒˆã§æ¤œç´¢ã—ãŸã‚¹ã‚¯ãƒªãƒ—トã®ä½ç½®ã¾ã§åˆ°é”ã™ã‚‹ã«ã¯ã€ +ã“ã®ã‚¹ãƒ†ãƒƒãƒ—ãŒå¿…è¦ã«ãªã‚‹å ´åˆã‚‚ã‚りã¾ã™ã€‚ +スクリプトä½ç½®ã«åˆ°ç€å¾Œã€ã‚¹ã‚¯ãƒªãƒ—ãƒˆã‚’è¦‹ã¦æ‚ªå½±éŸ¿ã‚’与ãˆã¦ã„ã‚‹ã‹èª¿æŸ»ã—ã¦ãã ã•ã„。 +ã‚¹ã‚¯ãƒªãƒ—ãƒˆã®æ‰€æœ‰è€…ã«é€£çµ¡ã™ã‚‹ã‹ã€ã‚ã‚‹ã„ã¯ã‚ªãƒ–ジェクトã®å‰Šé™¤ã¾ãŸã¯è¿”å´ã‚‚考ãˆã‚‰ã‚Œã¾ã™ã€‚ +「スクリプトを無効ã«ã™ã‚‹ã€ã®ãƒã‚§ãƒƒã‚¯ã‚’外ã—ã€ã€Œé©ç”¨ã€ã‚’クリックã—ã¦åœ°åŸŸå…¨ä½“ã®ã‚¹ã‚¯ãƒªãƒ—ãƒˆã‚’æœ‰åŠ¹ã«æˆ»ã—ã¦ãã ã•ã„。 + +デフォルト:オフ + </notification> + <notification label="è¡çªã‚’無効化" name="HelpRegionDisableCollisions"> + 物ç†çš„オブジェクトãŒåŽŸå› ã§ã€ +シムã®å‡¦ç†ãŒé‡ããªã‚‹ã“ã¨ãŒã‚りã¾ã™ã€‚ +統計グラフを開ã„ã¦ï¼ˆCtrl-Shift-1)〠+シミュレーターフィジックスFPSを見ã¦ãã ã•ã„。 +数値ãŒ45より低ã‘れã°ã€çµ±è¨ˆãƒãƒ¼ã®ä¸‹ã«ä½ç½®ã—ã¦ã„るタイムパãƒãƒ«ã‚’é–‹ã„ã¦ãã ã•ã„。 +ã‚‚ã—シムタイム(物ç†çš„作用)ãŒ20 msより長ã„å ´åˆã¯ã€ +「トップ・コライダーをå–å¾—ã€ã‚’クリックã—ã¦ãã ã•ã„。 +悪影響をåŠã¼ã—ã¦ã„ã‚‹å¯èƒ½æ€§ãŒã‚る物ç†ã‚ªãƒ–ジェクトã®åå‰ã¨ä½ç½®ãŒç¾ã‚Œã¾ã™ã€‚ + +「è¡çªã‚’無効ã«ã™ã‚‹ã€ã‚’ãƒã‚§ãƒƒã‚¯ã—「é©ç”¨ã€ã‚’クリックã™ã‚‹ã¨ã€ +オブジェクトåŒå£«ã®è¡çªãŒä¸€æ™‚çš„ã«ç„¡åйã«ãªã‚Šã¾ã™ã€‚ +当該ã®ãƒˆãƒƒãƒ—・コライダーã®ä½ç½®ã¾ã§åˆ°é”ã™ã‚‹ã«ã¯ +上記ã®ã‚¹ãƒ†ãƒƒãƒ—ãŒå¿…è¦ã«ãªã‚‹å ´åˆã‚‚ã‚りã¾ã™ã€‚ +到ç€å¾Œã€ã‚ªãƒ–ジェクトを見ã¦å¸¸æ™‚ä»–ã®ã‚ªãƒ–ジェクトã¨è¡çªã—ã¦ã„ã‚‹ã‹èª¿æŸ»ã—ã¦ãã ã•ã„。 +ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æ‰€æœ‰è€…ã«é€£çµ¡ã™ã‚‹ã‹ã€ã‚ã‚‹ã„ã¯ã‚ªãƒ–ジェクトã®å‰Šé™¤ã¾ãŸã¯è¿”å´ã‚’考慮ã™ã¹ãã‹ã‚‚ã—れã¾ã›ã‚“。 +「è¡çªã‚’無効ã«ã™ã‚‹ã€ã®ãƒã‚§ãƒƒã‚¯ã‚’外ã—ã€ã€Œé©ç”¨ã€ã‚’クリックã—㦠+地域全体ã®è¡çªã‚’æœ‰åŠ¹ã«æˆ»ã—ã¦ãã ã•ã„。 + +デフォルト:オフ + </notification> + <notification label="物ç†ä½œç”¨ã‚’無効化" name="HelpRegionDisablePhysics"> + 物ç†çš„作用を無効ã«ã™ã‚‹ã“ã¨ã¯ã€ç‰©ç†çš„シミュレーション全ã¦ã®ç„¡åŠ¹ã‚’é™¤ã„ã¦ã€è¡çªã‚’無効ã«ã™ã‚‹ã“ã¨ã¨ä¼¼ã¦ã„ã¾ã™ã€‚ +ã“れã¯ã€ã‚ªãƒ–ジェクトã®è¡çªã‚’æ¢ã‚ã‚‹ã®ã¿ãªã‚‰ãšã€ã‚¢ãƒã‚¿ãƒ¼ã®ç§»å‹•ãŒã§ããªããªã‚‹ã“ã¨ã‚’æ„味ã—ã¾ã™ã€‚ + +ã“ã®æ©Ÿèƒ½ã¯ã€ç‰©ç†çš„ãªå•題ãªã®ã‹ã€ã¾ãŸã¯ãƒˆãƒƒãƒ—・コライダーãªã®ã‹ã‚’調査ã™ã‚‹ã«ã‚ãŸã‚Šã€è¡çªã®ç„¡åйãŒåœ°åŸŸã«å¯¾ã—ã¦å分ãªãƒ‘フォーマンスを発æ®ã—ãªã„å ´åˆã«ã®ã¿ä½¿ç”¨ã—ã¦ãã ã•ã„。 + +終了ã™ã‚‹æ™‚ã«ã¯ã€ç‰©ç†çš„作用をå†åº¦å¯èƒ½ã«è¨å®šã—ã¦ãã ã•ã„。 +ãã®ã¾ã¾ã ã¨ã€ã‚¢ãƒã‚¿ãƒ¼ã¯ãšã£ã¨å‹•ã‘ã¾ã›ã‚“。 + +デフォルト:オフ + </notification> + <notification label="トップ・コライダー" name="HelpRegionTopColliders"> + オブジェクトåŒå£«ã®è¡çªãŒæœ€ã‚‚多ã„å¯èƒ½æ€§ã®ã‚ã‚‹ +オブジェクトã®ãƒªã‚¹ãƒˆã‚’表示ã—ã¾ã™ã€‚ã“れらã®ã‚ªãƒ–ジェクトã¯ã€ +パフォーマンスを低下ã•ã›ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ +ビューã‹ã‚‰çµ±è¨ˆãƒãƒ¼ã‚’é¸æŠžã—〠+シミュレータ>時間>シム時間 (物ç†çš„作用) ã§ã€ +物ç†çš„作用ã«20 ms以上を費ã—ã¦ã„ã‚‹ã‹ã‚’確èªã—ã¦ãã ã•ã„。 + </notification> + <notification label="トップ・スクリプト" name="HelpRegionTopScripts"> + LSLスクリプトã®å®Ÿè¡Œã«ä¸€ç•ªæ™‚間を費やã—ã¦ã„るオブジェクトã®ãƒªã‚¹ãƒˆã‚’入手ã—ã¾ã™ã€‚ +ã“れらã®ã‚ªãƒ–ジェクトã¯ã€ãƒ‘フォーマンスを低下ã•ã›ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ +ビューã‹ã‚‰çµ±è¨ˆãƒãƒ¼ã‚’é¸æŠžã—〠+ミュレータ>時間>スクリプト時間ã§ã€ +スクリプトã«25 ms以上を費ã—ã¦ã„ã‚‹ã‹ã‚’確èªã—ã¦ãã ã•ã„。 + </notification> + <notification label="地域をå†èµ·å‹•" name="HelpRegionRestart"> + 2分後ã«ã‚µãƒ¼ãƒãƒ¼ãŒå†èµ·å‹•ã•れるã¨ã„ã†è¦å‘Šãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®å¾Œã«ã€ +ã“ã®åœ°åŸŸã®ã‚µãƒ¼ãƒãƒ¼ãƒ—ãƒã‚»ã‚¹ã‚’å†èµ·å‹•ã—ã¾ã™ã€‚ +ã“ã®åœ°åŸŸã®ã™ã¹ã¦ã®ä½äººã®æŽ¥ç¶šãŒåˆ‡æ–ã•れã¾ã™ã€‚ +地域ã®ãƒ‡ãƒ¼ã‚¿ã¯ä¿å˜ã•れã€90秒以内ã«å›žå¾©ã—ã¾ã™ã€‚ + +ã“ã®åœ°åŸŸã‚’å†èµ·å‹•ã—ã¦ã‚‚ã€ã»ã¨ã‚“ã©ã®ãƒ‘フォーマンスã®å•題ã«å¤‰åŒ–ã¯ã‚りã¾ã›ã‚“。 +指示ã•ã‚ŒãŸæ™‚ã ã‘利用ã—ã¦ãã ã•ã„。 + </notification> + <notification label="æ°´é¢ã®é«˜ã•" name="HelpRegionWaterHeight"> + ã“れã¯ã€æ°´ãŒç¾ã‚Œã‚‹é«˜ã•(å˜ä½ï¼šãƒ¡ãƒ¼ãƒˆãƒ«ï¼‰ã§ã™ã€‚ +ã“ã®è¨å®šãŒ20以外ã§ã€æ°´ãŒä¸–界㮠+端やã€ã€Œç©ºã®ã€æ°´ã«è¿‘ã‘れã°ã€ +æºãŒè¦‹ãˆã‚‹ã§ã—ょã†ã€‚ + +デフォルト: 20 + </notification> + <notification label="地形ã®ä¸Šæ˜‡" name="HelpRegionTerrainRaise"> + ã“ã®æ•°å€¤ã¯ã€ã€Œãƒ™ãƒ¼ã‚¯ã€åœ°å½¢ã®ãƒ‡ãƒ•ォルトã®é«˜ã•以上ã«ã€ +区画所有者ãŒåœŸåœ°ã‚’上ã’ã‚‹ã“ã¨ã®ã§ãるメートル値ã§ã™ã€‚ + +デフォルト: 4 + </notification> + <notification label="地形ã®ä¸‹é™" name="HelpRegionTerrainLower"> + ã“ã®æ•°å€¤ã¯ã€ã€Œãƒ™ãƒ¼ã‚¯ã€åœ°å½¢ã®ãƒ‡ãƒ•ォルトã®é«˜ã•以下ã«ã€ +区画所有者ãŒåœŸåœ°ã‚’下ã’られるメートル値ã§ã™ã€‚ + +デフォルト: -4 + </notification> + <notification label="RAW地形をアップãƒãƒ¼ãƒ‰" name="HelpRegionUploadRaw"> + ã“ã®ãƒœã‚¿ãƒ³ã‚’使ã£ã¦ã€.RAW ファイルを +ç¾åœ¨ã‚ãªãŸãŒå±…る地域ã«ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ã—ã¾ã™ã€‚ +ファイルãŒå¿…ãšæ£ã—ã„サイズã®256x256ã€RGB〠+ã¾ãŸã€ãƒãƒ£ãƒ³ãƒãƒ«æ•°ãŒ13ã§ã‚ã‚‹ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。 +地形(Terrain) ファイルを作æˆã™ã‚‹æœ€è‰¯ã®æ–¹æ³•ã¯ã€ +æ—¢å˜ã®RAWファイルをダウンãƒãƒ¼ãƒ‰ã™ã‚‹ã“ã¨ã§ã™ã€‚ +ã¾ãšæœ€åˆã®ãƒãƒ£ãƒ³ãƒãƒ«ï¼ˆåœŸåœ°ã®é«˜ã•)を変更ã—〠+アップãƒãƒ¼ãƒ‰ã™ã‚‹ã“ã¨ã‹ã‚‰å§‹ã‚られã¾ã™ã€‚ + +アップãƒãƒ¼ãƒ‰ã«ã¯45ç§’ã»ã©ã‹ã‹ã‚‹ã“ã¨ãŒã‚りã¾ã™ã€‚ +ã“ã“ã§æ³¨æ„ã™ã‚‹ã“ã¨ã¯ã€åœ°å½¢ãƒ•ァイルã®ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ã«ã‚ˆã£ã¦ã€åœŸåœ°ã«é…ç½®ã•れã¦ã„るオブジェクトã¯ã€Œå‹•ã‹ãªã„ã€ã¨ã„ã†ã“ã¨ã§ã™ã€‚ +影響ãŒã‚ã‚‹ã®ã¯ã€åœ°å½¢è‡ªä½“ã¨ã€åœŸåœ°ã«é–¢ä¿‚ã™ã‚‹è¨±å¯ã®ã¿ã§ã™ã€‚ +よã£ã¦ã€ã‚ªãƒ–ジェクトãŒåœ°ä¸‹ã«åŸ‹ã¾ã£ã¦ã—ã¾ã†ã“ã¨ãŒã‚ã‚‹ã®ã§ã”注æ„ãã ã•ã„。 + +地形è¨å®šç·¨é›†ã®æƒ…å ±ã¨è©³ç´°ã«ã¤ã„ã¦ã¯ã€F1ヘルプをã”覧ãã ã•ã„。 + </notification> + <notification label="RAW地形をダウンãƒãƒ¼ãƒ‰" name="HelpRegionDownloadRaw"> + ã“ã®ãƒœã‚¿ãƒ³ã‚’押ã™ã¨ã€æ¨™é«˜ãƒ•ィールドデータ〠+区画寸法ã€å£²ã‚Šå‡ºã—区画ステータスã€ã“ã®åœ°åŸŸã«ãŠã‘る許å¯ã‚’ +å«ã‚€ãƒ•ァイルをダウンãƒãƒ¼ãƒ‰ã—ã¾ã™ã€‚フォトショップã®ã‚ˆã†ãªãƒ—ãƒã‚°ãƒ©ãƒ ã§ã“ã®ãƒ•ァイルを開ãã«ã¯ã€ +以下ã®ã‚ˆã†ãªãƒ‰ã‚ュメントã®ã‚µã‚¤ã‚ºã‚’指定ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ï¼š +RGBã€256x256ã§ã€ãƒãƒ£ãƒ³ãƒãƒ«æ•°ãŒ13 +ã“ã®åœ°å½¢ãƒ•ァイルã¯ã€ä»–ã®æ–¹æ³•ã§ã¯é–‹ãã“ã¨ã¯ã§ãã¾ã›ã‚“。 + +地形ã«ãŠã‘る標高フィールドã®ç·¨é›†ã«é–¢ã™ã‚‹è©³ç´°ã«ã¤ã„ã¦ã¯ã€F1ヘルプをã”覧ãã ã•ã„。 + </notification> + <notification label="ä¸å‹•産ã®å¤ªé™½ã‚’使用" name="HelpRegionUseEstateSun"> + ã“ã®ãƒœãƒƒã‚¯ã‚¹ãŒãƒã‚§ãƒƒã‚¯ã•れã¦ã„ã‚‹ã¨ã€ã“ã®åœ°åŸŸã®å¤ªé™½ã¯ +ä¸å‹•産ã®ä»–ã®å ´æ‰€ã«ãŠã‘る太陽ã¨ä½ç½®ãŒåŒã˜ã«ãªã‚Šã¾ã™ã€‚ + +デフォルト: オン + </notification> + <notification label="太陽固定" name="HelpRegionFixedSun"> + ã“ã®ãƒœãƒƒã‚¯ã‚¹ã‚’ãƒã‚§ãƒƒã‚¯ã™ã‚‹ã¨ã€å¤ªé™½ã®ä½ç½®ã¯æ®µéšŽã‚¹ãƒ©ã‚¤ãƒ€ãƒ¼å†…ã« +è¨å®šã•れã€å‹•ã‹ãªããªã‚Šã¾ã™ã€‚ +デフォルト: オフ + </notification> + <notification label="地形を構築ã™ã‚‹" name="HelpRegionBakeTerrain"> + ã“ã®ãƒœã‚¿ãƒ³ã«ã‚ˆã‚Šã€ç¾åœ¨ã®åœ°å½¢ã®å½¢çŠ¶ã‚’æ–°ãŸãªãƒ‡ãƒ•ォルトã¨ã—ã¦ä¿å˜ã—ã¾ã™ã€‚ +一度ベークã•れるã¨ã€ã‚ãªãŸã‚„ä»–ã®äººãŒåœ°å½¢ç·¨é›†ã®ã€Œå¾©å¸°ã€ã‚ªãƒ—ションï¼ãƒ„ールを使用ã—ãŸéš›ã«ã€ä¿å˜ã•れãŸå½¢çжã«å›žå¾©ã§ãã¾ã™ã€‚ +ベークã•れãŸåœ°å½¢ã¯ã€åœ°å½¢ä¸Šæ˜‡ãŠã‚ˆã³ä¸‹é™å¢ƒç•Œã®ä¸é–“点ã§ã‚‚ã‚りã¾ã™ã€‚ + </notification> + <notification label="ä¸å‹•産マãƒãƒ¼ã‚¸ãƒ£ãƒ¼" name="HelpEstateEstateManager"> + ä¸å‹•産マãƒãƒ¼ã‚¸ãƒ£ãƒ¼ã¨ã¯ã€åœ°åŸŸã‚³ãƒ³ãƒˆãƒãƒ¼ãƒ«ã¨ +ä¸å‹•産è¨å®šãŒå§”ä»»ã•れãŸä½äººã‚’ã•ã—ã¾ã™ã€‚ä¸å‹•産マãƒãƒ¼ã‚¸ãƒ£ãƒ¼ã¯ã€ +アップãƒãƒ¼ãƒ‰ã€ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ã€ãŠã‚ˆã³åœ°å½¢æ§‹ç¯‰ã‚’除ã„ãŸãƒ‘ãƒãƒ«å†…ã® +è¨å®šã‚’変更ã§ãã¾ã™ã€‚特ç†ã™ã¹ãã¯ã€ +ä½äººã®ã‚¢ã‚¯ã‚»ã‚¹è¨±å¯ã¾ãŸã¯ç¦æ¢ã®è¨å®šãŒã§ãã‚‹ã“ã¨ã§ã™ã€‚ + +ä¸å‹•産マãƒãƒ¼ã‚¸ãƒ£ãƒ¼ã®è¿½åŠ ã¨å‰Šé™¤ã¯ã€ä¸å‹•産オーナーã®ã¿ãŒè¡Œã†ã“ã¨ãŒã§ãã€ãƒžãƒãƒ¼ã‚¸ãƒ£ãƒ¼åŒå£«ã§ã¯ä¸å¯èƒ½ã§ã™ã€‚ +ä¿¡é ¼ã§ãã‚‹ä½äººã®ã¿ä¸å‹•産マãƒãƒ¼ã‚¸ãƒ£ãƒ¼ã«ä»»å‘½ã—ã¦ãã ã•ã„。 +彼らã®è¡Œå‹•ã®å…¨è²¬ä»»ã¯ã€æœ€çµ‚çš„ã«ã¯ã‚ãªãŸã«ã‚りã¾ã™ã€‚ + </notification> + <notification label="ã‚°ãƒãƒ¼ãƒãƒ«ãƒ»ã‚¿ã‚¤ãƒ を使用" name="HelpEstateUseGlobalTime"> + ã“ã®ãƒœãƒƒã‚¯ã‚¹ãŒãƒã‚§ãƒƒã‚¯ã•れã¦ã„ã‚‹ã¨ã€ +ã‚ãªãŸã®æ‰€æœ‰åœ°ã®å¤ªé™½ã¯Linden社所有ã®ãƒ¡ã‚¤ãƒ³ãƒ©ãƒ³ãƒ‰ã®ä¸å‹•産ã§ã®å¤ªé™½ã®ä½ç½®ã«æº–ã˜ã¾ã™ã€‚ + +デフォルト: オン + </notification> + <notification label="太陽固定" name="HelpEstateFixedSun"> + ã“ã®ãƒœãƒƒã‚¯ã‚¹ãŒãƒã‚§ãƒƒã‚¯ã•れã¦ã„ã‚‹ã¨ã€ +太陽ã®ä½ç½®ã¯æ®µéšŽã‚¹ãƒ©ã‚¤ãƒ€ãƒ¼å†…ã«è¨å®šã•れã€å‹•ã‹ãªããªã‚Šã¾ã™ã€‚ + </notification> + <notification label="パブリック・アクセス" name="HelpEstateExternallyVisible"> + ã“ã®ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹ã¯ã€ +ä»–ã®ä¸å‹•産ã«ã„ã‚‹ä½äººãŒã€ã‚¢ã‚¯ã‚»ã‚¹ãƒªã‚¹ãƒˆã«ç™»éŒ²ã•れã¦ã„ãªãã¦ã‚‚ã“ã®ä¸å‹•産ã«ç«‹ã¡å…¥ã‚‹ã“ã¨ãŒã§ãã‚‹ã‹ã©ã†ã‹ã‚’è¨å®šã—ã¾ã™ã€‚ + +デフォルト: オン + </notification> + <notification label="直接テレãƒãƒ¼ãƒˆã‚’許å¯" name="HelpEstateAllowDirectTeleport"> + ãƒã‚§ãƒƒã‚¯ã•れã¦ã„ã‚‹ã¨ã€ä¸å‹•産ã®ã©ã“ã«ã§ã‚‚直接テレãƒãƒ¼ãƒˆãŒ +å¯èƒ½ã«ãªã‚Šã¾ã™ã€‚ãƒã‚§ãƒƒã‚¯ã•れã¦ã„ãªã„ã¨ã€æœ€ã‚‚è¿‘ã„テレãƒãƒ–ã« +テレãƒãƒ¼ãƒˆã—ã¾ã™ã€‚ + +デフォルト: オフ + </notification> + <notification label="アクセスを許å¯" name="HelpEstateAllowResident"> + ã“ã®ä¸å‹•産ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã¯ã€ã“ã“ã«ç™»éŒ²ã•れã¦ã„ã‚‹ä½äººã¨ +下記ã§ç‰¹åˆ¥ã«ç™»éŒ²ã•れãŸã‚°ãƒ«ãƒ¼ãƒ—ã®ã¿ã«è¨±å¯ã•れã¾ã™ã€‚ +ã“ã®è¨å®šã¯ã€Œãƒ‘ブリック・アクセスã€ãŒã‚ªãƒ•ã«ãªã£ã¦ã‚‹ã¨ãã®ã¿ä½¿ç”¨å¯èƒ½ã§ã™ã€‚ + </notification> + <notification label="グループ・アクセスを許å¯" name="HelpEstateAllowGroup"> + ã“ã®ä¸å‹•産ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã¯ã€ã“ã“ã«ç™»éŒ²ã•れã¦ã„るグループ㨠+下記ã§ç‰¹åˆ¥ã«ç™»éŒ²ã•れãŸä½äººã®ã¿ã«è¨±å¯ã•れã¾ã™ã€‚ +ã“ã®è¨å®šã¯ã€Œãƒ‘ブリック・アクセスã€ãŒã‚ªãƒ•ã«ãªã£ã¦ã‚‹ã¨ãã®ã¿ä½¿ç”¨å¯èƒ½ã§ã™ã€‚ + </notification> + <notification label="嫌ãŒã‚‰ã›ã«é–¢ã™ã‚‹ãƒ¡ãƒ¼ãƒ«å…ˆ" name="HelpEstateAbuseEmailAddress"> + ã“れを有効ãªãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã«è¨å®šã™ã‚‹ã¨ã€ãã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã«ã“ã®ä¸å‹•産ã«ãŠã„ã¦è¡Œã‚れ㟠+嫌ãŒã‚‰ã›ã®å ±å‘ŠãŒé€ä¿¡ã•れるよã†ã«ãªã‚Šã¾ã™ã€‚ +è¨å®šã‚’行ã‚ãªã„å ´åˆï¼ˆç©ºç™½ï¼‰ã€å«ŒãŒã‚‰ã›å ±å‘Šã¯ Linden Lab ã«ã®ã¿ +é€ä¿¡ã•れã¾ã™ã€‚ + </notification> + <notification label="アクセス拒å¦" name="HelpEstateBanResident"> + ã“ã®ãƒªã‚¹ãƒˆã®ä½äººã¯ã€ä»–ã®è¨å®šã«ã‹ã‹ã‚らãšã€ã‚ãªãŸã®ä¸å‹•産ã¸ã® +アクセスãŒç¦æ¢ã•れã¦ã„ã¾ã™ã€‚ + </notification> + <notification label="ボイスãƒãƒ£ãƒƒãƒˆã‚’許å¯" name="HelpEstateVoiceChat"> + ã“ã®ä¸å‹•産ã®åŒºç”»ã¯ã€ä½äººãŒè¿‘所ã®äººã¨å¯¾è©±ã§ãã‚‹ +独自ã®ãƒœã‚¤ã‚¹ãƒãƒ£ãƒ³ãƒãƒ«ã‚’æŒã¤ã“ã¨ãŒã§ãã¾ã™ã€‚ + +デフォルト: オフ + </notification> + <notification label="ボイスãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ä¸ä¸€è‡´" name="VoiceVersionMismatch"> + ã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã® Second Life ã¯ã€ +ã“ã®åœ°åŸŸã®ãƒœã‚¤ã‚¹ãƒãƒ£ãƒƒãƒˆæ©Ÿèƒ½ã«å¯¾å¿œã—ã¦ã„ã¾ã›ã‚“。 +ボイスãƒãƒ£ãƒƒãƒˆã‚’æ£ã—ã使用ã™ã‚‹ã«ã¯ã€ +Second Life ã®ã‚¢ãƒƒãƒ—デートãŒå¿…è¦ã§ã™ã€‚ + </notification> + <notification label="ä¸å‹•産約款" name="HelpEstateCovenant"> + ä¸å‹•産約款を定ã‚ã‚‹ã¨ã€è‡ªåˆ†ã®ä¸å‹•産内ã®åŒºç”»ã‚’販売ã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚ +約款を定ã‚ã¦ã„ãªã„ã¨åœŸåœ°ã¯å£²ã‚Œã¾ã›ã‚“。 +土地ã«é–¢ã™ã‚‹è¦å‰‡ã‚’é©ç”¨ã—ãŸããªã‹ã£ãŸã‚Šã€è³¼å…¥å‰ã«åœŸåœ°ã«é–¢ã™ã‚‹æƒ…å ±ã‚’è³¼å…¥è€…ã«çŸ¥ã‚‰ã›ãŸããªã„å ´åˆã€ã‚ãªãŸã®ç´„款ã®ãƒŽãƒ¼ãƒˆã‚«ãƒ¼ãƒ‰ã¯ç™½ç´™ã§ã‹ã¾ã„ã¾ã›ã‚“。 + +約款ã¯è³¼å…¥ã‚’考ãˆã¦ã„る人ã«ã€è¦å‰‡ã€ã‚¬ã‚¤ãƒ‰ãƒ©ã‚¤ãƒ³ã€æ–‡åŒ–çš„æƒ…å ±ã‚„ +å˜ã«ã‚ãªãŸãŒæœŸå¾…ã™ã‚‹ã“ã¨ã‚’ä¼ãˆã‚‹ãŸã‚ã«ã‚‚使ãˆã¾ã™ã€‚ +ã“ã“ã«ã¯ã€åŒºç”»è¦åˆ¶ã€å»ºé€ 物è¦åˆ¶ã€æ”¯æ‰•ã„オプションã€ãれã‹ã‚‰è³¼å…¥è€…ãŒäº‹å‰ã«ç›®ã‚’通ã—ã¦åŒæ„ã—ã¦ãŠãã¹ãã ã¨ã‚ãªãŸãŒæ€ã†é‡è¦ãªæƒ…å ±ã‚’ã™ã¹ã¦å…¥ã‚Œã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + +購入者ãŒãƒœãƒƒã‚¯ã‚¹ã‚’ãƒã‚§ãƒƒã‚¯ã—ã¦ç´„款ã«åŒæ„ã—ãªã„ã‹ãŽã‚Šã€è³¼å…¥ã®æ‰‹ç¶šãã¯å®Œäº†ã—ã¾ã›ã‚“。 +ä¸å‹•産約款ãŒå®šã‚られã¦ã„る区画ã§ã‚れã°ã€ã€ŒåœŸåœ°æƒ…å ±ã€ã‹ã‚‰ç´„款をã„ã¤ã§ã‚‚閲覧ã§ãã¾ã™ã€‚ + </notification> + <notification label="オブジェクトを購入ã§ãã¾ã›ã‚“" name="BuyObjectOneOwner"> + 複数ã®ã‚ªãƒ¼ãƒŠãƒ¼ã‹ã‚‰åŒæ™‚ã«ã‚ªãƒ–ジェクトを購入ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 +å˜ä¸€ã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’é¸æŠžã—ã€ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 + </notification> + <notification label="コンテンツを購入ã§ãã¾ã›ã‚“" name="BuyContentsOneOnly"> + 一度ã«è¤‡æ•°ã®ã‚ªãƒ–ジェクトã®ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã¯è³¼å…¥ã§ãã¾ã›ã‚“。 +é¸æŠžã™ã‚‹ã‚ªãƒ–ジェクトを1ã¤ã ã‘ã«ã—ã¦ã€ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 + </notification> + <notification label="コンテンツを購入ã§ãã¾ã›ã‚“" name="BuyContentsOneOwner"> + 複数ã®ã‚ªãƒ¼ãƒŠãƒ¼ã‹ã‚‰åŒæ™‚ã«ã‚ªãƒ–ジェクトを購入ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 +å˜ä¸€ã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’é¸æŠžã—ã€ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 + </notification> + <notification name="BuyOriginal"> + オリジナルã®ã‚ªãƒ–ジェクトを[OWNER]ã‹ã‚‰L$[PRICE]ã§è³¼å…¥ã—ã¾ã™ã‹ï¼Ÿ +ã“れã«ã‚ˆã‚Šã€ã‚ãªãŸãŒã‚ªãƒ–ジェクトã®ã‚ªãƒ¼ãƒŠãƒ¼ã«ãªã‚Šã¾ã™ã€‚ +å¯èƒ½ãªæ“作ã¯ã€ +変更:[MODIFYPERM]ã€ã‚³ãƒ”ー:[COPYPERM]〠+å†è²©ï¼ãƒ—レゼント[RESELLPERM]ã§ã™ã€‚ + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="BuyOriginalNoOwner"> + L$[PRICE]ã§ã‚ªãƒªã‚¸ãƒŠãƒ«ã®ã‚ªãƒ–ジェクトを購入ã—ã¾ã™ã‹ï¼Ÿ +ã“れã«ã‚ˆã‚Šã€ã‚ãªãŸãŒã‚ªãƒ–ジェクトã®ã‚ªãƒ¼ãƒŠãƒ¼ã«ãªã‚Šã¾ã™ã€‚ +å¯èƒ½ãªæ“作ã¯ã€ +変更:[MODIFYPERM]ã€ã‚³ãƒ”ー:[COPYPERM]〠+å†è²©ï¼ãƒ—レゼント[RESELLPERM]ã§ã™ã€‚ + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="BuyCopy"> + コピーを[OWNER]ã‹ã‚‰L$[PRICE]ã§è³¼å…¥ã—ã¾ã™ã‹ï¼Ÿ +購入ã—ãŸã‚ªãƒ–ジェクトã¯ã€ã‚ãªãŸã®æŒã¡ç‰©ã«ã‚³ãƒ”ーã•れã¾ã™ã€‚ +å¯èƒ½ãªæ“作ã¯ã€å¤‰æ›´ï¼š[MODIFYPERM]ã€ã‚³ãƒ”ー:[COPYPERM]〠+å†è²©ï¼ãƒ—レゼント[RESELLPERM]ã§ã™ã€‚ + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="BuyCopyNoOwner"> + L$[PRICE]ã§ã‚³ãƒ”ーを購入ã—ã¾ã™ã‹ï¼Ÿ +購入ã—ãŸã‚ªãƒ–ジェクトã¯ã€ã‚ãªãŸã®æŒã¡ç‰©ã«ã‚³ãƒ”ーã•れã¾ã™ã€‚ +å¯èƒ½ãªæ“作ã¯ã€å¤‰æ›´ï¼š[MODIFYPERM]ã€ã‚³ãƒ”ー:[COPYPERM]〠+å†è²©ï¼ãƒ—レゼント[RESELLPERM]ã§ã™ã€‚ + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="BuyContents"> + コンテンツを[OWNER]ã‹ã‚‰L$[PRICE]ã§è³¼å…¥ã—ã¾ã™ã‹ï¼Ÿ +購入ã—ãŸã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã¯ã€ã‚ãªãŸã®æŒã¡ç‰©ã«ã‚³ãƒ”ーã•れã¾ã™ã€‚ + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="BuyContentsNoOwner"> + L$[PRICE]ã§ã‚³ãƒ³ãƒ†ãƒ³ãƒ„を購入ã—ã¾ã™ã‹ï¼Ÿ +購入ã—ãŸã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã¯ã€ã‚ãªãŸã®æŒã¡ç‰©ã«ã‚³ãƒ”ーã•れã¾ã™ã€‚ + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="ConfirmPurchase"> + ã“ã®å–引ã¯ä»¥ä¸‹ã®ã¨ãŠã‚Šè¡Œã‚れã¾ã™ï¼š +[ACTION] + +ã“ã®è³¼å…¥ã‚’続行ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="ConfirmPurchasePassword" type="password"> + ã“ã®å–引ã¯ä»¥ä¸‹ã®ã¨ãŠã‚Šè¡Œã‚れã¾ã™ï¼š +[ACTION] + +ã“ã®è³¼å…¥ã‚’続行ã—ã¾ã™ã‹ï¼Ÿ +パスワードをå†å…¥åŠ›ã—ã€ã€ŒOKã€ã‚’クリックã—ã¦ãã ã•ã„。 + <form name="form"> + <input name="message" type="password"/> + <button name="ConfirmPurchase" text="OK"/> + <button name="Cancel" text="å–り消ã—"/> + </form> + </notification> + <notification name="SetPickLocation"> + メモ: +本ピックã®ãƒã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã‚’æ›´æ–°ã—ã¾ã—ãŸãŒã€ +ä»–ã®è©³ç´°ã¯å…ƒã®å€¤ã®ã¾ã¾ã«ãªã‚Šã¾ã™ã€‚ + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MoveInventoryFromObject"> + ã€Œã‚³ãƒ”ãƒ¼ç¦æ¢ã€ã®æŒã¡ç‰©ã‚¢ã‚¤ãƒ†ãƒ ãŒé¸æŠžã•れã¾ã—ãŸã€‚ +ã“れらã®ã‚¢ã‚¤ãƒ†ãƒ ã¯ã‚³ãƒ”ーã•れãªã„ã¾ã¾ã€ã‚ãªãŸã®æŒã¡ç‰©ã«ç§»å‹•ã•れã¾ã™ã€‚ + + +アイテムを動ã‹ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate ignoretext="ã‚³ãƒ”ãƒ¼ç¦æ¢ã®æŒã¡ç‰©ã‚’オブジェクトã‹ã‚‰ç§»å‹•ã•ã›ã‚‹ã¨ã" name="okcancelignore" notext="ã‚ャンセル" yestext="OK"/> + </notification> + <notification name="MoveInventoryFromScriptedObject"> + ã€Œã‚³ãƒ”ãƒ¼ç¦æ¢ã€ã®æŒã¡ç‰©ã‚¢ã‚¤ãƒ†ãƒ ãŒé¸æŠžã•れã¾ã—ãŸã€‚ +ã“れらã®ã‚¢ã‚¤ãƒ†ãƒ ã¯ã‚³ãƒ”ーã•れるã®ã§ã¯ãªãã€ã‚ãªãŸã®æŒã¡ç‰©ã«ç§»å‹•ã•れã¾ã™ã€‚ +ã“ã®ã‚ªãƒ–ジェクトã¯ã‚¹ã‚¯ãƒªãƒ—ト付ããªã®ã§ã€æŒã¡ç‰©ã«ç§»å‹•ã•ã›ã‚‹ã¨ +スクリプトã«èª¤å‹•作ãŒèµ·ãã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ + +æŒã¡ç‰©ã‚¢ã‚¤ãƒ†ãƒ を移動ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate ignoretext="ã‚³ãƒ”ãƒ¼ç¦æ¢ã®æŒã¡ç‰©ã‚’スクリプト付ãオブジェクトã‹ã‚‰ç§»å‹•ã•ã›ã‚‹ã¨ã" name="okcancelignore" notext="ã‚ャンセル" yestext="OK"/> + </notification> + <notification name="ClickActionNotPayable"> + è¦å‘Šï¼šã€Œã‚¯ãƒªãƒƒã‚¯ã§ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã«æ”¯æ‰•ã„ã€ã®è¨å®šãŒã•れã¾ã—ãŸã€‚ +ãŸã ã—ã€ã“れã¯ã‚¹ã‚¯ãƒªãƒ—トãŒé‡‘éŠmoney() イベントã«è¿½åŠ ã•れãŸå ´åˆã«ã®ã¿ä½œå‹•ã—ã¾ã™ã€‚ + <form name="form"> + <ignore name="ignore" text="money()イベントãªã—ã«ã€Œã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã«æ”¯æ‰•ã†ã€ã‚’è¨å®šã™ã‚‹ã¨ã"/> + </form> + </notification> + <notification name="OpenObjectCannotCopy"> + ã“ã®ã‚ªãƒ–ジェクトã«ã¯ã€ã‚ãªãŸãŒã‚³ãƒ”ーã§ãるアイテムã¯ã‚りã¾ã›ã‚“。 + </notification> + <notification name="WebLaunchAccountHistory"> + Second Life ウェブ・ページを開ã„㦠+アカウント履æ´ã‚’確èªã—ã¾ã™ã‹ï¼Ÿ + <usetemplate ignoretext="アカウント履æ´ã®ã‚¦ã‚§ãƒ–・ページをãƒãƒ¼ãƒ‰ã™ã‚‹ã¨ã" name="okcancelignore" notext="å–り消ã—" yestext="ページã«ç§»å‹•"/> + </notification> + <notification name="ClickOpenF1Help"> + Second Life ã®ã‚µãƒãƒ¼ãƒˆã‚¦ã‚§ãƒ–サイトを利用ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate ignoretext="Second Life ã®ã‚µãƒãƒ¼ãƒˆã‚¦ã‚§ãƒ–サイトを閲覧ã™ã‚‹ã«ã‚ãŸã£ã¦ã€‚" name="okcancelignore" notext="ã‚ャンセル" yestext="行ã"/> + </notification> + <notification name="ConfirmQuit"> + 終了ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚æ“作を続行ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate ignoretext="Second Life ã®çµ‚了ã«ã‚ãŸã£ã¦ã€‚" name="okcancelignore" notext="継続" yestext="終了"/> + </notification> + <notification name="HelpReportAbuseEmailLL"> + 利用è¦ç´„é•åã¨ã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ãƒ¼ã‚¹ã‚¿ãƒ³ãƒ€ãƒ¼ãƒ‰é•åã®å ±å‘Šã«ã“ã®ãƒ„ールをã”使用ãã ã•ã„。 å‚照: + +http://secondlife.com/corporate/tos.php +http://secondlife.com/corporate/cs.php + +利用è¦ç´„é•åã¨ã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ãƒ¼ã‚¹ã‚¿ãƒ³ãƒ€ãƒ¼ãƒ‰é•åã«é–¢ã™ã‚‹å…¨ã¦ã®ãƒ¬ãƒãƒ¼ãƒˆã¯ã€èª¿æŸ»ã•れã€è§£æ±ºã•れã¾ã™ã€‚ +以下ã®ãƒªãƒ³ã‚¯å…ˆã®è¢«å®³å ±å‘Šã«ã¦ãã®ç¢ºèªã‚’ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + +http://secondlife.com/support/incidentreport.php + </notification> + <notification name="HelpReportAbuseEmailEO"> + é‡è¦ï¼š ã“ã®ãƒ¬ãƒãƒ¼ãƒˆã¯Linden Lab 社ã§ã¯ãªã〠+ã‚ãªãŸãŒç¾åœ¨ã„る地域ã®ã‚ªãƒ¼ãƒŠãƒ¼ã«é€ã‚‰ã‚Œã¾ã™ã€‚ +- +ã‚ãªãŸãŒä»Šã„る地域ã®ã‚ªãƒ¼ãƒŠãƒ¼ã¯ã€ +ä½äººã¨è¨ªå•者ã¸ã®ã‚µãƒ¼ãƒ“スã®ä¸€ç’°ã¨ã—ã¦ã€ã“ã®åœ°åŸŸã‹ã‚‰ã®ãƒ¬ãƒãƒ¼ãƒˆã‚’ã™ã¹ã¦å—ã‘付ã‘ã€è§£æ±ºã™ã‚‹ã“ã¨ã«åŒæ„ã—ã¦ã„ã¾ã™ã€‚ +よã£ã¦Linden Lab 社ãŒã€ +ã‚ãªãŸãŒã“ã“ã‹ã‚‰æå‡ºã™ã‚‹ãƒ¬ãƒãƒ¼ãƒˆã‚’調査ã™ã‚‹ã“ã¨ã¯ã‚りã¾ã›ã‚“。 +地域ã®ã‚ªãƒ¼ãƒŠãƒ¼ã¯ã€ä¸å‹•ç”£ç´„æ¬¾ã§æŒ‡å®šã—ã¦ã„る地元ã®è¦å‰‡ã‚’基ã«ã€å ±å‘Šã•れãŸå•題を解決ã—ã¾ã™ã€‚ +(「世界ã€ã®ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã‹ã‚‰ã€ŒåœŸåœ°æƒ…å ±ã€ã‚’é¸ã¶ã¨ã€ç´„款を閲覧ã§ãã¾ã™ï¼‰ +- +ã“ã®ãƒ¬ãƒãƒ¼ãƒˆã«é–¢ã™ã‚‹è§£æ±ºç–ã¯ã€ã“ã®åœ°åŸŸã«ã ã‘当ã¦ã¯ã¾ã‚Šã¾ã™ã€‚ +ä½äººãŒSecond Life ã®ä»–ã®åœ°åŸŸã¸ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹éš›ã€ +ã“ã®ãƒ¬ãƒãƒ¼ãƒˆã®çµæžœã«å½±éŸ¿ã•れるã“ã¨ã¯ã‚りã¾ã›ã‚“。 +Linden Lab 社ã ã‘ãŒSecond Life 全域ã«ãŠã‘ã‚‹ +ã‚¢ã‚¯ã‚»ã‚¹åˆ¶é™æ¨©ã‚’æŒã£ã¦ã„ã¾ã™ã€‚ + </notification> + <notification name="HelpReportBug"> + ã“ã®ãƒ„ールã¯ã€èª¬æ˜Žã©ãŠã‚Šã«å‹•作ã—ãªã„ãªã©ã®ãƒ†ã‚¯ãƒ‹ã‚«ãƒ«ãªãƒ•ィーãƒãƒ£ãƒ¼ã®ãƒ¬ãƒãƒ¼ãƒˆã®ã¿ã«ä½¿ç”¨ã—ã¦ãã ã•ã„。 +ã§ãã‚‹ã ã‘詳ã—ã„æƒ…å ±ã‚’æä¾›ã—ã¦ãã ã•ã„。 +自動返ç”メールã«ã€ã‚ˆã‚Šè©³ã—ã„æƒ…å ±ã‚’ä»˜ã‘åŠ ãˆã¦è¿”ä¿¡ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ +ãƒã‚°ãƒ¬ãƒãƒ¼ãƒˆã¯å…¨ã¦èª¿æŸ»ã•れ解決ã•れã¾ã™ã€‚ã“れã«ã‚ˆã£ã¦Eメールã§è¿”ç”ãŒé€ã‚‰ã‚Œã¦ãã‚‹ã“ã¨ã¯ã‚りã¾ã›ã‚“。 +- +テクニカルãªå•題ãŒç”Ÿã˜ãŸå ´åˆã¯ã€ +次ã®ã‚µãƒãƒ¼ãƒˆã«é€£çµ¡ã—ã¦ãã ã•ã„: +http://secondlife.com/community/support.php +- +注æ„:未完æˆã®å ±å‘Šã¯èª¿æŸ»ã•れã¾ã›ã‚“。 + </notification> + <notification name="HelpReportAbuseSelectCategory"> + 嫌ãŒã‚‰ã›å ±å‘Šã®ã‚«ãƒ†ã‚´ãƒªã‚’é¸æŠžã—ã¦ãã ã•ã„。 +ã‚«ãƒ†ã‚´ãƒªã‚’é¸æŠžã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šã€å«ŒãŒã‚‰ã›å ±å‘Šã®å‡¦ç†ã‚„ä¿ç®¡ã«å¤§å¤‰å½¹ç«‹ã¡ã¾ã™ã€‚ + </notification> + <notification name="HelpReportBugSelectCategory"> + ãƒã‚°ã®ã‚«ãƒ†ã‚´ãƒªã‚’é¸æŠžã—ã¦ãã ã•ã„。 +ã‚«ãƒ†ã‚´ãƒªã‚’é¸æŠžã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šã€ãƒã‚°å ±å‘Šã®å‡¦ç†ã‚„ä¿ç®¡ã«å¤§å¤‰å½¹ç«‹ã¡ã¾ã™ã€‚ + </notification> + <notification name="HelpReportAbuseAbuserNameEmpty"> + 嫌ãŒã‚‰ã›è¡Œç‚ºã‚’ã—ãŸäººã®åå‰ã‚’入力ã—ã¦ãã ã•ã„。 +æ£ç¢ºãªæƒ…å ±ã®å…¥åŠ›ã«ã‚ˆã‚Šã€å«ŒãŒã‚‰ã›å ±å‘Šã®å‡¦ç†ã‚„ä¿ç®¡ã«å¤§å¤‰å½¹ç«‹ã¡ã¾ã™ã€‚ + </notification> + <notification name="HelpReportAbuseAbuserLocationEmpty"> + 嫌ãŒã‚‰ã›ãŒã‚ã£ãŸå ´æ‰€ã‚’入力ã—ã¦ãã ã•ã„。 +æ£ç¢ºãªæƒ…å ±ã®å…¥åŠ›ã«ã‚ˆã‚Šã€å«ŒãŒã‚‰ã›å ±å‘Šã®å‡¦ç†ã‚„ä¿ç®¡ã«å¤§å¤‰å½¹ç«‹ã¡ã¾ã™ã€‚ + </notification> + <notification name="HelpReportAbuseSummaryEmpty"> + 嫌ãŒã‚‰ã›ã®æ¦‚è¦ã‚’入力ã—ã¦ãã ã•ã„。 +æ£ç¢ºãªæ¦‚è¦ã®å…¥åŠ›ã«ã‚ˆã‚Šã€ +嫌ãŒã‚‰ã›å ±å‘Šã®å‡¦ç†ã‚„ä¿ç®¡ã«å¤§å¤‰å½¹ç«‹ã¡ã¾ã™ã€‚ + </notification> + <notification name="HelpReportBugSummaryEmpty"> + ãƒã‚°ã®æ¦‚è¦ã‚’入力ã—ã¦ãã ã•ã„。 +æ£ç¢ºãªæ¦‚è¦ã®å…¥åŠ›ã«ã‚ˆã‚Šã€ãƒã‚°å ±å‘Šã®å‡¦ç†ã‚„ä¿ç®¡ã«å¤§å¤‰å½¹ç«‹ã¡ã¾ã™ã€‚ + </notification> + <notification name="HelpReportAbuseDetailsEmpty"> + 嫌ãŒã‚‰ã›ã®è©³ç´°ãªèª¬æ˜Žã‚’入力ã—ã¦ãã ã•ã„。 +åå‰ã‚„嫌ãŒã‚‰ã›ã®è©³ç´°ã‚’ã€ã§ãã‚‹ã ã‘具体的ã«å…¥åŠ›ã—ã¦ãã ã•ã„。 + +æ£ç¢ºãªèª¬æ˜Žã®å…¥åŠ›ã«ã‚ˆã‚Šã€ +嫌ãŒã‚‰ã›å ±å‘Šã®å‡¦ç†ã‚„ä¿ç®¡ã«å¤§å¤‰å½¹ç«‹ã¡ã¾ã™ã€‚ + </notification> + <notification name="HelpReportBugDetailsEmpty"> + ãƒã‚°ã®è©³ç´°ãªèª¬æ˜Žã‚’入力ã—ã¦ãã ã•ã„。 +ãƒã‚°ãŒã©ã®ã‚ˆã†ãªæ¡ä»¶ã§å†ç¾ã™ã‚‹ã‹ãªã©ã‚’ã€ã§ãã‚‹ã ã‘具体的ã«å…¥åŠ›ã—ã¦ãã ã•ã„。 + +æ£ç¢ºãªèª¬æ˜Žã®å…¥åŠ›ã«ã‚ˆã‚Šã€ãƒã‚°å ±å‘Šã®å‡¦ç†ã‚„ä¿ç®¡ã«å¤§å¤‰å½¹ç«‹ã¡ã¾ã™ã€‚ + </notification> + <notification name="HelpReportAbuseContainsCopyright"> + ä½äººã®çš†æ§˜ã¸ã€ + +知的財産ã®ä¾µå®³ã«é–¢ã™ã‚‹å ±å‘Šã‚’行ã†éš›ã«ã¯ã€ä»¥ä¸‹ã®ç‚¹ã«æ³¨æ„ã—ã¦ãã ã•ã„。 + +(1) 嫌ãŒã‚‰ã›ã®å ±å‘Šã®ãƒ—ãƒã‚»ã‚¹ +Second Life ã®æ¨©é™ã‚·ã‚¹ãƒ†ãƒ を悪用ã—ã¦ã„ã‚‹ä½äººã‚’見ã¤ã‘ãŸã‚‰ã€ +嫌ãŒã‚‰ã›ã®å ±å‘Šã‚’行ã£ã¦ãã ã•ã„。 +例ãˆã°ã‚³ãƒ”ーBotã®ä½¿ç”¨ã€ãれã«ä¼¼ãŸãƒ„ールã®ä½¿ç”¨ã«ã‚ˆã‚‹çŸ¥çš„財産権ã®ä¾µå®³ãŒã‚りã¾ã™ã€‚ +アビューズãƒãƒ¼ãƒ ã¯èª¿æŸ»ã«åŸºã¥ã〠+Second Life ã®ã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ãƒ¼ã‚¹ã‚¿ãƒ³ãƒ€ãƒ¼ãƒ‰ã‚„ +利用è¦ç´„ã«é•åã™ã‚‹è¡Œç‚ºã¨åˆ¤æ–ã•れãŸå ´åˆã«ã¯é©åˆ‡ãªå‡¦ç½®ã‚’行ã£ã¦ã„ã¾ã™ã€‚ +ãŸã ã—ã€ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã‚’Second Life ã‹ã‚‰æ’¤åŽ»ã—ã¦ã»ã—ã„〠+ã¨ã„ã£ãŸè¦æœ›ã«ã¯ã‚¢ãƒ“ューズãƒãƒ¼ãƒ ã¯å¿œãˆã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。 + +(2) DMCA(デジタルミレニアム著作権法)åŠã³ã‚³ãƒ³ãƒ†ãƒ³ãƒ„撤去プãƒã‚»ã‚¹ +Second Life ã‹ã‚‰ã®ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã®æ’¤åŽ»ã‚’ãƒªã‚¯ã‚¨ã‚¹ãƒˆã™ã‚‹ã«ã¯ã€ +è‘—ä½œæ¨©ä¾µå®³é€šçŸ¥ã®æå‡ºã‚’è¡Œã†å¿…è¦ãŒã‚りã¾ã™ã€‚ +å‚照: http://secondlife.com/corporate/dmca.php + +ã“ã®ä»¶ã«é–¢ã™ã‚‹å«ŒãŒã‚‰ã›ã®å ±å‘Šã‚’ç¶šã‘ã‚‹éš›ã¯ã€ã“ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’é–‰ã˜ã¦ãã ã•ã„ã€‚é¸æŠžã™ã¹ãカテゴリã¯ã€ŒçŸ¥çš„財産ã®ä¾µå®³ï¼žã‚³ãƒ”ーBotåŠã³æ¨©é™ã®æ‚ªç”¨ã€ã®ã»ã†ãŒé©ã—ã¦ã„ã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“ã®ã§ã”確èªãã ã•ã„。 + +よã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚ + +Linden Lab + </notification> + <notification name="FailedRequirementsCheck"> + 以下ã®å¿…è¦ãªã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆãŒã€[FLOATER]ã‹ã‚‰æŠœã‘è½ã¡ã¦ã„ã¾ã™ +[COMPONENTS] + </notification> + <notification label="æ—¢å˜ã®ä»˜å±žå“ã‚’ç½®æ›" name="ReplaceAttachment"> + 体ã®ã“ã®éƒ¨ä½ã«ã¯ã‚ªãƒ–ジェクトãŒè£…ç€ã•れã¦ã„ã¾ã™ã€‚ +é¸æŠžã•れãŸã‚ªãƒ–ジェクトã¨ç½®ãæ›ãˆã¾ã™ã‹ï¼Ÿ + <form name="form"> + <ignore name="ignore" save_option="true" text="ç¾åœ¨ã€è£…ç€ã—ã¦ã„ã‚‹ã‚‚ã®ã‚’ç½®æ›ã™ã‚‹ã¨ã"/> + <button ignore="自動的ã«äº¤æ›" name="Yes" text="OK"/> + <button ignore="交æ›ã—ãªã„" name="No" text="ã‚ャンセル"/> + </form> + </notification> + <notification label="å–り込ã¿ä¸ã®è¦å‘Š" name="BusyModePay"> + ç¾åœ¨ã€å–り込ã¿ä¸ã®ãŸã‚ã€ã“ã®æ”¯æ‰•ã„㨠+å¼•ãæ›ãˆã®ã‚¢ã‚¤ãƒ†ãƒ ã‚’å—ã‘å–ã‚‹ã“ã¨ãŒ +ã§ãã¾ã›ã‚“。 + +ã“ã®å–引を完了ã™ã‚‹å‰ã«ã€å–り込ã¿ä¸ã®è¨å®šã‚’解除ã—ã¾ã™ã‹ï¼Ÿ + <form name="form"> + <ignore name="ignore" save_option="true" text="å–り込ã¿ä¸ã®äººã¾ãŸã¯ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã«æ”¯æ‰•ã†ã¨ã"/> + <button ignore="常ã«å–り込ã¿ä¸ã®è¨å®š" name="Yes" text="OK"/> + <button ignore="å–り込ã¿ä¸ã®è¨å®šã«ã—ãªã„" name="No" text="ã‚ャンセル"/> + </form> + </notification> + <notification name="ConfirmEmptyTrash"> + ゴミ箱フォルダã®ä¸èº«ã‚’完全ã«å‰Šé™¤ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚æ“作を続行ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate ignoretext="æŒã¡ç‰©å†…ã®ã€Œã”ã¿ç®±ã€ãƒ•ォルダを空ã«ã™ã‚‹ã¨ã" name="okcancelignore" notext="ã‚ャンセル" yestext="OK"/> + </notification> + <notification name="ConfirmClearBrowserCache"> + 本当ã«ãƒ–ラウザã®ã‚ャッシュをクリアã—ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="ã‚ャンセル" yestext="ã¯ã„"/> + </notification> + <notification name="ConfirmClearCookies"> + 本当ã«ã‚¯ãƒƒã‚ーをクリアã—ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="ã‚ャンセル" yestext="ã¯ã„"/> + </notification> + <notification name="ConfirmClearMediaUrlList"> + ä¿å˜ã•れ㟠URL ã®ãƒªã‚¹ãƒˆã‚’消去ã—ã¾ã™ã€‚よã‚ã—ã„ã§ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="ã‚ャンセル" yestext="ã¯ã„"/> + </notification> + <notification name="ConfirmEmptyLostAndFound"> + éºå¤±ç‰©ãƒ•ォルダã®ä¸èº«ã‚’完全ã«å‰Šé™¤ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚æ“作を続行ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate ignoretext="æŒã¡ç‰©å†…ã®ã€Œéºå¤±ç‰©ã€ãƒ•ォルダを空ã«ã™ã‚‹ã¨ã" name="okcancelignore" notext="ã„ã„ãˆ" yestext="ã¯ã„"/> + </notification> + <notification name="CopySLURL"> + 以下ã®SLURLãŒã‚¯ãƒªãƒƒãƒ—ボードã«ã‚³ãƒ”ーã•れã¾ã—ãŸã€‚ + [SLURL] + +ä»–ã®äººãŒã‚¢ã‚¯ã‚»ã‚¹ã—ã‚„ã™ã„よã†ã«ã‚¦ã‚§ãƒ–・ページã«è¼‰ã›ãŸã‚Šã€ +ブラウザã®ã‚¢ãƒ‰ãƒ¬ã‚¹ãƒ»ãƒãƒ¼ã«è²¼ã‚Šä»˜ã‘ã¦ã€è‡ªåˆ†ã§ã‚¢ã‚¯ã‚»ã‚¹ã—ã¦ã¿ã¾ã—ょã†ã€‚ + <form name="form"> + <ignore name="ignore" text="SLURLをクリップボードã«ã‚³ãƒ”ーã™ã‚‹ã¨ã"/> + </form> + </notification> + <notification name="GraphicsPreferencesHelp"> + ã“ã®ãƒ‘ãƒãƒ«ã§ã¯ã€ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã®ã‚µã‚¤ã‚ºã¨è§£åƒåº¦ã€ãŠã‚ˆã³ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã®ã‚°ãƒ©ãƒ•ィックã®å“質をè¨å®šã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚「環境è¨å®šã€ï¼žã€Œè¡¨ç¤ºã€ã®ã‚¤ãƒ³ã‚¿ãƒ•ェースã§ã¯ã€ä½Žã€ä¸ã€é«˜ã€è¶…高ã®4ã¤ã®ä¸ã‹ã‚‰ã‚°ãƒ©ãƒ•ã‚£ãƒƒã‚¯ãƒ»ãƒ¬ãƒ™ãƒ«ã‚’é¸æŠžã§ãã¾ã™ã€‚ã¾ãŸã€ã€Œã‚«ã‚¹ã‚¿ãƒ ã€ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹ã‚’クリックã—ã€ä»¥ä¸‹ã®ã‚°ãƒ©ãƒ•ィックスã®è¨å®šã‚’カスタマイズã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ + +シェーダー:ピクセル・シェーダーã®ã•ã¾ã–ã¾ãªç¨®é¡žã‚’有効ã¾ãŸã¯ç„¡åйã«ã—ã¾ã™ã€‚ + +å射詳細:水ãŒåå°„ã™ã‚‹ã‚ªãƒ–ジェクトã®ç¨®é¡žã‚’è¨å®šã—ã¾ã™ã€‚ + +ã‚¢ãƒã‚¿ãƒ¼ãƒ»ãƒ¬ãƒ³ãƒ€ãƒªãƒ³ã‚°ï¼šã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã«ã‚ˆã‚‹ã‚¢ãƒã‚¿ãƒ¼ã®ãƒ¬ãƒ³ãƒ€ãƒªãƒ³ã‚°æ–¹æ³•ã«å½±éŸ¿ã™ã‚‹ã‚ªãƒ—ションをè¨å®šã—ã¾ã™ã€‚ + +æç”»è·é›¢ï¼šã‚ãªãŸã®è¦–点ã‹ã‚‰è¦–界ã®ã©ã®ãらã„ã®è·é›¢ã¾ã§ã€ã‚ªãƒ–ジェクトãŒãƒ¬ãƒ³ãƒ€ãƒªãƒ³ã‚°ã•れるã‹ã«å½±éŸ¿ã—ã¾ã™ã€‚ + +最大パーティクル数:画é¢ã«ä¸€åº¦ã«è¦‹ã‚‹ã“ã¨ãŒã§ãã‚‹ãƒ‘ãƒ¼ãƒ†ã‚£ã‚¯ãƒ«ã®æœ€å¤§æ•°ã‚’è¨å®šã—ã¾ã™ã€‚ + +ãƒã‚¹ãƒˆãƒ—ãƒã‚»ã‚¹å“質:グãƒãƒ¼åŠ¹æžœï¼ˆè¼ã)ãŒãƒ¬ãƒ³ãƒ€ãƒªãƒ³ã‚°ã•れる際ã®è§£åƒåº¦ã‚’è¨å®šã—ã¾ã™ã€‚ + +メッシュ詳細: 特定ã®ã‚ªãƒ–ジェクトã®ãƒ¬ãƒ³ãƒ€ãƒªãƒ³ã‚°æ™‚ã®ç´°éƒ¨è¡¨ç¾ã€ã¾ãŸã¯ä¸‰è§’å½¢ã®æ•°ã‚’è¨å®šã—ã¾ã™ã€‚ 値を大ããã™ã‚‹ã»ã©ãƒ¬ãƒ³ãƒ€ãƒªãƒ³ã‚°ã«æ™‚é–“ãŒã‹ã‹ã‚Šã¾ã™ãŒã€ã‚ªãƒ–ジェクトãŒã‚ˆã‚Šè©³ç´°ã«è¡¨ç¤ºã•れã¾ã™ã€‚ + +ライティング詳細:レンダリングã™ã‚‹å…‰æºã®ç¨®é¡žã‚’é¸æŠžã—ã¾ã™ã€‚ + +地形詳細: 地形テクスãƒãƒ£ã®ç´°éƒ¨è¡¨ç¾ã‚’è¨å®šã—ã¾ã™ã€‚ + </notification> + <notification name="WLSavePresetAlert"> + ä¿å˜ã•れãŸäº‹å‰è¨å®šã‚’上書ãã—ã¾ã™ã‹ï¼Ÿ + <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="HelpEditSky"> + ウィンドライトã®å„種スライダーを編集ã—ã¦ç©ºã‚’作æˆãŠã‚ˆã³ä¿å˜ã—ã¾ã™ã€‚ + </notification> + <notification name="HelpEditDayCycle"> + 1 日を通ã—ã¦å¤‰åŒ–ã™ã‚‹ç©ºã®æ§˜åã‚’è¨å®šã—ã¾ã™ã€‚ + </notification> + <notification name="EnvSettingsHelpButton"> + 次ã®å„è¨å®šã¯ã‚³ãƒ³ãƒ”ュータ上ã§ã‚¤ãƒ³ãƒ¯ãƒ¼ãƒ«ãƒ‰ã®ç’°å¢ƒãŒã©ã®ã‚ˆã†ã«è¡¨ç¤ºã•れるã‹ã‚’調整ã—ã¾ã™ã€‚ è¨å®šã®ã™ã¹ã¦ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã«ã¯ãŠä½¿ã„ã®ã‚°ãƒ©ãƒ•ィック・カードãŒå‘¨å›²ï¼ˆå¤§æ°—)シェーダー (atmospheric shaders) をサãƒãƒ¼ãƒˆã—ã¦ã„ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ + +「時間帯ã€ã‚¹ãƒ©ã‚¤ãƒ€ãƒ¼ã‚’調整ã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šãƒ“ューワã§å®Ÿéš›ã«ä½¿ç”¨ã™ã‚‹æ™‚間帯を変更ã§ãã¾ã™ã€‚ + +「雲ã®é‡ã€ã‚¹ãƒ©ã‚¤ãƒ€ãƒ¼ã‚’調整ã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šç©ºã‚’ãŠãŠã†é›²ã®é‡ã‚’制御ã§ãã¾ã™ã€‚ + +「水ã®è‰²ã€ã‚«ãƒ©ãƒ¼ãƒ»ãƒ”ッカーã§è‰²ã‚’é¸æŠžã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šæ°´ã®è‰²ã‚’変更ã§ãã¾ã™ã€‚ + +「水ä¸ã®ãƒ•ォグ効果ã€ã‚¹ãƒ©ã‚¤ãƒ€ãƒ¼ã‚’調整ã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šæ°´ã®é€æ˜Žåº¦ã‚’制御ã§ãã¾ã™ã€‚ + +「ä¸å‹•ç”£ã®æ™‚刻を使用ã€ã‚’クリックã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šæ™‚刻ã¯ãƒªã‚»ãƒƒãƒˆã•れ地域ã®ç¾åœ¨æ™‚刻ã«é€£å‹•ã•ã›ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + +「空ã®é«˜åº¦ãªè¨å®šã€ã‚’クリックã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šç©ºã®ã‚ˆã‚Šé«˜åº¦ãªè¨å®šã‚’行ã†ãŸã‚ã®ç·¨é›†ãƒ—ãƒã‚°ãƒ©ãƒ ã‚’èµ·å‹•ã§ãã¾ã™ã€‚ + +「水ã®é«˜åº¦ãªè¨å®šã€ã‚’クリックã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šæ°´ã®ã‚ˆã‚Šé«˜åº¦ãªè¨å®šã‚’行ã†ãŸã‚ã®ç·¨é›†ãƒ—ãƒã‚°ãƒ©ãƒ ã‚’èµ·å‹•ã§ãã¾ã™ã€‚ + </notification> + <notification name="HelpDayCycle"> + 「デイ・サイクル編集ã€ã§ã¯ã€ +Second Life ã§ã®æ˜¼ã¨å¤œã®ç©ºã®å¤‰åŒ–を制御ã§ãã¾ã™ã€‚ +ã“れã¯ã€ŒåŸºæœ¬ç’°å¢ƒç·¨é›†ã€ã®ã€Œæ™‚間帯ã€ã‚¹ãƒ©ã‚¤ãƒ€ãƒ¼ã§ä½¿ç”¨ã•れるサイクルã§ã™ã€‚ + +「デイ・サイクル編集ã€ã¯ã‚ーフレームをè¨å®šã™ã‚‹ã“ã¨ã§æ©Ÿèƒ½ã—ã¾ã™ã€‚ +å„ã‚ーフレームã«ã¯ãƒ—リセットã•れãŸç©ºã®è¨å®šãŒé–¢é€£ä»˜ã‘られã¦ã„ã¾ã™ã€‚(時間グラフã«ç°è‰²ã®ç¯€ã¨ã—ã¦è¡¨ç¤ºã•れã¾ã™ï¼‰ +ウィンドライト( WindLight )ã¯ã‚ーフレーム間をデータ補間ã—〠+時間ã®çµŒéŽã¨ã¨ã‚‚ã«ç©ºã®è‡ªç„¶ãªã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ã‚’作り出ã—ã¾ã™ã€‚ + +時間グラフã®ä¸Šã«è¡¨ç¤ºã•れる黄色ã®çŸ¢å°ã¯ã€æ™‚刻をもã¨ã«ã—ãŸç¾åœ¨ã®çœºã‚を表ã—ã¦ã„ã¾ã™ã€‚ +黄色ã®çŸ¢å°ã‚’クリック&ドラッグã™ã‚‹ã“ã¨ã§ã€ +1 æ—¥ã®ç§»ã‚Šå¤‰ã‚りを見るã“ã¨ãŒã§ãã¾ã™ã€‚ +「ã‚ーã®è¿½åŠ ã€ãƒœã‚¿ãƒ³ã¾ãŸã¯ã€Œã‚ーã®å‰Šé™¤ã€ãƒœã‚¿ãƒ³ã‚’押ã—ã¦ã€ +時間グラフã®å³å´ã«ã‚ãƒ¼ãƒ•ãƒ¬ãƒ¼ãƒ ã‚’è¿½åŠ ã‚ã‚‹ã„ã¯å‰Šé™¤ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + +ã‚ãƒ¼ãƒ•ãƒ¬ãƒ¼ãƒ ã®æ™‚刻を指定ã™ã‚‹ã«ã¯ã€ +æ™‚é–“ã‚°ãƒ©ãƒ•ã«æ²¿ã£ã¦ãƒ‰ãƒ©ãƒƒã‚°ã™ã‚‹ã‹ã€Œã‚ーフレームã®è¨å®šã€ã®ãƒ•レーム内ã§å€¤ã‚’直接入力ã—ã¾ã™ã€‚ +「ã‚ーフレームã®è¨å®šã€ã®ãƒ•レーム内ã§ã¯ã‚ーフレームã«ã‚¦ã‚£ãƒ³ãƒ‰ãƒ©ã‚¤ãƒˆï¼ˆ WindLight )ã®äº‹å‰è¨å®šã‚’関連付ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + +「サイクルã®é•·ã•ã€ã§ã¯1 æ—¥å…¨ä½“ã®æ™‚間を指定ã§ãã¾ã™ã€‚ +ã“ã®å€¤ã‚’低ãè¨å®šã™ã‚‹ã¨ï¼ˆä¾‹ãˆã°2分)ã€24 æ™‚é–“ã®æ™‚間グラフ㯠+実時間㮠2 分間ã«ç›¸å½“ã™ã‚‹ã“ã¨ã‚’æ„味ã—ã¾ã™ã€‚ +時間グラフã¨ã‚ーフレーム・サイクルã®è¨å®šãŒå®Œäº†ã—ãŸã‚‰ã€ +「å†ç”Ÿã€ãƒœã‚¿ãƒ³ã¨ã€Œåœæ¢ã€ãƒœã‚¿ãƒ³ã‚’使用ã—ã¦çµæžœã‚’プレビューã—ã¦ã¿ã¾ã—ょã†ã€‚ +ã¾ãŸã€æ™‚間グラフ上ã®é»„è‰²ã„æ™‚刻表示矢å°ã‚’移動ã™ã‚‹ã“ã¨ã«ã‚ˆã£ã¦ã‚‚サイクルã®å¤‰åŒ–をインタラクティブã«ç¢ºèªã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ 「ä¸å‹•ç”£ã®æ™‚刻を使用ã€ãƒœã‚¿ãƒ³ã‚’使用ã™ã‚‹ã“ã¨ã§æ—¥ã®é•·ã•ã¨æ™‚刻ãŒä¸å‹•産ã®ãƒ‡ã‚¤ãƒ»ã‚µã‚¤ã‚¯ãƒ«ã«åŒæœŸã•れã¾ã™ã€‚ + +デイ・サイクルã®è¨å®šãŒå®Œäº†ã—ãŸã‚‰ã€ã€Œãƒ‡ã‚¤ãƒ»ãƒ†ã‚¹ãƒˆã‚’ä¿å˜ã€ãƒœã‚¿ãƒ³ãŠã‚ˆã³ã€Œãƒ‡ã‚¤ãƒ»ãƒ†ã‚¹ãƒˆã‚’ãƒãƒ¼ãƒ‰ã€ãƒœã‚¿ãƒ³ã‚’使用ã—ã¦ãƒ‡ã‚¤ãƒ»ã‚µã‚¤ã‚¯ãƒ«ã‚’ä¿å˜ãŠã‚ˆã³ãƒãƒ¼ãƒ‰ã—ã¾ã™ã€‚ +å°šã€ç¾åœ¨ã®ä»•様ã§ã¯ãƒ‡ã‚¤ãƒ»ã‚µã‚¤ã‚¯ãƒ«ã§æŒ‡å®šã§ãã‚‹ã®ã¯ +1 日分ã ã‘ã§ã™ã€‚ + </notification> + <notification name="HelpBlueHorizon"> + 空ã®è‰²ã‚’調整ã™ã‚‹ã«ã¯ 「R〠(赤)ã€ã€ŒG〠(緑)ã€ã€ŒB〠(é’) ã®å„スライダーを使用ã—ã¾ã™ã€‚  「I〠スライダーを使用ã™ã‚‹ã¨ã€3 ã¤ã® RGB スライダーを一斉ã«å‹•ã‹ã™ã“ã¨ãŒã§ãã¾ã™ã€‚ + </notification> + <notification name="HelpHazeHorizon"> + 「空ã¨é 景ã®éœ²å…‰ã€ã¯é¢¨æ™¯ã®éœ²å…‰é‡å…¨ä½“を調整ã™ã‚‹ä¸Šã§æœ€ã‚‚便利ãªãƒ‘ラメーター㮠1 ã¤ã§ã™ã€‚ 太陽光ã«ã‚ˆã‚‹ãƒ›ãƒ¯ã‚¤ãƒˆã‚¢ã‚¦ãƒˆç¾è±¡ã‚„æš—ã絞り込んã è¨å®šãªã©ã€ã•ã¾ã–ã¾ãªéœ²å‡ºè¨å®šã‚’シミュレーションã§ãã¾ã™ã€‚ + </notification> + <notification name="HelpBlueDensity"> + 「空ã®é…è‰²ã¨æ¿ƒåº¦ã€ã¯ç©ºã¨éœ§ã®å½©åº¦å…¨ä½“ã«å½±éŸ¿ã—ã¾ã™ã€‚ 「I〠スライダーをå³ã«ç§»å‹•ã™ã‚‹ã¨è‰²ã¯æ˜Žã‚‹ããã£ãりã¨ãªã‚Šã¾ã™ã€‚ +ã“ã®ã‚¹ãƒ©ã‚¤ãƒ€ãƒ¼ã‚’左端ã«ç§»å‹•ã™ã‚‹ã¨ã€è‰²ã¯å½©ã‚Šã‚’失ã„ã€ç™½é»’ã«é€€è‰²ã—ã¾ã™ã€‚ 空ã®è‰²ã‚’微調整ã™ã‚‹å ´åˆã¯ã€ +「R〠(赤)〠「G〠(緑)〠「B〠(é’) +ã®å„スライダーを使用ã—ã¦å½©åº¦ã‚’個別ã«åˆ¶å¾¡ã§ãã¾ã™ã€‚ + </notification> + <notification name="HelpHazeDensity"> + 「大気ã®ä¸é€æ˜Žåº¦ã€ã¯å¤§æ°—ä¸ã®ã©ã‚“よりã¨ã—ãŸç©ºã®é›°å›²æ°—ã€ã‚°ãƒ¬ãƒ¼ãŒã‹ã£ãŸéœ§ã®ãƒ¬ãƒ™ãƒ«ã‚’制御ã—ã¾ã™ã€‚ 濃ã„煙や大気汚染ãªã© +を表ç¾ã™ã‚‹ã®ã«é©ã—ã¦ã„ã¾ã™ã€‚ 霧やもやãªã©ã®è¡¨ç¾æ‰‹æ®µã¨ã—ã¦ã‚‚効果的ã§ã™ã€‚ + </notification> + <notification name="HelpDensityMult"> + 「大気ã®ä¸é€æ˜Žåº¦ã®å¢—å¹…ã€ã¯ç©ºæ°—ã®æ¿ƒåº¦å…¨ä½“を制御ã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã§ãã¾ã™ã€‚ ã“ã®å€¤ã‚’低ãè¨å®šã™ã‚‹ã¨ã€Œå¤§æ°—ã®è–„ã„状態ã€ã‚’演出ã—ã€é«˜ã„数値ã«è¨å®šã™ã‚‹ã¨ã¨ã¦ã‚‚ã©ã‚“よりã¨ã—ãŸã‚¹ãƒ¢ãƒƒã‚°ã®ã‹ã‹ã£ãŸé›°å›²æ°—を表ç¾ã§ãã¾ã™ã€‚ + </notification> + <notification name="HelpDistanceMult"> + ウィンドライトã®è¦–覚的è·é›¢ã‚’調整ã—ã¾ã™ã€‚ 値ã¨ã—ã¦ã‚¼ãƒã‚’è¨å®šã™ã‚‹ã¨ã€åœ°å½¢ãŠã‚ˆã³ã‚ªãƒ–ジェクトã«å¯¾ã™ã‚‹ +ウィンドライトã®å½±éŸ¿ã‚’効果的ã«å–り消ã™ã“ã¨ãŒã§ãã¾ã™ã€‚ 1 より大ããªå€¤ã‚’è¨å®šã™ã‚‹å ´åˆã€å€¤ãŒå¤§ãããªã‚‹ã«ã¤ã‚Œã¦ +å¤§æ°—ãŒæ¬¡ç¬¬ã«æ¿ƒããªã‚‹ã‚ˆã†ãªåŠ¹æžœãŒå¾—られã¾ã™ã€‚ + </notification> + <notification name="HelpMaxAltitude"> + 「最大高度ã€ã§ã¯å¤§æ°—ä¸ã®å…‰ã®é‡ã‚’算出ã™ã‚‹ã¨ãã« +ウィンドライトãŒç®—出ã—ãŸé«˜åº¦ã‚’調整ã—ã¾ã™ã€‚ +1æ—¥ã®çµ‚ã‚りã«å¤•焼ã‘ã®åº¦åˆã„を調整ã™ã‚‹ã¨ãã«å½¹ç«‹ã¡ã¾ã™ã€‚ + </notification> + <notification name="HelpSunlightColor"> + 風景ã®ä¸ã§ç›´å°„日光ã®è‰²ã‚„å¼·ã•を調整ã—ã¾ã™ã€‚ + </notification> + <notification name="HelpSunAmbient"> + 風景ã®ä¸ã§å‘¨å›²ã‚’ã¨ã‚Šã¾ã大気ä¸ã®ã‚¢ãƒ³ãƒ“エント光ã®è‰²ã‚„å¼·ã•を調整ã—ã¾ã™ã€‚ + </notification> + <notification name="HelpSunGlow"> + 「サイズã€ã‚¹ãƒ©ã‚¤ãƒ€ãƒ¼ã¯å¤ªé™½ã®å¤§ãã•を制御ã—ã¾ã™ã€‚ +「フォーカスã€ã‚¹ãƒ©ã‚¤ãƒ€ãƒ¼ã¯ç©ºã‚’背ã«ã—ãŸå¤ªé™½ã®ã‹ã™ã¿å…·åˆã‚’制御ã—ã¾ã™ã€‚ + </notification> + <notification name="HelpSceneGamma"> + 風景ã®ä¸ã§æ˜Žæš—ã®é…分を調整ã—ã¾ã™ã€‚ + </notification> + <notification name="HelpStarBrightness"> + ç©ºã®æ˜Ÿã®è¼ãを調整ã—ã¾ã™ã€‚ + </notification> + <notification name="HelpTimeOfDay"> + 空ã®å¤ªé™½ã®å ´æ‰€ã‚’調整ã—ã¾ã™ã€‚ +標高ã«ä¼¼ã¦ã„ã¾ã™ã€‚ + </notification> + <notification name="HelpEastAngle"> + 空ã®å¤ªé™½ã®å ´æ‰€ã‚’調整ã—ã¾ã™ã€‚ +æ–¹ä½è§’ã«ä¼¼ã¦ã„ã¾ã™ã€‚ + </notification> + <notification name="HelpCloudColor"> + 雲ã®è‰²ã‚’編集ã—ã¾ã™ã€‚ 通常ã¯ç™½ã£ã½ã„色をãŠå‹§ã‚ã—ã¾ã™ãŒã€ã‚‚ã¡ã‚ã‚“ +ãŠå¥½ã¿ã®è‰²ã‚’è¨å®šã—ã¦ãã ã•ã„。 + </notification> + <notification name="HelpCloudDetail"> + 主è¦ãªé›²ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ã®ä¸Šã«ãƒ¬ã‚¤ãƒ¤ãƒ¼ã•れãŸè©³ç´°ãªã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’制御ã—ã¾ã™ã€‚ X 㨠Y ã§ãã®ä½ç½®ã‚’制御ã—ã¾ã™ã€‚ +「Dã€ï¼ˆæ¿ƒåº¦ï¼‰ã¯çœŸç¶¿ã®ã‚ˆã†ãªæ§˜åや〠+雲ã®å‰²ã‚Œç›®ã®æ§˜åãªã©é›²ã®å¤–観を制御ã—ã¾ã™ã€‚ + </notification> + <notification name="HelpCloudDensity"> + 「X〠㨠「Y〠ã®ã‚¹ãƒ©ã‚¤ãƒ€ãƒ¼ã§é›²ã®ä½ç½®ã‚’〠+「Dã€ã®ã‚¹ãƒ©ã‚¤ãƒ€ãƒ¼ã§ãã®å¯†åº¦ã‚’制御ã§ãã¾ã™ã€‚ + </notification> + <notification name="HelpCloudCoverage"> + 空を覆ã†é›²ã®é‡ã‚’制御ã—ã¾ã™ã€‚ + </notification> + <notification name="HelpCloudScale"> + ç©ºã«æµ®ã‹ã¶é›²ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ã®ç¸®å°ºã‚’制御ã—ã¾ã™ã€‚ + </notification> + <notification name="HelpCloudScrollX"> + 「Xã€ ã®æ–¹å‘ã«é›²ãŒç§»å‹•ã™ã‚‹éš›ã®é€Ÿåº¦ã‚’制御ã—ã¾ã™ã€‚ + </notification> + <notification name="HelpCloudScrollY"> + 「Yã€ ã®æ–¹å‘ã«é›²ãŒç§»å‹•ã™ã‚‹éš›ã®é€Ÿåº¦ã‚’制御ã—ã¾ã™ã€‚ + </notification> + <notification name="HelpClassicClouds"> + ã“ã®ãƒœãƒƒã‚¯ã‚¹ã‚’有効ã«ã™ã‚‹ã¨ã€WindLight ã®é›²ã«åŠ ãˆã¦ã€Second Life ã®å¾“æ¥ã®é›²ã‚‚レンダリングã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚ + </notification> + <notification name="HelpWaterFogColor"> + æ°´ä¸ã®ãƒ•ォグ効果ã«è‰²ã‚’ã¤ã‘ã¾ã™ã€‚ + </notification> + <notification name="HelpWaterFogDensity"> + æ°´ä¸ã®ãƒ•ォグ効果ã®å¼·å¼±ã€æ°´ä¸ã§ã©ã®ãらã„ã®è·é›¢ã¾ã§è¦‹æ¸¡ã›ã‚‹ã‹ã‚’制御ã—ã¾ã™ã€‚ + </notification> + <notification name="HelpUnderWaterFogMod"> + 「水ä¸ã®ãƒ•ォグ濃度指数ã€ã®åŠ¹æžœã‚’åŠ æ¸›ã—ã¦ã€ã‚ãªãŸã®ã‚¢ãƒã‚¿ãƒ¼ãŒæ°´ä¸ã«ã„ã‚‹ã¨ãã€ã©ã®ãらã„é ãã¾ã§è¦‹ã‚‹ã“ã¨ãŒã§ãã‚‹ã‹ã‚’制御ã—ã¾ã™ã€‚ + </notification> + <notification name="HelpWaterGlow"> + æ°´é¢ã®è¼ãã®åº¦åˆã„を制御ã—ã¾ã™ã€‚ + </notification> + <notification name="HelpWaterNormalScale"> + æ°´é¢ã‚’表ç¾ã™ã‚‹ 3 種類ã®ã•ã–æ³¢ã®ç¸®å°ºã‚’制御ã—ã¾ã™ã€‚ + </notification> + <notification name="HelpWaterFresnelScale"> + ã•ã¾ã–ã¾ãªè§’度ã§ã€åå°„ã™ã‚‹å…‰ã®é‡ã‚’制御ã—ã¾ã™ã€‚ + </notification> + <notification name="HelpWaterFresnelOffset"> + åå°„ã™ã‚‹å…‰åº¦ã®é‡ã‚’制御ã—ã¾ã™ã€‚ + </notification> + <notification name="HelpWaterScaleAbove"> + 上ã‹ã‚‰æ°´ä¸ã‚’見ãŸã¨ãã®å…‰ã®å±ˆæŠ˜å…·åˆã‚’制御ã—ã¾ã™ã€‚ + </notification> + <notification name="HelpWaterScaleBelow"> + æ°´ä¸ã‹ã‚‰è¦‹ãŸã¨ãã®å…‰ã®å±ˆæŠ˜å…·åˆã‚’制御ã—ã¾ã™ã€‚ + </notification> + <notification name="HelpWaterBlurMultiplier"> + æ³¢ã¨åå°„ã®æ··ã–り具åˆã‚’制御ã—ã¾ã™ã€‚ + </notification> + <notification name="HelpWaterNormalMap"> + å射や屈折を決定ã™ã‚‹ãŸã‚ã«æ°´ã«é‡ãられるノーマル・マップを制御ã—ã¾ã™ã€‚ + </notification> + <notification name="HelpWaterWave1"> + 拡大ã•れãŸãƒŽãƒ¼ãƒžãƒ«ãƒ»ãƒžãƒƒãƒ—ãŒç§»å‹•ã™ã‚‹æ–¹å‘(X 軸㨠Y 軸ã§è¡¨ç¾ï¼‰ã¨é€Ÿåº¦ã‚’制御ã—ã¾ã™ã€‚ + </notification> + <notification name="HelpWaterWave2"> + 縮å°ã•れãŸãƒŽãƒ¼ãƒžãƒ«ãƒ»ãƒžãƒƒãƒ—ãŒç§»å‹•ã™ã‚‹æ–¹å‘(X 軸㨠Y 軸ã§è¡¨ç¾ï¼‰ã¨é€Ÿåº¦ã‚’制御ã—ã¾ã™ã€‚ + </notification> + <notification name="NewSkyPreset"> + æ–°ã—ã„空ã®åå‰ã‚’指定ã—ã¦ãã ã•ã„。 + <form name="form"> + <input name="message" type="text"> + æ–°ã—ã„事å‰è¨å®š + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="ã‚ャンセル"/> + </form> + </notification> + <notification name="ExistsSkyPresetAlert"> + 事å‰è¨å®šãŒã™ã§ã«å˜åœ¨ã—ã¾ã™ï¼ + </notification> + <notification name="NewWaterPreset"> + æ–°ã—ã„æ°´ã®äº‹å‰è¨å®šã®åå‰ã‚’指定ã—ã¦ãã ã•ã„。 + <form name="form"> + <input name="message" type="text"> + æ–°ã—ã„事å‰è¨å®š + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="ã‚ャンセル"/> + </form> + </notification> + <notification name="ExistsWaterPresetAlert"> + 事å‰è¨å®šãŒã™ã§ã«å˜åœ¨ã—ã¾ã™ï¼ + </notification> + <notification name="WaterNoEditDefault"> + デフォルトã®è¨å®šã‚’編集ã—ãŸã‚Šå‰Šé™¤ã—ãŸã‚Šã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 + </notification> + <notification name="ChatterBoxSessionStartError"> + [RECIPIENT]ã¨ã®æ–°ã—ã„ãƒãƒ£ãƒƒãƒˆã‚’é–‹å§‹ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ +[REASON] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ChatterBoxSessionEventError"> + [EVENT] +[REASON] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ForceCloseChatterBoxSession"> + [NAME]ã¨ã®ãƒãƒ£ãƒƒãƒˆã‚»ãƒƒã‚·ãƒ§ãƒ³ã‚’é–‰ã˜ã¾ã™ã€‚ +[REASON] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="Cannot_Purchase_an_Attachment"> + ã‚¢ã‚¤ãƒ†ãƒ ãŒæ·»ä»˜ç‰©ã®ä¸€éƒ¨ã§ã‚ã‚‹é–“ã¯ã€ +アイテムを購入ã§ãã¾ã›ã‚“。 + </notification> + <notification label="デビット許å¯ã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆã«ã¤ã„ã¦" name="DebitPermissionDetails"> + ã“ã®è¦æ±‚を許å¯ã™ã‚‹ã¨ã€ã‚¹ã‚¯ãƒªãƒ—トã‹ã‚‰ã‚ãªãŸã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã«ãƒªãƒ³ãƒ‡ãƒ³ãƒ‰ãƒ«ã‚’課金ã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚ +ã“ã®è¨±å¯ã‚’å–り消ã™ã«ã¯ã€ã‚ªãƒ–ジェクトã®ã‚ªãƒ¼ãƒŠãƒ¼ã¯ã‚ªãƒ–ジェクトを削除ã™ã‚‹ã‹ã€ã‚ªãƒ–ジェクトã®ã‚¹ã‚¯ãƒªãƒ—トをリセットã—ãªã‘れã°ãªã‚Šã¾ã›ã‚“。 + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="AutoWearNewClothing"> + ã‚ãªãŸãŒä½œæˆã—ãŸæœã‚¢ã‚¤ãƒ†ãƒ を自動的ã«è£…ç€ã—ã¾ã™ã‹ï¼Ÿ + <usetemplate ignoretext="æ–°ã—ã„æœã‚’自動的ã«è£…ç€ã™ã‚‹" name="okcancelignore" notext="ã„ã„ãˆ" yestext="ã¯ã„"/> + </notification> + <notification name="NotAgeVerified"> + ã“ã®åŒºç”»ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ãŸã‚ã«ã¯ã€ +年齢確èªã‚’行ã†å¿…è¦ãŒã‚りã¾ã™ã€‚ +Second Life ã®ã‚¦ã‚§ãƒ–サイトã«ã‚¢ã‚¯ã‚»ã‚¹ã—〠+年齢確èªã‚’行ã„ã¾ã™ã‹ï¼Ÿ + +[_URL] + <url name="url" option="0"> + https://secondlife.com/account/verification.php?lang=ja + </url> + <usetemplate ignoretext="å¹´é½¢ã®æœªç¢ºèªã«ã¤ã„ã¦è¦å‘Šã™ã‚‹" name="okcancelignore" notext="ã„ã„ãˆ" yestext="ã¯ã„"/> + </notification> + <notification name="Cannot enter parcel: no payment info on file"> + ã“ã®åŒºç”»ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã«ã¯ã€æ”¯æ‰•ã„æƒ…å ±ãŒäº‹å‰ã«ç™»éŒ²ã•れã¦ã„ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ +Second Life ã®ã‚¦ã‚§ãƒ–サイトã«ã‚¢ã‚¯ã‚»ã‚¹ã—ã¦ã€è¨å®šã—ã¾ã™ã‹ï¼Ÿ + +[_URL] + <url name="url" option="0"> + https://secondlife.com/account/index.php?lang=ja + </url> + <usetemplate ignoretext="æ”¯æ‰•ã„æƒ…å ±ã®æœªç™»éŒ²ã«ã¤ã„ã¦è¦å‘Šã™ã‚‹" name="okcancelignore" notext="ã„ã„ãˆ" yestext="ã¯ã„"/> + </notification> + <notification name="MissingString"> + æ–‡å—列[STRING_NAME]ãŒstrings.xmlã«å«ã¾ã‚Œã¦ã„ã¾ã›ã‚“ + </notification> + <notification name="SystemMessageTip"> + [MESSAGE] + </notification> + <notification name="Cancelled"> + å–り消ã•れã¾ã—㟠+ </notification> + <notification name="CancelledSit"> + 座るã®ã‚’å–り消ã•れã¾ã—㟠+ </notification> + <notification name="CancelledAttach"> + 添付ã¯å–り消ã•れã¾ã—㟠+ </notification> + <notification name="ReplacedMissingWearable"> + æ¬ è½ã—ã¦ã„ã‚‹æœï¼èº«ä½“部ä½ã‚’デフォルトã«ç½®æ›ã—ã¾ã™ã€‚ + </notification> + <notification name="GroupNotice"> + ä»¶å: [SUBJECT], メッセージ: [MESSAGE] + </notification> + <notification name="FriendOnline"> + [FIRST] [LAST] ã¯ã‚ªãƒ³ãƒ©ã‚¤ãƒ³ã§ã™ã€‚ + </notification> + <notification name="FriendOffline"> + [FIRST] [LAST] ã¯ã‚ªãƒ•ラインã§ã™ã€‚ + </notification> + <notification name="AddSelfFriend"> + 自分自身をフレンドã«ã¯ã§ãã¾ã›ã‚“。 + </notification> + <notification name="UploadingAuctionSnapshot"> + インワールドã¨ã‚¦ã‚§ãƒ–・サイトã®ã‚¹ãƒŠãƒƒãƒ—ショットをアップãƒãƒ¼ãƒ‰ä¸ã§ã™... +ï¼ˆæ‰€è¦æ™‚間:約5分) + </notification> + <notification name="UploadPayment"> + アップãƒãƒ¼ãƒ‰ã« L$[AMOUNT] 支払ã„ã¾ã—ãŸã€‚ + </notification> + <notification name="UploadWebSnapshotDone"> + Webサイトã®ã‚¹ãƒŠãƒƒãƒ—ショットãŒã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ã•れã¾ã—ãŸã€‚ + </notification> + <notification name="UploadSnapshotDone"> + インワールドã§ã®ã‚¹ãƒŠãƒƒãƒ—ショットã®ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ãŒå®Œäº†ã—ã¾ã—ãŸã€‚ + </notification> + <notification name="TerrainDownloaded"> + raw地形ãŒãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ã•れã¾ã—㟠+ </notification> + <notification name="GestureMissing"> + ジェスãƒãƒ£ãƒ¼[NAME] ãŒãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«ã‚りã¾ã›ã‚“。 + </notification> + <notification name="UnableToLoadGesture"> + ジェスãƒãƒ£ãƒ¼[NAME] ã‚’èªã¿è¾¼ã‚€ã“ã¨ãŒã§ãã¾ã›ã‚“。 +å†åº¦ã€è©¦ã¿ã¦ãã ã•ã„。 + </notification> + <notification name="LandmarkMissing"> + データベースã«ãƒ©ãƒ³ãƒ‰ãƒžãƒ¼ã‚¯ãŒã‚りã¾ã›ã‚“。 + </notification> + <notification name="UnableToLoadLandmark"> + ランドマークをãƒãƒ¼ãƒ‰ã§ãã¾ã›ã‚“。 ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 + </notification> + <notification name="CapsKeyOn"> + コンピューター㮠Caps Lockã‚ー㌠+有効ã«ãªã£ã¦ã„ã¾ã™ã€‚パスワード入力㫠+影響ã™ã‚‹ã®ã§è§£é™¤ã—ã¾ã—ょã†ã€‚ + </notification> + <notification name="NotecardMissing"> + ノートカードãŒãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«ã‚りã¾ã›ã‚“。 + </notification> + <notification name="NotecardNoPermissions"> + ノートカードを閲覧ã™ã‚‹ã«ã¯æ¨©é™ãŒä¸å分ã§ã™ + </notification> + <notification name="RezItemNoPermissions"> + オブジェクトをrezã™ã‚‹ã«ã¯ãƒ‘ーミッション(承èªï¼‰ãŒä¸è¶³ã—ã¦ã¾ã™ã€‚ + </notification> + <notification name="UnableToLoadNotecard"> + ç¾åœ¨ãƒŽãƒ¼ãƒˆã‚«ãƒ¼ãƒ‰ã®è³‡ç”£ã‚’ãƒãƒ¼ãƒ‰ã§ãã¾ã›ã‚“。 + </notification> + <notification name="ScriptMissing"> + データベースã«ã‚¹ã‚¯ãƒªãƒ—トãŒã‚りã¾ã›ã‚“。 + </notification> + <notification name="ScriptNoPermissions"> + スクリプトを閲覧ã™ã‚‹ã«ã¯æ¨©é™ãŒä¸å分ã§ã™ã€‚ + </notification> + <notification name="UnableToLoadScript"> + スクリプトをãƒãƒ¼ãƒ‰ã§ãã¾ã›ã‚“。 ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 + </notification> + <notification name="IncompleteInventory"> + ã‚ãªãŸã®æä¾›ã™ã‚‹ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã¯ã€ã“ã®å ´æ‰€ã§ã¯ã¾ã 全部æƒã„ã¾ã›ã‚“。 +å°‘ã—ã—ã¦ã‹ã‚‰ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 + </notification> + <notification name="CannotModifyProtectedCategories"> + ä¿è·ã•れãŸã‚«ãƒ†ã‚´ãƒªãƒ¼ã¯ä¿®æ£ã§ãã¾ã›ã‚“。 + </notification> + <notification name="CannotRemoveProtectedCategories"> + ä¿è·ã•れãŸã‚«ãƒ†ã‚´ãƒªãƒ¼ã¯å‰Šé™¤ã§ãã¾ã›ã‚“。 + </notification> + <notification name="OfferedCard"> + ã‚ãªãŸã¯[FIRST] [LAST] ã« +コーリング・カードをé€ã‚Šã¾ã—ãŸã€‚ + </notification> + <notification name="UnableToBuyWhileDownloading"> + オブジェクトデータã®ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ä¸ã¯è³¼å…¥ã§ãã¾ã›ã‚“。 +ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 + </notification> + <notification name="UnableToLinkWhileDownloading"> + オブジェクトデータã®ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ä¸ã¯ãƒªãƒ³ã‚¯ã§ãã¾ã›ã‚“。 +ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 + </notification> + <notification name="CannotBuyObjectsFromDifferentOwners"> + 複数ã®ã‚ªãƒ¼ãƒŠãƒ¼ã‹ã‚‰åŒæ™‚ã«ã‚ªãƒ–ジェクトを購入ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 +å˜ä¸€ã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’é¸æŠžã—ã¦ãã ã•ã„。 + </notification> + <notification name="ObjectNotForSale"> + オブジェクトã¯è²©å£²å¯¾è±¡ã§ã¯ã‚りã¾ã›ã‚“。 + </notification> + <notification name="EnteringGodMode"> + レベル[LEVEL]ã®ã‚´ãƒƒãƒ‰ãƒ»ãƒ¢ãƒ¼ãƒ‰ã«å…¥ã‚Šã¾ã™ + </notification> + <notification name="LeavingGodMode"> + レベル[LEVEL]ã®ã‚´ãƒƒãƒ‰ãƒ»ãƒ¢ãƒ¼ãƒ‰ã‚’解除 + </notification> + <notification name="CopyFailed"> + コピー権é™ãŒãªã„ãŸã‚ã€ã‚³ãƒ”ーã«å¤±æ•—ã—ã¾ã—㟠+ </notification> + <notification name="InventoryAccepted"> + [NAME]ã¯ã€æŒã¡ç‰©ã®æä¾›ã‚’å—ã‘入れã¾ã—ãŸã€‚ + </notification> + <notification name="InventoryDeclined"> + [NAME]ã¯ã€æŒã¡ç‰©ã®æä¾›ã‚’æ–りã¾ã—ãŸã€‚ + </notification> + <notification name="ObjectMessage"> + [NAME]: [MESSAGE] + </notification> + <notification name="CallingCardAccepted"> + コーリング・カードãŒå—ç†ã•れã¾ã—ãŸã€‚ + </notification> + <notification name="CallingCardDeclined"> + ã‚³ãƒ¼ãƒªãƒ³ã‚°ãƒ»ã‚«ãƒ¼ãƒ‰ãŒæ‹’å¦ã•れã¾ã—ãŸã€‚ + </notification> + <notification name="TeleportToLandmark"> + 本土ã«åˆ°é”ã—ã¾ã—ãŸã€‚ +[NAME]ãªã©ã®å ´æ‰€ã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã™ã‚‹ã«ã¯ã€ç”»é¢å³ä¸‹ã«ã‚る「æŒã¡ç‰©ã€ãƒœã‚¿ãƒ³ã‚’クリックã—ã€ãƒ©ãƒ³ãƒ‰ãƒžãƒ¼ã‚¯ï¼ˆLandmarksï¼‰ãƒ•ã‚©ãƒ«ãƒ€ã‚’é¸æŠžã—ã¦ãã ã•ã„。 +ランドマークをダブルクリックã—ãŸå¾Œã€Œãƒ†ãƒ¬ãƒãƒ¼ãƒˆã€ã‚’クリックã™ã‚‹ã¨ãã®å ´æ‰€ã¸ç§»å‹•ã—ã¾ã™ã€‚ + </notification> + <notification name="TeleportToPerson"> + 本土ã«åˆ°é”ã—ã¾ã—ãŸã€‚ +ä½äººã®[NAME]ã¨æŽ¥è§¦ã™ã‚‹ã«ã¯ã€ç”»é¢å³ä¸‹ã«ã‚る「æŒã¡ç‰©ã€ãƒœã‚¿ãƒ³ã‚’クリックã—ã€ã‚³ãƒ¼ãƒªãƒ³ã‚°ã‚«ãƒ¼ãƒ‰ï¼ˆCalling Cardsï¼‰ãƒ•ã‚©ãƒ«ãƒ€ã‚’é¸æŠžã—ã¦ãã ã•ã„。 +カードをダブルクリックã—ã€ã€ŒIMã‚’é€ã‚‹ã€ã‚’クリックã—ã€ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’é€ä¿¡ã—ã¦ãã ã•ã„。 + </notification> + <notification name="CantSelectLandFromMultipleRegions"> + サーãƒãƒ¼ã®å¢ƒç•Œã‚’è¶Šãˆã¦åœŸåœ°ã‚’é¸æŠžã™ã‚‹ã“ã¨ã§ãã¾ã›ã‚“。 +ã‚‚ã£ã¨å°ã•ãªåœŸåœ°ã‚’é¸æŠžã—ã¦ãã ã•ã„。 + </notification> + <notification name="SearchWordBanned"> + ã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ã‚¹ã‚¿ãƒ³ãƒ€ãƒ¼ãƒ‰ã«æ˜Žè¨˜ã•れã¦ã„るコンテンツ制é™ã«ã‚ˆã‚Šã€ã‚ãªãŸã®æ¤œç´¢èªžã®ä¸€éƒ¨ãŒé™¤å¤–ã•れã¾ã—ãŸã€‚ + </notification> + <notification name="NoContentToSearch"> + å°‘ãªãã¨ã‚‚ã©ã‚Œã‹ä¸€ã¤ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã®ç¨®é¡žã‚’é¸æŠžã—ã¦æ¤œç´¢ã‚’行ã£ã¦ãã ã•ã„。(PG, Mature, Adult) + </notification> + <notification name="GroupVote"> + [NAME] ã¯æŠ•ç¥¨ã®ç”³è«‹ã‚’ã—ã¦ã„ã¾ã™ï¼š +[MESSAGE] + <form name="form"> + <button name="VoteNow" text="今ã™ã投票ã™ã‚‹"/> + <button name="Later" text="ã‚ã¨ã§"/> + </form> + </notification> + <notification name="SystemMessage"> + [MESSAGE] + </notification> + <notification name="EventNotification"> + イベント通知: + +[NAME] +[DATE] + <form name="form"> + <button name="Teleport" text="テレãƒãƒ¼ãƒˆ"/> + <button name="Description" text="説明"/> + <button name="Cancel" text="å–り消ã—"/> + </form> + </notification> + <notification name="TransferObjectsHighlighted"> + ã“ã®åŒºç”»ä¸Šã«å˜åœ¨ã™ã‚‹ã‚ªãƒ–ジェクトã®ã†ã¡ã€ã“ã®åŒºç”»ã®è³¼å…¥è€…ã«è²æ¸¡ã•れるオブジェクトãŒã™ã¹ã¦å¼·èª¿è¡¨ç¤ºã•れã¾ã™ã€‚ + + +*è²æ¸¡ã•れる樹木やæ¤ç‰©ã¯ã€å¼·èª¿è¡¨ç¤ºã•れã¾ã›ã‚“。 + <form name="form"> + <button name="Done" text="完了"/> + </form> + </notification> + <notification name="DeactivatedGesturesTrigger"> + åŒã˜ãƒˆãƒªã‚¬ãƒ¼ã§ã‚¢ã‚¯ãƒ†ã‚£ãƒ–ã«ã—ãªã„ジェスãƒãƒ£ãƒ¼ï¼š +[NAMES] + </notification> + <notification name="NoQuickTime"> + Apple社ã®QuickTimeãŒã‚·ã‚¹ãƒ†ãƒ ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¦ã„ãªã„ã¨æ€ã‚れã¾ã™ã€‚ +ストリーミング・メディアã®å†ç”Ÿã‚’行ã„ãŸã„å ´åˆã¯ã€QuickTimeã®ã‚µã‚¤ãƒˆï¼ˆhttp://www.apple.com/quicktime)ã«ã‚¢ã‚¯ã‚»ã‚¹ã—ã¦ã€QuickTime Player をインストールã—ã¦ãã ã•ã„。 + </notification> + <notification name="OwnedObjectsReturned"> + é¸æŠžã—ãŸåœŸåœ°ã®åŒºç”»ä¸Šã«ã‚ã£ãŸã‚ãªãŸã®ã‚ªãƒ–ジェクトã¯ã€ã‚ãªãŸã®æŒã¡ç‰©ã«è¿”å´ã•れã¾ã—ãŸã€‚ + </notification> + <notification name="OtherObjectsReturned"> + é¸æŠžã•れã¦ã„る土地ã®åŒºç”»ä¸Šã«ã‚ã£ãŸ + [FIRST] [LAST] + ãŒæ‰€æœ‰ã™ã‚‹ã‚ªãƒ–ジェクトã¯ã€ã‚ªãƒ¼ãƒŠãƒ¼ã®æŒã¡ç‰©ã«è¿”å´ã•れã¾ã—ãŸã€‚ + </notification> + <notification name="OtherObjectsReturned2"> + é¸æŠžã•れãŸåœŸåœ°ã®åŒºç”»ä¸Šã«ã‚り〠+ä½äººã®[NAME]ã®æ‰€æœ‰ã ã£ãŸã‚ªãƒ–ジェクトã¯ã‚ªãƒ¼ãƒŠãƒ¼ã«è¿”å´ã•れã¾ã—ãŸã€‚ + </notification> + <notification name="GroupObjectsReturned"> + é¸æŠžã•れã¦ã„る区画上ã«ã‚りã€[GROUPNAME] ã¨ã„ã†ã‚°ãƒ«ãƒ¼ãƒ—ã¨å…±æœ‰ã ã£ãŸã‚ªãƒ–ジェクトã¯ã€ã‚ªãƒ¼ãƒŠãƒ¼ã®æŒã¡ç‰©ã«è¿”å´ã•れã¾ã—ãŸã€‚ +è²æ¸¡ã•れã¦ã„ãŸè²æ¸¡å¯èƒ½ãªã‚ªãƒ–ジェクトã¯ã€å‰ã®ã‚ªãƒ¼ãƒŠãƒ¼ã«è¿”å´ã•れã¾ã—ãŸã€‚ +グループã«è²æ¸¡ã•れã¦ã„ãŸè²æ¸¡ä¸å¯èƒ½ãªã‚ªãƒ–ジェクトã¯ã€å‰Šé™¤ã•れã¾ã—ãŸã€‚ + </notification> + <notification name="UnOwnedObjectsReturned"> + é¸æŠžã•れãŸåœŸåœ°ã®åŒºç”»ä¸Šã«ã‚りã€ã‚ãªãŸã®æ‰€æœ‰ã§ã€Œãªã‹ã£ãŸã€ã‚ªãƒ–ジェクトã¯ã€æœ¬æ¥ã®ã‚ªãƒ¼ãƒŠãƒ¼ã«è¿”å´ã•れã¾ã—ãŸã€‚ + </notification> + <notification name="NotSafe"> + ã“ã®åœŸåœ°ã¯ãƒ€ãƒ¡ãƒ¼ã‚¸ãŒæœ‰åŠ¹ï¼ˆã€Œå®‰å…¨ã§ã¯ãªã„ã€ï¼‰ã«è¨å®šã•れã¦ã„ã¾ã™ã€‚ +ケガをã™ã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“。 命をè½ã¨ã—ãŸå ´åˆã¯ã€ãƒ›ãƒ¼ãƒ ã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã•れã¾ã™ã€‚ + </notification> + <notification name="NoFly"> + ã“ã®åœŸåœ°ã¯é£›è¡ŒãŒç„¡åŠ¹ï¼ˆã€Œé£›è¡Œç¦æ¢ã€ï¼‰ã«è¨å®šã•れã¦ã„ã¾ã™ã€‚ +ã“ã“ã§é£›ã¶ã“ã¨ã¯ã§ãã¾ã›ã‚“。 + </notification> + <notification name="PushRestricted"> + ã“ã®åœŸåœ°ã§ã¯ã€Œãƒ—ãƒƒã‚·ãƒ³ã‚°ç¦æ¢ã€ã§ã™ã€‚ +土地所有者以外ã¯ã“ã“ã§ä»–人をプッシュã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 + </notification> + <notification name="NoVoice"> + ã“ã®åœŸåœ°ã¯ãƒœã‚¤ã‚¹ãŒç„¡åйã«è¨å®šã•れã¦ã„ã¾ã™ã€‚ + </notification> + <notification name="NoBuild"> + ã“ã®åœŸåœ°ã¯ã‚ªãƒ–ジェクトã®ä½œæˆç¦æ¢ã«è¨å®šã•れã¦ã„ã¾ã™ã€‚ +ã“ã“ã§ã‚ªãƒ–ジェクトを作るã“ã¨ã¯ã§ãã¾ã›ã‚“。 + </notification> + <notification name="ScriptsStopped"> + 管ç†è€…ãŒã“ã®åœ°åŸŸå†…ã®ã‚¹ã‚¯ãƒªãƒ—ãƒˆã‚’ä¸€æ™‚åœæ¢ã•ã›ã¾ã—ãŸã€‚ + </notification> + <notification name="ScriptsNotRunning"> + ã“ã®åœ°åŸŸã§ã¯ã‚¹ã‚¯ãƒªãƒ—トã®ä½¿ç”¨ãŒç¦æ¢ã•れã¦ã„ã¾ã™ + </notification> + <notification name="NoOutsideScripts"> + ã“ã®åœŸåœ°ã§ã¯å¤–部スクリプトãŒç„¡åйã«è¨å®šã•れã¦ã„ã¾ã™ã€‚ +ï¼ˆã€Œå¤–éƒ¨ã‚¹ã‚¯ãƒªãƒ—ãƒˆç¦æ¢ã€ï¼‰ +土地所有者以外ã®ã‚¹ã‚¯ãƒªãƒ—トã¯èµ·å‹•ã§ãã¾ã›ã‚“ + </notification> + <notification name="ClaimPublicLand"> + 自分ãŒã„る地域ã§ã®ã¿å…¬å…±ã®åœŸåœ°ã‚’ç²å¾—ã§ãã¾ã™ã€‚ + </notification> + <notification name="RegionTPAccessBlocked"> + ã‚ãªãŸã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†ã«ã‚ˆã‚Šãã®åœ°åŸŸï¼ˆãƒªãƒ¼ã‚¸ãƒ§ãƒ³ï¼‰ã¸ã¯å…¥ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。 年齢確èªã‚’行ã†ã‹ã€æœ€æ–°ãƒ“ューワをインストールã—ã¦ãã ã•ã„。 + +ç¾åœ¨ã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†ã§ã‚¢ã‚¯ã‚»ã‚¹å¯èƒ½ãªã‚¨ãƒªã‚¢ã«é–¢ã™ã‚‹è©³ç´°ã¯ãƒŠãƒ¬ãƒƒã‚¸ãƒ™ãƒ¼ã‚¹ã‚’å‚ç…§ã—ã¦ãã ã•ã„。 + </notification> + <notification name="URBannedFromRegion"> + ã‚ãªãŸã¯åœ°åŸŸï¼ˆãƒªãƒ¼ã‚¸ãƒ§ãƒ³ï¼‰ã¸ã®ç«‹å…¥ãŒç¦æ¢ã•れã¦ã„ã¾ã™ã€‚ + </notification> + <notification name="NoTeenGridAccess"> + ã‚ãªãŸã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã§ã¯ãƒ†ã‚£ãƒ¼ãƒ³ã‚°ãƒªãƒƒãƒ‰ã«æŽ¥ç¶šã§ãã¾ã›ã‚“。 + </notification> + <notification name="NoHelpIslandTP"> + Help Islandã«ã¯æˆ»ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。 +「Help Island Publicã€ã«è¡Œã〠+å†åº¦ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ã‚’行ã£ã¦ãã ã•ã„。 + </notification> + <notification name="ImproperPaymentStatus"> + ã“ã®åœ°åŸŸï¼ˆãƒªãƒ¼ã‚¸ãƒ§ãƒ³ï¼‰ã«å…¥ã‚‹ãŸã‚ã«é©ã—ãŸæ”¯æ‰•ã„ステータスãŒã‚りã¾ã›ã‚“。 + </notification> + <notification name="MustGetAgeRgion"> + ã“ã®åœ°åŸŸï¼ˆãƒªãƒ¼ã‚¸ãƒ§ãƒ³ï¼‰ã«å…¥ã‚‹ã«ã¯å¹´é½¢ç¢ºèªæ¸ˆã¿ã§ã‚ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ + </notification> + <notification name="MustGetAgeParcel"> + ã“ã®åŒºç”»ã«å…¥ã‚‹ã«ã¯å¹´é½¢ç¢ºèªæ¸ˆã¿ã§ã‚ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ + </notification> + <notification name="NoDestRegion"> + 目的地ã®åœ°åŸŸï¼ˆãƒªãƒ¼ã‚¸ãƒ§ãƒ³ï¼‰ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚ + </notification> + <notification name="NotAllowedInDest"> + 目的地ã«å…¥ã‚‹è¨±å¯ãŒã‚りã¾ã›ã‚“。 + </notification> + <notification name="RegionParcelBan"> + ç«‹å…¥ç¦æ¢ã•れãŸåŒºç”»ã‚’横æ–ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 åˆ¥ã®æ–¹æ³•ã‚’ãŠè©¦ã—ãã ã•ã„。 + </notification> + <notification name="TelehubRedirect"> + テレãƒãƒ–ã«è»¢é€ã•れã¾ã—ãŸã€‚ + </notification> + <notification name="CouldntTPCloser"> + ã“れ以上目的地ã«è¿‘ã„å ´æ‰€ã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ + </notification> + <notification name="TPCancelled"> + テレãƒãƒ¼ãƒˆãŒã‚ャンセルã•れã¾ã—ãŸã€‚ + </notification> + <notification name="FullRegionTryAgain"> + å…¥ã‚ã†ã¨ã—ã¦ã„る地域(リージョン)ã¯ç¾åœ¨æº€å“¡ã§ã™ã€‚ +ã—ã°ã‚‰ãã—ã¦ã‹ã‚‰å†åº¦ãŠè©¦ã—ãã ã•ã„。 + </notification> + <notification name="GeneralFailure"> + よãã‚る失敗 + </notification> + <notification name="RoutedWrongRegion"> + ç•°ãªã‚‹åœ°åŸŸï¼ˆãƒªãƒ¼ã‚¸ãƒ§ãƒ³ï¼‰ã«è¿‚回ã•れã¾ã—ãŸã€‚ ã‚‚ã†ä¸€åº¦ãŠè©¦ã—ãã ã•ã„。 + </notification> + <notification name="NoValidAgentID"> + エージェントIDãŒç„¡åйã§ã™ã€‚ + </notification> + <notification name="NoValidSession"> + セッションIDãŒç„¡åйã§ã™ã€‚ + </notification> + <notification name="NoValidCircuit"> + 回路コードãŒç„¡åйã§ã™ã€‚ + </notification> + <notification name="NoValidTimestamp"> + タイムスタンプãŒç„¡åйã§ã™ã€‚ + </notification> + <notification name="NoPendingConnection"> + 接続を生æˆã§ãã¾ã›ã‚“。 + </notification> + <notification name="InternalUsherError"> + 内部エラーãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚ + </notification> + <notification name="NoGoodTPDestination"> + ã“ã®åœ°åŸŸï¼ˆãƒªãƒ¼ã‚¸ãƒ§ãƒ³ï¼‰ã§ã¯é©åˆ‡ãªãƒ†ãƒ¬ãƒãƒ¼ãƒˆç›®çš„地ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚ + </notification> + <notification name="InternalErrorRegionResolver"> + 内部エラーãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚ + </notification> + <notification name="NoValidLanding"> + 有効ãªç€åœ°ç‚¹ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚ + </notification> + <notification name="NoValidParcel"> + 有効ãªåŒºç”»ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚ + </notification> + <notification name="ObjectGiveItem"> + [FIRST] [LAST]所有ã®ã€ +[OBJECTFROMNAME]ã‹ã‚‰ã€ +[OBJECTNAME]ã¨ã„ã†[OBJECTTYPE]ãŒé€ã‚‰ã‚Œã¦ãã¾ã—ãŸã€‚ + <form name="form"> + <button name="Keep" text="å—ã‘å–ã‚‹"/> + <button name="Discard" text="ç ´æ£„"/> + <button name="Mute" text="無視リストã¸"/> + </form> + </notification> + <notification name="ObjectGiveItemUnknownUser"> + (未知ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ï¼‰ 所有ã®[OBJECTFROMNAME]ã‹ã‚‰ã€ +ã‚ãªãŸã«[OBJECTNAME]ã¨ã„ã†[OBJECTTYPE]ãŒé€ã‚‰ã‚Œã¦ãã¾ã—ãŸã€‚ + <form name="form"> + <button name="Keep" text="å—ã‘å–ã‚‹"/> + <button name="Discard" text="ç ´æ£„"/> + <button name="Mute" text="無視リストã¸"/> + </form> + </notification> + <notification name="UserGiveItem"> + [NAME]ã¯ã€ã‚ãªãŸã«[OBJECTNAME]ã¨ã„ã†åå‰ã®[OBJECTTYPE]を渡ã—ã¾ã—ãŸã€‚ + <form name="form"> + <button name="Keep" text="å—ã‘å–ã‚‹"/> + <button name="Discard" text="ç ´æ£„"/> + <button name="Mute" text="無視リストã¸"/> + </form> + </notification> + <notification name="GodMessage"> + [NAME] +[MESSAGE] + </notification> + <notification name="JoinGroup"> + [MESSAGE] + <form name="form"> + <button name="Join" text="å‚åŠ "/> + <button name="Decline" text="辞退"/> + <button name="Info" text="æƒ…å ±"/> + </form> + </notification> + <notification name="TeleportOffered"> + [NAME]ã¯ã‚ãªãŸã‚’テレãƒãƒ¼ãƒˆã§å‘¼ã³å¯„ã›ã‚ˆã†ã¨ã—ã¦ã„ã¾ã™ï¼š + +[MESSAGE] + <form name="form"> + <button name="Teleport" text="テレãƒãƒ¼ãƒˆ"/> + <button name="Cancel" text="å–り消ã—"/> + </form> + </notification> + <notification name="GotoURL"> + [MESSAGE] +[URL] + <form name="form"> + <button name="Later" text="ã‚ã¨ã§"/> + <button name="GoNow..." text="今ã™ã行ã"/> + </form> + </notification> + <notification name="OfferFriendship"> + [NAME]ã¯ã€ +フレンド登録を申ã—込んã§ã„ã¾ã™ã€‚ + +[MESSAGE] + +(デフォルトã§ãŠäº’ã„ã®ã‚ªãƒ³ãƒ©ã‚¤ãƒ³ãƒ»ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’見るã“ã¨ãŒã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚) + <form name="form"> + <button name="Accept" text="å—ã‘入れる"/> + <button name="Decline" text="辞退"/> + </form> + </notification> + <notification name="OfferFriendshipNoMessage"> + [NAME]ã¯ã€ +フレンド登録を申ã—込んã§ã„ã¾ã™ã€‚ + +(デフォルトã§ãŠäº’ã„ã®ã‚ªãƒ³ãƒ©ã‚¤ãƒ³ãƒ»ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’見るã“ã¨ãŒã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚) + <form name="form"> + <button name="Accept" text="å—ã‘入れる"/> + <button name="Decline" text="æ‹’å¦"/> + </form> + </notification> + <notification name="FriendshipAccepted"> + [NAME]ã¯ã€ãƒ•レンド 登録をå—ã‘入れã¾ã—ãŸã€‚ + </notification> + <notification name="FriendshipDeclined"> + [NAME]ã¯ã€ãƒ•レンド 登録をæ–りã¾ã—ãŸã€‚ + </notification> + <notification name="OfferCallingCard"> + [FIRST] [LAST]㌠+ã‚ãªãŸã«ã‚³ãƒ¼ãƒªãƒ³ã‚°ã‚«ãƒ¼ãƒ‰ã‚’é€ã£ã¦ãã¾ã—ãŸã€‚ +ã“れã«ã‚ˆã‚Šã€ã‚ãªãŸã®æŒã¡ç‰©ã«ãƒ–ックマークãŒè¿½åŠ ã•れã€ã“ã®ä½äººã«ã™ã°ã‚„ãIMã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + <form name="form"> + <button name="Accept" text="å—ã‘入れる"/> + <button name="Decline" text="辞退"/> + </form> + </notification> + <notification name="RegionRestartMinutes"> + ã“ã®åœ°åŸŸã¯[MINUTES]分後ã«å†èµ·å‹•ã•れã¾ã™ã€‚ +強制ãƒã‚°ã‚¢ã‚¦ãƒˆã¨ãªã‚Šã¾ã™ã®ã§ã€ã“ã®åœ°åŸŸã®å¤–ã«å‡ºã¦ãã ã•ã„。 + </notification> + <notification name="RegionRestartSeconds"> + ã“ã®åœ°åŸŸã¯[SECONDS]秒後ã«å†èµ·å‹•ã•れã¾ã™ã€‚ +強制ãƒã‚°ã‚¢ã‚¦ãƒˆã¨ãªã‚Šã¾ã™ã®ã§ã€ã“ã®åœ°åŸŸã®å¤–ã«å‡ºã¦ãã ã•ã„。 + </notification> + <notification name="LoadWebPage"> + ウェブ・ページ[URL]ã‚’ãƒãƒ¼ãƒ‰ã—ã¾ã™ã‹ï¼Ÿ + +[MESSAGE] + +ãƒãƒ¼ãƒ‰å…ƒã®ã‚ªãƒ–ジェクト:[OBJECTNAME]ã€ã‚ªãƒ¼ãƒŠãƒ¼ï¼š[NAME]? + <form name="form"> + <button name="Gotopage" text="移動"/> + <button name="Cancel" text="å–り消ã—"/> + </form> + </notification> + <notification name="FailedToFindWearableUnnamed"> + データベースã«[TYPE]ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—㟠+ </notification> + <notification name="FailedToFindWearable"> + データベースã«[DESC]ã¨ã„ã†åå‰ã®[TYPE]ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚ + </notification> + <notification name="InvalidWearable"> + ç€ç”¨ã—よã†ã¨ã—ã¦ã„るアイテムã¯ã‚ãªãŸã®ãƒ“ューワã§ã¯èªã¿è¾¼ã‚€ã“ã¨ãŒã§ãã¾ã›ã‚“。 Second Lifeビューワを最新ã®ã‚‚ã®ã«ã‚¢ãƒƒãƒ—グレードã—ã¦ã‹ã‚‰ã“ã®ã‚¢ã‚¤ãƒ†ãƒ ã‚’ç€ç”¨ã—ã¦ãã ã•ã„。 + </notification> + <notification name="ScriptQuestion"> + 「[NAME]ã€ãŒæ‰€æœ‰ã™ã‚‹ã‚ªãƒ–ジェクト「[OBJECTNAME]ã€ã‚’: + +[QUESTIONS] +よã‚ã—ã„ã§ã™ã‹ï¼Ÿ + <form name="form"> + <button name="Yes" text="ã¯ã„"/> + <button name="No" text="ã„ã„ãˆ"/> + <button name="Mute" text="無視リストã«è¿½åŠ "/> + </form> + </notification> + <notification name="ScriptQuestionCaution"> + 「[OBJECTNAME]ã€ãŒæ‰€æœ‰ã™ã‚‹ã‚ªãƒ–ジェクト「[NAME]ã€ã¯ã€æ¬¡ã®ã“ã¨ã‚’求ã‚ã¦ã„ã¾ã™ï¼š + +[QUESTIONS] +ã“ã®ã‚ªãƒ–ジェクトã¨åˆ¶ä½œè€…ãŒä¿¡ç”¨ã§ããªã„å ´åˆã¯ã€ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’æ‹’å¦ã—ã¦ãã ã•ã„ã€‚è¿½åŠ æƒ…å ±ã¯ã€è©³ç´°ãƒœã‚¿ãƒ³ã‚’クリックã—ã¦ãã ã•ã„。 + +ã“ã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’許å¯ã—ã¾ã™ã‹ï¼Ÿ + <form name="form"> + <button name="Grant" text="許å¯"/> + <button name="Deny" text="æ‹’å¦"/> + <button name="Details" text="詳細..."/> + </form> + </notification> + <notification name="ScriptDialog"> + [FIRST] [LAST]ã®ã€Œ[TITLE]〠+[MESSAGE] + <form name="form"> + <button name="Ignore" text="無視ã™ã‚‹"/> + </form> + </notification> + <notification name="ScriptDialogGroup"> + [GROUPNAME]ã®ã€Œ[TITLE]〠+[MESSAGE] + <form name="form"> + <button name="Ignore" text="無視ã™ã‚‹"/> + </form> + </notification> + <notification name="FirstBalanceIncrease"> + L$[AMOUNT]ã‚’å—ã‘å–りã¾ã—ãŸã€‚ +オブジェクトãŠã‚ˆã³ä»–ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒã‚ãªãŸã«ãŠé‡‘を支払ã£ãŸã‚ˆã†ã§ã™ã€‚ +ã‚ãªãŸã®æ®‹é«˜ã¯ç”»é¢ã®å³ä¸Šã«è¡¨ç¤ºã•れ㦠ã„ã¾ã™ã€‚ + </notification> + <notification name="FirstBalanceDecrease"> + L$[AMOUNT]を支払ã„ã¾ã—ãŸã€‚ +ã‚ãªãŸã®æ®‹é«˜ã¯ç”»é¢ã®å³ä¸Šã«è¡¨ç¤ºã•れ㦠ã„ã¾ã™ã€‚ + </notification> + <notification name="FirstSit"> + ã‚ãªãŸã¯åº§ã£ã¦ã„ã¾ã™ã€‚ +矢å°ï¼ˆã¾ãŸã¯ AWSD)ã®ã‚ーを使ã£ã¦ +視点を変ãˆã¾ã™ã€‚ +ç«‹ã¡ä¸ŠãŒã‚‹ã«ã¯ã€Œç«‹ã¡ä¸ŠãŒã‚‹ã€ã‚’クリックã—ã¾ã™ã€‚ + </notification> + <notification name="FirstMap"> + 地図をスクãƒãƒ¼ãƒ«ã™ã‚‹ã«ã¯ã€ã‚¯ãƒªãƒƒã‚¯ã—ã¦ãƒ‰ãƒ©ãƒƒã‚°ã—ã¾ã™ã€‚ +テレãƒãƒ¼ãƒˆã™ã‚‹ã«ã¯ã€ãƒ€ãƒ–ルクリックã—ã¾ã™ã€‚ +å³å´ã®ã‚³ãƒ³ãƒˆãƒãƒ¼ãƒ«ã‚’使用ã™ã‚‹ã¨ã€ç‰©ã‚’見ã¤ã‘ãŸã‚Šã€åˆ¥ã®èƒŒæ™¯ã‚’表示ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + </notification> + <notification name="FirstBuild"> + [SECOND_LIFE] ã«ã¯ã€ +æ–°ã—ã„オブジェクトを作るã“ã¨ãŒã§ãる地域ãŒã‚りã¾ã™ã€‚ +作æˆã«ã¯ç”»é¢ä¸Šéƒ¨å·¦ã®ãƒ„ールãŒä½¿ãˆã€ +Ctrlã‚ーやAltã‚ーを押ã—ãŸã¾ã¾ã«ã™ã‚Œã° +ç´ æ—©ãツールを切り替ãˆã‚‰ã‚Œã¾ã™ã€‚ +Escã‚ーを押ã™ã¨ã€ä½œæˆã¯çµ‚了ã—ã¾ã™ã€‚ + </notification> + <notification name="FirstLeftClickNoHit"> + 左クリックã§ç‰¹åˆ¥ãªã‚ªãƒ–ジェクトをæ“作ã§ãã¾ã™ã€‚ +マウス・ãƒã‚¤ãƒ³ã‚¿ãŒæ‰‹ã®ãƒžãƒ¼ã‚¯ã«å¤‰ã‚ã‚‹ã¨ã€ãƒã‚¤ãƒ³ãƒˆã—ã¦ã„るオブジェクトをæ“作ã§ãã¾ã™ã€‚ +å³ã‚¯ãƒªãƒƒã‚¯ã§å®Ÿè¡Œå¯èƒ½ãªæ“作ã®ãƒ¡ãƒ‹ãƒ¥ãƒ¼ãŒè¡¨ç¤ºã•れã¾ã™ã€‚ + </notification> + <notification name="FirstTeleport"> + ã“ã®åœ°åŸŸã§ã¯ã€ãƒã‚¤ãƒ³ãƒˆé–“ã®ãƒ†ãƒ¬ãƒãƒ¼ãƒˆãŒèªã‚られã¦ã„ã¾ã›ã‚“ã®ã§ã€æœ€ã‚‚è¿‘ã„テレãƒãƒ–周辺ã«ç§»å‹•ã—ã¾ã—ãŸã€‚ +ã‚ãªãŸã®ç›®çš„地ã¯ã€å¤§ããªæ¨™è˜ï¼ˆãƒ“ーコン)ã§è¡¨ç¤ºã•れã¦ã„ã¾ã™ã€‚赤ã„矢å°ã«å‘ã‹ã£ã¦é€²ã‚€ã¨æ¨™è˜ï¼ˆãƒ“ーコン)ã¸è¾¿ã‚Šç€ãã¾ã™ã€‚ +矢å°ã‚’クリックã™ã‚‹ã¨æ¨™è˜ï¼ˆãƒ“ーコン)を消ã›ã¾ã™ + </notification> + <notification name="FirstOverrideKeys"> + ã‚ãªãŸã®ç§»å‹•ã‚ãƒ¼ã‚’ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆãŒæ“作ã—ã¦ã„ã¾ã™ã€‚ +矢å°ã‹AWSDã®ã‚ーã§å‹•作を確èªã—ã¦ãã ã•ã„。 +銃ãªã©ã®ã‚ªãƒ–ジェクトã ã¨ã€ä¸€äººç§°è¦–点(マウスルック)ã«å¤‰æ›´ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ +Mã‚ーを押ã—ã¦å¤‰æ›´ã—ã¾ã™ã€‚ + </notification> + <notification name="FirstAppearance"> + ã‚ãªãŸã¯å®¹å§¿ã‚’編集ä¸ã§ã™ã€‚ +回転ã€ã‚ºãƒ¼ãƒ ã™ã‚‹ã«ã¯çŸ¢å°ã‚ーを使ã„ã¾ã™ã€‚ +編集ãŒçµ‚ã‚ã£ãŸã‚‰ã€Œã™ã¹ã¦ä¿å˜ã€ã‚’クリックã—ã¦å®¹å§¿ã‚’ä¿å˜ã—ã€çµ‚了ã—ã¾ã™ã€‚ +容姿ã®ç·¨é›†ã¯ä½•度ã§ã‚‚行ãˆã¾ã™ã€‚ + </notification> + <notification name="FirstInventory"> + ã“れã¯ã€ã‚ªãƒ–ジェクトã€ãƒŽãƒ¼ãƒˆã‚«ãƒ¼ãƒ‰ã€æœã€ãã®ä»–ã‚ãªãŸã®æ‰€æœ‰ç‰©ãŒã™ã¹ã¦å…¥ã£ãŸã€ŒæŒã¡ç‰©ã€ã§ã™ã€‚ +*マウスã§ã‚¢ãƒã‚¿ãƒ¼ã«ã‚ªãƒ–ジェクトやæœè£…フォルダをドラッグã—ã¦è£…ç€ã—ã¾ã™ã€‚ +*オブジェクトを地é¢ã®ä¸Šã«ãƒ‰ãƒ©ãƒƒã‚°ã™ã‚‹ã¨ã€å‘¨å›²ã®ä¸–界ã«è¡¨ç¤ºã•ã›ã¾ã™ã€‚(Rez) +*ノートカードをèªã‚€ã«ã¯ã€ãƒ€ãƒ–ルクリックã—ã¾ã™ã€‚ + </notification> + <notification name="FirstSandbox"> + ã“ã“ã¯ã‚µãƒ³ãƒ‰ãƒœãƒƒã‚¯ã‚¹ã§ã™ã€‚ +ã‚ãªãŸãŒã“ã“ã§ä½œã£ãŸã‚ªãƒ–ジェクトã¯ã‚ãªãŸãŒç«‹ã¡åŽ»ã£ãŸå¾Œã€å‰Šé™¤ã•れるã‹ã‚‚ã—れã¾ã›ã‚“。サンドボックスã¯å®šæœŸçš„ã«æ¸…掃ã•れã¾ã™ã€‚詳細ã«ã¤ã„ã¦ã¯ã€ç”»é¢ä¸Šéƒ¨ã€åœ°åŸŸåã®éš£ã®æƒ…å ±ã‚’å‚ç…§ã—ã¦ãã ã•ã„。 + +サンドボックスã¯ç‰¹åˆ¥ãªã‚¨ãƒªã‚¢ã§ã€ç›®å°ã®ã‚µã‚¤ãƒ³ãŒã¤ã„ã¦ã„ã¾ã™ã€‚ + </notification> + <notification name="FirstFlexible"> + ã“ã®ã‚ªãƒ–ジェクト㯠フレã‚シブルã§ã™ã€‚ +フレã‚シブル・ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹ã®ãƒã‚§ãƒƒã‚¯ãŒå¤–ã•れるã¾ã§ã¯ã€ã‚ªãƒ–ジェクトã¯ç‰©ç†çš„ã§ãªãファントムã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“。 + </notification> + <notification name="FirstDebugMenus"> + 高度ãªè¨å®šã‚’有効ã«ã—ã¾ã—ãŸã€‚ +ã“ã®ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã«ã¯ã€ +Second Life をデãƒãƒƒã‚°ã™ã‚‹ãƒ‡ãƒ™ãƒãƒƒãƒ‘ーã«ã¨ã£ã¦ +æœ‰ç”¨ãªæ©Ÿèƒ½ãŒã‚りã¾ã™ã€‚ +ã“ã®ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã‚’切り替ãˆã‚‹ã«ã¯ã€ +Windowsã§ã¯Ctrl-Alt-Dを押ã—ã¾ã™ã€‚ +Macã®å ´åˆã¯ã€Cmd-Opt-Shift-Dを押ã—ã¦ãã ã•ã„。 + </notification> + <notification name="FirstSculptedPrim"> + スカルプトプリムを編集ã—ã¦ã„ã¾ã™ã€‚ +スカルプトプリムã¯ã€å½¢çŠ¶ã‚’æŒ‡å®šã™ã‚‹ãŸã‚ã®ç‰¹åˆ¥ãªãƒ†ã‚¯ã‚¹ãƒãƒ£ãƒ¼ãŒå¿…è¦ã§ã™ã€‚ +æŒã¡ç‰©ãƒ©ã‚¤ãƒ–ラリã§ã€ã‚¹ã‚«ãƒ«ãƒ—トテクスãƒãƒ£ãƒ¼ã®ã‚µãƒ³ãƒ—ルをå‚ç…§ã§ãã¾ã™ã€‚ + </notification> + <notification name="FirstMedia"> + メディアã®å†ç”Ÿã‚’é–‹å§‹ã—ã¾ã—ãŸã€‚ +オーディオ/ビデオã®ç’°å¢ƒè¨å®šã§ã€è‡ªå‹•çš„ã«ãƒ¡ãƒ‡ã‚£ã‚¢ã‚’å†ç”Ÿã™ã‚‹ã‚ˆã†ã«è¨å®šã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ +注: ã“ã®è¨å®šã«ã‚ˆã‚Šã€ä¿¡é ¼ã—ãªã„ãƒ¡ãƒ‡ã‚£ã‚¢ãƒ»ã‚µã‚¤ãƒˆã«æŽ¥ç¶šã•れるセã‚ュリティ・リスクãŒä¼´ã„ã¾ã™ã€‚ + </notification> + <notification name="MaxListSelectMessage"> + ã“ã®ãƒªã‚¹ãƒˆã‹ã‚‰[MAX_SELECT]個ã¾ã§ã®ã‚¢ã‚¤ãƒ†ãƒ ã‚’é¸æŠžã§ãã¾ã™ã€‚ + </notification> + <notification name="VoiceInviteP2P"> + [NAME]ãŒã€ã‚ãªãŸã‚’ボイスãƒãƒ£ãƒƒãƒˆã‚³ãƒ¼ãƒ«ã«æ‹›å¾…ã—ã¦ã„ã¾ã™ã€‚ +コールã«å‚åŠ ã™ã‚‹ã«ã¯ã€Œå—ã‘入れるã€ã‚’クリックã—ã€æ‹›å¾…ã‚’æ–ã‚‹ã¨ãã¯ã€Œæ‹’å¦ã€ã‚’クリックã—ã¦ãã ã•ã„。ã“ã®ã‚³ãƒ¼ãƒ«ã‚’ã—ã¦ã„る人をミュートã«ã™ã‚‹å ´åˆã¯ã€ŒãƒŸãƒ¥ãƒ¼ãƒˆã€ã‚’クリックã—ã¦ãã ã•ã„。 + <form name="form"> + <button name="Accept" text="å—ã‘入れる"/> + <button name="Decline" text="æ‹’å¦"/> + <button name="Mute" text="ミュート"/> + </form> + </notification> + <notification name="AutoUnmuteByIM"> + [FIRST] [LAST]ã« +インスタント・メッセージãŒé€ä¿¡ã•れã€ç„¡è¦–è¨å®šã¯è‡ªå‹•çš„ã«è§£é™¤ã•れã¾ã—ãŸã€‚ + </notification> + <notification name="AutoUnmuteByMoney"> + [FIRST] [LAST]ã«ãŠé‡‘を渡ã—ãŸãŸã‚〠無視è¨å®šãŒè‡ªå‹•çš„ã«è§£é™¤ã•れã¾ã—ãŸã€‚ + </notification> + <notification name="AutoUnmuteByInventory"> + [FIRST] [LAST]ã«æŒã¡ç‰©ã‚’渡ã—ãŸãŸã‚〠無視è¨å®šãŒè‡ªå‹•çš„ã«è§£é™¤ã•れã¾ã—ãŸã€‚ + </notification> + <notification name="VoiceInviteGroup"> + [NAME]ãŒã€ã‚°ãƒ«ãƒ¼ãƒ—[GROUP]ã¨ã®ãƒœã‚¤ã‚¹ãƒãƒ£ãƒƒãƒˆã‚³ãƒ¼ãƒ«ã«å‚åŠ ã—ã¾ã—ãŸã€‚ +コールã«å‚åŠ ã™ã‚‹ã«ã¯ã€Œå—ã‘入れるã€ã‚’クリックã—ã€æ‹›å¾…ã‚’æ–ã‚‹ã¨ãã¯ã€Œæ‹’å¦ã€ã‚’クリックã—ã¦ãã ã•ã„。ã“ã®ã‚³ãƒ¼ãƒ«ã‚’ã—ã¦ã„る人をミュートã«ã™ã‚‹å ´åˆã¯ã€ŒãƒŸãƒ¥ãƒ¼ãƒˆã€ã‚’クリックã—ã¦ãã ã•ã„。 + <form name="form"> + <button name="Accept" text="å—ã‘入れる"/> + <button name="Decline" text="æ‹’å¦"/> + <button name="Mute" text="ミュート"/> + </form> + </notification> + <notification name="VoiceInviteAdHoc"> + [NAME]ãŒã€ä¼šè°ãƒãƒ£ãƒƒãƒˆã§ãƒœã‚¤ã‚¹ãƒãƒ£ãƒƒãƒˆã‚³ãƒ¼ãƒ«ã«å‚åŠ ã—ã¾ã—ãŸã€‚ +コールã«å‚åŠ ã™ã‚‹ã«ã¯ã€Œå—ã‘入れるã€ã‚’クリックã—ã€æ‹›å¾…ã‚’æ–ã‚‹ã¨ãã¯ã€Œæ‹’å¦ã€ã‚’クリックã—ã¦ãã ã•ã„。 ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’ミュート(消声)ã™ã‚‹å ´åˆã¯ã€ŒãƒŸãƒ¥ãƒ¼ãƒˆã€ã‚’クリックã—ã¦ãã ã•ã„。 + <form name="form"> + <button name="Accept" text="å—ã‘入れる"/> + <button name="Decline" text="æ‹’å¦"/> + <button name="Mute" text="ミュート"/> + </form> + </notification> + <notification name="InviteAdHoc"> + [NAME]ãŒã€ã‚ãªãŸã‚’会è°ãƒãƒ£ãƒƒãƒˆã«æ‹›å¾…ã—ã¦ã„ã¾ã™ã€‚ +ãƒãƒ£ãƒƒãƒˆã«å‚åŠ ã™ã‚‹ã«ã¯ã€Œå—ã‘入れるã€ã‚’クリックã—ã€æ‹›å¾…ã‚’æ–ã‚‹ã¨ãã¯ã€Œæ‹’å¦ã€ã‚’クリックã—ã¦ãã ã•ã„。ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’ミュート(消声)ã™ã‚‹å ´åˆã¯ã€ŒãƒŸãƒ¥ãƒ¼ãƒˆã€ã‚’クリックã—ã¦ãã ã•ã„。 + <form name="form"> + <button name="Accept" text="å—ã‘入れる"/> + <button name="Decline" text="æ‹’å¦"/> + <button name="Mute" text="ミュート"/> + </form> + </notification> + <notification name="VoiceChannelFull"> + ã‚ãªãŸãŒå‚åŠ ã—よã†ã¨ã—ã¦ã„るボイスコール[VOICE_CHANNEL_NAME]ã¯ã€å‚åŠ è€…ãŒæœ€å¤§é™ã«é”ã—ã¾ã—ãŸã€‚後ã§ã‚‚ã†ä¸€åº¦ãŠè©¦ã—ãã ã•ã„。 + </notification> + <notification name="ProximalVoiceChannelFull"> + ã“ã®ã‚¨ãƒªã‚¢ã®ãƒœã‚¤ã‚¹ãƒãƒ£ãƒƒãƒˆã¯ã€æ··é›‘ã®ãŸã‚容é‡ã‚’è¶…ãˆã¦ã—ã¾ã£ã¦ã„ã¾ã™ã€‚申ã—訳ã‚りã¾ã›ã‚“ãŒã€ä»–ã®ã‚¨ãƒªã‚¢ã§ãƒœã‚¤ã‚¹ãƒãƒ£ãƒƒãƒˆã‚’ãŠè©¦ã—ãã ã•ã„。 + </notification> + <notification name="VoiceChannelDisconnected"> + [VOICE_CHANNEL_NAME]ã¸ã®æŽ¥ç¶šãŒåˆ‡æ–ã•れã¾ã—ãŸã€‚空間ボイスãƒãƒ£ãƒƒãƒˆã«å†æŽ¥ç¶šã•れã¾ã™ã€‚ + </notification> + <notification name="VoiceChannelDisconnectedP2P"> + [VOICE_CHANNEL_NAME]ã¯ã€ã‚³ãƒ¼ãƒ«ã‚’終了ã—ã¾ã—ãŸã€‚空間ボイスãƒãƒ£ãƒƒãƒˆã«å†æŽ¥ç¶šã•れã¾ã™ã€‚ + </notification> + <notification name="P2PCallDeclined"> + [VOICE_CHANNEL_NAME]ã¯ã€ã‚ãªãŸã®ã‚³ãƒ¼ãƒ«ã‚’æ‹’å¦ã—ã¾ã—ãŸã€‚空間ボイスãƒãƒ£ãƒƒãƒˆã«å†æŽ¥ç¶šã•れã¾ã™ã€‚ + </notification> + <notification name="P2PCallNoAnswer"> + [VOICE_CHANNEL_NAME]ã¯ã€ã‚ãªãŸã®ã‚³ãƒ¼ãƒ«ã‚’å—ã‘å–れã¾ã›ã‚“。空間ボイスãƒãƒ£ãƒƒãƒˆã«å†æŽ¥ç¶šã•れã¾ã™ã€‚ + </notification> + <notification name="VoiceChannelJoinFailed"> + [VOICE_CHANNEL_NAME]ã¸ã®æŽ¥ç¶šã«å¤±æ•—ã—ã¾ã—ãŸã€‚時間をãŠã„ã¦ã€å†åº¦ã€è©¦ã¿ã¦ãã ã•ã„。空間ボイスãƒãƒ£ãƒƒãƒˆã«å†æŽ¥ç¶šã•れã¾ã™ã€‚ + </notification> + <notification name="VoiceLoginRetry"> + ã‚ãªãŸç”¨ã®ãƒœã‚¤ã‚¹ãƒãƒ£ãƒ³ãƒãƒ«ã‚’作æˆã—ã¦ã„ã¾ã™ã€‚1分ã»ã©ã‹ã‹ã‚Šã¾ã™ã€‚ + </notification> + <notification name="Cannot enter parcel: not a group member"> + é©åˆ‡ãªã‚°ãƒ«ãƒ¼ãƒ—ã®ãƒ¡ãƒ³ãƒãƒ¼ã§ã¯ãªã„ãŸã‚ã€åŒºç”»ã«å…¥ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。 + </notification> + <notification name="Cannot enter parcel: banned"> + ç«‹å…¥ç¦æ¢ã•れã¦ã„ã‚‹ãŸã‚ã€åŒºç”»ã«å…¥ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。 + </notification> + <notification name="Cannot enter parcel: not on access list"> + アクセス・リストã«å«ã¾ã‚Œã¦ã„ãªã„ãŸã‚ã€åŒºç”»ã«å…¥ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。 + </notification> + <notification name="VoiceNotAllowed"> + ã‚ãªãŸã«ã¯[VOICE_CHANNEL_NAME]ã®ãƒœã‚¤ã‚¹ãƒ»ãƒãƒ£ãƒƒãƒˆã«æŽ¥ç¶šã™ã‚‹æ¨©é™ãŒã‚りã¾ã›ã‚“。 + </notification> + <notification name="VoiceCallGenericError"> + [VOICE_CHANNEL_NAME]ã®ãƒœã‚¤ã‚¹ãƒ»ãƒãƒ£ãƒƒãƒˆã«æŽ¥ç¶šä¸ã«ã€ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚後ã§ã‚‚ã†ä¸€åº¦ãŠè©¦ã—ãã ã•ã„。 + </notification> + <notification name="ServerVersionChanged"> + 到ç€ã—ãŸåœ°åŸŸã¯ç•°ãªã‚‹ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚¿ãƒ¼ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§å®Ÿè¡Œã•れã¦ã„ã¾ã™ã€‚ 詳細ã«ã¤ã„ã¦ã¯ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’クリックã—ã¦ãã ã•ã„。 + </notification> + <notification name="UnableToOpenCommandURL"> + クリックã—ãŸURLã¯ã“ã®ã‚¦ã‚§ãƒ–ブラウザã§ã¯é–‹ã‘ã¾ã›ã‚“ + </notification> + <global name="UnsupportedCPU"> + - ã‚ãªãŸã® CPU ã®é€Ÿåº¦ã¯å¿…é ˆå‹•ä½œç’°å¢ƒã®æ¡ä»¶ã‚’満ãŸã—ã¦ã„ã¾ã›ã‚“。 + </global> + <global name="UnsupportedGLRequirements"> + Second Life ã®ä½¿ç”¨ã«å¿…è¦ãªãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ã®ç’°å¢ƒãŒæº€ãŸã•れã¦ã„ãªã„よã†ã§ã™ã€‚ Second Life ã§ã¯ãƒžãƒ«ãƒãƒ†ã‚¯ã‚¹ãƒãƒ£ãƒ¼ã«å¯¾å¿œã—ãŸOpenGLグラフィック・カードãŒå¿…è¦ã§ã™ã€‚ ã“ã®å ´åˆã€ã‚°ãƒ©ãƒ•ã‚£ãƒƒã‚¯ãƒ»ã‚«ãƒ¼ãƒ‰ã®æœ€æ–°ãƒ‰ãƒ©ã‚¤ãƒãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¦ã„ã‚‹ã“ã¨ã€ãŠã‚ˆã³ã‚ªãƒšãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°ãƒ»ã‚·ã‚¹ãƒ†ãƒ ã«ã‚µãƒ¼ãƒ“ス・パックã¨ä¿®æ£ãƒ—ãƒã‚°ãƒ©ãƒ ãŒé©ç”¨ã•れã¦ã„ã‚‹ã“ã¨ã‚’ã”確èªãã ã•ã„。 + +å•題ãŒè§£æ±ºã•れãªã„å ´åˆã«ã¯ã€æ¬¡ã®ã‚µã‚¤ãƒˆã«ã‚¢ã‚¯ã‚»ã‚¹ã—ã¦ãã ã•ã„。 http://www.secondlife.com/support + </global> + <global name="UnsupportedCPUAmount"> + 796 + </global> + <global name="UnsupportedRAMAmount"> + 510 + </global> + <global name="UnsupportedGPU"> + - ã‚ãªãŸã®ã‚°ãƒ©ãƒ•ィック・カードã¯å¿…é ˆå‹•ä½œç’°å¢ƒã®æ¡ä»¶ã‚’満ãŸã—ã¦ã„ã¾ã›ã‚“。 + </global> + <global name="UnsupportedRAM"> + - ã‚ãªãŸã®ã‚·ã‚¹ãƒ†ãƒ ・メモリã¯å¿…é ˆå‹•ä½œç’°å¢ƒã®æ¡ä»¶ã‚’満ãŸã—ã¦ã„ã¾ã›ã‚“。 + </global> + <global name="PermYes"> + ã¯ã„ + </global> + <global name="PermNo"> + ã„ã„㈠+ </global> +</notifications> diff --git a/indra/newview/skins/default/xui/ja/panel_group_general.xml b/indra/newview/skins/default/xui/ja/panel_group_general.xml index 505762bf1251137e378a2998375b3e8b6f15cf8c..ea2953038e597b561ed10f60532fa2350aabe5d3 100644 --- a/indra/newview/skins/default/xui/ja/panel_group_general.xml +++ b/indra/newview/skins/default/xui/ja/panel_group_general.xml @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="一般" name="general_tab"> <string name="help_text"> - [一般]タブã«ã¯ã€ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«é–¢ã™ã‚‹ + 「一般ã€ã‚¿ãƒ–ã«ã¯ã€ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«é–¢ã™ã‚‹ ä¸€èˆ¬æƒ…å ±ã€ã‚ªãƒ¼ãƒŠãƒ¼ã¨è¡¨ç¤ºå¯èƒ½ãªãƒ¡ãƒ³ãƒãƒ¼ã®ãƒªã‚¹ãƒˆ -一般的ãª[グループ環境è¨å®š]ã€ãƒ¡ãƒ³ãƒãƒ¼ã®ã‚ªãƒ—ションãŒå«ã¾ã‚Œã¾ã™ã€‚ +一般的ãªã€Œã‚°ãƒ«ãƒ¼ãƒ—環境è¨å®šã€ã€ãƒ¡ãƒ³ãƒãƒ¼ã®ã‚ªãƒ—ションãŒå«ã¾ã‚Œã¾ã™ã€‚ オプションã®ä¸Šã§ãƒžã‚¦ã‚¹ã‚«ãƒ¼ã‚½ãƒ«ã‚’å‹•ã‹ã™ã¨ã€ãƒ˜ãƒ«ãƒ—æƒ…å ±ã‚’å¾—ã‚‰ã‚Œã¾ã™ã€‚ </string> @@ -49,7 +49,17 @@ <check_box label="会員募集" name="open_enrollement" tool_tip="招待状ãªã—ã«è‡ªç”±ã«ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«åŠ å…¥ã™ã‚‹ã“ã¨ã‚’許å¯ã™ã‚‹ã‹ã©ã†ã‹ã‚’指定ã—ã¾ã™"/> <check_box label="入会費:L$" name="check_enrollment_fee" tool_tip="ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã¸ã®å‚åŠ ã«å…¥ä¼šè²»ã‚’å¿…é ˆã¨ã™ã‚‹ã‹ã©ã†ã‹ã‚’指定ã—ã¾ã™"/> <spinner name="spin_enrollment_fee" tool_tip="「入会費ã€ãŒãƒã‚§ãƒƒã‚¯ã•れã¦ã„ã‚‹å ´åˆã€æ–°è¦ä¼šå“¡ã¯å…¥ä¼šæ™‚ã«ã“ã“ã«æŒ‡å®šã•れãŸé‡‘é¡ã‚’支払ã†å¿…è¦ãŒã‚りã¾ã™"/> - + <combo_box name="group_mature_check" tool_tip="ã‚°ãƒ«ãƒ¼ãƒ—æƒ…å ±ãŒMatureå‘ã‘ã‹ã©ã†ã‹ã®è¨å®šã‚’ã—ã¾ã™ã€‚"> + <combo_item name="select_mature"> + - Matureã®é¸æŠž - + </combo_item> + <combo_item name="mature"> + Matureコンテンツ + </combo_item> + <combo_item name="pg"> + PGコンテンツ + </combo_item> + </combo_box> <panel name="title_container"> <text name="active_title_label"> ç§ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ–・タイトル @@ -57,7 +67,7 @@ <combo_box name="active_title" tool_tip="ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—をアクティブè¨å®šã«ã—ãŸéš›ã‚¢ãƒã‚¿ãƒ¼ã®ãƒãƒ¼ãƒ ã‚¿ã‚°ã«è¡¨ç¤ºã•れるタイトルã®è¨å®š"/> </panel> <check_box label="グループ通知をå—ä¿¡" name="receive_notices" tool_tip="グループã‹ã‚‰ã®é€šçŸ¥ã‚’å—ä¿¡ã™ã‚‹ã‹ã©ã†ã‹ã‚’指定ã—ã¾ã™ã€‚ ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ãŒã‚¹ãƒ‘ム行為をã—ã¦ã„ã‚‹å ´åˆã¯ã€ã“ã®ãƒœãƒƒã‚¯ã‚¹ã®ãƒã‚§ãƒƒã‚¯ã‚’外ã—ã¦ãã ã•ã„"/> - <check_box label="プロフィールã«ï½¸ï¾žï¾™ï½°ï¾Œï¾Ÿã‚’表示" name="list_groups_in_profile" tool_tip="ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã‚’ã‚ãªãŸã®ãƒ—ãƒãƒ•ィールã«è¡¨ç¤ºã™ã‚‹ã‹ã©ã†ã‹ã‚’è¨å®šã—ã¾ã™"/> + <check_box label="プãƒãƒ•ィールã«è¡¨ç¤º" name="list_groups_in_profile" tool_tip="ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã‚’ã‚ãªãŸã®ãƒ—ãƒãƒ•ィールã«è¡¨ç¤ºã™ã‚‹ã‹ã©ã†ã‹ã‚’è¨å®šã—ã¾ã™"/> </panel> <string name="incomplete_member_data_str"> メンãƒãƒ¼ãƒ»ãƒ‡ãƒ¼ã‚¿ã‚’検索 diff --git a/indra/newview/skins/default/xui/ja/panel_group_land_money.xml b/indra/newview/skins/default/xui/ja/panel_group_land_money.xml index 9331071a88c9f62da0c57e23e4aa0f385ca965b8..f55dbf90098f68a5baa0361daff66e423856e032 100644 --- a/indra/newview/skins/default/xui/ja/panel_group_land_money.xml +++ b/indra/newview/skins/default/xui/ja/panel_group_land_money.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="土地ã¨L$" name="land_money_tab"> <string name="help_text"> - グループ所有ã®åœŸåœ°ã¯è²¢çŒ®å€¤ã®è©³ç´°ã¨å…±ã«è¡¨ç¤ºã•れã¾ã™ã€‚土地利用ã®åˆè¨ˆãŒå¯„付ç·é¡ã‹ãれ以下ã«ãªã‚‹ã¾ã§ã¯è¦å‘ŠãŒè¡¨ç¤ºã•れã¾ã™ã€‚「詳細ã€ã¨ã€Œè²©å£²ã€ã‚¿ãƒ–ã«ã‚°ãƒ«ãƒ¼ãƒ—ã®è³‡é‡‘ã«é–¢ã™ã‚‹æƒ…å ±ãŒè¡¨ç¤ºã•れã¾ã™ã€‚ + グループ所有地一覧ã¯ã€å¯„付ã«é–¢ã™ã‚‹è©³ç´°ã¨ä¸€ç·’ã«è¡¨ç¤ºã•れã¦ã„ã¾ã™ã€‚ 「土地利用ã®åˆè¨ˆã€ãŒã€Œå¯„付ç·é¡ã€ä»¥ä¸‹ã€ã¾ãŸã¯åŒã˜ã«ãªã‚‹ã¾ã§è¦å‘ŠãŒè¡¨ç¤ºã•れã¾ã™ã€‚ 「計画ã€ã€ã€Œè©³ç´°ã€ã€ã€Œè²©å£²ã€ã‚¿ãƒ–ã«ã¯ã‚°ãƒ«ãƒ¼ãƒ—ã®è³‡é‡‘ã«é–¢ã™ã‚‹æƒ…å ±ãŒæŽ²è¼‰ã•れã¦ã„ã¾ã™ã€‚ </string> <button label="?" name="help_button"/> <string name="cant_view_group_land_text"> @@ -19,6 +19,7 @@ <scroll_list name="group_parcel_list"> <column label="区画å" name="name"/> <column label="地域(リージョン)" name="location"/> + <column label="種類" name="type"/> <column label="é¢ç©" name="area"/> <column label="" name="hidden"/> </scroll_list> @@ -57,6 +58,11 @@ グループL$ </text> <tab_container name="group_money_tab_container"> + <panel label="計画" name="group_money_planning_tab"> + <text_editor name="group_money_planning_text"> + 計算ä¸... + </text_editor> + </panel> <panel label="詳細" name="group_money_details_tab"> <text_editor name="group_money_details_text"> 計算ä¸â€¦ diff --git a/indra/newview/skins/default/xui/ja/panel_group_notices.xml b/indra/newview/skins/default/xui/ja/panel_group_notices.xml index 35b072a1aef5998c91845f9d082ab379c19aa68c..090ae2e329b0f31ea8b32d68f94bcf58de2e136d 100644 --- a/indra/newview/skins/default/xui/ja/panel_group_notices.xml +++ b/indra/newview/skins/default/xui/ja/panel_group_notices.xml @@ -16,7 +16,7 @@ </text> <text name="lbl2"> 通知ã¯14日間ä¿å˜ã•れã¾ã™ã€‚閲覧ã—ãŸã„通知をクリックã—ã¦ãã ã•ã„。 -æ–°ç€ã®é€šçŸ¥ã‚’ãƒã‚§ãƒƒã‚¯ã™ã‚‹ã«ã¯ã€[æ›´æ–°]ボタンをクリックã—ã¾ã™ã€‚ +æ–°ç€ã®é€šçŸ¥ã‚’ãƒã‚§ãƒƒã‚¯ã™ã‚‹ã«ã¯ã€ã€Œæ›´æ–°ã€ãƒœã‚¿ãƒ³ã‚’クリックã—ã¾ã™ã€‚ ãŸã ã—ã€å„グループã®é€šçŸ¥ãƒªã‚¹ãƒˆã¯1æ—¥ã‚ãŸã‚Š200通ã«åˆ¶é™ã•れã¾ã™ã€‚ </text> <scroll_list name="notice_list"> diff --git a/indra/newview/skins/default/xui/ja/panel_login.xml b/indra/newview/skins/default/xui/ja/panel_login.xml index 4f2762de31a147d6c3e6d2799138035747a0cfb3..dc57b51b0d8be314123cb49e5cc7308566e9ef6d 100644 --- a/indra/newview/skins/default/xui/ja/panel_login.xml +++ b/indra/newview/skins/default/xui/ja/panel_login.xml @@ -37,7 +37,7 @@ [VERSION] </text> <text name="forgot_password_text" left="-230" width="220"> - åå‰ã¾ãŸã¯ãƒ‘スワードをãŠå¿˜ã‚Œã§ã™ã‹? + åå‰ã¾ãŸã¯ãƒ‘スワードをãŠå¿˜ã‚Œã§ã™ã‹ï¼Ÿ </text> <text name="forgot_password_url"> http://secondlife.com/account/request.php diff --git a/indra/newview/skins/default/xui/ja/panel_notifications_channel.xml b/indra/newview/skins/default/xui/ja/panel_notifications_channel.xml index 313f60c13b099d7c18b92bf278f7a8e64169670f..5723535fd2185aa522e74395770e93c905f236ac 100644 --- a/indra/newview/skins/default/xui/ja/panel_notifications_channel.xml +++ b/indra/newview/skins/default/xui/ja/panel_notifications_channel.xml @@ -1,15 +1,15 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="notifications_panel"> - <layout_stack> - <scroll_list name="notifications_list"> - <column label="åå‰" name="name"/> - <column label="コンテンツ" name="content"/> - <column label="日付" name="date"/> - </scroll_list> - <scroll_list name="notification_rejects_list"> - <column label="åå‰" name="name"/> - <column label="コンテンツ" name="content"/> - <column label="日付" name="date"/> - </scroll_list> - </layout_stack> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="notifications_panel"> + <layout_stack name="stack1"> + <scroll_list name="notifications_list"> + <column label="åå‰" name="name"/> + <column label="コンテンツ" name="content"/> + <column label="日付" name="date"/> + </scroll_list> + <scroll_list name="notification_rejects_list"> + <column label="åå‰" name="name"/> + <column label="コンテンツ" name="content"/> + <column label="日付" name="date"/> + </scroll_list> + </layout_stack> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml b/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml index e22aca4a124c20ec3e34f4f7d8ed92aa74accf0d..875755a8c780eb5840da56ac219fe546517d6ee8 100644 --- a/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml @@ -4,20 +4,14 @@ ãƒãƒ£ãƒƒãƒˆã®ãƒ•ォント: </text> <radio_group name="chat_font_size"> - <radio_item length="1" name="radio" type="string"> - å° - </radio_item> - <radio_item length="1" name="radio2" type="string"> - ä¸ - </radio_item> - <radio_item length="1" name="radio3" type="string"> - 大 - </radio_item> + <radio_item length="1" name="radio" type="string" label="å°" /> + <radio_item length="1" name="radio2" type="string" label="ä¸" /> + <radio_item length="1" name="radio3" type="string" label="大" /> </radio_group> <text length="1" name="text_box2" type="string"> ãƒãƒ£ãƒƒãƒˆãƒ»ã‚«ãƒ©ãƒ¼ï¼š </text> - <color_swatch label="è²´æ–¹" name="user" width="56"/> + <color_swatch label="自分" name="user" width="56"/> <color_swatch label="ãã®ä»–" name="agent" left_delta="60"/> <color_swatch label="IM" name="im"/> <color_swatch label="システム" name="system"/> diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_general.xml b/indra/newview/skins/default/xui/ja/panel_preferences_general.xml index d7b14608cddf2b2680b75b76b16e12a3c0875b5c..3e3d62640facf139575f525f883e7b71beff3bef 100644 --- a/indra/newview/skins/default/xui/ja/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_general.xml @@ -28,6 +28,26 @@ <check_box label="è§£åƒåº¦ç‹¬ç«‹ã‚¹ã‚±ãƒ¼ãƒ«ã‚’使用" name="ui_auto_scale"/> <spinner label="退å¸ã¾ã§ã®æ™‚間:" name="afk_timeout_spinner"/> <check_box label="リンデン・ドル(L$ï¼‰ã®æ”¯æ‰•ã„/å—ã‘å–りを通知" name="notify_money_change_checkbox"/> + <text name="maturity_desired_label"> + レーティング区分: + </text> + <text name="maturity_desired_prompt"> + アクセスã—ãŸã„コンテンツ: + </text> + <combo_box name="maturity_desired_combobox"> + <combo_item name="Desired_Adult"> + PGã€Mature〠Adult + </combo_item> + <combo_item name="Desired_Mature"> + PGã¨Mature + </combo_item> + <combo_item name="Desired_PG"> + PGé™å®š + </combo_item> + </combo_box> + <text name="maturity_desired_textbox"> + PGé™å®š + </text> <text length="1" name="start_location_textbox" type="string"> ãƒã‚°ã‚¤ãƒ³ä½ç½®ï¼š </text> @@ -72,6 +92,15 @@ <combo_box.item length="1" name="Chinese" type="string" label="䏿–‡ (简体) (ä¸å›½èªž) - ベータ"/> <combo_box.item length="1" name="(Japanese)" type="string" label="日本語 – ベータ"/> <combo_box.item length="1" name="(Korean)" type="string" label="한êµì–´ (韓国語) – ベータ"/> + <combo_item name="Italian"> + Italiano (イタリア語) - ベータ + </combo_item> + <combo_item name="Dutch"> + Nederlands (オランダ語) - ベータ + </combo_item> + </combo_item> + <combo_item name="Turkish"> + Türkçe (トルコ語) - ベータ </combo_box> <check_box label="言語をオブジェクトã¨å…±æœ‰" name="language_is_public" tool_tip="優先言語をインワールドã®ã‚ªãƒ–ジェクトãŒèªè˜ã™ã‚‹"/> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml index 60be45a0641bdc9f5de89aa32660e3ea7d5bcefc..b70f04645f35679c9505d9f5d8211d48c6f89123 100644 --- a/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml @@ -92,18 +92,10 @@ å射詳細: </text> <radio_group name="ReflectionDetailRadio"> - <radio_item name="0"> - åœ°å½¢ã¨æ¨¹æœ¨ - </radio_item> - <radio_item name="1"> - ã™ã¹ã¦ã®é™çš„オブジェクト - </radio_item> - <radio_item name="2"> - ã™ã¹ã¦ã®ã‚¢ãƒã‚¿ãƒ¼ã¨ã‚ªãƒ–ジェクト - </radio_item> - <radio_item name="3"> - ã™ã¹ã¦ - </radio_item> + <radio_item name="0" label="åœ°å½¢ã¨æ¨¹æœ¨" /> + <radio_item name="1" label="ã™ã¹ã¦ã®é™çš„オブジェクト" /> + <radio_item name="2" label="ã™ã¹ã¦ã®ã‚¢ãƒã‚¿ãƒ¼ã¨ã‚ªãƒ–ジェクト" /> + <radio_item name="3" label="ã™ã¹ã¦" /> </radio_group> <text name="AvatarRenderingText"> ã‚¢ãƒã‚¿ãƒ¼è¡¨ç¤ºï¼š @@ -154,23 +146,15 @@ ライティング詳細: </text> <radio_group name="LightingDetailRadio"> - <radio_item name="SunMoon"> - å¤ªé™½ã¨æœˆã®ã¿ - </radio_item> - <radio_item name="LocalLights"> - 近隣ã®ãƒãƒ¼ã‚«ãƒ«ãƒ»ãƒ©ã‚¤ãƒˆ - </radio_item> + <radio_item name="SunMoon" label="å¤ªé™½ã¨æœˆã®ã¿" /> + <radio_item name="LocalLights" label="近隣ã®ãƒãƒ¼ã‚«ãƒ«ãƒ»ãƒ©ã‚¤ãƒˆ" /> </radio_group> <text name="TerrainDetailText"> 地形詳細: </text> <radio_group name="TerrainDetailRadio"> - <radio_item name="0"> - 低 - </radio_item> - <radio_item name="2"> - 高 - </radio_item> + <radio_item name="0" label="低" /> + <radio_item name="2" label="高" /> </radio_group> <button label="推奨ã•れãŸè¨å®š" name="Defaults" /> <button label="ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ãƒ»ã‚ªãƒ—ション" diff --git a/indra/newview/skins/default/xui/ja/panel_region_covenant.xml b/indra/newview/skins/default/xui/ja/panel_region_covenant.xml index 81822c5e47e79a46f3b5f44b4a2bda132b279ed2..169f9221499f0358611a8f38741b21a2fde915a4 100644 --- a/indra/newview/skins/default/xui/ja/panel_region_covenant.xml +++ b/indra/newview/skins/default/xui/ja/panel_region_covenant.xml @@ -1,50 +1,81 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="約款" name="Covenant"> + <text font="SansSerifLarge" name="estate_section_lbl"> + ä¸å‹•産: + </text> + <text name="estate_name_lbl"> + åå‰ï¼š + </text> + <text name="estate_name_text"> + メインランド + </text> + <text name="estate_owner_lbl"> + オーナー: + </text> + <text name="estate_owner_text"> + (無) + </text> + <text name="estate_cov_lbl"> + 約款: + </text> + <text name="covenant_timestamp_text"> + 最終更新日:1969å¹´12月31日(水)16:00:00 + </text> + <button label="?" name="covenant_help"/> + <text_editor bottom="-263" height="178" name="covenant_editor"> + ã“ã®ä¸å‹•産ã«ã¯ç´„款ãŒã‚りã¾ã›ã‚“。 + </text_editor> + <button label="リセット" name="reset_covenant"/> <text name="covenant_help_text"> - ç´„æ¬¾æƒ…å ±ã«å¯¾ã™ã‚‹å¤‰æ›´ã¯ã€ä¸å‹•産内ã®ã™ã¹ã¦ã®åŒºç”»ã«ç¤ºã•れã¾ã™ã€‚ + 約款ã®å¤‰æ›´ã¯ä¸å‹•産全区画ã«é©ç”¨ã¨ãªã‚Šã¾ã™ã€‚ </text> - <text name="region_name_lbl"> + <text name="covenant_instructions"> + ã“ã®ä¸å‹•産ã®ç´„款ã®å¤‰æ›´ã™ã‚‹ã«ã¯ã€ +ノートカードをドラッグ&ドãƒãƒƒãƒ—ã—ã¦ãã ã•ã„。 + </text> + <text bottom_delta="-34" font="SansSerifLarge" name="region_section_lbl"> 地域: </text> + <text name="region_name_lbl"> + åå‰ï¼š + </text> <text name="region_name_text"> - ï¼ˆä¸æ˜Žï¼‰ + leyla </text> - <text name="estate_name_lbl"> - ä¸å‹•産: + <text name="region_landtype_lbl"> + 種類: </text> - <text name="estate_name_text"> - ï¼ˆä¸æ˜Žï¼‰ + <text name="region_landtype_text"> + メインランド/ホームステッド </text> - <text name="covenent_instructions"> - ä¸å‹•産約款を変更ã™ã‚‹ã«ã¯ã€ãƒŽãƒ¼ãƒˆã‚«ãƒ¼ãƒ‰ã‚’ドラッグ アンド ドãƒãƒƒãƒ—ã—ã¦ãã ã•ã„。 + <text name="region_maturity_lbl"> + 区分: </text> - <button label="?" name="covenant_help" /> - <button label="リセット" name="reset_covenant" /> - <text name="estate_owner_lbl"> - ä¸å‹•産所有者: + <text name="region_maturity_text"> + Adult </text> - <text name="estate_owner_text"> - ï¼ˆä¸æ˜Žï¼‰ + <text name="resellable_lbl"> + å†è²©ï¼š </text> <text name="resellable_clause"> - ã“ã®åœ°åŸŸã§è³¼å…¥ã—ãŸåœŸåœ°ã¯å†è²©ãŒå¯èƒ½ãªå ´åˆã¨ä¸å¯èƒ½ãªå ´åˆãŒã‚りã¾ã™ã€‚ + ã“ã®åœ°åŸŸï¼ˆãƒªãƒ¼ã‚¸ãƒ§ãƒ³ï¼‰ã«ã‚る土地ã¯å†è²©ã§ãã¾ã›ã‚“。 + </text> + <text name="changeable_lbl"> + å†åˆ†å‰²ï¼š </text> <text name="changeable_clause"> - ã“ã®åœ°åŸŸã§è³¼å…¥ã—ãŸåœŸåœ°ã¯çµ±åˆï¼å†åˆ†å‰²ãŒå¯èƒ½ãªå ´åˆã¨ä¸å¯èƒ½ãªå ´åˆãŒã‚りã¾ã™ã€‚ + ã“ã®åœ°åŸŸï¼ˆãƒªãƒ¼ã‚¸ãƒ§ãƒ³ï¼‰ã«ã‚る土地ã¯çµ±åˆã¾ãŸã¯åˆ†å‰²ãŒã§ãã¾ã›ã‚“。 </text> - <text_editor name="covenant_editor"> - ãƒãƒ¼ãƒ‰ä¸ï¼Žï¼Žï¼Ž - </text_editor> - <text name="can_resell"> + <string name="can_resell"> ã“ã®åœ°åŸŸã§è³¼å…¥ã—ãŸåœŸåœ°ã¯ã€å†è²©ã§ãã¾ã™ã€‚ - </text> - <text name="can_not_resell"> + </string> + <string name="can_not_resell"> ã“ã®åœ°åŸŸã®è³¼å…¥åœ°ã¯å†è²©ã§ããªã„ã“ã¨ãŒã‚りã¾ã™ã€‚ - </text> - <text name="can_change"> + </string> + <string name="can_change"> ã“ã®åœ°åŸŸã®è³¼å…¥åœ°ã¯çµ±åˆã¾ãŸã¯å†åˆ†å‰²ã§ãã¾ã™ã€‚ - </text> - <text name="can_not_change"> + </string> + <string name="can_not_change"> ã“ã®åœ°åŸŸã®è³¼å…¥åœ°ã¯çµ±åˆï¼å†åˆ†å‰²ã§ããªã„ã“ã¨ãŒã‚りã¾ã™ã€‚ - </text> + </string> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_region_general.xml b/indra/newview/skins/default/xui/ja/panel_region_general.xml index 81bf03376a86dea50c8bcaec1e84801c5ed3be95..73d202544656ecd2ab3fb716e8c4912bde4825a1 100644 --- a/indra/newview/skins/default/xui/ja/panel_region_general.xml +++ b/indra/newview/skins/default/xui/ja/panel_region_general.xml @@ -1,47 +1,59 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="地域" name="General"> <text name="region_text_lbl"> 地域: </text> - <text name="region_text" left="90"> + <text left="90" name="region_text"> 未知 </text> <text name="version_channel_text_lbl" width="100"> ãƒãƒ¼ã‚¸ãƒ§ãƒ³ï¼š </text> - <text name="version_channel_text" left="90"> + <text left="90" name="version_channel_text"> 䏿˜Ž </text> - <check_box label="土地整備をブãƒãƒƒã‚¯" name="block_terraform_check" /> - <button label="?" name="terraform_help" /> - <check_box label="飛行をブãƒãƒƒã‚¯" name="block_fly_check" /> - <button label="?" name="fly_help" /> - <check_box label="ダメージを許å¯" name="allow_damage_check" /> - <button label="?" name="damage_help" /> - <check_box label="プッシュを制é™" name="restrict_pushobject" /> - <button label="?" name="restrict_pushobject_help" /> - <check_box label="土地ã®å†è²©ã‚’許å¯" name="allow_land_resell_check" /> - <button label="?" name="land_resell_help" /> - <check_box label="土地ã®çµ±åˆï¼åˆ†å‰²ã‚’許å¯" name="allow_parcel_changes_check" /> - <button label="?" name="parcel_changes_help" /> - <check_box label="åœŸåœ°ã®æ¤œç´¢è¡¨ç¤ºã‚’ブãƒãƒƒã‚¯" name="block_parcel_search_check" - tool_tip="æ¤œç´¢çµæžœã§ã€ã“ã®åœ°åŸŸã¨åŒºç”»ã‚’人ã«è¦‹ã›ã‚‹" /> - <button label="?" name="parcel_search_help" /> - <spinner label="ã‚¢ãƒã‚¿ãƒ¼æ•°ä¸Šé™" name="agent_limit_spin" /> - <button label="?" name="agent_limit_help" /> - <spinner label="物体ボーナス" name="object_bonus_spin" /> - <button label="?" name="object_bonus_help" /> + <text name="region_type_lbl"> + 種類: + </text> + <text name="region_type"> + 䏿˜Ž + </text> + <check_box label="土地整備をブãƒãƒƒã‚¯" name="block_terraform_check"/> + <button label="?" name="terraform_help"/> + <check_box label="飛行をブãƒãƒƒã‚¯" name="block_fly_check"/> + <button label="?" name="fly_help"/> + <check_box label="ダメージを許å¯" name="allow_damage_check"/> + <button label="?" name="damage_help"/> + <check_box label="プッシュを制é™" name="restrict_pushobject"/> + <button label="?" name="restrict_pushobject_help"/> + <check_box label="土地ã®å†è²©ã‚’許å¯" name="allow_land_resell_check"/> + <button label="?" name="land_resell_help"/> + <check_box label="土地ã®çµ±åˆï¼åˆ†å‰²ã‚’許å¯" name="allow_parcel_changes_check"/> + <button label="?" name="parcel_changes_help"/> + <check_box label="åœŸåœ°ã®æ¤œç´¢è¡¨ç¤ºã‚’ブãƒãƒƒã‚¯" name="block_parcel_search_check" tool_tip="æ¤œç´¢çµæžœã§ã€ã“ã®åœ°åŸŸã¨åŒºç”»ã‚’人ã«è¦‹ã›ã‚‹"/> + <button label="?" name="parcel_search_help"/> + <spinner label="ã‚¢ãƒã‚¿ãƒ¼æ•°ä¸Šé™" name="agent_limit_spin"/> + <button label="?" name="agent_limit_help"/> + <spinner label="物体ボーナス" name="object_bonus_spin"/> + <button label="?" name="object_bonus_help"/> <text label="æˆäººæŒ‡å®š" name="access_text"> - æˆäººæŒ‡å®šï¼š + 区分: </text> - - - - - <button label="?" name="access_help" /> - <button label="é©ç”¨" name="apply_btn" /> - <button label="ユーザー1人ホームテレãƒãƒ¼ãƒˆ" name="kick_btn" /> - <button label="ユーザー全員ホームテレãƒãƒ¼ãƒˆ" name="kick_all_btn" /> - <button label="メッセージを地域ã¸é€ä¿¡..." name="im_btn" /> - <button label="テレãƒãƒ–ã®ç®¡ç†..." name="manage_telehub_btn" /> + <combo_box label="Mature" name="access_combo"> + <combo_item name="Adult"> + Adult + </combo_item> + <combo_item name="Mature"> + Mature + </combo_item> + <combo_item name="PG"> + PG + </combo_item> + </combo_box> + <button label="?" name="access_help"/> + <button label="é©ç”¨" name="apply_btn"/> + <button label="ユーザー1人ホームテレãƒãƒ¼ãƒˆ" name="kick_btn"/> + <button label="ユーザー全員ホームテレãƒãƒ¼ãƒˆ" name="kick_all_btn"/> + <button label="メッセージを地域ã¸é€ä¿¡..." name="im_btn"/> + <button label="テレãƒãƒ–ã®ç®¡ç†..." name="manage_telehub_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/ja/role_actions.xml b/indra/newview/skins/default/xui/ja/role_actions.xml index 57e6d620a428eeeff5791853f7537a08514a5edf..9a58f753e5d9c3fab4847663fb31aeca1da9a21b 100644 --- a/indra/newview/skins/default/xui/ja/role_actions.xml +++ b/indra/newview/skins/default/xui/ja/role_actions.xml @@ -4,38 +4,38 @@ description="ã“れらã®èƒ½åŠ›ã«ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—・メンãƒãƒ¼ã‚’è¿½åŠ ã€æŽ’é™¤ã—ã€æ‹›å¾…状ãªã—ã«æ–°ãƒ¡ãƒ³ãƒãƒ¼ã®å‚åŠ ã‚’èªã‚る権é™ãŒå«ã¾ã‚Œã¾ã™ã€‚" name="Membership"> <action description="ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«äººã‚’招待" - longdescription="グループã«äººã‚’招待ã™ã‚‹ã«ã¯ã€[メンãƒãƒ¼ã¨å½¹å‰²]タブ>[メンãƒãƒ¼]サブタブã®[æ–°ã—ã„人を招待...]ボタンを使ã„ã¾ã™ã€‚" + longdescription="グループã«äººã‚’招待ã™ã‚‹ã«ã¯ã€ã€Œãƒ¡ãƒ³ãƒãƒ¼ã¨å½¹å‰²ã€ã‚¿ãƒ–>「メンãƒãƒ¼ã€ã‚µãƒ–タブã®ã€Œæ–°ã—ã„人を招待...ã€ãƒœã‚¿ãƒ³ã‚’使ã„ã¾ã™ã€‚" name="member invite" value="1" /> <action description="メンãƒãƒ¼ã‚’ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã‹ã‚‰è¿½æ”¾" - longdescription="メンãƒãƒ¼ã‚’ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã‹ã‚‰è¿½æ”¾ã™ã‚‹ã«ã¯ã€[メンãƒãƒ¼ã¨å½¹å‰²]タブ > [役割]サブタブã®[グループã‹ã‚‰è¿½æ”¾]を使ã„ã¾ã™ã€‚ オーナーã¯ã€ä»–ã®ã‚ªãƒ¼ãƒŠãƒ¼ä»¥å¤–ã®ä»»æ„ã®ãƒ¡ãƒ³ãƒãƒ¼ã‚’追放ã§ãã¾ã™ã€‚ オーナーã§ãªã„ユーザーãŒã‚°ãƒ«ãƒ¼ãƒ—ã‹ã‚‰ãƒ¡ãƒ³ãƒãƒ¼ã‚’追放ã§ãã‚‹ã®ã¯ã€ãã®ãƒ¡ãƒ³ãƒãƒ¼ãŒã€Œå…¨å“¡ã€ã®å½¹å‰²ã«ã®ã¿æ‰€å±žã—ã¦ãŠã‚Šã€ä»–ã®å½¹å‰²ã«æ‰€å±žã—ã¦ã„ãªã„å ´åˆã ã‘ã§ã™ã€‚ 役割ã‹ã‚‰ãƒ¡ãƒ³ãƒãƒ¼ã‚’除外ã™ã‚‹ã«ã¯ã€ã€Œå½¹å‰²ã‹ã‚‰ãƒ¡ãƒ³ãƒãƒ¼ã‚’除外ã€èƒ½åŠ›ã‚’æœ‰ã—ã¦ã„ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚" + longdescription="メンãƒãƒ¼ã‚’ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã‹ã‚‰è¿½æ”¾ã™ã‚‹ã«ã¯ã€ã€Œãƒ¡ãƒ³ãƒãƒ¼ã¨å½¹å‰²ã€ã‚¿ãƒ– > 「役割ã€ã‚µãƒ–タブã®ã€Œã‚°ãƒ«ãƒ¼ãƒ—ã‹ã‚‰è¿½æ”¾ã€ã‚’使ã„ã¾ã™ã€‚ オーナーã¯ã€ä»–ã®ã‚ªãƒ¼ãƒŠãƒ¼ä»¥å¤–ã®ä»»æ„ã®ãƒ¡ãƒ³ãƒãƒ¼ã‚’追放ã§ãã¾ã™ã€‚ オーナーã§ãªã„ユーザーãŒã‚°ãƒ«ãƒ¼ãƒ—ã‹ã‚‰ãƒ¡ãƒ³ãƒãƒ¼ã‚’追放ã§ãã‚‹ã®ã¯ã€ãã®ãƒ¡ãƒ³ãƒãƒ¼ãŒã€Œå…¨å“¡ã€ã®å½¹å‰²ã«ã®ã¿æ‰€å±žã—ã¦ãŠã‚Šã€ä»–ã®å½¹å‰²ã«æ‰€å±žã—ã¦ã„ãªã„å ´åˆã ã‘ã§ã™ã€‚ 役割ã‹ã‚‰ãƒ¡ãƒ³ãƒãƒ¼ã‚’除外ã™ã‚‹ã«ã¯ã€ã€Œå½¹å‰²ã‹ã‚‰ãƒ¡ãƒ³ãƒãƒ¼ã‚’除外ã€èƒ½åŠ›ã‚’æœ‰ã—ã¦ã„ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚" name="member eject" value="2" /> - <action description="[会員募集]ã«åˆ‡ã‚Šæ›¿ãˆã€[入会費]を変更。" - longdescription="招待状ãªã—ã«æ–°ãƒ¡ãƒ³ãƒãƒ¼ãŒåŠ å…¥ã§ãるよã†ã«[会員募集]ã«åˆ‡ã‚Šæ›¿ãˆã€[一般]タブã®[グループ環境è¨å®š]セクションã‹ã‚‰[入会費]を変更ã—ã¾ã™ã€‚" + <action description="「会員募集ã€ã«åˆ‡ã‚Šæ›¿ãˆã€ã€Œå…¥ä¼šè²»ã€ã‚’変更。" + longdescription="招待状ãªã—ã«æ–°ãƒ¡ãƒ³ãƒãƒ¼ãŒåŠ å…¥ã§ãるよã†ã«ã€Œä¼šå“¡å‹Ÿé›†ã€ã«åˆ‡ã‚Šæ›¿ãˆã€ã€Œä¸€èˆ¬ã€ã‚¿ãƒ–ã®ã€Œã‚°ãƒ«ãƒ¼ãƒ—環境è¨å®šã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‹ã‚‰ã€Œå…¥ä¼šè²»ã€ã‚’変更ã—ã¾ã™ã€‚" name="member options" value="3" /> </action_set> <action_set description="ã“れらã®èƒ½åŠ›ã«ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—内ã®å½¹å‰²ã‚’è¿½åŠ ã€å‰Šé™¤ã€å¤‰æ›´ã—ã€å½¹å‰²ã«ãƒ¡ãƒ³ãƒãƒ¼ã‚’è¿½åŠ ã€å‰Šé™¤ã—ã€ã•らã«å½¹å‰²ã¸èƒ½åŠ›ã‚’å‰²ã‚Šå½“ã¦ã‚‹æ¨©é™ãŒå«ã¾ã‚Œã¾ã™ã€‚" name="Roles"> <action description="æ–°ã—ã„役割を作æˆ" - longdescription="[メンãƒãƒ¼ã¨å½¹å‰²]タブ > [役割]ã‚µãƒ–ã‚¿ãƒ–ã§æ–°ã—ã„役割を作æˆ" + longdescription="「メンãƒãƒ¼ã¨å½¹å‰²ã€ã‚¿ãƒ– > 「役割ã€ã‚µãƒ–ã‚¿ãƒ–ã§æ–°ã—ã„役割を作æˆ" name="role create" value="4" /> <action description="役割を削除" - longdescription="役割を削除ã™ã‚‹ã«ã¯ã€ãƒ¡ãƒ³ãƒãƒ¼ã¨å½¹å‰²ã‚¿ãƒ– > 役割サブタブを使ã„ã¾ã™ã€‚" + longdescription="役割を削除ã™ã‚‹ã«ã¯ã€ã€Œãƒ¡ãƒ³ãƒãƒ¼ã¨å½¹å‰²ã€ã‚¿ãƒ– > 「役割ã€ã‚µãƒ–タブを使ã„ã¾ã™ã€‚" name="role delete" value="5" /> <action description="役割åã€ã‚¿ã‚¤ãƒˆãƒ«ã€èª¬æ˜Žã‚’変更" - longdescription="役割åã€ã‚¿ã‚¤ãƒˆãƒ«ã€èª¬æ˜Žã‚’変更ã™ã‚‹ã«ã¯ã€å½¹å‰²ã‚’é¸æŠžã—ãŸå¾Œã€[メンãƒãƒ¼ã¨å½¹å‰²]タブ > [役割]サブタブã®ä¸‹éƒ¨åˆ†ã‚’使ã„ã¾ã™ã€‚" + longdescription="役割åã€ã‚¿ã‚¤ãƒˆãƒ«ã€èª¬æ˜Žã‚’変更ã™ã‚‹ã«ã¯ã€å½¹å‰²ã‚’é¸æŠžã—ãŸå¾Œã€ã€Œãƒ¡ãƒ³ãƒãƒ¼ã¨å½¹å‰²ã€ã‚¿ãƒ– > 「役割ã€ã‚µãƒ–タブã®ä¸‹éƒ¨åˆ†ã‚’使ã„ã¾ã™ã€‚" name="role properties" value="6" /> <action description="メンãƒãƒ¼ã‚’割り当ã¦äººã®å½¹å‰²ã«å‰²ã‚Šå½“ã¦ã‚‹" - longdescription="メンãƒãƒ¼ã‚’割り当ã¦äººã®å½¹å‰²ã«å‰²ã‚Šå½“ã¦ã‚‹ã«ã¯ã€[メンãƒãƒ¼ã¨å½¹å‰²]タブ>[役割]サブタブã®å‰²ã‚Šå½“ã¦ã‚‰ã‚ŒãŸå½¹å‰²ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚’使ã„ã¾ã™ã€‚ ã“ã®èƒ½åŠ›ã‚’æŒã¤ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€å‰²ã‚Šå½“ã¦äººãŒç¾åœ¨æ‰€å±žã—ã¦ã„る役割ã«å¯¾ã—ã¦ã®ã¿ãƒ¡ãƒ³ãƒãƒ¼ã‚’è¿½åŠ ã§ãã¾ã™ã€‚" + longdescription="メンãƒãƒ¼ã‚’割り当ã¦äººã®å½¹å‰²ã«å‰²ã‚Šå½“ã¦ã‚‹ã«ã¯ã€ã€Œãƒ¡ãƒ³ãƒãƒ¼ã¨å½¹å‰²ã€ã‚¿ãƒ–>「役割ã€ã‚µãƒ–タブã®å‰²ã‚Šå½“ã¦ã‚‰ã‚ŒãŸå½¹å‰²ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚’使ã„ã¾ã™ã€‚ ã“ã®èƒ½åŠ›ã‚’æŒã¤ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€å‰²ã‚Šå½“ã¦äººãŒç¾åœ¨æ‰€å±žã—ã¦ã„る役割ã«å¯¾ã—ã¦ã®ã¿ãƒ¡ãƒ³ãƒãƒ¼ã‚’è¿½åŠ ã§ãã¾ã™ã€‚" name="role assign member limited" value="7" /> <action description="メンãƒãƒ¼ã‚’ä»»æ„ã®å½¹å‰²ã«å‰²ã‚Šå½“ã¦ã‚‹" - longdescription="メンãƒãƒ¼ã‚’ä»»æ„ã®å½¹å‰²ã«å‰²ã‚Šå½“ã¦ã‚‹ã«ã¯ã€[メンãƒãƒ¼ã¨å½¹å‰²]タブ>[役割]サブタブã®å‰²ã‚Šå½“ã¦ã‚‰ã‚ŒãŸå½¹å‰²ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚’使ã„ã¾ã™ã€‚ *è¦å‘Š* ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€è‡ªåˆ†è‡ªèº«ã‚„ä»–ã®ãƒ¡ãƒ³ãƒãƒ¼ã‚’ç¾åœ¨ã®å½¹å‰²ã‚ˆã‚Šã‚‚強力ãªå½¹å‰²ã«å‰²ã‚Šå½“ã¦ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ã“ã®ãŸã‚ã€ã‚ªãƒ¼ãƒŠãƒ¼ä»¥å¤–ã®ãƒ¡ãƒ³ãƒãƒ¼ã«å¯¾ã—ã¦ã€ã‚ªãƒ¼ãƒŠãƒ¼ã«è¿‘ã„パワーを与ãˆã‚‹ã“ã¨ã‚‚å¯èƒ½ã§ã™ã€‚ ã“ã®èƒ½åŠ›ã®å‰²ã‚Šå½“ã¦ã¯ã€ãã®ã“ã¨ã‚’ç†è§£ã—ãŸä¸Šã§è¡Œã£ã¦ãã ã•ã„。" + longdescription="メンãƒãƒ¼ã‚’ä»»æ„ã®å½¹å‰²ã«å‰²ã‚Šå½“ã¦ã‚‹ã«ã¯ã€ã€Œãƒ¡ãƒ³ãƒãƒ¼ã¨å½¹å‰²ã€ã‚¿ãƒ–>「役割ã€ã‚µãƒ–タブã®å‰²ã‚Šå½“ã¦ã‚‰ã‚ŒãŸå½¹å‰²ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚’使ã„ã¾ã™ã€‚ *è¦å‘Š* ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€è‡ªåˆ†è‡ªèº«ã‚„ä»–ã®ãƒ¡ãƒ³ãƒãƒ¼ã‚’ç¾åœ¨ã®å½¹å‰²ã‚ˆã‚Šã‚‚強力ãªå½¹å‰²ã«å‰²ã‚Šå½“ã¦ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ã“ã®ãŸã‚ã€ã‚ªãƒ¼ãƒŠãƒ¼ä»¥å¤–ã®ãƒ¡ãƒ³ãƒãƒ¼ã«å¯¾ã—ã¦ã€ã‚ªãƒ¼ãƒŠãƒ¼ã«è¿‘ã„パワーを与ãˆã‚‹ã“ã¨ã‚‚å¯èƒ½ã§ã™ã€‚ ã“ã®èƒ½åŠ›ã®å‰²ã‚Šå½“ã¦ã¯ã€ãã®ã“ã¨ã‚’ç†è§£ã—ãŸä¸Šã§è¡Œã£ã¦ãã ã•ã„。" name="role assign member" value="8" /> <action description="役割ã‹ã‚‰ãƒ¡ãƒ³ãƒãƒ¼ã‚’解除" - longdescription="メンãƒãƒ¼ã‚’役割ã‹ã‚‰è§£é™¤ã™ã‚‹ã«ã¯ã€[メンãƒãƒ¼ã¨å½¹å‰²]タブ>[メンãƒãƒ¼]サブタブã®[割り当ã¦ã‚‰ã‚ŒãŸå½¹å‰²]セクションを使ã„ã¾ã™ã€‚ オーナーã¯è§£é™¤ã§ãã¾ã›ã‚“。" + longdescription="メンãƒãƒ¼ã‚’役割ã‹ã‚‰è§£é™¤ã™ã‚‹ã«ã¯ã€ã€Œãƒ¡ãƒ³ãƒãƒ¼ã¨å½¹å‰²ã€ã‚¿ãƒ–>「メンãƒãƒ¼ã€ã‚µãƒ–タブã®ã€Œå‰²ã‚Šå½“ã¦ã‚‰ã‚ŒãŸå½¹å‰²ã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚’使ã„ã¾ã™ã€‚ オーナーã¯è§£é™¤ã§ãã¾ã›ã‚“。" name="role remove member" value="9" /> <action description="役割ã®èƒ½åŠ›ã®å‰²ã‚Šå½“ã¦ã¨è§£é™¤" - longdescription="役割ã®èƒ½åŠ›ã®å‰²ã‚Šå½“ã¦ã¨è§£é™¤ã¯ã€[メンãƒãƒ¼ã¨å½¹å‰²]タブ>[役割]サブタブã®è¨±å¯ã•れãŸèƒ½åŠ›ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã§è¡Œã„ã¾ã™ã€‚ *è¦å‘Š* ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã™ã¹ã¦ã®èƒ½åŠ›ã‚’è‡ªåˆ†è‡ªèº«ã‚„ä»–ã®ãƒ¡ãƒ³ãƒãƒ¼ã«å‰²ã‚Šå½“ã¦ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ã“ã®ãŸã‚ã€ã‚ªãƒ¼ãƒŠãƒ¼ä»¥å¤–ã®ãƒ¡ãƒ³ãƒãƒ¼ã«å¯¾ã—ã¦ã€ã‚ªãƒ¼ãƒŠãƒ¼ã«è¿‘ã„パワーをæŒãŸã›ã‚‹ã“ã¨ã‚‚å¯èƒ½ã§ã™ã€‚ ã“ã®èƒ½åŠ›ã®å‰²ã‚Šå½“ã¦ã¯ã€ãã®ã“ã¨ã‚’ç†è§£ã—ãŸä¸Šã§è¡Œã£ã¦ãã ã•ã„。" + longdescription="役割ã®èƒ½åŠ›ã®å‰²ã‚Šå½“ã¦ã¨è§£é™¤ã¯ã€ã€Œãƒ¡ãƒ³ãƒãƒ¼ã¨å½¹å‰²ã€ã‚¿ãƒ–>「役割ã€ã‚µãƒ–タブã®è¨±å¯ã•れãŸèƒ½åŠ›ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã§è¡Œã„ã¾ã™ã€‚ *è¦å‘Š* ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã™ã¹ã¦ã®èƒ½åŠ›ã‚’è‡ªåˆ†è‡ªèº«ã‚„ä»–ã®ãƒ¡ãƒ³ãƒãƒ¼ã«å‰²ã‚Šå½“ã¦ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ã“ã®ãŸã‚ã€ã‚ªãƒ¼ãƒŠãƒ¼ä»¥å¤–ã®ãƒ¡ãƒ³ãƒãƒ¼ã«å¯¾ã—ã¦ã€ã‚ªãƒ¼ãƒŠãƒ¼ã«è¿‘ã„パワーをæŒãŸã›ã‚‹ã“ã¨ã‚‚å¯èƒ½ã§ã™ã€‚ ã“ã®èƒ½åŠ›ã®å‰²ã‚Šå½“ã¦ã¯ã€ãã®ã“ã¨ã‚’ç†è§£ã—ãŸä¸Šã§è¡Œã£ã¦ãã ã•ã„。" name="role change actions" value="10" /> </action_set> <action_set @@ -47,111 +47,111 @@ name="group change identity" value="11" /> </action_set> <action_set - description="ã“れらã®èƒ½åŠ›ã«ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—所有ã®åœŸåœ°ã‚’è²æ¸¡ã€ä¿®æ£ã€è²©å£²ã™ã‚‹æ¨©é™ãŒå«ã¾ã‚Œã¾ã™ã€‚ [åœŸåœ°æƒ…å ±]ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’é–‹ãã«ã¯ã€åœ°é¢ã‚’å³ã‚¯ãƒªãƒƒã‚¯ã—ã¦[åœŸåœ°æƒ…å ±]ã‚’é¸æŠžã™ã‚‹ã‹ã€ãƒ¡ãƒ‹ãƒ¥ãƒ¼ãƒãƒ¼ã®[åŒºç”»æƒ…å ±]をクリックã—ã¾ã™ã€‚" + description="ã“れらã®èƒ½åŠ›ã«ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—所有ã®åœŸåœ°ã‚’è²æ¸¡ã€ä¿®æ£ã€è²©å£²ã™ã‚‹æ¨©é™ãŒå«ã¾ã‚Œã¾ã™ã€‚ ã€ŒåœŸåœ°æƒ…å ±ã€ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’é–‹ãã«ã¯ã€åœ°é¢ã‚’å³ã‚¯ãƒªãƒƒã‚¯ã—ã¦ã€ŒåœŸåœ°æƒ…å ±ã€ã‚’é¸æŠžã™ã‚‹ã‹ã€ãƒ¡ãƒ‹ãƒ¥ãƒ¼ãƒãƒ¼ã®ã€ŒåŒºç”»æƒ…å ±ã€ã‚’クリックã—ã¾ã™ã€‚" name="Parcel Management"> <action description="グループ用ã®åœŸåœ°ã®è²æ¸¡ã¨è³¼å…¥" - longdescription="グループ用ã®åœŸåœ°ã®è²æ¸¡ã¨è³¼å…¥ã‚’行ã„ã¾ã™ã€‚ ã“ã®æ“作ã«ã¯ã€åœŸåœ°æƒ…å ±ç”»é¢ > 一般タブを使ã„ã¾ã™ã€‚" + longdescription="グループ用ã®åœŸåœ°ã®è²æ¸¡ã¨è³¼å…¥ã‚’行ã„ã¾ã™ã€‚ ã“ã®æ“作ã«ã¯ã€åœŸåœ°æƒ…å ±ç”»é¢ ï¼ž 一般タブを使ã„ã¾ã™ã€‚" name="land deed" value="12" /> <action description="Lindenç·ç£ã«åœŸåœ°ã‚’æ˜Žã‘æ¸¡ã™" - longdescription="Lindenç·ç£ã«åœŸåœ°ã‚’æ˜Žã‘æ¸¡ã—ã¾ã™ã€‚ *è¦å‘Š* ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€[åœŸåœ°æƒ…å ±]>[一般]ã§ã‚°ãƒ«ãƒ¼ãƒ—所有ã®åœŸåœ°ã‚’放棄ã—ã¦ã€å£²ã‚Šä¸Šã’ãªã—ã§Lindenç·ç£ã«æ˜Žã‘渡ã™ã“ã¨ãŒã§ãã¾ã™ã€‚ ã“ã®èƒ½åŠ›ã®å‰²ã‚Šå½“ã¦ã¯ã€ãã®ã“ã¨ã‚’ç†è§£ã—ãŸä¸Šã§è¡Œã£ã¦ãã ã•ã„。" + longdescription="Lindenç·ç£ã«åœŸåœ°ã‚’æ˜Žã‘æ¸¡ã—ã¾ã™ã€‚ *è¦å‘Š* ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œä¸€èˆ¬ã€ã§ã‚°ãƒ«ãƒ¼ãƒ—所有ã®åœŸåœ°ã‚’放棄ã—ã¦ã€å£²ã‚Šä¸Šã’ãªã—ã§Lindenç·ç£ã«æ˜Žã‘渡ã™ã“ã¨ãŒã§ãã¾ã™ã€‚ ã“ã®èƒ½åŠ›ã®å‰²ã‚Šå½“ã¦ã¯ã€ãã®ã“ã¨ã‚’ç†è§£ã—ãŸä¸Šã§è¡Œã£ã¦ãã ã•ã„。" name="land release" value="13" /> <action description="å£²ã‚Šåœ°æƒ…å ±ã®è¨å®š" - longdescription="å£²ã‚Šåœ°æƒ…å ±ã‚’è¨å®šã—ã¾ã™ã€‚ *è¦å‘Š* ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€[åœŸåœ°æƒ…å ±]>[一般]タブã§ã‚°ãƒ«ãƒ¼ãƒ—所有ã®åœŸåœ°ã‚’è‡ªåˆ†ã®æ€ã„ã©ãŠã‚Šã«è²©å£²ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ ã“ã®èƒ½åŠ›ã®å‰²ã‚Šå½“ã¦ã¯ã€ãã®ã“ã¨ã‚’ç†è§£ã—ãŸä¸Šã§è¡Œã£ã¦ãã ã•ã„。" + longdescription="å£²ã‚Šåœ°æƒ…å ±ã‚’è¨å®šã—ã¾ã™ã€‚ *è¦å‘Š* ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œä¸€èˆ¬ã€ã‚¿ãƒ–ã§ã‚°ãƒ«ãƒ¼ãƒ—所有ã®åœŸåœ°ã‚’è‡ªåˆ†ã®æ€ã„ã©ãŠã‚Šã«è²©å£²ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ ã“ã®èƒ½åŠ›ã®å‰²ã‚Šå½“ã¦ã¯ã€ãã®ã“ã¨ã‚’ç†è§£ã—ãŸä¸Šã§è¡Œã£ã¦ãã ã•ã„。" name="land set sale info" value="14" /> <action description="区画ã®å†åˆ†å‰²ã¨çµ±åˆ" - longdescription="区画をå†åˆ†å‰²ãŠã‚ˆã³çµ±åˆã—ã¾ã™ã€‚ ã“ã®æ“作を実行ã™ã‚‹ã«ã¯ã€åœ°é¢ã‚’å³ã‚¯ãƒªãƒƒã‚¯ã—ã¦ï¼»åœ°å½¢ã‚’ç·¨é›†ï¼½ã‚’é¸æŠžã—ã€åœŸåœ°ã®ä¸Šã§ãƒžã‚¦ã‚¹ã‚’ドラッグã—ã¦ç¯„å›²ã‚’é¸æŠžã—ã¾ã™ã€‚ å†åˆ†å‰²ã™ã‚‹ã«ã¯ã€åˆ†å‰²å¯¾è±¡ã‚’é¸æŠžã—ãŸå¾Œã€ï¼»å†åˆ†å‰²...]をクリックã—ã¾ã™ã€‚ çµ±åˆã™ã‚‹ã«ã¯ã€è¤‡æ•°ã®éš£æŽ¥ã™ã‚‹åŒºç”»ã‚’é¸æŠžã—ãŸå¾Œã€ï¼»çµ±åˆ...]をクリックã—ã¾ã™ã€‚" + longdescription="区画をå†åˆ†å‰²ãŠã‚ˆã³çµ±åˆã—ã¾ã™ã€‚ ã“ã®æ“作を実行ã™ã‚‹ã«ã¯ã€åœ°é¢ã‚’å³ã‚¯ãƒªãƒƒã‚¯ã—ã¦ã€Œåœ°å½¢ã‚’編集ã€ã‚’é¸æŠžã—ã€åœŸåœ°ã®ä¸Šã§ãƒžã‚¦ã‚¹ã‚’ドラッグã—ã¦ç¯„å›²ã‚’é¸æŠžã—ã¾ã™ã€‚ å†åˆ†å‰²ã™ã‚‹ã«ã¯ã€åˆ†å‰²å¯¾è±¡ã‚’é¸æŠžã—ãŸå¾Œã€ã€Œå†åˆ†å‰²...ã€ã‚’クリックã—ã¾ã™ã€‚ çµ±åˆã™ã‚‹ã«ã¯ã€è¤‡æ•°ã®éš£æŽ¥ã™ã‚‹åŒºç”»ã‚’é¸æŠžã—ãŸå¾Œã€ã€Œçµ±åˆ...ã€ã‚’クリックã—ã¾ã™ã€‚" name="land divide join" value="15" /> </action_set> <action_set description="ã“れらã®èƒ½åŠ›ã«ã¯ã€åŒºç”»åã€å…¬é–‹è¨å®šã€æ¤œç´¢ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã¸ã®ç™»éŒ²ã€ç€åœ°ç‚¹ãªã‚‰ã³ã«TPルートã®ã‚ªãƒ—ションを変更ã™ã‚‹æ¨©é™ãŒå«ã¾ã‚Œã¾ã™ã€‚" name="Parcel Identity"> - <action description="[å ´æ‰€æ¤œç´¢ã«è¡¨ç¤º]ã«åˆ‡ã‚Šæ›¿ãˆã€ã‚«ãƒ†ã‚´ãƒªãƒ¼ã‚’è¨å®š" - longdescription="[å ´æ‰€æ¤œç´¢ã«è¡¨ç¤º]ã«åˆ‡ã‚Šæ›¿ãˆã€[åœŸåœ°æƒ…å ±]>[オプション]タブã§ã‚«ãƒ†ã‚´ãƒªãƒ¼ã‚’è¨å®š" + <action description="ã€Œå ´æ‰€æ¤œç´¢ã«è¡¨ç¤ºã€ã«åˆ‡ã‚Šæ›¿ãˆã€ã‚«ãƒ†ã‚´ãƒªãƒ¼ã‚’è¨å®š" + longdescription="ã€Œå ´æ‰€æ¤œç´¢ã«è¡¨ç¤ºã€ã«åˆ‡ã‚Šæ›¿ãˆã€ã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œã‚ªãƒ—ションã€ã‚¿ãƒ–ã§ã‚«ãƒ†ã‚´ãƒªãƒ¼ã‚’è¨å®š" name="land find places" value="17" /> <action description="区画åã€èª¬æ˜Žã€ã€ŒWeb上ã§å…¬é–‹ã€ã®è¨å®šã‚’変更" - longdescription="区画åã€èª¬æ˜Žã€ã€ŒWeb上ã§å…¬é–‹ã€ã®è¨å®šã‚’変更。 ã“ã®æ“作ã«ã¯ã€[åœŸåœ°æƒ…å ±] > [オプション]タブを使ã„ã¾ã™ã€‚" + longdescription="区画åã€èª¬æ˜Žã€ã€ŒWeb上ã§å…¬é–‹ã€ã®è¨å®šã‚’変更。 ã“ã®æ“作ã«ã¯ã€ã€ŒåœŸåœ°æƒ…å ±ã€ ï¼ž 「オプションã€ã‚¿ãƒ–を使ã„ã¾ã™ã€‚" name="land change identity" value="18" /> <action description="ç€åœ°ç‚¹ãŠã‚ˆã³ãƒ†ãƒ¬ãƒãƒ¼ãƒˆãƒ»ãƒ«ãƒ¼ãƒˆã‚’è¨å®š" - longdescription="ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—所有ã®åŒºç”»ä¸Šã§ç€åœ°ç‚¹ã‚’è¨å®šã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šå¤–部ã‹ã‚‰ã®ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã®åˆ°ç€ä½ç½®ã‚’指定ã§ãã‚‹ã¨å…±ã«ã€ãƒ†ãƒ¬ãƒãƒ¼ãƒˆãƒ»ãƒ«ãƒ¼ãƒˆã‚’è¨å®šã—ã¦ç´°ã‹ã制御ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ ã“ã®æ“作ã¯ã€[åœŸåœ°æƒ…å ±]>[オプション]タブã§è¡Œã„ã¾ã™ã€‚" + longdescription="ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—所有ã®åŒºç”»ä¸Šã§ç€åœ°ç‚¹ã‚’è¨å®šã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šå¤–部ã‹ã‚‰ã®ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã®åˆ°ç€ä½ç½®ã‚’指定ã§ãã‚‹ã¨å…±ã«ã€ãƒ†ãƒ¬ãƒãƒ¼ãƒˆãƒ»ãƒ«ãƒ¼ãƒˆã‚’è¨å®šã—ã¦ç´°ã‹ã制御ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ ã“ã®æ“作ã¯ã€ã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œã‚ªãƒ—ションã€ã‚¿ãƒ–ã§è¡Œã„ã¾ã™ã€‚" name="land set landing point" value="19" /> </action_set> <action_set - description="ã“れらã®èƒ½åŠ›ã«ã¯ã€[オブジェクトを作æˆ]ã€[地形を編集]ã€éŸ³æ¥½ã¨ãƒ¡ãƒ‡ã‚£ã‚¢ã®è¨å®šãªã©ã€åŒºç”»ã®ã‚ªãƒ—ションã«é–¢é€£ã™ã‚‹æ¨©é™ãŒå«ã¾ã‚Œã¾ã™ã€‚" + description="ã“れらã®èƒ½åŠ›ã«ã¯ã€ã€Œã‚ªãƒ–ジェクトを作æˆã€ã€ã€Œåœ°å½¢ã‚’編集ã€ã€éŸ³æ¥½ã¨ãƒ¡ãƒ‡ã‚£ã‚¢ã®è¨å®šãªã©ã€åŒºç”»ã®ã‚ªãƒ—ションã«é–¢é€£ã™ã‚‹æ¨©é™ãŒå«ã¾ã‚Œã¾ã™ã€‚" name="Parcel Settings"> <action description="音楽ã¨ãƒ¡ãƒ‡ã‚£ã‚¢ã®è¨å®šã‚’変更" - longdescription="ストリーミング・ミュージックã¨å‹•ç”»ã®è¨å®šã‚’変更ã™ã‚‹ã«ã¯ã€[åœŸåœ°æƒ…å ±] > [メディア]タブを使ã„ã¾ã™ã€‚" + longdescription="ストリーミング・ミュージックã¨å‹•ç”»ã®è¨å®šã‚’変更ã™ã‚‹ã«ã¯ã€ã€ŒåœŸåœ°æƒ…å ±ã€ ï¼ž 「メディアã€ã‚¿ãƒ–を使ã„ã¾ã™ã€‚" name="land change media" value="20" /> - <action description="[地形を編集]ã«åˆ‡ã‚Šæ›¿ãˆ" - longdescription="[地形を編集]ã«åˆ‡ã‚Šæ›¿ãˆã¾ã™ã€‚ *è¦å‘Š* [åœŸåœ°æƒ…å ±]>[オプション]>[地形を編集]ã®é †ã§é€²ã‚€ã¨ã€èª°ã§ã‚‚ã‚ãªãŸã®åœŸåœ°ã®å½¢ã®æ•´å‚™ã‚„ã€ãƒªãƒ³ãƒ‡ãƒ³ãƒ—ラントã®è¨ç½®ã€ç§»å‹•ãŒã§ãã¾ã™ã€‚ ã“ã®èƒ½åŠ›ã‚’å‰²ã‚ŠæŒ¯ã‚‹å‰ã«ã€ã“ã®ã“ã¨ã‚’よãç†è§£ã—ã¦ãŠã„ã¦ãã ã•ã„。 [åœŸåœ°æƒ…å ±]>[オプション]タブã‹ã‚‰[地形を編集]ã«åˆ‡ã‚Šæ›¿ãˆã‚‰ã‚Œã¾ã™ã€‚" + <action description="「地形を編集ã€ã«åˆ‡ã‚Šæ›¿ãˆ" + longdescription="「地形を編集ã€ã«åˆ‡ã‚Šæ›¿ãˆã¾ã™ã€‚ *è¦å‘Š* ã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œã‚ªãƒ—ションã€ï¼žã€Œåœ°å½¢ã‚’編集ã€ã®é †ã§é€²ã‚€ã¨ã€èª°ã§ã‚‚ã‚ãªãŸã®åœŸåœ°ã®å½¢ã®æ•´å‚™ã‚„ã€ãƒªãƒ³ãƒ‡ãƒ³ãƒ—ラントã®è¨ç½®ã€ç§»å‹•ãŒã§ãã¾ã™ã€‚ ã“ã®èƒ½åŠ›ã‚’å‰²ã‚ŠæŒ¯ã‚‹å‰ã«ã€ã“ã®ã“ã¨ã‚’よãç†è§£ã—ã¦ãŠã„ã¦ãã ã•ã„。 ã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œã‚ªãƒ—ションã€ã‚¿ãƒ–ã‹ã‚‰ã€Œåœ°å½¢ã‚’編集ã€ã«åˆ‡ã‚Šæ›¿ãˆã‚‰ã‚Œã¾ã™ã€‚" name="land edit" value="21" /> <action - description="[åœŸåœ°æƒ…å ±]>[オプション]タブ内ã®ã•ã¾ã–ã¾ãªè¨å®šã‚’切り替ãˆ" - longdescription="[安全(ダメージãªã—)]ã€[飛ã¶]ã«åˆ‡ã‚Šæ›¿ãˆã€[åœŸåœ°æƒ…å ±]>[オプション]タブã‹ã‚‰ã€ ä»–ã®ä½äººãŒã‚°ãƒ«ãƒ¼ãƒ—所有ã®åœŸåœ°ã§[オブジェクトを作æˆ]ã€[地形を編集]ã€[ランドマークを作æˆ]ã€[スクリプトを実行]ã§ãるよã†ã«ã—ã¾ã™ã€‚" + description="ã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œã‚ªãƒ—ションã€ã‚¿ãƒ–内ã®ã•ã¾ã–ã¾ãªè¨å®šã‚’切り替ãˆ" + longdescription="「安全(ダメージãªã—)ã€ã€ã€Œé£›ã¶ã€ã«åˆ‡ã‚Šæ›¿ãˆã€ã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œã‚ªãƒ—ションã€ã‚¿ãƒ–ã‹ã‚‰ã€ ä»–ã®ä½äººãŒã‚°ãƒ«ãƒ¼ãƒ—所有ã®åœŸåœ°ã§ã€Œã‚ªãƒ–ジェクトを作æˆã€ã€ã€Œåœ°å½¢ã‚’編集ã€ã€ã€Œãƒ©ãƒ³ãƒ‰ãƒžãƒ¼ã‚¯ã‚’作æˆã€ã€ã€Œã‚¹ã‚¯ãƒªãƒ—トを実行ã€ã§ãるよã†ã«ã—ã¾ã™ã€‚" name="land options" value="22" /> </action_set> <action_set description="ã“れらã®èƒ½åŠ›ã«ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—所有ã®åŒºç”»ã«é–¢ã™ã‚‹è¦åˆ¶ã‚’迂回ã™ã‚‹ã“ã¨ã‚’ã€ãƒ¡ãƒ³ãƒãƒ¼ã«è¨±å¯ã™ã‚‹æ¨©é™ãŒå«ã¾ã‚Œã¾ã™ã€‚" name="Parcel Powers"> <action description="常ã«ã€Œåœ°å½¢ã‚’編集ã€ã‚’許å¯" - longdescription="ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—所有ã®åŒºç”»ä¸Šã§åœ°å½¢ã‚’編集ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ãã®åŒºç”»ãŒ[åœŸåœ°æƒ…å ±]>[オプション]タブã§ã‚ªãƒ•ã«ãªã£ã¦ã„ã¦ã‚‚ã€åœ°å½¢ã®ç·¨é›†ãŒå¯èƒ½ã§ã™ã€‚" + longdescription="ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—所有ã®åŒºç”»ä¸Šã§åœ°å½¢ã‚’編集ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ãã®åŒºç”»ãŒã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œã‚ªãƒ—ションã€ã‚¿ãƒ–ã§ã‚ªãƒ•ã«ãªã£ã¦ã„ã¦ã‚‚ã€åœ°å½¢ã®ç·¨é›†ãŒå¯èƒ½ã§ã™ã€‚" name="land allow edit land" value="23" /> <action description="常ã«ã€Œé£›è¡Œã€ã‚’許å¯" - longdescription="ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—所有ã®åŒºç”»ä¸Šã‚’飛行ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ãã®åŒºç”»ãŒ[åœŸåœ°æƒ…å ±]>[オプション]タブã§ã‚ªãƒ•ã«ãªã£ã¦ã„ã¦ã‚‚ã€é£›è¡ŒãŒå¯èƒ½ã§ã™ã€‚" + longdescription="ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—所有ã®åŒºç”»ä¸Šã‚’飛行ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ãã®åŒºç”»ãŒã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œã‚ªãƒ—ションã€ã‚¿ãƒ–ã§ã‚ªãƒ•ã«ãªã£ã¦ã„ã¦ã‚‚ã€é£›è¡ŒãŒå¯èƒ½ã§ã™ã€‚" name="land allow fly" value="24" /> <action description="常ã«ã€Œã‚ªãƒ–ジェクト作æˆã€ã‚’許å¯" - longdescription="ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—所有ã®åŒºç”»ä¸Šã«ã‚ªãƒ–ジェクトを作æˆã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ãã®åŒºç”»ãŒ[åœŸåœ°æƒ…å ±]>[オプション]タブã§ã‚ªãƒ•ã«ãªã£ã¦ã„ã¦ã‚‚ã€ã‚ªãƒ–ジェクトã®ä½œæˆãŒå¯èƒ½ã§ã™ã€‚" + longdescription="ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—所有ã®åŒºç”»ä¸Šã«ã‚ªãƒ–ジェクトを作æˆã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ãã®åŒºç”»ãŒã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œã‚ªãƒ—ションã€ã‚¿ãƒ–ã§ã‚ªãƒ•ã«ãªã£ã¦ã„ã¦ã‚‚ã€ã‚ªãƒ–ジェクトã®ä½œæˆãŒå¯èƒ½ã§ã™ã€‚" name="land allow create" value="25" /> <action description="常ã«ã€Œãƒ©ãƒ³ãƒ‰ãƒžãƒ¼ã‚¯ã‚’作æˆã€ã‚’許å¯" - longdescription="ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—所有ã®åŒºç”»ä¸Šã«ãƒ©ãƒ³ãƒ‰ãƒžãƒ¼ã‚¯ã‚’作æˆã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ãã®åŒºç”»ãŒ[åœŸåœ°æƒ…å ±]>[オプション]タブã§ã‚ªãƒ•ã«ãªã£ã¦ã„ã¦ã‚‚ã€ãƒ©ãƒ³ãƒ‰ãƒžãƒ¼ã‚¯ã®ä½œæˆãŒå¯èƒ½ã§ã™ã€‚" + longdescription="ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—所有ã®åŒºç”»ä¸Šã«ãƒ©ãƒ³ãƒ‰ãƒžãƒ¼ã‚¯ã‚’作æˆã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ãã®åŒºç”»ãŒã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œã‚ªãƒ—ションã€ã‚¿ãƒ–ã§ã‚ªãƒ•ã«ãªã£ã¦ã„ã¦ã‚‚ã€ãƒ©ãƒ³ãƒ‰ãƒžãƒ¼ã‚¯ã®ä½œæˆãŒå¯èƒ½ã§ã™ã€‚" name="land allow landmark" value="26" /> <action description="グループã®åœŸåœ°ã¸ã®ã€Œãƒ›ãƒ¼ãƒ è¨å®šã€ã‚’許å¯" - longdescription="ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€[ワールド]メニュー>[ホームをã“ã“ã«è¨å®š]を使用ã—ã¦ã€ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«è²æ¸¡ã•れãŸåŒºç”»ã‚’ホームã«è¨å®šã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" + longdescription="ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã€Œä¸–界ã€ãƒ¡ãƒ‹ãƒ¥ãƒ¼ï¼žã€Œãƒ›ãƒ¼ãƒ ã‚’ã“ã“ã«è¨å®šã€ã‚’使用ã—ã¦ã€ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«è²æ¸¡ã•れãŸåŒºç”»ã‚’ホームã«è¨å®šã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" name="land allow set home" value="28" /> </action_set> <action_set description="ã“れらã®èƒ½åŠ›ã«ã¯ã€ä½äººã®å‡çµã‚„追放をå«ã‚€ã€ã‚°ãƒ«ãƒ¼ãƒ—所有ã®åŒºç”»ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’許å¯ã€åˆ¶é™ã™ã‚‹æ¨©é™ãŒå«ã¾ã‚Œã¾ã™ã€‚" name="Parcel Access"> <action description="区画アクセス・リストã®ç®¡ç†" - longdescription="区画アクセス・リストã®ç®¡ç†ã¯ã€[åœŸåœ°æƒ…å ±]>[アクセス]タブã§è¡Œã„ã¾ã™ã€‚" + longdescription="区画アクセス・リストã®ç®¡ç†ã¯ã€ã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œã‚¢ã‚¯ã‚»ã‚¹ã€ã‚¿ãƒ–ã§è¡Œã„ã¾ã™ã€‚" name="land manage allowed" value="29" /> <action description="åŒºç”»ç¦æ¢ãƒªã‚¹ãƒˆã®ç®¡ç†" - longdescription="åŒºç”»ç¦æ¢ãƒªã‚¹ãƒˆã®ç®¡ç†ã¯ã€[åœŸåœ°æƒ…å ±]>[ç¦æ¢]タブã§è¡Œã„ã¾ã™ã€‚" + longdescription="åŒºç”»ç¦æ¢ãƒªã‚¹ãƒˆã®ç®¡ç†ã¯ã€ã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œç¦æ¢ã€ã‚¿ãƒ–ã§è¡Œã„ã¾ã™ã€‚" name="land manage banned" value="30" /> - <action description="区画ã®ã€Œãƒ‘ス販売ã€ã®è¨å®šã‚’変更" - longdescription="区画ã®ã€Œãƒ‘ス販売ã€ã®è¨å®šã‚’変更ã™ã‚‹ã«ã¯ã€[åœŸåœ°æƒ…å ±] > [アクセス]タブを使ã„ã¾ã™ã€‚" + <action description="区画ã®ã€Œå…¥å ´è¨±å¯ã‚’販売ã€ã®è¨å®šã‚’変更" + longdescription="区画ã®ã€Œå…¥å ´è¨±å¯ã‚’販売ã€ã®è¨å®šã‚’変更ã™ã‚‹ã«ã¯ã€ã€ŒåœŸåœ°æƒ…å ±ã€ ï¼ž 「アクセスã€ã‚¿ãƒ–を使ã„ã¾ã™ã€‚" name="land manage passes" value="31" /> <action description="区画上ã®ä½äººã®è¿½æ”¾ã¨å‡çµ" - longdescription="ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—所有ã®åŒºç”»ã«å•題ã®ã‚ã‚‹ä½äººãŒã„ã‚‹å ´åˆã«ã€å³ã‚¯ãƒªãƒƒã‚¯ãƒ»ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã‹ã‚‰[詳細>]ã‚’é¸æŠžã—ã€[追放...]ã¾ãŸã¯[フリーズ...]ã‚’é¸æŠžã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šã€ãã®ä½äººã‚’処ç†ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" + longdescription="ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—所有ã®åŒºç”»ã«å•題ã®ã‚ã‚‹ä½äººãŒã„ã‚‹å ´åˆã«ã€å³ã‚¯ãƒªãƒƒã‚¯ãƒ»ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã‹ã‚‰ã€Œè©³ç´°ã€ã‚’é¸æŠžã—ã€ã€Œè¿½æ”¾...ã€ã¾ãŸã¯ã€Œãƒ•リーズ...ã€ã‚’é¸æŠžã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šã€ãã®ä½äººã‚’処ç†ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" name="land admin" value="32" /> </action_set> <action_set description="ã“れらã®èƒ½åŠ›ã«ã¯ã€ã‚ªãƒ–ジェクトã®è¿”å´ã€ãƒªãƒ³ãƒ‡ãƒ³ãƒ—ラントã®è¨ç½®ã‚„移動をã€ãƒ¡ãƒ³ãƒãƒ¼ã«è¨±å¯ã™ã‚‹æ¨©é™ãŒå«ã¾ã‚Œã¾ã™ã€‚ ã“れã¯ãƒ¡ãƒ³ãƒãƒ¼ãŒã‚´ãƒŸå‡¦ç†ã‚„景観作æˆã‚’ã™ã‚‹éš›ã«ä¾¿åˆ©ã§ã™ãŒã€è¿”å´ã—ãŸã‚ªãƒ–ジェクトã¯å…ƒã«æˆ»ã›ãªã„ã®ã§ã€æ³¨æ„ã—ã¦è¡Œã„ã¾ã—ょã†ã€‚" name="Parcel Content"> <action description="グループ所有オブジェクトã®è¿”å´" - longdescription="グループ所有ã®åŒºç”»ä¸Šã®ã‚ªãƒ–ジェクトã®ã†ã¡ã€ã‚°ãƒ«ãƒ¼ãƒ—所有ã®ã‚ªãƒ–ジェクトを返å´ã™ã‚‹ã«ã¯ã€[åœŸåœ°æƒ…å ±]>[オブジェクト]タブを使ã„ã¾ã™ã€‚" + longdescription="グループ所有ã®åŒºç”»ä¸Šã®ã‚ªãƒ–ジェクトã®ã†ã¡ã€ã‚°ãƒ«ãƒ¼ãƒ—所有ã®ã‚ªãƒ–ジェクトを返å´ã™ã‚‹ã«ã¯ã€ã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œã‚ªãƒ–ジェクトã€ã‚¿ãƒ–を使ã„ã¾ã™ã€‚" name="land return group owned" value="48" /> <action description="グループã«è¨å®šã•れã¦ã„るオブジェクトを返å´" - longdescription="グループ所有ã®åŒºç”»ä¸Šã®ã‚ªãƒ–ジェクトã®ã†ã¡ã€ã‚°ãƒ«ãƒ¼ãƒ—ã«è¨å®šã•れã¦ã„るオブジェクトを返å´ã™ã‚‹ã«ã¯ã€[åœŸåœ°æƒ…å ±]>[オブジェクト]タブを使ã„ã¾ã™ã€‚" + longdescription="グループ所有ã®åŒºç”»ä¸Šã®ã‚ªãƒ–ジェクトã®ã†ã¡ã€ã‚°ãƒ«ãƒ¼ãƒ—ã«è¨å®šã•れã¦ã„るオブジェクトを返å´ã™ã‚‹ã«ã¯ã€ã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œã‚ªãƒ–ジェクトã€ã‚¿ãƒ–を使ã„ã¾ã™ã€‚" name="land return group set" value="33" /> <action description="éžã‚°ãƒ«ãƒ¼ãƒ—・オブジェクトã®è¿”å´" - longdescription="グループ所有ã®åŒºç”»ä¸Šã®ã‚ªãƒ–ジェクトã®ã†ã¡ã€ã‚°ãƒ«ãƒ¼ãƒ—以外ã®ã‚ªãƒ–ジェクトを返å´ã™ã‚‹ã«ã¯ã€[åœŸåœ°æƒ…å ±]>[オブジェクト]タブを使ã„ã¾ã™ã€‚" + longdescription="グループ所有ã®åŒºç”»ä¸Šã®ã‚ªãƒ–ジェクトã®ã†ã¡ã€ã‚°ãƒ«ãƒ¼ãƒ—以外ã®ã‚ªãƒ–ジェクトを返å´ã™ã‚‹ã«ã¯ã€ã€ŒåœŸåœ°æƒ…å ±ã€ï¼žã€Œã‚ªãƒ–ジェクトã€ã‚¿ãƒ–を使ã„ã¾ã™ã€‚" name="land return non group" value="34" /> <action description="Lindenè£½ã®æ¤ç‰©ã‚’使用ã—ã¦æ™¯è¦³ä½œæˆ" longdescription="景観作æˆèƒ½åŠ›ã«ã‚ˆã‚Šã€ãƒªãƒ³ãƒ‡ãƒ³è£½ã®æ¨¹æœ¨ã€æ¤ç‰©ã€è‰ã‚’é…ç½®ãŠã‚ˆã³ç§»å‹•ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ ã“れらã®ã‚¢ã‚¤ãƒ†ãƒ ã¯ã€è‡ªåˆ†ã®æŒã¡ç‰©ã®ãƒ©ã‚¤ãƒ–ラリ>オブジェクト・フォルダã‹ã‚‰æ¤œç´¢ã§ãã‚‹ã»ã‹ã€ã€Œä½œæˆã€ãƒœã‚¿ãƒ³ã§ä½œæˆã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚" name="land gardening" value="35" /> </action_set> <action_set - description="ã“れらã®èƒ½åŠ›ã«ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—所有ã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’è²æ¸¡ã€ä¿®æ£ã€è²©å£²ã™ã‚‹æ¨©é™ãŒå«ã¾ã‚Œã¾ã™ã€‚ ã“ã†ã—ãŸå¤‰æ›´ã¯ã€ï¼»ç·¨é›†ãƒ„ール]>[一般]タブã§è¡Œã‚れã¾ã™ã€‚ オブジェクトをå³ã‚¯ãƒªãƒƒã‚¯ã—ã¦ï¼»ç·¨é›†ï¼½ã‚’é–‹ãã¨ã€è¨å®šå†…容を表示ã§ãã¾ã™ã€‚" + description="ã“れらã®èƒ½åŠ›ã«ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—所有ã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’è²æ¸¡ã€ä¿®æ£ã€è²©å£²ã™ã‚‹æ¨©é™ãŒå«ã¾ã‚Œã¾ã™ã€‚ ã“ã†ã—ãŸå¤‰æ›´ã¯ã€ã€Œç·¨é›†ãƒ„ールã€ï¼žã€Œä¸€èˆ¬ã€ã‚¿ãƒ–ã§è¡Œã‚れã¾ã™ã€‚ オブジェクトをå³ã‚¯ãƒªãƒƒã‚¯ã—ã¦ã€Œç·¨é›†ã€ã‚’é–‹ãã¨ã€è¨å®šå†…容を表示ã§ãã¾ã™ã€‚" name="Object Management"> <action description="グループã«ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’è²æ¸¡" - longdescription="グループã«ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’è²æ¸¡ã™ã‚‹ã«ã¯ã€ç·¨é›†ãƒ„ール>一般タブを使ã„ã¾ã™ã€‚" + longdescription="グループã«ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’è²æ¸¡ã™ã‚‹ã«ã¯ã€ã€Œç·¨é›†ãƒ„ールã€ï¼žã€Œä¸€èˆ¬ã€ã‚¿ãƒ–を使ã„ã¾ã™ã€‚" name="object deed" value="36" /> <action description="ã‚°ãƒ«ãƒ¼ãƒ—æ‰€æœ‰ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æ“作(移動ã€ã‚³ãƒ”ーã€ä¿®æ£ï¼‰" - longdescription="ã‚°ãƒ«ãƒ¼ãƒ—æ‰€æœ‰ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æ“作(移動ã€ã‚³ãƒ”ーã€ä¿®æ£ï¼‰ã¯ã€[編集ツール]>[一般]タブã§è¡Œã„ã¾ã™ã€‚" + longdescription="ã‚°ãƒ«ãƒ¼ãƒ—æ‰€æœ‰ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æ“作(移動ã€ã‚³ãƒ”ーã€ä¿®æ£ï¼‰ã¯ã€ã€Œç·¨é›†ãƒ„ールã€ï¼žã€Œä¸€èˆ¬ã€ã‚¿ãƒ–ã§è¡Œã„ã¾ã™ã€‚" name="object manipulate" value="38" /> <action description="グループ所有オブジェクトを販売å¯èƒ½ã«è¨å®š" - longdescription="グループ所有オブジェクトを販売å¯èƒ½ã«è¨å®šã«ã™ã‚‹ã«ã¯ã€[編集ツール]>[一般]タブを使ã„ã¾ã™ã€‚" + longdescription="グループ所有オブジェクトを販売å¯èƒ½ã«è¨å®šã«ã™ã‚‹ã«ã¯ã€ã€Œç·¨é›†ãƒ„ールã€ï¼žã€Œä¸€èˆ¬ã€ã‚¿ãƒ–を使ã„ã¾ã™ã€‚" name="object set sale" value="39" /> </action_set> <action_set @@ -165,17 +165,17 @@ description="ã“れらã®èƒ½åŠ›ã«ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—通知ã®é€ä¿¡ã€å—ä¿¡ã€è¡¨ç¤ºã‚’メンãƒãƒ¼ã«è¨±å¯ã™ã‚‹æ¨©é™ãŒå«ã¾ã‚Œã¾ã™ã€‚" name="Notices"> <action description="通知をé€ä¿¡" - longdescription="ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€[ã‚°ãƒ«ãƒ¼ãƒ—æƒ…å ±]>[通知]タブã§é€šçŸ¥ã‚’é€ä¿¡ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" + longdescription="ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã€Œã‚°ãƒ«ãƒ¼ãƒ—æƒ…å ±ã€ï¼žã€Œé€šçŸ¥ã€ã‚¿ãƒ–ã§é€šçŸ¥ã‚’é€ä¿¡ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" name="notices send" value="42" /> <action description="通知ã®å—ä¿¡ã¨éŽåŽ»ã®é€šçŸ¥ã®é–²è¦§" - longdescription="ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€é€šçŸ¥ã‚’å—ã‘å–ã‚‹ã“ã¨ãŒã§ãã€[ã‚°ãƒ«ãƒ¼ãƒ—æƒ…å ±]>[通知]タブã§éŽåŽ»ã®é€šçŸ¥ã‚’閲覧ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" + longdescription="ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€é€šçŸ¥ã‚’å—ã‘å–ã‚‹ã“ã¨ãŒã§ãã€ã€Œã‚°ãƒ«ãƒ¼ãƒ—æƒ…å ±ã€ï¼žã€Œé€šçŸ¥ã€ã‚¿ãƒ–ã§éŽåŽ»ã®é€šçŸ¥ã‚’閲覧ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" name="notices receive" value="43" /> </action_set> <action_set description="ã“れらã®èƒ½åŠ›ã«ã¯ã€ææ¡ˆã®ä½œæˆã¨æŠ•ç¥¨ã€æŠ•ç¥¨å±¥æ´ã®è¡¨ç¤ºã‚’メンãƒãƒ¼ã«è¨±å¯ã™ã‚‹æ¨©é™ãŒå«ã¾ã‚Œã¾ã™ã€‚" name="Proposals"> <action description="ææ¡ˆã‚’作æˆ" - longdescription="ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€æŠ•票ã®å¯¾è±¡ã¨ãªã‚‹å•題æèµ·ã‚’[ã‚°ãƒ«ãƒ¼ãƒ—æƒ…å ±]>[å•題æèµ·]タブ上ã§ä½œæˆã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" + longdescription="ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€æŠ•票ã®å¯¾è±¡ã¨ãªã‚‹å•題æèµ·ã‚’ã€Œã‚°ãƒ«ãƒ¼ãƒ—æƒ…å ±ã€ï¼žã€Œå•題æèµ·ã€ã‚¿ãƒ–上ã§ä½œæˆã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" name="proposal start" value="44" /> <action description="å•題æèµ·ã«æŠ•票ã™ã‚‹" longdescription="ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—æƒ…å ±ï¼žææ¡ˆã‚¿ãƒ–ã§ææ¡ˆã«æŠ•ç¥¨ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml index 5243cc76b92dda3abfef80e9d0fcfcf0d3e88f6b..5432c116a787733b347c162e7299548759f2f686 100644 --- a/indra/newview/skins/default/xui/ja/strings.xml +++ b/indra/newview/skins/default/xui/ja/strings.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <!-- This file contains strings that used to be hardcoded in the source. - It is only for those strings which don't belong in a floater. + It is only for those strings which do not belong in a floater. For example, the strings used in avatar chat bubbles, and strings that are returned from one component and may appear in many places--> <strings> @@ -418,6 +418,30 @@ <string name="shout"> ã®å«ã³: </string> + <string name="SIM_ACCESS_PG"> + PG + </string> + <string name="SIM_ACCESS_MATURE"> + Mature + </string> + <string name="SIM_ACCESS_ADULT"> + Adult + </string> + <string name="SIM_ACCESS_DOWN"> + オフライン + </string> + <string name="SIM_ACCESS_MIN"> + 䏿˜Ž + </string> + <string name="land_type_unknown"> + ï¼ˆä¸æ˜Žï¼‰ + </string> + <string name="covenant_never_modified"> + 最終修æ£ï¼š (無) + </string> + <string name="covenant_modified"> + 最終修æ£ï¼š + </string> <string name="all_files"> å…¨ã¦ã®ãƒ•ァイル </string> diff --git a/indra/newview/skins/default/xui/ja/teleport_strings.xml b/indra/newview/skins/default/xui/ja/teleport_strings.xml index 9e6b4bd26ec8b6785e61cc07b34e4b5055c861bb..7e99d2562ee058c7e9582dcf44c554121ed0695f 100644 --- a/indra/newview/skins/default/xui/ja/teleport_strings.xml +++ b/indra/newview/skins/default/xui/ja/teleport_strings.xml @@ -2,21 +2,16 @@ <teleport_messages name=""> <message_set name="errors"> <message name="invalid_tport"> - テレãƒãƒ¼ãƒˆãƒ»ãƒªã‚¯ã‚¨ã‚¹ãƒˆã®å‡¦ç†ä¸ã«å•題ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚テレãƒãƒ¼ãƒˆã™ã‚‹ã«ã¯ã€ -å†åº¦ãƒã‚°ã‚¤ãƒ³ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒ -引ãç¶šã表示ã•ã‚Œã‚‹å ´åˆã¯ã€æŠ€è¡“サãƒãƒ¼ãƒˆFAQ(www.secondlife.com/support) -ã‚’å‚ç…§ã—ã¦ãã ã•ã„。 + テレãƒãƒ¼ãƒˆãƒ»ãƒªã‚¯ã‚¨ã‚¹ãƒˆã®å‡¦ç†ä¸ã«å•題ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚テレãƒãƒ¼ãƒˆã™ã‚‹ã«ã¯ã€å†åº¦ãƒã‚°ã‚¤ãƒ³ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ +ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒå¼•ãç¶šã表示ã•ã‚Œã‚‹å ´åˆã¯ã€æŠ€è¡“サãƒãƒ¼ãƒˆFAQ(www.secondlife.com/support)をå‚ç…§ã—ã¦ãã ã•ã„。 </message> <message name="invalid_region_handoff"> - 地域間ã®ç§»å‹•ã®å‡¦ç†ä¸ã«å•題ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚地域間を -移動ã™ã‚‹ã«ã¯ã€å†åº¦ãƒã‚°ã‚¤ãƒ³ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒ -引ãç¶šã表示ã•ã‚Œã‚‹å ´åˆã¯ã€æŠ€è¡“サãƒãƒ¼ãƒˆFAQ(www.secondlife.com/support) -ã‚’å‚ç…§ã—ã¦ãã ã•ã„。 + 地域間ã®ç§»å‹•ã®å‡¦ç†ä¸ã«å•題ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚地域間を移動ã™ã‚‹ã«ã¯ã€å†åº¦ãƒã‚°ã‚¤ãƒ³ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ +ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒå¼•ãç¶šã表示ã•ã‚Œã‚‹å ´åˆã¯ã€æŠ€è¡“サãƒãƒ¼ãƒˆFAQ(www.secondlife.com/support)をå‚ç…§ã—ã¦ãã ã•ã„。 </message> <message name="blocked_tport"> 申ã—訳ã”ã–ã„ã¾ã›ã‚“。テレãƒãƒ¼ãƒˆã¯ç¾åœ¨ã€ãƒ–ãƒãƒƒã‚¯ã•れã¦ã„ã¾ã™ã€‚ã‚‚ã†å°‘ã—後ã§ã‚„り直ã—ã¦ãã ã•ã„。 -やり直ã—ã¦ã‚‚テレãƒãƒ¼ãƒˆã§ããªã„å ´åˆã¯ã€ã„ã£ãŸã‚“ãƒã‚°ã‚¢ã‚¦ãƒˆã—ã€å†åº¦ãƒã‚°ã‚¤ãƒ³ã—㦠-å•題を解決ã—ã¦ãã ã•ã„。 +やり直ã—ã¦ã‚‚テレãƒãƒ¼ãƒˆã§ããªã„å ´åˆã¯ã€ã„ã£ãŸã‚“ãƒã‚°ã‚¢ã‚¦ãƒˆã—ã€å†åº¦ãƒã‚°ã‚¤ãƒ³ã—ã¦å•題を解決ã—ã¦ãã ã•ã„。 </message> <message name="nolandmark_tport"> 残念ãªãŒã‚‰ã€ã‚·ã‚¹ãƒ†ãƒ ã¯ãƒ©ãƒ³ãƒ‰ãƒžãƒ¼ã‚¯ç›®çš„地を探ã›ã¾ã›ã‚“ã§ã—ãŸã€‚ @@ -32,21 +27,18 @@ 添付物ã¯ã€ã¾ã 到ç€ã—ã¦ã„ã¾ã›ã‚“。ã‚ã¨æ•°ç§’é–“ãŠå¾…ã¡ã„ãŸã ãã‹ã€ã„ã£ãŸã‚“ãƒã‚°ã‚¢ã‚¦ãƒˆã—ã€å†åº¦ãƒã‚°ã‚¤ãƒ³ã—ã¦ã‹ã‚‰ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã‚’やり直ã—ã¦ã ã•ã„。 </message> <message name="too_many_uploads_tport"> - ã“ã®åœ°åŸŸã®è³‡ç”£ã‚ューãŒç¾åœ¨è¾¼ã¿åˆã£ã¦ã„ã‚‹ãŸã‚ã€ãƒ†ãƒ¬ãƒãƒ¼ãƒˆãƒ» -リクエストを時間通りã«å‡¦ç†ã™ã‚‹ã“ã¨ãŒé›£ã—ã„状æ³ã§ã™ã€‚数分後ã«ã‚„り直ã™ã‹ã€ -ã¾ãŸã¯æ··é›‘ã—ã¦ã„ãªã„ä»–ã®åœ°åŸŸã‚’ãŠè©¦ã—ãã ã•ã„。 + ã“ã®åœ°åŸŸã®è³‡ç”£ã‚ューãŒç¾åœ¨è¾¼ã¿åˆã£ã¦ã„ã‚‹ãŸã‚ã€ãƒ†ãƒ¬ãƒãƒ¼ãƒˆãƒ»ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’時間通りã«å‡¦ç†ã™ã‚‹ã“ã¨ãŒé›£ã—ã„状æ³ã§ã™ã€‚ +数分後ã«ã‚„り直ã™ã‹ã€ã¾ãŸã¯æ··é›‘ã—ã¦ã„ãªã„ä»–ã®åœ°åŸŸã‚’ãŠè©¦ã—ãã ã•ã„。 </message> <message name="expired_tport"> - 申ã—訳ã”ã–ã„ã¾ã›ã‚“。システムã¯ãƒ†ãƒ¬ãƒãƒ¼ãƒˆãƒ»ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’時間ã©ãŠã‚Šã« -完了ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚数分後ã«ã‚„り直ã—ã¦ãã ã•ã„。 + 申ã—訳ã”ã–ã„ã¾ã›ã‚“。システムã¯ãƒ†ãƒ¬ãƒãƒ¼ãƒˆãƒ»ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’時間ã©ãŠã‚Šã«å®Œäº†ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚数分後ã«ã‚„り直ã—ã¦ãã ã•ã„。 </message> <message name="expired_region_handoff"> 申ã—訳ã”ã–ã„ã¾ã›ã‚“。システムã¯åœ°åŸŸé–“ã®ç§»å‹•を時間ã©ãŠã‚Šã«å®Œäº†ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ 数分後ã«ã‚„り直ã—ã¦ãã ã•ã„。 </message> <message name="no_host"> - テレãƒãƒ¼ãƒˆç›®çš„地を見ã¤ã‘られã¾ã›ã‚“。目的地ãŒä¸€æ™‚çš„ã«åˆ©ç”¨ã§ããªã„ -状態ã‹ã€ã¾ãŸã¯ã™ã§ã«æ¶ˆæ»…ã—ã¦ã„ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚数分後ã«ã‚„り直ã—ã¦ãã ã•ã„。 + テレãƒãƒ¼ãƒˆç›®çš„地を見ã¤ã‘られã¾ã›ã‚“。目的地ãŒä¸€æ™‚çš„ã«åˆ©ç”¨ã§ããªã„状態ã‹ã€ã¾ãŸã¯ã™ã§ã«æ¶ˆæ»…ã—ã¦ã„ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚数分後ã«ã‚„り直ã—ã¦ãã ã•ã„。 </message> <message name="no_inventory_host"> æŒã¡ç‰©ã‚·ã‚¹ãƒ†ãƒ ã¯ç¾åœ¨åˆ©ç”¨ã§ãã¾ã›ã‚“。 diff --git a/indra/newview/skins/default/xui/nl/floater_about.xml b/indra/newview/skins/default/xui/nl/floater_about.xml index 7e72f79bcf1c05e3a294b65f16be748dc8f95b8e..d981ac2c8c23070273ec48eef247d0accc3677df 100644 --- a/indra/newview/skins/default/xui/nl/floater_about.xml +++ b/indra/newview/skins/default/xui/nl/floater_about.xml @@ -1,35 +1,35 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_about" title="Over Second Life"> - <text_editor name="credits_editor"> - Second Life wordt u aangeboden door Philip, Tessa, Andrew, Cory, James, Ben, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Eve, Hunter, Ian, Jeff, Jennifer, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Avi, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, Bill, Todd, Ryan, Zach, Sarah, Nova, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Ventrella, Jack, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Teeny, Monroe, Icculus, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Satoko, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Mogura, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Rohn, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, Katie, Dawn, Katt, Dusty, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Vidtuts, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, Ann, Meredith, Clare, Joy, Praveen, Cody, Edmund, Ruthe, Sirena, Gayathri, Spider, FJ, Davidoff, Tian, Jennie, Louise, Oskar, Landon, Noelle, Jarv, Ingrid, Al, Sommer, Doc, Aria, Huin, Gray, Lili, Vir, DJ, Yang, T, Simone, Maestro, Scott, Charlene, Quixote, Amanda, Susan, Zed, Anne, Enkidu, Esbee, Joroan, Katelin, Roxie, Tay, Scarlet, Kevin, Johnny, Wolfgang, Andren, Bob, Howard, Merov, Rand, Ray, Michon, Newell, Galen, Dessie, Les and many others. - -Een 'Dank u' voor de volgende bewoners voor het helpen zorgdragen dat dit de beste versie tot nu toe is: - -3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion -APR Copyright (C) 2000-2004 The Apache Software Foundation -cURL Copyright (C) 1996-2002, Daniel Stenberg, (daniel@haxx.se) -DBus/dbus-glib Copyright (C) 2002, 2003 CodeFactory AB / Copyright (C) 2003, 2004 -Red Hat, Inc. expat Copyright (C) 1998, 1999, 2000 Thai Open Source Software Center Ltd. -FreeType Copyright (C) 1996-2002, The FreeType Project (www.freetype.org). -GL Copyright (C) 1999-2004 Brian Paul. -Havok.com(TM) Copyright (C) 1999-2001, Telekinesys Research Limited. -jpeg2000 Copyright (C) 2001, David Taubman, The University of New South Wales (UNSW) -jpeglib Copyright (C) 1991-1998, Thomas G. Lane. -ogg/vorbis Copyright (C) 2001, Xiphophorus -OpenSSL Copyright (C) 1998-2002 The OpenSSL Project. -SDL Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga -SSLeay Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) -xmlrpc-epi Copyright (C) 2000 Epinions, Inc. -zlib Copyright (C) 1995-2002 Jean-loup Gailly and Mark Adler. -google-perftools Copyright (c) 2005, Google Inc. - -All rights reserved. See licenses.txt for details. - -Voice chat Audio coding: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C) - -I get by with a little help from my friends. --Richard Starkey - </text_editor> - <string name="you_are_at"> - U bent op [POSITION] - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_about" title="Over Second Life"> + <text_editor name="credits_editor"> + Second Life wordt u aangeboden door Philip, Tessa, Andrew, Cory, James, Ben, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Eve, Hunter, Ian, Jeff, Jennifer, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Avi, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, Bill, Todd, Ryan, Zach, Sarah, Nova, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Ventrella, Jack, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Teeny, Monroe, Icculus, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Satoko, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Mogura, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Rohn, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, Katie, Dawn, Katt, Dusty, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Vidtuts, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, Ann, Meredith, Clare, Joy, Praveen, Cody, Edmund, Ruthe, Sirena, Gayathri, Spider, FJ, Davidoff, Tian, Jennie, Louise, Oskar, Landon, Noelle, Jarv, Ingrid, Al, Sommer, Doc, Aria, Huin, Gray, Lili, Vir, DJ, Yang, T, Simone, Maestro, Scott, Charlene, Quixote, Amanda, Susan, Zed, Anne, Enkidu, Esbee, Joroan, Katelin, Roxie, Tay, Scarlet, Kevin, Johnny, Wolfgang, Andren, Bob, Howard, Merov, Rand, Ray, Michon, Newell, Galen, Dessie, Les and many others. + +Een 'Dank u' voor de volgende bewoners voor het helpen zorgdragen dat dit de beste versie tot nu toe is: + +3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion +APR Copyright (C) 2000-2004 The Apache Software Foundation +cURL Copyright (C) 1996-2002, Daniel Stenberg, (daniel@haxx.se) +DBus/dbus-glib Copyright (C) 2002, 2003 CodeFactory AB / Copyright (C) 2003, 2004 +Red Hat, Inc. expat Copyright (C) 1998, 1999, 2000 Thai Open Source Software Center Ltd. +FreeType Copyright (C) 1996-2002, The FreeType Project (www.freetype.org). +GL Copyright (C) 1999-2004 Brian Paul. +Havok.com(TM) Copyright (C) 1999-2001, Telekinesys Research Limited. +jpeg2000 Copyright (C) 2001, David Taubman, The University of New South Wales (UNSW) +jpeglib Copyright (C) 1991-1998, Thomas G. Lane. +ogg/vorbis Copyright (C) 2001, Xiphophorus +OpenSSL Copyright (C) 1998-2002 The OpenSSL Project. +SDL Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga +SSLeay Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) +xmlrpc-epi Copyright (C) 2000 Epinions, Inc. +zlib Copyright (C) 1995-2002 Jean-loup Gailly and Mark Adler. +google-perftools Copyright (c) 2005, Google Inc. + +All rights reserved. See licenses.txt for details. + +Voice chat Audio coding: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C) + +To be a success in business, be daring, be first, be different. --Henry Marchant + </text_editor> + <string name="you_are_at"> + U bent op [POSITION] + </string> +</floater> diff --git a/indra/newview/skins/default/xui/nl/floater_about_land.xml b/indra/newview/skins/default/xui/nl/floater_about_land.xml index 6a11d4e8537dfea328c0207f20cadbe0c0da9e10..44c2ebccf7bb09a3d29d88feab737de7d5f8ef0d 100644 --- a/indra/newview/skins/default/xui/nl/floater_about_land.xml +++ b/indra/newview/skins/default/xui/nl/floater_about_land.xml @@ -1,390 +1,488 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floaterland" title="Over land"> - <tab_container name="landtab"> - <panel label="Algemeen" name="land_general_panel"> - <text name="Name:"> - Naam: - </text> - <text name="Description:"> - Omschrijving: - </text> - <text name="Owner:"> - Eigenaar - </text> - <text name="OwnerText"> - Leyla Linden - </text> - <button label="Profiel..." label_selected="Profiel..." name="Profile..."/> - <text name="Group:"> - Groep: - </text> - <button label="Instellen..." label_selected="Instellen..." name="Set..."/> - <check_box label="Overdracht aan groep toestaan" name="check deed" tool_tip="Een groepofficier kan dit land aan de groep overdragen, zodat het ondersteund wordt door de landallocatie van de groep."/> - <button label="Overdragen..." label_selected="Overdragen..." name="Deed..." tool_tip="U mag alleen land overdragen indien u een officier bent in de geselecteerde groep."/> - <check_box label="Eigenaar maakt bijdrage met overdracht" name="check contrib" tool_tip="Wanneer het land is overgedragen aan de groep, draagt de voormalig eigenaar voldoende landtoewijzing bij om het te ondersteunen."/> - <text name="For Sale:"> - Te koop: - </text> - <text name="Not for sale."> - Niet te koop. - </text> - <text name="For Sale: Price L$[PRICE]."> - Prijs: L$[PRICE]. - </text> - <button label="Verkoop land..." label_selected="Verkoop land..." name="Sell Land..."/> - <text name="For sale to"> - Te koop voor: [BUYER] - </text> - <text name="Sell with landowners objects in parcel."> - Objecten opgenomen in verkoop - </text> - <text name="Selling with no objects in parcel."> - Objecten niet opgenomen in verkoop - </text> - <button label="Annuleer landverkoop" label_selected="Annuleer landverkoop" name="Cancel Land Sale"/> - <text name="Claimed:"> - Geclaimd - </text> - <text name="DateClaimText"> - Tue Aug 15 13:47:25 2006 - </text> - <text name="PriceLabel"> - Gebied: - </text> - <text name="PriceText"> - 4048 m² - </text> - <text name="Traffic:"> - Verkeer: - </text> - <text name="DwellText"> - 0 - </text> - <button label="Koop land..." label_selected="Koop land..." name="Buy Land..."/> - <button label="Koop voor groep..." label_selected="Koop voor groep..." name="Buy For Group..."/> - <button label="Koop toegangspas..." label_selected="Koop toegangspas..." name="Buy Pass..." tool_tip="Een toegangspas geeft u tijdelijk toegang tot dit land."/> - <button label="Land Afstaan..." label_selected="Land Afstaan..." name="Abandon Land..."/> - <button label="Land terugvorderen..." label_selected="Land terugvorderen..." name="Reclaim Land..."/> - <button label="Lindenverkoop..." label_selected="Lindenverkoop..." name="Linden Sale..." tool_tip="Land moet in bezit zijn, de inhoud moet ingesteld zijn en niet al ter veiling zijn aangeboden."/> - <string name="new users only"> - Alleen nieuwe gebruikers - </string> - <string name="anyone"> - Iedereen - </string> - <string name="area_text"> - Gebied - </string> - <string name="area_size_text"> - [AREA] m² - </string> - <string name="auction_id_text"> - Veiling ID: [ID] - </string> - <string name="need_tier_to_modify"> - U dient uw aankoop te goedkeuren voor u dit land kunt wijzigen. - </string> - <string name="group_owned_text"> - (Groepseigendom) - </string> - <string name="profile_text"> - Profiel... - </string> - <string name="info_text"> - Informatie... - </string> - <string name="public_text"> - (public) - </string> - <string name="none_text"> - (none) - </string> - <string name="sale_pending_text"> - (Verkoop bezig) - </string> - <string name="no_selection_text"> - Geen perceel geselecteerd. Ga naar Wereld menu > Over land of selecteer een ander perceel om zijn details te tonen. - </string> - </panel> - <panel label="Convenant" name="land_covenant_panel"> - <text name="covenant_timestamp_text"> - Laatst gewijzigd Wed Dec 31 16:00:00 1969 - </text> - <text name="region_name_lbl"> - Regio: - </text> - <text name="region_name_text"> - leyla - </text> - <text name="estate_name_lbl"> - Estate: - </text> - <text name="estate_name_text"> - mainland - </text> - <text name="estate_owner_lbl"> - Estate eigenaar: - </text> - <text name="estate_owner_text"> - (none) - </text> - <text name="resellable_clause"> - Aangekocht land in deze regio mag niet worden doorverkocht. - </text> - <text name="changeable_clause"> - Aangekocht land in deze regio mag niet worden samengevoegd/opgedeeld. - </text> - <text_editor name="covenant_editor"> - Er is geen convenant voorzien voor dit estate. - </text_editor> - <string name="can_resell"> - Aangekocht land in deze regio mag worden doorverkocht. - </string> - <string name="can_not_resell"> - Aangekocht land in deze regio mag niet worden doorverkocht. - </string> - <string name="can_change"> - Aangekocht land in deze regio mag worden samengevoegd of opgedeeld. - </string> - <string name="can_not_change"> - Aangekocht land in deze regio mag niet worden samengevoegd of opgedeeld. - </string> - </panel> - <panel label="Objecten" name="land_objects_panel"> - <text name="parcel_object_bonus"> - Regio object bonus factor: [BONUS] - </text> - <text name="Simulator primitive usage:"> - Simulator primitieven gebruik: - </text> - <text name="objects_available"> - [COUNT] van [MAX] ([AVAILABLE] beschikbaar) - </text> - <string name="objects_available_text"> - [COUNT] van [MAX] ([AVAILABLE] beschikbaar) - </string> - <string name="objects_deleted_text"> - [COUNT] van [MAX] ([DELETED] zullen worden verwijderd) - </string> - <text name="Primitives parcel supports:"> - Primitieven ondersteund door perceel: - </text> - <text name="object_contrib_text"> - [COUNT] - </text> - <text name="Primitives on parcel:"> - Primitieven op perceel: - </text> - <text name="total_objects_text"> - [COUNT] - </text> - <text name="Owned by parcel owner:"> - Eigendom van perceeleigenaar: - </text> - <text name="owner_objects_text"> - [COUNT] - </text> - <button label="Toon" label_selected="Toon" name="ShowOwner"/> - <button label="Retourneren..." label_selected="Retourneren..." name="ReturnOwner..." tool_tip="Retourneer objecten naar hun eigenaren."/> - <text name="Set to group:"> - Groep toewijzen: - </text> - <text name="group_objects_text"> - [COUNT] - </text> - <button label="Toon" label_selected="Toon" name="ShowGroup"/> - <button label="Retourneren..." label_selected="Retourneren..." name="ReturnGroup..." tool_tip="Retourneer objecten naar hun eigenaren."/> - <text name="Owned by others:"> - Eigendom van anderen: - </text> - <text name="other_objects_text"> - [COUNT] - </text> - <button label="Toon" label_selected="Toon" name="ShowOther"/> - <button label="Retourneren..." label_selected="Retourneren..." name="ReturnOther..." tool_tip="Retourneer objecten naar hun eigenaren."/> - <text name="Selected / sat upon:"> - Geselecteerd/Er op gezeten - </text> - <text name="selected_objects_text"> - [COUNT] - </text> - <text name="Autoreturn"> - Objecten van andere inwoners automatisch retourneren (minuten, 0 om uit te schakelen): - </text> - <text name="Object Owners:"> - Objecteigenaren: - </text> - <button label="Ververs lijst" label_selected="Ververs lijst" name="Refresh List"/> - <button label="Retourneer objecten..." label_selected="Retourneer objecten..." name="Return objects..."/> - <name_list name="owner list"> - <column label="Type" name="type"/> - <column label="Naam" name="name"/> - <column label="Aantal" name="count"/> - <column label="Meest recent" name="mostrecent"/> - </name_list> - </panel> - <panel label="Opties" name="land_options_panel"> - <text name="allow_label"> - Andere inwoners toestaan te: - </text> - <check_box label="Terrein bewerken" name="edit land check" tool_tip="Indien aangevinkt, kan iedereen uw terrein bewerken. Het is het beste om dit uit te laten staan, omdat u zelf altijd uw eigen land kunt bewerken."/> - <check_box label="Maak landmarkering" name="check landmark"/> - <check_box label="Vliegen" name="check fly" tool_tip="Indien aangevinkt, kunnen inwoners op uw land vliegen. Indien niet aangevinkt, kunnen ze alleen het land binnenvliegen of eroverheen vliegen."/> - <text name="allow_label2"> - Maak objecten: - </text> - <check_box label="Alle inwoners" name="edit objects check"/> - <check_box label="Groep" name="edit group objects check"/> - <text name="allow_label3"> - Objecten binnenlaten: - </text> - <check_box label="Alle inwoners" name="all object entry check"/> - <check_box label="Groep" name="group object entry check"/> - <text name="allow_label4"> - Scripts uitvoeren: - </text> - <check_box label="Alle inwoners" name="check other scripts"/> - <check_box label="Groep" name="check group scripts"/> - <text name="land_options_label"> - Landopties: - </text> - <check_box label="Veilig (geen letsel)" name="check safe" tool_tip="Indien aangevinkt, wordt het land op Veilig ingesteld, waarmee letselgevechten worden uitgeschakeld. Indien niet aangevinkt, is letsel ingeschakeld."/> - <check_box label="Niet duwen" name="PushRestrictCheck" tool_tip="Weerhoudt scripts van duwen. Het aanvinken van deze optie kan handig zijn om storend gedrag op uw land te voorkomen."/> - <check_box label="Toon plaats in Zoeken (L$30/week) onder" name="ShowDirectoryCheck" tool_tip="Laat mensen dit perceel zien in zoekresultaten."/> - <combo_box name="land category"> - <combo_box.item name="AnyCategory" label="Alle categorieën"/> - <combo_box.item name="LindenLocation" label="Linden Locatie"/> - - <combo_box.item name="Arts&Culture" label="Kunst & Cultuur"/> - <combo_box.item name="Business" label="Zakelijk"/> - <combo_box.item name="Educational" label="Educatief"/> - <combo_box.item name="Gaming" label="Spelen"/> - <combo_box.item name="Hangout" label="Ontmoetingsplaats"/> - <combo_box.item name="NewcomerFriendly" label="Nieuwkomervriendelijk"/> - <combo_box.item name="Parks&Nature" label="Parken & Natuur"/> - <combo_box.item name="Residential" label="Woongebied"/> - <combo_box.item name="Shopping" label="Winkelen"/> - <combo_box.item name="Other" label="Anders"/> - </combo_box> - <button label="?" label_selected="?" name="?"/> - <check_box name="MatureCheck" /> - <text name="Snapshot:"> - Foto: - </text> - <texture_picker label="" name="snapshot_ctrl" tool_tip="Klik om een afbeelding te kiezen"/> - <text name="landing_point"> - Landingsplaats: [LANDING] - </text> - <string name="landing_point_none"> - (none) - </string> - <button label="Instellen" label_selected="Instellen" name="Set" tool_tip="Stelt het landingspunt in waar bezoekers arriveren. Wordt ingesteld op uw avatar's positie binnen dit perceel."/> - <button label="Opschonen" label_selected="Opschonen" name="Clear" tool_tip="Landingspunt leegmaken"/> - <text name="Teleport Routing: "> - Teleport routering: - </text> - <combo_box name="landing type" tool_tip="Teleport routering -- selecteer hoe teleports naar uw land moeten worden afgehandeld."> - <combo_box.item name="Blocked" label="Geblokkeerd"/> - <combo_box.item name="LandingPoint" label="Landingsplaats"/> - <combo_box.item name="Anywhere" label="Overal"/> - </combo_box> - <string name="push_restrict_text"> - Niet duwen - </string> - <string name="push_restrict_region_text"> - Niet duwen (ingesteld op regio) - </string> - </panel> - <panel label="Media" name="land_media_panel"> - <text name="with media:"> - Media type: - </text> - <combo_box name="media type" tool_tip="Specificeer of de URL een film, webpagina of andere media is"/> - <text name="at URL:"> - Media URL: - </text> - <button label="Instellen..." label_selected="Instellen..." name="set_media_url"/> - <text name="Description:"> - Omschrijving: - </text> - <line_editor name="url_description" tool_tip="Tekst wordt naast afspelen/laden knop weergegeven"/> - <text name="Media texture:"> - Vervang textuur - </text> - <texture_picker label="" name="media texture" tool_tip="Klik om een afbeelding te kiezen"/> - <text name="replace_texture_help"> - (Objecten die deze textuur gebruiken zullen de film of de webpagina tonen nadat u het afspelen-pijltje hebt geklikt.) - </text> - <text name="Options:"> - Media opties: - </text> - <check_box label="Automatisch schalen" name="media_auto_scale" tool_tip="Het aanvinken van deze optie zal de inhoud voor dit perceel automatisch schalen. Het kan enigszins trager zijn en de visuele kwaliteit kan iets lager zijn, maar er zal geen andere textuurschaling of uitlijning nodig zijn."/> - <check_box label="Herhaal media" name="media_loop" tool_tip="Speel media af in een lus. Wanneer de media klaar is met afspelen zal het herstarten vanaf het begin."/> - <check_box label="Verberg media URL" name="hide_media_url" tool_tip="Het aanvinken van deze optie zal de media URL verbergen voor alle niet-geautoriseerde bekijkers van de perceelinformatie. Let op: dit is niet beschikbaar voor HTML types."/> - <check_box label="Verberg muziek URL" name="hide_music_url" tool_tip="Het aanvinken van deze optie zal de muziek URL verbergen voor alle niet-geautoriseerde bekijkers van de perceelinformatie."/> - <text name="media_size" tool_tip="Grootte om webmedia weer te geven, laat op 0 staan voor standaard."> - Media grootte: - </text> - <spinner name="media_size_width" tool_tip="Grootte om webmedia weer te geven, laat op 0 staan voor standaard."/> - <spinner name="media_size_height" tool_tip="Grootte om webmedia weer te geven, laat op 0 staan voor standaard."/> - <text name="pixels"> - pixels - </text> - <text name="MusicURL:"> - Muziek URL: - </text> - <text name="Sound:"> - Geluid: - </text> - <check_box label="Spatiaal geluid niet toestaan op dit perceel" name="check sound local"/> - <text name="Voice settings:"> - Voice: - </text> - <radio_group name="parcel_voice_channel"> - <radio_item name="Estate"> - Gebruik het estate spatiaal kanaal - </radio_item> - <radio_item name="Private"> - Gebruik een privé spatiaal kanaal - </radio_item> - <radio_item name="Disabled"> - Spatiale audio op dit perceel uitschakelen - </radio_item> - </radio_group> - </panel> - <panel label="Toegang" name="land_access_panel"> - <text name="Limit access to this parcel to:"> - Toegang tot dit perceel - </text> - <check_box label="Publieke toegang toestaan" name="public_access"/> - <text name="Only Allow"> - Blokkeer toegang door: - </text> - <check_box label="Inwoners die geen betalingsinformatie hebben gegeven aan Linden Lab" name="limit_payment" tool_tip="Verban ongeïdentificeerde inwoners."/> - <check_box label="Inwoners die geen leeftijdgeverifieerde volwassenen zijn" name="limit_age_verified" tool_tip="Verban inwoners die hun leeftijd niet geverifieerd hebben. Zie support.secondlife.com voor meer informatie."/> - <string name="estate_override"> - Een of meer van deze opties is op estate-niveau ingesteld - </string> - <check_box label="Groepstoegang toestaan: [GROUP]" name="GroupCheck" tool_tip="Stel de groep in op het tabblad Algemeen"/> - <check_box label="Verkoop toegangspassen aan:" name="PassCheck" tool_tip="Tijdelijke toegang tot dit perceel toestaan"/> - <combo_box name="pass_combo"> - <combo_box.item name="Anyone" label="Iedereen"/> - <combo_box.item name="Group" label="Groep"/> - </combo_box> - <spinner label="Prijs in L$:" name="PriceSpin"/> - <spinner label="Toegangsuren" name="HoursSpin"/> - <text label="Altijd toestaan" name="AllowedText"> - Toegestane inwoners - </text> - <name_list name="AccessList" tool_tip="([LISTED] vermeld, [MAX] max)"/> - <button label="Toevoegen..." label_selected="Toevoegen..." name="add_allowed"/> - <button label="Verwijderen" label_selected="Verwijderen" name="remove_allowed"/> - <text label="Verbannen" name="BanCheck"> - Verbannen inwoners - </text> - <name_list name="BannedList" tool_tip="([LISTED] vermeld, [MAX] max)"/> - <button label="Toevoegen..." label_selected="Toevoegen..." name="add_banned"/> - <button label="Verwijderen" label_selected="Verwijderen" name="remove_banned"/> - </panel> - </tab_container> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floaterland" title="Over land"> + <tab_container name="landtab"> + <panel label="Algemeen" name="land_general_panel"> + <text name="Name:"> + Naam: + </text> + <text name="Description:"> + Omschrijving: + </text> + <text name="LandType"> + Type: + </text> + <text name="LandTypeText" left="102"> + Mainland / Homestead + </text> + <text name="ContentRating" width="98"> + Inhoudscategorie: + </text> + <text name="ContentRatingText" left="102"> + Adult + </text> + <text name="Owner:"> + Eigenaar: + </text> + <text name="OwnerText" left="102" width="242"> + Leyla Linden + </text> + <button label="Profiel..." label_selected="Profiel..." name="Profile..."/> + <text name="Group:"> + Groep: + </text> + <text left="102" name="GroupText" width="242"/> + <button label="Instellen..." label_selected="Instellen..." name="Set..."/> + <check_box label="Overdracht aan groep toestaan" name="check deed" tool_tip="Een groepofficier kan dit land aan de groep overdragen, zodat het ondersteund wordt door de landallocatie van de groep."/> + <button label="Overdragen..." label_selected="Overdragen..." name="Deed..." tool_tip="U mag alleen land overdragen indien u een officier bent in de geselecteerde groep."/> + <check_box label="Eigenaar maakt bijdrage met overdracht" name="check contrib" tool_tip="Wanneer het land is overgedragen aan de groep, draagt de voormalig eigenaar voldoende landtoewijzing bij om het te ondersteunen."/> + <text name="For Sale:"> + Te koop: + </text> + <text name="Not for sale."> + Niet te koop. + </text> + <text name="For Sale: Price L$[PRICE]."> + Prijs: L$[PRICE] (L$[PRICE_PER_SQM]/m²). + </text> + <button label="Verkoop land..." label_selected="Verkoop land..." name="Sell Land..."/> + <text name="For sale to"> + Te koop voor: [BUYER] + </text> + <text name="Sell with landowners objects in parcel."> + Objecten opgenomen in verkoop + </text> + <text name="Selling with no objects in parcel." width="196"> + Objecten niet opgenomen in verkoop + </text> + <button label="Annuleer landverkoop" label_selected="Annuleer landverkoop" name="Cancel Land Sale"/> + <text name="Claimed:"> + Geclaimd: + </text> + <text name="DateClaimText"> + Tue Aug 15 13:47:25 2006 + </text> + <text name="PriceLabel"> + Gebied: + </text> + <text name="PriceText"> + 4048 m² + </text> + <text name="Traffic:"> + Verkeer: + </text> + <text name="DwellText"> + 0 + </text> + <button left="130" width="125" label="Koop land..." label_selected="Koop land..." name="Buy Land..."/> + <button label="Koop voor groep..." label_selected="Koop voor groep..." name="Buy For Group..."/> + <button left="130" width="125" label="Koop toegangspas..." label_selected="Koop toegangspas..." name="Buy Pass..." tool_tip="Een toegangspas geeft u tijdelijk toegang tot dit land."/> + <button label="Land Afstaan..." label_selected="Land Afstaan..." name="Abandon Land..."/> + <button label="Land terugvorderen..." label_selected="Land terugvorderen..." name="Reclaim Land..."/> + <button label="Lindenverkoop..." label_selected="Lindenverkoop..." name="Linden Sale..." tool_tip="Land moet in bezit zijn, de inhoud moet ingesteld zijn en niet al ter veiling zijn aangeboden."/> + <string name="new users only"> + Alleen nieuwe gebruikers + </string> + <string name="anyone"> + Iedereen + </string> + <string name="area_text"> + Gebied + </string> + <string name="area_size_text"> + [AREA] m² + </string> + <string name="auction_id_text"> + Veiling ID: [ID] + </string> + <string name="need_tier_to_modify"> + U dient uw aankoop te goedkeuren voor u dit land kunt wijzigen. + </string> + <string name="group_owned_text"> + (Groepseigendom) + </string> + <string name="profile_text"> + Profiel... + </string> + <string name="info_text"> + Informatie... + </string> + <string name="public_text"> + (public) + </string> + <string name="none_text"> + (none) + </string> + <string name="sale_pending_text"> + (Verkoop bezig) + </string> + <string name="no_selection_text"> + Geen perceel geselecteerd. Ga naar Wereld menu > Over land of selecteer een ander perceel om zijn details te tonen. + </string> + </panel> + <panel label="Convenant" name="land_covenant_panel"> + <text name="estate_section_lbl"> + Estate: + </text> + <text name="estate_name_lbl"> + Naam: + </text> + <text name="estate_name_text"> + mainland + </text> + <text name="estate_owner_lbl"> + Eigenaar: + </text> + <text name="estate_owner_text"> + (none) + </text> + <text_editor name="covenant_editor"> + Er is geen convenant voorzien voor dit estate. + </text_editor> + <text name="covenant_timestamp_text"> + Laatst gewijzigd Wed Dec 31 16:00:00 1969 + </text> + <text name="region_section_lbl"> + Regio: + </text> + <text name="region_name_lbl"> + Naam: + </text> + <text name="region_name_text"> + leyla + </text> + <text name="region_landtype_lbl"> + Type: + </text> + <text name="region_landtype_text"> + Mainland / Homestead + </text> + <text name="region_maturity_lbl"> + Inhoudscategorie: + </text> + <text name="region_maturity_text"> + Adult + </text> + <text name="resellable_lbl"> + Doorverkopen: + </text> + <text name="resellable_clause"> + Land in deze regio mag niet worden doorverkocht. + </text> + <text name="changeable_lbl"> + Opsplitsen: + </text> + <text name="changeable_clause"> + Land in deze regio mag niet worden samengevoegd/opgesplitst. + </text> + <string name="can_resell"> + Aangekocht land in deze regio mag worden doorverkocht. + </string> + <string name="can_not_resell"> + Aangekocht land in deze regio mag niet worden doorverkocht. + </string> + <string name="can_change"> + Aangekocht land in deze regio mag worden samengevoegd of +opgedeeld. + </string> + <string name="can_not_change"> + Aangekocht land in deze regio mag niet worden samengevoegd +of opgedeeld. + </string> + </panel> + <panel label="Objecten" name="land_objects_panel"> + <text name="parcel_object_bonus"> + Regio object bonus factor: [BONUS] + </text> + <text name="Simulator primitive usage:"> + Simulator primitieven gebruik: + </text> + <text name="objects_available" left="214" width="230"> + [COUNT] van [MAX] ([AVAILABLE] beschikbaar) + </text> + <string name="objects_available_text"> + [COUNT] van [MAX] ([AVAILABLE] beschikbaar) + </string> + <string name="objects_deleted_text"> + [COUNT] van [MAX] ([DELETED] zullen worden verwijderd) + </string> + <text name="Primitives parcel supports:" width="200"> + Primitieven ondersteund door perceel: + </text> + <text name="object_contrib_text" left="214" width="152"> + [COUNT] + </text> + <text name="Primitives on parcel:"> + Primitieven op perceel: + </text> + <text name="total_objects_text" left="214" width="48"> + [COUNT] + </text> + <text name="Owned by parcel owner:" left="14" width="180" > + Eigendom van perceeleigenaar: + </text> + <text name="owner_objects_text" left="214" width="48"> + [COUNT] + </text> + <button label="Toon" label_selected="Toon" name="ShowOwner" right="-135" width="60"/> + <button label="Retourneren..." label_selected="Retourneren..." name="ReturnOwner..." tool_tip="Retourneer objecten naar hun eigenaren." right="-10" width="119"/> + <text name="Set to group:" left="14" width="180"> + Groep toewijzen: + </text> + <text name="group_objects_text" left="214" width="48"> + [COUNT] + </text> + <button label="Toon" label_selected="Toon" name="ShowGroup" right="-135" width="60"/> + <button label="Retourneren..." label_selected="Retourneren..." name="ReturnGroup..." tool_tip="Retourneer objecten naar hun eigenaren." right="-10" width="119"/> + <text name="Owned by others:" left="14" width="128"> + Eigendom van anderen: + </text> + <text name="other_objects_text" left="214" width="48"> + [COUNT] + </text> + <button label="Toon" label_selected="Toon" name="ShowOther" right="-135" width="60"/> + <button label="Retourneren..." label_selected="Retourneren..." name="ReturnOther..." tool_tip="Retourneer objecten naar hun eigenaren." right="-10" width="119"/> + <text name="Selected / sat upon:" left="14" width="193"> + Geselecteerd/Er op gezeten + </text> + <text name="selected_objects_text" left="214" width="48"> + [COUNT] + </text> + <text name="Autoreturn" left="4" width="412" height="32" bottom="-196"> + Objecten van andere inwoners automatisch retourneren (minuten): + (0 om uit te schakelen) + </text> + <line_editor name="clean other time" right="-50" bottom="-179"/> + <text name="Object Owners:" bottom="-213"> + Objecteigenaren: + </text> + <button label="Ververs lijst" label_selected="Ververs lijst" name="Refresh List" bottom="-213"/> + <button label="Retourneer objecten..." label_selected="Retourneer objecten..." name="Return objects..." width="164" bottom="-213"/> + <name_list name="owner list" height="104"> + <column label="Type" name="type"/> + <column label="Naam" name="name"/> + <column label="Aantal" name="count"/> + <column label="Meest recent" name="mostrecent"/> + </name_list> + </panel> + <panel label="Opties" name="land_options_panel"> + <text name="allow_label"> + Andere inwoners toestaan te: + </text> + <check_box label="Terrein bewerken" name="edit land check" tool_tip="Indien aangevinkt, kan iedereen uw terrein bewerken. Het is het beste om dit uit te laten staan, omdat u zelf altijd uw eigen land kunt bewerken."/> + <check_box label="Maak landmarkering" name="check landmark"/> + <check_box label="Vliegen" name="check fly" tool_tip="Indien aangevinkt, kunnen inwoners op uw land vliegen. Indien niet aangevinkt, kunnen ze alleen het land binnenvliegen of eroverheen vliegen."/> + <text name="allow_label2" left="162"> + Maak objecten: + </text> + <check_box label="Alle inwoners" name="edit objects check" left="275"/> + <check_box label="Groep" name="edit group objects check"/> + <text name="allow_label3" left="162"> + Objecten binnenlaten: + </text> + <check_box label="Alle inwoners" name="all object entry check" left="275"/> + <check_box label="Groep" name="group object entry check"/> + <text name="allow_label4" left="162"> + Scripts uitvoeren: + </text> + <check_box label="Alle inwoners" name="check other scripts" left="275"/> + <check_box label="Groep" name="check group scripts"/> + <text name="land_options_label"> + Landopties: + </text> + <check_box label="Veilig (geen letsel)" name="check safe" tool_tip="Indien aangevinkt, wordt het land op Veilig ingesteld, waarmee letselgevechten worden uitgeschakeld. Indien niet aangevinkt, is letsel ingeschakeld."/> + <check_box label="Niet duwen" name="PushRestrictCheck" tool_tip="Weerhoudt scripts van duwen. Het aanvinken van deze optie kan handig zijn om storend gedrag op uw land te voorkomen."/> + <check_box label="Toon plaats in Zoeken (L$30/week) onder" name="ShowDirectoryCheck" tool_tip="Laat mensen dit perceel zien in zoekresultaten."/> + <string name="search_enabled_tooltip"> + Laat mensen dit perceel zien in zoekresultaten + </string> + <string name="search_disabled_small_tooltip"> + Deze optie is uitgeschakeld, omdat dit gebied 128 m² of kleiner is. Alleen grote percelen kunnen worden opgenomen in Zoeken. + </string> + <string name="search_disabled_permissions_tooltip"> + Deze optie is uitgeschakeld omdat u de opties van dit perceel niet kunt wijzigen. + </string> + <combo_box name="land category with adult"> + <combo_item name="AnyCategory"> + Alle Categorieën + </combo_item> + <combo_item name="LindenLocation"> + Linden locatie + </combo_item> + <combo_item name="Adult"> + Adult + </combo_item> + <combo_item name="Arts&Culture"> + Kunst & Cultuur + </combo_item> + <combo_item name="Business"> + Zakelijk + </combo_item> + <combo_item name="Educational"> + Educatief + </combo_item> + <combo_item name="Gaming"> + Spellen + </combo_item> + <combo_item name="Hangout"> + Ontmoetingsplaats + </combo_item> + <combo_item name="NewcomerFriendly"> + Nieuwkomervriendelijk + </combo_item> + <combo_item name="Parks&Nature"> + Parken & natuur + </combo_item> + <combo_item name="Residential"> + Woongebied + </combo_item> + <combo_item name="Shopping"> + Winkelen + </combo_item> + <combo_item name="Other"> + Anders + </combo_item> + </combo_box> + <combo_box name="land category"> + <combo_box.item name="AnyCategory" label="Alle categorieën"/> + <combo_box.item name="LindenLocation" label="Linden Locatie"/> + <combo_box.item name="Arts&Culture" label="Kunst & Cultuur"/> + <combo_box.item name="Business" label="Zakelijk"/> + <combo_box.item name="Educational" label="Educatief"/> + <combo_box.item name="Gaming" label="Spelen"/> + <combo_box.item name="Hangout" label="Ontmoetingsplaats"/> + <combo_box.item name="NewcomerFriendly" label="Nieuwkomervriendelijk"/> + <combo_box.item name="Parks&Nature" label="Parken & Natuur"/> + <combo_box.item name="Residential" label="Woongebied"/> + <combo_box.item name="Shopping" label="Winkelen"/> + <combo_box.item name="Other" label="Anders"/> + </combo_box> + <button label="?" label_selected="?" name="?"/> + <check_box label="Mature inhoud" name="MatureCheck" tool_tip=" "/> + <string name="mature_check_mature"> + Mature inhoud + </string> + <string name="mature_check_adult"> + Adult inhoud + </string> + <string name="mature_check_mature_tooltip"> + Uw perceelinformatie of -inhoud wordt beschouwd als mature. + </string> + <string name="mature_check_adult_tooltip"> + Uw perceelinformatie of -inhoud wordt beschouwd als adult. + </string> + <text name="Snapshot:"> + Foto: + </text> + <texture_picker label="" name="snapshot_ctrl" tool_tip="Klik om een afbeelding te kiezen"/> + <text name="landing_point"> + Landingsplaats: [LANDING] + </text> + <string name="landing_point_none"> + (none) + </string> + <button width="70" label="Instellen" label_selected="Instellen" name="Set" tool_tip="Stelt het landingspunt in waar bezoekers arriveren. Wordt ingesteld op uw avatar's positie binnen dit perceel."/> + <button width="70" left="311" label="Opschonen" label_selected="Opschonen" name="Clear" tool_tip="Landingspunt leegmaken"/> + <text name="Teleport Routing: "> + Teleport routering: + </text> + <combo_box name="landing type" tool_tip="Teleport routering -- selecteer hoe teleports naar uw land moeten worden afgehandeld."> + <combo_box.item name="Blocked" label="Geblokkeerd"/> + <combo_box.item name="LandingPoint" label="Landingsplaats"/> + <combo_box.item name="Anywhere" label="Overal"/> + </combo_box> + <string name="push_restrict_text"> + Niet duwen + </string> + <string name="push_restrict_region_text"> + Niet duwen (ingesteld op regio) + </string> + </panel> + <panel label="Media" name="land_media_panel"> + <text name="with media:"> + Media type: + </text> + <combo_box name="media type" tool_tip="Specificeer of de URL een film, webpagina of andere media is"/> + <text name="at URL:"> + Media URL: + </text> + <button label="Instellen..." label_selected="Instellen..." name="set_media_url" width="66"/> + <text name="Description:"> + Omschrijving: + </text> + <line_editor name="url_description" tool_tip="Tekst wordt naast afspelen/laden knop weergegeven"/> + <text name="Media texture:"> + Vervang +textuur: + </text> + <texture_picker label="" name="media texture" tool_tip="Klik om een afbeelding te kiezen"/> + <text name="replace_texture_help"> + (Objecten die deze textuur gebruiken zullen de film +of de webpagina tonen nadat u het afspelen-pijltje +hebt geklikt.) + </text> + <text name="Options:"> + Media opties: + </text> + <check_box label="Automatisch schalen" name="media_auto_scale" tool_tip="Het aanvinken van deze optie zal de inhoud voor dit perceel automatisch schalen. Het kan enigszins trager zijn en de visuele kwaliteit kan iets lager zijn, maar er zal geen andere textuurschaling of uitlijning nodig zijn."/> + <check_box label="Herhaal media" name="media_loop" tool_tip="Speel media af in een lus. Wanneer de media klaar is met afspelen zal het herstarten vanaf het begin."/> + <check_box label="Verberg media URL" name="hide_media_url" tool_tip="Het aanvinken van deze optie zal de media URL verbergen voor alle niet-geautoriseerde bekijkers van de perceelinformatie. Let op: dit is niet beschikbaar voor HTML types."/> + <check_box label="Verberg muziek URL" name="hide_music_url" tool_tip="Het aanvinken van deze optie zal de muziek URL verbergen voor alle niet-geautoriseerde bekijkers van de perceelinformatie."/> + <text name="media_size" tool_tip="Grootte om webmedia weer te geven, laat op 0 staan voor standaard." width="120"> + Media grootte: + </text> + <spinner left_delta="90" name="media_size_width" tool_tip="Grootte om webmedia weer te geven, laat op 0 staan voor standaard."/> + <spinner name="media_size_height" tool_tip="Grootte om webmedia weer te geven, laat op 0 staan voor standaard."/> + <text name="pixels"> + pixels + </text> + <text name="MusicURL:"> + Muziek URL: + </text> + <text name="Sound:"> + Geluid: + </text> + <check_box label="Beperk gebaar- en objectgeluiden tot dit perceel" name="check sound local"/> + <button label="?" label_selected="?" name="?"/> + <text name="Voice settings:"> + Voice: + </text> + <check_box label="Voice inschakelen" name="parcel_enable_voice_channel"/> + <check_box label="Voice inschakelen (ingesteld in Estate)" name="parcel_enable_voice_channel_is_estate_disabled"/> + <check_box label="Beperk voice tot dit perceel" name="parcel_enable_voice_channel_parcel"/> + </panel> + <panel label="Toegang" name="land_access_panel"> + <text name="Limit access to this parcel to:"> + Toegang tot dit perceel + </text> + <check_box label="Publieke toegang toestaan" name="public_access"/> + <text name="Only Allow"> + Blokkeer toegang door: + </text> + <check_box label="Inwoners die geen betalingsinformatie hebben gegeven aan Linden Lab" name="limit_payment" tool_tip="Verban ongeïdentificeerde inwoners."/> + <check_box label="Inwoners die geen leeftijdgeverifieerde volwassenen zijn" name="limit_age_verified" tool_tip="Verban inwoners die hun leeftijd niet geverifieerd hebben. Zie support.secondlife.com voor meer informatie."/> + <string name="estate_override"> + Een of meer van deze opties is op estate-niveau ingesteld + </string> + <check_box label="Groepstoegang toestaan: [GROUP]" name="GroupCheck" tool_tip="Stel de groep in op het tabblad Algemeen"/> + <check_box label="Verkoop toegangspassen aan:" name="PassCheck" tool_tip="Tijdelijke toegang tot dit perceel toestaan"/> + <combo_box name="pass_combo" left_delta="190"> + <combo_box.item name="Anyone" label="Iedereen"/> + <combo_box.item name="Group" label="Groep"/> + </combo_box> + <spinner label="Prijs in L$:" name="PriceSpin" label_width="168" width="228" /> + <spinner label="Toegangsuren" name="HoursSpin" label_width="168" width="228" /> + <text label="Altijd toestaan" name="AllowedText"> + Toegestane inwoners + </text> + <name_list name="AccessList" tool_tip="([LISTED] vermeld, [MAX] max)"/> + <button label="Toevoegen..." label_selected="Toevoegen..." name="add_allowed"/> + <button label="Verwijderen" label_selected="Verwijderen" name="remove_allowed"/> + <text label="Verbannen" name="BanCheck"> + Verbannen inwoners + </text> + <name_list name="BannedList" tool_tip="([LISTED] vermeld, [MAX] max)"/> + <button label="Toevoegen..." label_selected="Toevoegen..." name="add_banned"/> + <button label="Verwijderen" label_selected="Verwijderen" name="remove_banned"/> + </panel> + </tab_container> +</floater> diff --git a/indra/newview/skins/default/xui/nl/floater_auction.xml b/indra/newview/skins/default/xui/nl/floater_auction.xml index 0683367acffdcb358c75b93b8f887704292af6e0..eb061e028d520b89ae7efdcb4b99f08537e6b7c4 100644 --- a/indra/newview/skins/default/xui/nl/floater_auction.xml +++ b/indra/newview/skins/default/xui/nl/floater_auction.xml @@ -1,9 +1,9 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_auction" title="Start Linden Land Verkoop"> - <check_box label="Voeg geel selectie kader toe" name="fence_check"/> - <button label="Foto" label_selected="Foto" name="snapshot_btn"/> - <button label="OK" label_selected="OK" name="ok_btn"/> - <string name="already for sale"> - U kunt geen percelen veilen die al te koop staan. - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_auction" title="Start Linden Land Verkoop"> + <check_box label="Voeg geel selectie kader toe" name="fence_check"/> + <button label="Foto" label_selected="Foto" name="snapshot_btn"/> + <button label="OK" label_selected="OK" name="ok_btn"/> + <string name="already for sale"> + U kunt geen percelen veilen die al te koop staan. + </string> +</floater> diff --git a/indra/newview/skins/default/xui/nl/floater_beacons.xml b/indra/newview/skins/default/xui/nl/floater_beacons.xml index cb1964d88879055e665f490ee00d2de6be8e5094..84196ac14f67d67170e2ea6a6133c0f22f369007 100644 --- a/indra/newview/skins/default/xui/nl/floater_beacons.xml +++ b/indra/newview/skins/default/xui/nl/floater_beacons.xml @@ -1,15 +1,15 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="beacons" title="Bakens"> - <panel name="beacons_panel"> - <check_box label="Gescripte objecten met alleen Aanraken" name="touch_only"/> - <check_box label="Gescripte objecten" name="scripted"/> - <check_box label="Fysieke objecten" name="physical"/> - <check_box label="Geluidsbronnen" name="sounds"/> - <check_box label="Particlebronnen" name="particles"/> - <check_box label="Markeringen weergeven" name="highlights"/> - <check_box label="Bakens weergeven" name="beacons"/> - <text name="beacon_width_label"> - Bakenbreedte: - </text> - </panel> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="beacons" title="Bakens"> + <panel name="beacons_panel"> + <check_box label="Gescripte objecten met alleen Aanraken" name="touch_only"/> + <check_box label="Gescripte objecten" name="scripted"/> + <check_box label="Fysieke objecten" name="physical"/> + <check_box label="Geluidsbronnen" name="sounds"/> + <check_box label="Particlebronnen" name="particles"/> + <check_box label="Markeringen weergeven" name="highlights"/> + <check_box label="Bakens weergeven" name="beacons"/> + <text name="beacon_width_label"> + Bakenbreedte: + </text> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/nl/floater_bulk_perms.xml b/indra/newview/skins/default/xui/nl/floater_bulk_perms.xml new file mode 100644 index 0000000000000000000000000000000000000000..7f35ec45a9745039e1224985c9e40dc3ba1c7dc8 --- /dev/null +++ b/indra/newview/skins/default/xui/nl/floater_bulk_perms.xml @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floaterbulkperms" title="Bulk wijzigen inhoud permissies"> + <text name="applyto"> + Inhoud Typen + </text> + <check_box label="Animatie" name="check_animation"/> + <check_box label="Lichaamsdelen" name="check_bodypart"/> + <check_box label="Kleding" name="check_clothing"/> + <check_box label="Gebaren" name="check_gesture"/> + <check_box label="Landmarkeringen" name="check_landmark"/> + <check_box label="Notitiekaarten" name="check_notecard"/> + <check_box label="Objecten" name="check_object"/> + <check_box label="Scripts" name="check_script"/> + <check_box label="Geluiden" name="check_sound"/> + <check_box label="Texturen" name="check_texture"/> + <button label="Alles aanvinken" label_selected="Alles" name="check_all"/> + <button label="Alles ontvinken" label_selected="Geen" name="check_none"/> + <text name="newperms"> + Nieuwe permissies + </text> + <check_box label="Delen met groep" name="share_with_group"/> + <check_box label="Iedereen mag kopiëren" name="everyone_copy"/> + <text name="NextOwnerLabel"> + Volgende eigenaar kan: + </text> + <check_box label="Wijzigen" name="next_owner_modify"/> + <check_box label="Kopiëren" name="next_owner_copy"/> + <check_box label="Verkopen/Weggeven" name="next_owner_transfer"/> + <button label="Help" name="help"/> + <button label="Toepassen" name="apply"/> + <button label="Sluiten" name="close"/> + <string name="nothing_to_modify_text"> + Selectie bevat geen bewerkbare inhoud. + </string> + <string name="status_text"> + Permissies instellen op [NAME] + </string> + <string name="start_text"> + Starten permissie wijzigings verzoeken... + </string> + <string name="done_text"> + Beïndigd permissie wijzigings verzoeken. + </string> +</floater> diff --git a/indra/newview/skins/default/xui/nl/floater_bumps.xml b/indra/newview/skins/default/xui/nl/floater_bumps.xml index ab5073a9c6b9adc1d98566c2caacd2ff0c577caa..9dbfe405aa4698ea28c56a9577e82962b3e6c738 100644 --- a/indra/newview/skins/default/xui/nl/floater_bumps.xml +++ b/indra/newview/skins/default/xui/nl/floater_bumps.xml @@ -1,21 +1,21 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_bumps" title="Botsingen, duwen & slaan"> - <string name="none_detected"> - Geen gedetecteerd - </string> - <string name="bump"> - [TIME] [FIRST] [LAST] botste tegen u aan - </string> - <string name="llpushobject"> - [TIME] [FIRST] [LAST] duwde u met een script - </string> - <string name="selected_object_collide"> - [TIME] [FIRST] [LAST] raakte u met een object - </string> - <string name="scripted_object_collide"> - [TIME] [FIRST] [LAST] raakte u met een gescript object - </string> - <string name="physical_object_collide"> - [TIME] [FIRST] [LAST] raakte u met een fysiek object - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_bumps" title="Botsingen, duwen & slaan"> + <string name="none_detected"> + Geen gedetecteerd + </string> + <string name="bump"> + [TIME] [FIRST] [LAST] botste tegen u aan + </string> + <string name="llpushobject"> + [TIME] [FIRST] [LAST] duwde u met een script + </string> + <string name="selected_object_collide"> + [TIME] [FIRST] [LAST] raakte u met een object + </string> + <string name="scripted_object_collide"> + [TIME] [FIRST] [LAST] raakte u met een gescript object + </string> + <string name="physical_object_collide"> + [TIME] [FIRST] [LAST] raakte u met een fysiek object + </string> +</floater> diff --git a/indra/newview/skins/default/xui/nl/floater_buy_contents.xml b/indra/newview/skins/default/xui/nl/floater_buy_contents.xml index d5a71c019a869b734e9595aca539fec6750de794..0c513c923a0e2826bf98c18020d3ff7c447cab97 100644 --- a/indra/newview/skins/default/xui/nl/floater_buy_contents.xml +++ b/indra/newview/skins/default/xui/nl/floater_buy_contents.xml @@ -1,21 +1,21 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_buy_contents" title="Koop inhoud"> - <text name="contains_text"> - [NAME] bevat: - </text> - <text name="buy_text"> - Koop voor L$[AMOUNT] van [NAME]? - </text> - <button label="Annuleren" label_selected="Annuleren" name="cancel_btn"/> - <button label="Koop" label_selected="Koop" name="buy_btn"/> - <check_box label="Draag kleding nu" name="wear_check"/> - <string name="no_copy_text"> - (niet kopiëren) - </string> - <string name="no_modify_text"> - (niet wijzigen) - </string> - <string name="no_transfer_text"> - (niet overdragen) - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_buy_contents" title="Koop inhoud"> + <text name="contains_text"> + [NAME] bevat: + </text> + <text name="buy_text"> + Koop voor L$[AMOUNT] van [NAME]? + </text> + <button label="Annuleren" label_selected="Annuleren" name="cancel_btn"/> + <button label="Koop" label_selected="Koop" name="buy_btn"/> + <check_box label="Draag kleding nu" name="wear_check"/> + <string name="no_copy_text"> + (niet kopiëren) + </string> + <string name="no_modify_text"> + (niet wijzigen) + </string> + <string name="no_transfer_text"> + (niet overdragen) + </string> +</floater> diff --git a/indra/newview/skins/default/xui/nl/floater_buy_currency.xml b/indra/newview/skins/default/xui/nl/floater_buy_currency.xml index ebdaac1897906ea30fe740529acc4eabc6a76e79..9f740b86c848a73a0c62d7cca6ab9bdc30f2391c 100644 --- a/indra/newview/skins/default/xui/nl/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/nl/floater_buy_currency.xml @@ -1,66 +1,68 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="buy currency" title="Koop valuta"> - <text name="info_buying"> - Valuta kopen - </text> - <text name="info_cannot_buy"> - Kan nu niet kopen - </text> - <text name="info_need_more"> - U heeft meer valuta nodig: - </text> - <text name="error_message"> - Er klopt iets niet. - </text> - <button label="Ga naar website" name="error_web"/> - <text name="contacting"> - Contact maken met Lindex… - </text> - <text name="buy_action_unknown"> - Koop L$ op de LindeX valutabeurs - </text> - <text name="buy_action"> - [NAME] L$ [PRICE] - </text> - <text name="currency_action"> - Koop L$ - </text> - <line_editor name="currency_amt"> - 1234 - </line_editor> - <text name="currency_est"> - voor ong. US$ [USD] - </text> - <text name="getting_data"> - Data ophalen… - </text> - <text name="balance_label"> - U heeft momenteel - </text> - <text name="balance_amount"> - L$ [AMT] - </text> - <text name="buying_label"> - U koopt - </text> - <text name="buying_amount"> - L$ [AMT] - </text> - <text name="total_label"> - Uw saldo zal zijn: - </text> - <text name="total_amount"> - L$ [AMT] - </text> - <text name="purchase_warning_repurchase"> - Het bevestigen van deze aankoop zal alleen de valuta kopen. U dient de bewerking opnieuw uit te voeren. - </text> - <text name="purchase_warning_notenough"> - U koopt niet voldoende valuta. Verhoog de hoeveelheid die gekocht moet worden. - </text> - <button label="Annuleren" name="cancel_btn"/> - <button label="Kopen" name="buy_btn"/> - <string name="buy_currency"> - Koop L$ [LINDENS] voor ong. US$ [USD] - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="buy currency" title="Koop valuta"> + <text name="info_buying"> + Valuta kopen + </text> + <text name="info_cannot_buy"> + Kan nu niet kopen + </text> + <text name="info_need_more"> + U heeft meer valuta nodig: + </text> + <text name="error_message"> + Er klopt iets niet. + </text> + <button label="Ga naar website" name="error_web"/> + <text name="contacting"> + Contact maken met Lindex… + </text> + <text name="buy_action_unknown"> + Koop L$ op de LindeX valutabeurs + </text> + <text name="buy_action"> + [NAME] L$ [PRICE] + </text> + <text name="currency_action" width="48"> + Koop L$ + </text> + <line_editor name="currency_amt" left_delta="53" width="75"> + 1234 + </line_editor> + <text name="currency_est" left_delta="80"> + voor ong. US$ [USD] + </text> + <text name="getting_data"> + Data ophalen… + </text> + <text name="balance_label"> + U heeft momenteel + </text> + <text name="balance_amount"> + L$ [AMT] + </text> + <text name="buying_label"> + U koopt + </text> + <text name="buying_amount"> + L$ [AMT] + </text> + <text name="total_label"> + Uw saldo zal zijn: + </text> + <text name="total_amount"> + L$ [AMT] + </text> + <text name="purchase_warning_repurchase" right="-8"> + Het bevestigen van deze aankoop zal alleen de valuta +kopen. U dient de bewerking opnieuw uit te voeren. + </text> + <text name="purchase_warning_notenough" right="-8"> + U koopt niet voldoende valuta. +Verhoog de hoeveelheid die gekocht moet worden. + </text> + <button label="Annuleren" name="cancel_btn"/> + <button label="Kopen" name="buy_btn"/> + <string name="buy_currency"> + Koop L$ [LINDENS] voor ong. US$ [USD] + </string> +</floater> diff --git a/indra/newview/skins/default/xui/nl/floater_buy_land.xml b/indra/newview/skins/default/xui/nl/floater_buy_land.xml index 228d05d6e998c0fbca2f4ff1bfae92db11df674d..1bb02cc7d069d4cc21e8011ead35a3406d2d0de8 100644 --- a/indra/newview/skins/default/xui/nl/floater_buy_land.xml +++ b/indra/newview/skins/default/xui/nl/floater_buy_land.xml @@ -1,218 +1,235 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="buy land" title="Koop land"> - <text name="region_name_label"> - Regio: - </text> - <text name="region_name_text"> - (onbekend) - </text> - <text name="estate_name_label"> - Estate: - </text> - <text name="estate_name_text"> - (onbekend) - </text> - <text name="estate_owner_label"> - Estate eigenaar: - </text> - <text name="estate_owner_text"> - (onbekend) - </text> - <text name="resellable_changeable_label"> - Aangekocht land in deze regio: - </text> - <text name="resellable_clause"> - Aangekocht land in deze regio mag of mag niet worden doorverkocht. - </text> - <text name="changeable_clause"> - Mag of mag niet worden samengevoegd of opgedeeld. - </text> - <text name="covenant_text"> - U moet instemmen met het estate convenant: - </text> - <text_editor name="covenant_editor"> - Laden... - </text_editor> - <check_box label="Ik ga akkoord met het hierboven beschreven convenant." name="agree_covenant"/> - <text name="info_parcel_label"> - Perceel: - </text> - <text name="info_parcel"> - Scotopteryx 138,204 - </text> - <text name="info_size_label"> - Grootte: - </text> - <text name="info_size"> - 1024 m2. - </text> - <text name="info_price_label"> - Prijs: - </text> - <text name="info_price"> - L$ 1500, inclusief objecten - </text> - <text name="info_action"> - Het kopen van dit land zal: - </text> - <text name="error_message"> - Er is iets niet in orde. - </text> - <button label="Ga naar website" name="error_web"/> - <text name="account_action"> - U upgraden naar een premium lidmaatschap - </text> - <text name="account_reason"> - Alleen premiumleden kunnen land bezitten. - </text> - <combo_box name="account_level"> - <combo_box.item name="US$9.95/month,billedmonthly" label="US$9.95/maand, gefactureerd per maand"/> - <combo_box.item name="US$7.50/month,billedquarterly" label="US$7.50/maand, gefactureerd per kwartaal"/> - <combo_box.item name="US$6.00/month,billedannually" label="US$6.00/maand, gefactureerd per jaar"/> - </combo_box> - <text name="land_use_action"> - Verhoog uw maandelijkse landgebruikskosten tot US$ 40/maand - </text> - <text name="land_use_reason"> - U bezit 1,309 vierkante meters land. -Dit perceel is 512 vierkante meters land. - </text> - <text name="purchase_action"> - Betaal Joe Resident L$4000 voor het land - </text> - <text name="currency_reason"> - U heeft L$2,100. - </text> - <text name="currency_action"> - Koop extra L$ - </text> - <line_editor name="currency_amt"> - 1000 - </line_editor> - <text name="currency_est"> - voor ong. US$ [AMOUNT2] - </text> - <text name="currency_balance"> - U heeft L$2,100. - </text> - <check_box label="Verwijder [AMOUNT] vierkante meters van uw groepsbijdrage." name="remove_contribution"/> - <button label="Aankopen" name="buy_btn"/> - <button label="Annuleren" name="cancel_btn"/> - <string name="can_resell"> - Mag worden doorverkocht. - </string> - <string name="can_not_resell"> - Mag niet worden doorverkocht. - </string> - <string name="can_change"> - Mag worden samengevoegd of opgedeeld. - </string> - <string name="can_not_change"> - Mag niet worden samengevoegd of opgedeeld. - </string> - <string name="cant_buy_for_group"> - U heeft geen permissie om land te kopen voor uw actieve groep. - </string> - <string name="no_land_selected"> - Geen land geselecteerd - </string> - <string name="multiple_parcels_selected"> - Meerdere verschillende percelen geselecteerd. Probeer een kleiner gebied te selecteren. - </string> - <string name="no_permission"> - U heeft geen permissie om land te kopen voor uw actieve groep. - </string> - <string name="parcel_not_for_sale"> - Het geselecteerde perceel is niet te koop. - </string> - <string name="group_already_owns"> - De groep is al eigenaar van het perceel. - </string> - <string name="you_already_own"> - U bent al eigenaar van het perceel - </string> - <string name="set_to_sell_to_other"> - Het geselecteerde perceel staat te koop voor een andere partij. - </string> - <string name="no_public_land"> - Het geselecteerde gebied heeft geen publiek land. - </string> - <string name="not_owned_by_you"> - Land dat het eigendom is van een andere gebruiker is geselecteerd. Probeer een kleiner gebied te selecteren. - </string> - <string name="processing"> - Uw aankoop wordt verwerkt... - -(Dit kan een minuut of twee duren.) - </string> - <string name="fetching_error"> - Er is een fout opgetreden tijdens het ophalen van informatie over het kopen van het land. - </string> - <string name="buying_will"> - Het kopen van dit land zal: - </string> - <string name="buying_for_group"> - Land voor groep kopen: - </string> - <string name="cannot_buy_now"> - Kan nu niet kopen: - </string> - <string name="not_for_sale"> - Niet te koop: - </string> - <string name="none_needed"> - geen benodigd - </string> - <string name="must_upgrade"> - Uw account moet geüpgrade worden om land te bezitten. - </string> - <string name="cant_own_land"> - Uw account kan land bezitten. - </string> - <string name="land_holdings"> - U bezit [BUYER] vierkante meters land. - </string> - <string name="pay_to_for_land"> - Betaal L$ [AMOUNT] aan [SELLER] voor dit land - </string> - <string name="buy_for_US"> - Koop L$ [AMOUNT] voor ong. US$ [AMOUNT2] , - </string> - <string name="parcel_meters"> - Dit perceel is [AMOUNT] vierkante meters. - </string> - <string name="premium_land"> - Dit land is premium, en zal worden belast als [AMOUNT] vierkante meters. - </string> - <string name="discounted_land"> - Dit land is gedisconteerd, en zal worden belast als [AMOUNT] vierkante meters. - </string> - <string name="meters_supports_object"> - [AMOUNT] vierkante meter -ondersteunt [AMOUNT2] objecten - </string> - <string name="sold_with_objects"> - verkocht met objecten - </string> - <string name="insufficient_land_credits"> - De groep [GROUP] heeft voldoende bijdrage van landgebruikcredits nodig om dit perceel te dekken voordat de aankoop kan worden afgerond. - </string> - <string name="have_enough_lindens"> - U heeft L$ [AMOUNT], wat genoeg is om dit land te kopen. - </string> - <string name="not_enough_lindens"> - U heeft slechts L$ [AMOUNT], en hebt L$ [AMOUNT2] meer nodig. - </string> - <string name="balance_left"> - Na de aankoop zult u nog L$ [AMOUNT] over hebben. - </string> - <string name="balance_needed"> - U dient minstens L$ [AMOUNT] te kopen om dit land te kunnen veroorloven. - </string> - <string name="no_parcel_selected"> - (geen perceel geselecteerd) - </string> - <string name="buy_currency"> - Koop L$ [AMOUNT] voor ong. US$ [USD] - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="buy land" title="Koop land"> + <text name="region_name_label"> + Regio: + </text> + <text name="region_name_text"> + (onbekend) + </text> + <text name="region_type_label"> + Type: + </text> + <text name="region_type_text"> + (onbekend) + </text> + <text name="estate_name_label"> + Estate: + </text> + <text name="estate_name_text"> + (onbekend) + </text> + <text name="estate_owner_label"> + Estate eigenaar: + </text> + <text name="estate_owner_text"> + (onbekend) + </text> + <text name="resellable_changeable_label"> + Aangekocht land in deze regio: + </text> + <text name="resellable_clause"> + Mag niet worden doorverkocht + </text> + <text name="changeable_clause"> + Mag niet worden samengevoegd/opgesplitst + </text> + <text name="covenant_text"> + U moet instemmen met het estate convenant: + </text> + <text left="470" name="covenant_timestamp_text"/> + <text_editor name="covenant_editor"> + Laden... + </text_editor> + <check_box label="Ik ga akkoord met het hierboven beschreven convenant." name="agree_covenant"/> + <text name="info_parcel_label"> + Perceel: + </text> + <text name="info_parcel"> + Scotopteryx 138,204 + </text> + <text name="info_size_label"> + Grootte: + </text> + <text name="info_size"> + 1024 m² + </text> + <text name="info_price_label"> + Prijs: + </text> + <text name="info_price"> + L$ 1500 +(L$ 1.1/m²) +verkocht met objecten + </text> + <text name="info_action"> + Het kopen van dit land zal: + </text> + <text name="error_message"> + Er is iets niet in orde. + </text> + <button label="Ga naar website" name="error_web"/> + <text name="account_action"> + U upgraden naar een premium lidmaatschap + </text> + <text name="account_reason"> + Alleen premiumleden kunnen land bezitten. + </text> + <combo_box name="account_level"> + <combo_box.item name="US$9.95/month,billedmonthly" label="US$9.95/maand, gefactureerd per maand"/> + <combo_box.item name="US$7.50/month,billedquarterly" label="US$7.50/maand, gefactureerd per kwartaal"/> + <combo_box.item name="US$6.00/month,billedannually" label="US$6.00/maand, gefactureerd per jaar"/> + </combo_box> + <text name="land_use_action"> + Verhoog uw maandelijkse landgebruikskosten tot US$ 40/maand + </text> + <text name="land_use_reason"> + U bezit 1309 m² land. +Dit perceel omvat 512 m² land. + </text> + <text name="purchase_action"> + Betaal Joe Resident L$4000 voor het land + </text> + <text name="currency_reason"> + U heeft L$2,100. + </text> + <text name="currency_action"> + Koop extra L$ + </text> + <line_editor name="currency_amt"> + 1000 + </line_editor> + <text name="currency_est"> + voor ong. US$ [AMOUNT2] + </text> + <text name="currency_balance"> + U heeft L$2,100. + </text> + <check_box label="Verwijder [AMOUNT] vierkante meters van uw groepsbijdrage." name="remove_contribution"/> + <button label="Aankopen" name="buy_btn"/> + <button label="Annuleren" name="cancel_btn"/> + <string name="can_resell"> + Mag worden doorverkocht. + </string> + <string name="can_not_resell"> + Mag niet worden doorverkocht. + </string> + <string name="can_change"> + Mag worden samengevoegd of opgedeeld. + </string> + <string name="can_not_change"> + Mag niet worden samengevoegd of opgedeeld. + </string> + <string name="cant_buy_for_group"> + U heeft geen permissie om land te kopen voor uw actieve groep. + </string> + <string name="no_land_selected"> + Geen land geselecteerd + </string> + <string name="multiple_parcels_selected"> + Meerdere verschillende percelen geselecteerd. Probeer een kleiner gebied te selecteren. + </string> + <string name="no_permission"> + U heeft geen permissie om land te kopen voor uw actieve groep. + </string> + <string name="parcel_not_for_sale"> + Het geselecteerde perceel is niet te koop. + </string> + <string name="group_already_owns"> + De groep is al eigenaar van het perceel. + </string> + <string name="you_already_own"> + U bent al eigenaar van het perceel + </string> + <string name="set_to_sell_to_other"> + Het geselecteerde perceel staat te koop voor een andere partij. + </string> + <string name="no_public_land"> + Het geselecteerde gebied heeft geen publiek land. + </string> + <string name="not_owned_by_you"> + Land dat het eigendom is van een andere gebruiker is geselecteerd. Probeer een kleiner gebied te selecteren. + </string> + <string name="processing"> + Uw aankoop wordt verwerkt... + +(Dit kan een minuut of twee duren.) + </string> + <string name="fetching_error"> + Er is een fout opgetreden tijdens het ophalen van informatie over het kopen van het land. + </string> + <string name="buying_will"> + Het kopen van dit land zal: + </string> + <string name="buying_for_group"> + Land voor groep kopen zal: + </string> + <string name="cannot_buy_now"> + Kan nu niet kopen: + </string> + <string name="not_for_sale"> + Niet te koop: + </string> + <string name="none_needed"> + geen benodigd + </string> + <string name="must_upgrade"> + Uw account moet geüpgrade worden om land te bezitten. + </string> + <string name="cant_own_land"> + Uw account kan land bezitten. + </string> + <string name="land_holdings"> + U bezit [BUYER] vierkante meters land. + </string> + <string name="pay_to_for_land"> + Betaal L$ [AMOUNT] aan [SELLER] voor dit land + </string> + <string name="buy_for_US"> + Koop L$ [AMOUNT] voor ong. US$ [AMOUNT2], + </string> + <string name="parcel_meters"> + Dit perceel is [AMOUNT] vierkante meters. + </string> + <string name="premium_land"> + Dit land is premium, en zal worden belast als [AMOUNT] vierkante meters. + </string> + <string name="discounted_land"> + Dit land is gedisconteerd, en zal worden belast als [AMOUNT] vierkante meters. + </string> + <string name="meters_supports_object"> + [AMOUNT] vierkante meter +ondersteunt [AMOUNT2] objecten + </string> + <string name="sold_with_objects"> + verkocht met objecten + </string> + <string name="sold_without_objects"> + objecten niet inbegrepen + </string> + <string name="info_price_string"> + L$ [PRICE] +(L$ [PRICE_PER_SQM]/m²) +[SOLD_WITH_OBJECTS] + </string> + <string name="insufficient_land_credits"> + De groep [GROUP] heeft voldoende bijdrage van landgebruikcredits nodig om dit perceel te dekken voordat de aankoop kan worden afgerond. + </string> + <string name="have_enough_lindens"> + U heeft L$ [AMOUNT], wat genoeg is om dit land te kopen. + </string> + <string name="not_enough_lindens"> + U heeft slechts L$ [AMOUNT], en hebt L$ [AMOUNT2] meer nodig. + </string> + <string name="balance_left"> + Na de aankoop zult u nog L$ [AMOUNT] over hebben. + </string> + <string name="balance_needed"> + U dient minstens L$ [AMOUNT] te kopen om dit land te kunnen veroorloven. + </string> + <string name="no_parcel_selected"> + (geen perceel geselecteerd) + </string> + <string name="buy_currency"> + Koop L$ [AMOUNT] voor ong. US$ [USD] + </string> +</floater> diff --git a/indra/newview/skins/default/xui/nl/floater_buy_object.xml b/indra/newview/skins/default/xui/nl/floater_buy_object.xml index 50f693eeee7a7d2773df2efb1dc299d4c1be852c..c83f2008c6131a2649c8ab6a3029bb3a3ade39a5 100644 --- a/indra/newview/skins/default/xui/nl/floater_buy_object.xml +++ b/indra/newview/skins/default/xui/nl/floater_buy_object.xml @@ -1,26 +1,26 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="contents" title="Koop een kopie van object"> - <text name="contents_text"> - en zijn inhoud: - </text> - <text name="buy_text"> - Koop voor L$[AMOUNT] van [NAME]? - </text> - <button label="Annuleren" label_selected="Annuleren" name="cancel_btn"/> - <button label="Koop" label_selected="Koop" name="buy_btn"/> - <string name="title_buy_text"> - Koop - </string> - <string name="title_buy_copy_text"> - Koop een kopie van - </string> - <string name="no_copy_text"> - (niet kopiëren) - </string> - <string name="no_modify_text"> - (niet wijzigen) - </string> - <string name="no_transfer_text"> - (niet overdragen) - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="contents" title="Koop een kopie van object"> + <text name="contents_text"> + en zijn inhoud: + </text> + <text name="buy_text"> + Koop voor L$[AMOUNT] van [NAME]? + </text> + <button label="Annuleren" label_selected="Annuleren" name="cancel_btn"/> + <button label="Koop" label_selected="Koop" name="buy_btn"/> + <string name="title_buy_text"> + Koop + </string> + <string name="title_buy_copy_text"> + Koop een kopie van + </string> + <string name="no_copy_text"> + (niet kopiëren) + </string> + <string name="no_modify_text"> + (niet wijzigen) + </string> + <string name="no_transfer_text"> + (niet overdragen) + </string> +</floater> diff --git a/indra/newview/skins/default/xui/nl/floater_camera.xml b/indra/newview/skins/default/xui/nl/floater_camera.xml index 37a0393d7e522b43c37344e09d087e8736205cdd..a6b843a0a2e47215a1b3cdf0b09341e12ec56bf4 100644 --- a/indra/newview/skins/default/xui/nl/floater_camera.xml +++ b/indra/newview/skins/default/xui/nl/floater_camera.xml @@ -1,12 +1,12 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="move floater" title=""> - <string name="rotate_tooltip"> - Roteer camera rond focus - </string> - <string name="zoom_tooltip"> - Zoom camera naar focus - </string> - <string name="move_tooltip"> - Beweeg camera omhoog en omlaag, links en rechts - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="move floater" title=""> + <string name="rotate_tooltip"> + Roteer camera rond focus + </string> + <string name="zoom_tooltip"> + Zoom camera naar focus + </string> + <string name="move_tooltip"> + Beweeg camera omhoog en omlaag, links en rechts + </string> +</floater> diff --git a/indra/newview/skins/default/xui/nl/floater_choose_group.xml b/indra/newview/skins/default/xui/nl/floater_choose_group.xml index 0f40ca6c7e143951b1ff00fcb384b42a4fe24485..3f6ce44cfdcace49b437ad77d7eccea4d27df990 100644 --- a/indra/newview/skins/default/xui/nl/floater_choose_group.xml +++ b/indra/newview/skins/default/xui/nl/floater_choose_group.xml @@ -1,8 +1,8 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="groups" title="Groepen"> - <text name="groupdesc"> - Kies een groep: - </text> - <button label="OK" label_selected="OK" name="OK"/> - <button label="Annuleren" label_selected="Annuleren" name="Cancel"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="groups" title="Groepen"> + <text name="groupdesc"> + Kies een groep: + </text> + <button label="OK" label_selected="OK" name="OK"/> + <button label="Annuleren" label_selected="Annuleren" name="Cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/nl/floater_color_picker.xml b/indra/newview/skins/default/xui/nl/floater_color_picker.xml index bf5146559fdb445a0fc2255a37e3442bcaccdb6b..24b242e15c4218382d26478dbdaf39eb0f8103d7 100644 --- a/indra/newview/skins/default/xui/nl/floater_color_picker.xml +++ b/indra/newview/skins/default/xui/nl/floater_color_picker.xml @@ -1,30 +1,30 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="ColorPicker" title="Kleurkiezer"> - <text name="r_val_text"> - Rood: - </text> - <text name="g_val_text"> - Groen: - </text> - <text name="b_val_text"> - Blauw: - </text> - <text name="h_val_text"> - Hue: - </text> - <text name="s_val_text"> - Sat: - </text> - <text name="l_val_text"> - Lum: - </text> - <check_box label="Meteen toepassen" name="apply_immediate"/> - <button label="Annuleren" label_selected="Annuleren" name="cancel_btn"/> - <button label="Selecteer" label_selected="Selecteer" name="select_btn"/> - <text name="Current color:"> - Huidige kleur: - </text> - <text name="(Drag below to save.)"> - (Sleep naar beneden om op te slaan.) - </text> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="ColorPicker" title="Kleurkiezer"> + <text name="r_val_text"> + Rood: + </text> + <text name="g_val_text"> + Groen: + </text> + <text name="b_val_text"> + Blauw: + </text> + <text name="h_val_text"> + Hue: + </text> + <text name="s_val_text"> + Sat: + </text> + <text name="l_val_text"> + Lum: + </text> + <check_box label="Meteen toepassen" name="apply_immediate"/> + <button label="Annuleren" label_selected="Annuleren" name="cancel_btn"/> + <button label="Selecteer" label_selected="Selecteer" name="select_btn"/> + <text name="Current color:"> + Huidige kleur: + </text> + <text name="(Drag below to save.)"> + (Sleep naar beneden om op te slaan.) + </text> +</floater> diff --git a/indra/newview/skins/default/xui/nl/floater_critical.xml b/indra/newview/skins/default/xui/nl/floater_critical.xml index 53795a38d41f4cd12ab34ae0b97251bbf7daaf5d..90790fe10824fa3f917566ce2686d8b0f21d176a 100644 --- a/indra/newview/skins/default/xui/nl/floater_critical.xml +++ b/indra/newview/skins/default/xui/nl/floater_critical.xml @@ -1,11 +1,11 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="modal container" title=""> - <button label="Doorgaan" label_selected="Doorgaan" name="Continue"/> - <button label="Annuleren" label_selected="Annuleren" name="Cancel"/> - <text name="tos_heading"> - Leest u alstublieft het volgende bericht zorgvuldig door. - </text> - <text_editor name="tos_text"> - TOS_TEXT - </text_editor> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="modal container" title=""> + <button label="Doorgaan" label_selected="Doorgaan" name="Continue"/> + <button label="Annuleren" label_selected="Annuleren" name="Cancel"/> + <text name="tos_heading"> + Leest u alstublieft het volgende bericht zorgvuldig door. + </text> + <text_editor name="tos_text"> + TOS_TEXT + </text_editor> +</floater> diff --git a/indra/newview/skins/default/xui/nl/floater_customize.xml b/indra/newview/skins/default/xui/nl/floater_customize.xml index ba1657eaf70dd92f4dd09bb2dbae7045c5cfee45..a94f4f2348d663dce834c03c95fcc3929407ee85 100644 --- a/indra/newview/skins/default/xui/nl/floater_customize.xml +++ b/indra/newview/skins/default/xui/nl/floater_customize.xml @@ -1,427 +1,469 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater customize" title="Uiterlijk"> - <tab_container name="customize tab container"> - <panel label="Lichaamsdelen" name="body_parts_placeholder"/> - <panel label="Postuur" name="Shape"> - <button label="Herstel" label_selected="Herstel" name="Revert"/> - <button label="Lichaam" label_selected="Lichaam" name="Body"/> - <button label="Hoofd" label_selected="Hoofd" name="Head"/> - <button label="Ogen" label_selected="Ogen" name="Eyes"/> - <button label="Oren" label_selected="Oren" name="Ears"/> - <button label="Neus" label_selected="Neus" name="Nose"/> - <button label="Mond" label_selected="Mond" name="Mouth"/> - <button label="Kin" label_selected="Kin" name="Chin"/> - <button label="Torso" label_selected="Torso" name="Torso"/> - <button label="Benen" label_selected="Benen" name="Legs"/> - <radio_group name="sex radio"> - <radio_item name="radio"> - Vrouw - </radio_item> - <radio_item name="radio2"> - Man - </radio_item> - </radio_group> - <button label="Willekeurig" label_selected="Willekeurig" name="Randomize"/> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: Kan niet wijzigen - </text> - <text name="title_loading"> - [DESC]: laden... - </text> - <text name="title_not_worn"> - [DESC]: niet gedragen - </text> - <text name="path"> - Gelegen in [PATH] - </text> - <text name="not worn instructions"> - Draag een nieuwe postuur door hem vanuit uw inventaris naar uw avatar te slepen. Ook kunt u zelf van begin af aan een nieuwe creëren en dragen. - </text> - <text name="no modify instructions"> - U heeft geen permissie om dit draagbare item te wijzigen. - </text> - <button label="Nieuw postuur maken" label_selected="Nieuw postuur maken" name="Create New"/> - <button label="Uitdoen" label_selected="Uitdoen" name="Take Off"/> - <button label="Opslaan" label_selected="Opslaan" name="Save"/> - <button label="Opslaan als" label_selected="Opslaan als" name="Save As"/> - </panel> - <panel label="Huid" name="Skin"> - <button label="Huidskleur" label_selected="Huidskleur" name="Skin Color"/> - <button label="Gezichtsdetail" label_selected="Gezichtsdetail" name="Face Detail"/> - <button label="Make-up" label_selected="Make-up" name="Makeup"/> - <button label="Lichaam detail" label_selected="Lichaam detail" name="Body Detail"/> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: Kan niet wijzigen - </text> - <text name="title_loading"> - [DESC]: laden... - </text> - <text name="title_not_worn"> - [DESC]: niet gedragen - </text> - <text name="path"> - Gelegen in [PATH] - </text> - <text name="not worn instructions"> - Draag een nieuwe huid door haar vanuit uw inventaris naar uw avatar te slepen. Ook kunt u zelf van begin af aan een nieuwe creëren en dragen. - </text> - <text name="no modify instructions"> - U heeft geen permissie om dit draagbare item te wijzigen. - </text> - <texture_picker label="Hoofd tatoeages" name="Head Tattoos" tool_tip="Klik om een afbeelding te kiezen"/> - <texture_picker label="Bovenste tatoeage" name="Upper Tattoos" tool_tip="Klik om een afbeelding te kiezen"/> - <texture_picker label="Onderste tatoeages" name="Lower Tattoos" tool_tip="Klik om een afbeelding te kiezen"/> - <button label="Willekeurig" label_selected="Willekeurig" name="Randomize"/> - <button label="Nieuwe huid maken" label_selected="Nieuwe huid maken" name="Create New"/> - <button label="Uitdoen" label_selected="Uitdoen" name="Take Off"/> - <button label="Opslaan" label_selected="Opslaan" name="Save"/> - <button label="Opslaan als" label_selected="Opslaan als" name="Save As"/> - <button label="Herstel" label_selected="Herstel" name="Revert"/> - </panel> - <panel label="Haar" name="Hair"> - <button label="Kleur" label_selected="Kleur" name="Color"/> - <button label="Stijl" label_selected="Stijl" name="Style"/> - <button label="Wenkbrauwen" label_selected="Wenkbrauwen" name="Eyebrows"/> - <button label="Aangezicht" label_selected="Aangezicht" name="Facial"/> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: Kan niet wijzigen - </text> - <text name="title_loading"> - [DESC]: laden... - </text> - <text name="title_not_worn"> - [DESC]: niet gedragen - </text> - <text name="path"> - Gelegen in [PATH] - </text> - <text name="not worn instructions"> - Draag nieuw haar door het vanuit uw inventaris naar uw avatar te slepen. Ook kunt u zelf van begin af aan nieuw creëren en dragen. - </text> - <text name="no modify instructions"> - U heeft geen permissie om dit draagbare item te wijzigen. - </text> - <texture_picker label="Textuur" name="Texture" tool_tip="Klik om een afbeelding te kiezen"/> - <button label="Willekeurig" label_selected="Willekeurig" name="Randomize"/> - <button label="Nieuw haar maken" label_selected="Nieuw haar maken" name="Create New"/> - <button label="Uitdoen" label_selected="Uitdoen" name="Take Off"/> - <button label="Opslaan" label_selected="Opslaan" name="Save"/> - <button label="Opslaan als" label_selected="Opslaan als" name="Save As"/> - <button label="Herstel" label_selected="Herstel" name="Revert"/> - </panel> - <panel label="Ogen" name="Eyes"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: Kan niet wijzigen - </text> - <text name="title_loading"> - [DESC]: laden... - </text> - <text name="title_not_worn"> - [DESC]: niet gedragen - </text> - <text name="path"> - Gelegen in [PATH] - </text> - <text name="not worn instructions"> - Draag nieuwe ogen door ze vanuit uw inventaris naar uw avatar te slepen. Ook kunt u zelf van begin af aan nieuwe creëren en dragen. - </text> - <text name="no modify instructions"> - U heeft geen permissie om dit draagbare item te wijzigen. - </text> - <texture_picker label="Iris" name="Iris" tool_tip="Klik om een afbeelding te kiezen"/> - <button label="Willekeurig" label_selected="Willekeurig" name="Randomize"/> - <button label="Nieuwe ogen maken" label_selected="Nieuwe ogen maken" name="Create New"/> - <button label="Uitdoen" label_selected="Uitdoen" name="Take Off"/> - <button label="Opslaan" label_selected="Opslaan" name="Save"/> - <button label="Opslaan als" label_selected="Opslaan als" name="Save As"/> - <button label="Herstel" label_selected="Herstel" name="Revert"/> - </panel> - <panel label="Kleding" name="clothes_placeholder"/> - <panel label="Hemd" name="Shirt"> - <texture_picker label="Stof" name="Fabric" tool_tip="Klik om een afbeelding te kiezen"/> - <color_swatch label="Kleur/tint" name="Color/Tint" tool_tip="Klik om de kleurkiezer te openen"/> - <button label="Nieuw hemd maken" label_selected="Nieuw hemd maken" name="Create New"/> - <button label="Uitdoen" label_selected="Uitdoen" name="Take Off"/> - <button label="Opslaan" label_selected="Opslaan" name="Save"/> - <button label="Opslaan als" label_selected="Opslaan als" name="Save As"/> - <button label="Herstel" label_selected="Herstel" name="Revert"/> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: Kan niet wijzigen - </text> - <text name="title_loading"> - [DESC]: laden... - </text> - <text name="title_not_worn"> - [DESC]: niet gedragen - </text> - <text name="path"> - Gelegen in [PATH] - </text> - <text name="not worn instructions"> - Draag een nieuw hemd door hem vanuit uw inventaris naar uw avatar te slepen. Ook kunt u zelf van begin af aan een nieuwe creëren en dragen. - </text> - <text name="no modify instructions"> - U heeft geen permissie om dit draagbare item te wijzigen. - </text> - </panel> - <panel label="Broek" name="Pants"> - <texture_picker label="Stof" name="Fabric" tool_tip="Klik om een afbeelding te kiezen"/> - <color_swatch label="Kleur/tint" name="Color/Tint" tool_tip="Klik om de kleurkiezer te openen"/> - <button label="Nieuwe broek maken" label_selected="Nieuwe broek maken" name="Create New"/> - <button label="Uitdoen" label_selected="Uitdoen" name="Take Off"/> - <button label="Opslaan" label_selected="Opslaan" name="Save"/> - <button label="Opslaan als" label_selected="Opslaan als" name="Save As"/> - <button label="Herstel" label_selected="Herstel" name="Revert"/> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: Kan niet wijzigen - </text> - <text name="title_loading"> - [DESC]: laden... - </text> - <text name="title_not_worn"> - [DESC]: niet gedragen - </text> - <text name="path"> - Gelegen in [PATH] - </text> - <text name="not worn instructions"> - Draag een nieuwe broek door hem vanuit uw inventaris naar uw avatar te slepen. Ook kunt u zelf van begin af aan een nieuwe creëren en dragen. - </text> - <text name="no modify instructions"> - U heeft geen permissie om dit draagbare item te wijzigen. - </text> - </panel> - <panel label="Schoenen" name="Shoes"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: Kan niet wijzigen - </text> - <text name="title_loading"> - [DESC]: laden... - </text> - <text name="title_not_worn"> - [DESC]: niet gedragen - </text> - <text name="path"> - Gelegen in [PATH] - </text> - <text name="not worn instructions"> - Draag nieuwe schoenen door ze vanuit uw inventaris naar uw avatar te slepen. Ook kunt u zelf van begin af aan nieuwe creëren en dragen. - </text> - <text name="no modify instructions"> - U heeft geen permissie om dit draagbare item te wijzigen. - </text> - <texture_picker label="Stof" name="Fabric" tool_tip="Klik om een afbeelding te kiezen"/> - <color_swatch label="Kleur/tint" name="Color/Tint" tool_tip="Klik om de kleurkiezer te openen"/> - <button label="Nieuwe schoenen maken" label_selected="Nieuwe schoenen maken" name="Create New"/> - <button label="Uitdoen" label_selected="Uitdoen" name="Take Off"/> - <button label="Opslaan" label_selected="Opslaan" name="Save"/> - <button label="Opslaan als" label_selected="Opslaan als" name="Save As"/> - <button label="Herstel" label_selected="Herstel" name="Revert"/> - </panel> - <panel label="Sokken" name="Socks"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: Kan niet wijzigen - </text> - <text name="title_loading"> - [DESC]: laden... - </text> - <text name="title_not_worn"> - [DESC]: niet gedragen - </text> - <text name="path"> - Gelegen in [PATH] - </text> - <text name="not worn instructions"> - Draag nieuwe sokken door ze vanuit uw inventaris naar uw avatar te slepen. Ook kunt u zelf van begin af aan nieuwe creëren en dragen. - </text> - <text name="no modify instructions"> - U heeft geen permissie om dit draagbare item te wijzigen. - </text> - <texture_picker label="Stof" name="Fabric" tool_tip="Klik om een afbeelding te kiezen"/> - <color_swatch label="Kleur/tint" name="Color/Tint" tool_tip="Klik om de kleurkiezer te openen"/> - <button label="Nieuwe sokken maken" label_selected="Nieuwe sokken maken" name="Create New"/> - <button label="Uitdoen" label_selected="Uitdoen" name="Take Off"/> - <button label="Opslaan" label_selected="Opslaan" name="Save"/> - <button label="Opslaan als" label_selected="Opslaan als" name="Save As"/> - <button label="Herstel" label_selected="Herstel" name="Revert"/> - </panel> - <panel label="Jas" name="Jacket"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: Kan niet wijzigen - </text> - <text name="title_loading"> - [DESC]: laden... - </text> - <text name="title_not_worn"> - [DESC]: niet gedragen - </text> - <text name="path"> - Gelegen in [PATH] - </text> - <text name="not worn instructions"> - Draag een nieuwe jas door hem vanuit uw inventaris naar uw avatar te slepen. Ook kunt u zelf van begin af aan een nieuwe creëren en dragen. - </text> - <text name="no modify instructions"> - U heeft geen permissie om dit draagbare item te wijzigen. - </text> - <texture_picker label="Bovenste stof" name="Upper Fabric" tool_tip="Klik om een afbeelding te kiezen"/> - <texture_picker label="Onderste stof" name="Lower Fabric" tool_tip="Klik om een afbeelding te kiezen"/> - <color_swatch label="Kleur/tint" name="Color/Tint" tool_tip="Klik om de kleurkiezer te openen"/> - <button label="Nieuwe jas maken" label_selected="Nieuwe jas maken" name="Create New"/> - <button label="Uitdoen" label_selected="Uitdoen" name="Take Off"/> - <button label="Opslaan" label_selected="Opslaan" name="Save"/> - <button label="Opslaan als" label_selected="Opslaan als" name="Save As"/> - <button label="Herstel" label_selected="Herstel" name="Revert"/> - </panel> - <panel label="Handschoenen" name="Gloves"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: Kan niet wijzigen - </text> - <text name="title_loading"> - [DESC]: laden... - </text> - <text name="title_not_worn"> - [DESC]: niet gedragen - </text> - <text name="path"> - Gelegen in [PATH] - </text> - <text name="not worn instructions"> - Draag nieuwe handschoenen door ze vanuit uw inventaris naar uw avatar te slepen. Ook kunt u zelf van begin af aan nieuwe creëren en dragen. - </text> - <text name="no modify instructions"> - U heeft geen permissie om dit draagbare item te wijzigen. - </text> - <texture_picker label="Stof" name="Fabric" tool_tip="Klik om een afbeelding te kiezen"/> - <color_swatch label="Kleur/tint" name="Color/Tint" tool_tip="Klik om de kleurkiezer te openen"/> - <button label="Nieuwe handschoenen maken" label_selected="Nieuwe handschoenen maken" name="Create New"/> - <button label="Uitdoen" label_selected="Uitdoen" name="Take Off"/> - <button label="Opslaan" label_selected="Opslaan" name="Save"/> - <button label="Opslaan als" label_selected="Opslaan als" name="Save As"/> - <button label="Herstel" label_selected="Herstel" name="Revert"/> - </panel> - <panel label="Onderhemd" name="Undershirt"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: Kan niet wijzigen - </text> - <text name="title_loading"> - [DESC]: laden... - </text> - <text name="title_not_worn"> - [DESC]: niet gedragen - </text> - <text name="path"> - Gelegen in [PATH] - </text> - <text name="not worn instructions"> - Draag een nieuw onderhemd door hem vanuit uw inventaris naar uw avatar te slepen. Ook kunt u zelf van begin af aan een nieuwe creëren en dragen. - </text> - <text name="no modify instructions"> - U heeft geen permissie om dit draagbare item te wijzigen. - </text> - <texture_picker label="Stof" name="Fabric" tool_tip="Klik om een afbeelding te kiezen"/> - <color_swatch label="Kleur/tint" name="Color/Tint" tool_tip="Klik om de kleurkiezer te openen"/> - <button label="Nieuw onderhemd maken" label_selected="Nieuw onderhemd maken" name="Create New"/> - <button label="Uitdoen" label_selected="Uitdoen" name="Take Off"/> - <button label="Opslaan" label_selected="Opslaan" name="Save"/> - <button label="Opslaan als" label_selected="Opslaan als" name="Save As"/> - <button label="Herstel" label_selected="Herstel" name="Revert"/> - </panel> - <panel label="Onderbroek" name="Underpants"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: Kan niet wijzigen - </text> - <text name="title_loading"> - [DESC]: laden... - </text> - <text name="title_not_worn"> - [DESC]: niet gedragen - </text> - <text name="path"> - Gelegen in [PATH] - </text> - <text name="not worn instructions"> - Draag een nieuwe onderbroek door hem vanuit uw inventaris naar uw avatar te slepen. Ook kunt u zelf van begin af aan een nieuwe creëren en dragen. - </text> - <text name="no modify instructions"> - U heeft geen permissie om dit draagbare item te wijzigen. - </text> - <texture_picker label="Stof" name="Fabric" tool_tip="Klik om een afbeelding te kiezen"/> - <color_swatch label="Kleur/tint" name="Color/Tint" tool_tip="Klik om de kleurkiezer te openen"/> - <button label="Nieuwe onderbroek maken" label_selected="Nieuwe onderbroek maken" name="Create New"/> - <button label="Uitdoen" label_selected="Uitdoen" name="Take Off"/> - <button label="Opslaan" label_selected="Opslaan" name="Save"/> - <button label="Opslaan als" label_selected="Opslaan als" name="Save As"/> - <button label="Herstel" label_selected="Herstel" name="Revert"/> - </panel> - <panel label="Rok" name="Skirt"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: Kan niet wijzigen - </text> - <text name="title_loading"> - [DESC]: laden... - </text> - <text name="title_not_worn"> - [DESC]: niet gedragen - </text> - <text name="path"> - Gelegen in [PATH] - </text> - <text name="not worn instructions"> - Draag een nieuwe rok door hem vanuit uw inventaris naar uw avatar te slepen. Ook kunt u zelf van begin af aan een nieuwe creëren en dragen. - </text> - <text name="no modify instructions"> - U heeft geen permissie om dit draagbare item te wijzigen. - </text> - <texture_picker label="Stof" name="Fabric" tool_tip="Klik om een afbeelding te kiezen"/> - <color_swatch label="Kleur/tint" name="Color/Tint" tool_tip="Klik om de kleurkiezer te openen"/> - <button label="Nieuwe rok maken" label_selected="Nieuwe rok maken" name="Create New"/> - <button label="Uitdoen" label_selected="Uitdoen" name="Take Off"/> - <button label="Opslaan" label_selected="Opslaan" name="Save"/> - <button label="Opslaan als" label_selected="Opslaan als" name="Save As"/> - <button label="Herstel" label_selected="Herstel" name="Revert"/> - </panel> - </tab_container> - <button label="Sluiten" label_selected="Sluiten" name="Close"/> - <button label="Alles opslaan" label_selected="Alles opslaan" name="Save All"/> - <button label="Maak kleding" label_selected="Maak kleding" name="Make Outfit"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater customize" title="Uiterlijk" width="551"> + <tab_container name="customize tab container" tab_min_width="120" width="549"> + <panel label="Lichaamsdelen" name="body_parts_placeholder"/> + <panel label="Postuur" name="Shape" left="124" width="389"> + <button label="Herstel" label_selected="Herstel" name="Revert"/> + <button label="Lichaam" label_selected="Lichaam" name="Body"/> + <button label="Hoofd" label_selected="Hoofd" name="Head"/> + <button label="Ogen" label_selected="Ogen" name="Eyes"/> + <button label="Oren" label_selected="Oren" name="Ears"/> + <button label="Neus" label_selected="Neus" name="Nose"/> + <button label="Mond" label_selected="Mond" name="Mouth"/> + <button label="Kin" label_selected="Kin" name="Chin"/> + <button label="Torso" label_selected="Torso" name="Torso"/> + <button label="Benen" label_selected="Benen" name="Legs"/> + <radio_group name="sex radio"> + <radio_item name="radio" label="Vrouw" /> + <radio_item name="radio2" label="Man" /> + </radio_group> + <text name="title"> + [DESC] + </text> + <text name="title_no_modify"> + [DESC]: Kan niet wijzigen + </text> + <text name="title_loading"> + [DESC]: laden... + </text> + <text name="title_not_worn"> + [DESC]: niet gedragen + </text> + <text name="path"> + Gelegen in [PATH] + </text> + <text name="not worn instructions"> + Draag een nieuwe postuur door hem vanuit uw inventaris naar uw avatar +te slepen. Ook kunt u zelf van begin af aan een nieuwe creëren en dragen. + </text> + <text name="no modify instructions"> + U heeft geen permissie om dit draagbare item te wijzigen. + </text> + <text name="Item Action Label"> + Postuur: + </text> + <button label="Nieuw postuur maken" label_selected="Nieuw postuur maken" name="Create New"/> + <button label="Opslaan" label_selected="Opslaan" name="Save"/> + <button label="Opslaan als..." label_selected="Opslaan als..." name="Save As"/> + </panel> + <panel label="Huid" name="Skin"> + <button width="104" label="Huidskleur" label_selected="Huidskleur" name="Skin Color"/> + <button width="104" label="Gezichtsdetail" label_selected="Gezichtsdetail" name="Face Detail"/> + <button width="104" label="Make-up" label_selected="Make-up" name="Makeup"/> + <button width="104" label="Lichaam detail" label_selected="Lichaam detail" name="Body Detail"/> + <text name="title"> + [DESC] + </text> + <text name="title_no_modify"> + [DESC]: Kan niet wijzigen + </text> + <text name="title_loading"> + [DESC]: laden... + </text> + <text name="title_not_worn"> + [DESC]: niet gedragen + </text> + <text name="path"> + Gelegen in [PATH] + </text> + <text name="not worn instructions"> + Draag een nieuwe huid door haar vanuit uw inventaris naar uw avatar te +slepen. Ook kunt u zelf van begin af aan een nieuwe creëren en dragen. + </text> + <text name="no modify instructions"> + U heeft geen permissie om dit draagbare item te wijzigen. + </text> + <text name="Item Action Label"> + Huid: + </text> + <texture_picker width="104" label="Hoofd tatoeages" name="Head Tattoos" tool_tip="Klik om een afbeelding te kiezen"/> + <texture_picker width="104" label="Bovenste tatoeage" name="Upper Tattoos" tool_tip="Klik om een afbeelding te kiezen"/> + <texture_picker width="104" label="Onderste tatoeages" name="Lower Tattoos" tool_tip="Klik om een afbeelding te kiezen"/> + <button label="Nieuwe huid maken" label_selected="Nieuwe huid maken" name="Create New"/> + <button label="Opslaan" label_selected="Opslaan" name="Save"/> + <button label="Opslaan als..." label_selected="Opslaan als..." name="Save As"/> + <button label="Herstel" label_selected="Herstel" name="Revert"/> + </panel> + <panel label="Haar" name="Hair"> + <button label="Kleur" label_selected="Kleur" name="Color"/> + <button label="Stijl" label_selected="Stijl" name="Style"/> + <button label="Wenkbrauwen" label_selected="Wenkbrauwen" name="Eyebrows"/> + <button label="Aangezicht" label_selected="Aangezicht" name="Facial"/> + <text name="title"> + [DESC] + </text> + <text name="title_no_modify"> + [DESC]: Kan niet wijzigen + </text> + <text name="title_loading"> + [DESC]: laden... + </text> + <text name="title_not_worn"> + [DESC]: niet gedragen + </text> + <text name="path"> + Gelegen in [PATH] + </text> + <text name="not worn instructions"> + Draag nieuw haar door het vanuit uw inventaris naar uw avatar te +slepen. Ook kunt u zelf van begin af aan nieuw creëren en dragen. + </text> + <text name="no modify instructions"> + U heeft geen permissie om dit draagbare item te wijzigen. + </text> + <text name="Item Action Label"> + Haar: + </text> + <texture_picker label="Textuur" name="Texture" tool_tip="Klik om een afbeelding te kiezen"/> + <button label="Nieuw haar maken" label_selected="Nieuw haar maken" name="Create New"/> + <button label="Opslaan" label_selected="Opslaan" name="Save"/> + <button label="Opslaan als..." label_selected="Opslaan als..." name="Save As"/> + <button label="Herstel" label_selected="Herstel" name="Revert"/> + </panel> + <panel label="Ogen" name="Eyes"> + <text name="title"> + [DESC] + </text> + <text name="title_no_modify"> + [DESC]: Kan niet wijzigen + </text> + <text name="title_loading"> + [DESC]: laden... + </text> + <text name="title_not_worn"> + [DESC]: niet gedragen + </text> + <text name="path"> + Gelegen in [PATH] + </text> + <text name="not worn instructions"> + Draag nieuwe ogen door ze vanuit uw inventaris naar uw avatar te +slepen. Ook kunt u zelf van begin af aan nieuwe creëren en dragen. + </text> + <text name="no modify instructions"> + U heeft geen permissie om dit draagbare item te wijzigen. + </text> + <text name="Item Action Label"> + Ogen: + </text> + <texture_picker label="Iris" name="Iris" tool_tip="Klik om een afbeelding te kiezen"/> + <button label="Nieuwe ogen maken" label_selected="Nieuwe ogen maken" name="Create New"/> + <button label="Opslaan" label_selected="Opslaan" name="Save"/> + <button label="Opslaan als..." label_selected="Opslaan als..." name="Save As"/> + <button label="Herstel" label_selected="Herstel" name="Revert"/> + </panel> + <panel label="Kleding" name="clothes_placeholder"/> + <panel label="Hemd" name="Shirt"> + <texture_picker label="Stof" name="Fabric" tool_tip="Klik om een afbeelding te kiezen"/> + <color_swatch label="Kleur/tint" name="Color/Tint" tool_tip="Klik om de kleurkiezer te openen"/> + <button label="Nieuw hemd maken" label_selected="Nieuw hemd maken" name="Create New"/> + <button label="Uitdoen" label_selected="Uitdoen" name="Take Off"/> + <button label="Opslaan" label_selected="Opslaan" name="Save"/> + <button label="Opslaan als..." label_selected="Opslaan als..." name="Save As"/> + <button label="Herstel" label_selected="Herstel" name="Revert"/> + <text name="title"> + [DESC] + </text> + <text name="title_no_modify"> + [DESC]: Kan niet wijzigen + </text> + <text name="title_loading"> + [DESC]: laden... + </text> + <text name="title_not_worn"> + [DESC]: niet gedragen + </text> + <text name="path"> + Gelegen in [PATH] + </text> + <text name="not worn instructions"> + Draag een nieuw hemd door hem vanuit uw inventaris naar uw avatar te +slepen. Ook kunt u zelf van begin af aan een nieuwe creëren en dragen. + </text> + <text name="no modify instructions"> + U heeft geen permissie om dit draagbare item te wijzigen. + </text> + <text name="Item Action Label"> + Hemd: + </text> + </panel> + <panel label="Broek" name="Pants"> + <texture_picker label="Stof" name="Fabric" tool_tip="Klik om een afbeelding te kiezen"/> + <color_swatch label="Kleur/tint" name="Color/Tint" tool_tip="Klik om de kleurkiezer te openen"/> + <button label="Nieuwe broek maken" label_selected="Nieuwe broek maken" name="Create New"/> + <button label="Uitdoen" label_selected="Uitdoen" name="Take Off"/> + <button label="Opslaan" label_selected="Opslaan" name="Save"/> + <button label="Opslaan als..." label_selected="Opslaan als..." name="Save As"/> + <button label="Herstel" label_selected="Herstel" name="Revert"/> + <text name="title"> + [DESC] + </text> + <text name="title_no_modify"> + [DESC]: Kan niet wijzigen + </text> + <text name="title_loading"> + [DESC]: laden... + </text> + <text name="title_not_worn"> + [DESC]: niet gedragen + </text> + <text name="path"> + Gelegen in [PATH] + </text> + <text name="not worn instructions"> + Draag een nieuwe broek door hem vanuit uw inventaris naar uw avatar te +slepen. Ook kunt u zelf van begin af aan een nieuwe creëren en dragen. + </text> + <text name="no modify instructions"> + U heeft geen permissie om dit draagbare item te wijzigen. + </text> + <text name="Item Action Label"> + Broek: + </text> + </panel> + <panel label="Schoenen" name="Shoes"> + <text name="title"> + [DESC] + </text> + <text name="title_no_modify"> + [DESC]: Kan niet wijzigen + </text> + <text name="title_loading"> + [DESC]: laden... + </text> + <text name="title_not_worn"> + [DESC]: niet gedragen + </text> + <text name="path"> + Gelegen in [PATH] + </text> + <text name="not worn instructions"> + Draag nieuwe schoenen door ze vanuit uw inventaris naar uw avatar te +slepen. Ook kunt u zelf van begin af aan nieuwe creëren en dragen. + </text> + <text name="no modify instructions"> + U heeft geen permissie om dit draagbare item te wijzigen. + </text> + <text name="Item Action Label"> + Schoenen: + </text> + <texture_picker label="Stof" name="Fabric" tool_tip="Klik om een afbeelding te kiezen"/> + <color_swatch label="Kleur/tint" name="Color/Tint" tool_tip="Klik om de kleurkiezer te openen"/> + <button label="Nieuwe schoenen maken" label_selected="Nieuwe schoenen maken" name="Create New"/> + <button label="Uitdoen" label_selected="Uitdoen" name="Take Off"/> + <button label="Opslaan" label_selected="Opslaan" name="Save"/> + <button label="Opslaan als..." label_selected="Opslaan als..." name="Save As"/> + <button label="Herstel" label_selected="Herstel" name="Revert"/> + </panel> + <panel label="Sokken" name="Socks"> + <text name="title"> + [DESC] + </text> + <text name="title_no_modify"> + [DESC]: Kan niet wijzigen + </text> + <text name="title_loading"> + [DESC]: laden... + </text> + <text name="title_not_worn"> + [DESC]: niet gedragen + </text> + <text name="path"> + Gelegen in [PATH] + </text> + <text name="not worn instructions"> + Draag nieuwe sokken door ze vanuit uw inventaris naar uw avatar te +slepen. Ook kunt u zelf van begin af aan nieuwe creëren en dragen. + </text> + <text name="no modify instructions"> + U heeft geen permissie om dit draagbare item te wijzigen. + </text> + <text name="Item Action Label"> + Sokken: + </text> + <texture_picker label="Stof" name="Fabric" tool_tip="Klik om een afbeelding te kiezen"/> + <color_swatch label="Kleur/tint" name="Color/Tint" tool_tip="Klik om de kleurkiezer te openen"/> + <button label="Nieuwe sokken maken" label_selected="Nieuwe sokken maken" name="Create New"/> + <button label="Uitdoen" label_selected="Uitdoen" name="Take Off"/> + <button label="Opslaan" label_selected="Opslaan" name="Save"/> + <button label="Opslaan als..." label_selected="Opslaan als..." name="Save As"/> + <button label="Herstel" label_selected="Herstel" name="Revert"/> + </panel> + <panel label="Jas" name="Jacket"> + <text name="title"> + [DESC] + </text> + <text name="title_no_modify"> + [DESC]: Kan niet wijzigen + </text> + <text name="title_loading"> + [DESC]: laden... + </text> + <text name="title_not_worn"> + [DESC]: niet gedragen + </text> + <text name="path"> + Gelegen in [PATH] + </text> + <text name="not worn instructions"> + Draag een nieuwe jas door hem vanuit uw inventaris naar uw avatar te +slepen. Ook kunt u zelf van begin af aan een nieuwe creëren en dragen. + </text> + <text name="no modify instructions"> + U heeft geen permissie om dit draagbare item te wijzigen. + </text> + <text name="Item Action Label"> + Jas: + </text> + <texture_picker width="78" label="Bovenste stof" name="Upper Fabric" tool_tip="Klik om een afbeelding te kiezen"/> + <texture_picker width="78" label="Onderste stof" name="Lower Fabric" tool_tip="Klik om een afbeelding te kiezen"/> + <color_swatch width="78" label="Kleur/tint" name="Color/Tint" tool_tip="Klik om de kleurkiezer te openen"/> + <button label="Nieuwe jas maken" label_selected="Nieuwe jas maken" name="Create New"/> + <button label="Uitdoen" label_selected="Uitdoen" name="Take Off"/> + <button label="Opslaan" label_selected="Opslaan" name="Save"/> + <button label="Opslaan als..." label_selected="Opslaan als..." name="Save As"/> + <button label="Herstel" label_selected="Herstel" name="Revert"/> + </panel> + <panel label="Handschoenen" name="Gloves"> + <text name="title"> + [DESC] + </text> + <text name="title_no_modify"> + [DESC]: Kan niet wijzigen + </text> + <text name="title_loading"> + [DESC]: laden... + </text> + <text name="title_not_worn"> + [DESC]: niet gedragen + </text> + <text name="path"> + Gelegen in [PATH] + </text> + <text name="not worn instructions"> + Draag nieuwe handschoenen door ze vanuit uw inventaris naar uw avatar +te slepen. Ook kunt u zelf van begin af aan nieuwe creëren en dragen. + </text> + <text name="no modify instructions"> + U heeft geen permissie om dit draagbare item te wijzigen. + </text> + <text name="Item Action Label"> + Handschoenen: + </text> + <texture_picker label="Stof" name="Fabric" tool_tip="Klik om een afbeelding te kiezen"/> + <color_swatch label="Kleur/tint" name="Color/Tint" tool_tip="Klik om de kleurkiezer te openen"/> + <button label="Nieuwe handschoenen maken" label_selected="Nieuwe handschoenen maken" name="Create New" width="190"/> + <button label="Uitdoen" label_selected="Uitdoen" name="Take Off"/> + <button label="Opslaan" label_selected="Opslaan" name="Save"/> + <button label="Opslaan als..." label_selected="Opslaan als..." name="Save As"/> + <button label="Herstel" label_selected="Herstel" name="Revert"/> + </panel> + <panel label="Onderhemd" name="Undershirt"> + <text name="title"> + [DESC] + </text> + <text name="title_no_modify"> + [DESC]: Kan niet wijzigen + </text> + <text name="title_loading"> + [DESC]: laden... + </text> + <text name="title_not_worn"> + [DESC]: niet gedragen + </text> + <text name="path"> + Gelegen in [PATH] + </text> + <text name="not worn instructions"> + Draag een nieuw onderhemd door hem vanuit uw inventaris naar uw avatar +te slepen. Ook kunt u zelf van begin af aan een nieuwe creëren en dragen. + </text> + <text name="no modify instructions"> + U heeft geen permissie om dit draagbare item te wijzigen. + </text> + <text name="Item Action Label"> + Onderhemd: + </text> + <texture_picker label="Stof" name="Fabric" tool_tip="Klik om een afbeelding te kiezen"/> + <color_swatch label="Kleur/tint" name="Color/Tint" tool_tip="Klik om de kleurkiezer te openen"/> + <button label="Nieuw onderhemd maken" label_selected="Nieuw onderhemd maken" name="Create New"/> + <button label="Uitdoen" label_selected="Uitdoen" name="Take Off"/> + <button label="Opslaan" label_selected="Opslaan" name="Save"/> + <button label="Opslaan als..." label_selected="Opslaan als..." name="Save As"/> + <button label="Herstel" label_selected="Herstel" name="Revert"/> + </panel> + <panel label="Onderbroek" name="Underpants"> + <text name="title"> + [DESC] + </text> + <text name="title_no_modify"> + [DESC]: Kan niet wijzigen + </text> + <text name="title_loading"> + [DESC]: laden... + </text> + <text name="title_not_worn"> + [DESC]: niet gedragen + </text> + <text name="path"> + Gelegen in [PATH] + </text> + <text name="not worn instructions"> + Draag een nieuwe onderbroek door hem vanuit uw inventaris naar uw +avatar te slepen. Ook kunt u zelf van begin af aan een nieuwe creëren +en dragen. + </text> + <text name="no modify instructions"> + U heeft geen permissie om dit draagbare item te wijzigen. + </text> + <text name="Item Action Label"> + Onderbroek: + </text> + <texture_picker label="Stof" name="Fabric" tool_tip="Klik om een afbeelding te kiezen"/> + <color_swatch label="Kleur/tint" name="Color/Tint" tool_tip="Klik om de kleurkiezer te openen"/> + <button label="Nieuwe onderbroek maken" label_selected="Nieuwe onderbroek maken" name="Create New"/> + <button label="Uitdoen" label_selected="Uitdoen" name="Take Off"/> + <button label="Opslaan" label_selected="Opslaan" name="Save"/> + <button label="Opslaan als..." label_selected="Opslaan als..." name="Save As"/> + <button label="Herstel" label_selected="Herstel" name="Revert"/> + </panel> + <panel label="Rok" name="Skirt"> + <text name="title"> + [DESC] + </text> + <text name="title_no_modify"> + [DESC]: Kan niet wijzigen + </text> + <text name="title_loading"> + [DESC]: laden... + </text> + <text name="title_not_worn"> + [DESC]: niet gedragen + </text> + <text name="path"> + Gelegen in [PATH] + </text> + <text name="not worn instructions"> + Draag een nieuwe rok door hem vanuit uw inventaris naar uw avatar te +slepen. Ook kunt u zelf van begin af aan een nieuwe creëren en dragen. + </text> + <text name="no modify instructions"> + U heeft geen permissie om dit draagbare item te wijzigen. + </text> + <text name="Item Action Label"> + Rok: + </text> + <texture_picker label="Stof" name="Fabric" tool_tip="Klik om een afbeelding te kiezen"/> + <color_swatch label="Kleur/tint" name="Color/Tint" tool_tip="Klik om de kleurkiezer te openen"/> + <button label="Nieuwe rok maken" label_selected="Nieuwe rok maken" name="Create New"/> + <button label="Uitdoen" label_selected="Uitdoen" name="Take Off"/> + <button label="Opslaan" label_selected="Opslaan" name="Save"/> + <button label="Opslaan als..." label_selected="Opslaan als..." name="Save As"/> + <button label="Herstel" label_selected="Herstel" name="Revert"/> + </panel> + </tab_container> + <scroll_container left="254" name="panel_container"/> + <button label="Annuleren" label_selected="Annuleren" name="Cancel"/> + <button label="OK" label_selected="OK" name="Ok"/> + <button label="Maak kleding..." label_selected="Maak kleding..." name="Make Outfit" left="110"/> +</floater> diff --git a/indra/newview/skins/default/xui/nl/floater_env_settings.xml b/indra/newview/skins/default/xui/nl/floater_env_settings.xml index 61bf0788870f487e5bb975b768d1989e3b5b917f..d212f544c56bbc2b7306e13bf86639cf978bf4f0 100644 --- a/indra/newview/skins/default/xui/nl/floater_env_settings.xml +++ b/indra/newview/skins/default/xui/nl/floater_env_settings.xml @@ -1,23 +1,23 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Environment Editor Floater" title="Omgeving editor"> - <text name="EnvTimeText"> - Tijd van de dag - </text> - <text name="EnvTimeText2"> - 0:00 - </text> - <text name="EnvCloudText"> - Wolkendek - </text> - <text name="EnvWaterColorText"> - Waterkleur - </text> - <color_swatch label="" name="EnvWaterColor" tool_tip="Klik om de kleurkiezer te openen"/> - <text name="EnvWaterFogText"> - Watermist - </text> - <button label="Gebruik estate tijd" name="EnvUseEstateTimeButton"/> - <button label="Geavanceerde lucht" name="EnvAdvancedSkyButton"/> - <button label="Geavanceerd water" name="EnvAdvancedWaterButton"/> - <button label="?" name="EnvSettingsHelpButton"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Environment Editor Floater" title="Omgeving editor"> + <text name="EnvTimeText"> + Tijd van de dag + </text> + <text name="EnvTimeText2"> + 0:00 + </text> + <text name="EnvCloudText"> + Wolkendek + </text> + <text name="EnvWaterColorText"> + Waterkleur + </text> + <color_swatch label="" name="EnvWaterColor" tool_tip="Klik om de kleurkiezer te openen"/> + <text name="EnvWaterFogText"> + Watermist + </text> + <button label="Gebruik estate tijd" name="EnvUseEstateTimeButton"/> + <button label="Geavanceerde lucht" name="EnvAdvancedSkyButton"/> + <button label="Geavanceerd water" name="EnvAdvancedWaterButton"/> + <button label="?" name="EnvSettingsHelpButton"/> +</floater> diff --git a/indra/newview/skins/default/xui/nl/floater_font_test.xml b/indra/newview/skins/default/xui/nl/floater_font_test.xml new file mode 100644 index 0000000000000000000000000000000000000000..8e8b07ee1a59eeb3bb3fc144be51c4acd30108da --- /dev/null +++ b/indra/newview/skins/default/xui/nl/floater_font_test.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="contents" title="Lettertypetest"> + <text name="linea"> + Overschrijf test, zou hier moeten verschijnen als Times (vanuit default/xui/en-us). + </text> +</floater> diff --git a/indra/newview/skins/default/xui/nl/floater_gesture.xml b/indra/newview/skins/default/xui/nl/floater_gesture.xml index 638f36d99f1dc57332d04063dcc3494b955b909c..d38972d5fe09411a0c0d053455c69af4061b3fd3 100644 --- a/indra/newview/skins/default/xui/nl/floater_gesture.xml +++ b/indra/newview/skins/default/xui/nl/floater_gesture.xml @@ -1,15 +1,15 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="gestures" title="Actieve gebaren"> - <text name="help_label"> - Dubbelklik een gebaar om animaties en geluiden af te spelen - </text> - <scroll_list name="gesture_list"> - <column label="Trigger" name="trigger"/> - <column label="Toets" name="shortcut"/> - <column label="Naam" name="name"/> - </scroll_list> - <button label="Nieuw" name="new_gesture_btn"/> - <button label="Bewerken" name="edit_btn"/> - <button label="Afspelen" name="play_btn"/> - <button label="Stop" name="stop_btn"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="gestures" title="Actieve gebaren"> + <text name="help_label"> + Dubbelklik een gebaar om animaties en geluiden af te spelen + </text> + <scroll_list name="gesture_list"> + <column label="Trigger" name="trigger"/> + <column label="Toets" name="shortcut"/> + <column label="Naam" name="name"/> + </scroll_list> + <button label="Nieuw" name="new_gesture_btn"/> + <button label="Bewerken" name="edit_btn"/> + <button label="Afspelen" name="play_btn"/> + <button label="Stop" name="stop_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/nl/floater_hud.xml b/indra/newview/skins/default/xui/nl/floater_hud.xml index d4d686255a913b16b37f64df5c76a32c9a862de8..9da732ff2f3603859a25221f1f1fdce8e5c47fd9 100644 --- a/indra/newview/skins/default/xui/nl/floater_hud.xml +++ b/indra/newview/skins/default/xui/nl/floater_hud.xml @@ -1,2 +1,2 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_hud" title="Handleiding"/> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_hud" title="Handleiding"/> diff --git a/indra/newview/skins/default/xui/nl/floater_im.xml b/indra/newview/skins/default/xui/nl/floater_im.xml index bd48c73852b61f925ae5d635fb9423f90529432d..3167af532108a2e4c204a51011d96df525b0efb3 100644 --- a/indra/newview/skins/default/xui/nl/floater_im.xml +++ b/indra/newview/skins/default/xui/nl/floater_im.xml @@ -1,45 +1,45 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<multi_floater name="im_floater" title="Instant Message"> - <string name="only_user_message"> - U bent de enige gebruiker in deze sessie. - </string> - <string name="offline_message"> - [FIRST] [LAST] is offline. - </string> - <string name="invite_message"> - Klik de [BUTTON NAME] knop om deze voicechat te accepteren/verbinden. - </string> - <string name="muted_message"> - U heeft deze inwoner genegeerd. Door het sturen van een bericht zal deze automatisch van de negeerlijst verwijderd worden. - </string> - <string name="generic_request_error"> - Fout tijdens het maken van het verzoek, probeer het later nog een keer. - </string> - <string name="insufficient_perms_error"> - U heeft niet voldoende permissies. - </string> - <string name="session_does_not_exist_error"> - De sessie bestaat niet meer - </string> - <string name="no_ability_error"> - U beschikt niet over die mogelijkheid. - </string> - <string name="not_a_mod_error"> - U bent geen sessie moderateur - </string> - <string name="muted_error"> - Een groepsmoderator heeft uw textchat uitgeschakeld. - </string> - <string name="add_session_event"> - Kan geen gebruikers toevoegen aan chatsessie met [RECIPIENT]. - </string> - <string name="message_session_event"> - Kan uw bericht niet versturen naar de chatsessie met [RECIPIENT]. - </string> - <string name="removed_from_group"> - U bent verwijderd uit de groep. - </string> - <string name="close_on_no_ability"> - U heeft niet langer de mogelijkheid om in deze chatsessie te zijn. - </string> -</multi_floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<multi_floater name="im_floater" title="Instant Message"> + <string name="only_user_message"> + U bent de enige gebruiker in deze sessie. + </string> + <string name="offline_message"> + [FIRST] [LAST] is offline. + </string> + <string name="invite_message"> + Klik de [BUTTON NAME] knop om deze voicechat te accepteren/verbinden. + </string> + <string name="muted_message"> + U heeft deze inwoner genegeerd. Door het sturen van een bericht zal deze automatisch van de negeerlijst verwijderd worden. + </string> + <string name="generic_request_error"> + Fout tijdens het maken van het verzoek, probeer het later nog een keer. + </string> + <string name="insufficient_perms_error"> + U heeft niet voldoende permissies. + </string> + <string name="session_does_not_exist_error"> + De sessie bestaat niet meer + </string> + <string name="no_ability_error"> + U beschikt niet over die mogelijkheid. + </string> + <string name="not_a_mod_error"> + U bent geen sessie moderateur + </string> + <string name="muted_error"> + Een groepsmoderator heeft uw textchat uitgeschakeld. + </string> + <string name="add_session_event"> + Kan geen gebruikers toevoegen aan chatsessie met [RECIPIENT]. + </string> + <string name="message_session_event"> + Kan uw bericht niet versturen naar de chatsessie met [RECIPIENT]. + </string> + <string name="removed_from_group"> + U bent verwijderd uit de groep. + </string> + <string name="close_on_no_ability"> + U heeft niet langer de mogelijkheid om in deze chatsessie te zijn. + </string> +</multi_floater> diff --git a/indra/newview/skins/default/xui/nl/floater_inspect.xml b/indra/newview/skins/default/xui/nl/floater_inspect.xml index 4ed77b4cbe199d221ee0f88885644f3b88f34d37..d4fa75d94fc4e2c1445d8b2dc775cadf022bdbec 100644 --- a/indra/newview/skins/default/xui/nl/floater_inspect.xml +++ b/indra/newview/skins/default/xui/nl/floater_inspect.xml @@ -1,11 +1,11 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="inspect" title="Objecten inspecteren"> - <scroll_list name="object_list" tool_tip="Selecteer een object van deze lijst om het in-wereld te markeren"> - <column label="Objectnaam" name="object_name"/> - <column label="Eigenaarnaam" name="owner_name"/> - <column label="Makernaam:" name="creator_name"/> - <column label="Aanmaakdatum" name="creation_date"/> - </scroll_list> - <button label="Bekijk eigenaarprofiel..." label_selected="" name="button owner" tool_tip="Bekijk het profiel van de eigenaar van het gemarkeerde object"/> - <button label="Bekijk makerprofiel..." label_selected="" name="button creator" tool_tip="Bekijk het profiel van de originele maker van het gemarkeerde object"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="inspect" title="Objecten inspecteren"> + <scroll_list name="object_list" tool_tip="Selecteer een object van deze lijst om het in-wereld te markeren"> + <column label="Objectnaam" name="object_name"/> + <column label="Eigenaarnaam" name="owner_name"/> + <column label="Makernaam:" name="creator_name"/> + <column label="Aanmaakdatum" name="creation_date"/> + </scroll_list> + <button label="Bekijk eigenaarprofiel..." label_selected="" name="button owner" tool_tip="Bekijk het profiel van de eigenaar van het gemarkeerde object"/> + <button label="Bekijk makerprofiel..." label_selected="" name="button creator" tool_tip="Bekijk het profiel van de originele maker van het gemarkeerde object"/> +</floater> diff --git a/indra/newview/skins/default/xui/nl/floater_inventory.xml b/indra/newview/skins/default/xui/nl/floater_inventory.xml index b0c208601cd75922e6dc3dfe7e2a690291fac19d..272fa3c899de4fb1b5dec9bec8e98d6db5d637a7 100644 --- a/indra/newview/skins/default/xui/nl/floater_inventory.xml +++ b/indra/newview/skins/default/xui/nl/floater_inventory.xml @@ -1,47 +1,47 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Inventory" title="Inventaris"> - <search_editor label="Typ hier om te zoeken" name="inventory search editor"/> - <tab_container name="inventory filter tabs"> - <inventory_panel label="Alle items" name="All Items"/> - <inventory_panel label="Recente items" name="Recent Items"/> - </tab_container> - <menu_bar name="Inventory Menu"> - <menu label="Bestand" name="File"> - <menu_item_call label="Open" name="Open"/> - <menu_item_call label="Nieuw venster" name="New Window"/> - <menu_item_call label="Toon filters" name="Show Filters"/> - <menu_item_call label="Filters opnieuw instellen" name="Reset Current"/> - <menu_item_call label="Alle mappen sluiten" name="Close All Folders"/> - <menu_item_call label="Prullenbak legen" name="Empty Trash"/> - </menu> - <menu label="Maak" name="Create"> - <menu_item_call label="Nieuwe map" name="New Folder"/> - <menu_item_call label="Nieuw script" name="New Script"/> - <menu_item_call label="Nieuwe notitie" name="New Note"/> - <menu_item_call label="Nieuw gebaar" name="New Gesture"/> - <menu name="New Clothes"> - <menu_item_call label="Nieuw hemd" name="New Shirt"/> - <menu_item_call label="Nieuwe broek" name="New Pants"/> - <menu_item_call label="Nieuwe schoenen" name="New Shoes"/> - <menu_item_call label="Nieuwe sokken" name="New Socks"/> - <menu_item_call label="Nieuwe jas" name="New Jacket"/> - <menu_item_call label="Nieuwe rok" name="New Skirt"/> - <menu_item_call label="Nieuwe handschoenen" name="New Gloves"/> - <menu_item_call label="Nieuw onderhemd" name="New Undershirt"/> - <menu_item_call label="Nieuwe onderbroek" name="New Underpants"/> - </menu> - <menu name="New Body Parts"> - <menu_item_call label="Nieuwe postuur" name="New Shape"/> - <menu_item_call label="Nieuwe huid" name="New Skin"/> - <menu_item_call label="Nieuw haar" name="New Hair"/> - <menu_item_call label="Nieuwe ogen" name="New Eyes"/> - </menu> - </menu> - <menu label="Sorteren" name="Sort"> - <menu_item_check label="Op naam" name="By Name"/> - <menu_item_check label="Op datum" name="By Date"/> - <menu_item_check label="Mappen altijd op naam" name="Folders Always By Name"/> - <menu_item_check label="Systeemmappen naar de bovenkant" name="System Folders To Top"/> - </menu> - </menu_bar> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Inventory" title="Inventaris"> + <search_editor label="Typ hier om te zoeken" name="inventory search editor"/> + <tab_container name="inventory filter tabs"> + <inventory_panel label="Alle items" name="All Items"/> + <inventory_panel label="Recente items" name="Recent Items"/> + </tab_container> + <menu_bar name="Inventory Menu"> + <menu label="Bestand" name="File"> + <menu_item_call label="Open" name="Open"/> + <menu_item_call label="Nieuw venster" name="New Window"/> + <menu_item_call label="Toon filters" name="Show Filters"/> + <menu_item_call label="Filters opnieuw instellen" name="Reset Current"/> + <menu_item_call label="Alle mappen sluiten" name="Close All Folders"/> + <menu_item_call label="Prullenbak legen" name="Empty Trash"/> + </menu> + <menu label="Maak" name="Create"> + <menu_item_call label="Nieuwe map" name="New Folder"/> + <menu_item_call label="Nieuw script" name="New Script"/> + <menu_item_call label="Nieuwe notitie" name="New Note"/> + <menu_item_call label="Nieuw gebaar" name="New Gesture"/> + <menu name="New Clothes"> + <menu_item_call label="Nieuw hemd" name="New Shirt"/> + <menu_item_call label="Nieuwe broek" name="New Pants"/> + <menu_item_call label="Nieuwe schoenen" name="New Shoes"/> + <menu_item_call label="Nieuwe sokken" name="New Socks"/> + <menu_item_call label="Nieuwe jas" name="New Jacket"/> + <menu_item_call label="Nieuwe rok" name="New Skirt"/> + <menu_item_call label="Nieuwe handschoenen" name="New Gloves"/> + <menu_item_call label="Nieuw onderhemd" name="New Undershirt"/> + <menu_item_call label="Nieuwe onderbroek" name="New Underpants"/> + </menu> + <menu name="New Body Parts"> + <menu_item_call label="Nieuwe postuur" name="New Shape"/> + <menu_item_call label="Nieuwe huid" name="New Skin"/> + <menu_item_call label="Nieuw haar" name="New Hair"/> + <menu_item_call label="Nieuwe ogen" name="New Eyes"/> + </menu> + </menu> + <menu label="Sorteren" name="Sort"> + <menu_item_check label="Op naam" name="By Name"/> + <menu_item_check label="Op datum" name="By Date"/> + <menu_item_check label="Mappen altijd op naam" name="Folders Always By Name"/> + <menu_item_check label="Systeemmappen naar de bovenkant" name="System Folders To Top"/> + </menu> + </menu_bar> +</floater> diff --git a/indra/newview/skins/default/xui/nl/floater_joystick.xml b/indra/newview/skins/default/xui/nl/floater_joystick.xml index 6f5c25d683e2d29c0035254efe5d398e8bbbd26c..27556a89f8cc982beccf904b3175ce77d0b08d5b 100644 --- a/indra/newview/skins/default/xui/nl/floater_joystick.xml +++ b/indra/newview/skins/default/xui/nl/floater_joystick.xml @@ -1,83 +1,85 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Joystick" title="Joystick configuratie"> - <check_box name="enable_joystick"> - Joystick inschakelen - </check_box> - <spinner label="X-as mapping" name="JoystickAxis1"/> - <spinner label="Y-as mapping" name="JoystickAxis2"/> - <spinner label="Z-as mapping" name="JoystickAxis0"/> - <spinner label="Stampen mapping" name="JoystickAxis4"/> - <spinner label="Gieren mapping" name="JoystickAxis5"/> - <spinner label="Rollen mapping" name="JoystickAxis3"/> - <spinner label="Zoom mapping" name="JoystickAxis6"/> - <check_box label="Directe zoom" name="ZoomDirect"/> - <check_box label="3D Cursor" name="Cursor3D"/> - <check_box label="Automatisch niveau" name="AutoLeveling"/> - <text name="Control Modes:"> - Besturingsmodi: - </text> - <check_box name="JoystickAvatarEnabled"> - Avatar - </check_box> - <check_box name="JoystickBuildEnabled"> - Bouwen - </check_box> - <check_box name="JoystickFlycamEnabled"> - Vliegcamera - </check_box> - <text name="XScale"> - X schaal - </text> - <text name="YScale"> - Y schaal - </text> - <text name="ZScale"> - Z schaal - </text> - <text name="PitchScale"> - Stampen schaal - </text> - <text name="YawScale"> - Gieren schaal - </text> - <text name="RollScale"> - Rollen schaal - </text> - <text name="XDeadZone"> - X dode zone - </text> - <text name="YDeadZone"> - Y dode zone - </text> - <text name="ZDeadZone"> - Z dode zone - </text> - <text name="PitchDeadZone"> - Stampen dode zone - </text> - <text name="YawDeadZone"> - Gieren dode zone - </text> - <text name="RollDeadZone"> - Rollen dode zone - </text> - <text name="Feathering"> - Feathering - </text> - <text name="ZoomScale2"> - Zoomschaal - </text> - <text name="ZoomDeadZone"> - Zoom dode zone - </text> - <button label="SpaceNavigator standaardwaarden" name="SpaceNavigatorDefaults"/> - <string name="JoystickMonitor"> - Joystick monitor - </string> - <string name="Axis"> - As [NUM] - </string> - <string name="NoDevice"> - Geen apparaat gedetecteerd - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Joystick" title="Joystick configuratie"> + <check_box name="enable_joystick"> + Joystick inschakelen + </check_box> + <spinner label="X-as mapping" name="JoystickAxis1"/> + <spinner label="Y-as mapping" name="JoystickAxis2"/> + <spinner label="Z-as mapping" name="JoystickAxis0"/> + <spinner label="Stampen mapping" name="JoystickAxis4"/> + <spinner label="Gieren mapping" name="JoystickAxis5"/> + <spinner label="Rollen mapping" name="JoystickAxis3"/> + <spinner label="Zoom mapping" name="JoystickAxis6"/> + <check_box label="Directe zoom" name="ZoomDirect"/> + <check_box label="3D Cursor" name="Cursor3D"/> + <check_box label="Automatisch niveau" name="AutoLeveling"/> + <text name="Control Modes:"> + Besturingsmodi: + </text> + <check_box name="JoystickAvatarEnabled"> + Avatar + </check_box> + <check_box name="JoystickBuildEnabled"> + Bouwen + </check_box> + <check_box name="JoystickFlycamEnabled"> + Vliegcamera + </check_box> + <text name="XScale"> + X schaal + </text> + <text name="YScale"> + Y schaal + </text> + <text name="ZScale"> + Z schaal + </text> + <text name="PitchScale"> + Stampen schaal + </text> + <text name="YawScale"> + Gieren schaal + </text> + <text name="RollScale"> + Rollen schaal + </text> + <text name="XDeadZone"> + X dode zone + </text> + <text name="YDeadZone"> + Y dode zone + </text> + <text name="ZDeadZone"> + Z dode zone + </text> + <text name="PitchDeadZone"> + Stampen dode zone + </text> + <text name="YawDeadZone"> + Gieren dode zone + </text> + <text name="RollDeadZone"> + Rollen dode zone + </text> + <text name="Feathering"> + Feathering + </text> + <text name="ZoomScale2"> + Zoomschaal + </text> + <text name="ZoomDeadZone"> + Zoom dode zone + </text> + <button label="SpaceNavigator standaardwaarden" name="SpaceNavigatorDefaults"/> + <button label="OK" label_selected="OK" name="ok_btn"/> + <button label="Annuleren" label_selected="Annuleren" name="cancel_btn"/> + <string name="JoystickMonitor"> + Joystick monitor + </string> + <string name="Axis"> + As [NUM] + </string> + <string name="NoDevice"> + Geen apparaat gedetecteerd + </string> +</floater> diff --git a/indra/newview/skins/default/xui/nl/floater_lagmeter.xml b/indra/newview/skins/default/xui/nl/floater_lagmeter.xml index 0a33995243ae23589181a6bd817e908cf7cc15bf..e8b1fb14bc4272b637642030f4c905b1756466a5 100644 --- a/indra/newview/skins/default/xui/nl/floater_lagmeter.xml +++ b/indra/newview/skins/default/xui/nl/floater_lagmeter.xml @@ -1,152 +1,152 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_lagmeter" title="Lag meter"> - <button label="" label_selected="" name="client_lagmeter" tool_tip="Client lag status"/> - <text name="client"> - Client: - </text> - <text name="client_text"> - Normaal - </text> - <button label="" label_selected="" name="network_lagmeter" tool_tip="Netwerklag status"/> - <text name="network"> - Netwerk: - </text> - <text name="network_text"> - Normaal - </text> - <button label="" label_selected="" name="server_lagmeter" tool_tip="Serverlag status"/> - <text name="server"> - Server: - </text> - <text name="server_text"> - Normaal - </text> - <button label="?" name="server_help"/> - <button label=">>" name="minimize"/> - <string name="max_title_msg"> - Lag meter - </string> - <string name="max_width_px"> - 360 - </string> - <string name="min_title_msg"> - Lag - </string> - <string name="min_width_px"> - 90 - </string> - <string name="client_text_msg"> - Client - </string> - <string name="client_frame_rate_critical_fps"> - 10 - </string> - <string name="client_frame_rate_warning_fps"> - 15 - </string> - <string name="client_frame_time_window_bg_msg"> - Normaal, venster op achtergrond - </string> - <string name="client_frame_time_critical_msg"> - Client framerate onder [CLIENT_FRAME_RATE_CRITICAL] - </string> - <string name="client_frame_time_warning_msg"> - Client framerate tussen [CLIENT_FRAME_RATE_CRITICAL] en [CLIENT_FRAME_RATE_WARNING] - </string> - <string name="client_frame_time_normal_msg"> - Normaal - </string> - <string name="client_draw_distance_cause_msg"> - Mogelijke oorzaak: Zichtbereik te hoog ingesteld - </string> - <string name="client_texture_loading_cause_msg"> - Mogelijke oorzaak: Afbeeldingen worden geladen - </string> - <string name="client_texture_memory_cause_msg"> - Mogelijke oorzaak: Teveel afbeeldingen in geheugen - </string> - <string name="client_complex_objects_cause_msg"> - Mogelijke oorzaak: Teveel complexe objecten in de scene - </string> - <string name="network_text_msg"> - Netwerk - </string> - <string name="network_packet_loss_critical_pct"> - 10 - </string> - <string name="network_packet_loss_warning_pct"> - 5 - </string> - <string name="network_packet_loss_critical_msg"> - Verbinding verliest meer dan [NETWORK_PACKET_LOSS_CRITICAL]% van de pakketten - </string> - <string name="network_packet_loss_warning_msg"> - Verbinding verliest [NETWORK_PACKET_LOSS_WARNING]%-[NETWORK_PACKET_LOSS_CRITICAL]% van de pakketten - </string> - <string name="network_performance_normal_msg"> - Normaal - </string> - <string name="network_ping_critical_ms"> - 600 - </string> - <string name="network_ping_warning_ms"> - 300 - </string> - <string name="network_ping_critical_msg"> - Verbinding pingtijd is meer dan [NETWORK_PING_CRITICAL] ms - </string> - <string name="network_ping_warning_msg"> - Verbinding pingtijd is [NETWORK_PING_WARNING]-[NETWORK_PING_CRITICAL] ms - </string> - <string name="network_packet_loss_cause_msg"> - Mogelijk slechte verbinding of 'Bandbreedte' voorkeur te hoog. - </string> - <string name="network_ping_cause_msg"> - Mogelijk slechte verbinding of applicatie voor bestandsdeling. - </string> - <string name="server_text_msg"> - Server - </string> - <string name="server_frame_rate_critical_fps"> - 20 - </string> - <string name="server_frame_rate_warning_fps"> - 30 - </string> - <string name="server_single_process_max_time_ms"> - 20 - </string> - <string name="server_frame_time_critical_msg"> - Simulator framerate onder [SERVER_FRAME_RATE_CRITICAL] - </string> - <string name="server_frame_time_warning_msg"> - Simulator framerate tussen [SERVER_FRAME_RATE_CRITICAL] en [SERVER_FRAME_RATE_WARNING] - </string> - <string name="server_frame_time_normal_msg"> - Normaal - </string> - <string name="server_physics_cause_msg"> - Mogelijke oorzaak: Teveel fysieke objecten - </string> - <string name="server_scripts_cause_msg"> - Mogelijke oorzaak: Teveel gescripte objecten - </string> - <string name="server_net_cause_msg"> - Mogelijke oorzaak: Teveel netwerkverkeer - </string> - <string name="server_agent_cause_msg"> - Mogelijke oorzaak: Teveel mensen verplaatsen zich in de regio - </string> - <string name="server_images_cause_msg"> - Mogelijke oorzaak: Teveel afbeeldingberekeningen - </string> - <string name="server_generic_cause_msg"> - Mogelijke oorzaak: Simulatorbelasting is te hoog - </string> - <string name="smaller_label"> - >> - </string> - <string name="bigger_label"> - << - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_lagmeter" title="Lag meter"> + <button label="" label_selected="" name="client_lagmeter" tool_tip="Client lag status"/> + <text name="client"> + Client: + </text> + <text name="client_text"> + Normaal + </text> + <button label="" label_selected="" name="network_lagmeter" tool_tip="Netwerklag status"/> + <text name="network"> + Netwerk: + </text> + <text name="network_text"> + Normaal + </text> + <button label="" label_selected="" name="server_lagmeter" tool_tip="Serverlag status"/> + <text name="server"> + Server: + </text> + <text name="server_text"> + Normaal + </text> + <button label="?" name="server_help"/> + <button label=">>" name="minimize"/> + <string name="max_title_msg"> + Lag meter + </string> + <string name="max_width_px"> + 360 + </string> + <string name="min_title_msg"> + Lag + </string> + <string name="min_width_px"> + 90 + </string> + <string name="client_text_msg"> + Client + </string> + <string name="client_frame_rate_critical_fps"> + 10 + </string> + <string name="client_frame_rate_warning_fps"> + 15 + </string> + <string name="client_frame_time_window_bg_msg"> + Normaal, venster op achtergrond + </string> + <string name="client_frame_time_critical_msg"> + Client framerate onder [CLIENT_FRAME_RATE_CRITICAL] + </string> + <string name="client_frame_time_warning_msg"> + Client framerate tussen [CLIENT_FRAME_RATE_CRITICAL] en [CLIENT_FRAME_RATE_WARNING] + </string> + <string name="client_frame_time_normal_msg"> + Normaal + </string> + <string name="client_draw_distance_cause_msg"> + Mogelijke oorzaak: Zichtbereik te hoog ingesteld + </string> + <string name="client_texture_loading_cause_msg"> + Mogelijke oorzaak: Afbeeldingen worden geladen + </string> + <string name="client_texture_memory_cause_msg"> + Mogelijke oorzaak: Teveel afbeeldingen in geheugen + </string> + <string name="client_complex_objects_cause_msg"> + Mogelijke oorzaak: Teveel complexe objecten in de scene + </string> + <string name="network_text_msg"> + Netwerk + </string> + <string name="network_packet_loss_critical_pct"> + 10 + </string> + <string name="network_packet_loss_warning_pct"> + 5 + </string> + <string name="network_packet_loss_critical_msg"> + Verbinding verliest meer dan [NETWORK_PACKET_LOSS_CRITICAL]% van de pakketten + </string> + <string name="network_packet_loss_warning_msg"> + Verbinding verliest [NETWORK_PACKET_LOSS_WARNING]%-[NETWORK_PACKET_LOSS_CRITICAL]% van de pakketten + </string> + <string name="network_performance_normal_msg"> + Normaal + </string> + <string name="network_ping_critical_ms"> + 600 + </string> + <string name="network_ping_warning_ms"> + 300 + </string> + <string name="network_ping_critical_msg"> + Verbinding pingtijd is meer dan [NETWORK_PING_CRITICAL] ms + </string> + <string name="network_ping_warning_msg"> + Verbinding pingtijd is [NETWORK_PING_WARNING]-[NETWORK_PING_CRITICAL] ms + </string> + <string name="network_packet_loss_cause_msg"> + Mogelijk slechte verbinding of 'Bandbreedte' voorkeur te hoog. + </string> + <string name="network_ping_cause_msg"> + Mogelijk slechte verbinding of applicatie voor bestandsdeling. + </string> + <string name="server_text_msg"> + Server + </string> + <string name="server_frame_rate_critical_fps"> + 20 + </string> + <string name="server_frame_rate_warning_fps"> + 30 + </string> + <string name="server_single_process_max_time_ms"> + 20 + </string> + <string name="server_frame_time_critical_msg"> + Simulator framerate onder [SERVER_FRAME_RATE_CRITICAL] + </string> + <string name="server_frame_time_warning_msg"> + Simulator framerate tussen [SERVER_FRAME_RATE_CRITICAL] en [SERVER_FRAME_RATE_WARNING] + </string> + <string name="server_frame_time_normal_msg"> + Normaal + </string> + <string name="server_physics_cause_msg"> + Mogelijke oorzaak: Teveel fysieke objecten + </string> + <string name="server_scripts_cause_msg"> + Mogelijke oorzaak: Teveel gescripte objecten + </string> + <string name="server_net_cause_msg"> + Mogelijke oorzaak: Teveel netwerkverkeer + </string> + <string name="server_agent_cause_msg"> + Mogelijke oorzaak: Teveel mensen verplaatsen zich in de regio + </string> + <string name="server_images_cause_msg"> + Mogelijke oorzaak: Teveel afbeeldingberekeningen + </string> + <string name="server_generic_cause_msg"> + Mogelijke oorzaak: Simulatorbelasting is te hoog + </string> + <string name="smaller_label"> + >> + </string> + <string name="bigger_label"> + << + </string> +</floater> diff --git a/indra/newview/skins/default/xui/nl/floater_lsl_guide.xml b/indra/newview/skins/default/xui/nl/floater_lsl_guide.xml index a8d22e4c3799ac5e40ebd1a8a0cdb3ba0d974f20..556d151c8c79477772d4360a3cb78d53c42b879c 100644 --- a/indra/newview/skins/default/xui/nl/floater_lsl_guide.xml +++ b/indra/newview/skins/default/xui/nl/floater_lsl_guide.xml @@ -1,7 +1,7 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="script ed float" title="LSL Wiki"> - <check_box label="Volg cursor" name="lock_check"/> - <combo_box label="Vergrendelen" name="history_combo"/> - <button label="Terug" name="back_btn"/> - <button label="Vooruit" name="fwd_btn"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="script ed float" title="LSL Wiki"> + <check_box label="Volg cursor" name="lock_check"/> + <combo_box label="Vergrendelen" name="history_combo"/> + <button label="Terug" name="back_btn"/> + <button label="Vooruit" name="fwd_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/nl/floater_mem_leaking.xml b/indra/newview/skins/default/xui/nl/floater_mem_leaking.xml index a39562c8651359c7964f036725401aee7f1ca63a..1c7e070e4a0cd33c44280546012522da79c0fa55 100644 --- a/indra/newview/skins/default/xui/nl/floater_mem_leaking.xml +++ b/indra/newview/skins/default/xui/nl/floater_mem_leaking.xml @@ -1,18 +1,18 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="MemLeak" title="Geheugenlek simulatie"> - <spinner label="Leksnelheid (bytes per frame):" name="leak_speed"/> - <spinner label="Max gelekt geheugen (MB):" name="max_leak"/> - <text name="total_leaked_label"> - Huidig gelekt geheugen: [SIZE] KB - </text> - <text name="note_label_1"> - [NOTE1] - </text> - <text name="note_label_2"> - [NOTE2] - </text> - <button label="Start" name="start_btn"/> - <button label="Stop" name="stop_btn"/> - <button label="Vrijgeven" name="release_btn"/> - <button label="Sluiten" name="close_btn"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="MemLeak" title="Geheugenlek simulatie"> + <spinner label="Leksnelheid (bytes per frame):" name="leak_speed"/> + <spinner label="Max gelekt geheugen (MB):" name="max_leak"/> + <text name="total_leaked_label"> + Huidig gelekt geheugen: [SIZE] KB + </text> + <text name="note_label_1"> + [NOTE1] + </text> + <text name="note_label_2"> + [NOTE2] + </text> + <button label="Start" name="start_btn"/> + <button label="Stop" name="stop_btn"/> + <button label="Vrijgeven" name="release_btn"/> + <button label="Sluiten" name="close_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/nl/floater_moveview.xml b/indra/newview/skins/default/xui/nl/floater_moveview.xml index 2204434ddea7a56d937043f24766d159430c7b88..9b0b95b99a4d20f71e9b12e3ecfb6b3c889873e5 100644 --- a/indra/newview/skins/default/xui/nl/floater_moveview.xml +++ b/indra/newview/skins/default/xui/nl/floater_moveview.xml @@ -1,11 +1,11 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="move floater" title=""> - <button label="" label_selected="" name="turn left btn" tool_tip="Draai links"/> - <button label="" label_selected="" name="turn right btn" tool_tip="Draai rechts"/> - <button label="" label_selected="" name="move up btn" tool_tip="Spring of vlieg omhoog"/> - <button label="" label_selected="" name="move down btn" tool_tip="Kruip of vlieg omlaag"/> - <joystick_slide name="slide left btn" tool_tip="Verplaats links"/> - <joystick_slide name="slide right btn" tool_tip="Verplaats rechts"/> - <joystick_turn name="forward btn" tool_tip="Verplaats vooruit"/> - <joystick_turn name="backward btn" tool_tip="Verplaats achteruit"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="move floater" title=""> + <button label="" label_selected="" name="turn left btn" tool_tip="Draai links"/> + <button label="" label_selected="" name="turn right btn" tool_tip="Draai rechts"/> + <button label="" label_selected="" name="move up btn" tool_tip="Spring of vlieg omhoog"/> + <button label="" label_selected="" name="move down btn" tool_tip="Kruip of vlieg omlaag"/> + <joystick_slide name="slide left btn" tool_tip="Verplaats links"/> + <joystick_slide name="slide right btn" tool_tip="Verplaats rechts"/> + <joystick_turn name="forward btn" tool_tip="Verplaats vooruit"/> + <joystick_turn name="backward btn" tool_tip="Verplaats achteruit"/> +</floater> diff --git a/indra/newview/skins/default/xui/nl/floater_mute_object.xml b/indra/newview/skins/default/xui/nl/floater_mute_object.xml index da1e045b9b344f972d23ecc480fc8945cc7ae263..efc12f29e278f33444e0fc2c0ce696dab2ed33b9 100644 --- a/indra/newview/skins/default/xui/nl/floater_mute_object.xml +++ b/indra/newview/skins/default/xui/nl/floater_mute_object.xml @@ -1,11 +1,11 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="mute by name" title="Negeer object op naam"> - <text name="message"> - Negeer op naam heeft alleen invloed op object chat en IM, niet op geluiden. U dient de naam van het object exact te typen. - </text> - <line_editor name="object_name"> - Object naam - </line_editor> - <button label="Ok" name="OK"/> - <button label="Annuleren" name="Cancel"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="mute by name" title="Negeer object op naam"> + <text name="message"> + Negeer op naam heeft alleen invloed op object chat en IM, niet op geluiden. U dient de naam van het object exact te typen. + </text> + <line_editor name="object_name"> + Object naam + </line_editor> + <button label="Ok" name="OK"/> + <button label="Annuleren" name="Cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/nl/floater_my_friends.xml b/indra/newview/skins/default/xui/nl/floater_my_friends.xml index b01a46abca8784e7b09a14a0922e734e5960166e..ed81e6baf9a24b5b97cecc998537e099600a8c20 100644 --- a/indra/newview/skins/default/xui/nl/floater_my_friends.xml +++ b/indra/newview/skins/default/xui/nl/floater_my_friends.xml @@ -1,7 +1,7 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_my_friends" title="Contacten"> - <tab_container name="friends_and_groups"> - <panel label="Vrienden" name="friends_panel"/> - <panel label="Groepen" name="groups_panel"/> - </tab_container> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_my_friends" title="Contacten"> + <tab_container name="friends_and_groups"> + <panel label="Vrienden" name="friends_panel"/> + <panel label="Groepen" name="groups_panel"/> + </tab_container> +</floater> diff --git a/indra/newview/skins/default/xui/nl/floater_openobject.xml b/indra/newview/skins/default/xui/nl/floater_openobject.xml index 1620359126c14a9d27059b0f3ea43ae30687179b..58ca71505a3890a0aadc6e4567dc635a8d4b20aa 100644 --- a/indra/newview/skins/default/xui/nl/floater_openobject.xml +++ b/indra/newview/skins/default/xui/nl/floater_openobject.xml @@ -1,8 +1,8 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="objectcontents" title="Object inhoud"> - <text name="object_name"> - [DESC]: - </text> - <button label="Kopiëren naar inventaris" label_selected="Kopiëren naar inventaris" name="copy_to_inventory_button"/> - <button label="Kopiëren en dragen" label_selected="Kopiëren en dragen" name="copy_and_wear_button"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="objectcontents" title="Object inhoud"> + <text name="object_name"> + [DESC]: + </text> + <button label="Kopiëren naar inventaris" label_selected="Kopiëren naar inventaris" name="copy_to_inventory_button"/> + <button label="Kopiëren en dragen" label_selected="Kopiëren en dragen" name="copy_and_wear_button"/> +</floater> diff --git a/indra/newview/skins/default/xui/nl/floater_pay.xml b/indra/newview/skins/default/xui/nl/floater_pay.xml index 4844cbf2f76c9e6f4c12e544ea9d92f21926cd75..325541243990a87bf5975d9448cb9b91a512a23d 100644 --- a/indra/newview/skins/default/xui/nl/floater_pay.xml +++ b/indra/newview/skins/default/xui/nl/floater_pay.xml @@ -1,21 +1,21 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Give Money" title=""> - <button label="L$1" label_selected="L$1" name="fastpay 1"/> - <button label="L$5" label_selected="L$5" name="fastpay 5"/> - <button label="L$10" label_selected="L$10" name="fastpay 10"/> - <button label="L$20" label_selected="L$20" name="fastpay 20"/> - <button label="Betaal" label_selected="Betaal" name="pay btn"/> - <button label="Annuleren" label_selected="Annuleren" name="cancel btn"/> - <text name="payee_label"> - Betaal inwoner: - </text> - <text name="payee_name"> - [FIRST] [LAST] - </text> - <text name="fastpay text"> - Snel betalen: - </text> - <text name="amount text"> - Bedrag: - </text> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Give Money" title=""> + <button label="L$1" label_selected="L$1" name="fastpay 1"/> + <button label="L$5" label_selected="L$5" name="fastpay 5"/> + <button label="L$10" label_selected="L$10" name="fastpay 10"/> + <button label="L$20" label_selected="L$20" name="fastpay 20"/> + <button label="Betaal" label_selected="Betaal" name="pay btn"/> + <button label="Annuleren" label_selected="Annuleren" name="cancel btn"/> + <text name="payee_label"> + Betaal inwoner: + </text> + <text name="payee_name"> + [FIRST] [LAST] + </text> + <text name="fastpay text"> + Snel betalen: + </text> + <text name="amount text"> + Bedrag: + </text> +</floater> diff --git a/indra/newview/skins/default/xui/nl/floater_pay_object.xml b/indra/newview/skins/default/xui/nl/floater_pay_object.xml index e0e824e30866ab8a4bd44055a8071d2c120d8f12..23a161ac145841b3b6b5e2644b9901d4c3c6de1b 100644 --- a/indra/newview/skins/default/xui/nl/floater_pay_object.xml +++ b/indra/newview/skins/default/xui/nl/floater_pay_object.xml @@ -1,30 +1,30 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Give Money" title=""> - <text name="payee_group"> - Betaal groep: - </text> - <text name="payee_resident"> - Betaal inwoner: - </text> - <text name="payee_name"> - [FIRST] [LAST] - </text> - <text name="object_name_label"> - Via object: - </text> - <text name="object_name_text"> - ... - </text> - <text name="fastpay text"> - Snel betalen: - </text> - <text name="amount text"> - Bedrag: - </text> - <button label="L$1" label_selected="L$1" name="fastpay 1"/> - <button label="L$5" label_selected="L$5" name="fastpay 5"/> - <button label="L$10" label_selected="L$10" name="fastpay 10"/> - <button label="L$20" label_selected="L$20" name="fastpay 20"/> - <button label="Betaal" label_selected="Betaal" name="pay btn"/> - <button label="Annuleren" label_selected="Annuleren" name="cancel btn"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Give Money" title=""> + <text name="payee_group"> + Betaal groep: + </text> + <text name="payee_resident"> + Betaal inwoner: + </text> + <text name="payee_name"> + [FIRST] [LAST] + </text> + <text name="object_name_label"> + Via object: + </text> + <text name="object_name_text"> + ... + </text> + <text name="fastpay text"> + Snel betalen: + </text> + <text name="amount text"> + Bedrag: + </text> + <button label="L$1" label_selected="L$1" name="fastpay 1"/> + <button label="L$5" label_selected="L$5" name="fastpay 5"/> + <button label="L$10" label_selected="L$10" name="fastpay 10"/> + <button label="L$20" label_selected="L$20" name="fastpay 20"/> + <button label="Betaal" label_selected="Betaal" name="pay btn"/> + <button label="Annuleren" label_selected="Annuleren" name="cancel btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/nl/floater_perm_prefs.xml b/indra/newview/skins/default/xui/nl/floater_perm_prefs.xml new file mode 100644 index 0000000000000000000000000000000000000000..d19b5523f5d8ca094dedd1f9c91daf993066887a --- /dev/null +++ b/indra/newview/skins/default/xui/nl/floater_perm_prefs.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="perm prefs" title="Standaard upload Permissies"> + <panel label="Permissies" name="permissions"> + <button label="?" label_selected="?" name="help"/> + <check_box label="Delen met groep" name="share_with_group"/> + <check_box label="Iedereen mag kopiëren" name="everyone_copy"/> + <text name="NextOwnerLabel"> + Volgende eigenaar kan: + </text> + <check_box label="Wijzigen" name="next_owner_modify"/> + <check_box label="Kopiëren" name="next_owner_copy"/> + <check_box label="Verkopen/weggeven" name="next_owner_transfer"/> + </panel> + <button label="OK" label_selected="OK" name="ok"/> + <button label="Annuleren" label_selected="Annuleren" name="cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/nl/floater_post_process.xml b/indra/newview/skins/default/xui/nl/floater_post_process.xml index 1b6d857cbcc7f9b48e4b2153ae64060db56e0cc1..45fc211aeb44c0cf85a9c96155516a71ff6f0c98 100644 --- a/indra/newview/skins/default/xui/nl/floater_post_process.xml +++ b/indra/newview/skins/default/xui/nl/floater_post_process.xml @@ -1,53 +1,53 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Post-Process Floater" title="Nabewerkinginstellingen"> - <tab_container name="Post-Process Tabs"> - <panel label="Kleurfilter" name="wmiColorFilterPanel"> - <check_box label="Inschakelen" name="wmiColorFilterToggle"/> - <text name="wmiColorFilterBrightnessText"> - Helderheid - </text> - <text name="wmiColorFilterSaturationText"> - Verzadiging - </text> - <text name="wmiColorFilterContrastText"> - Contrast - </text> - <text name="wmiColorFilterBaseText"> - Contrastbasiskleur - </text> - <slider label="R" name="wmiColorFilterBaseR"/> - <slider label="G" name="wmiColorFilterBaseG"/> - <slider label="B" name="wmiColorFilterBaseB"/> - <slider label="I" name="wmiColorFilterBaseI"/> - </panel> - <panel label="Nachtvisie" name="wmiNightVisionPanel"> - <check_box label="Inschakelen" name="wmiNightVisionToggle"/> - <text name="wmiNightVisionBrightMultText"> - Lichtversterking - </text> - <text name="wmiNightVisionNoiseSizeText"> - Ruisgrootte - </text> - <text name="wmiNightVisionNoiseStrengthText"> - Ruissterkte - </text> - </panel> - <panel label="Bloom" name="wmiBloomPanel"> - <check_box label="Inschakelen" name="wmiBloomToggle"/> - <text name="wmiBloomExtractText"> - Lichtsterkte extractie - </text> - <text name="wmiBloomSizeText"> - Bloom-grootte - </text> - <text name="wmiBloomStrengthText"> - Bloom-sterkte - </text> - </panel> - <panel label="Extra's" name="Extras"> - <button label="LaadEffect" label_selected="LaadEffect" name="PPLoadEffect"/> - <button label="Effect opslaan" label_selected="Effect opslaan" name="PPSaveEffect"/> - <line_editor label="Effectnaam" name="PPEffectNameEditor"/> - </panel> - </tab_container> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Post-Process Floater" title="Nabewerkinginstellingen"> + <tab_container name="Post-Process Tabs"> + <panel label="Kleurfilter" name="wmiColorFilterPanel"> + <check_box label="Inschakelen" name="wmiColorFilterToggle"/> + <text name="wmiColorFilterBrightnessText"> + Helderheid + </text> + <text name="wmiColorFilterSaturationText"> + Verzadiging + </text> + <text name="wmiColorFilterContrastText"> + Contrast + </text> + <text name="wmiColorFilterBaseText"> + Contrastbasiskleur + </text> + <slider label="R" name="wmiColorFilterBaseR"/> + <slider label="G" name="wmiColorFilterBaseG"/> + <slider label="B" name="wmiColorFilterBaseB"/> + <slider label="I" name="wmiColorFilterBaseI"/> + </panel> + <panel label="Nachtvisie" name="wmiNightVisionPanel"> + <check_box label="Inschakelen" name="wmiNightVisionToggle"/> + <text name="wmiNightVisionBrightMultText"> + Lichtversterking + </text> + <text name="wmiNightVisionNoiseSizeText"> + Ruisgrootte + </text> + <text name="wmiNightVisionNoiseStrengthText"> + Ruissterkte + </text> + </panel> + <panel label="Bloom" name="wmiBloomPanel"> + <check_box label="Inschakelen" name="wmiBloomToggle"/> + <text name="wmiBloomExtractText"> + Lichtsterkte extractie + </text> + <text name="wmiBloomSizeText"> + Bloom-grootte + </text> + <text name="wmiBloomStrengthText"> + Bloom-sterkte + </text> + </panel> + <panel label="Extra's" name="Extras"> + <button label="LaadEffect" label_selected="LaadEffect" name="PPLoadEffect"/> + <button label="Effect opslaan" label_selected="Effect opslaan" name="PPSaveEffect"/> + <line_editor label="Effectnaam" name="PPEffectNameEditor"/> + </panel> + </tab_container> +</floater> diff --git a/indra/newview/skins/default/xui/nl/floater_postcard.xml b/indra/newview/skins/default/xui/nl/floater_postcard.xml index 8f7a6920096556dd1406b3a1bccf3595b9040905..f31b4795760834a1fc0bc0754b27afdf7cbe11af 100644 --- a/indra/newview/skins/default/xui/nl/floater_postcard.xml +++ b/indra/newview/skins/default/xui/nl/floater_postcard.xml @@ -1,36 +1,36 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Postcard" title="Email foto"> - <text name="to_label"> - Ontvanger e-mail: - </text> - <text name="from_label"> - Uw e-mail: - </text> - <text name="name_label"> - Uw naam: - </text> - <text name="subject_label"> - Onderwerp: - </text> - <line_editor label="Type hier uw onderwerp." name="subject_form"/> - <text name="msg_label"> - Bericht: - </text> - <text_editor name="msg_form"> - Type hier uw bericht. - </text_editor> - <text name="fine_print"> - Indien uw ontvanger deelneemt aan SL, zult u een verwijzingsbonus ontvangen. - </text> - <button label="Annuleren" name="cancel_btn"/> - <button label="Verzenden" name="send_btn"/> - <string name="default_subject"> - Ansichtkaart uit Second Life - </string> - <string name="default_message"> - Kom dit zien! - </string> - <string name="upload_message"> - "Verzenden…" - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Postcard" title="Email foto"> + <text name="to_label"> + Ontvanger e-mail: + </text> + <text name="from_label"> + Uw e-mail: + </text> + <text name="name_label"> + Uw naam: + </text> + <text name="subject_label"> + Onderwerp: + </text> + <line_editor label="Type hier uw onderwerp." name="subject_form"/> + <text name="msg_label"> + Bericht: + </text> + <text_editor name="msg_form"> + Type hier uw bericht. + </text_editor> + <text name="fine_print"> + Indien uw ontvanger deelneemt aan SL, zult u een verwijzingsbonus ontvangen. + </text> + <button label="Annuleren" name="cancel_btn"/> + <button label="Verzenden" name="send_btn"/> + <string name="default_subject"> + Ansichtkaart uit Second Life + </string> + <string name="default_message"> + Kom dit zien! + </string> + <string name="upload_message"> + "Verzenden…" + </string> +</floater> diff --git a/indra/newview/skins/default/xui/nl/floater_preferences.xml b/indra/newview/skins/default/xui/nl/floater_preferences.xml index 6a7a895e473745147be3f13afa097f5dcef43b3b..25984ee65a20b4216eab172349403bb32b173850 100644 --- a/indra/newview/skins/default/xui/nl/floater_preferences.xml +++ b/indra/newview/skins/default/xui/nl/floater_preferences.xml @@ -1,8 +1,8 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Preferences" title="Voorkeuren"> - <button label="OK" label_selected="OK" name="OK"/> - <button label="Annuleren" label_selected="Annuleren" name="Cancel"/> - <button label="Toepassen" label_selected="Toepassen" name="Apply"/> - <button label="Over" label_selected="Over" name="About..."/> - <button label="Help" label_selected="Help" name="Help"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Preferences" title="Voorkeuren"> + <button label="OK" label_selected="OK" name="OK"/> + <button label="Annuleren" label_selected="Annuleren" name="Cancel"/> + <button label="Toepassen" label_selected="Toepassen" name="Apply"/> + <button label="Over" label_selected="Over" name="About..."/> + <button label="Help" label_selected="Help" name="Help"/> +</floater> diff --git a/indra/newview/skins/default/xui/nl/floater_region_info.xml b/indra/newview/skins/default/xui/nl/floater_region_info.xml index 93024ecb138d5d431fd12feca7537cb9e3f4ec51..3d4386bc1637a3d8030fc58aca90425fb29fcf92 100644 --- a/indra/newview/skins/default/xui/nl/floater_region_info.xml +++ b/indra/newview/skins/default/xui/nl/floater_region_info.xml @@ -1,2 +1,2 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="regioninfo" title="Regio/estate"/> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="regioninfo" title="Regio/estate"/> diff --git a/indra/newview/skins/default/xui/nl/floater_report_abuse.xml b/indra/newview/skins/default/xui/nl/floater_report_abuse.xml index eefbc6797bc4588487929728672179aa93db26a9..e82a5a3b89927cec273e1a39198ed8a375eed0a4 100644 --- a/indra/newview/skins/default/xui/nl/floater_report_abuse.xml +++ b/indra/newview/skins/default/xui/nl/floater_report_abuse.xml @@ -1,107 +1,109 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_report_abuse" title="Misbruik rapporteren"> - <check_box label="Voeg schermafbeelding toe" name="screen_check"/> - <text name="reporter_title"> - Rapporteur: - </text> - <text name="reporter_field"> - Loremipsum Dolorsitamut - </text> - <text name="sim_title"> - Regio: - </text> - <text name="sim_field"> - Regionaam - </text> - <text name="pos_title"> - Positie: - </text> - <text name="pos_field"> - {128.1, 128.1, 15.4} - </text> - <text name="select_object_label"> - Klik de knop, daarna het object: - </text> - <button label="" label_selected="" name="pick_btn" tool_tip="Objectkiezer - Identificeer een object als het onderwerp van dit rapport"/> - <text name="object_name_label"> - Naam: - </text> - <text name="object_name"> - Consetetur Sadipscing - </text> - <text name="owner_name_label"> - Eigenaar: - </text> - <text name="owner_name"> - Hendrerit Vulputate - </text> - <combo_box name="category_combo" tool_tip="Categorie -- selecteer de categorie die dit rapport het best beschrijft"> - <combo_box.item name="Select_category" label="Selecteer categorie"/> - <combo_box.item name="Age__Age_play" label="Leeftijd > Leeftijd spelen"/> - <combo_box.item name="Age__Adult_resident_on_Teen_Second_Life" label="Leeftijd > Volwassen inwoner in Teen Second Life"/> - - - - <combo_box.item name="Assault__Combat_sandbox___unsafe_area" label="Aanval > Gevechtszandbak / onveilig gebied"/> - <combo_box.item name="Assault__Safe_area" label="Aanval > Veilig gebied"/> - <combo_box.item name="Assault__Weapons_testing_sandbox" label="Aanval > Zandbak voor het testen van wapens"/> - <combo_box.item name="Commerce__Failure_to_deliver_product_or_service" label="Handel > Product of dienst is niet geleverd"/> - <combo_box.item name="Disclosure__Real_world_information" label="Openbaring > Echte wereld informatie"/> - <combo_box.item name="Disclosure__Remotely_monitoring chat" label="Openbaring > Op afstand chat afluisteren"/> - <combo_box.item name="Disclosure__Second_Life_information_chat_IMs" label="Openbaring > Second Life informatie/chat/IMs"/> - <combo_box.item name="Disturbing_the_peace__Unfair_use_of_region_resources" label="Vredebreuk > Oneerlijk gebruik van regiomiddelen"/> - <combo_box.item name="Disturbing_the_peace__Excessive_scripted_objects" label="Vredebreuk > Excessieve gescripte objecten"/> - <combo_box.item name="Disturbing_the_peace__Object_littering" label="Vredebreuk > Objecten laten rondslingeren"/> - <combo_box.item name="Disturbing_the_peace__Repetitive_spam" label="Vredebreuk > Herhaalde spam"/> - <combo_box.item name="Disturbing_the_peace__Unwanted_advert_spam" label="Vredebreuk > Ongewenste reclame-spam"/> - <combo_box.item name="Fraud__L$" label="Fraude > L$"/> - <combo_box.item name="Fraud__Land" label="Fraude > Land"/> - <combo_box.item name="Fraud__Pyramid_scheme_or_chain_letter" label="Fraude > Piramideschema of kettingbrief"/> - <combo_box.item name="Fraud__US$" label="Fraude > US$"/> - <combo_box.item name="Harassment__Advert_farms___visual_spam" label="Intimidatie > Reclameverzamelingen / visuele spam"/> - <combo_box.item name="Harassment__Defaming_individuals_or_groups" label="Intimidatie > Individuen of groepen in diskrediet brengen"/> - <combo_box.item name="Harassment__Impeding_movement" label="Intimidatie > Beweging verhinderen"/> - <combo_box.item name="Harassment__Sexual_harassment" label="Intimidatie > Seksuele intimidatie"/> - <combo_box.item name="Harassment__Solicting_inciting_others_to_violate_ToS" label="Intimidatie > Anderen uitnodigen/aanzetten tot het schenden van de ToS"/> - <combo_box.item name="Harassment__Verbal_abuse" label="Intimidatie > Verbaal misbruik"/> - <combo_box.item name="Indecency__Broadly_offensive_content_or_conduct" label="Onfatsoenlijkheid > Globaal beledigende inhoud of gedrag"/> - - - - <combo_box.item name="Indecency__Inappropriate_avatar_name" label="Onfatsoenlijkheid > Ongepaste avatar naam"/> - - - - <combo_box.item name="Intellectual_property_infringement_Content_Removal" label="Inbreuk op intellectueel eigendom > Verwijderen van inhoud"/> - <combo_box.item name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit" label="Inbreuk op intellectueel eigendom > CopyBot of misbruik van permissies"/> - <combo_box.item name="Intolerance" label="Intolerantie"/> - <combo_box.item name="Land__Abuse_of_sandbox_resources" label="Land > Misbruik van zandbakmiddelen"/> - <combo_box.item name="Land__Encroachment__Objects_textures" label="Land > Indringing > Objecten/texturen"/> - <combo_box.item name="Land__Encroachment__Particles" label="Land > Indringing > Particles"/> - <combo_box.item name="Land__Encroachment__Trees_plants" label="Land > Indringing > Bomen/planten"/> - <combo_box.item name="Wagering_gambling" label="Weddenschappen/gokken"/> - <combo_box.item name="Other" label="Anders"/> - </combo_box> - <text name="abuser_name_title"> - Misbruikernaam: - </text> - <button label="Kies inwoner" label_selected="" name="select_abuser" tool_tip="Selecteer de naam van de misbruiker uit een lijst"/> - <check_box label="Naam van misbruiker onbekend" name="omit_abuser_name" tool_tip="Vink dit aan wanneer u niet in staat bent de naam van de misbruiker te geven"/> - <text name="abuser_name_title2"> - Locatie van misbruik: - </text> - <text name="sum_title"> - Samenvatting: - </text> - <text name="dscr_title"> - Details: - </text> - <text name="bug_aviso"> - Wees alstublieft zo specifiek mogelijk m.b.t. datum, locatie, aard van het misbruik, relevante chat/IM tekst, en selecteer het object indien mogelijk. - </text> - <text name="incomplete_title"> - Let op: onvolledige rapporten zullen niet worden onderzocht. - </text> - <button label="Annuleren" label_selected="Annuleren" name="cancel_btn"/> - <button label="Misbruik rapporteren" label_selected="Misbruik rapporteren" name="send_btn"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_report_abuse" title="Misbruik rapporteren"> + <check_box label="Voeg schermafbeelding toe" name="screen_check"/> + <text name="reporter_title" width="110"> + Rapporteur: + </text> + <text name="reporter_field" left_delta="70"> + Loremipsum Dolorsitamut + </text> + <text name="sim_title"> + Regio: + </text> + <text name="sim_field" left_delta="70"> + Regionaam + </text> + <text name="pos_title"> + Positie: + </text> + <text name="pos_field" left_delta="70"> + {128.1, 128.1, 15.4} + </text> + <text name="select_object_label"> + Klik de knop, daarna het object: + </text> + <button label="" label_selected="" name="pick_btn" tool_tip="Objectkiezer - Identificeer een object als het onderwerp van dit rapport"/> + <text name="object_name_label"> + Naam: + </text> + <text name="object_name" width="120"> + Consetetur Sadipscing + </text> + <text name="owner_name_label"> + Eigenaar: + </text> + <text name="owner_name"> + Hendrerit Vulputate + </text> + <combo_box name="category_combo" tool_tip="Categorie -- selecteer de categorie die dit rapport het best beschrijft"> + <combo_box.item name="Select_category" label="Selecteer categorie"/> + <combo_box.item name="Age__Age_play" label="Leeftijd > Leeftijd spelen"/> + <combo_box.item name="Age__Adult_resident_on_Teen_Second_Life" label="Leeftijd > Volwassen inwoner in Teen Second Life"/> + <combo_item name="Age__Underage_resident_outside_of_Teen_Second_Life"> + Leeftijd > Minderjarige inwoner buiten Teen Second Life + </combo_item> + <combo_box.item name="Assault__Combat_sandbox___unsafe_area" label="Aanval > Gevechtszandbak / onveilig gebied"/> + <combo_box.item name="Assault__Safe_area" label="Aanval > Veilig gebied"/> + <combo_box.item name="Assault__Weapons_testing_sandbox" label="Aanval > Zandbak voor het testen van wapens"/> + <combo_box.item name="Commerce__Failure_to_deliver_product_or_service" label="Handel > Product of dienst is niet geleverd"/> + <combo_box.item name="Disclosure__Real_world_information" label="Openbaring > Echte wereld informatie"/> + <combo_box.item name="Disclosure__Remotely_monitoring chat" label="Openbaring > Op afstand chat afluisteren"/> + <combo_box.item name="Disclosure__Second_Life_information_chat_IMs" label="Openbaring > Second Life informatie/chat/IMs"/> + <combo_box.item name="Disturbing_the_peace__Unfair_use_of_region_resources" label="Vredebreuk > Oneerlijk gebruik van regiomiddelen"/> + <combo_box.item name="Disturbing_the_peace__Excessive_scripted_objects" label="Vredebreuk > Excessieve gescripte objecten"/> + <combo_box.item name="Disturbing_the_peace__Object_littering" label="Vredebreuk > Objecten laten rondslingeren"/> + <combo_box.item name="Disturbing_the_peace__Repetitive_spam" label="Vredebreuk > Herhaalde spam"/> + <combo_box.item name="Disturbing_the_peace__Unwanted_advert_spam" label="Vredebreuk > Ongewenste reclame-spam"/> + <combo_box.item name="Fraud__L$" label="Fraude > L$"/> + <combo_box.item name="Fraud__Land" label="Fraude > Land"/> + <combo_box.item name="Fraud__Pyramid_scheme_or_chain_letter" label="Fraude > Piramideschema of kettingbrief"/> + <combo_box.item name="Fraud__US$" label="Fraude > US$"/> + <combo_box.item name="Harassment__Advert_farms___visual_spam" label="Intimidatie > Reclameverzamelingen / visuele spam"/> + <combo_box.item name="Harassment__Defaming_individuals_or_groups" label="Intimidatie > Individuen of groepen in diskrediet brengen"/> + <combo_box.item name="Harassment__Impeding_movement" label="Intimidatie > Beweging verhinderen"/> + <combo_box.item name="Harassment__Sexual_harassment" label="Intimidatie > Seksuele intimidatie"/> + <combo_box.item name="Harassment__Solicting_inciting_others_to_violate_ToS" label="Intimidatie > Anderen uitnodigen/aanzetten tot het schenden van de ToS"/> + <combo_box.item name="Harassment__Verbal_abuse" label="Intimidatie > Verbaal misbruik"/> + <combo_box.item name="Indecency__Broadly_offensive_content_or_conduct" label="Onfatsoenlijkheid > Globaal beledigende inhoud of gedrag"/> + <combo_box.item name="Indecency__Inappropriate_avatar_name" label="Onfatsoenlijkheid > Ongepaste avatar naam"/> + <combo_item name="Indecency__Mature_content_in_PG_region"> + Onfatsoenlijkheid > Ongepaste inhoud of gedrag in een PG regio + </combo_item> + <combo_item name="Indecency__Inappropriate_content_in_Mature_region"> + Onfatsoenlijkheid > Ongepaste inhoud of gedrag in een Mature regio + </combo_item> + <combo_box.item name="Intellectual_property_infringement_Content_Removal" label="Inbreuk op intellectueel eigendom > Verwijderen van inhoud"/> + <combo_box.item name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit" label="Inbreuk op intellectueel eigendom > CopyBot of misbruik van permissies"/> + <combo_box.item name="Intolerance" label="Intolerantie"/> + <combo_box.item name="Land__Abuse_of_sandbox_resources" label="Land > Misbruik van zandbakmiddelen"/> + <combo_box.item name="Land__Encroachment__Objects_textures" label="Land > Indringing > Objecten/texturen"/> + <combo_box.item name="Land__Encroachment__Particles" label="Land > Indringing > Particles"/> + <combo_box.item name="Land__Encroachment__Trees_plants" label="Land > Indringing > Bomen/planten"/> + <combo_box.item name="Wagering_gambling" label="Weddenschappen/gokken"/> + <combo_box.item name="Other" label="Anders"/> + </combo_box> + <text name="abuser_name_title"> + Misbruikernaam: + </text> + <button label="Kies inwoner" label_selected="" name="select_abuser" tool_tip="Selecteer de naam van de misbruiker uit een lijst"/> + <check_box label="Naam van misbruiker onbekend" name="omit_abuser_name" tool_tip="Vink dit aan wanneer u niet in staat bent de naam van de misbruiker te geven"/> + <text name="abuser_name_title2"> + Locatie van misbruik: + </text> + <text name="sum_title"> + Samenvatting: + </text> + <text name="dscr_title"> + Details: + </text> + <text name="bug_aviso"> + Wees alstublieft zo specifiek mogelijk m.b.t. datum, locatie, +aard van het misbruik, relevante chat/IM tekst, en selecteer +het object indien mogelijk. + </text> + <text name="incomplete_title"> + Let op: onvolledige rapporten zullen niet worden onderzocht. + </text> + <button label="Annuleren" label_selected="Annuleren" name="cancel_btn"/> + <button label="Misbruik rapporteren" label_selected="Misbruik rapporteren" name="send_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/nl/floater_script_debug.xml b/indra/newview/skins/default/xui/nl/floater_script_debug.xml index 9ac059330ef2cf87be94a1a1c5c4e3b4d1523cc5..306ad5d1a3d1e08c9095625d45d3d4f21fe1e179 100644 --- a/indra/newview/skins/default/xui/nl/floater_script_debug.xml +++ b/indra/newview/skins/default/xui/nl/floater_script_debug.xml @@ -1,6 +1,6 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<multi_floater name="script debug floater" title="Script waarschuwing/fout"> - <tab_container name="Preview Tabs"> - <floater label="Script" name="all_scripts" title="[Alle scripts]"/> - </tab_container> -</multi_floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<multi_floater name="script debug floater" title="Script waarschuwing/fout"> + <tab_container name="Preview Tabs"> + <floater label="Script" name="all_scripts" title="[Alle scripts]"/> + </tab_container> +</multi_floater> diff --git a/indra/newview/skins/default/xui/nl/floater_script_queue.xml b/indra/newview/skins/default/xui/nl/floater_script_queue.xml index 18c0667036ada9cc83479de18c711b6b6ca8b2ce..38c227e53c2ea7a6244295541f26eac103261acb 100644 --- a/indra/newview/skins/default/xui/nl/floater_script_queue.xml +++ b/indra/newview/skins/default/xui/nl/floater_script_queue.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="queue" title="Voortgang opnieuw instellen"> - <button label="Sluiten" label_selected="Sluiten" name="close"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="queue" title="Voortgang opnieuw instellen"> + <button label="Sluiten" label_selected="Sluiten" name="close"/> +</floater> diff --git a/indra/newview/skins/default/xui/nl/floater_select_key.xml b/indra/newview/skins/default/xui/nl/floater_select_key.xml index 7d29c6cc8253286f9cac3c3dc85f734f4be1977d..da97c03a6caffab3ec66160edecfeb1a14738833 100644 --- a/indra/newview/skins/default/xui/nl/floater_select_key.xml +++ b/indra/newview/skins/default/xui/nl/floater_select_key.xml @@ -1,7 +1,7 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="modal container" title=""> - <button label="Annuleren" label_selected="Annuleren" name="Cancel"/> - <text name="Save item as:"> - Druk een toets om te selecteren - </text> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="modal container" title=""> + <button label="Annuleren" label_selected="Annuleren" name="Cancel"/> + <text name="Save item as:"> + Druk een toets om te selecteren + </text> +</floater> diff --git a/indra/newview/skins/default/xui/nl/floater_sell_land.xml b/indra/newview/skins/default/xui/nl/floater_sell_land.xml index e8a65d08455baa6517ee3567e83dd0d57f59b16f..ed5cd501651fe0eff5fa0e81898178032cbb7b8f 100644 --- a/indra/newview/skins/default/xui/nl/floater_sell_land.xml +++ b/indra/newview/skins/default/xui/nl/floater_sell_land.xml @@ -1,62 +1,61 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="sell land" title="Verkoop land"> - <text name="info_parcel_label"> - Perceel: - </text> - <text name="info_parcel"> - PERCEEL NAAM - </text> - <text name="info_size_label"> - Grootte: - </text> - <text name="info_size"> - [AREA] m2 - </text> - <text name="info_action"> - Om dit perceel te verkopen: - </text> - <text name="price_label"> - Stel een prijs in: - </text> - <text name="price_text"> - Kies een geschikte prijs voor dit land - </text> - <text name="price_ld"> - L$ - </text> - <text name="price_per_m"> - (L$[PER_METER] per vierkante meter) - </text> - <text name="sell_to_label"> - Verkoop het land aan: - </text> - <text name="sell_to_text"> - Kies of u aan iedereen wil verkopen of een specifieke koper. - </text> - <combo_box name="sell_to"> - <combo_box.item name="--selectone--" label="selecteer een --"/> - <combo_box.item name="Anyone" label="Iedereen"/> - <combo_box.item name="Specificuser:" label="Specifieke gebruiker:"/> - </combo_box> - <button label="Selecteren..." name="sell_to_select_agent"/> - <text name="sell_objects_label"> - Verkoop de objecten samen met het land? - </text> - <text name="sell_objects_text"> - Overdraagbare objecten die eigendom zijn van de landeigenaar zullen van eigenaar veranderen. - </text> - <radio_group name="sell_objects"> - <radio_item name="no"> - Nee, behoud het eigendom van objecten - </radio_item> - <radio_item name="yes"> - Ja, verkoop objecten met het land - </radio_item> - </radio_group> - <button label="Toon objecten" name="show_objects"/> - <text name="nag_message_label"> - ONTHOUD: Alle verkopen zijn definitief. - </text> - <button label="Zet het land te koop" name="sell_btn"/> - <button label="Annuleren" name="cancel_btn"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="sell land" title="Verkoop land"> + <text name="info_parcel_label"> + Perceel: + </text> + <text name="info_parcel"> + PERCEEL NAAM + </text> + <text name="info_size_label"> + Grootte: + </text> + <text name="info_size"> + [AREA] m² + </text> + <text height="28" name="info_action" bottom_delta="-57"> + Om dit perceel te +verkopen: + </text> + <icon bottom_delta="-86" name="step_price" /> + <text name="price_label"> + Stel een prijs in: + </text> + <text name="price_text"> + Kies een geschikte prijs voor dit land. + </text> + <text name="price_ld"> + L$ + </text> + <text name="price_per_m"> + (L$[PER_METER] per vierkante meter) + </text> + <text name="sell_to_label"> + Verkoop het land aan: + </text> + <text name="sell_to_text"> + Kies of u aan iedereen wil verkopen of een specifieke koper. + </text> + <combo_box name="sell_to"> + <combo_box.item name="--selectone--" label="selecteer een --"/> + <combo_box.item name="Anyone" label="Iedereen"/> + <combo_box.item name="Specificuser:" label="Specifieke gebruiker:"/> + </combo_box> + <button label="Selecteren..." name="sell_to_select_agent"/> + <text name="sell_objects_label"> + Verkoop de objecten samen met het land? + </text> + <text name="sell_objects_text"> + Overdraagbare objecten die eigendom zijn van de landeigenaar +zullen van eigenaar veranderen. + </text> + <radio_group name="sell_objects" bottom_delta="-58"> + <radio_item name="no" label="Nee, behoud het eigendom van objecten" /> + <radio_item name="yes" label="Ja, verkoop objecten met het land" /> + </radio_group> + <button label="Toon objecten" name="show_objects"/> + <text name="nag_message_label"> + ONTHOUD: Alle verkopen zijn definitief. + </text> + <button label="Zet het land te koop" name="sell_btn"/> + <button label="Annuleren" name="cancel_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/nl/floater_snapshot.xml b/indra/newview/skins/default/xui/nl/floater_snapshot.xml index 6e3c71509ef1b9b3f2439748d7a517fa78d20ffd..c7174d42f3c908775402fd4530c669f8913f299d 100644 --- a/indra/newview/skins/default/xui/nl/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/nl/floater_snapshot.xml @@ -1,85 +1,79 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Snapshot" title="Fotovoorbeeld"> - <text name="type_label"> - Fotobestemming - </text> - <radio_group label="Fototype" name="snapshot_type_radio"> - <radio_item name="postcard"> - Verzend via e-mail - </radio_item> - <radio_item name="texture"> - Opslaan in uw inventaris (L$[AMOUNT]) - </radio_item> - <radio_item name="local"> - Opslaan op uw harde schijf - </radio_item> - </radio_group> - <text name="file_size_label"> - Bestandsgrootte: [SIZE] KB - </text> - <button label="Ververs foto" name="new_snapshot_btn"/> - <button label="Verzenden" name="send_btn"/> - <button label="Opslaan (L$[AMOUNT])" name="upload_btn"/> - <flyout_button label="Opslaan" name="save_btn" tool_tip="Afbeelding in een bestand opslaan"> - <flyout_button_item name="save_item" label="Opslaan"/> - <flyout_button_item name="saveas_item" label="Opslaan als..."/> - </flyout_button> - <button label="Annuleren" name="discard_btn"/> - <button label="Meer >>" name="more_btn" tool_tip="Geavanceerde opties"/> - <button label="<< Minder" name="less_btn" tool_tip="Geavanceerde opties"/> - <text name="type_label2"> - Grootte - </text> - <text name="format_label"> - Formaat - </text> - <combo_box label="Resolutie" name="postcard_size_combo"> - <combo_box.item name="CurrentWindow" label="Huidig venster"/> - <combo_box.item name="640x480" label="640x480"/> - <combo_box.item name="800x600" label="800x600"/> - <combo_box.item name="1024x768" label="1024x768"/> - <combo_box.item name="Custom" label="Aangepast"/> - </combo_box> - <combo_box label="Resolutie" name="texture_size_combo"> - <combo_box.item name="CurrentWindow" label="Huidig venster"/> - <combo_box.item name="Small(128x128)" label="Klein (128x128)"/> - <combo_box.item name="Medium(256x256)" label="Middel (256x256)"/> - <combo_box.item name="Large(512x512)" label="Groot (512x512)"/> - <combo_box.item name="Custom" label="Aangepast"/> - </combo_box> - <combo_box label="Resolutie" name="local_size_combo"> - <combo_box.item name="CurrentWindow" label="Huidig venster"/> - <combo_box.item name="320x240" label="320x240"/> - <combo_box.item name="640x480" label="640x480"/> - <combo_box.item name="800x600" label="800x600"/> - <combo_box.item name="1024x768" label="1024x768"/> - <combo_box.item name="1280x1024" label="1280x1024"/> - <combo_box.item name="1600x1200" label="1600x1200"/> - <combo_box.item name="Custom" label="Aangepast"/> - </combo_box> - <combo_box label="Formaat" name="local_format_combo"> - <combo_box.item name="PNG" label="PNG"/> - <combo_box.item name="JPEG" label="JPEG"/> - <combo_box.item name="BMP" label="BMP"/> - </combo_box> - <spinner label="Breedte" name="snapshot_width"/> - <spinner label="Hoogte" name="snapshot_height"/> - <check_box label="Beperk verhoudingen" name="keep_aspect_check"/> - <slider label="Afbeeldingkwaliteit" name="image_quality_slider"/> - <text name="layer_type_label"> - Vastleggen: - </text> - <combo_box label="Afbeeldingslagen" name="layer_types"> - <combo_box.item name="Colors" label="Kleuren"/> - <combo_box.item name="Depth" label="Diepte"/> - <combo_box.item name="ObjectMattes" label="Object matheid"/> - </combo_box> - <check_box label="Toon interface in foto" name="ui_check"/> - <check_box label="Toon HUD objecten in foto" name="hud_check"/> - <check_box label="Open houden na opslaan" name="keep_open_check"/> - <check_box label="Frame bevriezen (volledig scherm voorbeeld)" name="freeze_frame_check"/> - <check_box label="Automatisch verversen" name="auto_snapshot_check"/> - <string name="unknown"> - onbekend - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Snapshot" title="Fotovoorbeeld"> + <text name="type_label"> + Fotobestemming + </text> + <radio_group label="Fototype" name="snapshot_type_radio"> + <radio_item name="postcard" label="Verzend via e-mail" /> + <radio_item name="texture" label="Opslaan in uw inventaris (L$[AMOUNT])" /> + <radio_item name="local" label="Opslaan op uw harde schijf" /> + </radio_group> + <text name="file_size_label"> + Bestandsgrootte: [SIZE] KB + </text> + <button label="Ververs foto" name="new_snapshot_btn"/> + <button label="Verzenden" name="send_btn"/> + <button label="Opslaan (L$[AMOUNT])" name="upload_btn"/> + <flyout_button label="Opslaan" name="save_btn" tool_tip="Afbeelding in een bestand opslaan"> + <flyout_button_item name="save_item" label="Opslaan"/> + <flyout_button_item name="saveas_item" label="Opslaan als..."/> + </flyout_button> + <button label="Annuleren" name="discard_btn"/> + <button label="Meer >>" name="more_btn" tool_tip="Geavanceerde opties"/> + <button label="<< Minder" name="less_btn" tool_tip="Geavanceerde opties"/> + <text name="type_label2"> + Grootte + </text> + <text name="format_label"> + Formaat + </text> + <combo_box label="Resolutie" name="postcard_size_combo"> + <combo_box.item name="CurrentWindow" label="Huidig venster"/> + <combo_box.item name="640x480" label="640x480"/> + <combo_box.item name="800x600" label="800x600"/> + <combo_box.item name="1024x768" label="1024x768"/> + <combo_box.item name="Custom" label="Aangepast"/> + </combo_box> + <combo_box label="Resolutie" name="texture_size_combo"> + <combo_box.item name="CurrentWindow" label="Huidig venster"/> + <combo_box.item name="Small(128x128)" label="Klein (128x128)"/> + <combo_box.item name="Medium(256x256)" label="Middel (256x256)"/> + <combo_box.item name="Large(512x512)" label="Groot (512x512)"/> + <combo_box.item name="Custom" label="Aangepast"/> + </combo_box> + <combo_box label="Resolutie" name="local_size_combo"> + <combo_box.item name="CurrentWindow" label="Huidig venster"/> + <combo_box.item name="320x240" label="320x240"/> + <combo_box.item name="640x480" label="640x480"/> + <combo_box.item name="800x600" label="800x600"/> + <combo_box.item name="1024x768" label="1024x768"/> + <combo_box.item name="1280x1024" label="1280x1024"/> + <combo_box.item name="1600x1200" label="1600x1200"/> + <combo_box.item name="Custom" label="Aangepast"/> + </combo_box> + <combo_box label="Formaat" name="local_format_combo"> + <combo_box.item name="PNG" label="PNG"/> + <combo_box.item name="JPEG" label="JPEG"/> + <combo_box.item name="BMP" label="BMP"/> + </combo_box> + <spinner label="Breedte" name="snapshot_width" label_width="48" width="100"/> + <spinner label="Hoogte" name="snapshot_height" label_width="41" width="95" left="114"/> + <check_box label="Beperk verhoudingen" name="keep_aspect_check"/> + <slider label="Afbeeldingkwaliteit" name="image_quality_slider"/> + <text name="layer_type_label" width="100"> + Vastleggen: + </text> + <combo_box label="Afbeeldingslagen" name="layer_types" width="130" left="76"> + <combo_box.item name="Colors" label="Kleuren"/> + <combo_box.item name="Depth" label="Diepte"/> + <combo_box.item name="ObjectMattes" label="Object matheid"/> + </combo_box> + <check_box label="Toon interface in foto" name="ui_check"/> + <check_box label="Toon HUD objecten in foto" name="hud_check"/> + <check_box label="Open houden na opslaan" name="keep_open_check"/> + <check_box label="Frame bevriezen" name="freeze_frame_check"/> + <check_box label="Automatisch verversen" name="auto_snapshot_check"/> + <string name="unknown"> + onbekend + </string> +</floater> diff --git a/indra/newview/skins/default/xui/nl/floater_statistics.xml b/indra/newview/skins/default/xui/nl/floater_statistics.xml new file mode 100644 index 0000000000000000000000000000000000000000..b899c32a56c19935d3e954dd856358b48df9930a --- /dev/null +++ b/indra/newview/skins/default/xui/nl/floater_statistics.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="stats floater" title="Statistieken"/> diff --git a/indra/newview/skins/default/xui/nl/floater_telehub.xml b/indra/newview/skins/default/xui/nl/floater_telehub.xml index 88f997f327238ebf0860e36697e530c052ae26f8..b1fc80cf3ce082a12206f244bd3d7c47e9adebf3 100644 --- a/indra/newview/skins/default/xui/nl/floater_telehub.xml +++ b/indra/newview/skins/default/xui/nl/floater_telehub.xml @@ -1,25 +1,25 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="telehub" title="Telehub"> - <text name="status_text_connected"> - Telehub verbonden met object [OBJECT] - </text> - <text name="status_text_not_connected"> - Geen telehub verbonden. - </text> - <text name="help_text_connected"> - Om te verwijderen, klik Verbinding verbreken - </text> - <text name="help_text_not_connected"> - Selecteer objecten klik Verbind telehub - </text> - <button label="Verbind telehub" name="connect_btn"/> - <button label="Verbinding verbreken" name="disconnect_btn"/> - <text name="spawn_points_text"> - Spawnpunten (posities, niet objecten): - </text> - <button label="Spawn toevoegen" name="add_spawn_point_btn"/> - <button label="Verwijder Spawn" name="remove_spawn_point_btn"/> - <text name="spawn_point_help"> - Selecteer object en klik Toevoegen om positie te specificeren. U kunt het object daarna verplaatsen of verwijderen. Posities zijn relatief ten opzichte van het middelpunt van de telehub. Selecteer een item in de lijst om de positie in de wereld te tonen. - </text> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="telehub" title="Telehub"> + <text name="status_text_connected"> + Telehub verbonden met object [OBJECT] + </text> + <text name="status_text_not_connected"> + Geen telehub verbonden. + </text> + <text name="help_text_connected"> + Om te verwijderen, klik Verbinding verbreken + </text> + <text name="help_text_not_connected"> + Selecteer objecten klik Verbind telehub + </text> + <button label="Verbind telehub" name="connect_btn"/> + <button label="Verbinding verbreken" name="disconnect_btn"/> + <text name="spawn_points_text"> + Spawnpunten (posities, niet objecten): + </text> + <button label="Spawn toevoegen" name="add_spawn_point_btn"/> + <button label="Verwijder Spawn" name="remove_spawn_point_btn"/> + <text name="spawn_point_help"> + Selecteer object en klik Toevoegen om positie te specificeren. U kunt het object daarna verplaatsen of verwijderen. Posities zijn relatief ten opzichte van het middelpunt van de telehub. Selecteer een item in de lijst om de positie in de wereld te tonen. + </text> +</floater> diff --git a/indra/newview/skins/default/xui/nl/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/nl/floater_texture_ctrl.xml index 8cdde0231ad60d7bad68408934c23b705ff3e16d..440a31097dbaf4680d5ee1c17d22612c12b28067 100644 --- a/indra/newview/skins/default/xui/nl/floater_texture_ctrl.xml +++ b/indra/newview/skins/default/xui/nl/floater_texture_ctrl.xml @@ -1,23 +1,23 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="texture picker" title="Kies: Textuur"> - <string name="choose_picture"> - Klik om een afbeelding te kiezen - </string> - <text name="Multiple"> - Meerdere - </text> - <text name="unknown"> - Afmetingen: [DIMENSIONS] - </text> - <button label="Standaard" label_selected="Standaard" name="Default"/> - <button label="Geen" label_selected="Geen" name="None"/> - <button label="Blanco" label_selected="Blanco" name="Blank"/> - <check_box label="Toon mappen" name="show_folders_check"/> - <search_editor label="Type hier om te zoeken" name="inventory search editor"/> - <check_box label="Meteen toepassen" name="apply_immediate_check"/> - <button label="Annuleren" label_selected="Annuleren" name="Cancel"/> - <button label="Selecteren" label_selected="Selecteren" name="Select"/> - <string name="pick title"> - Kies: - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="texture picker" title="Kies: Textuur"> + <string name="choose_picture"> + Klik om een afbeelding te kiezen + </string> + <text name="Multiple"> + Meerdere + </text> + <text name="unknown"> + Afmetingen: [DIMENSIONS] + </text> + <button label="Standaard" label_selected="Standaard" name="Default"/> + <button label="Geen" label_selected="Geen" name="None"/> + <button label="Blanco" label_selected="Blanco" name="Blank"/> + <check_box label="Toon mappen" name="show_folders_check"/> + <search_editor label="Type hier om te zoeken" name="inventory search editor"/> + <check_box label="Meteen toepassen" name="apply_immediate_check"/> + <button label="Annuleren" label_selected="Annuleren" name="Cancel"/> + <button label="Selecteren" label_selected="Selecteren" name="Select"/> + <string name="pick title"> + Kies: + </string> +</floater> diff --git a/indra/newview/skins/default/xui/nl/floater_tools.xml b/indra/newview/skins/default/xui/nl/floater_tools.xml index 9e542799f0678bf179abad70ffff73af6e32b3f4..c7f99195dd9f8c7f2022a5506bb5349e16ade81a 100644 --- a/indra/newview/skins/default/xui/nl/floater_tools.xml +++ b/indra/newview/skins/default/xui/nl/floater_tools.xml @@ -1,488 +1,620 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="toolbox floater" title=""> - <button label="" label_selected="" name="button focus" tool_tip="Focus"/> - <button label="" label_selected="" name="button move" tool_tip="Verplaats"/> - <button label="" label_selected="" name="button edit" tool_tip="Bewerk"/> - <button label="" label_selected="" name="button create" tool_tip="Maak"/> - <button label="" label_selected="" name="button land" tool_tip="Land"/> - <check_box label="Zoom" name="radio zoom"/> - <check_box label="Draaien (Ctrl)" name="radio orbit"/> - <check_box label="Verplaatsen (Ctrl-Shift)" name="radio pan"/> - <check_box label="Verplaatsen" name="radio move"/> - <check_box label="Optillen (Ctrl)" name="radio lift"/> - <check_box label="Draaien (Ctrl-Shift)" name="radio spin"/> - <check_box label="Positie" name="radio position"/> - <check_box label="Draaien (Ctrl)" name="radio rotate"/> - <check_box label="Uitrekken (Ctrl-Shift)" name="radio stretch"/> - <check_box label="Selecteer textuur" name="radio select face"/> - <check_box label="Bewerk gekoppelde onderdelen" name="checkbox edit linked parts"/> - <text name="text ruler mode"> - Liniaal modus - </text> - <combo_box name="combobox grid mode"> - <combo_box.item name="World" label="Wereld"/> - <combo_box.item name="Local" label="Lokaal"/> - <combo_box.item name="Reference" label="Referentie"/> - </combo_box> - <check_box label="Beide zijden uitrekken" name="checkbox uniform"/> - <check_box label="Texturen uitrekken" name="checkbox stretch textures"/> - <check_box label="Gebruik grid" name="checkbox snap to grid"/> - <button label="Opties..." label_selected="Opties..." name="Options..."/> - <text name="text status"> - Sleep om te verplaatsen, Shift-slepen om te kopiëren - </text> - <button label="" label_selected="" name="ToolCube" tool_tip="Kubus"/> - <button label="" label_selected="" name="ToolPrism" tool_tip="Prisma"/> - <button label="" label_selected="" name="ToolPyramid" tool_tip="Piramide"/> - <button label="" label_selected="" name="ToolTetrahedron" tool_tip="Tetrahedron"/> - <button label="" label_selected="" name="ToolCylinder" tool_tip="Cylinder"/> - <button label="" label_selected="" name="ToolHemiCylinder" tool_tip="Halve cilinder"/> - <button label="" label_selected="" name="ToolCone" tool_tip="Kegel"/> - <button label="" label_selected="" name="ToolHemiCone" tool_tip="Halve kegel"/> - <button label="" label_selected="" name="ToolSphere" tool_tip="Bol"/> - <button label="" label_selected="" name="ToolHemiSphere" tool_tip="Halve bol"/> - <button label="" label_selected="" name="ToolTorus" tool_tip="Torus"/> - <button label="" label_selected="" name="ToolTube" tool_tip="Buis"/> - <button label="" label_selected="" name="ToolRing" tool_tip="Ring"/> - <button label="" label_selected="" name="ToolTree" tool_tip="Boom"/> - <button label="" label_selected="" name="ToolGrass" tool_tip="Gras"/> - <check_box label="Behoud geselecteerde gereedschap" name="checkbox sticky"/> - <check_box label="Kopieer selectie" name="checkbox copy selection"/> - <check_box label="Middelpunt kopie" name="checkbox copy centers"/> - <check_box label="Roteer kopie" name="checkbox copy rotates"/> - <check_box label="Selecteer land" name="radio select land"/> - <check_box label="Land vlakmaken" name="radio flatten"/> - <check_box label="Land verhogen" name="radio raise"/> - <check_box label="Land verlagen" name="radio lower"/> - <check_box label="Land egaliseren" name="radio smooth"/> - <check_box label="Land opruwen" name="radio noise"/> - <check_box label="Herstel land" name="radio revert"/> - <combo_box name="combobox brush size"> - <combo_box.item name="Small" label="Klein"/> - <combo_box.item name="Medium" label="Medium"/> - <combo_box.item name="Large" label="Groot"/> - </combo_box> - <text name="Strength:"> - Sterkte: - </text> - <button label="Toepassen op selectie" label_selected="Toepassen op selectie" name="button apply to selection" tool_tip="Wijzig geselecteerd land"/> - <check_box label="Toon eigenaren" name="checkbox show owners"/> - <button label="Meer >>" name="button more" tool_tip="Geavanceerde opties"/> - <button label="<< Minder" name="button less" tool_tip="Geavanceerde opties"/> - <tab_container name="Object Info Tabs"> - <panel label="Algemeen" name="General"> - <text name="Name:"> - Naam: - </text> - <text name="Description:"> - Omschrijving: - </text> - <text name="Creator:"> - Maker: - </text> - <text name="Creator Name"> - Thrax Linden - </text> - <button label="Profiel..." label_selected="Profiel..." name="button creator profile"/> - <text name="Owner:"> - Eigenaar - </text> - <text name="Owner Name"> - Thrax Linden - </text> - <button label="Profiel..." label_selected="Profiel..." name="button owner profile"/> - <text name="Group:"> - Groep: - </text> - <text name="Group Name Proxy"> - De Lindens - </text> - <button label="Instellen..." label_selected="Instellen..." name="button set group"/> - <text name="prim info"> - 1 Object, 1 Primitief - </text> - <text name="Permissions:"> - Permissies: - </text> - <text name="perm_modify"> - U kunt dit object wijzigen - </text> - <check_box label="Deel met groep" name="checkbox share with group" tool_tip="Groepsleden toestaan om te verplaatsen, wijzigen, kopiëren en verwijderen."/> - <string name="text deed continued"> - Overdragen... - </string> - <string name="text deed"> - Overdragen - </string> - <button label="Overdragen..." label_selected="Overdragen..." name="button deed" tool_tip="Groepgedeelde objecten kunnen door een groepofficier worden overgedragen"/> - <check_box label="Iedereen mag verplaatsen" name="checkbox allow everyone move"/> - <check_box label="Iedereen mag kopiëren" name="checkbox allow everyone copy"/> - <check_box label="Toon in zoeken" name="search_check" tool_tip="Laat mensen dit object zien in zoekresultaten"/> - <check_box label="Te koop" name="checkbox for sale"/> - <text name="Cost"> - Prijs: L$ - </text> - <radio_group name="sale type"> - <radio_item name="Original"> - Origineel - </radio_item> - <radio_item name="Copy"> - Kopie - </radio_item> - <radio_item name="Contents"> - Inhoud - </radio_item> - </radio_group> - <text name="Next owner can:"> - Volgende eigenaar kan: - </text> - <check_box label="Wijzigen" name="checkbox next owner can modify"/> - <check_box label="Kopiëren" name="checkbox next owner can copy"/> - <check_box label="Verkopen/weggeven" name="checkbox next owner can transfer"/> - <text name="label click action"> - Wanneer links-geklikt: - </text> - <combo_box name="clickaction"> - <combo_box.item name="Touch/grab(default)" label="Aanraken/pakken (standaard)"/> - <combo_box.item name="Sitonobject" label="Zit op object"/> - <combo_box.item name="Buyobject" label="Koop object"/> - <combo_box.item name="Payobject" label="Betaal object"/> - <combo_box.item name="Open" label="Open"/> - <combo_box.item name="Play" label="Perceelmedia afspelen"/> - <combo_box.item name="Opemmedia" label="Perceelmedia openen"/> - </combo_box> - <text name="B:"> - B: - </text> - <text name="O:"> - O: - </text> - <text name="G:"> - G: - </text> - <text name="E:"> - E: - </text> - <text name="N:"> - N: - </text> - <text name="F:"> - F: - </text> - <string name="text modify info 1"> - U kunt dit object wijzigen - </string> - <string name="text modify info 2"> - U kunt deze objecten wijzigen - </string> - <string name="text modify info 3"> - U kunt dit object niet wijzigen - </string> - <string name="text modify info 4"> - U kunt deze objecten niet wijzigen - </string> - <string name="text modify warning"> - U moet het hele object selecteren om permissies in te stellen - </string> - <string name="Cost Default"> - Prijs: L$ - </string> - <string name="Cost Total"> - Totale Prijs: L$ - </string> - <string name="Cost Per Unit"> - Prijs per: L$ - </string> - <string name="Cost Mixed"> - Gemengde prijs - </string> - <string name="Sale Mixed"> - Gemengde verkoop - </string> - </panel> - <panel label="Object" name="Object"> - <text name="select_single"> - Selecteer slechts één primitief om parameters te bewerken - </text> - <text name="edit_object"> - Bewerk object parameters: - </text> - <check_box label="Vergrendeld" name="checkbox locked" tool_tip="Voorkomt het verplaatsen of verwijderen van objecten. Regelmatig handig tijdens het bouwen om onbedoelde bewerkingen te voorkomen."/> - <check_box label="Fysiek" name="Physical Checkbox Ctrl" tool_tip="Staat toe dat objecten geduwd worden en worden beïnvloed door de zwaartekracht"/> - <check_box label="Tijdelijk" name="Temporary Checkbox Ctrl" tool_tip="Zorgt ervoor dat het object 1 minuut na creatie wordt verwijderd."/> - <check_box label="Fantoom" name="Phantom Checkbox Ctrl" tool_tip="Zorgt ervoor dat objecten niet kunnen botsen met andere objecten of avatars"/> - <text name="label position"> - Positie (meters) - </text> - <spinner label="X" name="Pos X"/> - <spinner label="Y" name="Pos Y"/> - <spinner label="Z" name="Pos Z"/> - <text name="label size"> - Grootte (meters) - </text> - <spinner label="X" name="Scale X"/> - <spinner label="Y" name="Scale Y"/> - <spinner label="Z" name="Scale Z"/> - <text name="label rotation"> - Rotatie (graden) - </text> - <spinner label="X" name="Rot X"/> - <spinner label="Y" name="Rot Y"/> - <spinner label="Z" name="Rot Z"/> - <text name="label material"> - Materiaal - </text> - <combo_box name="material"> - <combo_box.item name="Stone" label="Steen"/> - <combo_box.item name="Metal" label="Metaal"/> - <combo_box.item name="Glass" label="Glas"/> - <combo_box.item name="Wood" label="Hout"/> - <combo_box.item name="Flesh" label="Vlees"/> - <combo_box.item name="Plastic" label="Plastic"/> - <combo_box.item name="Rubber" label="Rubber"/> - </combo_box> - <text name="label basetype"> - Bouwbloktype - </text> - <combo_box name="comboBaseType"> - <combo_box.item name="Box" label="Kubus"/> - <combo_box.item name="Cylinder" label="Cilinder"/> - <combo_box.item name="Prism" label="Prisma"/> - <combo_box.item name="Sphere" label="Bol"/> - <combo_box.item name="Torus" label="Torus"/> - <combo_box.item name="Tube" label="Buis"/> - <combo_box.item name="Ring" label="Ring"/> - <combo_box.item name="Sculpted" label="Sculpted"/> - </combo_box> - <text name="text cut"> - Uitsnede begin en einde - </text> - <spinner label="B" name="cut begin"/> - <spinner label="E" name="cut end"/> - <text name="text hollow"> - Hol - </text> - <text name="text skew"> - Verschuiven - </text> - <text name="Hollow Shape"> - Holtevorm - </text> - <combo_box name="hole"> - <combo_box.item name="Default" label="Standaard"/> - <combo_box.item name="Circle" label="Cirkel"/> - <combo_box.item name="Square" label="Vierkant"/> - <combo_box.item name="Triangle" label="Driehoek"/> - </combo_box> - <text name="text twist"> - Verdraai begin en einde - </text> - <spinner label="B" name="Twist Begin"/> - <spinner label="E" name="Twist End"/> - <text name="scale_taper"> - Knijpen - </text> - <text name="scale_hole"> - Gatgrootte - </text> - <spinner label="X" name="Taper Scale X"/> - <spinner label="Y" name="Taper Scale Y"/> - <text name="text topshear"> - Bovenkant verschuiven - </text> - <spinner label="X" name="Shear X"/> - <spinner label="Y" name="Shear Y"/> - <text name="advanced_cut"> - Profielsnede begin en einde - </text> - <text name="advanced_dimple"> - Deuk begin en einde - </text> - <spinner label="B" name="Path Limit Begin"/> - <spinner label="E" name="Path Limit End"/> - <text name="text taper2"> - Knijpen - </text> - <spinner label="X" name="Taper X"/> - <spinner label="Y" name="Taper Y"/> - <text name="text radius delta"> - Straal - </text> - <text name="text revolutions"> - Omwentelingen - </text> - <texture_picker label="Sculpt textuur" name="sculpt texture control" tool_tip="Klik om een afbeelding te kiezen"/> - <check_box label="Spiegelen" name="sculpt mirror control" tool_tip="Spiegelt de sculpted prim om de X-as"/> - <check_box label="Binnenstebuiten" name="sculpt invert control" tool_tip="Inverteert de normalen van de sculpted prim, zodat deze binnenstebuiten verschijnt."/> - <text name="label sculpt type"> - Hechtingstype - </text> - <combo_box name="sculpt type control"> - <combo_box.item name="None" label="none)"/> - <combo_box.item name="Sphere" label="Bol"/> - <combo_box.item name="Torus" label="Torus"/> - <combo_box.item name="Plane" label="Vlak"/> - <combo_box.item name="Cylinder" label="Cilinder"/> - </combo_box> - </panel> - <panel label="Kenmerken" name="Features"> - <text name="select_single"> - Selecteer slechts één primitief om kenmerken te bewerken - </text> - <text name="edit_object"> - Bewerk objectkenmerken: - </text> - <check_box label="Flexibiliteit" name="Flexible1D Checkbox Ctrl" tool_tip="Staat toe dat objecten kunnen buigen om de Z-as. (alleen aan de client kant)"/> - <spinner label="Zachtheid" name="FlexNumSections"/> - <spinner label="Zwaartekracht" name="FlexGravity"/> - <spinner label="Slepen" name="FlexFriction"/> - <spinner label="Wind" name="FlexWind"/> - <spinner label="Spanning" name="FlexTension"/> - <spinner label="Kracht X" name="FlexForceX"/> - <spinner label="Kracht Y" name="FlexForceY"/> - <spinner label="Kracht Z" name="FlexForceZ"/> - <check_box label="Licht" name="Light Checkbox Ctrl" tool_tip="Zorgt dat het object licht uitstraalt"/> - <text name="label color"> - Kleur - </text> - <color_swatch label="" name="colorswatch" tool_tip="Klik om kleurkiezer to openen"/> - <spinner label="Intensiteit" name="Light Intensity"/> - <spinner label="Straal" name="Light Radius"/> - <spinner label="Uitstraling" name="Light Falloff"/> - </panel> - <panel label="Textuur" name="Texture"> - <texture_picker label="Textuur" name="texture control" tool_tip="Klik om een afbeelding te kiezen"/> - <color_swatch label="Kleur" name="colorswatch" tool_tip="Klik om kleurkiezer to openen"/> - <text name="color trans"> - Transparantie % - </text> - <text name="glow label"> - Gloed - </text> - <check_box label="Volledige helderheid" name="checkbox fullbright"/> - <text name="tex gen"> - Mapping - </text> - <combo_box name="combobox texgen"> - <combo_box.item name="Default" label="Standaard"/> - <combo_box.item name="Planar" label="Vlak"/> - </combo_box> - <text name="label shininess"> - Glans - </text> - <combo_box name="combobox shininess"> - <combo_box.item name="None" label="Geen"/> - <combo_box.item name="Low" label="Laag"/> - <combo_box.item name="Medium" label="Middel"/> - <combo_box.item name="High" label="Hoog"/> - </combo_box> - <text name="label bumpiness"> - Bumpiness - </text> - <combo_box name="combobox bumpiness"> - <combo_box.item name="None" label="Geen"/> - <combo_box.item name="Brightness" label="Helderheid"/> - <combo_box.item name="Darkness" label="Donkerheid"/> - <combo_box.item name="woodgrain" label="Houtnerf"/> - <combo_box.item name="bark" label="Schors"/> - <combo_box.item name="bricks" label="Stenen"/> - <combo_box.item name="checker" label="Dambord"/> - <combo_box.item name="concrete" label="Beton"/> - <combo_box.item name="crustytile" label="gebarsten tegels"/> - <combo_box.item name="cutstone" label="natuursteen"/> - <combo_box.item name="discs" label="schijven"/> - <combo_box.item name="gravel" label="grind"/> - <combo_box.item name="petridish" label="petrischaal"/> - <combo_box.item name="siding" label="wandpaneel"/> - <combo_box.item name="stonetile" label="plavuizen"/> - <combo_box.item name="stucco" label="stucwerk"/> - <combo_box.item name="suction" label="zuignappen"/> - <combo_box.item name="weave" label="weven"/> - </combo_box> - <text name="tex scale"> - Herhalingen per zijde - </text> - <spinner label="Horizontaal (U)" name="TexScaleU"/> - <check_box label="Omkeren" name="checkbox flip s"/> - <spinner label="Verticaal (V)" name="TexScaleV"/> - <check_box label="Omkeren" name="checkbox flip t"/> - <text name="tex rotate"> - Rotatie (graden) - </text> - <string name="string repeats per meter"> - Herhalingen per meter - </string> - <string name="string repeats per face"> - Herhalingen per zijde - </string> - <text name="rpt"> - Herhalingen per meter - </text> - <button label="Toepassen" label_selected="Toepassen" name="button apply"/> - <text name="tex offset"> - Verplaatsing - </text> - <spinner label="Horizontaal (U)" name="TexOffsetU"/> - <spinner label="Verticaal (V)" name="TexOffsetV"/> - <text name="textbox autofix"> - Mediatextuur uitlijnen (moet eerst laden) - </text> - <button label="Uitlijnen" label_selected="Uitlijnen" name="button align"/> - </panel> - <panel label="Inhoud" name="Contents"> - <button label="Nieuw script..." label_selected="Nieuw script..." name="button new script"/> - </panel> - </tab_container> - <panel name="land info panel"> - <text name="label_area_price"> - Prijs: L$[PRICE] voor [AREA] m2. - </text> - <text name="label_area"> - Gebied: [AREA] m2. - </text> - <button label="Koop land..." label_selected="Koop land..." name="button buy land"/> - <button label="Land Afstaan..." label_selected="Land Afstaan..." name="button abandon land"/> - <button label="Opdelen..." label_selected="Opdelen..." name="button subdivide land"/> - <button label="Samenvoegen..." label_selected="Samenvoegen..." name="button join land"/> - <button label="Over land..." label_selected="Over land..." name="button about land"/> - </panel> - <string name="status_rotate"> - Sleep de gekleurde banden om het object te roteren - </string> - <string name="status_scale"> - Klik en sleep om de geselecteerde zijde uit te rekken. - </string> - <string name="status_move"> - Sleep om te verplaatsen, Shift-slepen om te kopiëren - </string> - <string name="status_modifyland"> - Klik en houd vast om land te wijzigen - </string> - <string name="status_camera"> - Klik en sleep om beeld te wijzigen - </string> - <string name="status_grab"> - Sleep om objecten te verplaatsen, Ctrl om op te tillen, Ctrl-Shift om te draaien - </string> - <string name="status_place"> - Klik in de wereld om te creëren, shift-klik om te selecteren - </string> - <string name="status_selectland"> - Klik en sleep om land te selecteren - </string> - <string name="grid_screen_text"> - Scherm - </string> - <string name="grid_local_text"> - Lokaal - </string> - <string name="grid_world_text"> - Wereld - </string> - <string name="grid_reference_text"> - Referentie - </string> - <string name="grid_attachment_text"> - Bevestiging - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="toolbox floater" title=""> + <button label="" label_selected="" name="button focus" tool_tip="Focus"/> + <button label="" label_selected="" name="button move" tool_tip="Verplaats"/> + <button label="" label_selected="" name="button edit" tool_tip="Bewerk"/> + <button label="" label_selected="" name="button create" tool_tip="Maak"/> + <button label="" label_selected="" name="button land" tool_tip="Land"/> + <check_box label="Zoom" name="radio zoom"/> + <check_box label="Draaien (Ctrl)" name="radio orbit"/> + <check_box label="Verplaatsen (Ctrl-Shift)" name="radio pan"/> + <check_box label="Verplaatsen" name="radio move"/> + <check_box label="Optillen (Ctrl)" name="radio lift"/> + <check_box label="Draaien (Ctrl-Shift)" name="radio spin"/> + <check_box label="Positie" name="radio position"/> + <check_box label="Draaien (Ctrl)" name="radio rotate"/> + <check_box label="Uitrekken (Ctrl-Shift)" name="radio stretch"/> + <check_box label="Selecteer textuur" name="radio select face"/> + <check_box label="Bewerk gekoppelde onderdelen" name="checkbox edit linked parts"/> + <text name="text ruler mode"> + Liniaal: + </text> + <combo_box name="combobox grid mode"> + <combo_item name="World"> + Wereld + </combo_item> + <combo_item name="Local"> + Lokaal + </combo_item> + <combo_item name="Reference"> + Referentie + </combo_item> + </combo_box> + <check_box label="Beide zijden uitrekken" name="checkbox uniform"/> + <check_box label="Texturen uitrekken" name="checkbox stretch textures"/> + <check_box label="Gebruik grid" name="checkbox snap to grid"/> + <button label="Opties..." label_selected="Opties..." name="Options..."/> + <text name="text status"> + Sleep om te verplaatsen, Shift-slepen om te kopiëren + </text> + <button label="" label_selected="" name="ToolCube" tool_tip="Kubus"/> + <button label="" label_selected="" name="ToolPrism" tool_tip="Prisma"/> + <button label="" label_selected="" name="ToolPyramid" tool_tip="Piramide"/> + <button label="" label_selected="" name="ToolTetrahedron" tool_tip="Tetrahedron"/> + <button label="" label_selected="" name="ToolCylinder" tool_tip="Cylinder"/> + <button label="" label_selected="" name="ToolHemiCylinder" tool_tip="Halve cilinder"/> + <button label="" label_selected="" name="ToolCone" tool_tip="Kegel"/> + <button label="" label_selected="" name="ToolHemiCone" tool_tip="Halve kegel"/> + <button label="" label_selected="" name="ToolSphere" tool_tip="Bol"/> + <button label="" label_selected="" name="ToolHemiSphere" tool_tip="Halve bol"/> + <button label="" label_selected="" name="ToolTorus" tool_tip="Torus"/> + <button label="" label_selected="" name="ToolTube" tool_tip="Buis"/> + <button label="" label_selected="" name="ToolRing" tool_tip="Ring"/> + <button label="" label_selected="" name="ToolTree" tool_tip="Boom"/> + <button label="" label_selected="" name="ToolGrass" tool_tip="Gras"/> + <check_box label="Behoud geselecteerd" name="checkbox sticky"/> + <check_box label="Kopiëer Selectie" name="checkbox copy selection"/> + <check_box label="Middelpunt" name="checkbox copy centers"/> + <check_box label="Roteer" name="checkbox copy rotates"/> + <check_box label="Selecteer land" name="radio select land"/> + <check_box label="Vlak maken" name="radio flatten"/> + <check_box label="Verhogen" name="radio raise"/> + <check_box label="Verlagen" name="radio lower"/> + <check_box label="Egaliseren" name="radio smooth"/> + <check_box label="Opruwen" name="radio noise"/> + <check_box label="Herstellen" name="radio revert"/> + <button label="Toepassen" label_selected="Toepassen" name="button apply to selection" tool_tip="Wijzig geselecteerd land"/> + <text name="Bulldozer:"> + Bulldozer: + </text> + <text name="Dozer Size:"> + Grootte + </text> + <text name="Strength:"> + Sterkte + </text> + <text name="obj_count"> + Geselecteerde objecten: [COUNT] + </text> + <text name="prim_count"> + primitieven: [COUNT] + </text> + <tab_container name="Object Info Tabs"> + <panel label="Algemeen" name="General"> + <text name="Name:"> + Naam: + </text> + <text name="Description:"> + Omschrijving: + </text> + <text name="Creator:"> + Maker: + </text> + <text name="Creator Name"> + Thrax Linden + </text> + <button label="Profiel..." label_selected="Profiel..." name="button creator profile"/> + <text name="Owner:"> + Eigenaar + </text> + <text name="Owner Name"> + Thrax Linden + </text> + <button label="Profiel..." label_selected="Profiel..." name="button owner profile"/> + <text name="Group:"> + Groep: + </text> + <text name="Group Name Proxy"> + De Lindens + </text> + <button label="Instellen..." label_selected="Instellen..." name="button set group"/> + <text name="Permissions:"> + Permissies: + </text> + <text name="perm_modify"> + U kunt dit object wijzigen + </text> + <check_box label="Deel met groep" name="checkbox share with group" tool_tip="Alle leden van de ingestelde groep toestaan om te delen en uw permissies voor dit object te gebruiken. U moet 'Overdragen' om rolbeperkingen in te schakelen."/> + <string name="text deed continued"> + Overdragen... + </string> + <string name="text deed"> + Overdragen + </string> + <button label="Overdragen..." label_selected="Overdragen..." name="button deed" tool_tip="Groepgedeelde objecten kunnen door een groepofficier worden overgedragen"/> + <check_box label="Iedereen mag verplaatsen" name="checkbox allow everyone move"/> + <check_box label="Iedereen mag kopiëren" name="checkbox allow everyone copy"/> + <check_box label="Toon in zoeken" name="search_check" tool_tip="Laat mensen dit object zien in zoekresultaten"/> + <check_box label="Te koop" name="checkbox for sale"/> + <text name="Cost"> + Prijs: L$ + </text> + <radio_group name="sale type"> + <radio_item name="Original"> + Origineel + </radio_item> + <radio_item name="Copy"> + Kopie + </radio_item> + <radio_item name="Contents"> + Inhoud + </radio_item> + </radio_group> + <text name="Next owner can:"> + Volgende eigenaar kan: + </text> + <check_box label="Wijzigen" name="checkbox next owner can modify"/> + <check_box label="Kopiëren" name="checkbox next owner can copy"/> + <check_box label="Verkopen/weggeven" name="checkbox next owner can transfer"/> + <text name="label click action"> + Wanneer links-geklikt: + </text> + <combo_box name="clickaction"> + <combo_item name="Touch/grab(default)"> + Aanraken/pakken (standaard) + </combo_item> + <combo_item name="Sitonobject"> + Zit op object + </combo_item> + <combo_item name="Buyobject"> + Koop object + </combo_item> + <combo_item name="Payobject"> + Betaal object + </combo_item> + <combo_item name="Open"> + Open + </combo_item> + <combo_item name="Play"> + Perceelmedia afspelen + </combo_item> + <combo_item name="Opemmedia"> + Perceelmedia openen + </combo_item> + </combo_box> + <text name="B:"> + B: + </text> + <text name="O:"> + O: + </text> + <text name="G:"> + G: + </text> + <text name="E:"> + E: + </text> + <text name="N:"> + N: + </text> + <text name="F:"> + F: + </text> + <string name="text modify info 1"> + U kunt dit object wijzigen + </string> + <string name="text modify info 2"> + U kunt deze objecten wijzigen + </string> + <string name="text modify info 3"> + U kunt dit object niet wijzigen + </string> + <string name="text modify info 4"> + U kunt deze objecten niet wijzigen + </string> + <string name="text modify warning"> + U moet het hele object selecteren om permissies in te stellen + </string> + <string name="Cost Default"> + Prijs: L$ + </string> + <string name="Cost Total"> + Totale Prijs: L$ + </string> + <string name="Cost Per Unit"> + Prijs per: L$ + </string> + <string name="Cost Mixed"> + Gemengde prijs + </string> + <string name="Sale Mixed"> + Gemengde verkoop + </string> + </panel> + <panel label="Object" name="Object"> + <text name="select_single"> + Selecteer slechts één primitief om parameters te bewerken + </text> + <text name="edit_object"> + Bewerk object parameters: + </text> + <check_box label="Vergrendeld" name="checkbox locked" tool_tip="Voorkomt het verplaatsen of verwijderen van objecten. Regelmatig handig tijdens het bouwen om onbedoelde bewerkingen te voorkomen."/> + <check_box label="Fysiek" name="Physical Checkbox Ctrl" tool_tip="Staat toe dat objecten geduwd worden en worden beïnvloed door de zwaartekracht"/> + <check_box label="Tijdelijk" name="Temporary Checkbox Ctrl" tool_tip="Zorgt ervoor dat het object 1 minuut na creatie wordt verwijderd."/> + <check_box label="Fantoom" name="Phantom Checkbox Ctrl" tool_tip="Zorgt ervoor dat objecten niet kunnen botsen met andere objecten of avatars"/> + <text name="label position"> + Positie (meters) + </text> + <spinner label="X" name="Pos X"/> + <spinner label="Y" name="Pos Y"/> + <spinner label="Z" name="Pos Z"/> + <text name="label size"> + Grootte (meters) + </text> + <spinner label="X" name="Scale X"/> + <spinner label="Y" name="Scale Y"/> + <spinner label="Z" name="Scale Z"/> + <text name="label rotation"> + Rotatie (graden) + </text> + <spinner label="X" name="Rot X"/> + <spinner label="Y" name="Rot Y"/> + <spinner label="Z" name="Rot Z"/> + <text name="label material"> + Materiaal + </text> + <combo_box name="material"> + <combo_item name="Stone"> + Steen + </combo_item> + <combo_item name="Metal"> + Metaal + </combo_item> + <combo_item name="Glass"> + Glas + </combo_item> + <combo_item name="Wood"> + Hout + </combo_item> + <combo_item name="Flesh"> + Vlees + </combo_item> + <combo_item name="Plastic"> + Plastic + </combo_item> + <combo_item name="Rubber"> + Rubber + </combo_item> + </combo_box> + <text name="label basetype"> + Bouwbloktype + </text> + <combo_box name="comboBaseType"> + <combo_item name="Box"> + Kubus + </combo_item> + <combo_item name="Cylinder"> + Cilinder + </combo_item> + <combo_item name="Prism"> + Prisma + </combo_item> + <combo_item name="Sphere"> + Bol + </combo_item> + <combo_item name="Torus"> + Torus + </combo_item> + <combo_item name="Tube"> + Buis + </combo_item> + <combo_item name="Ring"> + Ring + </combo_item> + <combo_item name="Sculpted"> + Sculpted + </combo_item> + </combo_box> + <text name="text cut"> + Uitsnede begin en einde + </text> + <spinner label="B" name="cut begin"/> + <spinner label="E" name="cut end"/> + <text name="text hollow"> + Hol + </text> + <text name="text skew"> + Verschuiven + </text> + <text name="Hollow Shape"> + Holtevorm + </text> + <combo_box name="hole"> + <combo_item name="Default"> + Standaard + </combo_item> + <combo_item name="Circle"> + Cirkel + </combo_item> + <combo_item name="Square"> + Vierkant + </combo_item> + <combo_item name="Triangle"> + Driehoek + </combo_item> + </combo_box> + <text name="text twist"> + Verdraai begin en einde + </text> + <spinner label="B" name="Twist Begin"/> + <spinner label="E" name="Twist End"/> + <text name="scale_taper"> + Knijpen + </text> + <text name="scale_hole"> + Gatgrootte + </text> + <spinner label="X" name="Taper Scale X"/> + <spinner label="Y" name="Taper Scale Y"/> + <text name="text topshear"> + Bovenkant verschuiven + </text> + <spinner label="X" name="Shear X"/> + <spinner label="Y" name="Shear Y"/> + <text name="advanced_cut"> + Profielsnede begin en einde + </text> + <text name="advanced_dimple"> + Deuk begin en einde + </text> + <text name="advanced_slice"> + Uitsnede Begin en Einde + </text> + <spinner label="B" name="Path Limit Begin"/> + <spinner label="E" name="Path Limit End"/> + <text name="text taper2"> + Knijpen + </text> + <spinner label="X" name="Taper X"/> + <spinner label="Y" name="Taper Y"/> + <text name="text radius delta"> + Straal + </text> + <text name="text revolutions"> + Omwentelingen + </text> + <texture_picker label="Sculpt textuur" name="sculpt texture control" tool_tip="Klik om een afbeelding te kiezen"/> + <check_box label="Spiegelen" name="sculpt mirror control" tool_tip="Spiegelt de sculpted prim om de X-as"/> + <check_box label="Binnenstebuiten" name="sculpt invert control" tool_tip="Inverteert de normalen van de sculpted prim, zodat deze binnenstebuiten verschijnt."/> + <text name="label sculpt type"> + Hechtingstype + </text> + <combo_box name="sculpt type control"> + <combo_item name="None"> + (none) + </combo_item> + <combo_item name="Sphere"> + Bol + </combo_item> + <combo_item name="Torus"> + Torus + </combo_item> + <combo_item name="Plane"> + Vlak + </combo_item> + <combo_item name="Cylinder"> + Cilinder + </combo_item> + </combo_box> + </panel> + <panel label="Kenmerken" name="Features"> + <text name="select_single"> + Selecteer slechts één primitief om kenmerken te bewerken + </text> + <text name="edit_object"> + Bewerk objectkenmerken: + </text> + <check_box label="Flexibiliteit" name="Flexible1D Checkbox Ctrl" tool_tip="Staat toe dat objecten kunnen buigen om de Z-as. (alleen aan de client kant)"/> + <spinner label="Zachtheid" name="FlexNumSections"/> + <spinner label="Zwaartekracht" name="FlexGravity"/> + <spinner label="Slepen" name="FlexFriction"/> + <spinner label="Wind" name="FlexWind"/> + <spinner label="Spanning" name="FlexTension"/> + <spinner label="Kracht X" name="FlexForceX"/> + <spinner label="Kracht Y" name="FlexForceY"/> + <spinner label="Kracht Z" name="FlexForceZ"/> + <check_box label="Licht" name="Light Checkbox Ctrl" tool_tip="Zorgt dat het object licht uitstraalt"/> + <text name="label color"> + Kleur + </text> + <color_swatch label="" name="colorswatch" tool_tip="Klik om kleurkiezer to openen"/> + <spinner label="Intensiteit" name="Light Intensity"/> + <spinner label="Straal" name="Light Radius"/> + <spinner label="Uitstraling" name="Light Falloff"/> + </panel> + <panel label="Textuur" name="Texture"> + <texture_picker label="Textuur" name="texture control" tool_tip="Klik om een afbeelding te kiezen"/> + <color_swatch label="Kleur" name="colorswatch" tool_tip="Klik om kleurkiezer to openen"/> + <text name="color trans"> + Transparantie % + </text> + <text name="glow label"> + Gloed + </text> + <check_box label="Volledige helderheid" name="checkbox fullbright"/> + <text name="tex gen"> + Mapping + </text> + <combo_box name="combobox texgen"> + <combo_item name="Default"> + Standaard + </combo_item> + <combo_item name="Planar"> + Vlak + </combo_item> + </combo_box> + <text name="label shininess"> + Glans + </text> + <combo_box name="combobox shininess"> + <combo_item name="None"> + Geen + </combo_item> + <combo_item name="Low"> + Laag + </combo_item> + <combo_item name="Medium"> + Middel + </combo_item> + <combo_item name="High"> + Hoog + </combo_item> + </combo_box> + <text name="label bumpiness"> + Bumpiness + </text> + <combo_box name="combobox bumpiness"> + <combo_item name="None"> + Geen + </combo_item> + <combo_item name="Brightness"> + Helderheid + </combo_item> + <combo_item name="Darkness"> + Donkerheid + </combo_item> + <combo_item name="woodgrain"> + Houtnerf + </combo_item> + <combo_item name="bark"> + Schors + </combo_item> + <combo_item name="bricks"> + Stenen + </combo_item> + <combo_item name="checker"> + Dambord + </combo_item> + <combo_item name="concrete"> + Beton + </combo_item> + <combo_item name="crustytile"> + gebarsten tegels + </combo_item> + <combo_item name="cutstone"> + natuursteen + </combo_item> + <combo_item name="discs"> + schijven + </combo_item> + <combo_item name="gravel"> + grind + </combo_item> + <combo_item name="petridish"> + petrischaal + </combo_item> + <combo_item name="siding"> + wandpaneel + </combo_item> + <combo_item name="stonetile"> + plavuizen + </combo_item> + <combo_item name="stucco"> + stucwerk + </combo_item> + <combo_item name="suction"> + zuignappen + </combo_item> + <combo_item name="weave"> + weven + </combo_item> + </combo_box> + <text name="tex scale"> + Herhalingen per zijde + </text> + <spinner label="Horizontaal (U)" name="TexScaleU"/> + <check_box label="Omkeren" name="checkbox flip s"/> + <spinner label="Verticaal (V)" name="TexScaleV"/> + <check_box label="Omkeren" name="checkbox flip t"/> + <text name="tex rotate"> + Rotatie (graden) + </text> + <string name="string repeats per meter"> + Herhalingen per meter + </string> + <string name="string repeats per face"> + Herhalingen per zijde + </string> + <text name="rpt"> + Herhalingen per meter + </text> + <button label="Toepassen" label_selected="Toepassen" name="button apply"/> + <text name="tex offset"> + Verplaatsing + </text> + <spinner label="Horizontaal (U)" name="TexOffsetU"/> + <spinner label="Verticaal (V)" name="TexOffsetV"/> + <text name="textbox autofix"> + Mediatextuur uitlijnen (moet eerst laden) + </text> + <button label="Uitlijnen" label_selected="Uitlijnen" name="button align"/> + </panel> + <panel label="Inhoud" name="Contents"> + <button label="Nieuw script" label_selected="Nieuw script..." name="button new script"/> + <button label="Permissies..." name="button permissions"/> + </panel> + </tab_container> + <panel name="land info panel"> + <text name="label_parcel_info"> + Perceel Informatie + </text> + <text name="label_area_price"> + Prijs: L$[PRICE] voor [AREA] m2. + </text> + <text name="label_area"> + Gebied: [AREA] m2. + </text> + <button label="Over land..." label_selected="Over land..." name="button about land"/> + <check_box label="Toon Eigenaren" name="checkbox show owners" tool_tip="Kleur percelen op basis van hun eigendom"/> + <button label="?" label_selected="?" name="button show owners help"/> + <text name="label_parcel_modify"> + Wijzig Perceel + </text> + <button label="Opdelen..." label_selected="Opdelen..." name="button subdivide land"/> + <button label="Samenvoegen..." label_selected="Samenvoegen..." name="button join land"/> + <text name="label_parcel_trans"> + Landtransacties + </text> + <button label="Koop land..." label_selected="Koop land..." name="button buy land"/> + <button label="Land Afstaan..." label_selected="Land Afstaan..." name="button abandon land"/> + </panel> + <string name="status_rotate"> + Sleep de gekleurde banden om het object te roteren + </string> + <string name="status_scale"> + Klik en sleep om de geselecteerde zijde uit te rekken. + </string> + <string name="status_move"> + Sleep om te verplaatsen, Shift-slepen om te kopiëren + </string> + <string name="status_modifyland"> + Klik en houd vast om land te wijzigen + </string> + <string name="status_camera"> + Klik en sleep om beeld te wijzigen + </string> + <string name="status_grab"> + Sleep om te verplaatsen, Ctrl om op te tillen, Ctrl-Shift om te roteren. + </string> + <string name="status_place"> + Klik in-wereld om te bouwen + </string> + <string name="status_selectland"> + Klik en sleep om land te selecteren + </string> + <string name="grid_screen_text"> + Scherm + </string> + <string name="grid_local_text"> + Lokaal + </string> + <string name="grid_world_text"> + Wereld + </string> + <string name="grid_reference_text"> + Referentie + </string> + <string name="grid_attachment_text"> + Bevestiging + </string> +</floater> diff --git a/indra/newview/skins/default/xui/nl/floater_top_objects.xml b/indra/newview/skins/default/xui/nl/floater_top_objects.xml index 2d43b0bfe2fa13d0bb1ae2e2b9944233c8b3f288..e79ee4ea56139aa1fe83e3a7f8d4432624255ea9 100644 --- a/indra/newview/skins/default/xui/nl/floater_top_objects.xml +++ b/indra/newview/skins/default/xui/nl/floater_top_objects.xml @@ -1,55 +1,55 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="top_objects" title="laden…"> - <text name="title_text"> - Laden… - </text> - <scroll_list name="objects_list"> - <column label="Score" name="score"/> - <column label="Naam" name="name"/> - <column label="Eigenaar" name="owner"/> - <column label="Locatie" name="location"/> - <column label="Tijd" name="time"/> - <column label="Mono tijd" name="mono_time"/> - </scroll_list> - <text name="id_text"> - Object ID: - </text> - <button label="Toon baken" name="show_beacon_btn"/> - <text name="obj_name_text"> - Object naam: - </text> - <button label="Filter" name="filter_object_btn"/> - <text name="owner_name_text"> - Eigenaar naam: - </text> - <button label="Filter" name="filter_owner_btn"/> - <button label="Geselecteerde retourneren" name="return_selected_btn"/> - <button label="Alles retourneren" name="return_all_btn"/> - <button label="Geselecteerde uitschakelen" name="disable_selected_btn"/> - <button label="Alles uitschakelen" name="disable_all_btn"/> - <button label="Verversen" name="refresh_btn"/> - <string name="top_scripts_title"> - Top scripts - </string> - <string name="top_scripts_text"> - [COUNT] scripts besteden in totaal [TIME] ms - </string> - <string name="scripts_score_label"> - Tijd - </string> - <string name="scripts_mono_time_label"> - Mono tijd - </string> - <string name="top_colliders_title"> - Top botsingen - </string> - <string name="top_colliders_text"> - Top [COUNT] objecten die veel mogelijke botsingen ervaren. - </string> - <string name="colliders_score_label"> - Score - </string> - <string name="none_descriptor"> - Geen gevonden. - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="top_objects" title="laden…"> + <text name="title_text"> + Laden… + </text> + <scroll_list name="objects_list"> + <column label="Score" name="score"/> + <column label="Naam" name="name"/> + <column label="Eigenaar" name="owner"/> + <column label="Locatie" name="location"/> + <column label="Tijd" name="time"/> + <column label="Mono tijd" name="mono_time"/> + </scroll_list> + <text name="id_text"> + Object ID: + </text> + <button label="Toon baken" name="show_beacon_btn"/> + <text name="obj_name_text"> + Object naam: + </text> + <button label="Filter" name="filter_object_btn"/> + <text name="owner_name_text"> + Eigenaar naam: + </text> + <button label="Filter" name="filter_owner_btn"/> + <button label="Geselecteerde retourneren" name="return_selected_btn"/> + <button label="Alles retourneren" name="return_all_btn"/> + <button label="Geselecteerde uitschakelen" name="disable_selected_btn"/> + <button label="Alles uitschakelen" name="disable_all_btn"/> + <button label="Verversen" name="refresh_btn"/> + <string name="top_scripts_title"> + Top scripts + </string> + <string name="top_scripts_text"> + [COUNT] scripts besteden in totaal [TIME] ms + </string> + <string name="scripts_score_label"> + Tijd + </string> + <string name="scripts_mono_time_label"> + Mono tijd + </string> + <string name="top_colliders_title"> + Top botsingen + </string> + <string name="top_colliders_text"> + Top [COUNT] objecten die veel mogelijke botsingen ervaren. + </string> + <string name="colliders_score_label"> + Score + </string> + <string name="none_descriptor"> + Geen gevonden. + </string> +</floater> diff --git a/indra/newview/skins/default/xui/nl/floater_tos.xml b/indra/newview/skins/default/xui/nl/floater_tos.xml index f2176b83feffe0bcc63f9197a30c94c22eaca04e..b9a162be4ab2c0d02f5f23de0f6c30ce04ad7d42 100644 --- a/indra/newview/skins/default/xui/nl/floater_tos.xml +++ b/indra/newview/skins/default/xui/nl/floater_tos.xml @@ -1,15 +1,15 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="modal container" title=""> - <button label="Doorgaan" label_selected="Doorgaan" name="Continue"/> - <button label="Annuleren" label_selected="Annuleren" name="Cancel"/> - <check_box label="Ik ga akkoord met de voorwaarden van service" name="agree_chk"/> - <text name="tos_heading"> - Leest u alstublieft de volgende voorwaarden van service door. Om door te gaan met inloggen in Second Life dient u de overeenkomst te accepteren. - </text> - <text_editor name="tos_text"> - TOS_TEXT - </text_editor> - <string name="real_url"> - http://secondlife.com/app/tos/ - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="modal container" title=""> + <button label="Doorgaan" label_selected="Doorgaan" name="Continue"/> + <button label="Annuleren" label_selected="Annuleren" name="Cancel"/> + <check_box label="Ik ga akkoord met de voorwaarden van service" name="agree_chk"/> + <text name="tos_heading"> + Leest u alstublieft de volgende voorwaarden van service door. Om door te gaan met inloggen in Second Life dient u de overeenkomst te accepteren. + </text> + <text_editor name="tos_text"> + TOS_TEXT + </text_editor> + <string name="real_url"> + http://secondlife.com/app/tos/ + </string> +</floater> diff --git a/indra/newview/skins/default/xui/nl/floater_url_entry.xml b/indra/newview/skins/default/xui/nl/floater_url_entry.xml index 63918e46cf37b26b699c58ab4b8ebf732385da3a..23ea21bcc591e3fc04d82083afbb50402ee766a7 100644 --- a/indra/newview/skins/default/xui/nl/floater_url_entry.xml +++ b/indra/newview/skins/default/xui/nl/floater_url_entry.xml @@ -1,12 +1,12 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="url_entry" title=""> - <text name="media_label"> - Media URL: - </text> - <button label="OK" name="ok_btn"/> - <button label="Annuleren" name="cancel_btn"/> - <button label="Leegmaken" name="clear_btn"/> - <text name="loading_label"> - Laden… - </text> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="url_entry" title=""> + <text name="media_label"> + Media URL: + </text> + <button label="OK" name="ok_btn"/> + <button label="Annuleren" name="cancel_btn"/> + <button label="Leegmaken" name="clear_btn"/> + <text name="loading_label"> + Laden… + </text> +</floater> diff --git a/indra/newview/skins/default/xui/nl/floater_water.xml b/indra/newview/skins/default/xui/nl/floater_water.xml index ed36b59eaccef7130f7af643070a0fc027c1960c..38ec15d1a01b20e549789bab77200cebc6b7f021 100644 --- a/indra/newview/skins/default/xui/nl/floater_water.xml +++ b/indra/newview/skins/default/xui/nl/floater_water.xml @@ -1,88 +1,88 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Water Floater" title="Geavanceerde water editor"> - <text name="KeyFramePresetsText"> - Watervoorinstellingen - </text> - <button label="Nieuw" label_selected="Nieuw" name="WaterNewPreset"/> - <button label="Opslaan" label_selected="Opslaan" name="WaterSavePreset"/> - <button label="Verwijderen" label_selected="Verwijderen" name="WaterDeletePreset"/> - <tab_container name="Water Tabs"> - <panel label="Instellingen" name="Settings"> - <text name="BHText"> - Watermistkleur - </text> - <button label="?" name="WaterFogColorHelp"/> - <color_swatch label="" name="WaterFogColor" tool_tip="Klik om de kleurkiezer te openen"/> - <text name="WaterFogDensText"> - Mistdichtheidsexponent - </text> - <button label="?" name="WaterFogDensityHelp"/> - <text name="WaterUnderWaterFogModText"> - Onderwatermist wijziger - </text> - <button label="?" name="WaterUnderWaterFogModHelp"/> - <text name="BDensText"> - Reflectie wavelet schaal - </text> - <button label="?" name="WaterNormalScaleHelp"/> - <text name="BHText2"> - 1 - </text> - <text name="BHText3"> - 2 - </text> - <text name="BHText4"> - 3 - </text> - <text name="HDText"> - Fresnelschaal - </text> - <button label="?" name="WaterFresnelScaleHelp"/> - <text name="FresnelOffsetText"> - Fresnelverplaatsing - </text> - <button label="?" name="WaterFresnelOffsetHelp"/> - <text name="DensMultText"> - Refractieschaal boven - </text> - <button label="?" name="WaterScaleAboveHelp"/> - <text name="WaterScaleBelowText"> - Refractieschaal onder - </text> - <button label="?" name="WaterScaleBelowHelp"/> - <text name="MaxAltText"> - Wazigheidvermeerderaar - </text> - <button label="?" name="WaterBlurMultiplierHelp"/> - </panel> - <panel label="Afbeelding" name="Waves"> - <text name="BHText"> - Grote golven richting - </text> - <button label="?" name="WaterWave1Help"/> - <text name="WaterWave1DirXText"> - X - </text> - <text name="WaterWave1DirYText"> - Y - </text> - <text name="BHText2"> - Kleine golf richting - </text> - <button label="?" name="WaterWave2Help"/> - <text name="WaterWave2DirXText"> - X - </text> - <text name="WaterWave2DirYText"> - Y - </text> - <text name="BHText3"> - Normaalmap - </text> - <button label="?" name="WaterNormalMapHelp"/> - </panel> - </tab_container> - <string name="WLDefaultWaterNames"> - Default:Glassy:Pond:Murky:Second Plague:SNAKE!!!:Valdez - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Water Floater" title="Geavanceerde water editor"> + <text name="KeyFramePresetsText"> + Watervoorinstellingen + </text> + <button label="Nieuw" label_selected="Nieuw" name="WaterNewPreset"/> + <button label="Opslaan" label_selected="Opslaan" name="WaterSavePreset"/> + <button label="Verwijderen" label_selected="Verwijderen" name="WaterDeletePreset"/> + <tab_container name="Water Tabs"> + <panel label="Instellingen" name="Settings"> + <text name="BHText"> + Watermistkleur + </text> + <button label="?" name="WaterFogColorHelp"/> + <color_swatch label="" name="WaterFogColor" tool_tip="Klik om de kleurkiezer te openen"/> + <text name="WaterFogDensText"> + Mistdichtheidsexponent + </text> + <button label="?" name="WaterFogDensityHelp"/> + <text name="WaterUnderWaterFogModText"> + Onderwatermist wijziger + </text> + <button label="?" name="WaterUnderWaterFogModHelp"/> + <text name="BDensText"> + Reflectie wavelet schaal + </text> + <button label="?" name="WaterNormalScaleHelp"/> + <text name="BHText2"> + 1 + </text> + <text name="BHText3"> + 2 + </text> + <text name="BHText4"> + 3 + </text> + <text name="HDText"> + Fresnelschaal + </text> + <button label="?" name="WaterFresnelScaleHelp"/> + <text name="FresnelOffsetText"> + Fresnelverplaatsing + </text> + <button label="?" name="WaterFresnelOffsetHelp"/> + <text name="DensMultText"> + Refractieschaal boven + </text> + <button label="?" name="WaterScaleAboveHelp"/> + <text name="WaterScaleBelowText"> + Refractieschaal onder + </text> + <button label="?" name="WaterScaleBelowHelp"/> + <text name="MaxAltText"> + Wazigheidvermeerderaar + </text> + <button label="?" name="WaterBlurMultiplierHelp"/> + </panel> + <panel label="Afbeelding" name="Waves"> + <text name="BHText"> + Grote golven richting + </text> + <button label="?" name="WaterWave1Help"/> + <text name="WaterWave1DirXText"> + X + </text> + <text name="WaterWave1DirYText"> + Y + </text> + <text name="BHText2"> + Kleine golf richting + </text> + <button label="?" name="WaterWave2Help"/> + <text name="WaterWave2DirXText"> + X + </text> + <text name="WaterWave2DirYText"> + Y + </text> + <text name="BHText3"> + Normaalmap + </text> + <button label="?" name="WaterNormalMapHelp"/> + </panel> + </tab_container> + <string name="WLDefaultWaterNames"> + Default:Glassy:Pond:Murky:Second Plague:SNAKE!!!:Valdez + </string> +</floater> diff --git a/indra/newview/skins/default/xui/nl/floater_world_map.xml b/indra/newview/skins/default/xui/nl/floater_world_map.xml index cb2b3277f8ae8fddf11f5d9eadf4c55e3c7145f3..1205884062d051ac2e0e4722d3beccce3cf9eac3 100644 --- a/indra/newview/skins/default/xui/nl/floater_world_map.xml +++ b/indra/newview/skins/default/xui/nl/floater_world_map.xml @@ -1,59 +1,54 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="worldmap" title="Wereldkaart"> - <tab_container name="maptab"> - <panel label="Objecten" name="objects_mapview"/> - <panel label="Terrein" name="terrain_mapview"/> - </tab_container> - <text name="land_for_sale_label"> - Land te koop - </text> - <text name="auction_label"> - Veiling - </text> - <text name="you_label"> - U - </text> - <text name="home_label"> - Thuis - </text> - <button label="Ga naar Thuislocatie" label_selected="Ga naar Thuislocatie" name="Go Home" tool_tip="Teleport naar uw thuislocatie"/> - <text name="person_label"> - Persoon - </text> - <text name="infohub_label"> - Infohub - </text> - <text name="telehub_label"> - Telehub - </text> - <text name="land_for_sale_label2"> - Land te koop - </text> - <text name="events_label"> - Evenementen - </text> - - <combo_box label="Online vrienden" name="friend combo" tool_tip="Vriend die op kaart getoond wordt"> - <combo_box.item name="none_selected" label="Online vrienden"/> - </combo_box> - <combo_box label="Landmarkeringen" name="landmark combo" tool_tip="Landmarkering die op kaart getoond wordt"> - <combo_box.item name="none_selected" label="Landmarkeringen"/> - </combo_box> - <line_editor label="Zoek op regionaam" name="location" tool_tip="Type de naam van een regio"/> - <button label="Zoeken" name="DoSearch" tool_tip="Zoek naar regio"/> - <text name="search_label"> - Zoekresultaten - </text> - <text name="location_label"> - Locatie: - </text> - <spinner name="spin x" tool_tip="X coördinaat van de locatie die op de kaart getoond wordt"/> - <spinner name="spin y" tool_tip="Y coördinaat van de locatie die op de kaart getoond wordt"/> - <spinner name="spin z" tool_tip="Z coördinaat van de locatie die op de kaart getoond wordt"/> - <button label="Teleport" label_selected="Teleport" name="Teleport" tool_tip="Teleport naar geselecteerde locatie"/> - <button label="Toon bestemming" label_selected="Toon bestemming" name="Show Destination" tool_tip="Centreer kaart op geselecteerde locatie"/> - <button label="Verwijder" label_selected="Verwijder" name="Clear" tool_tip="Stop volgen"/> - <button label="Toon mijn locatie" label_selected="Toon mijn locatie" name="Show My Location" tool_tip="Centreer kaart op de locatie van uw avatar"/> - <button label="Kopieer SLURL naar klembord" name="copy_slurl" tool_tip="Kopieert huidige locatie als SLURL, zodat deze op het web gebruikt kan worden."/> - <slider label="Zoom" name="zoom slider"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="worldmap" title="Wereldkaart"> + <tab_container name="maptab"> + <panel label="Objecten" name="objects_mapview"/> + <panel label="Terrein" name="terrain_mapview"/> + </tab_container> + <text name="you_label"> + U + </text> + <icon left="1058" name="home"/> + <text name="home_label"> + Thuis + </text> + <text name="auction_label"> + Veiling + </text> + <text name="land_for_sale_label"> + Land te koop + </text> + <button width="122" left="1116" label="Ga naar Thuislocatie" label_selected="Ga naar Thuislocatie" name="Go Home" tool_tip="Teleport naar uw thuislocatie"/> + <check_box label="Inwoner" name="people_chk"/> + <check_box label="Infohub" name="infohub_chk"/> + <check_box label="Telehub" name="telehubchk"/> + <check_box label="Land te koop" name="land_for_sale_chk"/> + <text name="events_label"> + Evenementen: + </text> + <check_box label="PG" name="event_chk"/> + <check_box label="Mature" name="event_mature_chk"/> + <check_box label="Adult" name="event_adult_chk"/> + <combo_box label="Online vrienden" name="friend combo" tool_tip="Vriend die op kaart getoond wordt"> + <combo_box.item name="none_selected" label="Online vrienden"/> + </combo_box> + <combo_box label="Landmarkeringen" name="landmark combo" tool_tip="Landmarkering die op kaart getoond wordt"> + <combo_box.item name="none_selected" label="Landmarkeringen"/> + </combo_box> + <line_editor label="Zoek op regionaam" name="location" tool_tip="Type de naam van een regio"/> + <button label="Zoeken" name="DoSearch" tool_tip="Zoek naar regio"/> + <text name="search_label"> + Zoekresultaten + </text> + <text name="location_label"> + Locatie: + </text> + <spinner name="spin x" tool_tip="X coördinaat van de locatie die op de kaart getoond wordt"/> + <spinner name="spin y" tool_tip="Y coördinaat van de locatie die op de kaart getoond wordt"/> + <spinner name="spin z" tool_tip="Z coördinaat van de locatie die op de kaart getoond wordt"/> + <button label="Teleport" label_selected="Teleport" name="Teleport" tool_tip="Teleport naar geselecteerde locatie"/> + <button label="Toon bestemming" label_selected="Toon bestemming" name="Show Destination" tool_tip="Centreer kaart op geselecteerde locatie"/> + <button label="Verwijder" label_selected="Verwijder" name="Clear" tool_tip="Stop volgen"/> + <button label="Toon mijn locatie" label_selected="Toon mijn locatie" name="Show My Location" tool_tip="Centreer kaart op de locatie van uw avatar"/> + <button label="Kopieer SLURL naar klembord" name="copy_slurl" tool_tip="Kopieert huidige locatie als SLURL, zodat deze op het web gebruikt kan worden."/> + <slider label="Zoom" name="zoom slider"/> +</floater> diff --git a/indra/newview/skins/default/xui/nl/menu_inventory.xml b/indra/newview/skins/default/xui/nl/menu_inventory.xml index ae0bc0e5c395719f3cc858775be04bfc4597a710..f406bcf6bc7dd3839219febb2ee6dd3e8ef9dcef 100644 --- a/indra/newview/skins/default/xui/nl/menu_inventory.xml +++ b/indra/newview/skins/default/xui/nl/menu_inventory.xml @@ -1,65 +1,66 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<menu name="Popup"> - <menu_item_call label="Koop" name="Task Buy"/> - <menu_item_call label="Open" name="Task Open"/> - <menu_item_call label="Afspelen" name="Task Play"/> - <menu_item_call label="Eigenschappen" name="Task Properties"/> - <menu_item_call label="Hernoemen" name="Task Rename"/> - <menu_item_call label="Verwijderen" name="Task Remove"/> - <menu_item_call label="Prullenbak legen" name="Empty Trash"/> - <menu_item_call label="Verloren en gevonden leegmaken" name="Empty Lost And Found"/> - <menu_item_call label="Nieuwe map" name="New Folder"/> - <menu_item_call label="Nieuw script" name="New Script"/> - <menu_item_call label="Nieuwe notitie" name="New Note"/> - <menu_item_call label="Nieuw gebaar" name="New Gesture"/> - <menu name="New Clothes"> - <menu_item_call label="Nieuw shirt" name="New Shirt"/> - <menu_item_call label="Nieuwe broek" name="New Pants"/> - <menu_item_call label="Nieuwe schoenen" name="New Shoes"/> - <menu_item_call label="Nieuwe sokken" name="New Socks"/> - <menu_item_call label="Nieuwe jas" name="New Jacket"/> - <menu_item_call label="Nieuwe rok" name="New Skirt"/> - <menu_item_call label="Nieuwe handschoenen" name="New Gloves"/> - <menu_item_call label="Nieuw onderhemd" name="New Undershirt"/> - <menu_item_call label="Nieuwe onderbroek" name="New Underpants"/> - </menu> - <menu name="New Body Parts"> - <menu_item_call label="Nieuwe postuur" name="New Shape"/> - <menu_item_call label="Nieuwe huid" name="New Skin"/> - <menu_item_call label="Nieuw haar" name="New Hair"/> - <menu_item_call label="Nieuwe ogen" name="New Eyes"/> - </menu> - <menu_item_call label="Teleport" name="Landmark Open"/> - <menu_item_call label="Open" name="Animation Open"/> - <menu_item_call label="Open" name="Sound Open"/> - <menu_item_call label="Verwijderen item" name="Purge Item"/> - <menu_item_call label="Herstellen item" name="Restore Item"/> - <menu_item_call label="Open" name="Open"/> - <menu_item_call label="Eigenschappen" name="Properties"/> - <menu_item_call label="Hernoemen" name="Rename"/> - <menu_item_call label="Kopieer asset UUID" name="Copy Asset UUID"/> - <menu_item_call label="Kopiëren" name="Copy"/> - <menu_item_call label="Plakken" name="Paste"/> - <menu_item_call label="Verwijderen" name="Delete"/> - <menu_item_call label="Items uitdoen" name="Take Off Items"/> - <menu_item_call label="Voeg toe aan kleding" name="Add To Outfit"/> - <menu_item_call label="Vervang kleding" name="Replace Outfit"/> - <menu_item_call label="Start conferentie chat" name="Conference Chat Folder"/> - <menu_item_call label="Afspelen" name="Sound Play"/> - <menu_item_call label="Over landmarkering" name="Teleport To Landmark"/> - <menu_item_call label="In wereld afspelen" name="Animation Play"/> - <menu_item_call label="Lokaal afspelen" name="Animation Audition"/> - <menu_item_call label="Stuur instant message" name="Send Instant Message"/> - <menu_item_call label="Bied teleport aan…" name="Offer Teleport..."/> - <menu_item_call label="Start conferentie chat" name="Conference Chat"/> - <menu_item_call label="Activeren" name="Activate"/> - <menu_item_call label="Deactiveren" name="Deactivate"/> - <menu_item_call label="Losmaken van jezelf" name="Detach From Yourself"/> - <menu_item_call label="Dragen" name="Object Wear"/> - <menu label="Bevestigen aan" name="Attach To"/> - <menu label="Bevestigen aan HUD" name="Attach To HUD"/> - <menu_item_call label="Bewerken" name="Wearable Edit"/> - <menu_item_call label="Dragen" name="Wearable Wear"/> - <menu_item_call label="Uitdoen" name="Take Off"/> - <menu_item_call label="--geen opties--" name="--no options--"/> -</menu> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Popup"> + <menu_item_call label="Koop" name="Task Buy"/> + <menu_item_call label="Open" name="Task Open"/> + <menu_item_call label="Afspelen" name="Task Play"/> + <menu_item_call label="Eigenschappen" name="Task Properties"/> + <menu_item_call label="Hernoemen" name="Task Rename"/> + <menu_item_call label="Verwijderen" name="Task Remove"/> + <menu_item_call label="Prullenbak legen" name="Empty Trash"/> + <menu_item_call label="Verloren en gevonden leegmaken" name="Empty Lost And Found"/> + <menu_item_call label="Nieuwe map" name="New Folder"/> + <menu_item_call label="Nieuw script" name="New Script"/> + <menu_item_call label="Nieuwe notitie" name="New Note"/> + <menu_item_call label="Nieuw gebaar" name="New Gesture"/> + <menu name="New Clothes"> + <menu_item_call label="Nieuw shirt" name="New Shirt"/> + <menu_item_call label="Nieuwe broek" name="New Pants"/> + <menu_item_call label="Nieuwe schoenen" name="New Shoes"/> + <menu_item_call label="Nieuwe sokken" name="New Socks"/> + <menu_item_call label="Nieuwe jas" name="New Jacket"/> + <menu_item_call label="Nieuwe rok" name="New Skirt"/> + <menu_item_call label="Nieuwe handschoenen" name="New Gloves"/> + <menu_item_call label="Nieuw onderhemd" name="New Undershirt"/> + <menu_item_call label="Nieuwe onderbroek" name="New Underpants"/> + </menu> + <menu name="New Body Parts"> + <menu_item_call label="Nieuwe postuur" name="New Shape"/> + <menu_item_call label="Nieuwe huid" name="New Skin"/> + <menu_item_call label="Nieuw haar" name="New Hair"/> + <menu_item_call label="Nieuwe ogen" name="New Eyes"/> + </menu> + <menu_item_call label="Teleport" name="Landmark Open"/> + <menu_item_call label="Open" name="Animation Open"/> + <menu_item_call label="Open" name="Sound Open"/> + <menu_item_call label="Verwijderen item" name="Purge Item"/> + <menu_item_call label="Herstellen item" name="Restore Item"/> + <menu_item_call label="Open" name="Open"/> + <menu_item_call label="Eigenschappen" name="Properties"/> + <menu_item_call label="Hernoemen" name="Rename"/> + <menu_item_call label="Kopieer asset UUID" name="Copy Asset UUID"/> + <menu_item_call label="Kopiëren" name="Copy"/> + <menu_item_call label="Plakken" name="Paste"/> + <menu_item_call label="Verwijderen" name="Delete"/> + <menu_item_call label="Items uitdoen" name="Take Off Items"/> + <menu_item_call label="Voeg toe aan kleding" name="Add To Outfit"/> + <menu_item_call label="Vervang kleding" name="Replace Outfit"/> + <menu_item_call label="Start conferentie chat" name="Conference Chat Folder"/> + <menu_item_call label="Afspelen" name="Sound Play"/> + <menu_item_call label="Over landmarkering" name="Teleport To Landmark"/> + <menu_item_call label="In wereld afspelen" name="Animation Play"/> + <menu_item_call label="Lokaal afspelen" name="Animation Audition"/> + <menu_item_call label="Stuur instant message" name="Send Instant Message"/> + <menu_item_call label="Bied teleport aan…" name="Offer Teleport..."/> + <menu_item_call label="Start conferentie chat" name="Conference Chat"/> + <menu_item_call label="Activeren" name="Activate"/> + <menu_item_call label="Deactiveren" name="Deactivate"/> + <menu_item_call label="Losmaken van jezelf" name="Detach From Yourself"/> + <menu_item_call label="Herstellen naar laatste positie" name="Restore to Last Position"/> + <menu_item_call label="Dragen" name="Object Wear"/> + <menu label="Bevestigen aan" name="Attach To"/> + <menu label="Bevestigen aan HUD" name="Attach To HUD"/> + <menu_item_call label="Bewerken" name="Wearable Edit"/> + <menu_item_call label="Dragen" name="Wearable Wear"/> + <menu_item_call label="Uitdoen" name="Take Off"/> + <menu_item_call label="--geen opties--" name="--no options--"/> +</menu> diff --git a/indra/newview/skins/default/xui/nl/menu_login.xml b/indra/newview/skins/default/xui/nl/menu_login.xml index 5e82a736baf87240dee4775eba782eba8435749c..188418e34ca864f2a2edbdee2f691a5c36080a52 100644 --- a/indra/newview/skins/default/xui/nl/menu_login.xml +++ b/indra/newview/skins/default/xui/nl/menu_login.xml @@ -1,13 +1,13 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<menu_bar name="Login Menu"> - <menu label="Bestand" name="File"> - <menu_item_call label="Afsluiten" name="Quit"/> - </menu> - <menu label="Bewerken" name="Edit"> - <menu_item_call label="Voorkeuren..." name="Preferences..."/> - </menu> - <menu label="Help" name="Help"> - <menu_item_call label="Second Life Help" name="Second Life Help"/> - <menu_item_call label="Over Second Life..." name="About Second Life..."/> - </menu> -</menu_bar> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu_bar name="Login Menu"> + <menu label="Bestand" name="File"> + <menu_item_call label="Afsluiten" name="Quit"/> + </menu> + <menu label="Bewerken" name="Edit"> + <menu_item_call label="Voorkeuren..." name="Preferences..."/> + </menu> + <menu label="Help" name="Help"> + <menu_item_call label="Second Life Help" name="Second Life Help"/> + <menu_item_call label="Over Second Life..." name="About Second Life..."/> + </menu> +</menu_bar> diff --git a/indra/newview/skins/default/xui/nl/menu_mini_map.xml b/indra/newview/skins/default/xui/nl/menu_mini_map.xml new file mode 100644 index 0000000000000000000000000000000000000000..0a6dfa346580851a0e4000157073d888c837a115 --- /dev/null +++ b/indra/newview/skins/default/xui/nl/menu_mini_map.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="popup"> + <menu_item_call label="Zoom dichtbij" name="Zoom Close"/> + <menu_item_call label="Zoom gemiddeld" name="Zoom Medium"/> + <menu_item_call label="Zoom veraf" name="Zoom Far"/> + <menu_item_call label="Stop volgen" name="Stop Tracking"/> + <menu_item_call label="Profiel..." name="Profile"/> +</menu> diff --git a/indra/newview/skins/default/xui/nl/menu_slurl.xml b/indra/newview/skins/default/xui/nl/menu_slurl.xml index a5aa95cd8bad3ca8b4d1a162ab03644fcdcf7de6..48a4698d0ced44ed37e7f5ed8fe94d7037833958 100644 --- a/indra/newview/skins/default/xui/nl/menu_slurl.xml +++ b/indra/newview/skins/default/xui/nl/menu_slurl.xml @@ -1,6 +1,6 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<menu name="Popup"> - <menu_item_call label="Over URL" name="about_url"/> - <menu_item_call label="Teleport naar URL" name="teleport_to_url"/> - <menu_item_call label="Toon op kaart" name="show_on_map"/> -</menu> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Popup"> + <menu_item_call label="Over URL" name="about_url"/> + <menu_item_call label="Teleport naar URL" name="teleport_to_url"/> + <menu_item_call label="Toon op kaart" name="show_on_map"/> +</menu> diff --git a/indra/newview/skins/default/xui/nl/menu_viewer.xml b/indra/newview/skins/default/xui/nl/menu_viewer.xml index 2f85909ccc853c72b012087f7dd40a2080f6c680..0827858d68c7c0b1d1957ed46300f18fd4f6769d 100644 --- a/indra/newview/skins/default/xui/nl/menu_viewer.xml +++ b/indra/newview/skins/default/xui/nl/menu_viewer.xml @@ -1,203 +1,205 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<menu_bar name="Main Menu"> - <menu label="Bestand" name="File"> - <tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/> - <menu label="Upload" name="upload"> - <menu_item_call label="Upload afbeelding (L$[COST])..." name="Upload Image"/> - <menu_item_call label="Upload geluid (L$[COST])..." name="Upload Sound"/> - <menu_item_call label="Upload animatie (L$[COST])..." name="Upload Animation"/> - <menu_item_call label="Bulk Upload (L$[COST] per bestand)..." name="Bulk Upload"/> - </menu> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="Sluit venster" name="Close Window"/> - <menu_item_call label="Sluit alle vensters" name="Close All Windows"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_call label="Textuur opslaan als..." name="Save Texture As..."/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_call label="Maak foto" name="Take Snapshot"/> - <menu_item_call label="Foto naar harde schijf" name="Snapshot to Disk"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu_item_call label="Afsluiten" name="Quit"/> - </menu> - <menu label="Bewerken" name="Edit"> - <menu_item_call label="Ongedaan maken" name="Undo"/> - <menu_item_call label="Herhalen" name="Redo"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="Knippen" name="Cut"/> - <menu_item_call label="Kopiëren" name="Copy"/> - <menu_item_call label="Plakken" name="Paste"/> - <menu_item_call label="Verwijderen" name="Delete"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_call label="Zoeken..." name="Search..."/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_call label="Alles selecteren" name="Select All"/> - <menu_item_call label="Deselecteren" name="Deselect"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu_item_call label="Dupliceren" name="Duplicate"/> - <menu_item_separator label="-----------" name="separator5"/> - <menu label="Bevestig object" name="Attach Object"/> - <menu label="Object losmaken" name="Detach Object"/> - <menu label="Kleding uitdoen" name="Take Off Clothing"> - <menu_item_call label="Hemd" name="Shirt"/> - <menu_item_call label="Broek" name="Pants"/> - <menu_item_call label="Schoenen" name="Shoes"/> - <menu_item_call label="Sokken" name="Socks"/> - <menu_item_call label="Jas" name="Jacket"/> - <menu_item_call label="Handschoenen" name="Gloves"/> - <menu_item_call label="Onderhemd" name="Menu Undershirt"/> - <menu_item_call label="Onderbroek" name="Menu Underpants"/> - <menu_item_call label="Rok" name="Skirt"/> - <menu_item_call label="Alle kleding" name="All Clothes"/> - </menu> - <menu_item_separator label="-----------" name="separator6"/> - <menu_item_call label="Gebaren..." name="Gestures..."/> - <menu_item_call label="Profiel..." name="Profile..."/> - <menu_item_call label="Uiterlijk..." name="Appearance..."/> - <menu_item_separator label="-----------" name="separator7"/> - <menu_item_check label="Vrienden..." name="Friends..."/> - <menu_item_call label="Groepen..." name="Groups..."/> - <menu_item_separator label="-----------" name="separator8"/> - <menu_item_call label="Voorkeuren..." name="Preferences..."/> - </menu> - <menu label="Weergave" name="View"> - <tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/> - <menu_item_call label="Mouselook" name="Mouselook"/> - <menu_item_check label="Bouwen" name="Build"/> - <menu_item_check label="Joystick vliegcamera" name="Joystick Flycam"/> - <menu_item_call label="Weergave opnieuw instellen" name="Reset View"/> - <menu_item_call label="Kijk naar laatste geklets" name="Look at Last Chatter"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_check label="Werkbalk" name="Toolbar"/> - <menu_item_check label="Lokale chat" name="Chat History"/> - <menu_item_check label="Communiceren" name="Instant Message"/> - <menu_item_check label="Inventaris" name="Inventory"/> - <menu_item_check label="Actieve sprekers" name="Active Speakers"/> - <menu_item_check label="Negeerlijst" name="Mute List"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_check label="Camerabediening" name="Camera Controls"/> - <menu_item_check label="Bewegingsbediening" name="Movement Controls"/> - <menu_item_check label="Wereldkaart" name="World Map"/> - <menu_item_check label="Mini-kaart" name="Mini-Map"/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_check label="Statistiekenbalk" name="Statistics Bar"/> - <menu_item_check label="Eigendomlijnen" name="Property Lines"/> - <menu_item_check label="Landeigenaren" name="Land Owners"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu label="Tooltips" name="Hover Tips"> - <menu_item_check label="Toon tips" name="Show Tips"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_check label="Land tips" name="Land Tips"/> - <menu_item_check label="Tips voor alle objecten" name="Tips On All Objects"/> - </menu> - <menu_item_check label="Markeer transparant" name="Highlight Transparent"/> - <menu_item_check label="Bakens" name="beacons"/> - <menu_item_check label="Verberg particles" name="Hide Particles"/> - <menu_item_check label="Toon HUD bevestigingen" name="Show HUD Attachments"/> - <menu_item_separator label="-----------" name="separator5"/> - <menu_item_call label="Inzoomen" name="Zoom In"/> - <menu_item_call label="Zoom standaard" name="Zoom Default"/> - <menu_item_call label="Uitzoomen" name="Zoom Out"/> - <menu_item_separator label="-----------" name="separator6"/> - <menu_item_call label="Schakelen naar volledig scherm" name="Toggle Fullscreen"/> - <menu_item_call label="UI grootte naar standaard instellen" name="Set UI Size to Default"/> - </menu> - <menu label="Wereld" name="World"> - <menu_item_call label="Chat" name="Chat"/> - <menu_item_check label="Altijd rennen" name="Always Run"/> - <menu_item_check label="Vliegen" name="Fly"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="Maak hier landmarkering" name="Create Landmark Here"/> - <menu_item_call label="Thuis hier instellen" name="Set Home to Here"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_call label="Teleport naar huis" name="Teleport Home"/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_call label="Afwezig instellen" name="Set Away"/> - <menu_item_call label="Niet-storen instellen" name="Set Busy"/> - <menu_item_call label="Stop alle animaties" name="Stop All Animations"/> - <menu_item_call label="Toetsen vrijgeven" name="Release Keys"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu_item_call label="Account geschiedenis..." name="Account History..."/> - <menu_item_call label="Beheer mijn account" name="Manage My Account..."/> - <menu_item_call label="Koop L$..." name="Buy and Sell L$..."/> - <menu_item_separator label="-----------" name="separator5"/> - <menu_item_call label="Mijn land..." name="My Land..."/> - <menu_item_call label="Over land..." name="About Land..."/> - <menu_item_call label="Koop land..." name="Buy Land..."/> - <menu_item_call label="Regio/Estate..." name="Region/Estate..."/> - <menu_item_separator label="-----------" name="separator6"/> - <menu label="Omgeving instellingen" name="Environment Settings"> - <menu_item_call label="Zonsopgang" name="Sunrise"/> - <menu_item_call label="Middag" name="Noon"/> - <menu_item_call label="Zonsondergang" name="Sunset"/> - <menu_item_call label="Middernacht" name="Midnight"/> - <menu_item_call label="Herstel naar regiostandaard" name="Revert to Region Default"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="Omgeving editor" name="Environment Editor"/> - </menu> - </menu> - <menu label="Gereedschappen" name="Tools"> - <menu label="Selecteergereedschap" name="Select Tool"> - <menu_item_call label="Focus" name="Focus"/> - <menu_item_call label="Verplaatsen" name="Move"/> - <menu_item_call label="Bewerken" name="Edit"/> - <menu_item_call label="Maak" name="Create"/> - <menu_item_call label="Land" name="Land"/> - </menu> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_check label="Selecteer alleen mijn objecten" name="Select Only My Objects"/> - <menu_item_check label="Selecteer alleen verplaatsbare objecten" name="Select Only Movable Objects"/> - <menu_item_check label="Selecteer op omgeving" name="Select By Surrounding"/> - <menu_item_check label="Toon verborgen selectie" name="Show Hidden Selection"/> - <menu_item_check label="Toon lichtradius voor selectie" name="Show Light Radius for Selection"/> - <menu_item_check label="Toon selectiestraal" name="Show Selection Beam"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_check label="Snap aan grid" name="Snap to Grid"/> - <menu_item_call label="Snap object XY aan grid" name="Snap Object XY to Grid"/> - <menu_item_call label="Gebruik selectie voor grid" name="Use Selection for Grid"/> - <menu_item_call label="Gridopties..." name="Grid Options..."/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_check label="Bewerk gekoppelde delen" name="Edit Linked Parts"/> - <menu_item_call label="Koppel" name="Link"/> - <menu_item_call label="Ontkoppel" name="Unlink"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu_item_call label="Focus op selectie" name="Focus on Selection"/> - <menu_item_call label="Zoom naar selectie" name="Zoom to Selection"/> - <menu_item_call label="Koop object" name="Menu Object Take"/> - <menu_item_call label="Neem kopie" name="Take Copy"/> - <menu_item_call label="Object terug opslaan in mijn inventaris" name="Save Object Back to My Inventory"/> - <menu_item_call label="Object terug opslaan in objectinhoud" name="Save Object Back to Object Contents"/> - <menu_item_separator label="-----------" name="separator6"/> - <menu_item_call label="Toon script waarschuwing/fout venster" name="Show Script Warning/Error Window"/> - <menu label="Hercompileer scripts in selectie" name="Recompile Scripts in Selection"> - <menu_item_call label="Mono" name="Mono"/> - <menu_item_call label="LSL" name="LSL"/> - </menu> - <menu_item_call label="Scripts in selectie opnieuw instellen" name="Reset Scripts in Selection"/> - <menu_item_call label="Scripts in selectie instellen op uitvoeren" name="Set Scripts to Running in Selection"/> - <menu_item_call label="Scripts in selectie instellen op niet uitvoeren" name="Set Scripts to Not Running in Selection"/> - </menu> - <menu label="Help" name="Help"> - <menu_item_call label="Second Life Help" name="Second Life Help"/> - <menu_item_call label="Handleiding" name="Tutorial"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="Officiële Linden blog..." name="Official Linden Blog..."/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_call label="Scripting portaal..." name="Scripting Portal..."/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_call label="Rapporteer misbruik..." name="Report Abuse..."/> - <menu_item_call label="Botsingen, duwen & slaan" name="Bumps, Pushes &amp; Hits..."/> - <menu_item_call label="Lag Meter" name="Lag Meter"/> - <menu_item_separator label="-----------" name="separator7"/> - <menu label="Bug rapporteren" name="Bug Reporting"> - <menu_item_call label="Publieke problemenlijst..." name="Public Issue Tracker..."/> - <menu_item_call label="Publieke problemenlijst help" name="Publc Issue Tracker Help..."/> - <menu_item_separator label="-----------" name="separator7"/> - <menu_item_call label="Bug rapporteren 101" name="Bug Reporing 101..."/> - <menu_item_call label="Beveiligingsbevindingen..." name="Security Issues..."/> - <menu_item_call label="Kwaliteitsbeheersing Wiki..." name="QA Wiki..."/> - <menu_item_separator label="-----------" name="separator9"/> - <menu_item_call label="Rapporteer bug..." name="Report Bug..."/> - </menu> - <menu_item_call label="Over Second Life..." name="About Second Life..."/> - </menu> -</menu_bar> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu_bar name="Main Menu"> + <menu label="Bestand" name="File"> + <tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/> + <menu label="Upload" name="upload"> + <menu_item_call label="Afbeelding (L$[COST])..." name="Upload Image"/> + <menu_item_call label="Geluid (L$[COST])..." name="Upload Sound"/> + <menu_item_call label="Animatie (L$[COST])..." name="Upload Animation"/> + <menu_item_call label="Bulk (L$[COST] per bestand)..." name="Bulk Upload"/> + <menu_item_separator label="-----------" name="separator"/> + <menu_item_call label="Standaard permissies instellen..." name="perm prefs"/> + </menu> + <menu_item_separator label="-----------" name="separator"/> + <menu_item_call label="Sluit venster" name="Close Window"/> + <menu_item_call label="Sluit alle vensters" name="Close All Windows"/> + <menu_item_separator label="-----------" name="separator2"/> + <menu_item_call label="Textuur opslaan als..." name="Save Texture As..."/> + <menu_item_separator label="-----------" name="separator3"/> + <menu_item_call label="Maak foto" name="Take Snapshot"/> + <menu_item_call label="Foto naar harde schijf" name="Snapshot to Disk"/> + <menu_item_separator label="-----------" name="separator4"/> + <menu_item_call label="Afsluiten" name="Quit"/> + </menu> + <menu label="Bewerken" name="Edit"> + <menu_item_call label="Ongedaan maken" name="Undo"/> + <menu_item_call label="Herhalen" name="Redo"/> + <menu_item_separator label="-----------" name="separator"/> + <menu_item_call label="Knippen" name="Cut"/> + <menu_item_call label="Kopiëren" name="Copy"/> + <menu_item_call label="Plakken" name="Paste"/> + <menu_item_call label="Verwijderen" name="Delete"/> + <menu_item_separator label="-----------" name="separator2"/> + <menu_item_call label="Zoeken..." name="Search..."/> + <menu_item_separator label="-----------" name="separator3"/> + <menu_item_call label="Alles selecteren" name="Select All"/> + <menu_item_call label="Deselecteren" name="Deselect"/> + <menu_item_separator label="-----------" name="separator4"/> + <menu_item_call label="Dupliceren" name="Duplicate"/> + <menu_item_separator label="-----------" name="separator5"/> + <menu label="Bevestig object" name="Attach Object"/> + <menu label="Object losmaken" name="Detach Object"/> + <menu label="Kleding uitdoen" name="Take Off Clothing"> + <menu_item_call label="Hemd" name="Shirt"/> + <menu_item_call label="Broek" name="Pants"/> + <menu_item_call label="Schoenen" name="Shoes"/> + <menu_item_call label="Sokken" name="Socks"/> + <menu_item_call label="Jas" name="Jacket"/> + <menu_item_call label="Handschoenen" name="Gloves"/> + <menu_item_call label="Onderhemd" name="Menu Undershirt"/> + <menu_item_call label="Onderbroek" name="Menu Underpants"/> + <menu_item_call label="Rok" name="Skirt"/> + <menu_item_call label="Alle kleding" name="All Clothes"/> + </menu> + <menu_item_separator label="-----------" name="separator6"/> + <menu_item_call label="Gebaren..." name="Gestures..."/> + <menu_item_call label="Profiel..." name="Profile..."/> + <menu_item_call label="Uiterlijk..." name="Appearance..."/> + <menu_item_separator label="-----------" name="separator7"/> + <menu_item_check label="Vrienden..." name="Friends..."/> + <menu_item_call label="Groepen..." name="Groups..."/> + <menu_item_separator label="-----------" name="separator8"/> + <menu_item_call label="Voorkeuren..." name="Preferences..."/> + </menu> + <menu label="Weergave" name="View"> + <tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/> + <menu_item_call label="Mouselook" name="Mouselook"/> + <menu_item_check label="Bouwen" name="Build"/> + <menu_item_check label="Joystick vliegcamera" name="Joystick Flycam"/> + <menu_item_call label="Weergave opnieuw instellen" name="Reset View"/> + <menu_item_call label="Kijk naar laatste geklets" name="Look at Last Chatter"/> + <menu_item_separator label="-----------" name="separator"/> + <menu_item_check label="Werkbalk" name="Toolbar"/> + <menu_item_check label="Lokale chat" name="Chat History"/> + <menu_item_check label="Communiceren" name="Instant Message"/> + <menu_item_check label="Inventaris" name="Inventory"/> + <menu_item_check label="Actieve sprekers" name="Active Speakers"/> + <menu_item_check label="Negeerlijst" name="Mute List"/> + <menu_item_separator label="-----------" name="separator2"/> + <menu_item_check label="Camerabediening" name="Camera Controls"/> + <menu_item_check label="Bewegingsbediening" name="Movement Controls"/> + <menu_item_check label="Wereldkaart" name="World Map"/> + <menu_item_check label="Mini-kaart" name="Mini-Map"/> + <menu_item_separator label="-----------" name="separator3"/> + <menu_item_check label="Statistiekenbalk" name="Statistics Bar"/> + <menu_item_check label="Eigendomlijnen" name="Property Lines"/> + <menu_item_check label="Banlijnen" name="Banlines"/> + <menu_item_check label="Landeigenaren" name="Land Owners"/> + <menu_item_separator label="-----------" name="separator4"/> + <menu label="Tooltips" name="Hover Tips"> + <menu_item_check label="Toon tips" name="Show Tips"/> + <menu_item_separator label="-----------" name="separator"/> + <menu_item_check label="Land tips" name="Land Tips"/> + <menu_item_check label="Tips voor alle objecten" name="Tips On All Objects"/> + </menu> + <menu_item_check label="Markeer transparant" name="Highlight Transparent"/> + <menu_item_check label="Bakens" name="beacons"/> + <menu_item_check label="Verberg particles" name="Hide Particles"/> + <menu_item_check label="Toon HUD bevestigingen" name="Show HUD Attachments"/> + <menu_item_separator label="-----------" name="separator5"/> + <menu_item_call label="Inzoomen" name="Zoom In"/> + <menu_item_call label="Zoom standaard" name="Zoom Default"/> + <menu_item_call label="Uitzoomen" name="Zoom Out"/> + <menu_item_separator label="-----------" name="separator6"/> + <menu_item_call label="Schakelen naar volledig scherm" name="Toggle Fullscreen"/> + <menu_item_call label="UI grootte naar standaard instellen" name="Set UI Size to Default"/> + </menu> + <menu label="Wereld" name="World"> + <menu_item_call label="Chat" name="Chat"/> + <menu_item_check label="Altijd rennen" name="Always Run"/> + <menu_item_check label="Vliegen" name="Fly"/> + <menu_item_separator label="-----------" name="separator"/> + <menu_item_call label="Maak hier landmarkering" name="Create Landmark Here"/> + <menu_item_call label="Thuis hier instellen" name="Set Home to Here"/> + <menu_item_separator label="-----------" name="separator2"/> + <menu_item_call label="Teleport naar huis" name="Teleport Home"/> + <menu_item_separator label="-----------" name="separator3"/> + <menu_item_call label="Afwezig instellen" name="Set Away"/> + <menu_item_call label="Niet-storen instellen" name="Set Busy"/> + <menu_item_call label="Stop het animeren van mijn avatar" name="Stop Animating My Avatar"/> + <menu_item_call label="Toetsen vrijgeven" name="Release Keys"/> + <menu_item_separator label="-----------" name="separator4"/> + <menu_item_call label="Account geschiedenis..." name="Account History..."/> + <menu_item_call label="Beheer mijn account" name="Manage My Account..."/> + <menu_item_call label="Koop L$..." name="Buy and Sell L$..."/> + <menu_item_separator label="-----------" name="separator5"/> + <menu_item_call label="Mijn land..." name="My Land..."/> + <menu_item_call label="Over land..." name="About Land..."/> + <menu_item_call label="Koop land..." name="Buy Land..."/> + <menu_item_call label="Regio/Estate..." name="Region/Estate..."/> + <menu_item_separator label="-----------" name="separator6"/> + <menu label="Omgeving instellingen" name="Environment Settings"> + <menu_item_call label="Zonsopgang" name="Sunrise"/> + <menu_item_call label="Middag" name="Noon"/> + <menu_item_call label="Zonsondergang" name="Sunset"/> + <menu_item_call label="Middernacht" name="Midnight"/> + <menu_item_call label="Herstel naar regiostandaard" name="Revert to Region Default"/> + <menu_item_separator label="-----------" name="separator"/> + <menu_item_call label="Omgeving editor" name="Environment Editor"/> + </menu> + </menu> + <menu label="Gereedschappen" name="Tools"> + <menu label="Selecteergereedschap" name="Select Tool"> + <menu_item_call label="Focus" name="Focus"/> + <menu_item_call label="Verplaatsen" name="Move"/> + <menu_item_call label="Bewerken" name="Edit"/> + <menu_item_call label="Maak" name="Create"/> + <menu_item_call label="Land" name="Land"/> + </menu> + <menu_item_separator label="-----------" name="separator"/> + <menu_item_check label="Selecteer alleen mijn objecten" name="Select Only My Objects"/> + <menu_item_check label="Selecteer alleen verplaatsbare objecten" name="Select Only Movable Objects"/> + <menu_item_check label="Selecteer op omgeving" name="Select By Surrounding"/> + <menu_item_check label="Toon verborgen selectie" name="Show Hidden Selection"/> + <menu_item_check label="Toon lichtradius voor selectie" name="Show Light Radius for Selection"/> + <menu_item_check label="Toon selectiestraal" name="Show Selection Beam"/> + <menu_item_separator label="-----------" name="separator2"/> + <menu_item_check label="Snap aan grid" name="Snap to Grid"/> + <menu_item_call label="Snap object XY aan grid" name="Snap Object XY to Grid"/> + <menu_item_call label="Gebruik selectie voor grid" name="Use Selection for Grid"/> + <menu_item_call label="Gridopties..." name="Grid Options..."/> + <menu_item_separator label="-----------" name="separator3"/> + <menu_item_check label="Bewerk gekoppelde delen" name="Edit Linked Parts"/> + <menu_item_call label="Koppel" name="Link"/> + <menu_item_call label="Ontkoppel" name="Unlink"/> + <menu_item_separator label="-----------" name="separator4"/> + <menu_item_call label="Focus op selectie" name="Focus on Selection"/> + <menu_item_call label="Zoom naar selectie" name="Zoom to Selection"/> + <menu_item_call label="Koop object" name="Menu Object Take"/> + <menu_item_call label="Neem kopie" name="Take Copy"/> + <menu_item_call label="Object terug opslaan in objectinhoud" name="Save Object Back to Object Contents"/> + <menu_item_separator label="-----------" name="separator6"/> + <menu_item_call label="Toon script waarschuwing/fout venster" name="Show Script Warning/Error Window"/> + <menu label="Hercompileer scripts in selectie" name="Recompile Scripts in Selection"> + <menu_item_call label="Mono" name="Mono"/> + <menu_item_call label="LSL" name="LSL"/> + </menu> + <menu_item_call label="Scripts in selectie opnieuw instellen" name="Reset Scripts in Selection"/> + <menu_item_call label="Scripts in selectie instellen op uitvoeren" name="Set Scripts to Running in Selection"/> + <menu_item_call label="Scripts in selectie instellen op niet uitvoeren" name="Set Scripts to Not Running in Selection"/> + </menu> + <menu label="Help" name="Help"> + <menu_item_call label="Second Life Help" name="Second Life Help"/> + <menu_item_call label="Handleiding" name="Tutorial"/> + <menu_item_separator label="-----------" name="separator"/> + <menu_item_call label="Officiële Linden blog..." name="Official Linden Blog..."/> + <menu_item_separator label="-----------" name="separator2"/> + <menu_item_call label="Scripting portaal..." name="Scripting Portal..."/> + <menu_item_separator label="-----------" name="separator3"/> + <menu_item_call label="Rapporteer misbruik..." name="Report Abuse..."/> + <menu_item_call label="Botsingen, duwen & slaan" name="Bumps, Pushes &amp; Hits..."/> + <menu_item_call label="Lag Meter" name="Lag Meter"/> + <menu_item_separator label="-----------" name="separator7"/> + <menu label="Bug rapporteren" name="Bug Reporting"> + <menu_item_call label="Publieke problemenlijst..." name="Public Issue Tracker..."/> + <menu_item_call label="Publieke problemenlijst help" name="Publc Issue Tracker Help..."/> + <menu_item_separator label="-----------" name="separator7"/> + <menu_item_call label="Bug rapporteren 101" name="Bug Reporing 101..."/> + <menu_item_call label="Beveiligingsbevindingen..." name="Security Issues..."/> + <menu_item_call label="Kwaliteitsbeheersing Wiki..." name="QA Wiki..."/> + <menu_item_separator label="-----------" name="separator9"/> + <menu_item_call label="Rapporteer bug..." name="Report Bug..."/> + </menu> + <menu_item_call label="Over Second Life..." name="About Second Life..."/> + </menu> +</menu_bar> diff --git a/indra/newview/skins/default/xui/nl/mime_types.xml b/indra/newview/skins/default/xui/nl/mime_types.xml index f6ff9e0be45ab7c47f4edfd911d3c9ff4baa7603..ba5de136a06773d3dd990fd497e159c556caea24 100644 --- a/indra/newview/skins/default/xui/nl/mime_types.xml +++ b/indra/newview/skins/default/xui/nl/mime_types.xml @@ -1,230 +1,230 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<mimetypes name="default"> - <widgetset name="web"> - <label name="web_label"> - Web Inhoud - </label> - <tooltip name="web_tooltip"> - Deze locatie bevat Web inhoud - </tooltip> - <playtip name="web_playtip"> - Toon Web inhoud - </playtip> - </widgetset> - <widgetset name="movie"> - <label name="movie_label"> - Film - </label> - <tooltip name="movie_tooltip"> - Hier kan een film afgespeeld worden - </tooltip> - <playtip name="movie_playtip"> - Afspelen film - </playtip> - </widgetset> - <widgetset name="none"> - <label name="none_label"> - Geen Inhoud - </label> - <tooltip name="none_tooltip"> - Geen media hier - </tooltip> - </widgetset> - <widgetset name="image"> - <label name="image_label"> - Afbeelding - </label> - <tooltip name="image_tooltip"> - Er is een afbeelding op deze locatie - </tooltip> - <playtip name="image_playtip"> - Bekijk de afbeelding van deze locatie - </playtip> - </widgetset> - <widgetset name="audio"> - <label name="audio_label"> - Audio - </label> - <tooltip name="audio_tooltip"> - Er is audio op deze locatie - </tooltip> - <playtip name="audio_playtip"> - Speel de audio van deze locatie af - </playtip> - </widgetset> - <scheme name="rtsp"> - <label name="rtsp_label"> - Real Time Streaming - </label> - </scheme> - <mimetype name="blank"> - <label name="blank_label"> - - Geen - - </label> - </mimetype> - <mimetype name="none/none"> - <label name="none/none_label"> - - Geen - - </label> - </mimetype> - <mimetype name="audio/*"> - <label name="audio2_label"> - Audio - </label> - </mimetype> - <mimetype name="video/*"> - <label name="video2_label"> - Video - </label> - </mimetype> - <mimetype name="image/*"> - <label name="image2_label"> - Afbeelding - </label> - </mimetype> - <mimetype name="video/vnd.secondlife.qt.legacy"> - <label name="vnd.secondlife.qt.legacy_label"> - Film (QuickTime) - </label> - </mimetype> - <mimetype name="application/javascript"> - <label name="application/javascript_label"> - Javascript - </label> - </mimetype> - <mimetype name="application/ogg"> - <label name="application/ogg_label"> - Ogg Audio/Video - </label> - </mimetype> - <mimetype name="application/pdf"> - <label name="application/pdf_label"> - PDF Document - </label> - </mimetype> - <mimetype name="application/postscript"> - <label name="application/postscript_label"> - Postscript Document - </label> - </mimetype> - <mimetype name="application/rtf"> - <label name="application/rtf_label"> - Rich Text (RTF) - </label> - </mimetype> - <mimetype name="application/smil"> - <label name="application/smil_label"> - Synchronized Multimedia Integration Language (SMIL) - </label> - </mimetype> - <mimetype name="application/xhtml+xml"> - <label name="application/xhtml+xml_label"> - Web Pagina (XHTML) - </label> - </mimetype> - <mimetype name="application/x-director"> - <label name="application/x-director_label"> - Macromedia Director - </label> - </mimetype> - <mimetype name="application/x-shockwave-flash"> - <label name="application/x-shockwave-flash_label"> - Flash - </label> - </mimetype> - <mimetype name="audio/mid"> - <label name="audio/mid_label"> - Audio (MIDI) - </label> - </mimetype> - <mimetype name="audio/mpeg"> - <label name="audio/mpeg_label"> - Audio (MP3) - </label> - </mimetype> - <mimetype name="audio/x-aiff"> - <label name="audio/x-aiff_label"> - Audio (AIFF) - </label> - </mimetype> - <mimetype name="audio/x-wav"> - <label name="audio/x-wav_label"> - Audio (WAV) - </label> - </mimetype> - <mimetype name="image/bmp"> - <label name="image/bmp_label"> - Afbeelding (BMP) - </label> - </mimetype> - <mimetype name="image/gif"> - <label name="image/gif_label"> - Afbeelding (GIF) - </label> - </mimetype> - <mimetype name="image/jpeg"> - <label name="image/jpeg_label"> - Afbeelding (JPEG) - </label> - </mimetype> - <mimetype name="image/png"> - <label name="image/png_label"> - Afbeelding (PNG) - </label> - </mimetype> - <mimetype name="image/svg+xml"> - <label name="image/svg+xml_label"> - Afbeelding (SVG) - </label> - </mimetype> - <mimetype name="image/tiff"> - <label name="image/tiff_label"> - Afbeelding (TIFF) - </label> - </mimetype> - <mimetype name="text/html"> - <label name="text/html_label"> - Web Pagina - </label> - </mimetype> - <mimetype name="text/plain"> - <label name="text/plain_label"> - Tekst - </label> - </mimetype> - <mimetype name="text/xml"> - <label name="text/xml_label"> - XML - </label> - </mimetype> - <mimetype name="video/mpeg"> - <label name="video/mpeg_label"> - Film (MPEG) - </label> - </mimetype> - <mimetype name="video/mp4"> - <label name="video/mp4_label"> - Film (MP4) - </label> - </mimetype> - <mimetype name="video/quicktime"> - <label name="video/quicktime_label"> - Film (QuickTime) - </label> - </mimetype> - <mimetype name="video/x-ms-asf"> - <label name="video/x-ms-asf_label"> - Film (Windows Media ASF) - </label> - </mimetype> - <mimetype name="video/x-ms-wmv"> - <label name="video/x-ms-wmv_label"> - Film (Windows Media WMV) - </label> - </mimetype> - <mimetype name="video/x-msvideo"> - <label name="video/x-msvideo_label"> - Film (AVI) - </label> - </mimetype> -</mimetypes> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<mimetypes name="default"> + <widgetset name="web"> + <label name="web_label"> + Web Inhoud + </label> + <tooltip name="web_tooltip"> + Deze locatie bevat Web inhoud + </tooltip> + <playtip name="web_playtip"> + Toon Web inhoud + </playtip> + </widgetset> + <widgetset name="movie"> + <label name="movie_label"> + Film + </label> + <tooltip name="movie_tooltip"> + Hier kan een film afgespeeld worden + </tooltip> + <playtip name="movie_playtip"> + Afspelen film + </playtip> + </widgetset> + <widgetset name="none"> + <label name="none_label"> + Geen Inhoud + </label> + <tooltip name="none_tooltip"> + Geen media hier + </tooltip> + </widgetset> + <widgetset name="image"> + <label name="image_label"> + Afbeelding + </label> + <tooltip name="image_tooltip"> + Er is een afbeelding op deze locatie + </tooltip> + <playtip name="image_playtip"> + Bekijk de afbeelding van deze locatie + </playtip> + </widgetset> + <widgetset name="audio"> + <label name="audio_label"> + Audio + </label> + <tooltip name="audio_tooltip"> + Er is audio op deze locatie + </tooltip> + <playtip name="audio_playtip"> + Speel de audio van deze locatie af + </playtip> + </widgetset> + <scheme name="rtsp"> + <label name="rtsp_label"> + Real Time Streaming + </label> + </scheme> + <mimetype name="blank"> + <label name="blank_label"> + - Geen - + </label> + </mimetype> + <mimetype name="none/none"> + <label name="none/none_label"> + - Geen - + </label> + </mimetype> + <mimetype name="audio/*"> + <label name="audio2_label"> + Audio + </label> + </mimetype> + <mimetype name="video/*"> + <label name="video2_label"> + Video + </label> + </mimetype> + <mimetype name="image/*"> + <label name="image2_label"> + Afbeelding + </label> + </mimetype> + <mimetype name="video/vnd.secondlife.qt.legacy"> + <label name="vnd.secondlife.qt.legacy_label"> + Film (QuickTime) + </label> + </mimetype> + <mimetype name="application/javascript"> + <label name="application/javascript_label"> + Javascript + </label> + </mimetype> + <mimetype name="application/ogg"> + <label name="application/ogg_label"> + Ogg Audio/Video + </label> + </mimetype> + <mimetype name="application/pdf"> + <label name="application/pdf_label"> + PDF Document + </label> + </mimetype> + <mimetype name="application/postscript"> + <label name="application/postscript_label"> + Postscript Document + </label> + </mimetype> + <mimetype name="application/rtf"> + <label name="application/rtf_label"> + Rich Text (RTF) + </label> + </mimetype> + <mimetype name="application/smil"> + <label name="application/smil_label"> + Synchronized Multimedia Integration Language (SMIL) + </label> + </mimetype> + <mimetype name="application/xhtml+xml"> + <label name="application/xhtml+xml_label"> + Web Pagina (XHTML) + </label> + </mimetype> + <mimetype name="application/x-director"> + <label name="application/x-director_label"> + Macromedia Director + </label> + </mimetype> + <mimetype name="application/x-shockwave-flash"> + <label name="application/x-shockwave-flash_label"> + Flash + </label> + </mimetype> + <mimetype name="audio/mid"> + <label name="audio/mid_label"> + Audio (MIDI) + </label> + </mimetype> + <mimetype name="audio/mpeg"> + <label name="audio/mpeg_label"> + Audio (MP3) + </label> + </mimetype> + <mimetype name="audio/x-aiff"> + <label name="audio/x-aiff_label"> + Audio (AIFF) + </label> + </mimetype> + <mimetype name="audio/x-wav"> + <label name="audio/x-wav_label"> + Audio (WAV) + </label> + </mimetype> + <mimetype name="image/bmp"> + <label name="image/bmp_label"> + Afbeelding (BMP) + </label> + </mimetype> + <mimetype name="image/gif"> + <label name="image/gif_label"> + Afbeelding (GIF) + </label> + </mimetype> + <mimetype name="image/jpeg"> + <label name="image/jpeg_label"> + Afbeelding (JPEG) + </label> + </mimetype> + <mimetype name="image/png"> + <label name="image/png_label"> + Afbeelding (PNG) + </label> + </mimetype> + <mimetype name="image/svg+xml"> + <label name="image/svg+xml_label"> + Afbeelding (SVG) + </label> + </mimetype> + <mimetype name="image/tiff"> + <label name="image/tiff_label"> + Afbeelding (TIFF) + </label> + </mimetype> + <mimetype name="text/html"> + <label name="text/html_label"> + Web Pagina + </label> + </mimetype> + <mimetype name="text/plain"> + <label name="text/plain_label"> + Tekst + </label> + </mimetype> + <mimetype name="text/xml"> + <label name="text/xml_label"> + XML + </label> + </mimetype> + <mimetype name="video/mpeg"> + <label name="video/mpeg_label"> + Film (MPEG) + </label> + </mimetype> + <mimetype name="video/mp4"> + <label name="video/mp4_label"> + Film (MP4) + </label> + </mimetype> + <mimetype name="video/quicktime"> + <label name="video/quicktime_label"> + Film (QuickTime) + </label> + </mimetype> + <mimetype name="video/x-ms-asf"> + <label name="video/x-ms-asf_label"> + Film (Windows Media ASF) + </label> + </mimetype> + <mimetype name="video/x-ms-wmv"> + <label name="video/x-ms-wmv_label"> + Film (Windows Media WMV) + </label> + </mimetype> + <mimetype name="video/x-msvideo"> + <label name="video/x-msvideo_label"> + Film (AVI) + </label> + </mimetype> +</mimetypes> diff --git a/indra/newview/skins/default/xui/nl/notifications.xml b/indra/newview/skins/default/xui/nl/notifications.xml index c5aff547657bc827aa905cdcb01e746bd2ed7403..c64c2cd021e16165109b57e5dd3dbb0638201606 100644 --- a/indra/newview/skins/default/xui/nl/notifications.xml +++ b/indra/newview/skins/default/xui/nl/notifications.xml @@ -1,5791 +1,3085 @@ -<?xml version="1.0" ?><notifications> - - <global name="skipnexttime"> - - Toon mij dit niet meer. - </global> - - <global name="alwayschoose"> - - Kies altijd deze optie - </global> - - <template name="okbutton"> - <form> - <button - - - name="OK" - text="$yestext"/> - </form> - </template> - - <template name="okignore"> - <form> - <button - - - name="OK" - text="$yestext"/> - <ignore text="$ignoretext"/> - </form> - </template> - - <template name="okcancelbuttons"> - <form> - <button - - - name="OK" - text="$yestext"/> - <button - - name="Cancel" - text="$notext"/> - </form> - </template> - - <template name="okcancelignore"> - <form> - <button - - - name="OK" - text="$yestext"/> - <button - - name="Cancel" - text="$notext"/> - <ignore text="$ignoretext"/> - </form> - </template> - - <template name="okhelpbuttons"> - <form> - <button - - - name="OK" - text="$yestext"/> - <button - - name="Help" - text="$helptext"/> - </form> - </template> - - <template name="yesnocancelbuttons"> - <form> - <button - - - name="Yes" - text="$yestext"/> - <button - - name="No" - text="$notext"/> - <button - - name="Cancel" - text="$canceltext"/> - </form> - </template> - - <notification - functor="GenericAcknowledge" - - name="MissingAlert" - > -'[_NAME]' ontbreekt in notifications.xml. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="FloaterNotFound" - > -Reële waarde fout: Kon de volgende controllers niet vinden: - -[CONTROLS] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="TutorialNotFound" - > -Er is momenteel geen handleiding beschikbaar. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="GenericAlert" - > -[MESSAGE] - </notification> - - <notification - - name="GenericAlertYesCancel" - > -[MESSAGE] - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="Ja"/> - </notification> - - <notification - - name="WearableSave" - > -Wijzigingen aan huidig kledingstuk/lichaamsdeel opslaan? - <usetemplate - canceltext="Annuleren" - name="yesnocancelbuttons" - notext="Niet Opslaan" - yestext="Opslaan"/> - </notification> - - <notification - - name="CompileQueueSaveText" - > -Er was een probleem met het uploaden van de tekst van een script vanwege de volgende reden: [REASON]. Probeer het alstublieft later nog eens. - </notification> - - <notification - - name="CompileQueueSaveBytecode" - > -Er was een probleem met het uploaden van het gecompileerde script vanwege de volgende reden: [REASON]. Probeer het alstublieft later nog eens. - </notification> - - <notification - - name="WriteAnimationFail" - > -Er was een probleem met het wegschrijven van animatie gegevens. Probeer het alstublieft later nog eens. - </notification> - - <notification - - name="UploadAuctionSnapshotFail" - > -Er was een probleem met het uploaden van de veiling foto vanwege de volgende reden: [REASON] - </notification> - - <notification - - name="UnableToViewContentsMoreThanOne" - > -Het is niet mogelijk om de inhoud van meer dan één item tegelijk te zien. -Kies alstublieft slechts één item en probeer het opnieuw. - </notification> - - <notification - - name="SaveClothingBodyChanges" - > -Wijzigingen aan kledingstuk/lichaamsdeel opslaan? - <usetemplate - canceltext="Annuleren" - name="yesnocancelbuttons" - notext="Niet Opslaan" - yestext="Alles Opslaan"/> - </notification> - - <notification - - name="GrantModifyRights" - > -Het geven van wijzigingsrechten aan een andere inwoner, maakt het voor hun mogelijk om elk willekeurig object te wijzigen, te verwijderen of om WILLEKEURIGE objecten die u in wereld heeft terug te nemen. Wees HEEL voorzichtig met het uitgeven van dit recht. -Wilt u wijzigingsrechten aan [FIRST_NAME] [LAST_NAME] geven? - <usetemplate - name="okcancelbuttons" - notext="Nee" - yestext="Ja"/> - </notification> - - <notification - - name="GrantModifyRightsMultiple" - > -Het geven van wijzigingsrechten aan een andere inwoner, maakt het voor hun mogelijk elk WILLEKEURIG object te wijzigen die u in wereld heeft. Wees HEEL voorzichtig met het uitgeven van dit recht. -Wilt u wijzigingsrechten aan de geselecteerde inwoners geven? - <usetemplate - name="okcancelbuttons" - notext="Nee" - yestext="Ja"/> - </notification> - - <notification - - name="RevokeModifyRights" - > -Wilt u de wijzigingsrechten voor [FIRST_NAME] [LAST_NAME] terugnemen? - <usetemplate - name="okcancelbuttons" - notext="Nee" - yestext="Ja"/> - </notification> - - <notification - - name="RevokeModifyRightsMultiple" - > -Wilt u de wijzigingsrechten voor de geselecteerde inwoners terugnemen? - <usetemplate - name="okcancelbuttons" - notext="Nee" - yestext="Ja"/> - </notification> - - <notification - - name="UnableToCreateGroup" - > -Kan geen groep aanmaken. -[MESSAGE] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="PanelGroupApply" - > -[NEEDS_APPLY_MESSAGE] -[WANT_APPLY_MESSAGE] - <usetemplate - canceltext="Annuleren" - name="yesnocancelbuttons" - notext="Wijzigingen Negeren" - yestext="Wijzigingen Toepassen"/> - </notification> - - <notification - - name="MustSpecifyGroupNoticeSubject" - > -U moet een onderwerp opgeven om dit bericht te kunnen versturen. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="AddGroupOwnerWarning" - > -U staat op het punt groepsleden de rol [ROLE_NAME] te geven. -Leden kunnen niet van die groep worden verwijderd. -De leden moeten zichzelf ontheffen uit deze rol. -Weet u zeker dat u door wilt gaan? - <usetemplate - ignoretext="Wanneer u groepsleden toevoegt aan de eigenaren rol" - name="okcancelignore" - notext="Nee" - yestext="Ja"/> - </notification> - - <notification - - name="AssignDangerousActionWarning" - > -U staat op het punt de Bekwaamheid '[ACTION_NAME]' aan de Rol '[ROLE_NAME]' toe te voegen. - - *WAARSCHUWING* - Elk lid in de Rol met deze Bekwaamheid kan zichzelf - en elk ander lid - Rollen geven die meer mogelijkheden hebben dan waar zij nu over beschikken, zichzelf daarmee verheffend tot bijna eigenaar mogelijkheden. Weet zeker waar u mee bezig bent alvorens deze Bekwaamheid toe te kennen. - -Deze Bekwaamheid toevoegen aan '[ROLE_NAME]'? - <usetemplate - name="okcancelbuttons" - notext="Nee" - yestext="Ja"/> - </notification> - - <notification - - name="AssignDangerousAbilityWarning" - > -U staat op het punt de Bekwaamheid '[ACTION_NAME]' aan de Rol '[ROLE_NAME]' toe te voegen. - - *WAARSCHUWING* - Elk lid in de Rol met deze Bekwaamheid kan zichzelf - en elk ander lid - alle Bekwaamheden geven, zich daarmee verheffend tot bijna Eigenaar mogelijkheden. - -Deze Bekwaamheid toevoegen aan '[ROLE_NAME]'? - <usetemplate - name="okcancelbuttons" - notext="Nee" - yestext="Ja"/> - </notification> - - <notification - - name="ClickPublishHelpLand" - > -Het selecteren van de "Publiceer in Zoeken" optie -Het aan vinken van deze optie zal: -- dit perceel weergeven in de zoek resultaten -- de publieke objecten van dit perceel weergeven -- dit perceel in web zoeken weergeven - </notification> - - <notification - - name="ClickPublishHelpLandDisabled" - > -U kunt dit perceel niet zichtbaar maken in zoeken omdat het zich in een regio bevindt dat dit niet toelaat - </notification> - - <notification - - name="ClickPublishHelpAvatar" - > -Het selecteren van "Weergeven in Zoeken" zal weergeven: -- mijn profiel in de zoek resultaten -- een link naar mijn profiel in de publieke groep pagina's - </notification> - - <notification - - name="ClickPartnerHelpAvatar" - > -U kunt een andere Inwoner ten huwelijk vragen of een bestaand partner schap verbreken via de [SECOND_LIFE] website. - -Naar de Second Life website gaan voor meer informatie over partner schap? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="Ga naar Pagina"/> - </notification> - - <notification - - name="ClickWebProfileHelpAvatar" - > -Als een Inwoner een web profiel URL heeft ingesteld: -* Klik op 'Laden' om de pagina in deze web tab te zien. -* Klik op Laden > 'In externe browser' om de pagina in uw standaard browser te zien -* Klik op Laden > 'Thuis pagina URL' om terug te keren naar het web profiel van deze Inwoner indien U verder genavigeerd bent. - -Indien u uw eigen profiel bekijkt, kunt U elke willekeurige URL opgeven als uw web profiel en op OK klikken om het in te stellen. -Andere Inwoners kunnen de door U opgegeven URL bezoeken indien zijn uw profiel bekijken. - </notification> - - <notification - - name="JoinGroupCanAfford" - > -Deelname aan deze groep kost L$[COST]. -Wilt u doorgaan? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="Deelnemen"/> - </notification> - - <notification - - name="JoinGroupCannotAfford" - > -Deelname aan deze groep kost L$[COST]. -U heeft niet genoeg L$ om deel te kunnen nemen aan deze groep. - </notification> - - <notification - - name="LandBuyPass" - > -Voor L$[COST] krijgt u toegang tot het land ('[PARCEL_NAME]') voor de duur van [TIME] uur. - -Een pas kopen? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="SalePriceRestriction" - > -De verkoopprijs moet ingesteld staan op meer dan L$0 indien u aan iemand verkoopt. -Kies een individu indien u het voor L$0 verkoopt. - </notification> - - <notification - - name="ConfirmLandSaleChange" - - > -De geselecteerde [LAND_SIZE] m² land is te koop gezet. -Uw verkoopprijs is L$[SALE_PRICE] en zal geautoriseerd worden voor verkoop door [NAME]. - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmLandSaleToAnyoneChange" - > -ATTENTIE: Het aanklikken van 'verkoop aan iedereen' zal uw land beschikbaar maken aan de gehele Second Life gemeenschap, zo ook diegenen niet in deze regio! - -De geselecteerde [LAND_SIZE] m² land is te koop gezet. -Uw verkoopprijs is L$[SALE_PRICE] en zal geautoriseerd worden voor verkoop door [NAME]. - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="ReturnObjectsDeededToGroup" - > -Weet u zeker dat u alle met de groep '[NAME]' gedeelde objecten van dit perceel wilt retourneren naar de inventaris van hun vorige eigenaren? - -*WAARSCHUWING* Dit zal alle niet-overdraagbare aan de groep toegekende objecten verwijderen! - -Objecten: [N] - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="ReturnObjectsOwnedByUser" - > -Weet u zeker dat u alle objecten van Inwoner '[NAME]' op dit perceel wilt retourneren naar hun inventaris? - -Objecten: [N] - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="ReturnObjectsOwnedBySelf" - > -Weet u zeker dat u al uw eigen objecten op dit perceel wilt retourneren naar uw inventaris? - -Objecten: [N] - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="ReturnObjectsNotOwnedBySelf" - > -Weet u zeker dat u alle objecten op dit perceel die geen eigendom van u zijn wilt retourneren naar de inventaris van hun eigenaren? -Overdraagbare objecten toegekend aan de groep zullen worden geretourneerd naar de oorspronkelijke eigenaren. - -*WAARSCHUWING* Dit zal alle niet-overdraagbare aan de groep toegekende objecten verwijderen! - -Objecten: [N] - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="ReturnObjectsNotOwnedByUser" - > -Weet u zeker dat u alle objecten op dit perceel die GEEN eigendom zijn van [NAME] wilt retourneren naar de inventaris van hun eigenaar? Overdraagbare objecten toegekend aan de groep zullen worden geretourneerd naar de oorspronkelijke eigenaren. - -*WAARSCHUWING* Dit zal alle niet-overdraagbare aan de groep toegekende objecten verwijderen! - -Objecten: [N] - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="ReturnAllTopObjects" - > -Weet u zeker dat u alle weergegeven objecten wilt retourneren naar de inventaris van hun eigenaar? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="DisableAllTopObjects" - > -Weet u zeker dat u alle objecten in deze regio uit wilt schakelen? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="ReturnObjectsNotOwnedByGroup" - > -Alle objecten op dit perceel die NIET gedeeld worden met de groep [NAME] retourneren naar hun eigenaren? - -Objecten: [N] - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="UnableToDisableOutsideScripts" - > -Kan scripts niet uitschakelen. -Voor de hele regio is letsel ingeschakeld. -Scripts moeten toegestaan worden om wapens te kunnen laten werken. - </notification> - - <notification - - name="MustBeInParcel" - > -U moet binnen een perceel staan om het Landings Punt in te stellen. - </notification> - - <notification - - name="PromptRecipientEmail" - > -Geef alstublieft een geldig email adres op van de ontvanger(s). - </notification> - - <notification - - name="PromptSelfEmail" - > -Voer uw email adres in. - </notification> - - <notification - - name="PromptMissingSubjMsg" - > -Foto e-mailen met het standaard onderwerp of bericht? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="ErrorProcessingSnapshot" - > -Fout opgetreden met het verwerken van de foto gegevens - </notification> - - <notification - - name="ErrorEncodingSnapshot" - > -Fout opgetreden met het coderen van de foto. - </notification> - - <notification - - name="ErrorUploadingPostcard" - > -Er is een probleem met het verzenden van de foto vanwege de volgende reden: [REASON] - </notification> - - <notification - - name="ErrorUploadingReportScreenshot" - > -Er is een probleem met het uploaden van de rapport foto vanwege de volgende reden: [REASON] - </notification> - - <notification - - name="MustAgreeToLogIn" - > -U moet akkoord gaan met de Voorwaarden van Dienstverlening (Terms of Service) om in te kunnen loggen in [SECOND_LIFE]. - </notification> - - <notification - - name="CouldNotPutOnOutfit" - > -Kon de outfit niet aan doen. -De outfit folder bevat geen kleding, lichaamsdelen of externe bevestigingen. - </notification> - - <notification - - name="CannotWearTrash" - > -U kunt geen kleding of lichaamsdelen aan trekken die zich in de vuilnisbak bevinden. - </notification> - - <notification - - name="CannotWearInfoNotComplete" - > -U kunt dat item niet aantrekken omdat het nog niet geladen is. Probeer het over een minuut opnieuw. - </notification> - - <notification - - name="MustHaveAccountToLogIn" - > -Oeps! Iets is nog leeg. -U moet zowel de voornaam als de achternaam van uw avatar opgeven. - -U heeft een account nodig om [SECOND_LIFE] binnen te gaan. Wilt u er nu een maken? - <usetemplate - name="okcancelbuttons" - notext="Probeer het opnieuw" - yestext="Maak een nieuw account"/> - </notification> - - <notification - - name="AddClassified" - > -Geclassificeerde advertenties verschijnen een week lang in de 'Advertentie' sectie van de Zoek gids en op www.secondlife.com. -Vul uw advertentie in en klik op 'Publiceer...' om het toe te voegen aan de gids. -Er zal u om een prijs worden gevraagd als u deze gaat publiceren. -Indien u meer betaald zal uw advertentie hoger in de lijst verschijnen en ook hoger als men op sleutelwoorden zoekt. - <usetemplate - ignoretext="Indien u een advertentie toevoegt" - name="okcancelignore" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="DeleteClassified" - > -Advertentie '[NAME]' verwijderen? -Betaalde advertentiekosten zullen niet worden terug gestort. - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="ClassifiedSave" - > -Wijzigingen in advertentie [NAME] opslaan? - <usetemplate - canceltext="Annuleren" - name="yesnocancelbuttons" - notext="Niet Opslaan" - yestext="Opslaan"/> - </notification> - - <notification - - name="DeleteAvatarPick" - > -Favoriet [PICK] verwijderen? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="PromptGoToEventsPage" - > -Naar de [SECOND_LIFE] evenementen web pagina gaan? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="SelectProposalToView" - > -Kies alstublieft een voorstel om in te zien. - </notification> - - <notification - - name="SelectHistoryItemToView" - > -Kies alstublieft een geschiedenis item om in te zien. - </notification> - - <notification - - name="ResetShowNextTimeDialogs" - > -Wilt u alle Pop-Up's opnieuw inschakelen die u eerder aanmerkte als 'Laat mij niet opnieuw zien'? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="SkipShowNextTimeDialogs" - > -Wilt u alle Pop-Up's uitschakelen die overgeslagen kunnen worden? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="CacheWillClear" - > -De Cache zal geleegd worden als u [SECOND_LIFE] opnieuw start. - </notification> - - <notification - - name="CacheWillBeMoved" - > -De Cache zal verplaatst worden als u [SECOND_LIFE] opnieuw start. -Opmerking: Dit zal de Cache legen. - </notification> - - <notification - - name="ChangeConnectionPort" - > -Poort instelling zullen effect hebben nadat u [SECOND_LIFE] opnieuw start. - </notification> - - <notification - - name="ChangeSkin" - > -De nieuwe skin zal verschijnen nadat u [SECOND_LIFE] opnieuw start. - </notification> - - <notification - - name="GoToAuctionPage" - > -Ga naar de [SECOND_LIFE] web pagina om de veiling details te zien of een bod uit te brengen. - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="SaveChanges" - > -Wijzigingen Opslaan? - <usetemplate - canceltext="Annuleren" - name="yesnocancelbuttons" - notext="Niet Opslaan" - yestext="Opslaan"/> - </notification> - - <notification - - name="GestureSaveFailedTooManySteps" - > -Gebaar opslaan is niet gelukt. -Dit gebaar heeft te veel stappen. -Probeer enkele stappen te verwijderen en opnieuw op te slaan. - </notification> - - <notification - - name="GestureSaveFailedTryAgain" - > -Gebaar opslaan is niet gelukt. Probeer het over enkele ogenblikken opnieuw. - </notification> - - <notification - - name="GestureSaveFailedObjectNotFound" - > -Kon het gebaar niet opslaan omdat het object of bijbehorende object niet in de inventaris kon worden gevonden. - -Het object kan buiten bereik of mogelijk verwijderd zijn. - </notification> - - <notification - - name="GestureSaveFailedReason" - > -Er was een probleem met het opslaan van het gebaar vanwege de volgende reden: [REASON]. Probeert u het gebaar later nogmaals op te slaan. - </notification> - - <notification - - name="SaveNotecardFailObjectNotFound" - > -Kon de notitiekaart niet opslaan omdat het object of bijbehorende object niet in de inventaris kon worden gevonden. - -Het object kan buiten bereik of mogelijk verwijderd zijn. - </notification> - - <notification - - name="SaveNotecardFailReason" - > -Er was een probleem met het opslaan van de notitiekaart vanwege de volgende reden: [REASON]. Probeert u de notitiekaart later nogmaals op te slaan. - </notification> - - <notification - - name="ScriptCannotUndo" - > -Kon niet alle wijzigingen ongedaan maken in uw versie van het script. -Wilt u de laatst op de server opgeslagen versie laden? -(**Waarschuwing** Deze operatie kan niet ongedaan gemaakt worden.) - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="SaveScriptFailReason" - > -Er was een probleem met het opslaan van een script vanwege de volgende reden: [REASON]. Probeert u het script later nogmaals op te slaan. - </notification> - - <notification - - name="SaveScriptFailObjectNotFound" - > -Kon het script niet opslaan omdat het object waar het in zit niet gevonden kon worden. -Het object kan buiten bereik of mogelijk verwijderd zijn. - </notification> - - <notification - - name="SaveBytecodeFailReason" - > -Er was een probleem met het opslaan van een gecompileerd script vanwege de volgende reden: [REASON]. Probeert u het script later nogmaals op te slaan. - </notification> - - <notification - - name="CouldNotStartStopScript" - > -Kon het script niet starten of stoppen omdat het object wat het in zit niet gevonden kon worden. -Het object kan buiten bereik of mogelijk verwijderd zijn. - </notification> - - <notification - - name="CannotDownloadFile" - > -Kon het bestand niet downloaden - </notification> - - <notification - - name="CannotWriteFile" - > -Kan niet naar bestand [[FILE]] schrijven - </notification> - - <notification - - name="UnsupportedHardware" - > -Waarschuwing: Uw systeem voldoet niet aan de Second Life minimum systeem eisen. Indien u Second Life gebruikt, ervaart u mogelijk slechte prestaties. Helaas kunnen we geen technische ondersteuning geven voor niet ondersteunde configuraties. - -MINSPECS -Wilt u [_URL] bezoeken voor meer informatie? - <url option="0" name="url"> - - http://secondlife.com/support/sysreqs.php?lang=nl - </url> - <usetemplate - ignoretext="Indien niet ondersteunde hardware gedetecteerd" - name="okcancelignore" - notext="Nee" - yestext="Ja"/> - </notification> - - <notification - - name="UnknownGPU" - > -Uw systeem heeft een grafische kaart die bij ons nog niet bekend is op dit moment. - -Dit is vaak het geval met nieuwe hardware waarbij wij nog niet de kans gehad hebben om het te testen. Second Life zal mogelijk naar behoren functioneren, doch het kan zijn dat u uw grafische instellingen naar geschiktere waarden zult moeten instellen. -(Bewerken menu > Voorkeuren > Grafisch). - <form name="form"> - <ignore name="ignore" - text="Indien een onbekende grafische kaart gedetecteerd"/> - </form> - </notification> - - <notification - - name="DisplaySettingsNoShaders" - > -[SECOND_LIFE] is gestopt bij het initialiseren van de grafische stuurprogramma's. -Grafische kwaliteit zal op zijn laagst worden ingesteld om veel voorkomende fouten met stuurprogramma's te vermijden. -Dit zal sommige grafische opties uitschakelen. -Wij adviseren u de stuurprogramma's van uw grafische kaart bij te werken. -Grafische kwaliteit kan verhoogd worden in Voorkeuren > Grafisch. - </notification> - - <notification - - name="RegionNoTerraforming" - > -De regio [REGION] staat geen land aanpassingen toe. - </notification> - - <notification - - name="CannotCopyWarning" - > -U heeft geen permissie dit item te kopiëren en zult het kwijtraken als u het weg geeft. Wilt u dit item echt aanbieden? - <usetemplate - name="okcancelbuttons" - notext="Nee" - yestext="Ja"/> - </notification> - - <notification - - name="CannotGiveItem" - > -Kan inventaris item niet geven. - </notification> - - <notification - - name="TransactionCancelled" - > -Transactie afgebroken. - </notification> - - <notification - - name="TooManyItems" - > -Kan niet meer dan 42 items in één enkele inventaris overdracht geven. - </notification> - - <notification - - name="NoItems" - > -U heeft geen permissie de geselecteerde items over te dragen. - </notification> - - <notification - - name="CannotCopyCountItems" - > -U heeft geen permissie om [COUNT] geselecteerde items te kopiëren. U zult deze items uit uw inventaris kwijtraken. -Weet u zeker dat u deze items wilt geven? - <usetemplate - name="okcancelbuttons" - notext="Nee" - yestext="Ja"/> - </notification> - - <notification - - name="CannotGiveCategory" - > -U heeft geen permissie de geselecteerde map over te dragen. - </notification> - - <notification - - name="FreezeAvatar" - > -Avatar bevriezen? -Hij of zij zal zich tijdelijk niet kunnen bewegen, praten of interactie kunnen hebben met de wereld. - <usetemplate - canceltext="Annuleren" - name="yesnocancelbuttons" - notext="Ontdooien" - yestext="Bevriezen"/> - </notification> - - <notification - - name="FreezeAvatarFullname" - > -Bevries [AVATAR_NAME]? -Hij of zij zal zich tijdelijk niet kunnen bewegen, praten of interactie kunnen hebben met de wereld. - <usetemplate - canceltext="Annuleren" - name="yesnocancelbuttons" - notext="Ontdooien" - yestext="Bevriezen"/> - </notification> - - <notification - - name="EjectAvatarFullname" - > -[AVATAR_NAME] van uw land verwijderen? - <usetemplate - canceltext="Annuleren" - name="yesnocancelbuttons" - notext="Verwijderen en Bannen" - yestext="Verwijderen"/> - </notification> - - <notification - - name="EjectAvatarNoBan" - > -Deze avatar van u land verwijderen? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="Verwijder"/> - </notification> - - <notification - - name="EjectAvatarFullnameNoBan" - > -[AVATAR_NAME] van uw land verwijderen? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="Verwijder"/> - </notification> - - <notification - - name="AcquireErrorTooManyObjects" - > -VERWERVINGS FOUT: Te veel objecten geselecteerd - </notification> - - <notification - - name="AcquireErrorObjectSpan" - > -VERWERVINGS FOUT: Objecten beslaan meer dan één regio. -Verplaats alstublieft alle objecten die u wilt verwerven naar dezelfde regio. - </notification> - - <notification - - name="PromptGoToCurrencyPage" - > -[EXTRA] - -Naar [URL] gaan voor informatie over de aankoop valuta? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="UnableToLinkObjects" - > -Kon deze [COUNT] objecten niet linken. -U kunt maximaal [MAX] objecten linken. - </notification> - - <notification - - name="CannotLinkIncompleteSet" - > -U kunt alleen complete sets van objecten linken en moet meer dan één object selecteren. - </notification> - - <notification - - name="CannotLinkModify" - > -Kon niet linken omdat u geen wijziging permissies heeft op alle objecten. - -Wees er van overtuigd dat er geen enkele geblokkeerd is en dat ze allen uw eigendom zijn. - </notification> - - <notification - - name="CannotLinkDifferentOwners" - > -Kon niet linken omdat niet alle objecten dezelfde eigenaar hebben. - -Wees er van overtuigd dat alle objecten uw eigendom zijn. - </notification> - - <notification - - name="NoFileExtension" - > -Geen bestandsextensie voor het bestand: '[FILE]' - -Zorg dat het bestand de juiste bestandsextensie heeft. - </notification> - - <notification - - name="InvalidFileExtension" - > -Ongeldige bestandsextensie [EXTENSION] -Verwacht [VALIDS] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="CannotUploadSoundFile" - > -Kon het geüploade geluidsbestand niet openen om te lezen: -[FILE] - </notification> - - <notification - - name="SoundFileNotRIFF" - > -Het bestand lijkt geen RIFF WAVE bestand te zijn: -[FILE] - </notification> - - <notification - - name="SoundFileNotPCM" - > -Het bestand lijkt geen PCM WAVE audio bestand te zijn: -[FILE] - </notification> - - <notification - - name="SoundFileInvalidChannelCount" - > -Het bestand heeft een ongeldig aantal kanalen (moet mono of stereo zijn): -[FILE] - </notification> - - <notification - - name="SoundFileInvalidSampleRate" - > -Het bestand lijkt geen ondersteund sample rate te hebben (moet 44.1k zijn): -[FILE] - </notification> - - <notification - - name="SoundFileInvalidWordSize" - > -Het bestand lijkt geen ondersteund word size te hebben (moet 8 of 16 bit zijn): -[FILE] - </notification> - - <notification - - name="SoundFileInvalidHeader" - > -Kon geen 'data' chunk in WAV header vinden: -[FILE] - </notification> - - <notification - - name="SoundFileInvalidTooLong" - > -Audio bestand is te lang (10 seconden maximum): -[FILE] - </notification> - - <notification - - name="ProblemWithFile" - > -Probleem met bestand [FILE]: - -[ERROR] - </notification> - - <notification - - name="CannotOpenTemporarySoundFile" - > -Kon geen tijdelijk gecomprimeerd geluidsbestand openen om naar toe te schrijven: [FILE] - </notification> - - <notification - - name="UnknownVorbisEncodeFailure" - > -Onbekende Vorbis codeer fout in: [FILE] - </notification> - - <notification - - name="CorruptResourceFile" - > -Beschadigd bron bestand: [FILE] - </notification> - - <notification - - name="UnknownResourceFileVersion" - > -Onbekende Linden bronbestandsversie in bestand: [FILE] - </notification> - - <notification - - name="UnableToCreateOutputFile" - > -Niet mogelijk om uitvoerbestand te maken: [FILE] - </notification> - - <notification - - name="DoNotSupportBulkAnimationUpload" - > -Wij ondersteunen momenteel geen bulk upload van animatie bestanden. - </notification> - - <notification - - name="CannotUploadReason" - > -Niet mogelijk om bestand [FILE] te uploaden vanwege de volgende reden: [REASON] -Probeer het later opnieuw. - </notification> - - <notification - - name="CannotCreateLandmarkNotOwner" - > -U kunt hier geen land markering maken omdat de eigenaar van het land dit niet toestaat. - </notification> - - <notification - - name="CannotRecompileSelectObjectsNoScripts" - > -Niet mogelijk om te 'her compileren'. -Selecteer een object met een script. - </notification> - - <notification - - name="CannotRecompileSelectObjectsNoPermission" - > -Niet mogelijk om te 'hercompileren'. - -Selecteer objecten met scripts waarvan u permissie heeft deze aan te passen. - </notification> - - <notification - - name="CannotResetSelectObjectsNoScripts" - > -Kan geen 'Opnieuw instellen' uitvoeren. - -Selecteer objecten met scripts. - </notification> - - <notification - - name="CannotResetSelectObjectsNoPermission" - > -Kan geen 'Opnieuw instellen' uitvoeren. - -Selecte objecten met scripts waarvan u permissie heeft deze aan te passen. - </notification> - - <notification - - name="CannotSetRunningSelectObjectsNoScripts" - > -Kan geen enkele scripts instellen op 'Uitvoeren'. - -Selecteer objecten met scripts. - </notification> - - <notification - - name="CannotSetRunningNotSelectObjectsNoScripts" - > -Kan geen enkele scripts instellen op 'Niet uitvoeren'. - -Selecteer objecten met scripts. - </notification> - - <notification - - name="NoFrontmostFloater" - > -Geen voorgaande floating waarde om op te slaan. - </notification> - - <notification - - name="SeachFilteredOnShortWords" - > -Uw zoek opdracht was aangepast en de woorden die te kort waren zijn verwijderd. - -Gezocht naar: [FINALQUERY] - </notification> - - <notification - - name="SeachFilteredOnShortWordsEmpty" - > -Uw zoek termen waren te kort en er is geen zoekopdracht uitgevoerd. - </notification> - - <notification - - name="CouldNotTeleportReason" - > -Kon niet Teleporteren. -[REASON] - </notification> - - <notification - - name="CannotSetLandOwnerNothingSelected" - > -Kan landeigenaar niet instellen: -Geen perceel geselecteerd. - </notification> - - <notification - - name="CannotSetLandOwnerMultipleRegions" - > -Kon geen land eigendom forceren omdat de selectie meerder regio's omvat. -Selecteer alstublieft een kleiner gebied en probeer het opnieuw. - </notification> - - <notification - - name="ForceOwnerAuctionWarning" - > -Dit perceel staat voor veiling aangemerkt. Eigendom forceren zal de veiling afbreking en kan potentieel een aantal inwoners niet erg blij maken als het bieden al is begonnen. Eigendom forceren? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="CannotContentifyNothingSelected" - > -Unable to contentify: -Geen perceel geselecteerd. - </notification> - - <notification - - name="CannotContentifyNoRegion" - > -Unable to contentify: -Geen regio geselecteerd. - </notification> - - <notification - - name="CannotReleaseLandNothingSelected" - > -Kan land niet afstaan: -Geen perceel geselecteerd. - </notification> - - <notification - - name="CannotReleaseLandNoRegion" - > -Kan land niet afstaan: -kan de regio niet vinden. - </notification> - - <notification - - name="CannotBuyLandNothingSelected" - > -Kan land niet kopen: -Geen perceel geselecteerd. - </notification> - - <notification - - name="CannotBuyLandNoRegion" - > -Kan land niet kopen: -Kan de regio niet vinden waar dit land zich bevind. - </notification> - - <notification - - name="CannotCloseFloaterBuyLand" - > -U kunt het Koop Land venster niet sluiten totdat Second Life de prijs van de transactie geschat heeft. - </notification> - - <notification - - name="CannotDeedLandNothingSelected" - > -Kan land niet toekennen: -Geen perceel geselecteerd. - </notification> - - <notification - - name="CannotDeedLandNoGroup" - > -Kan land niet toekennen: -Geen groep geselecteerd. - </notification> - - <notification - - name="CannotDeedLandNoRegion" - > -Kan land niet toekennen: -Kan de regio niet vinden waar dit land zich bevind. -Gebruik alstublieft Gereedschappen -> Report Bug om het te rapporteren. - </notification> - - <notification - - name="CannotDeedLandMultipleSelected" - > -Kan land niet toekennen: -Meerder percelen geselecteerd. - -Probeer één enkel perceel te selecteren. - </notification> - - <notification - - name="ParcelCanPlayMedia" - > -Deze locatie van streaming media afspelen. - -Streaming media vereisen een snelle internet verbinding. - -Streaming media afspelen wanneer beschikbaar? -(U kunt deze optie later wijzigen onder Preferenties > Audio & Video.) - <usetemplate - name="okcancelbuttons" - notext="Uitschakelen" - yestext="Media Afspelen"/> - </notification> - - <notification - - name="CannotDeedLandWaitingForServer" - > -Kan land niet toekennen: -Wacht op de server om eigendom te rapporteren. - -Probeer het alstublieft opnieuw. - </notification> - - <notification - - name="CannotDeedLandNoTransfer" - > -Kan land niet toekennen: -De regio [REGION] staat geen overdracht van land toe. - </notification> - - <notification - - name="CannotReleaseLandWatingForServer" - > -Kan land niet afstaan: -Wacht op server om de perceel informatie bij te werken. - -Probeer het over enkele ogenblikken opnieuw. - </notification> - - <notification - - name="CannotReleaseLandSelected" - > -Kan land niet afstaan: -Niet alle geselecteerde percelen zijn uw eigendom. - -Kies alstublieft één perceel. - </notification> - - <notification - - name="CannotReleaseLandDontOwn" - > -Kan land niet afstaan: -U heeft geen permissie dit perceel vrij te geven. -Percelen in uw eigendom verschijnen in groen. - </notification> - - <notification - - name="CannotReleaseLandRegionNotFound" - > -Kan land niet afstaan: -Kan de regio niet vinden waar dit land zich bevind. - -Gebruik alstublieft Gereedschappen > Report Bug om het te rapporteren. - </notification> - - <notification - - name="CannotReleaseLandNoTransfer" - > -Kan land niet afstaan: -De regio [REGION] staat geen overdracht van land toe. - </notification> - - <notification - - name="CannotReleaseLandPartialSelection" - > -Kan land niet afstaan: -U moet het gehele perceel selecteren om het vrij te kunnen geven. - -Selecteer het gehele perceel of deel het eerst op. - </notification> - - <notification - - name="ReleaseLandWarning" - > -U staat op het punt om [AREA] m² land af te staan. -Met het afstaan van dit perceel zal het uit uw land houderschapsoverzicht verdwijnen, maar zal u geen L$ toekennen. - -Dit land afstaan? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="CannotDivideLandNothingSelected" - > -Kan land niet opdelen: - -Geen percelen geselecteerd. - </notification> - - <notification - - name="CannotDivideLandPartialSelection" - > -Kan land niet opdelen: - -U heeft het gehele perceel geselecteerd. -Probeer een deel van het perceel te selecteren. - </notification> - - <notification - - name="LandDivideWarning" - > -Opdelen zal het perceel in twee delen verdelen en elk perceel kan zijn eigen instellingen hebben. Sommige instellingen zullen naar de standaard waarden terugkeren als de operatie voltooid is. - -Land opdelen? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="CannotDivideLandNoRegion" - > -Kan het land niet opdelen: -Kan de regio niet vinden waar dit land zich bevind. - -Gebruik alstublieft Gereedschappen > Report Bug om het te rapporteren. - </notification> - - <notification - - name="CannotJoinLandNoRegion" - > -Kan land niet verbinden: -Kan de regio niet vinden waar dit land zich bevind. - -Gebruik alstublieft Gereedschappen > Report Bug om het te rapporteren. - </notification> - - <notification - - name="CannotJoinLandNothingSelected" - > -Kan land niet verbinden: -Geen perceel geselecteerd. - </notification> - - <notification - - name="CannotJoinLandEntireParcelSelected" - > -Kan land niet verbinden: -U heeft slechts één perceel geselecteerd. - -Selecteer land over beide percelen. - </notification> - - <notification - - name="CannotJoinLandSelection" - > -Kan land niet verbinden: -U moet meer dan één perceel selecteren. - -Selecteer land over beide percelen. - </notification> - - <notification - - name="JoinLandWarning" - > -Het verbinding van dit land zal één groot perceel opleveren uit alle percelen die de rechthoek doorkruisen. -U zult de naam en opties van het nieuwe perceel opnieuw in moeten stellen. - -Land verbinden? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmNotecardSave" - > -Deze notitiekaart zal moet worden opgeslagen voordat het item kan worden gekopieerd of bekeken. Notitiekaart opslaan? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmItemCopy" - > -Dit item naar uw inventaris kopiëren? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="Kopiëren"/> - </notification> - - <notification - - name="ResolutionSwitchFail" - > -Mislukt om resolutie te verwisselen van [RESX] naar [RESY] - </notification> - - <notification - - name="ErrorUndefinedGrasses" - > -Fout: Onbekend gras: [SPECIES] - </notification> - - <notification - - name="ErrorUndefinedTrees" - > -Fout: Onbekende bomen: [SPECIES] - </notification> - - <notification - - name="CannotSaveWearableOutOfSpace" - > -Kon '[NAME]' niet opslaan voor draagbaar item. U zult wat ruimte moeten maken op uw computer en het draagbare item opnieuw op moeten slaan. - </notification> - - <notification - - name="CannotSaveToAssetStore" - > -Kon [NAME] niet opslaan in centrale (asset) opslag. -Meestal is dit een tijdelijk probleem. -Wijzig en sla het draagbaar item over een paar minuten opnieuw op. - -Indien dit probleem aanhoudt, klik dan alstublieft op 'Gereedschap > Rapporteer Bug' in het menu en voeg informatie toe over uw netwerk instellingen. - </notification> - - <notification - - name="YouHaveBeenLoggedOut" - > -U bent uitgelogd uit [SECOND_LIFE]: -[MESSAGE] -U kunt uw bestaande IM en chat bekijken door te klikken op 'Toon IM & Chat'. Anders, klik op Afsluiten om [SECOND_LIFE] direct te verlaten. - <usetemplate - name="okcancelbuttons" - notext="Afsluiten" - yestext="Toon IM & Chat"/> - </notification> - - <notification - - name="OnlyOfficerCanBuyLand" - > -Kan land niet voor de groep kopen: -U heeft geen permissie land te kopen voor de actieve groep. - </notification> - - <notification - - label="Vriend Toevoegen" - name="AddFriend" - > -Vrienden kunnen elkaar permissie geven om elkaar te volgen op de Kaart en om Online status updates te verkrijgen. - -Vriendschap aanbieden aan [NAME]? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - label="Vriend Toevoegen" - name="AddFriendWithMessage" - > -Vrienden kunnen elkaar permissie geven om elkaar te volgen op de Kaart en om Online status updates te verkrijgen. - -Vriendschap aanbieden aan [NAME]? - <form name="form"> - <input name="message" type="text"> -Wilt U mijn vriend zijn? - </input> - <button - - - name="Offer" - text="OK"/> - <button - - name="Cancel" - text="Annuleren"/> - </form> - </notification> - - <notification - - name="RemoveFromFriends" - > -Wilt u [FIRST_NAME] [LAST_NAME] van uw Vriend lijst verwijderen? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="RemoveMultipleFromFriends" - > -Wilt u meerder vrienden van uw Vrienden lijst verwijderen? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="GodDeleteAllScriptedPublicObjectsByUser" - > -Weet u zeker dat u alle gescripte objecten wilt verwijderen eigendom van -** [AVATAR_NAME] ** -op allen hun land in deze sim? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="GodDeleteAllScriptedObjectsByUser" - > -Weet u zeker dat u ALLE gescripte objecten wilt VERWIJDEREN eigendom van -** [AVATAR_NAME] ** -op AL het land in deze sim? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="GodDeleteAllObjectsByUser" - > -Weet u zeker, dat u ALLE objecten (gescript of niet) wilt VERWIJDEREN eigendom van -** [AVATAR_NAME] ** -op AL het LAND in deze sim? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="BlankClassifiedName" - > -U moet een naam opgeven voor uw advertentie. - </notification> - - <notification - - name="MinClassifiedPrice" - > -De prijs voor weergave moet minimaal L$[MIN_PRICE] zijn. - -Voor alstublieft een hoger bedrag in. - </notification> - - <notification - - name="ConfirmObjectDeleteLock" - > -Ten minste één van de geselecteerde items is geblokkeerd. - -Weet u zeker dat u deze items wilt verwijderen? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectDeleteNoCopy" - > -Ten minste één van de geselecteerde items is niet kopieerbaar. - -Weet u zeker dat u deze items wilt verwijderen? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectDeleteNoOwn" - > -Tenminste één van de geselecteerde items is niet uw eigendom. - -Weet u zeker dat u deze items wilt verwijderen? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectDeleteLockNoCopy" - > -Ten minste één item is geblokkeerd. -Ten minste één item is niet kopieerbaar. - -Weet u zeker dat u deze items wilt verwijderen? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectDeleteLockNoOwn" - > -Ten minste één item is geblokkeerd. -Tenminste één object is niet uw eigendom. - -Weet u zeker dat u deze items wilt verwijderen? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectDeleteNoCopyNoOwn" - > -Ten minste één object is niet kopieerbaar. -Tenminste één object is niet uw eigendom. - -Weet u zeker dat u deze items wilt verwijderen? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectDeleteLockNoCopyNoOwn" - > -Ten minste één item is geblokkeerd. -Ten minste één item is niet kopieerbaar. -Tenminste één object is niet uw eigendom. - -Weet u zeker dat u deze items wilt verwijderen? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectTakeLock" - > -Ten minste één object is geblokkeerd. - -Weet u zeker dat u deze items terug wilt nemen? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectTakeNoOwn" - > -Niet alle objecten die u terug neemt zijn uw eigendom. -Indien u verder gaat, worden de permissies van de volgende eigenaar er op toegepast en beperkt het u mogelijk het aan te passen of te kopiëren. - -Weet u zeker dat u deze items terug wilt nemen? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectTakeLockNoOwn" - > -Ten minste één object is geblokkeerd. -Niet alle objecten die u terug neemt zijn uw eigendom. -Indien u verder gaat, worden de permissies van de volgende eigenaar er op toegepast en beperkt het u mogelijk het aan te passen of te kopiëren. -Echter, U kunt de huidige selectie wel terugnemen. - -Weet u zeker dat u deze items terug wilt nemen? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="CantBuyLandAcrossMultipleRegions" - > -Kan het land niet kopen omdat het meerder regio's omvat. - -Kiest u alstublieft een kleiner gebied en probeer het opnieuw. - </notification> - - <notification - - name="DeedLandToGroup" - > -Voor het overdragen van dit perceel zal de groep voldoen land gebruikscredit moeten hebben en onderhouden. -Het aankoop bedrag zal niet naar de eigenaar worden terug gestort. -Indien een overgedragen perceel wordt verkocht, zal het verkoop bedrag gelijkmatig over de groepsleden worden verdeeld. - -Deze [AREA] m² land overdragen aan de groep '[GROUP_NAME]'? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="DeedLandToGroupWithContribution" - > -Voor het overdragen van dit perceel zal de groep voldoen land gebruikscredit moeten hebben en onderhouden. -De overdracht zal een simultane land contributie verlangen van de groep van '[FIRST_NAME] [LAST_NAME]'. -Het aankoop bedrag zal niet naar de eigenaar worden terug gestort. -Indien een overgedragen perceel wordt verkocht, zal het verkoop bedrag gelijkmatig over de groepsleden worden verdeeld. - -Deze [AREA] m² land overdragen aan de groep '[GROUP_NAME]'? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="DisplaySetToSafe" - > -Weergave instellingen zijn op veilige waarden ingesteld omdat u de -save optie op heeft gegeven. - </notification> - - <notification - - name="DisplaySetToRecommended" - > -Weergave instellingen zijn ingesteld op geadviseerde waarden, gebaseerd op uw systeem configuratie. - </notification> - - <notification - - name="ErrorMessage" - > -[ERROR_MESSAGE] - </notification> - - <notification - - name="AvatarMoved" - > -Uw [TYPE] locatie is momenteel niet beschikbaar. -[HELP] -U bent naar een nabij gelegen regio verplaatst. - </notification> - - <notification - - name="ClothingLoading" - > -Uw kleding wordt nog steeds geladen. -U kunt [SECOND_LIFE] normaal gebruiken en anderen zullen u correct zien. - <form name="form"> - <ignore name="ignore" - text="Indien kleding een erg lange tijd in beslag neemt om de laden"/> - </form> - </notification> - - <notification - - name="FirstRun" - > -[SECOND_LIFE] installatie compleet. - -Als dit de eerste keer is dat u [SECOND_LIFE] gebruikt, zult u een account aan moeten maken voordat u in kan loggen. -Terugkeren naar www.secondlife.com om een nieuw account aan te maken? - <usetemplate - name="okcancelbuttons" - notext="Doorgaan" - yestext="Nieuw Account..."/> - </notification> - - <notification - - name="LoginPacketNeverReceived" - > -Wij hebben problemen verbinding te maken. Er zou een probleem kunnen zijn met uw internet verbinding of met de Second Life servers. - -U kunt uw internet verbinding controleren en het over een paar minuten opnieuw proberen, op Help klikken om verbinding te maken met onze support website, of klik op Teleporteren om een poging te doen naar uw thuis locatie te teleporteren. - <form name="form"> - <button - - - name="OK" - text="OK"/> - <button - - name="Help" - text="Help"/> - <button - - name="Teleport" - text="Teleport"/> - </form> - </notification> - - <notification - - name="WelcomeChooseSex" - > -Uw avatar zal over enkele ogenblikken verschijnen. - -Gebruik de pijltjestoetsen om te lopen. -Druk op elk gewenst moment op F1 voor Help en om meer te leren over [SECOND_LIFE]. -Kies alstublieft een mannelijk of vrouwelijke avatar. U kunt later nog van gedachten veranderen. - <usetemplate - name="okcancelbuttons" - notext="Vrouw" - yestext="Man"/> - </notification> - - <notification - - name="NotEnoughCurrency" - > -[NAME] L$ [PRICE] U heeft niet genoeg L$ om dit te doen. - </notification> - - <notification - - name="GrantedModifyRights" - > -U heeft het recht verkregen om objecten van [FIRST_NAME] [LAST_NAME] te wijzigen. - </notification> - - <notification - - name="RevokedModifyRights" - > -Uw recht om objecten van [FIRST_NAME] [LAST_NAME] is ingetrokken. - </notification> - - <notification - - name="FlushMapVisibilityCaches" - > -Dit zal de Kaart cache van deze regio opschonen. - -Dit is eigenlijk alleen nuttig voor debugging. -(In productie, wacht 5 minuten, dan zal de Kaart van iedereen bijgewerkt worden als ze opnieuw verbinden.) - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="OnlyCopyContentsOfSingleItem" - > -Kan niet de inhoud van meer dan één item per keer kopiëren. -Kies alstublieft slechts één object en probeer het opnieuw. - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="KickUsersFromRegion" - > -Alle Inwoners in deze regio naar de thuis locatie Teleporteren? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="EstateObjectReturn" - > -Weet u zeker dat u alle objecten wilt retourneren eigendom van [USER_NAME] ? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="InvalidTerrainBitDepth" - > -Kon de regio textuur niet plaatsen: -Terrein textuur [TEXTURE_NUM] heeft een ongeldige bit diepte van [TEXTURE_BIT_DEPTH]. - -Vervang de textuur [TEXTURE_NUM] met een 24-bit 512x512 of een kleinere afbeelding, klik dan op opnieuw op "Toepassen". - </notification> - - <notification - - name="InvalidTerrainSize" - > -Kon de regio textuur niet plaatsen: -Terrein textuur [TEXTURE_NUM] is te groot met [TEXTURE_SIZE_X]x[TEXTURE_SIZE_Y]. - -Vervang de textuur [TEXTURE_NUM] met een 24-bit 512x512 of een kleinere afbeelding, klik dan op opnieuw op "Toepassen". - </notification> - - <notification - - name="RawUploadStarted" - > -Upload gestart. Het kan tot twee minuten duren, afhankelijk van u verbindings snelheid. - </notification> - - <notification - - name="ConfirmBakeTerrain" - > -Wilt u werkelijk het huidige terrein 'baken', dit als middelpunt voor de verhoog/verlaag limieten instellen en als standaard instellen voor het 'Herstel' gereedschap? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="MaxAllowedAgentOnRegion" - > -U kunt slechts [MAX_AGENTS] Toegestane Inwoners hebben. - </notification> - - <notification - - name="MaxBannedAgentsOnRegion" - > -U kunt slechts [MAX_BANNED] Verbannen Inwoners hebben. - </notification> - - <notification - - name="MaxAgentOnRegionBatch" - > -Een poging [NUM_ADDED] agents toe te voegen is mislukt: -Overstijgt de [MAX_AGENTS] [LIST_TYPE] limiet met [NUM_EXCESS]. - </notification> - - <notification - - name="MaxAllowedGroupsOnRegion" - > -U kunt slechts [MAX_GROUPS] Toegestane Groepen hebben. - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="Bake"/> - </notification> - - <notification - - name="MaxManagersOnRegion" - > -U kunt slechts [MAX_MANAGER] Estate Beheerders hebben. - </notification> - - <notification - - name="OwnerCanNotBeDenied" - > -Kan de estate eigenaar niet aan de Verbannen lijst van het estate toe voegen. - </notification> - - <notification - - name="CanNotChangeAppearanceUntilLoaded" - > -Kan het Uiterlijk niet veranderen totdat kleding en Postuur geladen zijn. - </notification> - - <notification - - name="ClassifiedMustBeAlphanumeric" - > -De naam van uw advertentie moet beginnen met een letter van A tot Z of een nummer. -Leestekens zijn niet toegestaan. - </notification> - - <notification - - name="CantSetBuyObject" - > -Kan Koop Object niet instellen omdat het object niet te koop is. -Zet het object alstublieft te koop en probeer het opnieuw. - </notification> - - <notification - - name="FinishedRawDownload" - > -Download van raw terrein bestand geëindigd naar: -[DOWNLOAD_PATH]. - </notification> - - <notification - - name="DownloadWindowsMandatory" - > -Een nieuwe versie van [SECOND_LIFE] is beschikbaar. -[MESSAGE] -U moet deze update downloaden om [SECOND_LIFE] te kunnen gebruiken. - <usetemplate - name="okcancelbuttons" - notext="Afsluiten" - yestext="Download"/> - </notification> - - <notification - - name="DownloadWindows" - > -Een bijgewerkte versie van [SECOND_LIFE] is beschikbaar. -[MESSAGE] -Deze update is niet vereist, maar wij raden aan dat u het installeert om de prestaties en stabiliteit te verbeteren. - <usetemplate - name="okcancelbuttons" - notext="Doorgaan" - yestext="Download"/> - </notification> - - <notification - - name="DownloadWindowsReleaseForDownload" - > -Een bijgewerkte versie van [SECOND_LIFE] is beschikbaar. -[MESSAGE] -Deze update is niet vereist, maar wij raden aan dat u het installeert om de prestaties en stabiliteit te verbeteren. - <usetemplate - name="okcancelbuttons" - notext="Doorgaan" - yestext="Download"/> - </notification> - - <notification - - name="DownloadMacMandatory" - > -Een nieuwe versie van [SECOND_LIFE] is beschikbaar. -[MESSAGE] -U moet deze update downloaden om [SECOND_LIFE] te kunnen gebruiken. - -Downloaden naar uw Applicatie Data map? - <usetemplate - name="okcancelbuttons" - notext="Afsluiten" - yestext="Download"/> - </notification> - - <notification - - name="DownloadMac" - > -Een bijgewerkte versie van [SECOND_LIFE] is beschikbaar. -[MESSAGE] -Deze update is niet vereist, maar wij raden aan dat u het installeert om de prestaties en stabiliteit te verbeteren. - -Downloaden naar uw Applicatie Data map? - <usetemplate - name="okcancelbuttons" - notext="Doorgaan" - yestext="Download"/> - </notification> - - <notification - - name="DownloadMacReleaseForDownload" - > -Een bijgewerkte versie van [SECOND_LIFE] is beschikbaar. -[MESSAGE] -Deze update is niet vereist, maar wij raden aan dat u het installeert om de prestaties en stabiliteit te verbeteren. - -Downloaden naar uw Applicatie Data map? - <usetemplate - name="okcancelbuttons" - notext="Doorgaan" - yestext="Download"/> - </notification> - - <notification - - name="DeedObjectToGroup" - > -Dit object overdragen aan de groep zal de groep: -* L$ ontvangen als betaald in het object - <usetemplate - ignoretext="Bij objecten die overgedragen worden aan groepen" - name="okcancelignore" - notext="Annuleren" - yestext="Overdragen"/> - </notification> - - <notification - - name="WebLaunchExternalTarget" - > -Uw systeem browser openen om deze inhoud te bekijken? - <usetemplate - ignoretext="Bij openen van systeem browser om de webpagina te bekijken" - name="okcancelignore" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchJoinNow" - > -Naar www.secondlife.com gaan om uw account te beheren? - <usetemplate - ignoretext="Bij openen van webbrowser om uw account te beheren" - name="okcancelignore" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchBugReport101" - > -Bezoek de [SECOND_LIFE] Wiki en leer hoe Bugs correct gerapporteerd kunnen worden. - <usetemplate - ignoretext="Bij openen webbrowser om de Bug Reporting 101 Wiki te bekijken" - name="okcancelignore" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchSecurityIssues" - > -Bezoek de [SECOND_LIFE] Wiki voor details over hoe een Veiligheids Probleem (Security Issue) te rapporteren. - <usetemplate - ignoretext="Bij openen webbrowser om de Veiligheids Problemen Wiki (Security Issues Wiki) te bekijken" - name="okcancelignore" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchQAWiki" - > -Bezoek de [SECOND_LIFE] QA Wiki (Kwaliteitsbeheersing Wiki). - <usetemplate - ignoretext="Bij openen webbrowser om de QA Wiki (Kwaliteitsbeheersing Wiki) te bekijken" - name="okcancelignore" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchPublicIssue" - > -Bezoek de [SECOND_LIFE] Publieke problemenlijst, waar u Bugs en andere Problemen kunt rapporteren. - <usetemplate - ignoretext="Bij openen webbrowser om de Publieke problemenlijst te bekijken" - name="okcancelignore" - notext="Annuleren" - yestext="Ga naar pagina"/> - </notification> - - <notification - - name="WebLaunchPublicIssueHelp" - > -Bezoek de [SECOND_LIFE] Wiki voor informatie over het gebruik van de Publieke problemenlijst. - <usetemplate - ignoretext="Bij openen webbrowser om de Publieke problemenlijst Wiki te bekijken" - name="okcancelignore" - notext="Annuleren" - yestext="Ga naar pagina"/> - </notification> - - <notification - - name="WebLaunchSupportWiki" - > -Ga naar de Officiële Linden Blog voor het laatste Nieuws en Informatie. - <usetemplate - ignoretext="Bij openen webbrowser om de blog te bekijken" - name="okcancelignore" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchLSLGuide" - > -Naar de Script Gids gaan voor hulp met scripten? - <usetemplate - ignoretext="Bij openen webbrowser om de Script Gids te bekijken" - name="okcancelignore" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchLSLWiki" - > -Naar de LSL Portaal gaan voor hulp met scripten? - <usetemplate - ignoretext="Bij openen webbrowser om de LSL Portal te bekijken" - name="okcancelignore" - notext="Annuleren" - yestext="Ga naar pagina"/> - </notification> - - <notification - - name="ReturnToOwner" - > -Weet u zeker dat u de geselecteerde objecten wilt retourneren naar de eigenaren? -Overdraagbare toegekende objecten zullen naar de oorspronkelijke eigenaren worden geretourneerd. - -*WAARSCHUWING* Niet overdraagbare toegekende objecten zullen worden verwijderd! - <usetemplate - ignoretext="Bij retourneren objecten naar de eigenaren" - name="okcancelignore" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="GroupLeaveConfirmMember" - > -U bent momenteel een lid van de groep [GROUP]. -Groep Verlaten? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmKick" - > -Weet u HEEL ZEKER dat u alle gebruikers uit het grid wilt verwijderen? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="Verwijder Alle Gebruikers"/> - </notification> - - <notification - - name="MuteLinden" - > -Sorry, u kunt geen Linden Negeren - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - label="Negeren van object mislukt" - name="MuteByNameFailed" - > -U heeft deze naam al genegeerd. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="RemoveItemWarn" - > -Alhoewel toegestaan, verwijderen van de inhoud kan het object beschadigen. Wilt u dit item verwijderen? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="CantOfferCallingCard" - > -Kan op dit moment geen visitekaart aanbieden. Probeer het alstublieft later opnieuw. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="CantOfferFriendship" - > -Kan op dit moment geen vriendschap aanbieden. Probeer het alstublieft later opnieuw. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="BusyModeSet" - > -Niet Storen modus ingesteld. - -Chat and instant messages zullen verborgen blijven. Instant messages zullen uw Niet Storen melding krijgen. Alle teleport aanbiedingen zullen worden afgewezen. Alle inventaris aanbiedingen zullen in uw Vuilnisbak terecht komen. - <usetemplate - ignoretext="Bij instellen Niet Storen modus" - name="okignore" - yestext="OK"/> - </notification> - - <notification - - name="JoinedTooManyGroupsMember" - > -U ben lid van teveel groepen om lid te worden van een andere. Verlaat op zijn minst één groep alvorens lid te worden van een andere of weiger de lidmaatschap aanbieding. -Om een groep te verlaten, selecteer de 'Groep..' optie via het 'Bewerken' menu. - -[NAME] heeft u uitgenodigd om lid te worden van de groep als algemeen lid. - -[INVITE] - <usetemplate - name="okcancelbuttons" - notext="Afslaan" - yestext="Lid worden"/> - </notification> - - <notification - - name="KickUser" - > -Verwijder deze gebruiker met welk bericht? - <form name="form"> - <input name="message" type="text"> -Een administrator heeft u uitgelogd. - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Annuleren"/> - </form> - </notification> - - <notification - - name="KickAllUsers" - > -Verwijder iedereen momenteel op het grid met welk bericht? - <form name="form"> - <input name="message" type="text"> -Een administrator heeft u uitgelogd. - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Annuleren"/> - </form> - </notification> - - <notification - - name="FreezeUser" - > -Bevries deze gebruiker met welk bericht? - <form name="form"> - <input name="message" type="text"> -U bent bevroren. U kunt zich niet verplaatsen of praten. Een administrator zal contact met u opnemen via instant message (IM). - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Annuleren"/> - </form> - </notification> - - <notification - - name="UnFreezeUser" - > -Ontdooi deze gebruiker met welk bericht? - <form name="form"> - <input name="message" type="text"> -U bent niet langer bevroren. - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Annuleren"/> - </form> - </notification> - - <notification - - name="OfferTeleport" - > -Een Teleport aanbieden naar uw locatie met welk bericht? - <form name="form"> - <input name="message" type="text"> -Voeg u bij mij in [REGION] - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Annuleren"/> - </form> - </notification> - - <notification - - name="OfferTeleportFromGod" - > -God beveel gebruiker naar uw locatie? - <form name="form"> - <input name="message" type="text"> -Voeg u bij mij in [REGION] - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Annuleren"/> - </form> - </notification> - - <notification - - name="TeleportFromLandmark" - > -Weet u zeker dat u wilt teleporteren? - <usetemplate - ignoretext="Bij teleporteren via een landmarkering in inventaris" - name="okcancelignore" - notext="Annuleren" - yestext="Teleporteren"/> - </notification> - - <notification - - label="Bericht iedereen in uw Estate" - name="MessageEstate" - > -Type een kort bericht om naar iedereen sturen die momenteel in uw Estate aanwezig is. - <form name="form"> - <input name="message" type="text"/> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Annuleren"/> - </form> - </notification> - - <notification - - label="Wijzig Linden Estate" - name="ChangeLindenEstate" - > -U staat op het punt een Linden beheerde Estate te wijzigen mainland, teen grid, orientation, etc.). - -Dit is EXTREEM GEVAARLIJK om het fundamenteel de gebruikers ervaring kan aantasten. -Op het mainland zal het duizenden regionen wijzigen en de spaceserver kan storingen vertonen. - -Doorgaan? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - label="Wijzig Linden Estate Toegang" - name="ChangeLindenAccess" - > -U staat op het punt de toegangslijst van een Linden Estate eigendom aan te passen (mainland, teen grid, orientation, etc.). - -Dit is GEVAARLIJK en zou alleen gedaan moeten worden om de hack toe te staan om objecten/L$ over te dragen in/uit het grid. -Het zal het duizenden regionen wijzigen en de spaceserver kan storingen vertonen. - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - label="Selecteer Estate" - name="EstateAllowedAgentAdd" - > -Alleen aan toegangslijst voor dit Estate toevoegen of voor [ALL_ESTATES]? - <usetemplate - canceltext="Annuleren" - name="yesnocancelbuttons" - notext="Alle Estates" - yestext="Dit Estate"/> - </notification> - - <notification - - label="Selecteer Estate" - name="EstateAllowedAgentRemove" - > -Verwijderen van toegangslijst voor alleen dit Estate of voor [ALL_ESTATES]? - <usetemplate - canceltext="Annuleren" - name="yesnocancelbuttons" - notext="Alle Estates" - yestext="Dit Estate"/> - </notification> - - <notification - - label="Selecteer Estate" - name="EstateAllowedGroupAdd" - > -Alleen aan groeps toegangslijst voor dit Estate toevoegen of voor [ALL_ESTATES]? - <usetemplate - canceltext="Annuleren" - name="yesnocancelbuttons" - notext="Alle Estates" - yestext="Dit Estate"/> - </notification> - - <notification - - label="Selecteer Estate" - name="EstateAllowedGroupRemove" - > -Verwijderen van groeps toegangslijst voor alleen dit Estate of voor [ALL_ESTATES]? - <usetemplate - canceltext="Annuleren" - name="yesnocancelbuttons" - notext="Alle Estates" - yestext="Dit Estate"/> - </notification> - - <notification - - label="Selecteer Estate" - name="EstateBannedAgentAdd" - > -Weiger toegang voor alleen dit Estate of voor [ALL_ESTATES]? - <usetemplate - canceltext="Annuleren" - name="yesnocancelbuttons" - notext="Alle Estates" - yestext="Dit Estate"/> - </notification> - - <notification - - label="Selecteer Estate" - name="EstateBannedAgentRemove" - > -Deze Inwoner van de ban lijst voor toegang voor alleen dit Estate verwijderen of voor [ALL_ESTATES]? - <usetemplate - canceltext="Annuleren" - name="yesnocancelbuttons" - notext="Alle Estates" - yestext="Dit Estate"/> - </notification> - - <notification - - label="Selecteer Estate" - name="EstateManagerAdd" - > -Estate beheerder toevoegen voor alleen dit Estate of voor [ALL_ESTATES]? - <usetemplate - canceltext="Annuleren" - name="yesnocancelbuttons" - notext="Alle Estates" - yestext="Dit Estate"/> - </notification> - - <notification - - label="Selecteer Estate" - name="EstateManagerRemove" - > -Estate beheerder verwijderen voor alleen dit Estate of voor [ALL_ESTATES]? - <usetemplate - canceltext="Annuleren" - name="yesnocancelbuttons" - notext="Alle Estates" - yestext="Dit Estate"/> - </notification> - - <notification - - label="Bevestig Verwijderen" - name="EstateKickUser" - > -Verwijder [EVIL_USER] van deze Estate? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="EstateChangeCovenant" - > -Weet u zeker dat u de Estate Convenant wilt wijzigen? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="ProblemImportingEstateCovenant" - > -Probleem met importeren Estate Convenant. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="ProblemAddingEstateManager" - > -Problemen met het toevoegen van een Estate beheerder. Eén of meer Estates kunnen een volle beheerders lijst hebben. - </notification> - - <notification - - name="ProblemAddingEstateGeneric" - > -Problemen met toevoegen aan deze Estate lijst. Eén of meer Estates kunnen een volle lijst hebben. - </notification> - - <notification - - name="UnableToLoadNotecard" - > -Kan op dit moment notitiekaart inhoud niet laden. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="NotAllowedToViewNotecard" - > -Onvoldoende rechten om de notitiekaart in te zien geassocieerd met het opgevraagde asset ID. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="MissingNotecardAssetID" - > -Asset ID voor de notitiekaart ontbreekt in de database. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="PublishClassified" - > -Bedenk: kosten voor advertenties worden niet terugbetaald. - -Advertentie nu Publiceren voor L$[AMOUNT]? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - - - - - <notification - - label="Bevestig herstart" - name="ConfirmRestart" - > -Wilt u deze regio echt binnen 2 minuten herstarten? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - label="Bericht iedereen in deze regio" - name="MessageRegion" - > -Type een kort bericht om naar iedereen sturen die momenteel in regio aanwezig is. - <form name="form"> - <input name="message" type="text"/> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Annuleren"/> - </form> - </notification> - - <notification - - label="Weiger Land aanpassingen" - name="HelpRegionBlockTerraform" - > -Indien dit aan gevinkt kunnen landeigenaren geen terrein bewerkingen doen op hun land, ongeacht de per perceel ingestelde waarde voor 'Wijzig Terrein' - -Standaard: uitgeschakeld - </notification> - - <notification - - label="Blokkeer Vliegen" - name="HelpRegionBlockFly" - > -Indien dit is aan gevinkt kunnen personen niet vliegen in deze regio ongeacht de per perceel ingestelde waarde 'Vliegen' - -Standaard: uitgeschakeld - </notification> - - <notification - - label="Sta Letsel Toe" - name="HelpRegionAllowDamage" - > -Indien dit is aan gevinkt stelt het Letsel systeem in voor alle percelen, ongeacht de individuele instellingen op de percelen. Indien uitgeschakeld, kunnen perceel eigenaren het Letsel systeem op hun perceel activeren. - -Standaard: uitgeschakeld - </notification> - - <notification - - label="Agent Limiet" - name="HelpRegionAgentLimit" - > -Stelt het maximale aantal toegestane avatars in voor deze regio. -De prestaties kunnen variëren afhankelijk van het aantal aanwezige avatars. - -Standaard: 40 - </notification> - - <notification - - label="Object Bonus" - name="HelpRegionObjectBonus" - > -De Object Bonus is een vermeerderaar voor primitieven op een willekeurig perceel. -Het bereik is van 1 tot 10. Ingesteld op '1' kan elk 512m² perceel 117 objecten bevatten. Ingesteld op '2' kan elk 512m² perceel 234 objecten bevatten, enzovoort. Het maximale aantal objecten blijft 15.000, ongeacht wat de Object Bonus is. Denk er aan, dat eenmaal ingesteld, het verlagen van de Object Bonus het retourneren of verwijderen van objecten tot gevolg kan hebben. - -Standaard: 1.0 - </notification> - - - - <notification - - label="Beperk Duwen" - name="HelpRegionRestrictPushObject" - > -Deze instelling stelt de hele regio in op beperkte duwen permissies. -Indien aan gevinkt kunnen Inwoners alleen door hun zelf geduwd worden of door de perceel eigenaar. - -(Push (Duwen) verwijst naar de llPushObject() LSL functie) - -Standaard: Uitgeschakeld - </notification> - - <notification - - label="Perceel Samenvoegen/Opsplitsen" - name="HelpParcelChanges" - > -Deze instelling stel in of percelen die niet van de estate eigenaar zijn kunnen worden samengevoegd of opgesplitst. - -Indien niet aan gevinkt: - * Alleen Estate eigenaren of beheerders kunnen percelen samenvoegen op opsplitsen. - * Zij kunnen alleen percelen samenvoegen of opsplitsen die eigendom zijn van de eigenaar of van een groep met de juiste bevoegdheden. - -Indien aan gevinkt: - * Alle perceel eigenaren kunnen percelen samenvoegen of opsplitsen die zij bezitten. - * Voor percelen in Groep eigendom, kunnen alleen zij met de juiste rechten percelen samenvoegen of opsplitsen. - -Standaard: Ingeschakeld - </notification> - - <notification - - label="Niet in Zoeken tonen" - name="HelpRegionSearch" - > -Deze optie aan vinken zal perceel eigenaren blokkeren hun perceel in Zoeken te tonen. - -Standaard: Uitgeschakeld - </notification> - - <notification - - label="Regio Volwassenen Gewijzigd" - name="RegionMaturityChange" - > -De Volwassen instelling voor deze regio is bijgewerkt. -Het kan enige tijd duren voordat de wijziging zichtbaar is op de Kaart. - </notification> - - <notification - - label="Land Herverkoop" - name="HelpRegionLandResell" - > -Estate eigenaren en beheerders kunnen elk stuk land verkopen in eigendom van de Estate eigenaar. - -Indien deze optie niet is aan gevinkt, kunnen kopers hun land in deze regio niet verkopen. -Indien deze optie is aan gevinkt, kunnen kopers hun land in deze regio verkopen. - -Standaard: Niet toestaan - </notification> - - <notification - - label="Scripts Uitschakelen" - name="HelpRegionDisableScripts" - > -Indien de sim prestaties slecht zijn, kan een script de oorzaak zijn. Open de Statistieken balk (Ctrl-Shift-1). Kijk naar de Simulator Fysieke FPS. Indien het lager is dan 45, open dan het Tijd paneel onderaan de Statistieken balk. Indien de Script Tijd 25 ms of hoger is, klik dan op de Top Scripts knop. U krijgt dan een naam en lokatie van scripts die mogelijk de slechte prestaties veroorzaken. - -Het aan vinken van Scripts Uitschakelen en vervolgens op de Toepassen knop drukken, zal tijdelijk alle scripts in deze regio uitschakelen. U zult dit mogelijk moeten doen om naar de lokatie te gaan van het 'top script'. Eenmaal aangekomen, onderzoek dan of het script het probleem veroorzaakt. U zult mogelijk de eigenaar willen contacteren of het object willen retourneren c.q. verwijderen. -Verwijder het vinkje van Scripts Uitschakelen en klik op Toepassen om scripts weer te reactiveren in de regio. - -Standaard: Uitgeschakeld - </notification> - - <notification - - label="Botsingen Uitschakelen" - name="HelpRegionDisableCollisions" - > -Indien de sim prestaties slecht zijn, kunnen fysieke objecten de oorzaak zijn. Open de Statistieken balk (Ctrl-Shift-1). Kijk naar de Simulator Fysieke FPS. Indien het lager is dan 45, open dan het Tijd paneel onderaan de Statistieken balk. Indien de Sim Tijd (Fysiek) 20 ms of hoger is, klik dan op de Toon Top Botsingen knop. U krijgt dan een naam en lokatie van de fysieke objecten die mogelijk de slecht prestaties veroorzaken. - -Het aan vinken van de Botsingen Uitschakelen knop en vervolgens op de Toepassen knop drukken, zal tijdelijk object-object botsingen uitschakelen. U zult dit mogelijk moeten doen om naar de lokatie te gaan van de 'top botsingen'. Eenmaal aangekomen, onderzoek dan het object. Botst het constant met andere objecten? U zult mogelijk de eigenaar willen contacteren of het object willen retourneren c.q. verwijderen. -Verwijder het vinkje van Botsingen Uitschakelen en klik op Toepassen om botsingen weer te reactiveren in de regio. - -Standaard: Uitgeschakeld - </notification> - - <notification - - label="Fysiek Uitschakelen" - name="HelpRegionDisablePhysics" - > -Fysiek Uitschakelen is gelijkwaardig aan Botsingen Uitschakelen, alleen alle fysieke simulatie is uitgeschakeld. Dit betekend dat niet alleen alle objecten zullen stoppen met botsen, maar ook dat avatars zich niet meer kunnen bewegen. - -Dit zou alleen gebruikt moeten worden als het uitschakelen van Botsingen niet genoeg prestatie winst geeft om een fysiek probleem of top botsingen te onderzoeken. - -Indien u klaar bent, wees er dan zeker van Fysiek weer in te schakelen, anders kunnen avatars zich niet meer bewegen. - -Standaard: Uitgeschakeld - </notification> - - <notification - - label="Top Botsingen" - name="HelpRegionTopColliders" - > -Toon een lijst van objecten van het grootste aantal potentiële object-object botsingen. -Deze objecten kunnen een trage prestatie veroorzaken. Selecteer Beeld > Statistieken Balk en kijk onder Simulator > Tijd > Sim Tijd (Fysiek) om te zien of meer dan 20 ms wordt gespendeerd aan fysiek. - </notification> - - <notification - - label="Top Scripts" - name="HelpRegionTopScripts" - > -Toon een lijst van objecten die de meeste tijd besteden aan het uitvoeren van LSL scripts. -Deze objecten kunnen een trage prestatie veroorzaken. Selecteer Beeld > Statistieken Balk en kijk onder Simulator > Tijd > Script Tijd om te zien of meer dan 25 ms wordt gespendeerd aan scripts. - </notification> - - <notification - - label="Herstart Regio" - name="HelpRegionRestart" - > -Herstart het server proces van de regio na een twee minuten waarschuwing. -Alle Inwoners van de regio zullen de verbinding kwijt raken. De regio zal alle gegevens bewaren en zou binnen 90 seconden weer operabel moeten zijn. - -De regio herstarten zou de meeste prestatie problemen moeten verhelpen en zou normaal gesproken alleen gebruikt moeten worden indien aangegeven. - </notification> - - <notification - - label="Water Hoogte" - name="HelpRegionWaterHeight" - > -Dit is de hoogte in meters waarop het water verschijnt. -Als deze instelling anders is dan 20 en u heeft water aan de rand van de wereld of u heeft 'ontbrekend' water, zal er een gat zichtbaar zijn. - -Standaard: 20 - </notification> - - <notification - - label="Terrein Ophogen" - name="HelpRegionTerrainRaise" - > -Dit is de hoogte in meters dat perceel eigenaren hun terrein kunnen verhogen boven de standaard 'baked' terrein hoogte. - -Standaard: 4 - </notification> - - <notification - - label="Terrein Verlagen" - name="HelpRegionTerrainLower" - > -Dit is de hoogte in meters dat perceel eigenaren hun terrein kunnen verlagen onder de standaard 'baked' terrein hoogte. - -Standaard: -4 - </notification> - - <notification - - label="Upload RAW Terrein" - name="HelpRegionUploadRaw" - > -Deze knop upload een .RAW bestand naar de regio waar u zich bevindt. -Het bestand moet de juiste afmetingen hebben (RGB, 256x256) en 13 kanalen. -De beste manier om een terrein bestand te maken is het downloaden van een bestaand RAW bestand. Een goede eerste stap is om het rode kanaal (land hoogte) aan te passen en dat te uploaden. - -De upload kan tot 45 seconden in beslag nemen. Bedenk dat het uploaden van een terrein bestand de objecten reeds aanwezig op het land *niet* zal verplaatsen, alleen het terrein zelf en de permissies geassocieerd met de percelen. Dit kan resulteren in objecten die ondergronds gaan. - -Voor meer informatie over het wijzigen van de hoogte velden, raadpleeg F1 Help. - </notification> - - <notification - - label="Download RAW Terrein" - name="HelpRegionDownloadRaw" - > -Deze knop download een bestand welke de hoogte veld gegevens, perceel afmetingen, perceel te koop status en sommige perceel permissies bevat voor deze regio. -Indien u het bestand opent in een programma als Photoshop, moet u de document afmetingen opgeven, welk RGB, 256x256 met 13 kanalen is. Dit terrein bestand kan op geen enkele andere manier worden geopend. - -Voor meer informatie over het wijzigen van de hoogte velden, raadpleeg F1 Help. - </notification> - - <notification - - label="Gebruik Estate Zon" - name="HelpRegionUseEstateSun" - > -Dit aan vinken zorgt er voor dat de zon positie overeen komt met de zon positie in de rest van het Estate. - -Standaard: Ingeschakeld - </notification> - - <notification - - label="Vaste Zon" - name="HelpRegionFixedSun" - > -Dit aan vinken stelt de zon in op de positie van de Fase schuif knop en stopt het verder bewegen van de zon. - -Standaard: Uitgeschakeld - </notification> - - <notification - - label="Bake Terrein" - name="HelpRegionBakeTerrain" - > -Deze knop slaat de huidige vorm van het terrein op als nieuwe standaard voor de regio. Eenmaal baked, kan het land terugkeren naar de opgeslagen vorm wanneer u of anderen gebruik maken van de Wijzig Terrein 'Terugkeer' optie. Het baked terrein is ook het uitgangspunt voor de terrein verhogings- en verlagingslimieten. - </notification> - - <notification - - label="Estate Beheerders" - name="HelpEstateEstateManager" - > -Een Estate Beheerder is een Inwoner aan wie u de controle over de regio en estate instellingen heeft uitbesteed. De Estate Beheerder kan de instellingen wijzigen in deze panels, behalve het uploaden, downloaden en terrein bakken. In bijzonder kunnen zij Inwoners toestaan of verbannen van het Estate. - -Estate Beheerders kunnen alleen toegevoegd of verwijderd worden door de eigenaar van het Estate, niet door elkaar. Gebruik alstublieft alleen Inwoners die u kunt vertrouwen als Estate Beheerders, omdat uiteindelijk u verantwoordelijk bent voor hun acties. - </notification> - - <notification - - label="Gebruik Globale Tijd" - name="HelpEstateUseGlobalTime" - > -Dit aan vinken zorgt ervoor dat de zon in uw estate dezelfde positie volgt als in Linden-eigendom 'mainland' Estates. - -Standaard: aan - </notification> - - <notification - - label="Vaste Zon" - name="HelpEstateFixedSun" - > -Dit aan vinken stelt de zon in op de positie van de Fase schuif knop en stopt het verder bewegen van de zon. - </notification> - - <notification - - label="Publieke Toegang" - name="HelpEstateExternallyVisible" - > -Dit aan vinken geeft aan dat Inwoners die in andere Estates zijn, deze Estate kunnen bezoeken zonder op de Toegangs lijst te staan. - -Standaard: Ingeschakeld - </notification> - - <notification - - label="Direct Teleporteren Toestaan" - name="HelpEstateAllowDirectTeleport" - > -Indien aan gevinkt staat het Inwoners toe om direct te Teleporteren naar elke plek in uw Estate. Indien niet aan gevinkt kunnen Inwoners Teleporteren naar de dichtstbijzijnde telehub. - -Standaard: Uitgeschakeld - </notification> - - <notification - - label="Toegang Toestaan" - name="HelpEstateAllowResident" - > -Toegang tot dit Estate zal gelimiteerd zijn tot Inwoners in deze lijst en onderstaande groepen. Deze instelling is allen beschikbaar indien Publieke Toegang niet is aan gevinkt. - </notification> - - <notification - - label="Groeps Toegang Toestaan" - name="HelpEstateAllowGroup" - > -Toegang tot dit Estate zal gelimiteerd worden tot groepen in deze lijst en elke Inwoner bovenaan. Deze Instelling is alleen beschikbaar als Publieke Toegang niet is aan gevinkt. - </notification> - - <notification - - label="Misbruik Email Adres" - name="HelpEstateAbuseEmailAddress" - > -Dit instellen met een geldig email adres zal misbruik rapporten op dit Estate doen versturen naar dat adres. -Indien u het leeg laat, zullen misbruik rapporten alleen verzonden worden naar Linden Lab. - </notification> - - <notification - - label="Toegang Weigeren" - name="HelpEstateBanResident" - > -Inwoners in deze lijst zijn de toegang geweigerd in uw Estate, ongeacht elke andere instelling. - </notification> - - <notification - - label="Voice Chat Toestaan" - name="HelpEstateVoiceChat" - > -Percelen in dit Estate kunnen hun eigen Voice kanalen hebben waarin Inwoners die in de buurt van elkaar zijn, elkaar kunnen horen en met elkaar kunnen praten. - -Standaard: Uitgeschakeld - </notification> - - <notification - - label="Voice Versie Ongelijkheid" - name="VoiceVersionMismatch" - > -Deze versie van Second Life is niet compatibel met de Voice spraak optie in deze regio. Om Voice Chat goed te laten functioneren, moet u Second Life bijwerken. - </notification> - - <notification - - label="Estate Convenant" - name="HelpEstateCovenant" - > -Het instellen van een Estate Convenant maakt het u mogelijk om percelen in het Estate te verkopen. Indien de Convenant niet is ingesteld kunt u het niet verkopen. Een notitiekaart voor uw Convenant kan leeg zijn indien u geen regels wilt instellen, advies aan kopers wilt geven of iets anders in relatie tot het land wilt mededelen voor als men het koopt. - -Een Convenant kan gebruikt worden als u regels wilt mededelen, richtlijnen, culturele informatie of simpelweg uw eigen verwachtingen aan prospect kopers. -Dit kan zoneren bevatten, bouw reglementen, betaal opties of elke andere vorm van informatie waarvan u het belangrijk vind dat de nieuwe eigenaar het heeft gezien en mee akkoord is gegaan alvorens het te kopen. - -De koper moet instemmen met de Convenant middels het aan vinken van het kadertje alvorens zij de aankoop af kunnen ronden. Estate Overeenkomsten zijn altijd zichtbaar in het Over Land dialoog venster voor elk perceel dat er eentje ingesteld heeft staan. - </notification> - - <notification - - label="Kan Geen Objecten Kopen" - name="BuyObjectOneOwner" - > -Kan geen objecten van verschillende eigenaren tegelijk kopen. - -Kies alstublieft slechts één object en probeer het opnieuw. - </notification> - - <notification - - label="Kan Inhoud Niet Kopen" - name="BuyContentsOneOnly" - > -Kan geen inhoud kopen van meer dan één object tegelijk. - -Kies alstublieft slechts één object en probeer het opnieuw. - </notification> - - <notification - - label="Kan Inhoud Niet Kopen" - name="BuyContentsOneOwner" - > -Kan geen inhoud kopen van verschillende eigenaren tegelijk. - -Kies alstublieft slechts één object en probeer het opnieuw. - </notification> - - <notification - - name="BuyOriginal" - > -Koop originele object van [OWNER] voor L$[PRICE]? -U zult de eigenaar worden van dit object. -U kunt het dan: - Wijzigen: [MODIFYPERM] - Kopiëren: [COPYPERM] - Verkopen of Weggeven: [RESELLPERM] - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="BuyOriginalNoOwner" - > -Koop originele object voor L$[PRICE]? -U zult de eigenaar worden van dit object. -U kunt het dan: - Wijzigen: [MODIFYPERM] - Kopiëren: [COPYPERM] - Verkopen of Weggeven: [RESELLPERM] - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="BuyCopy" - > -Koop een kopie van [OWNER] voor L$[PRICE]? -Het object zal gekopieerd worden naar uw inventaris. -U kunt het dan: - Wijzigen: [MODIFYPERM] - Kopiëren: [COPYPERM] - Verkopen of Weggeven: [RESELLPERM] - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="BuyCopyNoOwner" - > -Koop een kopie voor L$[PRICE]? -Het object zal gekopieerd worden naar uw inventaris. -U kunt het dan: - Wijzigen: [MODIFYPERM] - Kopiëren: [COPYPERM] - Verkopen of Weggeven: [RESELLPERM] - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="BuyContents" - > -Koop de inhoud van [OWNER] voor L$[PRICE]? -De inhoud zal naar uw inventaris gekopieerd worden. - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="BuyContentsNoOwner" - > -Koop de inhoud voor L$[PRICE]? -De inhoud zal naar uw inventaris gekopieerd worden. - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmPurchase" - > -Deze transactie zal: -[ACTION] - -Weet u zeker dat u verder wilt gaan met deze aankoop? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmPurchasePassword" - type="password"> -Deze transactie zal: -[ACTION] - -Weet u zeker dat u verder wilt gaan met deze aankoop? -Voer alstublieft opnieuw uw wachtwoord in en klik op OK. - <form name="form"> - <input - name="message" - type="password"/> - <button - - - name="ConfirmPurchase" - text="OK"/> - <button - - name="Cancel" - text="Annuleren"/> - </form> - </notification> - - <notification - - name="SetPickLocation" - > -Opmerking: - -U heeft de locatie van deze Favoriet bijgewerkt, maar andere details blijven ongewijzigd. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="MoveInventoryFromObject" - > -U heeft 'niet kopieerbare' items geselecteerd. -Deze items zullen worden verplaatst naar uw inventaris, niet gekopieerd. - -Verplaats de inventaris item(s)? - <usetemplate - ignoretext="Wanneer niet kopieerbare inventaris uit objecten verplaatst wordt" - name="okcancelignore" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="MoveInventoryFromScriptedObject" - > -U heeft 'niet kopieerbare' inventaris items geselecteerd. -Deze items zullen verplaatst worden naar uw inventaris, niet gekopieerd. -Omdat deze objecten scripts bevatten, kan het verplaatsen naar uw inventaris er voor zorgen dat het object niet meer werkt. -inventaris item(s) verplaatsen? - <usetemplate - ignoretext="Indien verplaatsen 'niet kopieerbare' inventaris van gescripte objecten" - name="okcancelignore" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="ClickActionNotPayable" - > -Waarschuwing: Het Betaal Object aan klik actie is ingesteld, maar het zal alleen werken als er een script is toegevoegd met een money() event. - <form name="form"> - <ignore name="ignore" - text="Indien instellen 'Betaal' op objecten zonder money() events"/> - </form> - </notification> - - <notification - - name="OpenObjectCannotCopy" - > -Er zitten geen items in dit object die u kunt kopiëren. - </notification> - - <notification - - name="WebLaunchAccountHistory" - > -Naar de Second Life web site gaan om uw account geschiedenis te bekijken? - <usetemplate - ignoretext="Bij laden van de account geschiedenis webpagina" - name="okcancelignore" - notext="Annuleren" - yestext="Ga naar pagina"/> - </notification> - - <notification - - name="ClickOpenF1Help" - > -De Second Life Support Web site bezoeken? - <usetemplate - ignoretext="Bij bezoeken van de Second Life Support Website." - name="okcancelignore" - notext="Annuleren" - yestext="Ga"/> - </notification> - - <notification - - name="ConfirmQuit" - > -Weet u zeker dat u wilt afsluiten? - <usetemplate - ignoretext="Bij afsluiten Second Life." - name="okcancelignore" - notext="Doorgaan" - yestext="Afsluiten"/> - </notification> - - <notification - - name="HelpReportAbuseEmailLL" - > -Gebruik dit gereedschap om overtredingen van de Voorwaarden voor Service (Terms of Service) en Gemeenschaps Standaarden (Community Standards)te rapporteren. Zie: - -http://secondlife.com/corporate/tos.php -http://secondlife.com/corporate/cs.php - -Alle gerapporteerde misbruiken van de Voorwaarden voor Service en Gemeenschaps Standaarden zullen worden onderzocht en opgelost. U kunt de incident oplossing in de Incidenten Rapportage zien op: - -http://secondlife.com/support/incidentreport.php - </notification> - - <notification - - name="HelpReportAbuseEmailEO" - > -BELANGRIJK: Dit rapport zal naar de eigenaar van deze regio gaan en niet naar Linden Lab! - -Als een service aan Inwoners en bezoekers heeft de eigenaar van deze regio er voor gekozen om rapporten vanuit deze regio zelf te ontvangen en af te handelen. Linden Lab zal geen onderzoek doen naar rapporten die u indient vanaf deze locatie. - -De regio eigenaar zal de rapporten afhandelen op basis van de regels geldend voor deze regio zoals weergegeven in het Estate Convenant (Bekijk Convenants door naar Wereld te gaan in het menu en te kiezen voor Over Land). - -De afhandeling van dit rapport is alleen van toepassing op deze regio. -Toegang van Inwoners tot andere gebieden van Second Life zullen niet beïnvloed worden door de uitkomst van dit rapport. Alleen Linden Lab kan de toegang tot geheel Second Life beperken. - </notification> - - <notification - - name="HelpReportBug" - > -Gebruik dit gereedschap *alleen* voor het rapporteren van technische opties die niet functioneren als verwacht. Geef alstublieft zoveel mogelijk technische details als mogelijk. U kunt de automatische-antwoord email gebruiken om op te reageren om aanvullende gegevens toe te voegen aan uw rapport. - -Alle bug rapporten worden onderzocht en ingeschat. Er zal geen antwoord per email worden verzonden. - -Als u technische problemen heeft, neem dan contact op met Support op: -http://secondlife.com/community/support.php - -Opmerking: Onvolledige rapporten zullen niet worden onderzocht. - </notification> - - <notification - - name="HelpReportAbuseSelectCategory" - > -Selecteer alstublieft een categorie voor dit misbruik rapport. - -Het selecteren van een categorie helpt ons met het archiveren en verwerken van misbruik rapporten. - </notification> - - <notification - - name="HelpReportBugSelectCategory" - > -Selecteer alstublieft een categorie voor dit bug rapport. - -Het selecteren van een categorie helpt ons met het archiveren en verwerken van bug rapporten. - </notification> - - <notification - - name="HelpReportAbuseAbuserNameEmpty" - > -Geef alstublieft een naam op van de misbruiker. - -Een accurate waarde opgeven helpt ons met het archiveren en verwerken van misbruik rapporten. - </notification> - - <notification - - name="HelpReportAbuseAbuserLocationEmpty" - > -Geef alstublieft een locatie op waar het misbruik plaats vond. - -Een accurate waarde opgeven helpt ons met het archiveren en verwerken van misbruik rapporten. - </notification> - - <notification - - name="HelpReportAbuseSummaryEmpty" - > -Geef alstublieft een korte samenvatting op van het misbruik dat plaats vond. - -Een accurate waarde opgeven helpt ons met het archiveren en verwerken van misbruik rapporten. - </notification> - - <notification - - name="HelpReportBugSummaryEmpty" - > -Geef alstublieft een korte samenvatting van de bug. - -Een accurate samenvatting opgeven helpt ons met het archiveren en verwerken van bug rapporten. - </notification> - - <notification - - name="HelpReportAbuseDetailsEmpty" - > -Geef alstublieft een gedetailleerde omschrijving van het misbruik dat plaats vond. - -Wees zo specifiek als mogelijk, inclusief namen en details van het incident waarover u rapporteert. - -Het opgeven van een accurate omschrijving helpt ons met het archiveren en verwerken van misbruik rapporten. - </notification> - - <notification - - name="HelpReportBugDetailsEmpty" - > -Geef alstublieft een gedetailleerde omschrijving van de bug. - -Wees zo specifiek als mogelijk, inclusief stappen om de bug te reproduceren, indien mogelijk. - -Het opgeven van een accurate omschrijving helpt ons met het archiveren en verwerken van misbruik rapporten. - </notification> - - <notification - - name="HelpReportAbuseContainsCopyright" - > -Beste Inwoner, - -Het lijkt er op dat u intellectueel eigendoms misbruik rapporteert. Wees er alstublieft van overtuigd dat u dit correct rapporteert: - -(1) Het Misbruik Proces. U kunt een misbruik rapport indienen als u er van overtuigd bent dat een Inwoner het Second Life permissie systeem uitbuit, bijvoorbeeld door gebruik van CopyBot of soortgelijke gereedschappen, daarmee de intellectuele eigendoms rechten overtredend. Het Abuse Team onderzoekt en zal passende maatregelen uitvaardigen tegen gedrag dat de Second Life Gemeenschaps Standaarden overtreedt. Echter, het Abuse Team zal geen actie ondernemen en niet reageren op verzoeken om inhoud te verwijderen uit de Second Life wereld. - -(2) Het DMCA of Inhoud Verwijder Proces. Voor een verzoek tot verwijdering van inhoud in Second Life, MOET u een geldige berichtgeving van misbruik indienen zoals voorzien in onze DMCA beleid op http://secondlife.com/corporate/dmca.php. - -Indien u nog steeds door wilt gaan met het misbruik proces, sluit dan alstublieft dit venster en maak het indienen van uw rapport af. U zult mogelijk een specifieke catagorie moeten kiezen 'CopyBot of Permissie Uitbuiting'. - -Dank U, -Linden Lab - </notification> - - <notification - - name="FailedRequirementsCheck" - > -De volgende vereiste componenten ontbreken van [FLOATER]: -[COMPONENTS] - </notification> - - <notification - - label="Vervang Bestaande Bevestiging" - name="ReplaceAttachment" - > -Er is al een object bevestigd op dit punt aan uw lichaam. -Wilt u dit vervangen met het geselecteerde object? - <form name="form"> - <ignore name="ignore" - save_option="true" - text="Bij vervangen van bestaande bevestigingen"/> - <button - - - - name="Yes" - text="OK"/> - <button - - - name="No" - text="Annuleren"/> - </form> - </notification> - - <notification - - label="Niet Storen Modus Waarschuwing" - name="BusyModePay" - > -U bevind zich in Niet Storen Modus, hetgeen inhoudt dat u geen enkele items kunt ontvangen voor deze betaling. - -Wilt u de Niet Storen Modus verlaten voordat u deze transactie completeert? - <form name="form"> - <ignore name="ignore" - save_option="true" - text="Bij betalen van een persoon of object in Niet Storen modus"/> - <button - - - - name="Yes" - text="OK"/> - <button - - - name="No" - text="Annuleren"/> - </form> - </notification> - - <notification - - name="ConfirmEmptyTrash" - > -Weet u zeker dat u de inhoud van uw vuilnisbak map permanent wilt verwijderen? - <usetemplate - ignoretext="Bij verwijderen van de inhoud uit de inventaris vuilnisbak map" - name="okcancelignore" - notext="Annuleren" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmClearBrowserCache" - > -Weet u zeker dat u uw browser cache wilt legen? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="Ja"/> - </notification> - - <notification - - name="ConfirmClearCookies" - > -Weet u zeker dat u al uw cookies wilt verwijderen? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="Ja"/> - </notification> - - <notification - - name="ConfirmClearMediaUrlList" - > -Weet u zeker dat u uw lijst met al de opgeslagen URL's wilt verwijderen? - <usetemplate - name="okcancelbuttons" - notext="Annuleren" - yestext="Ja"/> - </notification> - - <notification - - name="ConfirmEmptyLostAndFound" - > -Weet u zeker dat u de inhoud van de Verloren en Gevonden map permanent wilt verwijderen? - <usetemplate - ignoretext="Bij legen van uw inventaris Verloren en Gevonden map" - name="okcancelignore" - notext="Nee" - yestext="Ja"/> - </notification> - - <notification - - name="CopySLURL" - > -De volgende SLURL is gekopieerd naar uw klem bord: -[SLURL] - -Plaats het in een web pagina om anderen eenvoudig toegang te verschaffen naar de locatie of test het zelf door het te plakken in de adres balk van uw web browser. - <form name="form"> - <ignore name="ignore" - text="Bij kopiëren van een SLURL naar het klem bord"/> - </form> - </notification> - - <notification - - name="GraphicsPreferencesHelp" - > -Dit venster bepaald de venster afmetingen, resolutie en kwaliteit van de client's grafische weergave. De Voorkeuren > Grafische interface laat u kiezen uit vier grafische niveaus: Laag, Middel, Hoog en Ultra. U kunt ook uw grafische instellingen aanpassen met het aan vinken van het Custom vakje en de volgende instellingen manipuleren: - -Shaders: In of uitschakelen van de verschillende typen pixel shaders. - -Reflectie Detail: Stelt het type objecten in hetgeen water kan reflecteren. - -Avatar Weergave: Stelt de opties in die van invloed zijn op hoe de client een avatar zal renderen. - -Zicht bereik: Beïnvloed tot hoe ver objecten vanaf uw zichtpunt worden weergegeven in de scène. - -Maximaal Aantal Particles: Stelt het maximaal aantal particles in die u tegelijk kunt zien op uw scherm. - -Nabewerking Kwaliteit: Stelt de resolutie in waarmee Gloei wordt weergegeven. - -Maas Detail: Stelt de hoeveelheid detail of het aantal driehoeken in gebruikt voor de weergave van bepaalde objecten. Een hogere waarde zal langer nemen om weer te gegeven, maar zorgen voor objecten met meer detail. - -Licht Detail: Bepaald welke typen lichten u wenst weer te geven. - -Terrein Detail: Stelt de hoeveelheid detail in die u wilt zien voor het terrein textuur. - </notification> - - <notification - - name="WLSavePresetAlert" - > -Wilt u de opgeslagen voor instellingen overschrijven? - <usetemplate - name="okcancelbuttons" - notext="Nee" - yestext="Ja"/> - </notification> - - <notification - - name="WLDeletePresetAlert" - > -Wilt u [SKY] verwijderen? - <usetemplate - name="okcancelbuttons" - notext="Nee" - yestext="Ja"/> - </notification> - - <notification - - name="WLNoEditDefault" - > -U kunt de standaard instellingen niet wijzigen of verwijderen. - </notification> - - <notification - - name="WLMissingSky" - > -Dit dag cyclus bestand heeft een ontbrekend lucht bestand: [SKY]. - </notification> - - <notification - - name="PPSaveEffectAlert" - > -Voorbewerkingeffecten bestaan. Wilt u ze alsnog overschrijven? - <usetemplate - name="okcancelbuttons" - notext="Nee" - yestext="Ja"/> - </notification> - - <notification - - name="HelpEditSky" - > -Wijzig de WindLight schuif knoppen en maak en sla een set van luchten op. - </notification> - - <notification - - name="HelpEditDayCycle" - > -Bepaald de luchten te gebruiken gedurende de dag. - </notification> - - <notification - - name="EnvSettingsHelpButton" - > -Deze instelling bepalen hoe de omgeving er uit ziet op uw computer. Uw grafische kaart zal grafische shaders moeten ondersteunen om toegang te krijgen tot alle instellingen. - -Wijzig de "Tijd van de Dag" schuif knop om de fase van de dag lokaal in de viewer aan te passen. - -Wijzig de "Wolken Dichtheid" schuif knop om de hoeveelheid wolken die de lucht bedekken in te stellen. - -Kies een kleur in de "Water Kleur" kleuren kiezer om de kleur van het water aan te passen. - -Wijzig de "Water Mist" schuif knop om de dichtheid van de mist onder water in te stellen. - -Klik op "Gebruik Estate Tijd" om de tijd van de dag te herstellen naar de huidige tijd en die te volgen. - -Klik op "Geavanceerde Lucht" om de editor op te roepen voor geavanceerde instellingen voor de lucht. - -Klik op "Geavanceerd Water" om de editor op te roepen voor geavanceerde instellingen voor water. - </notification> - - <notification - - name="HelpDayCycle" - > -De Dag Cyclus Editor geeft u controle over de lucht gedurende de Second Life's dag/nacht cyclus. Dit is de cyclus die gebruikt wordt in de Basis Omgeving Editor's Tijd van de Dag schuif knop. - -De Dag Cyclus Editor werkt beter met het instellen van gemarkeerde frames. Dit zijn nodes (weergegeven als grijze blips in de tijd weergave) die Hemel voorinstelling met zich geassocieerd hebben. Als de Tijd van de Dag voortschrijdt, "animeert" de WindLight Hemel als het interpoleert tussen de gemarkeerde frames. - -De gele pijlen boven de tijdlijn representeert uw huidige zicht, gebaseerd op de Tijd van de Dag. Klik en sleep deze om te zien hoe uw dag zal animeren. U kunt gemarkeerde frames toe voegen of verwijderen middels het indrukken van de Frame Toevoegen of Frame Verwijderen knoppen, rechts van de tijdlijn. - -U kunt de tijds positie van een gemarkeerd frame instellen door het te slepen over de tijdlijn of middels het handmatig invullen van de Gemarkeerde Frame Instellingen. Binnen de Gemarkeerde Frame Instellingen krijgt u de mogelijkheid het gemarkeerde frame te associëren met de respectievelijke WindLight voorinstelling. - -De lengte van de Cyclus bepaald de totale tijdsduur van een "dag". Stelt u dit in op een lage waarde (bijv. twee minuten) betekend dat uw volledig 24 uurs tijdlijn zal animeren in slechts twee minuten! Als u tevreden bent met uw tijdlijn en gemarkeerde frame cyclus, gebruik dan de Start en Stop knoppen om het resultaat voor te beschouwen. Onthoud dat u ook de gele tijd indicator pijl boven de tijdlijn kunt bewegen om de animatie cyclus interactief te bekijken. Het gebruik van de Estate Tijd knop zal de lengte en tijd van uw dag synchroniseren met de Estate's dag cyclus. - -Als u tevreden bent met uw Dag Cyclus, kunt het opslaan en laden met de Test Dag Opslaan en Laad Test Dag knoppen. Merk op, dat wij momenteel slechts één Dag Cyclus toestaan. - </notification> - - <notification - - name="HelpBlueHorizon" - > -Gebruik de Rood/Groen/Blauw schuif knoppen om de kleur van de hemel aan te passen. U kunt de Intensiteit (I) schuif knop gebruiken om alle drie de schuif knoppen tegelijk te bewegen. - </notification> - - <notification - - name="HelpHazeHorizon" - > -Nevel Horizon is één van de meest handige parameters voor de algehele belichting in de scène. Het is effectief om de vele belichting instellingen te simuleren, zoals wit-vlakken van de zon en donkere gesloten iris instellingen. - </notification> - - <notification - - name="HelpBlueDensity" - > -Blauw Dichtheid beïnvloed de algehele kleur verzadiging van de hemel en mist. Indien u de Intensiteit (I) schuif knop naar rechts schuift, zullen de kleuren lichter en sprekender worden. Indien u het geheel naar links schuift, worden de kleuren doffer, uiteindelijk vervagend naar zwart en wit. Als u de hemel kleur nauwkeurig wilt uitbalanceren, kunt u de individuele elementen van verzadiging instellen door gebruik van de Rood/Groen/Blauw (RGB) schuif knoppen. - </notification> - - <notification - - name="HelpHazeDensity" - > -Nevel Dichtheid bepaald de hoeveelheid dofheid, grijze nevel in de atmosfeer. Het is effectief om scènes met veel rook of zelf gemaakte vervuiling te simuleren. Het is ook effectief voor het simuleren van nevel en mist. - </notification> - - <notification - - name="HelpDensityMult" - > -De Dichtheid Vermeerderaar kan gebruikt worden om de algehele dichtheid van de atmosfeer te beïnvloeden. -Bij lagere instelling creëert het een gevoel van "dunne lucht" en met hogere instellingen een dik zwaar smog effect. - </notification> - - <notification - - name="HelpDistanceMult" - > -Stelt de WindLight's waargenomen afstand in. Een waarde van nul stopt de invloed van WindLight op terrein en objecten. Waarden groter dan 1 simuleren grotere afstanden voor dikkere atmosferische effecten. - </notification> - - <notification - - name="HelpMaxAltitude" - > -Maximale Hoogte bepaald de hoogte calculaties die WindLight uitvoert bij het berekenen van de atmosferische belichting. Later op de dag is het handig om de "diepte" van de zonsondergang weergave in te stellen. - </notification> - - <notification - - name="HelpSunlightColor" - > -Stelt de kleur en intensiteit in van direct licht in de scène. - </notification> - - <notification - - name="HelpSunAmbient" - > -Stelt de kleur en intensiteit in van het omgevings atmosferische licht in de scène. - </notification> - - <notification - - name="HelpSunGlow" - > -De Afmeting schuif knop stelt de afmeting van de zon in. -De Focus schuif knop bepaald de wazigheid van de zon aan de hemel. - </notification> - - <notification - - name="HelpSceneGamma" - > -Wijzigt de verdeling van licht op het scherm in licht of donker. - </notification> - - <notification - - name="HelpStarBrightness" - > -Wijzigt de helderheid van sterren aan de hemel. - </notification> - - <notification - - name="HelpTimeOfDay" - > -Bepaald de locatie van de zon aan de hemel. -Gelijkwaardig aan elevatie. - </notification> - - <notification - - name="HelpEastAngle" - > -Bepaald de locatie van de zon aan de hemel. -Gelijkwaardig aan azimut. - </notification> - - <notification - - name="HelpCloudColor" - > -Wijzigt de kleur van de wolken. Het is algemeen aanbevolen deze wit-achtig te houden, maar hé, heb plezier als u dit wilt. - </notification> - - <notification - - name="HelpCloudDetail" - > -Bepaald het detail plaatje als laag bovenop het basis wolken plaatje. X en Y bepalen de positie. D (Dichtheid) bepaald hoe wollig of verspreid de wolken verschijnen. - </notification> - - <notification - - name="HelpCloudDensity" - > -Geeft u de mogelijkheid de positie van wolken met de X en Y schuif knoppen in te stellen en hoe dicht ze zijn met de D schuif knop. - </notification> - - <notification - - name="HelpCloudCoverage" - > -Bepaald hoeveel de wolken de hemel bedekken. - </notification> - - <notification - - name="HelpCloudScale" - > -Bepaald de schaal van het wolken plaatje op de hemelboog. - </notification> - - <notification - - name="HelpCloudScrollX" - > -Bepaald de snelheid van de wolken terwijl zij in X richting bewegen. - </notification> - - <notification - - name="HelpCloudScrollY" - > -Bepaald de snelheid van de wolken terwijl zij in Y richting bewegen. - </notification> - - <notification - - name="HelpClassicClouds" - > -Vink dit aan voor weergave van Second Life's oudere klassieke wolken als toevoeging op WindLight's wolken. - </notification> - - <notification - - name="HelpWaterFogColor" - > -Kiest de kleur van de onder water nevel. - </notification> - - <notification - - name="HelpWaterFogDensity" - > -Bepaald hoe dicht de water nevel is en hoe ver u kunt zien onder water. - </notification> - - <notification - - name="HelpUnderWaterFogMod" - > -Past het effect aan van de Nevel Dichtheid Exponent om zo te bepalen hoe ver uw avatar onder water kan zien. - </notification> - - <notification - - name="HelpWaterGlow" - > -Bepaald hoeveel het oppervlak van het water gloeit. - </notification> - - <notification - - name="HelpWaterNormalScale" - > -Bepaald de schaling van de drie wavelets (golf patronen) die samen water vormen. - </notification> - - <notification - - name="HelpWaterFresnelScale" - > -Bepaald hoeveel licht er wordt gereflecteerd onder verschillende hoeken. - </notification> - - <notification - - name="HelpWaterFresnelOffset" - > -Bepaald de hoeveelheid licht intensiteit welke wordt gereflecteerd. - </notification> - - <notification - - name="HelpWaterScaleAbove" - > -Bepaald hoeveel licht er wordt weerkaatst wanneer van bovenop het water oppervlak gezien. - </notification> - - <notification - - name="HelpWaterScaleBelow" - > -Bepaald hoeveel licht er wordt weerkaatst wanneer van onder het water oppervlak gezien. - </notification> - - <notification - - name="HelpWaterBlurMultiplier" - > -Bepaald hoe golven en reflectie worden ge mixed. - </notification> - - <notification - - name="HelpWaterNormalMap" - > -Bepaald welke Normaal map gelaagd is over het water om de reflectie/weerkaatsing te bepalen. - </notification> - - <notification - - name="HelpWaterWave1" - > -Bepaald waar en hoe snel de grote schaal versie van de Normaal map beweegt in X en Y richting. - </notification> - - <notification - - name="HelpWaterWave2" - > -Bepaald waar en hoe snel de kleine schaal versie van de Normaal map beweegt in X en Y richting. - </notification> - - <notification - - name="NewSkyPreset" - > -Geef een naam op voor de nieuwe lucht. - <form name="form"> - <input name="message" type="text"> -Nieuwe Voorinstelling - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Annuleren"/> - </form> - </notification> - - <notification - - name="ExistsSkyPresetAlert" - > -Voorinstelling bestaat al! - </notification> - - <notification - - name="NewWaterPreset" - > -Geef een naam voor de nieuwe voorinstelling van water. - <form name="form"> - <input name="message" type="text"> -Nieuwe Voorinstelling - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Annuleren"/> - </form> - </notification> - - <notification - - name="ExistsWaterPresetAlert" - > -Voorinstelling bestaat al! - </notification> - - <notification - - name="WaterNoEditDefault" - > -u kunt de standaard voorinstelling niet wijzigen of verwijderen. - </notification> - - <notification - - name="ChatterBoxSessionStartError" - > -Kan geen nieuwe chat sessie starten met [RECIPIENT]. -[REASON] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="ChatterBoxSessionEventError" - > -[EVENT] -[REASON] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="ForceCloseChatterBoxSession" - > -Uw chat sessie met [NAME] zal moeten worden gesloten. -[REASON] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="Cannot_Purchase_an_Attachment" - > -Items kunnen niet worden gekocht indien ze deel uit maken van een Bevestiging. - </notification> - - <notification - - label="Over verzoeken voor debet permissies" - name="DebitPermissionDetails" - > -Toestemming geven aan dit script geeft het object een onbeperkte permissie om Linden dollars (L$) uit uw account te nemen! -Om dit recht in te trekken, moet de object eigenaar het object verwijderen of de scripts in het object opnieuw instellen. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="AutoWearNewClothing" - > -Wilt u de kleding items die u maakt automatisch aantrekken? - <usetemplate - ignoretext="Automatisch nieuwe kleding aantrekken" - name="okcancelignore" - notext="Nee" - yestext="Ja"/> - </notification> - - <notification - - name="NotAgeVerified" - > -U moet leeftijd geverifieerd zijn om toegang te verkrijgen tot dit perceel. -Wilt u de Second Life website bezoeken om uw leeftijd te verifiëren? - -[_URL] - <url option="0" name="url"> - - https://secondlife.com/account/verification.php - </url> - <usetemplate - ignoretext="Waarschuw voor gebrek aan leeftijd verificatie" - name="okcancelignore" - notext="Nee" - yestext="Ja"/> - </notification> - - <notification - - name="Cannot enter parcel: no payment info on file" - > -Dit perceel verlangd dat u betaal informatie geregistreerd hebt staan alvorens toegang te verkrijgen. -Wilt u de Second Life website bezoeken om dit in te stellen? - -[_URL] - <url option="0" name="url"> - - https://secondlife.com/account/index.php?lang=nl - </url> - <usetemplate - ignoretext="Waarschuw voor gebrek aan betaal informatie" - name="okcancelignore" - notext="Nee" - yestext="Ja"/> - </notification> - - <notification - - name="MissingString" - > -De tekst [STRING_NAME] ontbreekt in strings.xml - </notification> - - <notification - - name="SystemMessageTip" - > -[MESSAGE] - </notification> - - <notification - - name="Cancelled" - > -Geannuleerd - </notification> - - <notification - - name="CancelledSit" - > -Zitten geannuleerd - </notification> - - <notification - - name="CancelledAttach" - > -Bevestigen geannuleerd - </notification> - - <notification - - name="ReplacedMissingWearable" - > -Missend kleding/lichaamsdeel is vervangen door standaard. - </notification> - - <notification - - name="GroupNotice" - > -Onderwerp: [SUBJECT], Bericht: [MESSAGE] - </notification> - - <notification - - name="FriendOnline" - > -[FIRST] [LAST] is Online - </notification> - - <notification - - name="FriendOffline" - > -[FIRST] [LAST] is Offline - </notification> - - <notification - - name="AddSelfFriend" - > -U kunt uzelf niet als vriend toevoegen. - </notification> - - <notification - - name="UploadingAuctionSnapshot" - > -In-wereld en website foto's worden geüpload... -(Duurt ongeveer 5 minuten.) - </notification> - - <notification - - name="UploadPayment" - > -U heeft L$[AMOUNT] betaald om te uploaden. - </notification> - - <notification - - name="UploadWebSnapshotDone" - > -Upload van website foto is gereed. - </notification> - - <notification - - name="UploadSnapshotDone" - > -Upload van in-wereld foto is gereed. - </notification> - - <notification - - name="TerrainDownloaded" - > -Terrain.raw gedownload - </notification> - - <notification - - name="GestureMissing" - > -Gebaar [NAME] mist in de database. - </notification> - - <notification - - name="UnableToLoadGesture" - > -Kan gebaar [NAME] niet laden. Probeer het a.u.b. opnieuw. - </notification> - - <notification - - name="LandmarkMissing" - > -Landmarkering mist in de database. - </notification> - - <notification - - name="UnableToLoadLandmark" - > -Kan landmarkering niet laden. Probeer het a.u.b. opnieuw. - </notification> - - <notification - - name="CapsKeyOn" - > -Uw Caps Lock toets staat aan. Aangezien dit effect heeft op het wachtwoord dat u intypt, zult u het wellicht willen uitzetten. - </notification> - - <notification - - name="NotecardMissing" - > -Notitiekaart mist in de database. - </notification> - - <notification - - name="NotecardNoPermissions" - > -Onvoldoende permissies om de notitiekaart te bekijken. - </notification> - - <notification - - name="RezItemNoPermissions" - > -Onvoldoende permissies om het object te rezzen. - </notification> - - <notification - - name="UnableToLoadNotecard" - > -Kan notitiekaart niet laden. Probeer het a.u.b. opnieuw. - </notification> - - <notification - - name="ScriptMissing" - > -Script mist in de database. - </notification> - - <notification - - name="ScriptNoPermissions" - > -Onvoldoende permissies om het script te bekijken. - </notification> - - <notification - - name="UnableToLoadScript" - > -Kan script niet laden. Probeer het a.u.b. opnieuw. - </notification> - - <notification - - name="IncompleteInventory" - > -De complete inhoud die u aanbiedt is nog niet lokaal beschikbaar. Probeer die items over een minuut nogmaals aan te bieden. - </notification> - - <notification - - name="CannotModifyProtectedCategories" - > -U kunt geen beschermde categorieën wijzigen. - </notification> - - <notification - - name="CannotRemoveProtectedCategories" - > -U kunt geen beschermde categorieën verwijderen. - </notification> - - <notification - - name="OfferedCard" - > -U heeft een visitekaartje aangeboden aan [FIRST] [LAST] - </notification> - - <notification - - name="UnableToBuyWhileDownloading" - > -Niet mogelijk te kopen terwijl objectdata wordt gedownload. Probeer het alstublieft opnieuw. - </notification> - - <notification - - name="UnableToLinkWhileDownloading" - > -Niet mogelijk om te koppelen terwijl objectdata wordt gedownload. Probeer het alstublieft opnieuw. - </notification> - - <notification - - name="CannotBuyObjectsFromDifferentOwners" - > -Kan geen objecten van meerdere eigenaren op hetzelfde moment kopen. Selecteer alstublieft een enkel object. - </notification> - - <notification - - name="ObjectNotForSale" - > -Object lijkt niet te koop. - </notification> - - <notification - - name="EnteringGodMode" - > -God modus binnengaan, niveau [LEVEL] - </notification> - - <notification - - name="LeavingGodMode" - > -God modus verlaten, niveau [LEVEL] - </notification> - - <notification - - name="CopyFailed" - > -Kopiëren mislukt omdat u geen kopieerpermissie bezit. - </notification> - - <notification - - name="InventoryAccepted" - > -[NAME] heeft uw inventarisaanbod geaccepteerd. - </notification> - - <notification - - name="InventoryDeclined" - > -[NAME] heeft uw inventarisaanbod afgewezen. - </notification> - - <notification - - name="ObjectMessage" - > -[NAME]: [MESSAGE] - </notification> - - <notification - - name="CallingCardAccepted" - > -Uw visitekaartje is geaccepteerd. - </notification> - - <notification - - name="CallingCardDeclined" - > -Uw visite kaart is afgewezen. - </notification> - - <notification - - name="TeleportToLandmark" - > -Nu u het mainland bereikt heeft, kunt u teleporteren naar locaties als '[NAME]' door op de Inventaris knop rechtsonder in uw scherm te klikken en dan de Landmarkeringen map te selecteren. Dubbelklik op de landmarkering en klik op Teleport om ernaartoe te reizen. - </notification> - - <notification - - name="TeleportToPerson" - > -Nu u het mainland bereikt heeft, kunt u contact opnemen met inwoners als '[NAME]' door op de Inventaris knop rechtsonder in uw scherm te klikken en dan de Visitekaartjes map te selecteren. Dubbelklik op het visitekaartje, klik op Instant Message en type een bericht. - </notification> - - <notification - - name="CantSelectLandFromMultipleRegions" - > -Kan geen land selecteren over servergrenzen. -Probeer een kleiner stuk land te selecteren. - </notification> - - <notification - - name="GroupVote" - > -[NAME] heeft voorgesteld om te stemmen over: -[MESSAGE] - <form name="form"> - <button - - name="VoteNow" - text="Stem Nu"/> - <button - - name="Later" - text="Later"/> - </form> - </notification> - - <notification - - name="SystemMessage" - > -[MESSAGE] - </notification> - - <notification - - name="EventNotification" - > -Evenement Bericht: - -[NAME] -[DATE] - <form name="form"> - <button - - name="Teleport" - text="Teleport"/> - <button - - name="Description" - text="Omschrijving"/> - <button - - name="Cancel" - text="Annuleren"/> - </form> - </notification> - - <notification - - name="TransferObjectsHighlighted" - > -Alle objecten op dit perceel die zullen worden overgedragen aan de koper van dit perceel zijn nu opgelicht. - -* Bomen en grassen die worden overgedragen zijn niet opgelicht. - <form name="form"> - <button - - name="Done" - text="Gereed"/> - </form> - </notification> - - <notification - - name="DeactivatedGesturesTrigger" - > -Deactiveren van gebaren met dezelfde trigger: -[NAMES] - </notification> - - <notification - - name="NoQuickTime" - > -De QuickTime software van Apple schijnt niet op uw systeem geïnstalleerd te zijn. -Indien u streaming media wilt zien op percelen die dit ondersteunen, dient u naar de QuickTime webpagina te gaan (http://www.apple.com/QuickTime) en de QuickTime Player te installeren. - </notification> - - <notification - - name="OwnedObjectsReturned" - > -De objecten die uw eigendom zijn op het geselecteerde perceel zijn geretourneerd naar uw inventaris. - </notification> - - <notification - - name="OtherObjectsReturned" - > -De objecten op het geselecteerde perceel dat het eigendom is van [FIRST] [LAST], zijn geretourneerd naar zijn of haar inventaris. - </notification> - - <notification - - name="OtherObjectsReturned2" - > -De objecten op het geselecteerde perceel dat het eigendom is van inwoner '[NAME]', zijn geretourneerd naar hun eigenaar. - </notification> - - <notification - - name="GroupObjectsReturned" - > -De objecten op het geselecteerde perceel dat gedeeld is met de groep [GROUPNAME] zijn geretourneerd naar de inventaris van hun eigenaar. -Overdraagbare objecten die eigendom zijn van de groep zijn geretourneerd naar hun voormalige eigenaren. -Niet-overdraagbare objecten die eigendom zijn van de groep zijn verwijderd. - </notification> - - <notification - - name="UnOwnedObjectsReturned" - > -De objecten op het geselecteerde perceel die NIET uw eigendom zijn, zijn geretourneerd naar hun eigenaren. - </notification> - - <notification - - name="NotSafe" - > -Op dit land is letsel ingeschakeld ('niet veilig'). -U kunt hier letsel oplopen. Indien u sterft, zult u naar uw thuis locatie worden geteleporteerd. - </notification> - - <notification - - name="NoFly" - > -Op dit land is vliegen uitgeschakeld ('niet vliegen'). -U kunt hier niet vliegen. - </notification> - - <notification - - name="PushRestricted" - > -Dit land is 'Niet Duwen'. -U kunt geen anderen duwen, tenzij u het land bezit. - </notification> - - <notification - - name="NoVoice" - > -Op dit land is voice uitgeschakeld. - </notification> - - <notification - - name="NoBuild" - > -Op dit land is bouwen uitgeschakeld ('niet bouwen'). -U kunt hier geen objecten creëren. - </notification> - - <notification - - name="ScriptsStopped" - > -Een beheerder heeft scripts in deze regio tijdelijk gestopt. - </notification> - - <notification - - name="ScriptsNotRunning" - > -In deze regio worden geen scripts uitgevoerd. - </notification> - - <notification - - name="NoOutsideScripts" - > -Op dit land zijn externe scripts uitgeschakeld (geen externe scripts). -Geen scripts zullen worden uitgevoerd, behalve scripts die toebehoren aan de landeigenaar. - </notification> - - <notification - - name="ClaimPublicLand" - > -Kan alleen publiek land claimen in de regio waar u aanwezig bent. - </notification> - - <notification - - name="ObjectGiveItem" - > -Een object genaamd [OBJECTFROMNAME], eigendom van [FIRST] [LAST], heeft u een [OBJECTTYPE] genaamd [OBJECTNAME] gegeven. - <form name="form"> - <button - - name="Keep" - text="Behouden"/> - <button - - name="Discard" - text="Afwijzen"/> - <button - - name="Mute" - text="Negeren"/> - </form> - </notification> - - <notification - - name="ObjectGiveItemUnknownUser" - > -Een object genaamd [OBJECTFROMNAME], eigendom van (een onbekende gebruiker), heeft u een [OBJECTTYPE] genaamd [OBJECTNAME] gegeven. - <form name="form"> - <button - - name="Keep" - text="Behouden"/> - <button - - name="Discard" - text="Afwijzen"/> - <button - - name="Mute" - text="Negeren"/> - </form> - </notification> - - <notification - - name="UserGiveItem" - > -[NAME] heeft u een [OBJECTTYPE] genaamd '[OBJECTNAME]' gegeven. - <form name="form"> - <button - - name="Keep" - text="Behouden"/> - <button - - name="Discard" - text="Afwijzen"/> - <button - - name="Mute" - text="Negeren"/> - </form> - </notification> - - <notification - - name="GodMessage" - > -[NAME] -[MESSAGE] - </notification> - - <notification - - name="JoinGroup" - > -[MESSAGE] - <form name="form"> - <button - - name="Join" - text="Deelnemen"/> - <button - - name="Decline" - text="Afwijzen"/> - <button - - name="Info" - text="Info"/> - </form> - </notification> - - <notification - - name="TeleportOffered" - > -[NAME] heeft aangeboden u te teleporteren naar zijn of haar locatie: - -[MESSAGE] - <form name="form"> - <button - - name="Teleport" - text="Teleport"/> - <button - - name="Cancel" - text="Annuleren"/> - </form> - </notification> - - <notification - - name="GotoURL" - > -[MESSAGE] -[URL] - <form name="form"> - <button - - name="Later" - text="Later"/> - <button - - name="GoNow..." - text="Ga Nu..."/> - </form> - </notification> - - <notification - - name="OfferFriendship" - > -[NAME] biedt vriendschap aan. - -[MESSAGE] - -(Standaard zult u in staat zijn om elkaars online status te zien.) - <form name="form"> - <button - - name="Accept" - text="Accepteren"/> - <button - - name="Decline" - text="Afwijzen"/> - </form> - </notification> - - <notification - - name="OfferFriendshipNoMessage" - > -[NAME] biedt vriendschap aan. - -(Standaard zult u in staat zijn om elkaars online status te zien.) - <form name="form"> - <button - - name="Accept" - text="Accepteren"/> - <button - - name="Decline" - text="Afwijzen"/> - </form> - </notification> - - <notification - - name="FriendshipAccepted" - > -[NAME] heeft uw vriendschapsaanbod geaccepteerd. - </notification> - - <notification - - name="FriendshipDeclined" - > -[NAME] heeft uw vriendschapsaanbod afgewezen. - </notification> - - <notification - - name="OfferCallingCard" - > -[FIRST] [LAST] biedt zijn/haar visitekaartje aan. -Dit zal een bladwijzer in uw inventaris toevoegen zodat u deze inwoner snel kunt een IM kunt sturen. - <form name="form"> - <button - - name="Accept" - text="Accepteren"/> - <button - - name="Decline" - text="Afwijzen"/> - </form> - </notification> - - <notification - - name="RegionRestartMinutes" - - - > -De regio zal over [MINUTES] minuten herstarten. -Indien u in deze regio blijft, zult u worden uitgelogd. - </notification> - - <notification - - name="RegionRestartSeconds" - - - > -De regio zal over [SECONDS] seconden herstarten. -Indien u in deze regio blijft, zult u worden uitgelogd. - </notification> - - <notification - - name="LoadWebPage" - > -Laad webpagina [URL]? - -[MESSAGE] - -Van object: [OBJECTNAME], eigenaar: [NAME]? - <form name="form"> - <button - - name="Gotopage" - text="Ga naar pagina"/> - <button - - name="Cancel" - text="Annuleren"/> - </form> - </notification> - - <notification - - name="FailedToFindWearableUnnamed" - > -Kon [TYPE] niet in de database vinden. - </notification> - - <notification - - name="FailedToFindWearable" - > -Kon [TYPE] genaamd [DESC] niet in de database vinden. - </notification> - - <notification - - name="ScriptQuestion" - > -[OBJECTNAME]', een object van '[NAME]', wil graag: - -[QUESTIONS] -Is dit OK? - <form name="form"> - <button - - name="Yes" - text="Ja"/> - <button - - name="No" - text="Nee"/> - <button - - name="Mute" - text="Negeren"/> - </form> - </notification> - - <notification - - name="ScriptQuestionCaution" - > -[OBJECTNAME]', een object van '[NAME]', wil graag - -[QUESTIONS] -Indien u dit object en zijn maker niet vertrouwt, zou u het verzoek moeten weigeren. Klik de Details knop voor additionele informatie. - -Dit verzoek inwilligen? - <form name="form"> - <button - - name="Grant" - text="Inwilligen"/> - <button - - name="Deny" - text="Weigeren"/> - <button - - name="Details" - text="Details..."/> - </form> - </notification> - - <notification - - name="ScriptDialog" - > -[FIRST] [LAST]'s '[TITLE]' -[MESSAGE] - <form name="form"> - <button - - name="Ignore" - text="Negeren"/> - </form> - </notification> - - <notification - - name="ScriptDialogGroup" - > -[GROUPNAME]'s '[TITLE]' -[MESSAGE] - <form name="form"> - <button - - name="Ignore" - text="Negeren"/> - </form> - </notification> - - <notification - - name="FirstBalanceIncrease" - > -U heeft zojuist L$[AMOUNT] ontvangen. -Objecten en andere gebruikers kunnen u L$ geven. -Uw saldo wordt in de rechterbovenhoek van het scherm getoond. - </notification> - - <notification - - name="FirstBalanceDecrease" - > -U heeft zojuist L$[AMOUNT] betaald. -Uw saldo wordt in de rechterbovenhoek van het scherm getoond. - </notification> - - <notification - - name="FirstSit" - > -U zit. -Gebruik de pijltjestoetsen (of AWSD) of uw gezichtsveld te wijzigen. -Klik de 'Sta Op' knop om op te staan. - </notification> - - <notification - - name="FirstMap" - > -Klik en sleep om de kaart te verplaatsen. -Dubbelklik om te teleporteren. -Gebruik de bedieningselementen aan de rechterkant om dingen te vinden en verschillende achtergronden te tonen. - </notification> - - <notification - - name="FirstBuild" - > -U kunt nieuwe objecten bouwen in sommige gebieden van [SECOND_LIFE]. -Gebruik de gereedschappen in de linkerbovenhoek om te bouwen en probeer Ctrl en Alt ingedrukt te houden om snel tussen gereedschappen te wisselen. -Druk Esc om te stoppen met bouwen. - </notification> - - <notification - - name="FirstLeftClickNoHit" - > -Links-klikken werkt in op speciale objecten. -Indien de muisaanwijzer verandert in een hand, kunt u interacteren met het object. -Rechts-klikken toont altijd een menu van dingen die u kunt doen. - </notification> - - <notification - - name="FirstTeleport" - > -Deze regio staat geen point-to-point teleport toe, dus u bent naar de dichtstbijzijnde telehub getransporteerd. -Uw bestemming is gemarkeerd met een groot baken. -Volg de rode pijl naar het baken, of klik de pijl om het baken te verwijderen. - </notification> - - <notification - - name="FirstOverrideKeys" - > -Uw bewegingstoetsen worden nu door een object afgehandeld. -Probeer de pijltjestoetsen of AWSD om te zien wat ze doen. -Sommige objecten (zoals geweren) vereisen dat u in mouselook gaat om ze te gebruiken. -Druk 'M' om dit te doen. - </notification> - - <notification - - name="FirstAppearance" - > -U bent uw uiterlijk aan het bewerken. -Gebruik de pijltjestoetsen om uw gezichtsveld te draaien en te zoomen. -Druk 'Alles Opslaan' om uw uiterlijk op te slaan wanneer u klaar bent. -U kunt uw uiterlijk zo vaak als u wil bewerken. - </notification> - - <notification - - name="FirstInventory" - > -Dit is uw inventaris, die objecten, notitiekaarten, kleding en andere eigendommen bevat. -* Om een object of een kleding-map te dragen, sleep het op uzelf. -* Om een object in de wereld te brengen, sleep het op de grond. -* Om een notitiekaart te lezen, dubbelklik erop. - </notification> - - <notification - - name="FirstSandbox" - > -Dit is een zandbak regio. -Objecten die u hier bouwt, kunnen worden verwijderd nadat u het gebied verlaat. Zandbakken schonen op regelmatige basis, kijk alstublieft naar de informatie aan de bovenkant van het scherm, naast de regionaam. - -Zandbak regio's zijn ongewoon en gemarkeerd met borden. - </notification> - - <notification - - name="FirstFlexible" - > -Dit object is flexibel. -Flexibele objecten mogen niet fysiek zijn en moeten fantoom zijn tot de 'flexibel' checkbox wordt uitgezet. - </notification> - - <notification - - name="FirstDebugMenus" - > -U heeft het menu Geavanceerd geactiveerd. -Dit menu bevat opties die handig zijn voor ontwikkelaars tijdens het debuggen van Second Life. -Om dit menu in en uit te schakelen drukt u binnen Windows Ctrl-Alt-D. Met een Mac drukt u Cmd-Opt-Shift-D. - </notification> - - <notification - - name="FirstSculptedPrim" - > -U bent een sculpted prim aan het bewerken. -Sculpted prims vereisen een speciaal textuur om hun vorm te bepalen. -U kunt voorbeelden van sculpt-texturen in de inventaris bibliotheek vinden. - </notification> - - <notification - - name="FirstMedia" - > -U bent begonnen met het afspelen van media. In het Voorkeurenvenster, onder Audio / Video, kan media worden ingesteld om automatisch te beginnen met afspelen. Let op dat dit een beveiligingsrisico kan zijn voor media sites die u niet vertrouwt. - </notification> - - <notification - - name="MaxListSelectMessage" - > -U mag slecht maximaal [MAX_SELECT] items van deze lijst kiezen. - </notification> - - <notification - - name="VoiceInviteP2P" - > -[NAME] nodigt u uit voor een Voice chat gesprek. -Klik Accepteren om deel te nemen aan dit gesprek of Afwijzen om de uitnodiging af te wijzen. Klik Negeren om deze persoon te negeren. - <form name="form"> - <button - - name="Accept" - text="Accepteren"/> - <button - - name="Decline" - text="Afwijzen"/> - <button - - name="Mute" - text="Negeren"/> - </form> - </notification> - - <notification - - name="AutoUnmuteByIM" - > -Er is een instant message naar [FIRST] [LAST] gestuurd, waardoor deze automatisch van de negeerlijst is gehaald. - </notification> - - <notification - - name="AutoUnmuteByMoney" - > -Er is geld gegeven aan [FIRST] [LAST], waardoor deze automatisch van de negeerlijst is gehaald. - </notification> - - <notification - - name="AutoUnmuteByInventory" - > -Er is inventaris aangeboden aan [FIRST] [LAST], waardoor deze automatisch van de negeerlijst is gehaald. - </notification> - - <notification - - name="VoiceInviteGroup" - > -[NAME] doet nu mee met een Voice chat gesprek binnen de groep [GROUP]. -Klik Accepteren om deel te nemen aan het gesprek of Afwijzen om de uitnodiging af te wijzen. Klik Negeren om deze persoon te negeren. - <form name="form"> - <button - - name="Accept" - text="Accepteren"/> - <button - - name="Decline" - text="Afwijzen"/> - <button - - name="Mute" - text="Negeren"/> - </form> - </notification> - - <notification - - name="VoiceInviteAdHoc" - > -[NAME] doet nu mee met een Voice chat gesprek binnen een conferentie chat. -Klik Accepteren om deel te nemen aan het gesprek of Afwijzen om de uitnodiging af te wijzen. Klik Negeren om deze persoon te negeren. - <form name="form"> - <button - - name="Accept" - text="Accepteren"/> - <button - - name="Decline" - text="Afwijzen"/> - <button - - name="Mute" - text="Negeren"/> - </form> - </notification> - - <notification - - name="InviteAdHoc" - > -[NAME] nodigt u uit voor een conferentie chat. -Klik Accepteren om deel te nemen aan de chat of Afwijzen om de uitnodiging af te wijzen. Klik Negeren om deze persoon te negeren. - <form name="form"> - <button - - name="Accept" - text="Accepteren"/> - <button - - name="Decline" - text="Afwijzen"/> - <button - - name="Mute" - text="Negeren"/> - </form> - </notification> - - <notification - - name="VoiceChannelFull" - > -Het voice gesprek waaraan u probeert deel te nemen, [VOICE_CHANNEL_NAME], heeft zijn maximale capaciteit bereikt. Probeert u het alstublieft later nog een keer. - </notification> - - <notification - - name="ProximalVoiceChannelFull" - > -Onze excuses. Dit gebied heeft zijn maximale capaciteit voor voice conversaties bereikt. Probeert u alstublieft voice te gebruiken in een ander gebied. - </notification> - - <notification - - name="VoiceChannelDisconnected" - > -U bent niet meer verbonden met [VOICE_CHANNEL_NAME]. U zult weer worden verbonden met spatiale voice chat. - </notification> - - <notification - - name="VoiceChannelDisconnectedP2P" - > -[VOICE_CHANNEL_NAME] heeft het gesprek beëindigd. U zult weer worden verbonden met spatiale voice chat. - </notification> - - <notification - - name="P2PCallDeclined" - > -[VOICE_CHANNEL_NAME] heeft uw oproep afgewezen. U zult weer worden verbonden met spatiale voice chat. - </notification> - - <notification - - name="P2PCallNoAnswer" - > -[VOICE_CHANNEL_NAME] is niet beschikbaar om uw oproep aan te nemen. U zult weer worden verbonden met spatiale voice chat. - </notification> - - <notification - - name="VoiceChannelJoinFailed" - > -Verbinden met [VOICE_CHANNEL_NAME] is mislukt, probeert u het later alstublieft nog een keer. U zult weer worden verbonden met spatiale voice chat. - </notification> - - <notification - - name="VoiceLoginRetry" - > -We zijn bezig om een voice kanaal voor u te maken. Dit kan tot een minuut duren. - </notification> - - <notification - - name="Cannot enter parcel: not a group member" - > -Kan het perceel niet betreden, u bent geen lid van de juiste groep. - </notification> - - <notification - - name="Cannot enter parcel: banned" - > -Kan het perceel niet betreden, u bent verbannen. - </notification> - - <notification - - name="Cannot enter parcel: not on access list" - > -Kan het perceel niet betreden, u staat niet op de toegangslijst. - </notification> - - <notification - - name="VoiceNotAllowed" - > -U heeft geen permissie om met voice chat te verbinden voor [VOICE_CHANNEL_NAME]. - </notification> - - <notification - - name="VoiceCallGenericError" - > -Er is een fout opgetreden tijdens het verbinden met voice chat voor [VOICE_CHANNEL_NAME]. Probeert u het later alstublieft opnieuw. - </notification> - - <notification - - name="ServerVersionChanged" - > -De regio die u bent binnengetreden wordt onder een andere simulatorversie uitgevoerd. Klik dit bericht voor meer details. - </notification> - - <notification - - name="UnableToOpenCommandURL" - > -De URL die u heeft geklikt kan niet binnen deze webbrowser worden geopend. - </notification> - - <global name="UnsupportedCPU"> -- Uw Processor snelheid (CPU) voldoet niet aan de minimale eisen. - </global> - - <global name="UnsupportedGLRequirements"> -U heeft mogelijk niet de vereiste hardware voor Second Life. Second Life verlangd een OpenGL grafische kaart die multi-texture ondersteund. Indien dat het geval is, overtuig u er dan van dat u de laatste stuurprogramma's voor uw grafische kaart, service packs en patches voor uw Operating systeem heeft. - -Indien u problemen blijft houden, bezoek dan: http://www.secondlife.com/support - </global> - - <global name="UnsupportedCPUAmount"> -796 - </global> - - <global name="UnsupportedRAMAmount"> -510 - </global> - - <global name="UnsupportedGPU"> -- Uw grafische kaart voldoet niet aan de minimale eisen. - </global> - - <global name="UnsupportedRAM"> -- Uw systeem geheugen voldoet niet aan de minimale eisen. - </global> - - <global name="PermYes"> -Ja - </global> - - <global name="PermNo"> -Nee - </global> -</notifications> - +<?xml version="1.0" encoding="utf-8"?> +<notifications> + <global name="skipnexttime"> + Toon mij dit niet meer. + </global> + <global name="alwayschoose"> + Kies altijd deze optie + </global> + <template name="okbutton"> + <form> + <button + name="OK" + text="$yestext"/> + </form> + </template> + + <template name="okignore"> + <form> + <button + name="OK" + text="$yestext"/> + <ignore text="$ignoretext"/> + </form> + </template> + + <template name="okcancelbuttons"> + <form> + <button + name="OK" + text="$yestext"/> + <button + name="Cancel" + text="$notext"/> + </form> + </template> + + <template name="okcancelignore"> + <form> + <button + name="OK" + text="$yestext"/> + <button + name="Cancel" + text="$notext"/> + <ignore text="$ignoretext"/> + </form> + </template> + + <template name="okhelpbuttons"> + <form> + <button + name="OK" + text="$yestext"/> + <button + name="Help" + text="$helptext"/> + </form> + </template> + + <template name="yesnocancelbuttons"> + <form> + <button + name="Yes" + text="$yestext"/> + <button + name="No" + text="$notext"/> + <button + name="Cancel" + text="$canceltext"/> + </form> + </template> + <notification functor="GenericAcknowledge" label="Onbekende waarschuwingsboodschap" name="MissingAlert"> + Uw versie van Second Life weet niet hoe het de waarschuwingsboodschap die zojuist ontvangen is moet weergeven. + +Foutdetails: De waarschuwing genaamd '[_NAME]' is niet gevonden in notifications.xml. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="FloaterNotFound"> + Reële waarde fout: Kon de volgende controllers niet vinden: + +[CONTROLS] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="TutorialNotFound"> + Er is momenteel geen handleiding beschikbaar. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="GenericAlert"> + [MESSAGE] + </notification> + <notification name="GenericAlertYesCancel"> + [MESSAGE] + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="Ja"/> + </notification> + <notification name="BadInstallation"> + Er is een fout opgetreden tijdens het bijwerken van Second Life. Download alstublieft de meest recente versie van secondlife.com + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + <notification name="LoginFailedNoNetwork"> + Netwerkfout: Kan geen verbinding opzetten. +'[DIAGNOSTIC]' +Controleer alstublieft uw netwerkverbinding. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + <notification name="MessageTemplateNotFound"> + Berichtsjabloon [PATH] niet gevonden. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + <notification name="WearableSave"> + Wijzigingen aan huidig kledingstuk/lichaamsdeel opslaan? + <usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Niet Opslaan" yestext="Opslaan"/> + </notification> + <notification name="CompileQueueSaveText"> + Er was een probleem met het uploaden van de tekst van een script vanwege de volgende reden: [REASON]. Probeer het alstublieft later nog eens. + </notification> + <notification name="CompileQueueSaveBytecode"> + Er was een probleem met het uploaden van het gecompileerde script vanwege de volgende reden: [REASON]. Probeer het alstublieft later nog eens. + </notification> + <notification name="WriteAnimationFail"> + Er was een probleem met het wegschrijven van animatie gegevens. Probeer het alstublieft later nog eens. + </notification> + <notification name="UploadAuctionSnapshotFail"> + Er was een probleem met het uploaden van de veiling foto vanwege de volgende reden: [REASON] + </notification> + <notification name="UnableToViewContentsMoreThanOne"> + Het is niet mogelijk om de inhoud van meer dan één item tegelijk te zien. +Kies alstublieft slechts één item en probeer het opnieuw. + </notification> + <notification name="SaveClothingBodyChanges"> + Wijzigingen aan kledingstuk/lichaamsdeel opslaan? + <usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Niet Opslaan" yestext="Alles Opslaan"/> + </notification> + <notification name="GrantModifyRights"> + Het geven van wijzigingsrechten aan een andere inwoner, maakt het voor hun mogelijk om elk willekeurig object te wijzigen, te verwijderen of om WILLEKEURIGE objecten die u in wereld heeft terug te nemen. Wees HEEL voorzichtig met het uitgeven van dit recht. +Wilt u wijzigingsrechten aan [FIRST_NAME] [LAST_NAME] geven? + <usetemplate name="okcancelbuttons" notext="Nee" yestext="Ja"/> + </notification> + <notification name="GrantModifyRightsMultiple"> + Het geven van wijzigingsrechten aan een andere inwoner, maakt het voor hun mogelijk elk WILLEKEURIG object te wijzigen die u in wereld heeft. Wees HEEL voorzichtig met het uitgeven van dit recht. +Wilt u wijzigingsrechten aan de geselecteerde inwoners geven? + <usetemplate name="okcancelbuttons" notext="Nee" yestext="Ja"/> + </notification> + <notification name="RevokeModifyRights"> + Wilt u de wijzigingsrechten voor [FIRST_NAME] [LAST_NAME] terugnemen? + <usetemplate name="okcancelbuttons" notext="Nee" yestext="Ja"/> + </notification> + <notification name="RevokeModifyRightsMultiple"> + Wilt u de wijzigingsrechten voor de geselecteerde inwoners terugnemen? + <usetemplate name="okcancelbuttons" notext="Nee" yestext="Ja"/> + </notification> + <notification name="UnableToCreateGroup"> + Kan geen groep aanmaken. +[MESSAGE] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="PanelGroupApply"> + [NEEDS_APPLY_MESSAGE] +[WANT_APPLY_MESSAGE] + <usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Wijzigingen Negeren" yestext="Wijzigingen Toepassen"/> + </notification> + <notification name="MustSpecifyGroupNoticeSubject"> + U moet een onderwerp opgeven om dit bericht te kunnen versturen. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="AddGroupOwnerWarning"> + U staat op het punt groepsleden de rol [ROLE_NAME] te geven. +Leden kunnen niet van die groep worden verwijderd. +De leden moeten zichzelf ontheffen uit deze rol. +Weet u zeker dat u door wilt gaan? + <usetemplate ignoretext="Wanneer u groepsleden toevoegt aan de eigenaren rol" name="okcancelignore" notext="Nee" yestext="Ja"/> + </notification> + <notification name="AssignDangerousActionWarning"> + U staat op het punt de Bekwaamheid '[ACTION_NAME]' aan de Rol '[ROLE_NAME]' toe te voegen. + + *WAARSCHUWING* + Elk lid in de Rol met deze Bekwaamheid kan zichzelf - en elk ander lid - Rollen geven die meer mogelijkheden hebben dan waar zij nu over beschikken, zichzelf daarmee verheffend tot bijna eigenaar mogelijkheden. Weet zeker waar u mee bezig bent alvorens deze Bekwaamheid toe te kennen. + +Deze Bekwaamheid toevoegen aan '[ROLE_NAME]'? + <usetemplate name="okcancelbuttons" notext="Nee" yestext="Ja"/> + </notification> + <notification name="AssignDangerousAbilityWarning"> + U staat op het punt de Bekwaamheid '[ACTION_NAME]' aan de Rol '[ROLE_NAME]' toe te voegen. + + *WAARSCHUWING* + Elk lid in de Rol met deze Bekwaamheid kan zichzelf - en elk ander lid - alle Bekwaamheden geven, zich daarmee verheffend tot bijna Eigenaar mogelijkheden. + +Deze Bekwaamheid toevoegen aan '[ROLE_NAME]'? + <usetemplate name="okcancelbuttons" notext="Nee" yestext="Ja"/> + </notification> + <notification name="ClickPublishHelpLand"> + Het selecteren van de "Publiceer in Zoeken" optie +Het aan vinken van deze optie zal: +- dit perceel weergeven in de zoek resultaten +- de publieke objecten van dit perceel weergeven +- dit perceel in web zoeken weergeven + </notification> + <notification name="ClickSoundHelpLand"> + Media en muziek kunnen alleen binnen het perceel ervaren worden. Geluid- en voice-opties kunnen worden beperkt tot het perceel of zullen worden gehoord door inwoners buiten het perceel, gebaseerd op hun inhoudscategorie. Ga naar de kennisbank om meer te leren over hoe deze opties ingesteld kunnen worden. + <url name="url"> + https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=5046 + </url> + <usetemplate + name="okcancelbuttons" + yestext="Ga naar kennisbank" + notext="Sluiten" /> + </notification> + <notification name="ClickSearchHelpAll"> + Zoekresultaten zijn georganiseerd op basis van het tabblad waar u zich in bevindt, uw inhoudscategorie, de gekozen categorie en andere factoren. Kijk alstublieft in de kennisbank voor meer details. + <url name="url"> + https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=4722 + </url> + <usetemplate + name="okcancelbuttons" + yestext="Ga naar kennisbank" + notext="Sluiten" /> + </notification> + <notification name="ClickPublishHelpLandDisabled"> + U kunt dit perceel niet zichtbaar maken in zoeken omdat het zich in een regio bevindt dat dit niet toelaat + </notification> + <notification name="ClickPublishHelpAvatar"> + Het selecteren van "Weergeven in Zoeken" zal weergeven: +- mijn profiel in de zoek resultaten +- een link naar mijn profiel in de publieke groep pagina's + </notification> + <notification name="ClickPartnerHelpAvatar"> + U kunt een andere Inwoner ten huwelijk vragen of een bestaand partner schap verbreken via de [SECOND_LIFE] website. + +Naar de Second Life website gaan voor meer informatie over partner schap? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="Ga naar Pagina"/> + </notification> + <notification name="ClickUploadHelpPermissions"> + Uw standaard permissies werken mogelijk niet in oudere regio's. + </notification> + <notification name="ClickWebProfileHelpAvatar"> + Als een Inwoner een web profiel URL heeft ingesteld: +* Klik op 'Laden' om de pagina in deze web tab te zien. +* Klik op Laden > 'In externe browser' om de pagina in uw standaard browser te zien +* Klik op Laden > 'Thuis pagina URL' om terug te keren naar het web profiel van deze Inwoner indien U verder genavigeerd bent. + +Indien u uw eigen profiel bekijkt, kunt U elke willekeurige URL opgeven als uw web profiel en op OK klikken om het in te stellen. +Andere Inwoners kunnen de door U opgegeven URL bezoeken indien zijn uw profiel bekijken. + </notification> + <notification name="JoinGroupCanAfford"> + Deelname aan deze groep kost L$[COST]. +Wilt u doorgaan? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="Deelnemen"/> + </notification> + <notification name="JoinGroupCannotAfford"> + Deelname aan deze groep kost L$[COST]. +U heeft niet genoeg L$ om deel te kunnen nemen aan deze groep. + </notification> + <notification name="LandBuyPass"> + Voor L$[COST] krijgt u toegang tot het land ('[PARCEL_NAME]') voor de duur van [TIME] uur. + +Een pas kopen? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="SalePriceRestriction"> + De verkoopprijs moet ingesteld staan op meer dan L$0 indien u aan iemand verkoopt. +Kies een individu indien u het voor L$0 verkoopt. + </notification> + <notification name="ConfirmLandSaleChange"> + De geselecteerde [LAND_SIZE] m² land is te koop gezet. +Uw verkoopprijs is L$[SALE_PRICE] en zal geautoriseerd worden voor verkoop door [NAME]. + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="ConfirmLandSaleToAnyoneChange"> + ATTENTIE: Het aanklikken van 'verkoop aan iedereen' zal uw land beschikbaar maken aan de gehele Second Life gemeenschap, zo ook diegenen niet in deze regio! + +De geselecteerde [LAND_SIZE] m² land is te koop gezet. +Uw verkoopprijs is L$[SALE_PRICE] en zal geautoriseerd worden voor verkoop door [NAME]. + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="ReturnObjectsDeededToGroup"> + Weet u zeker dat u alle met de groep '[NAME]' gedeelde objecten van dit perceel wilt retourneren naar de inventaris van hun vorige eigenaren? + +*WAARSCHUWING* Dit zal alle niet-overdraagbare aan de groep toegekende objecten verwijderen! + +Objecten: [N] + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="ReturnObjectsOwnedByUser"> + Weet u zeker dat u alle objecten van Inwoner '[NAME]' op dit perceel wilt retourneren naar hun inventaris? + +Objecten: [N] + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="ReturnObjectsOwnedBySelf"> + Weet u zeker dat u al uw eigen objecten op dit perceel wilt retourneren naar uw inventaris? + +Objecten: [N] + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="ReturnObjectsNotOwnedBySelf"> + Weet u zeker dat u alle objecten op dit perceel die geen eigendom van u zijn wilt retourneren naar de inventaris van hun eigenaren? +Overdraagbare objecten toegekend aan de groep zullen worden geretourneerd naar de oorspronkelijke eigenaren. + +*WAARSCHUWING* Dit zal alle niet-overdraagbare aan de groep toegekende objecten verwijderen! + +Objecten: [N] + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="ReturnObjectsNotOwnedByUser"> + Weet u zeker dat u alle objecten op dit perceel die GEEN eigendom zijn van [NAME] wilt retourneren naar de inventaris van hun eigenaar? Overdraagbare objecten toegekend aan de groep zullen worden geretourneerd naar de oorspronkelijke eigenaren. + +*WAARSCHUWING* Dit zal alle niet-overdraagbare aan de groep toegekende objecten verwijderen! + +Objecten: [N] + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="ReturnAllTopObjects"> + Weet u zeker dat u alle weergegeven objecten wilt retourneren naar de inventaris van hun eigenaar? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="DisableAllTopObjects"> + Weet u zeker dat u alle objecten in deze regio uit wilt schakelen? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="ReturnObjectsNotOwnedByGroup"> + Alle objecten op dit perceel die NIET gedeeld worden met de groep [NAME] retourneren naar hun eigenaren? + +Objecten: [N] + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="UnableToDisableOutsideScripts"> + Kan scripts niet uitschakelen. +Voor de hele regio is letsel ingeschakeld. +Scripts moeten toegestaan worden om wapens te kunnen laten werken. + </notification> + <notification name="MustBeInParcel"> + U moet binnen een perceel staan om het Landings Punt in te stellen. + </notification> + <notification name="PromptRecipientEmail"> + Geef alstublieft een geldig email adres op van de ontvanger(s). + </notification> + <notification name="PromptSelfEmail"> + Voer uw email adres in. + </notification> + <notification name="PromptMissingSubjMsg"> + Foto e-mailen met het standaard onderwerp of bericht? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="ErrorProcessingSnapshot"> + Fout opgetreden met het verwerken van de foto gegevens + </notification> + <notification name="ErrorEncodingSnapshot"> + Fout opgetreden met het coderen van de foto. + </notification> + <notification name="ErrorUploadingPostcard"> + Er is een probleem met het verzenden van de foto vanwege de volgende reden: [REASON] + </notification> + <notification name="ErrorUploadingReportScreenshot"> + Er is een probleem met het uploaden van de rapport foto vanwege de volgende reden: [REASON] + </notification> + <notification name="MustAgreeToLogIn"> + U moet akkoord gaan met de Voorwaarden van Dienstverlening (Terms of Service) om in te kunnen loggen in [SECOND_LIFE]. + </notification> + <notification name="CouldNotPutOnOutfit"> + Kon de outfit niet aan doen. +De outfit folder bevat geen kleding, lichaamsdelen of externe bevestigingen. + </notification> + <notification name="CannotWearTrash"> + U kunt geen kleding of lichaamsdelen aan trekken die zich in de vuilnisbak bevinden. + </notification> + <notification name="CannotWearInfoNotComplete"> + U kunt dat item niet aantrekken omdat het nog niet geladen is. Probeer het over een minuut opnieuw. + </notification> + <notification name="MustHaveAccountToLogIn"> + Oeps! Iets is nog leeg. +U moet zowel de voornaam als de achternaam van uw avatar opgeven. + +U heeft een account nodig om [SECOND_LIFE] binnen te gaan. Wilt u er nu een maken? + <usetemplate name="okcancelbuttons" notext="Probeer het opnieuw" yestext="Maak een nieuw account"/> + </notification> + <notification name="AddClassified"> + Geclassificeerde advertenties verschijnen een week lang in de 'Advertentie' sectie van de Zoek gids en op www.secondlife.com. +Vul uw advertentie in en klik op 'Publiceer...' om het toe te voegen aan de gids. +Er zal u om een prijs worden gevraagd als u deze gaat publiceren. +Indien u meer betaald zal uw advertentie hoger in de lijst verschijnen en ook hoger als men op sleutelwoorden zoekt. + <usetemplate ignoretext="Indien u een advertentie toevoegt" name="okcancelignore" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="DeleteClassified"> + Advertentie '[NAME]' verwijderen? +Betaalde advertentiekosten zullen niet worden terug gestort. + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="ClassifiedSave"> + Wijzigingen in advertentie [NAME] opslaan? + <usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Niet Opslaan" yestext="Opslaan"/> + </notification> + <notification name="DeleteAvatarPick"> + Favoriet [PICK] verwijderen? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="PromptGoToEventsPage"> + Naar de [SECOND_LIFE] evenementen web pagina gaan? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="SelectProposalToView"> + Kies alstublieft een voorstel om in te zien. + </notification> + <notification name="SelectHistoryItemToView"> + Kies alstublieft een geschiedenis item om in te zien. + </notification> + <notification name="ResetShowNextTimeDialogs"> + Wilt u alle Pop-Up's opnieuw inschakelen die u eerder aanmerkte als 'Laat mij niet opnieuw zien'? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="SkipShowNextTimeDialogs"> + Wilt u alle Pop-Up's uitschakelen die overgeslagen kunnen worden? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="CacheWillClear"> + De Cache zal geleegd worden als u [SECOND_LIFE] opnieuw start. + </notification> + <notification name="CacheWillBeMoved"> + De Cache zal verplaatst worden als u [SECOND_LIFE] opnieuw start. +Opmerking: Dit zal de Cache legen. + </notification> + <notification name="ChangeConnectionPort"> + Poort instelling zullen effect hebben nadat u [SECOND_LIFE] opnieuw start. + </notification> + <notification name="ChangeSkin"> + De nieuwe skin zal verschijnen nadat u [SECOND_LIFE] opnieuw start. + </notification> + <notification name="GoToAuctionPage"> + Ga naar de [SECOND_LIFE] web pagina om de veiling details te zien of een bod uit te brengen. + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="SaveChanges"> + Wijzigingen Opslaan? + <usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Niet Opslaan" yestext="Opslaan"/> + </notification> + <notification name="GestureSaveFailedTooManySteps"> + Gebaar opslaan is niet gelukt. +Dit gebaar heeft te veel stappen. +Probeer enkele stappen te verwijderen en opnieuw op te slaan. + </notification> + <notification name="GestureSaveFailedTryAgain"> + Gebaar opslaan is niet gelukt. Probeer het over enkele ogenblikken opnieuw. + </notification> + <notification name="GestureSaveFailedObjectNotFound"> + Kon het gebaar niet opslaan omdat het object of bijbehorende object niet in de inventaris kon worden gevonden. + +Het object kan buiten bereik of mogelijk verwijderd zijn. + </notification> + <notification name="GestureSaveFailedReason"> + Er was een probleem met het opslaan van het gebaar vanwege de volgende reden: [REASON]. Probeert u het gebaar later nogmaals op te slaan. + </notification> + <notification name="SaveNotecardFailObjectNotFound"> + Kon de notitiekaart niet opslaan omdat het object of bijbehorende object niet in de inventaris kon worden gevonden. + +Het object kan buiten bereik of mogelijk verwijderd zijn. + </notification> + <notification name="SaveNotecardFailReason"> + Er was een probleem met het opslaan van de notitiekaart vanwege de volgende reden: [REASON]. Probeert u de notitiekaart later nogmaals op te slaan. + </notification> + <notification name="ScriptCannotUndo"> + Kon niet alle wijzigingen ongedaan maken in uw versie van het script. +Wilt u de laatst op de server opgeslagen versie laden? +(**Waarschuwing** Deze operatie kan niet ongedaan gemaakt worden.) + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="SaveScriptFailReason"> + Er was een probleem met het opslaan van een script vanwege de volgende reden: [REASON]. Probeert u het script later nogmaals op te slaan. + </notification> + <notification name="SaveScriptFailObjectNotFound"> + Kon het script niet opslaan omdat het object waar het in zit niet gevonden kon worden. +Het object kan buiten bereik of mogelijk verwijderd zijn. + </notification> + <notification name="SaveBytecodeFailReason"> + Er was een probleem met het opslaan van een gecompileerd script vanwege de volgende reden: [REASON]. Probeert u het script later nogmaals op te slaan. + </notification> + <notification name="CouldNotStartStopScript"> + Kon het script niet starten of stoppen omdat het object wat het in zit niet gevonden kon worden. +Het object kan buiten bereik of mogelijk verwijderd zijn. + </notification> + <notification name="CannotDownloadFile"> + Kon het bestand niet downloaden + </notification> + <notification name="CannotWriteFile"> + Kan niet naar bestand [[FILE]] schrijven + </notification> + <notification name="UnsupportedHardware"> + Waarschuwing: Uw systeem voldoet niet aan de Second Life minimum systeem eisen. Indien u Second Life gebruikt, ervaart u mogelijk slechte prestaties. Helaas kunnen we geen technische ondersteuning geven voor niet ondersteunde configuraties. + +MINSPECS +Wilt u [_URL] bezoeken voor meer informatie? + <url name="url" option="0"> + http://secondlife.com/support/sysreqs.php?lang=nl + </url> + <usetemplate ignoretext="Indien niet ondersteunde hardware gedetecteerd" name="okcancelignore" notext="Nee" yestext="Ja"/> + </notification> + <notification name="UnknownGPU"> + Uw systeem heeft een grafische kaart die bij ons nog niet bekend is op dit moment. + +Dit is vaak het geval met nieuwe hardware waarbij wij nog niet de kans gehad hebben om het te testen. Second Life zal mogelijk naar behoren functioneren, doch het kan zijn dat u uw grafische instellingen naar geschiktere waarden zult moeten instellen. +(Bewerken menu > Voorkeuren > Grafisch). + <form name="form"> + <ignore name="ignore" text="Indien een onbekende grafische kaart gedetecteerd"/> + </form> + </notification> + <notification name="DisplaySettingsNoShaders"> + [SECOND_LIFE] is gestopt bij het initialiseren van de grafische stuurprogramma's. +Grafische kwaliteit zal op zijn laagst worden ingesteld om veel voorkomende fouten met stuurprogramma's te vermijden. +Dit zal sommige grafische opties uitschakelen. +Wij adviseren u de stuurprogramma's van uw grafische kaart bij te werken. +Grafische kwaliteit kan verhoogd worden in Voorkeuren > Grafisch. + </notification> + <notification name="RegionNoTerraforming"> + De regio [REGION] staat geen land aanpassingen toe. + </notification> + <notification name="CannotCopyWarning"> + U heeft geen permissie dit item te kopiëren en zult het kwijtraken als u het weg geeft. Wilt u dit item echt aanbieden? + <usetemplate name="okcancelbuttons" notext="Nee" yestext="Ja"/> + </notification> + <notification name="CannotGiveItem"> + Kan inventaris item niet geven. + </notification> + <notification name="TransactionCancelled"> + Transactie afgebroken. + </notification> + <notification name="TooManyItems"> + Kan niet meer dan 42 items in één enkele inventaris overdracht geven. + </notification> + <notification name="NoItems"> + U heeft geen permissie de geselecteerde items over te dragen. + </notification> + <notification name="CannotCopyCountItems"> + U heeft geen permissie om [COUNT] geselecteerde items te kopiëren. U zult deze items uit uw inventaris kwijtraken. +Weet u zeker dat u deze items wilt geven? + <usetemplate name="okcancelbuttons" notext="Nee" yestext="Ja"/> + </notification> + <notification name="CannotGiveCategory"> + U heeft geen permissie de geselecteerde map over te dragen. + </notification> + <notification name="FreezeAvatar"> + Avatar bevriezen? +Hij of zij zal zich tijdelijk niet kunnen bewegen, praten of interactie kunnen hebben met de wereld. + <usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Ontdooien" yestext="Bevriezen"/> + </notification> + <notification name="FreezeAvatarFullname"> + Bevries [AVATAR_NAME]? +Hij of zij zal zich tijdelijk niet kunnen bewegen, praten of interactie kunnen hebben met de wereld. + <usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Ontdooien" yestext="Bevriezen"/> + </notification> + <notification name="EjectAvatarFullname"> + [AVATAR_NAME] van uw land verwijderen? + <usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Verwijderen en Bannen" yestext="Verwijderen"/> + </notification> + <notification name="EjectAvatarNoBan"> + Deze avatar van u land verwijderen? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="Verwijder"/> + </notification> + <notification name="EjectAvatarFullnameNoBan"> + [AVATAR_NAME] van uw land verwijderen? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="Verwijder"/> + </notification> + <notification name="AcquireErrorTooManyObjects"> + VERWERVINGS FOUT: Te veel objecten geselecteerd + </notification> + <notification name="AcquireErrorObjectSpan"> + VERWERVINGS FOUT: Objecten beslaan meer dan één regio. +Verplaats alstublieft alle objecten die u wilt verwerven naar dezelfde regio. + </notification> + <notification name="PromptGoToCurrencyPage"> + [EXTRA] + +Naar [URL] gaan voor informatie over de aankoop valuta? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="UnableToLinkObjects"> + Kon deze [COUNT] objecten niet linken. +U kunt maximaal [MAX] objecten linken. + </notification> + <notification name="CannotLinkIncompleteSet"> + U kunt alleen complete sets van objecten linken en moet meer dan één object selecteren. + </notification> + <notification name="CannotLinkModify"> + Kon niet linken omdat u geen wijziging permissies heeft op alle objecten. + +Wees er van overtuigd dat er geen enkele geblokkeerd is en dat ze allen uw eigendom zijn. + </notification> + <notification name="CannotLinkDifferentOwners"> + Kon niet linken omdat niet alle objecten dezelfde eigenaar hebben. + +Wees er van overtuigd dat alle objecten uw eigendom zijn. + </notification> + <notification name="NoFileExtension"> + Geen bestandsextensie voor het bestand: '[FILE]' + +Zorg dat het bestand de juiste bestandsextensie heeft. + </notification> + <notification name="InvalidFileExtension"> + Ongeldige bestandsextensie [EXTENSION] +Verwacht [VALIDS] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="CannotUploadSoundFile"> + Kon het geüploade geluidsbestand niet openen om te lezen: +[FILE] + </notification> + <notification name="SoundFileNotRIFF"> + Het bestand lijkt geen RIFF WAVE bestand te zijn: +[FILE] + </notification> + <notification name="SoundFileNotPCM"> + Het bestand lijkt geen PCM WAVE audio bestand te zijn: +[FILE] + </notification> + <notification name="SoundFileInvalidChannelCount"> + Het bestand heeft een ongeldig aantal kanalen (moet mono of stereo zijn): +[FILE] + </notification> + <notification name="SoundFileInvalidSampleRate"> + Het bestand lijkt geen ondersteund sample rate te hebben (moet 44.1k zijn): +[FILE] + </notification> + <notification name="SoundFileInvalidWordSize"> + Het bestand lijkt geen ondersteund word size te hebben (moet 8 of 16 bit zijn): +[FILE] + </notification> + <notification name="SoundFileInvalidHeader"> + Kon geen 'data' chunk in WAV header vinden: +[FILE] + </notification> + <notification name="SoundFileInvalidTooLong"> + Audio bestand is te lang (10 seconden maximum): +[FILE] + </notification> + <notification name="ProblemWithFile"> + Probleem met bestand [FILE]: + +[ERROR] + </notification> + <notification name="CannotOpenTemporarySoundFile"> + Kon geen tijdelijk gecomprimeerd geluidsbestand openen om naar toe te schrijven: [FILE] + </notification> + <notification name="UnknownVorbisEncodeFailure"> + Onbekende Vorbis codeer fout in: [FILE] + </notification> + <notification name="CannotEncodeFile"> + Kan bestand niet coderen: [FILE] + </notification> + <notification name="CorruptResourceFile"> + Beschadigd bron bestand: [FILE] + </notification> + <notification name="UnknownResourceFileVersion"> + Onbekende Linden bronbestandsversie in bestand: [FILE] + </notification> + <notification name="UnableToCreateOutputFile"> + Niet mogelijk om uitvoerbestand te maken: [FILE] + </notification> + <notification name="DoNotSupportBulkAnimationUpload"> + Wij ondersteunen momenteel geen bulk upload van animatie bestanden. + </notification> + <notification name="CannotUploadReason"> + Niet mogelijk om bestand [FILE] te uploaden vanwege de volgende reden: [REASON] +Probeer het later opnieuw. + </notification> + <notification name="CannotCreateLandmarkNotOwner"> + U kunt hier geen land markering maken omdat de eigenaar van het land dit niet toestaat. + </notification> + <notification name="CannotRecompileSelectObjectsNoScripts"> + Niet mogelijk om te 'her compileren'. +Selecteer een object met een script. + </notification> + <notification name="CannotRecompileSelectObjectsNoPermission"> + Niet mogelijk om te 'hercompileren'. + +Selecteer objecten met scripts waarvan u permissie heeft deze aan te passen. + </notification> + <notification name="CannotResetSelectObjectsNoScripts"> + Kan geen 'Opnieuw instellen' uitvoeren. + +Selecteer objecten met scripts. + </notification> + <notification name="CannotResetSelectObjectsNoPermission"> + Kan geen 'Opnieuw instellen' uitvoeren. + +Selecte objecten met scripts waarvan u permissie heeft deze aan te passen. + </notification> + <notification name="CannotSetRunningSelectObjectsNoScripts"> + Kan geen enkele scripts instellen op 'Uitvoeren'. + +Selecteer objecten met scripts. + </notification> + <notification name="CannotSetRunningNotSelectObjectsNoScripts"> + Kan geen enkele scripts instellen op 'Niet uitvoeren'. + +Selecteer objecten met scripts. + </notification> + <notification name="NoFrontmostFloater"> + Geen voorgaande floating waarde om op te slaan. + </notification> + <notification name="SeachFilteredOnShortWords"> + Uw zoek opdracht was aangepast en de woorden die te kort waren zijn verwijderd. + +Gezocht naar: [FINALQUERY] + </notification> + <notification name="SeachFilteredOnShortWordsEmpty"> + Uw zoek termen waren te kort en er is geen zoekopdracht uitgevoerd. + </notification> + <notification name="CouldNotTeleportReason"> + Kon niet Teleporteren. +[REASON] + </notification> + + <notification name="invalid_tport"> +Er is een probleem opgetreden bij het verwerken van uw verzoek voor een teleport. U dient wellicht opnieuw in te loggen voor uw kunt teleporteren. Wanneer u deze boodschap blijft ontvangen, controleert u dan alstublieft de Tech Support FAQ op: +www.secondlife.com/support + </notification> + <notification name="invalid_region_handoff"> +Er is een probleem opgetreden bij het oversteken naar een andere regio. U dient wellicht opnieuw in te loggen voor uw kunt oversteken naar andere regio's. Wanneer u deze boodschap blijft ontvangen, controleert u dan alstublieft de Tech Support FAQ op: +www.secondlife.com/support + </notification> + <notification name="blocked_tport"> +Sorry, teleport is momenteel geblokkeerd. Probeer het zo meteen opnieuw. Indien u nog steeds niet kunt teleporteren, log dan alstublieft uit en weer in om het probleem te verhelpen. + </notification> + <notification name="nolandmark_tport"> +Sorry, het systeem was niet in staat de bestemming van de landmarkering te vinden. + </notification> + <notification name="timeout_tport"> +Sorry, het systeem was niet in staat om de teleport verbinding af te ronden. Probeer het zo meteen nog een keer. + </notification> + <notification name="noaccess_tport"> +Sorry, u heeft geen toegang tot die teleportbestemming. + </notification> + <notification name="missing_attach_tport"> +Uw bevestigingen zijn nog niet gearriveerd. Probeer nog een aantal seconden te wachten of log uit en weer in voor u probeert te teleporteren. + </notification> + <notification name="too_many_uploads_tport"> +De assetwachtrij in deze regio is momenteel volgelopen, dus uw teleportverzoek zal niet tijdig afgerond kunnen worden. Probeer het alstublieft opnieuw over een aantal minuten of ga naar een minder druk gebied. + </notification> + <notification name="expired_tport"> +Sorry, het systeem was niet in staat uw teleportverzoek tijdig af te ronden. Probeer het alstublieft opnieuw over een aantal minuten. + </notification> + <notification name="expired_region_handoff"> +Sorry, het systeem was niet in staat om het oversteken naar een andere regio tijdig af te ronden. Probeer het alstublieft opnieuw over een aantal minuten. + </notification> + <notification name="no_host"> +Kan teleportbestemming niet vinden. De bestemming is mogelijk tijdelijk niet beschikbaar of bestaat niet meer. Probeer het alstublieft opnieuw over een aantal minuten. + </notification> + <notification name="no_inventory_host"> +Het inventarissysteem is momenteel niet beschikbaar. + </notification> + + <notification name="CannotSetLandOwnerNothingSelected"> + Kan landeigenaar niet instellen: +Geen perceel geselecteerd. + </notification> + <notification name="CannotSetLandOwnerMultipleRegions"> + Kon geen land eigendom forceren omdat de selectie meerder regio's omvat. +Selecteer alstublieft een kleiner gebied en probeer het opnieuw. + </notification> + <notification name="ForceOwnerAuctionWarning"> + Dit perceel staat voor veiling aangemerkt. Eigendom forceren zal de veiling afbreking en kan potentieel een aantal inwoners niet erg blij maken als het bieden al is begonnen. Eigendom forceren? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="CannotContentifyNothingSelected"> + Unable to contentify: +Geen perceel geselecteerd. + </notification> + <notification name="CannotContentifyNoRegion"> + Unable to contentify: +Geen regio geselecteerd. + </notification> + <notification name="CannotReleaseLandNothingSelected"> + Kan land niet afstaan: +Geen perceel geselecteerd. + </notification> + <notification name="CannotReleaseLandNoRegion"> + Kan land niet afstaan: +kan de regio niet vinden. + </notification> + <notification name="CannotBuyLandNothingSelected"> + Kan land niet kopen: +Geen perceel geselecteerd. + </notification> + <notification name="CannotBuyLandNoRegion"> + Kan land niet kopen: +Kan de regio niet vinden waar dit land zich bevind. + </notification> + <notification name="CannotCloseFloaterBuyLand"> + U kunt het Koop Land venster niet sluiten totdat Second Life de prijs van de transactie geschat heeft. + </notification> + <notification name="CannotDeedLandNothingSelected"> + Kan land niet toekennen: +Geen perceel geselecteerd. + </notification> + <notification name="CannotDeedLandNoGroup"> + Kan land niet toekennen: +Geen groep geselecteerd. + </notification> + <notification name="CannotDeedLandNoRegion"> + Kan land niet toekennen: +Kan de regio niet vinden waar dit land zich bevind. +Gebruik alstublieft Gereedschappen -> Report Bug om het te rapporteren. + </notification> + <notification name="CannotDeedLandMultipleSelected"> + Kan land niet toekennen: +Meerder percelen geselecteerd. + +Probeer één enkel perceel te selecteren. + </notification> + <notification name="ParcelCanPlayMedia"> + Deze locatie van streaming media afspelen. + +Streaming media vereisen een snelle internet verbinding. + +Streaming media afspelen wanneer beschikbaar? +(U kunt deze optie later wijzigen onder Preferenties > Audio & Video.) + <usetemplate name="okcancelbuttons" notext="Uitschakelen" yestext="Media Afspelen"/> + </notification> + <notification name="CannotDeedLandWaitingForServer"> + Kan land niet toekennen: +Wacht op de server om eigendom te rapporteren. + +Probeer het alstublieft opnieuw. + </notification> + <notification name="CannotDeedLandNoTransfer"> + Kan land niet toekennen: +De regio [REGION] staat geen overdracht van land toe. + </notification> + <notification name="CannotReleaseLandWatingForServer"> + Kan land niet afstaan: +Wacht op server om de perceel informatie bij te werken. + +Probeer het over enkele ogenblikken opnieuw. + </notification> + <notification name="CannotReleaseLandSelected"> + Kan land niet afstaan: +Niet alle geselecteerde percelen zijn uw eigendom. + +Kies alstublieft één perceel. + </notification> + <notification name="CannotReleaseLandDontOwn"> + Kan land niet afstaan: +U heeft geen permissie dit perceel vrij te geven. +Percelen in uw eigendom verschijnen in groen. + </notification> + <notification name="CannotReleaseLandRegionNotFound"> + Kan land niet afstaan: +Kan de regio niet vinden waar dit land zich bevind. + +Gebruik alstublieft Gereedschappen > Report Bug om het te rapporteren. + </notification> + <notification name="CannotReleaseLandNoTransfer"> + Kan land niet afstaan: +De regio [REGION] staat geen overdracht van land toe. + </notification> + <notification name="CannotReleaseLandPartialSelection"> + Kan land niet afstaan: +U moet het gehele perceel selecteren om het vrij te kunnen geven. + +Selecteer het gehele perceel of deel het eerst op. + </notification> + <notification name="ReleaseLandWarning"> + U staat op het punt om [AREA] m² land af te staan. +Met het afstaan van dit perceel zal het uit uw land houderschapsoverzicht verdwijnen, maar zal u geen L$ toekennen. + +Dit land afstaan? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="CannotDivideLandNothingSelected"> + Kan land niet opdelen: + +Geen percelen geselecteerd. + </notification> + <notification name="CannotDivideLandPartialSelection"> + Kan land niet opdelen: + +U heeft het gehele perceel geselecteerd. +Probeer een deel van het perceel te selecteren. + </notification> + <notification name="LandDivideWarning"> + Opdelen zal het perceel in twee delen verdelen en elk perceel kan zijn eigen instellingen hebben. Sommige instellingen zullen naar de standaard waarden terugkeren als de operatie voltooid is. + +Land opdelen? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="CannotDivideLandNoRegion"> + Kan het land niet opdelen: +Kan de regio niet vinden waar dit land zich bevind. + +Gebruik alstublieft Gereedschappen > Report Bug om het te rapporteren. + </notification> + <notification name="CannotJoinLandNoRegion"> + Kan land niet verbinden: +Kan de regio niet vinden waar dit land zich bevind. + +Gebruik alstublieft Gereedschappen > Report Bug om het te rapporteren. + </notification> + <notification name="CannotJoinLandNothingSelected"> + Kan land niet verbinden: +Geen perceel geselecteerd. + </notification> + <notification name="CannotJoinLandEntireParcelSelected"> + Kan land niet verbinden: +U heeft slechts één perceel geselecteerd. + +Selecteer land over beide percelen. + </notification> + <notification name="CannotJoinLandSelection"> + Kan land niet verbinden: +U moet meer dan één perceel selecteren. + +Selecteer land over beide percelen. + </notification> + <notification name="JoinLandWarning"> + Het verbinding van dit land zal één groot perceel opleveren uit alle percelen die de rechthoek doorkruisen. +U zult de naam en opties van het nieuwe perceel opnieuw in moeten stellen. + +Land verbinden? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="ShowOwnersHelp"> + Toon eigenaren: +Kleur percelen om het eigenaarstype te tonen. + +Groen = Uw land +Aqua = Land van uw groep +Rood = Eigendom van anderen +Geel = Te koop +Paars = Ter veiling +Grijs = Openbaar + </notification> + <notification name="ConfirmNotecardSave"> + Deze notitiekaart zal moet worden opgeslagen voordat het item kan worden gekopieerd of bekeken. Notitiekaart opslaan? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="ConfirmItemCopy"> + Dit item naar uw inventaris kopiëren? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="Kopiëren"/> + </notification> + <notification name="ResolutionSwitchFail"> + Mislukt om resolutie te verwisselen van [RESX] naar [RESY] + </notification> + <notification name="ErrorUndefinedGrasses"> + Fout: Onbekend gras: [SPECIES] + </notification> + <notification name="ErrorUndefinedTrees"> + Fout: Onbekende bomen: [SPECIES] + </notification> + <notification name="CannotSaveWearableOutOfSpace"> + Kon '[NAME]' niet opslaan voor draagbaar item. U zult wat ruimte moeten maken op uw computer en het draagbare item opnieuw op moeten slaan. + </notification> + <notification name="CannotSaveToAssetStore"> + Kon [NAME] niet opslaan in centrale (asset) opslag. +Meestal is dit een tijdelijk probleem. +Wijzig en sla het draagbaar item over een paar minuten opnieuw op. + +Indien dit probleem aanhoudt, klik dan alstublieft op 'Gereedschap > Rapporteer Bug' in het menu en voeg informatie toe over uw netwerk instellingen. + </notification> + <notification name="YouHaveBeenLoggedOut"> + U bent uitgelogd uit [SECOND_LIFE]: +[MESSAGE] +U kunt uw bestaande IM en chat bekijken door te klikken op 'Toon IM & Chat'. Anders, klik op Afsluiten om [SECOND_LIFE] direct te verlaten. + <usetemplate name="okcancelbuttons" notext="Afsluiten" yestext="Toon IM & Chat"/> + </notification> + <notification name="OnlyOfficerCanBuyLand"> + Kan land niet voor de groep kopen: +U heeft geen permissie land te kopen voor de actieve groep. + </notification> + <notification label="Vriend Toevoegen" name="AddFriend"> + Vrienden kunnen elkaar permissie geven om elkaar te volgen op de Kaart en om Online status updates te verkrijgen. + +Vriendschap aanbieden aan [NAME]? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification label="Vriend Toevoegen" name="AddFriendWithMessage"> + Vrienden kunnen elkaar permissie geven om elkaar te volgen op de Kaart en om Online status updates te verkrijgen. + +Vriendschap aanbieden aan [NAME]? + <form name="form"> + <input name="message" type="text"> + Wilt U mijn vriend zijn? + </input> + <button name="Offer" text="OK"/> + <button name="Cancel" text="Annuleren"/> + </form> + </notification> + <notification name="RemoveFromFriends"> + Wilt u [FIRST_NAME] [LAST_NAME] van uw Vriend lijst verwijderen? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="RemoveMultipleFromFriends"> + Wilt u meerder vrienden van uw Vrienden lijst verwijderen? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="GodDeleteAllScriptedPublicObjectsByUser"> + Weet u zeker dat u alle gescripte objecten wilt verwijderen eigendom van +** [AVATAR_NAME] ** +op allen hun land in deze sim? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="GodDeleteAllScriptedObjectsByUser"> + Weet u zeker dat u ALLE gescripte objecten wilt VERWIJDEREN eigendom van +** [AVATAR_NAME] ** +op AL het land in deze sim? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="GodDeleteAllObjectsByUser"> + Weet u zeker, dat u ALLE objecten (gescript of niet) wilt VERWIJDEREN eigendom van +** [AVATAR_NAME] ** +op AL het LAND in deze sim? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="BlankClassifiedName"> + U moet een naam opgeven voor uw advertentie. + </notification> + <notification name="MinClassifiedPrice"> + De prijs voor weergave moet minimaal L$[MIN_PRICE] zijn. + +Voor alstublieft een hoger bedrag in. + </notification> + <notification name="ConfirmObjectDeleteLock"> + Ten minste één van de geselecteerde items is geblokkeerd. + +Weet u zeker dat u deze items wilt verwijderen? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="ConfirmObjectDeleteNoCopy"> + Ten minste één van de geselecteerde items is niet kopieerbaar. + +Weet u zeker dat u deze items wilt verwijderen? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="ConfirmObjectDeleteNoOwn"> + Tenminste één van de geselecteerde items is niet uw eigendom. + +Weet u zeker dat u deze items wilt verwijderen? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="ConfirmObjectDeleteLockNoCopy"> + Ten minste één item is geblokkeerd. +Ten minste één item is niet kopieerbaar. + +Weet u zeker dat u deze items wilt verwijderen? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="ConfirmObjectDeleteLockNoOwn"> + Ten minste één item is geblokkeerd. +Tenminste één object is niet uw eigendom. + +Weet u zeker dat u deze items wilt verwijderen? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="ConfirmObjectDeleteNoCopyNoOwn"> + Ten minste één object is niet kopieerbaar. +Tenminste één object is niet uw eigendom. + +Weet u zeker dat u deze items wilt verwijderen? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="ConfirmObjectDeleteLockNoCopyNoOwn"> + Ten minste één item is geblokkeerd. +Ten minste één item is niet kopieerbaar. +Tenminste één object is niet uw eigendom. + +Weet u zeker dat u deze items wilt verwijderen? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="ConfirmObjectTakeLock"> + Ten minste één object is geblokkeerd. + +Weet u zeker dat u deze items terug wilt nemen? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="ConfirmObjectTakeNoOwn"> + Niet alle objecten die u terug neemt zijn uw eigendom. +Indien u verder gaat, worden de permissies van de volgende eigenaar er op toegepast en beperkt het u mogelijk het aan te passen of te kopiëren. + +Weet u zeker dat u deze items terug wilt nemen? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="ConfirmObjectTakeLockNoOwn"> + Ten minste één object is geblokkeerd. +Niet alle objecten die u terug neemt zijn uw eigendom. +Indien u verder gaat, worden de permissies van de volgende eigenaar er op toegepast en beperkt het u mogelijk het aan te passen of te kopiëren. +Echter, U kunt de huidige selectie wel terugnemen. + +Weet u zeker dat u deze items terug wilt nemen? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="CantBuyLandAcrossMultipleRegions"> + Kan het land niet kopen omdat het meerder regio's omvat. + +Kiest u alstublieft een kleiner gebied en probeer het opnieuw. + </notification> + <notification name="DeedLandToGroup"> + Voor het overdragen van dit perceel zal de groep voldoen land gebruikscredit moeten hebben en onderhouden. +Het aankoop bedrag zal niet naar de eigenaar worden terug gestort. +Indien een overgedragen perceel wordt verkocht, zal het verkoop bedrag gelijkmatig over de groepsleden worden verdeeld. + +Deze [AREA] m² land overdragen aan de groep '[GROUP_NAME]'? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="DeedLandToGroupWithContribution"> + Voor het overdragen van dit perceel zal de groep voldoen land gebruikscredit moeten hebben en onderhouden. +De overdracht zal een simultane land contributie verlangen van de groep van '[FIRST_NAME] [LAST_NAME]'. +Het aankoop bedrag zal niet naar de eigenaar worden terug gestort. +Indien een overgedragen perceel wordt verkocht, zal het verkoop bedrag gelijkmatig over de groepsleden worden verdeeld. + +Deze [AREA] m² land overdragen aan de groep '[GROUP_NAME]'? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="DisplaySetToSafe"> + Weergave instellingen zijn op veilige waarden ingesteld omdat u de -save optie op heeft gegeven. + </notification> + <notification name="DisplaySetToRecommended"> + Weergave instellingen zijn ingesteld op geadviseerde waarden, gebaseerd op uw systeem configuratie. + </notification> + <notification name="ErrorMessage"> + [ERROR_MESSAGE] + </notification> + <notification name="AvatarMoved"> + Uw [TYPE] locatie is momenteel niet beschikbaar. +[HELP] +U bent naar een nabij gelegen regio verplaatst. + </notification> + <notification name="ClothingLoading"> + Uw kleding wordt nog steeds geladen. +U kunt [SECOND_LIFE] normaal gebruiken en anderen zullen u correct zien. + <form name="form"> + <ignore name="ignore" text="Indien kleding een erg lange tijd in beslag neemt om de laden"/> + </form> + </notification> + <notification name="FirstRun"> + [SECOND_LIFE] installatie compleet. + +Als dit de eerste keer is dat u [SECOND_LIFE] gebruikt, zult u een account aan moeten maken voordat u in kan loggen. +Terugkeren naar www.secondlife.com om een nieuw account aan te maken? + <usetemplate name="okcancelbuttons" notext="Doorgaan" yestext="Nieuw Account..."/> + </notification> + <notification name="LoginPacketNeverReceived"> + Wij hebben problemen verbinding te maken. Er zou een probleem kunnen zijn met uw internet verbinding of met de Second Life servers. + +U kunt uw internet verbinding controleren en het over een paar minuten opnieuw proberen, op Help klikken om verbinding te maken met onze support website, of klik op Teleporteren om een poging te doen naar uw thuis locatie te teleporteren. + <form name="form"> + <button name="OK" text="OK"/> + <button name="Help" text="Help"/> + <button name="Teleport" text="Teleport"/> + </form> + </notification> + <notification name="WelcomeChooseSex"> + Uw avatar zal over enkele ogenblikken verschijnen. + +Gebruik de pijltjestoetsen om te lopen. +Druk op elk gewenst moment op F1 voor Help en om meer te leren over [SECOND_LIFE]. +Kies alstublieft een mannelijk of vrouwelijke avatar. U kunt later nog van gedachten veranderen. + <usetemplate name="okcancelbuttons" notext="Vrouw" yestext="Man"/> + </notification> + <notification name="NotEnoughCurrency"> + [NAME] L$ [PRICE] U heeft niet genoeg L$ om dit te doen. + </notification> + <notification name="GrantedModifyRights"> + U heeft het recht verkregen om objecten van [FIRST_NAME] [LAST_NAME] te wijzigen. + </notification> + <notification name="RevokedModifyRights"> + Uw recht om objecten van [FIRST_NAME] [LAST_NAME] is ingetrokken. + </notification> + <notification name="FlushMapVisibilityCaches"> + Dit zal de Kaart cache van deze regio opschonen. + +Dit is eigenlijk alleen nuttig voor debugging. +(In productie, wacht 5 minuten, dan zal de Kaart van iedereen bijgewerkt worden als ze opnieuw verbinden.) + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="BuyOneObjectOnly"> + Kan niet meer dan één object tegelijkertijd kopen. Selecteer alstublieft slechts één object en probeer opnieuw. + </notification> + <notification name="OnlyCopyContentsOfSingleItem"> + Kan niet de inhoud van meer dan één item per keer kopiëren. +Kies alstublieft slechts één object en probeer het opnieuw. + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="KickUsersFromRegion"> + Alle Inwoners in deze regio naar de thuis locatie Teleporteren? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="EstateObjectReturn"> + Weet u zeker dat u alle objecten wilt retourneren eigendom van [USER_NAME] ? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="InvalidTerrainBitDepth"> + Kon de regio textuur niet plaatsen: +Terrein textuur [TEXTURE_NUM] heeft een ongeldige bit diepte van [TEXTURE_BIT_DEPTH]. + +Vervang de textuur [TEXTURE_NUM] met een 24-bit 512x512 of een kleinere afbeelding, klik dan op opnieuw op "Toepassen". + </notification> + <notification name="InvalidTerrainSize"> + Kon de regio textuur niet plaatsen: +Terrein textuur [TEXTURE_NUM] is te groot met [TEXTURE_SIZE_X]x[TEXTURE_SIZE_Y]. + +Vervang de textuur [TEXTURE_NUM] met een 24-bit 512x512 of een kleinere afbeelding, klik dan op opnieuw op "Toepassen". + </notification> + <notification name="RawUploadStarted"> + Upload gestart. Het kan tot twee minuten duren, afhankelijk van u verbindings snelheid. + </notification> + <notification name="ConfirmBakeTerrain"> + Wilt u werkelijk het huidige terrein 'baken', dit als middelpunt voor de verhoog/verlaag limieten instellen en als standaard instellen voor het 'Herstel' gereedschap? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="MaxAllowedAgentOnRegion"> + U kunt slechts [MAX_AGENTS] Toegestane Inwoners hebben. + </notification> + <notification name="MaxBannedAgentsOnRegion"> + U kunt slechts [MAX_BANNED] Verbannen Inwoners hebben. + </notification> + <notification name="MaxAgentOnRegionBatch"> + Een poging [NUM_ADDED] agents toe te voegen is mislukt: +Overstijgt de [MAX_AGENTS] [LIST_TYPE] limiet met [NUM_EXCESS]. + </notification> + <notification name="MaxAllowedGroupsOnRegion"> + U kunt slechts [MAX_GROUPS] Toegestane Groepen hebben. + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="Bake"/> + </notification> + <notification name="MaxManagersOnRegion"> + U kunt slechts [MAX_MANAGER] Estate Beheerders hebben. + </notification> + <notification name="OwnerCanNotBeDenied"> + Kan de estate eigenaar niet aan de Verbannen lijst van het estate toe voegen. + </notification> + <notification name="CanNotChangeAppearanceUntilLoaded"> + Kan het Uiterlijk niet veranderen totdat kleding en Postuur geladen zijn. + </notification> + <notification name="ClassifiedMustBeAlphanumeric"> + De naam van uw advertentie moet beginnen met een letter van A tot Z of een nummer. +Leestekens zijn niet toegestaan. + </notification> + <notification name="CantSetBuyObject"> + Kan Koop Object niet instellen omdat het object niet te koop is. +Zet het object alstublieft te koop en probeer het opnieuw. + </notification> + <notification name="FinishedRawDownload"> + Download van raw terrein bestand geëindigd naar: +[DOWNLOAD_PATH]. + </notification> + <notification name="DownloadWindowsMandatory"> + Een nieuwe versie van [SECOND_LIFE] is beschikbaar. +[MESSAGE] +U moet deze update downloaden om [SECOND_LIFE] te kunnen gebruiken. + <usetemplate name="okcancelbuttons" notext="Afsluiten" yestext="Download"/> + </notification> + <notification name="DownloadWindows"> + Een bijgewerkte versie van [SECOND_LIFE] is beschikbaar. +[MESSAGE] +Deze update is niet vereist, maar wij raden aan dat u het installeert om de prestaties en stabiliteit te verbeteren. + <usetemplate name="okcancelbuttons" notext="Doorgaan" yestext="Download"/> + </notification> + <notification name="DownloadWindowsReleaseForDownload"> + Een bijgewerkte versie van [SECOND_LIFE] is beschikbaar. +[MESSAGE] +Deze update is niet vereist, maar wij raden aan dat u het installeert om de prestaties en stabiliteit te verbeteren. + <usetemplate name="okcancelbuttons" notext="Doorgaan" yestext="Download"/> + </notification> + <notification name="DownloadMacMandatory"> + Een nieuwe versie van [SECOND_LIFE] is beschikbaar. +[MESSAGE] +U moet deze update downloaden om [SECOND_LIFE] te kunnen gebruiken. + +Downloaden naar uw Applicatie Data map? + <usetemplate name="okcancelbuttons" notext="Afsluiten" yestext="Download"/> + </notification> + <notification name="DownloadMac"> + Een bijgewerkte versie van [SECOND_LIFE] is beschikbaar. +[MESSAGE] +Deze update is niet vereist, maar wij raden aan dat u het installeert om de prestaties en stabiliteit te verbeteren. + +Downloaden naar uw Applicatie Data map? + <usetemplate name="okcancelbuttons" notext="Doorgaan" yestext="Download"/> + </notification> + <notification name="DownloadMacReleaseForDownload"> + Een bijgewerkte versie van [SECOND_LIFE] is beschikbaar. +[MESSAGE] +Deze update is niet vereist, maar wij raden aan dat u het installeert om de prestaties en stabiliteit te verbeteren. + +Downloaden naar uw Applicatie Data map? + <usetemplate name="okcancelbuttons" notext="Doorgaan" yestext="Download"/> + </notification> + <notification name="DeedObjectToGroup"> + Dit object overdragen aan de groep zal de groep: +* L$ ontvangen als betaald in het object + <usetemplate ignoretext="Bij objecten die overgedragen worden aan groepen" name="okcancelignore" notext="Annuleren" yestext="Overdragen"/> + </notification> + <notification name="WebLaunchExternalTarget"> + Uw systeem browser openen om deze inhoud te bekijken? + <usetemplate ignoretext="Bij openen van systeem browser om de webpagina te bekijken" name="okcancelignore" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="WebLaunchJoinNow"> + Naar www.secondlife.com gaan om uw account te beheren? + <usetemplate ignoretext="Bij openen van webbrowser om uw account te beheren" name="okcancelignore" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="WebLaunchBugReport101"> + Bezoek de [SECOND_LIFE] Wiki en leer hoe Bugs correct gerapporteerd kunnen worden. + <usetemplate ignoretext="Bij openen webbrowser om de Bug Reporting 101 Wiki te bekijken" name="okcancelignore" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="WebLaunchSecurityIssues"> + Bezoek de [SECOND_LIFE] Wiki voor details over hoe een Veiligheids Probleem (Security Issue) te rapporteren. + <usetemplate ignoretext="Bij openen webbrowser om de Veiligheids Problemen Wiki (Security Issues Wiki) te bekijken" name="okcancelignore" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="WebLaunchQAWiki"> + Bezoek de [SECOND_LIFE] QA Wiki (Kwaliteitsbeheersing Wiki). + <usetemplate ignoretext="Bij openen webbrowser om de QA Wiki (Kwaliteitsbeheersing Wiki) te bekijken" name="okcancelignore" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="WebLaunchPublicIssue"> + Bezoek de [SECOND_LIFE] Publieke problemenlijst, waar u Bugs en andere Problemen kunt rapporteren. + <usetemplate ignoretext="Bij openen webbrowser om de Publieke problemenlijst te bekijken" name="okcancelignore" notext="Annuleren" yestext="Ga naar pagina"/> + </notification> + <notification name="WebLaunchPublicIssueHelp"> + Bezoek de [SECOND_LIFE] Wiki voor informatie over het gebruik van de Publieke problemenlijst. + <usetemplate ignoretext="Bij openen webbrowser om de Publieke problemenlijst Wiki te bekijken" name="okcancelignore" notext="Annuleren" yestext="Ga naar pagina"/> + </notification> + <notification name="WebLaunchSupportWiki"> + Ga naar de Officiële Linden Blog voor het laatste Nieuws en Informatie. + <usetemplate ignoretext="Bij openen webbrowser om de blog te bekijken" name="okcancelignore" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="WebLaunchLSLGuide"> + Naar de Script Gids gaan voor hulp met scripten? + <usetemplate ignoretext="Bij openen webbrowser om de Script Gids te bekijken" name="okcancelignore" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="WebLaunchLSLWiki"> + Naar de LSL Portaal gaan voor hulp met scripten? + <usetemplate ignoretext="Bij openen webbrowser om de LSL Portal te bekijken" name="okcancelignore" notext="Annuleren" yestext="Ga naar pagina"/> + </notification> + <notification name="ReturnToOwner"> + Weet u zeker dat u de geselecteerde objecten wilt retourneren naar de eigenaren? +Overdraagbare toegekende objecten zullen naar de oorspronkelijke eigenaren worden geretourneerd. + +*WAARSCHUWING* Niet overdraagbare toegekende objecten zullen worden verwijderd! + <usetemplate ignoretext="Bij retourneren objecten naar de eigenaren" name="okcancelignore" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="GroupLeaveConfirmMember"> + U bent momenteel een lid van de groep [GROUP]. +Groep Verlaten? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="ConfirmKick"> + Weet u HEEL ZEKER dat u alle gebruikers uit het grid wilt verwijderen? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="Verwijder Alle Gebruikers"/> + </notification> + <notification name="MuteLinden"> + Sorry, u kunt geen Linden Negeren + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="CannotStartAuctionAlreadyForSale"> + U kunt geen veiling starten op een perceel dat al te koop is gezet. Schakel de landverkoop uit wanneer u zeker bent dat u een veiling wil starten. + </notification> + <notification label="Negeren van object mislukt" name="MuteByNameFailed"> + U heeft deze naam al genegeerd. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="RemoveItemWarn"> + Alhoewel toegestaan, verwijderen van de inhoud kan het object beschadigen. Wilt u dit item verwijderen? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="CantOfferCallingCard"> + Kan op dit moment geen visitekaart aanbieden. Probeer het alstublieft later opnieuw. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="CantOfferFriendship"> + Kan op dit moment geen vriendschap aanbieden. Probeer het alstublieft later opnieuw. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="BusyModeSet"> + Niet Storen modus ingesteld. + +Chat and instant messages zullen verborgen blijven. Instant messages zullen uw Niet Storen melding krijgen. Alle teleport aanbiedingen zullen worden afgewezen. Alle inventaris aanbiedingen zullen in uw Vuilnisbak terecht komen. + <usetemplate ignoretext="Bij instellen Niet Storen modus" name="okignore" yestext="OK"/> + </notification> + <notification name="JoinedTooManyGroupsMember"> + U ben lid van teveel groepen om lid te worden van een andere. Verlaat op zijn minst één groep alvorens lid te worden van een andere of weiger de lidmaatschap aanbieding. +Om een groep te verlaten, selecteer de 'Groep..' optie via het 'Bewerken' menu. + +[NAME] heeft u uitgenodigd om lid te worden van de groep als algemeen lid. + +[INVITE] + <usetemplate name="okcancelbuttons" notext="Afslaan" yestext="Lid worden"/> + </notification> + <notification name="KickUser"> + Verwijder deze gebruiker met welk bericht? + <form name="form"> + <input name="message" type="text"> + Een administrator heeft u uitgelogd. + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Annuleren"/> + </form> + </notification> + <notification name="KickAllUsers"> + Verwijder iedereen momenteel op het grid met welk bericht? + <form name="form"> + <input name="message" type="text"> + Een administrator heeft u uitgelogd. + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Annuleren"/> + </form> + </notification> + <notification name="FreezeUser"> + Bevries deze gebruiker met welk bericht? + <form name="form"> + <input name="message" type="text"> + U bent bevroren. U kunt zich niet verplaatsen of praten. Een administrator zal contact met u opnemen via instant message (IM). + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Annuleren"/> + </form> + </notification> + <notification name="UnFreezeUser"> + Ontdooi deze gebruiker met welk bericht? + <form name="form"> + <input name="message" type="text"> + U bent niet langer bevroren. + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Annuleren"/> + </form> + </notification> + <notification name="OfferTeleport"> + Een Teleport aanbieden naar uw locatie met welk bericht? + <form name="form"> + <input name="message" type="text"> + Voeg u bij mij in [REGION] + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Annuleren"/> + </form> + </notification> + <notification name="OfferTeleportFromGod"> + God beveel gebruiker naar uw locatie? + <form name="form"> + <input name="message" type="text"> + Voeg u bij mij in [REGION] + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Annuleren"/> + </form> + </notification> + <notification name="TeleportFromLandmark"> + Weet u zeker dat u wilt teleporteren? + <usetemplate ignoretext="Bij teleporteren via een landmarkering in inventaris" name="okcancelignore" notext="Annuleren" yestext="Teleporteren"/> + </notification> + <notification label="Bericht iedereen in uw Estate" name="MessageEstate"> + Type een kort bericht om naar iedereen sturen die momenteel in uw Estate aanwezig is. + <form name="form"> + <input name="message" type="text"/> + <button name="OK" text="OK"/> + <button name="Cancel" text="Annuleren"/> + </form> + </notification> + <notification label="Wijzig Linden Estate" name="ChangeLindenEstate"> + U staat op het punt een Linden beheerde Estate te wijzigen mainland, teen grid, orientation, etc.). + +Dit is EXTREEM GEVAARLIJK om het fundamenteel de gebruikers ervaring kan aantasten. +Op het mainland zal het duizenden regionen wijzigen en de spaceserver kan storingen vertonen. + +Doorgaan? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification label="Wijzig Linden Estate Toegang" name="ChangeLindenAccess"> + U staat op het punt de toegangslijst van een Linden Estate eigendom aan te passen (mainland, teen grid, orientation, etc.). + +Dit is GEVAARLIJK en zou alleen gedaan moeten worden om de hack toe te staan om objecten/L$ over te dragen in/uit het grid. +Het zal het duizenden regionen wijzigen en de spaceserver kan storingen vertonen. + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification label="Selecteer Estate" name="EstateAllowedAgentAdd"> + Alleen aan toegangslijst voor dit Estate toevoegen of voor [ALL_ESTATES]? + <usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Alle Estates" yestext="Dit Estate"/> + </notification> + <notification label="Selecteer Estate" name="EstateAllowedAgentRemove"> + Verwijderen van toegangslijst voor alleen dit Estate of voor [ALL_ESTATES]? + <usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Alle Estates" yestext="Dit Estate"/> + </notification> + <notification label="Selecteer Estate" name="EstateAllowedGroupAdd"> + Alleen aan groeps toegangslijst voor dit Estate toevoegen of voor [ALL_ESTATES]? + <usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Alle Estates" yestext="Dit Estate"/> + </notification> + <notification label="Selecteer Estate" name="EstateAllowedGroupRemove"> + Verwijderen van groeps toegangslijst voor alleen dit Estate of voor [ALL_ESTATES]? + <usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Alle Estates" yestext="Dit Estate"/> + </notification> + <notification label="Selecteer Estate" name="EstateBannedAgentAdd"> + Weiger toegang voor alleen dit Estate of voor [ALL_ESTATES]? + <usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Alle Estates" yestext="Dit Estate"/> + </notification> + <notification label="Selecteer Estate" name="EstateBannedAgentRemove"> + Deze Inwoner van de ban lijst voor toegang voor alleen dit Estate verwijderen of voor [ALL_ESTATES]? + <usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Alle Estates" yestext="Dit Estate"/> + </notification> + <notification label="Selecteer Estate" name="EstateManagerAdd"> + Estate beheerder toevoegen voor alleen dit Estate of voor [ALL_ESTATES]? + <usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Alle Estates" yestext="Dit Estate"/> + </notification> + <notification label="Selecteer Estate" name="EstateManagerRemove"> + Estate beheerder verwijderen voor alleen dit Estate of voor [ALL_ESTATES]? + <usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Alle Estates" yestext="Dit Estate"/> + </notification> + <notification label="Bevestig Verwijderen" name="EstateKickUser"> + Verwijder [EVIL_USER] van deze Estate? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="EstateChangeCovenant"> + Weet u zeker dat u de Estate Convenant wilt wijzigen? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="RegionEntryAccessBlocked"> + U wordt niet in die regio toegelaten vanwege uw inhoudscategorie. Dit kan het gevolg zijn van een gebrek aan informatie die uw leeftijd valideert. + +Verifieer alstublieft dat u de nieuwste viewer heeft geïnstalleerd en ga naar de kennisbank voor details over het betreden van gebieden met deze inhoudscategorie. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + <notification name="RegionEntryAccessBlocked_KB"> + U wordt niet in die regio toegelaten vanwege uw inhoudscategorie. + +Ga naar de kennisbank voor meer informatie over inhoudscategorieën? + <url name="url"> + https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=6010 + </url> + <usetemplate + name="okcancelignore" + yestext="Ga naar kennisbank" + notext="Sluiten" + ignoretext="Wanneer regiotoegang wordt geblokkeerd vanwege de inhoudscategorie"/> + </notification> + <notification name="RegionEntryAccessBlocked_Notify"> + U wordt niet in die regio toegelaten vanwege uw inhoudscategorie. + </notification> + <notification name="RegionEntryAccessBlocked_Change"> + U wordt niet in die regio toegelaten vanwege uw inhoudscategorie. + +U kunt klikken op 'Wijzig voorkeur' om uw inhoudscategorie voorkeur nu te verhogen en toegelaten te worden. U zult in staat zijn om [REGIONMATURITY] inhoud te zoeken en benaderen vanaf dit moment. Wanneer u later deze instelling wilt wijzigen, ga dan naar Bewerken > Voorkeuren... > Algemeen. + <form> + <button + name="OK" + text="Wijzig voorkeur"/> + <button + default="true" + name="Cancel" + text="Sluiten"/> + <ignore text="Wanneer regiotoegang wordt geblokkeerd vanwege de inhoudscategorie voorkeur"/> + </form> + </notification> + <notification name="LandClaimAccessBlocked"> + U kunt dit land niet opeisen vanwege uw inhoudscategorie. Dit kan het gevolg zijn van een gebrek aan informatie die uw leeftijd valideert. + +Verifieer alstublieft dat u de nieuwste viewer heeft geïnstalleerd en ga naar de kennisbank voor details over het betreden van gebieden met deze inhoudscategorie. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + <notification name="LandClaimAccessBlocked_KB"> + U kunt dit land niet opeisen vanwege uw inhoudscategorie. + +Ga naar de kennisbank voor meer informatie over inhoudscategorieën? + <url name="url"> + https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=6010 + </url> + <usetemplate + name="okcancelignore" + yestext="Ga naar kennisbank" + notext="Sluiten" + ignoretext="Wanneer het opeisen van land wordt geblokkeerd vanwege de inhoudscategorie"/> + </notification> + <notification name="LandClaimAccessBlocked_Notify"> + U kunt dit land niet opeisen vanwege uw inhoudscategorie. + </notification> + <notification name="LandClaimAccessBlocked_Change"> + U kunt dit land niet opeisen vanwege uw inhoudscategorie voorkeur. + +U kunt klikken op 'Wijzig voorkeur' om uw inhoudscategorie voorkeur nu te verhogen en toegang te krijgen om binnen te treden. U zult in staat zijn om [REGIONMATURITY] inhoud vanaf nu te zoeken en benaderen. Wanneer u deze instelling later terug wilt zetten, gaat u naar Bewerken > Voorkeuren... > Algemeen. + <usetemplate + name="okcancelignore" + yestext="Wijzig voorkeur" + notext="Sluiten" + ignoretext="Wanneer het opeisen van land wordt geblokkeerd vanwege de inhoudscategorie voorkeur"/> + </notification> + <notification name="LandBuyAccessBlocked"> + U kunt dit land niet kopen vanwege uw inhoudscategorie. Dit kan het gevolg zijn van een gebrek aan informatie die uw leeftijd valideert. + +Verifieer alstublieft of u de nieuwste viewer heeft geïnstalleerd en ga naar de kennisbank voor details over het betreden van gebieden met deze inhoudscategorie. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + <notification name="LandBuyAccessBlocked_KB"> + U kunt dit land niet kopen vanwege uw inhoudscategorie. + +Ga naar de kennisbank voor meer informatie over inhoudscategorieën? + <url name="url"> + https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=6010 + </url> + <usetemplate + name="okcancelignore" + yestext="Ga naar kennisbank" + notext="Sluiten" + ignoretext="Wanneer een landaankoop wordt geblokkeerd vanwege de inhoudscategorie"/> + </notification> + <notification name="LandBuyAccessBlocked_Notify"> + U kunt dit land niet kopen vanwege uw inhoudscategorie. + </notification> + <notification name="LandBuyAccessBlocked_Change"> + U kunt dit land niet kopen vanwege uw inhoudscategorie voorkeur. + +U kunt klikken op 'Wijzig voorkeur' om uw inhoudscategorie voorkeur nu te verhogen en toegang te krijgen om binnen te treden. U zult in staat zijn om [REGIONMATURITY] inhoud vanaf nu te zoeken en benaderen. Wanneer u deze instelling later terug wilt zetten, gaat u naar Bewerken > Voorkeuren... > Algemeen. + <usetemplate + name="okcancelignore" + yestext="Wijzig voorkeur" + notext="Sluiten" + ignoretext="Wanneer een landaankoop wordt geblokkeerd vanwege de inhoudscategorie voorkeur"/> + </notification> + <notification name="TooManyPrimsSelected"> + "Er zijn teveel prims geselecteerd. Selecteer alstublieft [MAX_PRIM_COUNT] of minder prims en probeer opnieuw." + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ProblemImportingEstateCovenant"> + Probleem met importeren Estate Convenant. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ProblemAddingEstateManager"> + Problemen met het toevoegen van een Estate beheerder. Eén of meer Estates kunnen een volle beheerders lijst hebben. + </notification> + <notification name="ProblemAddingEstateGeneric"> + Problemen met toevoegen aan deze Estate lijst. Eén of meer Estates kunnen een volle lijst hebben. + </notification> + <notification name="UnableToLoadNotecardAsset"> + Kan de asset van de notitiekaart op dit moment niet laden. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="NotAllowedToViewNotecard"> + Onvoldoende rechten om de notitiekaart in te zien geassocieerd met het opgevraagde asset ID. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MissingNotecardAssetID"> + Asset ID voor de notitiekaart ontbreekt in de database. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="PublishClassified"> + Bedenk: kosten voor advertenties worden niet terugbetaald. + +Advertentie nu Publiceren voor L$[AMOUNT]? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="SetClassifiedMature"> + Bevat deze advertentie Mature inhoud? + <usetemplate + canceltext="Annuleren" + name="yesnocancelbuttons" + notext="Nee" + yestext="Ja"/> + </notification> + <notification name="SetGroupMature"> + Bevat deze groep Mature inhoud? + <usetemplate + canceltext="Annuleren" + name="yesnocancelbuttons" + notext="Nee" + yestext="Ja"/> + </notification> + <notification label="Bevestig herstart" name="ConfirmRestart"> + Wilt u deze regio echt binnen 2 minuten herstarten? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification label="Bericht iedereen in deze regio" name="MessageRegion"> + Type een kort bericht om naar iedereen sturen die momenteel in regio aanwezig is. + <form name="form"> + <input name="message" type="text"/> + <button name="OK" text="OK"/> + <button name="Cancel" text="Annuleren"/> + </form> + </notification> + <notification label="Weiger Land aanpassingen" name="HelpRegionBlockTerraform"> + Indien dit aan gevinkt kunnen landeigenaren geen terrein bewerkingen doen op hun land, ongeacht de per perceel ingestelde waarde voor 'Wijzig Terrein' + +Standaard: uitgeschakeld + </notification> + <notification label="Blokkeer Vliegen" name="HelpRegionBlockFly"> + Indien dit is aan gevinkt kunnen personen niet vliegen in deze regio ongeacht de per perceel ingestelde waarde 'Vliegen' + +Standaard: uitgeschakeld + </notification> + <notification label="Bulkwijzigen Inhoudpermissies" name="HelpBulkPermission"> + Het Bulkpermissiesgereedschap helpt u om snel de permissies op meerdere items in de inhoud van het geselecteerde object te wijzigen. Let echter op dat u alleen de permissies op de items in de Inhoud van de geselecteerde objecten instelt -- niet de permissies van het containerobject zelf. + +Merk ook op dat de permissies niet worden toegepast op de geneste inhoud van de items in Inhoud. Uw verzoek werkt alleen op items precies één niveau diep. + +U kunt selectief kiezen welke soorten objecten te wijzigen door gebruik te maken van de checklist onder 'Inhoud Types' hier. Foto's worden opgenomen wanneer u Texturen selecteert. + +* Dit gereedschap is alleen succesvol in het wijzigen van permissies op objecten die u mag wijzigen. +* U kunt geen 'Volgende Eigenaar' permissies toekennen die u niet al bezit. +* De 'Volgende Eigenaar' permissies zijn slechts verzoeken. Indien een item niet alle nieuwe permissies kan overnemen, zal geen van zijn permissies wijzigen. + +Wanneer u klaar bent om de permissies in bulk te wijzigen, klik dan 'Toepassen' en wacht tot de resultaten worden weergegeven. + +Indien u het Bulkpermissies venster sluit terwijl permissies gewijzigd worden, zal de verwerking gestopt worden. + </notification> + <notification label="Sta Letsel Toe" name="HelpRegionAllowDamage"> + Indien dit is aan gevinkt stelt het Letsel systeem in voor alle percelen, ongeacht de individuele instellingen op de percelen. Indien uitgeschakeld, kunnen perceel eigenaren het Letsel systeem op hun perceel activeren. + +Standaard: uitgeschakeld + </notification> + <notification label="Agent Limiet" name="HelpRegionAgentLimit"> + Stelt het maximale aantal toegestane avatars in voor deze regio. +De prestaties kunnen variëren afhankelijk van het aantal aanwezige avatars. + +Standaard: 40 + </notification> + <notification label="Object Bonus" name="HelpRegionObjectBonus"> + De Object Bonus is een vermeerderaar voor primitieven op een willekeurig perceel. +Het bereik is van 1 tot 10. Ingesteld op '1' kan elk 512m² perceel 117 objecten bevatten. Ingesteld op '2' kan elk 512m² perceel 234 objecten bevatten, enzovoort. Het maximale aantal objecten blijft 15.000, ongeacht wat de Object Bonus is. Denk er aan, dat eenmaal ingesteld, het verlagen van de Object Bonus het retourneren of verwijderen van objecten tot gevolg kan hebben. + +Standaard: 1.0 + </notification> + <notification label="Inhoudscategorie:" name="HelpRegionMaturity"> + Stelt de inhoudscategorie van de regio in, zoals getoond in de menubalk bovenaan de viewer van elke inwoner en in tooltips op de wereldkaart wanneer de aanwijzer boven deze regio zweeft. Deze instelling heeft ook invloed op de toegang tot deze regio en zoekresultaten. Andere inwoners kunnen alleen regio's binnengaan of zoekresultaten zien met dezelfde inhoudscategorie als die zij zelf hebben gekozen in hun voorkeuren. + +Het kan enige tijd duren voordat deze wijziging zichtbaar is op de wereldkaart. + </notification> + <notification label="Beperk Duwen" name="HelpRegionRestrictPushObject"> + Deze instelling stelt de hele regio in op beperkte duwen permissies. +Indien aan gevinkt kunnen Inwoners alleen door hun zelf geduwd worden of door de perceel eigenaar. + +(Push (Duwen) verwijst naar de llPushObject() LSL functie) + +Standaard: Uitgeschakeld + </notification> + <notification label="Perceel Samenvoegen/Opsplitsen" name="HelpParcelChanges"> + Deze instelling stel in of percelen die niet van de estate eigenaar zijn kunnen worden samengevoegd of opgesplitst. + +Indien niet aan gevinkt: + * Alleen Estate eigenaren of beheerders kunnen percelen samenvoegen op opsplitsen. + * Zij kunnen alleen percelen samenvoegen of opsplitsen die eigendom zijn van de eigenaar of van een groep met de juiste bevoegdheden. + +Indien aan gevinkt: + * Alle perceel eigenaren kunnen percelen samenvoegen of opsplitsen die zij bezitten. + * Voor percelen in Groep eigendom, kunnen alleen zij met de juiste rechten percelen samenvoegen of opsplitsen. + +Standaard: Ingeschakeld + </notification> + <notification label="Niet in Zoeken tonen" name="HelpRegionSearch"> + Deze optie aan vinken zal perceel eigenaren blokkeren hun perceel in Zoeken te tonen. + +Standaard: Uitgeschakeld + </notification> + <notification label="Regio Volwassenen Gewijzigd" name="RegionMaturityChange"> + De Volwassen instelling voor deze regio is bijgewerkt. +Het kan enige tijd duren voordat de wijziging zichtbaar is op de Kaart. + </notification> + <notification label="Land Herverkoop" name="HelpRegionLandResell"> + Estate eigenaren en beheerders kunnen elk stuk land verkopen in eigendom van de Estate eigenaar. + +Indien deze optie niet is aan gevinkt, kunnen kopers hun land in deze regio niet verkopen. +Indien deze optie is aan gevinkt, kunnen kopers hun land in deze regio verkopen. + +Standaard: Niet toestaan + </notification> + <notification label="Scripts Uitschakelen" name="HelpRegionDisableScripts"> + Indien de sim prestaties slecht zijn, kan een script de oorzaak zijn. Open de Statistieken balk (Ctrl-Shift-1). Kijk naar de Simulator Fysieke FPS. Indien het lager is dan 45, open dan het Tijd paneel onderaan de Statistieken balk. Indien de Script Tijd 25 ms of hoger is, klik dan op de Top Scripts knop. U krijgt dan een naam en lokatie van scripts die mogelijk de slechte prestaties veroorzaken. + +Het aan vinken van Scripts Uitschakelen en vervolgens op de Toepassen knop drukken, zal tijdelijk alle scripts in deze regio uitschakelen. U zult dit mogelijk moeten doen om naar de lokatie te gaan van het 'top script'. Eenmaal aangekomen, onderzoek dan of het script het probleem veroorzaakt. U zult mogelijk de eigenaar willen contacteren of het object willen retourneren c.q. verwijderen. +Verwijder het vinkje van Scripts Uitschakelen en klik op Toepassen om scripts weer te reactiveren in de regio. + +Standaard: Uitgeschakeld + </notification> + <notification label="Botsingen Uitschakelen" name="HelpRegionDisableCollisions"> + Indien de sim prestaties slecht zijn, kunnen fysieke objecten de oorzaak zijn. Open de Statistieken balk (Ctrl-Shift-1). Kijk naar de Simulator Fysieke FPS. Indien het lager is dan 45, open dan het Tijd paneel onderaan de Statistieken balk. Indien de Sim Tijd (Fysiek) 20 ms of hoger is, klik dan op de Toon Top Botsingen knop. U krijgt dan een naam en lokatie van de fysieke objecten die mogelijk de slecht prestaties veroorzaken. + +Het aan vinken van de Botsingen Uitschakelen knop en vervolgens op de Toepassen knop drukken, zal tijdelijk object-object botsingen uitschakelen. U zult dit mogelijk moeten doen om naar de lokatie te gaan van de 'top botsingen'. Eenmaal aangekomen, onderzoek dan het object. Botst het constant met andere objecten? U zult mogelijk de eigenaar willen contacteren of het object willen retourneren c.q. verwijderen. +Verwijder het vinkje van Botsingen Uitschakelen en klik op Toepassen om botsingen weer te reactiveren in de regio. + +Standaard: Uitgeschakeld + </notification> + <notification label="Fysiek Uitschakelen" name="HelpRegionDisablePhysics"> + Fysiek Uitschakelen is gelijkwaardig aan Botsingen Uitschakelen, alleen alle fysieke simulatie is uitgeschakeld. Dit betekend dat niet alleen alle objecten zullen stoppen met botsen, maar ook dat avatars zich niet meer kunnen bewegen. + +Dit zou alleen gebruikt moeten worden als het uitschakelen van Botsingen niet genoeg prestatie winst geeft om een fysiek probleem of top botsingen te onderzoeken. + +Indien u klaar bent, wees er dan zeker van Fysiek weer in te schakelen, anders kunnen avatars zich niet meer bewegen. + +Standaard: Uitgeschakeld + </notification> + <notification label="Top Botsingen" name="HelpRegionTopColliders"> + Toon een lijst van objecten van het grootste aantal potentiële object-object botsingen. +Deze objecten kunnen een trage prestatie veroorzaken. Selecteer Beeld > Statistieken Balk en kijk onder Simulator > Tijd > Sim Tijd (Fysiek) om te zien of meer dan 20 ms wordt gespendeerd aan fysiek. + </notification> + <notification label="Top Scripts" name="HelpRegionTopScripts"> + Toon een lijst van objecten die de meeste tijd besteden aan het uitvoeren van LSL scripts. +Deze objecten kunnen een trage prestatie veroorzaken. Selecteer Beeld > Statistieken Balk en kijk onder Simulator > Tijd > Script Tijd om te zien of meer dan 25 ms wordt gespendeerd aan scripts. + </notification> + <notification label="Herstart Regio" name="HelpRegionRestart"> + Herstart het server proces van de regio na een twee minuten waarschuwing. +Alle Inwoners van de regio zullen de verbinding kwijt raken. De regio zal alle gegevens bewaren en zou binnen 90 seconden weer operabel moeten zijn. + +De regio herstarten zou de meeste prestatie problemen moeten verhelpen en zou normaal gesproken alleen gebruikt moeten worden indien aangegeven. + </notification> + <notification label="Water Hoogte" name="HelpRegionWaterHeight"> + Dit is de hoogte in meters waarop het water verschijnt. +Als deze instelling anders is dan 20 en u heeft water aan de rand van de wereld of u heeft 'ontbrekend' water, zal er een gat zichtbaar zijn. + +Standaard: 20 + </notification> + <notification label="Terrein Ophogen" name="HelpRegionTerrainRaise"> + Dit is de hoogte in meters dat perceel eigenaren hun terrein kunnen verhogen boven de standaard 'baked' terrein hoogte. + +Standaard: 4 + </notification> + <notification label="Terrein Verlagen" name="HelpRegionTerrainLower"> + Dit is de hoogte in meters dat perceel eigenaren hun terrein kunnen verlagen onder de standaard 'baked' terrein hoogte. + +Standaard: -4 + </notification> + <notification label="Upload RAW Terrein" name="HelpRegionUploadRaw"> + Deze knop upload een .RAW bestand naar de regio waar u zich bevindt. +Het bestand moet de juiste afmetingen hebben (RGB, 256x256) en 13 kanalen. +De beste manier om een terrein bestand te maken is het downloaden van een bestaand RAW bestand. Een goede eerste stap is om het rode kanaal (land hoogte) aan te passen en dat te uploaden. + +De upload kan tot 45 seconden in beslag nemen. Bedenk dat het uploaden van een terrein bestand de objecten reeds aanwezig op het land *niet* zal verplaatsen, alleen het terrein zelf en de permissies geassocieerd met de percelen. Dit kan resulteren in objecten die ondergronds gaan. + +Voor meer informatie over het wijzigen van de hoogte velden, raadpleeg F1 Help. + </notification> + <notification label="Download RAW Terrein" name="HelpRegionDownloadRaw"> + Deze knop download een bestand welke de hoogte veld gegevens, perceel afmetingen, perceel te koop status en sommige perceel permissies bevat voor deze regio. +Indien u het bestand opent in een programma als Photoshop, moet u de document afmetingen opgeven, welk RGB, 256x256 met 13 kanalen is. Dit terrein bestand kan op geen enkele andere manier worden geopend. + +Voor meer informatie over het wijzigen van de hoogte velden, raadpleeg F1 Help. + </notification> + <notification label="Gebruik Estate Zon" name="HelpRegionUseEstateSun"> + Dit aan vinken zorgt er voor dat de zon positie overeen komt met de zon positie in de rest van het Estate. + +Standaard: Ingeschakeld + </notification> + <notification label="Vaste Zon" name="HelpRegionFixedSun"> + Dit aan vinken stelt de zon in op de positie van de Fase schuif knop en stopt het verder bewegen van de zon. + +Standaard: Uitgeschakeld + </notification> + <notification label="Bake Terrein" name="HelpRegionBakeTerrain"> + Deze knop slaat de huidige vorm van het terrein op als nieuwe standaard voor de regio. Eenmaal baked, kan het land terugkeren naar de opgeslagen vorm wanneer u of anderen gebruik maken van de Wijzig Terrein 'Terugkeer' optie. Het baked terrein is ook het uitgangspunt voor de terrein verhogings- en verlagingslimieten. + </notification> + <notification label="Estate Beheerders" name="HelpEstateEstateManager"> + Een Estate Beheerder is een Inwoner aan wie u de controle over de regio en estate instellingen heeft uitbesteed. De Estate Beheerder kan de instellingen wijzigen in deze panels, behalve het uploaden, downloaden en terrein bakken. In bijzonder kunnen zij Inwoners toestaan of verbannen van het Estate. + +Estate Beheerders kunnen alleen toegevoegd of verwijderd worden door de eigenaar van het Estate, niet door elkaar. Gebruik alstublieft alleen Inwoners die u kunt vertrouwen als Estate Beheerders, omdat uiteindelijk u verantwoordelijk bent voor hun acties. + </notification> + <notification label="Gebruik Globale Tijd" name="HelpEstateUseGlobalTime"> + Dit aan vinken zorgt ervoor dat de zon in uw estate dezelfde positie volgt als in Linden-eigendom 'mainland' Estates. + +Standaard: aan + </notification> + <notification label="Vaste Zon" name="HelpEstateFixedSun"> + Dit aan vinken stelt de zon in op de positie van de Fase schuif knop en stopt het verder bewegen van de zon. + </notification> + <notification label="Publieke Toegang" name="HelpEstateExternallyVisible"> + Dit aan vinken geeft aan dat Inwoners die in andere Estates zijn, deze Estate kunnen bezoeken zonder op de Toegangs lijst te staan. + +Standaard: Ingeschakeld + </notification> + <notification label="Direct Teleporteren Toestaan" name="HelpEstateAllowDirectTeleport"> + Indien aan gevinkt staat het Inwoners toe om direct te Teleporteren naar elke plek in uw Estate. Indien niet aan gevinkt kunnen Inwoners Teleporteren naar de dichtstbijzijnde telehub. + +Standaard: Uitgeschakeld + </notification> + <notification label="Toegang Toestaan" name="HelpEstateAllowResident"> + Toegang tot dit Estate zal gelimiteerd zijn tot Inwoners in deze lijst en onderstaande groepen. Deze instelling is allen beschikbaar indien Publieke Toegang niet is aan gevinkt. + </notification> + <notification label="Groeps Toegang Toestaan" name="HelpEstateAllowGroup"> + Toegang tot dit Estate zal gelimiteerd worden tot groepen in deze lijst en elke Inwoner bovenaan. Deze Instelling is alleen beschikbaar als Publieke Toegang niet is aan gevinkt. + </notification> + <notification label="Misbruik Email Adres" name="HelpEstateAbuseEmailAddress"> + Dit instellen met een geldig email adres zal misbruik rapporten op dit Estate doen versturen naar dat adres. +Indien u het leeg laat, zullen misbruik rapporten alleen verzonden worden naar Linden Lab. + </notification> + <notification label="Toegang Weigeren" name="HelpEstateBanResident"> + Inwoners in deze lijst zijn de toegang geweigerd in uw Estate, ongeacht elke andere instelling. + </notification> + <notification label="Voice Chat Toestaan" name="HelpEstateVoiceChat"> + Percelen in dit Estate kunnen hun eigen Voice kanalen hebben waarin Inwoners die in de buurt van elkaar zijn, elkaar kunnen horen en met elkaar kunnen praten. + +Standaard: Uitgeschakeld + </notification> + <notification label="Voice Versie Ongelijkheid" name="VoiceVersionMismatch"> + Deze versie van Second Life is niet compatibel met de Voice spraak optie in deze regio. Om Voice Chat goed te laten functioneren, moet u Second Life bijwerken. + </notification> + <notification label="Estate Convenant" name="HelpEstateCovenant"> + Het instellen van een Estate Convenant maakt het u mogelijk om percelen in het Estate te verkopen. Indien de Convenant niet is ingesteld kunt u het niet verkopen. Een notitiekaart voor uw Convenant kan leeg zijn indien u geen regels wilt instellen, advies aan kopers wilt geven of iets anders in relatie tot het land wilt mededelen voor als men het koopt. + +Een Convenant kan gebruikt worden als u regels wilt mededelen, richtlijnen, culturele informatie of simpelweg uw eigen verwachtingen aan prospect kopers. +Dit kan zoneren bevatten, bouw reglementen, betaal opties of elke andere vorm van informatie waarvan u het belangrijk vind dat de nieuwe eigenaar het heeft gezien en mee akkoord is gegaan alvorens het te kopen. + +De koper moet instemmen met de Convenant middels het aan vinken van het kadertje alvorens zij de aankoop af kunnen ronden. Estate Overeenkomsten zijn altijd zichtbaar in het Over Land dialoog venster voor elk perceel dat er eentje ingesteld heeft staan. + </notification> + <notification label="Kan Geen Objecten Kopen" name="BuyObjectOneOwner"> + Kan geen objecten van verschillende eigenaren tegelijk kopen. + +Kies alstublieft slechts één object en probeer het opnieuw. + </notification> + <notification label="Kan Inhoud Niet Kopen" name="BuyContentsOneOnly"> + Kan geen inhoud kopen van meer dan één object tegelijk. + +Kies alstublieft slechts één object en probeer het opnieuw. + </notification> + <notification label="Kan Inhoud Niet Kopen" name="BuyContentsOneOwner"> + Kan geen inhoud kopen van verschillende eigenaren tegelijk. + +Kies alstublieft slechts één object en probeer het opnieuw. + </notification> + <notification name="BuyOriginal"> + Koop originele object van [OWNER] voor L$[PRICE]? +U zult de eigenaar worden van dit object. +U kunt het dan: + Wijzigen: [MODIFYPERM] + Kopiëren: [COPYPERM] + Verkopen of Weggeven: [RESELLPERM] + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="BuyOriginalNoOwner"> + Koop originele object voor L$[PRICE]? +U zult de eigenaar worden van dit object. +U kunt het dan: + Wijzigen: [MODIFYPERM] + Kopiëren: [COPYPERM] + Verkopen of Weggeven: [RESELLPERM] + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="BuyCopy"> + Koop een kopie van [OWNER] voor L$[PRICE]? +Het object zal gekopieerd worden naar uw inventaris. +U kunt het dan: + Wijzigen: [MODIFYPERM] + Kopiëren: [COPYPERM] + Verkopen of Weggeven: [RESELLPERM] + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="BuyCopyNoOwner"> + Koop een kopie voor L$[PRICE]? +Het object zal gekopieerd worden naar uw inventaris. +U kunt het dan: + Wijzigen: [MODIFYPERM] + Kopiëren: [COPYPERM] + Verkopen of Weggeven: [RESELLPERM] + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="BuyContents"> + Koop de inhoud van [OWNER] voor L$[PRICE]? +De inhoud zal naar uw inventaris gekopieerd worden. + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="BuyContentsNoOwner"> + Koop de inhoud voor L$[PRICE]? +De inhoud zal naar uw inventaris gekopieerd worden. + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="ConfirmPurchase"> + Deze transactie zal: +[ACTION] + +Weet u zeker dat u verder wilt gaan met deze aankoop? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="ConfirmPurchasePassword" type="password"> + Deze transactie zal: +[ACTION] + +Weet u zeker dat u verder wilt gaan met deze aankoop? +Voer alstublieft opnieuw uw wachtwoord in en klik op OK. + <form name="form"> + <input name="message" type="password"/> + <button name="ConfirmPurchase" text="OK"/> + <button name="Cancel" text="Annuleren"/> + </form> + </notification> + <notification name="SetPickLocation"> + Opmerking: + +U heeft de locatie van deze Favoriet bijgewerkt, maar andere details blijven ongewijzigd. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MoveInventoryFromObject"> + U heeft 'niet kopieerbare' items geselecteerd. +Deze items zullen worden verplaatst naar uw inventaris, niet gekopieerd. + +Verplaats de inventaris item(s)? + <usetemplate ignoretext="Wanneer niet kopieerbare inventaris uit objecten verplaatst wordt" name="okcancelignore" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="MoveInventoryFromScriptedObject"> + U heeft 'niet kopieerbare' inventaris items geselecteerd. +Deze items zullen verplaatst worden naar uw inventaris, niet gekopieerd. +Omdat deze objecten scripts bevatten, kan het verplaatsen naar uw inventaris er voor zorgen dat het object niet meer werkt. +inventaris item(s) verplaatsen? + <usetemplate ignoretext="Indien verplaatsen 'niet kopieerbare' inventaris van gescripte objecten" name="okcancelignore" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="ClickActionNotPayable"> + Waarschuwing: Het Betaal Object aan klik actie is ingesteld, maar het zal alleen werken als er een script is toegevoegd met een money() event. + <form name="form"> + <ignore name="ignore" text="Indien instellen 'Betaal' op objecten zonder money() events"/> + </form> + </notification> + <notification name="OpenObjectCannotCopy"> + Er zitten geen items in dit object die u kunt kopiëren. + </notification> + <notification name="WebLaunchAccountHistory"> + Naar de Second Life web site gaan om uw account geschiedenis te bekijken? + <usetemplate ignoretext="Bij laden van de account geschiedenis webpagina" name="okcancelignore" notext="Annuleren" yestext="Ga naar pagina"/> + </notification> + <notification name="ClickOpenF1Help"> + De Second Life Support Web site bezoeken? + <usetemplate ignoretext="Bij bezoeken van de Second Life Support Website." name="okcancelignore" notext="Annuleren" yestext="Ga"/> + </notification> + <notification name="ConfirmQuit"> + Weet u zeker dat u wilt afsluiten? + <usetemplate ignoretext="Bij afsluiten Second Life." name="okcancelignore" notext="Doorgaan" yestext="Afsluiten"/> + </notification> + <notification name="HelpReportAbuseEmailLL"> + Gebruik dit gereedschap om overtredingen van de Voorwaarden voor Service (Terms of Service) en Gemeenschaps Standaarden (Community Standards)te rapporteren. Zie: + +http://secondlife.com/corporate/tos.php +http://secondlife.com/corporate/cs.php + +Alle gerapporteerde misbruiken van de Voorwaarden voor Service en Gemeenschaps Standaarden zullen worden onderzocht en opgelost. U kunt de incident oplossing in de Incidenten Rapportage zien op: + +http://secondlife.com/support/incidentreport.php + </notification> + <notification name="HelpReportAbuseEmailEO"> + BELANGRIJK: Dit rapport zal naar de eigenaar van deze regio gaan en niet naar Linden Lab! + +Als een service aan Inwoners en bezoekers heeft de eigenaar van deze regio er voor gekozen om rapporten vanuit deze regio zelf te ontvangen en af te handelen. Linden Lab zal geen onderzoek doen naar rapporten die u indient vanaf deze locatie. + +De regio eigenaar zal de rapporten afhandelen op basis van de regels geldend voor deze regio zoals weergegeven in het Estate Convenant (Bekijk Convenants door naar Wereld te gaan in het menu en te kiezen voor Over Land). + +De afhandeling van dit rapport is alleen van toepassing op deze regio. +Toegang van Inwoners tot andere gebieden van Second Life zullen niet beïnvloed worden door de uitkomst van dit rapport. Alleen Linden Lab kan de toegang tot geheel Second Life beperken. + </notification> + <notification name="HelpReportBug"> + Gebruik dit gereedschap *alleen* voor het rapporteren van technische opties die niet functioneren als verwacht. Geef alstublieft zoveel mogelijk technische details als mogelijk. U kunt de automatische-antwoord email gebruiken om op te reageren om aanvullende gegevens toe te voegen aan uw rapport. + +Alle bug rapporten worden onderzocht en ingeschat. Er zal geen antwoord per email worden verzonden. + +Als u technische problemen heeft, neem dan contact op met Support op: +http://secondlife.com/community/support.php + +Opmerking: Onvolledige rapporten zullen niet worden onderzocht. + </notification> + <notification name="HelpReportAbuseSelectCategory"> + Selecteer alstublieft een categorie voor dit misbruik rapport. + +Het selecteren van een categorie helpt ons met het archiveren en verwerken van misbruik rapporten. + </notification> + <notification name="HelpReportBugSelectCategory"> + Selecteer alstublieft een categorie voor dit bug rapport. + +Het selecteren van een categorie helpt ons met het archiveren en verwerken van bug rapporten. + </notification> + <notification name="HelpReportAbuseAbuserNameEmpty"> + Geef alstublieft een naam op van de misbruiker. + +Een accurate waarde opgeven helpt ons met het archiveren en verwerken van misbruik rapporten. + </notification> + <notification name="HelpReportAbuseAbuserLocationEmpty"> + Geef alstublieft een locatie op waar het misbruik plaats vond. + +Een accurate waarde opgeven helpt ons met het archiveren en verwerken van misbruik rapporten. + </notification> + <notification name="HelpReportAbuseSummaryEmpty"> + Geef alstublieft een korte samenvatting op van het misbruik dat plaats vond. + +Een accurate waarde opgeven helpt ons met het archiveren en verwerken van misbruik rapporten. + </notification> + <notification name="HelpReportBugSummaryEmpty"> + Geef alstublieft een korte samenvatting van de bug. + +Een accurate samenvatting opgeven helpt ons met het archiveren en verwerken van bug rapporten. + </notification> + <notification name="HelpReportAbuseDetailsEmpty"> + Geef alstublieft een gedetailleerde omschrijving van het misbruik dat plaats vond. + +Wees zo specifiek als mogelijk, inclusief namen en details van het incident waarover u rapporteert. + +Het opgeven van een accurate omschrijving helpt ons met het archiveren en verwerken van misbruik rapporten. + </notification> + <notification name="HelpReportBugDetailsEmpty"> + Geef alstublieft een gedetailleerde omschrijving van de bug. + +Wees zo specifiek als mogelijk, inclusief stappen om de bug te reproduceren, indien mogelijk. + +Het opgeven van een accurate omschrijving helpt ons met het archiveren en verwerken van misbruik rapporten. + </notification> + <notification name="HelpReportAbuseContainsCopyright"> + Beste Inwoner, + +Het lijkt er op dat u intellectueel eigendoms misbruik rapporteert. Wees er alstublieft van overtuigd dat u dit correct rapporteert: + +(1) Het Misbruik Proces. U kunt een misbruik rapport indienen als u er van overtuigd bent dat een Inwoner het Second Life permissie systeem uitbuit, bijvoorbeeld door gebruik van CopyBot of soortgelijke gereedschappen, daarmee de intellectuele eigendoms rechten overtredend. Het Abuse Team onderzoekt en zal passende maatregelen uitvaardigen tegen gedrag dat de Second Life Gemeenschaps Standaarden overtreedt. Echter, het Abuse Team zal geen actie ondernemen en niet reageren op verzoeken om inhoud te verwijderen uit de Second Life wereld. + +(2) Het DMCA of Inhoud Verwijder Proces. Voor een verzoek tot verwijdering van inhoud in Second Life, MOET u een geldige berichtgeving van misbruik indienen zoals voorzien in onze DMCA beleid op http://secondlife.com/corporate/dmca.php. + +Indien u nog steeds door wilt gaan met het misbruik proces, sluit dan alstublieft dit venster en maak het indienen van uw rapport af. U zult mogelijk een specifieke catagorie moeten kiezen 'CopyBot of Permissie Uitbuiting'. + +Dank U, +Linden Lab + </notification> + <notification name="FailedRequirementsCheck"> + De volgende vereiste componenten ontbreken van [FLOATER]: +[COMPONENTS] + </notification> + <notification label="Vervang Bestaande Bevestiging" name="ReplaceAttachment"> + Er is al een object bevestigd op dit punt aan uw lichaam. +Wilt u dit vervangen met het geselecteerde object? + <form name="form"> + <ignore name="ignore" save_option="true" text="Bij vervangen van bestaande bevestigingen"/> + <button name="Yes" text="OK"/> + <button name="No" text="Annuleren"/> + </form> + </notification> + <notification label="Niet Storen Modus Waarschuwing" name="BusyModePay"> + U bevind zich in Niet Storen Modus, hetgeen inhoudt dat u geen enkele items kunt ontvangen voor deze betaling. + +Wilt u de Niet Storen Modus verlaten voordat u deze transactie completeert? + <form name="form"> + <ignore name="ignore" save_option="true" text="Bij betalen van een persoon of object in Niet Storen modus"/> + <button name="Yes" text="OK"/> + <button name="No" text="Annuleren"/> + </form> + </notification> + <notification name="ConfirmEmptyTrash"> + Weet u zeker dat u de inhoud van uw vuilnisbak map permanent wilt verwijderen? + <usetemplate ignoretext="Bij verwijderen van de inhoud uit de inventaris vuilnisbak map" name="okcancelignore" notext="Annuleren" yestext="OK"/> + </notification> + <notification name="ConfirmClearBrowserCache"> + Weet u zeker dat u uw browser cache wilt legen? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="Ja"/> + </notification> + <notification name="ConfirmClearCookies"> + Weet u zeker dat u al uw cookies wilt verwijderen? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="Ja"/> + </notification> + <notification name="ConfirmClearMediaUrlList"> + Weet u zeker dat u uw lijst met al de opgeslagen URL's wilt verwijderen? + <usetemplate name="okcancelbuttons" notext="Annuleren" yestext="Ja"/> + </notification> + <notification name="ConfirmEmptyLostAndFound"> + Weet u zeker dat u de inhoud van de Verloren en Gevonden map permanent wilt verwijderen? + <usetemplate ignoretext="Bij legen van uw inventaris Verloren en Gevonden map" name="okcancelignore" notext="Nee" yestext="Ja"/> + </notification> + <notification name="CopySLURL"> + De volgende SLURL is gekopieerd naar uw klem bord: +[SLURL] + +Plaats het in een web pagina om anderen eenvoudig toegang te verschaffen naar de locatie of test het zelf door het te plakken in de adres balk van uw web browser. + <form name="form"> + <ignore name="ignore" text="Bij kopiëren van een SLURL naar het klem bord"/> + </form> + </notification> + <notification name="GraphicsPreferencesHelp"> + Dit venster bepaald de venster afmetingen, resolutie en kwaliteit van de client's grafische weergave. De Voorkeuren > Grafische interface laat u kiezen uit vier grafische niveaus: Laag, Middel, Hoog en Ultra. U kunt ook uw grafische instellingen aanpassen met het aan vinken van het Custom vakje en de volgende instellingen manipuleren: + +Shaders: In of uitschakelen van de verschillende typen pixel shaders. + +Reflectie Detail: Stelt het type objecten in hetgeen water kan reflecteren. + +Avatar Weergave: Stelt de opties in die van invloed zijn op hoe de client een avatar zal renderen. + +Zicht bereik: Beïnvloed tot hoe ver objecten vanaf uw zichtpunt worden weergegeven in de scène. + +Maximaal Aantal Particles: Stelt het maximaal aantal particles in die u tegelijk kunt zien op uw scherm. + +Nabewerking Kwaliteit: Stelt de resolutie in waarmee Gloei wordt weergegeven. + +Maas Detail: Stelt de hoeveelheid detail of het aantal driehoeken in gebruikt voor de weergave van bepaalde objecten. Een hogere waarde zal langer nemen om weer te gegeven, maar zorgen voor objecten met meer detail. + +Licht Detail: Bepaald welke typen lichten u wenst weer te geven. + +Terrein Detail: Stelt de hoeveelheid detail in die u wilt zien voor het terrein textuur. + </notification> + <notification name="WLSavePresetAlert"> + Wilt u de opgeslagen voor instellingen overschrijven? + <usetemplate name="okcancelbuttons" notext="Nee" yestext="Ja"/> + </notification> + <notification name="WLDeletePresetAlert"> + Wilt u [SKY] verwijderen? + <usetemplate name="okcancelbuttons" notext="Nee" yestext="Ja"/> + </notification> + <notification name="WLNoEditDefault"> + U kunt de standaard instellingen niet wijzigen of verwijderen. + </notification> + <notification name="WLMissingSky"> + Dit dag cyclus bestand heeft een ontbrekend lucht bestand: [SKY]. + </notification> + <notification name="PPSaveEffectAlert"> + Voorbewerkingeffecten bestaan. Wilt u ze alsnog overschrijven? + <usetemplate name="okcancelbuttons" notext="Nee" yestext="Ja"/> + </notification> + <notification name="HelpEditSky"> + Wijzig de WindLight schuif knoppen en maak en sla een set van luchten op. + </notification> + <notification name="HelpEditDayCycle"> + Bepaald de luchten te gebruiken gedurende de dag. + </notification> + <notification name="EnvSettingsHelpButton"> + Deze instelling bepalen hoe de omgeving er uit ziet op uw computer. Uw grafische kaart zal grafische shaders moeten ondersteunen om toegang te krijgen tot alle instellingen. + +Wijzig de "Tijd van de Dag" schuif knop om de fase van de dag lokaal in de viewer aan te passen. + +Wijzig de "Wolken Dichtheid" schuif knop om de hoeveelheid wolken die de lucht bedekken in te stellen. + +Kies een kleur in de "Water Kleur" kleuren kiezer om de kleur van het water aan te passen. + +Wijzig de "Water Mist" schuif knop om de dichtheid van de mist onder water in te stellen. + +Klik op "Gebruik Estate Tijd" om de tijd van de dag te herstellen naar de huidige tijd en die te volgen. + +Klik op "Geavanceerde Lucht" om de editor op te roepen voor geavanceerde instellingen voor de lucht. + +Klik op "Geavanceerd Water" om de editor op te roepen voor geavanceerde instellingen voor water. + </notification> + <notification name="HelpDayCycle"> + De Dag Cyclus Editor geeft u controle over de lucht gedurende de Second Life's dag/nacht cyclus. Dit is de cyclus die gebruikt wordt in de Basis Omgeving Editor's Tijd van de Dag schuif knop. + +De Dag Cyclus Editor werkt beter met het instellen van gemarkeerde frames. Dit zijn nodes (weergegeven als grijze blips in de tijd weergave) die Hemel voorinstelling met zich geassocieerd hebben. Als de Tijd van de Dag voortschrijdt, "animeert" de WindLight Hemel als het interpoleert tussen de gemarkeerde frames. + +De gele pijlen boven de tijdlijn representeert uw huidige zicht, gebaseerd op de Tijd van de Dag. Klik en sleep deze om te zien hoe uw dag zal animeren. U kunt gemarkeerde frames toe voegen of verwijderen middels het indrukken van de Frame Toevoegen of Frame Verwijderen knoppen, rechts van de tijdlijn. + +U kunt de tijds positie van een gemarkeerd frame instellen door het te slepen over de tijdlijn of middels het handmatig invullen van de Gemarkeerde Frame Instellingen. Binnen de Gemarkeerde Frame Instellingen krijgt u de mogelijkheid het gemarkeerde frame te associëren met de respectievelijke WindLight voorinstelling. + +De lengte van de Cyclus bepaald de totale tijdsduur van een "dag". Stelt u dit in op een lage waarde (bijv. twee minuten) betekend dat uw volledig 24 uurs tijdlijn zal animeren in slechts twee minuten! Als u tevreden bent met uw tijdlijn en gemarkeerde frame cyclus, gebruik dan de Start en Stop knoppen om het resultaat voor te beschouwen. Onthoud dat u ook de gele tijd indicator pijl boven de tijdlijn kunt bewegen om de animatie cyclus interactief te bekijken. Het gebruik van de Estate Tijd knop zal de lengte en tijd van uw dag synchroniseren met de Estate's dag cyclus. + +Als u tevreden bent met uw Dag Cyclus, kunt het opslaan en laden met de Test Dag Opslaan en Laad Test Dag knoppen. Merk op, dat wij momenteel slechts één Dag Cyclus toestaan. + </notification> + <notification name="HelpBlueHorizon"> + Gebruik de Rood/Groen/Blauw schuif knoppen om de kleur van de hemel aan te passen. U kunt de Intensiteit (I) schuif knop gebruiken om alle drie de schuif knoppen tegelijk te bewegen. + </notification> + <notification name="HelpHazeHorizon"> + Nevel Horizon is één van de meest handige parameters voor de algehele belichting in de scène. Het is effectief om de vele belichting instellingen te simuleren, zoals wit-vlakken van de zon en donkere gesloten iris instellingen. + </notification> + <notification name="HelpBlueDensity"> + Blauw Dichtheid beïnvloed de algehele kleur verzadiging van de hemel en mist. Indien u de Intensiteit (I) schuif knop naar rechts schuift, zullen de kleuren lichter en sprekender worden. Indien u het geheel naar links schuift, worden de kleuren doffer, uiteindelijk vervagend naar zwart en wit. Als u de hemel kleur nauwkeurig wilt uitbalanceren, kunt u de individuele elementen van verzadiging instellen door gebruik van de Rood/Groen/Blauw (RGB) schuif knoppen. + </notification> + <notification name="HelpHazeDensity"> + Nevel Dichtheid bepaald de hoeveelheid dofheid, grijze nevel in de atmosfeer. Het is effectief om scènes met veel rook of zelf gemaakte vervuiling te simuleren. Het is ook effectief voor het simuleren van nevel en mist. + </notification> + <notification name="HelpDensityMult"> + De Dichtheid Vermeerderaar kan gebruikt worden om de algehele dichtheid van de atmosfeer te beïnvloeden. +Bij lagere instelling creëert het een gevoel van "dunne lucht" en met hogere instellingen een dik zwaar smog effect. + </notification> + <notification name="HelpDistanceMult"> + Stelt de WindLight's waargenomen afstand in. Een waarde van nul stopt de invloed van WindLight op terrein en objecten. Waarden groter dan 1 simuleren grotere afstanden voor dikkere atmosferische effecten. + </notification> + <notification name="HelpMaxAltitude"> + Maximale Hoogte bepaald de hoogte calculaties die WindLight uitvoert bij het berekenen van de atmosferische belichting. Later op de dag is het handig om de "diepte" van de zonsondergang weergave in te stellen. + </notification> + <notification name="HelpSunlightColor"> + Stelt de kleur en intensiteit in van direct licht in de scène. + </notification> + <notification name="HelpSunAmbient"> + Stelt de kleur en intensiteit in van het omgevings atmosferische licht in de scène. + </notification> + <notification name="HelpSunGlow"> + De Afmeting schuif knop stelt de afmeting van de zon in. +De Focus schuif knop bepaald de wazigheid van de zon aan de hemel. + </notification> + <notification name="HelpSceneGamma"> + Wijzigt de verdeling van licht op het scherm in licht of donker. + </notification> + <notification name="HelpStarBrightness"> + Wijzigt de helderheid van sterren aan de hemel. + </notification> + <notification name="HelpTimeOfDay"> + Bepaald de locatie van de zon aan de hemel. +Gelijkwaardig aan elevatie. + </notification> + <notification name="HelpEastAngle"> + Bepaald de locatie van de zon aan de hemel. +Gelijkwaardig aan azimut. + </notification> + <notification name="HelpCloudColor"> + Wijzigt de kleur van de wolken. Het is algemeen aanbevolen deze wit-achtig te houden, maar hé, heb plezier als u dit wilt. + </notification> + <notification name="HelpCloudDetail"> + Bepaald het detail plaatje als laag bovenop het basis wolken plaatje. X en Y bepalen de positie. D (Dichtheid) bepaald hoe wollig of verspreid de wolken verschijnen. + </notification> + <notification name="HelpCloudDensity"> + Geeft u de mogelijkheid de positie van wolken met de X en Y schuif knoppen in te stellen en hoe dicht ze zijn met de D schuif knop. + </notification> + <notification name="HelpCloudCoverage"> + Bepaald hoeveel de wolken de hemel bedekken. + </notification> + <notification name="HelpCloudScale"> + Bepaald de schaal van het wolken plaatje op de hemelboog. + </notification> + <notification name="HelpCloudScrollX"> + Bepaald de snelheid van de wolken terwijl zij in X richting bewegen. + </notification> + <notification name="HelpCloudScrollY"> + Bepaald de snelheid van de wolken terwijl zij in Y richting bewegen. + </notification> + <notification name="HelpClassicClouds"> + Vink dit aan voor weergave van Second Life's oudere klassieke wolken als toevoeging op WindLight's wolken. + </notification> + <notification name="HelpWaterFogColor"> + Kiest de kleur van de onder water nevel. + </notification> + <notification name="HelpWaterFogDensity"> + Bepaald hoe dicht de water nevel is en hoe ver u kunt zien onder water. + </notification> + <notification name="HelpUnderWaterFogMod"> + Past het effect aan van de Nevel Dichtheid Exponent om zo te bepalen hoe ver uw avatar onder water kan zien. + </notification> + <notification name="HelpWaterGlow"> + Bepaald hoeveel het oppervlak van het water gloeit. + </notification> + <notification name="HelpWaterNormalScale"> + Bepaald de schaling van de drie wavelets (golf patronen) die samen water vormen. + </notification> + <notification name="HelpWaterFresnelScale"> + Bepaald hoeveel licht er wordt gereflecteerd onder verschillende hoeken. + </notification> + <notification name="HelpWaterFresnelOffset"> + Bepaald de hoeveelheid licht intensiteit welke wordt gereflecteerd. + </notification> + <notification name="HelpWaterScaleAbove"> + Bepaald hoeveel licht er wordt weerkaatst wanneer van bovenop het water oppervlak gezien. + </notification> + <notification name="HelpWaterScaleBelow"> + Bepaald hoeveel licht er wordt weerkaatst wanneer van onder het water oppervlak gezien. + </notification> + <notification name="HelpWaterBlurMultiplier"> + Bepaald hoe golven en reflectie worden ge mixed. + </notification> + <notification name="HelpWaterNormalMap"> + Bepaald welke Normaal map gelaagd is over het water om de reflectie/weerkaatsing te bepalen. + </notification> + <notification name="HelpWaterWave1"> + Bepaald waar en hoe snel de grote schaal versie van de Normaal map beweegt in X en Y richting. + </notification> + <notification name="HelpWaterWave2"> + Bepaald waar en hoe snel de kleine schaal versie van de Normaal map beweegt in X en Y richting. + </notification> + <notification name="NewSkyPreset"> + Geef een naam op voor de nieuwe lucht. + <form name="form"> + <input name="message" type="text"> + Nieuwe Voorinstelling + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Annuleren"/> + </form> + </notification> + <notification name="ExistsSkyPresetAlert"> + Voorinstelling bestaat al! + </notification> + <notification name="NewWaterPreset"> + Geef een naam voor de nieuwe voorinstelling van water. + <form name="form"> + <input name="message" type="text"> + Nieuwe Voorinstelling + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Annuleren"/> + </form> + </notification> + <notification name="ExistsWaterPresetAlert"> + Voorinstelling bestaat al! + </notification> + <notification name="WaterNoEditDefault"> + u kunt de standaard voorinstelling niet wijzigen of verwijderen. + </notification> + <notification name="ChatterBoxSessionStartError"> + Kan geen nieuwe chat sessie starten met [RECIPIENT]. +[REASON] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ChatterBoxSessionEventError"> + [EVENT] +[REASON] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ForceCloseChatterBoxSession"> + Uw chat sessie met [NAME] zal moeten worden gesloten. +[REASON] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="Cannot_Purchase_an_Attachment"> + Items kunnen niet worden gekocht indien ze deel uit maken van een Bevestiging. + </notification> + <notification label="Over verzoeken voor debet permissies" name="DebitPermissionDetails"> + Toestemming geven aan dit script geeft het object een onbeperkte permissie om Linden dollars (L$) uit uw account te nemen! +Om dit recht in te trekken, moet de object eigenaar het object verwijderen of de scripts in het object opnieuw instellen. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="AutoWearNewClothing"> + Wilt u de kleding items die u maakt automatisch aantrekken? + <usetemplate ignoretext="Automatisch nieuwe kleding aantrekken" name="okcancelignore" notext="Nee" yestext="Ja"/> + </notification> + <notification name="NotAgeVerified"> + U moet leeftijd geverifieerd zijn om toegang te verkrijgen tot dit perceel. +Wilt u de Second Life website bezoeken om uw leeftijd te verifiëren? + +[_URL] + <url name="url" option="0"> + https://secondlife.com/account/verification.php + </url> + <usetemplate ignoretext="Waarschuw voor gebrek aan leeftijd verificatie" name="okcancelignore" notext="Nee" yestext="Ja"/> + </notification> + <notification name="Cannot enter parcel: no payment info on file"> + Dit perceel verlangd dat u betaal informatie geregistreerd hebt staan alvorens toegang te verkrijgen. +Wilt u de Second Life website bezoeken om dit in te stellen? + +[_URL] + <url name="url" option="0"> + https://secondlife.com/account/index.php?lang=nl + </url> + <usetemplate ignoretext="Waarschuw voor gebrek aan betaal informatie" name="okcancelignore" notext="Nee" yestext="Ja"/> + </notification> + <notification name="MissingString"> + De tekst [STRING_NAME] ontbreekt in strings.xml + </notification> + <notification name="SystemMessageTip"> + [MESSAGE] + </notification> + <notification name="Cancelled"> + Geannuleerd + </notification> + <notification name="CancelledSit"> + Zitten geannuleerd + </notification> + <notification name="CancelledAttach"> + Bevestigen geannuleerd + </notification> + <notification name="ReplacedMissingWearable"> + Missend kleding/lichaamsdeel is vervangen door standaard. + </notification> + <notification name="GroupNotice"> + Onderwerp: [SUBJECT], Bericht: [MESSAGE] + </notification> + <notification name="FriendOnline"> + [FIRST] [LAST] is Online + </notification> + <notification name="FriendOffline"> + [FIRST] [LAST] is Offline + </notification> + <notification name="AddSelfFriend"> + U kunt uzelf niet als vriend toevoegen. + </notification> + <notification name="UploadingAuctionSnapshot"> + In-wereld en website foto's worden geüpload... +(Duurt ongeveer 5 minuten.) + </notification> + <notification name="UploadPayment"> + U heeft L$[AMOUNT] betaald om te uploaden. + </notification> + <notification name="UploadWebSnapshotDone"> + Upload van website foto is gereed. + </notification> + <notification name="UploadSnapshotDone"> + Upload van in-wereld foto is gereed. + </notification> + <notification name="TerrainDownloaded"> + Terrain.raw gedownload + </notification> + <notification name="GestureMissing"> + Gebaar [NAME] mist in de database. + </notification> + <notification name="UnableToLoadGesture"> + Kan gebaar [NAME] niet laden. Probeer het a.u.b. opnieuw. + </notification> + <notification name="LandmarkMissing"> + Landmarkering mist in de database. + </notification> + <notification name="UnableToLoadLandmark"> + Kan landmarkering niet laden. Probeer het a.u.b. opnieuw. + </notification> + <notification name="CapsKeyOn"> + Uw Caps Lock toets staat aan. Aangezien dit effect heeft op het wachtwoord dat u intypt, zult u het wellicht willen uitzetten. + </notification> + <notification name="NotecardMissing"> + Notitiekaart mist in de database. + </notification> + <notification name="NotecardNoPermissions"> + Onvoldoende permissies om de notitiekaart te bekijken. + </notification> + <notification name="RezItemNoPermissions"> + Onvoldoende permissies om het object te rezzen. + </notification> + <notification name="UnableToLoadNotecard"> + Kan op dit moment notitiekaart inhoud niet laden. + </notification> + <notification name="ScriptMissing"> + Script mist in de database. + </notification> + <notification name="ScriptNoPermissions"> + Onvoldoende permissies om het script te bekijken. + </notification> + <notification name="UnableToLoadScript"> + Kan script niet laden. Probeer het a.u.b. opnieuw. + </notification> + <notification name="IncompleteInventory"> + De complete inhoud die u aanbiedt is nog niet lokaal beschikbaar. Probeer die items over een minuut nogmaals aan te bieden. + </notification> + <notification name="CannotModifyProtectedCategories"> + U kunt geen beschermde categorieën wijzigen. + </notification> + <notification name="CannotRemoveProtectedCategories"> + U kunt geen beschermde categorieën verwijderen. + </notification> + <notification name="OfferedCard"> + U heeft een visitekaartje aangeboden aan [FIRST] [LAST] + </notification> + <notification name="UnableToBuyWhileDownloading"> + Niet mogelijk te kopen terwijl objectdata wordt gedownload. Probeer het alstublieft opnieuw. + </notification> + <notification name="UnableToLinkWhileDownloading"> + Niet mogelijk om te koppelen terwijl objectdata wordt gedownload. Probeer het alstublieft opnieuw. + </notification> + <notification name="CannotBuyObjectsFromDifferentOwners"> + Kan geen objecten van meerdere eigenaren op hetzelfde moment kopen. Selecteer alstublieft een enkel object. + </notification> + <notification name="ObjectNotForSale"> + Object lijkt niet te koop. + </notification> + <notification name="EnteringGodMode"> + God modus binnengaan, niveau [LEVEL] + </notification> + <notification name="LeavingGodMode"> + God modus verlaten, niveau [LEVEL] + </notification> + <notification name="CopyFailed"> + Kopiëren mislukt omdat u geen kopieerpermissie bezit. + </notification> + <notification name="InventoryAccepted"> + [NAME] heeft uw inventarisaanbod geaccepteerd. + </notification> + <notification name="InventoryDeclined"> + [NAME] heeft uw inventarisaanbod afgewezen. + </notification> + <notification name="ObjectMessage"> + [NAME]: [MESSAGE] + </notification> + <notification name="CallingCardAccepted"> + Uw visitekaartje is geaccepteerd. + </notification> + <notification name="CallingCardDeclined"> + Uw visite kaart is afgewezen. + </notification> + <notification name="TeleportToLandmark"> + Nu u het mainland bereikt heeft, kunt u teleporteren naar locaties als '[NAME]' door op de Inventaris knop rechtsonder in uw scherm te klikken en dan de Landmarkeringen map te selecteren. Dubbelklik op de landmarkering en klik op Teleport om ernaartoe te reizen. + </notification> + <notification name="TeleportToPerson"> + Nu u het mainland bereikt heeft, kunt u contact opnemen met inwoners als '[NAME]' door op de Inventaris knop rechtsonder in uw scherm te klikken en dan de Visitekaartjes map te selecteren. Dubbelklik op het visitekaartje, klik op Instant Message en type een bericht. + </notification> + <notification name="CantSelectLandFromMultipleRegions"> + Kan geen land selecteren over servergrenzen. +Probeer een kleiner stuk land te selecteren. + </notification> + <notification name="SearchWordBanned"> + Sommige termen in uw zoekopdracht werden uitgesloten vanwege inhoudbeperkingen zoals beschreven in de Gemeenschap Standaarden. + </notification> + <notification name="NoContentToSearch"> + Selecteer alstublieft minstens een type inhoud om te zoeken (PG, Mature of Adult). + </notification> + <notification name="GroupVote"> + [NAME] heeft voorgesteld om te stemmen over: +[MESSAGE] + <form name="form"> + <button name="VoteNow" text="Stem Nu"/> + <button name="Later" text="Later"/> + </form> + </notification> + <notification name="SystemMessage"> + [MESSAGE] + </notification> + <notification name="EventNotification"> + Evenement Bericht: + +[NAME] +[DATE] + <form name="form"> + <button name="Teleport" text="Teleport"/> + <button name="Description" text="Omschrijving"/> + <button name="Cancel" text="Annuleren"/> + </form> + </notification> + <notification name="TransferObjectsHighlighted"> + Alle objecten op dit perceel die zullen worden overgedragen aan de koper van dit perceel zijn nu opgelicht. + +* Bomen en grassen die worden overgedragen zijn niet opgelicht. + <form name="form"> + <button name="Done" text="Gereed"/> + </form> + </notification> + <notification name="DeactivatedGesturesTrigger"> + Deactiveren van gebaren met dezelfde trigger: +[NAMES] + </notification> + <notification name="NoQuickTime"> + De QuickTime software van Apple schijnt niet op uw systeem geïnstalleerd te zijn. +Indien u streaming media wilt zien op percelen die dit ondersteunen, dient u naar de QuickTime webpagina te gaan (http://www.apple.com/QuickTime) en de QuickTime Player te installeren. + </notification> + <notification name="OwnedObjectsReturned"> + De objecten die uw eigendom zijn op het geselecteerde perceel zijn geretourneerd naar uw inventaris. + </notification> + <notification name="OtherObjectsReturned"> + De objecten op het geselecteerde perceel dat het eigendom is van [FIRST] [LAST], zijn geretourneerd naar zijn of haar inventaris. + </notification> + <notification name="OtherObjectsReturned2"> + De objecten op het geselecteerde perceel dat het eigendom is van inwoner '[NAME]', zijn geretourneerd naar hun eigenaar. + </notification> + <notification name="GroupObjectsReturned"> + De objecten op het geselecteerde perceel dat gedeeld is met de groep [GROUPNAME] zijn geretourneerd naar de inventaris van hun eigenaar. +Overdraagbare objecten die eigendom zijn van de groep zijn geretourneerd naar hun voormalige eigenaren. +Niet-overdraagbare objecten die eigendom zijn van de groep zijn verwijderd. + </notification> + <notification name="UnOwnedObjectsReturned"> + De objecten op het geselecteerde perceel die NIET uw eigendom zijn, zijn geretourneerd naar hun eigenaren. + </notification> + <notification name="NotSafe"> + Op dit land is letsel ingeschakeld ('niet veilig'). +U kunt hier letsel oplopen. Indien u sterft, zult u naar uw thuis locatie worden geteleporteerd. + </notification> + <notification name="NoFly"> + Op dit land is vliegen uitgeschakeld ('niet vliegen'). +U kunt hier niet vliegen. + </notification> + <notification name="PushRestricted"> + Dit land is 'Niet Duwen'. +U kunt geen anderen duwen, tenzij u het land bezit. + </notification> + <notification name="NoVoice"> + Op dit land is voice uitgeschakeld. + </notification> + <notification name="NoBuild"> + Op dit land is bouwen uitgeschakeld ('niet bouwen'). +U kunt hier geen objecten creëren. + </notification> + <notification name="ScriptsStopped"> + Een beheerder heeft scripts in deze regio tijdelijk gestopt. + </notification> + <notification name="ScriptsNotRunning"> + In deze regio worden geen scripts uitgevoerd. + </notification> + <notification name="NoOutsideScripts"> + Op dit land zijn externe scripts uitgeschakeld (geen externe scripts). +Geen scripts zullen worden uitgevoerd, behalve scripts die toebehoren aan de landeigenaar. + </notification> + <notification name="ClaimPublicLand"> + Kan alleen publiek land claimen in de regio waar u aanwezig bent. + </notification> + <notification name="RegionTPAccessBlocked"> + U bent niet toegestaan in die regio vanwege uw inhoudscategorie. Wellicht dient u uw leeftijd te valideren en/of de nieuwste viewer te installeren. + +Gaat u alstublieft naar de kennisbank voor details over het betreden van gebieden met deze inhoudscategorie. + </notification> + <notification name="URBannedFromRegion"> + U bent uit deze regio verbannen. + </notification> + <notification name="NoTeenGridAccess"> + Uw account kan geen verbinding maken met deze teen grid regio. + </notification> + <notification name="NoHelpIslandTP"> + U kunt niet terug teleporteren naar Help Island. Ga naar 'Help Island Public' om de handleiding te herhalen. + </notification> + <notification name="ImproperPaymentStatus"> + U heeft niet de juiste betalingstatus om deze regio binnen te gaan. + </notification> + <notification name="MustGetAgeRgion"> + U moet leeftijd geverifieerd zijn om deze regio binnen te gaan. + </notification> + <notification name="MustGetAgeParcel"> + U moet leeftijd geverifieerd zijn om dit perceel binnen te gaan. + </notification> + <notification name="NoDestRegion"> + Geen bestemmingsregio gevonden. + </notification> + <notification name="NotAllowedInDest"> + U wordt niet op de bestemming toegelaten. + </notification> + <notification name="RegionParcelBan"> + Kan niet naar de regio oversteken in een verbannen perceel. Probeer het op een andere manier. + </notification> + <notification name="TelehubRedirect"> + U bent doorverwezen naar een telehub. + </notification> + <notification name="CouldntTPCloser"> + Kan niet dichter bij bestemming teleporteren. + </notification> + <notification name="TPCancelled"> + Teleport geannuleerd. + </notification> + <notification name="FullRegionTryAgain"> + De regio die u probeert binnen te gaan is momenteel vol. +Probeer het alstublieft opnieuw over enkele ogenblikken. + </notification> + <notification name="GeneralFailure"> + Algemene fout. + </notification> + <notification name="RoutedWrongRegion"> + Gerouteerd naar de verkeerde regio. Probeer het alstublieft opnieuw. + </notification> + <notification name="NoValidAgentID"> + Geen geldige agent ID. + </notification> + <notification name="NoValidSession"> + Geen geldige sessie ID. + </notification> + <notification name="NoValidCircuit"> + Geen geldige circuit code. + </notification> + <notification name="NoValidTimestamp"> + Geen geldige tijdstempel. + </notification> + <notification name="NoPendingConnection"> + Kan wachtende verbinding niet maken. + </notification> + <notification name="InternalUsherError"> + Er is een interne fout opgetreden terwijl geprobeerd werd u naar uw teleportbestemming te begeleiden. Second Life heeft op dit moment mogelijk problemen met de dienstverlening. + </notification> + <notification name="NoGoodTPDestination"> + Kan geen goede teleportbestemming vinden in deze regio. + </notification> + <notification name="InternalErrorRegionResolver"> + Er is een interne fout opgetreden terwijl de globale coördinaten voor uw teleportverzoek werden bepaald. Second Life heeft op dit moment mogelijk problemen met de dienstverlening. + </notification> + <notification name="NoValidLanding"> + Er kon geen geldig landingspunt worden gevonden. + </notification> + <notification name="NoValidParcel"> + Geen geldig perceel kon gevonden worden. + </notification> + <notification name="ObjectGiveItem"> + Een object genaamd [OBJECTFROMNAME], eigendom van [FIRST] [LAST], heeft u een [OBJECTTYPE] genaamd [OBJECTNAME] gegeven. + <form name="form"> + <button name="Keep" text="Behouden"/> + <button name="Discard" text="Afwijzen"/> + <button name="Mute" text="Negeren"/> + </form> + </notification> + <notification name="ObjectGiveItemUnknownUser"> + Een object genaamd [OBJECTFROMNAME], eigendom van (een onbekende gebruiker), heeft u een [OBJECTTYPE] genaamd [OBJECTNAME] gegeven. + <form name="form"> + <button name="Keep" text="Behouden"/> + <button name="Discard" text="Afwijzen"/> + <button name="Mute" text="Negeren"/> + </form> + </notification> + <notification name="UserGiveItem"> + [NAME] heeft u een [OBJECTTYPE] genaamd '[OBJECTNAME]' gegeven. + <form name="form"> + <button name="Keep" text="Behouden"/> + <button name="Discard" text="Afwijzen"/> + <button name="Mute" text="Negeren"/> + </form> + </notification> + <notification name="GodMessage"> + [NAME] +[MESSAGE] + </notification> + <notification name="JoinGroup"> + [MESSAGE] + <form name="form"> + <button name="Join" text="Deelnemen"/> + <button name="Decline" text="Afwijzen"/> + <button name="Info" text="Info"/> + </form> + </notification> + <notification name="TeleportOffered"> + [NAME] heeft aangeboden u te teleporteren naar zijn of haar locatie: + +[MESSAGE] + <form name="form"> + <button name="Teleport" text="Teleport"/> + <button name="Cancel" text="Annuleren"/> + </form> + </notification> + <notification name="GotoURL"> + [MESSAGE] +[URL] + <form name="form"> + <button name="Later" text="Later"/> + <button name="GoNow..." text="Ga Nu..."/> + </form> + </notification> + <notification name="OfferFriendship"> + [NAME] biedt vriendschap aan. + +[MESSAGE] + +(Standaard zult u in staat zijn om elkaars online status te zien.) + <form name="form"> + <button name="Accept" text="Accepteren"/> + <button name="Decline" text="Afwijzen"/> + </form> + </notification> + <notification name="OfferFriendshipNoMessage"> + [NAME] biedt vriendschap aan. + +(Standaard zult u in staat zijn om elkaars online status te zien.) + <form name="form"> + <button name="Accept" text="Accepteren"/> + <button name="Decline" text="Afwijzen"/> + </form> + </notification> + <notification name="FriendshipAccepted"> + [NAME] heeft uw vriendschapsaanbod geaccepteerd. + </notification> + <notification name="FriendshipDeclined"> + [NAME] heeft uw vriendschapsaanbod afgewezen. + </notification> + <notification name="OfferCallingCard"> + [FIRST] [LAST] biedt zijn/haar visitekaartje aan. +Dit zal een bladwijzer in uw inventaris toevoegen zodat u deze inwoner snel kunt een IM kunt sturen. + <form name="form"> + <button name="Accept" text="Accepteren"/> + <button name="Decline" text="Afwijzen"/> + </form> + </notification> + <notification name="RegionRestartMinutes"> + De regio zal over [MINUTES] minuten herstarten. +Indien u in deze regio blijft, zult u worden uitgelogd. + </notification> + <notification name="RegionRestartSeconds"> + De regio zal over [SECONDS] seconden herstarten. +Indien u in deze regio blijft, zult u worden uitgelogd. + </notification> + <notification name="LoadWebPage"> + Laad webpagina [URL]? + +[MESSAGE] + +Van object: [OBJECTNAME], eigenaar: [NAME]? + <form name="form"> + <button name="Gotopage" text="Laden"/> + <button name="Cancel" text="Annuleren"/> + </form> + </notification> + <notification name="FailedToFindWearableUnnamed"> + Kon [TYPE] niet in de database vinden. + </notification> + <notification name="FailedToFindWearable"> + Kon [TYPE] genaamd [DESC] niet in de database vinden. + </notification> + <notification name="InvalidWearable"> + Het item dat u probeert te dragen gebruikt een kenmerk dat uw viewer niet kan lezen. Upgrade u alstublieft uw versie van Second Life om dit item te dragen. + </notification> + <notification name="ScriptQuestion"> + [OBJECTNAME]', een object van '[NAME]', wil graag: + +[QUESTIONS] +Is dit OK? + <form name="form"> + <button name="Yes" text="Ja"/> + <button name="No" text="Nee"/> + <button name="Mute" text="Negeren"/> + </form> + </notification> + <notification name="ScriptQuestionCaution"> + [OBJECTNAME]', een object van '[NAME]', wil graag + +[QUESTIONS] +Indien u dit object en zijn maker niet vertrouwt, zou u het verzoek moeten weigeren. Klik de Details knop voor additionele informatie. + +Dit verzoek inwilligen? + <form name="form"> + <button name="Grant" text="Inwilligen"/> + <button name="Deny" text="Weigeren"/> + <button name="Details" text="Details..."/> + </form> + </notification> + <notification name="ScriptDialog"> + [FIRST] [LAST]'s '[TITLE]' +[MESSAGE] + <form name="form"> + <button name="Ignore" text="Negeren"/> + </form> + </notification> + <notification name="ScriptDialogGroup"> + [GROUPNAME]'s '[TITLE]' +[MESSAGE] + <form name="form"> + <button name="Ignore" text="Negeren"/> + </form> + </notification> + <notification name="FirstBalanceIncrease"> + U heeft zojuist L$[AMOUNT] ontvangen. +Objecten en andere gebruikers kunnen u L$ geven. +Uw saldo wordt in de rechterbovenhoek van het scherm getoond. + </notification> + <notification name="FirstBalanceDecrease"> + U heeft zojuist L$[AMOUNT] betaald. +Uw saldo wordt in de rechterbovenhoek van het scherm getoond. + </notification> + <notification name="FirstSit"> + U zit. +Gebruik de pijltjestoetsen (of AWSD) of uw gezichtsveld te wijzigen. +Klik de 'Sta Op' knop om op te staan. + </notification> + <notification name="FirstMap"> + Klik en sleep om de kaart te verplaatsen. +Dubbelklik om te teleporteren. +Gebruik de bedieningselementen aan de rechterkant om dingen te vinden en verschillende achtergronden te tonen. + </notification> + <notification name="FirstBuild"> + U kunt nieuwe objecten bouwen in sommige gebieden van [SECOND_LIFE]. +Gebruik de gereedschappen in de linkerbovenhoek om te bouwen en probeer Ctrl en Alt ingedrukt te houden om snel tussen gereedschappen te wisselen. +Druk Esc om te stoppen met bouwen. + </notification> + <notification name="FirstLeftClickNoHit"> + Links-klikken werkt in op speciale objecten. +Indien de muisaanwijzer verandert in een hand, kunt u interacteren met het object. +Rechts-klikken toont altijd een menu van dingen die u kunt doen. + </notification> + <notification name="FirstTeleport"> + Deze regio staat geen point-to-point teleport toe, dus u bent naar de dichtstbijzijnde telehub getransporteerd. +Uw bestemming is gemarkeerd met een groot baken. +Volg de rode pijl naar het baken, of klik de pijl om het baken te verwijderen. + </notification> + <notification name="FirstOverrideKeys"> + Uw bewegingstoetsen worden nu door een object afgehandeld. +Probeer de pijltjestoetsen of AWSD om te zien wat ze doen. +Sommige objecten (zoals geweren) vereisen dat u in mouselook gaat om ze te gebruiken. +Druk 'M' om dit te doen. + </notification> + <notification name="FirstAppearance"> + U bent uw uiterlijk aan het bewerken. +Gebruik de pijltjestoetsen om uw gezichtsveld te draaien en te zoomen. +Druk 'Alles Opslaan' om uw uiterlijk op te slaan wanneer u klaar bent. +U kunt uw uiterlijk zo vaak als u wil bewerken. + </notification> + <notification name="FirstInventory"> + Dit is uw inventaris, die objecten, notitiekaarten, kleding en andere eigendommen bevat. +* Om een object of een kleding-map te dragen, sleep het op uzelf. +* Om een object in de wereld te brengen, sleep het op de grond. +* Om een notitiekaart te lezen, dubbelklik erop. + </notification> + <notification name="FirstSandbox"> + Dit is een zandbak regio. +Objecten die u hier bouwt, kunnen worden verwijderd nadat u het gebied verlaat. Zandbakken schonen op regelmatige basis, kijk alstublieft naar de informatie aan de bovenkant van het scherm, naast de regionaam. + +Zandbak regio's zijn ongewoon en gemarkeerd met borden. + </notification> + <notification name="FirstFlexible"> + Dit object is flexibel. +Flexibele objecten mogen niet fysiek zijn en moeten fantoom zijn tot de 'flexibel' checkbox wordt uitgezet. + </notification> + <notification name="FirstDebugMenus"> + U heeft het menu Geavanceerd geactiveerd. +Dit menu bevat opties die handig zijn voor ontwikkelaars tijdens het debuggen van Second Life. +Om dit menu in en uit te schakelen drukt u binnen Windows Ctrl-Alt-D. Met een Mac drukt u Cmd-Opt-Shift-D. + </notification> + <notification name="FirstSculptedPrim"> + U bent een sculpted prim aan het bewerken. +Sculpted prims vereisen een speciaal textuur om hun vorm te bepalen. +U kunt voorbeelden van sculpt-texturen in de inventaris bibliotheek vinden. + </notification> + <notification name="FirstMedia"> + U bent begonnen met het afspelen van media. In het Voorkeurenvenster, onder Audio / Video, kan media worden ingesteld om automatisch te beginnen met afspelen. Let op dat dit een beveiligingsrisico kan zijn voor media sites die u niet vertrouwt. + </notification> + <notification name="MaxListSelectMessage"> + U mag slecht maximaal [MAX_SELECT] items van deze lijst kiezen. + </notification> + <notification name="VoiceInviteP2P"> + [NAME] nodigt u uit voor een Voice chat gesprek. +Klik Accepteren om deel te nemen aan dit gesprek of Afwijzen om de uitnodiging af te wijzen. Klik Negeren om deze persoon te negeren. + <form name="form"> + <button name="Accept" text="Accepteren"/> + <button name="Decline" text="Afwijzen"/> + <button name="Mute" text="Negeren"/> + </form> + </notification> + <notification name="AutoUnmuteByIM"> + Er is een instant message naar [FIRST] [LAST] gestuurd, waardoor deze automatisch van de negeerlijst is gehaald. + </notification> + <notification name="AutoUnmuteByMoney"> + Er is geld gegeven aan [FIRST] [LAST], waardoor deze automatisch van de negeerlijst is gehaald. + </notification> + <notification name="AutoUnmuteByInventory"> + Er is inventaris aangeboden aan [FIRST] [LAST], waardoor deze automatisch van de negeerlijst is gehaald. + </notification> + <notification name="VoiceInviteGroup"> + [NAME] doet nu mee met een Voice chat gesprek binnen de groep [GROUP]. +Klik Accepteren om deel te nemen aan het gesprek of Afwijzen om de uitnodiging af te wijzen. Klik Negeren om deze persoon te negeren. + <form name="form"> + <button name="Accept" text="Accepteren"/> + <button name="Decline" text="Afwijzen"/> + <button name="Mute" text="Negeren"/> + </form> + </notification> + <notification name="VoiceInviteAdHoc"> + [NAME] doet nu mee met een Voice chat gesprek binnen een conferentie chat. +Klik Accepteren om deel te nemen aan het gesprek of Afwijzen om de uitnodiging af te wijzen. Klik Negeren om deze persoon te negeren. + <form name="form"> + <button name="Accept" text="Accepteren"/> + <button name="Decline" text="Afwijzen"/> + <button name="Mute" text="Negeren"/> + </form> + </notification> + <notification name="InviteAdHoc"> + [NAME] nodigt u uit voor een conferentie chat. +Klik Accepteren om deel te nemen aan de chat of Afwijzen om de uitnodiging af te wijzen. Klik Negeren om deze persoon te negeren. + <form name="form"> + <button name="Accept" text="Accepteren"/> + <button name="Decline" text="Afwijzen"/> + <button name="Mute" text="Negeren"/> + </form> + </notification> + <notification name="VoiceChannelFull"> + Het voice gesprek waaraan u probeert deel te nemen, [VOICE_CHANNEL_NAME], heeft zijn maximale capaciteit bereikt. Probeert u het alstublieft later nog een keer. + </notification> + <notification name="ProximalVoiceChannelFull"> + Onze excuses. Dit gebied heeft zijn maximale capaciteit voor voice conversaties bereikt. Probeert u alstublieft voice te gebruiken in een ander gebied. + </notification> + <notification name="VoiceChannelDisconnected"> + U bent niet meer verbonden met [VOICE_CHANNEL_NAME]. U zult weer worden verbonden met spatiale voice chat. + </notification> + <notification name="VoiceChannelDisconnectedP2P"> + [VOICE_CHANNEL_NAME] heeft het gesprek beëindigd. U zult weer worden verbonden met spatiale voice chat. + </notification> + <notification name="P2PCallDeclined"> + [VOICE_CHANNEL_NAME] heeft uw oproep afgewezen. U zult weer worden verbonden met spatiale voice chat. + </notification> + <notification name="P2PCallNoAnswer"> + [VOICE_CHANNEL_NAME] is niet beschikbaar om uw oproep aan te nemen. U zult weer worden verbonden met spatiale voice chat. + </notification> + <notification name="VoiceChannelJoinFailed"> + Verbinden met [VOICE_CHANNEL_NAME] is mislukt, probeert u het later alstublieft nog een keer. U zult weer worden verbonden met spatiale voice chat. + </notification> + <notification name="VoiceLoginRetry"> + We zijn bezig om een voice kanaal voor u te maken. Dit kan tot een minuut duren. + </notification> + <notification name="Cannot enter parcel: not a group member"> + Kan het perceel niet betreden, u bent geen lid van de juiste groep. + </notification> + <notification name="Cannot enter parcel: banned"> + Kan het perceel niet betreden, u bent verbannen. + </notification> + <notification name="Cannot enter parcel: not on access list"> + Kan het perceel niet betreden, u staat niet op de toegangslijst. + </notification> + <notification name="VoiceNotAllowed"> + U heeft geen permissie om met voice chat te verbinden voor [VOICE_CHANNEL_NAME]. + </notification> + <notification name="VoiceCallGenericError"> + Er is een fout opgetreden tijdens het verbinden met voice chat voor [VOICE_CHANNEL_NAME]. Probeert u het later alstublieft opnieuw. + </notification> + <notification name="ServerVersionChanged"> + De regio die u bent binnengetreden wordt onder een andere simulatorversie uitgevoerd. Klik dit bericht voor meer details. + </notification> + <notification name="UnableToOpenCommandURL"> + De URL die u heeft geklikt kan niet binnen deze webbrowser worden geopend. + </notification> + <global name="UnsupportedCPU"> + - Uw Processor snelheid (CPU) voldoet niet aan de minimale eisen. + </global> + <global name="UnsupportedGLRequirements"> + U heeft mogelijk niet de vereiste hardware voor Second Life. Second Life verlangd een OpenGL grafische kaart die multi-texture ondersteund. Indien dat het geval is, overtuig u er dan van dat u de laatste stuurprogramma's voor uw grafische kaart, service packs en patches voor uw Operating systeem heeft. + +Indien u problemen blijft houden, bezoek dan: http://www.secondlife.com/support + </global> + <global name="UnsupportedCPUAmount"> + 796 + </global> + <global name="UnsupportedRAMAmount"> + 510 + </global> + <global name="UnsupportedGPU"> + - Uw grafische kaart voldoet niet aan de minimale eisen. + </global> + <global name="UnsupportedRAM"> + - Uw systeem geheugen voldoet niet aan de minimale eisen. + </global> + <global name="PermYes"> + Ja + </global> + <global name="PermNo"> + Nee + </global> +</notifications> diff --git a/indra/newview/skins/default/xui/nl/panel_audio_device.xml b/indra/newview/skins/default/xui/nl/panel_audio_device.xml index ba4af435998d515a5256a8b066aad51f0382da7e..fd5dda799f479b27de5dca2a8982da2119c644ad 100644 --- a/indra/newview/skins/default/xui/nl/panel_audio_device.xml +++ b/indra/newview/skins/default/xui/nl/panel_audio_device.xml @@ -1,25 +1,25 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="device_settings"> - <text name="Audio Devices"> - Audioapparaten - </text> - <text name="Input device (microphone):"> - Invoerapparaat (microfoon): - </text> - <text name="Output device (speakers):"> - Uitvoerapparaat (luidsprekers) - </text> - <text name="Input level:"> - Invoerniveau - </text> - <text_editor name="voice_intro_text1"> - Wijzig de schuifbalk om in te stellen hoe luid u klinkt voor andere inwoners. Spreek gewoon in uw microfoon om het invoerniveau te testen. - </text_editor> - <volume_slider name="mic_volume_slider" tool_tip="Wijzig het volume met deze schuifknop"/> - <text name="wait_text"> - Wacht u alstublieft - </text> - <string name="default_text"> - Standaard - </string> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="device_settings"> + <text name="Audio Devices"> + Audioapparaten + </text> + <text name="Input device (microphone):"> + Invoerapparaat (microfoon): + </text> + <text name="Output device (speakers):"> + Uitvoerapparaat (luidsprekers) + </text> + <text name="Input level:"> + Invoerniveau + </text> + <text_editor name="voice_intro_text1"> + Wijzig de schuifbalk om in te stellen hoe luid u klinkt voor andere inwoners. Spreek gewoon in uw microfoon om het invoerniveau te testen. + </text_editor> + <volume_slider name="mic_volume_slider" tool_tip="Wijzig het volume met deze schuifknop"/> + <text name="wait_text"> + Wacht u alstublieft + </text> + <string name="default_text"> + Standaard + </string> +</panel> diff --git a/indra/newview/skins/default/xui/nl/panel_friends.xml b/indra/newview/skins/default/xui/nl/panel_friends.xml index 59bbf92919f6c99b1a0147f6a7eadaf0f74fe4d3..2f43ee0a539e2d57b41010cf528e6a69a29d7b3c 100644 --- a/indra/newview/skins/default/xui/nl/panel_friends.xml +++ b/indra/newview/skins/default/xui/nl/panel_friends.xml @@ -1,20 +1,20 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="friends"> - <string name="Multiple"> - Meerdere vrienden... - </string> - <scroll_list name="friend_list" tool_tip="Houd shift of control ingedrukt terwijl u meerdere vrienden klikt"> - <column name="icon_online_status" tool_tip="Online status"/> - <column label="Naam" name="friend_name" tool_tip="Naam"/> - <column name="icon_visible_online" tool_tip="Vriend kan zien wanneer u online bent"/> - <column name="icon_visible_map" tool_tip="Vriend kan u op de kaart lokaliseren"/> - <column name="icon_edit_mine" tool_tip="Vriend kan objecten wijzigen, verwijderen of oppakken"/> - <column name="icon_edit_theirs" tool_tip="U kunt de objecten van deze vriend bewerken"/> - </scroll_list> - <button label="IM/Oproepen" name="im_btn" tool_tip="Open Instant Message sessie"/> - <button label="Profiel" name="profile_btn" tool_tip="Toon afbeelding, groepen en andere informatie"/> - <button label="Teleport..." name="offer_teleport_btn" tool_tip="Bied deze vriend een teleport naar uw huidige locatie aan"/> - <button label="Betaal..." name="pay_btn" tool_tip="Geef Linden dollars (L$) aan deze vriend"/> - <button label="Verwijderen..." name="remove_btn" tool_tip="Verwijder deze persoon van uw vriendenlijst"/> - <button label="Toevoegen..." name="add_btn" tool_tip="Bied vriendschap aan een inwoner aan"/> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="friends"> + <string name="Multiple"> + Meerdere vrienden... + </string> + <scroll_list name="friend_list" tool_tip="Houd shift of control ingedrukt terwijl u meerdere vrienden klikt"> + <column name="icon_online_status" tool_tip="Online status"/> + <column label="Naam" name="friend_name" tool_tip="Naam"/> + <column name="icon_visible_online" tool_tip="Vriend kan zien wanneer u online bent"/> + <column name="icon_visible_map" tool_tip="Vriend kan u op de kaart lokaliseren"/> + <column name="icon_edit_mine" tool_tip="Vriend kan objecten wijzigen, verwijderen of oppakken"/> + <column name="icon_edit_theirs" tool_tip="U kunt de objecten van deze vriend bewerken"/> + </scroll_list> + <button label="IM/Oproepen" name="im_btn" tool_tip="Open Instant Message sessie"/> + <button label="Profiel" name="profile_btn" tool_tip="Toon afbeelding, groepen en andere informatie"/> + <button label="Teleport..." name="offer_teleport_btn" tool_tip="Bied deze vriend een teleport naar uw huidige locatie aan"/> + <button label="Betaal..." name="pay_btn" tool_tip="Geef Linden dollars (L$) aan deze vriend"/> + <button label="Verwijderen..." name="remove_btn" tool_tip="Verwijder deze persoon van uw vriendenlijst"/> + <button label="Toevoegen..." name="add_btn" tool_tip="Bied vriendschap aan een inwoner aan"/> +</panel> diff --git a/indra/newview/skins/default/xui/nl/panel_group_general.xml b/indra/newview/skins/default/xui/nl/panel_group_general.xml index 4bf1ff78b7a40e59c87ffa764c4d61f1d3a0f297..9982a527f48e150468ff87b6ca80aa09613e9e0b 100644 --- a/indra/newview/skins/default/xui/nl/panel_group_general.xml +++ b/indra/newview/skins/default/xui/nl/panel_group_general.xml @@ -1,67 +1,77 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Algemeen" name="general_tab"> - <string name="help_text"> - Het tabblad Algemeen bevat algemene informatie over deze groep, een lijst met eigenaren en zichtbare leden, algemene groepsvoorkeuren en ledenopties. - -Laat uw muis boven de opties zweven voor meer help. - </string> - <string name="group_info_unchanged"> - Algemene groepsinformatie is gewijzigd. - </string> - <button label="?" label_selected="?" name="help_button"/> - <line_editor label="Typ uw nieuwe groepsnaam hier" name="group_name_editor"/> - <text name="group_name"> - Typ uw nieuwe groepsnaam hier - </text> - <text name="prepend_founded_by"> - Opgericht door - </text> - <text name="founder_name"> - (wachten) - </text> - <text name="group_charter_label"> - Groepcharter - </text> - <texture_picker label="Groepinsigne" name="insignia" tool_tip="Klik om een afbeelding te kiezen"/> - <text_editor name="charter"> - Groepcharter - </text_editor> - <button label="Deelnemen (L$0)" label_selected="Deelnemen (L$0)" name="join_button"/> - <button label="Gedetailleerde weergave" label_selected="Gedetailleerde weergave" name="info_button"/> - <text name="text_owners_and_visible_members"> - Eigenaren en zichtbare leden - </text> - <text name="text_owners_are_shown_in_bold"> - (Eigenaren worden vet getoond) - </text> - <name_list name="visible_members"> - <column label="Lidnaam" name="name"/> - <column label="Titel" name="title"/> - <column label="Laatste login" name="online"/> - </name_list> - <text name="text_group_preferences"> - Groepvoorkeuren - </text> - <panel name="preferences_container"> - <check_box label="Toon in zoeken" name="show_in_group_list" tool_tip="Laat mensen deze groep zien in zoekresultaten."/> - <check_box label="Vrije toegang" name="open_enrollement" tool_tip="Stelt in of deze groep toestaat dat nieuwe leden lid kunnen worden zonder uitgenodigd te zijn."/> - <check_box label="Contributiebijdrage: L$" name="check_enrollment_fee" tool_tip="Stelt in of er een contributiebijdrage vereist is om lid te worden van de groep."/> - <spinner name="spin_enrollment_fee" tool_tip="Nieuwe leden moeten deze bijdrage betalen om deel te nemen aan de groep wanneer "Contributie bijdrage" is aangevinkt."/> - - <panel name="title_container"> - <text name="active_title_label"> - Mijn actieve titel - </text> - <combo_box name="active_title" tool_tip="Stelt de titel in die in uw avatar's naamlabel verschijnt wanneer deze groep actief is."/> - </panel> - <check_box label="Ontvang groepsberichten" name="receive_notices" tool_tip="Stelt in of u berichten van deze groep wilt ontvangen. Verwijder het vinkje wanneer u spam ontvangt van deze groep."/> - <check_box label="Toon deze groep in mijn profiel" name="list_groups_in_profile" tool_tip="Stelt in of u deze groep in uw profiel wil laten zien"/> - </panel> - <string name="incomplete_member_data_str"> - Ledendata ophalen - </string> - <string name="confirm_group_create_str"> - Het maken van deze groep zal u L$100 kosten. Weet u echt, echt, ECHT zeker dat u L$100 wil besteden om deze groep te maken? -Wees u ervan bewust dat, indien niemand anders binnen 48 uur lid wordt van deze groep, deze ontmanteld zal worden, waarbij de groepsnaam onbeschikbaar zal blijven voor toekomstig gebruik. - </string> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Algemeen" name="general_tab"> + <string name="help_text"> + Het tabblad Algemeen bevat algemene informatie over deze groep, een lijst met eigenaren en zichtbare leden, algemene groepsvoorkeuren en ledenopties. + +Laat uw muis boven de opties zweven voor meer help. + </string> + <string name="group_info_unchanged"> + Algemene groepsinformatie is gewijzigd. + </string> + <button label="?" label_selected="?" name="help_button"/> + <line_editor label="Typ uw nieuwe groepsnaam hier" name="group_name_editor"/> + <text name="group_name"> + Typ uw nieuwe groepsnaam hier + </text> + <text name="prepend_founded_by"> + Opgericht door + </text> + <text name="founder_name"> + (wachten) + </text> + <text name="group_charter_label"> + Groepcharter + </text> + <texture_picker label="Groepinsigne" name="insignia" tool_tip="Klik om een afbeelding te kiezen"/> + <text_editor name="charter"> + Groepcharter + </text_editor> + <button label="Deelnemen (L$0)" label_selected="Deelnemen (L$0)" name="join_button"/> + <button label="Gedetailleerde weergave" label_selected="Gedetailleerde weergave" name="info_button"/> + <text name="text_owners_and_visible_members"> + Eigenaren en zichtbare leden + </text> + <text name="text_owners_are_shown_in_bold"> + (Eigenaren worden vet getoond) + </text> + <name_list name="visible_members"> + <column label="Lidnaam" name="name"/> + <column label="Titel" name="title"/> + <column label="Laatste login" name="online"/> + </name_list> + <text name="text_group_preferences"> + Groepvoorkeuren + </text> + <panel name="preferences_container"> + <check_box label="Toon in zoeken" name="show_in_group_list" tool_tip="Laat mensen deze groep zien in zoekresultaten."/> + <check_box label="Vrije toegang" name="open_enrollement" tool_tip="Stelt in of deze groep toestaat dat nieuwe leden lid kunnen worden zonder uitgenodigd te zijn."/> + <check_box label="Contributiebijdrage: L$" name="check_enrollment_fee" tool_tip="Stelt in of er een contributiebijdrage vereist is om lid te worden van de groep."/> + <spinner name="spin_enrollment_fee" tool_tip="Nieuwe leden moeten deze bijdrage betalen om deel te nemen aan de groep wanneer "Contributie bijdrage" is aangevinkt."/> + <combo_box name="group_mature_check" tool_tip="Stelt in of uw groepsinformatie als mature beschouwd wordt."> + <combo_item name="select_mature"> + - Selecteer - + </combo_item> + <combo_item name="mature"> + Mature inhoud + </combo_item> + <combo_item name="pg"> + PG inhoud + </combo_item> + </combo_box> + <panel name="title_container"> + <text name="active_title_label"> + Mijn actieve titel + </text> + <combo_box name="active_title" tool_tip="Stelt de titel in die in uw avatar's naamlabel verschijnt wanneer deze groep actief is."/> + </panel> + <check_box label="Ontvang groepsberichten" name="receive_notices" tool_tip="Stelt in of u berichten van deze groep wilt ontvangen. Verwijder het vinkje wanneer u spam ontvangt van deze groep."/> + <check_box label="Toon deze groep in mijn profiel" name="list_groups_in_profile" tool_tip="Stelt in of u deze groep in uw profiel wil laten zien"/> + </panel> + <string name="incomplete_member_data_str"> + Ledendata ophalen + </string> + <string name="confirm_group_create_str"> + Het maken van deze groep zal u L$100 kosten. Weet u echt, echt, ECHT zeker dat u L$100 wil besteden om deze groep te maken? +Wees u ervan bewust dat, indien niemand anders binnen 48 uur lid wordt van deze groep, deze ontmanteld zal worden, waarbij de groepsnaam onbeschikbaar zal blijven voor toekomstig gebruik. + </string> +</panel> diff --git a/indra/newview/skins/default/xui/nl/panel_group_invite.xml b/indra/newview/skins/default/xui/nl/panel_group_invite.xml index 27329539b9f8bf97f8a7322f3dd886e67a2c848d..004fdc4bee68f5fa1b25fc9fe1cac6d92ac3a031 100644 --- a/indra/newview/skins/default/xui/nl/panel_group_invite.xml +++ b/indra/newview/skins/default/xui/nl/panel_group_invite.xml @@ -1,21 +1,21 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Nodig een lid uit" name="invite_panel"> - <text name="help_text"> - U kunt meerdere inwoners uitnodigen voor uw groep. Klik 'Open persoonkiezer' om te starten. - </text> - <button label="Open persoonkiezer" name="add_button" tool_tip=""/> - <name_list name="invitee_list" tool_tip="Houd de Ctrl-toets vast en klik de namen van de inwoners om meerdere te selecteren."/> - <button label="Verwijder geselecteerden van lijst" name="remove_button" tool_tip="Verwijderd hierboven geselecteerde inwoners van de uitnodigingslijst."/> - <text name="role_text"> - Kies welke rol aan hen wordt toegewezen: - </text> - <combo_box name="role_name" tool_tip="Kies uit de lijst met rollen waarvoor u toestemming heeft om leden toe te wijzen."/> - <button label="Verzend uitnodigingen" name="ok_button"/> - <button label="Annuleren" name="cancel_button"/> - <string name="confirm_invite_owner_str"> - Weet u zeker dat u een (een) nieuwe eigenaar(s) wilt uitnodigen? Deze actie is permanent! - </string> - <string name="loading"> - (laden...) - </string> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Nodig een lid uit" name="invite_panel"> + <text name="help_text"> + U kunt meerdere inwoners selecteren om voor uw groep uit te nodigen. Klik 'Open inwonerkiezer' om te starten. + </text> + <button label="Open inwonerkiezer" name="add_button" tool_tip=""/> + <name_list name="invitee_list" tool_tip="Houd de Ctrl-toets vast en klik de namen van de inwoners om meerdere te selecteren."/> + <button label="Verwijder geselecteerden van lijst" name="remove_button" tool_tip="Verwijderd hierboven geselecteerde inwoners van de uitnodigingslijst."/> + <text name="role_text"> + Kies welke rol aan hen wordt toegewezen: + </text> + <combo_box name="role_name" tool_tip="Kies uit de lijst met rollen waarvoor u toestemming heeft om leden toe te wijzen."/> + <button label="Verzend uitnodigingen" name="ok_button"/> + <button label="Annuleren" name="cancel_button"/> + <string name="confirm_invite_owner_str"> + Weet u zeker dat u een (een) nieuwe eigenaar(s) wilt uitnodigen? Deze actie is permanent! + </string> + <string name="loading"> + (laden...) + </string> +</panel> diff --git a/indra/newview/skins/default/xui/nl/panel_group_notices.xml b/indra/newview/skins/default/xui/nl/panel_group_notices.xml index 2e464e3a7a56bd3fabb0090154beaa103393824d..41aff527dd2cdaa4debd0688c4a350a988833e1f 100644 --- a/indra/newview/skins/default/xui/nl/panel_group_notices.xml +++ b/indra/newview/skins/default/xui/nl/panel_group_notices.xml @@ -1,61 +1,61 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Berichten" name="notices_tab"> - <string name="help_text"> - Berichten vormen een snelle manier om met een groep te communiceren door een bericht en optioneel een bevestigd item af te leveren. Berichten gaan alleen naar groepsleden in rollen die de mogelijkheid hebben om berichten te ontvangen. U kunt berichten uitzetten in de tab Algemeen. - </string> - <string name="no_notices_text"> - Er zijn geen oude berichten. - </string> - <button label="?" label_selected="?" name="help_button"/> - <text name="lbl"> - Groepsberichtenarchief - </text> - <text name="lbl2"> - Berichten worden 14 dagen bewaard. Klik hieronder het bericht dat u wilt bekijken. Klik de 'Verversen' knop om te controleren of nieuwe berichten zijn ontvangen. Berichtenlijsten zijn gelimiteerd tot 200 berichten groep per dag. - </text> - <scroll_list name="notice_list"> - <column label="Onderwerp" name="subject"/> - <column label="Van" name="from"/> - <column label="Datum" name="date"/> - </scroll_list> - <text name="notice_list_none_found"> - Geen gevonden. - </text> - <button label="Maak nieuw bericht" label_selected="Maak nieuw bericht" name="create_new_notice"/> - <button label="Verversen" label_selected="Ververs lijst" name="refresh_notices"/> - <panel label="Maak nieuw bericht" name="panel_create_new_notice"> - <text name="lbl"> - Maak een bericht - </text> - <text name="lbl2"> - U dient een onderwerp in te voeren om een bericht te versturen. U kunt een enkel item aan een bericht toevoegen door het van uw inventaris naar dit paneel te slepen. Bevestigde items moeten kopieerbaar en overdraagbaar zijn en u kunt geen mappen versturen. - </text> - <text name="lbl3"> - Onderwerp: - </text> - <text name="lbl4"> - Bericht: - </text> - <text name="lbl5"> - Bevestig: - </text> - <button label="Verwijder bevestiging:" label_selected="Verwijder bevestiging:" name="remove_attachment"/> - <button label="Verzend bericht" label_selected="Verzend bericht" name="send_notice"/> - <panel name="drop_target" tool_tip="Sleep een inventarisitem op het berichtvenster om het met het bericht mee te sturen. U dient permissie te hebben om het object te kopiëren en over te dragen wilt u het met het bericht mee kunnen sturen."/> - </panel> - <panel label="Bekijk oud bericht" name="panel_view_past_notice"> - <text name="lbl"> - Gearchiveerd bericht - </text> - <text name="lbl2"> - Om een nieuw bericht te sturen, klik de 'Maak nieuw bericht' knop hierboven. - </text> - <text name="lbl3"> - Onderwerp: - </text> - <text name="lbl4"> - Bericht: - </text> - <button label="Open bevestiging" label_selected="Open bevestiging" name="open_attachment"/> - </panel> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Berichten" name="notices_tab"> + <string name="help_text"> + Berichten vormen een snelle manier om met een groep te communiceren door een bericht en optioneel een bevestigd item af te leveren. Berichten gaan alleen naar groepsleden in rollen die de mogelijkheid hebben om berichten te ontvangen. U kunt berichten uitzetten in de tab Algemeen. + </string> + <string name="no_notices_text"> + Er zijn geen oude berichten. + </string> + <button label="?" label_selected="?" name="help_button"/> + <text name="lbl"> + Groepsberichtenarchief + </text> + <text name="lbl2"> + Berichten worden 14 dagen bewaard. Klik hieronder het bericht dat u wilt bekijken. Klik de 'Verversen' knop om te controleren of nieuwe berichten zijn ontvangen. Berichtenlijsten zijn gelimiteerd tot 200 berichten groep per dag. + </text> + <scroll_list name="notice_list"> + <column label="Onderwerp" name="subject"/> + <column label="Van" name="from"/> + <column label="Datum" name="date"/> + </scroll_list> + <text name="notice_list_none_found"> + Geen gevonden. + </text> + <button label="Maak nieuw bericht" label_selected="Maak nieuw bericht" name="create_new_notice"/> + <button label="Verversen" label_selected="Ververs lijst" name="refresh_notices"/> + <panel label="Maak nieuw bericht" name="panel_create_new_notice"> + <text name="lbl"> + Maak een bericht + </text> + <text name="lbl2"> + U dient een onderwerp in te voeren om een bericht te versturen. U kunt een enkel item aan een bericht toevoegen door het van uw inventaris naar dit paneel te slepen. Bevestigde items moeten kopieerbaar en overdraagbaar zijn en u kunt geen mappen versturen. + </text> + <text name="lbl3"> + Onderwerp: + </text> + <text name="lbl4"> + Bericht: + </text> + <text name="lbl5"> + Bevestig: + </text> + <button label="Verwijder bevestiging:" label_selected="Verwijder bevestiging:" name="remove_attachment"/> + <button label="Verzend bericht" label_selected="Verzend bericht" name="send_notice"/> + <panel name="drop_target" tool_tip="Sleep een inventarisitem op het berichtvenster om het met het bericht mee te sturen. U dient permissie te hebben om het object te kopiëren en over te dragen wilt u het met het bericht mee kunnen sturen."/> + </panel> + <panel label="Bekijk oud bericht" name="panel_view_past_notice"> + <text name="lbl"> + Gearchiveerd bericht + </text> + <text name="lbl2"> + Om een nieuw bericht te sturen, klik de 'Maak nieuw bericht' knop hierboven. + </text> + <text name="lbl3"> + Onderwerp: + </text> + <text name="lbl4"> + Bericht: + </text> + <button label="Open bevestiging" label_selected="Open bevestiging" name="open_attachment"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/nl/panel_group_roles.xml b/indra/newview/skins/default/xui/nl/panel_group_roles.xml index 3c071611a700ebc176124924209279068f5ce22b..50aabb04338ebb5c51038c45099a72eb1a528ec4 100644 --- a/indra/newview/skins/default/xui/nl/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/nl/panel_group_roles.xml @@ -1,135 +1,135 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Leden & Rollen" name="roles_tab"> - <string name="default_needs_apply_text"> - Er zijn niet toegepaste wijzigingen op de huidige sub-tab. - </string> - <string name="want_apply_text"> - Wilt u deze wijzigingen toepassen? - </string> - <button label="?" name="help_button"/> - <panel name="members_header"> - <text name="static"> - Leden & Rollen - </text> - <text name="static2"> - Groepsleden krijgen Rollen met Mogelijkheden toegekend. Deze instellingen kunnen eenvoudig aangepast worden, zodat meer organisatie en flexibiliteit mogelijk is. - </text> - </panel> - <panel name="roles_header"> - <text name="static"> - Rollen - </text> - <text name="role_properties_modifiable"> - Selecteer een Rol hieronder. U kunt zijn Naam, Omschrijving en Lid Titel wijzigen. - </text> - <text name="role_properties_not_modifiable"> - Selecteer een Rol hieronder om zijn eigenschappen, Leden en toegestane Mogelijkheden te bekijken. - </text> - <text name="role_actions_modifiable"> - U kunt ook Mogelijkheden aan de Rol toekennen. - </text> - <text name="role_actions_not_modifiable"> - U kunt de toegekende Mogelijkheden bekijken, maar niet wijzigen. - </text> - </panel> - <panel name="actions_header"> - <text name="static"> - Mogelijkheden - </text> - <text name="static2"> - U kunt de Omschrijving van een Mogelijkheid bekijken en welke Rollen en Leden de Mogelijkheid kunnen uitvoeren. - </text> - </panel> - <tab_container name="roles_tab_container"> - <panel label="Leden" name="members_sub_tab" tool_tip="Leden"> - <button label="Zoeken" name="search_button"/> - <button label="Alles Tonen" name="show_all_button"/> - <name_list name="member_list"> - <column label="Lid Naam" name="name"/> - <column label="Gedoneerde Tier" name="donated"/> - <column label="Laatste Login" name="online"/> - </name_list> - <button label="Uitnodigen Nieuwe Persoon..." name="member_invite"/> - <button label="Uitwerpen uit de Groep" name="member_eject"/> - <string name="help_text"> - U kunt Rollen aan Leden toewijzen of van Leden afnemen. Selecteer meerdere Leden door de Ctrl toets ingedrukt te houden en op hun namen te klikken. - </string> - </panel> - <panel label="Rollen" name="roles_sub_tab"> - <button label="Zoeken" name="search_button"/> - <button label="Alles Tonen" name="show_all_button"/> - <scroll_list name="role_list"> - <column label="Rol Naam" name="name"/> - <column label="Titel" name="title"/> - <column label="Leden" name="members"/> - </scroll_list> - <button label="Nieuwe Rol Maken ..." name="role_create"/> - <button label="Rol Verwijderen" name="role_delete"/> - <string name="help_text"> - Rollen hebben een titel en een toegestane lijst met Mogelijkheden die Leden kunnen uitvoeren. Leden kunnen tot 1 of meer Rollen behoren. Een groep kan tot 10 Rollen bevatten, inclusief de Iedereen en Eigenaren Rollen. - </string> - <string name="cant_delete_role"> - De 'Iedereen' en 'Eigenaren' Rollen zijn speciaal en kunnen niet verwijderd worden. - </string> - </panel> - <panel label="Mogelijkheden" name="actions_sub_tab"> - <button label="Zoeken" name="search_button"/> - <button label="Alles Tonen" name="show_all_button"/> - <scroll_list name="action_list" tool_tip="Selecteer een Mogelijkheid om meer details te bekijken."/> - <string name="help_text"> - Mogelijkheden stellen leden in staat om specifieke dingen in een groep te doen. Er is een brede variëteit aan Mogelijkheden. - </string> - </panel> - </tab_container> - <panel name="members_footer"> - <text name="static"> - Toegekende Rollen - </text> - <text name="static2"> - Toegestane Mogelijkheden - </text> - <scroll_list name="member_allowed_actions" tool_tip="Kijk voor details van elke Toegestane Mogelijkheid in de Mogelijkheden tab."/> - </panel> - <panel name="roles_footer"> - <text name="static"> - Naam - </text> - <text name="static2"> - Omschrijving - </text> - <line_editor name="role_name"> - Werknemers - </line_editor> - <text name="static3"> - Titel - </text> - <line_editor name="role_title"> - (wachten) - </line_editor> - <text_editor name="role_description"> - (wachten) - </text_editor> - <text name="static4"> - Toegewezen Leden - </text> - <text name="static5" tool_tip="Een lijst met Mogelijkheden die de geselecteerd rol kan uitvoeren."> - Toegestane Mogelijkheden - </text> - <check_box label="Leden zijn zichtbaar" name="role_visible_in_list" tool_tip="Bepaalt of leden van deze rol zichtbaar zijn in de Algemeen tab voor mensen buiten de groep."/> - <scroll_list name="role_allowed_actions" tool_tip="Kijk voor details van elke Toegestane Mogelijkheid in de Mogelijkheden tab."/> - </panel> - <panel name="actions_footer"> - <text name="static"> - Omschrijving - </text> - <text_editor name="action_description"> - Dit is de Mogelijkheid 'Werp Leden uit deze Groep'. Alleen een Eigenaar kan een andere Eigenaar uitwerpen. - </text_editor> - <text name="static2"> - Rollen met Mogelijkheid - </text> - <text name="static3"> - Leden met Mogelijkheid - </text> - </panel> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Leden & Rollen" name="roles_tab"> + <string name="default_needs_apply_text"> + Er zijn niet toegepaste wijzigingen op de huidige sub-tab. + </string> + <string name="want_apply_text"> + Wilt u deze wijzigingen toepassen? + </string> + <button label="?" name="help_button"/> + <panel name="members_header"> + <text name="static"> + Leden & Rollen + </text> + <text name="static2"> + Groepsleden krijgen Rollen met Mogelijkheden toegekend. Deze instellingen kunnen eenvoudig aangepast worden, zodat meer organisatie en flexibiliteit mogelijk is. + </text> + </panel> + <panel name="roles_header"> + <text name="static"> + Rollen + </text> + <text name="role_properties_modifiable"> + Selecteer een Rol hieronder. U kunt zijn Naam, Omschrijving en Lid Titel wijzigen. + </text> + <text name="role_properties_not_modifiable"> + Selecteer een Rol hieronder om zijn eigenschappen, Leden en toegestane Mogelijkheden te bekijken. + </text> + <text name="role_actions_modifiable"> + U kunt ook Mogelijkheden aan de Rol toekennen. + </text> + <text name="role_actions_not_modifiable"> + U kunt de toegekende Mogelijkheden bekijken, maar niet wijzigen. + </text> + </panel> + <panel name="actions_header"> + <text name="static"> + Mogelijkheden + </text> + <text name="static2"> + U kunt de Omschrijving van een Mogelijkheid bekijken en welke Rollen en Leden de Mogelijkheid kunnen uitvoeren. + </text> + </panel> + <tab_container name="roles_tab_container"> + <panel label="Leden" name="members_sub_tab" tool_tip="Leden"> + <button label="Zoeken" name="search_button"/> + <button label="Alles Tonen" name="show_all_button"/> + <name_list name="member_list"> + <column label="Lid Naam" name="name"/> + <column label="Gedoneerde Tier" name="donated"/> + <column label="Laatste Login" name="online"/> + </name_list> + <button label="Nieuw Lid Uitnodigen..." name="member_invite"/> + <button label="Uitwerpen uit de Groep" name="member_eject"/> + <string name="help_text"> + U kunt Rollen aan Leden toewijzen of van Leden afnemen. Selecteer meerdere Leden door de Ctrl toets ingedrukt te houden en op hun namen te klikken. + </string> + </panel> + <panel label="Rollen" name="roles_sub_tab"> + <button label="Zoeken" name="search_button"/> + <button label="Alles Tonen" name="show_all_button"/> + <scroll_list name="role_list"> + <column label="Rol Naam" name="name"/> + <column label="Titel" name="title"/> + <column label="Leden" name="members"/> + </scroll_list> + <button label="Nieuwe Rol Maken ..." name="role_create"/> + <button label="Rol Verwijderen" name="role_delete"/> + <string name="help_text"> + Rollen hebben een titel en een toegestane lijst met Mogelijkheden die Leden kunnen uitvoeren. Leden kunnen tot 1 of meer Rollen behoren. Een groep kan tot 10 Rollen bevatten, inclusief de Iedereen en Eigenaren Rollen. + </string> + <string name="cant_delete_role"> + De 'Iedereen' en 'Eigenaren' Rollen zijn speciaal en kunnen niet verwijderd worden. + </string> + </panel> + <panel label="Mogelijkheden" name="actions_sub_tab"> + <button label="Zoeken" name="search_button"/> + <button label="Alles Tonen" name="show_all_button"/> + <scroll_list name="action_list" tool_tip="Selecteer een Mogelijkheid om meer details te bekijken."/> + <string name="help_text"> + Mogelijkheden stellen leden in staat om specifieke dingen in een groep te doen. Er is een brede variëteit aan Mogelijkheden. + </string> + </panel> + </tab_container> + <panel name="members_footer"> + <text name="static"> + Toegekende Rollen + </text> + <text name="static2"> + Toegestane Mogelijkheden + </text> + <scroll_list name="member_allowed_actions" tool_tip="Kijk voor details van elke Toegestane Mogelijkheid in de Mogelijkheden tab."/> + </panel> + <panel name="roles_footer"> + <text name="static"> + Naam + </text> + <text name="static2"> + Omschrijving + </text> + <line_editor name="role_name"> + Werknemers + </line_editor> + <text name="static3"> + Titel + </text> + <line_editor name="role_title"> + (wachten) + </line_editor> + <text_editor name="role_description"> + (wachten) + </text_editor> + <text name="static4"> + Toegewezen Leden + </text> + <text name="static5" tool_tip="Een lijst met Mogelijkheden die de geselecteerd rol kan uitvoeren."> + Toegestane Mogelijkheden + </text> + <check_box label="Leden zijn zichtbaar" name="role_visible_in_list" tool_tip="Bepaalt of leden van deze rol zichtbaar zijn in de Algemeen tab voor mensen buiten de groep."/> + <scroll_list name="role_allowed_actions" tool_tip="Kijk voor details van elke Toegestane Mogelijkheid in de Mogelijkheden tab."/> + </panel> + <panel name="actions_footer"> + <text name="static"> + Omschrijving + </text> + <text_editor name="action_description"> + Dit is de Mogelijkheid 'Werp Leden uit deze Groep'. Alleen een Eigenaar kan een andere Eigenaar uitwerpen. + </text_editor> + <text name="static2"> + Rollen met Mogelijkheid + </text> + <text name="static3"> + Leden met Mogelijkheid + </text> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/nl/panel_groups.xml b/indra/newview/skins/default/xui/nl/panel_groups.xml index 1e4493c5e899d288c1f87be6bf6f82b9d9e66579..5b66eddb731ef36ae69f305cda00cbb3fd799ea4 100644 --- a/indra/newview/skins/default/xui/nl/panel_groups.xml +++ b/indra/newview/skins/default/xui/nl/panel_groups.xml @@ -1,15 +1,15 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="groups"> - <text name="groupdesc"> - Uw huidige actieve groep wordt vet getoond. - </text> - <text name="groupcount"> - U behoort tot [COUNT] groepen (maximaal [MAX]). - </text> - <button label="IM/Oproepen" name="IM" tool_tip="Open Instant Message sessie"/> - <button label="Info" name="Info"/> - <button label="Activeren" name="Activate"/> - <button label="Verlaten" name="Leave"/> - <button label="Maak…" name="Create"/> - <button label="Zoeken…" name="Search..."/> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="groups"> + <text name="groupdesc"> + Uw huidige actieve groep wordt vet getoond. + </text> + <text name="groupcount"> + U behoort tot [COUNT] groepen (maximaal [MAX]). + </text> + <button label="IM/Oproepen" name="IM" tool_tip="Open Instant Message sessie"/> + <button label="Info" name="Info"/> + <button label="Activeren" name="Activate"/> + <button label="Verlaten" name="Leave"/> + <button label="Maak…" name="Create"/> + <button label="Zoeken…" name="Search..."/> +</panel> diff --git a/indra/newview/skins/default/xui/nl/panel_login.xml b/indra/newview/skins/default/xui/nl/panel_login.xml index ad56a9c348db9023ef77abd3db5e9afad93077f6..5014d7761c0ebecdddfa3429f3bc6fb83d25285e 100644 --- a/indra/newview/skins/default/xui/nl/panel_login.xml +++ b/indra/newview/skins/default/xui/nl/panel_login.xml @@ -1,37 +1,37 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="panel_login"> - <string name="real_url"> - http://secondlife.com/app/login/ - </string> - <string name="forgot_password_url"> - http://secondlife.com/account/request.php - </string> - <text name="first_name_text"> - Voornaam: - </text> - <text name="last_name_text"> - Achternaam: - </text> - <text name="password_text"> - Wachtwoord: - </text> - <text name="start_location_text"> - Start Locatie: - </text> - <combo_box name="start_location_combo"> - <combo_box.item name="MyHome" label="Mijn Thuis"/> - <combo_box.item name="MyLastLocation" label="Mijn Laatste Locatie"/> - <combo_box.item name="Typeregionname" label="lt; Type regio naam >"/> - </combo_box> - <check_box label="Onthoud wachtwoord" name="remember_check"/> - <button label="Inloggen" label_selected="Inloggen" name="connect_btn"/> - <text name="create_new_account_text"> - Nieuw account maken - </text> - <text name="forgot_password_text"> - Naam of wachtwoord vergeten? - </text> - <text name="channel_text"> - [VERSION] - </text> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_login"> + <string name="real_url"> + http://secondlife.com/app/login/ + </string> + <string name="forgot_password_url"> + http://secondlife.com/account/request.php + </string> + <text name="first_name_text"> + Voornaam: + </text> + <text name="last_name_text"> + Achternaam: + </text> + <text name="password_text"> + Wachtwoord: + </text> + <text name="start_location_text"> + Startlocatie: + </text> + <combo_box name="start_location_combo"> + <combo_box.item name="MyHome" label="Mijn Thuis"/> + <combo_box.item name="MyLastLocation" label="Mijn Laatste Locatie"/> + <combo_box.item name="Typeregionname" label="lt; Type regio naam >"/> + </combo_box> + <check_box label="Onthoud wachtwoord" name="remember_check"/> + <button label="Inloggen" label_selected="Inloggen" name="connect_btn"/> + <text name="create_new_account_text"> + Nieuw account maken + </text> + <text name="forgot_password_text"> + Naam of wachtwoord vergeten? + </text> + <text name="channel_text"> + [VERSION] + </text> +</panel> diff --git a/indra/newview/skins/default/xui/nl/panel_region_debug.xml b/indra/newview/skins/default/xui/nl/panel_region_debug.xml index daaec12783fac2bdf4b36469a0a01d55ff229568..9fad8e478aaa7dbab897065c170e9d52b904efa6 100644 --- a/indra/newview/skins/default/xui/nl/panel_region_debug.xml +++ b/indra/newview/skins/default/xui/nl/panel_region_debug.xml @@ -1,40 +1,40 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Debug" name="Debug"> - <text name="region_text_lbl"> - Regio: - </text> - <text name="region_text"> - onbekend - </text> - <check_box label="Schakel scripts uit" name="disable_scripts_check" tool_tip="Schakel alle scripts in deze regio uit"/> - <button label="?" name="disable_scripts_help"/> - <check_box label="Schakel botsingen uit" name="disable_collisions_check" tool_tip="Schakel alle niet-avatar botsingen in deze regio uit"/> - <button label="?" name="disable_collisions_help"/> - <check_box label="Fysiek uitschakelen" name="disable_physics_check" tool_tip="Alle fysiek in deze regio uitschakelen"/> - <button label="?" name="disable_physics_help"/> - <button label="Toepassen" name="apply_btn"/> - <text name="objret_text_lbl"> - Object retourneren - </text> - <text name="resident_text_lbl"> - Inwoner: - </text> - <line_editor name="target_avatar_name"> - (none) - </line_editor> - <button label="Kies..." name="choose_avatar_btn"/> - <text name="options_text_lbl"> - Opties: - </text> - <check_box label="Retourneer alleen objecten die scripts bevatten." name="return_scripts" tool_tip="Retourneer alleen objecten met scripts."/> - <check_box label="Retourneer alleen die objecten op het land van iemand anders" name="return_other_land" tool_tip="Retourneer alleen objecten die zich op land bevinden dat aan iemand anders toebehoort"/> - <check_box label="Retourneer objecten in alle regio's van dit estate" name="return_estate_wide" tool_tip="Retourneer objecten in alle regio's van dit estate"/> - <button label="Retourneren" name="return_btn"/> - <button label="Toon top botsingen..." name="top_colliders_btn" tool_tip="Lijst met objecten die de meeste mogelijke botsingen ondergaan"/> - <button label="?" name="top_colliders_help"/> - <button label="Toon top scripts..." name="top_scripts_btn" tool_tip="Lijst met objecten die de meeste tijd besteden met het uitvoeren van scripts"/> - <button label="?" name="top_scripts_help"/> - <button label="Herstart regio" name="restart_btn" tool_tip="Geef een 2 minuten afteltijd en herstart de regio."/> - <button label="?" name="restart_help"/> - <button label="Vertraag herstart" name="cancel_restart_btn" tool_tip="Vertraag herstart met een uur"/> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Debug" name="Debug"> + <text name="region_text_lbl"> + Regio: + </text> + <text name="region_text"> + onbekend + </text> + <check_box label="Schakel scripts uit" name="disable_scripts_check" tool_tip="Schakel alle scripts in deze regio uit"/> + <button label="?" name="disable_scripts_help"/> + <check_box label="Schakel botsingen uit" name="disable_collisions_check" tool_tip="Schakel alle niet-avatar botsingen in deze regio uit"/> + <button label="?" name="disable_collisions_help"/> + <check_box label="Fysiek uitschakelen" name="disable_physics_check" tool_tip="Alle fysiek in deze regio uitschakelen"/> + <button label="?" name="disable_physics_help"/> + <button label="Toepassen" name="apply_btn"/> + <text name="objret_text_lbl"> + Object retourneren + </text> + <text name="resident_text_lbl"> + Inwoner: + </text> + <line_editor name="target_avatar_name"> + (none) + </line_editor> + <button label="Kies..." name="choose_avatar_btn"/> + <text name="options_text_lbl"> + Opties: + </text> + <check_box label="Retourneer alleen objecten die scripts bevatten." name="return_scripts" tool_tip="Retourneer alleen objecten met scripts."/> + <check_box label="Retourneer alleen die objecten op het land van iemand anders" name="return_other_land" tool_tip="Retourneer alleen objecten die zich op land bevinden dat aan iemand anders toebehoort"/> + <check_box label="Retourneer objecten in alle regio's van dit estate" name="return_estate_wide" tool_tip="Retourneer objecten in alle regio's van dit estate"/> + <button label="Retourneren" name="return_btn"/> + <button label="Toon top botsingen..." name="top_colliders_btn" tool_tip="Lijst met objecten die de meeste mogelijke botsingen ondergaan"/> + <button label="?" name="top_colliders_help"/> + <button label="Toon top scripts..." name="top_scripts_btn" tool_tip="Lijst met objecten die de meeste tijd besteden met het uitvoeren van scripts"/> + <button label="?" name="top_scripts_help"/> + <button label="Herstart regio" name="restart_btn" tool_tip="Geef een 2 minuten afteltijd en herstart de regio."/> + <button label="?" name="restart_help"/> + <button label="Vertraag herstart" name="cancel_restart_btn" tool_tip="Vertraag herstart met een uur"/> +</panel> diff --git a/indra/newview/skins/default/xui/nl/panel_region_estate.xml b/indra/newview/skins/default/xui/nl/panel_region_estate.xml index 18dd3bf147f4a42a64480826ea78c403a4e3835b..731887dc5d43f94dc7d5957a4eb9bd9f501dc7b7 100644 --- a/indra/newview/skins/default/xui/nl/panel_region_estate.xml +++ b/indra/newview/skins/default/xui/nl/panel_region_estate.xml @@ -1,68 +1,68 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Estate" name="Estate"> - <text name="estate_help_text"> - Wijzigingen van instellingen op dit tabblad zullen alle regio's in de estate beïnvloeden. - </text> - <text name="estate_text"> - Estate: - </text> - <text name="estate_name"> - (onbekend) - </text> - <text name="owner_text"> - Eigenaar - </text> - <text name="estate_owner"> - (onbekend) - </text> - <check_box label="Gebruik globale tijd" name="use_global_time_check"/> - <button label="?" name="use_global_time_help"/> - <check_box label="Vaste zon" name="fixed_sun_check"/> - <button label="?" name="fixed_sun_help"/> - <slider label="Fase" name="sun_hour_slider"/> - <check_box label="Publieke toegang toestaan" name="externally_visible_check"/> - <button label="?" name="externally_visible_help"/> - <text name="Only Allow"> - Beperk toegang tot: - </text> - <check_box label="Inwoners met betalingsinformatie opgeslagen" name="limit_payment" tool_tip="Verban ongeïdentificeerde inwoners."/> - <check_box label="Leeftijdgeverifieerde volwassenen" name="limit_age_verified" tool_tip="Verban inwoners die hun leeftijd niet geverifieerd hebben. Zie support.secondlife.com voor meer informatie."/> - <check_box label="Voice chat toestaan" name="voice_chat_check"/> - <button label="?" name="voice_chat_help"/> - <check_box label="Directe teleport toestaan" name="allow_direct_teleport"/> - <button label="?" name="allow_direct_teleport_help"/> - <text name="abuse_email_text"> - Misbruik e-mail adres: - </text> - <string name="email_unsupported"> - Optie niet ondersteund - </string> - <button label="?" name="abuse_email_address_help"/> - <button label="Toepassen" name="apply_btn"/> - <button label="Gebruiker verwijderen van estate" name="kick_user_from_estate_btn"/> - <button label="Zend bericht naar estate..." name="message_estate_btn"/> - <text name="estate_manager_label"> - Estate beheerders: - </text> - <button label="?" name="estate_manager_help"/> - <button label="Verwijderen..." name="remove_estate_manager_btn"/> - <button label="Toevoegen..." name="add_estate_manager_btn"/> - <text name="allow_resident_label"> - Toegestane inwoners: - </text> - <button label="?" name="allow_resident_help"/> - <button label="Verwijderen..." name="remove_allowed_avatar_btn"/> - <button label="Toevoegen..." name="add_allowed_avatar_btn"/> - <text name="allow_group_label"> - Toegestane groepen - </text> - <button label="?" name="allow_group_help"/> - <button label="Verwijderen..." name="remove_allowed_group_btn"/> - <button label="Toevoegen..." name="add_allowed_group_btn"/> - <text name="ban_resident_label"> - Verbannen inwoners: - </text> - <button label="?" name="ban_resident_help"/> - <button label="Verwijderen..." name="remove_banned_avatar_btn"/> - <button label="Toevoegen..." name="add_banned_avatar_btn"/> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Estate" name="Estate"> + <text name="estate_help_text"> + Wijzigingen van instellingen op dit tabblad zullen alle regio's in de estate beïnvloeden. + </text> + <text name="estate_text"> + Estate: + </text> + <text name="estate_name"> + (onbekend) + </text> + <text name="owner_text"> + Eigenaar + </text> + <text name="estate_owner"> + (onbekend) + </text> + <check_box label="Gebruik globale tijd" name="use_global_time_check"/> + <button label="?" name="use_global_time_help"/> + <check_box label="Vaste zon" name="fixed_sun_check"/> + <button label="?" name="fixed_sun_help"/> + <slider label="Fase" name="sun_hour_slider"/> + <check_box label="Publieke toegang toestaan" name="externally_visible_check"/> + <button label="?" name="externally_visible_help"/> + <text name="Only Allow"> + Beperk toegang tot: + </text> + <check_box label="Inwoners met betalingsinformatie opgeslagen" name="limit_payment" tool_tip="Verban ongeïdentificeerde inwoners."/> + <check_box label="Leeftijdgeverifieerde volwassenen" name="limit_age_verified" tool_tip="Verban inwoners die hun leeftijd niet geverifieerd hebben. Zie support.secondlife.com voor meer informatie."/> + <check_box label="Voice chat toestaan" name="voice_chat_check"/> + <button label="?" name="voice_chat_help"/> + <check_box label="Directe teleport toestaan" name="allow_direct_teleport"/> + <button label="?" name="allow_direct_teleport_help"/> + <text name="abuse_email_text"> + Misbruik e-mail adres: + </text> + <string name="email_unsupported"> + Optie niet ondersteund + </string> + <button label="?" name="abuse_email_address_help"/> + <button label="Toepassen" name="apply_btn"/> + <button label="Gebruiker verwijderen van estate" name="kick_user_from_estate_btn"/> + <button label="Zend bericht naar estate..." name="message_estate_btn"/> + <text name="estate_manager_label"> + Estate beheerders: + </text> + <button label="?" name="estate_manager_help"/> + <button label="Verwijderen..." name="remove_estate_manager_btn"/> + <button label="Toevoegen..." name="add_estate_manager_btn"/> + <text name="allow_resident_label"> + Toegestane inwoners: + </text> + <button label="?" name="allow_resident_help"/> + <button label="Verwijderen..." name="remove_allowed_avatar_btn"/> + <button label="Toevoegen..." name="add_allowed_avatar_btn"/> + <text name="allow_group_label"> + Toegestane groepen + </text> + <button label="?" name="allow_group_help"/> + <button label="Verwijderen..." name="remove_allowed_group_btn"/> + <button label="Toevoegen..." name="add_allowed_group_btn"/> + <text name="ban_resident_label"> + Verbannen inwoners: + </text> + <button label="?" name="ban_resident_help"/> + <button label="Verwijderen..." name="remove_banned_avatar_btn"/> + <button label="Toevoegen..." name="add_banned_avatar_btn"/> +</panel> diff --git a/indra/newview/skins/default/xui/nl/panel_region_general.xml b/indra/newview/skins/default/xui/nl/panel_region_general.xml index c1b8961c2165c85fcc32e64069e33cb6fe983567..9ed822ac13d1681082f92ace8b1eeaad9f95ab11 100644 --- a/indra/newview/skins/default/xui/nl/panel_region_general.xml +++ b/indra/newview/skins/default/xui/nl/panel_region_general.xml @@ -1,46 +1,59 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Regio" name="General"> - <text name="region_text_lbl"> - Regio: - </text> - <text name="region_text"> - onbekend - </text> - <text name="version_channel_text_lbl"> - Versie: - </text> - <text name="version_channel_text"> - onbekend - </text> - <check_box label="Blokkeer terreinbewerking" name="block_terraform_check"/> - <button label="?" name="terraform_help"/> - <check_box label="Blokkeer vliegen" name="block_fly_check"/> - <button label="?" name="fly_help"/> - <check_box label="Letsel toestaan" name="allow_damage_check"/> - <button label="?" name="damage_help"/> - <check_box label="Duwen Uitschakelen" name="restrict_pushobject"/> - <button label="?" name="restrict_pushobject_help"/> - <check_box label="Landverkoop toestaan" name="allow_land_resell_check"/> - <button label="?" name="land_resell_help"/> - <check_box label="Samenvoegen/opsplitsen land toestaan" name="allow_parcel_changes_check"/> - <button label="?" name="parcel_changes_help"/> - <check_box label="Blokkeer zichtbaarheid land in zoeken" name="block_parcel_search_check" tool_tip="Laat mensen deze regio en zijn percelen in zoekresultaten zien"/> - <button label="?" name="parcel_search_help"/> - <spinner label="Agent limiet" name="agent_limit_spin"/> - <button label="?" name="agent_limit_help"/> - <spinner label="Object bonus" name="object_bonus_spin"/> - <button label="?" name="object_bonus_help"/> - <text label="Volwassenheid" name="access_text"> - Volwassenheid: - </text> - - - - - <button label="?" name="access_help"/> - <button label="Toepassen" name="apply_btn"/> - <button label="Teleport één gebruiker naar thuislocatie…" name="kick_btn"/> - <button label="Teleport alle gebruikers naar thuislocatie…" name="kick_all_btn"/> - <button label="Zend bericht naar regio…" name="im_btn"/> - <button label="Beheer telehub…" name="manage_telehub_btn"/> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Regio" name="General"> + <text name="region_text_lbl"> + Regio: + </text> + <text name="region_text"> + onbekend + </text> + <text name="version_channel_text_lbl"> + Versie: + </text> + <text name="version_channel_text"> + onbekend + </text> + <text name="region_type_lbl"> + Type: + </text> + <text name="region_type"> + onbekend + </text> + <check_box label="Blokkeer terreinbewerking" name="block_terraform_check"/> + <button label="?" name="terraform_help"/> + <check_box label="Blokkeer vliegen" name="block_fly_check"/> + <button label="?" name="fly_help"/> + <check_box label="Letsel toestaan" name="allow_damage_check"/> + <button label="?" name="damage_help"/> + <check_box label="Duwen Uitschakelen" name="restrict_pushobject"/> + <button label="?" name="restrict_pushobject_help"/> + <check_box label="Landverkoop toestaan" name="allow_land_resell_check"/> + <button label="?" name="land_resell_help"/> + <check_box label="Samenvoegen/opsplitsen land toestaan" name="allow_parcel_changes_check"/> + <button label="?" name="parcel_changes_help"/> + <check_box label="Blokkeer zichtbaarheid land in zoeken" name="block_parcel_search_check" tool_tip="Laat mensen deze regio en zijn percelen in zoekresultaten zien"/> + <button label="?" name="parcel_search_help"/> + <spinner label="Agent limiet" name="agent_limit_spin"/> + <button label="?" name="agent_limit_help"/> + <spinner label="Object bonus" name="object_bonus_spin"/> + <button label="?" name="object_bonus_help"/> + <text label="Volwassenheid" name="access_text"> + Inhoudscategorie: + </text> + <combo_box label="Mature" name="access_combo"> + <combo_item name="Adult"> + Adult + </combo_item> + <combo_item name="Mature"> + Mature + </combo_item> + <combo_item name="PG"> + PG + </combo_item> + </combo_box> + <button label="?" name="access_help"/> + <button label="Toepassen" name="apply_btn"/> + <button label="Teleport één gebruiker naar thuislocatie…" name="kick_btn"/> + <button label="Teleport alle gebruikers naar thuislocatie…" name="kick_all_btn"/> + <button label="Zend bericht naar regio…" name="im_btn"/> + <button label="Beheer telehub…" name="manage_telehub_btn"/> +</panel> diff --git a/indra/newview/skins/default/xui/nl/panel_region_terrain.xml b/indra/newview/skins/default/xui/nl/panel_region_terrain.xml index 52a944a992b8fdb4f4c0126b5e9b0e77ed31d306..a79bcc0eb595a5352030245e13b285bf19cc855d 100644 --- a/indra/newview/skins/default/xui/nl/panel_region_terrain.xml +++ b/indra/newview/skins/default/xui/nl/panel_region_terrain.xml @@ -1,27 +1,27 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Terrein" name="Terrain"> - <text name="region_text_lbl"> - Regio: - </text> - <text name="region_text"> - onbekend - </text> - <spinner label="Waterhoogte" name="water_height_spin"/> - <button label="?" name="water_height_help"/> - <spinner label="Terrein verhooglimiet" name="terrain_raise_spin"/> - <button label="?" name="terrain_raise_help"/> - <spinner label="Terrein verlaaglimiet" name="terrain_lower_spin"/> - <button label="?" name="terrain_lower_help"/> - <check_box label="Gebruik estate zon" name="use_estate_sun_check"/> - <button label="?" name="use_estate_sun_help"/> - <check_box label="Vaste zon" name="fixed_sun_check"/> - <button label="?" name="fixed_sun_help"/> - <slider label="Fase" name="sun_hour_slider"/> - <button label="Toepassen" name="apply_btn"/> - <button label="Download RAW terrein..." name="download_raw_btn" tool_tip="Alleen beschikbaar voor estate-eigenaren, niet beheerders"/> - <button label="?" name="download_raw_help"/> - <button label="Upload RAW terrein..." name="upload_raw_btn" tool_tip="Alleen beschikbaar voor estate-eigenaren, niet beheerders"/> - <button label="?" name="upload_raw_help"/> - <button label="Bake terrein" name="bake_terrain_btn" tool_tip="Huidig terrein instellen als middelpunt voor verhoog/verlaag limieten"/> - <button label="?" name="bake_terrain_help"/> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Terrein" name="Terrain"> + <text name="region_text_lbl"> + Regio: + </text> + <text name="region_text"> + onbekend + </text> + <spinner label="Waterhoogte" name="water_height_spin"/> + <button label="?" name="water_height_help"/> + <spinner label="Terrein verhooglimiet" name="terrain_raise_spin"/> + <button label="?" name="terrain_raise_help"/> + <spinner label="Terrein verlaaglimiet" name="terrain_lower_spin"/> + <button label="?" name="terrain_lower_help"/> + <check_box label="Gebruik estate zon" name="use_estate_sun_check"/> + <button label="?" name="use_estate_sun_help"/> + <check_box label="Vaste zon" name="fixed_sun_check"/> + <button label="?" name="fixed_sun_help"/> + <slider label="Fase" name="sun_hour_slider"/> + <button label="Toepassen" name="apply_btn"/> + <button label="Download RAW terrein..." name="download_raw_btn" tool_tip="Alleen beschikbaar voor estate-eigenaren, niet beheerders"/> + <button label="?" name="download_raw_help"/> + <button label="Upload RAW terrein..." name="upload_raw_btn" tool_tip="Alleen beschikbaar voor estate-eigenaren, niet beheerders"/> + <button label="?" name="upload_raw_help"/> + <button label="Bake terrein" name="bake_terrain_btn" tool_tip="Huidig terrein instellen als middelpunt voor verhoog/verlaag limieten"/> + <button label="?" name="bake_terrain_help"/> +</panel> diff --git a/indra/newview/skins/default/xui/nl/panel_region_texture.xml b/indra/newview/skins/default/xui/nl/panel_region_texture.xml index 6ecf438f984a0ec34e054b14f7ec4ad8ce8955d5..ff10e20b7ce8e3ef7558fc59b9c1ac38eb96c4d6 100644 --- a/indra/newview/skins/default/xui/nl/panel_region_texture.xml +++ b/indra/newview/skins/default/xui/nl/panel_region_texture.xml @@ -1,57 +1,57 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Grond texturen" name="Textures"> - <text name="region_text_lbl"> - Regio: - </text> - <text name="region_text"> - onbekend - </text> - <text name="detail_texture_text"> - Terreintexturen (vereist 512x512, 24 bit .tga bestanden) - </text> - <text name="height_text_lbl"> - 1 (Laag) - </text> - <text name="height_text_lbl2"> - 2 - </text> - <text name="height_text_lbl3"> - 3 - </text> - <text name="height_text_lbl4"> - 4 (Hoog) - </text> - <text name="height_text_lbl5"> - Textuur hoogtebereiken - </text> - <text name="height_text_lbl6"> - Zuidwest - </text> - <text name="height_text_lbl7"> - Noordwest - </text> - <text name="height_text_lbl8"> - Zuidoost - </text> - <text name="height_text_lbl9"> - Noordoost - </text> - <spinner label="Laag" name="height_start_spin_0"/> - <spinner label="Laag" name="height_start_spin_1"/> - <spinner label="Laag" name="height_start_spin_2"/> - <spinner label="Laag" name="height_start_spin_3"/> - <spinner label="Hoog" name="height_range_spin_0"/> - <spinner label="Hoog" name="height_range_spin_1"/> - <spinner label="Hoog" name="height_range_spin_2"/> - <spinner label="Hoog" name="height_range_spin_3"/> - <text name="height_text_lbl10"> - Deze waardes vertegenwoordigen het mengbereik voor bovenstaande texturen. - </text> - <text name="height_text_lbl11"> - Gemeten in meters, is de LOW waarde de MAXIMUM hoogte van textuur #1, - </text> - <text name="height_text_lbl12"> - en de HIGH waarde is de MINIMUM hoogte van textuur #4. - </text> - <button label="Toepassen" name="apply_btn"/> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Grond texturen" name="Textures"> + <text name="region_text_lbl"> + Regio: + </text> + <text name="region_text"> + onbekend + </text> + <text name="detail_texture_text"> + Terreintexturen (vereist 512x512, 24 bit .tga bestanden) + </text> + <text name="height_text_lbl"> + 1 (Laag) + </text> + <text name="height_text_lbl2"> + 2 + </text> + <text name="height_text_lbl3"> + 3 + </text> + <text name="height_text_lbl4"> + 4 (Hoog) + </text> + <text name="height_text_lbl5"> + Textuur hoogtebereiken + </text> + <text name="height_text_lbl6"> + Zuidwest + </text> + <text name="height_text_lbl7"> + Noordwest + </text> + <text name="height_text_lbl8"> + Zuidoost + </text> + <text name="height_text_lbl9"> + Noordoost + </text> + <spinner label="Laag" name="height_start_spin_0"/> + <spinner label="Laag" name="height_start_spin_1"/> + <spinner label="Laag" name="height_start_spin_2"/> + <spinner label="Laag" name="height_start_spin_3"/> + <spinner label="Hoog" name="height_range_spin_0"/> + <spinner label="Hoog" name="height_range_spin_1"/> + <spinner label="Hoog" name="height_range_spin_2"/> + <spinner label="Hoog" name="height_range_spin_3"/> + <text name="height_text_lbl10"> + Deze waardes vertegenwoordigen het mengbereik voor bovenstaande texturen. + </text> + <text name="height_text_lbl11"> + Gemeten in meters, is de LOW waarde de MAXIMUM hoogte van textuur #1, + </text> + <text name="height_text_lbl12"> + en de HIGH waarde is de MINIMUM hoogte van textuur #4. + </text> + <button label="Toepassen" name="apply_btn"/> +</panel> diff --git a/indra/newview/skins/default/xui/nl/panel_status_bar.xml b/indra/newview/skins/default/xui/nl/panel_status_bar.xml index fa7ebe3d6b5c8026971a53722f0e4d6acd7311fd..d499ef5af0a7622f8bef6c683419a6dec8786d5b 100644 --- a/indra/newview/skins/default/xui/nl/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/nl/panel_status_bar.xml @@ -1,38 +1,38 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="status"> - <text name="ParcelNameText" tool_tip="Naam van het landperceel waar u staat. Klik voor 'Over land'."> - Hier komt de naam van het perceel - </text> - <text name="BalanceText" tool_tip="Account saldo"> - Laden... - </text> - <button label="" label_selected="" name="buycurrency" tool_tip="Koop valuta"/> - <text name="TimeText" tool_tip="Huidige tijd (Pacifisch)"> - -3 - </text> - <string name="StatBarDaysOfWeek"> - Zondag:Maandag:Dinsdag:Woensdag:Donderdag:Vrijdag:Zaterdag - </string> - <string name="StatBarMonthsOfYear"> - Januari:Februari:Maart:April:Mei:Juni:Juli:Augustus:September:Oktober:November:December - </string> - <button label="" label_selected="" name="scriptout" tool_tip="Script waarschuwingen en fouten"/> - <button label="" label_selected="" name="health" tool_tip="Letsel"/> - <text name="HealthText" tool_tip="Letsel"> - 1 - </text> - <button label="" label_selected="" name="no_fly" tool_tip="Vliegen niet toegestaan"/> - <button label="" label_selected="" name="no_build" tool_tip="Bouwen/rezzen niet toegestaan"/> - <button label="" label_selected="" name="no_scripts" tool_tip="Scripts niet toegestaan"/> - <button label="" label_selected="" name="restrictpush" tool_tip="Niet duwen"/> - <button label="" label_selected="" name="status_no_voice" tool_tip="Voice is niet beschikbaar hier"/> - <button label="" label_selected="" name="buyland" tool_tip="Koop dit perceel"/> - <line_editor label="Zoeken" name="search_editor" tool_tip="Doorzoek Second Life"/> - <button label="" label_selected="" name="search_btn" tool_tip="Doorzoek Second Life"/> - <string name="packet_loss_tooltip"> - Pakketten verlies - </string> - <string name="bandwidth_tooltip"> - Bandbreedte - </string> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="status"> + <text name="ParcelNameText" tool_tip="Naam van het landperceel waar u staat. Klik voor 'Over land'."> + Hier komt de naam van het perceel + </text> + <text name="BalanceText" tool_tip="Account saldo"> + Laden... + </text> + <button label="" label_selected="" name="buycurrency" tool_tip="Koop valuta"/> + <text name="TimeText" tool_tip="Huidige tijd (Pacifisch)"> + -3 + </text> + <string name="StatBarDaysOfWeek"> + Zondag:Maandag:Dinsdag:Woensdag:Donderdag:Vrijdag:Zaterdag + </string> + <string name="StatBarMonthsOfYear"> + Januari:Februari:Maart:April:Mei:Juni:Juli:Augustus:September:Oktober:November:December + </string> + <button label="" label_selected="" name="scriptout" tool_tip="Script waarschuwingen en fouten"/> + <button label="" label_selected="" name="health" tool_tip="Letsel"/> + <text name="HealthText" tool_tip="Letsel"> + 1 + </text> + <button label="" label_selected="" name="no_fly" tool_tip="Vliegen niet toegestaan"/> + <button label="" label_selected="" name="no_build" tool_tip="Bouwen/rezzen niet toegestaan"/> + <button label="" label_selected="" name="no_scripts" tool_tip="Scripts niet toegestaan"/> + <button label="" label_selected="" name="restrictpush" tool_tip="Niet duwen"/> + <button label="" label_selected="" name="status_no_voice" tool_tip="Voice is niet beschikbaar hier"/> + <button label="" label_selected="" name="buyland" tool_tip="Koop dit perceel"/> + <line_editor label="Zoeken" name="search_editor" tool_tip="Doorzoek Second Life"/> + <button label="" label_selected="" name="search_btn" tool_tip="Doorzoek Second Life"/> + <string name="packet_loss_tooltip"> + Pakketten verlies + </string> + <string name="bandwidth_tooltip"> + Bandbreedte + </string> +</panel> diff --git a/indra/newview/skins/default/xui/nl/strings.xml b/indra/newview/skins/default/xui/nl/strings.xml index 6a355871091b3b9fdcfa4a6d21f732e474c1fa1f..4b64586887a41fb08d80366e8cdffcd60edc9bf4 100644 --- a/indra/newview/skins/default/xui/nl/strings.xml +++ b/indra/newview/skins/default/xui/nl/strings.xml @@ -1,421 +1,486 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<!-- This file contains strings that used to be hardcoded in the source. - It is only for those strings which don't belong in a floater. - For example, the strings used in avatar chat bubbles, and strings - that are returned from one component and may appear in many places--> -<strings> - <string name="LoginInProgress"> - Inloggen. Het kan lijken dat [APP_NAME] is vastgelopen. Wacht u alstublieft... . - </string> - <string name="LoginAuthenticating"> - Authenticeren - </string> - <string name="LoginMaintenance"> - Account onderhoud wordt uitgevoerd... - </string> - <string name="LoginAttempt"> - Vorige loginpoging is mislukt. Inloggen, poging [NUMBER] - </string> - <string name="LoginPrecaching"> - Wereld laden... - </string> - <string name="LoginInitializingBrowser"> - Geïntegreerde web browser initialiseren... - </string> - <string name="LoginInitializingMultimedia"> - Multimedia initialiseren... - </string> - <string name="LoginVerifyingCache"> - Cache bestanden verifiëren (kan 60-90 seconden duren)... - </string> - <string name="LoginProcessingResponse"> - Antwoord verwerken... - </string> - <string name="LoginInitializingWorld"> - Wereld initialiseren... - </string> - <string name="LoginDecodingImages"> - Afbeeldingen decoderen... - </string> - <string name="LoginInitializingQuicktime"> - QuickTime initialiseren... - </string> - <string name="LoginQuicktimeNotFound"> - QuickTime niet gevonden - kan niet initialiseren. - </string> - <string name="LoginQuicktimeOK"> - QuickTime succesvol geïnitialiseerd. - </string> - <string name="LoginWaitingForRegionHandshake"> - Wachten op overeenstemming met regio... - </string> - <string name="LoginConnectingToRegion"> - Verbinden met regio... - </string> - <string name="LoginDownloadingClothing"> - Kleding downloaden... - </string> - <string name="LoginFailedNoNetwork"> - Netwerk fout: Kan geen verbinding opzetten, controleer alstublieft uw netwerkverbinding - </string> - <string name="AgentLostConnection"> - Deze regio kan problemen ondervinden. Controleer alstublieft uw verbinding met het internet. - </string> - <string name="TooltipPerson"> - Persoon - </string> - <string name="TooltipNoName"> - (geen naam) - </string> - <string name="TooltipOwner"> - Eigenaar: - </string> - <string name="TooltipPublic"> - Openbaar - </string> - <string name="TooltipIsGroup"> - (Groep) - </string> - <string name="TooltipFlagScript"> - Script - </string> - <string name="TooltipFlagPhysics"> - Fysiek - </string> - <string name="TooltipFlagTouch"> - Aanraken - </string> - <string name="TooltipFlagL$"> - L$ - </string> - <string name="TooltipFlagDropInventory"> - Deponeer inventaris - </string> - <string name="TooltipFlagPhantom"> - Fantoom - </string> - <string name="TooltipFlagTemporary"> - Tijdelijk - </string> - <string name="TooltipFlagRightClickMenu"> - (Rechtsklikken voor menu) - </string> - <string name="TooltipFreeToCopy"> - Vrij te kopiëren - </string> - <string name="TooltipForSaleL$"> - Te koop: L$[AMOUNT] - </string> - <string name="TooltipForSaleMsg"> - Te koop: [MESSAGE] - </string> - <string name="TooltipFlagGroupBuild"> - Groep bouwen - </string> - <string name="TooltipFlagNoBuild"> - Niet bouwen - </string> - <string name="TooltipFlagNoEdit"> - Groep bouwen - </string> - <string name="TooltipFlagNotSafe"> - Niet veilig - </string> - <string name="TooltipFlagNoFly"> - Niet vliegen - </string> - <string name="TooltipFlagGroupScripts"> - Groep scripts - </string> - <string name="TooltipFlagNoScripts"> - Geen scripts - </string> - <string name="TooltipLand"> - Land: - </string> - <string name="TooltipMustSingleDrop"> - Slechts een enkel item kan hier naartoe gesleept worden - </string> - <string name="RetrievingData"> - Ophalen... - </string> - <string name="ReleaseNotes"> - Release Notes - </string> - <string name="LoadingData"> - Laden... - </string> - <string name="AvatarNameNobody"> - (niemand) - </string> - <string name="AvatarNameWaiting"> - (wachten) - </string> - <string name="AvatarNameHippos"> - (hippos) - </string> - <string name="GroupNameNone"> - (geen) - </string> - <string name="AssetErrorNone"> - Geen fout - </string> - <string name="AssetErrorRequestFailed"> - Asset verzoek: mislukt - </string> - <string name="AssetErrorNonexistentFile"> - Asset verzoek: niet-bestaand bestand - </string> - <string name="AssetErrorNotInDatabase"> - Asset verzoek: asset niet gevonden in de database - </string> - <string name="AssetErrorEOF"> - Einde van bestand - </string> - <string name="AssetErrorCannotOpenFile"> - Kan bestand niet openen - </string> - <string name="AssetErrorFileNotFound"> - Bestand niet gevonden - </string> - <string name="AssetErrorTCPTimeout"> - Bestandsoverdracht time-out - </string> - <string name="AssetErrorCircuitGone"> - Circuit verdwenen - </string> - <string name="AssetErrorUnknownStatus"> - Onbekende status - </string> - <string name="AvatarEditingApparance"> - (Uiterlijk bewerken) - </string> - <string name="AvatarAway"> - Afwezig - </string> - <string name="AvatarBusy"> - Bezet - </string> - <string name="AvatarMuted"> - Genegeerd - </string> - <string name="anim_express_afraid"> - Bang - </string> - <string name="anim_express_anger"> - Boos - </string> - <string name="anim_away"> - Afwezig - </string> - <string name="anim_backflip"> - Salto achterwaarts - </string> - <string name="anim_express_laugh"> - Daverende lach - </string> - <string name="anim_express_toothsmile"> - Grote lach - </string> - <string name="anim_blowkiss"> - Blaas kus - </string> - <string name="anim_express_bored"> - Verveeld - </string> - <string name="anim_bow"> - Buigen - </string> - <string name="anim_clap"> - Klappen - </string> - <string name="anim_courtbow"> - Hof buiging - </string> - <string name="anim_express_cry"> - Huilen - </string> - <string name="anim_dance1"> - Dansen 1 - </string> - <string name="anim_dance2"> - Dansen 2 - </string> - <string name="anim_dance3"> - Dansen 3 - </string> - <string name="anim_dance4"> - Dansen 4 - </string> - <string name="anim_dance5"> - Dansen 5 - </string> - <string name="anim_dance6"> - Dansen 6 - </string> - <string name="anim_dance7"> - Dansen 7 - </string> - <string name="anim_dance8"> - Dansen 8 - </string> - <string name="anim_express_disdain"> - Minachting - </string> - <string name="anim_drink"> - Drinken - </string> - <string name="anim_express_embarrased"> - Beschaamd - </string> - <string name="anim_angry_fingerwag"> - Vinger opsteken - </string> - <string name="anim_fist_pump"> - Vuist pompen - </string> - <string name="anim_yoga_float"> - Zwevende Yoga - </string> - <string name="anim_express_frown"> - Fronsen - </string> - <string name="anim_impatient"> - Ongeduldig - </string> - <string name="anim_jumpforjoy"> - Vreugdesprong - </string> - <string name="anim_kissmybutt"> - Kus mijn reet - </string> - <string name="anim_express_kiss"> - Kussen - </string> - <string name="anim_laugh_short"> - Lachen - </string> - <string name="anim_musclebeach"> - Spieren tonen - </string> - <string name="anim_no_unhappy"> - Nee (ongelukkig) - </string> - <string name="anim_no_head"> - Nee - </string> - <string name="anim_nyanya"> - Nya-nya-nya - </string> - <string name="anim_punch_onetwo"> - Een-twee stomp - </string> - <string name="anim_express_open_mouth"> - Open mond - </string> - <string name="anim_peace"> - Vrede - </string> - <string name="anim_point_you"> - Wijzen naar ander - </string> - <string name="anim_point_me"> - Wijzen naar jezelf - </string> - <string name="anim_punch_l"> - Stomp links - </string> - <string name="anim_punch_r"> - Stomp rechts - </string> - <string name="anim_rps_countdown"> - SPS tellen - </string> - <string name="anim_rps_paper"> - SPS papier - </string> - <string name="anim_rps_rock"> - SPS steen - </string> - <string name="anim_rps_scissors"> - SPS schaar - </string> - <string name="anim_express_repulsed"> - Afkeer - </string> - <string name="anim_kick_roundhouse_r"> - Ronddraaiende trap - </string> - <string name="anim_express_sad"> - Droevig - </string> - <string name="anim_salute"> - Groet - </string> - <string name="anim_shout"> - Roepen - </string> - <string name="anim_express_shrug"> - Schouders ophalen - </string> - <string name="anim_express_smile"> - Glimlachen - </string> - <string name="anim_smoke_idle"> - Roken inactief - </string> - <string name="anim_smoke_inhale"> - Roken inhaleren - </string> - <string name="anim_smoke_throw_down"> - Roken neergooien - </string> - <string name="anim_express_surprise"> - Verrassing - </string> - <string name="anim_sword_strike_r"> - Zwaardslag - </string> - <string name="anim_angry_tantrum"> - Woedeaanval - </string> - <string name="anim_express_tongue_out"> - Tong uitsteken - </string> - <string name="anim_hello"> - Zwaaien - </string> - <string name="anim_whisper"> - Fluisteren - </string> - <string name="anim_whistle"> - Fluiten - </string> - <string name="anim_express_wink"> - Knipogen - </string> - <string name="anim_wink_hollywood"> - Knipogen (Hollywood) - </string> - <string name="anim_express_worry"> - Bezorgd - </string> - <string name="anim_yes_happy"> - Ja (vrolijk) - </string> - <string name="anim_yes_head"> - Ja - </string> - <string name="texture_loading"> - Laden... - </string> - <string name="worldmap_offline"> - Offline - </string> - <string name="whisper"> - fluistert: - </string> - <string name="shout"> - schreeuwt: - </string> -</strings> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- This file contains strings that used to be hardcoded in the source. + It is only for those strings which do not belong in a floater. + For example, the strings used in avatar chat bubbles, and strings + that are returned from one component and may appear in many places--> +<strings> + <string name="LoginInProgress"> + Inloggen. Het kan lijken dat [APP_NAME] is vastgelopen. Wacht u alstublieft... . + </string> + <string name="LoginAuthenticating"> + Authenticeren + </string> + <string name="LoginMaintenance"> + Account onderhoud wordt uitgevoerd... + </string> + <string name="LoginAttempt"> + Vorige loginpoging is mislukt. Inloggen, poging [NUMBER] + </string> + <string name="LoginPrecaching"> + Wereld laden... + </string> + <string name="LoginInitializingBrowser"> + Geïntegreerde web browser initialiseren... + </string> + <string name="LoginInitializingMultimedia"> + Multimedia initialiseren... + </string> + <string name="LoginVerifyingCache"> + Cache bestanden verifiëren (kan 60-90 seconden duren)... + </string> + <string name="LoginProcessingResponse"> + Antwoord verwerken... + </string> + <string name="LoginInitializingWorld"> + Wereld initialiseren... + </string> + <string name="LoginDecodingImages"> + Afbeeldingen decoderen... + </string> + <string name="LoginInitializingQuicktime"> + QuickTime initialiseren... + </string> + <string name="LoginQuicktimeNotFound"> + QuickTime niet gevonden - kan niet initialiseren. + </string> + <string name="LoginQuicktimeOK"> + QuickTime succesvol geïnitialiseerd. + </string> + <string name="LoginWaitingForRegionHandshake"> + Wachten op overeenstemming met regio... + </string> + <string name="LoginConnectingToRegion"> + Verbinden met regio... + </string> + <string name="LoginDownloadingClothing"> + Kleding downloaden... + </string> + <string name="AgentLostConnection"> + Deze regio kan problemen ondervinden. Controleer alstublieft uw verbinding met het internet. + </string> + <string name="TooltipPerson"> + Persoon + </string> + <string name="TooltipNoName"> + (geen naam) + </string> + <string name="TooltipOwner"> + Eigenaar: + </string> + <string name="TooltipPublic"> + Openbaar + </string> + <string name="TooltipIsGroup"> + (Groep) + </string> + <string name="TooltipFlagScript"> + Script + </string> + <string name="TooltipFlagPhysics"> + Fysiek + </string> + <string name="TooltipFlagTouch"> + Aanraken + </string> + <string name="TooltipFlagL$"> + L$ + </string> + <string name="TooltipFlagDropInventory"> + Deponeer inventaris + </string> + <string name="TooltipFlagPhantom"> + Fantoom + </string> + <string name="TooltipFlagTemporary"> + Tijdelijk + </string> + <string name="TooltipFlagRightClickMenu"> + (Rechtsklikken voor menu) + </string> + <string name="TooltipFreeToCopy"> + Vrij te kopiëren + </string> + <string name="TooltipForSaleL$"> + Te koop: L$[AMOUNT] + </string> + <string name="TooltipForSaleMsg"> + Te koop: [MESSAGE] + </string> + <string name="TooltipFlagGroupBuild"> + Groep bouwen + </string> + <string name="TooltipFlagNoBuild"> + Niet bouwen + </string> + <string name="TooltipFlagNoEdit"> + Groep bouwen + </string> + <string name="TooltipFlagNotSafe"> + Niet veilig + </string> + <string name="TooltipFlagNoFly"> + Niet vliegen + </string> + <string name="TooltipFlagGroupScripts"> + Groep scripts + </string> + <string name="TooltipFlagNoScripts"> + Geen scripts + </string> + <string name="TooltipLand"> + Land: + </string> + <string name="TooltipMustSingleDrop"> + Slechts een enkel item kan hier naartoe gesleept worden + </string> + <string name="RetrievingData"> + Ophalen... + </string> + <string name="ReleaseNotes"> + Release Notes + </string> + <string name="LoadingData"> + Laden... + </string> + <string name="AvatarNameNobody"> + (niemand) + </string> + <string name="AvatarNameWaiting"> + (wachten) + </string> + <string name="AvatarNameHippos"> + (hippos) + </string> + <string name="GroupNameNone"> + (geen) + </string> + <string name="AssetErrorNone"> + Geen fout + </string> + <string name="AssetErrorRequestFailed"> + Asset verzoek: mislukt + </string> + <string name="AssetErrorNonexistentFile"> + Asset verzoek: niet-bestaand bestand + </string> + <string name="AssetErrorNotInDatabase"> + Asset verzoek: asset niet gevonden in de database + </string> + <string name="AssetErrorEOF"> + Einde van bestand + </string> + <string name="AssetErrorCannotOpenFile"> + Kan bestand niet openen + </string> + <string name="AssetErrorFileNotFound"> + Bestand niet gevonden + </string> + <string name="AssetErrorTCPTimeout"> + Bestandsoverdracht time-out + </string> + <string name="AssetErrorCircuitGone"> + Circuit verdwenen + </string> + <string name="AssetErrorPriceMismatch"> + Viewer en server zijn het niet eens over de prijs. + </string> + <string name="AssetErrorUnknownStatus"> + Onbekende status + </string> + <string name="AvatarEditingApparance"> + (Uiterlijk bewerken) + </string> + <string name="AvatarAway"> + Afwezig + </string> + <string name="AvatarBusy"> + Bezet + </string> + <string name="AvatarMuted"> + Genegeerd + </string> + <string name="anim_express_afraid"> + Bang + </string> + <string name="anim_express_anger"> + Boos + </string> + <string name="anim_away"> + Afwezig + </string> + <string name="anim_backflip"> + Salto achterwaarts + </string> + <string name="anim_express_laugh"> + Daverende lach + </string> + <string name="anim_express_toothsmile"> + Grote lach + </string> + <string name="anim_blowkiss"> + Blaas kus + </string> + <string name="anim_express_bored"> + Verveeld + </string> + <string name="anim_bow"> + Buigen + </string> + <string name="anim_clap"> + Klappen + </string> + <string name="anim_courtbow"> + Hof buiging + </string> + <string name="anim_express_cry"> + Huilen + </string> + <string name="anim_dance1"> + Dansen 1 + </string> + <string name="anim_dance2"> + Dansen 2 + </string> + <string name="anim_dance3"> + Dansen 3 + </string> + <string name="anim_dance4"> + Dansen 4 + </string> + <string name="anim_dance5"> + Dansen 5 + </string> + <string name="anim_dance6"> + Dansen 6 + </string> + <string name="anim_dance7"> + Dansen 7 + </string> + <string name="anim_dance8"> + Dansen 8 + </string> + <string name="anim_express_disdain"> + Minachting + </string> + <string name="anim_drink"> + Drinken + </string> + <string name="anim_express_embarrased"> + Beschaamd + </string> + <string name="anim_angry_fingerwag"> + Vinger opsteken + </string> + <string name="anim_fist_pump"> + Vuist pompen + </string> + <string name="anim_yoga_float"> + Zwevende Yoga + </string> + <string name="anim_express_frown"> + Fronsen + </string> + <string name="anim_impatient"> + Ongeduldig + </string> + <string name="anim_jumpforjoy"> + Vreugdesprong + </string> + <string name="anim_kissmybutt"> + Kus mijn reet + </string> + <string name="anim_express_kiss"> + Kussen + </string> + <string name="anim_laugh_short"> + Lachen + </string> + <string name="anim_musclebeach"> + Spieren tonen + </string> + <string name="anim_no_unhappy"> + Nee (ongelukkig) + </string> + <string name="anim_no_head"> + Nee + </string> + <string name="anim_nyanya"> + Nya-nya-nya + </string> + <string name="anim_punch_onetwo"> + Een-twee stomp + </string> + <string name="anim_express_open_mouth"> + Open mond + </string> + <string name="anim_peace"> + Vrede + </string> + <string name="anim_point_you"> + Wijzen naar ander + </string> + <string name="anim_point_me"> + Wijzen naar jezelf + </string> + <string name="anim_punch_l"> + Stomp links + </string> + <string name="anim_punch_r"> + Stomp rechts + </string> + <string name="anim_rps_countdown"> + SPS tellen + </string> + <string name="anim_rps_paper"> + SPS papier + </string> + <string name="anim_rps_rock"> + SPS steen + </string> + <string name="anim_rps_scissors"> + SPS schaar + </string> + <string name="anim_express_repulsed"> + Afkeer + </string> + <string name="anim_kick_roundhouse_r"> + Ronddraaiende trap + </string> + <string name="anim_express_sad"> + Droevig + </string> + <string name="anim_salute"> + Groet + </string> + <string name="anim_shout"> + Roepen + </string> + <string name="anim_express_shrug"> + Schouders ophalen + </string> + <string name="anim_express_smile"> + Glimlachen + </string> + <string name="anim_smoke_idle"> + Roken inactief + </string> + <string name="anim_smoke_inhale"> + Roken inhaleren + </string> + <string name="anim_smoke_throw_down"> + Roken neergooien + </string> + <string name="anim_express_surprise"> + Verrassing + </string> + <string name="anim_sword_strike_r"> + Zwaardslag + </string> + <string name="anim_angry_tantrum"> + Woedeaanval + </string> + <string name="anim_express_tongue_out"> + Tong uitsteken + </string> + <string name="anim_hello"> + Zwaaien + </string> + <string name="anim_whisper"> + Fluisteren + </string> + <string name="anim_whistle"> + Fluiten + </string> + <string name="anim_express_wink"> + Knipogen + </string> + <string name="anim_wink_hollywood"> + Knipogen (Hollywood) + </string> + <string name="anim_express_worry"> + Bezorgd + </string> + <string name="anim_yes_happy"> + Ja (vrolijk) + </string> + <string name="anim_yes_head"> + Ja + </string> + <string name="texture_loading"> + Laden... + </string> + <string name="worldmap_offline"> + Offline + </string> + <string name="whisper"> + fluistert: + </string> + <string name="shout"> + schreeuwt: + </string> + <string name="SIM_ACCESS_PG"> + PG + </string> + <string name="SIM_ACCESS_MATURE"> + Mature + </string> + <string name="SIM_ACCESS_ADULT"> + Adult + </string> + <string name="SIM_ACCESS_DOWN"> + Offline + </string> + <string name="SIM_ACCESS_MIN"> + Onbekend + </string> + <string name="land_type_unknown"> + (onbekend) + </string> + <string name="covenant_never_modified">Laatst gewijzigd: (nooit)</string> + <string name="covenant_modified">Laatst gewijzigd: </string> + <string name="all_files"> + Alle bestanden + </string> + <string name="sound_files"> + Geluiden + </string> + <string name="animation_files"> + Animaties + </string> + <string name="image_files"> + Afbeeldingen + </string> + <string name="save_file_verb"> + Opslaan + </string> + <string name="load_file_verb"> + Laden + </string> + <string name="targa_image_files"> + Targa afbeeldingen + </string> + <string name="bitmap_image_files"> + Bitmap afbeeldingen + </string> + <string name="avi_movie_file"> + AVI Film bestand + </string> + <string name="xaf_animation_file"> + XAF Anim bestand + </string> + <string name="xml_file"> + XML bestand + </string> + <string name="dot_raw_file"> + RAW bestand + </string> + <string name="compressed_image_files"> + Gecomprimeerde afbeeldingen + </string> + <string name="load_files"> + Laad bestanden + </string> + <string name="choose_the_directory"> + Kies folder + </string> +</strings> diff --git a/indra/newview/skins/default/xui/nl/teleport_strings.xml b/indra/newview/skins/default/xui/nl/teleport_strings.xml index f524fda7248ca64f2987d67a9d86aecad3ffe0f3..ff43e0f32ff159fa24296d38ca3b3f639fc514b7 100644 --- a/indra/newview/skins/default/xui/nl/teleport_strings.xml +++ b/indra/newview/skins/default/xui/nl/teleport_strings.xml @@ -1,73 +1,75 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<teleport_messages> - <message_set name="errors"> - <message name="invalid_tport"> - Er is een probleem opgetreden bij het verwerken van uw verzoek voor een teleport. U dient wellicht opnieuw in te loggen voor uw kunt teleporteren. Wanneer u deze boodschap blijft ontvangen, controleert u dan alstublieft de Tech Support FAQ op: www.secondlife.com/support. - </message> - <message name="invalid_region_handoff"> - Er is een probleem opgetreden bij het oversteken naar een andere regio. U dient wellicht opnieuw in te loggen voor uw kunt oversteken naar andere regio's. Wanneer u deze boodschap blijft ontvangen, controleert u dan alstublieft de Tech Support FAQ op: www.secondlife.com/support. - </message> - <message name="blocked_tport"> - Sorry, teleport is momenteel geblokkeerd. Probeer het zo meteen opnieuw. Indien u nog steeds niet kunt teleporteren, log dan alstublieft uit en weer in om het probleem te verhelpen. - </message> - <message name="nolandmark_tport"> - Sorry, het systeem was niet in staat de bestemming van de landmarkering te vinden. - </message> - <message name="timeout_tport"> - Sorry, het systeem was niet in staat om de teleport verbinding af te ronden. Probeer het zo meteen nog een keer. - </message> - <message name="noaccess_tport"> - Sorry, u heeft geen toegang tot die teleportbestemming. - </message> - <message name="missing_attach_tport"> - Uw bevestigingen zijn nog niet gearriveerd. Probeer nog een aantal seconden te wachten of log uit en weer in voor u probeert te teleporteren. - </message> - <message name="too_many_uploads_tport"> - De assetwachtrij in deze regio is momenteel volgelopen, dus uw teleportverzoek zal niet tijdig afgerond kunnen worden. Probeer het alstublieft opnieuw over een aantal minuten of ga naar een minder druk gebied. - </message> - <message name="expired_tport"> - Sorry, het systeem was niet in staat uw teleportverzoek tijdig af te ronden. Probeer het alstublieft opnieuw over een aantal minuten. - </message> - <message name="expired_region_handoff"> - Sorry, het systeem was niet in staat om het oversteken naar een andere regio tijdig af te ronden. Probeer het alstublieft opnieuw over een aantal minuten. - </message> - <message name="no_host"> - Kan teleportbestemming niet vinden. De bestemming is mogelijk tijdelijk niet beschikbaar of bestaat niet meer. Probeer het alstublieft opnieuw over een aantal minuten. - </message> - <message name="no_inventory_host"> - Het inventarissysteem is momenteel niet beschikbaar - </message> - </message_set> - <message_set name="progress"> - <message name="sending_dest"> - Verzenden naar bestemming - </message> - <message name="redirecting"> - U wordt doorverwezen naar andere locatie. - </message> - <message name="relaying"> - Omschakelen naar bestemming. - </message> - <message name="sending_home"> - Thuislocatieverzoek verzenden - </message> - <message name="sending_landmark"> - Landmarkeringlocatieverzoek verzenden - </message> - <message name="completing"> - Teleport voltooien - </message> - <message name="resolving"> - Bestemming bepalen. - </message> - <message name="contacting"> - Contact maken met nieuwe regio. - </message> - <message name="arriving"> - Arriveren… - </message> - <message name="requesting"> - Teleport aanvragen… - </message> - </message_set> -</teleport_messages> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<teleport_messages> + <message_set name="errors"> + <message name="invalid_tport"> + Er is een probleem opgetreden bij het verwerken van uw verzoek voor een teleport. U dient wellicht opnieuw in te loggen voor uw kunt teleporteren. Wanneer u deze boodschap blijft ontvangen, controleert u dan alstublieft de Tech Support FAQ op: +www.secondlife.com/support + </message> + <message name="invalid_region_handoff"> + Er is een probleem opgetreden bij het oversteken naar een andere regio. U dient wellicht opnieuw in te loggen voor uw kunt oversteken naar andere regio's. Wanneer u deze boodschap blijft ontvangen, controleert u dan alstublieft de Tech Support FAQ op: +www.secondlife.com/support + </message> + <message name="blocked_tport"> + Sorry, teleport is momenteel geblokkeerd. Probeer het zo meteen opnieuw. Indien u nog steeds niet kunt teleporteren, log dan alstublieft uit en weer in om het probleem te verhelpen. + </message> + <message name="nolandmark_tport"> + Sorry, het systeem was niet in staat de bestemming van de landmarkering te vinden. + </message> + <message name="timeout_tport"> + Sorry, het systeem was niet in staat om de teleport verbinding af te ronden. Probeer het zo meteen nog een keer. + </message> + <message name="noaccess_tport"> + Sorry, u heeft geen toegang tot die teleportbestemming. + </message> + <message name="missing_attach_tport"> + Uw bevestigingen zijn nog niet gearriveerd. Probeer nog een aantal seconden te wachten of log uit en weer in voor u probeert te teleporteren. + </message> + <message name="too_many_uploads_tport"> + De assetwachtrij in deze regio is momenteel volgelopen, dus uw teleportverzoek zal niet tijdig afgerond kunnen worden. Probeer het alstublieft opnieuw over een aantal minuten of ga naar een minder druk gebied. + </message> + <message name="expired_tport"> + Sorry, het systeem was niet in staat uw teleportverzoek tijdig af te ronden. Probeer het alstublieft opnieuw over een aantal minuten. + </message> + <message name="expired_region_handoff"> + Sorry, het systeem was niet in staat om het oversteken naar een andere regio tijdig af te ronden. Probeer het alstublieft opnieuw over een aantal minuten. + </message> + <message name="no_host"> + Kan teleportbestemming niet vinden. De bestemming is mogelijk tijdelijk niet beschikbaar of bestaat niet meer. Probeer het alstublieft opnieuw over een aantal minuten. + </message> + <message name="no_inventory_host"> + Het inventarissysteem is momenteel niet beschikbaar. + </message> + </message_set> + <message_set name="progress"> + <message name="sending_dest"> + Verzenden naar bestemming + </message> + <message name="redirecting"> + U wordt doorverwezen naar andere locatie. + </message> + <message name="relaying"> + Omschakelen naar bestemming. + </message> + <message name="sending_home"> + Thuislocatieverzoek verzenden + </message> + <message name="sending_landmark"> + Landmarkeringlocatieverzoek verzenden + </message> + <message name="completing"> + Teleport voltooien + </message> + <message name="resolving"> + Bestemming bepalen. + </message> + <message name="contacting"> + Contact maken met nieuwe regio. + </message> + <message name="arriving"> + Arriveren… + </message> + <message name="requesting"> + Teleport aanvragen… + </message> + </message_set> +</teleport_messages> diff --git a/indra/newview/skins/default/xui/pl/floater_about_land.xml b/indra/newview/skins/default/xui/pl/floater_about_land.xml index c0e053094a5fbe678397ce42259641c054fb6683..7612212105b01437b1036c606ea05eb8ebb57a57 100755 --- a/indra/newview/skins/default/xui/pl/floater_about_land.xml +++ b/indra/newview/skins/default/xui/pl/floater_about_land.xml @@ -8,6 +8,18 @@ <text length="1" name="Description:" type="string"> Opis: </text> + <text name="LandType"> + Typ: + </text> + <text name="LandTypeText"> + Region Główny / Ziemia + </text> + <text name="ContentRating"> + Rodzaj: + </text> + <text name="ContentRatingText"> + 'Adult' + </text> <text length="1" name="Owner:" type="string"> WÅ‚aÅ›ciciel: </text> @@ -16,7 +28,7 @@ </text> <button label="Profile..." label_selected="Profile..." name="Profile..."/> <text length="1" name="Group:" type="string"> - Groupa: + Grupa: </text> <button label="Ustaw..." label_selected="Ustaw..." name="Set..."/> <check_box label="UdostÄ™pnij przypisywanie na grupÄ™" name="check deed" tool_tip="Oficer grupy ma prawo przepisać prawo wÅ‚asnoÅ›ci posiadÅ‚oÅ›ci na grupÄ™. PosiadÅ‚ość wspierana jest przez przydziaÅ‚y pochodzÄ…ce od czÅ‚onków grupy."/> @@ -29,7 +41,7 @@ Nie </text> <text length="1" name="For Sale: Price L$[PRICE]." type="string"> - Cena: [PRICE]L$. + Cena: L$[PRICE] (L$[PRICE_PER_SQM]/m²). </text> <button label="Sprzedaj PosiadÅ‚ość..." label_selected="Sprzedaj PosiadÅ‚ość..." name="Sell Land..."/> <text length="1" name="For sale to" type="string"> @@ -52,7 +64,7 @@ Obszar: </text> <text length="1" name="PriceText" type="string"> - 4048 m + 4048 m² </text> <text length="1" name="Traffic:" type="string"> Ruch: @@ -60,9 +72,9 @@ <text length="1" name="DwellText" type="string"> 0 </text> - <button label="Kup PosiadÅ‚ość..." label_selected="Kup PosiadÅ‚ość..." name="Buy Land..." width="125" left="130"/> + <button label="Kup PosiadÅ‚ość..." label_selected="Kup PosiadÅ‚ość..." left="130" name="Buy Land..." width="125"/> <button label="Kup dla Grupy..." label_selected="Kup dla Grupy..." name="Buy For Group..."/> - <button label="Kup PrzepustkÄ™..." label_selected="Kup PrzeputkÄ™..." name="Buy Pass..." tool_tip="Przepustka udostÄ™pnia tymczasowy wstÄ™p na posiadÅ‚ość." width="125" left="130"/> + <button label="Kup PrzepustkÄ™..." label_selected="Kup PrzeputkÄ™..." left="130" name="Buy Pass..." tool_tip="Przepustka udostÄ™pnia tymczasowy wstÄ™p na posiadÅ‚ość." width="125"/> <button label="Porzuć z PosiadÅ‚oÅ›ci..." label_selected="Porzuć z PosiadÅ‚oÅ›ci..." name="Abandon Land..."/> <button label="Odzyskaj PosiadÅ‚ość..." label_selected="Odzyskaj PosiadÅ‚ość..." name="Reclaim Land..."/> <button label="Sprzedaż przez Lindenów..." label_selected="Sprzedaż przez Lindenów..." name="Linden Sale..." tool_tip="PosiadÅ‚ość musi mieć wÅ‚aÅ›ciciela, zawartość oraz nie może być wystawiona na aukcÄ™."/> @@ -76,7 +88,7 @@ Obszar: </string> <string name="area_size_text"> - [AREA] m + [AREA] m² </string> <string name="auction_id_text"> Numer aukcji: [ID] @@ -108,36 +120,61 @@ Idź do Åšwiat > O PosiadÅ‚oÅ›ci albo wybierz innÄ… posiadÅ‚ość żeby pokaz </string> </panel> <panel label="Umowa" name="land_covenant_panel"> - <text length="1" name="covenant_timestamp_text" type="string"> - Ostatnia Modyfikacja Wed Dec 31 16:00:00 1969 - </text> - <text length="1" name="region_name_lbl" type="string"> - Region: - </text> - <text length="1" name="region_name_text" type="string"> - leyla + <text name="estate_section_lbl"> + MajÄ…tek: </text> <text length="1" name="estate_name_lbl" type="string"> - PosiadÅ‚ość: + Nazwa: </text> - <text length="1" name="estate_name_text" type="string"> + <text length="1" name="estate_name_text" type="string" left="115"> Główne </text> <text length="1" name="estate_owner_lbl" type="string"> WÅ‚aÅ›ciciel: </text> - <text length="1" name="estate_owner_text" type="string"> + <text length="1" name="estate_owner_text" type="string" left="115"> (brak) </text> - <text length="1" name="resellable_clause" type="string"> + <text_editor length="1" name="covenant_editor" type="string" left="115"> + Ta posiadÅ‚ość nie wymaga żadej umowy. + </text_editor> + <text length="1" name="covenant_timestamp_text" type="string" left="115"> + Ostatnia Modyfikacja Wed Dec 31 16:00:00 1969 + </text> + <text name="region_section_lbl"> + Region: + </text> + <text length="1" name="region_name_lbl" type="string"> + Nazwa: + </text> + <text length="1" name="region_name_text" type="string" left="115"> + leyla + </text> + <text name="region_landtype_lbl"> + Typ: + </text> + <text name="region_landtype_text" left="115"> + Region Główny / Ziemia + </text> + <text name="region_maturity_lbl"> + Rodzaj: + </text> + <text name="region_maturity_text" left="115"> + 'Adult' + </text> + <text name="resellable_lbl"> + Odsprzedaj: + </text> + <text length="1" name="resellable_clause" type="string" width="338" left="115"> PosiadÅ‚ość zakupiona w tym regionie nie może być odsprzedana. </text> - <text length="1" name="changeable_clause" type="string"> - PosiadÅ‚ość zakupiona w tym regionie nie może być łączona/dzielona + <text name="changeable_lbl"> + Podziel: + </text> + <text length="1" name="changeable_clause" type="string" width="338" left="115"> + PosiadÅ‚ość zakupiona w tym regionie nie może być +łączona/dzielona. </text> - <text_editor length="1" name="covenant_editor" type="string"> - Ta posiadÅ‚ość nie wymaga żadej umowy. - </text_editor> <string name="can_resell"> PosiadÅ‚ość zakupiona w tym regionie może być odsprzedana. </string> @@ -145,10 +182,11 @@ Idź do Åšwiat > O PosiadÅ‚oÅ›ci albo wybierz innÄ… posiadÅ‚ość żeby pokaz PosiadÅ‚ość zakupiona w tym regionie nie może być odsprzedana. </string> <string name="can_change"> - PosiadÅ‚ość zakupiona w tym regionie może być łączona/dzielona + PosiadÅ‚ość zakupiona w tym regionie może być łączona/dzielona. </string> <string name="can_not_change"> - PosiadÅ‚ość zakupiona w tym regionie nie może być łączona/dzielona + PosiadÅ‚ość zakupiona w tym regionie nie może być +łączona/dzielona. </string> </panel> <panel label="Obiekty" name="land_objects_panel"> @@ -215,13 +253,14 @@ Idź do Åšwiat > O PosiadÅ‚oÅ›ci albo wybierz innÄ… posiadÅ‚ość żeby pokaz <text length="1" name="Object Owners:" type="string" width="108"> WÅ‚aÅ›ciciel Obiektów: </text> - <button label="OdÅ›wież ListÄ™" label_selected="OdÅ›wież ListÄ™" name="Refresh List" left="112"/> - <button label="Zwróć obiekty..." label_selected="Zwróć obiekty..." name="Return objects..." left="224"/> + <button label="OdÅ›wież ListÄ™" label_selected="OdÅ›wież ListÄ™" left="112" name="Refresh List"/> + <button label="Zwróć obiekty..." label_selected="Zwróć obiekty..." left="224" name="Return objects..."/> <name_list name="owner list"> <column label="Typ" name="type"/> <column name="online_status"/> <column label="Nazwa" name="name"/> <column label="Liczba" name="count"/> + <column label="Najbardziej aktualne" name="mostrecent"/> </name_list> </panel> <panel label="Opcje" name="land_options_panel"> @@ -240,7 +279,7 @@ Idź do Åšwiat > O PosiadÅ‚oÅ›ci albo wybierz innÄ… posiadÅ‚ość żeby pokaz Nowe Obiekty: </text> <check_box label="Wszyscy" name="all object entry check"/> - <check_box label="Gropa" name="group object entry check"/> + <check_box label="Grupa" name="group object entry check"/> <text length="1" name="allow_label4" type="string"> Skrypty: </text> @@ -252,10 +291,60 @@ Idź do Åšwiat > O PosiadÅ‚oÅ›ci albo wybierz innÄ… posiadÅ‚ość żeby pokaz <check_box label="Bezpieczna (brak zniszczeÅ„)" name="check safe" tool_tip="Wybrana - posiadÅ‚ość jest bezpieczna - zniszczenia w walce sÄ… zablokowane. Nie wybrana - zniszczenia w walce sÄ… włączone."/> <check_box label="Popychanie niedozwolone" name="PushRestrictCheck" tool_tip="Nie pozwalaj skryptom na popychanie. Wybranie tej opcji może być przydatne do ograniczenia zakłóceÅ„ spokoju w Twojej posiadÅ‚oÅ›ci."/> <check_box label="WyÅ›wietlaj w wyszukiwarce (30L$/tyg.)" name="ShowDirectoryCheck" tool_tip="UdostÄ™pnij ukazywanie siÄ™ nazwy posiadÅ‚oÅ›ci w wyszukiwarce"/> + <string name="search_enabled_tooltip"> + UdostÄ™pnij wyÅ›wietlanie tej posiadÅ‚oÅ›ci w wyszukiwarce + </string> + <string name="search_disabled_small_tooltip"> + Wybrana opcja jest wyłączona ze wzglÄ™du iż wielkość posiadÅ‚oÅ›ci wynosi 128 m² bÄ…dź mniej. +Jedynie wiÄ™ksze posiadÅ‚oÅ›ci mogÄ… być umieszczone w bazie wyszukiwarki. + </string> + <string name="search_disabled_permissions_tooltip"> + Wybrana opcja jest wyłączona ponieważ nie posiadasz prawa do modyfikacji posiadÅ‚oÅ›ci. + </string> + <combo_box name="land category with adult"> + <combo_item name="AnyCategory"> + Każda Kategoria + </combo_item> + <combo_item name="LindenLocation"> + Linden Lokacja + </combo_item> + <combo_item name="Adult"> + 'Adult' + </combo_item> + <combo_item name="Arts&Culture"> + Sztuka i Kultura + </combo_item> + <combo_item name="Business"> + Biznes + </combo_item> + <combo_item name="Educational"> + Edukacja + </combo_item> + <combo_item name="Gaming"> + Gra + </combo_item> + <combo_item name="Hangout"> + Poznawanie ludzi + </combo_item> + <combo_item name="NewcomerFriendly"> + Przyjazne dla nowych + </combo_item> + <combo_item name="Parks&Nature"> + Park i Natura + </combo_item> + <combo_item name="Residential"> + Mieszkalna + </combo_item> + <combo_item name="Shopping"> + Zakupy + </combo_item> + <combo_item name="Other"> + Inne + </combo_item> + </combo_box> <combo_box name="land category"> <combo_box.item name="AnyCategory" label="Każda"/> <combo_box.item name="LindenLocation" label="Linden Lokacja"/> - <combo_box.item name="Arts&Culture" label="Sztuka i Kultura"/> <combo_box.item name="Business" label="Biznes"/> <combo_box.item name="Educational" label="Edukacyjna"/> @@ -268,7 +357,19 @@ Idź do Åšwiat > O PosiadÅ‚oÅ›ci albo wybierz innÄ… posiadÅ‚ość żeby pokaz <combo_box.item name="Other" label="Inna"/> </combo_box> <button label="?" label_selected="?" name="?"/> - <check_box name="MatureCheck" /> + <check_box label="Treść 'Mature'" name="MatureCheck" tool_tip=""/> + <string name="mature_check_mature"> + Treść 'Mature' + </string> + <string name="mature_check_adult"> + Treść 'Adult' + </string> + <string name="mature_check_mature_tooltip"> + Twoja posiadÅ‚ość bÄ…dź treść jakÄ… zawiera klasyfikowana jest jako 'Mature'. + </string> + <string name="mature_check_adult_tooltip"> + Informacje o Twojej posiadÅ‚oÅ›ci i treÅ›ci jakÄ… zawiera klasyfikowane sÄ… jako 'Adult'. + </string> <text length="1" name="Snapshot:" type="string"> ZdjÄ™cie: </text> @@ -341,21 +442,14 @@ Mediów: <text length="1" name="Sound:" type="string"> DźwiÄ™k: </text> - <check_box label="Ogranicz dźwiÄ™ki przestrzenne w posiadÅ‚oÅ›ci" name="check sound local"/> + <check_box label="Restrykcja obiektów oraz gestur dozwolonych w tej posiadÅ‚oÅ›ci" name="check sound local"/> + <button label="?" label_selected="?" name="?" left="432"/> <text length="1" name="Voice settings:" type="string"> GÅ‚os: </text> - <radio_group name="parcel_voice_channel" width="310"> - <radio_item length="1" name="Estate" type="string"> - Użyj kanaÅ‚u przestrzennego na posiadloÅ›ci - </radio_item> - <radio_item length="1" name="Private" type="string"> - Użyj kanaÅ‚u prywatnego na posiadloÅ›ci - </radio_item> - <radio_item length="1" name="Disabled" type="string"> - Zablokuj kanaÅ‚ przestrzenny na posiadloÅ›ci - </radio_item> - </radio_group> + <check_box label="Rozmowy Dozwolone" name="parcel_enable_voice_channel"/> + <check_box label="Rozmowy Dozwolone (ustawione przez majÄ…tek)" name="parcel_enable_voice_channel_is_estate_disabled"/> + <check_box label="Ogranicz komunikacjÄ™ gÅ‚osowÄ… w tej posiadÅ‚oÅ›ci." name="parcel_enable_voice_channel_parcel"/> </panel> <panel label="DostÄ™p" name="land_access_panel"> <text length="1" name="Limit access to this parcel to:" type="string"> diff --git a/indra/newview/skins/default/xui/pl/floater_animation_preview.xml b/indra/newview/skins/default/xui/pl/floater_animation_preview.xml index f430651b7978e7c506b9d6fbe8a0c93eae8abf31..0524b8ade32db358091f209e4727f517ee86f322 100755 --- a/indra/newview/skins/default/xui/pl/floater_animation_preview.xml +++ b/indra/newview/skins/default/xui/pl/floater_animation_preview.xml @@ -7,66 +7,140 @@ Opis: </text> <spinner label="PierwszeÅ„stwo" name="priority" - tool_tip="Kontroluj,które z animacji,które też używasz mogÄ… zostać zdominowane przez tÄ… animacjÄ™" /> - <check_box label="Loop" name="loop_check" tool_tip="Powtarzaj tÄ™ animacjÄ™" /> - <spinner label="In(%)" name="loop_in_point" + tool_tip="Kontroluj,animacje,które mogÄ… zostać zdominowane przez tÄ… animacjÄ™" /> + <check_box label="Powtarzaj" name="loop_check" tool_tip="Powtarzaj tÄ… animacjÄ™" /> + <spinner label="Od(%)" name="loop_in_point" tool_tip="Wybierz punkt, od którego chcesz zacząć powtarzać animacjÄ™" /> - <spinner label="Out(%)" name="loop_out_point" + <spinner label="Do(%)" name="loop_out_point" tool_tip="Wybierz punkt, od którego chcesz zakoÅ„czyć powtarznie animacji" /> <text name="hand_label"> Pozycja RÄ™ki </text> <combo_box label="" name="hand_pose_combo" tool_tip="Kontroluje co robi rÄ™ka podczas animacji"> - <combo_box.item name="Spread" label="RozciÄ…gaj" /> - <combo_box.item name="Relaxed" label="Odpocznij" /> - <combo_box.item name="PointBoth" label="Wskazuj" /> - <combo_box.item name="Fist" label="Pięść" /> - <combo_box.item name="RelaxedLeft" label="Lewa-Odpocznij" /> - <combo_box.item name="PointLeft" label="Wskazuj LewÄ…" /> - <combo_box.item name="FistLeft" label="ZaciÅ›nij LewÄ…" /> - <combo_box.item name="RelaxedRight" label="Prawa-Odpocznj" /> - <combo_box.item name="PointRight" label="Wskazuj PrawÄ…" /> - <combo_box.item name="FistRight" label="ZaciÅ›nij PrawÄ…" /> - <combo_box.item name="SaluteRight" label="Salutuj PrawÄ…" /> - <combo_box.item name="Typing" label="Pisz" /> - <combo_box.item name="PeaceRight" label="Prawa-Pokój" /> + <combo_item name="Spread"> + RozciÄ…gaj + </combo_item> + <combo_item name="Relaxed"> + Odpocznij + </combo_item> + <combo_item name="PointBoth"> + Wskazuj + </combo_item> + <combo_item name="Fist"> + Pięść + </combo_item> + <combo_item name="RelaxedLeft"> + Lewa-Odpocznij + </combo_item> + <combo_item name="PointLeft"> + Wskazuj LewÄ… + </combo_item> + <combo_item name="FistLeft"> + ZaciÅ›nij LewÄ… + </combo_item> + <combo_item name="RelaxedRight"> + Prawa-Odpocznj + </combo_item> + <combo_item name="PointRight"> + Wskazuj PrawÄ… + </combo_item> + <combo_item name="FistRight"> + ZaciÅ›nij PrawÄ… + </combo_item> + <combo_item name="SaluteRight"> + Salutuj PrawÄ… + </combo_item> + <combo_item name="Typing"> + Pisz + </combo_item> + <combo_item name="PeaceRight"> + Prawa-Pokój + </combo_item> </combo_box> <text name="emote_label"> Ekspresja </text> <combo_box label="" name="emote_combo" - tool_tip="Kontroluj co wykonuje twarz w czasie animacji"> - <combo_box.item name="[None]" label="Å»adne]" /> - <combo_box.item name="Aaaaah" label="Aaaaah" /> - <combo_box.item name="Afraid" label="Obawa" /> - <combo_box.item name="Angry" label="Zlość" /> - <combo_box.item name="BigSmile" label="Duży UÅ›miech" /> - <combo_box.item name="Bored" label="Znudzenie" /> - <combo_box.item name="Cry" label="Placz" /> - <combo_box.item name="Disdain" label="Wzgarda" /> - <combo_box.item name="Embarrassed" label="ZakÅ‚opotanie" /> - <combo_box.item name="Frown" label="Marszczenie Brwi" /> - <combo_box.item name="Kiss" label="PocaÅ‚unek" /> - <combo_box.item name="Laugh" label="Åšmiech" /> - <combo_box.item name="Plllppt" label="Plllppt" /> - <combo_box.item name="Repulsed" label="Odrzucenie" /> - <combo_box.item name="Sad" label="Smutek" /> - <combo_box.item name="Shrug" label="Wzruszanie Ramionami" /> - <combo_box.item name="Smile" label="UÅ›miech" /> - <combo_box.item name="Surprise" label="Niespodzianka" /> - <combo_box.item name="Wink" label="MrugniÄ™cie" /> - <combo_box.item name="Worry" label="Zmartwienie" /> + tool_tip="Kontroluj mimikÄ™ twarzy w czasie animacji"> + <combo_item name="[None]"> + [Å»adne] + </combo_item> + <combo_item name="Aaaaah"> + Aaaaah + </combo_item> + <combo_item name="Afraid"> + Obawa + </combo_item> + <combo_item name="Angry"> + ZÅ‚ość + </combo_item> + <combo_item name="BigSmile"> + Duży UÅ›miech + </combo_item> + <combo_item name="Bored"> + Znudzenie + </combo_item> + <combo_item name="Cry"> + PÅ‚acz + </combo_item> + <combo_item name="Disdain"> + Wzgarda + </combo_item> + <combo_item name="Embarrassed"> + ZakÅ‚opotanie + </combo_item> + <combo_item name="Frown"> + Marszczenie Brwi + </combo_item> + <combo_item name="Kiss"> + PocaÅ‚unek + </combo_item> + <combo_item name="Laugh"> + Åšmiech + </combo_item> + <combo_item name="Plllppt"> + Plllppt + </combo_item> + <combo_item name="Repulsed"> + Odrzucenie + </combo_item> + <combo_item name="Sad"> + Smutek + </combo_item> + <combo_item name="Shrug"> + Wzruszanie Ramionami + </combo_item> + <combo_item name="Smile"> + UÅ›miech + </combo_item> + <combo_item name="Surprise"> + Niespodzianka + </combo_item> + <combo_item name="Wink"> + MrugniÄ™cie + </combo_item> + <combo_item name="Worry"> + Zmartwienie + </combo_item> </combo_box> <text name="preview_label"> - PrzeglÄ…daj kiedy + PrzeglÄ…daj kiedy: </text> <combo_box label="" name="preview_base_anim" tool_tip="Przetestuj zachowanie animacji kiedy awatar wykonuje normalne czynnoÅ›ci"> - <combo_box.item name="Standing" label="Stanie" /> - <combo_box.item name="Walking" label="Chodzenie" /> - <combo_box.item name="Sitting" label="Siedzenie" /> - <combo_box.item name="Flying" label="Latanie" /> + <combo_item name="Standing"> + Stoisz + </combo_item> + <combo_item name="Walking"> + Chodzisz + </combo_item> + <combo_item name="Sitting"> + Siedzisz + </combo_item> + <combo_item name="Flying"> + Latasz + </combo_item> </combo_box> <spinner label="ZÅ‚agodzić w (sekund)" name="ease_in_time" tool_tip="Ilość Czasu (w sekundach), w których animacje mieszajÄ… siÄ™" /> @@ -76,12 +150,12 @@ <button label="" name="stop_btn" tool_tip="Stop animation playback" /> <slider label="" name="playback_slider" /> <text name="bad_animation_text"> - Niemożliwość odczytania pliku animacji do wyÅ›wietlenia/ - - Sugerujemy pliki BVH eksportowane z pozycji. + Brak możliwoÅ›ci wczytania pliku animacji. + +Doradzamy eksport plików BVH z Poser 4. </text> <button label="Anuluj" name="cancel_btn" /> - <button label="Upload (L$[AMOUNT])" name="ok_btn" /> + <button label="ZaÅ‚aduj (L$[AMOUNT])" name="ok_btn" /> <string name="failed_to_initialize"> Inicjalizacja ruchu nie powiodÅ‚a siÄ™. </string> diff --git a/indra/newview/skins/default/xui/pl/floater_auction.xml b/indra/newview/skins/default/xui/pl/floater_auction.xml index a81850c2fddb6a55c79e3b27ca9aa95fc70d9ca4..65a1bb85ea696730f9e7b224d204ce107c4e6056 100755 --- a/indra/newview/skins/default/xui/pl/floater_auction.xml +++ b/indra/newview/skins/default/xui/pl/floater_auction.xml @@ -4,6 +4,6 @@ <button label="ZdjÄ™ce" label_selected="ZdjÄ™ce" name="snapshot_btn" /> <button label="OK" label_selected="OK" name="ok_btn" /> <string name="already for sale"> - Nie możesz umiescić posiadÅ‚oÅ›ci na aukcji, jeżeli już zostaÅ‚a wystawiona na sprzedaż. + Nie możesz umieÅ›cić posiadÅ‚oÅ›ci na aukcji, jeżeli już zostaÅ‚a wystawiona na sprzedaż. </string> </floater> diff --git a/indra/newview/skins/default/xui/pl/floater_avatar_picker.xml b/indra/newview/skins/default/xui/pl/floater_avatar_picker.xml index 9a3355358e795efa6f5cc27692820a07b50d634f..cf4dcb91bf70327b423be70822c4c0109566f2db 100755 --- a/indra/newview/skins/default/xui/pl/floater_avatar_picker.xml +++ b/indra/newview/skins/default/xui/pl/floater_avatar_picker.xml @@ -1,15 +1,40 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="avatarpicker" title="Wybierz Rezydenta"> - <text name="instruct_search_resident_name"> - Wpisz imiÄ™ Rezydenta: - </text> - <button label="Znajdź" label_selected="Znajdź" name="Find" /> - <text name="Or select their calling card:"> - lub wybierz wizytówkÄ™: - </text> - <button label="Zamknij" label_selected="Zamknij" name="Close" /> - <button label="Wybierz" label_selected="Wybierz" name="Select" /> - <string name="NotFound"> - '[TEXT]' nie odnaleziony + <tab_container name="ResidentChooserTabs"> + <panel label="Znajdź" name="SearchPanel"> + <text name="InstructSearchResidentName"> + Wpisz imiÄ™ Rezydenta: + </text> + <button label="Znajdź" label_selected="Znajdź" name="Find"/> + </panel> + <panel label="Wizytówka" name="CallingCardsPanel"> + <text name="InstructSelectCallingCard"> + Wybierz wizytówkÄ™: + </text> + </panel> + <panel label="Obok mnie:" name="NearMePanel"> + <text name="InstructSelectResident"> + Wybierz Rezydenta obok: + </text> + <button label="OdÅ›wież" label_selected="OdÅ›wież" name="Refresh"/> + <slider label="ZasiÄ™g" name="near_me_range"/> + <text name="meters"> + Metry + </text> + </panel> + </tab_container> + <button label="Wybierz" label_selected="Wybierz" name="Select"/> + <button label="Anuluj" label_selected="Anuluj" name="Cancel"/> + <string name="not_found"> + '[TEXT]' nie zostaÅ‚o odnalezione + </string> + <string name="no_one_near"> + Nikt w pobliżu + </string> + <string name="no_results"> + Brak wyników + </string> + <string name="searching"> + Wyszukiwanie... </string> </floater> diff --git a/indra/newview/skins/default/xui/pl/floater_avatar_textures.xml b/indra/newview/skins/default/xui/pl/floater_avatar_textures.xml index f6f36d5b687ea51fb94da070b4e4a22a930021de..b27c90b8f2f14ee4077aed70a6831e2306428e88 100755 --- a/indra/newview/skins/default/xui/pl/floater_avatar_textures.xml +++ b/indra/newview/skins/default/xui/pl/floater_avatar_textures.xml @@ -17,10 +17,10 @@ <texture_picker label="Podkoszulek" name="undershirt" /> <texture_picker label="RÄ™kawiczki" name="gloves" /> <texture_picker label="Koszula" name="shirt" /> - <texture_picker label="Wierznie Górne Ubranie" name="upper_jacket" /> + <texture_picker label="Górna Część Kurtki" name="upper_jacket" /> <texture_picker label="Dolna Część CiaÅ‚a" name="baked_lower_body" /> <texture_picker label="Tatuaż Dolnej Części CiaÅ‚a" name="lower_bodypaint" /> - <texture_picker label="Majtasy" name="underpants" /> + <texture_picker label="Bielizna" name="underpants" /> <texture_picker label="Skarpety" name="socks" /> <texture_picker label="Buty" name="shoes" /> <texture_picker label="Spodnie" name="pants" /> diff --git a/indra/newview/skins/default/xui/pl/floater_beacons.xml b/indra/newview/skins/default/xui/pl/floater_beacons.xml index 9f614470da90b31d15d5eb5515382b102354f3f8..fd12d1359595648ef838bd4ac47a922c61df8f2c 100644 --- a/indra/newview/skins/default/xui/pl/floater_beacons.xml +++ b/indra/newview/skins/default/xui/pl/floater_beacons.xml @@ -9,7 +9,7 @@ <check_box label="PodkreÅ›l Emitery" name="highlights"/> <check_box label="Pokaż Emitery" name="beacons"/> <text name="beacon_width_label"> - Szerokość Emiterów: + ZasiÄ™g Emiterów: </text> </panel> </floater> diff --git a/indra/newview/skins/default/xui/pl/floater_build_options.xml b/indra/newview/skins/default/xui/pl/floater_build_options.xml index 71363e39546e179a1193bfa1cd7662d716734e98..7cbc4106144366eabf5892fde0b306eb51c7aa28 100755 --- a/indra/newview/skins/default/xui/pl/floater_build_options.xml +++ b/indra/newview/skins/default/xui/pl/floater_build_options.xml @@ -3,6 +3,6 @@ <spinner label="Jednostka Siatki (metry)" name="GridResolution" /> <spinner label="Rozmiary Siatki (metry)" name="GridDrawSize" /> <check_box label="UdostÄ™pnij Podjednostkowe Dopasowywanie" name="GridSubUnit" /> - <check_box label="Pokaż Sekcje SkroÅ›ne" name="GridCrossSection" /> + <check_box label="Pokaż Sekcje SkoÅ›ne" name="GridCrossSection" /> <slider label="Nieprzezroczystość Siatki" name="GridOpacity" /> </floater> diff --git a/indra/newview/skins/default/xui/pl/floater_bulk_perms.xml b/indra/newview/skins/default/xui/pl/floater_bulk_perms.xml new file mode 100644 index 0000000000000000000000000000000000000000..a99acdb23853b55d2d0dfcb6ca2ee3cc7f67047f --- /dev/null +++ b/indra/newview/skins/default/xui/pl/floater_bulk_perms.xml @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floaterbulkperms" title="Hurtowa zmiana praw zawartoÅ›ci"> + <text name="applyto"> + Rodzaj ZawartoÅ›ci + </text> + <check_box label="Animacje" name="check_animation"/> + <check_box label="Części CiaÅ‚a" name="check_bodypart"/> + <check_box label="Ubranie" name="check_clothing"/> + <check_box label="Gestury" name="check_gesture"/> + <check_box label="ZapamiÄ™tane Miejsca" name="check_landmark"/> + <check_box label="Noty" name="check_notecard"/> + <check_box label="Obiekty" name="check_object"/> + <check_box label="Skrypty" name="check_script"/> + <check_box label="DźwiÄ™ki" name="check_sound"/> + <check_box label="Tekstury" name="check_texture"/> + <button width="115" font="SansSerifSmall" label="Wybierz Wszystkie" label_selected="Wszystkie" name="check_all"/> + <button width="115" font="SansSerifSmall" label="Odznacz Wszystkie" label_selected="Å»adne" name="check_none"/> + <text name="newperms"> + Nowe Prawa + </text> + <check_box label="UdostÄ™pnij Grupie" name="share_with_group"/> + <check_box label="Pozwól kopiować każdemu" name="everyone_copy"/> + <text name="NextOwnerLabel"> + NastÄ™pny WÅ‚aÅ›ciciel: + </text> + <check_box label="Modyfikuje" name="next_owner_modify"/> + <check_box label="Kopiuje" name="next_owner_copy"/> + <check_box label="Oddaje/Sprzedaje" name="next_owner_transfer"/> + <button label="Pomoc" name="help"/> + <button label="Zastosuj" name="apply"/> + <button label="Zamknij" name="close"/> + <string name="nothing_to_modify_text"> + Selekcja zawiera zawartość niemodfyfikowalnÄ… + </string> + <string name="status_text"> + Ustawienie praw na [NAME] + </string> + <string name="start_text"> + RozpoczÄ™cie proÅ›by o zmianÄ™ praw... + </string> + <string name="done_text"> + ZakoÅ„czenie proÅ›by o zmianÄ™ praw. + </string> +</floater> diff --git a/indra/newview/skins/default/xui/pl/floater_bumps.xml b/indra/newview/skins/default/xui/pl/floater_bumps.xml index 88b1ed4fb3443588289776782ef6bcdada32b41a..365268dbd671c23ce564d6b3f20cbd01f159b429 100755 --- a/indra/newview/skins/default/xui/pl/floater_bumps.xml +++ b/indra/newview/skins/default/xui/pl/floater_bumps.xml @@ -7,7 +7,7 @@ [TIME] [FIRST] [LAST] awatar zderzyÅ‚ siÄ™ z TobÄ… </string> <string name="llpushobject"> - [TIME] [FIRST] [LAST] awatar pochnÄ…Å‚ CiÄ™ swoim skryptem + [TIME] [FIRST] [LAST] awatar popchnÄ…Å‚ CiÄ™ swoim skryptem </string> <string name="selected_object_collide"> [TIME] [FIRST] [LAST] awatar uderzyÅ‚ CiÄ™ swoim obiektem diff --git a/indra/newview/skins/default/xui/pl/floater_buy_currency.xml b/indra/newview/skins/default/xui/pl/floater_buy_currency.xml index dd0b0694671fa861bcbf7e8a18fa89783e8ef785..a5c0a2498ab68c3c555d307a585701518649c5de 100755 --- a/indra/newview/skins/default/xui/pl/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/pl/floater_buy_currency.xml @@ -10,7 +10,7 @@ Potrzebujesz wiecÄ™j L$: </text> <text name="error_message"> - Pojawienie siÄ™ bÅ‚edu. + Pojawienie siÄ™ błędu. </text> <button label="Idź do strony internetowej" name="error_web" width="168"/> <text name="contacting"> @@ -23,13 +23,13 @@ [NAME] [PRICE]L$ </text> <text name="currency_action"> - Kup L$ + Kup </text> - <line_editor name="currency_amt"> + <line_editor name="currency_amt" left_delta="32"> 1234 </line_editor> <text name="currency_est"> - za [USD]US$ + L$ za [USD]US$ </text> <text name="getting_data"> Otrzymywanie danych... @@ -52,12 +52,12 @@ <text name="total_amount"> [AMT]L$ </text> - <text name="purchase_warning_repurchase"> - PotwierdzajÄ…c tÄ™ transkacjÄ™ zgadzasz siÄ™ na zakup -TYLKO waluty. ProszÄ™ spróbować wykonać -operacjÄ™ jeszcze raz. + <text name="purchase_warning_repurchase" height="48" bottom_delta="-64" right="-10"> + DokonujÄ…c potwierdzenia na podanÄ… transakcjÄ™, +wyrażasz zgodÄ™ jedynie na zakup waluty. +Sprobuj wykonać operacjÄ™ ponownie. </text> - <text name="purchase_warning_notenough"> + <text name="purchase_warning_notenough" bottom_delta="16"> Nie zakupujesz wystarczajÄ…cej iloÅ›ci waluty. ProszÄ™ zwiÄ™kszyć ilość. </text> diff --git a/indra/newview/skins/default/xui/pl/floater_buy_land.xml b/indra/newview/skins/default/xui/pl/floater_buy_land.xml index 282732cb5b9daa10439749d70dd2607e6b53c3d0..ff371b38c083a77989d44b559e47314c01f12956 100755 --- a/indra/newview/skins/default/xui/pl/floater_buy_land.xml +++ b/indra/newview/skins/default/xui/pl/floater_buy_land.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="buy land" title="Buy Land"> <text name="region_name_label"> Region: @@ -6,6 +6,12 @@ <text name="region_name_text"> (brak danych) </text> + <text name="region_type_label"> + Typ: + </text> + <text name="region_type_text"> + (nieznany) + </text> <text name="estate_name_label"> MajÄ…tek: </text> @@ -22,10 +28,10 @@ PosiadÅ‚oÅ›ci zakupione w tym Regionie: </text> <text name="resellable_clause"> - PosiadÅ‚osci zakupione w tym Regionie mogÄ… lub nie mogÄ… być odsprzedane. + PosiadÅ‚ość może lub nie może być odsprzedana. </text> <text name="changeable_clause"> - mogÄ… lub nie mogÄ… być Å‚aczone i dzielone. + PosiadÅ‚ość może lub nie może być dzielona i łączona. </text> <text name="covenant_text"> Musisz zaakceptować UmowÄ™ z MajÄ…tku: @@ -33,32 +39,34 @@ <text_editor name="covenant_editor"> Åadowanie... </text_editor> - <check_box label="Zgadzam siÄ™ na PowyższÄ… UmowÄ™." name="agree_covenant" /> + <check_box label="Zgadzam siÄ™ na PowyższÄ… UmowÄ™." name="agree_covenant"/> <text name="info_parcel_label" width="60"> PosiadÅ‚ość: </text> - <text name="info_parcel" left_delta="62"> + <text left_delta="62" name="info_parcel"> Scotopteryx 138,204 </text> <text name="info_size_label"> Obszar: </text> - <text name="info_size" left_delta="62"> - 1024 m. + <text left_delta="62" name="info_size"> + 1024 m² </text> <text name="info_price_label"> Cena: </text> - <text name="info_price" left_delta="62"> - 1500 L$, obiekty wliczone + <text left_delta="62" name="info_price"> + L$ 1500 +(L$ 1.1/m²) +sprzedaż z obiektami </text> <text name="info_action"> Zakup tej PosiadÅ‚oÅ›ci spowoduje: </text> <text name="error_message"> - CoÅ› siÄ™ nie zgadza. + WystÄ…piÅ‚ błąd. </text> - <button label="Idź na stronÄ™ www" name="error_web" /> + <button label="Idź na stronÄ™ www" name="error_web"/> <text name="account_action"> ZmianÄ™ Twojego konta na Premium. </text> @@ -74,14 +82,14 @@ ZwiÄ™ksz opÅ‚atÄ™ za używanie PosiadÅ‚oÅ›ci do 40US$/miesiÄ…c. </text> <text name="land_use_reason"> - Twoje PosiadÅ‚oÅ›ci majÄ… powierzchniÄ™ 1,309 metrów. -Ta PosiadÅ‚ość ma 512 metrów. + JesteÅ› wÅ‚aÅ›cicielem 1309 m² ziemi. +PosiadÅ‚ość ta zawiera 512 m² ziemi. </text> <text name="purchase_action"> - ZapÅ‚ać Rezydentowi Jasiowi 4000L$ za PosiadÅ‚ość + Pay Joe Resident L$ 4000 for the land </text> <text name="currency_reason"> - Masz 2,100L$. + You have L$ 2,100. </text> <text name="currency_action"> Kup wiÄ™cej L$ @@ -95,9 +103,9 @@ Ta PosiadÅ‚ość ma 512 metrów. <text name="currency_balance"> Masz 2,100L$. </text> - <check_box label="Zabierz [AMOUNT] metrów donacji z Grupy." name="remove_contribution" /> - <button label="Zakup" name="buy_btn" /> - <button label="Anuluj" name="cancel_btn" /> + <check_box label="Zabierz [AMOUNT] metrów donacji z Grupy." name="remove_contribution"/> + <button label="Zakup" name="buy_btn"/> + <button label="Anuluj" name="cancel_btn"/> <string name="can_resell"> Może być odsprzedana. </string> @@ -154,7 +162,7 @@ Spróbuj wybrać inny obszar. Zakup tej PosiadÅ‚oÅ›ci spowoduje: </string> <string name="buying_for_group"> - Zakup PosiadÅ‚oÅ›ci dla Grupy: + Zakup ziemi dla grupy: </string> <string name="cannot_buy_now"> Nie możesz teraz kupić: @@ -163,7 +171,7 @@ Spróbuj wybrać inny obszar. Nie jest na sprzedaż: </string> <string name="none_needed"> - wszystko w porzÄ…dku + Poprawność danych. </string> <string name="must_upgrade"> Musisz mieć konto Premium żebyÅ› mógÅ‚ mieć PosiadÅ‚oÅ›ci. @@ -172,30 +180,38 @@ Spróbuj wybrać inny obszar. Twoje konto pozwala Ci mieć PosiadÅ‚oÅ›ci. </string> <string name="land_holdings"> - Twoje PosiadÅ‚oÅ›ci majÄ… [BUYER] metrów. + JesteÅ› wÅ‚aÅ›cicielem [BUYER] m² ziemi. </string> <string name="pay_to_for_land"> ZapÅ‚ać [SELLER] [AMOUNT]L$ za PosiadÅ‚ość </string> <string name="buy_for_US"> - Kup [AMOUNT]L$ za okoÅ‚o [AMOUNT2]US$ , + Kup L$ [AMOUNT] za US$ [AMOUNT2], </string> <string name="parcel_meters"> - Ta PosiadÅ‚ość ma [AMOUNT] metrów. + Podana posiadÅ‚ość to [AMOUNT] m² ziemi. </string> <string name="premium_land"> - To jest wartoÅ›ciowa PosiadÅ‚ość i kosztuje [AMOUNT] za metr. + Podana posiadÅ‚ość jest w cenie premium adekwatnie jak za [AMOUNT] m². </string> <string name="discounted_land"> - To jest przeceniona PosiadÅ‚ość i kosztuje [AMOUNT] za metr. + Wybrana posiadÅ‚ość jest w cenie zniżkowej adekwatnie jak za [AMOUNT] m². </string> <string name="meters_supports_object"> - [AMOUNT] metrów -pozwala na [AMOUNT2] obikty + [AMOUNT] m² +wspiera [AMOUNT2] obiektów </string> <string name="sold_with_objects"> sprzedane z obiektami </string> + <string name="sold_without_objects"> + obiekty nie sÄ… zawarte w sprzedaży + </string> + <string name="info_price_string"> + L$ [PRICE] +(L$ [PRICE_PER_SQM]/m²) +[SOLD_WITH_OBJECTS] + </string> <string name="insufficient_land_credits"> Grupa [GROUP] musi mieć wystarczajÄ…cy kredyt na używanie PosiadÅ‚oÅ›ci żeby sfinalizować ten zakup. diff --git a/indra/newview/skins/default/xui/pl/floater_camera.xml b/indra/newview/skins/default/xui/pl/floater_camera.xml index 985d69a9e1551acd8477a2775d535991abb8110d..24da91c08162f05c48e6ca773b682a581b6ab7a4 100755 --- a/indra/newview/skins/default/xui/pl/floater_camera.xml +++ b/indra/newview/skins/default/xui/pl/floater_camera.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater name="move floater" title=""> <string name="rotate_tooltip"> - Odwracaj kamerÄ™ wokół obiektu + Obracaj kamerÄ™ wokół obiektu </string> <string name="zoom_tooltip"> Najedź kamerÄ… w kierunku obiektu diff --git a/indra/newview/skins/default/xui/pl/floater_critical.xml b/indra/newview/skins/default/xui/pl/floater_critical.xml index a6558ae92bc13d0bb293a1c27c3d2014e0d722d1..8221a4e1bdf2442ca8ed7ff008604909e91d60f4 100755 --- a/indra/newview/skins/default/xui/pl/floater_critical.xml +++ b/indra/newview/skins/default/xui/pl/floater_critical.xml @@ -3,7 +3,7 @@ <button label="Kontynuuj" label_selected="Kontynuuj" name="Continue" /> <button label="Anuluj" label_selected="Anuluj" name="Cancel" /> <text name="tos_heading"> - ProszÄ™ przeczytać poniższÄ… wiadomość ostrożnie + ProszÄ™ przeczytać poniższÄ… wiadomość dokÅ‚adnie. </text> <text_editor name="tos_text"> TOS_TEXT diff --git a/indra/newview/skins/default/xui/pl/floater_customize.xml b/indra/newview/skins/default/xui/pl/floater_customize.xml index e026053e749dac092830423668287385415c3ac1..83c7c5c87d4f986c2c715b1156b5d215f4ad3a69 100755 --- a/indra/newview/skins/default/xui/pl/floater_customize.xml +++ b/indra/newview/skins/default/xui/pl/floater_customize.xml @@ -1,456 +1,484 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater customize" title="WyglÄ…d"> <tab_container name="customize tab container"> - <panel label="Części CiaÅ‚a" name="body_parts_placeholder" /> + <panel label="Części CiaÅ‚a" name="body_parts_placeholder"/> <panel label="KsztaÅ‚t" name="Shape"> - <button label="Wróć" label_selected="Wróć" name="Revert" /> - <button label="CiaÅ‚o" label_selected="CiaÅ‚o" name="Body" /> - <button label="GÅ‚owa" label_selected="GÅ‚owa" name="Head" /> - <button label="Oczy" label_selected="Oczy" name="Eyes" /> - <button label="Uszy" label_selected="Uszy" name="Ears" /> - <button label="Nos" label_selected="Nos" name="Nose" /> - <button label="Usta" label_selected="Usta" name="Mouth" /> - <button label="Broda " label_selected="Broda" name="Chin" /> - <button label="Tułów" label_selected="Tułów" name="Torso" /> - <button label="Nogi" label_selected="Nogi" name="Legs" /> + <button label="Wróć" label_selected="Wróć" name="Revert"/> + <button label="CiaÅ‚o" label_selected="CiaÅ‚o" name="Body"/> + <button label="GÅ‚owa" label_selected="GÅ‚owa" name="Head"/> + <button label="Oczy" label_selected="Oczy" name="Eyes"/> + <button label="Uszy" label_selected="Uszy" name="Ears"/> + <button label="Nos" label_selected="Nos" name="Nose"/> + <button label="Usta" label_selected="Usta" name="Mouth"/> + <button label="Broda " label_selected="Broda" name="Chin"/> + <button label="Tułów" label_selected="Tułów" name="Torso"/> + <button label="Nogi" label_selected="Nogi" name="Legs"/> <radio_group name="sex radio"> - <radio_item type="string" length="1" name="radio"> + <radio_item length="1" name="radio" type="string"> Kobieta </radio_item> - <radio_item type="string" length="1" name="radio2"> + <radio_item length="1" name="radio2" type="string"> Mężczyzna </radio_item> </radio_group> - <button label="Losowe" label_selected="Losowe" name="Randomize" /> - <text type="string" length="1" name="title"> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: zabroniona modyfikacja </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: Å‚adowanie... </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: niezaÅ‚ożone </text> - <text type="string" length="1" name="path"> + <text length="1" name="path" type="string"> Zapisane w [PATH] </text> - <text type="string" length="1" name="not worn instructions"> + <text length="1" name="not worn instructions" type="string"> Załóż nowy ksztaÅ‚t poprzez przeciÄ…gniÄ™cie go ze swojej szafy na awatara. Alternatywnie, możesz także stworzyć wÅ‚asny ksztaÅ‚t -z plików roboczych. --> (Kliknij na Nowy KsztaÅ‚t) +z plików roboczych. </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> Nie posiadasz prawa do modyfikowania tego ksztaÅ‚tu. </text> - <button label="Nowy KsztaÅ‚t" label_selected="Nowy KsztaÅ‚t" name="Create New" /> - <button label="Zdejmij" label_selected="Zdejmij" name="Take Off" /> - <button label="Zapisz" label_selected="Zapisz" name="Save" /> - <button label="Zapisz Jako" label_selected="Zapisz Jako" name="Save As" /> + <text name="Item Action Label"> + KsztaÅ‚t: + </text> + <button label="Nowy KsztaÅ‚t" label_selected="Nowy KsztaÅ‚t" name="Create New"/> + <button label="Zapisz" label_selected="Zapisz" name="Save"/> + <button label="Zapisz Jako..." label_selected="Zapisz Jako..." name="Save As"/> </panel> <panel label="Skórka" name="Skin"> - <button label="Kolor Skórki" label_selected="Kolor Skórki" name="Skin Color" /> - <button label="Detale Twarzy" label_selected="Detale Twarzy" name="Face Detail" /> - <button label="Makijaż" label_selected="Makijaż" name="Makeup" /> - <button label="Detale CiaÅ‚a" label_selected="Detale CiaÅ‚a" name="Body Detail" /> - <text type="string" length="1" name="title"> + <button label="Kolor Skórki" label_selected="Kolor Skórki" name="Skin Color"/> + <button label="Detale Twarzy" label_selected="Detale Twarzy" name="Face Detail"/> + <button label="Makijaż" label_selected="Makijaż" name="Makeup"/> + <button label="Detale CiaÅ‚a" label_selected="Detale CiaÅ‚a" name="Body Detail"/> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: modyfikacja zabroniona </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: Å‚adowanie... </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: niezaÅ‚ożone </text> - <text type="string" length="1" name="path"> + <text length="1" name="path" type="string"> Zapisane w [PATH] </text> - <text type="string" length="1" name="not worn instructions"> + <text length="1" name="not worn instructions" type="string"> Załóż nowÄ… skórkÄ™ poprzez przeciÄ…gniÄ™cie jej ze swojej szafy na awatara. Alternatywnie, możesz także stworzyć wÅ‚asnÄ… skórkÄ™ -z plików roboczych. --> (Kliknij na Nowa Skórka) +z plików roboczych. </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> Nie posiadasz prawa do modyfikowania tej skórki. </text> - <texture_picker label="Tatuaże GÅ‚owy" name="Head Tattoos" - tool_tip="Kliknij by wybrać teksturÄ™" /> - <texture_picker label="Tatuaże Górne" name="Upper Tattoos" - tool_tip="Kliknij by wybrać teksturÄ™" /> - <texture_picker label="Tatuaże Dolne" name="Lower Tattoos" - tool_tip="Kliknij by wybrać teksturÄ™" /> - <button label="Losowe" label_selected="Losowe" name="Randomize" /> - <button label="Nowa Skórka" label_selected="Nowa Skórka" name="Create New" /> - <button label="Zdejmij" label_selected="Zdejmij" name="Take Off" /> - <button label="Zapisz" label_selected="Zapisz" name="Save" /> - <button label="Zapisz Jako" label_selected="Zapisz Jako" name="Save As" /> - <button label="Wróć" label_selected="Wróć" name="Revert" /> + <text name="Item Action Label"> + Skórka: + </text> + <texture_picker label="Tatuaże GÅ‚owy" name="Head Tattoos" tool_tip="Kliknij by wybrać teksturÄ™"/> + <texture_picker label="Tatuaże Górne" name="Upper Tattoos" tool_tip="Kliknij by wybrać teksturÄ™"/> + <texture_picker label="Tatuaże Dolne" name="Lower Tattoos" tool_tip="Kliknij by wybrać teksturÄ™"/> + <button label="Nowa Skórka" label_selected="Nowa Skórka" name="Create New"/> + <button label="Zapisz" label_selected="Zapisz" name="Save"/> + <button label="Zapisz Jako..." label_selected="Zapisz Jako..." name="Save As"/> + <button label="Wróć" label_selected="Wróć" name="Revert"/> </panel> <panel label="WÅ‚osy" name="Hair"> - <button label="Kolor" label_selected="Kolor" name="Color" /> - <button label="Styl" label_selected="Styl" name="Style" /> - <button label="Brwi" label_selected="Brwi" name="Eyebrows" /> - <button label="Twarzy" label_selected="Twarzy" name="Facial" /> - <text type="string" length="1" name="title"> + <button label="Kolor" label_selected="Kolor" name="Color"/> + <button label="Styl" label_selected="Styl" name="Style"/> + <button label="Brwi" label_selected="Brwi" name="Eyebrows"/> + <button label="Twarzy" label_selected="Twarzy" name="Facial"/> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: modyfikacja zabroniona </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: Å‚adowanie... </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: niezaÅ‚ożone </text> - <text type="string" length="1" name="path"> + <text length="1" name="path" type="string"> Zapisane w [PATH] </text> - <text type="string" length="1" name="not worn instructions"> + <text length="1" name="not worn instructions" type="string"> Załóż nowe wÅ‚osy poprzez przeciÄ…gniÄ™cie ich ze swojej szafy na awatara. Alternatywnie, możesz także stworzyć wÅ‚asne wÅ‚osy -z plików roboczych. --> (Kliknij na Nowe WÅ‚osy) +z plików roboczych. </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> Nie posiadasz prawa do modyfikowania tych wÅ‚osów. </text> - <texture_picker label="Tekstura" name="Texture" tool_tip="Kliknij by wybrać teksturÄ™" /> - <button label="Losowe" label_selected="Losowe" name="Randomize" /> - <button label="Nowe WÅ‚osy" label_selected="Nowe WÅ‚osy" name="Create New" /> - <button label="Zdejmij" label_selected="Zdejmij" name="Take Off" /> - <button label="Zapisz" label_selected="Zapisz" name="Save" /> - <button label="Zapisz Jako" label_selected="Zapisz Jako" name="Save As" /> - <button label="Wróć" label_selected="Wróć" name="Revert" /> + <text name="Item Action Label"> + WÅ‚osy: + </text> + <texture_picker label="Tekstura" name="Texture" tool_tip="Kliknij by wybrać teksturÄ™"/> + <button label="Nowe WÅ‚osy" label_selected="Nowe WÅ‚osy" name="Create New"/> + <button label="Zapisz" label_selected="Zapisz" name="Save"/> + <button label="Zapisz Jako..." label_selected="Zapisz Jako..." name="Save As"/> + <button label="Wróć" label_selected="Wróć" name="Revert"/> </panel> <panel label="Oczy" name="Eyes"> - <text type="string" length="1" name="title"> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: modyfikacja zabroniona </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: Å‚adowanie... </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: niezaÅ‚ożone </text> - <text type="string" length="1" name="path"> + <text length="1" name="path" type="string"> Zapisane w [PATH] </text> - <text type="string" length="1" name="not worn instructions"> + <text length="1" name="not worn instructions" type="string"> Załóż nowe oczy poprzez przeciÄ…gniÄ™cie ich ze swojej szafy na awatara. Alternatywnie, możesz także stworzyć wÅ‚asne oczy -z plików roboczych. --> (Kliknij na Nowe Oczy) +z plików roboczych. </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> Nie posiadasz prawa do modyfikowania tych oczów. </text> - <texture_picker label="TÄ™czówka" name="Iris" tool_tip="Kliknij by wybrać teksturÄ™" /> - <button label="Losowe" label_selected="Losowe" name="Randomize" /> - <button label="Nowe Oczy" label_selected="Nowe Oczy" name="Create New" /> - <button label="Zdejmij" label_selected="Zdejmij" name="Take Off" /> - <button label="Zapisz" label_selected="Zapisz" name="Save" /> - <button label="Zapisz Jako" label_selected="Zapisz Jako" name="Save As" /> - <button label="Wróć" label_selected="Wróć" name="Revert" /> + <text name="Item Action Label"> + Oczy: + </text> + <texture_picker label="TÄ™czówka" name="Iris" tool_tip="Kliknij by wybrać teksturÄ™"/> + <button label="Nowe Oczy" label_selected="Nowe Oczy" name="Create New"/> + <button label="Zapisz" label_selected="Zapisz" name="Save"/> + <button label="Zapisz Jako..." label_selected="Zapisz Jako..." name="Save As"/> + <button label="Wróć" label_selected="Wróć" name="Revert"/> </panel> - <panel label="Ubrania" name="clothes_placeholder" /> + <panel label="Ubrania" name="clothes_placeholder"/> <panel label="Koszula" name="Shirt"> - <texture_picker label="MateriaÅ‚" name="Fabric" tool_tip="Kliknij by wybrać teksturÄ™" /> - <color_swatch label="Kolor/Barwa" name="Color/Tint" tool_tip="Kliknij by wybrać kolor" /> - <button label="Nowa Koszula" label_selected="Nowa Koszula" name="Create New" /> - <button label="Zdejmij" label_selected="Zdejmij" name="Take Off" /> - <button label="Zapisz" label_selected="Zapisz" name="Save" /> - <button label="Zapisz Jako" label_selected="Zapisz Jako" name="Save As" /> - <button label="Wróć" label_selected="Wróć" name="Revert" /> - <text type="string" length="1" name="title"> + <texture_picker label="MateriaÅ‚" name="Fabric" tool_tip="Kliknij by wybrać teksturÄ™"/> + <color_swatch label="Kolor/Barwa" name="Color/Tint" tool_tip="Kliknij by wybrać kolor"/> + <button label="Nowa Koszula" label_selected="Nowa Koszula" name="Create New"/> + <button label="Zdejmij" label_selected="Zdejmij" name="Take Off"/> + <button label="Zapisz" label_selected="Zapisz" name="Save"/> + <button label="Zapisz Jako..." label_selected="Zapisz Jako..." name="Save As"/> + <button label="Wróć" label_selected="Wróć" name="Revert"/> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: modyfikowanie zabronione </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: Å‚adowanie... </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: niezaÅ‚ożone </text> - <text type="string" length="1" name="path"> + <text length="1" name="path" type="string"> Zapisane w [PATH] </text> - <text type="string" length="1" name="not worn instructions"> + <text length="1" name="not worn instructions" type="string"> Załóż nowÄ… koszulÄ™ poprzez przeciÄ…gniÄ™cie jej ze swojej szafy na awatara. Alternatywnie, możesz także stworzyć wÅ‚asnÄ… koszulÄ™ -z plików roboczych. --> (Kliknij na Nowa Koszula) +z plików roboczych. </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> Nie posiadasz prawa do modyfikowania tej koszuli. </text> + <text name="Item Action Label"> + Koszulka: + </text> </panel> <panel label="Spodnie" name="Pants"> - <texture_picker label="MateriaÅ‚" name="Fabric" tool_tip="Kliknij tutaj by wybrać teksturÄ™" /> - <color_swatch label="Kolor/Barwa" name="Color/Tint" tool_tip="Kliknij by wybrać kolor" /> - <button label="Nowe Spodnie" label_selected="Nowe Spodnie" name="Create New" /> - <button label="Zdejmij" label_selected="Zdejmij" name="Take Off" /> - <button label="Zapisz" label_selected="Zapisz" name="Save" /> - <button label="Zapisz Jako" label_selected="Zapisz Jako" name="Save As" /> - <button label="Wróć" label_selected="Wróć" name="Revert" /> - <text type="string" length="1" name="title"> + <texture_picker label="MateriaÅ‚" name="Fabric" tool_tip="Kliknij tutaj by wybrać teksturÄ™"/> + <color_swatch label="Kolor/Barwa" name="Color/Tint" tool_tip="Kliknij by wybrać kolor"/> + <button label="Nowe Spodnie" label_selected="Nowe Spodnie" name="Create New"/> + <button label="Zdejmij" label_selected="Zdejmij" name="Take Off"/> + <button label="Zapisz" label_selected="Zapisz" name="Save"/> + <button label="Zapisz Jako..." label_selected="Zapisz Jako..." name="Save As"/> + <button label="Wróć" label_selected="Wróć" name="Revert"/> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: modyfikcja zabroniona </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: Å‚adowanie... </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: niezaÅ‚ożone </text> - <text type="string" length="1" name="path"> + <text length="1" name="path" type="string"> Zapisane w [PATH] </text> - <text type="string" length="1" name="not worn instructions"> + <text length="1" name="not worn instructions" type="string"> Załóż nowe spodnie poprzez przeciÄ…gniÄ™cie ich ze swojej szafy na awatara. Alternatywnie, możesz także stworzyć wÅ‚asne spodnie -z plików roboczych. --> (Kliknij na Nowe Spodnie) +z plików roboczych. </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> Nie posiadasz prawa do modyfikowania tych spodni. </text> + <text name="Item Action Label"> + Spodnie: + </text> </panel> <panel label="Buty" name="Shoes"> - <text type="string" length="1" name="title"> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: modyfikacja zabroniona </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: Å‚adwanie... </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: niezaÅ‚ożone </text> - <text type="string" length="1" name="path"> + <text length="1" name="path" type="string"> Zapisane w [PATH] </text> - <text type="string" length="1" name="not worn instructions"> + <text length="1" name="not worn instructions" type="string"> Załóż nowe buty poprzez przeciÄ…gniÄ™cie ich ze swojej szafy na awatara. Alternatywnie, możesz także stworzyć wÅ‚asne buty -z plików roboczych. --> (Kliknij na Nowe Buty) +z plików roboczych. </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> Nie posiadasz prawa do modyfikowania tych butów. </text> - <texture_picker label="MateriaÅ‚" name="Fabric" tool_tip="Kliknij by wybrać teksturÄ™" /> - <color_swatch label="Kolor/Barwa" name="Color/Tint" tool_tip="Kliknij by wybrać kolor" /> - <button label="Nowe Buty" label_selected="Nowe Buty" name="Create New" /> - <button label="Zdejmij" label_selected="Zdejmij" name="Take Off" /> - <button label="Zapisz" label_selected="Zapisz" name="Save" /> - <button label="Zapisz Jako" label_selected="Zapisz Jako" name="Save As" /> - <button label="Wróć" label_selected="Wróć" name="Revert" /> + <text name="Item Action Label"> + Buty: + </text> + <texture_picker label="MateriaÅ‚" name="Fabric" tool_tip="Kliknij by wybrać teksturÄ™"/> + <color_swatch label="Kolor/Barwa" name="Color/Tint" tool_tip="Kliknij by wybrać kolor"/> + <button label="Nowe Buty" label_selected="Nowe Buty" name="Create New"/> + <button label="Zdejmij" label_selected="Zdejmij" name="Take Off"/> + <button label="Zapisz" label_selected="Zapisz" name="Save"/> + <button label="Zapisz Jako..." label_selected="Zapisz Jako..." name="Save As"/> + <button label="Wróć" label_selected="Wróć" name="Revert"/> </panel> <panel label="Skarpety" name="Socks"> - <text type="string" length="1" name="title"> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: modyfikacja zabroniona </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: Å‚adowanie... </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: niezaÅ‚ożone </text> - <text type="string" length="1" name="path"> + <text length="1" name="path" type="string"> Zapisane w [PATH] </text> - <text type="string" length="1" name="not worn instructions"> + <text length="1" name="not worn instructions" type="string"> Załóż nowe skarpety poprzez przeciÄ…gniÄ™cie ich ze swojej szafy na awatara. Alternatywnie, możesz także stworzyć wÅ‚asne skarpety -z plików roboczych. --> (Kliknij na Nowe Skarpety) +z plików roboczych. </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> Nie posiadasz prawa do modyfikowania tych skarpet. </text> - <texture_picker label="MateriaÅ‚" name="Fabric" tool_tip="Kliknij by wybrać teksturÄ™" /> - <color_swatch label="Kolor/Barwa" name="Color/Tint" tool_tip="Kliknij by wybrać kolor" /> - <button label="Nowe Skarpety" label_selected="Nowe Skarpety" name="Create New" /> - <button label="Zdejmij" label_selected="Zdejmij" name="Take Off" /> - <button label="Zapisz" label_selected="Zapisz" name="Save" /> - <button label="Zapisz Jako" label_selected="Zapisz Jako" name="Save As" /> - <button label="Wróć" label_selected="Wróć" name="Revert" /> + <text name="Item Action Label"> + Skarpetki: + </text> + <texture_picker label="MateriaÅ‚" name="Fabric" tool_tip="Kliknij by wybrać teksturÄ™"/> + <color_swatch label="Kolor/Barwa" name="Color/Tint" tool_tip="Kliknij by wybrać kolor"/> + <button label="Nowe Skarpety" label_selected="Nowe Skarpety" name="Create New"/> + <button label="Zdejmij" label_selected="Zdejmij" name="Take Off"/> + <button label="Zapisz" label_selected="Zapisz" name="Save"/> + <button label="Zapisz Jako..." label_selected="Zapisz Jako..." name="Save As"/> + <button label="Wróć" label_selected="Wróć" name="Revert"/> </panel> <panel label="Kurtka" name="Jacket"> - <text type="string" length="1" name="title"> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: modyfikacja zabroniona </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: Å‚adowanie... </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: niezaÅ‚ożone </text> - <text type="string" length="1" name="path"> + <text length="1" name="path" type="string"> Zapisane w [PATH] </text> - <text type="string" length="1" name="not worn instructions"> + <text length="1" name="not worn instructions" type="string"> Załóż nowÄ… kurtkÄ™ poprzez przeciÄ…gniÄ™cie jej ze swojej szafy na awatara. Alternatywnie, możesz także stworzyć wÅ‚asnÄ… kurtkÄ™ -z plików roboczych. --> (Kliknij na Nowa Kurtka) +z plików roboczych. </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> Nie posiadasz prawa do modyfikowania tej kurtki. </text> + <text name="Item Action Label"> + Kurtka: + </text> <texture_picker label="Górny MateriaÅ‚" name="Upper Fabric" tool_tip="Kliknij by wybrać teksturÄ™" width="76"/> <texture_picker label="Dolny MateriaÅ‚" name="Lower Fabric" tool_tip="Kliknij by wybrać kolor" width="76"/> <color_swatch label="Kolor/Barwa" name="Color/Tint" tool_tip="Kliknij by wybrać kolor" width="76"/> - <button label="Nowa Kurtka" label_selected="Nowa Kurtka" name="Create New" /> - <button label="Zdejmij" label_selected="Zdejmij" name="Take Off" /> - <button label="Zapisz" label_selected="Zapisz" name="Save" /> - <button label="Zapisz Jako" label_selected="Zapisz Jako" name="Save As" /> - <button label="Wróć" label_selected="Wróć" name="Revert" /> + <button label="Nowa Kurtka" label_selected="Nowa Kurtka" name="Create New"/> + <button label="Zdejmij" label_selected="Zdejmij" name="Take Off"/> + <button label="Zapisz" label_selected="Zapisz" name="Save"/> + <button label="Zapisz Jako..." label_selected="Zapisz Jako..." name="Save As"/> + <button label="Wróć" label_selected="Wróć" name="Revert"/> </panel> <panel label="RÄ™kawiczki" name="Gloves"> - <text type="string" length="1" name="title"> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: modyfikacja zabroniona </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: Å‚adowanie... </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: niezaÅ‚ożone </text> - <text type="string" length="1" name="path"> + <text length="1" name="path" type="string"> Zapisane w [PATH] </text> - <text type="string" length="1" name="not worn instructions"> + <text length="1" name="not worn instructions" type="string"> Załóż nowe rÄ™kawiczki poprzez przeciÄ…gniÄ™cie ich ze swojej szafy na awatara. Alternatywnie, możesz także stworzyć wÅ‚asne rÄ™kawiczki -z plików roboczych. --> (Kliknij na Nowe RÄ™kawiczki) +z plików roboczych. </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> Nie posiadasz prawa do modyfikowania tych rÄ™kawiczek </text> - <texture_picker label="MateriaÅ‚" name="Fabric" tool_tip="Kliknij by wybrać teksturÄ™" /> - <color_swatch label="Kolor/Barwa" name="Color/Tint" tool_tip="Kliknij by wybrać kolor" /> - <button label="Nowe RÄ™kawiczki" label_selected="Nowe RÄ™kawiczki" name="Create New" /> - <button label="Zdejmij" label_selected="Zdejmij" name="Take Off" /> - <button label="Zapisz" label_selected="Zapisz" name="Save" /> - <button label="Zapisz Jako" label_selected="Zapisz Jako" name="Save As" /> - <button label="Wróć" label_selected="Wróć" name="Revert" /> + <text name="Item Action Label"> + RÄ™kawiczki: + </text> + <texture_picker label="MateriaÅ‚" name="Fabric" tool_tip="Kliknij by wybrać teksturÄ™"/> + <color_swatch label="Kolor/Barwa" name="Color/Tint" tool_tip="Kliknij by wybrać kolor"/> + <button label="Nowe RÄ™kawiczki" label_selected="Nowe RÄ™kawiczki" name="Create New"/> + <button label="Zdejmij" label_selected="Zdejmij" name="Take Off"/> + <button label="Zapisz" label_selected="Zapisz" name="Save"/> + <button label="Zapisz Jako..." label_selected="Zapisz Jako..." name="Save As"/> + <button label="Wróć" label_selected="Wróć" name="Revert"/> </panel> <panel label="Podkoszulek" name="Undershirt"> - <text type="string" length="1" name="title"> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: modyfikacja zabroniona </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: Å‚adowanie... </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: niezaÅ‚ożone </text> - <text type="string" length="1" name="path"> + <text length="1" name="path" type="string"> Zapisane w [PATH] </text> - <text type="string" length="1" name="not worn instructions"> + <text length="1" name="not worn instructions" type="string"> Załóż nowy podkoszulek poprzez przeciÄ…gniÄ™cie ich ze swojej szafy na awatara. Alternatywnie, możesz także stworzyć wÅ‚asny podkoszulek -z plików roboczych. --> (Kliknij na Nowy Podkoszulek) +z plików roboczych. </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> Nie posiadasz prawa do modyfikowania tego podkoszulka. </text> - <texture_picker label="MateriaÅ‚" name="Fabric" tool_tip="Kliknij by wybrać teksturÄ™" /> - <color_swatch label="Kolor/Barwa" name="Color/Tint" tool_tip="Kliknij by wybrać kolor" /> - <button label="Nowy Podkoszulek" label_selected="Nowy Podkoszulek" name="Create New" /> - <button label="Zdejmij" label_selected="Zdejmij" name="Take Off" /> - <button label="Zapisz" label_selected="Zapisz" name="Save" /> - <button label="Zapisz Jako" label_selected="Zapisz Jako" name="Save As" /> - <button label="Wróć" label_selected="Wróć" name="Revert" /> + <text name="Item Action Label"> + Podkoszulka: + </text> + <texture_picker label="MateriaÅ‚" name="Fabric" tool_tip="Kliknij by wybrać teksturÄ™"/> + <color_swatch label="Kolor/Barwa" name="Color/Tint" tool_tip="Kliknij by wybrać kolor"/> + <button label="Nowy Podkoszulek" label_selected="Nowy Podkoszulek" name="Create New"/> + <button label="Zdejmij" label_selected="Zdejmij" name="Take Off"/> + <button label="Zapisz" label_selected="Zapisz" name="Save"/> + <button label="Zapisz Jako..." label_selected="Zapisz Jako..." name="Save As"/> + <button label="Wróć" label_selected="Wróć" name="Revert"/> </panel> <panel label="Bielizna" name="Underpants"> - <text type="string" length="1" name="title"> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: modyfikacja zabroniona </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: Å‚adowanie... </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: niezaÅ‚ożone </text> - <text type="string" length="1" name="path"> + <text length="1" name="path" type="string"> Zapisane w [PATH] </text> - <text type="string" length="1" name="not worn instructions"> + <text length="1" name="not worn instructions" type="string"> Załóż nowÄ… bieliznÄ™ poprzez przeciÄ…gniÄ™cie jej ze swojej szafy na awatara. Alternatywnie, możesz także stworzyć wÅ‚asnÄ… bieliznÄ™ -z plików roboczych. --> (Kliknij na Nowa Bielizna) +z plików roboczych. </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> Nie posiadasz prawa do modyfikowania tej bielizny. </text> - <texture_picker label="MateriaÅ‚" name="Fabric" tool_tip="Kliknij by wybrać teksturÄ™" /> - <color_swatch label="Kolor/Barwa" name="Color/Tint" tool_tip="Kliknij by wybrać kolor" /> - <button label="Nowa Bielizna" label_selected="Nowa Bielizna" name="Create New" /> - <button label="Zdejmij" label_selected="Zdejmij" name="Take Off" /> - <button label="Zapisz" label_selected="Zapisz" name="Save" /> - <button label="Zapisz Jako" label_selected="Zapisz Jako" name="Save As" /> - <button label="Wróć" label_selected="Wróć" name="Revert" /> + <text name="Item Action Label"> + Bielizna: + </text> + <texture_picker label="MateriaÅ‚" name="Fabric" tool_tip="Kliknij by wybrać teksturÄ™"/> + <color_swatch label="Kolor/Barwa" name="Color/Tint" tool_tip="Kliknij by wybrać kolor"/> + <button label="Nowa Bielizna" label_selected="Nowa Bielizna" name="Create New"/> + <button label="Zdejmij" label_selected="Zdejmij" name="Take Off"/> + <button label="Zapisz" label_selected="Zapisz" name="Save"/> + <button label="Zapisz Jako..." label_selected="Zapisz Jako..." name="Save As"/> + <button label="Wróć" label_selected="Wróć" name="Revert"/> </panel> <panel label="Spódnica" name="Skirt"> - <text type="string" length="1" name="title"> + <text length="1" name="title" type="string"> [DESC] </text> - <text type="string" length="1" name="title_no_modify"> + <text length="1" name="title_no_modify" type="string"> [DESC]: modyfikacja zabroniona </text> - <text type="string" length="1" name="title_loading"> + <text length="1" name="title_loading" type="string"> [DESC]: Å‚adowanie... </text> - <text type="string" length="1" name="title_not_worn"> + <text length="1" name="title_not_worn" type="string"> [DESC]: niezaÅ‚ożone </text> - <text type="string" length="1" name="path"> + <text length="1" name="path" type="string"> Zapisane w [PATH] </text> - <text type="string" length="1" name="not worn instructions"> + <text length="1" name="not worn instructions" type="string"> Załóż nowÄ… spódnicÄ™ poprzez przeciÄ…gniÄ™cie jej ze swojej szafy na awatara. Alternatywnie, możesz także stworzyć wÅ‚asnÄ… spódnicÄ™ -z plików roboczych. --> (Kliknij na Nowa Spódnica) +z plików roboczych. </text> - <text type="string" length="1" name="no modify instructions"> + <text length="1" name="no modify instructions" type="string"> Nie posiadasz prawa do modyfikowania tej spódnicy. </text> - <texture_picker label="MateriaÅ‚" name="Fabric" tool_tip="Kliknij by wybrać teksturÄ™" /> - <color_swatch label="Kolor/Barwa" name="Color/Tint" tool_tip="Kliknij by wybrać kolor" /> - <button label="Nowa Spódnica" label_selected="Nowa Spódnica" name="Create New" /> - <button label="Zdejmij" label_selected="Zdejmij" name="Take Off" /> - <button label="Zapisz" label_selected="Zapisz" name="Save" /> - <button label="Zapisz Jako" label_selected="Zapisz Jako" name="Save As" /> - <button label="Wróć" label_selected="Wróć" name="Revert" /> + <text name="Item Action Label"> + Spódnica: + </text> + <texture_picker label="MateriaÅ‚" name="Fabric" tool_tip="Kliknij by wybrać teksturÄ™"/> + <color_swatch label="Kolor/Barwa" name="Color/Tint" tool_tip="Kliknij by wybrać kolor"/> + <button label="Nowa Spódnica" label_selected="Nowa Spódnica" name="Create New"/> + <button label="Zdejmij" label_selected="Zdejmij" name="Take Off"/> + <button label="Zapisz" label_selected="Zapisz" name="Save"/> + <button label="Zapisz Jako..." label_selected="Zapisz Jako..." name="Save As"/> + <button label="Wróć" label_selected="Wróć" name="Revert"/> </panel> </tab_container> - <button label="Zamknij" label_selected="Zamknij" name="Close" /> - <button label="Zapisz WyglÄ…d" label_selected="Zapisz WyglÄ…d" name="Save All" /> - <button label="Stwórz Ubranie" label_selected="Stwórz Ubranie" name="Make Outfit" /> + <button label="Anuluj" label_selected="Anuluj" name="Cancel"/> + <button label="OK" label_selected="OK" name="Ok"/> + <button label="Stwórz Ubranie..." label_selected="Stwórz Ubranie..." name="Make Outfit" width="115"/> </floater> diff --git a/indra/newview/skins/default/xui/pl/floater_font_test.xml b/indra/newview/skins/default/xui/pl/floater_font_test.xml new file mode 100644 index 0000000000000000000000000000000000000000..586d2690b3c7388904323fee552b76df157d8521 --- /dev/null +++ b/indra/newview/skins/default/xui/pl/floater_font_test.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="contents" title="Czcionka Tekstu"> + <text name="linea"> + OverrideTest, powinno wyÅ›wietlać siÄ™ jako Times. (From default/xui/en-us) + </text> +</floater> diff --git a/indra/newview/skins/default/xui/pl/floater_god_tools.xml b/indra/newview/skins/default/xui/pl/floater_god_tools.xml index 64213cbca10878f256ee2a605678d2f6ebfff5e7..c978da6d65edd55dcb46788247d55405f6fe2871 100755 --- a/indra/newview/skins/default/xui/pl/floater_god_tools.xml +++ b/indra/newview/skins/default/xui/pl/floater_god_tools.xml @@ -2,25 +2,26 @@ <floater name="godtools floater" title="Boskie NarzÄ™dzia"> <tab_container name="GodTools Tabs"> <panel label="Grid" name="grid"> - <button label="UsuÅ„ wszystkich użytkowników" label_selected="UsuÅ„ wszystkich użytkowników" name="Kick all users"/> - <button label="Wyrównaj ten region's Widoczność Buforu Mapy" label_selected="Wyrównaj ten region's Widoczność Buforu Mapy" name="Flush This Region's Map Visibility Caches"/> + <button width="205" label="UsuÅ„ wszystkich użytkowników" label_selected="UsuÅ„ wszystkich użytkowników" name="Kick all users"/> + <button width="285" label="Wyrównaj Widoczność Buforu Mapy Regionu" label_selected="Wyrównaj Widoczność Buforu Mapy Regionu" name="Flush This Region's Map Visibility Caches"/> </panel> <panel label="Region" name="region"> - <text name="Sim Name:"> + <text name="Sim Name:" width="100"> Nazwa Symulatora: </text> + <line_editor left="115" name="region name" width="178" /> <line_editor name="region name"/> <check_box label="WstÄ™p" name="check prelude" /> <check_box label="Korekta SÅ‚oÅ„ca" name="check fixed sun" tool_tip="Skorektuj ustawienia pozycji sÅ‚oÅ„ca."/> - <check_box label="Zresetuj PozycjÄ™ Miejsca Startwego" name="check reset home" /> - <check_box label="Widoczny" name="check visible" tool_tip="Wybierz tÄ™ opcjÄ™ by ustawić region widocznym dla wszystkich."/> + <check_box height="32" label="Zresetuj PozycjÄ™ Miejsca Startowego" name="check reset home" /> + <check_box bottom_delta="-32" label="Widoczny" name="check visible" tool_tip="Wybierz tÄ™ opcjÄ™ by ustawić region widocznym dla wszystkich."/> <check_box label="Zniszczenia" name="check damage" tool_tip="Wybierz tÄ™ opcjÄ™ by uruchomić opcjÄ™ zniszczeÅ„ w regionie."/> <check_box label="Zablokuj Monitorowanie Trafficu" name="block dwell" tool_tip="Wybierz tÄ™ opcjÄ™ by zablokować monitorowanie trafficu w regionie."/> <check_box label="Zablokuj Terraformowanie" name="block terraform" tool_tip="Wybierz tÄ™ opcjÄ™ by zablokować terraforming w regionie"/> <check_box label="Piaskownica" name="is sandbox" /> - <button label="Bake Teren" label_selected="Bake Teren" name="Bake Terrain" tool_tip="Zachowaj obecne ustawienia jako domyÅ›lne"/> - <button label="CofniÄ™cie Modyfikacji" label_selected="CofniÄ™cie Modyfikacji" name="Revert Terrain" tool_tip="Przywróć Ustawienia DomyÅ›lne Regionu."/> - <button label="ZamieÅ„ Teren" label_selected="ZamieÅ„ Teren" name="Swap Terrain" /> + <button width="138" label="Ustal Teren" label_selected="Ustal Teren" name="Bake Terrain" tool_tip="ZapamiÄ™taj obecny teren jako poczÄ…tkowy dla cofniÄ™cia modyfikacji terenu."/> + <button width="138" label="CofniÄ™cie Modyfikacji" label_selected="CofniÄ™cie Modyfikacji" name="Revert Terrain" tool_tip="Przywróć Ustawienia DomyÅ›lne Regionu."/> + <button width="138" label="ZamieÅ„ Teren" label_selected="ZamieÅ„ Teren" name="Swap Terrain" /> <text name="estate id"> ID Regionu: </text> @@ -32,13 +33,13 @@ <text name="Grid Pos: "> Pozycje Gridu: </text> - <line_editor name="gridposx" tool_tip="Pozycja x gridu dla regionu"/> - <line_editor name="gridposy" tool_tip="Pozycja y gridu dla regionu"/> + <line_editor name="gridposx" tool_tip="Pozycja x gridu dla regionu" left_delta="110" width="35" /> + <line_editor name="gridposy" tool_tip="Pozycja y gridu dla regionu" left_delta="45" width="35" /> <text name="Redirect to Grid: "> Przełącz do gridu: </text> - <line_editor name="redirectx"/> - <line_editor name="redirecty"/> + <line_editor left_delta="110" name="redirectx" width="35" /> + <line_editor left_delta="45" name="redirecty" width="35" /> <spinner name="billable factor"/> <text name="billable factor text"> Czynnik PÅ‚atnośći: @@ -48,15 +49,15 @@ L$/m: </text> <button label="OdÅ›wież" label_selected="OdÅ›wież" name="Refresh" /> - <button label="Apply" label_selected="Apply" name="Apply" /> - <button label="Wybierz Region" label_selected="Wybierz Region" name="Select Region" tool_tip="Wybierz caÅ‚y region za pomocÄ… narzÄ™dzi edycji terenu"/> - <button label="Automatyczne Zapisanie" label_selected="Automatyczne Zapisanie" name="Autosave now" /> + <button label="Zastosuj" label_selected="Zastosuj" name="Apply" /> + <button width="150" left="156" label="Wybierz Region" label_selected="Wybierz Region" name="Select Region" tool_tip="Wybierz caÅ‚y region za pomocÄ… narzÄ™dzi edycji terenu"/> + <button width="150" left="156" label="Automatyczne Zapisanie" label_selected="Automatyczne Zapisanie" name="Autosave now" /> </panel> <panel label="Obiekty" name="objects"> - <text name="Sim Name:"> + <text name="Sim Name:" width="105"> Nazwa Symulatora: </text> - <text name="region name"> + <text name="region name" left_delta="110"> Welsh </text> <check_box label="Wyłącz Skrypty" name="disable scripts" /> @@ -74,7 +75,7 @@ <button label="Główne Skrypty" label_selected="Główne Skrypty" name="Get Top Scripts" /> <button label="Treść skryptów" label_selected="Treść skryptów" name="Scripts digest" tool_tip="WyÅ›wietla listÄ™ wszystkich skryptów i liczbÄ™ ich zastosowaÅ„."/> </panel> - <panel label="ZarzÄ…daj" name="request"> + <panel label="Zażądaj" name="request"> <text name="Destination:"> Cel: </text> @@ -83,7 +84,7 @@ <combo_box.item name="AgentRegion" label="Agent Regionu" /> </combo_box> <text name="Request:"> - RzÄ…danie: + Żądanie: </text> <combo_box name="request"> <combo_box.item name="colliders<steps>" label="kolidery <kroki>" /> @@ -95,7 +96,7 @@ Parameter: </text> <line_editor name="parameter"/> - <button label="ZarzÄ…daj" label_selected="ZarzÄ…daj" name="Make Request"/> + <button label="Zażądaj" label_selected="Zażądaj" name="Make Request"/> </panel> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/pl/floater_im.xml b/indra/newview/skins/default/xui/pl/floater_im.xml index 00a91bdf6c2cf2a55be2f7e52ab59fbb9bd7ee31..67c9d134964088b51d9618cc0fbdaa197d369bb0 100755 --- a/indra/newview/skins/default/xui/pl/floater_im.xml +++ b/indra/newview/skins/default/xui/pl/floater_im.xml @@ -10,7 +10,7 @@ Kliknij na [BUTTON NAME] przycisk by zaakceptować/dołączyć do tej rozmowy. </string> <string name="muted_message"> - Ten rezydent jest przez Ciebie wyciszony. WysyÅ‚anie wiadomośći automatycznie wyłączy tryb wyciszenia. + Ten Rezydent jest przez Ciebie wyciszony. WysyÅ‚anie wiadomoÅ›ci automatycznie wyłączy tryb wyciszenia. </string> <string name="generic_request_error"> Błąd. Spróbuj ponownie za kilka minut. diff --git a/indra/newview/skins/default/xui/pl/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/pl/floater_inventory_item_properties.xml index f754610ee329b5670c8b8ce1867301de132162a9..c32d1eeabfb5c58d07b3c5072684e87257e37d59 100755 --- a/indra/newview/skins/default/xui/pl/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/pl/floater_inventory_item_properties.xml @@ -60,12 +60,8 @@ </text> <check_box label="Sprzedaż" name="CheckPurchase" /> <radio_group name="RadioSaleType"> - <radio_item name="radio"> - OryginaÅ‚ - </radio_item> - <radio_item name="radio2"> - Kopia - </radio_item> + <radio_item name="radio" label="OryginaÅ‚" /> + <radio_item name="radio2" label="Kopia" /> </radio_group> <text name="TextPrice"> Cena: L$ diff --git a/indra/newview/skins/default/xui/pl/floater_land_holdings.xml b/indra/newview/skins/default/xui/pl/floater_land_holdings.xml index 21e6b5ae2200026560079663f995da59b45516b3..29268f0e97644b0b533ffc58f226b6640b239bdf 100755 --- a/indra/newview/skins/default/xui/pl/floater_land_holdings.xml +++ b/indra/newview/skins/default/xui/pl/floater_land_holdings.xml @@ -1,21 +1,20 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="land holdings floater" title="My Land"> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="land holdings floater" title="Moja posiadÅ‚ość"> <scroll_list name="parcel list"> - <column label="Nazwa" name="name" /> - <column label="PoÅ‚ożenie" name="location" /> - <column label="Obszar" name="area" /> - <column label="" name="hidden" /> + <column label="Nazwa posiadÅ‚oÅ›ci" name="name"/> + <column label="Region" name="location"/> + <column label="Typ" name="type"/> + <column label="Obszar" name="area"/> + <column label="" name="hidden"/> </scroll_list> - <button label="Teleportuj" label_selected="Teleport" name="Teleport" - tool_tip="Teleportuj siÄ™ do centrum tej PosiadÅ‚oÅ›ci." /> - <button label="Pokaż na Mapie" label_selected="Show on Map" name="Show on Map" - tool_tip="Pokaż to miejsce na mapie Å›wiata." /> + <button label="Teleportuj" label_selected="Teleport" name="Teleport" tool_tip="Teleportuj siÄ™ do centrum tej PosiadÅ‚oÅ›ci."/> + <button label="Pokaż na Mapie" label_selected="Pokaż na mapie" name="Show on Map" tool_tip="Pokaż to miejsce na mapie Å›wiata."/> <text name="contrib_label"> Kontrybucje do Twoich Grup: </text> <scroll_list name="grant list"> - <column label="Grupa" name="group" /> - <column label="Obszar" name="area" /> + <column label="Grupa" name="group"/> + <column label="Obszar" name="area"/> </scroll_list> <text name="allowed_label"> Dozwolone udziaÅ‚y przy obecnym planie pÅ‚atnoÅ›ci: diff --git a/indra/newview/skins/default/xui/pl/floater_mute_object.xml b/indra/newview/skins/default/xui/pl/floater_mute_object.xml index a09c6baac23553aa90994c263034d013f5d03acf..310810db76af97d3171ee282787129b2ba3d760e 100755 --- a/indra/newview/skins/default/xui/pl/floater_mute_object.xml +++ b/indra/newview/skins/default/xui/pl/floater_mute_object.xml @@ -1,10 +1,11 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="mute by name" title="Wycisz Obiekt WedÅ‚ug Nazwy"> +<floater name="mute by name" title="Wycisz Obiekt WedÅ‚ug Nazwy" height="160" min_height="160" > <text name="message"> - Wyciszenie obiektu jest skuteczne jedynie na czacie oraz w wiadomoÅ›ciach IM. Nie obejmuje natomiast dźwiÄ™ków. + Wyciszenie obiektu jest skuteczne jedynie na czacie oraz w +wiadomoÅ›ciach IM. Nie obejmuje natomiast dźwiÄ™ków. By wyciszyć obiekt musisz wpisać dokÅ‚adnie jego nazwÄ™. </text> - <line_editor name="object_name"> + <line_editor name="object_name" bottom_delta="-60"> Nazwa Obiektu </line_editor> <button label="Ok" name="OK" /> diff --git a/indra/newview/skins/default/xui/pl/floater_perm_prefs.xml b/indra/newview/skins/default/xui/pl/floater_perm_prefs.xml new file mode 100644 index 0000000000000000000000000000000000000000..dd7cbe1f79932269ad4916e26bd0dafdbe7ee1aa --- /dev/null +++ b/indra/newview/skins/default/xui/pl/floater_perm_prefs.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="perm prefs" title="Prawa DomyÅ›lne"> + <panel label="Prawa" name="permissions"> + <button label="?" label_selected="?" name="help"/> + <check_box label="UdostÄ™pnij grupie" name="share_with_group"/> + <check_box label="Pozwól kopiować każdemu" name="everyone_copy"/> + <text name="NextOwnerLabel"> + NastÄ™pny wÅ‚aÅ›ciciel: + </text> + <check_box label="Modyfikuje" name="next_owner_modify"/> + <check_box label="Kopiuje" name="next_owner_copy"/> + <check_box label="Oddaje/Sprzedaje" name="next_owner_transfer"/> + </panel> + <button label="OK" label_selected="OK" name="ok"/> + <button label="Anuluj" label_selected="Anuluj" name="cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/pl/floater_post_process.xml b/indra/newview/skins/default/xui/pl/floater_post_process.xml index 21c92764f68947f9f4adf43ad387b3128482d3eb..a86e1bcfa5a7796207c5c4695cbd14e8ab8eab60 100755 --- a/indra/newview/skins/default/xui/pl/floater_post_process.xml +++ b/indra/newview/skins/default/xui/pl/floater_post_process.xml @@ -2,7 +2,7 @@ <floater name="Post-Process Floater" title="Ustawienia Przetwarzania KoÅ„cowego"> <tab_container name="Post-Process Tabs"> <panel label="Kolor Filtru" name="wmiColorFilterPanel"> - <check_box label="Enable" name="wmiColorFilterToggle" /> + <check_box label="UdostÄ™pnij" name="wmiColorFilterToggle" /> <text type="string" length="1" name="wmiColorFilterBrightnessText"> Jasność </text> diff --git a/indra/newview/skins/default/xui/pl/floater_preview_gesture.xml b/indra/newview/skins/default/xui/pl/floater_preview_gesture.xml index 013780ebf90af702d47b6ab48a3315e88a80f121..1c7a3f663181c1415074d0a96916e3e71a01736c 100755 --- a/indra/newview/skins/default/xui/pl/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/pl/floater_preview_gesture.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="gesture_preview"> <string name="stop_txt"> Stop @@ -15,43 +15,42 @@ <text name="trigger_label"> Włączanie: </text> - <text name="replace_text" - tool_tip="ZmieÅ„ włączajÄ…cÄ… frazÄ™ na innÄ…. Na przykÅ‚ad zmiana 'witam' na 'cześć' zmieni czat 'ChciaÅ‚em powiedzieć witam' na 'ChciaÅ‚em powiedzieć cześć' i pokaże animacjÄ™!"> + <text name="replace_text" tool_tip="ZmieÅ„ włączajÄ…cÄ… frazÄ™ na innÄ…. Na przykÅ‚ad zmiana 'witam' na 'cześć' zmieni czat 'ChciaÅ‚em powiedzieć witam' na 'ChciaÅ‚em powiedzieć cześć' i pokaże animacjÄ™!"> ZamieÅ„ na: </text> - <line_editor name="replace_editor" - tool_tip="ZmieÅ„ włączajÄ…cÄ… frazÄ™ na innÄ…. Na przykÅ‚ad zmiana 'witam' na 'cześć' zmieni czat 'ChciaÅ‚em powiedzieć witam' na 'ChciaÅ‚em powiedzieć cześć' i pokaże animacjÄ™!" /> + <line_editor name="replace_editor" tool_tip="ZmieÅ„ włączajÄ…cÄ… frazÄ™ na innÄ…. Na przykÅ‚ad zmiana 'witam' na 'cześć' zmieni czat 'ChciaÅ‚em powiedzieć witam' na 'ChciaÅ‚em powiedzieć cześć' i pokaże animacjÄ™!"/> <text name="key_label"> Skrót: </text> - <combo_box label="Brak" name="modifier_combo" /> - <combo_box label="Brak" name="key_combo" /> + <combo_box label="Brak" name="modifier_combo"/> + <combo_box label="Brak" name="key_combo"/> <text name="library_label"> Zbiór: </text> <text name="steps_label"> Etapy: </text> - <button label="Dodaj >>" name="add_btn" /> - <button label="W GórÄ™" name="up_btn" /> - <button label="W Dół" name="down_btn" /> - <button label="UsuÅ„" name="delete_btn" /> + <scroll_list name="library_list"> + Animacja +DźwiÄ™k +Czat +Wstrzymaj + </scroll_list> + <button label="Dodaj >>" name="add_btn"/> + <button label="W GórÄ™" name="up_btn"/> + <button label="W Dół" name="down_btn"/> + <button label="UsuÅ„" name="delete_btn"/> <text name="help_label"> Wszystkie etapy nastÄ…piÄ… razem, chyba, że dodasz pauzy. </text> <radio_group name="animation_trigger_type"> - <radio_item name="start"> - Start - </radio_item> - <radio_item name="stop"> - Stop - </radio_item> + <radio_item name="start" label="Start" /> + <radio_item name="stop" label="Stop" /> </radio_group> - <check_box label="do koÅ„ca animacji" name="wait_anim_check" /> - <check_box label="czas w sekundach" name="wait_time_check" /> - <check_box label="Aktywny" name="active_check" - tool_tip="Aktywne gesty można włączać używajÄ…c przypisanej frazy w czacie albo używajÄ…c przypisanego klawisza skrótowego. W przypaku konfliktu przypisaÅ„ gesty zazwyczaj nie bÄ™dÄ… dziaÅ‚ać." /> - <button label="Pokaż" name="preview_btn" /> - <button label="Zapisz" name="save_btn" /> + <check_box label="do koÅ„ca animacji" name="wait_anim_check"/> + <check_box label="czas w sekundach" name="wait_time_check"/> + <check_box label="Aktywny" name="active_check" tool_tip="Aktywne gesty można włączać używajÄ…c przypisanej frazy w czacie albo używajÄ…c przypisanego klawisza skrótowego. W przypaku konfliktu przypisaÅ„ gesty zazwyczaj nie bÄ™dÄ… dziaÅ‚ać."/> + <button label="Pokaż" name="preview_btn"/> + <button label="Zapisz" name="save_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/pl/floater_preview_notecard.xml b/indra/newview/skins/default/xui/pl/floater_preview_notecard.xml index 88a95adb94777888897b9b476692afd23665bdee..c67d9a9206136bdbe15a846a62d5074258db716e 100755 --- a/indra/newview/skins/default/xui/pl/floater_preview_notecard.xml +++ b/indra/newview/skins/default/xui/pl/floater_preview_notecard.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="preview notecard" title="Note:"> +<floater name="preview notecard" title="Nota:"> <button label="Zapisz" label_selected="Zapisz" name="Save" /> <text type="string" length="1" name="desc txt"> Opis: diff --git a/indra/newview/skins/default/xui/pl/floater_report_abuse.xml b/indra/newview/skins/default/xui/pl/floater_report_abuse.xml index f24eb028866e4202c7bcae7087489f8856232cd8..a831c7e511cb91a1170a422b126ed2331178f0a6 100755 --- a/indra/newview/skins/default/xui/pl/floater_report_abuse.xml +++ b/indra/newview/skins/default/xui/pl/floater_report_abuse.xml @@ -21,7 +21,7 @@ {128.1, 128.1, 15.4} </text> <text name="select_object_label"> - Kliknij na przycisk, a pózniej na obiekt: + Kliknij na przycisk, a później na obiekt: </text> <button label="" label_selected="" name="pick_btn" tool_tip="Wybór obiektu - wybierz obiekt, którego dotyczy raport"/> <text name="object_name_label"> @@ -40,9 +40,9 @@ <combo_box.item name="Select_category" label="Wybierz KategoriÄ™:"/> <combo_box.item name="Age__Age_play" label="Wiek > Udawanie Nieletniej Osoby"/> <combo_box.item name="Age__Adult_resident_on_Teen_Second_Life" label="Wiek > DorosÅ‚y Rezydent w Teen Second Life"/> - - - + <combo_item name="Age__Underage_resident_outside_of_Teen_Second_Life"> + Wiek > Nieletni Rezydent poza Teen Second Life + </combo_item> <combo_box.item name="Assault__Combat_sandbox___unsafe_area" label="Napaść > Strefa Militarna / Niebezpieczny Obszar"/> <combo_box.item name="Assault__Safe_area" label="Napaść > Bezpieczny Obszar"/> <combo_box.item name="Assault__Weapons_testing_sandbox" label="Napaść > Obszar do Testowania Broni"/> @@ -66,13 +66,13 @@ <combo_box.item name="Harassment__Solicting_inciting_others_to_violate_ToS" label="PrzeÅ›ladowanie > Namawianie/ZachÄ™canie Innych do Åamania Warunków Umowy (ToS)"/> <combo_box.item name="Harassment__Verbal_abuse" label="PrzeÅ›ladowanie > Znieważanie SÅ‚owne"/> <combo_box.item name="Indecency__Broadly_offensive_content_or_conduct" label="Nieprzyzwoitość > Obraźliwa Treść lub PostÄ™powanie"/> - - - <combo_box.item name="Indecency__Inappropriate_avatar_name" label="Nieprzyzwoitość > Niestosowne ImiÄ™ Awatara"/> - - - + <combo_item name="Indecency__Mature_content_in_PG_region"> + Nieprzyzwoitość > Obraźliwa treść i postÄ™powanie w regionie 'PG' + </combo_item> + <combo_item name="Indecency__Inappropriate_content_in_Mature_region"> + Nieprzyzwoitość > Obraźliwa treść i postÄ™powanie w regionie 'Mature' + </combo_item> <combo_box.item name="Intellectual_property_infringement_Content_Removal" label="Naruszenie WÅ‚asnoÅ›ci Intelektualnej > UsuniÄ™cie TreÅ›ci"/> <combo_box.item name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit" label="Naruszenie WÅ‚asnoÅ›ci Intelektualnej > CopyBot albo Nadużycie Przywilejów"/> <combo_box.item name="Intolerance" label="Nietolerancja"/> diff --git a/indra/newview/skins/default/xui/pl/floater_script_search.xml b/indra/newview/skins/default/xui/pl/floater_script_search.xml index ce5e980f54bafc71d545ca223e8ef1a758a9333c..d00f1c267a5551a10554f9d471748381b6687fc2 100755 --- a/indra/newview/skins/default/xui/pl/floater_script_search.xml +++ b/indra/newview/skins/default/xui/pl/floater_script_search.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="script search" title="Wyszukaj Skryptu"> - <check_box label="Neutralne na wielkość" name="case_text" /> - <button label="Wyszukaj" label_selected="Wyszukaj" name="search_btn" /> +<floater name="script search" title="Szukaj Skryptu"> + <check_box label="CapsLoock Nieaktywny" name="case_text" /> + <button label="Szukaj" label_selected="Szukaj" name="search_btn" /> <button label="ZamieÅ„" label_selected="ZamieÅ„" name="replace_btn" /> <button label="ZamieÅ„ Wszystko" label_selected="ZamieÅ„ Wszystko" name="replace_all_btn" /> diff --git a/indra/newview/skins/default/xui/pl/floater_sell_land.xml b/indra/newview/skins/default/xui/pl/floater_sell_land.xml index 89a6be2f6c7b38df57d33c4c42a617bd18bcc2b7..70451fb5f6e9971be56a8a680f6ad23a245e7aa2 100755 --- a/indra/newview/skins/default/xui/pl/floater_sell_land.xml +++ b/indra/newview/skins/default/xui/pl/floater_sell_land.xml @@ -46,12 +46,8 @@ Przekazywalne obiekty wÅ‚aÅ›ciciela PosiadÅ‚oÅ›ci zmieniÄ… wÅ‚aÅ›ciciela. </text> <radio_group name="sell_objects"> - <radio_item name="no"> - Nie, zatrzymaj obiekty - </radio_item> - <radio_item name="yes"> - Tak, sprzedaj obiekty razem z PosiadÅ‚oÅ›ciÄ… - </radio_item> + <radio_item name="no" label="Nie, zatrzymaj obiekty" /> + <radio_item name="yes" label="Tak, sprzedaj obiekty razem z PosiadÅ‚oÅ›ciÄ…" /> </radio_group> <button label="Pokaż Obiekty" name="show_objects" /> <text name="nag_message_label"> diff --git a/indra/newview/skins/default/xui/pl/floater_snapshot.xml b/indra/newview/skins/default/xui/pl/floater_snapshot.xml index b2802135759980f801525a2ebe979c6df5ed1fcd..24bf88da855832b0c7952bb859a6db564dd51b34 100755 --- a/indra/newview/skins/default/xui/pl/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/pl/floater_snapshot.xml @@ -4,15 +4,9 @@ Lokacja zapisu </text> <radio_group label="Rodzaje zdjęć" name="snapshot_type_radio"> - <radio_item name="postcard"> - WyÅ›lij (email) pocztówkÄ™ - </radio_item> - <radio_item name="texture"> - ZaÅ‚aduj do szafy ([AMOUNT]L$) - </radio_item> - <radio_item name="local"> - Zapisz na dysk - </radio_item> + <radio_item name="postcard" label="WyÅ›lij (email) pocztówkÄ™" /> + <radio_item name="texture" label="ZaÅ‚aduj do szafy ([AMOUNT]L$)" /> + <radio_item name="local" label="Zapisz na dysk" /> </radio_group> <text name="file_size_label"> Rozmiar pliku: [SIZE] KB diff --git a/indra/newview/skins/default/xui/pl/floater_sound_preview.xml b/indra/newview/skins/default/xui/pl/floater_sound_preview.xml index afd1f9842d708408a52bad31c948152624769665..2461aebbcf1ca1e05fc3f6cc60c0caa8179e0a8f 100755 --- a/indra/newview/skins/default/xui/pl/floater_sound_preview.xml +++ b/indra/newview/skins/default/xui/pl/floater_sound_preview.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="Name/Description" title="dźwiÄ™k.wav"> +<floater name="Sound Preview" title="dźwiÄ™k.wav"> <text name="name_label"> Opis: </text> diff --git a/indra/newview/skins/default/xui/pl/floater_statistics.xml b/indra/newview/skins/default/xui/pl/floater_statistics.xml new file mode 100644 index 0000000000000000000000000000000000000000..933801bbda23f4406a0aaa253769f4e6cce6dbfb --- /dev/null +++ b/indra/newview/skins/default/xui/pl/floater_statistics.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="stats floater" title="Statystyki"/> diff --git a/indra/newview/skins/default/xui/pl/floater_telehub.xml b/indra/newview/skins/default/xui/pl/floater_telehub.xml index 33d353a9378f925aaf1be3f5fe8ed5dbf593eb9a..b4cf0988786b9f04f126ceeee064e0bdff1f4f13 100755 --- a/indra/newview/skins/default/xui/pl/floater_telehub.xml +++ b/indra/newview/skins/default/xui/pl/floater_telehub.xml @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="telehub" title="ObsÅ‚uga Teleportera"> - <text name="status_text_connected"> +<floater name="telehub" title="ObsÅ‚uga Teleportera" min_height="300" height="300" > + <text name="status_text_connected" width="250"> Teleporter połączony z obiektem [OBJECT] </text> - <text name="status_text_not_connected"> + <text name="status_text_not_connected" width="250"> Brak połączenia z teleporterem </text> <text name="help_text_connected"> @@ -12,17 +12,20 @@ <text name="help_text_not_connected"> Wybierz obiekt i kliknij Połącz z teleporterem </text> - <button label="Connect Telehub" name="connect_btn" /> - <button label="Rozłącz" name="disconnect_btn" /> - <text name="spawn_points_text"> + <button label="Połącz z teleporterem" name="connect_btn" width="122" /> + <button label="Rozłącz" name="disconnect_btn" left="142" width="98"/> + <text name="spawn_points_text" width="250"> Punkty SkÅ‚adowe (pozycje - nie obiekty!): </text> - <button label="Add Spawn" name="add_spawn_point_btn" /> - <button label="Remove Spawn" name="remove_spawn_point_btn" /> + <button label="Dodaj Punkt" name="add_spawn_point_btn" /> + <button label="UsuÅ„ Punkt" name="remove_spawn_point_btn" /> <text name="spawn_point_help"> - Wybierz obiekt i wybierz Dodaj by sprecyzować pozycjÄ™. -Wówczas możesz przesunąć lub usunąć obiekt. -Pozycje sÄ… relatywne do części centralnej teleportera. -Wybierz obiekt z listy by zobaczyć jego pozycjÄ™ w Å›wiecie. + Wybierz obiekt i wybierz Dodaj by sprecyzować +pozycjÄ™. Wówczas możesz przesunąć lub +usunąć obiekt. Pozycje sÄ… relatywne do części +centralnej teleportera. + +Wybierz obiekt z listy by zobaczyć jego pozycjÄ™ +w Å›wiecie. </text> </floater> diff --git a/indra/newview/skins/default/xui/pl/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/pl/floater_texture_ctrl.xml index f6802416cbe306a503f317a5f6edaec2876678c8..702422f1ba2b39b6e6ec4320adb81b46be1926b0 100755 --- a/indra/newview/skins/default/xui/pl/floater_texture_ctrl.xml +++ b/indra/newview/skins/default/xui/pl/floater_texture_ctrl.xml @@ -12,7 +12,7 @@ <button label="DomyÅ›lna" label_selected="DomyÅ›lna" name="Default"/> <button label="Å»adna" label_selected="Å»adna" name="None"/> <button label="Pusta" label_selected="Pusta" name="Blank"/> - <check_box label="Show Folders" name="show_folders_check"/> + <check_box label="Pokaż Foldery" name="show_folders_check"/> <search_editor label="Wpisz nazwÄ™ tutaj by wyszukać" name="inventory search editor"/> <check_box label="Zastosuj od razu" name="apply_immediate_check"/> <button label="" label_selected="" name="Pipette"/> diff --git a/indra/newview/skins/default/xui/pl/floater_tools.xml b/indra/newview/skins/default/xui/pl/floater_tools.xml index 25e1797605670fdb937d5fed625f9de95bea58ae..380943f4ad62874c0db0b7dae2cbe81bf19a4b8c 100755 --- a/indra/newview/skins/default/xui/pl/floater_tools.xml +++ b/indra/newview/skins/default/xui/pl/floater_tools.xml @@ -1,49 +1,43 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="toolbox floater" title=""> - <!-- Main floater tabs --> <button label="" label_selected="" name="button focus" tool_tip="Zbliżenie"/> <button label="" label_selected="" name="button move" tool_tip="PrzesuniÄ™cie"/> <button label="" label_selected="" name="button edit" tool_tip="Edycja"/> <button label="" label_selected="" name="button create" tool_tip="Stwórz"/> <button label="" label_selected="" name="button land" tool_tip="Teren"/> - <!-- Focus panel --> - <volume_slider name="slider zoom"/> - <radio_group name="focus_radio_group"> - <radio_item label="Zbliżenie" name="radio zoom"/> - <radio_item label="Obracanie (Ctrl)" name="radio orbit"/> - <radio_item label="PrzesuniÄ™cie (Ctrl-Shift)" name="radio pan"/> - </radio_group> - <!-- Move panel --> - <radio_group name="move_radio_group"> - <radio_item label="PrzesuÅ„" name="radio move"/> - <radio_item label="PodnieÅ› (Ctrl)" name="radio lift"/> - <radio_item label="Obróć (Ctrl-Shift)" name="radio spin"/> - </radio_group> - <!-- Edit panel --> - <radio_group name="edit_radio_group"> - <radio_item label="Pozycja" name="radio position"/> - <radio_item label="Obróć (Ctrl)" name="radio rotate"/> - <radio_item label="RozciÄ…gnij (Ctrl-Shift)" name="radio stretch"/> - <radio_item label="Wybierz TeksturÄ™" name="radio select face"/> - </radio_group> + <check_box label="Zbliżenie" name="radio zoom"/> + <volume_slider name="slider zoom"/> + <check_box label="Obracanie (Ctrl)" name="radio orbit"/> + <check_box label="PrzesuniÄ™cie (Ctrl-Shift)" name="radio pan"/> + <check_box label="PrzesuÅ„" name="radio move"/> + <check_box label="PodnieÅ› (Ctrl)" name="radio lift"/> + <check_box label="Obróć (Ctrl-Shift)" name="radio spin"/> + <check_box label="Pozycja" name="radio position"/> + <check_box label="Obróć (Ctrl)" name="radio rotate"/> + <check_box label="RozciÄ…gnij (Ctrl-Shift)" name="radio stretch"/> + <check_box label="Wybierz TeksturÄ™" name="radio select face"/> <check_box label="Edytuj Połączone Części" name="checkbox edit linked parts"/> <text name="text ruler mode"> Linijka: </text> <combo_box name="combobox grid mode"> - <combo_box.item name="World" label="Åšwiat" /> - <combo_box.item name="Local" label="Lokalna" /> - <combo_box.item name="Reference" label="WzglÄ™dna" /> + <combo_item name="World"> + Åšwiat + </combo_item> + <combo_item name="Local"> + Lokalna + </combo_item> + <combo_item name="Reference"> + WzglÄ™dna + </combo_item> </combo_box> <check_box label="RozciÄ…gnij 2 Strony" name="checkbox uniform"/> <check_box label="RozciÄ…gnij TeksturÄ™" name="checkbox stretch textures"/> <check_box label="Użyj Siatki" name="checkbox snap to grid"/> <button label="Opcje..." label_selected="Opcje..." name="Options..."/> - <!-- Help text --> <text name="text status"> PrzeciÄ…gnij żeby przenieść, shift-przeciÄ…gnij żeby skopiować </text> - <!-- Create panel --> <button label="" label_selected="" name="ToolCube" tool_tip="SzeÅ›cian"/> <button label="" label_selected="" name="ToolPrism" tool_tip="GraniastosÅ‚up"/> <button label="" label_selected="" name="ToolPyramid" tool_tip="OstrosÅ‚up"/> @@ -59,34 +53,34 @@ <button label="" label_selected="" name="ToolRing" tool_tip="PierÅ›cieÅ„"/> <button label="" label_selected="" name="ToolTree" tool_tip="Drzewo"/> <button label="" label_selected="" name="ToolGrass" tool_tip="Trawa"/> - <check_box label="PamiÄ™taj Wybrane NarzÄ™dzia" name="checkbox sticky"/> - <check_box label="Kopiuj SelekcjÄ™" name="checkbox copy selection"/> - <check_box label="Kopia Åšrodka" name="checkbox copy centers"/> - <check_box label="Kopia Obrotu" name="checkbox copy rotates"/> - <!-- Land panel --> - <radio_group name="land_radio_group"> - <radio_item label="Zaznaczanie" name="radio select land"/> - <radio_item label="Niwelowanie" name="radio flatten"/> - <radio_item label="Podnoszenie" name="radio raise"/> - <radio_item label="Obniżanie" name="radio lower"/> - <radio_item label="WygÅ‚adzanie" name="radio smooth"/> - <radio_item label="FaÅ‚dowanie terenu" name="radio noise"/> - <radio_item label="CofniÄ™cie modyfikacji" name="radio revert"/> - </radio_group> - <combo_box name="combobox brush size"> - <combo_box.item name="Small" label="MaÅ‚e" /> - <combo_box.item name="Medium" label="Åšrednie" /> - <combo_box.item name="Large" label="Duże" /> - </combo_box> - <volume_slider name="slider force"/> + <check_box label="Trzymaj zaznaczone" name="checkbox sticky"/> + <check_box label="Kopiuj zaznaczone" name="checkbox copy selection"/> + <check_box label="Åšrodek" name="checkbox copy centers"/> + <check_box label="Obróć" name="checkbox copy rotates"/> + <check_box label="Zaznaczanie" name="radio select land"/> + <check_box label="Prostowanie" name="radio flatten"/> + <check_box label="Podnoszenie" name="radio raise"/> + <check_box label="Obniżanie" name="radio lower"/> + <check_box label="WygÅ‚adzanie" name="radio smooth"/> + <check_box label="FaÅ‚dowanie" name="radio noise"/> + <check_box label="Cofnij modyfikacjÄ™" name="radio revert"/> + <button label="Zastosuj" label_selected="Zastosuj" name="button apply to selection" tool_tip="Modyfikuj zaznaczony teren"/> + <text name="Bulldozer:"> + Burzenie: + </text> + <text name="Dozer Size:"> + Rozmiar + </text> <text length="1" name="Strength:" type="string"> - SiÅ‚a: + SiÅ‚a + </text> + <volume_slider name="slider force"/> + <text name="obj_count"> + Wybrane obiekty: [COUNT] + </text> + <text name="prim_count"> + primy: [COUNT] </text> - <button label="Zastosuj do selekcji" label_selected="Zastosuj do selekcji" name="button apply to selection" tool_tip="Modyfikuj zaznaczony teren"/> - <check_box label="Pokaż WÅ‚aÅ›cicieli" name="checkbox show owners"/> - <button label="WiÄ™cej >>" name="button more" tool_tip="Zaawansowane Opcje"/> - <button label="<< Mniej" name="button less" tool_tip="Zaawansowane Opcje"/> - <!-- Sub-tabs --> <tab_container name="Object Info Tabs"> <panel label="Ogólne" name="General"> <text name="Name:"> @@ -118,9 +112,6 @@ The Lindens </text> <button label="Ustaw..." label_selected="Ustaw..." name="button set group"/> - <text name="prim info"> - 1 obiekt, 1 element - </text> <text name="Permissions:"> Prawa: </text> @@ -164,13 +155,27 @@ Lewe KlikniÄ™cie: </text> <combo_box name="clickaction"> - <combo_box.item name="Touch/grab(default)" label="Dotknij (domyÅ›lne)" /> - <combo_box.item name="Sitonobject" label="UsiÄ…dź na Obiekcie" /> - <combo_box.item name="Buyobject" label="Kup Obiekt" /> - <combo_box.item name="Payobject" label="ZapÅ‚ać Obiektowi" /> - <combo_box.item name="Open" label="Otwórz" /> - <combo_box.item name="Play" label="Odtwarzaj Media" /> - <combo_box.item name="Opemmedia" label="Otwrórz Media" /> + <combo_item name="Touch/grab(default)"> + Dotknij (domyÅ›lne) + </combo_item> + <combo_item name="Sitonobject"> + UsiÄ…dź na Obiekcie + </combo_item> + <combo_item name="Buyobject"> + Kup Obiekt + </combo_item> + <combo_item name="Payobject"> + ZapÅ‚ać Obiektowi + </combo_item> + <combo_item name="Open"> + Otwórz + </combo_item> + <combo_item name="Play"> + Odtwarzaj Media + </combo_item> + <combo_item name="Opemmedia"> + Otwrórz Media + </combo_item> </combo_box> <text name="B:"> B: @@ -221,7 +226,6 @@ Sprzedaż Mieszana </string> </panel> - <!-- Object sub-tab --> <panel label="Obiekt" name="Object"> <text name="select_single"> Wybierz tylko jeden element by edytować jego parametry @@ -255,26 +259,56 @@ MateriaÅ‚ </text> <combo_box name="material"> - <combo_box.item name="Stone" label="KamieÅ„" /> - <combo_box.item name="Metal" label="Metal" /> - <combo_box.item name="Glass" label="SzkÅ‚o" /> - <combo_box.item name="Wood" label="Drewno" /> - <combo_box.item name="Flesh" label="CiaÅ‚o" /> - <combo_box.item name="Plastic" label="Plastik" /> - <combo_box.item name="Rubber" label="Guma" /> + <combo_item name="Stone"> + KamieÅ„ + </combo_item> + <combo_item name="Metal"> + Metal + </combo_item> + <combo_item name="Glass"> + SzkÅ‚o + </combo_item> + <combo_item name="Wood"> + Drewno + </combo_item> + <combo_item name="Flesh"> + CiaÅ‚o + </combo_item> + <combo_item name="Plastic"> + Plastik + </combo_item> + <combo_item name="Rubber"> + Guma + </combo_item> </combo_box> <text name="label basetype"> Rodzaj Bloku Budowalnego </text> <combo_box name="comboBaseType"> - <combo_box.item name="Box" label="Klocek" /> - <combo_box.item name="Cylinder" label="Walec" /> - <combo_box.item name="Prism" label="GraniastosÅ‚up" /> - <combo_box.item name="Sphere" label="Kula" /> - <combo_box.item name="Torus" label="Torus" /> - <combo_box.item name="Tube" label="Rura" /> - <combo_box.item name="Ring" label="PierÅ›cieÅ„" /> - <combo_box.item name="Sculpted" label="Skulpty" /> + <combo_item name="Box"> + Klocek + </combo_item> + <combo_item name="Cylinder"> + Walec + </combo_item> + <combo_item name="Prism"> + GraniastosÅ‚up + </combo_item> + <combo_item name="Sphere"> + Kula + </combo_item> + <combo_item name="Torus"> + Torus + </combo_item> + <combo_item name="Tube"> + Rura + </combo_item> + <combo_item name="Ring"> + PierÅ›cieÅ„ + </combo_item> + <combo_item name="Sculpted"> + Skulpty + </combo_item> </combo_box> <text name="text cut"> Wykrój @@ -293,10 +327,18 @@ KsztaÅ‚t Wydrążenia </text> <combo_box name="hole"> - <combo_box.item name="Default" label="DomyÅ›lny" /> - <combo_box.item name="Circle" label="KoÅ‚o" /> - <combo_box.item name="Square" label="Kwadrat" /> - <combo_box.item name="Triangle" label="TrójkÄ…t" /> + <combo_item name="Default"> + DomyÅ›lny + </combo_item> + <combo_item name="Circle"> + KoÅ‚o + </combo_item> + <combo_item name="Square"> + Kwadrat + </combo_item> + <combo_item name="Triangle"> + TrójkÄ…t + </combo_item> </combo_box> <text name="text twist"> SkrÄ™cenie @@ -322,6 +364,9 @@ <text name="advanced_dimple"> PrzesuniÄ™cie Promienia </text> + <text name="advanced_slice"> + Przetnij poczÄ…tek i koniec + </text> <spinner label="B" name="Path Limit Begin"/> <spinner label="E" name="Path Limit End"/> <text name="text taper2"> @@ -344,14 +389,23 @@ Typ ÅšciÄ™gna </text> <combo_box name="sculpt type control"> - <combo_box.item name="None" label="żadne)" /> - <combo_box.item name="Sphere" label="Kula" /> - <combo_box.item name="Torus" label="Torus" /> - <combo_box.item name="Plane" label="PÅ‚aczyzna" /> - <combo_box.item name="Cylinder" label="Walec" /> + <combo_item name="None"> + (żadne) + </combo_item> + <combo_item name="Sphere"> + Kula + </combo_item> + <combo_item name="Torus"> + Torus + </combo_item> + <combo_item name="Plane"> + PÅ‚aczyzna + </combo_item> + <combo_item name="Cylinder"> + Walec + </combo_item> </combo_box> </panel> - <!-- Features sub-tab --> <panel label="Atrybuty" name="Features"> <text name="select_single"> Wybierz tylko jeden element by edytować jego cechÄ™. @@ -377,7 +431,6 @@ <spinner label="PromieÅ„" name="Light Radius"/> <spinner label="Spadek" name="Light Falloff"/> </panel> - <!-- Texture sub-tab --> <panel label="Tekstura" name="Texture"> <texture_picker label="Tekstura" name="texture control" tool_tip="Kliknij by wybrać obraz"/> <color_swatch label="Kolor" name="colorswatch" tool_tip="Kliknij by wybrać kolor"/> @@ -394,40 +447,88 @@ Mapowanie </text> <combo_box name="combobox texgen"> - <combo_box.item name="Default" label="DomyÅ›lne" /> - <combo_box.item name="Planar" label="Planarne" /> + <combo_item name="Default"> + DomyÅ›lne + </combo_item> + <combo_item name="Planar"> + Planarne + </combo_item> </combo_box> <text name="label shininess"> PoÅ‚ysk </text> <combo_box name="combobox shininess"> - <combo_box.item name="None" label="Å»adny" /> - <combo_box.item name="Low" label="Niski" /> - <combo_box.item name="Medium" label="Åšredni" /> - <combo_box.item name="High" label="Wysoki" /> + <combo_item name="None"> + Å»adny + </combo_item> + <combo_item name="Low"> + Niski + </combo_item> + <combo_item name="Medium"> + Åšredni + </combo_item> + <combo_item name="High"> + Wysoki + </combo_item> </combo_box> <text name="label bumpiness"> Powierzchnia </text> <combo_box name="combobox bumpiness"> - <combo_box.item name="None" label="Å»adna" /> - <combo_box.item name="Brightness" label="NajjaÅ›niejsza" /> - <combo_box.item name="Darkness" label="Najciemniejsza" /> - <combo_box.item name="woodgrain" label="Drewniano-ziarnista" /> - <combo_box.item name="bark" label="Kory Drzewa" /> - <combo_box.item name="bricks" label="CegieÅ‚" /> - <combo_box.item name="checker" label="Planszy Szachowej" /> - <combo_box.item name="concrete" label="Betonu" /> - <combo_box.item name="crustytile" label="PÅ‚ytki/Kafelki" /> - <combo_box.item name="cutstone" label="Kamienia" /> - <combo_box.item name="discs" label="Dysku CD" /> - <combo_box.item name="gravel" label="Å»wiru" /> - <combo_box.item name="petridish" label="Skamieliny" /> - <combo_box.item name="siding" label="Sidingu" /> - <combo_box.item name="stonetile" label="PÅ‚ytki Kamiennej" /> - <combo_box.item name="stucco" label="Stucco" /> - <combo_box.item name="suction" label="Suction" /> - <combo_box.item name="weave" label="Fali" /> + <combo_item name="None"> + Å»adna + </combo_item> + <combo_item name="Brightness"> + NajjaÅ›niejsza + </combo_item> + <combo_item name="Darkness"> + Najciemniejsza + </combo_item> + <combo_item name="woodgrain"> + Drewniano-ziarnista + </combo_item> + <combo_item name="bark"> + Kory Drzewa + </combo_item> + <combo_item name="bricks"> + CegieÅ‚ + </combo_item> + <combo_item name="checker"> + Planszy Szachowej + </combo_item> + <combo_item name="concrete"> + Betonu + </combo_item> + <combo_item name="crustytile"> + PÅ‚ytki/Kafelki + </combo_item> + <combo_item name="cutstone"> + Kamienia + </combo_item> + <combo_item name="discs"> + Dysku CD + </combo_item> + <combo_item name="gravel"> + Å»wiru + </combo_item> + <combo_item name="petridish"> + Skamieliny + </combo_item> + <combo_item name="siding"> + Brzegu + </combo_item> + <combo_item name="stonetile"> + PÅ‚ytki Kamiennej + </combo_item> + <combo_item name="stucco"> + Stucco + </combo_item> + <combo_item name="suction"> + Suction + </combo_item> + <combo_item name="weave"> + Fali + </combo_item> </combo_box> <text name="tex scale"> Ilość powtórzeÅ„ @@ -463,22 +564,33 @@ <button label="Dopasuj" label_selected="Dopasuj" name="button align"/> </panel> <panel label="Treść" name="Contents"> - <button label="Nowy Skrypt..." label_selected="Nowy Skrypt..." name="button new script"/> + <button label="Nowy Skrypt" label_selected="Nowy Skrypt..." name="button new script"/> + <button label="Prawa..." name="button permissions"/> </panel> </tab_container> - <!-- Land Info sub-tab --> <panel name="land info panel"> + <text name="label_parcel_info"> + Informacje o PosiadÅ‚oÅ›ci + </text> <text name="label_area_price"> Cena: L$[PRICE] za [AREA] m </text> <text name="label_area"> Obszar: [AREA] m </text> - <button label="Kup..." label_selected="Kup..." name="button buy land"/> - <button label="Anuluj..." label_selected="Anuluj..." name="button abandon land"/> + <button label="O PosiadÅ‚oÅ›ci..." label_selected="O PosiadÅ‚oÅ›ci..." name="button about land"/> + <check_box label="Pokaż WÅ‚aÅ›cicieli" name="checkbox show owners" tool_tip="Pokoloruj posiadÅ‚oÅ›ci zgodnie z przynależnoÅ›ciÄ… do wÅ‚aÅ›ciciela"/> + <button label="?" label_selected="?" name="button show owners help" left_delta="120"/> + <text name="label_parcel_modify"> + Modyfikuj PosiadÅ‚ość + </text> <button label="Podziel..." label_selected="Podziel..." name="button subdivide land"/> <button label="Złącz..." label_selected="Złącz..." name="button join land"/> - <button label="O PosiadÅ‚oÅ›ci..." label_selected="O PosiadÅ‚oÅ›ci..." name="button about land"/> + <text name="label_parcel_trans"> + Transakcje na posiadÅ‚oÅ›ci + </text> + <button label="Kup..." label_selected="Kup..." name="button buy land"/> + <button label="Anuluj..." label_selected="Anuluj..." name="button abandon land"/> </panel> <string name="status_rotate"> PrzeciÄ…gaj kolorowe pierÅ›cienie żeby obracać obiekt @@ -496,10 +608,10 @@ Kliknij i przeciÄ…gnij żeby zmienić widok </string> <string name="status_grab"> - Opcje: + PrzeciÄ…gnij by przesunąć, wybierz Ctrl by podnieść, wybierz Ctrl-Shift by obrócić </string> <string name="status_place"> - Rodzaje obiektów: + Kliknij in-world by zacząć budować </string> <string name="status_selectland"> Edytowanie Terenu: diff --git a/indra/newview/skins/default/xui/pl/floater_top_objects.xml b/indra/newview/skins/default/xui/pl/floater_top_objects.xml index dafe4202817ac3a37206810662c47f72bcef107f..44d838035d145d4f1883a0882b65905459264bd4 100755 --- a/indra/newview/skins/default/xui/pl/floater_top_objects.xml +++ b/indra/newview/skins/default/xui/pl/floater_top_objects.xml @@ -1,32 +1,33 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="top_objects" title="Åadowanie..."> <text name="title_text"> Åadowanie... </text> <scroll_list name="objects_list"> - <column label="Wynik" name="score" /> - <column label="Nazwa" name="name" /> - <column label="WÅ‚aÅ›ciciel" name="owner" /> - <column label="Miejsce" name="location" /> - <column label="Czas" name="time" /> + <column label="Wynik" name="score"/> + <column label="Nazwa" name="name"/> + <column label="WÅ‚aÅ›ciciel" name="owner"/> + <column label="Miejsce" name="location"/> + <column label="Czas" name="time"/> + <column label="Mono Time" name="mono_time"/> </scroll_list> <text name="id_text"> ID Obiektu: </text> - <button label="Pokaż Emitery" name="show_beacon_btn" /> + <button label="Pokaż Emitery" name="show_beacon_btn"/> <text name="obj_name_text"> Nazwa Obiektu: </text> - <button label="Filtr" name="filter_object_btn" /> + <button label="Filtr" name="filter_object_btn"/> <text name="owner_name_text"> Owner Name: </text> - <button label="Filter" name="filter_owner_btn" /> - <button label="Zwróć Wybrane" name="return_selected_btn" /> - <button label="Zwróć Wszystko" name="return_all_btn" /> - <button label="Deaktywuj Wybrane" name="disable_selected_btn" /> - <button label="Deaktywuj Wszystko" name="disable_all_btn" /> - <button label="OdÅ›wież" name="refresh_btn" /> + <button label="Filter" name="filter_owner_btn"/> + <button label="Zwróć Wybrane" name="return_selected_btn"/> + <button label="Zwróć Wszystko" name="return_all_btn"/> + <button label="Deaktywuj Wybrane" name="disable_selected_btn"/> + <button label="Deaktywuj Wszystko" name="disable_all_btn"/> + <button label="OdÅ›wież" name="refresh_btn"/> <string name="top_scripts_title"> Główne Skrypty </string> @@ -36,6 +37,9 @@ <string name="scripts_score_label"> Czas </string> + <string name="scripts_mono_time_label"> + Mono Time + </string> <string name="top_colliders_title"> Główne Kolizje </string> diff --git a/indra/newview/skins/default/xui/pl/floater_tos.xml b/indra/newview/skins/default/xui/pl/floater_tos.xml index 32b25481c3feb6d20f16473b86a23014fa30d7f3..d05a3c246a6f11fea7c8cf4c224c141f851911e3 100755 --- a/indra/newview/skins/default/xui/pl/floater_tos.xml +++ b/indra/newview/skins/default/xui/pl/floater_tos.xml @@ -4,8 +4,8 @@ <button label="Anuluj" label_selected="Anuluj" name="Cancel" /> <check_box label="Zgadzam siÄ™ na Warunki Serwisu (Terms of Service)" name="agree_chk" /> <text name="tos_heading"> - ProszÄ™ dokÅ‚adnie przeczytać nastÄ™pujÄ…ce Warunki Serwisu (Terms of Service). Musisz zaakceptować -umowÄ… żeby kontynuować logowanie do Second Life. + ProszÄ™ dokÅ‚adnie przeczytać nastÄ™pujÄ…ce Warunki Serwisu (Terms of Service). Musisz +zaakceptować umowÄ… żeby kontynuować logowanie do Second Life. </text> <text_editor name="tos_text"> TOS_TEXT diff --git a/indra/newview/skins/default/xui/pl/floater_windlight_options.xml b/indra/newview/skins/default/xui/pl/floater_windlight_options.xml index d2becee69c5dc9c3c84bb8e2f32c0cdf18827f01..2a9d1dff2430dfea4cac283a24360d2dd89f7ca2 100755 --- a/indra/newview/skins/default/xui/pl/floater_windlight_options.xml +++ b/indra/newview/skins/default/xui/pl/floater_windlight_options.xml @@ -6,7 +6,7 @@ <button label="Nowe" label_selected="Nowe" name="WLNewPreset" /> <button label="Zapisz" label_selected="Zapisz" name="WLSavePreset" /> <button label="UsuÅ„" label_selected="UsuÅ„" name="WLDeletePreset" /> - <button label="Edytor Cyklu Dnia" label_selected="Day Cycle Editor" + <button label="Edytor Cyklu Dnia" label_selected="Edytor Cyklu Dnia" name="WLDayCycleMenuButton" /> <tab_container name="WindLight Tabs"> <panel label="Atmosfera" name="Atmosphere"> diff --git a/indra/newview/skins/default/xui/pl/floater_world_map.xml b/indra/newview/skins/default/xui/pl/floater_world_map.xml index 59235e68f3fbd839e00d696b096207eb32ff2cc8..c18c529c9423b983ffa8fa263e2028a863780ad4 100755 --- a/indra/newview/skins/default/xui/pl/floater_world_map.xml +++ b/indra/newview/skins/default/xui/pl/floater_world_map.xml @@ -1,77 +1,59 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="worldmap" title="Mapa Åšwiata"> <tab_container name="maptab"> - <panel label="Obiekty" name="objects_mapview" /> - <panel label="Teren" name="terrain_mapview" /> + <panel label="Obiekty" name="objects_mapview"/> + <panel label="Teren" name="terrain_mapview"/> </tab_container> - <text name="land_for_sale_label"> - Na Sprzedaż - </text> - <text name="auction_label"> - Aukcja - </text> <text name="you_label"> Ty </text> + <icon left="1058" name="home"/> <text name="home_label"> Start </text> - <button label="Start" label_selected="Start" name="Go Home" - tool_tip="Teleportuj siÄ™ do miejsca startowego" /> - <text name="person_label"> - Osoba - </text> - <check_box label=" " name="people_chk" /> - <text name="infohub_label"> - Informacja - </text> - <check_box label="" name="infohub_chk" /> - <text name="telehub_label"> - Teleporter + <text name="auction_label"> + Aukcja </text> - <check_box label="" name="telehubchk" /> - <text name="land_for_sale_label2"> + <text name="land_for_sale_label"> Na Sprzedaż </text> - <check_box label="" name="land_for_sale_chk" /> + <button width="122" left="1116" label="Teleportuj do Start" label_selected="Teleportuj do Start" name="Go Home" tool_tip="Teleportuj siÄ™ do miejsca startowego"/> + <check_box label="Rezydent" name="people_chk"/> + <check_box label="Infohub" name="infohub_chk"/> + <check_box label="Telehub" name="telehubchk"/> + <check_box label="PosiadÅ‚ość na sprzedaż" name="land_for_sale_chk"/> <text name="events_label"> - Impreza + Wydarzenia: </text> - <check_box label="" name="event_chk" /> - - <check_box label="" name="event_mature_chk" /> + <check_box label="'PG'" name="event_chk"/> + <check_box label="'Mature'" name="event_mature_chk"/> + <check_box label="'Adult'" name="event_adult_chk"/> + <icon bottom="-196" name="avatar_icon"/> <combo_box label="DostÄ™pni Znajomi" name="friend combo" tool_tip="Znajomi na mapie"> <combo_box.item name="none_selected" label="DostÄ™pni Znajomi" /> </combo_box> - <combo_box label="Zapisane Miejsca" name="landmark combo" - tool_tip="Zapisane miejsca na mapie"> + <combo_box label="Zapisane Miejsca" name="landmark combo" tool_tip="Zapisane miejsca na mapie"> <combo_box.item name="none_selected" label="Zapisane Miejsca" /> </combo_box> - <line_editor label="Szukaj po nazwie regionu" name="location" - tool_tip="Wpisz nazwÄ™ regionu" /> - <button label="Szukaj" name="DoSearch" tool_tip="Wyszukiwaie regionu" /> + <line_editor label="Szukaj po nazwie regionu" name="location" tool_tip="Wpisz nazwÄ™ regionu"/> + <button label="Szukaj" name="DoSearch" tool_tip="Wyszukiwaie regionu"/> <text name="search_label"> Wyniki wyszukiwania: </text> - <scroll_list name="search_results"> - <column label="" name="icon" /> - <column label="" name="sim_name" /> + <scroll_list name="search_results" bottom_delta="-310" height="304" > + <column label="" name="icon"/> + <column label="" name="sim_name"/> </scroll_list> <text name="location_label"> PoÅ‚ożenie: </text> - <spinner name="spin x" tool_tip="współrzÄ™dne X na mapie" /> - <spinner name="spin y" tool_tip="współrzÄ™dne Y na mapie" /> - <spinner name="spin z" tool_tip="współrzÄ™dne Z na mapie" /> - <button label="Teleportuj" label_selected="Teleportuj" name="Teleport" - tool_tip="Teleportuj do wybranego miejsca" /> - <button label="Pokaż Cel" label_selected="Pokaż Cel" name="Show Destination" - tool_tip="Wycentruj miejsce celu na mapie" /> - <button label="Wyczyść" label_selected="Wyczyść" name="Clear" - tool_tip="Stop tracking" /> - <button label="Pokaż moje miejsce" label_selected="Pokaż moje miejsce" - name="Show My Location" tool_tip="Wycentruj pozcjÄ™ awatara na mapie" /> - <button label="Kopiuj SLURL do schowka" name="copy_slurl" - tool_tip="Kopie SLURL obecnego miejsca bÄ™dÄ™ mogÅ‚y zostać użyte na stronie internetowej." /> - <slider label="Skala" name="zoom slider" /> + <spinner name="spin x" tool_tip="współrzÄ™dne X na mapie"/> + <spinner name="spin y" tool_tip="współrzÄ™dne Y na mapie"/> + <spinner name="spin z" tool_tip="współrzÄ™dne Z na mapie"/> + <button label="Teleportuj" label_selected="Teleportuj" name="Teleport" tool_tip="Teleportuj do wybranego miejsca"/> + <button label="Pokaż Cel" label_selected="Pokaż Cel" name="Show Destination" tool_tip="Wycentruj miejsce celu na mapie"/> + <button label="Wyczyść" label_selected="Wyczyść" name="Clear" tool_tip="Stop tracking"/> + <button label="Pokaż moje miejsce" label_selected="Pokaż moje miejsce" name="Show My Location" tool_tip="Wycentruj pozcjÄ™ awatara na mapie"/> + <button label="Kopiuj SLURL do schowka" name="copy_slurl" tool_tip="Kopie SLURL obecnego miejsca bÄ™dÄ™ mogÅ‚y zostać użyte na stronie internetowej."/> + <slider label="Skala" name="zoom slider"/> </floater> diff --git a/indra/newview/skins/default/xui/pl/menu_inventory.xml b/indra/newview/skins/default/xui/pl/menu_inventory.xml index 383f4a4fa40a8b3eb77f47a6ef6b766e56edaaea..7f89f783248a2dc5a2f2c75de84d226f8e5c3655 100755 --- a/indra/newview/skins/default/xui/pl/menu_inventory.xml +++ b/indra/newview/skins/default/xui/pl/menu_inventory.xml @@ -1,65 +1,66 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="Popup"> - <menu_item_call label="Kupuj" name="Task Buy" /> - <menu_item_call label="Otwórz" name="Task Open" /> - <menu_item_call label="Odtwarzaj" name="Task Play" /> - <menu_item_call label="WÅ‚aÅ›ciwoÅ›ci" name="Task Properties" /> - <menu_item_call label="ZmieÅ„ NazwÄ™" name="Task Rename" /> - <menu_item_call label="UsuÅ„" name="Task Remove" /> - <menu_item_call label="Opróżnij Kosz" name="Empty Trash" /> - <menu_item_call label="Opróżnij Folder Zgubione i Odnalezione" name="Empty Lost And Found" /> - <menu_item_call label="Nowy Folder" name="New Folder" /> - <menu_item_call label="Nowy Skrypt" name="New Script" /> - <menu_item_call label="Nowa Nota" name="New Note" /> - <menu_item_call label="Nowy Gest" name="New Gesture" /> + <menu_item_call label="Kupuj" name="Task Buy"/> + <menu_item_call label="Otwórz" name="Task Open"/> + <menu_item_call label="Odtwarzaj" name="Task Play"/> + <menu_item_call label="WÅ‚aÅ›ciwoÅ›ci" name="Task Properties"/> + <menu_item_call label="ZmieÅ„ NazwÄ™" name="Task Rename"/> + <menu_item_call label="UsuÅ„" name="Task Remove"/> + <menu_item_call label="Opróżnij Kosz" name="Empty Trash"/> + <menu_item_call label="Opróżnij Folder Zgubione i Odnalezione" name="Empty Lost And Found"/> + <menu_item_call label="Nowy Folder" name="New Folder"/> + <menu_item_call label="Nowy Skrypt" name="New Script"/> + <menu_item_call label="Nowa Nota" name="New Note"/> + <menu_item_call label="Nowy Gest" name="New Gesture"/> <menu name="New Clothes"> - <menu_item_call label="Nowa Koszulka" name="New Shirt" /> - <menu_item_call label="Nowe Spodnie" name="New Pants" /> - <menu_item_call label="Nowe Buty" name="New Shoes" /> - <menu_item_call label="Nowe Skarpety" name="New Socks" /> - <menu_item_call label="Nowa Kurtka" name="New Jacket" /> - <menu_item_call label="Nowa Spódnica" name="New Skirt" /> - <menu_item_call label="Nowe RÄ™kawiczki" name="New Gloves" /> - <menu_item_call label="Nowy Podkoszulek" name="New Undershirt" /> - <menu_item_call label="Nowa Bielizna" name="New Underpants" /> + <menu_item_call label="Nowa Koszulka" name="New Shirt"/> + <menu_item_call label="Nowe Spodnie" name="New Pants"/> + <menu_item_call label="Nowe Buty" name="New Shoes"/> + <menu_item_call label="Nowe Skarpety" name="New Socks"/> + <menu_item_call label="Nowa Kurtka" name="New Jacket"/> + <menu_item_call label="Nowa Spódnica" name="New Skirt"/> + <menu_item_call label="Nowe RÄ™kawiczki" name="New Gloves"/> + <menu_item_call label="Nowy Podkoszulek" name="New Undershirt"/> + <menu_item_call label="Nowa Bielizna" name="New Underpants"/> </menu> <menu name="New Body Parts"> - <menu_item_call label="Nowy KsztaÅ‚t" name="New Shape" /> - <menu_item_call label="Nowa Skórka" name="New Skin" /> - <menu_item_call label="Nowe WÅ‚osy" name="New Hair" /> - <menu_item_call label="Nowe Oczy" name="New Eyes" /> + <menu_item_call label="Nowy KsztaÅ‚t" name="New Shape"/> + <menu_item_call label="Nowa Skórka" name="New Skin"/> + <menu_item_call label="Nowe WÅ‚osy" name="New Hair"/> + <menu_item_call label="Nowe Oczy" name="New Eyes"/> </menu> - <menu_item_call label="Teleportuj" name="Landmark Open" /> - <menu_item_call label="Otwórz" name="Animation Open" /> - <menu_item_call label="Otwórz" name="Sound Open" /> - <menu_item_call label="UsuÅ„ Obiekt" name="Purge Item" /> - <menu_item_call label="Przywróć Obiekt" name="Restore Item" /> - <menu_item_call label="Otwórz" name="Open" /> - <menu_item_call label="WÅ‚aÅ›ciwoÅ›ci" name="Properties" /> - <menu_item_call label="ZmieÅ„ NazwÄ™" name="Rename" /> - <menu_item_call label="Kopiuj Dane UUID" name="Copy Asset UUID" /> - <menu_item_call label="Kopiuj" name="Copy" /> - <menu_item_call label="Wklej" name="Paste" /> - <menu_item_call label="UsuÅ„" name="Delete" /> - <menu_item_call label="Zdejmij Obiekt" name="Take Off Items" /> - <menu_item_call label="Dodaj do Stroju" name="Add To Outfit" /> - <menu_item_call label="ZmieÅ„ Strój" name="Replace Outfit" /> - <menu_item_call label="Rozpocznij KonferencjÄ™ CzatowÄ…" name="Conference Chat Folder" /> - <menu_item_call label="Odtwarzaj" name="Sound Play" /> - <menu_item_call label="O Miejscu" name="Teleport To Landmark" /> - <menu_item_call label="Odtwarzaj w Åšwiecie" name="Animation Play" /> - <menu_item_call label="Odtwarzaj Lokalnie" name="Animation Audition" /> - <menu_item_call label="WyÅ›lij IM" name="Send Instant Message" /> - <menu_item_call label="Zaoferuj TeleportacjÄ™..." name="Offer Teleport..." /> - <menu_item_call label="Rozpocznij KonferencjÄ™ CzatowÄ…" name="Conference Chat" /> - <menu_item_call label="Aktywuj" name="Activate" /> - <menu_item_call label="Deaktywuj" name="Deactivate" /> - <menu_item_call label="Odłącz od Siebie" name="Detach From Yourself" /> - <menu_item_call label="Ubierz" name="Object Wear" /> - <menu label="Dołącz do" name="Attach To" /> - <menu label="Dołącz do Załączników HUD" name="Attach To HUD" /> - <menu_item_call label="Edytuj" name="Wearable Edit" /> - <menu_item_call label="Ubierz" name="Wearable Wear" /> - <menu_item_call label="Zdejmij" name="Take Off" /> - <menu_item_call label="--brak opcji--" name="--no options--" /> + <menu_item_call label="Teleportuj" name="Landmark Open"/> + <menu_item_call label="Otwórz" name="Animation Open"/> + <menu_item_call label="Otwórz" name="Sound Open"/> + <menu_item_call label="UsuÅ„ Obiekt" name="Purge Item"/> + <menu_item_call label="Przywróć Obiekt" name="Restore Item"/> + <menu_item_call label="Otwórz" name="Open"/> + <menu_item_call label="WÅ‚aÅ›ciwoÅ›ci" name="Properties"/> + <menu_item_call label="ZmieÅ„ NazwÄ™" name="Rename"/> + <menu_item_call label="Kopiuj Dane UUID" name="Copy Asset UUID"/> + <menu_item_call label="Kopiuj" name="Copy"/> + <menu_item_call label="Wklej" name="Paste"/> + <menu_item_call label="UsuÅ„" name="Delete"/> + <menu_item_call label="Zdejmij Obiekt" name="Take Off Items"/> + <menu_item_call label="Dodaj do Stroju" name="Add To Outfit"/> + <menu_item_call label="ZmieÅ„ Strój" name="Replace Outfit"/> + <menu_item_call label="Rozpocznij KonferencjÄ™ CzatowÄ…" name="Conference Chat Folder"/> + <menu_item_call label="Odtwarzaj" name="Sound Play"/> + <menu_item_call label="O Miejscu" name="Teleport To Landmark"/> + <menu_item_call label="Odtwarzaj w Åšwiecie" name="Animation Play"/> + <menu_item_call label="Odtwarzaj Lokalnie" name="Animation Audition"/> + <menu_item_call label="WyÅ›lij IM" name="Send Instant Message"/> + <menu_item_call label="Zaoferuj TeleportacjÄ™..." name="Offer Teleport..."/> + <menu_item_call label="Rozpocznij KonferencjÄ™ CzatowÄ…" name="Conference Chat"/> + <menu_item_call label="Aktywuj" name="Activate"/> + <menu_item_call label="Deaktywuj" name="Deactivate"/> + <menu_item_call label="Odłącz od Siebie" name="Detach From Yourself"/> + <menu_item_call label="Przywróć ostatniÄ… pozycjÄ™" name="Restore to Last Position"/> + <menu_item_call label="Ubierz" name="Object Wear"/> + <menu label="Dołącz do" name="Attach To"/> + <menu label="Dołącz do Załączników HUD" name="Attach To HUD"/> + <menu_item_call label="Edytuj" name="Wearable Edit"/> + <menu_item_call label="Ubierz" name="Wearable Wear"/> + <menu_item_call label="Zdejmij" name="Take Off"/> + <menu_item_call label="--brak opcji--" name="--no options--"/> </menu> diff --git a/indra/newview/skins/default/xui/pl/menu_mini_map.xml b/indra/newview/skins/default/xui/pl/menu_mini_map.xml new file mode 100644 index 0000000000000000000000000000000000000000..da2eba07a0b8af8e56a635bf0ed10b9babdeff62 --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_mini_map.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="popup"> + <menu_item_call label="Zoom Blisko" name="Zoom Close"/> + <menu_item_call label="Zoom Åšrednio" name="Zoom Medium"/> + <menu_item_call label="Zoom Daleko" name="Zoom Far"/> + <menu_item_call label="Zatrzymaj" name="Stop Tracking"/> + <menu_item_call label="Profil..." name="Profile"/> +</menu> diff --git a/indra/newview/skins/default/xui/pl/menu_viewer.xml b/indra/newview/skins/default/xui/pl/menu_viewer.xml index 51522b1ba96b4de4757ebbec1dab133120f3d445..8a86086e54f25f4ba52de421cb16935f192005b7 100755 --- a/indra/newview/skins/default/xui/pl/menu_viewer.xml +++ b/indra/newview/skins/default/xui/pl/menu_viewer.xml @@ -1,203 +1,205 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu_bar name="Main Menu"> - <menu label="Plik" name="File"> - <tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~" /> - <menu label="ZaÅ‚aduj" name="upload"> - <menu_item_call label="Obraz (L$[COST])..." name="Upload Image" /> - <menu_item_call label="DźwiÄ™k (L$[COST])..." name="Upload Sound" /> - <menu_item_call label="AnimacjÄ™ (L$[COST])..." name="Upload Animation" /> - <menu_item_call label="Zbiór Plików (L$[COST] za plik)..." name="Bulk Upload" /> - </menu> - <menu_item_separator label="-----------" name="separator" /> - <menu_item_call label="Zamknij Bieżące Okno" name="Close Window" /> - <menu_item_call label="Zamknij Wszystkie Okna" name="Close All Windows" /> - <menu_item_separator label="-----------" name="separator2" /> - <menu_item_call label="Zapisz Obraz Jako..." name="Save Texture As..." /> - <menu_item_separator label="-----------" name="separator3" /> - <menu_item_call label="Zrób ZdjÄ™cie" name="Take Snapshot" /> - <menu_item_call label="Zapisz ZdjÄ™cie na Dysk" name="Snapshot to Disk" /> - <menu_item_separator label="-----------" name="separator4" /> - <menu_item_call label="Wyłącz Program" name="Quit" /> - </menu> - <menu label="Edycja" name="Edit"> - <menu_item_call label="Cofnij" name="Undo" /> - <menu_item_call label="Powtórz" name="Redo" /> - <menu_item_separator label="-----------" name="separator" /> - <menu_item_call label="Wytnij" name="Cut" /> - <menu_item_call label="Kopiuj" name="Copy" /> - <menu_item_call label="Wklej" name="Paste" /> - <menu_item_call label="UsuÅ„" name="Delete" /> - <menu_item_separator label="-----------" name="separator2" /> - <menu_item_call label="Szukaj..." name="Search..." /> - <menu_item_separator label="-----------" name="separator3" /> - <menu_item_call label="Zaznacz Wszystko" name="Select All" /> - <menu_item_call label="Cofnij Zaznaczenie" name="Deselect" /> - <menu_item_separator label="-----------" name="separator4" /> - <menu_item_call label="Duplikat" name="Duplicate" /> - <menu_item_separator label="-----------" name="separator5" /> - <menu label="Dołącz Obiekt" name="Attach Object" /> - <menu label="Odłącz Obiekt" name="Detach Object" /> - <menu label="Zdejmij Ubranie" name="Take Off Clothing"> - <menu_item_call label="KoszulÄ™" name="Shirt" /> - <menu_item_call label="Spodnie" name="Pants" /> - <menu_item_call label="Buty" name="Shoes" /> - <menu_item_call label="Skarpety" name="Socks" /> - <menu_item_call label="KurtkÄ™" name="Jacket" /> - <menu_item_call label="RÄ™kawiczki" name="Gloves" /> - <menu_item_call label="Podkoszulek" name="Menu Undershirt" /> - <menu_item_call label="BieliznÄ™" name="Menu Underpants" /> - <menu_item_call label="SpódnicÄ™" name="Skirt" /> - <menu_item_call label="CaÅ‚e Ubranie" name="All Clothes" /> - </menu> - <menu_item_separator label="-----------" name="separator6" /> - <menu_item_call label="Gesty..." name="Gestures..." /> - <menu_item_call label="Profil..." name="Profile..." /> - <menu_item_call label="WyglÄ…d..." name="Appearance..." /> - <menu_item_separator label="-----------" name="separator7" /> - <menu_item_check label="Znajomi..." name="Friends..." /> - <menu_item_call label="Grupy..." name="Groups..." /> - <menu_item_separator label="-----------" name="separator8" /> - <menu_item_call label="Ustawienia..." name="Preferences..." /> - </menu> - <menu label="Widok" name="View"> - <tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~" /> - <menu_item_call label="Widok Panoramiczny" name="Mouselook" /> - <menu_item_check label="Budowanie" name="Build" /> - <menu_item_check label="Wolna Kamera" name="Joystick Flycam" /> - <menu_item_call label="Normalny Widok" name="Reset View" /> - <menu_item_call label="Historia Rozmów" name="Look at Last Chatter" /> - <menu_item_separator label="-----------" name="separator" /> - <menu_item_check label="NarzÄ™dzia" name="Toolbar" /> - <menu_item_check label="Rozmowa Lokalna" name="Chat History" /> - <menu_item_check label="Rozmowa Prywatna (IM)" name="Instant Message" /> - <menu_item_call label="Moja Szafa" name="Inventory" /> - <menu_item_check label="RozmawiajÄ…ce Osoby" name="Active Speakers" /> - <menu_item_check label="Wyciszone Osoby" name="Mute List" /> - <menu_item_separator label="-----------" name="separator2" /> - <menu_item_check label="Ustawienia Kamery" name="Camera Controls" /> - <menu_item_check label="Ustawienia Ruchu" name="Movement Controls" /> - <menu_item_check label="Mapa Åšwiata" name="World Map" /> - <menu_item_check label="Mini-Mapa" name="Mini-Map" /> - <menu_item_separator label="-----------" name="separator3" /> - <menu_item_check label="Statystyki" name="Statistics Bar" /> - <menu_item_check label="Granice PosiadÅ‚oÅ›ci" name="Property Lines" /> - <menu_item_check label="WÅ‚aÅ›ciciele PosiadÅ‚oÅ›ci" name="Land Owners" /> - <menu_item_separator label="-----------" name="separator4" /> - <menu label="Podpowiedzi" name="Hover Tips"> - <menu_item_check label="Pokaż Podpowiedzi" name="Show Tips" /> - <menu_item_separator label="-----------" name="separator" /> - <menu_item_check label="PosiadÅ‚ość: wskazówki" name="Land Tips" /> - <menu_item_check label="Obiekty: wskazówki" name="Tips On All Objects" /> - </menu> - <menu_item_check label="Pokaż Przezroczyste Obiekty" name="Highlight Transparent" /> - <menu_item_check label="Emitery" name="beacons" /> - <menu_item_check label="Ukryj CzÄ…steczki" name="Hide Particles" /> - <menu_item_check label="Pokaż Załączniki HUD" name="Show HUD Attachments" /> - <menu_item_separator label="-----------" name="separator5" /> - <menu_item_call label="Zbliżenie" name="Zoom In" /> - <menu_item_call label="DomyÅ›lny Tryb Widoku" name="Zoom Default" /> - <menu_item_call label="Oddalenie" name="Zoom Out" /> - <menu_item_separator label="-----------" name="separator6" /> - <menu_item_call label="Tryb Widoku PeÅ‚noekranowego" name="Toggle Fullscreen" /> - <menu_item_call label="Ustaw DomyÅ›lny Rozmiar Interfejsu Użytkownika" name="Set UI Size to Default" /> - </menu> - <menu label="Åšwiat" name="World"> - <menu_item_call label="Rozmowa/Czat" name="Chat" /> - <menu_item_check label="Biegnij" name="Always Run" /> - <menu_item_check label="Leć" name="Fly" /> - <menu_item_separator label="-----------" name="separator" /> - <menu_item_call label="ZapamiÄ™taj Miejsce (LM)" name="Create Landmark Here" /> - <menu_item_call label="Ustaw Miejsce Startu" name="Set Home to Here" /> - <menu_item_separator label="-----------" name="separator2" /> - <menu_item_call label="Teleportuj do Miejsca Startu" name="Teleport Home" /> - <menu_item_separator label="-----------" name="separator3" /> - <menu_item_call label="Åšpij" name="Set Away" /> - <menu_item_call label="Pracuj" name="Set Busy" /> - <menu_item_call label="Zatrzymaj Wszystkie Animacje" name="Stop All Animations" /> - <menu_item_call label="Zwolnij Klawisze" name="Release Keys" /> - <menu_item_separator label="-----------" name="separator4" /> - <menu_item_call label="Historia Konta..." name="Account History..." /> - <menu_item_call label="ZarzÄ…dzaj Kontem..." name="Manage My Account..." /> - <menu_item_call label="Kup L$..." name="Buy and Sell L$..." /> - <menu_item_separator label="-----------" name="separator5" /> - <menu_item_call label="Moje PosiadÅ‚oÅ›ci..." name="My Land..." /> - <menu_item_call label="O PosiadÅ‚oÅ›ci..." name="About Land..." /> - <menu_item_call label="Kup PosiadÅ‚ość..." name="Buy Land..." /> - <menu_item_call label="Region/MajÄ…tek..." name="Region/Estate..." /> - <menu_item_separator label="-----------" name="separator6" /> - <menu label="Ustawienia Åšrodowiska" name="Environment Settings"> - <menu_item_call label="Wschód SÅ‚oÅ„ca" name="Sunrise" /> - <menu_item_call label="PoÅ‚udnie" name="Noon" /> - <menu_item_call label="Zachód SÅ‚oÅ„ca" name="Sunset" /> - <menu_item_call label="Północ" name="Midnight" /> - <menu_item_call label="Przywróć DomyÅ›lne Ustawienia Regionu" name="Revert to Region Default" /> - <menu_item_separator label="-----------" name="separator" /> - <menu_item_call label="Edytor Åšrodowiska" name="Environment Editor" /> - </menu> - </menu> - <menu label="NarzÄ™dzia" name="Tools"> - <menu label="Wybierz NarzÄ™dzie " name="Select Tool"> - <menu_item_call label="Przybliżenie" name="Focus" /> - <menu_item_call label="PrzesuÅ„" name="Move" /> - <menu_item_call label="Edytuj" name="Edit" /> - <menu_item_call label="Stwórz" name="Create" /> - <menu_item_call label="PosiadÅ‚ość" name="Land" /> - </menu> - <menu_item_separator label="-----------" name="separator" /> - <menu_item_check label="Wybierz Tylko Moje Obiekty" name="Select Only My Objects" /> - <menu_item_check label="Wybierz Tylko Obiekty Przesuwalne" name="Select Only Movable Objects" /> - <menu_item_check label="Wybierz Przez Zaznaczenie" name="Select By Surrounding" /> - <menu_item_check label="Pokaż UkrytÄ… SelekcjÄ™" name="Show Hidden Selection" /> - <menu_item_check label="Pokaż ZasiÄ™g ÅšwiatÅ‚a dla Selekcji" name="Show Light Radius for Selection" /> - <menu_item_check label="Pokaż ŹródÅ‚o Selekcji" name="Show Selection Beam" /> - <menu_item_separator label="-----------" name="separator2" /> - <menu_item_check label="PrzeciÄ…gnij Obiekt" name="Snap to Grid" /> - <menu_item_call label="PrzeciÄ…gnij Obiekt Do Siatki" name="Snap Object XY to Grid" /> - <menu_item_call label="Zastosuj Zaznaczenie Dla Siatki" name="Use Selection for Grid" /> - <menu_item_call label="Opcje Siatki..." name="Grid Options..." /> - <menu_item_separator label="-----------" name="separator3" /> - <menu_item_check label="Edytuj Zgrupowane Obiekty" name="Edit Linked Parts" /> - <menu_item_call label="Grupuj" name="Link" /> - <menu_item_call label="Rozgrupuj" name="Unlink" /> - <menu_item_separator label="-----------" name="separator4" /> - <menu_item_call label="OglÄ…daj SelekcjÄ™" name="Focus on Selection" /> - <menu_item_call label="Przybliż do Selekcji" name="Zoom to Selection" /> - <menu_item_call label="Kup Obiekt" name="Menu Object Take" /> - <menu_item_call label="Weź KopiÄ™" name="Take Copy" /> - <menu_item_call label="Zapisz Obiekt w Szafie" name="Save Object Back to My Inventory" /> - <menu_item_call label="Zapisz Obiekt z Poprawkami" name="Save Object Back to Object Contents" /> - <menu_item_separator label="-----------" name="separator6" /> - <menu_item_call label="Pokaż Okno Ostrzeżenia/Błędu Skryptu" name="Show Script Warning/Error Window" /> - <menu label="Zrekompiluj Skrypt w Selekcji" name="Recompile Scripts in Selection"> - <menu_item_call label="Mono" name="Mono" /> - <menu_item_call label="LSL" name="LSL" /> - </menu> - <menu_item_call label="Zresetuj Skrypt w Selekcji" name="Reset Scripts in Selection" /> - <menu_item_call label="Uruchom DziaÅ‚anie Skryptów w Selekcji" name="Set Scripts to Running in Selection" /> - <menu_item_call label="Wstrzymaj DziaÅ‚anie Skryptów w Selekcji" name="Set Scripts to Not Running in Selection" /> - </menu> - <menu label="Pomoc" name="Help"> - <menu_item_call label="Second Life: Pomoc" name="Second Life Help" /> - <menu_item_call label="Samouczek" name="Tutorial" /> - <menu_item_separator label="-----------" name="separator" /> - <menu_item_call label="Oficjalny Blog Second Life..." name="Official Linden Blog..." /> - <menu_item_separator label="-----------" name="separator2" /> - <menu_item_call label="Portal dla Skrypterów..." name="Scripting Portal..." /> - <menu_item_separator label="-----------" name="separator3" /> - <menu_item_call label="Złóż Raport o Nadużyciu..." name="Report Abuse..." /> - <menu_item_call label="Zderzenia, PopchniÄ™cia, Uderzenia..." name="Bumps, Pushes &amp; Hits..." /> - <menu_item_call label="Pomiar Lagów" name="Lag Meter" /> - <menu_item_separator label="-----------" name="separator7" /> - <menu label="ZgÅ‚oÅ› Błędy Klienta" name="Bug Reporting"> - <menu_item_call label="Publiczna Baza Błędów (JIRA)..." name="Public Issue Tracker..." /> - <menu_item_call label="Co to jest JIRA?..." name="Publc Issue Tracker Help..." /> - <menu_item_separator label="-----------" name="separator7" /> - <menu_item_call label="Instrukcje: Jak ZgÅ‚osić Błąd?..." name="Bug Reporing 101..." /> - <menu_item_call label="Zabezpieczenia..." name="Security Issues..." /> - <menu_item_call label="Pytania i Odpowiedzi: Wikipedia..." name="QA Wiki..." /> - <menu_item_separator label="-----------" name="separator9" /> - <menu_item_call label="WyÅ›lij Raport Błędu..." name="Report Bug..." /> - </menu> - <menu_item_call label="O Second Life..." name="About Second Life..." /> - </menu> + <menu label="Plik" name="File"> + <tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/> + <menu label="ZaÅ‚aduj" name="upload"> + <menu_item_call label="Obraz (L$[COST])..." name="Upload Image"/> + <menu_item_call label="DźwiÄ™k (L$[COST])..." name="Upload Sound"/> + <menu_item_call label="Animacja (L$[COST])..." name="Upload Animation"/> + <menu_item_call label="Zbiór plików (L$[COST] za plik)..." name="Bulk Upload"/> + <menu_item_separator label="-----------" name="separator"/> + <menu_item_call label="Wybierz ustawienia domyÅ›lne..." name="perm prefs"/> + </menu> + <menu_item_separator label="-----------" name="separator"/> + <menu_item_call label="Zamknij Bieżące Okno" name="Close Window"/> + <menu_item_call label="Zamknij Wszystkie Okna" name="Close All Windows"/> + <menu_item_separator label="-----------" name="separator2"/> + <menu_item_call label="Zapisz Obraz Jako..." name="Save Texture As..."/> + <menu_item_separator label="-----------" name="separator3"/> + <menu_item_call label="Zrób ZdjÄ™cie" name="Take Snapshot"/> + <menu_item_call label="Zapisz ZdjÄ™cie na Dysk" name="Snapshot to Disk"/> + <menu_item_separator label="-----------" name="separator4"/> + <menu_item_call label="Wyłącz Program" name="Quit"/> + </menu> + <menu label="Edycja" name="Edit"> + <menu_item_call label="Cofnij" name="Undo"/> + <menu_item_call label="Powtórz" name="Redo"/> + <menu_item_separator label="-----------" name="separator"/> + <menu_item_call label="Wytnij" name="Cut"/> + <menu_item_call label="Kopiuj" name="Copy"/> + <menu_item_call label="Wklej" name="Paste"/> + <menu_item_call label="UsuÅ„" name="Delete"/> + <menu_item_separator label="-----------" name="separator2"/> + <menu_item_call label="Szukaj..." name="Search..."/> + <menu_item_separator label="-----------" name="separator3"/> + <menu_item_call label="Zaznacz Wszystko" name="Select All"/> + <menu_item_call label="Cofnij Zaznaczenie" name="Deselect"/> + <menu_item_separator label="-----------" name="separator4"/> + <menu_item_call label="Duplikat" name="Duplicate"/> + <menu_item_separator label="-----------" name="separator5"/> + <menu label="Dołącz Obiekt" name="Attach Object"/> + <menu label="Odłącz Obiekt" name="Detach Object"/> + <menu label="Zdejmij Ubranie" name="Take Off Clothing"> + <menu_item_call label="KoszulÄ™" name="Shirt"/> + <menu_item_call label="Spodnie" name="Pants"/> + <menu_item_call label="Buty" name="Shoes"/> + <menu_item_call label="Skarpety" name="Socks"/> + <menu_item_call label="KurtkÄ™" name="Jacket"/> + <menu_item_call label="RÄ™kawiczki" name="Gloves"/> + <menu_item_call label="Podkoszulek" name="Menu Undershirt"/> + <menu_item_call label="BieliznÄ™" name="Menu Underpants"/> + <menu_item_call label="SpódnicÄ™" name="Skirt"/> + <menu_item_call label="CaÅ‚e Ubranie" name="All Clothes"/> + </menu> + <menu_item_separator label="-----------" name="separator6"/> + <menu_item_call label="Gesty..." name="Gestures..."/> + <menu_item_call label="Profil..." name="Profile..."/> + <menu_item_call label="WyglÄ…d..." name="Appearance..."/> + <menu_item_separator label="-----------" name="separator7"/> + <menu_item_check label="Znajomi..." name="Friends..."/> + <menu_item_call label="Grupy..." name="Groups..."/> + <menu_item_separator label="-----------" name="separator8"/> + <menu_item_call label="Ustawienia..." name="Preferences..."/> + </menu> + <menu label="Widok" name="View"> + <tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/> + <menu_item_call label="Widok Panoramiczny" name="Mouselook"/> + <menu_item_check label="Budowanie" name="Build"/> + <menu_item_check label="Wolna Kamera" name="Joystick Flycam"/> + <menu_item_call label="Normalny Widok" name="Reset View"/> + <menu_item_call label="Historia Rozmów" name="Look at Last Chatter"/> + <menu_item_separator label="-----------" name="separator"/> + <menu_item_check label="NarzÄ™dzia" name="Toolbar"/> + <menu_item_check label="Rozmowa Lokalna" name="Chat History"/> + <menu_item_check label="Rozmowa Prywatna (IM)" name="Instant Message"/> + <menu_item_check label="Moja Szafa" name="Inventory"/> + <menu_item_check label="RozmawiajÄ…ce Osoby" name="Active Speakers"/> + <menu_item_check label="Wyciszone Osoby" name="Mute List"/> + <menu_item_separator label="-----------" name="separator2"/> + <menu_item_check label="Ustawienia Kamery" name="Camera Controls"/> + <menu_item_check label="Ustawienia Ruchu" name="Movement Controls"/> + <menu_item_check label="Mapa Åšwiata" name="World Map"/> + <menu_item_check label="Mini-Mapa" name="Mini-Map"/> + <menu_item_separator label="-----------" name="separator3"/> + <menu_item_check label="Statystyki" name="Statistics Bar"/> + <menu_item_check label="Granice PosiadÅ‚oÅ›ci" name="Property Lines"/> + <menu_item_check label="Linie banu" name="Banlines"/> + <menu_item_check label="WÅ‚aÅ›ciciele PosiadÅ‚oÅ›ci" name="Land Owners"/> + <menu_item_separator label="-----------" name="separator4"/> + <menu label="Podpowiedzi" name="Hover Tips"> + <menu_item_check label="Pokaż Podpowiedzi" name="Show Tips"/> + <menu_item_separator label="-----------" name="separator"/> + <menu_item_check label="PosiadÅ‚ość: wskazówki" name="Land Tips"/> + <menu_item_check label="Obiekty: wskazówki" name="Tips On All Objects"/> + </menu> + <menu_item_check label="Pokaż Przezroczyste Obiekty" name="Highlight Transparent"/> + <menu_item_check label="Emitery" name="beacons"/> + <menu_item_check label="Ukryj CzÄ…steczki" name="Hide Particles"/> + <menu_item_check label="Pokaż Załączniki HUD" name="Show HUD Attachments"/> + <menu_item_separator label="-----------" name="separator5"/> + <menu_item_call label="Zbliżenie" name="Zoom In"/> + <menu_item_call label="DomyÅ›lny Tryb Widoku" name="Zoom Default"/> + <menu_item_call label="Oddalenie" name="Zoom Out"/> + <menu_item_separator label="-----------" name="separator6"/> + <menu_item_call label="Tryb Widoku PeÅ‚noekranowego" name="Toggle Fullscreen"/> + <menu_item_call label="Ustaw DomyÅ›lny Rozmiar Interfejsu Użytkownika" name="Set UI Size to Default"/> + </menu> + <menu label="Åšwiat" name="World"> + <menu_item_call label="Rozmowa/Czat" name="Chat"/> + <menu_item_check label="Biegnij" name="Always Run"/> + <menu_item_check label="Leć" name="Fly"/> + <menu_item_separator label="-----------" name="separator"/> + <menu_item_call label="ZapamiÄ™taj Miejsce (LM)" name="Create Landmark Here"/> + <menu_item_call label="Ustaw Miejsce Startu" name="Set Home to Here"/> + <menu_item_separator label="-----------" name="separator2"/> + <menu_item_call label="Teleportuj do Miejsca Startu" name="Teleport Home"/> + <menu_item_separator label="-----------" name="separator3"/> + <menu_item_call label="Åšpij" name="Set Away"/> + <menu_item_call label="Pracuj" name="Set Busy"/> + <menu_item_call label="Zatrzymaj Wszystkie Animacje" name="Stop Animating My Avatar"/> + <menu_item_call label="Zwolnij Klawisze" name="Release Keys"/> + <menu_item_separator label="-----------" name="separator4"/> + <menu_item_call label="Historia Konta..." name="Account History..."/> + <menu_item_call label="ZarzÄ…dzaj Kontem..." name="Manage My Account..."/> + <menu_item_call label="Kup L$..." name="Buy and Sell L$..."/> + <menu_item_separator label="-----------" name="separator5"/> + <menu_item_call label="Moje PosiadÅ‚oÅ›ci..." name="My Land..."/> + <menu_item_call label="O PosiadÅ‚oÅ›ci..." name="About Land..."/> + <menu_item_call label="Kup PosiadÅ‚ość..." name="Buy Land..."/> + <menu_item_call label="Region/MajÄ…tek..." name="Region/Estate..."/> + <menu_item_separator label="-----------" name="separator6"/> + <menu label="Ustawienia Åšrodowiska" name="Environment Settings"> + <menu_item_call label="Wschód SÅ‚oÅ„ca" name="Sunrise"/> + <menu_item_call label="PoÅ‚udnie" name="Noon"/> + <menu_item_call label="Zachód SÅ‚oÅ„ca" name="Sunset"/> + <menu_item_call label="Północ" name="Midnight"/> + <menu_item_call label="Przywróć DomyÅ›lne Ustawienia Regionu" name="Revert to Region Default"/> + <menu_item_separator label="-----------" name="separator"/> + <menu_item_call label="Edytor Åšrodowiska" name="Environment Editor"/> + </menu> + </menu> + <menu label="NarzÄ™dzia" name="Tools"> + <menu label="Wybierz NarzÄ™dzie " name="Select Tool"> + <menu_item_call label="Przybliżenie" name="Focus"/> + <menu_item_call label="PrzesuÅ„" name="Move"/> + <menu_item_call label="Edytuj" name="Edit"/> + <menu_item_call label="Stwórz" name="Create"/> + <menu_item_call label="PosiadÅ‚ość" name="Land"/> + </menu> + <menu_item_separator label="-----------" name="separator"/> + <menu_item_check label="Wybierz Tylko Moje Obiekty" name="Select Only My Objects"/> + <menu_item_check label="Wybierz Tylko Obiekty Przesuwalne" name="Select Only Movable Objects"/> + <menu_item_check label="Wybierz Przez Zaznaczenie" name="Select By Surrounding"/> + <menu_item_check label="Pokaż UkrytÄ… SelekcjÄ™" name="Show Hidden Selection"/> + <menu_item_check label="Pokaż ZasiÄ™g ÅšwiatÅ‚a dla Selekcji" name="Show Light Radius for Selection"/> + <menu_item_check label="Pokaż ŹródÅ‚o Selekcji" name="Show Selection Beam"/> + <menu_item_separator label="-----------" name="separator2"/> + <menu_item_check label="PrzeciÄ…gnij Obiekt" name="Snap to Grid"/> + <menu_item_call label="PrzeciÄ…gnij Obiekt Do Siatki" name="Snap Object XY to Grid"/> + <menu_item_call label="Zastosuj Zaznaczenie Dla Siatki" name="Use Selection for Grid"/> + <menu_item_call label="Opcje Siatki..." name="Grid Options..."/> + <menu_item_separator label="-----------" name="separator3"/> + <menu_item_check label="Edytuj Zgrupowane Obiekty" name="Edit Linked Parts"/> + <menu_item_call label="Grupuj" name="Link"/> + <menu_item_call label="Rozgrupuj" name="Unlink"/> + <menu_item_separator label="-----------" name="separator4"/> + <menu_item_call label="OglÄ…daj SelekcjÄ™" name="Focus on Selection"/> + <menu_item_call label="Przybliż do Selekcji" name="Zoom to Selection"/> + <menu_item_call label="Kup Obiekt" name="Menu Object Take"/> + <menu_item_call label="Weź KopiÄ™" name="Take Copy"/> + <menu_item_call label="Zapisz Obiekt z Poprawkami" name="Save Object Back to Object Contents"/> + <menu_item_separator label="-----------" name="separator6"/> + <menu_item_call label="Pokaż Okno Ostrzeżenia/Błędu Skryptu" name="Show Script Warning/Error Window"/> + <menu label="Zrekompiluj Skrypt w Selekcji" name="Recompile Scripts in Selection"> + <menu_item_call label="Mono" name="Mono"/> + <menu_item_call label="LSL" name="LSL"/> + </menu> + <menu_item_call label="Zresetuj Skrypt w Selekcji" name="Reset Scripts in Selection"/> + <menu_item_call label="Uruchom DziaÅ‚anie Skryptów w Selekcji" name="Set Scripts to Running in Selection"/> + <menu_item_call label="Wstrzymaj DziaÅ‚anie Skryptów w Selekcji" name="Set Scripts to Not Running in Selection"/> + </menu> + <menu label="Pomoc" name="Help"> + <menu_item_call label="Second Life: Pomoc" name="Second Life Help"/> + <menu_item_call label="Samouczek" name="Tutorial"/> + <menu_item_separator label="-----------" name="separator"/> + <menu_item_call label="Oficjalny Blog Second Life..." name="Official Linden Blog..."/> + <menu_item_separator label="-----------" name="separator2"/> + <menu_item_call label="Portal dla Skrypterów..." name="Scripting Portal..."/> + <menu_item_separator label="-----------" name="separator3"/> + <menu_item_call label="Złóż Raport o Nadużyciu..." name="Report Abuse..."/> + <menu_item_call label="Zderzenia, PopchniÄ™cia, Uderzenia..." name="Bumps, Pushes &amp; Hits..."/> + <menu_item_call label="Pomiar Lagów" name="Lag Meter"/> + <menu_item_separator label="-----------" name="separator7"/> + <menu label="ZgÅ‚oÅ› Błędy Klienta" name="Bug Reporting"> + <menu_item_call label="Publiczna Baza Błędów (JIRA)..." name="Public Issue Tracker..."/> + <menu_item_call label="Co to jest JIRA?..." name="Publc Issue Tracker Help..."/> + <menu_item_separator label="-----------" name="separator7"/> + <menu_item_call label="Instrukcje: Jak ZgÅ‚osić Błąd?..." name="Bug Reporing 101..."/> + <menu_item_call label="Zabezpieczenia..." name="Security Issues..."/> + <menu_item_call label="Pytania i Odpowiedzi: Wikipedia..." name="QA Wiki..."/> + <menu_item_separator label="-----------" name="separator9"/> + <menu_item_call label="WyÅ›lij Raport Błędu..." name="Report Bug..."/> + </menu> + <menu_item_call label="O Second Life..." name="About Second Life..."/> + </menu> </menu_bar> diff --git a/indra/newview/skins/default/xui/pl/notifications.xml b/indra/newview/skins/default/xui/pl/notifications.xml index d80662eeba62f1364aa28e09e9272db1daf648a0..e2b26bf0d1bffbb5c1b53b1c2ca10c9680c4b039 100644 --- a/indra/newview/skins/default/xui/pl/notifications.xml +++ b/indra/newview/skins/default/xui/pl/notifications.xml @@ -1,5718 +1,3037 @@ -<?xml version="1.0" ?><notifications> - - <global name="skipnexttime"> - - Nie pokazuj tej opcji nastÄ™pnym razem - </global> - - <global name="alwayschoose"> - - Pozwalaj na wybór tej opcji - </global> - - <template name="okbutton"> - <form> - <button - name="OK" - text="$yestext"/> - </form> - </template> - - <template name="okignore"> - <form> - <button - name="OK" - text="$yestext"/> - <ignore text="$ignoretext"/> - </form> - </template> - - <template name="okcancelbuttons"> - <form> - <button - name="OK" - text="$yestext"/> - <button - name="Cancel" - text="$notext"/> - </form> - </template> - - <template name="okcancelignore"> - <form> - <button - name="OK" - text="$yestext"/> - <button - name="Cancel" - text="$notext"/> - <ignore text="$ignoretext"/> - </form> - </template> - - <template name="okhelpbuttons"> - <form> - <button - name="OK" - text="$yestext"/> - <button - name="Help" - text="$helptext"/> - </form> - </template> - - <template name="yesnocancelbuttons"> - <form> - <button - name="Yes" - text="$yestext"/> - <button - name="No" - text="$notext"/> - <button - name="Cancel" - text="$canceltext"/> - </form> - </template> - - <notification - functor="GenericAcknowledge" - - name="MissingAlert" - > -'[_NAME]' brakuje w pliku notifications.xml. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="FloaterNotFound" - > -Błąd: nie można znaleźć nastÄ™pujÄ…cych elementów: - -[CONTROLS] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="TutorialNotFound" - > -Brak samouczka na ten temat - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="GenericAlert" - > -[MESSAGE] - </notification> - - <notification - - name="GenericAlertYesCancel" - > -[MESSAGE] - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="Tak"/> - </notification> - - <notification - - name="WearableSave" - > -Zapisać zmiany dotyczÄ…ce ubrania/części ciaÅ‚a? - <usetemplate - canceltext="Anuluj" - name="yesnocancelbuttons" - notext="Nie Zapisuj" - yestext="Zapisz"/> - </notification> - - <notification - - name="CompileQueueSaveText" - > -W trakcie Å‚adwania tekstu dla skryptu pojawiÅ‚ siÄ™ problem z nastÄ™pujÄ…cego powodu: [REASON]. Spróbuj ponownie za kilka minut. - </notification> - - <notification - - name="CompileQueueSaveBytecode" - > -W trakcie Å‚adwania skompilowanego skryptu pojawiÅ‚ siÄ™ problem z nastÄ™pujÄ…cego powodu: [REASON]. Spróbuj ponownie za kilka minut. - </notification> - - <notification - - name="WriteAnimationFail" - > -Problem w zapisywaniu danych animacji. Spróbuj ponownie za kilka minut. - </notification> - - <notification - - name="UploadAuctionSnapshotFail" - > -W trakcie Å‚adwania obrazu aukcji pojawiÅ‚ siÄ™ problem z nastÄ™pujÄ…cego powodu: [REASON]. - </notification> - - <notification - - name="UnableToViewContentsMoreThanOne" - > -Nie można przeglÄ…dać zawartoÅ›ci wiÄ™cej niż jednego obiektu naraz. -Wybierz pojedynczy obiekt i spróbuj jeszcze raz. - </notification> - - <notification - - name="SaveClothingBodyChanges" - > -Zapisać wszystkie zmiany dotyczÄ…ce ubrania/czeÅ›ci ciaÅ‚a? - <usetemplate - canceltext="Anuluj" - name="yesnocancelbuttons" - notext="Nie Zapisuj" - yestext="Zapisz"/> - </notification> - - <notification - - name="GrantModifyRights" - > -Udzielenie praw modyfikacji innemu Rezydentowi umożliwia modyfikacjÄ™, usuwanie lub wziÄ™cie JAKIEGOKOLWIEK z Twoich obiektów. -Używaj tej opcji z rozwagÄ…! -Czy chcesz dać prawa modyfikacji osobie [FIRST_NAME] [LAST_NAME]? - <usetemplate - name="okcancelbuttons" - notext="Nie" - yestext="Tak"/> - </notification> - - <notification - - name="GrantModifyRightsMultiple" - > -Udzielenie praw modyfikacji innym Rezydentom umożliwia im modyfikacjÄ™, usuwanie lub wziÄ™cie JAKIEGOKOLWIEK z Twoich obiektów. -Używaj tej opcji z rozwagÄ…! -Czy chcesz dać prawa modyfikacji wybranym osobom? - <usetemplate - name="okcancelbuttons" - notext="Nie" - yestext="Tak"/> - </notification> - - <notification - - name="RevokeModifyRights" - > -Czy chcesz odebrać prawa modyfikacji Rezydentowi [FIRST_NAME] [LAST_NAME]? - <usetemplate - name="okcancelbuttons" - notext="Nie" - yestext="Tak"/> - </notification> - - <notification - - name="RevokeModifyRightsMultiple" - > -Czy chcesz odebrać prawa modyfikacji wybranym Rezydentom? - <usetemplate - name="okcancelbuttons" - notext="Nie" - yestext="Tak"/> - </notification> - - <notification - - name="UnableToCreateGroup" - > -ZaÅ‚ożenie grupy niemożliwe. -[MESSAGE] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="PanelGroupApply" - > -[NEEDS_APPLY_MESSAGE] -[WANT_APPLY_MESSAGE] - <usetemplate - canceltext="Anuluj" - name="yesnocancelbuttons" - notext="Ignoruj Zmiany" - yestext="Zastosuj Zmiany"/> - </notification> - - <notification - - name="MustSpecifyGroupNoticeSubject" - > -Aby wysÅ‚ać ogÅ‚oszenie do grupy musisz nadać mu tytuÅ‚. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="AddGroupOwnerWarning" - > -Dodajesz czÅ‚onków do funkcji [ROLE_NAME]. -Ta funkcja nie może być odebrana. -CzÅ‚onkowie muszÄ… sami zrezygnować z peÅ‚nienia tej funkcji. -Chcesz kontynuować? - <usetemplate - ignoretext="Podczas dodawania czÅ‚onków grupy do funkcji wÅ‚aÅ›ciciela" - name="okcancelignore" - notext="Nie" - yestext="Tak"/> - </notification> - - <notification - - name="AssignDangerousActionWarning" - > -Dodajesz przywilej [ACTION_NAME] do fukcji [ROLE_NAME]. - -*UWAGA* -CzÅ‚onek w funkcji z tym przywilejem może przypisać siebie i innych czÅ‚onków nie bÄ™dÄ…cych wÅ‚aÅ›cicielami do funkcji dajÄ…cych wiÄ™cej przywilejów niż posiadane obecnie potencjalnie dajÄ…ce możliwoÅ›ci zbliżone do możliwoÅ›ci wÅ‚aÅ›ciciela. -Udzielaj tego przywileju z rozwagÄ…." - -Dodać ten przywilej do funkcji [ROLE_NAME]? - <usetemplate - name="okcancelbuttons" - notext="Nie" - yestext="Tak"/> - </notification> - - <notification - - name="AssignDangerousAbilityWarning" - > -Dodajesz przywilej [ACTION_NAME] do fukcji [ROLE_NAME] - -*UWAGA* -CzÅ‚onek w funkcji z tym przywilejem może przypisać sobie i innychm czÅ‚onkom nie bÄ™dÄ…cym wÅ‚aÅ›cicielami wszystkie przywileje potencjalnie dajÄ…ce możliwoÅ›ci zbliżone do możliwoÅ›ci wÅ‚aÅ›ciciela. -Udzielaj tego przywileju z rozwagÄ…. - -Dodać ten przywilej do funkcji [ROLE_NAME]? - <usetemplate - name="okcancelbuttons" - notext="Nie" - yestext="Tak"/> - </notification> - - <notification - - name="ClickPublishHelpLand" - > -Wybranie opcji Publikuj w Wyszukiwarce Wybranie tej opcji umożliwi pokazywanie: -- tej posiadÅ‚oÅ›ci w wynikach wyszukiwarki -- publicznych obiektów na tej posiadÅ‚oÅ›ci -- tej posiadÅ‚oÅ›ci w przeglÄ…darce internetowej - </notification> - - <notification - - name="ClickPublishHelpLandDisabled" - > -Ta posiadÅ‚ość nie może być pokazywana w wynikach wyszukiwania ponieważ region w którym siÄ™ znajduje zabrania tego. - </notification> - - <notification - - name="ClickPublishHelpAvatar" - > -Wybranie opcji Publikuj w Wyszukiwarce umożliwi pokazywanie: -- Twojego profilu w wynikach wyszukiwarki -- linku do Twojego profilu na publicznych stronach - </notification> - - <notification - - name="ClickPartnerHelpAvatar" - > -Możesz zaproponować zwiÄ…zek innemu Rezydentowi lub rozwiÄ…zać istniejÄ…cy zwiÄ…zek na stronie internetowej [SECOND_LIFE]. - -Chcesz dowiedzieć siÄ™ wiÄ™cej na temat zwiÄ…zków w Second Life? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="Idź na stronÄ™"/> - </notification> - - <notification - - name="ClickWebProfileHelpAvatar" - > -Jeżeli ten Rezydent posiada link URL w profilu możesz: - * Kliknąć 'ZaÅ‚aduj' żeby zobaczyć stronÄ™ w tej zakÅ‚adce WWW. - * Kliknąć 'ZaÅ‚aduj' > 'Użyj zewnÄ™trznej przeglÄ…darki' żeby zobaczyć stronÄ™ używajÄ…c domyÅ›lnej zewnÄ™trznej przeglÄ…darki. - * Kliknąć 'ZaÅ‚aduj' > 'Otwórz URL strony profilu' żeby wrócić do strony tego Rezydenta po jej opuszczeniu. - -OglÄ…dajÄ…c swój profil możesz wpisać dowolny link URL i kliknąć OK żeby go zapisać. -Rezydenci mogÄ… odwiedzać podany adres, kiedy przeglÄ…dajÄ… Twój profil. - </notification> - - <notification - - name="JoinGroupCanAfford" - > -Dołączenie do tej grupy kosztuje [COST]L$. -Chcesz kontynuować? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="Dołącz"/> - </notification> - - <notification - - name="JoinGroupCannotAfford" - > -CzÅ‚onkostwo w tej grupie kosztuje [COST]L$ -Masz za maÅ‚o L$ żeby zostać czÅ‚onkiem. - </notification> - - <notification - - name="LandBuyPass" - > -Za [COST]L$ możesz odwiedzić tÄ… posiadÅ‚ość ('[PARCEL_NAME]') na [TIME] godzin. Chcesz kupić przepustkÄ™? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="SalePriceRestriction" - > -Cena sprzedaży musi być wyższa niż 0L$ jeżeli sprzedajesz komukolwiek. -Musisz wybrać kupca jeżeli chcesz sprzedać za 0L$. - </notification> - - <notification - - name="ConfirmLandSaleChange" - - > -PosiadÅ‚ość o powierzchni [LAND_SIZE] m zostaje wystawiona na sprzedaż. -Cena wynosi [SALE_PRICE]L$ i sprzedaż bÄ™dzie autoryzowana dla [NAME]. - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmLandSaleToAnyoneChange" - > -UWAGA: WybierajÄ…c Sprzedaż dla Kogokolwiek umożliwiasz zakup posiadÅ‚oÅ›ci wszystkim Rezydentom Second Life. - -PosiadÅ‚ość o powierzchni [LAND_SIZE] m zostaje wystawiona na sprzedaż. -Cena wynosi [SALE_PRICE]L$ i sprzedaż bÄ™dzie autoryzowana dla [NAME]. - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="ReturnObjectsDeededToGroup" - > -Czy na pewno chcesz zwrócić wszystkie obiekty udostÄ™pnione grupie [NAME] na tej posiadÅ‚oÅ›ci do szafy ich poprzednich wÅ‚aÅ›cicieli? - -*UWAGA* Wybrana opcja spowoduje usuniÄ™cie wszystkich obiektów -udostÄ™pnionych grupie, które nie majÄ… praw transferu! - -Obiekty: [N] - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="ReturnObjectsOwnedByUser" - > -Czy na pewno chcesz zwrócić wszystkie obiekty należące do Rezydenta [NAME] znajdujÄ…ce siÄ™ na tej posiadÅ‚oÅ›ci do szafy wÅ‚aÅ›ciciela? - -Obiekty: [N] - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="ReturnObjectsOwnedBySelf" - > -Czy na pewno chcesz zwrócić wszystkie Twoje obiekty znajdujÄ…ce siÄ™ na tej posiadÅ‚oÅ›ci do swojej szafy? - -Obiekty: [N] - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="ReturnObjectsNotOwnedBySelf" - > -Czy na pewno chcesz zwrócić wszystkie obiekty, których nie jesteÅ› wÅ‚aÅ›cicielem znajdujÄ…ce siÄ™ na tej posiadÅ‚oÅ›ci do szaf wÅ‚aÅ›cicieli? Wszystkie obiekty udostÄ™pnione grupie z prawem transferu, zostanÄ… zwrócone poprzednim wÅ‚aÅ›cicielom. - -*UWAGA* Wybrana opcja spowoduje usuniÄ™cie wszystkich obiektów udostÄ™pnionych grupie, które nie majÄ… praw transferu! - -Obiekty: [N] - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="ReturnObjectsNotOwnedByUser" - > -Czy na pewno chcesz zwrócić wszystkie obiekty, które nie należą do [NAME] znajdujÄ…ce siÄ™ na tej posiadÅ‚oÅ›ci do szaf wÅ‚aÅ›cicieli? Wszystkie obiekty udostÄ™pnione grupie z prawem transferu, zostanÄ… zwrócone poprzednim wÅ‚aÅ›cicielom. - -*UWAGA* Wybrana opcja spowoduje usuniÄ™cie wszystkich obiektów udostÄ™pnionych grupie, które nie majÄ… praw transferu! - -Obiekty: [N] - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="ReturnAllTopObjects" - > -Czy na pewno chcesz zwrócić wszystkie wymienione obiekty znajdujÄ…ce siÄ™ na tej posiadÅ‚oÅ›ci do szaf ich wÅ‚aÅ›cicieli? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="DisableAllTopObjects" - > -Czy na pewno chcesz deaktywować wszystkie obiekty w tym regionie? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="ReturnObjectsNotOwnedByGroup" - > -Zwrócić obiekty z tej posiadÅ‚oÅ›ci, które nie sÄ… udosÄ™pnione grupie [NAME] do ich wÅ‚aÅ›cicieli? - -Obiekty: [N] - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="UnableToDisableOutsideScripts" - > -Nie można deaktywować skryptów. -Ten region pozwala na uszkodzenia. -Skrypty muszÄ… pozostać aktywne dla prawidÅ‚owego dziaÅ‚ania broni. - </notification> - - <notification - - name="MustBeInParcel" - > -Musisz znajdować siÄ™ wewnÄ…trz posiadÅ‚oÅ›ci żeby wybrać punkt lÄ…dowania. - </notification> - - <notification - - name="PromptRecipientEmail" - > -ProszÄ™ wpisać adres emailowy odbiorcy. - </notification> - - <notification - - name="PromptSelfEmail" - > -ProszÄ™ wpisać swój adres emailowy. - </notification> - - <notification - - name="PromptMissingSubjMsg" - > -WysÅ‚ać widokówkÄ™ z domyÅ›lnym tematem i wiadomoÅ›ciÄ…? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="ErrorProcessingSnapshot" - > -Błąd w trakcie przetwarzania danych zdjÄ™cia. - </notification> - - <notification - - name="ErrorEncodingSnapshot" - > -Błąd w kodowaniu zdjÄ™cia. - </notification> - - <notification - - name="ErrorUploadingPostcard" - > -W trakcie Å‚adowania zdjÄ™cia pojawiÅ‚ siÄ™ problem z nastÄ™pujÄ…cego powodu: [REASON] - </notification> - - <notification - - name="ErrorUploadingReportScreenshot" - > -W trakcie Å‚adowania zdjÄ™cia ekranu do raportu pojawiÅ‚ siÄ™ problem z nastÄ™pujÄ…cego powodu: [REASON] - </notification> - - <notification - - name="MustAgreeToLogIn" - > -Musisz zaakceptować Warunki Umowy (Terms of Service) by kontynuować logowanie siÄ™ do [SECOND_LIFE]. - </notification> - - <notification - - name="CouldNotPutOnOutfit" - > -ZaÅ‚ożenie stroju nie powiodÅ‚o siÄ™. -Folder stroju nie zawiera żadnego ubrania, części ciaÅ‚a ani załączników. - </notification> - - <notification - - name="CannotWearTrash" - > -Nie możesz zaÅ‚ożyć ubrania, które znajduje siÄ™ w koszu. - </notification> - - <notification - - name="CannotWearInfoNotComplete" - > -Nie możesz zaÅ‚ożyć tego artkuÅ‚u ponieważ nie zaÅ‚adowaÅ‚ siÄ™ poprawnie. Spróbuj ponownie za kilka minut. - </notification> - - <notification - - name="MustHaveAccountToLogIn" - > -Musisz mieć konto by móc zalogować siÄ™ do [SECOND_LIFE]. -Czy chcesz przejść na stronÄ™ www.secondlife.com by zaÅ‚ożyć konto? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="AddClassified" - > -OgÅ‚oszenia reklamowe ukazujÄ… siÄ™ w zakÅ‚adce Reklama w wyszukiwarce (Szukaj) oraz na stronie internetowej www.secondlife.com przez tydzieÅ„. -Napisz treść swojej reklamy, kliknij Zamieść by dodać katalogu ogÅ‚oszeÅ„. -Po zamieszczeniu reklamy zostaniesz poproszony o sprecyzowanie opÅ‚aty za reklamÄ™. -Im wyższa opÅ‚ata tym wyżej Twoja reklama wyÅ›wietla siÄ™ w katalogu i wyszukiwarce po wpisaniu słów kluczowych. - <usetemplate - ignoretext="W momencie dodawania nowej reklamy" - name="okcancelignore" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="DeleteClassified" - > -Usunąć reklamÄ™ '[NAME]'? -PamiÄ™taj! Nie ma rekompensaty za poniesione koszta. - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="ClassifiedSave" - > -Zapisać zmiany w reklamie [NAME]? - <usetemplate - canceltext="Anuluj" - name="yesnocancelbuttons" - notext="Nie Zapisuj" - yestext="Zapisz"/> - </notification> - - <notification - - name="DeleteAvatarPick" - > -Usunąć wybór [PICK] z kategorii LubiÄ™? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="PromptGoToEventsPage" - > -Odwiedzić internetowÄ… stronÄ™ imprez [SECOND_LIFE]? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="SelectProposalToView" - > -Wybierz propozycjÄ™, którÄ… chcesz zobaczyć. - </notification> - - <notification - - name="SelectHistoryItemToView" - > -Wybierz obiekt z historii, który chcesz zobaczyć. - </notification> - - <notification - - name="ResetShowNextTimeDialogs" - > -Zresetować 'Pokaż nastÄ™pnym razem' opcjÄ™ we wszystkich dialogach? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="SkipShowNextTimeDialogs" - > -Wyłączyć 'Pokaż nastÄ™pnym razem' opcjÄ™ we wszystkich dialogach? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="CacheWillClear" - > -Bufor danych na dysku zostanie zresetowany po relogu do [SECOND_LIFE]. - </notification> - - <notification - - name="CacheWillBeMoved" - > -Bufor danych na dysku zostanie przemieszczony po relogu do [SECOND_LIFE]. -Bufor bÄ™dzie również wyczyszczony. - </notification> - - <notification - - name="ChangeConnectionPort" - > -Ustawienia portu zostanÄ… wprowadzone po relogu do [SECOND_LIFE]. - </notification> - - <notification - - name="ChangeSkin" - > -Nowa skórka zostanie wprowadzona po relogu do [SECOND_LIFE]. - </notification> - - <notification - - name="GoToAuctionPage" - > -Odwiedzić stronÄ™ internetowÄ… [SECOND_LIFE] żeby zobaczyć szczgóły aukcji lub zrobić ofertÄ™? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="SaveChanges" - > -Zapisać Zmiany? - <usetemplate - canceltext="Anuluj" - name="yesnocancelbuttons" - notext="Nie Zapisuj" - yestext="Zapisz"/> - </notification> - - <notification - - name="GestureSaveFailedTooManySteps" - > -Nie można zapisać gestu. -Ten gest ma zbyt wiele etapów. -UsuÅ„ kilka etapów i zapisz jeszcze raz. - </notification> - - <notification - - name="GestureSaveFailedTryAgain" - > -Zapis gestu nie powiódÅ‚ siÄ™. Spróbuj jeszcze raz za kilka minut. - </notification> - - <notification - - name="GestureSaveFailedObjectNotFound" - > -Nie można zapisać gestu ponieważ obiekt lub szafa powiÄ…zanego obiektu nie zostaÅ‚ znaleziony. -Obiekt może znajdować siÄ™ zbyt daleko albo zostaÅ‚ usuniety. - </notification> - - <notification - - name="GestureSaveFailedReason" - > -Nie można zapisać gestu z nastÄ™pujÄ…cego powodu: [REASON]. Spróbuj zapisać jeszcze raz póżniej. - </notification> - - <notification - - name="SaveNotecardFailObjectNotFound" - > -Nie można zapisać notki ponieważ obiekt lub szafa powiÄ…zanego obiektu nie zostaÅ‚ znaleziony. -Obiekt może znajdować siÄ™ zbyt daleko albo zostaÅ‚ usuniety. - </notification> - - <notification - - name="SaveNotecardFailReason" - > -Nie można zapisać notki z nastÄ™pujÄ…cego powodu: [REASON]. Spróbuj zapisać jeszcze raz póżniej. - </notification> - - <notification - - name="ScriptCannotUndo" - > -Nie można cofnąć wszystkich zmian w Twojej wersji skryptu. -Czy chcesz zaÅ‚adować ostatniÄ… wersjÄ™ zapisanÄ… na serwerze? -(*UWAGA* Ta operacja jest nieodwracalna.) - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="SaveScriptFailReason" - > -Nie można zapisać skryptu z nastÄ™pujÄ…cego powodu: [REASON]. Spróbuj zapisać jeszcze raz póżniej. - </notification> - - <notification - - name="SaveScriptFailObjectNotFound" - > -Nie można zapisać skryptu ponieważ obiekt w którym siÄ™ zawiera nie zostaÅ‚ znaleziony. -Obiekt może znajdować siÄ™ zbyt daleko albo zostaÅ‚ usuniety. - </notification> - - <notification - - name="SaveBytecodeFailReason" - > -Nie można zapisać skompilowanego skryptu z nastÄ™pujÄ…cego powodu: [REASON]. Spróbuj zapisać jeszcze raz póżniej. - </notification> - - <notification - - name="CouldNotStartStopScript" - > -Nie można uruchomić lub zatrzymać skryptu ponieważ obiekt w którym siÄ™ zawiera nie zostaÅ‚ znaleziony. -Obiekt może znajdować siÄ™ zbyt daleko albo zostaÅ‚ usuniety. - </notification> - - <notification - - name="CannotDownloadFile" - > -Nie można zaÅ‚adować pliku - </notification> - - <notification - - name="CannotWriteFile" - > -Nie można zapisać pliku [[FILE]] - </notification> - - <notification - - name="UnsupportedHardware" - > -Uwaga: Twój system nie speÅ‚nia minimalnych wymagaÅ„ sprzÄ™towych Second Life. Jakość i prÄ™dkość Second Life mogÄ… być pogorszone. Niestety, nie bÄ™dziemy w stanie udzielić Ci technicznej pomocy, ponieważ konfiguracja Twojego systemu nie speÅ‚nia wymagaÅ„ sprzÄ™towych. - -MINSPECS -Czy chcesz odwiedzić stronÄ™ [_URL] po dodatkowe informacje? - <url option="0" name="url"> - - http://www.secondlife.com/corporate/sysreqs.php - </url> - <usetemplate - ignoretext="Zignoruj ostrzeżenie" - name="okcancelignore" - notext="Nie" - yestext="Tak"/> - </notification> - - <notification - - name="UnknownGPU" - > -Twój system jest wyposażony w kartÄ™ graficznÄ… której jeszcze nie znamy. -To siÄ™ czÄ™sto zdarza z nowym sprzÄ™tem, którego jeszcze nie testowaliÅ›my. -Second Life najprawdopodobniej bÄ™dzie dziaÅ‚aÅ‚o poprawnie. Możliwe, że bÄ™dziesz musiaÅ‚ wyregulować ustawienia grafiki. -(Edycja > Ustawienia > Grafika). - <form name="form"> - <ignore name="ignore" text="Zignoruj ostrzeżenie"/> - </form> - </notification> - - <notification - - name="DisplaySettingsNoShaders" - > -[SECOND_LIFE] zawiesiÅ‚ siÄ™ podczas inicjalizacji sterowników graficznych. Jakość grafiki zostaÅ‚a zmniejszona - może pomoże. Pewne funkcje graficzne zostaÅ‚y wyłączone. Zalecamy aktualizcje strerowników grapicznych. -Możesz podnieść jakość grafiki pod Ustawienia > Grafika. - </notification> - - <notification - - name="RegionNoTerraforming" - > -Region [REGION] nie pozwala na formowanie powierzchni ziemi. - </notification> - - <notification - - name="CannotCopyWarning" - > -Nie masz praw do kopiowania tego obiektu. Ten obiek zniknie z Twojej szafy jeżeli go dasz innej osobie. -Na pewno chcesz podarować ten obiekt? - <usetemplate - name="okcancelbuttons" - notext="Nie" - yestext="Tak"/> - </notification> - - <notification - - name="CannotGiveItem" - > -Podarowanie obiektu nie powiodÅ‚o siÄ™. - </notification> - - <notification - - name="TransactionCancelled" - > -Tranzakcja anulowana. - </notification> - - <notification - - name="TooManyItems" - > -Jednorazowo możesz podarować maksymalnie 42 obiekty z szafy. - </notification> - - <notification - - name="NoItems" - > -Nie masz praw do transferu wybranych obiektów. - </notification> - - <notification - - name="CannotCopyCountItems" - > -Nie masz praw do skopiowania [COUNT] wybranych obiektów. Obiekty zniknÄ… z Twojej szafy. -Na pewno chcesz oddać te obiekty? - <usetemplate - name="okcancelbuttons" - notext="Nie" - yestext="Tak"/> - </notification> - - <notification - - name="CannotGiveCategory" - > -Nie masz praw do transferu wybranego foldera. - </notification> - - <notification - - name="FreezeAvatar" - > -Unieruchomić tego awatara? -Awatar tymczasowo nie bÄ™dzie mógÅ‚ siÄ™ poruszać, nie bÄ™dzie mógÅ‚ używać czatu (IM) i nie bÄ™dzie w stanie odziaÅ‚ywać na Å›wiat. - <usetemplate - canceltext="Anuluj" - name="yesnocancelbuttons" - notext="Odblokuj" - yestext="Unieruchom"/> - </notification> - - <notification - - name="FreezeAvatarFullname" - > -Unieruchowmić [AVATAR_NAME]? -Ta osoba tymczasowo nie bÄ™dzie mógÅ‚a siÄ™ poruszać, nie bÄ™dzie mógÅ‚ używać czatu (IM) i nie bÄ™dzie w stanie odziaÅ‚ywać na Å›wiat. - <usetemplate - canceltext="Anuluj" - name="yesnocancelbuttons" - notext="Odblokuj" - yestext="Unieruchom"/> - </notification> - - <notification - - name="EjectAvatarFullname" - > -Wyrzucić [AVATAR_NAME] z Twojej posiadÅ‚oÅ›ci? - <usetemplate - canceltext="Anuluj" - name="yesnocancelbuttons" - notext="Wyrzuć i zabroÅ„ wstÄ™pu (ban)" - yestext="Wyrzuć"/> - </notification> - - <notification - - name="AcquireErrorTooManyObjects" - > -BÅÄ„D OTRZYMYWANIA: Zbyt wiele wybranych obiektów. - </notification> - - <notification - - name="AcquireErrorObjectSpan" - > -BÅÄ„D OTRZYMYWANIA: Obiekty przekraczajÄ… granicÄ™ regionów. Przemieść wszystkie otrzymywane obiekty do jednego regionu. - </notification> - - <notification - - name="PromptGoToCurrencyPage" - > -[EXTRA] - -Iść na stronÄ™ [URL] po informacje dotyczÄ…ce zakupu gotówki? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="UnableToLinkObjects" - > -Nie można połączyć [COUNT] obiektów. -Maksimalnie można połączyć [MAX] obiektów. - </notification> - - <notification - - name="CannotLinkIncompleteSet" - > -Możesz łączyć tylko kompletne zbiory obiektów i musisz wybrać wiÄ™cej niż jeden obiekt. - </notification> - - <notification - - name="CannotLinkModify" - > -Nie możesz połączyć obiektów ponieważ nie masz praw modyfikacji dla wszystkich obiektów. - -Upewnij siÄ™, że żaden z obiktów nie jest zablokowany i że wszystkie obiekty należą do Ciebie. - </notification> - - <notification - - name="CannotLinkDifferentOwners" - > -Nie możesz połączyć obiektów ponieważ należą one do różnych osób. - -Upewnij sie, że wszystkie wybrane obiekty należą do Ciebie. - </notification> - - <notification - - name="NoFileExtension" - > -Niepoprawna koÅ„cówka nazwy pliku: '[FILE]' - -Upewnij siÄ™, że nazwa pliku ma poprawanÄ… koÅ„cówkÄ™. - </notification> - - <notification - - name="InvalidFileExtension" - > -Niepoprawna koÅ„cówka nazwy pliku - [EXTENSION] -Oczekiwana - [VALIDS] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="CannotUploadSoundFile" - > -Nie można otworzyć zaÅ‚adowanego pliku dźwiÄ™kowego: -[FILE] - </notification> - - <notification - - name="SoundFileNotRIFF" - > -Plik nie jest w formacie RIFF WAVE: -[FILE] - </notification> - - <notification - - name="SoundFileNotPCM" - > -Plik nie jest w formacie PCM WAVE: -[FILE] - </notification> - - <notification - - name="SoundFileInvalidChannelCount" - > -Plik zawiera niewÅ‚aÅ›ciwÄ… liczbÄ™ kanałów (musi być mono albo stereo): -[FILE] - </notification> - - <notification - - name="SoundFileInvalidSampleRate" - > -Plik zawiera niewÅ‚aÅ›ciÄ… czÄ™stotliwość (musi być 44.1k): -[FILE] - </notification> - - <notification - - name="SoundFileInvalidWordSize" - > -Plik zawiera niewÅ‚aÅ›ciwÄ… szerokość danych (musi być 8 albo 16 bitów): -[FILE] - </notification> - - <notification - - name="SoundFileInvalidHeader" - > -Brak bloku 'data' w nagłówku pliku WAV: -[FILE] - </notification> - - <notification - - name="SoundFileInvalidTooLong" - > -Plik audio jest zbyt dÅ‚ugi (10 sekund maksimum): -[FILE] - </notification> - - - - <notification - - name="CannotOpenTemporarySoundFile" - > -Nie można otworzyć tymczasowego skompresowango pliku dźwiÄ™kowego w celu zapisu: [FILE] - </notification> - - <notification - - name="UnknownVorbisEncodeFailure" - > -Nieznany błąd kodowania Vorbis w: [FILE] - </notification> - - <notification - - name="CorruptResourceFile" - > -Skorumpowany plik zasobów: [FILE] - </notification> - - <notification - - name="UnknownResourceFileVersion" - > -Nieznana wersja pliku zasobów Linden w pliku: [FILE] - </notification> - - <notification - - name="UnableToCreateOutputFile" - > -Nie można utworzyć pliku wyjÅ›ciowego: [FILE] - </notification> - - <notification - - name="DoNotSupportBulkAnimationUpload" - > -Åadowanie zbiorów plików animacji nie jest jeszcze dostÄ™pne. - </notification> - - <notification - - name="CannotUploadReason" - > -Åadowanie pliku [FILE] nie powiodÅ‚o siÄ™ z powodu: [REASON] -Spróbuj jeszcze raz póżniej. - </notification> - - <notification - - name="CannotCreateLandmarkNotOwner" - > -Nie możesz zapamiÄ™tać tego miejsca (LM) ponieważ wÅ‚aÅ›ciciel posiadÅ‚oÅ›ci nie pozwala na to. - </notification> - - <notification - - name="CannotRecompileSelectObjectsNoScripts" - > -'Rekompilacja' nie powiodÅ‚a siÄ™. - -Wybierz obiekty zawierajÄ…ce skrypty. - </notification> - - <notification - - name="CannotRecompileSelectObjectsNoPermission" - > -'Rekompilacja' nie powiodÅ‚a siÄ™. - -Wybierz skryptowane obiekty do których masz prawa modyfikacji. - </notification> - - <notification - - name="CannotResetSelectObjectsNoScripts" - > -'Resetowanie' nie powiodÅ‚o siÄ™. - -Wybierz obiekty zawierajÄ…ce skrypty. - </notification> - - <notification - - name="CannotResetSelectObjectsNoPermission" - > -'Resetowanie' nie powiodÅ‚o siÄ™. - -Wybierz skryptowane obiekty do których masz prawa modyfikacji. - </notification> - - <notification - - name="CannotSetRunningSelectObjectsNoScripts" - > -'Uruchomienie' skryptów nie powiodÅ‚o siÄ™. - -Wybierz obiekty zawierajÄ…ce skrypty. - </notification> - - <notification - - name="CannotSetRunningNotSelectObjectsNoScripts" - > -'Zatrzymanie' skryptów nie powiodÅ‚o siÄ™. - -Wybierz obiekty zawierajÄ…ce skrypty. - </notification> - - <notification - - name="NoFrontmostFloater" - > -Brak górnego okna do zapisu. - </notification> - - <notification - - name="SeachFilteredOnShortWords" - > -Twoje zapytanie wyszukiwania zostÅ‚o zmienione - zbyt krótkie sÅ‚owa zostaÅ‚y usuniÄ™te. - -Nowe zapytanie: [FINALQUERY] - </notification> - - <notification - - name="SeachFilteredOnShortWordsEmpty" - > -Użyte terminy wyszukiwania byÅ‚y zbyt krótkie - wyszukiwanie zostaÅ‚o anulowane. - </notification> - - <notification - - name="CouldNotTeleportReason" - > -Teleportacja nie powiodÅ‚a siÄ™. -[REASON] - </notification> - - <notification - - name="CannotSetLandOwnerNothingSelected" - > -Nie można wybrać wÅ‚aÅ›ciciela posiadÅ‚oÅ›ci. -PosiadÅ‚ość nie zostaÅ‚a wybrana. - </notification> - - <notification - - name="CannotSetLandOwnerMultipleRegions" - > -Nie można wybrać wÅ‚aÅ›ciciela posiadÅ‚oÅ›ci ponieważ wybrany obszar przekracza granicÄ™ regionów. Wybierz mniejszy obszar i spróbuj jeszcze raz. - </notification> - - <notification - - name="ForceOwnerAuctionWarning" - > -Ta posiadÅ‚ość jest wystawiona na aukcjÄ™. Wymuszenie wÅ‚asnoÅ›ci anulue aukcjÄ™ i potencjalnie może zdenerwować zainteresowanych Rezydentów, jeżeli licytacja już siÄ™ rozpoczęła. Wymusić wÅ‚asność? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="CannotContentifyNothingSelected" - > -Nie można sfinalizować: -PosiadÅ‚ość nie zostaÅ‚a wybrana. - </notification> - - <notification - - name="CannotContentifyNoRegion" - > -Nie można sfinalizować: -Region nie znaleziony. - </notification> - - <notification - - name="CannotReleaseLandNothingSelected" - > -Nie można porzucić posiadÅ‚oÅ›ci: -PosiadÅ‚ość nie zostaÅ‚a wybrana. - </notification> - - <notification - - name="CannotReleaseLandNoRegion" - > -Nie można porzucić posiadÅ‚oÅ›ci: -Region nie znaleziony. - </notification> - - <notification - - name="CannotBuyLandNothingSelected" - > -Nie można kupić posiadÅ‚oÅ›ci: -PosiadÅ‚ość nie zostaÅ‚a wybrana. - </notification> - - <notification - - name="CannotBuyLandNoRegion" - > -Nie można kupić posiadÅ‚oÅ›ci: -Region nie znaleziony. - </notification> - - <notification - - name="CannotCloseFloaterBuyLand" - > -Dialog Kup PosiadÅ‚ość nie może zostać zamkniÄ™ty dopóki Second Life nie oszacuje ceny tej tranzakcji. - </notification> - - <notification - - name="CannotDeedLandNothingSelected" - > -Nie można przekazać posiadÅ‚oÅ›ci: -PosiadÅ‚ość nie zostaÅ‚a wybrana. - </notification> - - <notification - - name="CannotDeedLandNoGroup" - > -Nie można przekazać posiadÅ‚oÅ›ci: -Grupa nie zostaÅ‚a wybrana. - </notification> - - <notification - - name="CannotDeedLandNoRegion" - > -Nie można przekazać posiadÅ‚oÅ›ci: -Region nie znaleziony. - -ZgÅ‚oÅ› ten problem pod Pomoc > ZgÅ‚oÅ› Błędy Klienta - </notification> - - <notification - - name="CannotDeedLandMultipleSelected" - > -Nie można przekazać posiadÅ‚oÅ›ci: -Wiele posiadÅ‚oÅ›ci jest wybranych. - -Spróbuj wybrać pojedynczÄ… posiadÅ‚ość. - </notification> - - <notification - - name="ParcelCanPlayMedia" - > -To miejsce może odtwarzać strumienie mediów. -Odtwarzanie strumieni wymaga szybkiego połączenia do Internetu. - -Odtwarzać dostÄ™pne strumienie mediów? -(Selekcja może zostać zmieniona póżniej pod Ustawienia > Audio i Video.) - <usetemplate - name="okcancelbuttons" - notext="Wyłącz" - yestext="Odtwarzaj"/> - </notification> - - <notification - - name="CannotDeedLandWaitingForServer" - > -Nie można przekazać posiadÅ‚oÅ›ci: -Serwer aktualizuje dane wÅ‚asnoÅ›ci. - -Spróbuj jeszcze raz póżniej. - </notification> - - <notification - - name="CannotDeedLandNoTransfer" - > -Nie możesz przekazać posiadÅ‚oÅ›ci: -Region [REGION] nie pozwala na transfer posiadÅ‚oÅ›ci. - </notification> - - <notification - - name="CannotReleaseLandWatingForServer" - > -Nie można porzucić posiadÅ‚oÅ›ci: -Serwer aktualizuje dane posiadÅ‚oÅ›ci. - -Spróbuj jeszcze raz póżniej. - </notification> - - <notification - - name="CannotReleaseLandSelected" - > -Nie możesz porzucić posiadÅ‚oÅ›ci: -Nie jesteÅ› wÅ‚aÅ›cicielem wszystkich wybranych posiadÅ‚oÅ›ci. - -Wybierz pojedynczÄ… posiadÅ‚ość. - </notification> - - <notification - - name="CannotReleaseLandDontOwn" - > -Nie możesz porzucić posiadÅ‚oÅ›ci: -Nie masz praw do porzucenia tej posiadÅ‚oÅ›ci. - -Twoje posiadÅ‚oÅ›ci sÄ… podkreÅ›lone na zielono. - </notification> - - <notification - - name="CannotReleaseLandRegionNotFound" - > -Nie można porzucić posiadÅ‚oÅ›ci: -Region nie znaleziony. - -ZgÅ‚oÅ› ten problem pod Pomoc > ZgÅ‚oÅ› Błędy Klienta - </notification> - - <notification - - name="CannotReleaseLandNoTransfer" - > -Nie możesz porzucić posiadÅ‚oÅ›ci: -Region [REGION] nie pozwala na transfer posiadÅ‚oÅ›ci. - </notification> - - <notification - - name="CannotReleaseLandPartialSelection" - > -Nie można porzucić posiadÅ‚oÅ›ci: -Musisz wybrać całą posiadÅ‚ość by jÄ… porzucić. -Wybierz całą posiadÅ‚ość albo najpierw jÄ… podziel. - </notification> - - <notification - - name="ReleaseLandWarning" - > -Porzucasz posiadÅ‚ość o powierzchni [AREA] m². -Porzucenie tej posiadÅ‚oÅ›ci usunie jÄ… z Twoich wÅ‚asnoÅ›ci. -Nie otrzymasz za to żadnej opÅ‚aty. - -Porzucić posiadÅ‚ość? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="CannotDivideLandNothingSelected" - > -Nie można podzielić posiadÅ‚oÅ›ci: - -PosiadÅ‚ość nie zostaÅ‚a wybrana. - </notification> - - <notification - - name="CannotDivideLandPartialSelection" - > -Nie można podzielić posiadÅ‚oÅ›ci: - -PosiadÅ‚ość zostaÅ‚a wybrana w caÅ‚oÅ›ci. -Spróbuj wybrać część posiadÅ‚oÅ›ci. - </notification> - - <notification - - name="LandDivideWarning" - > -PodziaÅ‚ tej posiadÅ‚oÅ›ci stworzy dwie posiadÅ‚oÅ›ci z których każda bÄ™dzie mogÅ‚a mieć indywidualne ustawienia. -Niektóre ustawienia zostanÄ… zmienione na domyÅ›lne po tej operacji. - -Podzielić posiadÅ‚ość? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="CannotDivideLandNoRegion" - > -Nie można podzielić posiadÅ‚oÅ›ci: -Region nie znaleziony. - -ZgÅ‚oÅ› ten problem pod Pomoc > ZgÅ‚oÅ› Błędy Klienta - </notification> - - <notification - - name="CannotJoinLandNoRegion" - > -Nie można połączyć posiadÅ‚oÅ›ci: -Region nie znaleziony. - -ZgÅ‚oÅ› ten problem pod Pomoc > ZgÅ‚oÅ› Błędy Klienta - </notification> - - <notification - - name="CannotJoinLandNothingSelected" - > -Nie można połączyć posiadÅ‚oÅ›ci: -PosiadÅ‚oÅ›ci nie zostaÅ‚y wybrane. - </notification> - - <notification - - name="CannotJoinLandEntireParcelSelected" - > -Nie można połączyć posiadÅ‚oÅ›ci: -Tylko jedna posiadÅ‚ość zostaÅ‚a wybrana. - -Wybierz obaszar usytuowany na obu posiadÅ‚oÅ›ciach. - </notification> - - <notification - - name="CannotJoinLandSelection" - > -Nie można połączyć posiadÅ‚oÅ›ci: -Musisz wybrać wiÄ™cej niż jednÄ… posiadÅ‚ość. - -Wybierz obaszar usytuowany na obu posiadÅ‚oÅ›ciach. - </notification> - - <notification - - name="JoinLandWarning" - > -Połączenie tego obszaru utworzy jednÄ… wiÄ™kszÄ… posiadÅ‚ość ze wszystkich posiadÅ‚oÅ›ci przecinajÄ…cych wybrany prostokÄ…t. Nazwa i opcje posiadÅ‚oÅ›ci bedÄ… musiaÅ‚y zostać skonfigurowane. - -Połączyć posiadÅ‚oÅ›ci? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmNotecardSave" - > -Ta notka musi być zapisana żeby mogÅ‚a być skopiowana lub zobaczona. Zapisać notkÄ™? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmItemCopy" - > -Skopiować ten obiekt do Twojej szafy? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="Skopiuj"/> - </notification> - - <notification - - name="ResolutionSwitchFail" - > -Zmiana rozdzielczoÅ›ci do [RESX] x [RESY] nie powidÅ‚a siÄ™ - </notification> - - <notification - - name="ErrorUndefinedGrasses" - > -Błąd: Niezdefiniowane trawy: [SPECIES] - </notification> - - <notification - - name="ErrorUndefinedTrees" - > -BÅ‚ad: Niezdefiniowane drzewa: [SPECIES] - </notification> - - <notification - - name="CannotSaveWearableOutOfSpace" - > -Nie można zapisać '[NAME]' do pliku stroju. Musisz zwolnić trochÄ™ miejsca na Twoim komputerze i zapisać strój jeszcze raz. - </notification> - - <notification - - name="CannotSaveToAssetStore" - > -Nie można zapisać [NAME] w centralnym zbiorze danych. Zazwyczaj jest to tymczasowy problem. Możesz kontynuować modyfikacje i zapisać strój ponownie za kilka minut. - -Jeżeli wciąż masz ten problem, wybierz Pomoc > ZgÅ‚oÅ› Błędy Klienta i podaj szczegóły dotyczÄ…ce konfiguracji sieci. - </notification> - - <notification - - name="YouHaveBeenLoggedOut" - > -Twoja sesja [SECOND_LIFE] zostaÅ‚a zakoÅ„czona: -[MESSAGE] - -Kliknij Kontynuuj żeby zobaczyć IMy i czat. -Å»adne inne operacje nie bÄ™dÄ… dozwolone. Kliknij Wyłącz w celu natychmiastowego opuszczenia [SECOND_LIFE]. - <usetemplate - name="okcancelbuttons" - notext="Wyłącz" - yestext="Kontynuuj"/> - </notification> - - <notification - - name="OnlyOfficerCanBuyLand" - > -Nie możesz kupić posiadÅ‚oÅ›ci dla grupy. -Nie masz praw kupowania posiadÅ‚oÅ›ci dla Twojej aktywnej grupy. - </notification> - - <notification - - label="Dodaj Znajomość" - name="AddFriend" - > -Znajomi mogÄ… pozwalać na odnajdywanie siÄ™ wzajemnie na mapie i na otrzymywanie notyfikacji o logowaniu do [SECOND_LIFE]. - -Zaproponować znajomość [NAME]? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - label="Add Friend" - name="AddFriendWithMessage" - > -Znajomi mogÄ… pozwalać na odnajdywanie siÄ™ wzajemnie na mapie i na otrzymywanie notyfikacji o logowaniu do [SECOND_LIFE]. - -Zaproponować znajomość [NAME]? - <form name="form"> - <input name="message" type="text"> -Chcesz zawrzeć znajomość? - </input> - <button - - - name="Offer" - text="OK"/> - <button - - name="Cancel" - text="Anuluj"/> - </form> - </notification> - - <notification - - name="RemoveFromFriends" - > -Chcesz usunąć [FIRST_NAME] [LAST_NAME] z listy Twoich znajomych? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="RemoveMultipleFromFriends" - > -Chcesz usunąć grupÄ™ osób z listy Twoich znajomych? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="GodDeleteAllScriptedPublicObjectsByUser" - > -Na pewno chcesz usunąć wszystkie skryptowane obiekty należące do -** [AVATAR_NAME] ** -z posiadÅ‚oÅ›ci innych w tym symulatorze? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="GodDeleteAllScriptedObjectsByUser" - > -Na pewno chcesz usunąć wszystkie skryptowane obiekty należące do -** [AVATAR_NAME] ** -ze wszystkich posiadÅ‚oÅ›ci w tym symulatorze? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="GodDeleteAllObjectsByUser" - > -Na pewno chcesz usunąć wszystkie obiekty (skryptowane i nie) należące do -** [AVATAR_NAME] ** -ze wszystkich posiadÅ‚oÅ›ci w tym symulatorze? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="BlankClassifiedName" - > -Musisz nadać tytuÅ‚ Twojej reklamie. - </notification> - - <notification - - name="MinClassifiedPrice" - > -Minimalna cena za publikacjÄ™ wynosi [MIN_PRICE]L$. - -Wybierz wyższÄ… cenÄ™. - </notification> - - <notification - - name="ConfirmObjectDeleteLock" - > -Przynajmnie jeden z wybranych obiektów jest zablokowany. - -Na pewno chcesz usunąć te obiekty? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectDeleteNoCopy" - > -Przynajmniej jeden z wybranych obiektów jest niekopiwalny. - -Na pewno chcesz usunąć te obiekty? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectDeleteNoOwn" - > -Przynajmniej jeden z wybranych obiektów nie należy do Ciebie. - -Na pewno chcesz usunąć te obiekty? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectDeleteLockNoCopy" - > -Przynajmnie jeden z wybranych obiektów jest zablokowany. -Przynajmniej jeden z wybranych obiektów jest niekopiwalny. - -Na pewno chcesz usunąć te obiekty? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectDeleteLockNoOwn" - > -Przynajmnie jeden z wybranych obiektów jest zablokowany. -Przynajmniej jeden z wybranych obiektów nie należy do Ciebie. - -Na pewno chcesz usunąć te obiekty? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectDeleteNoCopyNoOwn" - > -Przynajmniej jeden z wybranych obiektów jest niekopiwalny. -Przynajmniej jeden z wybranych obiektów nie należy do Ciebie. - -Na pewno chcesz usunąć te obiekty? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectDeleteLockNoCopyNoOwn" - > -Przynajmnie jeden z wybranych obiektów jest zablokowany. -Przynajmniej jeden z wybranych obiektów jest niekopiwalny. -Przynajmniej jeden z wybranych obiektów nie należy do Ciebie. - -Na pewno chcesz usunąć te obiekty? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectTakeLock" - > -Przynajmnie jeden obiekt jest zablokowany. - -Na pewno chcesz usunąć te obiekty? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectTakeNoOwn" - > -Przynajmniej jeden obiekt nie należy do Ciebie. -Jeżeli bÄ™dziesz kontynuować prawa nastÄ™pnego wÅ‚aÅ›ciciela zostanÄ… przypisane co, potencjalnie, może ograniczyć Twoje prawa do modyfikacji lub kopiowania obiektów. - -Na pewno chcesz wziąść te obiekty? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmObjectTakeLockNoOwn" - > -Przynajmnie jeden obiekt jest zablokowany. -Przynajmniej jeden obiekt nie należy do Ciebie. -Jeżeli bÄ™dziesz kontynuować prawa nastÄ™pnego wÅ‚aÅ›ciciela zostanÄ… przypisane co, potencjalnie, może ograniczyć Twoje prawa do modyfikacji lub kopiowania obiektów. - -Na pewno chcesz wziąść te obiekty? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="CantBuyLandAcrossMultipleRegions" - > -Nie możesz kupić posiadÅ‚oÅ›ci ponieważ wybrany obszar przekracza granicÄ™ regionów. - -Wybierz mniejszy obszar i spróbuj jeszcze raz. - </notification> - - <notification - - name="DeedLandToGroup" - > -Po przekazaniu tej posiadÅ‚oÅ›ci grupa bÄ™dzia musiaÅ‚a mieć i utrzymywać wystarczajÄ…cy kredyt na używanie posiadÅ‚oÅ›ci. Cena zakupu posiadÅ‚oÅ›ci nie jest zwracana wÅ‚aÅ›cicielowi. Jeżeli przekazana posiadÅ‚ość zostanie sprzedana, cana sprzedaży zostanie podzielona pomiÄ™dzy czÅ‚onków grupy. - -Przekazać tÄ… posiadÅ‚ość o powierzchni [AREA] m² grupie '[GROUP_NAME]'? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="DeedLandToGroupWithContribution" - > -Po przekazaniu tej posiadÅ‚oÅ›ci grupa bÄ™dzia musiaÅ‚a mieć i utrzymywać wystarczajÄ…cy kredyt na używanie posiadÅ‚oÅ›ci. Przekazanie bÄ™dzie zawierać równoczesne przypisanie posiadÅ‚oÅ›ci do grupy od '[FIRST_NAME] [LAST_NAME]'. -Cena zakupu posiadÅ‚oÅ›ci nie jest zwracana wÅ‚aÅ›cicielowi. Jeżeli przekazana posiadÅ‚ość zostanie sprzedana, cana sprzedaży zostanie podzielona pomiÄ™dzy czÅ‚onków grupy. - -Przekazać tÄ… posiadÅ‚ość o powierzchni [AREA] m² grupie '[GROUP_NAME]'? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="DisplaySetToSafe" - > -Ustawienia grafiki zostaÅ‚y zmienione do bezpiecznego poziomu ponieważ opcja -safe zostaÅ‚a wybrana. - </notification> - - <notification - - name="DisplaySetToRecommended" - > -Ustawienia grafiki zostaÅ‚y zmienione do zalecanego poziomu na podstawie konfiguracji Twojego systemu. - </notification> - - <notification - - name="ErrorMessage" - > -[ERROR_MESSAGE] - </notification> - - <notification - - name="AvatarMoved" - > -Twoje miejsce [TYPE] jest obecnie niedostÄ™pne. [HELP] -Przeniesiono CiÄ™ do pobliskiego regionu. - </notification> - - <notification - - name="ClothingLoading" - > -Twoje ubranie wciąż siÄ™ Å‚aduje. -Możesz normalnie używać [SECOND_LIFE], inni użytkownicy bÄ™dÄ… CiÄ™ widzieli poprawnie. - <form name="form"> - <ignore name="ignore" - text="Åadowanie ubrania zajmuje dużo czasu"/> - </form> - </notification> - - <notification - - name="FirstRun" - > -Instalacja [SECOND_LIFE] zakoÅ„czona. - -Jeżeli używasz [SECOND_LIFE] po raz pierwszy to musisz stworzyć konto żeby móc siÄ™ zalogować. -Przejść na stronÄ™ www.secondlife.com żeby stworzyć nowe konto? - <usetemplate - name="okcancelbuttons" - notext="Kontynuuj" - yestext="Nowe Konto..."/> - </notification> - - <notification - - name="LoginPacketNeverReceived" - > -Problemy z połączeniem. Problem może być spowodowany Twoim połączeniem z Internetem albo może istnieć po stronie serwerów Second Life. - -Możesz sprawdzić swoje połączenie z Internetem i spróbować ponownie za kilka minut albo kliknij Pomoc żeby połączyć siÄ™ ze stronÄ… pomocy technicznej albo wybierz Teleportuj żeby spróbować teleportacji do Twojego miejsca startu. - <form name="form"> - <button - - - name="OK" - text="OK"/> - <button - - name="Help" - text="Pomoc"/> - <button - - name="Teleport" - text="Teleportuj"/> - </form> - </notification> - - <notification - - name="WelcomeChooseSex" - > -Twoja postać pojawi siÄ™ za moment. - -Używaj strzaÅ‚ek żeby sie poruszać. -NaciÅ›nij F1 w dowolnej chwili po pomoc albo żeby dowiedzieć siÄ™ wiÄ™cej o [SECOND_LIFE]. -Wybierz awatara wÅ‚aÅ›ciwej pÅ‚ci. -Ten wybór bÄ™dzie można później zmienić. - <usetemplate - name="okcancelbuttons" - notext="Kobieta" - yestext="Mężczyzna"/> - </notification> - - <notification - - name="NotEnoughCurrency" - > -[NAME] [PRICE]L$ Masz za maÅ‚o L$. - </notification> - - <notification - - name="GrantedModifyRights" - > -Masz teraz prawa modyfikacji obiektów należących do [FIRST_NAME] [LAST_NAME]. - </notification> - - <notification - - name="RevokedModifyRights" - > -Prawa modyfikacji obiektów należących do [FIRST_NAME] [LAST_NAME] zostaÅ‚y Ci odebrane. - </notification> - - <notification - - name="FlushMapVisibilityCaches" - > -To spowoduje wyczyszczenie buforów map regionu. -Jest to użyteczne wyłącznie podczas szukania błędów. -(Podczas produkcji poczekaj 5 minut i mapy wszystkich zostanÄ… uaktualnione po relogu.) - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="OnlyCopyContentsOfSingleItem" - > -Nie można kopiować zawartoÅ›ci wiÄ™cej niż jednego obiektu naraz. -Wybierz pojedynczy obiekt i spróbuj jeszcze raz. - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="KickUsersFromRegion" - > -Teleportować wszystkich Rezydentów z tego regionu to ich miejsca startu? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="EstateObjectReturn" - > -Na pewno chcesz odesÅ‚ać wszystkie obiekty należące do -[USER_NAME] ? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="InvalidTerrainBitDepth" - > -Nie można ustawić tekstur regionu: -Tekstura terenu [TEXTURE_NUM] ma niewÅ‚aÅ›ciwÄ… głębiÄ™ koloru - [TEXTURE_BIT_DEPTH]. -ZamieÅ„ teksturÄ™ [TEXTURE_NUM] na 24-o bitowÄ… teksturÄ™ o wymiarze 512x512 lub mniejszÄ… i ponownie kliknij Zastosuj. - </notification> - - <notification - - name="InvalidTerrainSize" - > -Nie można ustawić tekstur regionu: -Tekstura terenu [TEXTURE_NUM] jest za duża - [TEXTURE_SIZE_X]x[TEXTURE_SIZE_Y]. -ZamieÅ„ teksturÄ™ [TEXTURE_NUM] na 24-o bitowÄ… teksturÄ™ o wymiarze 512x512 lub mniejszÄ… i ponownie kliknij Zastosuj. - </notification> - - <notification - - name="RawUploadStarted" - > -Åadowanie rozpoczÄ™te. Może potrwać do dwóch minut zależnie od prÄ™dkoÅ›ci Twojego połączenia. - </notification> - - <notification - - name="ConfirmBakeTerrain" - > -Na pewno chcesz zapisać obecne uksztaÅ‚towanie terenu jako punkt odniesienia dla górnego i dolnego limitu terenu i jako domyÅ›lÄ… wartość dla opcji Odtwórz? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="MaxAllowedAgentOnRegion" - > -Maksimalna liczba goÅ›ci wynosi [MAX_AGENTS]. - </notification> - - <notification - - name="MaxBannedAgentsOnRegion" - > -Maksimalna liczba nieporzÄ…danych Rezydentów (banów) wynosi [MAX_BANNED]. - </notification> - - <notification - - name="MaxAgentOnRegionBatch" - > -Próba dodania [NUM_ADDED] osób nie powidÅ‚a siÄ™: -[MAX_AGENTS] [LIST_TYPE] limit przekroczony o [NUM_EXCESS]. - </notification> - - <notification - - name="MaxAllowedGroupsOnRegion" - > -Możesz mieć maksymalnie [MAX_GROUPS] Dozwolonych Grup. - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="Ustal"/> - </notification> - - <notification - - name="MaxManagersOnRegion" - > -Możesz mieć maksymalnie [MAX_MANAGER] ZarzÄ…dców MajÄ…tku. - </notification> - - <notification - - name="OwnerCanNotBeDenied" - > -Nie możesz dodać wÅ‚aÅ›ciciela majÄ…tku do listy 'NieporzÄ…danych Rezydentów (banów)' majÄ…tku. - </notification> - - <notification - - name="CanNotChangeAppearanceUntilLoaded" - > -Nie możesz zmienić wyglÄ…du podczas Å‚adowania ubraÅ„ i ksztaÅ‚tów. - </notification> - - <notification - - name="ClassifiedMustBeAlphanumeric" - > -TytuÅ‚ Twojej reklamy musi zaczynać siÄ™ od litery (A-Z) albo cyfry. Znaki przestankowe sÄ… niedozwolone. - </notification> - - <notification - - name="CantSetBuyObject" - > -Nie możesz wybrać Kup Obiekt ponieważ obiekt nie jest na sprzedaż. -Wybierz obiekt na sprzedaż i spróbuj jeszcze raz. - </notification> - - <notification - - name="FinishedRawDownload" - > -Plik surowego terenu zaÅ‚adowany pod: -[DOWNLOAD_PATH]. - </notification> - - <notification - - name="DownloadWindowsMandatory" - > -Nowa wersja [SECOND_LIFE] zostaÅ‚a opublikowana. -[MESSAGE] -Musisz zainstalować nowÄ… wersjÄ™ żeby używać [SECOND_LIFE]. - <usetemplate - name="okcancelbuttons" - notext="Wyłącz program" - yestext="ZaÅ‚aduj"/> - </notification> - - <notification - - name="DownloadWindows" - > -Uaktualniona wersja [SECOND_LIFE] zostaÅ‚a opublikowana. -[MESSAGE] -Aktualizacja nie jest wymagana ale jest zalecana w celu poprawy prÄ™dkoÅ›ci i stabilnoÅ›ci. - <usetemplate - name="okcancelbuttons" - notext="Kontynuuj" - yestext="ZaÅ‚aduj"/> - </notification> - - <notification - - name="DownloadWindowsReleaseForDownload" - > -Uaktualniona wersja [SECOND_LIFE] zostaÅ‚a opublikowana. -[MESSAGE] -Aktualizacja nie jest wymagana ale jest zalecana w celu poprawy prÄ™dkoÅ›ci i stabilnoÅ›ci. - <usetemplate - name="okcancelbuttons" - notext="Kontynuuj" - yestext="ZaÅ‚aduj"/> - </notification> - - <notification - - name="DownloadMacMandatory" - > -Nowa wersja [SECOND_LIFE] zostaÅ‚a opublikowana. -[MESSAGE] -Musisz zainstalować nowÄ… wersjÄ™ żeby używać [SECOND_LIFE]. - -ZaÅ‚adować do foldera Aplikacji? - <usetemplate - name="okcancelbuttons" - notext="Wyłącz program" - yestext="ZaÅ‚aduj"/> - </notification> - - <notification - - name="DownloadMac" - > -Uaktualniona wersja [SECOND_LIFE] zostaÅ‚a opublikowana. -[MESSAGE] -Aktualizacja nie jest wymagana ale jest zalecana w celu poprawy prÄ™dkoÅ›ci i stabilnoÅ›ci. - -ZaÅ‚adować do foldera Aplikacji? - <usetemplate - name="okcancelbuttons" - notext="Kontynuuj" - yestext="ZaÅ‚aduj"/> - </notification> - - <notification - - name="DownloadMacReleaseForDownload" - > -Uaktualniona wersja [SECOND_LIFE] zostaÅ‚a opublikowana. -[MESSAGE] -Aktualizacja nie jest wymagana ale jest zalecana w celu poprawy prÄ™dkoÅ›ci i stabilnoÅ›ci. - -ZaÅ‚adować do foldera Aplikacji? - <usetemplate - name="okcancelbuttons" - notext="Kontynuuj" - yestext="ZaÅ‚aduj"/> - </notification> - - <notification - - name="DeedObjectToGroup" - > -Przekazanie tego obiektu spowoduje, że grupa: -* Otrzyma L$ zapÅ‚acone temu obiektowi - <usetemplate - ignoretext="PrzekazujÄ…c obiekty grupom" - name="okcancelignore" - notext="Anuluj" - yestext="Przekaż"/> - </notification> - - <notification - - name="WebLaunchExternalTarget" - > -Otworzyć systemowÄ… przegłądarke żeby zobaczyć tÄ… zawartość? - <usetemplate - ignoretext="OtwierajÄ…c systemowÄ… przeglÄ…darkÄ™ żeby zobaczyć stronÄ™" - name="okcancelignore" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchJoinNow" - > -Otworzyć stronÄ™ www.secondlife.com żeby zarzÄ…dzać Twoim kontem? - <usetemplate - ignoretext="OtwierajÄ…c systemowÄ… przeglÄ…darkÄ™ żeby zarzÄ…dzać Twoim kontem" - name="okcancelignore" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchBugReport101" - > -Odwiedź [SECOND_LIFE] Wiki i zobacz jak zgÅ‚aszać błędy. - <usetemplate - ignoretext="OtwierajÄ…c przeglÄ…darkÄ™ żeby zobaczyć Wiki zgÅ‚aszania błędów" - name="okcancelignore" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchSecurityIssues" - > -Odwiedź [SECOND_LIFE] Wiki i zobacz jak zgÅ‚aszać problemy z bezpieczeÅ„stwem danych. - <usetemplate - ignoretext="OtwierajÄ…c przeglÄ…darkÄ™ żeby zobaczyć Wiki kwestii bezpieczeÅ„stwa danych" - name="okcancelignore" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchQAWiki" - > -Odwiedź [SECOND_LIFE] Wiki pytaÅ„ i odpowiedzi. - <usetemplate - ignoretext="OtwierajÄ…c przeglÄ…darkÄ™ żeby zobaczyć Wiki pytaÅ„ i odpowiedzi" - name="okcancelignore" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchPublicIssue" - > -Odwiedź [SECOND_LIFE] katalog publicznych problemów, gdzie możesz zgÅ‚aszać błędy i inne problemy. - <usetemplate - ignoretext="OtwierajÄ…c przeglÄ…darkÄ™ żeby zobaczyć katalog publicznych problemów" - name="okcancelignore" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchPublicIssueHelp" - > -Odwiedź [SECOND_LIFE] Wiki i sprawdź jak używać katalogu publicznych problemów. - <usetemplate - ignoretext="OtwierajÄ…c przeglÄ…darkÄ™ żeby zobaczyć Wiki katalogu publicznych problemów" - name="okcancelignore" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchSupportWiki" - > -Otwórz oficjalny blog Lindenów żeby zobaczyć nowe widaomoÅ›ci i informacje. - <usetemplate - ignoretext="OtwierajÄ…c przeglÄ…darkÄ™ żeby zobaczyć blog" - name="okcancelignore" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchLSLGuide" - > -Otworzyć przewodnik skryptowania po pomoc ze skryptami? - <usetemplate - ignoretext="OtwierajÄ…c przeglÄ…darkÄ™ żeby zobaczyć przewodnik skryptowania" - name="okcancelignore" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchLSLWiki" - > -Otworzyć portal LSL po pomoc ze skryptami? - <usetemplate - ignoretext="OtwierajÄ…c przeglÄ…darkÄ™ żeby zobaczyć portal LSL" - name="okcancelignore" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="ReturnToOwner" - > -Czy na pewno chcesz zwrócić wybrane obiekty do ich wÅ‚aÅ›cicieli? Wszystkie udostÄ™pnione obiekty z prawem transferu zostanÄ… zwrócone poprzednim wÅ‚aÅ›cicielom. - -*UWAGA* Wszystkie udostÄ™pnione obiekty bez prawa transferu zostanÄ… usuniÄ™te! - <usetemplate - ignoretext="ZwracajÄ…c obiekty ich wÅ‚aÅ›cicielom" - name="okcancelignore" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="GroupLeaveConfirmMember" - > -JesteÅ› czÅ‚onkiem grupy [GROUP]. -Chcesz opuÅ›cić grupÄ™? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmKick" - > -NA PEWNO chcesz wyrzucić wszystkich użytkowników z sieci? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="Wyrzuć Wszystkich Użytkowników"/> - </notification> - - <notification - - name="MuteLinden" - > -Przepraszamy, ale nie możesz wyciszyć Lindena. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - label="Błąd Wyciszenia Obiektu Przez NazwÄ™" - name="MuteByNameFailed" - > -Ta osoba zostaÅ‚a już wyciszona przez Ciebie. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="RemoveItemWarn" - > -Pomimo, że jest to dozwolone, usuniÄ™cie zawartoÅ›ci może zniszczyć obiekt. Chcesz usunąć? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="CantOfferCallingCard" - > -Nie możesz dać wizytówki w tym momencie. Spróbuj jeszcze raz za chwilÄ™. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="CantOfferFriendship" - > -Nie możesz zaoferować znajomoÅ›ci w tym momencie. Spróbuj jeszcze raz za chwilÄ™. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="BusyModeSet" - > -Tryb Pracy jest włączony. -Czat i IMy bedÄ… ukryte. WysÅ‚ane IMy bÄ™dÄ… otrzymywaÅ‚y TwojÄ… odpowiedź Trybu Pracy. Propozycje teleportacji bÄ™dÄ… odrzucone. -Podarowane obiekty trafiÄ… do Twojego Å›mietnika. - <usetemplate - ignoretext="WłączajÄ…c Tryb Pracy" - name="okignore" - yestext="OK"/> - </notification> - - <notification - - name="JoinedTooManyGroupsMember" - > -Należysz już do maksymalnej iloÅ›ci grup. -Musisz opuÅ›cić przynajmniej jednÄ… grupÄ™ żeby przyjąć czÅ‚onkostwo w tej grupie, albo musisz odmówić. W celu opuszczenia grupy wybierz opcjÄ™ 'Grupy...' z menu 'Edycja'. -[NAME] oferuje Ci czÅ‚onkostwo w grupie. -[INVITE] - <usetemplate - name="okcancelbuttons" - notext="Odmów" - yestext="Przyjmij"/> - </notification> - - <notification - - name="KickUser" - > -Z jakim komunikatem wyrzucić tego użytkownia? - <form name="form"> - <input name="message" type="text"> -Administrator wylogowaÅ‚ CiÄ™. - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Anuluj"/> - </form> - </notification> - - <notification - - name="KickAllUsers" - > -Z jakim komunikatem wyrzucić wszystkich użytkowników z sieci? - <form name="form"> - <input name="message" type="text"> -Administrator wylogowaÅ‚ CiÄ™. - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Anuluj"/> - </form> - </notification> - - <notification - - name="FreezeUser" - > -Z jakim komunikatem unieruchomić tego użytkownia? - <form name="form"> - <input name="message" type="text"> -Unieruchomiono CiÄ™. Nie możesz siÄ™ ruszać ani rozmawiać. Administrator skontaktuje siÄ™ z TobÄ… poprzez IM. - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Anuluj"/> - </form> - </notification> - - <notification - - name="UnFreezeUser" - > -Z jakim komunikatem odblokować tego użytkownia? - <form name="form"> - <input name="message" type="text"> -Odblokowano CiÄ™. - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Anuluj"/> - </form> - </notification> - - <notification - - name="OfferTeleport" - > -Zaproponować teleportacjÄ™ do miejsca Twojego pobytu z tÄ… wiadomoÅ›ciÄ…? - <form name="form"> - <input name="message" type="text"> -Zapraszam do siebie. Region: [REGION] - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Anuluj"/> - </form> - </notification> - - <notification - - name="OfferTeleportFromGod" - > -Wymusić przeniesienie użytkownika do miejsca Twojego pobytu? - <form name="form"> - <input name="message" type="text"> -Zapraszam do siebie. Region: [REGION] - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Anuluj"/> - </form> - </notification> - - <notification - - name="TeleportFromLandmark" - > -Na pewno chcesz siÄ™ teleportować? - <usetemplate - ignoretext="TeleportujÄ…c z miejsca (LM) z Twojej szafy" - name="okcancelignore" - notext="Anuluj" - yestext="Teleportuj"/> - </notification> - - <notification - - label="Wiadomość do Wszystkich w Twoim MajÄ…tku" - name="MessageEstate" - > -Wpisz krótkÄ… wiadomość która zostanie wysÅ‚ana do wszystkich osób w Twoim majÄ…tku. - <form name="form"> - <input name="message" type="text"/> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Anuluj"/> - </form> - </notification> - - <notification - - label="Zmiana MajÄ…tku Lindenów" - name="ChangeLindenEstate" - > -Zmieniasz majÄ…tek należący do Lindenów (główny obszar, sieć nastolatków, przedszkole, itd). - -Jest to BARDZO NIEBEZPIECZNE ponieważ może drastycznie zmienić percepcjÄ™ użytkowników. W głównym obszarze tysiÄ…ce regionów zostanie zmienione i spowoduje chwilowe problemy serwera przestrzeni. - -Kontynuować? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - label="Zmiana DostÄ™pu do MajÄ…tku Lindenów" - name="ChangeLindenAccess" - > -Zmieniasz listÄ™ dostÄ™pu do majÄ…tku należącego do Lindenów (główny obszar, sieć nastolatków, przedszkole, itd). - -Jest to NIEBEZPIECZNE i powinno być używane wyłącznie w celu uruchomienia opcji pozwalajÄ…cej na przeniesienie obiektów/L$ do/z sieci. -TysiÄ…ce regionów zostanie zmienione i spowoduje chwilowe problemy serwera przestrzeni. - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - label="Wybierz MajÄ…tek" - name="EstateAllowedAgentAdd" - > -Dodać do listy dostÄ™pu do tego majÄ…tku czy do [ALL_ESTATES]? - <usetemplate - canceltext="Anuluj" - name="yesnocancelbuttons" - notext="Wszystkie majÄ…tki" - yestext="Ten majÄ…tek"/> - </notification> - - <notification - - label="Wybierz MajÄ…tek" - name="EstateAllowedAgentRemove" - > -Usunąć z listy dostÄ™pu do tego majÄ…tku czy do [ALL_ESTATES]? - <usetemplate - canceltext="Anuluj" - name="yesnocancelbuttons" - notext="Wszystkie majÄ…tki" - yestext="Ten majÄ…tek"/> - </notification> - - <notification - - label="Wybierz MajÄ…tek" - name="EstateAllowedGroupAdd" - > -Dodać do listy dostÄ™pu grup do tego majÄ…tku czy do [ALL_ESTATES]? - <usetemplate - canceltext="Anuluj" - name="yesnocancelbuttons" - notext="Wszystkie majÄ…tki" - yestext="Ten majÄ…tek"/> - </notification> - - <notification - - label="Wybierz MajÄ…tek" - name="EstateAllowedGroupRemove" - > -Usunąć z listy dostÄ™pu grup do tego majÄ…tku czy do [ALL_ESTATES]? - <usetemplate - canceltext="Anuluj" - name="yesnocancelbuttons" - notext="Wszystkie majÄ…tki" - yestext="Ten majÄ…tek"/> - </notification> - - <notification - - label="Wybierz MajÄ…tek" - name="EstateBannedAgentAdd" - > -Zablokować dostÄ™p do tego majÄ…tku czy do [ALL_ESTATES]? - <usetemplate - canceltext="Anuluj" - name="yesnocancelbuttons" - notext="Wszystkie majÄ…tki" - yestext="Ten majÄ…tek"/> - </notification> - - <notification - - label="Wybierz MajÄ…tek" - name="EstateBannedAgentRemove" - > -Zdjąć tego Rezydenta z listy niepożądanych (bany) dla tego majÄ…tku czy dla [ALL_ESTATES]? - <usetemplate - canceltext="Anuluj" - name="yesnocancelbuttons" - notext="Wszystkie majÄ…tki" - yestext="Ten majÄ…tek"/> - </notification> - - <notification - - label="Wybierz MajÄ…tek" - name="EstateManagerAdd" - > -Dodać zarzÄ…dce majÄ…tku do tego majÄ…tku czy do [ALL_ESTATES]? - <usetemplate - canceltext="Anuluj" - name="yesnocancelbuttons" - notext="Wszystkie majÄ…tki" - yestext="Ten majÄ…tek"/> - </notification> - - <notification - - label="Wybierz MajÄ…tek" - name="EstateManagerRemove" - > -Usunąć zarzÄ…dce majÄ…tku z tego majÄ…tku czy z [ALL_ESTATES]? - <usetemplate - canceltext="Anuluj" - name="yesnocancelbuttons" - notext="Wszystkie majÄ…tki" - yestext="Ten majÄ…tek"/> - </notification> - - <notification - - label="Potwierdź Wyrzucenie" - name="EstateKickUser" - > -Wyrzucić [EVIL_USER] z tego majÄ…tku? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="EstateChangeCovenant" - > -Na pewno chcesz zminić treść umowy dla tego majÄ…tku? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="ProblemImportingEstateCovenant" - > -Problem z importem umowy majÄ…tku. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="ProblemAddingEstateManager" - > -Problemy z dodawaniem nowego zarzÄ…dcy majÄ…tku. Jeden lub wiÄ™caj majÄ…tk może mieć wypeÅ‚nionÄ… listÄ™ zarzÄ…dców. - </notification> - - <notification - - name="ProblemAddingEstateGeneric" - > -Problemy z dodawaniem do listy majÄ…tku. Jeden lub wiÄ™caj majÄ…tk może mieć wypeÅ‚nionÄ… listÄ™. - </notification> - - <notification - - name="UnableToLoadNotecard" - > -Nie można zaÅ‚adować danych notki w tym momencie. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="NotAllowedToViewNotecard" - > -NiewystarczajÄ…ce prawa do zobaczenia notki przypisanej do wybranego ID. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="MissingNotecardAssetID" - > -ID notki nie znalezione w bazie danych. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="PublishClassified" - > -PamiÄ™taj: OpÅ‚aty za reklamÄ™ sÄ… bezzwrotne. - -ZamieÅ›cić tÄ… reklamÄ™ za [AMOUNT]L$? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - - - - - <notification - - label="Potwierdź Restart" - name="ConfirmRestart" - > -Na pewno chcesz zrobić restart tego regionu za 2 minuty? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - label="Wiadomość do Wszystkich w tym Regionie" - name="MessageRegion" - > -Wpisz krótkÄ… wiadomość która zostanie wysÅ‚ana do wszystkich osób w tym regionie. - <form name="form"> - <input name="message" type="text"/> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Anuluj"/> - </form> - </notification> - - <notification - - label="Blokowanie KsztaÅ‚towania Terenu" - name="HelpRegionBlockTerraform" - > -Jeżeli ta opcja jest wybrana wÅ‚aÅ›ciciele posiadÅ‚oÅ›ci nie bÄ™dÄ… mogli ksztaÅ‚tować terenu niezależnie od ustawienia opcji 'Edycja Terenu' dla posiadÅ‚oÅ›ci. - -DomyÅ›lnie: nie wybrana - </notification> - - <notification - - label="Blokowanie Latania" - name="HelpRegionBlockFly" - > -Jeżeli ta opcja jest wybrana ludzie nie bÄ™dÄ… mogli latać w tym regionie niezależnie od ustawienia opcji 'Latanie' dla posiadÅ‚oÅ›ci. - -DomyÅ›lnie: nie wybrana - </notification> - - <notification - - label="Zezwalanie na Uszkodzenia" - name="HelpRegionAllowDamage" - > -Jeżeli ta opcja jest wybrana system zdrowia bÄ™dzie aktywny we wszystkich posiadÅ‚oÅ›ciach niezależnie od ustawieÅ„ dla indywidualnych posiadÅ‚oÅ›ci. Jeżeli ta opcja nie jest wybrana wÅ‚aÅ›ciciele indywidualych posiadÅ‚oÅ›ci bÄ™dÄ… mogli kontrolować system zdrowia w swoich posiadÅ‚oÅ›ciach. - -DomyÅ›lnie: nie wybrana - </notification> - - <notification - - label="Limit Liczby Awatarów" - name="HelpRegionAgentLimit" - > -Wybierz maksymalnÄ… liczbÄ™ awatarów dozwolonÄ… w tym regionie. -Wydajność systemu może siÄ™ zmieniać w zależnoÅ›ci od liczby obecnych awatarów. - -DomyÅ›lnie: 40 - </notification> - - <notification - - label="Ekstra Obiekty" - name="HelpRegionObjectBonus" - > -Ekstra Obiekty jest to mnożnik dla dozwolonych elementów (obiektów prostych). Dozwolony zakres to 1 do 10. Ustawienie '1' pozwala na 117 elementów na każdej posiadÅ‚oÅ›ci o powierzchni 512m. Ustawienie '2' pozwala na 234 elementy, czyli dwa razy tyle, itd. -Maksymalna liczba elementów w regionie to 15000 niezależnie od ustawienia Ekstra Obiektów. PamiÄ™taj - zmniejszenie Ekstra Obiektów po fakcie może spowodować odsyÅ‚anie lub usuwanie istniejÄ…cych obiektów. - -DomyÅ›lnie: 1,0 - </notification> - - - - <notification - - label="Blokowanie Popychania" - name="HelpRegionRestrictPushObject" - > -Ta opcja powoduje, że popychanie bÄ™dzie ograniczone w caÅ‚ym regionie. Jeżeli ta opcja jest wybrana Rezydenci mogÄ… być popchniÄ™ci tylko przez samych siebie lub przez wÅ‚aÅ›ciciela posiadÅ‚oÅ›ci. -(Popychanie odnosi sie do funkcji llPushObject() w LSL.) - -DomyÅ›lnie: nie wybrana - </notification> - - <notification - - label="Dzielenie / ÅÄ…czenie PosiadÅ‚oÅ›ci" - name="HelpParcelChanges" - > -Ta opcja kontroluje czy posiadÅ‚oÅ›ci nie należące do wÅ‚aÅ›ciciela tego majÄ…tku mogÄ… być łączone / dzielone. -Jeżeli opcja nie jest wybrana: -* Tylko wÅ‚aÅ›ciciele majÄ…tku i zarzÄ…dcy mogÄ… łączyć / dzielić posiadÅ‚oÅ›ci. -* Tylko posiadÅ‚oÅ›ci należące do wÅ‚aÅ›ciciela albo do grupy mogÄ… być - łączone / dzielone przez czÅ‚onków z wystarczajÄ…cymi prawami. -Jeżeli ta opcja jest wybrana: -* Wszyscy wÅ‚aÅ›ciciele mogÄ… łączyć / dzielić swoje posiadÅ‚oÅ›ci. -* PosiadÅ‚oÅ›ci należące do grupy mogÄ… być łączone / dzielone - przez czÅ‚onków z wystarczajÄ…cymi prawami. - -DomyÅ›lnie: wybrana - </notification> - - <notification - - label="Nie Pokazuj w Wyszukiwaniu" - name="HelpRegionSearch" - > -Wybranie tej opcji uniemożliwi wÅ‚aÅ›cicielom posiadÅ‚ość wyÅ›wietlanie ich posiadÅ‚oÅ›ci w wyszukiwaniu -DomyÅ›linie: nie wybrana - </notification> - - <notification - - label="Zmienione Restrykcje Wieku dla Regionu" - name="RegionMaturityChange" - > -Ustawienie restrykcji wieku dla regionu zostaÅ‚o zmienione. -Zazwyczaj musi upÅ‚ynąć nieco czasu zanim ta zmiana zostanie odzwierciedlona na mapie. - </notification> - - <notification - - label="Odsprzedaż PosiadÅ‚oÅ›ci" - name="HelpRegionLandResell" - > -WÅ‚aÅ›ciciele majÄ…tku i zarzÄ…dcy mogÄ… sprzedawać posiadÅ‚oÅ›ci należące do wÅ‚aÅ›ciciela majÄ…tku. -Jeżeli ta opcja nie jest wybrana kupujÄ…cy nie bÄ™dÄ… mogli odsprzedać posiadÅ‚oÅ›ci w tym regionie. -Jeżeli ta opcja jest wybrana kupujÄ…cy bÄ™dÄ… mogli odsprzedać posiadÅ‚oÅ›ci w tym regionie. - -DomyÅ›linie: nie pozwalaj - </notification> - - <notification - - label="Wyłącz Skrypty" - name="HelpRegionDisableScripts" - > -SÅ‚aba wydajność / prÄ™dkość symulatora może być spowodowana przez skrypt. Otwórz panel Statystyki (Ctrl-Shift-1). Sprawdź ilość klatek na sekundÄ™ (FPS) w Fizyce Symulatora. Jeżeli jest mniej niż 45 wybierz panel Czas znajdujÄ…cy siÄ™ na dole panelu Statystyki. Jeżeli Czas Skryptów wynosi 25 ms lub wiÄ™cej kliknij na Główne Skrypty. Zobaczysz listÄ™ nazw i lokacji skryptów które mogÄ… być odpowiedzialne za pogorszenie wydajnoÅ›ci. - -Wybranie opcji Wyłącz Skrypty i naciÅ›niÄ™cie Zastosuj tymczasowo wyłączy wszystkie skrypty w tym regionie. Wybranie tej opcji może być niezbÄ™dne w celu umożliwienia podróży do lokacji wymienionego Głównego Skryptu. -Po przebyciu na miejsce zobacz skrypt i sprawdź czy jest on źródÅ‚em problemu. W razie potrzeby skontaktuj siÄ™ z wÅ‚aÅ›cicielem skryptu albo usuÅ„ lub zwróć obiekt. -Wyłączenie opcji Wyłącz Skrypty i naciÅ›niÄ™cie Zastosuj ponownie włączy skrypty w tym regionie. - -DomyÅ›lnie: nie wybrana - </notification> - - <notification - - label="Wyłącz Kolizje" - name="HelpRegionDisableCollisions" - > -SÅ‚aba wydajność / prÄ™dkość symulatora może być spowodowana przez fizyczne obiekty. Otwórz panel Statystyki (Ctrl-Shift-1). Sprawdź ilość klatek na sekundÄ™ (FPS) w Fizyce Symulatora. Jeżeli jest mniej niż 45 wybierz panel Czas znajdujÄ…cy siÄ™ na dole panelu Statystyki. Jeżeli Czas Symulatora (Fizyka) wynosi 20 ms lub wiÄ™cej kliknij na Główne Kolizje. Zobaczysz listÄ™ nazw i lokacji fizycznych obiektów które mogÄ… być odpowiedzialne za pogorszenie wydajnoÅ›ci. - -Wybranie opcji Wyłącz Kolizje i naciÅ›niÄ™cie Zastosuj tymczasowo wyłączy kolizje obiektów. Wybranie tej opcji może być niezbÄ™dne w celu umożliwienia podróży do lokacji wymienionych Główneych Kolizji. -Po przebyciu na miejsce zobacz obiekt i sprawdź czy jest on źródÅ‚em kolizji z innymi obiektami. W razie potrzeby skontaktuj siÄ™ z wÅ‚aÅ›cicielem obiektu albo usuÅ„ lub zwróć obiekt. -Wyłączenie opcji Wyłącz Kolizje i naciÅ›niÄ™cie Zastosuj ponownie włączy kolizje w tym regionie. - -DomyÅ›lnie: nie wybrana - </notification> - - <notification - - label="Wyłącz FizykÄ™" - name="HelpRegionDisablePhysics" - > -Opcja Wyłącz FizykÄ™ jest podobna do opcji Wyłącz Kolizje i spowoduje wyłączenie symulacji fizyki. Oznacza to, że nie tylko obiekty przestanÄ… siÄ™ zderzać, ale również awatary nie bÄ™dÄ… siÄ™ mogÅ‚y poruszać. - -Ta opcja powinna być używana wyłącznie w przypadku kiedy użycie opcji Wyłącz Kolizje nie zwiÄ™ksza wystarczajÄ…co wydajnoÅ›ci symulatora w celu sprawdzenia problemów zwiÄ…zanych z fizykÄ… i z kolizjami. - -Po zakoÅ„czeniu badaÅ„ musisz ponownie włączyć fizykÄ™ żeby awatary mogÅ‚y siÄ™ poruszać. - -DomyÅ›lnie: nie wybrana - </notification> - - <notification - - label="Główne Kolizje" - name="HelpRegionTopColliders" - > -Pokaż listÄ™ obiektów potencjalnie doÅ›wiadczajÄ…cych najwiÄ™kszej iloÅ›ci kolizji miÄ™dzy obiektami. Te obiekty mogÄ… być odpowiedzialne za zmniejszenie wydajnoÅ›ci. Wybierz Widok > Statystyki i zobacz Symulator > Czas > Czas Symulatora (Fizyka) i sprawdź czy wiÄ™cej niż 20 ms jest spÄ™dzane w fizyce. - </notification> - - <notification - - label="Główne Skrypty" - name="HelpRegionTopScripts" - > -Pokaż listÄ™ obiektów spÄ™dzajÄ…cych najwÄ™cej czasu wykonujÄ…c skrypty LSL. Te obiekty mogÄ… być odpowiedzialne za zmniejszenie wydajnoÅ›ci. Wybierz Widok > Statystyki i zobacz Symulator > Czas > Czas Skryptów i sprawdź czy wiÄ™cej niż 25 ms jest spÄ™dzane w skryptach. - </notification> - - <notification - - label="Restart Regionu" - name="HelpRegionRestart" - > -Restart procesu na serwerze obsÅ‚ugujÄ…cym ten region za dwie minuty. Wszyscy Rezydenci w tym regionie zostanÄ… wylogowani. Region zapisze swoje dane i powinien wystartować w przeciÄ…gu 90 sekund. - -Restart regionu nie naprawi wiÄ™kszoÅ›ci problemów zwiÄ…zanych z wydajnoÅ›ciÄ… / prÄ™dkoÅ›ciÄ… i generalnie powinnien być używany na polecenie. - </notification> - - <notification - - label="Poziom Wody" - name="HelpRegionWaterHeight" - > -Jest to poziom w metrach gdzie pojawia siÄ™ woda. Jeżeli jest wybrana inna wartość niż 20 i Twoja woda sÄ…siaduje z krawÄ™dziÄ… Å›wiata lub pustym miejscem to bÄ™dzie widoczny uskok. - -DomyÅ›lnie: 20 - </notification> - - <notification - - label="Wznoszenie Terenu" - name="HelpRegionTerrainRaise" - > -Jest to dystans w metrach o który wÅ‚aÅ›ciciele posiadÅ‚oÅ›ci mogÄ… podnieść teren powyżej ustalonego poziomu odniesienia. - -DomyÅ›lnie: 4 - </notification> - - <notification - - label="Obniżanie Terenu" - name="HelpRegionTerrainLower" - > -Jest to dystans w metrach o który wÅ‚aÅ›ciciele posiadÅ‚oÅ›ci mogÄ… obniżyć teren poniżej ustalonego poziomu odniesienia. - -DomyÅ›lnie: -4 - </notification> - - <notification - - label="Åadowanie RAW Terenu" - name="HelpRegionUploadRaw" - > -Ten przycisk Å‚aduje plik .RAW dla tego regionu. -Plik musi mieć poprawne wymiary (RGB, 256x256) i 13 kanałów. -Najprostszy sposób na stworzenie pliku terenu to zapisanie istniejÄ…cego pliku RAW. Zalecany pierwszy krok to modyfikacje kanaÅ‚u czerwieni (wysokość terenu) i Å‚adowanie nowego pliku. - -Åadowanie pliku może zająć 45 sekund. ZaÅ‚adowanie terenu nie przemieÅ›ci obiektów znajdujÄ…cych siÄ™ na tym terenie, tylko teren i prawa przypisane do posiadÅ‚oÅ›ci ulegnÄ… zmianie. Może to spowodować, że niektóre obiekty zniknÄ… pod ziemiÄ…. - -Aby uzyskać wiÄ™cej informacji o edycji map wysokoÅ›ci sprawdź F1 Pomoc. - </notification> - - <notification - - label="Zapisywanie RAW Terenu" - name="HelpRegionDownloadRaw" - > -Ten przycisk zapisuje plik zawierajÄ…cy mapÄ™ wysokoÅ›ci, wymiary posiadÅ‚oÅ›ci, dane o posiadÅ‚oÅ›ciach na sprzedaż i niektóre prawa przypisane do posiadÅ‚oÅ›ci w tym regionie. Jeżeli otwierasz ten plik w programie takim jak Photoshop musisz zdefniować wymiary dokumentu jako: RGB, 256x256, 13 kanałów. Ten plik terenu nie może zostać otwarty w żaden inny sposób. - -Aby uzyskać wiÄ™cej informacji o edycji map wysokoÅ›ci sprawdź F1 Pomoc. - </notification> - - <notification - - label="Używaj SÅ‚oÅ„ca MajÄ…tku" - name="HelpRegionUseEstateSun" - > -Ta opcja ustala pozycjÄ™ sÅ‚oÅ„ca w tym regionie żeby byÅ‚a taka sama jak pozycja sÅ‚oÅ„ca w reszcie majÄ…tku. - -DomyÅ›lnie: włączona - </notification> - - <notification - - label="StaÅ‚e SÅ‚oÅ„ce" - name="HelpRegionFixedSun" - > -Ta opcja ustala pozycjÄ™ sÅ‚oÅ„ca do pozycji w suwaku faz i unieruchamia sÅ‚oÅ„ce w wybranej pozycji. - -DomyÅ›lnie: nie włączona - </notification> - - <notification - - label="Ustalanie Terenu" - name="HelpRegionBakeTerrain" - > -Ten przycisk zapisuje obecne uksztaÅ‚towanie terenu jako nowy punkt odniesienia dla regionu. Po ustaleniu punktu odniesienia teren może zostać odtworzony do zapisanego ksztaÅ‚tu wybierajÄ…c opcjÄ™ Odtwórz w Edycji Terenu. Zapisany, ustalony teren jest również punktem odniesienia dla górnego i dolnego limitu zmian wysokoÅ›ci. - </notification> - - <notification - - label="ZarzÄ…dcy MajÄ…tku" - name="HelpEstateEstateManager" - > -ZarzÄ…dca majÄ…tku jest Rezydentem oddelegowanym przez Ciebie do kontroli ustawieÅ„ regionu i majÄ…tku. ZarzÄ…dca majÄ…tku może zmieniać wszystkie ustawienia dostÄ™pne na tym panelu, za wyjÄ…tkiem Å‚adowania, zapisywania i ustalania terenu. W szczgólnoÅ›ci może kontrolować dostÄ™p innych Rezydentów (bany) do Twojego majÄ…tku. - -ZarzÄ…dcy majÄ…tku mogÄ… być dodawani i usuwani wyłącznie przez wÅ‚aÅ›ciciela majÄ…tku. Wybieraj na zarzÄ…dców tylko tych Rezydentów którym ufasz ponieważ ponosisz odpowiedzialność za ich dziaÅ‚ania. - </notification> - - <notification - - label="Używaj Globalnego Czasu" - name="HelpEstateUseGlobalTime" - > -Ta opcja ustala pozycjÄ™ sÅ‚oÅ„ca w Twoim majÄ…tku żeby byÅ‚a taka sama jak pozycja sÅ‚oÅ„ca w regionach głównych należących do Lindenów. - </notification> - - <notification - - label="StaÅ‚e SÅ‚oÅ„ce" - name="HelpEstateFixedSun" - > -Ta opcja ustala pozycjÄ™ sÅ‚oÅ„ca do pozycji w suwaku faz i unieruchamia sÅ‚oÅ„ce w wybranej pozycji. - </notification> - - <notification - - label="DostÄ™p Publiczny" - name="HelpEstateExternallyVisible" - > -Ta opcja kontroluje czy Rezydenci znajdujÄ…cy siÄ™ w innych majÄ…tkach mogÄ… przenosić siÄ™ do tego majÄ…tku jeżeli nie sÄ… umieszczeni na liÅ›cie dostÄ™pu. - -DomyÅ›lnie: włączona - </notification> - - <notification - - label="Pozwalaj na BezpoÅ›redniÄ… TeleportacjÄ™" - name="HelpEstateAllowDirectTeleport" - > -Włączenie tej opcji pozwala Rezydentom na bezpoÅ›redniÄ… teleportacjÄ™ do dowolnego miejsca a Twoim majÄ…tku. Jeżeli ta opcja nie jest wyłączona Rezydenci mogÄ… siÄ™ teleportować do najbliższego teleportera. - -DomyÅ›lnie: nie włączona - </notification> - - <notification - - label="DostÄ™p do MajÄ…tku" - name="HelpEstateAllowResident" - > -DostÄ™p do tego majÄ…tku bÄ™dzie ograniczony do wymienionych Rezydentów i poniższych grup. Ta opcja jest dostÄ™pna tylko wtedy kiedy opcja DostÄ™pu Publicznego jest wyłączona. - </notification> - - <notification - - label="DostÄ™p Grup do MajÄ…tku" - name="HelpEstateAllowGroup" - > -DostÄ™p do tego majÄ…tku bÄ™dzie ograniczony do wymienionych grup i powyższych Rezydentów. Ta opcja jest dostÄ™pna tylko wtedy kiedy opcja DostÄ™pu Publicznego jest wyłączona. - </notification> - - <notification - - label="Email o Nadużyciach" - name="HelpEstateAbuseEmailAddress" - > -Wpisanie ważnego email adresu spowoduje, że raporty o nadużyciach w obrÄ™bie tego majÄ…tku bÄ™dÄ… wysyÅ‚ane na ten adres. Zostawienie pustego miejsca spowoduje, że raporty o nadużyciach bÄ™dÄ… wysyÅ‚ane wyłącznie do Linden Lab. - </notification> - - <notification - - label="WstÄ™p Wzbroniony (bany)" - name="HelpEstateBanResident" - > -Rezydenci umieszczeni na tej liÅ›cie nie majÄ… dostÄ™pu do Twojego majÄ…tku, niezależnie od jakichkolwiek innych ustawieÅ„. - </notification> - - <notification - - label="Pozwalaj na Rozmowy" - name="HelpEstateVoiceChat" - > -PosiadÅ‚oÅ›ci w tym majÄ…tku mogÄ… mieć wÅ‚asne kanaÅ‚y gÅ‚osu pozwalajÄ…ce Rezydentom na rozmowy z osobami w pobliżu. - -DomyÅ›lnie: nie włączone - </notification> - - <notification - - label="Wersja Niezgodna z Systemem Rozmów" - name="VoiceVersionMismatch" - > -Ta wersja Second Life nie jest kompatybilna z systemem Rozmów w tym regionie. Musisz zainstalować aktualnÄ… wersjÄ™ Second Life żeby Rozmowy dziaÅ‚aÅ‚y porawnie. - </notification> - - <notification - - label="Umowa MajÄ…tku" - name="HelpEstateCovenant" - > -Włączenie opcji umowy majÄ…tku jest wymagane w celu umożliwienia sprzedaży posiadÅ‚oÅ›ci w obrÄ™bie majÄ…tku. -Jeżeli opcja umowy nie jest wybrana sprzedaż posiadÅ‚oÅ›ci nie jest dozwolona. Notka okreÅ›lajÄ…ca TwojÄ… umowÄ™ może być pusta jeżeli nie chcesz ustalić zasad specyficznych dla Twojego majÄ…tku i jeżeli nie chcesz uprzedzać nabywców o faktach odnoszÄ…cych siÄ™ do posiadÅ‚oÅ›ci przed zakupem. - -Umowa może być używana w celu okreÅ›lenia zasad, zaleceÅ„, przekazywania informacji o kulturze lub, po prostu, Twoich wÅ‚asnych oczekiwaÅ„ w odniesieniu do potencjalnego nabywacy. -Możesz zdefiniować zasady podziaÅ‚u posidÅ‚oÅ›ci, prawa budowlane, zasady opÅ‚at i wszystkie dodatkowe informacje z którymi nowy wÅ‚aÅ›ciciel powinien zapoznać siÄ™ i zaakceptować przed zakupem. - -Nabywca musi wybrać opcjÄ™ akceptacji umowy żeby trasakcja mogÅ‚a zostać sfinalizowana. Umowa majÄ…tku jest zawsze dostÄ™pna w dialogu O PosiadÅ‚oÅ›ci dla każedej posiadÅ‚oÅ›ci ze zdefinowanÄ… umowÄ…. - </notification> - - <notification - - label="Nie Można Kupić Obiektów" - name="BuyObjectOneOwner" - > -Jednorazowo możesz kupować tylko od jednego wÅ‚aÅ›ciciela. -Wybierz pojedynczy obiekt i spróbuj jeszcze raz. - </notification> - - <notification - - label="Nie Można Kupić ZawartoÅ›ci" - name="BuyContentsOneOnly" - > -Jednorazowo możesz kupić zawartość tylko jednego obiektu. -Wybierz pojedynczy obiekt i spróbuj jeszcze raz. - </notification> - - <notification - - label="Nie Można Kupić ZawartoÅ›ci" - name="BuyContentsOneOwner" - > -Jednorazowo możesz kupować tylko od jednego wÅ‚aÅ›ciciela. -Wybierz pojedynczy obiekt i spróbuj jeszcze raz. - </notification> - - <notification - - name="BuyOriginal" - > -Kupić oryginalny obiekt od [OWNER] za [PRICE]L$? -Zostaniesz wÅ‚aÅ›cicielem tego obiektu z nastÄ™pujÄ…cymi prawami: - Modyfikacje: [MODIFYPERM] - Kopiowanie: [COPYPERM] - Odsprzedawanie i Oddawanie: [RESELLPERM] - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="BuyOriginalNoOwner" - > -Kupić oryginalny obiekt za [PRICE]L$? -Zostaniesz wÅ‚aÅ›cicielem tego obiektu z nastÄ™pujÄ…cymi prawami: - Modyfikacje: [MODIFYPERM] - Kopiowanie: [COPYPERM] - Odsprzedawanie i Oddawanie: [RESELLPERM] - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="BuyCopy" - > -Kupić kopiÄ™ obiektu od [OWNER] za [PRICE]L$? -Obiekt zostanie skopiowany do Twojej szafy z nastÄ™pujÄ…cymi prawami: - Modyfikacje: [MODIFYPERM] - Kopiowanie: [COPYPERM] - Odsprzedawanie i Oddawanie: [RESELLPERM] - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="BuyCopyNoOwner" - > -Kupić kopiÄ™ obiektu za [PRICE]L$? -Obiekt zostanie skopiowany do Twojej szafy z nastÄ™pujÄ…cymi prawami: - Modyfikacje: [MODIFYPERM] - Kopiowanie: [COPYPERM] - Odsprzedawanie i Oddawanie: [RESELLPERM] - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="BuyContents" - > -Kupić zawartość od [OWNER] za [PRICE]L$? -Zawartość zostanie skopiowana do Twojej szafy. - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="BuyContentsNoOwner" - > -Kupić zawartość za [PRICE]L$? -Zawartość zostanie skopiowana do Twojej szafy. - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmPurchase" - > -Ta transakcja spowoduje: -[ACTION] - -Na pewno chcesz dokonać tego zakupu? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmPurchasePassword" - type="password"> -Ta transakcja spowoduje: -[ACTION] - -Na pewno chcesz dokonać tego zakupu? -Wpisz hasÅ‚o ponownie i kliknij OK. - <form name="form"> - <input - name="message" - type="password"/> - <button - - - name="ConfirmPurchase" - text="OK"/> - <button - - name="Cancel" - text="Anuluj"/> - </form> - </notification> - - <notification - - name="SetPickLocation" - > -Uwaga: -Lokacja tego wyboru zostaÅ‚a zaktualizowana ale pozostaÅ‚e szczegóły zachowajÄ… oryginalne wartoÅ›ci. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="MoveInventoryFromObject" - > -Wybrane obiekty szafy nie majÄ… praw kopiowania. -Obiekty zostanÄ… przeniesione do Twojej szafy, nie zostanÄ… skopiowane. - -Przenieść obiekty szafy? - <usetemplate - ignoretext="PrzenoszÄ…c szafÄ™ bez praw kopiowania z obiektów" - name="okcancelignore" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="MoveInventoryFromScriptedObject" - > -Wybrane obiekty szafy nie majÄ… praw kopiowania. -Obiekty zostanÄ… przeniesione do Twojej Szafy, nie zostanÄ… skopiowane. -Ponieważ obiekty zawierajÄ… skrypty, przeniesienie obiektów do Twojej szafy może spowodować niepoprawne dziaÅ‚anie skryptów. - -Przenieść obiekty szafy? - <usetemplate - ignoretext="PrzenoszÄ…c szafÄ™ bez praw kopiowania ze skryptowanych obiektów" - name="okcancelignore" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="ClickActionNotPayable" - > -Uwaga: Opcja ZapÅ‚ać Obiektowi zostaÅ‚a wybrana, ale żeby ta opcja dziaÅ‚aÅ‚a musi być dodany skrypt z funkcjÄ… money(). - <form name="form"> - <ignore name="ignore" - text="WybierajÄ…c opcjÄ™ ZapÅ‚ać Obiektowi dla obiektów bez funkcji money()"/> - </form> - </notification> - - <notification - - name="OpenObjectCannotCopy" - > -W tym obiekcie nie ma elementów które możesz skopiować. - </notification> - - <notification - - name="WebLaunchAccountHistory" - > -Przejść na stronÄ™ Second Life żeby zobaczyć historiÄ™ konta? - <usetemplate - ignoretext="ÅadujÄ…c stronÄ™ historii konta." - name="okcancelignore" - notext="Anuluj" - yestext="Idź na stronÄ™"/> - </notification> - - <notification - - name="ClickOpenF1Help" - > -Przejść na stronÄ™ Second Life? - <usetemplate - ignoretext="OdwiedzajÄ…c stronÄ™ Second Life." - name="okcancelignore" - notext="Anuluj" - yestext="Idź"/> - </notification> - - <notification - - name="ConfirmQuit" - > -Na pewno chcesz skoÅ„czyć? - <usetemplate - ignoretext="WyłączajÄ…c Second Life." - name="okcancelignore" - notext="Kontynuuj" - yestext="Wyłącz"/> - </notification> - - <notification - - name="HelpReportAbuseEmailLL" - > -Używaj tej opcji do zgÅ‚aszania nadużyć Warunków Umowy (Terms of Service) i Standardów SpoÅ‚eczeÅ„stwa (Community Standards). Zobacz: - -http://secondlife.com/corporate/tos.php -http://secondlife.com/corporate/cs.php - -Wszystkie zgÅ‚oszone nadużycia Warunków Umowy (Terms of Service) i Standardów SpoÅ‚eczeÅ„stwa (Community Standards) sÄ… badane i rozwiÄ…zywane. Możesz zobaczyć konkluzjÄ™ zgÅ‚oszenia w Raporcie ZgÅ‚oszeÅ„ pod: - -http://secondlife.com/support/incidentreport.php - </notification> - - <notification - - name="HelpReportAbuseEmailEO" - > -UWAGA: Ten raport zostanie wysÅ‚any do wÅ‚aÅ›ciciela regionu w którym siÄ™ znajdujesz i nie bÄ™dzie wysÅ‚any do Linden Lab. - -W ramach serwisu dla Rezydentów i goÅ›ci wÅ‚aÅ›ciciel tego regionu postanowiÅ‚ odbierać i rozwiÄ…zywać wszystkie reporty wysÅ‚ane z tego regionu. Linden Lab nie bÄ™dzie analizowaÅ‚ żadnych reportów zgÅ‚oszonych z tego miejsca. - -WÅ‚aÅ›ciciel regionu bÄ™dzie rozpatrywaÅ‚ raporty w oparciu o lokalne prawa tego regionu zdefiniowane w umowie majÄ…tku. (Możesz zobaczyć umowÄ™ wybierajÄ…c opcjÄ™ O PosiadÅ‚oÅ›ci z menu Åšwiat.) - -RozwiÄ…zanie tego raportu odnosi siÄ™ wyłącznie do tego regionu; konkluzja tego raportu nie bÄ™dzie miaÅ‚a wpÅ‚ywu na dostÄ™p Rezydentów do innych regionów w Second Life. Wyłącznie Linden Lab może caÅ‚kowicie odebrać dostÄ™p do Second Life. - </notification> - - <notification - - name="HelpReportBug" - > -Używaj tej opcji *wyłącznie* w celu zgÅ‚aszania technicznych problemów, dołączajÄ…c szczegółowy opis problemu. Możesz odpowiedzieć na automatycznÄ… email z odpowiedziÄ… żeby dodać wiÄ™cej szczegółów do Twojego raportu. - -Wszystkie raporty błędów sÄ… analizowane i oceniane. Kontakt przez email nie bÄ™dzie nawiÄ…zany. - -Jeżeli masz techniczne problemy, skontaktuj siÄ™ z pomocÄ… technicznÄ… pod: - -http://secondlife.com/community/support.php - -Uwaga: Niekompletne raporty nie bÄ™dÄ… analizowane. - </notification> - - <notification - - name="HelpReportAbuseSelectCategory" - > -Wybierz kategoriÄ™ dla tego raportu o nadużyciu. -OkreÅ›lenie kategorii pomoże nam w klasyfikacji i prztwarzaniu raportu. - </notification> - - <notification - - name="HelpReportBugSelectCategory" - > -Wybierz kategoriÄ™ dla tego błędu. -OkreÅ›lenie kategorii pomoże nam w klasyfikacji i prztwarzaniu raportu. - </notification> - - <notification - - name="HelpReportAbuseAbuserNameEmpty" - > -Wprowadź imiÄ™ i nazwisko osoby popeÅ‚niajÄ…cej nadużycie. -DokÅ‚adne dane pomogÄ… nam w klasyfikacji i prztwarzaniu raportu. - </notification> - - <notification - - name="HelpReportAbuseAbuserLocationEmpty" - > -Wprowadź nazwÄ™ miejsca gdzie popeÅ‚niono nadużycie. -DokÅ‚adne dane pomogÄ… nam w klasyfikacji i prztwarzaniu raportu. - </notification> - - <notification - - name="HelpReportAbuseSummaryEmpty" - > -Wprowadź opis popeÅ‚nionego nadużycia. -DokÅ‚adne dane pomogÄ… nam w klasyfikacji i prztwarzaniu raportu. - </notification> - - <notification - - name="HelpReportBugSummaryEmpty" - > -Wprowadź opis błędu. -DokÅ‚adne dane pomogÄ… nam w klasyfikacji i prztwarzaniu raportu. - </notification> - - <notification - - name="HelpReportAbuseDetailsEmpty" - > -Wprowadź szczgółowy opis popeÅ‚nionego nadużycia. -Podaj maksymalnÄ… ilość szczgółów oraz imiona i nazwiska osób zwiÄ…zanych z nadużyciem które zgÅ‚aszasz. -DokÅ‚adne dane pomogÄ… nam w klasyfikacji i prztwarzaniu raportu. - </notification> - - <notification - - name="HelpReportBugDetailsEmpty" - > -Wprowadź szczgółowy opis błędu. Podaj maksymalnÄ… ilość szczgółów oraz, jeżeli to możliwe, kroki niezbÄ™dne do odtworzenia problemu. -DokÅ‚adne dane pomogÄ… nam w klasyfikacji i prztwarzaniu raportu. - </notification> - - <notification - - name="HelpReportAbuseContainsCopyright" - > -Szanowny Rezydencie, - -Jeżeli skÅ‚adasz raport dotyczÄ…cy naruszenia praw autorskich proszÄ™ siÄ™ upewnić, że robisz to poprawnie: - -(1) Przypadek Nadużycia. Możesz zÅ‚ożyć raport jeżeli sÄ…dzisz, że Rezydent narusza system przywilejów Second Life, na przykÅ‚ad używajÄ…c CopyBot lub podobnych narzÄ™dzi robiÄ…cych kopie, naruszajÄ…c prawa autorskie. Komisja Nadużyć bada wykrocznia i stosuje akcje dyscyplinarne za zachowania sprzeczne z zasadami Warunków Umowy (Terms of Service) i Standardów SpoÅ‚eczeÅ„stwa (Community Standards) Second Life. Komisja Nadużyć nie zajmuje siÄ™ i nie odpowiada na żądania usuniÄ™cia treÅ›ci ze Å›rodowiska Second Life. - -(2) Przypadek DMCA lub Usuwanie TreÅ›ci. Aby wystÄ…pić z żądaniem o usuniÄ™cie treÅ›ci ze Å›rodowiska Second Life MUSISZ przedÅ‚ożyć ważne zawiadomienie o nadużyciu zgodne z naszÄ… polisÄ… DMCA pod http://secondlife.com/corporate/dmca.php. - -Jeżeli chcesz kontynuować dalej zamknij to okno i dokoÅ„cz wysyÅ‚anie raportu. Może być potrzebny wybór kategorii 'CopyBot albo Nadużycie Przywilejów'. - -DziÄ™kujemy, - -Linden Lab - </notification> - - <notification - - name="FailedRequirementsCheck" - > -Brak nastÄ™pujÄ…cych wymaganych komponentów w [FLOATER]: -[COMPONENTS] - </notification> - - <notification - - label="ZamieÅ„ IstniejÄ…cy Dodatek" - name="ReplaceAttachment" - > -Obecnie masz już dołączony obiekt do tej części Twojego ciaÅ‚a. -Chcesz go zamienić na wybrany obiekt? - <form name="form"> - <ignore name="ignore" - save_option="true" - text="ZamieniajÄ…c istniejÄ…ce dodatki"/> - <button - - ignore="ZamieÅ„ Automatycznie" - - name="Yes" - text="OK"/> - <button - ignore="Nie Zamieniaj" - - name="No" - text="Anuluj"/> - </form> - </notification> - - <notification - - label="Ostrzeżenie Trybu Pracy" - name="BusyModePay" - > -JesteÅ› w Trybie Pracy co oznacza, że nie dostaniesz żadnych obiektów w zamian za tÄ… opÅ‚atÄ™. - -Chcesz wyłączyć Tryb Pracy przed zakoÅ„czeniem tej tranzakcji? - <form name="form"> - <ignore name="ignore" - save_option="true" - text="PÅ‚acÄ…c osobie lub obiektowi bÄ™dÄ…c w Trybie Pracy"/> - <button - - ignore="Zawsz wyłączaj Tryb Pracy" - - name="Yes" - text="OK"/> - <button - ignore="Nie wyłączaj Trybu Pracy" - - name="No" - text="Anuluj"/> - </form> - </notification> - - <notification - - name="ConfirmEmptyTrash" - > -Na pewno chcesz permanentnie usunąć zawartość Åšmietnika? - <usetemplate - ignoretext="UsuwajÄ…c zawartość Åšmietnika" - name="okcancelignore" - notext="Anuluj" - yestext="OK"/> - </notification> - - <notification - - name="ConfirmClearBrowserCache" - > -Na pewno chcesz wyczyÅ›cić bufor przeglÄ…darki? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="Tak"/> - </notification> - - <notification - - name="ConfirmClearCookies" - > -Na pewno chcesz wyczyÅ›cić ciasteczka? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="Tak"/> - </notification> - - <notification - - name="ConfirmClearMediaUrlList" - > -Na pewno chcesz wyczyÅ›cić listÄ™ zapisanych linków? - <usetemplate - name="okcancelbuttons" - notext="Anuluj" - yestext="Tak"/> - </notification> - - <notification - - name="ConfirmEmptyLostAndFound" - > -Na pewno chcesz permanentnie usunąć zawartość Twojego foldera Zgubione i Znalezione? - <usetemplate - ignoretext="UsuwajÄ…c szafÄ™ z Twojego foldera Zgubione i Znalezione" - name="okcancelignore" - notext="Nie" - yestext="Tak"/> - </notification> - - <notification - - name="CopySLURL" - > -NastÄ™pujÄ…cy link SLURL zostaÅ‚ skopiowany do pamiÄ™ci podrÄ™cznej: - [SLURL] - -Zamieść go na stronie Internetowej żeby umożliwić innym Å‚atwy dostÄ™p do tego miejsca, albo wklej go do panela adresu Twojej przeglÄ…darki żeby go wypróbować. - <form name="form"> - <ignore name="ignore" - text="KopiujÄ…c SLURL do pamiÄ™ci podrÄ™cznej"/> - </form> - </notification> - - <notification - - name="GraphicsPreferencesHelp" - > -Ten panel kontroluje wymiary i rozdzielczość okna oraz jakość grafiki klienta. Panel Ustawienia > Grafika pozwala na wybór jednego z czterech poziomów jakoÅ›ci grafiki: Niska, Åšrednia, Wysoka i Super. Możesz również dostosować grafikÄ™ do wÅ‚asnych potrzeb wybierajÄ…c opcjÄ™ Zaawansowane i zmieniajÄ…c nastÄ™pujÄ…ce ustawienia: - -Shadery: Włącza i wyłącza różne rodzaje shaderów piksli. - -Ustawienia Odbić: OkreÅ›la rodzaje obiektów które mogÄ… odbijać siÄ™ w wodzie. - -Prezentacja Awatarów: OkreÅ›la opcje majÄ…ce wpÅ‚yw na rysowanie awatarów przez klienta. - -Głębia Rysowania: OkreÅ›la od jakiej odlegÅ‚oÅ›ci od pozycji kamery obiekty bÄ™dÄ… rysowane w tle. - -Liczba CzÄ…steczek: OkreÅ›la maksymalnÄ… liczbÄ™ czÄ…steczek widocznych jednoczeÅ›nie na ekranie. - -Jakość Post-Procesu: OkreÅ›la rozdzielczość z jakÄ… jest wyÅ›wietlana poÅ›wiata. - -Szczegóły Meszu: OkreÅ›la ilość szczegółów albo liczbÄ™ trójkÄ…tów używanÄ… przy rysowaniu pewnych obiektów. WiÄ™ksza wartość zwalnia prÄ™dkość rysowania ale powoduje, że obiekty wyglÄ…dajÄ… bardziej szczgółowo. - -Ustawienia ÅšwiatÅ‚a: OkreÅ›la jaki rodzaj Å›wiatÅ‚a jest używany do rysowania. - -Szczegóły Terenu: OkreÅ›la ilość szczgółów widocznÄ… w teksturach terenu. - </notification> - - <notification - - name="WLSavePresetAlert" - > -Chcesz zmienić zapisane ustawienia? - <usetemplate - name="okcancelbuttons" - notext="Nie" - yestext="Tak"/> - </notification> - - <notification - - name="WLDeletePresetAlert" - > -Chcesz usunąć [SKY]? - <usetemplate - name="okcancelbuttons" - notext="Nie" - yestext="Tak"/> - </notification> - - <notification - - name="WLNoEditDefault" - > -Nie możesz edytować lub usunąć domyÅ›lnych ustawieÅ„. - </notification> - - <notification - - name="WLMissingSky" - > -Ten plik cyklu dziennego używa brakujÄ…cego pliku nieba: [SKY]. - </notification> - - <notification - - name="PPSaveEffectAlert" - > -Efekt Post-Procesu już istnieje. Chcesz zapisać nowy na jego miejsce? - <usetemplate - name="okcancelbuttons" - notext="Nie" - yestext="Tak"/> - </notification> - - <notification - - name="HelpEditSky" - > -Ustaw suwaki żeby stworzyć i zapisać zbiór nieb. - </notification> - - <notification - - name="HelpEditDayCycle" - > -Wybierz których nieb używać w przeciÄ…gu dnia. - </notification> - - <notification - - name="EnvSettingsHelpButton" - > -Te ustawienia zmieniajÄ… wyglÄ…d Å›rodowiska na Twoim komputerze. Twoja karta graficzna musi posiadać opcjÄ™ shaderów atmosfery aby umożliwić dostÄ™p do wszystkich ustawieÅ„. - -Ustaw suwak "Pora Dnia" żeby zmienić lokalnÄ… porÄ™ dnia w kliencie. - -Ustaw suwak "Chmury" żeby zmienić ilość chmur widocznÄ… na niebie. - -Wybierz kolor w selekcji "Kolor Wody" żeby zmienić kolor wody. - -Ustaw suwak "Zamglenie" żeby zmienić gÄ™stość zamglenia pod wodÄ…. - -Kliknij "Używaj Czasu Regionu" żeby dostosowywać porÄ™ dnia do pory dnia w regionie. - -Kliknij "Zaawansowane Niebo" żeby wybrać bardziej szczegółowy edytor ustawieÅ„ nieba. - -Kliknij "Zaawansowana Woda" żeby wybrać bardziej szczegółowy edytor ustawieÅ„ wody. - </notification> - - <notification - - name="HelpDayCycle" - > -Edytor Cyklu Dnia pozwala na kontrolÄ™ nieba podczas cyklu dnia/nocy w Second Life. Ten cykl jest używany przez suwak Pora Dnia w podstawowym Edytorze Åšrodowiska. - -Edytor Cyklu Dnia ustala klatki odniesienia. SÄ… to punkty (widoczne jako szare plamki na wykresie czasu) które majÄ… przypisane Ustawienia Nieba. W miarÄ™ upÅ‚ywu czasu niebo jest animowane używajÄ…c Å›rednich pomiÄ™dzy klatkami odniesienia. - -Żółta strzaÅ‚ka powyżej linii czasu odpowiada biżącemu widokowi opartemu na Porze Dnia. Kliknij i przeciÄ…gnij strzaÅ‚kÄ™ żeby zobaczyć animacjÄ™ w przeciÄ…gu dnia. Możesz dodawać i usuwać klatki odniesienia używająć przycisków Dodaj i UsuÅ„ po prawej stronie linii czasu. - -DÅ‚ugość Cyklu dyktuje caÅ‚kowitÄ… dÅ‚ugość "dnia". Wybranie maÅ‚ej wartoÅ›ci (na przykÅ‚ad 2 min) oznacza, że Twoja 24-o godzinna linia czasu bÄ™dzie animowana w caÅ‚oÅ›ci w przeciÄ…gu dwóch minut czasu rzeczywistego! Po wybraniu odpowiednich ustawieÅ„ linii czasu i klatek odniesienia użyj przycisków Start i Stop żeby zobaczyć rezultaty. PamiÄ™taj - zawsze możesz używać żółtej strzaÅ‚ki wskażnika czasu powyżej linii czasu żeby zmieniać animacjÄ™ dynamicznie. Użycie przycisku Używaj Czasu Regionu zsynchronizuje TwojÄ… dÅ‚ugość dnia i czas z cyklem Regionu. - -Po zdefiniowaniu Cyklu Dnia możesz zapisać i zaÅ‚adować ustawienia używajÄ…c przycisków Zapisz Test Dnia i ZaÅ‚aduj Test Dnia. Uwaga, obecnie tylko jeden Cykl Dnia jest dozwolony. - </notification> - - <notification - - name="HelpBlueHorizon" - > -Ustaw suwaki Czerwony/Zielony/Niebieski (RGB) żeby zmienić kolor nieba. Możesz używać suwaka Intensywność (I) żeby zmieniać ustawienia suwaków wszystkich kolorów (RGB) jednoczeÅ›nie. - </notification> - - <notification - - name="HelpHazeHorizon" - > -Horyzont Zamglenia jest jednym z ważniejszych parametrów kontrolujÄ…cych oÅ›wietlenie sceny. Jest efektywnym do symulacji wielu ustawieÅ„ oÅ›wietlenia takich jak rozbyski sÅ‚oÅ„ca i ciemniejsze ustawienia zamkniÄ™tej przesÅ‚ony. - </notification> - - <notification - - name="HelpBlueDensity" - > -GÄ™stość Błękitu ma wpÅ‚yw na nasycenie koloru nieba i mgÅ‚y. Jeżeli przesuniesz suwak IntensywnoÅ›ci (I) w prawo kolory bÄ™dÄ… jaÅ›niejsze i żywsze. Jeżeli przesuniesz caÅ‚kowicie w lewo kolory bÄ™dÄ… rozmywać siÄ™ aż do przejÅ›cia w biel i czerÅ„. Jeżeli chcesz precyzyjnie kontrolować balans koloru nieba możesz używać suwaków kolorów Czerwony/Zielony/Niebieski (RGB) w celu zmiany nasycenia indywidualnych skÅ‚adników. - </notification> - - <notification - - name="HelpHazeDensity" - > -GÄ™stość Zamglenia kontroluje zawartość mÄ™tnego, szarego zamglenia w atmosferze. Jest to przydatne do symulacji scen z dużą iloÅ›ciÄ… dymu i zanieczyszczeÅ„. -Oraz do symulacji mgÅ‚y i zamgleÅ„. - </notification> - - <notification - - name="HelpDensityMult" - > -Mnożnik GÄ™stoÅ›ci wpÅ‚ywa na gÄ™stość atmosfery w caÅ‚oÅ›ci. Niskie ustawienie sprawia wrażenie lekkiego powietrza, wyższe ustawienia tworzÄ… bardzo ciężki, zamglony efekt. - </notification> - - <notification - - name="HelpDistanceMult" - > -Mnożnik Dystansu wpÅ‚ywa na postrzeganie dystansu. Wartość zero niweluje wpÅ‚yw dystansu na wyglÄ…d terenu i obiektów. -WartoÅ›ci wiÄ™ksze od 1 symulujÄ… wiÄ™kszy dystans tworzÄ…c silniejszy efekt atmosferyczny. - </notification> - - <notification - - name="HelpMaxAltitude" - > -Max Wysokość wpÅ‚ywa na obliczanie Å›wiatÅ‚a atmosferycznego. -O póżniejszych porach dnia ta wartość jest przydatna do regulacji percepcji dystansu zachodÄ…cego sÅ‚oÅ„ca. - </notification> - - <notification - - name="HelpSunlightColor" - > -Reguluje kolor i intensywność bezpoÅ›redniego Å›wiatÅ‚a w scenie. - </notification> - - <notification - - name="HelpSunAmbient" - > -Reguluje kolor i intensywność rozproszonego Å›wiatÅ‚a atmosferycznego w scenie. - </notification> - - <notification - - name="HelpSunGlow" - > -Suwak Rozmiar kontroluje wielkość sÅ‚oÅ„ca. -Suwak Ostrość kontroluje ostrość sÅ‚oÅ„ca na niebie. - </notification> - - <notification - - name="HelpSceneGamma" - > -Reguluje dystrybucjÄ™ Å›wiatÅ‚a i cienia na ekranie. - </notification> - - <notification - - name="HelpStarBrightness" - > -Reguluje blask gwiazd na niebie. - </notification> - - <notification - - name="HelpTimeOfDay" - > -Kontroluje pozycjÄ™ sÅ‚oÅ„ca na niebie. -Zbliżone do wysokoÅ›ci. - </notification> - - <notification - - name="HelpEastAngle" - > -Kontroluje pozycjÄ™ sÅ‚oÅ„ca na niebie. -Zbliżone do azymutu. - </notification> - - <notification - - name="HelpCloudColor" - > -Kontroluje kolor chmur. Generalnie powinny być biaÅ‚awe, ale hej, pobaw siÄ™ jeżeli masz ochotÄ™. - </notification> - - <notification - - name="HelpCloudDetail" - > -Kontroluje szczegółowy obraz naÅ‚ożony na górÄ™ głównego obrazu chmur. X i Y kontrolujÄ… jego pozycjÄ™. G (GÄ™stość) kontroluje jak puchate lub postrzÄ™pione sÄ… chmury. - </notification> - - <notification - - name="HelpCloudDensity" - > -Suwaki X i Y kontrolujÄ… pozycjÄ™ chmur. -Suwak G (GÄ™stość) kontroluje gÄ™stość chmur. - </notification> - - <notification - - name="HelpCloudCoverage" - > -Kontroluje ilość chmur pokrywajÄ…cych niebo. - </notification> - - <notification - - name="HelpCloudScale" - > -Kontroluje skalÄ™ obrazu chmur na kopule nieba. - </notification> - - <notification - - name="HelpCloudScrollX" - > -Kontroluje prÄ™dkość przemieszczania chmur wzdÅ‚uż osi X. - </notification> - - <notification - - name="HelpCloudScrollY" - > -Kontroluje prÄ™dkość przemieszczania chmur wzdÅ‚uż osi Y. - </notification> - - <notification - - name="HelpClassicClouds" - > -Wybierz tÄ… opcjÄ™ w celu używania dodatkowo starszej, klasycznej wersji chmur Second Life. - </notification> - - <notification - - name="HelpWaterFogColor" - > -Kontroluje kolor podwodnej mgÅ‚y. - </notification> - - <notification - - name="HelpWaterFogDensity" - > -Kontroluje gÄ™stość mgÅ‚y i głębie wizji pod wodÄ…. - </notification> - - <notification - - name="HelpUnderWaterFogMod" - > -Modyfikuje wpÅ‚yw wykÅ‚adnika gÄ™stoÅ›ci mgÅ‚y na głębie wizji awatara pod wodÄ…. - </notification> - - <notification - - name="HelpWaterGlow" - > -Kontroluje emisjÄ™ Å›wiatÅ‚a z powierzchni wody. - </notification> - - <notification - - name="HelpWaterNormalScale" - > -Kontroluje skalÄ™ trzech zmarszczeÅ„ które tworzÄ… wodÄ™. - </notification> - - <notification - - name="HelpWaterFresnelScale" - > -Kontroluje jak dużo Å›wiatÅ‚a jest odbijane pod różnymi kÄ…tami. - </notification> - - <notification - - name="HelpWaterFresnelOffset" - > -Kontroluje jak dużo intensywnoÅ›ci Å›wiatÅ‚a jest odbijane. - </notification> - - <notification - - name="HelpWaterScaleAbove" - > -Kontroluje jak dużo Å›wiatÅ‚a odbija siÄ™ od górnej powierzchni wody. - </notification> - - <notification - - name="HelpWaterScaleBelow" - > -Kontroluje jak dużo Å›wiatÅ‚a odbija siÄ™ od dolnej powierzchni wody. - </notification> - - <notification - - name="HelpWaterBlurMultiplier" - > -Kontroluje jak fale i odbicia sÄ… mieszane. - </notification> - - <notification - - name="HelpWaterNormalMap" - > -Kontroluje która mapa normalnych jest używana w wodzie do okreÅ›lania odbić/zaÅ‚amaÅ„. - </notification> - - <notification - - name="HelpWaterWave1" - > -Kontroluje gdzie i jak szybko duża wersja mapy normalnych przemieszcza siÄ™ wzdÅ‚uż osi X i Y. - </notification> - - <notification - - name="HelpWaterWave2" - > -Kontroluje gdzie i jak szybko maÅ‚a wersja mapy normalnych przemieszcza siÄ™ wzdÅ‚uż osi X i Y. - </notification> - - <notification - - name="NewSkyPreset" - > -Nazwij nowe niebo. - <form name="form"> - <input name="message" type="text"> -Nowe Ustawienie - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Anuluj"/> - </form> - </notification> - - <notification - - name="ExistsSkyPresetAlert" - > -Ustawienie już istnieje! - </notification> - - <notification - - name="NewWaterPreset" - > -Nazwij nowe ustawienie wody. - <form name="form"> - <input name="message" type="text"> -Nowe Ustawienie - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Anuluj"/> - </form> - </notification> - - <notification - - name="ExistsWaterPresetAlert" - > -Ustawienie już istnieje! - </notification> - - <notification - - name="WaterNoEditDefault" - > -DomyÅ›le ustawienie nie może być zmienione ani usuniÄ™te. - </notification> - - <notification - - name="ChatterBoxSessionStartError" - > -Błąd podczas rozpoczynania czatu/IM z [RECIPIENT]. -[REASON] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="ChatterBoxSessionEventError" - > -[EVENT] -[REASON] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="ForceCloseChatterBoxSession" - > -Twój czat/IM z [NAME] zostanie zamkniÄ™ty. -[REASON] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="Cannot_Purchase_an_Attachment" - > -Rzeczy nie mogÄ… być kupione jeżeli - sÄ… częściÄ… załącznika. - </notification> - - <notification - - label="ProÅ›ba o ZgodÄ™ na Pobieranie L$" - name="DebitPermissionDetails" - > -AkceptujÄ…c tÄ… proÅ›bÄ™ wyrażasz zgodÄ™ na ciÄ…gÅ‚e pobieranie Lindenów (L$) z Twojego konta. Å»eby cofnąć to pozwolenie wÅ‚aÅ›ciciel obiektu bÄ™dzie musiaÅ‚ usunąć ten obiekt albo zresetowć skrypty obieku. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="AutoWearNewClothing" - > -Czy chcesz automatycznie nosić ubranie które tworzysz? - <usetemplate - ignoretext="Automatycznie noÅ› nowe ubranie" - name="okcancelignore" - notext="Nie" - yestext="Tak"/> - </notification> - - <notification - - name="NotAgeVerified" - > -Nie masz dostÄ™pu do tej posiadÅ‚oÅ›ci ze wzglÄ™du na brak weryfikacji Twojego wieku. -Czy chcesz odwiedzić stronÄ™ Second Life żeby to zmienić? - -[_URL] - <url option="0" name="url"> - - https://secondlife.com/account/verification.php - </url> - <usetemplate - ignoretext="Ostrzegaj o braku weryfikacji wieku" - name="okcancelignore" - notext="Nie" - yestext="Tak"/> - </notification> - - <notification - - name="Cannot enter parcel: no payment info on file" - > -Nie masz dostÄ™pu do tej posiadÅ‚oÅ›ci ze wzglÄ™du na brak danych o Twoim koncie. -Czy chcesz odwiedzić stronÄ™ Second Life żeby to zmienić? - -[_URL] - <url option="0" name="url"> - - https://secondlife.com/account/ - </url> - <usetemplate - ignoretext="Ostrzegaj o braku danych konta" - name="okcancelignore" - notext="Nie" - yestext="Tak"/> - </notification> - - <notification - - name="MissingString" - > -Zdanie [STRING_NAME] nie znalezione w strings.xml - </notification> - - <notification - - name="SystemMessageTip" - > -[MESSAGE] - </notification> - - <notification - - name="Cancelled" - > -Anulowane - </notification> - - <notification - - name="CancelledSit" - > -Siadanie Anulowane - </notification> - - <notification - - name="CancelledAttach" - > -Dołączenie Anulowane - </notification> - - <notification - - name="ReplacedMissingWearable" - > -BarkujÄ…ce ubranie/części ciaÅ‚a zastÄ…piono domyÅ›lnymi obiektami. - </notification> - - <notification - - name="GroupNotice" - > -Temat: [SUBJECT], Treść: [MESSAGE] - </notification> - - <notification - - name="FriendOnline" - > -[FIRST] [LAST] jest w Second Life - </notification> - - <notification - - name="FriendOffline" - > -[FIRST] [LAST] opuszcza Second Life - </notification> - - <notification - - name="AddSelfFriend" - > -Nie możesz dodać siebie do listy znajomych. - </notification> - - <notification - - name="UploadingAuctionSnapshot" - > -Åadowanie obrazu z Internetu... -(Zajmuje okoÅ‚o 5 minut.) - </notification> - - <notification - - name="UploadPayment" - > -Åadowanie kosztowaÅ‚o [AMOUNT]L$. - </notification> - - <notification - - name="UploadWebSnapshotDone" - > -Åadowanie obrazu z Internetu zakoÅ„czne pomyÅ›lnie. - </notification> - - <notification - - name="UploadSnapshotDone" - > -Åadowanie zdjÄ™cia zakoÅ„czone pomyÅ›lnie. - </notification> - - <notification - - name="TerrainDownloaded" - > -Plik terrain.raw Å›ciÄ…gniety. - </notification> - - <notification - - name="GestureMissing" - > -Gest [NAME] nie znaleziony w bazie danych. - </notification> - - <notification - - name="UnableToLoadGesture" - > -Åadowanie gestu [NAME] nie powiodÅ‚o siÄ™. -Spróbuj jeszcze raz. - </notification> - - <notification - - name="LandmarkMissing" - > -Miejsce (LM) nie znalezione w bazie danych. - </notification> - - <notification - - name="UnableToLoadLandmark" - > -Åadowanie miejsca (LM) nie powiodÅ‚o siÄ™. -Spróbuj jeszcze raz. - </notification> - - <notification - - name="CapsKeyOn" - > -Twój Caps Lock jest włączony. -Ponieważ to ma wpÅ‚yw na wpisywane hasÅ‚o, możesz chcieć go wyłączyć. - </notification> - - <notification - - name="NotecardMissing" - > -Notka nie znaleziona w bazie danych. - </notification> - - <notification - - name="NotecardNoPermissions" - > -Nie masz pozwolenia na zobaczenie notki. - </notification> - - <notification - - name="RezItemNoPermissions" - > -Nie masz pozwolenia na stworzenie obiektu. - </notification> - - <notification - - name="UnableToLoadNotecard" - > -Åadowanie notki nie powiodÅ‚o siÄ™. -Spróbuj jeszcze raz. - </notification> - - <notification - - name="ScriptMissing" - > -Skrypt nie znaleziony w bazie danych. - </notification> - - <notification - - name="ScriptNoPermissions" - > -Nie masz pozwolenia na zobaczenie skryptu. - </notification> - - <notification - - name="UnableToLoadScript" - > -Åadowanie skryptu nie powiodÅ‚o siÄ™. -Spróbuj jeszcze raz. - </notification> - - <notification - - name="IncompleteInventory" - > -Zawartość obiektów którÄ… chcesz podarować nie jest dostÄ™pna lokalnie. Spróbuj podarować te obiekty jeszcze raz za jakiÅ› czas. - </notification> - - <notification - - name="CannotModifyProtectedCategories" - > -Nie możesz zmienić chronionych kategorii. - </notification> - - <notification - - name="CannotRemoveProtectedCategories" - > -Nie możesz usunąć chronionych kategorii. - </notification> - - <notification - - name="OfferedCard" - > -[FIRST] [LAST] daje Ci swojÄ… wizytówkÄ™ - </notification> - - <notification - - name="UnableToBuyWhileDownloading" - > -Nie można kupować w trakcie Å‚adowania danych obiektu. -Spróbuj jeszcze raz. - </notification> - - <notification - - name="UnableToLinkWhileDownloading" - > -Nie można łączyć w trakcie Å‚adowania danych obiektu. -Spróbuj jeszcze raz. - </notification> - - <notification - - name="CannotBuyObjectsFromDifferentOwners" - > -Nie możesz jednoczeÅ›nie kupować obiektów od różnych osób. -Wybierz jeden obiekt. - </notification> - - <notification - - name="ObjectNotForSale" - > -Obiekt nie jest na sprzedaż. - </notification> - - <notification - - name="EnteringGodMode" - > -Włącznie trybu boskiego, poziom [LEVEL] - </notification> - - <notification - - name="LeavingGodMode" - > -Wyłączanie trybu boskiego, poziom [LEVEL] - </notification> - - <notification - - name="CopyFailed" - > -Kopiowanie siÄ™ nie powiodÅ‚o - nie masz pozwolenia - </notification> - - <notification - - name="InventoryAccepted" - > -Podarunek od Ciebie zostaÅ‚ przyjÄ™ty przez [NAME]. - </notification> - - <notification - - name="InventoryDeclined" - > -Podarunek od Ciebie zostaÅ‚ odrzucony przez [NAME]. - </notification> - - <notification - - name="ObjectMessage" - > -[NAME]: [MESSAGE] - </notification> - - <notification - - name="CallingCardAccepted" - > -Twoja wizytówka zostaÅ‚a przyjÄ™ta. - </notification> - - <notification - - name="CallingCardDeclined" - > -Twoja wizytówka zostaÅ‚a odrzucona. - </notification> - - <notification - - name="TeleportToLandmark" - > -JesteÅ› w Głównym Regionie i możesz siÄ™ stÄ…d teleportować do innych miejsc jak '[NAME]' wybierajÄ…c Moja Szafa w prawym dolnym rogu ekranu i wybierajÄ…c folder Miejsca (LM). -Kliknij dwa razy na miejsce (LM) i wybierz Teleportuj żeby tam siÄ™ przenieść. - </notification> - - <notification - - name="TeleportToPerson" - > -JesteÅ› w Głównym Regionie i możesz komunikować siÄ™ z innymi Rezydentami jak '[NAME]' wybierajÄ…c Moja Szafa w prawym dolnym rogu ekranu i wybierajÄ…c folder Wizytówki. -Kliknij dwa razy na wizytówce, wybierz WyÅ›lij IM i napisz wiadomość. - </notification> - - <notification - - name="CantSelectLandFromMultipleRegions" - > -Nie możesz przekraczać granic serwera wybierajÄ…c obszar. -Spróbuj wybrać mniejszy obszar. - </notification> - - <notification - - name="GroupVote" - > -[NAME] zaprasza do gÅ‚osowania nad propozycjÄ…: -[MESSAGE] - <form name="form"> - <button - - name="VoteNow" - text="GÅ‚osuj Teraz"/> - <button - - name="Later" - text="Później"/> - </form> - </notification> - - <notification - - name="SystemMessage" - > -[MESSAGE] - </notification> - - <notification - - name="EventNotification" - > -Zawiadomienie o Imprezie: - -[NAME] -[DATE] - <form name="form"> - <button - - name="Teleport" - text="Teleportuj"/> - <button - - name="Description" - text="Opis"/> - <button - - name="Cancel" - text="Anuluj"/> - </form> - </notification> - - <notification - - name="TransferObjectsHighlighted" - > -Obiekty na tej posiadÅ‚oÅ›ci które zostanÄ… przekazane kupcowi tej posiadÅ‚oÅ›ci sÄ… teraz rozjaÅ›nione. - -* Drzewa i trawy które zostanÄ… przekazne nie sÄ… rozjaÅ›nione. - <form name="form"> - <button - - name="Done" - text="Zastosuj"/> - </form> - </notification> - - <notification - - name="DeactivatedGesturesTrigger" - > -Zablokowane gesty z jednakowym aktywowaniem: -[NAMES] - </notification> - - <notification - - name="NoQuickTime" - > -WyglÄ…da na to, że QuickTime z Apple nie jest zainstalowany na Twoim komputerze. -Jeżeli chcesz odtwarzać media na tej posiadÅ‚oÅ›ci które używajÄ… QuickTime idź do http://www.apple.com/quicktime i zainstaluj odtwarzacz. - </notification> - - <notification - - name="OwnedObjectsReturned" - > -Twoje obiekty z wybranej posiadÅ‚oÅ›ci zostaÅ‚y zwrócone do Twojej Szafy. - </notification> - - <notification - - name="OtherObjectsReturned" - > -Obiekty należące do [FIRST] [LAST] na wybranej posiadÅ‚oÅ›ci zostaÅ‚y zwrócone do szafy tej osoby. - </notification> - - <notification - - name="OtherObjectsReturned2" - > -Obiekty z wybranej posiadÅ‚oÅ›ci należącej do Rezydenta '[NAME]' zostaÅ‚y zwrócone do ich wÅ‚aÅ›ciciela. - </notification> - - <notification - - name="GroupObjectsReturned" - > -Obiekty z wybranej posiadÅ‚oÅ›ci przypisane do grupy [GROUPNAME] zostaÅ‚y zwrócone do szafy ich wÅ‚aÅ›cicieli. -Przekazywalne obiekty przekazne grupie zostaÅ‚y zwrócone do ich poprzednich wÅ‚aÅ›cicieli. -Nieprzekazywalne obiekty przekazane grupie zostaÅ‚y usuniÄ™te. - </notification> - - <notification - - name="UnOwnedObjectsReturned" - > -Obiekty z wybranej posiadÅ‚oÅ›ci które nie należą do Ciebie zostaÅ‚y zwrócone do ich wÅ‚aÅ›cicieli. - </notification> - - <notification - - name="NotSafe" - > -Ta posiadÅ‚ość pozwala na uszkodzenia. -Możesz doznać tutaj urazu. Jeżeli zginiesz nastÄ…pi teleportacja do Twojego miejsca startu. - </notification> - - <notification - - name="NoFly" - > -Ta posiadÅ‚ość nie pozwala na latanie. -Nie możesz tutaj latać. - </notification> - - <notification - - name="PushRestricted" - > -Popychanie niedozwolone. -Nie możesz tutaj popychać innych, chyba, że jesteÅ› wÅ‚aÅ›cicielem tej posiadÅ‚oÅ›ci. - </notification> - - <notification - - name="NoVoice" - > -Ta posiadÅ‚ość nie pozwala na rozmowy. - </notification> - - <notification - - name="NoBuild" - > -Ta posiadÅ‚ość nie pozwala na budowanie. -Nie możesz tworzyć tutaj obiektów. - </notification> - - <notification - - name="ScriptsStopped" - > -Administrator czasowo zatrzymaÅ‚ skrypty w tym regionie. - </notification> - - <notification - - name="ScriptsNotRunning" - > -Å»adne skrypty nie dziaÅ‚ajÄ… w tym regionie. - </notification> - - <notification - - name="NoOutsideScripts" - > -Ta posiadÅ‚ość nie pozwala na zewnÄ™trzne skrypty. -Å»adne skrypty nie bÄ™dÄ… tutaj dziaÅ‚ać za wyjÄ…tkiem skryptów zleżących do wÅ‚aÅ›ciciela posiadÅ‚oÅ›ci. - </notification> - - <notification - - name="ClaimPublicLand" - > -Tylko publiczne posiadÅ‚oÅ›ci w tym regionie mogÄ… być przejÄ™te. - </notification> - - <notification - - name="ObjectGiveItem" - > -Obiekt [OBJECTFROMNAME] należący do [FIRST] [LAST] daÅ‚ Ci [OBJECTTYPE] [OBJECTNAME]. - <form name="form"> - <button - - name="Keep" - text="Zachowaj"/> - <button - - name="Discard" - text="Wyrzuć"/> - <button - - name="Mute" - text="Wycisz"/> - </form> - </notification> - - <notification - - name="ObjectGiveItemUnknownUser" - > -Obiekt [OBJECTFROMNAME] należący do (wÅ‚aÅ›ciciel nieznany) daÅ‚ Ci [OBJECTTYPE] [OBJECTNAME]. - <form name="form"> - <button - - name="Keep" - text="Zachowaj"/> - <button - - name="Discard" - text="Wyrzuć"/> - <button - - name="Mute" - text="Wycisz"/> - </form> - </notification> - - <notification - - name="UserGiveItem" - > -[NAME] daÅ‚ Ci [OBJECTTYPE] '[OBJECTNAME]'. - <form name="form"> - <button - - name="Keep" - text="Zachowaj"/> - <button - - name="Discard" - text="Wyrzuć"/> - <button - - name="Mute" - text="Wycisz"/> - </form> - </notification> - - <notification - - name="GodMessage" - > -[NAME] -[MESSAGE] - </notification> - - <notification - - name="JoinGroup" - > -[MESSAGE] - <form name="form"> - <button - - name="Join" - text="Zaakceptuj"/> - <button - - name="Decline" - text="Odmów"/> - <button - - name="Info" - text="Info"/> - </form> - </notification> - - <notification - - name="TeleportOffered" - > -[NAME] proponuje Ci teleportcjÄ™ do siebie: - -[MESSAGE] - <form name="form"> - <button - - name="Teleport" - text="Teleportuj"/> - <button - - name="Cancel" - text="Anuluj"/> - </form> - </notification> - - <notification - - name="GotoURL" - > -[MESSAGE] -[URL] - <form name="form"> - <button - - name="Later" - text="Póżniej"/> - <button - - name="GoNow..." - text="Teraz..."/> - </form> - </notification> - - <notification - - name="OfferFriendship" - > -[NAME] proponuje Ci znajomość. - -[MESSAGE] - -(Z zalożenia bÄ™dzie widzić swój status online.) - <form name="form"> - <button - - name="Accept" - text="Zaakceptuj"/> - <button - - name="Decline" - text="Odmów"/> - </form> - </notification> - - <notification - - name="OfferFriendshipNoMessage" - > -[NAME] proponuje Ci znajomość. - -(Z zalożenia bÄ™dzie widzić swój status online.) - <form name="form"> - <button - - name="Accept" - text="Zaakceptuj"/> - <button - - name="Decline" - text="Odmów"/> - </form> - </notification> - - <notification - - name="FriendshipAccepted" - > -Twoja propozycja znajomoÅ›ci zostaÅ‚a przyjÄ™ta przez [NAME]. - </notification> - - <notification - - name="FriendshipDeclined" - > -Twoja propozycja znajomoÅ›ci zostaÅ‚a odrzucona przez [NAME]. - </notification> - - <notification - - name="OfferCallingCard" - > -[FIRST] [LAST] daje Ci swojÄ… wizytówkÄ™. -Wizytówka w Twojej Szafie może być używana do komunikowania siÄ™ (IM) z tym Rezydentem. - <form name="form"> - <button - - name="Accept" - text="Zaakceptuj"/> - <button - - name="Decline" - text="Odmów"/> - </form> - </notification> - - <notification - - name="RegionRestartMinutes" - - - > -Restart regionu za [MINUTES] min. -NastÄ…pi wylogowanie jeżeli zostaniesz w tym regionie. - </notification> - - <notification - - name="RegionRestartSeconds" - - - > -Restart regionu za [MINUTES] sek. -NastÄ…pi wylogowanie jeżeli zostaniesz w tym regionie. - </notification> - - <notification - - name="LoadWebPage" - > -ZaÅ‚adować stronÄ™ [URL]? - -[MESSAGE] - -Obiekt: [OBJECTNAME], wÅ‚aÅ›ciciel: [NAME]? - <form name="form"> - <button - - name="Gotopage" - text="Idź na stronÄ™"/> - <button - - name="Cancel" - text="Anuluj"/> - </form> - </notification> - - <notification - - name="FailedToFindWearableUnnamed" - > -[TYPE] - nie znaleziono w bazie danych. - </notification> - - <notification - - name="FailedToFindWearable" - > -[TYPE] [DESC] - nie znaleziono w bazie danych. - </notification> - - <notification - - name="ScriptQuestion" - > -'[OBJECTNAME]', wÅ‚aÅ›ciciel: '[NAME]', chciaÅ‚ by: - -[QUESTIONS] -Zgadzasz siÄ™? - <form name="form"> - <button - - name="Yes" - text="Tak"/> - <button - - name="No" - text="Nie"/> - <button - - name="Mute" - text="Wycisz"/> - </form> - </notification> - - <notification - - name="ScriptQuestionCaution" - > -'[OBJECTNAME]', wÅ‚aÅ›ciciel: '[NAME]', chciaÅ‚ by: - -[QUESTIONS] -Jeżeli nie ufasz temu obiektowi lub jego twórcy - odmów. Wybierz Szczegóły żeby otrzymać wiÄ™cej informacji. - -Zgadzasz siÄ™? - <form name="form"> - <button - - name="Grant" - text="Zaakceptuj"/> - <button - - name="Deny" - text="Odmów"/> - <button - - name="Details" - text="Szczegóły..."/> - </form> - </notification> - - <notification - - name="ScriptDialog" - > -[FIRST] [LAST]'s '[TITLE]' -[MESSAGE] - <form name="form"> - <button - - name="Ignore" - text="Zignoruj"/> - </form> - </notification> - - <notification - - name="ScriptDialogGroup" - > -[GROUPNAME]'s '[TITLE]' -[MESSAGE] - <form name="form"> - <button - - name="Ignore" - text="Zignoruj"/> - </form> - </notification> - - <notification - - name="FirstBalanceIncrease" - > -Przekazano Ci [AMOUNT]L$. -Obiekty i inni użytkownicy mogÄ… Ci dawać L$. -Twój balans jest wyÅ›wietlony w prawym górnym rogu ekranu. - </notification> - - <notification - - name="FirstBalanceDecrease" - > -Pobrano od Ciebie [AMOUNT]L$. -Twój balans jest wyÅ›wietlony w prawym górnym rogu ekranu. - </notification> - - <notification - - name="FirstSit" - > -Siedzisz. -Używaj strzaÅ‚ek (albo AWSD) żeby zmieniać widok. -NaciÅ›nij przycisk WstaÅ„ żeby sie podnieść. - </notification> - - <notification - - name="FirstMap" - > -Kliknij i przeciÄ…gnij by przsuwać mapÄ™. -Kliknij dwa razy żeby siÄ™ teleportować. -Używaj narzÄ™dzi po prawej stronie żeby znajdować i wyÅ›wietlać różne obiekty. - </notification> - - <notification - - name="FirstBuild" - > -Możesz budować nowe obiekty w niektórych miejscach. -Używaj narzÄ™dzi w lewym górnym rogu żeby budować, przyciskaj Ctrl lub Alt żeby szybko zmieniać narzÄ™dzia. -NaciÅ›nij Esc żeby skoÅ„czyć budować. - </notification> - - <notification - - name="FirstLeftClickNoHit" - > -Lewy klik żeby używać specjalnych obiektów. -Jeżeli strzaÅ‚ka zmieni siÄ™ na rÄ…czkÄ™ możesz używać tego obiektu. -Prawy klik zawsze pokazuje menu dostÄ™pnych operacji. - </notification> - - <notification - - name="FirstTeleport" - > -NastÄ…piÅ‚a teleportacja. -JesteÅ› przy Infohub najbliższej Twojego celu. -Twój cel jest zaznaczony wysokim czerwonym wskaźnikiem. - </notification> - - <notification - - name="FirstOverrideKeys" - > -Twoje sterujÄ…ce klawisze zostaÅ‚y przejÄ™te przez obiekt. -Użyj strzaÅ‚ek lub AWSD żeby sprawdzić ich dziaÅ‚anie. -Niektóre obiekty (np broÅ„) wymagajÄ… trybu panoramicznego. -Nacisnij 'M' żeby go wybrać. - </notification> - - <notification - - name="FirstAppearance" - > -Edytujesz swój wyglÄ…d. -Używaj strzaÅ‚ek do obracania i zbliżenia. -Po skoÅ„czeniu wybierz 'Zapisz Zmiany' -żeby zapisać Twój wyglÄ…d i wyjść. -Możesz edytować wyglÄ…d jak czÄ™sto chcesz. - </notification> - - <notification - - name="FirstInventory" - > -To jest Twoja Szafa, który zawiera obikty, notki, ubrania i inne Twoje rzeczy. -* Å»eby zaÅ‚ożyć obiekt lub strój (folder) przeciÄ…gnij go na siebie. -* Å»eby przenieść obiekt do Å›wiata przeciÄ…gnij go na grunt. -* Å»eby przeczytać notkÄ™ kliknij na niej dwa razy. - </notification> - - <notification - - name="FirstSandbox" - > -Ten region to piaskownica. -Obiekty które tu zbudujesz mogÄ… zostać usuniÄ™te jak opuÅ›cisz ten obszar - piaskownice sÄ… regularnie czyszczone, sprawdź informacje na górze ekranu obok nazwy regionu. - -Piaskownice spotyka siÄ™ rzadko i sÄ… zawsze oznakowane. - </notification> - - <notification - - name="FirstFlexible" - > -To jest elastyczny obiekt. -Obiekty elastyczne nie mogÄ… być fizyczne i muszÄ… być typu fantom. - </notification> - - <notification - - name="FirstDebugMenus" - > -Zaawansowane menu zostaÅ‚o włączone. -To menu zawiera funkcje użyteczne dla programistów analizujÄ…cych Secon Life. -To menu jest włączne przez Ctrl-Alt-D pod Windows. Mac używa Cmd-Opt-Shift-D. - </notification> - - <notification - - name="FirstSculptedPrim" - > -Edytujesz sculpt. -Skulpty wymagajÄ… specjalnych tekstur które definiujÄ… ich ksztaÅ‚t. -PrzykÅ‚ady tekstur znajdujÄ… siÄ™ w bibliotece szafy. - </notification> - - <notification - - name="FirstMedia" - > -Odtwarzasz media. Możesz wybrać automatyczne odtwarzanie w Ustawieniach pod Audio i Video. Odtwarzanie mediów w miejscach którym nie ufasz może być niebezpieczne. - </notification> - - <notification - - name="MaxListSelectMessage" - > -Maksymalnie możesz wybrać [MAX_SELECT] rzeczy -z tej listy. - </notification> - - <notification - - name="VoiceInviteP2P" - > -[NAME] zaprasza CiÄ™ do rozmowy gÅ‚osem. -Wybierz Zaakceptuj żeby rozmawiać albo Odmów żeby nie przyjąć zaproszenia. -Wybierz Wycisz żeby wyciszyć dzwoniÄ…cÄ… osobÄ™. - <form name="form"> - <button - - name="Accept" - text="Zaakceptuj"/> - <button - - name="Decline" - text="Odmów"/> - <button - - name="Mute" - text="Wycisz"/> - </form> - </notification> - - <notification - - name="AutoUnmuteByIM" - > -Wiadomość (IM) zostaÅ‚a wysÅ‚ana do [FIRST] [LAST] i wyciszenie zostaÅ‚o automatycznie usuniÄ™te. - </notification> - - <notification - - name="AutoUnmuteByMoney" - > -PieniÄ…dze zostaÅ‚y przekazane do [FIRST] [LAST] i wyciszenie zostaÅ‚o automatycznie usuniÄ™te. - </notification> - - <notification - - name="AutoUnmuteByInventory" - > -Oferta z szafy dla [FIRST] [LAST] automatycznie usunęła wyciszenie. - </notification> - - <notification - - name="VoiceInviteGroup" - > -[NAME] zaczyna rozmowÄ™ z grupÄ… [GROUP]. -Wybierz Zaakceptuj żeby rozmawiać albo Odmów żeby nie przyjąć zaproszenia. -Wybierz Wycisz żeby wyciszyć dzwoniÄ…cÄ… osobÄ™. - <form name="form"> - <button - - name="Accept" - text="Zaakceptuj"/> - <button - - name="Decline" - text="Odmów"/> - <button - - name="Mute" - text="Wycisz"/> - </form> - </notification> - - <notification - - name="VoiceInviteAdHoc" - > -[NAME] zaczyna konferencjÄ™ gÅ‚osem. -Wybierz Zaakceptuj żeby rozmawiać albo Odmów żeby nie przyjąć zaproszenia. -Wybierz Wycisz żeby wyciszyć dzwoniÄ…cÄ… osobÄ™. - <form name="form"> - <button - - name="Accept" - text="Zaakceptuj"/> - <button - - name="Decline" - text="Odmów"/> - <button - - name="Mute" - text="Wycisz"/> - </form> - </notification> - - <notification - - name="InviteAdHoc" - > -[NAME] zaprasza CiÄ™ do konferencji poprzez Czat/IM. -Wybierz Zaakceptuj żeby zacząć czat albo Odmów żeby nie przyjąć zaproszenia. -Wybierz Wycisz żeby wyciszyć tÄ… osobÄ™. - <form name="form"> - <button - - name="Accept" - text="Zaakceptuj"/> - <button - - name="Decline" - text="Odmów"/> - <button - - name="Mute" - text="Wycisz"/> - </form> - </notification> - - <notification - - name="VoiceChannelFull" - > -Rozmowa w której chcesz uczestniczyć, [VOICE_CHANNEL_NAME], nie akceptuje wiÄ™cej rozmówców. Spróbuj póżniej. - </notification> - - <notification - - name="ProximalVoiceChannelFull" - > -Przepraszamy. Limit rozmów zostaÅ‚ przekroczony w tym obszarze. Spróbuj w innym miejscu. - </notification> - - <notification - - name="VoiceChannelDisconnected" - > -[VOICE_CHANNEL_NAME] odłączyÅ‚ siÄ™. Przełączanie do rozmowy przestrzennej. - </notification> - - <notification - - name="VoiceChannelDisconnectedP2P" - > -[VOICE_CHANNEL_NAME] skoÅ„czyÅ‚ rozmowÄ™. Przełączanie do rozmowy przestrzennej. - </notification> - - <notification - - name="P2PCallDeclined" - > -[VOICE_CHANNEL_NAME] odmówiÅ‚ połączenia. Przełączanie do rozmowy przestrzennej. - </notification> - - <notification - - name="P2PCallNoAnswer" - > -[VOICE_CHANNEL_NAME] nie odpowiada. Przełączanie do rozmowy przestrzennej. - </notification> - - <notification - - name="VoiceChannelJoinFailed" - > -Brak połączenia z [VOICE_CHANNEL_NAME], spróbuj póżniej. Przełączanie do rozmowy przestrzennej. - </notification> - - <notification - - name="VoiceLoginRetry" - > -Tworzymy kanaÅ‚ gÅ‚osu dla Ciebie. Moze potrwać minutÄ™. - </notification> - - <notification - - name="Cannot enter parcel: not a group member" - > -Nie masz dostÄ™pu do posiadÅ‚oÅ›ci, nie należysz do wÅ‚aÅ›ciwej grupy. - </notification> - - <notification - - name="Cannot enter parcel: banned" - > -Masz wzbroniny dostÄ™p to tej posiadÅ‚oÅ›ci (ban). - </notification> - - <notification - - name="Cannot enter parcel: not on access list" - > -Nie masz dostÄ™pu do posiadÅ‚oÅ›ci, nie jesteÅ› na liÅ›cie dostÄ™pu. - </notification> - - <notification - - name="VoiceNotAllowed" - > -Nie masz pozwolenia na połączenie z rozmowÄ… [VOICE_CHANNEL_NAME]. - </notification> - - <notification - - name="VoiceCallGenericError" - > -Błąd podczas łączenia z rozmowÄ… [VOICE_CHANNEL_NAME]. Spróbuj póżniej. - </notification> - - <notification - - name="ServerVersionChanged" - > -Ten region używa innej wersji symulatora. Kliknij na tÄ… wiadomość żeby uzyskać wiÄ™cej informacji. - </notification> - - <notification - - name="UnableToOpenCommandURL" - > -Wybrany link nie daje siÄ™ otworzyć z tej przeglÄ…darki. - </notification> - - <global name="UnsupportedCPU"> -- PrÄ™dkość Twojego CPU nie speÅ‚nia minimalnych wymagaÅ„. - </global> - - <global name="UnsupportedGLRequirements"> -WyglÄ…da na to, że Twój system nie speÅ‚nia wymagaÅ„ sprzÄ™towych Second Life. Second Life wymaga karty graficznej kompatybilnej z OpenGL z multiteksturami. Jeżeli masz takÄ… kartÄ™ zainstaluj najnowsze sterowniki do niej i uaktualnienia systemu operacyjnego. - -Jeżeli wciąż masz problemy sprawdź: http://www.secondlife.com/support - </global> - - <global name="UnsupportedCPUAmount"> -796 - </global> - - <global name="UnsupportedRAMAmount"> -510 - </global> - - <global name="UnsupportedGPU"> -- Twoja karta graficzna nie speÅ‚nia minimalnych wymagaÅ„. - </global> - - <global name="UnsupportedRAM"> -- Pamięć Twojego systemu nie speÅ‚nia minimalnych wymagaÅ„. - </global> - - <global name="PermYes"> -Tak - </global> - - <global name="PermNo"> -Nie - </global> -</notifications> - +<?xml version="1.0" encoding="utf-8"?> +<notifications> + <global name="skipnexttime"> + Nie pokazuj tej opcji nastÄ™pnym razem + </global> + <global name="alwayschoose"> + Pozwalaj na wybór tej opcji + </global> + <template name="okbutton"> + <form> + <button + name="OK" + text="$yestext"/> + </form> + </template> + + <template name="okignore"> + <form> + <button + name="OK" + text="$yestext"/> + <ignore text="$ignoretext"/> + </form> + </template> + + <template name="okcancelbuttons"> + <form> + <button + name="OK" + text="$yestext"/> + <button + name="Cancel" + text="$notext"/> + </form> + </template> + + <template name="okcancelignore"> + <form> + <button + name="OK" + text="$yestext"/> + <button + name="Cancel" + text="$notext"/> + <ignore text="$ignoretext"/> + </form> + </template> + + <template name="okhelpbuttons"> + <form> + <button + name="OK" + text="$yestext"/> + <button + name="Help" + text="$helptext"/> + </form> + </template> + + <template name="yesnocancelbuttons"> + <form> + <button + name="Yes" + text="$yestext"/> + <button + name="No" + text="$notext"/> + <button + name="Cancel" + text="$canceltext"/> + </form> + </template> + <notification functor="GenericAcknowledge" label="Nieznany rodzaj komunikatu" name="MissingAlert"> + Twoja wersja klienta Second Life nie może wyÅ›wietlić odebranej wiadomoÅ›ci. + +Szczegóły błędu: Błąd o nazwie '[_NAME]' nie zostaÅ‚ odnaleziony w pliku notifications.xml. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="FloaterNotFound"> + Błąd: nie można znaleźć nastÄ™pujÄ…cych elementów: + +[CONTROLS] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="TutorialNotFound"> + Brak samouczka na ten temat + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="GenericAlert"> + [MESSAGE] + </notification> + <notification name="GenericAlertYesCancel"> + [MESSAGE] + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Tak"/> + </notification> + <notification name="BadInstallation"> + Podczas aktualizacji klienta Second Life wystÄ…piÅ‚ błąd. ProszÄ™ odwiedzić stronÄ™ secondlife.com by Å›ciÄ…gnąć najnowszÄ… wersje klienta. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + <notification name="LoginFailedNoNetwork"> + Błąd sieci: Brak połączenia. +'[DIAGNOSTIC]' +Sprawdź stan swojego połączenia sieciowego. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + <notification name="MessageTemplateNotFound"> + Wzór komunikatu dla [PATH] nie odnaleziony. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + <notification name="WearableSave"> + Zapisać zmiany dotyczÄ…ce ubrania/części ciaÅ‚a? + <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Nie Zapisuj" yestext="Zapisz"/> + </notification> + <notification name="CompileQueueSaveText"> + W trakcie Å‚adwania tekstu dla skryptu pojawiÅ‚ siÄ™ problem z nastÄ™pujÄ…cego powodu: [REASON]. Spróbuj ponownie za kilka minut. + </notification> + <notification name="CompileQueueSaveBytecode"> + W trakcie Å‚adwania skompilowanego skryptu pojawiÅ‚ siÄ™ problem z nastÄ™pujÄ…cego powodu: [REASON]. Spróbuj ponownie za kilka minut. + </notification> + <notification name="WriteAnimationFail"> + Problem w zapisywaniu danych animacji. Spróbuj ponownie za kilka minut. + </notification> + <notification name="UploadAuctionSnapshotFail"> + W trakcie Å‚adwania obrazu aukcji pojawiÅ‚ siÄ™ problem z nastÄ™pujÄ…cego powodu: [REASON]. + </notification> + <notification name="UnableToViewContentsMoreThanOne"> + Nie można przeglÄ…dać zawartoÅ›ci wiÄ™cej niż jednego obiektu naraz. +Wybierz pojedynczy obiekt i spróbuj jeszcze raz. + </notification> + <notification name="SaveClothingBodyChanges"> + Zapisać wszystkie zmiany dotyczÄ…ce ubrania/czeÅ›ci ciaÅ‚a? + <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Nie Zapisuj" yestext="Zapisz"/> + </notification> + <notification name="GrantModifyRights"> + Udzielenie praw modyfikacji innemu Rezydentowi umożliwia modyfikacjÄ™, usuwanie lub wziÄ™cie JAKIEGOKOLWIEK z Twoich obiektów. +Używaj tej opcji z rozwagÄ…! +Czy chcesz dać prawa modyfikacji osobie [FIRST_NAME] [LAST_NAME]? + <usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/> + </notification> + <notification name="GrantModifyRightsMultiple"> + Udzielenie praw modyfikacji innym Rezydentom umożliwia im modyfikacjÄ™, usuwanie lub wziÄ™cie JAKIEGOKOLWIEK z Twoich obiektów. +Używaj tej opcji z rozwagÄ…! +Czy chcesz dać prawa modyfikacji wybranym osobom? + <usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/> + </notification> + <notification name="RevokeModifyRights"> + Czy chcesz odebrać prawa modyfikacji Rezydentowi [FIRST_NAME] [LAST_NAME]? + <usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/> + </notification> + <notification name="RevokeModifyRightsMultiple"> + Czy chcesz odebrać prawa modyfikacji wybranym Rezydentom? + <usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/> + </notification> + <notification name="UnableToCreateGroup"> + ZaÅ‚ożenie grupy niemożliwe. +[MESSAGE] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="PanelGroupApply"> + [NEEDS_APPLY_MESSAGE] +[WANT_APPLY_MESSAGE] + <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Ignoruj Zmiany" yestext="Zastosuj Zmiany"/> + </notification> + <notification name="MustSpecifyGroupNoticeSubject"> + Aby wysÅ‚ać ogÅ‚oszenie do grupy musisz nadać mu tytuÅ‚. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="AddGroupOwnerWarning"> + Dodajesz czÅ‚onków do funkcji [ROLE_NAME]. +Ta funkcja nie może być odebrana. +CzÅ‚onkowie muszÄ… sami zrezygnować z peÅ‚nienia tej funkcji. +Chcesz kontynuować? + <usetemplate ignoretext="Podczas dodawania czÅ‚onków grupy do funkcji wÅ‚aÅ›ciciela" name="okcancelignore" notext="Nie" yestext="Tak"/> + </notification> + <notification name="AssignDangerousActionWarning"> + Dodajesz przywilej [ACTION_NAME] do fukcji [ROLE_NAME]. + +*UWAGA* +CzÅ‚onek w funkcji z tym przywilejem może przypisać siebie i innych czÅ‚onków nie bÄ™dÄ…cych wÅ‚aÅ›cicielami do funkcji dajÄ…cych wiÄ™cej przywilejów niż posiadane obecnie potencjalnie dajÄ…ce możliwoÅ›ci zbliżone do możliwoÅ›ci wÅ‚aÅ›ciciela. +Udzielaj tego przywileju z rozwagÄ…." + +Dodać ten przywilej do funkcji [ROLE_NAME]? + <usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/> + </notification> + <notification name="AssignDangerousAbilityWarning"> + Dodajesz przywilej [ACTION_NAME] do fukcji [ROLE_NAME] + +*UWAGA* +CzÅ‚onek w funkcji z tym przywilejem może przypisać sobie i innychm czÅ‚onkom nie bÄ™dÄ…cym wÅ‚aÅ›cicielami wszystkie przywileje potencjalnie dajÄ…ce możliwoÅ›ci zbliżone do możliwoÅ›ci wÅ‚aÅ›ciciela. +Udzielaj tego przywileju z rozwagÄ…. + +Dodać ten przywilej do funkcji [ROLE_NAME]? + <usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/> + </notification> + <notification name="ClickPublishHelpLand"> + Wybranie opcji Publikuj w Wyszukiwarce Wybranie tej opcji umożliwi pokazywanie: +- tej posiadÅ‚oÅ›ci w wynikach wyszukiwarki +- publicznych obiektów na tej posiadÅ‚oÅ›ci +- tej posiadÅ‚oÅ›ci w przeglÄ…darce internetowej + </notification> + <notification name="ClickSoundHelpLand"> + Media oraz muzyka sÄ… aktywne wedÅ‚ug ustawieÅ„ posiadÅ‚oÅ›ci dla mediów. DźwiÄ™k oraz komunikacja gÅ‚osowa mogÄ… być ograniczone w danej posiadÅ‚oÅ›ci, w zależnoÅ›ci od ustawieÅ„ rodzaju treÅ›ci jakÄ… zawiera. Skorzystaj z Second Life:Pomoc by uzyskać wiÄ™cej informacji na temat dostÄ™pu do regionów z podanym rodzajem treÅ›ci jakÄ… zawiera. + <url name="url"> + https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=5046 + </url> + <usetemplate + name="okcancelbuttons" + yestext="Second Life:Pomoc" + notext="Zamknij" /> + </notification> + <notification name="ClickSearchHelpAll"> + Wyniki wyszukiwania wyÅ›wietlajÄ… siÄ™ na podstawie rodzaju zakÅ‚adki wyszukiwarki, z której korzystasz, rodzaju statusu Twojego wieku, wybranej kategorii, oraz innych czynników. By uzyskać wiecej szczegółów skorzystaj z Second Life: Pomoc. + <url name="url"> + https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=4722 + </url> + <usetemplate + name="okcancelbuttons" + yestext="Second Life:Pomoc" + notext="Zamknij" /> + </notification> + <notification name="ClickPublishHelpLandDisabled"> + Ta posiadÅ‚ość nie może być pokazywana w wynikach wyszukiwania ponieważ region w którym siÄ™ znajduje zabrania tego. + </notification> + <notification name="ClickPublishHelpAvatar"> + Wybranie opcji Publikuj w Wyszukiwarce umożliwi pokazywanie: +- Twojego profilu w wynikach wyszukiwarki +- linku do Twojego profilu na publicznych stronach + </notification> + <notification name="ClickPartnerHelpAvatar"> + Możesz zaproponować zwiÄ…zek innemu Rezydentowi lub rozwiÄ…zać istniejÄ…cy zwiÄ…zek na stronie internetowej [SECOND_LIFE]. + +Chcesz dowiedzieć siÄ™ wiÄ™cej na temat zwiÄ…zków w Second Life? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Idź na stronÄ™"/> + </notification> + <notification name="ClickUploadHelpPermissions"> + Twoje domyÅ›lne ustawienia praw dla Twoich obiektów mogÄ… nie dziaÅ‚ać poprawnie w starszych regionach. + </notification> + <notification name="ClickWebProfileHelpAvatar"> + Jeżeli ten Rezydent posiada link URL w profilu możesz: + * Kliknąć 'ZaÅ‚aduj' żeby zobaczyć stronÄ™ w tej zakÅ‚adce WWW. + * Kliknąć 'ZaÅ‚aduj' > 'Użyj zewnÄ™trznej przeglÄ…darki' żeby zobaczyć stronÄ™ używajÄ…c domyÅ›lnej zewnÄ™trznej przeglÄ…darki. + * Kliknąć 'ZaÅ‚aduj' > 'Otwórz URL strony profilu' żeby wrócić do strony tego Rezydenta po jej opuszczeniu. + +OglÄ…dajÄ…c swój profil możesz wpisać dowolny link URL i kliknąć OK żeby go zapisać. +Rezydenci mogÄ… odwiedzać podany adres, kiedy przeglÄ…dajÄ… Twój profil. + </notification> + <notification name="JoinGroupCanAfford"> + Dołączenie do tej grupy kosztuje [COST]L$. +Chcesz kontynuować? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Dołącz"/> + </notification> + <notification name="JoinGroupCannotAfford"> + CzÅ‚onkostwo w tej grupie kosztuje [COST]L$ +Masz za maÅ‚o L$ żeby zostać czÅ‚onkiem. + </notification> + <notification name="LandBuyPass"> + Za [COST]L$ możesz odwiedzić tÄ… posiadÅ‚ość ('[PARCEL_NAME]') na [TIME] godzin. Chcesz kupić przepustkÄ™? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="SalePriceRestriction"> + Cena sprzedaży musi być wyższa niż 0L$ jeżeli sprzedajesz komukolwiek. +Musisz wybrać kupca jeżeli chcesz sprzedać za 0L$. + </notification> + <notification name="ConfirmLandSaleChange"> + PosiadÅ‚ość o powierzchni [LAND_SIZE] m zostaje wystawiona na sprzedaż. +Cena wynosi [SALE_PRICE]L$ i sprzedaż bÄ™dzie autoryzowana dla [NAME]. + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="ConfirmLandSaleToAnyoneChange"> + UWAGA: WybierajÄ…c Sprzedaż dla Kogokolwiek umożliwiasz zakup posiadÅ‚oÅ›ci wszystkim Rezydentom Second Life. + +PosiadÅ‚ość o powierzchni [LAND_SIZE] m zostaje wystawiona na sprzedaż. +Cena wynosi [SALE_PRICE]L$ i sprzedaż bÄ™dzie autoryzowana dla [NAME]. + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="ReturnObjectsDeededToGroup"> + Czy na pewno chcesz zwrócić wszystkie obiekty udostÄ™pnione grupie [NAME] na tej posiadÅ‚oÅ›ci do szafy ich poprzednich wÅ‚aÅ›cicieli? + +*UWAGA* Wybrana opcja spowoduje usuniÄ™cie wszystkich obiektów +udostÄ™pnionych grupie, które nie majÄ… praw transferu! + +Obiekty: [N] + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="ReturnObjectsOwnedByUser"> + Czy na pewno chcesz zwrócić wszystkie obiekty należące do Rezydenta [NAME] znajdujÄ…ce siÄ™ na tej posiadÅ‚oÅ›ci do szafy wÅ‚aÅ›ciciela? + +Obiekty: [N] + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="ReturnObjectsOwnedBySelf"> + Czy na pewno chcesz zwrócić wszystkie Twoje obiekty znajdujÄ…ce siÄ™ na tej posiadÅ‚oÅ›ci do swojej szafy? + +Obiekty: [N] + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="ReturnObjectsNotOwnedBySelf"> + Czy na pewno chcesz zwrócić wszystkie obiekty, których nie jesteÅ› wÅ‚aÅ›cicielem znajdujÄ…ce siÄ™ na tej posiadÅ‚oÅ›ci do szaf wÅ‚aÅ›cicieli? Wszystkie obiekty udostÄ™pnione grupie z prawem transferu, zostanÄ… zwrócone poprzednim wÅ‚aÅ›cicielom. + +*UWAGA* Wybrana opcja spowoduje usuniÄ™cie wszystkich obiektów udostÄ™pnionych grupie, które nie majÄ… praw transferu! + +Obiekty: [N] + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="ReturnObjectsNotOwnedByUser"> + Czy na pewno chcesz zwrócić wszystkie obiekty, które nie należą do [NAME] znajdujÄ…ce siÄ™ na tej posiadÅ‚oÅ›ci do szaf wÅ‚aÅ›cicieli? Wszystkie obiekty udostÄ™pnione grupie z prawem transferu, zostanÄ… zwrócone poprzednim wÅ‚aÅ›cicielom. + +*UWAGA* Wybrana opcja spowoduje usuniÄ™cie wszystkich obiektów udostÄ™pnionych grupie, które nie majÄ… praw transferu! + +Obiekty: [N] + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="ReturnAllTopObjects"> + Czy na pewno chcesz zwrócić wszystkie wymienione obiekty znajdujÄ…ce siÄ™ na tej posiadÅ‚oÅ›ci do szaf ich wÅ‚aÅ›cicieli? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="DisableAllTopObjects"> + Czy na pewno chcesz deaktywować wszystkie obiekty w tym regionie? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="ReturnObjectsNotOwnedByGroup"> + Zwrócić obiekty z tej posiadÅ‚oÅ›ci, które nie sÄ… udosÄ™pnione grupie [NAME] do ich wÅ‚aÅ›cicieli? + +Obiekty: [N] + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="UnableToDisableOutsideScripts"> + Nie można deaktywować skryptów. +Ten region pozwala na uszkodzenia. +Skrypty muszÄ… pozostać aktywne dla prawidÅ‚owego dziaÅ‚ania broni. + </notification> + <notification name="MustBeInParcel"> + Musisz znajdować siÄ™ wewnÄ…trz posiadÅ‚oÅ›ci żeby wybrać punkt lÄ…dowania. + </notification> + <notification name="PromptRecipientEmail"> + ProszÄ™ wpisać adres emailowy odbiorcy. + </notification> + <notification name="PromptSelfEmail"> + ProszÄ™ wpisać swój adres emailowy. + </notification> + <notification name="PromptMissingSubjMsg"> + WysÅ‚ać widokówkÄ™ z domyÅ›lnym tematem i wiadomoÅ›ciÄ…? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="ErrorProcessingSnapshot"> + Błąd w trakcie przetwarzania danych zdjÄ™cia. + </notification> + <notification name="ErrorEncodingSnapshot"> + Błąd w kodowaniu zdjÄ™cia. + </notification> + <notification name="ErrorUploadingPostcard"> + W trakcie Å‚adowania zdjÄ™cia pojawiÅ‚ siÄ™ problem z nastÄ™pujÄ…cego powodu: [REASON] + </notification> + <notification name="ErrorUploadingReportScreenshot"> + W trakcie Å‚adowania zdjÄ™cia ekranu do raportu pojawiÅ‚ siÄ™ problem z nastÄ™pujÄ…cego powodu: [REASON] + </notification> + <notification name="MustAgreeToLogIn"> + Musisz zaakceptować Warunki Umowy (Terms of Service) by kontynuować logowanie siÄ™ do [SECOND_LIFE]. + </notification> + <notification name="CouldNotPutOnOutfit"> + ZaÅ‚ożenie stroju nie powiodÅ‚o siÄ™. +Folder stroju nie zawiera żadnego ubrania, części ciaÅ‚a ani załączników. + </notification> + <notification name="CannotWearTrash"> + Nie możesz zaÅ‚ożyć ubrania, które znajduje siÄ™ w koszu. + </notification> + <notification name="CannotWearInfoNotComplete"> + Nie możesz zaÅ‚ożyć tego artkuÅ‚u ponieważ nie zaÅ‚adowaÅ‚ siÄ™ poprawnie. Spróbuj ponownie za kilka minut. + </notification> + <notification name="MustHaveAccountToLogIn"> + Musisz mieć konto by móc zalogować siÄ™ do [SECOND_LIFE]. +Czy chcesz przejść na stronÄ™ www.secondlife.com by zaÅ‚ożyć konto? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="AddClassified"> + OgÅ‚oszenia reklamowe ukazujÄ… siÄ™ w zakÅ‚adce Reklama w wyszukiwarce (Szukaj) oraz na stronie internetowej www.secondlife.com przez tydzieÅ„. +Napisz treść swojej reklamy, kliknij Zamieść by dodać katalogu ogÅ‚oszeÅ„. +Po zamieszczeniu reklamy zostaniesz poproszony o sprecyzowanie opÅ‚aty za reklamÄ™. +Im wyższa opÅ‚ata tym wyżej Twoja reklama wyÅ›wietla siÄ™ w katalogu i wyszukiwarce po wpisaniu słów kluczowych. + <usetemplate ignoretext="W momencie dodawania nowej reklamy" name="okcancelignore" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="DeleteClassified"> + Usunąć reklamÄ™ '[NAME]'? +PamiÄ™taj! Nie ma rekompensaty za poniesione koszta. + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="ClassifiedSave"> + Zapisać zmiany w reklamie [NAME]? + <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Nie Zapisuj" yestext="Zapisz"/> + </notification> + <notification name="DeleteAvatarPick"> + Usunąć wybór [PICK] z kategorii LubiÄ™? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="PromptGoToEventsPage"> + Odwiedzić internetowÄ… stronÄ™ imprez [SECOND_LIFE]? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="SelectProposalToView"> + Wybierz propozycjÄ™, którÄ… chcesz zobaczyć. + </notification> + <notification name="SelectHistoryItemToView"> + Wybierz obiekt z historii, który chcesz zobaczyć. + </notification> + <notification name="ResetShowNextTimeDialogs"> + Zresetować 'Pokaż nastÄ™pnym razem' opcjÄ™ we wszystkich dialogach? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="SkipShowNextTimeDialogs"> + Wyłączyć 'Pokaż nastÄ™pnym razem' opcjÄ™ we wszystkich dialogach? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="CacheWillClear"> + Bufor danych na dysku zostanie zresetowany po relogu do [SECOND_LIFE]. + </notification> + <notification name="CacheWillBeMoved"> + Bufor danych na dysku zostanie przemieszczony po relogu do [SECOND_LIFE]. +Bufor bÄ™dzie również wyczyszczony. + </notification> + <notification name="ChangeConnectionPort"> + Ustawienia portu zostanÄ… wprowadzone po relogu do [SECOND_LIFE]. + </notification> + <notification name="ChangeSkin"> + Nowa skórka zostanie wprowadzona po relogu do [SECOND_LIFE]. + </notification> + <notification name="GoToAuctionPage"> + Odwiedzić stronÄ™ internetowÄ… [SECOND_LIFE] żeby zobaczyć szczgóły aukcji lub zrobić ofertÄ™? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="SaveChanges"> + Zapisać Zmiany? + <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Nie Zapisuj" yestext="Zapisz"/> + </notification> + <notification name="GestureSaveFailedTooManySteps"> + Nie można zapisać gestu. +Ten gest ma zbyt wiele etapów. +UsuÅ„ kilka etapów i zapisz jeszcze raz. + </notification> + <notification name="GestureSaveFailedTryAgain"> + Zapis gestu nie powiódÅ‚ siÄ™. Spróbuj jeszcze raz za kilka minut. + </notification> + <notification name="GestureSaveFailedObjectNotFound"> + Nie można zapisać gestu ponieważ obiekt lub szafa powiÄ…zanego obiektu nie zostaÅ‚ znaleziony. +Obiekt może znajdować siÄ™ zbyt daleko albo zostaÅ‚ usuniety. + </notification> + <notification name="GestureSaveFailedReason"> + Nie można zapisać gestu z nastÄ™pujÄ…cego powodu: [REASON]. Spróbuj zapisać jeszcze raz póżniej. + </notification> + <notification name="SaveNotecardFailObjectNotFound"> + Nie można zapisać notki ponieważ obiekt lub szafa powiÄ…zanego obiektu nie zostaÅ‚ znaleziony. +Obiekt może znajdować siÄ™ zbyt daleko albo zostaÅ‚ usuniety. + </notification> + <notification name="SaveNotecardFailReason"> + Nie można zapisać notki z nastÄ™pujÄ…cego powodu: [REASON]. Spróbuj zapisać jeszcze raz póżniej. + </notification> + <notification name="ScriptCannotUndo"> + Nie można cofnąć wszystkich zmian w Twojej wersji skryptu. +Czy chcesz zaÅ‚adować ostatniÄ… wersjÄ™ zapisanÄ… na serwerze? +(*UWAGA* Ta operacja jest nieodwracalna.) + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="SaveScriptFailReason"> + Nie można zapisać skryptu z nastÄ™pujÄ…cego powodu: [REASON]. Spróbuj zapisać jeszcze raz póżniej. + </notification> + <notification name="SaveScriptFailObjectNotFound"> + Nie można zapisać skryptu ponieważ obiekt w którym siÄ™ zawiera nie zostaÅ‚ znaleziony. +Obiekt może znajdować siÄ™ zbyt daleko albo zostaÅ‚ usuniety. + </notification> + <notification name="SaveBytecodeFailReason"> + Nie można zapisać skompilowanego skryptu z nastÄ™pujÄ…cego powodu: [REASON]. Spróbuj zapisać jeszcze raz póżniej. + </notification> + <notification name="CouldNotStartStopScript"> + Nie można uruchomić lub zatrzymać skryptu ponieważ obiekt w którym siÄ™ zawiera nie zostaÅ‚ znaleziony. +Obiekt może znajdować siÄ™ zbyt daleko albo zostaÅ‚ usuniety. + </notification> + <notification name="CannotDownloadFile"> + Nie można zaÅ‚adować pliku + </notification> + <notification name="CannotWriteFile"> + Nie można zapisać pliku [[FILE]] + </notification> + <notification name="UnsupportedHardware"> + Uwaga: Twój system nie speÅ‚nia minimalnych wymagaÅ„ sprzÄ™towych Second Life. Jakość i prÄ™dkość Second Life mogÄ… być pogorszone. Niestety, nie bÄ™dziemy w stanie udzielić Ci technicznej pomocy, ponieważ konfiguracja Twojego systemu nie speÅ‚nia wymagaÅ„ sprzÄ™towych. + +MINSPECS +Czy chcesz odwiedzić stronÄ™ [_URL] po dodatkowe informacje? + <url name="url" option="0"> + http://www.secondlife.com/corporate/sysreqs.php + </url> + <usetemplate ignoretext="Zignoruj ostrzeżenie" name="okcancelignore" notext="Nie" yestext="Tak"/> + </notification> + <notification name="UnknownGPU"> + Twój system jest wyposażony w kartÄ™ graficznÄ… której jeszcze nie znamy. +To siÄ™ czÄ™sto zdarza z nowym sprzÄ™tem, którego jeszcze nie testowaliÅ›my. +Second Life najprawdopodobniej bÄ™dzie dziaÅ‚aÅ‚o poprawnie. Możliwe, że bÄ™dziesz musiaÅ‚ wyregulować ustawienia grafiki. +(Edycja > Ustawienia > Grafika). + <form name="form"> + <ignore name="ignore" text="Zignoruj ostrzeżenie"/> + </form> + </notification> + <notification name="DisplaySettingsNoShaders"> + [SECOND_LIFE] zawiesiÅ‚ siÄ™ podczas inicjalizacji sterowników graficznych. Jakość grafiki zostaÅ‚a zmniejszona - może pomoże. Pewne funkcje graficzne zostaÅ‚y wyłączone. Zalecamy aktualizcje strerowników grapicznych. +Możesz podnieść jakość grafiki pod Ustawienia > Grafika. + </notification> + <notification name="RegionNoTerraforming"> + Region [REGION] nie pozwala na formowanie powierzchni ziemi. + </notification> + <notification name="CannotCopyWarning"> + Nie masz praw do kopiowania tego obiektu. Ten obiek zniknie z Twojej szafy jeżeli go dasz innej osobie. +Na pewno chcesz podarować ten obiekt? + <usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/> + </notification> + <notification name="CannotGiveItem"> + Podarowanie obiektu nie powiodÅ‚o siÄ™. + </notification> + <notification name="TransactionCancelled"> + Transakcja anulowana + </notification> + <notification name="TooManyItems"> + Jednorazowo możesz podarować maksymalnie 42 obiekty z szafy. + </notification> + <notification name="NoItems"> + Nie masz praw do transferu wybranych obiektów. + </notification> + <notification name="CannotCopyCountItems"> + Nie masz praw do skopiowania [COUNT] wybranych obiektów. Obiekty zniknÄ… z Twojej szafy. +Na pewno chcesz oddać te obiekty? + <usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/> + </notification> + <notification name="CannotGiveCategory"> + Nie masz praw do transferu wybranego foldera. + </notification> + <notification name="FreezeAvatar"> + Unieruchomić tego awatara? +Awatar tymczasowo nie bÄ™dzie mógÅ‚ siÄ™ poruszać, nie bÄ™dzie mógÅ‚ używać czatu (IM) i nie bÄ™dzie w stanie odziaÅ‚ywać na Å›wiat. + <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Odblokuj" yestext="Unieruchom"/> + </notification> + <notification name="FreezeAvatarFullname"> + Unieruchowmić [AVATAR_NAME]? +Ta osoba tymczasowo nie bÄ™dzie mógÅ‚a siÄ™ poruszać, nie bÄ™dzie mógÅ‚ używać czatu (IM) i nie bÄ™dzie w stanie odziaÅ‚ywać na Å›wiat. + <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Odblokuj" yestext="Unieruchom"/> + </notification> + <notification name="EjectAvatarFullname"> + Wyrzucić [AVATAR_NAME] z Twojej posiadÅ‚oÅ›ci? + <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Wyrzuć i zabroÅ„ wstÄ™pu (ban)" yestext="Wyrzuć"/> + </notification> + <notification name="AcquireErrorTooManyObjects"> + BÅÄ„D OTRZYMYWANIA: Zbyt wiele wybranych obiektów. + </notification> + <notification name="AcquireErrorObjectSpan"> + BÅÄ„D OTRZYMYWANIA: Obiekty przekraczajÄ… granicÄ™ regionów. Przemieść wszystkie otrzymywane obiekty do jednego regionu. + </notification> + <notification name="PromptGoToCurrencyPage"> + [EXTRA] + +Iść na stronÄ™ [URL] po informacje dotyczÄ…ce zakupu gotówki? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="UnableToLinkObjects"> + Nie można połączyć [COUNT] obiektów. +Maksimalnie można połączyć [MAX] obiektów. + </notification> + <notification name="CannotLinkIncompleteSet"> + Możesz łączyć tylko kompletne zbiory obiektów i musisz wybrać wiÄ™cej niż jeden obiekt. + </notification> + <notification name="CannotLinkModify"> + Nie możesz połączyć obiektów ponieważ nie masz praw modyfikacji dla wszystkich obiektów. + +Upewnij siÄ™, że żaden z obiktów nie jest zablokowany i że wszystkie obiekty należą do Ciebie. + </notification> + <notification name="CannotLinkDifferentOwners"> + Nie możesz połączyć obiektów ponieważ należą one do różnych osób. + +Upewnij sie, że wszystkie wybrane obiekty należą do Ciebie. + </notification> + <notification name="NoFileExtension"> + Niepoprawna koÅ„cówka nazwy pliku: '[FILE]' + +Upewnij siÄ™, że nazwa pliku ma poprawanÄ… koÅ„cówkÄ™. + </notification> + <notification name="InvalidFileExtension"> + Niepoprawna koÅ„cówka nazwy pliku - [EXTENSION] +Oczekiwana - [VALIDS] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="CannotUploadSoundFile"> + Nie można otworzyć zaÅ‚adowanego pliku dźwiÄ™kowego: +[FILE] + </notification> + <notification name="SoundFileNotRIFF"> + Plik nie jest w formacie RIFF WAVE: +[FILE] + </notification> + <notification name="SoundFileNotPCM"> + Plik nie jest w formacie PCM WAVE: +[FILE] + </notification> + <notification name="SoundFileInvalidChannelCount"> + Plik zawiera niewÅ‚aÅ›ciwÄ… liczbÄ™ kanałów (musi być mono albo stereo): +[FILE] + </notification> + <notification name="SoundFileInvalidSampleRate"> + Plik zawiera niewÅ‚aÅ›ciÄ… czÄ™stotliwość (musi być 44.1k): +[FILE] + </notification> + <notification name="SoundFileInvalidWordSize"> + Plik zawiera niewÅ‚aÅ›ciwÄ… szerokość danych (musi być 8 albo 16 bitów): +[FILE] + </notification> + <notification name="SoundFileInvalidHeader"> + Brak bloku 'data' w nagłówku pliku WAV: +[FILE] + </notification> + <notification name="SoundFileInvalidTooLong"> + Plik audio jest zbyt dÅ‚ugi (10 sekund maksimum): +[FILE] + </notification> + <notification name="CannotOpenTemporarySoundFile"> + Nie można otworzyć tymczasowego skompresowango pliku dźwiÄ™kowego w celu zapisu: [FILE] + </notification> + <notification name="UnknownVorbisEncodeFailure"> + Nieznany błąd kodowania Vorbis w: [FILE] + </notification> + <notification name="CannotEncodeFile"> + Kodowanie pliku: [FILE] nie powidÅ‚o siÄ™. + </notification> + <notification name="CorruptResourceFile"> + Skorumpowany plik zasobów: [FILE] + </notification> + <notification name="UnknownResourceFileVersion"> + Nieznana wersja pliku zasobów Linden w pliku: [FILE] + </notification> + <notification name="UnableToCreateOutputFile"> + Nie można utworzyć pliku wyjÅ›ciowego: [FILE] + </notification> + <notification name="DoNotSupportBulkAnimationUpload"> + Åadowanie zbiorów plików animacji nie jest jeszcze dostÄ™pne. + </notification> + <notification name="CannotUploadReason"> + Åadowanie pliku [FILE] nie powiodÅ‚o siÄ™ z powodu: [REASON] +Spróbuj jeszcze raz póżniej. + </notification> + <notification name="CannotCreateLandmarkNotOwner"> + Nie możesz zapamiÄ™tać tego miejsca (LM) ponieważ wÅ‚aÅ›ciciel posiadÅ‚oÅ›ci nie pozwala na to. + </notification> + <notification name="CannotRecompileSelectObjectsNoScripts"> + 'Rekompilacja' nie powiodÅ‚a siÄ™. + +Wybierz obiekty zawierajÄ…ce skrypty. + </notification> + <notification name="CannotRecompileSelectObjectsNoPermission"> + 'Rekompilacja' nie powiodÅ‚a siÄ™. + +Wybierz skryptowane obiekty do których masz prawa modyfikacji. + </notification> + <notification name="CannotResetSelectObjectsNoScripts"> + 'Resetowanie' nie powiodÅ‚o siÄ™. + +Wybierz obiekty zawierajÄ…ce skrypty. + </notification> + <notification name="CannotResetSelectObjectsNoPermission"> + 'Resetowanie' nie powiodÅ‚o siÄ™. + +Wybierz skryptowane obiekty do których masz prawa modyfikacji. + </notification> + <notification name="CannotSetRunningSelectObjectsNoScripts"> + 'Uruchomienie' skryptów nie powiodÅ‚o siÄ™. + +Wybierz obiekty zawierajÄ…ce skrypty. + </notification> + <notification name="CannotSetRunningNotSelectObjectsNoScripts"> + 'Zatrzymanie' skryptów nie powiodÅ‚o siÄ™. + +Wybierz obiekty zawierajÄ…ce skrypty. + </notification> + <notification name="NoFrontmostFloater"> + Brak górnego okna do zapisu. + </notification> + <notification name="SeachFilteredOnShortWords"> + Twoje zapytanie wyszukiwania zostÅ‚o zmienione - zbyt krótkie sÅ‚owa zostaÅ‚y usuniÄ™te. + +Nowe zapytanie: [FINALQUERY] + </notification> + <notification name="SeachFilteredOnShortWordsEmpty"> + Użyte terminy wyszukiwania byÅ‚y zbyt krótkie - wyszukiwanie zostaÅ‚o anulowane. + </notification> + <notification name="CouldNotTeleportReason"> + Teleportacja nie powiodÅ‚a siÄ™. +[REASON] + </notification> + + <notification name="invalid_tport"> +WystÄ…piÅ‚ problem z teleportacjÄ…. Wyloguj siÄ™ i zaloguj ponownie. +JeÅ›li nadal otrzymujesz ten komunikat sprawdź Pomoc TechnicznÄ… na stronie: +www.secondlife.com/support. + </notification> + <notification name="invalid_region_handoff"> +WystÄ…piÅ‚ problem ze zmianÄ… regionu. Wyloguj siÄ™ i zaloguj ponownie. +JeÅ›li nadal otrzymujesz ten komunikat sprawdź Pomoc TechnicznÄ… na stronie: +www.secondlife.com/support. + </notification> + <notification name="blocked_tport"> +Przepraszamy, teleportacja jest chwilowo niedostÄ™pna. Spróbuj jeszcze raz. +JeÅ›li nadal nie możesz siÄ™ teleportować wyloguj siÄ™ i ponownie zaloguj. + </notification> + <notification name="nolandmark_tport"> +Przepraszamy, ale nie możemy znaleźć miejsca docelowego. + </notification> + <notification name="timeout_tport"> +Przepraszamy, ale nie udaÅ‚o siÄ™ przeprowadzić teleportacji. Spróbuj jeszcze raz. + </notification> + <notification name="noaccess_tport"> +Przepraszamy, ale nie masz dostÄ™pu do miejsca docelowego. + </notification> + <notification name="missing_attach_tport"> +Czekamy na Twoje akcesoria. Możesz poczekać kilka minut lub zrobić relog przed nastÄ™pnÄ… próbÄ… teleportacji. + </notification> + <notification name="too_many_uploads_tport"> +Obecnie ten region ma problemy z Å‚adowaniem obiektów w zwiÄ…zku z czym teleportacja bardzo sie opóznia. +Spróbuj jeszcze raz za kilka minut albo teleportuj siÄ™ do mniej zatÅ‚oczonego miejsca. + </notification> + <notification name="expired_tport"> +Przepraszamy, ale nie udaÅ‚o siÄ™ przeprowadzić teleportacji wystarczajÄ…co szybko. Spróbuj jeszcze raz za kilka minut. + </notification> + <notification name="expired_region_handoff"> +Przepraszamy, ale nie udaÅ‚o siÄ™ przeprowadzić zmiany regionu wystarczajÄ…co szybko. Spróbuj jeszcze raz za kilka minut. + </notification> + <notification name="no_host"> +Nie możemy znaleść miejsca docelowego. To miejsce może być chwilowo nieosiÄ…galne albo przestaÅ‚o istnieć. +Spróbuj jeszcze raz za kilka minut. + </notification> + <notification name="no_inventory_host"> +Szafa chwilowo nie dziaÅ‚a. + </notification> + + + <notification name="CannotSetLandOwnerNothingSelected"> + Nie można wybrać wÅ‚aÅ›ciciela posiadÅ‚oÅ›ci. +PosiadÅ‚ość nie zostaÅ‚a wybrana. + </notification> + <notification name="CannotSetLandOwnerMultipleRegions"> + Nie można wybrać wÅ‚aÅ›ciciela posiadÅ‚oÅ›ci ponieważ wybrany obszar przekracza granicÄ™ regionów. Wybierz mniejszy obszar i spróbuj jeszcze raz. + </notification> + <notification name="ForceOwnerAuctionWarning"> + Ta posiadÅ‚ość jest wystawiona na aukcjÄ™. Wymuszenie wÅ‚asnoÅ›ci anulue aukcjÄ™ i potencjalnie może zdenerwować zainteresowanych Rezydentów, jeżeli licytacja już siÄ™ rozpoczęła. Wymusić wÅ‚asność? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="CannotContentifyNothingSelected"> + Nie można sfinalizować: +PosiadÅ‚ość nie zostaÅ‚a wybrana. + </notification> + <notification name="CannotContentifyNoRegion"> + Nie można sfinalizować: +Region nie znaleziony. + </notification> + <notification name="CannotReleaseLandNothingSelected"> + Nie można porzucić posiadÅ‚oÅ›ci: +PosiadÅ‚ość nie zostaÅ‚a wybrana. + </notification> + <notification name="CannotReleaseLandNoRegion"> + Nie można porzucić posiadÅ‚oÅ›ci: +Region nie znaleziony. + </notification> + <notification name="CannotBuyLandNothingSelected"> + Nie można kupić posiadÅ‚oÅ›ci: +PosiadÅ‚ość nie zostaÅ‚a wybrana. + </notification> + <notification name="CannotBuyLandNoRegion"> + Nie można kupić posiadÅ‚oÅ›ci: +Region nie znaleziony. + </notification> + <notification name="CannotCloseFloaterBuyLand"> + Dialog Kup PosiadÅ‚ość nie może zostać zamkniÄ™ty dopóki Second Life nie oszacuje ceny tej tranzakcji. + </notification> + <notification name="CannotDeedLandNothingSelected"> + Nie można przekazać posiadÅ‚oÅ›ci: +PosiadÅ‚ość nie zostaÅ‚a wybrana. + </notification> + <notification name="CannotDeedLandNoGroup"> + Nie można przekazać posiadÅ‚oÅ›ci: +Grupa nie zostaÅ‚a wybrana. + </notification> + <notification name="CannotDeedLandNoRegion"> + Nie można przekazać posiadÅ‚oÅ›ci: +Region nie znaleziony. + +ZgÅ‚oÅ› ten problem pod Pomoc > ZgÅ‚oÅ› Błędy Klienta + </notification> + <notification name="CannotDeedLandMultipleSelected"> + Nie można przekazać posiadÅ‚oÅ›ci: +Wiele posiadÅ‚oÅ›ci jest wybranych. + +Spróbuj wybrać pojedynczÄ… posiadÅ‚ość. + </notification> + <notification name="ParcelCanPlayMedia"> + To miejsce może odtwarzać strumienie mediów. +Odtwarzanie strumieni wymaga szybkiego połączenia do Internetu. + +Odtwarzać dostÄ™pne strumienie mediów? +(Selekcja może zostać zmieniona póżniej pod Ustawienia > Audio i Video.) + <usetemplate name="okcancelbuttons" notext="Wyłącz" yestext="Odtwarzaj"/> + </notification> + <notification name="CannotDeedLandWaitingForServer"> + Nie można przekazać posiadÅ‚oÅ›ci: +Serwer aktualizuje dane wÅ‚asnoÅ›ci. + +Spróbuj jeszcze raz póżniej. + </notification> + <notification name="CannotDeedLandNoTransfer"> + Nie możesz przekazać posiadÅ‚oÅ›ci: +Region [REGION] nie pozwala na transfer posiadÅ‚oÅ›ci. + </notification> + <notification name="CannotReleaseLandWatingForServer"> + Nie można porzucić posiadÅ‚oÅ›ci: +Serwer aktualizuje dane posiadÅ‚oÅ›ci. + +Spróbuj jeszcze raz póżniej. + </notification> + <notification name="CannotReleaseLandSelected"> + Nie możesz porzucić posiadÅ‚oÅ›ci: +Nie jesteÅ› wÅ‚aÅ›cicielem wszystkich wybranych posiadÅ‚oÅ›ci. + +Wybierz pojedynczÄ… posiadÅ‚ość. + </notification> + <notification name="CannotReleaseLandDontOwn"> + Nie możesz porzucić posiadÅ‚oÅ›ci: +Nie masz praw do porzucenia tej posiadÅ‚oÅ›ci. + +Twoje posiadÅ‚oÅ›ci sÄ… podkreÅ›lone na zielono. + </notification> + <notification name="CannotReleaseLandRegionNotFound"> + Nie można porzucić posiadÅ‚oÅ›ci: +Region nie znaleziony. + +ZgÅ‚oÅ› ten problem pod Pomoc > ZgÅ‚oÅ› Błędy Klienta + </notification> + <notification name="CannotReleaseLandNoTransfer"> + Nie możesz porzucić posiadÅ‚oÅ›ci: +Region [REGION] nie pozwala na transfer posiadÅ‚oÅ›ci. + </notification> + <notification name="CannotReleaseLandPartialSelection"> + Nie można porzucić posiadÅ‚oÅ›ci: +Musisz wybrać całą posiadÅ‚ość by jÄ… porzucić. +Wybierz całą posiadÅ‚ość albo najpierw jÄ… podziel. + </notification> + <notification name="ReleaseLandWarning"> + Porzucasz posiadÅ‚ość o powierzchni [AREA] m². +Porzucenie tej posiadÅ‚oÅ›ci usunie jÄ… z Twoich wÅ‚asnoÅ›ci. +Nie otrzymasz za to żadnej opÅ‚aty. + +Porzucić posiadÅ‚ość? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="CannotDivideLandNothingSelected"> + Nie można podzielić posiadÅ‚oÅ›ci: + +PosiadÅ‚ość nie zostaÅ‚a wybrana. + </notification> + <notification name="CannotDivideLandPartialSelection"> + Nie można podzielić posiadÅ‚oÅ›ci: + +PosiadÅ‚ość zostaÅ‚a wybrana w caÅ‚oÅ›ci. +Spróbuj wybrać część posiadÅ‚oÅ›ci. + </notification> + <notification name="LandDivideWarning"> + PodziaÅ‚ tej posiadÅ‚oÅ›ci stworzy dwie posiadÅ‚oÅ›ci z których każda bÄ™dzie mogÅ‚a mieć indywidualne ustawienia. +Niektóre ustawienia zostanÄ… zmienione na domyÅ›lne po tej operacji. + +Podzielić posiadÅ‚ość? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="CannotDivideLandNoRegion"> + Nie można podzielić posiadÅ‚oÅ›ci: +Region nie znaleziony. + +ZgÅ‚oÅ› ten problem pod Pomoc > ZgÅ‚oÅ› Błędy Klienta + </notification> + <notification name="CannotJoinLandNoRegion"> + Nie można połączyć posiadÅ‚oÅ›ci: +Region nie znaleziony. + +ZgÅ‚oÅ› ten problem pod Pomoc > ZgÅ‚oÅ› Błędy Klienta + </notification> + <notification name="CannotJoinLandNothingSelected"> + Nie można połączyć posiadÅ‚oÅ›ci: +PosiadÅ‚oÅ›ci nie zostaÅ‚y wybrane. + </notification> + <notification name="CannotJoinLandEntireParcelSelected"> + Nie można połączyć posiadÅ‚oÅ›ci: +Tylko jedna posiadÅ‚ość zostaÅ‚a wybrana. + +Wybierz obaszar usytuowany na obu posiadÅ‚oÅ›ciach. + </notification> + <notification name="CannotJoinLandSelection"> + Nie można połączyć posiadÅ‚oÅ›ci: +Musisz wybrać wiÄ™cej niż jednÄ… posiadÅ‚ość. + +Wybierz obaszar usytuowany na obu posiadÅ‚oÅ›ciach. + </notification> + <notification name="JoinLandWarning"> + Połączenie tego obszaru utworzy jednÄ… wiÄ™kszÄ… posiadÅ‚ość ze wszystkich posiadÅ‚oÅ›ci przecinajÄ…cych wybrany prostokÄ…t. Nazwa i opcje posiadÅ‚oÅ›ci bedÄ… musiaÅ‚y zostać skonfigurowane. + +Połączyć posiadÅ‚oÅ›ci? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="ShowOwnersHelp"> + Pokaż wÅ‚aÅ›cicieli: +Pokoloruj posiadÅ‚oÅ›ci zgodnie z przynależnoÅ›ciÄ… do wÅ‚aÅ›ciciela + +Zielony = Twoja PosiadÅ‚ość +Morski = PosiadÅ‚ość Twojej Grupy +Czerwony = PosiadÅ‚oÅ›ci Innych +Żółty = Na Sprzedaż +Fioletowy = Na AukcjÄ™ +Szary = Publiczna + </notification> + <notification name="ConfirmNotecardSave"> + Ta notka musi być zapisana żeby mogÅ‚a być skopiowana lub zobaczona. Zapisać notkÄ™? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="ConfirmItemCopy"> + Skopiować ten obiekt do Twojej szafy? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Skopiuj"/> + </notification> + <notification name="ResolutionSwitchFail"> + Zmiana rozdzielczoÅ›ci do [RESX] x [RESY] nie powidÅ‚a siÄ™ + </notification> + <notification name="ErrorUndefinedGrasses"> + Błąd: Niezdefiniowane trawy: [SPECIES] + </notification> + <notification name="ErrorUndefinedTrees"> + BÅ‚ad: Niezdefiniowane drzewa: [SPECIES] + </notification> + <notification name="CannotSaveWearableOutOfSpace"> + Nie można zapisać '[NAME]' do pliku stroju. Musisz zwolnić trochÄ™ miejsca na Twoim komputerze i zapisać strój jeszcze raz. + </notification> + <notification name="CannotSaveToAssetStore"> + Nie można zapisać [NAME] w centralnym zbiorze danych. Zazwyczaj jest to tymczasowy problem. Możesz kontynuować modyfikacje i zapisać strój ponownie za kilka minut. + +Jeżeli wciąż masz ten problem, wybierz Pomoc > ZgÅ‚oÅ› Błędy Klienta i podaj szczegóły dotyczÄ…ce konfiguracji sieci. + </notification> + <notification name="YouHaveBeenLoggedOut"> + Twoja sesja [SECOND_LIFE] zostaÅ‚a zakoÅ„czona: +[MESSAGE] + +Kliknij Kontynuuj żeby zobaczyć IMy i czat. +Å»adne inne operacje nie bÄ™dÄ… dozwolone. Kliknij Wyłącz w celu natychmiastowego opuszczenia [SECOND_LIFE]. + <usetemplate name="okcancelbuttons" notext="Wyłącz" yestext="Kontynuuj"/> + </notification> + <notification name="OnlyOfficerCanBuyLand"> + Nie możesz kupić posiadÅ‚oÅ›ci dla grupy. +Nie masz praw kupowania posiadÅ‚oÅ›ci dla Twojej aktywnej grupy. + </notification> + <notification label="Dodaj Znajomość" name="AddFriend"> + Znajomi mogÄ… pozwalać na odnajdywanie siÄ™ wzajemnie na mapie i na otrzymywanie notyfikacji o logowaniu do [SECOND_LIFE]. + +Zaproponować znajomość [NAME]? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification label="Add Friend" name="AddFriendWithMessage"> + Znajomi mogÄ… pozwalać na odnajdywanie siÄ™ wzajemnie na mapie i na otrzymywanie notyfikacji o logowaniu do [SECOND_LIFE]. + +Zaproponować znajomość [NAME]? + <form name="form"> + <input name="message" type="text"> + Chcesz zawrzeć znajomość? + </input> + <button name="Offer" text="OK"/> + <button name="Cancel" text="Anuluj"/> + </form> + </notification> + <notification name="RemoveFromFriends"> + Chcesz usunąć [FIRST_NAME] [LAST_NAME] z listy Twoich znajomych? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="RemoveMultipleFromFriends"> + Chcesz usunąć grupÄ™ osób z listy Twoich znajomych? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="GodDeleteAllScriptedPublicObjectsByUser"> + Na pewno chcesz usunąć wszystkie skryptowane obiekty należące do +** [AVATAR_NAME] ** +z posiadÅ‚oÅ›ci innych w tym symulatorze? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="GodDeleteAllScriptedObjectsByUser"> + Na pewno chcesz usunąć wszystkie skryptowane obiekty należące do +** [AVATAR_NAME] ** +ze wszystkich posiadÅ‚oÅ›ci w tym symulatorze? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="GodDeleteAllObjectsByUser"> + Na pewno chcesz usunąć wszystkie obiekty (skryptowane i nie) należące do +** [AVATAR_NAME] ** +ze wszystkich posiadÅ‚oÅ›ci w tym symulatorze? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="BlankClassifiedName"> + Musisz nadać tytuÅ‚ Twojej reklamie. + </notification> + <notification name="MinClassifiedPrice"> + Minimalna cena za publikacjÄ™ wynosi [MIN_PRICE]L$. + +Wybierz wyższÄ… cenÄ™. + </notification> + <notification name="ConfirmObjectDeleteLock"> + Przynajmnie jeden z wybranych obiektów jest zablokowany. + +Na pewno chcesz usunąć te obiekty? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="ConfirmObjectDeleteNoCopy"> + Przynajmniej jeden z wybranych obiektów jest niekopiowalny. + +Na pewno chcesz usunąć te obiekty? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="ConfirmObjectDeleteNoOwn"> + Przynajmniej jeden z wybranych obiektów nie należy do Ciebie. + +Na pewno chcesz usunąć te obiekty? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="ConfirmObjectDeleteLockNoCopy"> + Przynajmnie jeden z wybranych obiektów jest zablokowany. +Przynajmniej jeden z wybranych obiektów jest niekopiwalny. + +Na pewno chcesz usunąć te obiekty? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="ConfirmObjectDeleteLockNoOwn"> + Przynajmnie jeden z wybranych obiektów jest zablokowany. +Przynajmniej jeden z wybranych obiektów nie należy do Ciebie. + +Na pewno chcesz usunąć te obiekty? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="ConfirmObjectDeleteNoCopyNoOwn"> + Przynajmniej jeden z wybranych obiektów jest niekopiowalny. +Przynajmniej jeden z wybranych obiektów nie należy do Ciebie. + +Na pewno chcesz usunąć te obiekty? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="ConfirmObjectDeleteLockNoCopyNoOwn"> + Przynajmnie jeden z wybranych obiektów jest zablokowany. +Przynajmniej jeden z wybranych obiektów jest niekopiwalny. +Przynajmniej jeden z wybranych obiektów nie należy do Ciebie. + +Na pewno chcesz usunąć te obiekty? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="ConfirmObjectTakeLock"> + Przynajmnie jeden obiekt jest zablokowany. + +Na pewno chcesz usunąć te obiekty? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="ConfirmObjectTakeNoOwn"> + Przynajmniej jeden obiekt nie należy do Ciebie. +Jeżeli bÄ™dziesz kontynuować prawa nastÄ™pnego wÅ‚aÅ›ciciela zostanÄ… przypisane co, potencjalnie, może ograniczyć Twoje prawa do modyfikacji lub kopiowania obiektów. + +Na pewno chcesz wziąść te obiekty? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="ConfirmObjectTakeLockNoOwn"> + Przynajmnie jeden obiekt jest zablokowany. +Przynajmniej jeden obiekt nie należy do Ciebie. +Jeżeli bÄ™dziesz kontynuować prawa nastÄ™pnego wÅ‚aÅ›ciciela zostanÄ… przypisane co, potencjalnie, może ograniczyć Twoje prawa do modyfikacji lub kopiowania obiektów. + +Na pewno chcesz wziąść te obiekty? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="CantBuyLandAcrossMultipleRegions"> + Nie możesz kupić posiadÅ‚oÅ›ci ponieważ wybrany obszar przekracza granicÄ™ regionów. + +Wybierz mniejszy obszar i spróbuj jeszcze raz. + </notification> + <notification name="DeedLandToGroup"> + Po przekazaniu tej posiadÅ‚oÅ›ci grupa bÄ™dzia musiaÅ‚a mieć i utrzymywać wystarczajÄ…cy kredyt na używanie posiadÅ‚oÅ›ci. Cena zakupu posiadÅ‚oÅ›ci nie jest zwracana wÅ‚aÅ›cicielowi. Jeżeli przekazana posiadÅ‚ość zostanie sprzedana, cana sprzedaży zostanie podzielona pomiÄ™dzy czÅ‚onków grupy. + +Przekazać tÄ… posiadÅ‚ość o powierzchni [AREA] m² grupie '[GROUP_NAME]'? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="DeedLandToGroupWithContribution"> + Po przekazaniu tej posiadÅ‚oÅ›ci grupa bÄ™dzia musiaÅ‚a mieć i utrzymywać wystarczajÄ…cy kredyt na używanie posiadÅ‚oÅ›ci. Przekazanie bÄ™dzie zawierać równoczesne przypisanie posiadÅ‚oÅ›ci do grupy od '[FIRST_NAME] [LAST_NAME]'. +Cena zakupu posiadÅ‚oÅ›ci nie jest zwracana wÅ‚aÅ›cicielowi. Jeżeli przekazana posiadÅ‚ość zostanie sprzedana, cana sprzedaży zostanie podzielona pomiÄ™dzy czÅ‚onków grupy. + +Przekazać tÄ… posiadÅ‚ość o powierzchni [AREA] m² grupie '[GROUP_NAME]'? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="DisplaySetToSafe"> + Ustawienia grafiki zostaÅ‚y zmienione do bezpiecznego poziomu ponieważ opcja -safe zostaÅ‚a wybrana. + </notification> + <notification name="DisplaySetToRecommended"> + Ustawienia grafiki zostaÅ‚y zmienione do zalecanego poziomu na podstawie konfiguracji Twojego systemu. + </notification> + <notification name="ErrorMessage"> + [ERROR_MESSAGE] + </notification> + <notification name="AvatarMoved"> + Twoje miejsce [TYPE] jest obecnie niedostÄ™pne. [HELP] +Przeniesiono CiÄ™ do pobliskiego regionu. + </notification> + <notification name="ClothingLoading"> + Twoje ubranie wciąż siÄ™ Å‚aduje. +Możesz normalnie używać [SECOND_LIFE], inni użytkownicy bÄ™dÄ… CiÄ™ widzieli poprawnie. + <form name="form"> + <ignore name="ignore" text="Åadowanie ubrania zajmuje dużo czasu"/> + </form> + </notification> + <notification name="FirstRun"> + Instalacja [SECOND_LIFE] zakoÅ„czona. + +Jeżeli używasz [SECOND_LIFE] po raz pierwszy to musisz stworzyć konto żeby móc siÄ™ zalogować. +Przejść na stronÄ™ www.secondlife.com żeby stworzyć nowe konto? + <usetemplate name="okcancelbuttons" notext="Kontynuuj" yestext="Nowe Konto..."/> + </notification> + <notification name="LoginPacketNeverReceived"> + Problemy z połączeniem. Problem może być spowodowany Twoim połączeniem z Internetem albo może istnieć po stronie serwerów Second Life. + +Możesz sprawdzić swoje połączenie z Internetem i spróbować ponownie za kilka minut albo kliknij Pomoc żeby połączyć siÄ™ ze stronÄ… pomocy technicznej albo wybierz Teleportuj żeby spróbować teleportacji do Twojego miejsca startu. + <form name="form"> + <button name="OK" text="OK"/> + <button name="Help" text="Pomoc"/> + <button name="Teleport" text="Teleportuj"/> + </form> + </notification> + <notification name="WelcomeChooseSex"> + Twoja postać pojawi siÄ™ za moment. + +Używaj strzaÅ‚ek żeby sie poruszać. +NaciÅ›nij F1 w dowolnej chwili po pomoc albo żeby dowiedzieć siÄ™ wiÄ™cej o [SECOND_LIFE]. +Wybierz awatara wÅ‚aÅ›ciwej pÅ‚ci. +Ten wybór bÄ™dzie można później zmienić. + <usetemplate name="okcancelbuttons" notext="Kobieta" yestext="Mężczyzna"/> + </notification> + <notification name="NotEnoughCurrency"> + [NAME] [PRICE]L$ Masz za maÅ‚o L$. + </notification> + <notification name="GrantedModifyRights"> + Masz teraz prawa modyfikacji obiektów należących do [FIRST_NAME] [LAST_NAME]. + </notification> + <notification name="RevokedModifyRights"> + Prawa modyfikacji obiektów należących do [FIRST_NAME] [LAST_NAME] zostaÅ‚y Ci odebrane. + </notification> + <notification name="FlushMapVisibilityCaches"> + To spowoduje wyczyszczenie buforów map regionu. +Jest to użyteczne wyłącznie podczas szukania błędów. +(Podczas produkcji poczekaj 5 minut i mapy wszystkich zostanÄ… uaktualnione po relogu.) + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="BuyOneObjectOnly"> + Nie możesz zakupić wiÄ™cej niż jednego obiektu w tym samym czasie. ProszÄ™ wybrać tylko jeden obiekt i spróbować ponowanie. + </notification> + <notification name="OnlyCopyContentsOfSingleItem"> + Nie można kopiować zawartoÅ›ci wiÄ™cej niż jednego obiektu naraz. +Wybierz pojedynczy obiekt i spróbuj jeszcze raz. + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="KickUsersFromRegion"> + Teleportować wszystkich Rezydentów z tego regionu to ich miejsca startu? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="EstateObjectReturn"> + Na pewno chcesz odesÅ‚ać wszystkie obiekty należące do +[USER_NAME] ? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="InvalidTerrainBitDepth"> + Nie można ustawić tekstur regionu: +Tekstura terenu [TEXTURE_NUM] ma niewÅ‚aÅ›ciwÄ… głębiÄ™ koloru - [TEXTURE_BIT_DEPTH]. +ZamieÅ„ teksturÄ™ [TEXTURE_NUM] na 24-o bitowÄ… teksturÄ™ o wymiarze 512x512 lub mniejszÄ… i ponownie kliknij Zastosuj. + </notification> + <notification name="InvalidTerrainSize"> + Nie można ustawić tekstur regionu: +Tekstura terenu [TEXTURE_NUM] jest za duża - [TEXTURE_SIZE_X]x[TEXTURE_SIZE_Y]. +ZamieÅ„ teksturÄ™ [TEXTURE_NUM] na 24-o bitowÄ… teksturÄ™ o wymiarze 512x512 lub mniejszÄ… i ponownie kliknij Zastosuj. + </notification> + <notification name="RawUploadStarted"> + Åadowanie rozpoczÄ™te. Może potrwać do dwóch minut zależnie od prÄ™dkoÅ›ci Twojego połączenia. + </notification> + <notification name="ConfirmBakeTerrain"> + Na pewno chcesz zapisać obecne uksztaÅ‚towanie terenu jako punkt odniesienia dla górnego i dolnego limitu terenu i jako domyÅ›lÄ… wartość dla opcji Odtwórz? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="MaxAllowedAgentOnRegion"> + Maksymalna liczba goÅ›ci wynosi [MAX_AGENTS]. + </notification> + <notification name="MaxBannedAgentsOnRegion"> + Maksymalna liczba nieporzÄ…danych Rezydentów (banów) wynosi [MAX_BANNED]. + </notification> + <notification name="MaxAgentOnRegionBatch"> + Próba dodania [NUM_ADDED] osób nie powidÅ‚a siÄ™: +[MAX_AGENTS] [LIST_TYPE] limit przekroczony o [NUM_EXCESS]. + </notification> + <notification name="MaxAllowedGroupsOnRegion"> + Możesz mieć maksymalnie [MAX_GROUPS] Dozwolonych Grup. + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Ustal"/> + </notification> + <notification name="MaxManagersOnRegion"> + Możesz mieć maksymalnie [MAX_MANAGER] ZarzÄ…dców MajÄ…tku. + </notification> + <notification name="OwnerCanNotBeDenied"> + Nie możesz dodać wÅ‚aÅ›ciciela majÄ…tku do listy 'NieporzÄ…danych Rezydentów (banów)' majÄ…tku. + </notification> + <notification name="CanNotChangeAppearanceUntilLoaded"> + Nie możesz zmienić wyglÄ…du podczas Å‚adowania ubraÅ„ i ksztaÅ‚tów. + </notification> + <notification name="ClassifiedMustBeAlphanumeric"> + TytuÅ‚ Twojej reklamy musi zaczynać siÄ™ od litery (A-Z) albo cyfry. Znaki przestankowe sÄ… niedozwolone. + </notification> + <notification name="CantSetBuyObject"> + Nie możesz wybrać Kup Obiekt ponieważ obiekt nie jest na sprzedaż. +Wybierz obiekt na sprzedaż i spróbuj jeszcze raz. + </notification> + <notification name="FinishedRawDownload"> + Plik surowego terenu zaÅ‚adowany pod: +[DOWNLOAD_PATH]. + </notification> + <notification name="DownloadWindowsMandatory"> + Nowa wersja [SECOND_LIFE] zostaÅ‚a opublikowana. +[MESSAGE] +Musisz zainstalować nowÄ… wersjÄ™ żeby używać [SECOND_LIFE]. + <usetemplate name="okcancelbuttons" notext="Wyłącz program" yestext="ZaÅ‚aduj"/> + </notification> + <notification name="DownloadWindows"> + Uaktualniona wersja [SECOND_LIFE] zostaÅ‚a opublikowana. +[MESSAGE] +Aktualizacja nie jest wymagana ale jest zalecana w celu poprawy prÄ™dkoÅ›ci i stabilnoÅ›ci. + <usetemplate name="okcancelbuttons" notext="Kontynuuj" yestext="ZaÅ‚aduj"/> + </notification> + <notification name="DownloadWindowsReleaseForDownload"> + Uaktualniona wersja [SECOND_LIFE] zostaÅ‚a opublikowana. +[MESSAGE] +Aktualizacja nie jest wymagana ale jest zalecana w celu poprawy prÄ™dkoÅ›ci i stabilnoÅ›ci. + <usetemplate name="okcancelbuttons" notext="Kontynuuj" yestext="ZaÅ‚aduj"/> + </notification> + <notification name="DownloadMacMandatory"> + Nowa wersja [SECOND_LIFE] zostaÅ‚a opublikowana. +[MESSAGE] +Musisz zainstalować nowÄ… wersjÄ™ żeby używać [SECOND_LIFE]. + +ZaÅ‚adować do foldera Aplikacji? + <usetemplate name="okcancelbuttons" notext="Wyłącz program" yestext="ZaÅ‚aduj"/> + </notification> + <notification name="DownloadMac"> + Uaktualniona wersja [SECOND_LIFE] zostaÅ‚a opublikowana. +[MESSAGE] +Aktualizacja nie jest wymagana ale jest zalecana w celu poprawy prÄ™dkoÅ›ci i stabilnoÅ›ci. + +ZaÅ‚adować do foldera Aplikacji? + <usetemplate name="okcancelbuttons" notext="Kontynuuj" yestext="ZaÅ‚aduj"/> + </notification> + <notification name="DownloadMacReleaseForDownload"> + Uaktualniona wersja [SECOND_LIFE] zostaÅ‚a opublikowana. +[MESSAGE] +Aktualizacja nie jest wymagana ale jest zalecana w celu poprawy prÄ™dkoÅ›ci i stabilnoÅ›ci. + +ZaÅ‚adować do foldera Aplikacji? + <usetemplate name="okcancelbuttons" notext="Kontynuuj" yestext="ZaÅ‚aduj"/> + </notification> + <notification name="DeedObjectToGroup"> + Przekazanie tego obiektu spowoduje, że grupa: +* Otrzyma L$ zapÅ‚acone temu obiektowi + <usetemplate ignoretext="PrzekazujÄ…c obiekty grupom" name="okcancelignore" notext="Anuluj" yestext="Przekaż"/> + </notification> + <notification name="WebLaunchExternalTarget"> + Otworzyć systemowÄ… przegłądarke żeby zobaczyć tÄ… zawartość? + <usetemplate ignoretext="OtwierajÄ…c systemowÄ… przeglÄ…darkÄ™ żeby zobaczyć stronÄ™" name="okcancelignore" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="WebLaunchJoinNow"> + Otworzyć stronÄ™ www.secondlife.com żeby zarzÄ…dzać Twoim kontem? + <usetemplate ignoretext="OtwierajÄ…c systemowÄ… przeglÄ…darkÄ™ żeby zarzÄ…dzać Twoim kontem" name="okcancelignore" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="WebLaunchBugReport101"> + Odwiedź [SECOND_LIFE] Wiki i zobacz jak zgÅ‚aszać błędy. + <usetemplate ignoretext="OtwierajÄ…c przeglÄ…darkÄ™ żeby zobaczyć Wiki zgÅ‚aszania błędów" name="okcancelignore" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="WebLaunchSecurityIssues"> + Odwiedź [SECOND_LIFE] Wiki i zobacz jak zgÅ‚aszać problemy z bezpieczeÅ„stwem danych. + <usetemplate ignoretext="OtwierajÄ…c przeglÄ…darkÄ™ żeby zobaczyć Wiki kwestii bezpieczeÅ„stwa danych" name="okcancelignore" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="WebLaunchQAWiki"> + Odwiedź [SECOND_LIFE] Wiki pytaÅ„ i odpowiedzi. + <usetemplate ignoretext="OtwierajÄ…c przeglÄ…darkÄ™ żeby zobaczyć Wiki pytaÅ„ i odpowiedzi" name="okcancelignore" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="WebLaunchPublicIssue"> + Odwiedź [SECOND_LIFE] katalog publicznych problemów, gdzie możesz zgÅ‚aszać błędy i inne problemy. + <usetemplate ignoretext="OtwierajÄ…c przeglÄ…darkÄ™ żeby zobaczyć katalog publicznych problemów" name="okcancelignore" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="WebLaunchPublicIssueHelp"> + Odwiedź [SECOND_LIFE] Wiki i sprawdź jak używać katalogu publicznych problemów. + <usetemplate ignoretext="OtwierajÄ…c przeglÄ…darkÄ™ żeby zobaczyć Wiki katalogu publicznych problemów" name="okcancelignore" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="WebLaunchSupportWiki"> + Otwórz oficjalny blog Lindenów żeby zobaczyć nowe wiadomoÅ›ci i informacje. + <usetemplate ignoretext="OtwierajÄ…c przeglÄ…darkÄ™ żeby zobaczyć blog" name="okcancelignore" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="WebLaunchLSLGuide"> + Otworzyć przewodnik skryptowania po pomoc ze skryptami? + <usetemplate ignoretext="OtwierajÄ…c przeglÄ…darkÄ™ żeby zobaczyć przewodnik skryptowania" name="okcancelignore" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="WebLaunchLSLWiki"> + Otworzyć portal LSL po pomoc ze skryptami? + <usetemplate ignoretext="OtwierajÄ…c przeglÄ…darkÄ™ żeby zobaczyć portal LSL" name="okcancelignore" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="ReturnToOwner"> + Czy na pewno chcesz zwrócić wybrane obiekty do ich wÅ‚aÅ›cicieli? Wszystkie udostÄ™pnione obiekty z prawem transferu zostanÄ… zwrócone poprzednim wÅ‚aÅ›cicielom. + +*UWAGA* Wszystkie udostÄ™pnione obiekty bez prawa transferu zostanÄ… usuniÄ™te! + <usetemplate ignoretext="ZwracajÄ…c obiekty ich wÅ‚aÅ›cicielom" name="okcancelignore" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="GroupLeaveConfirmMember"> + JesteÅ› czÅ‚onkiem grupy [GROUP]. +Chcesz opuÅ›cić grupÄ™? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="ConfirmKick"> + NA PEWNO chcesz wyrzucić wszystkich użytkowników z sieci? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Wyrzuć Wszystkich Użytkowników"/> + </notification> + <notification name="MuteLinden"> + Przepraszamy, ale nie możesz wyciszyć Lindena. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="CannotStartAuctionAlreadyForSale"> + Aukcja nie może zostać rozpoczÄ™ta w posiadÅ‚oÅ›ci, która zostaÅ‚a już wczeÅ›niej wystawiona na aukcjÄ™. Deaktywuj opcjÄ™ sprzedaży posiadÅ‚oÅ›ci jeżeli chcesz rozpocząć aukcjÄ™. + </notification> + <notification label="Błąd Wyciszenia Obiektu Przez NazwÄ™" name="MuteByNameFailed"> + Ta osoba zostaÅ‚a już wyciszona przez Ciebie. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="RemoveItemWarn"> + Pomimo, że jest to dozwolone, usuniÄ™cie zawartoÅ›ci może zniszczyć obiekt. Chcesz usunąć? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="CantOfferCallingCard"> + Nie możesz dać wizytówki w tym momencie. Spróbuj jeszcze raz za chwilÄ™. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="CantOfferFriendship"> + Nie możesz zaoferować znajomoÅ›ci w tym momencie. Spróbuj jeszcze raz za chwilÄ™. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="BusyModeSet"> + Tryb Pracy jest włączony. +Czat i IMy bedÄ… ukryte. WysÅ‚ane IMy bÄ™dÄ… otrzymywaÅ‚y TwojÄ… odpowiedź Trybu Pracy. Propozycje teleportacji bÄ™dÄ… odrzucone. +Dodatkowo, wszystkie podarowane dla Ciebie obiekty bÄ™dÄ… automatycznie zapisywane w folderze "Kosz" w Twojej szafie. + <usetemplate ignoretext="WłączajÄ…c Tryb Pracy" name="okignore" yestext="OK"/> + </notification> + <notification name="JoinedTooManyGroupsMember"> + Należysz już do maksymalnej iloÅ›ci grup. +Musisz opuÅ›cić przynajmniej jednÄ… grupÄ™ żeby przyjąć czÅ‚onkostwo w tej grupie, albo musisz odmówić. W celu opuszczenia grupy wybierz opcjÄ™ 'Grupy...' z menu 'Edycja'. +[NAME] oferuje Ci czÅ‚onkostwo w grupie. +[INVITE] + <usetemplate name="okcancelbuttons" notext="Odmów" yestext="Przyjmij"/> + </notification> + <notification name="KickUser"> + Z jakim komunikatem wyrzucić tego użytkownia? + <form name="form"> + <input name="message" type="text"> + Administrator wylogowaÅ‚ CiÄ™. + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Anuluj"/> + </form> + </notification> + <notification name="KickAllUsers"> + Z jakim komunikatem wyrzucić wszystkich użytkowników z regionu? + <form name="form"> + <input name="message" type="text"> + Administrator wylogowaÅ‚ CiÄ™. + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Anuluj"/> + </form> + </notification> + <notification name="FreezeUser"> + Z jakim komunikatem unieruchomić tego użytkownia? + <form name="form"> + <input name="message" type="text"> + Unieruchomiono CiÄ™. Nie możesz siÄ™ ruszać ani rozmawiać. Administrator skontaktuje siÄ™ z TobÄ… poprzez IM. + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Anuluj"/> + </form> + </notification> + <notification name="UnFreezeUser"> + Z jakim komunikatem odblokować tego użytkownia? + <form name="form"> + <input name="message" type="text"> + Odblokowano CiÄ™. + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Anuluj"/> + </form> + </notification> + <notification name="OfferTeleport"> + Zaproponować teleportacjÄ™ do miejsca Twojego pobytu z tÄ… wiadomoÅ›ciÄ…? + <form name="form"> + <input name="message" type="text"> + Zapraszam do siebie. Region: [REGION] + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Anuluj"/> + </form> + </notification> + <notification name="OfferTeleportFromGod"> + Wymusić przeniesienie użytkownika do miejsca Twojego pobytu? + <form name="form"> + <input name="message" type="text"> + Zapraszam do siebie. Region: [REGION] + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Anuluj"/> + </form> + </notification> + <notification name="TeleportFromLandmark"> + Na pewno chcesz siÄ™ teleportować? + <usetemplate ignoretext="TeleportujÄ…c z miejsca (LM) z Twojej szafy" name="okcancelignore" notext="Anuluj" yestext="Teleportuj"/> + </notification> + <notification label="Wiadomość do Wszystkich w Twoim MajÄ…tku" name="MessageEstate"> + Wpisz krótkÄ… wiadomość która zostanie wysÅ‚ana do wszystkich osób w Twoim majÄ…tku. + <form name="form"> + <input name="message" type="text"/> + <button name="OK" text="OK"/> + <button name="Cancel" text="Anuluj"/> + </form> + </notification> + <notification label="Zmiana MajÄ…tku Lindenów" name="ChangeLindenEstate"> + Dokonujesz zmiany w Regionie Głównym należącym do Lindenów (Regiony Główne, Teen Grid, Orientacja). + +Żądana operacja jest wyjÄ…tkowo niebezpieczna dla wszystkich Rezydentów przebywajÄ…cych w regionie. Dodatkowo, zmiany dokonane w Regionie Głównym mogÄ… spowodować problemy przestrzeni serwerowej innych regionów. + +Kontynuować? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification label="Zmiana DostÄ™pu do MajÄ…tku Lindenów" name="ChangeLindenAccess"> + Dokonujesz zmiany w liÅ›cie dostÄ™pu Regionu Głównego należącego do Lindenów (Regiony Główne, Teen Grid, Orientacja). + +Żądana operacja jest wyjÄ…tkowo niebezpieczna dla wszystkich Rezydentów przebywajÄ…cych w regionie i powinna być używana wyłącznie w celu zablokowania opcji pozwalajÄ…cej na przeniesienie obiektów/L$ do/z sieci. +Dodatkowo, zmiany dokonane w Regionie Głównym mogÄ… spowodować problemy przestrzeni serwerowej innych regionów. + +Kontynuować? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification label="Wybierz MajÄ…tek" name="EstateAllowedAgentAdd"> + Dodać do listy dostÄ™pu do tego majÄ…tku czy do [ALL_ESTATES]? + <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Wszystkie majÄ…tki" yestext="Ten majÄ…tek"/> + </notification> + <notification label="Wybierz MajÄ…tek" name="EstateAllowedAgentRemove"> + Usunąć z listy dostÄ™pu do tego majÄ…tku czy do [ALL_ESTATES]? + <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Wszystkie majÄ…tki" yestext="Ten majÄ…tek"/> + </notification> + <notification label="Wybierz MajÄ…tek" name="EstateAllowedGroupAdd"> + Dodać do listy dostÄ™pu grup do tego majÄ…tku czy do [ALL_ESTATES]? + <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Wszystkie majÄ…tki" yestext="Ten majÄ…tek"/> + </notification> + <notification label="Wybierz MajÄ…tek" name="EstateAllowedGroupRemove"> + Usunąć z listy dostÄ™pu grup do tego majÄ…tku czy do [ALL_ESTATES]? + <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Wszystkie majÄ…tki" yestext="Ten majÄ…tek"/> + </notification> + <notification label="Wybierz MajÄ…tek" name="EstateBannedAgentAdd"> + Zablokować dostÄ™p do tego majÄ…tku czy do [ALL_ESTATES]? + <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Wszystkie majÄ…tki" yestext="Ten majÄ…tek"/> + </notification> + <notification label="Wybierz MajÄ…tek" name="EstateBannedAgentRemove"> + Zdjąć tego Rezydenta z listy niepożądanych (bany) dla tego majÄ…tku czy dla [ALL_ESTATES]? + <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Wszystkie majÄ…tki" yestext="Ten majÄ…tek"/> + </notification> + <notification label="Wybierz MajÄ…tek" name="EstateManagerAdd"> + Dodać zarzÄ…dce majÄ…tku do tego majÄ…tku czy do [ALL_ESTATES]? + <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Wszystkie majÄ…tki" yestext="Ten majÄ…tek"/> + </notification> + <notification label="Wybierz MajÄ…tek" name="EstateManagerRemove"> + Usunąć zarzÄ…dce majÄ…tku z tego majÄ…tku czy z [ALL_ESTATES]? + <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Wszystkie majÄ…tki" yestext="Ten majÄ…tek"/> + </notification> + <notification label="Potwierdź Wyrzucenie" name="EstateKickUser"> + Wyrzucić [EVIL_USER] z tego majÄ…tku? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="EstateChangeCovenant"> + Na pewno chcesz zminić treść umowy dla tego majÄ…tku? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="RegionEntryAccessBlocked"> + Ze wzglÄ™du na Twój wiek, nie jesteÅ› uprawniony do przebywania w tym regionie. Może być to wynikiem braku informacji na temat weryfikacji Twojego wieku. + +Upewnij siÄ™, że masz zainstalowanÄ… najnowszÄ… wersjÄ™ klienta i skorzystaj z Second Life:Pomoc by uzyskać wiÄ™cej informacji na temat dostÄ™pu do regionów z podanym rodzajem treÅ›ci jakÄ… zawiera. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + <notification name="RegionEntryAccessBlocked_KB"> + Ze wzglÄ™du na Twój wiek, nie jesteÅ› uprawniony do przebywania w tym regionie. + +Skorzystaj z Second Life:Pomoc by uzyskać wiÄ™cej informacji na temat dostÄ™pu do regionów z podanym rodzajem treÅ›ci jakÄ… zawiera. + <url name="url"> + https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=6010 + </url> + <usetemplate + name="okcancelignore" + yestext="Second Life:Pomoc" + notext="Zamknij" + ignoretext="DostÄ™p do posiadÅ‚oÅ›ci jest zablokowany ze wzglÄ™du na rodzaj treÅ›ci jakÄ… zawiera"/> + </notification> + <notification name="RegionEntryAccessBlocked_Notify"> + Ze wzglÄ™du na Twój wiek, nie jesteÅ› uprawniony do przebywania w tym regionie. + </notification> + <notification name="RegionEntryAccessBlocked_Change"> + W zwiÄ…zku ze statusem ustawieÅ„ Twojego wieku, nie jesteÅ› uprawniony do przebywania w tym regionie. + +Możeszy wybrać 'ZmieÅ„ Ustawienia' by dokonać zmian w ustawieniach Twojego wieku by uzyskać dostÄ™p do regionu. Wówczas bÄ™dziesz w stanie znaleźć oraz mieć dostÄ™p do [REGIONMATURITY] treÅ›ci. Jeżeli zdecydujesz siÄ™ na powrót do poprzednich ustawieÅ„, wybierz Edycja > Ustawienia... > Główne. + <form name="form"> + <button + name="OK" + text="ZmieÅ„ Ustawienia"/> + <button + default="true" + name="Cancel" + text="Zamknij"/> + <ignore name="ignore" text="DostÄ™p do posiadÅ‚oÅ›ci jest zablokowany ze wzglÄ™du na ustawienia rodzaju treÅ›ci jakÄ… zawiera"/> + </form> + </notification> + <notification name="LandClaimAccessBlocked"> + W zwiÄ…zku ze statusem ustawieÅ„ Twojego wieku, nie możesz odzyskać tej posiadÅ‚oÅ›ci. Możesz potrzebować weryfikacji wieku bÄ…dź instalacji najnowszej wersji klienta. + +Upewnij siÄ™, że masz zainstalowanÄ… najnowszÄ… wersjÄ™ klienta i skorzystaj z Second Life:Pomoc by uzyskać wiÄ™cej informacji na temat dostÄ™pu do regionów z podanym rodzajem treÅ›ci jakÄ… zawiera. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + <notification name="LandClaimAccessBlocked_KB"> + Ze wzglÄ™du na Twój wiek, nie możesz odzyskać tej posiadÅ‚oÅ›ci. + +Skorzystaj z Second Life:Pomoc by uzyskać wiÄ™cej informacji na temat dostÄ™pu do regionów z podanym rodzajem treÅ›ci jakÄ… zawiera. + <url name="url"> + https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=6010 + </url> + <usetemplate + name="okcancelignore" + yestext="Second Life:Pomoc" + notext="Zamknij" + ignoretext="Odzyskanie posiadÅ‚oÅ›ci jest zablokowane ze wzglÄ™du na rodzaj treÅ›ci jakÄ… zwiera"/> + </notification> + <notification name="LandClaimAccessBlocked_Notify"> + Ze wzglÄ™du na Twój wiek, nie możesz odzyskać tej posiadÅ‚oÅ›ci. + </notification> + <notification name="LandClaimAccessBlocked_Change"> + W zwiÄ…zku ze statusem ustawieÅ„ Twojego wieku, nie możesz odzyskać tej posiadÅ‚oÅ›ci. + +Możeszy wybrać 'ZmieÅ„ Ustawienia' by dokonać zmian w ustawieniach Twojego wieku by uzyskać dostÄ™p do posiadÅ‚oÅ›ci. Wówczas bÄ™dziesz w stanie znaleźć, oraz mieć dostÄ™p do [REGIONMATURITY] treÅ›ci. Jeżeli zdecydujesz siÄ™ na powrót do poprzednich ustawieÅ„, wybierz Edycja > Ustawienia... > Główne. + <usetemplate + name="okcancelignore" + yestext="ZmieÅ„ Ustawienia" + notext="Zamknij" + ignoretext="Odzyskanie posiadÅ‚oÅ›ci jest zablokowane ze wzglÄ™du na ustawienia rodzaju treÅ›ci jakÄ… zawiera"/> + </notification> + <notification name="LandBuyAccessBlocked"> + Ze wzglÄ™du na Twój wiek, nie możesz kupić tej posiadÅ‚oÅ›ci. Może być to wynikiem braku informacji na temat weryfikacji Twojego wieku. + +Upewnij siÄ™, że masz zainstalowanÄ… najnowszÄ… wersjÄ™ klienta i skorzystaj z Second Life:Pomoc by uzyskać wiÄ™cej informacji na temat dostÄ™pu do regionów z podanym rodzajem treÅ›ci jakÄ… zawiera. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + <notification name="LandBuyAccessBlocked_KB"> + Ze wzglÄ™du na Twój wiek, nie możesz kupić tej posiadÅ‚oÅ›ci. + +Skorzystaj z Second Life:Pomoc by uzyskać wiÄ™cej informacji na temat dostÄ™pu do regionów z podanym rodzajem treÅ›ci jakÄ… zawiera. + <url name="url"> + https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=6010 + </url> + <usetemplate + name="okcancelignore" + yestext="Second Life:Pomoc" + notext="Zamknij" + ignoretext="Zakup posiadÅ‚oÅ›ci jest zablokowany ze wzglÄ™du na rodzaj treÅ›ci jakÄ… zawiera"/> + </notification> + <notification name="LandBuyAccessBlocked_Notify"> + Ze wzglÄ™du na Twój wiek, nie możesz kupić tej posiadÅ‚oÅ›ci. + </notification> + <notification name="LandBuyAccessBlocked_Change"> + W zwiÄ…zku ze statusem ustawieÅ„ Twojego wieku, nie możesz kupić tej posiadÅ‚oÅ›ci. + +Możesz wybrać 'ZmieÅ„ Ustawienia' by dokonać zmian w ustawieniach Twojego wieku by uzyskać dostÄ™p do posiadÅ‚oÅ›ci. Wówczas bÄ™dziesz w stanie znaleźć oraz mieć dostÄ™p do [REGIONMATURITY] treÅ›ci. Jeżeli zdecydujesz siÄ™ na powrót do poprzednich ustawieÅ„, wybierz Edycja > Ustawienia... > Główne. + <usetemplate + name="okcancelignore" + yestext="ZmieÅ„ Ustawienia" + notext="Zamknij" + ignoretext="Zakup posiadÅ‚oÅ›ci jest zablokowany ze wzglÄ™du na ustawienia rodzaju treÅ›ci jakÄ… zawiera"/> + </notification> + <notification name="ProblemImportingEstateCovenant"> + Problem z importem umowy majÄ…tku. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ProblemAddingEstateManager"> + Problemy z dodawaniem nowego zarzÄ…dcy majÄ…tku. Jeden lub wiÄ™caj majÄ…tk może mieć wypeÅ‚nionÄ… listÄ™ zarzÄ…dców. + </notification> + <notification name="ProblemAddingEstateGeneric"> + Problemy z dodawaniem do listy majÄ…tku. Jeden lub wiÄ™caj majÄ…tk może mieć wypeÅ‚nionÄ… listÄ™. + </notification> + <notification name="UnableToLoadNotecardAsset"> + Brak możliwoÅ›ci zaÅ‚adowania noty w tej chwili. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + <notification name="NotAllowedToViewNotecard"> + NiewystarczajÄ…ce prawa do zobaczenia notki przypisanej do wybranego ID. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MissingNotecardAssetID"> + ID notki nie znalezione w bazie danych. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="PublishClassified"> + PamiÄ™taj: OpÅ‚aty za reklamÄ™ sÄ… bezzwrotne. + +ZamieÅ›cić tÄ… reklamÄ™ za [AMOUNT]L$? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="SetClassifiedMature"> + Czy ta reklama zawiera treść 'Mature'? + <usetemplate + canceltext="Anuluj" + name="yesnocancelbuttons" + notext="Nie" + yestext="Tak"/> + </notification> + <notification name="SetGroupMature"> + Czy ta grupa zawiera treść 'Mature'? + <usetemplate + canceltext="Anuluj" + name="yesnocancelbuttons" + notext="Nie" + yestext="Tak"/> + </notification> + <notification label="Potwierdź Restart" name="ConfirmRestart"> + Na pewno chcesz zrobić restart tego regionu za 2 minuty? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification label="Wiadomość do Wszystkich w tym Regionie" name="MessageRegion"> + Wpisz krótkÄ… wiadomość która zostanie wysÅ‚ana do wszystkich osób w tym regionie. + <form name="form"> + <input name="message" type="text"/> + <button name="OK" text="OK"/> + <button name="Cancel" text="Anuluj"/> + </form> + </notification> + <notification label="Blokowanie KsztaÅ‚towania Terenu" name="HelpRegionBlockTerraform"> + Jeżeli ta opcja jest wybrana wÅ‚aÅ›ciciele posiadÅ‚oÅ›ci nie bÄ™dÄ… mogli ksztaÅ‚tować terenu niezależnie od ustawienia opcji 'Edycja Terenu' dla posiadÅ‚oÅ›ci. + +DomyÅ›lnie: nie wybrana + </notification> + <notification label="Blokowanie Latania" name="HelpRegionBlockFly"> + Jeżeli ta opcja jest wybrana ludzie nie bÄ™dÄ… mogli latać w tym regionie niezależnie od ustawienia opcji 'Latanie' dla posiadÅ‚oÅ›ci. + +DomyÅ›lnie: nie wybrana + </notification> + <notification label="Zezwalanie na Uszkodzenia" name="HelpRegionAllowDamage"> + Jeżeli ta opcja jest wybrana system zdrowia bÄ™dzie aktywny we wszystkich posiadÅ‚oÅ›ciach niezależnie od ustawieÅ„ dla indywidualnych posiadÅ‚oÅ›ci. Jeżeli ta opcja nie jest wybrana wÅ‚aÅ›ciciele indywidualych posiadÅ‚oÅ›ci bÄ™dÄ… mogli kontrolować system zdrowia w swoich posiadÅ‚oÅ›ciach. + +DomyÅ›lnie: nie wybrana + </notification> + <notification label="Limit Liczby Awatarów" name="HelpRegionAgentLimit"> + Wybierz maksymalnÄ… liczbÄ™ awatarów dozwolonÄ… w tym regionie. +Wydajność systemu może siÄ™ zmieniać w zależnoÅ›ci od liczby obecnych awatarów. + +DomyÅ›lnie: 40 + </notification> + <notification label="Ekstra Obiekty" name="HelpRegionObjectBonus"> + Ekstra Obiekty jest to mnożnik dla dozwolonych elementów (obiektów prostych). Dozwolony zakres to 1 do 10. Ustawienie '1' pozwala na 117 elementów na każdej posiadÅ‚oÅ›ci o powierzchni 512m. Ustawienie '2' pozwala na 234 elementy, czyli dwa razy tyle, itd. +Maksymalna liczba elementów w regionie to 15000 niezależnie od ustawienia Ekstra Obiektów. PamiÄ™taj - zmniejszenie Ekstra Obiektów po fakcie może spowodować odsyÅ‚anie lub usuwanie istniejÄ…cych obiektów. + +DomyÅ›lnie: 1,0 + </notification> + <notification label="Treść" name="HelpRegionMaturity"> + Aktywuj opcjÄ™ klasyfikacji regionu ze wzglÄ™du na treść jakÄ… zawiera, która zostaje wyÅ›wietlana w górnym pasku widoku w nazwie regionu oraz w podpowiedziach Mapy Åšwiata. Dodatkowo, opcja ta wpÅ‚ywa na dostÄ™p do wyników w czasie wyszukiwania danego regionu. By móc odwiedzić dany region lub mieć dostÄ™p do jego wyników w czasie wyszukiwania, Rezydent musi mieć takie same ustawienia dla treÅ›ci jak dany region. + +By dokonana zmiana zostaÅ‚a zsynchronizowana z MapÄ… Åšwiata, poczekaj kilka minut. + </notification> + <notification label="Blokowanie Popychania" name="HelpRegionRestrictPushObject"> + Ta opcja powoduje, że popychanie bÄ™dzie ograniczone w caÅ‚ym regionie. Jeżeli ta opcja jest wybrana Rezydenci mogÄ… być popchniÄ™ci tylko przez samych siebie lub przez wÅ‚aÅ›ciciela posiadÅ‚oÅ›ci. +(Popychanie odnosi sie do funkcji llPushObject() w LSL.) + +DomyÅ›lnie: nie wybrana + </notification> + <notification label="Dzielenie / ÅÄ…czenie PosiadÅ‚oÅ›ci" name="HelpParcelChanges"> + Ta opcja kontroluje czy posiadÅ‚oÅ›ci nie należące do wÅ‚aÅ›ciciela tego majÄ…tku mogÄ… być łączone / dzielone. +Jeżeli opcja nie jest wybrana: +* Tylko wÅ‚aÅ›ciciele majÄ…tku i zarzÄ…dcy mogÄ… łączyć / dzielić posiadÅ‚oÅ›ci. +* Tylko posiadÅ‚oÅ›ci należące do wÅ‚aÅ›ciciela albo do grupy mogÄ… być + łączone / dzielone przez czÅ‚onków z wystarczajÄ…cymi prawami. +Jeżeli ta opcja jest wybrana: +* Wszyscy wÅ‚aÅ›ciciele mogÄ… łączyć / dzielić swoje posiadÅ‚oÅ›ci. +* PosiadÅ‚oÅ›ci należące do grupy mogÄ… być łączone / dzielone + przez czÅ‚onków z wystarczajÄ…cymi prawami. + +DomyÅ›lnie: wybrana + </notification> + <notification label="Nie Pokazuj w Wyszukiwaniu" name="HelpRegionSearch"> + Wybranie tej opcji uniemożliwi wÅ‚aÅ›cicielom posiadÅ‚ość wyÅ›wietlanie ich posiadÅ‚oÅ›ci w wyszukiwaniu +DomyÅ›linie: nie wybrana + </notification> + <notification label="Zmienione Restrykcje Wieku dla Regionu" name="RegionMaturityChange"> + Ustawienie restrykcji wieku dla regionu zostaÅ‚o zmienione. +Zazwyczaj musi upÅ‚ynąć nieco czasu zanim ta zmiana zostanie odzwierciedlona na mapie. + </notification> + <notification label="Odsprzedaż PosiadÅ‚oÅ›ci" name="HelpRegionLandResell"> + WÅ‚aÅ›ciciele majÄ…tku i zarzÄ…dcy mogÄ… sprzedawać posiadÅ‚oÅ›ci należące do wÅ‚aÅ›ciciela majÄ…tku. +Jeżeli ta opcja nie jest wybrana kupujÄ…cy nie bÄ™dÄ… mogli odsprzedać posiadÅ‚oÅ›ci w tym regionie. +Jeżeli ta opcja jest wybrana kupujÄ…cy bÄ™dÄ… mogli odsprzedać posiadÅ‚oÅ›ci w tym regionie. + +DomyÅ›linie: nie pozwalaj + </notification> + <notification label="Wyłącz Skrypty" name="HelpRegionDisableScripts"> + SÅ‚aba wydajność / prÄ™dkość symulatora może być spowodowana przez skrypt. Otwórz panel Statystyki (Ctrl-Shift-1). Sprawdź ilość klatek na sekundÄ™ (FPS) w Fizyce Symulatora. Jeżeli jest mniej niż 45 wybierz panel Czas znajdujÄ…cy siÄ™ na dole panelu Statystyki. Jeżeli Czas Skryptów wynosi 25 ms lub wiÄ™cej kliknij na Główne Skrypty. Zobaczysz listÄ™ nazw i lokacji skryptów które mogÄ… być odpowiedzialne za pogorszenie wydajnoÅ›ci. + +Wybranie opcji Wyłącz Skrypty i naciÅ›niÄ™cie Zastosuj tymczasowo wyłączy wszystkie skrypty w tym regionie. Wybranie tej opcji może być niezbÄ™dne w celu umożliwienia podróży do lokacji wymienionego Głównego Skryptu. +Po przebyciu na miejsce zobacz skrypt i sprawdź czy jest on źródÅ‚em problemu. W razie potrzeby skontaktuj siÄ™ z wÅ‚aÅ›cicielem skryptu albo usuÅ„ lub zwróć obiekt. +Wyłączenie opcji Wyłącz Skrypty i naciÅ›niÄ™cie Zastosuj ponownie włączy skrypty w tym regionie. + +DomyÅ›lnie: nie wybrana + </notification> + <notification label="Wyłącz Kolizje" name="HelpRegionDisableCollisions"> + SÅ‚aba wydajność / prÄ™dkość symulatora może być spowodowana przez fizyczne obiekty. Otwórz panel Statystyki (Ctrl-Shift-1). Sprawdź ilość klatek na sekundÄ™ (FPS) w Fizyce Symulatora. Jeżeli jest mniej niż 45 wybierz panel Czas znajdujÄ…cy siÄ™ na dole panelu Statystyki. Jeżeli Czas Symulatora (Fizyka) wynosi 20 ms lub wiÄ™cej kliknij na Główne Kolizje. Zobaczysz listÄ™ nazw i lokacji fizycznych obiektów które mogÄ… być odpowiedzialne za pogorszenie wydajnoÅ›ci. + +Wybranie opcji Wyłącz Kolizje i naciÅ›niÄ™cie Zastosuj tymczasowo wyłączy kolizje obiektów. Wybranie tej opcji może być niezbÄ™dne w celu umożliwienia podróży do lokacji wymienionych Główneych Kolizji. +Po przebyciu na miejsce zobacz obiekt i sprawdź czy jest on źródÅ‚em kolizji z innymi obiektami. W razie potrzeby skontaktuj siÄ™ z wÅ‚aÅ›cicielem obiektu albo usuÅ„ lub zwróć obiekt. +Wyłączenie opcji Wyłącz Kolizje i naciÅ›niÄ™cie Zastosuj ponownie włączy kolizje w tym regionie. + +DomyÅ›lnie: nie wybrana + </notification> + <notification label="Wyłącz FizykÄ™" name="HelpRegionDisablePhysics"> + Opcja Wyłącz FizykÄ™ jest podobna do opcji Wyłącz Kolizje i spowoduje wyłączenie symulacji fizyki. Oznacza to, że nie tylko obiekty przestanÄ… siÄ™ zderzać, ale również awatary nie bÄ™dÄ… siÄ™ mogÅ‚y poruszać. + +Ta opcja powinna być używana wyłącznie w przypadku kiedy użycie opcji Wyłącz Kolizje nie zwiÄ™ksza wystarczajÄ…co wydajnoÅ›ci symulatora w celu sprawdzenia problemów zwiÄ…zanych z fizykÄ… i z kolizjami. + +Po zakoÅ„czeniu badaÅ„ musisz ponownie włączyć fizykÄ™ żeby awatary mogÅ‚y siÄ™ poruszać. + +DomyÅ›lnie: nie wybrana + </notification> + <notification label="Główne Kolizje" name="HelpRegionTopColliders"> + Pokaż listÄ™ obiektów potencjalnie doÅ›wiadczajÄ…cych najwiÄ™kszej iloÅ›ci kolizji miÄ™dzy obiektami. Te obiekty mogÄ… być odpowiedzialne za zmniejszenie wydajnoÅ›ci. Wybierz Widok > Statystyki i zobacz Symulator > Czas > Czas Symulatora (Fizyka) i sprawdź czy wiÄ™cej niż 20 ms jest spÄ™dzane w fizyce. + </notification> + <notification label="Główne Skrypty" name="HelpRegionTopScripts"> + Pokaż listÄ™ obiektów spÄ™dzajÄ…cych najwÄ™cej czasu wykonujÄ…c skrypty LSL. Te obiekty mogÄ… być odpowiedzialne za zmniejszenie wydajnoÅ›ci. Wybierz Widok > Statystyki i zobacz Symulator > Czas > Czas Skryptów i sprawdź czy wiÄ™cej niż 25 ms jest spÄ™dzane w skryptach. + </notification> + <notification label="Restart Regionu" name="HelpRegionRestart"> + Restart procesu na serwerze obsÅ‚ugujÄ…cym ten region za dwie minuty. Wszyscy Rezydenci w tym regionie zostanÄ… wylogowani. Region zapisze swoje dane i powinien wystartować w przeciÄ…gu 90 sekund. + +Restart regionu nie naprawi wiÄ™kszoÅ›ci problemów zwiÄ…zanych z wydajnoÅ›ciÄ… / prÄ™dkoÅ›ciÄ… i generalnie powinnien być używany na polecenie. + </notification> + <notification label="Poziom Wody" name="HelpRegionWaterHeight"> + Jest to poziom w metrach gdzie pojawia siÄ™ woda. Jeżeli jest wybrana inna wartość niż 20 i Twoja woda sÄ…siaduje z krawÄ™dziÄ… Å›wiata lub pustym miejscem to bÄ™dzie widoczny uskok. + +DomyÅ›lnie: 20 + </notification> + <notification label="Wznoszenie Terenu" name="HelpRegionTerrainRaise"> + Jest to dystans w metrach o który wÅ‚aÅ›ciciele posiadÅ‚oÅ›ci mogÄ… podnieść teren powyżej ustalonego poziomu odniesienia. + +DomyÅ›lnie: 4 + </notification> + <notification label="Obniżanie Terenu" name="HelpRegionTerrainLower"> + Jest to dystans w metrach o który wÅ‚aÅ›ciciele posiadÅ‚oÅ›ci mogÄ… obniżyć teren poniżej ustalonego poziomu odniesienia. + +DomyÅ›lnie: -4 + </notification> + <notification label="Åadowanie RAW Terenu" name="HelpRegionUploadRaw"> + Ten przycisk Å‚aduje plik .RAW dla tego regionu. +Plik musi mieć poprawne wymiary (RGB, 256x256) i 13 kanałów. +Najprostszy sposób na stworzenie pliku terenu to zapisanie istniejÄ…cego pliku RAW. Zalecany pierwszy krok to modyfikacje kanaÅ‚u czerwieni (wysokość terenu) i Å‚adowanie nowego pliku. + +Åadowanie pliku może zająć 45 sekund. ZaÅ‚adowanie terenu nie przemieÅ›ci obiektów znajdujÄ…cych siÄ™ na tym terenie, tylko teren i prawa przypisane do posiadÅ‚oÅ›ci ulegnÄ… zmianie. Może to spowodować, że niektóre obiekty zniknÄ… pod ziemiÄ…. + +Aby uzyskać wiÄ™cej informacji o edycji map wysokoÅ›ci sprawdź F1 Pomoc. + </notification> + <notification label="Zapisywanie RAW Terenu" name="HelpRegionDownloadRaw"> + Ten przycisk zapisuje plik zawierajÄ…cy mapÄ™ wysokoÅ›ci, wymiary posiadÅ‚oÅ›ci, dane o posiadÅ‚oÅ›ciach na sprzedaż i niektóre prawa przypisane do posiadÅ‚oÅ›ci w tym regionie. Jeżeli otwierasz ten plik w programie takim jak Photoshop musisz zdefniować wymiary dokumentu jako: RGB, 256x256, 13 kanałów. Ten plik terenu nie może zostać otwarty w żaden inny sposób. + +Aby uzyskać wiÄ™cej informacji o edycji map wysokoÅ›ci sprawdź F1 Pomoc. + </notification> + <notification label="Używaj SÅ‚oÅ„ca MajÄ…tku" name="HelpRegionUseEstateSun"> + Ta opcja ustala pozycjÄ™ sÅ‚oÅ„ca w tym regionie żeby byÅ‚a taka sama jak pozycja sÅ‚oÅ„ca w reszcie majÄ…tku. + +DomyÅ›lnie: włączona + </notification> + <notification label="StaÅ‚e SÅ‚oÅ„ce" name="HelpRegionFixedSun"> + Ta opcja ustala pozycjÄ™ sÅ‚oÅ„ca do pozycji w suwaku faz i unieruchamia sÅ‚oÅ„ce w wybranej pozycji. + +DomyÅ›lnie: nie włączona + </notification> + <notification label="Ustalanie Terenu" name="HelpRegionBakeTerrain"> + Ten przycisk zapisuje obecne uksztaÅ‚towanie terenu jako nowy punkt odniesienia dla regionu. Po ustaleniu punktu odniesienia teren może zostać odtworzony do zapisanego ksztaÅ‚tu wybierajÄ…c opcjÄ™ Odtwórz w Edycji Terenu. Zapisany, ustalony teren jest również punktem odniesienia dla górnego i dolnego limitu zmian wysokoÅ›ci. + </notification> + <notification label="ZarzÄ…dcy MajÄ…tku" name="HelpEstateEstateManager"> + ZarzÄ…dca majÄ…tku jest Rezydentem oddelegowanym przez Ciebie do kontroli ustawieÅ„ regionu i majÄ…tku. ZarzÄ…dca majÄ…tku może zmieniać wszystkie ustawienia dostÄ™pne na tym panelu, za wyjÄ…tkiem Å‚adowania, zapisywania i ustalania terenu. W szczgólnoÅ›ci może kontrolować dostÄ™p innych Rezydentów (bany) do Twojego majÄ…tku. + +ZarzÄ…dcy majÄ…tku mogÄ… być dodawani i usuwani wyłącznie przez wÅ‚aÅ›ciciela majÄ…tku. Wybieraj na zarzÄ…dców tylko tych Rezydentów którym ufasz ponieważ ponosisz odpowiedzialność za ich dziaÅ‚ania. + </notification> + <notification label="Używaj Globalnego Czasu" name="HelpEstateUseGlobalTime"> + Ta opcja ustala pozycjÄ™ sÅ‚oÅ„ca w Twoim majÄ…tku żeby byÅ‚a taka sama jak pozycja sÅ‚oÅ„ca w regionach głównych należących do Lindenów. + </notification> + <notification label="StaÅ‚e SÅ‚oÅ„ce" name="HelpEstateFixedSun"> + Ta opcja ustala pozycjÄ™ sÅ‚oÅ„ca do pozycji w suwaku faz i unieruchamia sÅ‚oÅ„ce w wybranej pozycji. + </notification> + <notification label="DostÄ™p Publiczny" name="HelpEstateExternallyVisible"> + Ta opcja kontroluje czy Rezydenci znajdujÄ…cy siÄ™ w innych majÄ…tkach mogÄ… przenosić siÄ™ do tego majÄ…tku jeżeli nie sÄ… umieszczeni na liÅ›cie dostÄ™pu. + +DomyÅ›lnie: włączona + </notification> + <notification label="Pozwalaj na BezpoÅ›redniÄ… TeleportacjÄ™" name="HelpEstateAllowDirectTeleport"> + Włączenie tej opcji pozwala Rezydentom na bezpoÅ›redniÄ… teleportacjÄ™ do dowolnego miejsca a Twoim majÄ…tku. Jeżeli ta opcja nie jest wyłączona Rezydenci mogÄ… siÄ™ teleportować do najbliższego teleportera. + +DomyÅ›lnie: nie włączona + </notification> + <notification label="DostÄ™p do MajÄ…tku" name="HelpEstateAllowResident"> + DostÄ™p do tego majÄ…tku bÄ™dzie ograniczony do wymienionych Rezydentów i poniższych grup. Ta opcja jest dostÄ™pna tylko wtedy kiedy opcja DostÄ™pu Publicznego jest wyłączona. + </notification> + <notification label="DostÄ™p Grup do MajÄ…tku" name="HelpEstateAllowGroup"> + DostÄ™p do tego majÄ…tku bÄ™dzie ograniczony do wymienionych grup i powyższych Rezydentów. Ta opcja jest dostÄ™pna tylko wtedy kiedy opcja DostÄ™pu Publicznego jest wyłączona. + </notification> + <notification label="Email o Nadużyciach" name="HelpEstateAbuseEmailAddress"> + Wpisanie ważnego email adresu spowoduje, że raporty o nadużyciach w obrÄ™bie tego majÄ…tku bÄ™dÄ… wysyÅ‚ane na ten adres. Zostawienie pustego miejsca spowoduje, że raporty o nadużyciach bÄ™dÄ… wysyÅ‚ane wyłącznie do Linden Lab. + </notification> + <notification label="WstÄ™p Wzbroniony (bany)" name="HelpEstateBanResident"> + Rezydenci umieszczeni na tej liÅ›cie nie majÄ… dostÄ™pu do Twojego majÄ…tku, niezależnie od jakichkolwiek innych ustawieÅ„. + </notification> + <notification label="Pozwalaj na Rozmowy" name="HelpEstateVoiceChat"> + PosiadÅ‚oÅ›ci w tym majÄ…tku mogÄ… mieć wÅ‚asne kanaÅ‚y gÅ‚osu pozwalajÄ…ce Rezydentom na rozmowy z osobami w pobliżu. + +DomyÅ›lnie: nie włączone + </notification> + <notification label="Wersja Niezgodna z Systemem Rozmów" name="VoiceVersionMismatch"> + Ta wersja Second Life nie jest kompatybilna z systemem Rozmów w tym regionie. Musisz zainstalować aktualnÄ… wersjÄ™ Second Life żeby Rozmowy dziaÅ‚aÅ‚y porawnie. + </notification> + <notification label="Umowa MajÄ…tku" name="HelpEstateCovenant"> + Włączenie opcji umowy majÄ…tku jest wymagane w celu umożliwienia sprzedaży posiadÅ‚oÅ›ci w obrÄ™bie majÄ…tku. +Jeżeli opcja umowy nie jest wybrana sprzedaż posiadÅ‚oÅ›ci nie jest dozwolona. Notka okreÅ›lajÄ…ca TwojÄ… umowÄ™ może być pusta jeżeli nie chcesz ustalić zasad specyficznych dla Twojego majÄ…tku i jeżeli nie chcesz uprzedzać nabywców o faktach odnoszÄ…cych siÄ™ do posiadÅ‚oÅ›ci przed zakupem. + +Umowa może być używana w celu okreÅ›lenia zasad, zaleceÅ„, przekazywania informacji o kulturze lub, po prostu, Twoich wÅ‚asnych oczekiwaÅ„ w odniesieniu do potencjalnego nabywacy. +Możesz zdefiniować zasady podziaÅ‚u posidÅ‚oÅ›ci, prawa budowlane, zasady opÅ‚at i wszystkie dodatkowe informacje z którymi nowy wÅ‚aÅ›ciciel powinien zapoznać siÄ™ i zaakceptować przed zakupem. + +Nabywca musi wybrać opcjÄ™ akceptacji umowy żeby trasakcja mogÅ‚a zostać sfinalizowana. Umowa majÄ…tku jest zawsze dostÄ™pna w dialogu O PosiadÅ‚oÅ›ci dla każedej posiadÅ‚oÅ›ci ze zdefinowanÄ… umowÄ…. + </notification> + <notification label="Nie Można Kupić Obiektów" name="BuyObjectOneOwner"> + Jednorazowo możesz kupować tylko od jednego wÅ‚aÅ›ciciela. +Wybierz pojedynczy obiekt i spróbuj jeszcze raz. + </notification> + <notification label="Nie Można Kupić ZawartoÅ›ci" name="BuyContentsOneOnly"> + Jednorazowo możesz kupić zawartość tylko jednego obiektu. +Wybierz pojedynczy obiekt i spróbuj jeszcze raz. + </notification> + <notification label="Nie Można Kupić ZawartoÅ›ci" name="BuyContentsOneOwner"> + Jednorazowo możesz kupować tylko od jednego wÅ‚aÅ›ciciela. +Wybierz pojedynczy obiekt i spróbuj jeszcze raz. + </notification> + <notification name="BuyOriginal"> + Kupić oryginalny obiekt od [OWNER] za [PRICE]L$? +Zostaniesz wÅ‚aÅ›cicielem tego obiektu z nastÄ™pujÄ…cymi prawami: + Modyfikacje: [MODIFYPERM] + Kopiowanie: [COPYPERM] + Odsprzedawanie i Oddawanie: [RESELLPERM] + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="BuyOriginalNoOwner"> + Kupić oryginalny obiekt za [PRICE]L$? +Zostaniesz wÅ‚aÅ›cicielem tego obiektu z nastÄ™pujÄ…cymi prawami: + Modyfikacje: [MODIFYPERM] + Kopiowanie: [COPYPERM] + Odsprzedawanie i Oddawanie: [RESELLPERM] + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="BuyCopy"> + Kupić kopiÄ™ obiektu od [OWNER] za [PRICE]L$? +Obiekt zostanie skopiowany do Twojej szafy z nastÄ™pujÄ…cymi prawami: + Modyfikacje: [MODIFYPERM] + Kopiowanie: [COPYPERM] + Odsprzedawanie i Oddawanie: [RESELLPERM] + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="BuyCopyNoOwner"> + Kupić kopiÄ™ obiektu za [PRICE]L$? +Obiekt zostanie skopiowany do Twojej szafy z nastÄ™pujÄ…cymi prawami: + Modyfikacje: [MODIFYPERM] + Kopiowanie: [COPYPERM] + Odsprzedawanie i Oddawanie: [RESELLPERM] + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="BuyContents"> + Kupić zawartość od [OWNER] za [PRICE]L$? +Zawartość zostanie skopiowana do Twojej szafy. + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="BuyContentsNoOwner"> + Kupić zawartość za [PRICE]L$? +Zawartość zostanie skopiowana do Twojej szafy. + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="ConfirmPurchase"> + Ta transakcja spowoduje: +[ACTION] + +Na pewno chcesz dokonać tego zakupu? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="ConfirmPurchasePassword" type="password"> + Ta transakcja spowoduje: +[ACTION] + +Na pewno chcesz dokonać tego zakupu? +Wpisz hasÅ‚o ponownie i kliknij OK. + <form name="form"> + <input name="message" type="password"/> + <button name="ConfirmPurchase" text="OK"/> + <button name="Cancel" text="Anuluj"/> + </form> + </notification> + <notification name="SetPickLocation"> + Uwaga: +Lokacja tego wyboru zostaÅ‚a zaktualizowana ale pozostaÅ‚e szczegóły zachowajÄ… oryginalne wartoÅ›ci. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MoveInventoryFromObject"> + Wybrane obiekty szafy nie majÄ… praw kopiowania. +Obiekty zostanÄ… przeniesione do Twojej szafy, nie zostanÄ… skopiowane. + +Przenieść obiekty szafy? + <usetemplate ignoretext="PrzenoszÄ…c szafÄ™ bez praw kopiowania z obiektów" name="okcancelignore" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="MoveInventoryFromScriptedObject"> + Wybrane obiekty szafy nie majÄ… praw kopiowania. +Obiekty zostanÄ… przeniesione do Twojej Szafy, nie zostanÄ… skopiowane. +Ponieważ obiekty zawierajÄ… skrypty, przeniesienie obiektów do Twojej szafy może spowodować niepoprawne dziaÅ‚anie skryptów. + +Przenieść obiekty szafy? + <usetemplate ignoretext="PrzenoszÄ…c szafÄ™ bez praw kopiowania ze skryptowanych obiektów" name="okcancelignore" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="ClickActionNotPayable"> + Uwaga: Opcja ZapÅ‚ać Obiektowi zostaÅ‚a wybrana, ale żeby ta opcja dziaÅ‚aÅ‚a musi być dodany skrypt z funkcjÄ… money(). + <form name="form"> + <ignore name="ignore" text="WybierajÄ…c opcjÄ™ ZapÅ‚ać Obiektowi dla obiektów bez funkcji money()"/> + </form> + </notification> + <notification name="OpenObjectCannotCopy"> + W tym obiekcie nie ma elementów które możesz skopiować. + </notification> + <notification name="WebLaunchAccountHistory"> + Przejść na stronÄ™ Second Life żeby zobaczyć historiÄ™ konta? + <usetemplate ignoretext="ÅadujÄ…c stronÄ™ historii konta." name="okcancelignore" notext="Anuluj" yestext="Idź na stronÄ™"/> + </notification> + <notification name="ClickOpenF1Help"> + Przejść na stronÄ™ Second Life? + <usetemplate ignoretext="OdwiedzajÄ…c stronÄ™ Second Life." name="okcancelignore" notext="Anuluj" yestext="Idź"/> + </notification> + <notification name="ConfirmQuit"> + Na pewno chcesz skoÅ„czyć? + <usetemplate ignoretext="WyłączajÄ…c Second Life." name="okcancelignore" notext="Kontynuuj" yestext="Wyłącz"/> + </notification> + <notification name="HelpReportAbuseEmailLL"> + Używaj tej opcji do zgÅ‚aszania nadużyć Warunków Umowy (Terms of Service) i Standardów SpoÅ‚eczeÅ„stwa (Community Standards). Zobacz: + +http://secondlife.com/corporate/tos.php +http://secondlife.com/corporate/cs.php + +Wszystkie zgÅ‚oszone nadużycia Warunków Umowy (Terms of Service) i Standardów SpoÅ‚eczeÅ„stwa (Community Standards) sÄ… badane i rozwiÄ…zywane. Możesz zobaczyć konkluzjÄ™ zgÅ‚oszenia w Raporcie ZgÅ‚oszeÅ„ pod: + +http://secondlife.com/support/incidentreport.php + </notification> + <notification name="HelpReportAbuseEmailEO"> + UWAGA: Ten raport zostanie wysÅ‚any do wÅ‚aÅ›ciciela regionu w którym siÄ™ znajdujesz i nie bÄ™dzie wysÅ‚any do Linden Lab. + +W ramach serwisu dla Rezydentów i goÅ›ci wÅ‚aÅ›ciciel tego regionu postanowiÅ‚ odbierać i rozwiÄ…zywać wszystkie reporty wysÅ‚ane z tego regionu. Linden Lab nie bÄ™dzie analizowaÅ‚ żadnych reportów zgÅ‚oszonych z tego miejsca. + +WÅ‚aÅ›ciciel regionu bÄ™dzie rozpatrywaÅ‚ raporty w oparciu o lokalne prawa tego regionu zdefiniowane w umowie majÄ…tku. (Możesz zobaczyć umowÄ™ wybierajÄ…c opcjÄ™ O PosiadÅ‚oÅ›ci z menu Åšwiat.) + +RozwiÄ…zanie tego raportu odnosi siÄ™ wyłącznie do tego regionu; konkluzja tego raportu nie bÄ™dzie miaÅ‚a wpÅ‚ywu na dostÄ™p Rezydentów do innych regionów w Second Life. Wyłącznie Linden Lab może caÅ‚kowicie odebrać dostÄ™p do Second Life. + </notification> + <notification name="HelpReportBug"> + Używaj tej opcji *wyłącznie* w celu zgÅ‚aszania technicznych problemów, dołączajÄ…c szczegółowy opis problemu. Możesz odpowiedzieć na automatycznÄ… email z odpowiedziÄ… żeby dodać wiÄ™cej szczegółów do Twojego raportu. + +Wszystkie raporty błędów sÄ… analizowane i oceniane. Kontakt przez email nie bÄ™dzie nawiÄ…zany. + +Jeżeli masz techniczne problemy, skontaktuj siÄ™ z pomocÄ… technicznÄ… pod: + +http://secondlife.com/community/support.php + +Uwaga: Niekompletne raporty nie bÄ™dÄ… analizowane. + </notification> + <notification name="HelpReportAbuseSelectCategory"> + Wybierz kategoriÄ™ dla tego raportu o nadużyciu. +OkreÅ›lenie kategorii pomoże nam w klasyfikacji i prztwarzaniu raportu. + </notification> + <notification name="HelpReportBugSelectCategory"> + Wybierz kategoriÄ™ dla tego błędu. +OkreÅ›lenie kategorii pomoże nam w klasyfikacji i prztwarzaniu raportu. + </notification> + <notification name="HelpReportAbuseAbuserNameEmpty"> + Wprowadź imiÄ™ i nazwisko osoby popeÅ‚niajÄ…cej nadużycie. +DokÅ‚adne dane pomogÄ… nam w klasyfikacji i prztwarzaniu raportu. + </notification> + <notification name="HelpReportAbuseAbuserLocationEmpty"> + Wprowadź nazwÄ™ miejsca gdzie popeÅ‚niono nadużycie. +DokÅ‚adne dane pomogÄ… nam w klasyfikacji i prztwarzaniu raportu. + </notification> + <notification name="HelpReportAbuseSummaryEmpty"> + Wprowadź opis popeÅ‚nionego nadużycia. +DokÅ‚adne dane pomogÄ… nam w klasyfikacji i prztwarzaniu raportu. + </notification> + <notification name="HelpReportBugSummaryEmpty"> + Wprowadź opis błędu. +DokÅ‚adne dane pomogÄ… nam w klasyfikacji i prztwarzaniu raportu. + </notification> + <notification name="HelpReportAbuseDetailsEmpty"> + Wprowadź szczgółowy opis popeÅ‚nionego nadużycia. +Podaj maksymalnÄ… ilość szczgółów oraz imiona i nazwiska osób zwiÄ…zanych z nadużyciem które zgÅ‚aszasz. +DokÅ‚adne dane pomogÄ… nam w klasyfikacji i prztwarzaniu raportu. + </notification> + <notification name="HelpReportBugDetailsEmpty"> + Wprowadź szczgółowy opis błędu. Podaj maksymalnÄ… ilość szczgółów oraz, jeżeli to możliwe, kroki niezbÄ™dne do odtworzenia problemu. +DokÅ‚adne dane pomogÄ… nam w klasyfikacji i prztwarzaniu raportu. + </notification> + <notification name="HelpReportAbuseContainsCopyright"> + Szanowny Rezydencie, + +Jeżeli skÅ‚adasz raport dotyczÄ…cy naruszenia praw autorskich proszÄ™ siÄ™ upewnić, że robisz to poprawnie: + +(1) Przypadek Nadużycia. Możesz zÅ‚ożyć raport jeżeli sÄ…dzisz, że Rezydent narusza system przywilejów Second Life, na przykÅ‚ad używajÄ…c CopyBot lub podobnych narzÄ™dzi robiÄ…cych kopie, naruszajÄ…c prawa autorskie. Komisja Nadużyć bada wykrocznia i stosuje akcje dyscyplinarne za zachowania sprzeczne z zasadami Warunków Umowy (Terms of Service) i Standardów SpoÅ‚eczeÅ„stwa (Community Standards) Second Life. Komisja Nadużyć nie zajmuje siÄ™ i nie odpowiada na żądania usuniÄ™cia treÅ›ci ze Å›rodowiska Second Life. + +(2) Przypadek DMCA lub Usuwanie TreÅ›ci. Aby wystÄ…pić z żądaniem o usuniÄ™cie treÅ›ci ze Å›rodowiska Second Life MUSISZ przedÅ‚ożyć ważne zawiadomienie o nadużyciu zgodne z naszÄ… polisÄ… DMCA pod http://secondlife.com/corporate/dmca.php. + +Jeżeli chcesz kontynuować dalej zamknij to okno i dokoÅ„cz wysyÅ‚anie raportu. Może być potrzebny wybór kategorii 'CopyBot albo Nadużycie Przywilejów'. + +DziÄ™kujemy, + +Linden Lab + </notification> + <notification name="FailedRequirementsCheck"> + Brak nastÄ™pujÄ…cych wymaganych komponentów w [FLOATER]: +[COMPONENTS] + </notification> + <notification label="ZamieÅ„ IstniejÄ…cy Dodatek" name="ReplaceAttachment"> + Obecnie masz już dołączony obiekt do tej części Twojego ciaÅ‚a. +Chcesz go zamienić na wybrany obiekt? + <form name="form"> + <ignore name="ignore" save_option="true" text="ZamieniajÄ…c istniejÄ…ce dodatki"/> + <button ignore="ZamieÅ„ Automatycznie" name="Yes" text="OK"/> + <button ignore="Nie Zamieniaj" name="No" text="Anuluj"/> + </form> + </notification> + <notification label="Ostrzeżenie Trybu Pracy" name="BusyModePay"> + JesteÅ› w Trybie Pracy co oznacza, że nie dostaniesz żadnych obiektów w zamian za tÄ… opÅ‚atÄ™. + +Chcesz wyłączyć Tryb Pracy przed zakoÅ„czeniem tej tranzakcji? + <form name="form"> + <ignore name="ignore" save_option="true" text="PÅ‚acÄ…c osobie lub obiektowi bÄ™dÄ…c w Trybie Pracy"/> + <button ignore="Zawsz wyłączaj Tryb Pracy" name="Yes" text="OK"/> + <button ignore="Nie wyłączaj Trybu Pracy" name="No" text="Anuluj"/> + </form> + </notification> + <notification name="ConfirmEmptyTrash"> + Na pewno chcesz permanentnie usunąć zawartość Åšmietnika? + <usetemplate ignoretext="UsuwajÄ…c zawartość Åšmietnika" name="okcancelignore" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="ConfirmClearBrowserCache"> + Na pewno chcesz wyczyÅ›cić bufor przeglÄ…darki? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Tak"/> + </notification> + <notification name="ConfirmClearCookies"> + Na pewno chcesz wyczyÅ›cić ciasteczka? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Tak"/> + </notification> + <notification name="ConfirmClearMediaUrlList"> + Na pewno chcesz wyczyÅ›cić listÄ™ zapisanych linków? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Tak"/> + </notification> + <notification name="ConfirmEmptyLostAndFound"> + Na pewno chcesz permanentnie usunąć zawartość Twojego foldera Zgubione i Znalezione? + <usetemplate ignoretext="UsuwajÄ…c szafÄ™ z Twojego foldera Zgubione i Znalezione" name="okcancelignore" notext="Nie" yestext="Tak"/> + </notification> + <notification name="CopySLURL"> + NastÄ™pujÄ…cy link SLURL zostaÅ‚ skopiowany do pamiÄ™ci podrÄ™cznej: + [SLURL] + +Zamieść go na stronie Internetowej żeby umożliwić innym Å‚atwy dostÄ™p do tego miejsca, albo wklej go do panela adresu Twojej przeglÄ…darki żeby go wypróbować. + <form name="form"> + <ignore name="ignore" text="KopiujÄ…c SLURL do pamiÄ™ci podrÄ™cznej"/> + </form> + </notification> + <notification name="GraphicsPreferencesHelp"> + Ten panel kontroluje wymiary i rozdzielczość okna oraz jakość grafiki klienta. Panel Ustawienia > Grafika pozwala na wybór jednego z czterech poziomów jakoÅ›ci grafiki: Niska, Åšrednia, Wysoka i Super. Możesz również dostosować grafikÄ™ do wÅ‚asnych potrzeb wybierajÄ…c opcjÄ™ Zaawansowane i zmieniajÄ…c nastÄ™pujÄ…ce ustawienia: + +Shadery: Opcja ta pozwala włączyć i wyłączyć różne rodzaje shaderów pikseli. + +Ustawienia Odbić: OkreÅ›la rodzaje obiektów które mogÄ… odbijać siÄ™ w wodzie. + +Prezentacja Awatarów: OkreÅ›la opcje majÄ…ce wpÅ‚yw na rysowanie awatarów przez klienta. + +Głębia Rysowania: OkreÅ›la od jakiej odlegÅ‚oÅ›ci od pozycji kamery obiekty bÄ™dÄ… rysowane w tle. + +Liczba CzÄ…steczek: OkreÅ›la maksymalnÄ… liczbÄ™ czÄ…steczek widocznych jednoczeÅ›nie na ekranie. + +Jakość Post-Procesu: OkreÅ›la rozdzielczość z jakÄ… jest wyÅ›wietlana poÅ›wiata. + +Szczegóły Meszu: OkreÅ›la ilość szczegółów albo liczbÄ™ trójkÄ…tów używanÄ… przy rysowaniu pewnych obiektów. WiÄ™ksza wartość zwalnia prÄ™dkość rysowania ale powoduje, że obiekty wyglÄ…dajÄ… bardziej szczgółowo. + +Ustawienia ÅšwiatÅ‚a: OkreÅ›la jaki rodzaj Å›wiatÅ‚a jest używany do rysowania. + +Szczegóły Terenu: OkreÅ›la ilość szczgółów widocznÄ… w teksturach terenu. + </notification> + <notification name="WLSavePresetAlert"> + Chcesz zmienić zapisane ustawienia? + <usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/> + </notification> + <notification name="WLDeletePresetAlert"> + Chcesz usunąć [SKY]? + <usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/> + </notification> + <notification name="WLNoEditDefault"> + Nie możesz edytować lub usunąć domyÅ›lnych ustawieÅ„. + </notification> + <notification name="WLMissingSky"> + Ten plik cyklu dziennego używa brakujÄ…cego pliku nieba: [SKY]. + </notification> + <notification name="PPSaveEffectAlert"> + Efekt Post-Procesu już istnieje. Chcesz zapisać nowy na jego miejsce? + <usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/> + </notification> + <notification name="HelpEditSky"> + Ustaw suwaki żeby stworzyć i zapisać zbiór nieb. + </notification> + <notification name="HelpEditDayCycle"> + Wybierz których nieb używać w przeciÄ…gu dnia. + </notification> + <notification name="EnvSettingsHelpButton"> + Te ustawienia zmieniajÄ… wyglÄ…d Å›rodowiska na Twoim komputerze. Twoja karta graficzna musi posiadać opcjÄ™ shaderów atmosfery aby umożliwić dostÄ™p do wszystkich ustawieÅ„. + +Ustaw suwak "Pora Dnia" żeby zmienić lokalnÄ… porÄ™ dnia w kliencie. + +Ustaw suwak "Chmury" żeby zmienić ilość chmur widocznÄ… na niebie. + +Wybierz kolor w selekcji "Kolor Wody" żeby zmienić kolor wody. + +Ustaw suwak "Zamglenie" żeby zmienić gÄ™stość zamglenia pod wodÄ…. + +Kliknij "Używaj Czasu Regionu" żeby dostosowywać porÄ™ dnia do pory dnia w regionie. + +Kliknij "Zaawansowane Niebo" żeby wybrać bardziej szczegółowy edytor ustawieÅ„ nieba. + +Kliknij "Zaawansowana Woda" żeby wybrać bardziej szczegółowy edytor ustawieÅ„ wody. + </notification> + <notification name="HelpDayCycle"> + Edytor Cyklu Dnia pozwala na kontrolÄ™ nieba podczas cyklu dnia/nocy w Second Life. Ten cykl jest używany przez suwak Pora Dnia w podstawowym Edytorze Åšrodowiska. + +Edytor Cyklu Dnia ustala klatki odniesienia. SÄ… to punkty (widoczne jako szare plamki na wykresie czasu) które majÄ… przypisane Ustawienia Nieba. W miarÄ™ upÅ‚ywu czasu niebo jest animowane używajÄ…c Å›rednich pomiÄ™dzy klatkami odniesienia. + +Żółta strzaÅ‚ka powyżej linii czasu odpowiada biżącemu widokowi opartemu na Porze Dnia. Kliknij i przeciÄ…gnij strzaÅ‚kÄ™ żeby zobaczyć animacjÄ™ w przeciÄ…gu dnia. Możesz dodawać i usuwać klatki odniesienia używająć przycisków Dodaj i UsuÅ„ po prawej stronie linii czasu. + +DÅ‚ugość Cyklu dyktuje caÅ‚kowitÄ… dÅ‚ugość "dnia". Wybranie maÅ‚ej wartoÅ›ci (na przykÅ‚ad 2 min) oznacza, że Twoja 24-o godzinna linia czasu bÄ™dzie animowana w caÅ‚oÅ›ci w przeciÄ…gu dwóch minut czasu rzeczywistego! Po wybraniu odpowiednich ustawieÅ„ linii czasu i klatek odniesienia użyj przycisków Start i Stop żeby zobaczyć rezultaty. PamiÄ™taj - zawsze możesz używać żółtej strzaÅ‚ki wskażnika czasu powyżej linii czasu żeby zmieniać animacjÄ™ dynamicznie. Użycie przycisku Używaj Czasu Regionu zsynchronizuje TwojÄ… dÅ‚ugość dnia i czas z cyklem Regionu. + +Po zdefiniowaniu Cyklu Dnia możesz zapisać i zaÅ‚adować ustawienia używajÄ…c przycisków Zapisz Test Dnia i ZaÅ‚aduj Test Dnia. Uwaga, obecnie tylko jeden Cykl Dnia jest dozwolony. + </notification> + <notification name="HelpBlueHorizon"> + Ustaw suwaki Czerwony/Zielony/Niebieski (RGB) żeby zmienić kolor nieba. Możesz używać suwaka Intensywność (I) żeby zmieniać ustawienia suwaków wszystkich kolorów (RGB) jednoczeÅ›nie. + </notification> + <notification name="HelpHazeHorizon"> + Horyzont Zamglenia jest jednym z ważniejszych parametrów kontrolujÄ…cych oÅ›wietlenie sceny. Jest efektywnym do symulacji wielu ustawieÅ„ oÅ›wietlenia takich jak rozbyski sÅ‚oÅ„ca i ciemniejsze ustawienia zamkniÄ™tej przesÅ‚ony. + </notification> + <notification name="HelpBlueDensity"> + GÄ™stość Błękitu ma wpÅ‚yw na nasycenie koloru nieba i mgÅ‚y. Jeżeli przesuniesz suwak IntensywnoÅ›ci (I) w prawo kolory bÄ™dÄ… jaÅ›niejsze i żywsze. Jeżeli przesuniesz caÅ‚kowicie w lewo kolory bÄ™dÄ… rozmywać siÄ™ aż do przejÅ›cia w biel i czerÅ„. Jeżeli chcesz precyzyjnie kontrolować balans koloru nieba możesz używać suwaków kolorów Czerwony/Zielony/Niebieski (RGB) w celu zmiany nasycenia indywidualnych skÅ‚adników. + </notification> + <notification name="HelpHazeDensity"> + GÄ™stość Zamglenia kontroluje zawartość mÄ™tnego, szarego zamglenia w atmosferze. Jest to przydatne do symulacji scen z dużą iloÅ›ciÄ… dymu i zanieczyszczeÅ„. +Oraz do symulacji mgÅ‚y i zamgleÅ„. + </notification> + <notification name="HelpDensityMult"> + Mnożnik GÄ™stoÅ›ci wpÅ‚ywa na gÄ™stość atmosfery w caÅ‚oÅ›ci. Niskie ustawienie sprawia wrażenie lekkiego powietrza, wyższe ustawienia tworzÄ… bardzo ciężki, zamglony efekt. + </notification> + <notification name="HelpDistanceMult"> + Mnożnik Dystansu wpÅ‚ywa na postrzeganie dystansu. Wartość zero niweluje wpÅ‚yw dystansu na wyglÄ…d terenu i obiektów. +WartoÅ›ci wiÄ™ksze od 1 symulujÄ… wiÄ™kszy dystans tworzÄ…c silniejszy efekt atmosferyczny. + </notification> + <notification name="HelpMaxAltitude"> + Max Wysokość wpÅ‚ywa na obliczanie Å›wiatÅ‚a atmosferycznego. +O póżniejszych porach dnia ta wartość jest przydatna do regulacji percepcji dystansu zachodÄ…cego sÅ‚oÅ„ca. + </notification> + <notification name="HelpSunlightColor"> + Reguluje kolor i intensywność bezpoÅ›redniego Å›wiatÅ‚a w scenie. + </notification> + <notification name="HelpSunAmbient"> + Reguluje kolor i intensywność rozproszonego Å›wiatÅ‚a atmosferycznego w scenie. + </notification> + <notification name="HelpSunGlow"> + Suwak Rozmiar kontroluje wielkość sÅ‚oÅ„ca. +Suwak Ostrość kontroluje ostrość sÅ‚oÅ„ca na niebie. + </notification> + <notification name="HelpSceneGamma"> + Reguluje dystrybucjÄ™ Å›wiatÅ‚a i cienia na ekranie. + </notification> + <notification name="HelpStarBrightness"> + Reguluje blask gwiazd na niebie. + </notification> + <notification name="HelpTimeOfDay"> + Kontroluje pozycjÄ™ sÅ‚oÅ„ca na niebie. +Zbliżone do wysokoÅ›ci. + </notification> + <notification name="HelpEastAngle"> + Kontroluje pozycjÄ™ sÅ‚oÅ„ca na niebie. +Zbliżone do azymutu. + </notification> + <notification name="HelpCloudColor"> + Kontroluje kolor chmur. Generalnie powinny być biaÅ‚awe, ale hej, pobaw siÄ™ jeżeli masz ochotÄ™. + </notification> + <notification name="HelpCloudDetail"> + Kontroluje szczegółowy obraz naÅ‚ożony na górÄ™ głównego obrazu chmur. X i Y kontrolujÄ… jego pozycjÄ™. G (GÄ™stość) kontroluje jak puchate lub postrzÄ™pione sÄ… chmury. + </notification> + <notification name="HelpCloudDensity"> + Suwaki X i Y kontrolujÄ… pozycjÄ™ chmur. +Suwak G (GÄ™stość) kontroluje gÄ™stość chmur. + </notification> + <notification name="HelpCloudCoverage"> + Kontroluje ilość chmur pokrywajÄ…cych niebo. + </notification> + <notification name="HelpCloudScale"> + Kontroluje skalÄ™ obrazu chmur na kopule nieba. + </notification> + <notification name="HelpCloudScrollX"> + Kontroluje prÄ™dkość przemieszczania chmur wzdÅ‚uż osi X. + </notification> + <notification name="HelpCloudScrollY"> + Kontroluje prÄ™dkość przemieszczania chmur wzdÅ‚uż osi Y. + </notification> + <notification name="HelpClassicClouds"> + Wybierz tÄ… opcjÄ™ w celu używania dodatkowo starszej, klasycznej wersji chmur Second Life. + </notification> + <notification name="HelpWaterFogColor"> + Kontroluje kolor podwodnej mgÅ‚y. + </notification> + <notification name="HelpWaterFogDensity"> + Kontroluje gÄ™stość mgÅ‚y i głębie wizji pod wodÄ…. + </notification> + <notification name="HelpUnderWaterFogMod"> + Modyfikuje wpÅ‚yw wykÅ‚adnika gÄ™stoÅ›ci mgÅ‚y na głębie wizji awatara pod wodÄ…. + </notification> + <notification name="HelpWaterGlow"> + Kontroluje emisjÄ™ Å›wiatÅ‚a z powierzchni wody. + </notification> + <notification name="HelpWaterNormalScale"> + Kontroluje skalÄ™ trzech zmarszczeÅ„ które tworzÄ… wodÄ™. + </notification> + <notification name="HelpWaterFresnelScale"> + Kontroluje jak dużo Å›wiatÅ‚a jest odbijane pod różnymi kÄ…tami. + </notification> + <notification name="HelpWaterFresnelOffset"> + Kontroluje jak dużo intensywnoÅ›ci Å›wiatÅ‚a jest odbijane. + </notification> + <notification name="HelpWaterScaleAbove"> + Kontroluje jak dużo Å›wiatÅ‚a odbija siÄ™ od górnej powierzchni wody. + </notification> + <notification name="HelpWaterScaleBelow"> + Kontroluje jak dużo Å›wiatÅ‚a odbija siÄ™ od dolnej powierzchni wody. + </notification> + <notification name="HelpWaterBlurMultiplier"> + Kontroluje jak fale i odbicia sÄ… mieszane. + </notification> + <notification name="HelpWaterNormalMap"> + Kontroluje która mapa normalnych jest używana w wodzie do okreÅ›lania odbić/zaÅ‚amaÅ„. + </notification> + <notification name="HelpWaterWave1"> + Kontroluje gdzie i jak szybko duża wersja mapy normalnych przemieszcza siÄ™ wzdÅ‚uż osi X i Y. + </notification> + <notification name="HelpWaterWave2"> + Kontroluje gdzie i jak szybko maÅ‚a wersja mapy normalnych przemieszcza siÄ™ wzdÅ‚uż osi X i Y. + </notification> + <notification name="NewSkyPreset"> + Nazwij nowe niebo. + <form name="form"> + <input name="message" type="text"> + Nowe Ustawienie + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Anuluj"/> + </form> + </notification> + <notification name="ExistsSkyPresetAlert"> + Ustawienie już istnieje! + </notification> + <notification name="NewWaterPreset"> + Nazwij nowe ustawienie wody. + <form name="form"> + <input name="message" type="text"> + Nowe Ustawienie + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Anuluj"/> + </form> + </notification> + <notification name="ExistsWaterPresetAlert"> + Ustawienie już istnieje! + </notification> + <notification name="WaterNoEditDefault"> + DomyÅ›le ustawienie nie może być zmienione ani usuniÄ™te. + </notification> + <notification name="ChatterBoxSessionStartError"> + Błąd podczas rozpoczynania czatu/IM z [RECIPIENT]. +[REASON] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ChatterBoxSessionEventError"> + [EVENT] +[REASON] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ForceCloseChatterBoxSession"> + Twój czat/IM z [NAME] zostanie zamkniÄ™ty. +[REASON] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="Cannot_Purchase_an_Attachment"> + Rzeczy nie mogÄ… być kupione jeżeli + sÄ… częściÄ… załącznika. + </notification> + <notification label="ProÅ›ba o ZgodÄ™ na Pobieranie L$" name="DebitPermissionDetails"> + AkceptujÄ…c tÄ… proÅ›bÄ™ wyrażasz zgodÄ™ na ciÄ…gÅ‚e pobieranie Lindenów (L$) z Twojego konta. Å»eby cofnąć to pozwolenie wÅ‚aÅ›ciciel obiektu bÄ™dzie musiaÅ‚ usunąć ten obiekt albo zresetowć skrypty obieku. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="AutoWearNewClothing"> + Czy chcesz automatycznie nosić ubranie które tworzysz? + <usetemplate ignoretext="Automatycznie noÅ› nowe ubranie" name="okcancelignore" notext="Nie" yestext="Tak"/> + </notification> + <notification name="NotAgeVerified"> + Nie masz dostÄ™pu do tej posiadÅ‚oÅ›ci ze wzglÄ™du na brak weryfikacji Twojego wieku. +Czy chcesz odwiedzić stronÄ™ Second Life żeby to zmienić? + +[_URL] + <url name="url" option="0"> + https://secondlife.com/account/verification.php + </url> + <usetemplate ignoretext="Ostrzegaj o braku weryfikacji wieku" name="okcancelignore" notext="Nie" yestext="Tak"/> + </notification> + <notification name="Cannot enter parcel: no payment info on file"> + Nie masz dostÄ™pu do tej posiadÅ‚oÅ›ci ze wzglÄ™du na brak danych o Twoim koncie. +Czy chcesz odwiedzić stronÄ™ Second Life żeby to zmienić? + +[_URL] + <url name="url" option="0"> + https://secondlife.com/account/ + </url> + <usetemplate ignoretext="Ostrzegaj o braku danych konta" name="okcancelignore" notext="Nie" yestext="Tak"/> + </notification> + <notification name="MissingString"> + Zdanie [STRING_NAME] nie znalezione w strings.xml + </notification> + <notification name="SystemMessageTip"> + [MESSAGE] + </notification> + <notification name="Cancelled"> + Anulowane + </notification> + <notification name="CancelledSit"> + Siadanie Anulowane + </notification> + <notification name="CancelledAttach"> + Dołączenie Anulowane + </notification> + <notification name="ReplacedMissingWearable"> + BarkujÄ…ce ubranie/części ciaÅ‚a zastÄ…piono domyÅ›lnymi obiektami. + </notification> + <notification name="GroupNotice"> + Temat: [SUBJECT], Treść: [MESSAGE] + </notification> + <notification name="FriendOnline"> + [FIRST] [LAST] jest w Second Life + </notification> + <notification name="FriendOffline"> + [FIRST] [LAST] opuszcza Second Life + </notification> + <notification name="AddSelfFriend"> + Nie możesz dodać siebie do listy znajomych. + </notification> + <notification name="UploadingAuctionSnapshot"> + Åadowanie obrazu z Internetu... +(Zajmuje okoÅ‚o 5 minut.) + </notification> + <notification name="UploadPayment"> + Åadowanie kosztowaÅ‚o [AMOUNT]L$. + </notification> + <notification name="UploadWebSnapshotDone"> + Åadowanie obrazu z Internetu zakoÅ„czne pomyÅ›lnie. + </notification> + <notification name="UploadSnapshotDone"> + Åadowanie zdjÄ™cia zakoÅ„czone pomyÅ›lnie. + </notification> + <notification name="TerrainDownloaded"> + Plik terrain.raw Å›ciÄ…gniety. + </notification> + <notification name="GestureMissing"> + Gest [NAME] nie znaleziony w bazie danych. + </notification> + <notification name="UnableToLoadGesture"> + Åadowanie gestu [NAME] nie powiodÅ‚o siÄ™. +Spróbuj jeszcze raz. + </notification> + <notification name="LandmarkMissing"> + Miejsce (LM) nie znalezione w bazie danych. + </notification> + <notification name="UnableToLoadLandmark"> + Åadowanie miejsca (LM) nie powiodÅ‚o siÄ™. +Spróbuj jeszcze raz. + </notification> + <notification name="CapsKeyOn"> + Twój Caps Lock jest włączony. +Ponieważ to ma wpÅ‚yw na wpisywane hasÅ‚o, możesz chcieć go wyłączyć. + </notification> + <notification name="NotecardMissing"> + Notka nie znaleziona w bazie danych. + </notification> + <notification name="NotecardNoPermissions"> + Nie masz pozwolenia na zobaczenie notki. + </notification> + <notification name="RezItemNoPermissions"> + Nie masz pozwolenia na stworzenie obiektu. + </notification> + <notification name="UnableToLoadNotecard"> + Nie można zaÅ‚adować danych notki w tym momencie. + </notification> + <notification name="ScriptMissing"> + Skrypt nie znaleziony w bazie danych. + </notification> + <notification name="ScriptNoPermissions"> + Nie masz pozwolenia na zobaczenie skryptu. + </notification> + <notification name="UnableToLoadScript"> + Åadowanie skryptu nie powiodÅ‚o siÄ™. +Spróbuj jeszcze raz. + </notification> + <notification name="IncompleteInventory"> + Zawartość obiektów którÄ… chcesz podarować nie jest dostÄ™pna lokalnie. Spróbuj podarować te obiekty jeszcze raz za jakiÅ› czas. + </notification> + <notification name="CannotModifyProtectedCategories"> + Nie możesz zmienić chronionych kategorii. + </notification> + <notification name="CannotRemoveProtectedCategories"> + Nie możesz usunąć chronionych kategorii. + </notification> + <notification name="OfferedCard"> + [FIRST] [LAST] daje Ci swojÄ… wizytówkÄ™ + </notification> + <notification name="UnableToBuyWhileDownloading"> + Nie można kupować w trakcie Å‚adowania danych obiektu. +Spróbuj jeszcze raz. + </notification> + <notification name="UnableToLinkWhileDownloading"> + Nie można łączyć w trakcie Å‚adowania danych obiektu. +Spróbuj jeszcze raz. + </notification> + <notification name="CannotBuyObjectsFromDifferentOwners"> + Nie możesz jednoczeÅ›nie kupować obiektów od różnych osób. +Wybierz jeden obiekt. + </notification> + <notification name="ObjectNotForSale"> + Obiekt nie jest na sprzedaż. + </notification> + <notification name="EnteringGodMode"> + Włącznie trybu boskiego, poziom [LEVEL] + </notification> + <notification name="LeavingGodMode"> + Wyłączanie trybu boskiego, poziom [LEVEL] + </notification> + <notification name="CopyFailed"> + Kopiowanie siÄ™ nie powiodÅ‚o - nie masz pozwolenia + </notification> + <notification name="InventoryAccepted"> + Podarunek od Ciebie zostaÅ‚ przyjÄ™ty przez [NAME]. + </notification> + <notification name="InventoryDeclined"> + Podarunek od Ciebie zostaÅ‚ odrzucony przez [NAME]. + </notification> + <notification name="ObjectMessage"> + [NAME]: [MESSAGE] + </notification> + <notification name="CallingCardAccepted"> + Twoja wizytówka zostaÅ‚a przyjÄ™ta. + </notification> + <notification name="CallingCardDeclined"> + Twoja wizytówka zostaÅ‚a odrzucona. + </notification> + <notification name="TeleportToLandmark"> + JesteÅ› w Głównym Regionie i możesz siÄ™ stÄ…d teleportować do innych miejsc jak '[NAME]' wybierajÄ…c Moja Szafa w prawym dolnym rogu ekranu i wybierajÄ…c folder Miejsca (LM). +Kliknij dwa razy na miejsce (LM) i wybierz Teleportuj żeby tam siÄ™ przenieść. + </notification> + <notification name="TeleportToPerson"> + JesteÅ› w Głównym Regionie i możesz komunikować siÄ™ z innymi Rezydentami jak '[NAME]' wybierajÄ…c Moja Szafa w prawym dolnym rogu ekranu i wybierajÄ…c folder Wizytówki. +Kliknij dwa razy na wizytówce, wybierz WyÅ›lij IM i napisz wiadomość. + </notification> + <notification name="CantSelectLandFromMultipleRegions"> + Nie możesz przekraczać granic serwera wybierajÄ…c obszar. +Spróbuj wybrać mniejszy obszar. + </notification> + <notification name="SearchWordBanned"> + Pewne frazy podczas wyszukiwania zostaÅ‚y usuniÄ™te w zwiÄ…zku z restrykcjami zawartymi w Standardach SpoÅ‚ecznoÅ›ciowych (Community Standards). + </notification> + <notification name="NoContentToSearch"> + ProszÄ™ wybrać przynajmiej jeden z podanych rodzajów treÅ›ci jakÄ… zawiera region podczas wyszukiwania ('PG', 'Mature', lub 'Adult'). + </notification> + <notification name="GroupVote"> + [NAME] zaprasza do gÅ‚osowania nad propozycjÄ…: +[MESSAGE] + <form name="form"> + <button name="VoteNow" text="GÅ‚osuj Teraz"/> + <button name="Later" text="Później"/> + </form> + </notification> + <notification name="SystemMessage"> + [MESSAGE] + </notification> + <notification name="EventNotification"> + Zawiadomienie o Imprezie: + +[NAME] +[DATE] + <form name="form"> + <button name="Teleport" text="Teleportuj"/> + <button name="Description" text="Opis"/> + <button name="Cancel" text="Anuluj"/> + </form> + </notification> + <notification name="TransferObjectsHighlighted"> + Obiekty na tej posiadÅ‚oÅ›ci które zostanÄ… przekazane kupcowi tej posiadÅ‚oÅ›ci sÄ… teraz rozjaÅ›nione. + +* Drzewa i trawy które zostanÄ… przekazne nie sÄ… rozjaÅ›nione. + <form name="form"> + <button name="Done" text="Zastosuj"/> + </form> + </notification> + <notification name="DeactivatedGesturesTrigger"> + Zablokowane gesty z jednakowym aktywowaniem: +[NAMES] + </notification> + <notification name="NoQuickTime"> + WyglÄ…da na to, że QuickTime z Apple nie jest zainstalowany na Twoim komputerze. +Jeżeli chcesz odtwarzać media na tej posiadÅ‚oÅ›ci które używajÄ… QuickTime idź do http://www.apple.com/quicktime i zainstaluj odtwarzacz. + </notification> + <notification name="OwnedObjectsReturned"> + Twoje obiekty z wybranej posiadÅ‚oÅ›ci zostaÅ‚y zwrócone do Twojej Szafy. + </notification> + <notification name="OtherObjectsReturned"> + Obiekty należące do [FIRST] [LAST] na wybranej posiadÅ‚oÅ›ci zostaÅ‚y zwrócone do szafy tej osoby. + </notification> + <notification name="OtherObjectsReturned2"> + Obiekty z wybranej posiadÅ‚oÅ›ci należącej do Rezydenta '[NAME]' zostaÅ‚y zwrócone do ich wÅ‚aÅ›ciciela. + </notification> + <notification name="GroupObjectsReturned"> + Obiekty z wybranej posiadÅ‚oÅ›ci przypisane do grupy [GROUPNAME] zostaÅ‚y zwrócone do szafy ich wÅ‚aÅ›cicieli. +Przekazywalne obiekty przekazne grupie zostaÅ‚y zwrócone do ich poprzednich wÅ‚aÅ›cicieli. +Nieprzekazywalne obiekty przekazane grupie zostaÅ‚y usuniÄ™te. + </notification> + <notification name="UnOwnedObjectsReturned"> + Obiekty z wybranej posiadÅ‚oÅ›ci które nie należą do Ciebie zostaÅ‚y zwrócone do ich wÅ‚aÅ›cicieli. + </notification> + <notification name="NotSafe"> + Ta posiadÅ‚ość pozwala na uszkodzenia. +Możesz doznać tutaj urazu. Jeżeli zginiesz nastÄ…pi teleportacja do Twojego miejsca startu. + </notification> + <notification name="NoFly"> + Ta posiadÅ‚ość nie pozwala na latanie. +Nie możesz tutaj latać. + </notification> + <notification name="PushRestricted"> + Popychanie niedozwolone. +Nie możesz tutaj popychać innych, chyba, że jesteÅ› wÅ‚aÅ›cicielem tej posiadÅ‚oÅ›ci. + </notification> + <notification name="NoVoice"> + Ta posiadÅ‚ość nie pozwala na rozmowy. + </notification> + <notification name="NoBuild"> + Ta posiadÅ‚ość nie pozwala na budowanie. +Nie możesz tworzyć tutaj obiektów. + </notification> + <notification name="ScriptsStopped"> + Administrator czasowo zatrzymaÅ‚ skrypty w tym regionie. + </notification> + <notification name="ScriptsNotRunning"> + Å»adne skrypty nie dziaÅ‚ajÄ… w tym regionie. + </notification> + <notification name="NoOutsideScripts"> + Ta posiadÅ‚ość nie pozwala na zewnÄ™trzne skrypty. +Å»adne skrypty nie bÄ™dÄ… tutaj dziaÅ‚ać za wyjÄ…tkiem skryptów zleżących do wÅ‚aÅ›ciciela posiadÅ‚oÅ›ci. + </notification> + <notification name="ClaimPublicLand"> + Tylko publiczne posiadÅ‚oÅ›ci w tym regionie mogÄ… być przejÄ™te. + </notification> + <notification name="RegionTPAccessBlocked"> + Ze wzglÄ™du na Twój wiek, nie jesteÅ› uprawniony do przebywania w tym regionie. Możesz potrzebować weryfikacji wieku bÄ…dź instalacji najnowszej wersji klienta. + +Skorzystaj z Second Life:Pomoc by uzyskać wiÄ™cej informacji na temat dostÄ™pu do regionów z podanym rodzajem treÅ›ci jakÄ… zawiera. + </notification> + <notification name="URBannedFromRegion"> + ZostaÅ‚eÅ› zbanowany w regionie. + </notification> + <notification name="NoTeenGridAccess"> + Twoje konto nie może zostać połączone z podanym regionem Teen Grid. + </notification> + <notification name="NoHelpIslandTP"> + Brak możliwoÅ›ci ponownej teleportacji do Help Island. +Odwiedź 'Help Island Public' by powtórzyć szkolenie. + </notification> + <notification name="ImproperPaymentStatus"> + Nie posiadasz odpowiedniego statusu pÅ‚atniczego by uzyskać dostÄ™p do regionu. + </notification> + <notification name="MustGetAgeRgion"> + By odwiedzić ten region, Twoje konto musi zostać poddane weryfikacji wieku. + </notification> + <notification name="MustGetAgeParcel"> + By móc przebywać na tej posiadÅ‚oÅ›ci wymagana jest weryfikacja Twojego wieku. + </notification> + <notification name="NoDestRegion"> + Żądana lokalizacja regionu nie zostaÅ‚a odnaleziona. + </notification> + <notification name="NotAllowedInDest"> + Brak dostÄ™pu do podanej lokalizacji. + </notification> + <notification name="RegionParcelBan"> + Nie możesz przejść przez zamkniÄ™tÄ… posiadÅ‚ość. Spróbuj skorzystać z innej drogi. + </notification> + <notification name="TelehubRedirect"> + ZostaÅ‚eÅ› przeniesiony do teleportera. + </notification> + <notification name="CouldntTPCloser"> + Brak możliwoÅ›ci teleportacji do bliższej lokacji. + </notification> + <notification name="TPCancelled"> + Teleportacja anulowana. + </notification> + <notification name="FullRegionTryAgain"> + Region, który chcesz odwiedzić jest w tej chwili peÅ‚ny. +Spróbuj ponowanie za kilka minut. + </notification> + <notification name="GeneralFailure"> + Nieudana próba. + </notification> + <notification name="RoutedWrongRegion"> + WysÅ‚ano niewÅ‚aÅ›ciwe połączenie do regionu. ProszÄ™ spróbować ponownie. + </notification> + <notification name="NoValidAgentID"> + Nieważny identyfikator agenta. + </notification> + <notification name="NoValidSession"> + Nieważny identyfikator sesji. + </notification> + <notification name="NoValidCircuit"> + Nieważny obwód kodowania. + </notification> + <notification name="NoValidTimestamp"> + NiewÅ‚aÅ›ciwy czas zapisu. + </notification> + <notification name="NoPendingConnection"> + Brak możliwoÅ›ci wykonania połączenia. + </notification> + <notification name="InternalUsherError"> + Podczas teleportacji nastÄ…piÅ‚ błąd wewnÄ™trzny, który może być wynikiem problemów serwera. + </notification> + <notification name="NoGoodTPDestination"> + Brak lokalizacji punktu do teleportacji w podanym regionie. + </notification> + <notification name="InternalErrorRegionResolver"> + Podczas próby odnalezienia globalnych współrzÄ™dych dla żądanej teleportacji pojawiÅ‚ siÄ™ wewnÄ™trzny błąd. Może być to wynikiem problemów serwera. + </notification> + <notification name="NoValidLanding"> + Nieważny punkt lÄ…dowania. + </notification> + <notification name="NoValidParcel"> + Nieważana posiadÅ‚ość. + </notification> + <notification name="ObjectGiveItem"> + Obiekt [OBJECTFROMNAME] należący do [FIRST] [LAST] daÅ‚ Ci [OBJECTTYPE] [OBJECTNAME]. + <form name="form"> + <button name="Keep" text="Zachowaj"/> + <button name="Discard" text="Wyrzuć"/> + <button name="Mute" text="Wycisz"/> + </form> + </notification> + <notification name="ObjectGiveItemUnknownUser"> + Obiekt [OBJECTFROMNAME] należący do (wÅ‚aÅ›ciciel nieznany) daÅ‚ Ci [OBJECTTYPE] [OBJECTNAME]. + <form name="form"> + <button name="Keep" text="Zachowaj"/> + <button name="Discard" text="Wyrzuć"/> + <button name="Mute" text="Wycisz"/> + </form> + </notification> + <notification name="UserGiveItem"> + [NAME] daÅ‚ Ci [OBJECTTYPE] '[OBJECTNAME]'. + <form name="form"> + <button name="Keep" text="Zachowaj"/> + <button name="Discard" text="Wyrzuć"/> + <button name="Mute" text="Wycisz"/> + </form> + </notification> + <notification name="GodMessage"> + [NAME] +[MESSAGE] + </notification> + <notification name="JoinGroup"> + [MESSAGE] + <form name="form"> + <button name="Join" text="Zaakceptuj"/> + <button name="Decline" text="Odmów"/> + <button name="Info" text="Info"/> + </form> + </notification> + <notification name="TeleportOffered"> + [NAME] proponuje Ci teleportcjÄ™ do siebie: + +[MESSAGE] + <form name="form"> + <button name="Teleport" text="Teleportuj"/> + <button name="Cancel" text="Anuluj"/> + </form> + </notification> + <notification name="GotoURL"> + [MESSAGE] +[URL] + <form name="form"> + <button name="Later" text="Póżniej"/> + <button name="GoNow..." text="Teraz..."/> + </form> + </notification> + <notification name="OfferFriendship"> + [NAME] proponuje Ci znajomość. + +[MESSAGE] + +(Z zalożenia bÄ™dzie widzić swój status online.) + <form name="form"> + <button name="Accept" text="Zaakceptuj"/> + <button name="Decline" text="Odmów"/> + </form> + </notification> + <notification name="OfferFriendshipNoMessage"> + [NAME] proponuje Ci znajomość. + +(Z zalożenia bÄ™dzie widzić swój status online.) + <form name="form"> + <button name="Accept" text="Zaakceptuj"/> + <button name="Decline" text="Odmów"/> + </form> + </notification> + <notification name="FriendshipAccepted"> + Twoja propozycja znajomoÅ›ci zostaÅ‚a przyjÄ™ta przez [NAME]. + </notification> + <notification name="FriendshipDeclined"> + Twoja propozycja znajomoÅ›ci zostaÅ‚a odrzucona przez [NAME]. + </notification> + <notification name="OfferCallingCard"> + [FIRST] [LAST] daje Ci swojÄ… wizytówkÄ™. +Wizytówka w Twojej Szafie może być używana do komunikowania siÄ™ (IM) z tym Rezydentem. + <form name="form"> + <button name="Accept" text="Zaakceptuj"/> + <button name="Decline" text="Odmów"/> + </form> + </notification> + <notification name="RegionRestartMinutes"> + Restart regionu za [MINUTES] min. +NastÄ…pi wylogowanie jeżeli zostaniesz w tym regionie. + </notification> + <notification name="RegionRestartSeconds"> + Restart regionu za [MINUTES] sek. +NastÄ…pi wylogowanie jeżeli zostaniesz w tym regionie. + </notification> + <notification name="LoadWebPage"> + ZaÅ‚adować stronÄ™ [URL]? + +[MESSAGE] + +Obiekt: [OBJECTNAME], wÅ‚aÅ›ciciel: [NAME]? + <form name="form"> + <button name="Gotopage" text="ZaÅ‚aduj"/> + <button name="Cancel" text="Anuluj"/> + </form> + </notification> + <notification name="FailedToFindWearableUnnamed"> + [TYPE] - nie znaleziono w bazie danych. + </notification> + <notification name="FailedToFindWearable"> + [TYPE] [DESC] - nie znaleziono w bazie danych. + </notification> + <notification name="InvalidWearable"> + Obiekt, który chcesz zaÅ‚ożyć używa narzÄ™dzia nieobecnego w wersji klienta, którÄ… używasz. By go zaÅ‚ożyć Å›ciÄ…gnij najnowszÄ… wersjÄ™ klienta Second Life. + </notification> + <notification name="ScriptQuestion"> + '[OBJECTNAME]', wÅ‚aÅ›ciciel: '[NAME]', chciaÅ‚ by: + +[QUESTIONS] +Zgadzasz siÄ™? + <form name="form"> + <button name="Yes" text="Tak"/> + <button name="No" text="Nie"/> + <button name="Mute" text="Wycisz"/> + </form> + </notification> + <notification name="ScriptQuestionCaution"> + '[OBJECTNAME]', wÅ‚aÅ›ciciel: '[NAME]', chciaÅ‚ by: + +[QUESTIONS] +Jeżeli nie ufasz temu obiektowi lub jego twórcy - odmów. Wybierz Szczegóły żeby otrzymać wiÄ™cej informacji. + +Zgadzasz siÄ™? + <form name="form"> + <button name="Grant" text="Zaakceptuj"/> + <button name="Deny" text="Odmów"/> + <button name="Details" text="Szczegóły..."/> + </form> + </notification> + <notification name="ScriptDialog"> + [FIRST] [LAST]'s '[TITLE]' +[MESSAGE] + <form name="form"> + <button name="Ignore" text="Zignoruj"/> + </form> + </notification> + <notification name="ScriptDialogGroup"> + [GROUPNAME]'s '[TITLE]' +[MESSAGE] + <form name="form"> + <button name="Ignore" text="Zignoruj"/> + </form> + </notification> + <notification name="FirstBalanceIncrease"> + Przekazano Ci [AMOUNT]L$. +Obiekty i inni użytkownicy mogÄ… Ci dawać L$. +Twój balans jest wyÅ›wietlony w prawym górnym rogu ekranu. + </notification> + <notification name="FirstBalanceDecrease"> + Pobrano od Ciebie [AMOUNT]L$. +Twój balans jest wyÅ›wietlony w prawym górnym rogu ekranu. + </notification> + <notification name="FirstSit"> + Siedzisz. +Używaj strzaÅ‚ek (albo AWSD) żeby zmieniać widok. +NaciÅ›nij przycisk WstaÅ„ żeby sie podnieść. + </notification> + <notification name="FirstMap"> + Kliknij i przeciÄ…gnij by przsuwać mapÄ™. +Kliknij dwa razy żeby siÄ™ teleportować. +Używaj narzÄ™dzi po prawej stronie żeby znajdować i wyÅ›wietlać różne obiekty. + </notification> + <notification name="FirstBuild"> + Możesz budować nowe obiekty w niektórych miejscach. +Używaj narzÄ™dzi w lewym górnym rogu żeby budować, przyciskaj Ctrl lub Alt żeby szybko zmieniać narzÄ™dzia. +NaciÅ›nij Esc żeby skoÅ„czyć budować. + </notification> + <notification name="FirstLeftClickNoHit"> + Lewy klik żeby używać specjalnych obiektów. +Jeżeli strzaÅ‚ka zmieni siÄ™ na rÄ…czkÄ™ możesz używać tego obiektu. +Prawy klik zawsze pokazuje menu dostÄ™pnych operacji. + </notification> + <notification name="FirstTeleport"> + NastÄ…piÅ‚a teleportacja. +JesteÅ› przy Infohub najbliższej Twojego celu. +Twój cel jest zaznaczony wysokim czerwonym wskaźnikiem. + </notification> + <notification name="FirstOverrideKeys"> + Twoje sterujÄ…ce klawisze zostaÅ‚y przejÄ™te przez obiekt. +Użyj strzaÅ‚ek lub AWSD żeby sprawdzić ich dziaÅ‚anie. +Niektóre obiekty (np broÅ„) wymagajÄ… trybu panoramicznego. +Nacisnij 'M' żeby go wybrać. + </notification> + <notification name="FirstAppearance"> + Edytujesz swój wyglÄ…d. +Używaj strzaÅ‚ek do obracania i zbliżenia. +Po skoÅ„czeniu wybierz 'Zapisz Zmiany' +żeby zapisać Twój wyglÄ…d i wyjść. +Możesz edytować wyglÄ…d jak czÄ™sto chcesz. + </notification> + <notification name="FirstInventory"> + To jest Twoja Szafa, który zawiera obikty, notki, ubrania i inne Twoje rzeczy. +* Å»eby zaÅ‚ożyć obiekt lub strój (folder) przeciÄ…gnij go na siebie. +* Å»eby przenieść obiekt do Å›wiata przeciÄ…gnij go na grunt. +* Å»eby przeczytać notkÄ™ kliknij na niej dwa razy. + </notification> + <notification name="FirstSandbox"> + Ten region to piaskownica. +Obiekty które tu zbudujesz mogÄ… zostać usuniÄ™te jak opuÅ›cisz ten obszar - piaskownice sÄ… regularnie czyszczone, sprawdź informacje na górze ekranu obok nazwy regionu. + +Piaskownice spotyka siÄ™ rzadko i sÄ… zawsze oznakowane. + </notification> + <notification name="FirstFlexible"> + To jest elastyczny obiekt. +Obiekty elastyczne nie mogÄ… być fizyczne i muszÄ… być typu fantom. + </notification> + <notification name="FirstDebugMenus"> + Zaawansowane menu zostaÅ‚o włączone. +To menu zawiera funkcje użyteczne dla programistów analizujÄ…cych Secon Life. +To menu jest włączne przez Ctrl-Alt-D pod Windows. Mac używa Cmd-Opt-Shift-D. + </notification> + <notification name="FirstSculptedPrim"> + Edytujesz sculpt. +Skulpty wymagajÄ… specjalnych tekstur które definiujÄ… ich ksztaÅ‚t. +PrzykÅ‚ady tekstur znajdujÄ… siÄ™ w bibliotece szafy. + </notification> + <notification name="FirstMedia"> + Odtwarzasz media. Możesz wybrać automatyczne odtwarzanie w Ustawieniach pod Audio i Video. Odtwarzanie mediów w miejscach którym nie ufasz może być niebezpieczne. + </notification> + <notification name="MaxListSelectMessage"> + Maksymalnie możesz wybrać [MAX_SELECT] rzeczy +z tej listy. + </notification> + <notification name="VoiceInviteP2P"> + [NAME] zaprasza CiÄ™ do rozmowy gÅ‚osem. +Wybierz Zaakceptuj żeby rozmawiać albo Odmów żeby nie przyjąć zaproszenia. +Wybierz Wycisz żeby wyciszyć dzwoniÄ…cÄ… osobÄ™. + <form name="form"> + <button name="Accept" text="Zaakceptuj"/> + <button name="Decline" text="Odmów"/> + <button name="Mute" text="Wycisz"/> + </form> + </notification> + <notification name="AutoUnmuteByIM"> + Wiadomość (IM) zostaÅ‚a wysÅ‚ana do [FIRST] [LAST] i wyciszenie zostaÅ‚o automatycznie usuniÄ™te. + </notification> + <notification name="AutoUnmuteByMoney"> + PieniÄ…dze zostaÅ‚y przekazane do [FIRST] [LAST] i wyciszenie zostaÅ‚o automatycznie usuniÄ™te. + </notification> + <notification name="AutoUnmuteByInventory"> + Oferta z szafy dla [FIRST] [LAST] automatycznie usunęła wyciszenie. + </notification> + <notification name="VoiceInviteGroup"> + [NAME] zaczyna rozmowÄ™ z grupÄ… [GROUP]. +Wybierz Zaakceptuj żeby rozmawiać albo Odmów żeby nie przyjąć zaproszenia. +Wybierz Wycisz żeby wyciszyć dzwoniÄ…cÄ… osobÄ™. + <form name="form"> + <button name="Accept" text="Zaakceptuj"/> + <button name="Decline" text="Odmów"/> + <button name="Mute" text="Wycisz"/> + </form> + </notification> + <notification name="VoiceInviteAdHoc"> + [NAME] zaczyna konferencjÄ™ gÅ‚osem. +Wybierz Zaakceptuj żeby rozmawiać albo Odmów żeby nie przyjąć zaproszenia. +Wybierz Wycisz żeby wyciszyć dzwoniÄ…cÄ… osobÄ™. + <form name="form"> + <button name="Accept" text="Zaakceptuj"/> + <button name="Decline" text="Odmów"/> + <button name="Mute" text="Wycisz"/> + </form> + </notification> + <notification name="InviteAdHoc"> + [NAME] zaprasza CiÄ™ do konferencji poprzez Czat/IM. +Wybierz Zaakceptuj żeby zacząć czat albo Odmów żeby nie przyjąć zaproszenia. +Wybierz Wycisz żeby wyciszyć tÄ… osobÄ™. + <form name="form"> + <button name="Accept" text="Zaakceptuj"/> + <button name="Decline" text="Odmów"/> + <button name="Mute" text="Wycisz"/> + </form> + </notification> + <notification name="VoiceChannelFull"> + Rozmowa w której chcesz uczestniczyć, [VOICE_CHANNEL_NAME], nie akceptuje wiÄ™cej rozmówców. Spróbuj póżniej. + </notification> + <notification name="ProximalVoiceChannelFull"> + Przepraszamy. Limit rozmów zostaÅ‚ przekroczony w tym obszarze. Spróbuj w innym miejscu. + </notification> + <notification name="VoiceChannelDisconnected"> + [VOICE_CHANNEL_NAME] odłączyÅ‚ siÄ™. Przełączanie do rozmowy przestrzennej. + </notification> + <notification name="VoiceChannelDisconnectedP2P"> + [VOICE_CHANNEL_NAME] skoÅ„czyÅ‚ rozmowÄ™. Przełączanie do rozmowy przestrzennej. + </notification> + <notification name="P2PCallDeclined"> + [VOICE_CHANNEL_NAME] odmówiÅ‚ połączenia. Przełączanie do rozmowy przestrzennej. + </notification> + <notification name="P2PCallNoAnswer"> + [VOICE_CHANNEL_NAME] nie odpowiada. Przełączanie do rozmowy przestrzennej. + </notification> + <notification name="VoiceChannelJoinFailed"> + Brak połączenia z [VOICE_CHANNEL_NAME], spróbuj póżniej. Przełączanie do rozmowy przestrzennej. + </notification> + <notification name="VoiceLoginRetry"> + Tworzymy kanaÅ‚ gÅ‚osu dla Ciebie. Moze potrwać minutÄ™. + </notification> + <notification name="Cannot enter parcel: not a group member"> + Nie masz dostÄ™pu do posiadÅ‚oÅ›ci, nie należysz do wÅ‚aÅ›ciwej grupy. + </notification> + <notification name="Cannot enter parcel: banned"> + Masz wzbroniny dostÄ™p to tej posiadÅ‚oÅ›ci (ban). + </notification> + <notification name="Cannot enter parcel: not on access list"> + Nie masz dostÄ™pu do posiadÅ‚oÅ›ci, nie jesteÅ› na liÅ›cie dostÄ™pu. + </notification> + <notification name="VoiceNotAllowed"> + Nie masz pozwolenia na połączenie z rozmowÄ… [VOICE_CHANNEL_NAME]. + </notification> + <notification name="VoiceCallGenericError"> + Błąd podczas łączenia z rozmowÄ… [VOICE_CHANNEL_NAME]. Spróbuj póżniej. + </notification> + <notification name="ServerVersionChanged"> + Ten region używa innej wersji symulatora. Kliknij na tÄ… wiadomość żeby uzyskać wiÄ™cej informacji. + </notification> + <notification name="UnableToOpenCommandURL"> + Wybrany link nie daje siÄ™ otworzyć z tej przeglÄ…darki. + </notification> + <global name="UnsupportedCPU"> + - PrÄ™dkość Twojego CPU nie speÅ‚nia minimalnych wymagaÅ„. + </global> + <global name="UnsupportedGLRequirements"> + WyglÄ…da na to, że Twój system nie speÅ‚nia wymagaÅ„ sprzÄ™towych Second Life. Second Life wymaga karty graficznej kompatybilnej z OpenGL z multiteksturami. Jeżeli masz takÄ… kartÄ™ zainstaluj najnowsze sterowniki do niej i uaktualnienia systemu operacyjnego. + +Jeżeli wciąż masz problemy sprawdź: http://www.secondlife.com/support + </global> + <global name="UnsupportedCPUAmount"> + 796 + </global> + <global name="UnsupportedRAMAmount"> + 510 + </global> + <global name="UnsupportedGPU"> + - Twoja karta graficzna nie speÅ‚nia minimalnych wymagaÅ„. + </global> + <global name="UnsupportedRAM"> + - Pamięć Twojego systemu nie speÅ‚nia minimalnych wymagaÅ„. + </global> + <global name="PermYes"> + Tak + </global> + <global name="PermNo"> + Nie + </global> +</notifications> diff --git a/indra/newview/skins/default/xui/pl/panel_audio_device.xml b/indra/newview/skins/default/xui/pl/panel_audio_device.xml index a2383404fc082ade73b091d268ac3141828c2b00..ad30dfbacb473f623766979cb145988d083f56d1 100755 --- a/indra/newview/skins/default/xui/pl/panel_audio_device.xml +++ b/indra/newview/skins/default/xui/pl/panel_audio_device.xml @@ -13,7 +13,7 @@ Poziom WejÅ›cia </text> <text_editor type="string" length="1" name="voice_intro_text1"> - Użyj suwaka by dostosować jak gÅ‚osno CiÄ™ sÅ‚ychać dla innych Rezydentów. By przetestować poziom wejÅ›cia, zacznij mówić do mikrofonu. + Użyj suwaka by dostosować jak gÅ‚oÅ›no CiÄ™ sÅ‚ychać dla innych Rezydentów. By przetestować poziom wejÅ›cia, zacznij mówić do mikrofonu. </text_editor> <volume_slider name="mic_volume_slider" tool_tip="By zmienić poziom gÅ‚oÅ›noÅ›ci użyj suwaka" /> diff --git a/indra/newview/skins/default/xui/pl/panel_friends.xml b/indra/newview/skins/default/xui/pl/panel_friends.xml index d58aa897db1780e8789a91cd5a7f54193af6774b..b6df36f19952fc71aec5e779949ecc2dbe41d98b 100755 --- a/indra/newview/skins/default/xui/pl/panel_friends.xml +++ b/indra/newview/skins/default/xui/pl/panel_friends.xml @@ -12,7 +12,7 @@ <column name="icon_visible_map" tool_tip="Ta osoba może zlokalizować CiÄ™ na mapie" /> <column name="icon_edit_mine" - tool_tip="Ta osoba może edytować, usunąć lub wziąść Twoje obiekty" /> + tool_tip="Ta osoba może edytować, usunąć lub wziąć Twoje obiekty" /> <column name="icon_edit_theirs" tool_tip="Możesz edytować obiekty tej osoby" /> </scroll_list> <button label="Czat/IM" name="im_btn" tool_tip="Rozpocznij sesjÄ™ czatu/IM" /> diff --git a/indra/newview/skins/default/xui/pl/panel_group_general.xml b/indra/newview/skins/default/xui/pl/panel_group_general.xml index 34c02e07149e5d84e6519486123a5a0b846631fb..6f6d524cd969ddc154039df70606553f5abf76d3 100755 --- a/indra/newview/skins/default/xui/pl/panel_group_general.xml +++ b/indra/newview/skins/default/xui/pl/panel_group_general.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="Ogólne" name="general_tab"> <string name="help_text"> ZakÅ‚adka Ogólne zawiera informacje na temat tej grupy, @@ -8,8 +8,8 @@ ustawienia grupy oraz opcje czÅ‚onkostwa. <string name="group_info_unchanged"> Ogólne informacje na temat grupy ulegÅ‚y zmianie. </string> - <button label="?" label_selected="?" name="help_button" /> - <line_editor label="Wpisz nazwÄ™ grupy tutaj" name="group_name_editor" /> + <button label="?" label_selected="?" name="help_button"/> + <line_editor label="Wpisz nazwÄ™ grupy tutaj" name="group_name_editor"/> <text name="group_name"> Wpisz nazwÄ™ grupy tutaj </text> @@ -22,12 +22,12 @@ ustawienia grupy oraz opcje czÅ‚onkostwa. <text name="group_charter_label"> Status Grupy </text> - <texture_picker label="Insygnia Grupy" name="insignia" tool_tip="Kliknij by wybrać zdjÄ™cie" /> + <texture_picker label="Insygnia Grupy" name="insignia" tool_tip="Kliknij by wybrać zdjÄ™cie"/> <text_editor name="charter"> Status Grupy </text_editor> - <button label="Dośącz (L$0)" label_selected="Dołącz (L$0)" name="join_button" /> - <button label="Szczegóły" label_selected="Szczegóły" name="info_button" /> + <button label="Dołącz (L$0)" label_selected="Dołącz (L$0)" name="join_button"/> + <button label="Szczegóły" label_selected="Szczegóły" name="info_button"/> <text name="text_owners_and_visible_members"> WÅ‚aÅ›ciciele i widoczni czÅ‚onkowie </text> @@ -35,34 +35,37 @@ ustawienia grupy oraz opcje czÅ‚onkostwa. (WÅ‚aÅ›ciciele wyÅ›wietlajÄ… siÄ™ pogrubionÄ… czcionkÄ…) </text> <name_list name="visible_members"> - <column label="ImiÄ™" name="name" /> - <column label="TytuÅ‚" name="title" /> - <column label="Ostatnio w SL" name="online" /> + <column label="ImiÄ™" name="name"/> + <column label="TytuÅ‚" name="title"/> + <column label="Ostatnio w SL" name="online"/> </name_list> <text name="text_group_preferences"> Ustawienia Grupy </text> <panel name="preferences_container"> - <check_box label="WyÅ›wietlaj w wyszukiwarce" name="show_in_group_list" - tool_tip="UdostÄ™pnij info o grupie w wyszukiwarce" /> - <check_box label="Wolny WstÄ™p" name="open_enrollement" - tool_tip="Sprawdź czy grupa oferuje wolny wstÄ™p i nie wymaga zaproszenia." /> - <check_box label="OpÅ‚ata WstÄ™pu: L$" name="check_enrollment_fee" - tool_tip="Ustaw opÅ‚atÄ™ za przyłączenie siÄ™ do grupy." /> - <spinner name="spin_enrollment_fee" - tool_tip="Nowi czÅ‚onkowie grupy muszÄ… zapÅ‚acić wymaganÄ… opÅ‚atÄ™ by dołączyć do grupy." /> - + <check_box label="WyÅ›wietlaj w wyszukiwarce" name="show_in_group_list" tool_tip="UdostÄ™pnij info o grupie w wyszukiwarce"/> + <check_box label="Wolny WstÄ™p" name="open_enrollement" tool_tip="Sprawdź czy grupa oferuje wolny wstÄ™p i nie wymaga zaproszenia."/> + <check_box label="OpÅ‚ata WstÄ™pu: L$" name="check_enrollment_fee" tool_tip="Ustaw opÅ‚atÄ™ za przyłączenie siÄ™ do grupy."/> + <spinner name="spin_enrollment_fee" tool_tip="Nowi czÅ‚onkowie grupy muszÄ… zapÅ‚acić wymaganÄ… opÅ‚atÄ™ by dołączyć do grupy."/> + <combo_box name="group_mature_check" tool_tip="Wybierz jeżeli uważasz, iż Twoja grupa klasyfikowana jest jako 'Mature'."> + <combo_item name="select_mature"> + - Wybierz Treść - + </combo_item> + <combo_item name="mature"> + Treść 'Mature' + </combo_item> + <combo_item name="pg"> + Treść 'PG' + </combo_item> + </combo_box> <panel name="title_container"> <text name="active_title_label"> Mój Aktywny TytuÅ‚ </text> - <combo_box length="150" name="active_title" - tool_tip="Ustaw tytuÅ‚ który wyÅ›wietla siÄ™ kiedy grupa jest aktywna." /> + <combo_box length="150" name="active_title" tool_tip="Ustaw tytuÅ‚ który wyÅ›wietla siÄ™ kiedy grupa jest aktywna."/> </panel> - <check_box label="Otrzymuj grupowe ogÅ‚oszenia" name="receive_notices" - tool_tip="Zaznacz jeżeli chcesz otrzymywać ogÅ‚oszenia z tej grupy. Anuluj z zaznaczenia, jeżeli nie chcesz otrzymywać żadnych ogÅ‚oszeÅ„ z tej grupy." /> - <check_box label="WyÅ›wietl grupÄ™ w profilu" name="list_groups_in_profile" - tool_tip="Zaznacz jeżeli chcesz by grupa wyÅ›wietlaÅ‚a siÄ™ w Twoim profilu" /> + <check_box label="Otrzymuj grupowe ogÅ‚oszenia" name="receive_notices" tool_tip="Zaznacz jeżeli chcesz otrzymywać ogÅ‚oszenia z tej grupy. Anuluj z zaznaczenia, jeżeli nie chcesz otrzymywać żadnych ogÅ‚oszeÅ„ z tej grupy."/> + <check_box label="WyÅ›wietl grupÄ™ w profilu" name="list_groups_in_profile" tool_tip="Zaznacz jeżeli chcesz by grupa wyÅ›wietlaÅ‚a siÄ™ w Twoim profilu"/> </panel> <string name="incomplete_member_data_str"> Wyszukiwanie informacji o czÅ‚onku @@ -70,6 +73,6 @@ ustawienia grupy oraz opcje czÅ‚onkostwa. <string name="confirm_group_create_str"> Koszt utworzenia tej grupy wynosi L$100. Czy napewno jesteÅ› PEWNY,że chcesz zapÅ‚acić L$100 by utworzyć grupÄ™? -PamiÄ™taj, jeżeli w ciÄ…gu 48h od utworzenia grupy nikt do niej nie dołączy, informacje o grupie zostanÄ… usuniÄ™te z bazy, a nazwa grupy zablokowana do użycia w przyszÅ›oÅ›ci. +PamiÄ™taj, jeżeli w ciÄ…gu 48h od utworzenia grupy nikt do niej nie dołączy, informacje o grupie zostanÄ… usuniÄ™te z bazy, a nazwa grupy zablokowana do użycia w przyszÅ‚oÅ›ci. </string> </panel> diff --git a/indra/newview/skins/default/xui/pl/panel_group_invite.xml b/indra/newview/skins/default/xui/pl/panel_group_invite.xml index ef5628d8d38e4834f163c9ef8be53e65fa2365a0..12d48279ada05a1a6e6dd287ff6aa4087d1846ca 100755 --- a/indra/newview/skins/default/xui/pl/panel_group_invite.xml +++ b/indra/newview/skins/default/xui/pl/panel_group_invite.xml @@ -1,9 +1,11 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <panel label="Zaproszenie do Grupy" name="invite_panel"> <text name="help_text"> - ZaproÅ› Rezydentów do Grupy + Możesz zaprosić kilku Rezydentów +do swojej grupy. Wybierz 'Otwórz +Katalog Osobisty' by rozpocząć. </text> - <button label="Otwórz Osobisty Katalog" name="add_button" tool_tip="" /> + <button label="Otwórz Katalog Osobisty" name="add_button" tool_tip=""/> <name_list name="invitee_list" tool_tip="" /> <button label="UsuÅ„ z Listy" name="remove_button" tool_tip="" /> <text name="role_text"> @@ -13,7 +15,7 @@ <button label="WyÅ›lij Zaproszenia" name="ok_button" /> <button label="Anuluj" name="cancel_button" /> <string name="confirm_invite_owner_str"> - JesteÅ› pewny, że chcesz wybrać nowych wÅ‚aÅ›ccieli grupy? Ta decyzja jest ostateczna! + JesteÅ› pewny, że chcesz wybrać nowych wÅ‚aÅ›cieli grupy? Ta decyzja jest ostateczna! </string> <string name="loading"> (loading...) diff --git a/indra/newview/skins/default/xui/pl/panel_group_land_money.xml b/indra/newview/skins/default/xui/pl/panel_group_land_money.xml index 98660b3f6e11853f67cccb59636046db25a4fd21..5080b0963a237f4ce8e2b7e187602ee93373e2bc 100755 --- a/indra/newview/skins/default/xui/pl/panel_group_land_money.xml +++ b/indra/newview/skins/default/xui/pl/panel_group_land_money.xml @@ -1,13 +1,9 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="PosiadÅ‚oÅ›ci i L$" name="land_money_tab"> <string name="help_text"> - PosiadÅ‚oÅ›ci należące go Grupy sÄ… wymienione z danymi -o kontrybucjach. Ostrzeżenie pojawia siÄ™ w momencie -kiedy używa siÄ™ mniej PosiadÅ‚oÅ›ci od Kontrybucji. -ZakÅ‚adki Szczegóły i Sprzedaż zawierajÄ… -informacje o finansach Grupy. + PosiadÅ‚oÅ›ci, które sÄ… wÅ‚asnoÅ›ciÄ… grupy zawierajÄ… dane poszczególnych kontrybucji ich czÅ‚onków. W przypadku kiedy caÅ‚kowita ilość metrów przypisanej danej posiadÅ‚oÅ›ci przez grupÄ™ jest mniejsza lub równa caÅ‚kowitej liczbie kontrybucji dla przypisanej iloÅ›ci metrów pojawia siÄ™ ostrzeżenie. ZakÅ‚adki: Planowanie, Szczegóły oraz Sprzedaże udostÄ™pniajÄ… informacje na temat statusu finansowego grupy. </string> - <button label="?" name="help_button" /> + <button label="?" name="help_button"/> <string name="cant_view_group_land_text"> Nie masz pozwolenia na oglÄ…danie PosiadÅ‚oÅ›ci Grupy. </string> @@ -21,12 +17,13 @@ informacje o finansach Grupy. PosiadÅ‚oÅ›ci Grupy </text> <scroll_list name="group_parcel_list"> - <column label="Nazwa PosiadÅ‚oÅ›ci" name="name" /> - <column label="Region" name="location" /> - <column label="Obszar" name="area" /> - <column label="" name="hidden" /> + <column label="PosiadÅ‚oÅ›ci" name="name"/> + <column label="Region" name="location"/> + <column label="Typ" name="type"/> + <column label="Obszar" name="area"/> + <column label="" name="hidden"/> </scroll_list> - <button label="Pokaż na Mapie" label_selected="Pokaż na Mapie" name="map_button" /> + <button label="Pokaż na Mapie" label_selected="Pokaż na Mapie" name="map_button"/> <text name="total_contributed_land_label"> Kontrybucje: </text> @@ -70,19 +67,15 @@ informacje o finansach Grupy. <text_editor name="group_money_details_text"> Obliczanie... </text_editor> - <button label="< WczeÅ›niej" label_selected="< WczeÅ›niej" - name="earlier_details_button" tool_tip="Do tyÅ‚u w czasie" /> - <button label="Później >" label_selected="Później >" - name="later_details_button" tool_tip="Do przodu w czasie" /> + <button label="< WczeÅ›niej" label_selected="< WczeÅ›niej" name="earlier_details_button" tool_tip="Do tyÅ‚u w czasie"/> + <button label="Później >" label_selected="Później >" name="later_details_button" tool_tip="Do przodu w czasie"/> </panel> <panel label="Sprzedaż" name="group_money_sales_tab"> <text_editor name="group_money_sales_text"> Obliczanie... </text_editor> - <button label="< WczeÅ›niej" label_selected="< WczeÅ›niej" - name="earlier_sales_button" tool_tip="Do tyÅ‚u w czasie" /> - <button label="Później >" label_selected="Później >" - name="later_sales_button" tool_tip="Do przodu w czasie" /> + <button label="< WczeÅ›niej" label_selected="< WczeÅ›niej" name="earlier_sales_button" tool_tip="Do tyÅ‚u w czasie"/> + <button label="Później >" label_selected="Później >" name="later_sales_button" tool_tip="Do przodu w czasie"/> </panel> </tab_container> </panel> diff --git a/indra/newview/skins/default/xui/pl/panel_group_roles.xml b/indra/newview/skins/default/xui/pl/panel_group_roles.xml index 9c2a23b8ea05d43e7d8a42129ceb90c3ceb0274f..ccef8870d23b99183160a44066c774f3427df24b 100755 --- a/indra/newview/skins/default/xui/pl/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/pl/panel_group_roles.xml @@ -51,7 +51,7 @@ Przywilejem. <column label="Kontrybucje" name="donated" /> <column label="Ostatnio w SL" name="online" /> </name_list> - <button label="ZaproÅ› NowÄ… OsobÄ™..." name="member_invite" /> + <button label="ZaproÅ› NowÄ… OsobÄ™..." name="member_invite"/> <button label="UsuÅ„ z Grupy" name="member_eject" /> <string name="help_text"> Możesz dodawać i usuwać Funkcje przypisane do CzÅ‚onków. @@ -79,7 +79,7 @@ Możesz wybrać wielu CzÅ‚onków naciskajÄ…c Ctrl i klikajÄ…c na ich imionach. <panel label="Przywileje" name="actions_sub_tab"> <button label="Szukaj" name="search_button" /> <button label="Wszystko" name="show_all_button" /> - <scroll_list name="action_list" tool_tip="Select an Ability to view more details."> + <scroll_list name="action_list" tool_tip="Zaznacz aby zobaczyć wiÄ™cej informacji."> <column label="" name="icon" /> <column label="" name="action" /> </scroll_list> diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_chat.xml b/indra/newview/skins/default/xui/pl/panel_preferences_chat.xml index 7bad6dd281bc7a800c0b69842d1f8253eef6a2b4..67252f6fd28ee52d155c4130376ed24d419e1b47 100755 --- a/indra/newview/skins/default/xui/pl/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/pl/panel_preferences_chat.xml @@ -4,15 +4,9 @@ Rozmiar Czcionki Czatu: </text> <radio_group name="chat_font_size"> - <radio_item type="string" length="1" name="radio"> - MaÅ‚a - </radio_item> - <radio_item type="string" length="1" name="radio2"> - Åšrednia - </radio_item> - <radio_item type="string" length="1" name="radio3"> - Duża - </radio_item> + <radio_item type="string" length="1" name="radio" label="MaÅ‚a" /> + <radio_item type="string" length="1" name="radio2" label="Åšrednia" /> + <radio_item type="string" length="1" name="radio3" label="Duża" /> </radio_group> <text type="string" length="1" name="text_box2"> Kolor Czatu: @@ -23,7 +17,7 @@ <color_swatch label="System" name="system" /> <color_swatch label="Błędy" name="script_error" /> <color_swatch label="Obiekty" name="objects" /> - <color_swatch label="Szef" name="owner" /> + <color_swatch label="WÅ‚aÅ›ciciel" name="owner" /> <color_swatch label="Chmurka" name="background" /> <color_swatch label="Linki" name="links" /> <text type="string" length="1" name="text_box8"> @@ -40,7 +34,7 @@ <text type="string" length="1" name="text_box5"> (linii) </text> - <slider label="Przezroczystość" name="console_opacity" /> + <slider label="Przeźroczystość" name="console_opacity" /> <check_box label="Używaj peÅ‚nej szerokość ekranu (restart wymagany)" name="chat_full_width_check" /> <text type="string" length="1" name="text_box6"> Ustawienia Czatu: @@ -53,5 +47,5 @@ Czat z Chmurkami: </text> <check_box label="Pokazuj chmurki w czacie" name="bubble_text_chat" /> - <slider label="Przezroczystość" name="bubble_chat_opacity" /> + <slider label="Przeźroczystość" name="bubble_chat_opacity" /> </panel> diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_general.xml b/indra/newview/skins/default/xui/pl/panel_preferences_general.xml index f120af9aafb7ca57982c4234ba658e3854fee24f..1199f0622f37fff38509b8c9aef22d00ce138656 100755 --- a/indra/newview/skins/default/xui/pl/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/pl/panel_preferences_general.xml @@ -8,11 +8,17 @@ Ostatnie Miejsce </radio_item> </radio_group> - <check_box label="Pokaż Miejsce Startu na Ekranie Logowania" name="show_location_checkbox"/> + <check_box label="Pokaż Miejsce Startu podczas Logowania" name="show_location_checkbox"/> <combo_box name="fade_out_combobox"> - <combo_box.item name="Never" label="Nigdy" /> - <combo_box.item name="Show Temporarily" label="Tymczasowo" /> - <combo_box.item name="Always" label="Zawsze" /> + <combo_item name="Never"> + Nigdy + </combo_item> + <combo_item name="Show Temporarily"> + Tymczasowo + </combo_item> + <combo_item name="Always"> + Zawsze + </combo_item> </combo_box> <check_box label="Używaj MaÅ‚ych Imion Awatarów" name="small_avatar_names_checkbox"/> <check_box label="Nie WyÅ›wietlaj Mojego Imienia" name="show_my_name_checkbox"/> @@ -28,10 +34,28 @@ <slider name="ui_scale_slider"/> <check_box label="Używaj Skali Nizależnej od RozdzielczoÅ›ci" name="ui_auto_scale"/> <spinner label="Zasypiaj w:" name="afk_timeout_spinner"/> - <check_box label="Obracaj Mini-MapÄ™" name="rotate_mini_map_checkbox"/> <check_box label="Powiadamiaj o Wydatkach i Zarobkach (L$)" name="notify_money_change_checkbox"/> - <check_box label="Używaj DomyÅ›lnej Selekcji Koloru" name="use_system_color_picker_checkbox" tool_tip="Używaj domyÅ›lnej / systemowej selekcji koloru"/> - <check_box label="Pokaż WyszukiwarkÄ™" name="show_search_panel" tool_tip="Pokaż wbudowanÄ… wyszukiwarkÄ™"/> + <text name="maturity_desired_label" bottom="-312"> + Treść: + </text> + <text name="maturity_desired_prompt" bottom="-312"> + ChcÄ™ uzyskać dostÄ™p do +miejsc zakwalifikowanych jako: + </text> + <combo_box name="maturity_desired_combobox" bottom="-330" left="322" width="162" > + <combo_item name="Desired_Adult"> + 'PG', 'Mature' oraz 'Adult' + </combo_item> + <combo_item name="Desired_Mature"> + 'PG' i 'Mature' + </combo_item> + <combo_item name="Desired_PG"> + tylko 'PG' + </combo_item> + </combo_box> + <text name="maturity_desired_textbox" bottom="-324" left="322"> + tylko 'PG' + </text> <text length="1" name="start_location_textbox" type="string"> Miejsce Startu: </text> @@ -57,21 +81,68 @@ <Wpisz Region> </string> <combo_box name="crash_behavior_combobox"> - <combo_box.item length="1" name="Askbeforesending" type="string" label="Pytaj przed wysÅ‚aniem" /> - <combo_box.item length="1" name="Alwayssend" type="string" label="Zawsze wysyÅ‚aj" /> - <combo_box.item length="1" name="Neversend" type="string" label="Nigdy nie wysyÅ‚aj" /> + <combo_item length="1" name="Askbeforesending" type="string"> + Pytaj przed wysÅ‚aniem + </combo_item> + <combo_item length="1" name="Alwayssend" type="string"> + Zawsze wysyÅ‚aj + </combo_item> + <combo_item length="1" name="Neversend" type="string"> + Nigdy nie wysyÅ‚aj + </combo_item> </combo_box> <combo_box name="language_combobox"> - <combo_box.item length="1" name="System Default Language" type="string" label="DomyÅ›lny" /> - <combo_box.item length="1" name="English" type="string" label="English (Angielski)" /> - <combo_box.item length="1" name="Chinese" type="string" label="䏿–‡ (简体) (ChiÅ„ski) - Beta" /> - <combo_box.item length="1" name="Deutsch(German)" type="string" label="Deutsch (Niemiecki) - Beta" /> - <combo_box.item length="1" name="French" type="string" label="Français (Francuski) - Beta" /> - <combo_box.item length="1" name="(Japanese)" type="string" label="日本語 (JapoÅ„ski) - Beta" /> - <combo_box.item length="1" name="(Korean)" type="string" label="한êµì–´ (KoreaÅ„ski) - Beta" /> - <combo_box.item length="1" name="Polish" type="string" label="Polski - Beta" /> - <combo_box.item length="1" name="Portugese" type="string" label="Portugués (Portugalski) - Beta" /> - <combo_box.item length="1" name="Spanish" type="string" label="Español (HiszpaÅ„ski) - Beta" /> + <combo_item length="1" name="System Default Language" type="string"> + DomyÅ›lny + </combo_item> + <combo_item length="1" name="English" type="string"> + English (Angielski) + </combo_item> + <combo_item name="Danish"> + Dansk (DuÅ„ski) - Beta + </combo_item> + <combo_item length="1" name="Deutsch(German)" type="string"> + Deutsch (Niemiecki) - Beta + </combo_item> + <combo_item length="1" name="Spanish" type="string"> + Español (HiszpaÅ„ski) - Beta + </combo_item> + <combo_item length="1" name="French" type="string"> + Français (Francuski) - Beta + </combo_item> + <combo_item name="Italian"> + Italiano (WÅ‚oski) - Beta + </combo_item> + <combo_item name="Hungarian"> + Magyar (WÄ™gierski) - Beta + </combo_item> + <combo_item name="Dutch"> + Nederlands (Niderlandzki) - Beta + </combo_item> + <combo_item length="1" name="Polish" type="string"> + Polski - Beta + </combo_item> + <combo_item length="1" name="Portugese" type="string"> + Portugués (Portugalski) - Beta + </combo_item> + <combo_item name="Russian"> + РуÑÑкий (Rosyjski) - Beta + </combo_item> + <combo_item name="Turkish"> + Türkçe (Turecki) - Beta + </combo_item> + <combo_item name="Ukrainian"> + УкраїнÑька (UkraiÅ„ski) - Beta + </combo_item> + <combo_item length="1" name="Chinese" type="string"> + 䏿–‡ (简体) (ChiÅ„ski) - Beta + </combo_item> + <combo_item length="1" name="(Japanese)" type="string"> + 日本語 (JapoÅ„ski) - Beta + </combo_item> + <combo_item length="1" name="(Korean)" type="string"> + 한êµì–´ (KoreaÅ„ski) - Beta + </combo_item> </combo_box> <check_box label="JÄ™zyk znany publicznie" name="language_is_public" tool_tip="Pozwala obiektom w Å›wiecie poznać Twój wybór jÄ™zyk."/> </panel> diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/pl/panel_preferences_graphics1.xml index c14d14f2abc463491318ff88eefb2ea2d79f6692..d59e6dbaf0466647991da673dcf080f9b734817d 100755 --- a/indra/newview/skins/default/xui/pl/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/pl/panel_preferences_graphics1.xml @@ -69,23 +69,15 @@ Ustawienia Odbić: </text> <radio_group name="ReflectionDetailRadio"> - <radio_item type="string" length="1" name="0"> - Teren i Drzewa - </radio_item> - <radio_item type="string" length="1" name="1"> - Obiekty Statyczne - </radio_item> - <radio_item type="string" length="1" name="2"> - Awatary i Obiekty - </radio_item> - <radio_item type="string" length="1" name="3"> - Wszystko - </radio_item> + <radio_item type="string" length="1" name="0" label="Teren i Drzewa" /> + <radio_item type="string" length="1" name="1" label="Obiekty Statyczne" /> + <radio_item type="string" length="1" name="2" label="Awatary i Obiekty" /> + <radio_item type="string" length="1" name="3" label="Wszystko" /> </radio_group> <text type="string" length="1" name="AvatarRenderingText"> Prezentacja Awatarów: </text> - <check_box label="FaÅ‚szywe Awatary" name="AvatarImpostors" /> + <check_box label="Impostoryzacja Awatarowa" name="AvatarImpostors" /> <check_box label="Skinning" name="AvatarVertexProgram" /> <check_box label="Ubranie Awatarów" name="AvatarCloth" /> <text type="string" length="1" name="DrawDistanceMeterText1"> @@ -131,23 +123,15 @@ Ustawienia ÅšwiatÅ‚a: </text> <radio_group name="LightingDetailRadio"> - <radio_item type="string" length="1" name="SunMoon"> - Tylko SÅ‚oÅ„ce i Księżyc - </radio_item> - <radio_item type="string" length="1" name="LocalLights"> - Tylko Bliskie ÅšwiatÅ‚a - </radio_item> + <radio_item type="string" length="1" name="SunMoon" label="Tylko SÅ‚oÅ„ce i Księżyc" /> + <radio_item type="string" length="1" name="LocalLights" label="Tylko Bliskie ÅšwiatÅ‚a" /> </radio_group> <text type="string" length="1" name="TerrainDetailText"> Szczgóły Terenu: </text> <radio_group name="TerrainDetailRadio"> - <radio_item type="string" length="1" name="0"> - MaÅ‚o - </radio_item> - <radio_item type="string" length="1" name="2"> - Dużo - </radio_item> + <radio_item type="string" length="1" name="0" label="MaÅ‚o" /> + <radio_item type="string" length="1" name="2" label="Dużo" /> </radio_group> <button label="Ustawienia DomyÅ›lne" name="Defaults" /> <button label="Ustawnia SprzÄ™towe" label_selected="Ustawienia SprzÄ™towe" diff --git a/indra/newview/skins/default/xui/pl/panel_region_covenant.xml b/indra/newview/skins/default/xui/pl/panel_region_covenant.xml index 21611ed6c0c177ea4bc33beedadd09ba9406ca2c..f20387dd25db8558652cd2fb4b2fb0d4de4a2d3c 100755 --- a/indra/newview/skins/default/xui/pl/panel_region_covenant.xml +++ b/indra/newview/skins/default/xui/pl/panel_region_covenant.xml @@ -1,39 +1,72 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Umowa" name="Covenant"> - <text name="covenant_help_text"> - Zmiany w Umowie odnoszÄ… siÄ™ do wszystkich PosiadÅ‚oÅ›ci w MajÄ…tku. - </text> - <text name="region_name_lbl"> - Region: - </text> - <text name="region_name_text"> - (bark danych) + <text name="estate_section_lbl"> + MajÄ…tek: </text> <text name="estate_name_lbl"> - MajÄ…tek: + Nazwa: </text> <text name="estate_name_text"> - (brak danych) + mainland </text> <text name="estate_owner_lbl"> - WÅ‚aÅ›ciciel MajÄ…tku: + WÅ‚aÅ›ciciel: </text> <text name="estate_owner_text"> - (brak danych) + (żaden) </text> - <text name="resellable_clause"> - PosiadÅ‚oÅ›ci kupione w tym Regionie mogÄ… lub nie być odsprzedawane. + <text name="estate_cov_lbl"> + Umowa: </text> - <text name="changeable_clause"> - PosiadÅ‚oÅ›ci kupione w tym Regionie mogÄ… lub nie być łączone lub dzielone. - </text> - <text name="covenent_instructions"> - PrzeciÄ…gnij i upuść notkÄ™ żeby zmienić UmowÄ™ dla tego MajÄ…tku. + <text name="covenant_timestamp_text"> + Ostatnia Modyfikacja Wed Dec 31 16:00:00 1969 </text> + <button label="?" name="covenant_help"/> <text_editor name="covenant_editor"> - Åadowanie... + Brak umowy dla tego majÄ…tku. </text_editor> - <button label="Wyresetuj" name="reset_covenant" /> + <button label="Wyresetuj" name="reset_covenant"/> + <text name="covenant_help_text" bottom_delta="-6"> + Zmiany w umowie zostanÄ… wyÅ›wietlone we +wszystkich posiadÅ‚oÅ›ciach majÄ…tku. + </text> + <text name="covenant_instructions" bottom_delta="-36"> + PrzeciÄ…gnij oraz wrzuć notÄ™ by zmienić umowÄ™ dla tego majÄ…tku. + </text> + <text name="region_section_lbl"> + Region: + </text> + <text name="region_name_lbl"> + Nazwa: + </text> + <text name="region_name_text" left="115"> + leyla + </text> + <text name="region_landtype_lbl"> + Typ: + </text> + <text name="region_landtype_text" left="115"> + Region Główny / Ziemia + </text> + <text name="region_maturity_lbl"> + Rodzaj: + </text> + <text name="region_maturity_text" left="115"> + 'Adult' + </text> + <text name="resellable_lbl"> + Odsprzedaj: + </text> + <text name="resellable_clause" left="115" width="350"> + PosiadÅ‚ość zakupiona w tym regionie nie może być odsprzedana. + </text> + <text name="changeable_lbl"> + Podziel: + </text> + <text name="changeable_clause" left="115" width="350"> + PosiadÅ‚ość zakupiona w tym regionie nie może być +łączona/dzielona. + </text> <string name="can_resell"> PosiadÅ‚oÅ›ci kupione w tym Regionie mogÄ… być odsprzedane. </string> @@ -44,7 +77,7 @@ PosiadÅ‚oÅ›ci kupione w tym Regionie mogÄ… być łączone i dzielone. </string> <string name="can_not_change"> - PosiadÅ‚oÅ›ci kupione w tym Regionie nie mogÄ… być łączone i dzielone. + PosiadÅ‚oÅ›ci kupione w tym Regionie nie mogÄ… być łączone i +dzielone. </string> - <button label="?" name="covenant_help" /> </panel> diff --git a/indra/newview/skins/default/xui/pl/panel_region_general.xml b/indra/newview/skins/default/xui/pl/panel_region_general.xml index 009d1aa645cc4104a63cc3517edb2efb7abaac22..36cff9c2d00547e54c368d5d4a6923f156d0e10d 100755 --- a/indra/newview/skins/default/xui/pl/panel_region_general.xml +++ b/indra/newview/skins/default/xui/pl/panel_region_general.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="Region" name="General"> <text name="region_text_lbl"> Region: @@ -12,35 +12,48 @@ <text name="version_channel_text"> brak danych </text> - <check_box label="Zablokuj Zmiany Terenu" name="block_terraform_check" /> - <button label="?" name="terraform_help" /> - <check_box label="Zablokuj Latanie" name="block_fly_check" /> - <button label="?" name="fly_help" /> - <check_box label="Uszkodzenia Dozwolone" name="allow_damage_check" /> - <button label="?" name="damage_help" /> - <check_box label="Zablokuj Popychanie" name="restrict_pushobject" /> - <button label="?" name="restrict_pushobject_help" /> - <check_box label="Odsprzedaż Dozwolona" name="allow_land_resell_check" /> - <button label="?" name="land_resell_help" /> - <check_box label="ÅÄ…czenie/Dzielenie Dozwolone" name="allow_parcel_changes_check" /> - <button label="?" name="parcel_changes_help" /> - <check_box label="Zablokuj Wyszukiwanie" name="block_parcel_search_check" - tool_tip="Pozwól na wyÅ›wietlanie nazwy regionu i posiadÅ‚oÅ›ci w wynikach wyszukiwania" /> - <button label="?" name="parcel_search_help" /> - <spinner label="Limit GoÅ›ci" name="agent_limit_spin" /> - <button label="?" name="agent_limit_help" /> - <spinner label="Ekstra Obiekty" name="object_bonus_spin" /> - <button label="?" name="object_bonus_help" /> + <text name="region_type_lbl"> + Typ: + </text> + <text name="region_type"> + nieznany + </text> + <check_box label="Zablokuj Zmiany Terenu" name="block_terraform_check"/> + <button label="?" name="terraform_help"/> + <check_box label="Zablokuj Latanie" name="block_fly_check"/> + <button label="?" name="fly_help"/> + <check_box label="Uszkodzenia Dozwolone" name="allow_damage_check"/> + <button label="?" name="damage_help"/> + <check_box label="Zablokuj Popychanie" name="restrict_pushobject"/> + <button label="?" name="restrict_pushobject_help"/> + <check_box label="Odsprzedaż Dozwolona" name="allow_land_resell_check"/> + <button label="?" name="land_resell_help"/> + <check_box label="ÅÄ…czenie/Dzielenie Dozwolone" name="allow_parcel_changes_check"/> + <button label="?" name="parcel_changes_help"/> + <check_box label="Zablokuj Wyszukiwanie" name="block_parcel_search_check" tool_tip="Pozwól na wyÅ›wietlanie nazwy regionu i posiadÅ‚oÅ›ci w wynikach wyszukiwania"/> + <button label="?" name="parcel_search_help"/> + <spinner label="Limit GoÅ›ci" name="agent_limit_spin"/> + <button label="?" name="agent_limit_help"/> + <spinner label="Ekstra Obiekty" name="object_bonus_spin"/> + <button label="?" name="object_bonus_help"/> <text label="Ograniczenia Wieku" name="access_text"> - Dozwolony: + Rodzaj: </text> - - - - <button label="?" name="access_help" /> - <button label="Zastosuj" name="apply_btn" /> - <button label="Wyrzuć Awatara..." name="kick_btn" /> - <button label="Wyrzuć Wszystkich..." name="kick_all_btn" /> - <button label="WyÅ›lij Wiadomość do Regionu..." name="im_btn" /> - <button label="ObsÅ‚uga Teleportera..." name="manage_telehub_btn" /> + <combo_box label="'Mature'" name="access_combo"> + <combo_item name="Adult"> + 'Adult' + </combo_item> + <combo_item name="Mature"> + 'Mature' + </combo_item> + <combo_item name="PG"> + 'PG' + </combo_item> + </combo_box> + <button label="?" name="access_help"/> + <button label="Zastosuj" name="apply_btn"/> + <button label="Wyrzuć Awatara..." name="kick_btn"/> + <button label="Wyrzuć Wszystkich..." name="kick_all_btn"/> + <button label="WyÅ›lij Wiadomość do Regionu..." name="im_btn"/> + <button label="ObsÅ‚uga Teleportera..." name="manage_telehub_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/pl/panel_status_bar.xml b/indra/newview/skins/default/xui/pl/panel_status_bar.xml index 7c6c7ab90fc3a295f003461e9c4df71661621bd6..bdf22fa66d7386b6f6749508739996a2082b6da1 100755 --- a/indra/newview/skins/default/xui/pl/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/pl/panel_status_bar.xml @@ -1,8 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <panel name="status"> - <text type="string" length="1" name="ParcelNameText" - tool_tip="Nazwa posiadÅ‚oÅ›ci w której siÄ™ znajdujesz. Po wiÄ™cej informacji kliknij O PosiadÅ‚oÅ›ci."> - nazwa posiadÅ‚oÅ›ci + <text type="string" length="1" name="ParcelNameText" tool_tip="Nazwa posiadÅ‚oÅ›ci w której siÄ™ znajdujesz. Po wiÄ™cej informacji kliknij O PosiadÅ‚oÅ›ci."> + Nazwa PosiadÅ‚oÅ›ci </text> <text type="string" length="1" name="BalanceText" tool_tip="Stan Konta"> Åadowanie... @@ -15,25 +14,22 @@ Niedziela:PoniedziaÅ‚ek:Wtorek:Åšroda:Czwartek:PiÄ…tek:Sobota </string> <string name="StatBarMonthsOfYear"> - StyczeÅ„:Luty:Marzec:KwiecieÅ„:Maj:Czerwiec:Lipiec:SerpieÅ„:WrzesieÅ„:Październik:Listopad:GrudzieÅ„ + StyczeÅ„:Luty:Marzec:KwiecieÅ„:Maj:Czerwiec:Lipiec:StyczeÅ„:WrzesieÅ„:Październik:Listopad:GrudzieÅ„ </string> - <button label="" label_selected="" name="scriptout" - tool_tip="Ostrzeżenia i Błędy Skryptów" /> - <button label="" label_selected="" name="health" tool_tip="Zdrowie" /> - <text type="string" length="1" name="HealthText" tool_tip="Health"> + <button label="" label_selected="" name="scriptout" tool_tip="Błędy i Ostrzeżenia Skryptów" /> + <button label="" label_selected="" name="health" tool_tip="Stan" /> + <text type="string" length="1" name="HealthText" tool_tip="Stan"> 100% </text> - <button label="" label_selected="" name="no_fly" tool_tip="Latanie niedozwolone" /> - <button label="" label_selected="" name="no_build" tool_tip="Budowanie niedozwolone" /> - <button label="" label_selected="" name="no_scripts" tool_tip="Scripts not allowed" /> - <button label="" label_selected="" name="restrictpush" - tool_tip="Popychanie niedozwolone" /> - <button label="" label_selected="" name="status_no_voice" - tool_tip="Rozmowy niedowolone" /> + <button label="" label_selected="" name="no_fly" tool_tip="Latanie jest niedozwolone" /> + <button label="" label_selected="" name="no_build" tool_tip="Budowanie/rezzowanie jest niedozwolone" /> + <button label="" label_selected="" name="no_scripts" tool_tip="Używanie skryptów jest niedozwolone" /> + <button label="" label_selected="" name="restrictpush" tool_tip="PochniÄ™cia sÄ… niedozwolone" /> + <button label="" label_selected="" name="status_no_voice" tool_tip="Używanie komunikacji gÅ‚osowej jest niedozwolone" /> <button label="" label_selected="" name="buyland" tool_tip="Kup tÄ… posiadÅ‚ość" /> <button label="" name="menubar_search_bevel_bg" /> - <line_editor label="Szukaj" name="search_editor" tool_tip="Przeszukaj Second Life" /> - <button label="" label_selected="" name="search_btn" tool_tip="Przeszukaj Second Life" /> + <line_editor label="Szukaj" name="search_editor" tool_tip="Szukaj w Second Life" /> + <button label="" label_selected="" name="search_btn" tool_tip="Szukaj w Second Life" /> <string name="packet_loss_tooltip"> Utracone Pakiety </string> diff --git a/indra/newview/skins/default/xui/pl/role_actions.xml b/indra/newview/skins/default/xui/pl/role_actions.xml index 37df2d4c3827f6ea8de9763fecab1fec24143ebf..5711eacf2f286baa1b7623fda21c9d43862a1d1a 100755 --- a/indra/newview/skins/default/xui/pl/role_actions.xml +++ b/indra/newview/skins/default/xui/pl/role_actions.xml @@ -53,11 +53,11 @@ <action description="Przypisywanie i kupowanie PosiadÅ‚oÅ›ci dla Grupy" longdescription="Przypisywanie i kupowanie PosiadÅ‚oÅ›ci dla Grupy. DostÄ™p poprzez O PosiadloÅ›ci > ustawienia Ogólne." name="land deed" /> - <action description="Oddawanie PosiadÅ‚oÅ›ci do Linden Labs" - longdescription="Oddawanie PosiadÅ‚oÅ›ci do Linden Labs. *UWAGA* CzÅ‚onek w Funcji z tym Przywilejem może porzucać PosiadloÅ›ci Grupy poprzez O PosiadloÅ›ci > ustawienia Ogólne oddajÄ…c PosiadÅ‚oÅ›ci za darmo do Linden Labs! Udzielaj tego Przywileju z rozwagÄ…." + <action description="Oddawanie PosiadÅ‚oÅ›ci do Linden Lab" + longdescription="Oddawanie PosiadÅ‚oÅ›ci do Linden Lab. *UWAGA* CzÅ‚onek w Funkcji z tym Przywilejem może porzucać PosiadloÅ›ci Grupy poprzez O PosiadloÅ›ci > ustawienia Ogólne oddajÄ…c PosiadÅ‚oÅ›ci za darmo do Linden Labs! Udzielaj tego Przywileju z rozwagÄ…." name="land release" /> <action description="Sprzedaż PosiadÅ‚oÅ›ci" - longdescription="Sprzedaż PosiadÅ‚oÅ›ci. *UWAGA* CzÅ‚onek w Funcji z tym Przywilejem może sprzedawać PosiadloÅ›ci Grupy poprzez O PosiadloÅ›ci > ustawienia Ogólne! Udzielaj tego Przywileju z rozwagÄ…." + longdescription="Sprzedaż PosiadÅ‚oÅ›ci. *UWAGA* CzÅ‚onek w Funkcji z tym Przywilejem może sprzedawać PosiadloÅ›ci Grupy poprzez O PosiadloÅ›ci > ustawienia Ogólne! Udzielaj tego Przywileju z rozwagÄ…." name="land set sale info" /> <action description="PodziaÅ‚ i ÅÄ…czenie PosiadÅ‚oÅ›ci" longdescription="PodziaÅ‚ i ÅÄ…czenie PosiadÅ‚oÅ›ci. DostÄ™p poprzez wybranie gruntu prawym klawiszem myszki, 'Edycja Terenu', i przesuwanie myszkÄ… po gruncie wybierajÄ…c obszar. Aby podzielić wybierz obszar i naciÅ›nij 'Podziel...'. Aby połączyć wybierz dwie albo wiÄ™cej sÄ…siadujÄ…ce PosiadÅ‚oÅ›ci i naciÅ›nij 'Połącz...'." @@ -75,7 +75,7 @@ longdescription="Zmiany nazwy PosiadÅ‚oÅ›ci, opisu i selekcja 'Widoczność w Wyszukiwarce'. DostÄ™p poprzez O PosiadÅ‚oÅ›ci > Opcje." name="land change identity" /> <action description="Wybór miejsca lÄ…dowania i ustawienia teleportacji (TP)" - longdescription="Na PosiadÅ‚oÅ›ci Grupy CzÅ‚onek w Funcji z tym Przywilejem może wybrać miejsce gdzie teleportujÄ…ce siÄ™ osoby bÄ™dÄ… ladować oraz może ustalić dodatkowe parametry teleportacji (TP). DostÄ™p poprzez O PosiadÅ‚oÅ›ci > Opcje." + longdescription="Na PosiadÅ‚oÅ›ci Grupy CzÅ‚onek w Funkcji z tym Przywilejem może wybrać miejsce gdzie teleportujÄ…ce siÄ™ osoby bÄ™dÄ… ladować oraz może ustalić dodatkowe parametry teleportacji (TP). DostÄ™p poprzez O PosiadÅ‚oÅ›ci > Opcje." name="land set landing point" /> </action_set> <action_set @@ -95,19 +95,19 @@ description="Przywileje pozwalajÄ…ce CzÅ‚onkom na omijanie ograniczeÅ„ na PosiadÅ‚oÅ›ciach Grupy." name="Parcel Powers"> <action description="Pozwól na EdycjÄ™ Terenu" - longdescription="CzÅ‚onkowie w Funcji z tym Przywilejem mogÄ… zawsze edytować teren na PosiadÅ‚oÅ›ciach Grupy." + longdescription="CzÅ‚onkowie w Funkcji z tym Przywilejem mogÄ… zawsze edytować teren na PosiadÅ‚oÅ›ciach Grupy." name="land allow edit land" /> <action description="Pozwól na Latanie" - longdescription="CzÅ‚onkowie w Funcji z tym Przywilejem mogÄ… zawsze latać na PosiadÅ‚oÅ›ciach Grupy." + longdescription="CzÅ‚onkowie w Funkcji z tym Przywilejem mogÄ… zawsze latać na PosiadÅ‚oÅ›ciach Grupy." name="land allow fly" /> <action description="Pozwól na Tworzenie Obiektów" - longdescription="CzÅ‚onkowie w Funcji z tym Przywilejem mogÄ… zawsze tworzyć obiekty na PosiadÅ‚oÅ›ciach Grupy." + longdescription="CzÅ‚onkowie w Funkcji z tym Przywilejem mogÄ… zawsze tworzyć obiekty na PosiadÅ‚oÅ›ciach Grupy." name="land allow create" /> <action description="Pozwól na ZapamiÄ™tywanie Miejsc (LM)" - longdescription="CzÅ‚onkowie w Funcji z tym Przywilejem mogÄ… zawsze zapamiÄ™tywać miejsca (LM) na PosiadÅ‚oÅ›ciach Grupy." + longdescription="CzÅ‚onkowie w Funkcji z tym Przywilejem mogÄ… zawsze zapamiÄ™tywać miejsca (LM) na PosiadÅ‚oÅ›ciach Grupy." name="land allow landmark" /> - <action description="Pozwól na wybór Mijsca Startu na PosiadÅ‚oÅ›ciach Grupy" - longdescription="CzÅ‚onkowie w Funcji z tym Przywilejem mogÄ… zawsze wybrać Miejsce Startu na PosiadÅ‚oÅ›ciach Grupy.." + <action description="Pozwól na wybór Miejsca Startu na PosiadÅ‚oÅ›ciach Grupy" + longdescription="CzÅ‚onkowie w Funkcji z tym Przywilejem mogÄ… zawsze wybrać Miejsce Startu na PosiadÅ‚oÅ›ciach Grupy." name="land allow set home" /> </action_set> <action_set @@ -123,11 +123,11 @@ longdescription="Selekcja opcji 'WstÄ™p PÅ‚atny...' pod O PosiadÅ‚oÅ›ci > DostÄ™p." name="land manage passes" /> <action description="Wyrzucanie i unieruchamianie Rezydentów na PosiadÅ‚oÅ›ciach" - longdescription="CzÅ‚onkowie w Funcji z tym Przywilejem mogÄ… wpÅ‚ywać na niepożadanych na PosiadÅ‚oÅ›ciach Grupy Rezydentów wybierajÄ…c ich prawym klawiszem myszki i wybierajÄ…c WiÄ™cej > 'Wyrzuć...' albo 'Unieruchom...'." + longdescription="CzÅ‚onkowie w Funkcji z tym Przywilejem mogÄ… wpÅ‚ywać na niepożądanych na PosiadÅ‚oÅ›ciach Grupy Rezydentów wybierajÄ…c ich prawym klawiszem myszki i wybierajÄ…c WiÄ™cej > 'Wyrzuć...' albo 'Unieruchom...'." name="land admin" /> </action_set> <action_set - description="Przywileje pozwalajÄ…ce na odsyÅ‚anie obiektów i przemiszczanie roÅ›lin z Linden Labs. Użyteczne przy porzÄ…dkowaniu i przemieszczaniu roÅ›linnoÅ›ci. *UWAGA* OdsyÅ‚anie obiektów jest nieodwracalne." + description="Przywileje pozwalajÄ…ce na odsyÅ‚anie obiektów i przemieszczanie roÅ›lin z Linden Lab. Użyteczne przy porzÄ…dkowaniu i przemieszczaniu roÅ›linnoÅ›ci. *UWAGA* OdsyÅ‚anie obiektów jest nieodwracalne." name="Parcel Content"> <action description="OdsyÅ‚anie obiektów należących do Grupy" longdescription="OdsyÅ‚anie obiektów należących do Grupy pod O PosiadÅ‚oÅ›ci > Obiekty." @@ -138,8 +138,8 @@ <action description="OdsyÅ‚anie obiektów nie przypisanych do Grupy" longdescription="OdsyÅ‚anie obiektów nie przypisanych do Grupy pod O PosiadÅ‚oÅ›ci > Obiekty." name="land return non group" /> - <action description="Ogrodnictwo używajÄ…c roÅ›lin z Linden Labs" - longdescription="Ogrodnictwo pozwala na umiszczanie i przemiszczanie drzew, roÅ›lin i trawy z Linden Labs. Te obiekty znajdujÄ… siÄ™ w Twojej Szafie pod Zbiór > Obiekty, mogÄ… też być stworzone używajÄ…c przycisku Buduj." + <action description="Ogrodnictwo używajÄ…c roÅ›lin z Linden Lab" + longdescription="Ogrodnictwo pozwala na umieszczanie i przemieszczanie drzew, roÅ›lin i trawy z Linden Lab. Te obiekty znajdujÄ… siÄ™ w Twojej Szafie pod Zbiór > Obiekty, mogÄ… też być stworzone używajÄ…c przycisku Buduj." name="land gardening" /> </action_set> <action_set @@ -160,38 +160,38 @@ description="Przywileje pozwalajÄ…ce na wybór opÅ‚at grupowych, otrzymywanie dochodu i ograniczanie dostÄ™pu do historii konta grupy." name="Accounting"> <action description="OpÅ‚aty grupowe i dochód grupowy" - longdescription="CzÅ‚onkowie w Funcji z tym Przywilejem bÄ™dÄ… automatycznie wnosić opÅ‚aty grupowe i bÄ™dÄ… otrzymywać dochód grupowy. Tzn. bÄ™dÄ… codziennie otrzymywać część dochodu ze sprzedaży PosiadÅ‚oÅ›ci Grupy oraz bÄ™dÄ… partycypować w kosztach ogÅ‚oszeÅ„ itp." + longdescription="CzÅ‚onkowie w Funkcji z tym Przywilejem bÄ™dÄ… automatycznie wnosić opÅ‚aty grupowe i bÄ™dÄ… otrzymywać dochód grupowy. Tzn. bÄ™dÄ… codziennie otrzymywać część dochodu ze sprzedaży PosiadÅ‚oÅ›ci Grupy oraz bÄ™dÄ… partycypować w kosztach ogÅ‚oszeÅ„ itp." name="accounting accountable" /> </action_set> <action_set description="Przywileje pozwalajÄ…ce na wysyÅ‚anie, odbieranie i czytanie Notek Grupy." name="Notices"> <action description="WysyÅ‚anie Notek" - longdescription="CzÅ‚onkowie w Funcji z tym Przywilejem mogÄ… wysyÅ‚ać Notki pod O Grupie > Notki." + longdescription="CzÅ‚onkowie w Funkcji z tym Przywilejem mogÄ… wysyÅ‚ać Notki wybierajÄ…c O Grupie > Notek." name="notices send" /> <action description="Odbieranie Notek i dostÄ™p do dawniejszych Notek" - longdescription="CzÅ‚onkowie w Funcji z tym Przywilejem mogÄ… odbierać nowe i czytać dawniejsze Notki pod O Grupie > Notki." + longdescription="CzÅ‚onkowie w Funkcji z tym Przywilejem mogÄ… odbierać nowe i czytać dawniejsze Notki wybierajÄ…c O Grupie > Notki." name="notices receive" /> </action_set> <action_set description="Przywileje pozwalajÄ…ce na zgÅ‚aszanie Propozycji, gÅ‚osowanie nad Propozycjami i Å›ledzenie historii gÅ‚osowania." name="Proposals"> <action description="ZgÅ‚aszanie Propozycji" - longdescription="CzÅ‚onkowie w Funcji z tym Przywilejem mogÄ… zgÅ‚aszać Propozycje pod gÅ‚osowanie pod O Grupie > Propozycje." + longdescription="CzÅ‚onkowie w Funkcji z tym Przywilejem mogÄ… zgÅ‚aszać Propozycje do gÅ‚osowania wybierajÄ…c O Grupie > Propozycje." name="proposal start" /> <action description="GÅ‚osowanie nad Propozycjami" - longdescription="CzÅ‚onkowie w Funcji z tym Przywilejem mogÄ… gÅ‚osować nad Propozycjami pod O Grupie > Propozycje." + longdescription="CzÅ‚onkowie w Funkcji z tym Przywilejem mogÄ… gÅ‚osować nad Propozycjami zgÅ‚oszonymi do gÅ‚osowania wybierajÄ…c O Grupie > Propozycje." name="proposal vote" /> </action_set> <action_set description="Przywileje kontrolujÄ…ce czat i rozmowy grupowe." name="Chat"> <action description="DostÄ™p do Czatu Grupowego" - longdescription="CzÅ‚onkowie w Funcji z tym Przywilejem mogÄ… uczestniczyć w czcie i rozmowach grupowych." + longdescription="CzÅ‚onkowie w Funkcji z tym Przywilejem mogÄ… uczestniczyć w czacie i rozmowach grupowych." name="join group chat" /> <action description="DostÄ™p do Rozmów Grupowych" - longdescription="CzÅ‚onkowie w Funcji z tym Przywilejem mogÄ… uczestniczyć w rozmowach grupowych. UWAGA: DostÄ™p do Czatu Grupowego jest wymagany dla rozmów grupowych." + longdescription="CzÅ‚onkowie w Funkcji z tym Przywilejem mogÄ… uczestniczyć w rozmowach grupowych. UWAGA: DostÄ™p do Czatu Grupowego jest wymagany dla rozmów grupowych." name="join voice chat" /> <action description="Moderator Czatu Grupowego" - longdescription="CzÅ‚onkowie w Funcji z tym Przywilejem mogÄ… kontrolować dostÄ™p do czatu i rozmów grupowych." + longdescription="CzÅ‚onkowie w Funkcji z tym Przywilejem mogÄ… kontrolować dostÄ™p do czatu i rozmów grupowych." name="moderate group chat" /> </action_set> </role_actions> diff --git a/indra/newview/skins/default/xui/pl/strings.xml b/indra/newview/skins/default/xui/pl/strings.xml index df76f19462c7297e51f4424b60b595654f714c42..5067f044e0f088229f1bf484f80b672a44e60d61 100755 --- a/indra/newview/skins/default/xui/pl/strings.xml +++ b/indra/newview/skins/default/xui/pl/strings.xml @@ -1,6 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- This file contains strings that used to be hardcoded in the source. + It is only for those strings which do not belong in a floater. + For example, the strings used in avatar chat bubbles, and strings + that are returned from one component and may appear in many places--> <strings> - <!-- Login --> <string name="LoginInProgress"> Trwa logowanie. [APP_NAME] ProszÄ™ czekać. </string> @@ -38,7 +41,7 @@ Inicjalizacja QuickTime... </string> <string name="LoginQuicktimeNotFound"> - QuickTime nie znaleźony - inicjalizacja przerwana. + QuickTime nie zostaÅ‚ znaleziony - inicjalizacja przerwana. </string> <string name="LoginQuicktimeOK"> QuickTime zainicjalizowany. @@ -52,34 +55,24 @@ <string name="LoginDownloadingClothing"> Åadowanie ubrania... </string> - <string name="LoginFailedNoNetwork"> - Błąd sieci: Problemy z połączeniem, sprawdź podłączenie do sieci. - </string> - <!-- Disconnection --> <string name="AgentLostConnection"> Ten region może mieć problemy. Sprawdź podłączenie do Internetu. </string> - <!-- Tooltip, llhoverview.cpp --> <string name="TooltipPerson"> Osoba </string> - <!-- Object under mouse pointer is an avatar --> <string name="TooltipNoName"> (brak nazwy) </string> - <!-- No name on an object --> <string name="TooltipOwner"> WÅ‚aÅ›ciciel: </string> - <!-- Owner name follows --> <string name="TooltipPublic"> Publiczny </string> - <!-- Public permissions on an object --> <string name="TooltipIsGroup"> (Grupa) </string> - <!-- The name before this text is that of a group --> <string name="TooltipFlagScript"> Skrypt </string> @@ -110,11 +103,9 @@ <string name="TooltipForSaleL$"> Na Sprzedaż: L$[AMOUNT] </string> - <!-- L$ version --> <string name="TooltipForSaleMsg"> Na Sprzedaż: [MESSAGE] </string> - <!-- Message (RetrievingData) --> <string name="TooltipFlagGroupBuild"> Budowanie Grupowe </string> @@ -127,7 +118,6 @@ <string name="TooltipFlagNotSafe"> Niebezpieczny Obszar </string> - <!-- damage area --> <string name="TooltipFlagNoFly"> Latanie Zabronione </string> @@ -143,35 +133,27 @@ <string name="TooltipMustSingleDrop"> Tylko pojedynczy obiekt może być tutaj przeciÄ…gniÄ™ty </string> - <!-- Indicates that an avatar's name or other similar datum is being retrieved. General usage. --> <string name="RetrievingData"> Odzyskiwanie danych... </string> <string name="ReleaseNotes"> O Tej Wersji </string> - <!-- Indicates something is being loaded. Maybe should be merged with RetrievingData --> <string name="LoadingData"> Åadowanie danych... </string> - <!-- namecache --> - <!-- Avatar name: text shown for LLUUID::null --> <string name="AvatarNameNobody"> (brak danych) </string> - <!-- Avatar name: text shown while fetching name --> <string name="AvatarNameWaiting"> (Å‚adowanie) </string> - <!-- Avatar name: text shown as an alternative to AvatarNameFetching, easter egg. --> <string name="AvatarNameHippos"> - (Twój avatar ulegnie samozniszczeniu za 5 sec. Pożegnaj siÄ™ z SL!) + (hippos) </string> - <!-- Group name: text shown for LLUUID::null --> <string name="GroupNameNone"> (brak danych) </string> - <!-- Asset errors. Used in llassetstorage.cpp, translation from error code to error message. --> <string name="AssetErrorNone"> OK </string> @@ -199,10 +181,12 @@ <string name="AssetErrorCircuitGone"> Połączenie przerwane </string> + <string name="AssetErrorPriceMismatch"> + Brak zgodnoÅ›ci pomiÄ™dzy serwerem i klientem na realizacjÄ™ podanej ceny. + </string> <string name="AssetErrorUnknownStatus"> Status nieznany </string> - <!-- llvoavatar. Displayed in the avatar's chat bubble --> <string name="AvatarEditingApparance"> (Edycja WyglÄ…du) </string> @@ -215,7 +199,6 @@ <string name="AvatarMuted"> Wyciszony </string> - <!-- animations --> <string name="anim_express_afraid"> Strach </string> @@ -429,11 +412,75 @@ <string name="worldmap_offline"> NiedostÄ™pna </string> - <!-- Chat --> <string name="whisper"> szepcze: </string> <string name="shout"> krzyczy: </string> + <string name="SIM_ACCESS_PG"> + 'PG' + </string> + <string name="SIM_ACCESS_MATURE"> + 'Mature' + </string> + <string name="SIM_ACCESS_ADULT"> + 'Adult' + </string> + <string name="SIM_ACCESS_DOWN"> + NiedostÄ™pny + </string> + <string name="SIM_ACCESS_MIN"> + Nieznany + </string> + <string name="land_type_unknown"> + (nieznane) + </string> + <string name="covenant_never_modified">Ostatnia Modyfikacja: (nigdy)</string> + <string name="covenant_modified">Ostatnia Modyfikacja: </string> + <string name="all_files"> + Wszystkie Pliki + </string> + <string name="sound_files"> + DźwiÄ™ki + </string> + <string name="animation_files"> + Animacje + </string> + <string name="image_files"> + Obrazy + </string> + <string name="save_file_verb"> + Zapisz + </string> + <string name="load_file_verb"> + ZaÅ‚aduj + </string> + <string name="targa_image_files"> + Obrazy Targa + </string> + <string name="bitmap_image_files"> + Obrazy Bitmap + </string> + <string name="avi_movie_file"> + Pliki filmowe AVI + </string> + <string name="xaf_animation_file"> + Plik Animacji XAF + </string> + <string name="xml_file"> + Plik XML + </string> + <string name="dot_raw_file"> + Plik RAW + </string> + <string name="compressed_image_files"> + Obrazy Skomprensowane + </string> + <string name="load_files"> + ZaÅ‚aduj pliki + </string> + <string name="choose_the_directory"> + Wybierz Katalog + </string> </strings> diff --git a/indra/newview/skins/default/xui/pl/teleport_strings.xml b/indra/newview/skins/default/xui/pl/teleport_strings.xml index 0b24f2221ef91ad2613851a6afd56178402456d8..3384ae30b77b7d8970078cf7a387fd30a3849c16 100755 --- a/indra/newview/skins/default/xui/pl/teleport_strings.xml +++ b/indra/newview/skins/default/xui/pl/teleport_strings.xml @@ -2,18 +2,18 @@ <teleport_messages> <message_set name="errors"> <message name="invalid_tport"> - Huston / LL - Mamy problem z teleportacjÄ…. Może relog by pomógl? -Jeżeli caÅ‚y czas nie możesz siÄ™ telportować sprawdź Pomoc TechnicznÄ… na: -www.secondlife.com/support + WystÄ…piÅ‚ problem z teleportacjÄ…. Wyloguj siÄ™ i zaloguj ponownie. +JeÅ›li nadal otrzymujesz ten komunikat sprawdź Pomoc TechnicznÄ… na stronie: +www.secondlife.com/support. </message> <message name="invalid_region_handoff"> - Huston / LL - Mamy problem ze zmianÄ… regionu. Może relog by pomógl? -Jeżeli caÅ‚y czas nie możesz zmienić regionu sprawdź Pomoc TechnicznÄ… na: -www.secondlife.com/support + WystÄ…piÅ‚ problem ze zmianÄ… regionu. Wyloguj siÄ™ i zaloguj ponownie. +JeÅ›li nadal otrzymujesz ten komunikat sprawdź Pomoc TechnicznÄ… na stronie: +www.secondlife.com/support. </message> <message name="blocked_tport"> - Przepraszamy, ale teleportacja jest chwilowo niedostÄ™pna - problemy z nowÄ… technologiÄ…. -Spróbuj jeszcze raz. Hmm - caÅ‚y czas nie dziaÅ‚a - może relog by pomógl? + Przepraszamy, teleportacja jest chwilowo niedostÄ™pna. Spróbuj jeszcze raz. +JeÅ›li nadal nie możesz siÄ™ teleportować wyloguj siÄ™ i ponownie zaloguj. </message> <message name="nolandmark_tport"> Przepraszamy, ale nie możemy znaleźć miejsca docelowego. diff --git a/indra/newview/skins/default/xui/pt/floater_about.xml b/indra/newview/skins/default/xui/pt/floater_about.xml index fe0e03a9adc54fb8b6c5b9183697e707020a333e..4186e5e2076e24e9cabd72d2bdbd0ab465c268fd 100644 --- a/indra/newview/skins/default/xui/pt/floater_about.xml +++ b/indra/newview/skins/default/xui/pt/floater_about.xml @@ -28,7 +28,7 @@ Voice chat Audio coding: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C) - Eu tive uma pequena ajuda de meus amigos. --Richard Starkey + Para ter sucesso nos negócios, seja ousado, seja o primeiro, seja diferente. --Henry Marchant </text_editor> <string name="you_are_at"> Você está em [POSITION] 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 2cc75432eebf5d0bb7475cd5f11058835268cded..fee7ed60f5db3b736cc71fc49c8f33f79784f218 100644 --- a/indra/newview/skins/default/xui/pt/floater_about_land.xml +++ b/indra/newview/skins/default/xui/pt/floater_about_land.xml @@ -8,6 +8,18 @@ <text length="1" name="Description:" type="string"> Descrição: </text> + <text name="LandType"> + Tipo: + </text> + <text name="LandTypeText"> + Continente / Terra + </text> + <text name="ContentRating"> + Classificação: + </text> + <text name="ContentRatingText"> + Adult + </text> <text length="1" name="Owner:" type="string"> Proprietário: </text> @@ -29,7 +41,7 @@ Não está à Venda. </text> <text length="1" name="For Sale: Price L$[PRICE]." type="string"> - Preço: L$[PRICE]. + Preço: L$[PRICE] (L$[PRICE_PER_SQM]/m²). </text> <button label="Vender Terra..." label_selected="Vender Terra..." name="Sell Land..."/> <text length="1" name="For sale to" type="string"> @@ -39,7 +51,7 @@ À venda (Objetos incluÃdos). </text> <text length="1" name="Selling with no objects in parcel." type="string"> - À venda (Objetos não IncluÃdos). + À venda (Objetos não incluÃdos). </text> <button label="Cancelar venda do terreno" label_selected="Cancelar venda do terreno" left="275" name="Cancel Land Sale" width="165"/> <text length="1" name="Claimed:" type="string"> @@ -52,7 +64,7 @@ Ãrea: </text> <text length="1" name="PriceText" type="string"> - 4048 m². + 4048 m² </text> <text length="1" name="Traffic:" type="string"> Tráfego: @@ -76,7 +88,7 @@ Ãrea </string> <string name="area_size_text"> - [AREA] m². + [AREA] m² </string> <string name="auction_id_text"> ID do Leilão: [ID] @@ -108,36 +120,60 @@ Vá para o menu Mundo > Sobre a Terra ou selecione outro lote para mostrar se </string> </panel> <panel label="Corretor" name="land_covenant_panel"> + <text name="estate_section_lbl"> + Propriedade: + </text> + <text length="1" name="estate_name_lbl" type="string"> + Nome: + </text> + <text length="1" name="estate_name_text" type="string"> + mainland + </text> + <text length="1" name="estate_owner_lbl" type="string"> + Dono: + </text> + <text length="1" name="estate_owner_text" type="string"> + (nenhum) + </text> + <text_editor length="1" name="covenant_editor" type="string"> + Não há corretor para esta Propriedade. + </text_editor> <text length="1" name="covenant_timestamp_text" type="string"> Última Alteração: Qua, Dez 31 16:00:00 1969 </text> - <text length="1" name="region_name_lbl" type="string"> + <text name="region_section_lbl"> Região: </text> + <text length="1" name="region_name_lbl" type="string"> + Nome: + </text> <text length="1" name="region_name_text" type="string"> leyla </text> - <text length="1" name="estate_name_lbl" type="string"> - Propriedade: + <text name="region_landtype_lbl"> + Tipo: </text> - <text length="1" name="estate_name_text" type="string"> - mainland + <text name="region_landtype_text"> + Continente / Terra </text> - <text length="1" name="estate_owner_lbl" type="string"> - Dono da Propriedade: + <text name="region_maturity_lbl"> + Classificação: </text> - <text length="1" name="estate_owner_text" type="string"> - (nenhum) + <text name="region_maturity_text"> + Adult + </text> + <text name="resellable_lbl"> + Revender: </text> <text length="1" name="resellable_clause" type="string"> - Terra comprada nesta região não pode ser revendida. + Terra nesta região não pode ser revendida. + </text> + <text name="changeable_lbl"> + Subdividir: </text> <text length="1" name="changeable_clause" type="string"> - Terra comrpada nesta região não poderá ser compartilhada ou sub-dividida. + Terra nesta região não pode ser unida/sub-dividida. </text> - <text_editor length="1" name="covenant_editor" type="string"> - Não há corretor para esta Propriedade. - </text_editor> <string name="can_resell"> Terra comprada nesta região pode ser revendida. </string> @@ -145,10 +181,12 @@ Vá para o menu Mundo > Sobre a Terra ou selecione outro lote para mostrar se Terra comprada nesta região não pode ser revendida. </string> <string name="can_change"> - Terra comprada nesta região pode ser compartilhada ou sub-dividida. + Terra comprada nesta região pode ser compartilhada +ou sub-dividida. </string> <string name="can_not_change"> - Terra comprada nesta região não pode ser compartilhada ou sub-dividida. + Terra comprada nesta região não pode ser compartilhada +ou sub-dividida. </string> </panel> <panel label="Objetos" name="land_objects_panel"> @@ -210,14 +248,14 @@ Vá para o menu Mundo > Sobre a Terra ou selecione outro lote para mostrar se [COUNT] </text> <text left="4" length="1" name="Autoreturn" type="string" width="412"> - Auto-retornar objetos dos outros residentes (minutos,0 para desligado): + Auto-retornar objetos dos outros residentes (minutos, 0 para desligado): </text> - <line_editor name="clean other time" right="-6" width="36"/> + <line_editor name="clean other time" right="-10"/> <text length="1" name="Object Owners:" type="string"> Donos dos Objetos: </text> - <button label="Atualizar Lista" label_selected="Atualizar Lista" name="Refresh List"/> - <button label="Retornar objetos..." label_selected="Retornar objetos..." name="Return objects..."/> + <button label="Atualizar Lista" label_selected="Atualizar Lista" name="Refresh List" left="118"/> + <button label="Retornar objetos..." label_selected="Retornar objetos..." name="Return objects..." left="230"/> <name_list name="owner list"> <column label="Tipo" name="type"/> <column label="Nome" name="name"/> @@ -232,17 +270,17 @@ Vá para o menu Mundo > Sobre a Terra ou selecione outro lote para mostrar se <check_box label="Editar Terreno" name="edit land check" tool_tip="Se ativado, qualquer um pode modificar a forma da sua terra. É melhor deixar esta opção desativada, uma vez que você sempre pode editar seu próprio terreno."/> <check_box label="Criar Landmarks" name="check landmark"/> <check_box label="Voar" name="check fly" tool_tip="Se ativado, os Residentes podem voar na sua terra. Se desativado, eles podem voar apenas para dentro e por cima de sua terra."/> - <text length="1" name="allow_label2" type="string"> + <text length="1" name="allow_label2" type="string" left="172"> Criar Objetos: </text> <check_box label="Residentes" name="edit objects check"/> <check_box label="Grupo" name="edit group objects check"/> - <text length="1" name="allow_label3" type="string"> + <text length="1" name="allow_label3" type="string" left="172"> Entrada do Objeto: </text> <check_box label="Residentes" name="all object entry check"/> <check_box label="Grupo" name="group object entry check"/> - <text length="1" name="allow_label4" type="string"> + <text length="1" name="allow_label4" type="string" left="172"> Executar Scripts: </text> <check_box label="Residentes" name="check other scripts"/> @@ -253,10 +291,60 @@ Vá para o menu Mundo > Sobre a Terra ou selecione outro lote para mostrar se <check_box label="Salvo (sem dano)" name="check safe" tool_tip="Se ativado, ajusta o terreno para Seguro, desabilitando combate com danos. Se não ativado, o combate com danos é habilitado."/> <check_box label="Sem Empurrar" name="PushRestrictCheck" tool_tip="Evita scripts que empurram. A ativação dessa opção pode ser útil para prevenir comportamentos desordeiros na sua terra."/> <check_box label="Mostra o Lugar na Busca (L$30/semana) sob" name="ShowDirectoryCheck" tool_tip="Permitir que as pessoas vejam este terreno nos resultados de busca"/> + <string name="search_enabled_tooltip"> + Permitir que as pessoas vejam este lote nos resultados de busca + </string> + <string name="search_disabled_small_tooltip"> + Esta opção está desabilitada porque a área deste lote tem 128 m² ou menos. +Apenas lotes maiores podem ser listados na busca. + </string> + <string name="search_disabled_permissions_tooltip"> + Esta opção está desabilitada porque você não pode modificar as opções deste lote. + </string> + <combo_box name="land category with adult"> + <combo_item name="AnyCategory"> + Qualquer Categoria + </combo_item> + <combo_item name="LindenLocation"> + Local da Linden + </combo_item> + <combo_item name="Adult"> + Adult + </combo_item> + <combo_item name="Arts&Culture"> + Artes & Cultura + </combo_item> + <combo_item name="Business"> + Negócios + </combo_item> + <combo_item name="Educational"> + Educacional + </combo_item> + <combo_item name="Gaming"> + Jogos + </combo_item> + <combo_item name="Hangout"> + Moradia + </combo_item> + <combo_item name="NewcomerFriendly"> + Amigável a Novos Usuários + </combo_item> + <combo_item name="Parks&Nature"> + Parques & Natureza + </combo_item> + <combo_item name="Residential"> + Residencial + </combo_item> + <combo_item name="Shopping"> + Shopping + </combo_item> + <combo_item name="Other"> + Outros + </combo_item> + </combo_box> <combo_box left="276" name="land category" width="146"> <combo_box.item name="AnyCategory" label="Qualquer Categoria"/> <combo_box.item name="LindenLocation" label="Locação Linden"/> - <combo_box.item name="Arts&Culture" label="Artes e Cultura"/> <combo_box.item name="Business" label="Negócios"/> <combo_box.item name="Educational" label="Educacional"/> @@ -269,7 +357,19 @@ Vá para o menu Mundo > Sobre a Terra ou selecione outro lote para mostrar se <combo_box.item name="Other" label="Outros"/> </combo_box> <button label="?" label_selected="?" left="426" name="?"/> - <check_box name="MatureCheck" /> + <check_box label="Conteúdo Mature" name="MatureCheck" tool_tip=""/> + <string name="mature_check_mature"> + Conteúdo Mature + </string> + <string name="mature_check_adult"> + Conteúdo Adult + </string> + <string name="mature_check_mature_tooltip"> + A informação do seu lote ou seu conteúdo são considerados mature. + </string> + <string name="mature_check_adult_tooltip"> + A informação do seu lote ou seu conteúdo são considerados adult. + </string> <text length="1" name="Snapshot:" type="string"> Foto: </text> @@ -344,21 +444,14 @@ MÃdia: <text name="Sound:"> Som: </text> - <check_box label="Restringir som espacial a este lote" left="97" name="check sound local"/> + <check_box label="Restringir gestos e sons de objetos a este lote" left="97" name="check sound local"/> + <button label="?" label_selected="?" name="?"/> <text name="Voice settings:"> Voz: </text> - <radio_group left="97" name="parcel_voice_channel" width="310"> - <radio_item name="Estate"> - Usar o canal espacial da Propriedade - </radio_item> - <radio_item name="Private"> - Usar um canal especial privado - </radio_item> - <radio_item name="Disabled"> - Desabilitar áudio espacial neste lote - </radio_item> - </radio_group> + <check_box left="97" label="Habilitar Voz" name="parcel_enable_voice_channel"/> + <check_box left="97" label="Habilitar Voz (definida pela Propriedade)" name="parcel_enable_voice_channel_is_estate_disabled"/> + <check_box left="117" label="Restringir Voz a este lote" name="parcel_enable_voice_channel_parcel"/> </panel> <panel label="Acesso" name="land_access_panel"> <text length="1" name="Limit access to this parcel to:" type="string"> diff --git a/indra/newview/skins/default/xui/pt/floater_animation_preview.xml b/indra/newview/skins/default/xui/pt/floater_animation_preview.xml index f6bc034665c54e43172feac7594daac209faac4c..f3297ea5ee8bb2950c2049ddd5923f1de0a2d506 100644 --- a/indra/newview/skins/default/xui/pt/floater_animation_preview.xml +++ b/indra/newview/skins/default/xui/pt/floater_animation_preview.xml @@ -6,14 +6,14 @@ <text name="description_label"> Descrição: </text> - <spinner label="Prioridade" name="priority" tool_tip="Controla quais animações podem se sobrepor a esta animação."/> + <spinner label_width="72" width="110" label="Prioridade" name="priority" tool_tip="Controla quais animações podem se sobrepor a esta animação."/> <check_box label="Loop" name="loop_check" tool_tip="Executa a animação repetidamente."/> - <spinner label="Dentro(%)" name="loop_in_point" tool_tip="Ajusta o ponto da animação onde a repetição começa."/> - <spinner label="Fora(%)" name="loop_out_point" tool_tip="Ajusta o ponto da animação onde a repetição termina."/> + <spinner label_width="56" left="65" width="116" label="Dentro(%)" name="loop_in_point" tool_tip="Ajusta o ponto da animação onde a repetição começa."/> + <spinner label_width="40" left="185" label="Fora(%)" name="loop_out_point" tool_tip="Ajusta o ponto da animação onde a repetição termina."/> <text name="hand_label"> Pose de Mão </text> - <combo_box label="" name="hand_pose_combo" tool_tip="Controla o que as mãos fazem durante a animação"> + <combo_box left_delta="100" width="184" name="hand_pose_combo" tool_tip="Controla o que as mãos fazem durante a animação"> <combo_box.item name="Spread" label="Espreguiçar" /> <combo_box.item name="Relaxed" label="Relaxado" /> <combo_box.item name="PointBoth" label="Apontar Ambos" /> @@ -31,7 +31,7 @@ <text name="emote_label"> Expressão </text> - <combo_box label="" name="emote_combo" tool_tip="Controla o que a face faz durante a animação."> + <combo_box left_delta="100" width="184" name="emote_combo" tool_tip="Controla o que a face faz durante a animação."> <combo_box.item name="[None]" label="None]" /> <combo_box.item name="Aaaaah" label="Aaaaah" /> <combo_box.item name="Afraid" label="Temeroso" /> @@ -53,21 +53,24 @@ <combo_box.item name="Wink" label="Piscar" /> <combo_box.item name="Worry" label="Preocupado" /> </combo_box> - <text name="preview_label"> + <text name="preview_label" width="250"> Prever enquanto </text> - <combo_box label="" name="preview_base_anim" tool_tip="Use isto para testar o comportamento de sua animação enquanto seu avatar executa ações comuns."> + <combo_box left_delta="100" width="130" name="preview_base_anim" tool_tip="Use isto para testar o comportamento de sua animação enquanto seu avatar executa ações comuns."> <combo_box.item name="Standing" label="Parado" /> <combo_box.item name="Walking" label="Andando" /> <combo_box.item name="Sitting" label="Sentando" /> <combo_box.item name="Flying" label="Voando" /> </combo_box> - <spinner label="Facilitar a entrada (sec)" name="ease_in_time" tool_tip="Quantidade de tempo (em segundos) para que as animações se mesclem."/> - <spinner label="Facilitar a saÃda (sec)" name="ease_out_time" tool_tip="Quantidade de tempo (em segundos) para que a animações se mesclem."/> - <button label="" name="play_btn" tool_tip="Executa/pausa sua animação."/> + <spinner label_width="125" width="192" label="Facilitar a entrada (sec)" name="ease_in_time" tool_tip="Quantidade de tempo (em segundos) para que as animações se mesclem."/> + <spinner bottom_delta="-20" label_width="125" left="10" width="192" label="Facilitar a saÃda (sec)" name="ease_out_time" tool_tip="Quantidade de tempo (em segundos) para que a animações se mesclem."/> + <button bottom_delta="-32" name="play_btn" tool_tip="Executa/pausa sua animação."/> <button label="" name="stop_btn" tool_tip="Interrompe a execução da animação."/> <text name="bad_animation_text"> - Incapaz de ler o arquivo de animação. Nós recomendamos exportar arquivos BVH do Poser 4. + Incapaz de ler o arquivo de animação. + +Nós recomendamos exportar arquivos BVH do +Poser 4. </text> <button label="Cancelar" name="cancel_btn"/> <button label="Carregar (L$[AMOUNT])" name="ok_btn"/> diff --git a/indra/newview/skins/default/xui/pt/floater_avatar_picker.xml b/indra/newview/skins/default/xui/pt/floater_avatar_picker.xml index 23b0b86675f2fff70dc20ba4c451423879dfc9b3..8f433a635db3f3d3edcd6f9cfab421a61713f7ea 100644 --- a/indra/newview/skins/default/xui/pt/floater_avatar_picker.xml +++ b/indra/newview/skins/default/xui/pt/floater_avatar_picker.xml @@ -1,15 +1,40 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="avatarpicker" title="Escolha o Residente"> - <text name="instruct_search_resident_name"> - Digite parte do nome do residente: - </text> - <button label="Encontrar" label_selected="Encontrar" name="Find"/> - <text name="Or select their calling card:"> - Ou selecione um cartão de visita: - </text> - <button label="Fechar" label_selected="Fechar" name="Close"/> + <tab_container name="ResidentChooserTabs"> + <panel label="Buscar" name="SearchPanel"> + <text name="InstructSearchResidentName"> + Digite parte do nome do Residente: + </text> + <button label="Encontrar" label_selected="Encontrar" name="Find"/> + </panel> + <panel label="Cartões de Visita" name="CallingCardsPanel"> + <text name="InstructSelectCallingCard"> + Selecione um cartão de visita: + </text> + </panel> + <panel label="Próximo a Mim" name="NearMePanel"> + <text name="InstructSelectResident"> + Selecione residente próximo: + </text> + <button label="Atualizar Lista" label_selected="Atualizar Lista" name="Refresh"/> + <slider label="Faixa" name="near_me_range"/> + <text name="meters"> + Metros + </text> + </panel> + </tab_container> <button label="Selecionar" label_selected="Selecionar" name="Select"/> - <string name="NotFound"> + <button label="Cancelar" label_selected="Cancelar" name="Cancel"/> + <string name="not_found"> '[TEXT]' não encontrado </string> + <string name="no_one_near"> + Ninguém proximo + </string> + <string name="no_results"> + Nenhum resultado + </string> + <string name="searching"> + Buscando... + </string> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_bulk_perms.xml b/indra/newview/skins/default/xui/pt/floater_bulk_perms.xml new file mode 100644 index 0000000000000000000000000000000000000000..c064d24f9627d01b92a06a860d35e60644c2d6e9 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/floater_bulk_perms.xml @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floaterbulkperms" title="Mudança conjunta das permissões de conteúdo"> + <text name="applyto"> + Tipos de Conteúdo + </text> + <check_box label="Animação" name="check_animation"/> + <check_box label="Partes do Corpo" name="check_bodypart"/> + <check_box label="Roupas" name="check_clothing"/> + <check_box label="Gestos" name="check_gesture"/> + <check_box label="Landmarks" name="check_landmark"/> + <check_box label="Notecards" name="check_notecard"/> + <check_box label="Objetos" name="check_object"/> + <check_box label="Scripts" name="check_script"/> + <check_box label="Sons" name="check_sound"/> + <check_box label="Texturas" name="check_texture"/> + <button label="Marcar Todas" label_selected="Todas" name="check_all"/> + <button label="Desmarcar Todas" label_selected="Nenhuma" name="check_none"/> + <text name="newperms"> + Novas Permissões + </text> + <check_box label="Compartilhar com o grupo" name="share_with_group"/> + <check_box label="Permitir que qualquer um copie" name="everyone_copy"/> + <text name="NextOwnerLabel"> + O próximo dono pode: + </text> + <check_box label="Modificar" name="next_owner_modify"/> + <check_box label="Copiar" name="next_owner_copy"/> + <check_box label="Revender/Dar" name="next_owner_transfer"/> + <button label="Ajuda" name="help"/> + <button label="Aplicar" name="apply"/> + <button label="Fechar" name="close"/> + <string name="nothing_to_modify_text"> + A seleção não contém nenhum conteúdo editável. + </string> + <string name="status_text"> + Definindo permissões em [NAME] + </string> + <string name="start_text"> + Iniciando solicitação de mudança de permissão... + </string> + <string name="done_text"> + Solicitação de mudança de permissão concluÃda. + </string> +</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_buy_currency.xml b/indra/newview/skins/default/xui/pt/floater_buy_currency.xml index ce2fe93705d6b670b1da98e7355434fd4f4adc73..42ba2054757a1c3411098ccd761412aafd4b5542 100644 --- a/indra/newview/skins/default/xui/pt/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/pt/floater_buy_currency.xml @@ -22,13 +22,13 @@ <text name="buy_action"> [NAME] L$ [PRICE] </text> - <text name="currency_action"> + <text name="currency_action" width="60"> Comprar L$ </text> - <line_editor name="currency_amt"> + <line_editor name="currency_amt" left_delta="65" width="70"> 1234 </line_editor> - <text name="currency_est"> + <text name="currency_est" left_delta="72"> por aproxim. US$ [USD] </text> <text name="getting_data"> diff --git a/indra/newview/skins/default/xui/pt/floater_buy_land.xml b/indra/newview/skins/default/xui/pt/floater_buy_land.xml index 396996edb0a6b683e5546c6cd08d135746628b6a..2caf057283f42acd94d59981c2a972e2d6cdeaed 100644 --- a/indra/newview/skins/default/xui/pt/floater_buy_land.xml +++ b/indra/newview/skins/default/xui/pt/floater_buy_land.xml @@ -3,37 +3,44 @@ <text name="region_name_label"> Região: </text> - <text name="region_name_text"> + <text name="region_name_text" left="560"> + (desconhecido) + </text> + <text name="region_type_label"> + Tipo: + </text> + <text name="region_type_text" left="560"> (desconhecido) </text> <text name="estate_name_label"> Propriedade: </text> - <text name="estate_name_text"> + <text name="estate_name_text" left="560"> (desconhecido) </text> - <text name="estate_owner_label"> + <text name="estate_owner_label" width="105" right="565"> Dono da propriedade: </text> - <text name="estate_owner_text"> + <text name="estate_owner_text" left="560" > (desconhecido) </text> <text name="resellable_changeable_label"> Adquiriu um terreno nesta região: </text> <text name="resellable_clause"> - Terra adquirida nesta região pode, ou não, ser revendida. + Pode ou não ser revendida. </text> <text name="changeable_clause"> - pode, ou não, ser unido ou subdividido. + Pode ou não ser unida ou sub-dividida. </text> <text name="covenant_text"> Você deve concordar com o Corretor da Propriedade: </text> + <text left="470" name="covenant_timestamp_text"/> <text_editor name="covenant_editor"> Carregando... </text_editor> - <check_box label="Eu concordo com as definições do Corretor feitas acima." name="agree_covenant"/> + <check_box label="Eu concordo com as definições do Corretor feitas acima." name="agree_covenant"/> <text name="info_parcel_label"> Lote: </text> @@ -50,7 +57,9 @@ Preço: </text> <text name="info_price"> - L$ 1500, objetos inclusos + L$ 1500 +(L$ 1.1/m²) +vendido com os objetos </text> <text name="info_action"> Comprar este lote irá: @@ -58,7 +67,7 @@ <text name="error_message"> Algo ainda não está correto. </text> - <button label="Ir para a página da web" name="error_web"/> + <button label="Ir para a página da web" name="error_web" width="150" /> <text name="account_action"> Evoluir sua conta para membro Premium </text> @@ -74,8 +83,8 @@ Aumente sua taxa de locação de terra para US$ 40/mês. </text> <text name="land_use_reason"> - Você possui 1.309 metros quadrados de terra. -Este lote tem 512 metros quadrados de terra. + Você possui 1309 m² de terra. +Este lote tem 512 m² de terra. </text> <text name="purchase_action"> Pagar ao Residente Joe L$4000 pela terra @@ -83,10 +92,10 @@ Este lote tem 512 metros quadrados de terra. <text name="currency_reason"> Você tem L$2,100. </text> - <text name="currency_action"> + <text name="currency_action" width="116"> Compre L$ adicionais </text> - <line_editor name="currency_amt"> + <line_editor name="currency_amt" left="190" width="65"> 1000 </line_editor> <text name="currency_est"> @@ -152,7 +161,7 @@ Este lote tem 512 metros quadrados de terra. Comprar esta terra irá: </string> <string name="buying_for_group"> - Comprar terra para o grupo: + Ao comprar terra para o grupo: </string> <string name="cannot_buy_now"> Não foi possÃvel comprar agora: @@ -176,24 +185,32 @@ Este lote tem 512 metros quadrados de terra. Pagar L$ [AMOUNT] para [SELLER] por esta terra </string> <string name="buy_for_US"> - Comprar L$ [AMOUNT] por aproximadamente US$ [AMOUNT2] , + Comprar L$ [AMOUNT] por aprox. US$ [AMOUNT2], </string> <string name="parcel_meters"> Este lote tem [AMOUNT] m². </string> <string name="premium_land"> - Esta terra é Premium, e irá cobrar como [AMOUNT] m². + Esta terra é premium e será taxada como [AMOUNT] m². </string> <string name="discounted_land"> - Este lote é promocional, e irá cobrar como [AMOUNT] m². + Esta terra tem desconto e será taxada como [AMOUNT] m². </string> <string name="meters_supports_object"> [AMOUNT] m² -suporta [AMOUNT2] objetos +aceita [AMOUNT2] objetos </string> <string name="sold_with_objects"> vendido com objetos </string> + <string name="sold_without_objects"> + objetos não incluÃdos + </string> + <string name="info_price_string"> + L$ [PRICE] +(L$ [PRICE_PER_SQM]/m²) +[SOLD_WITH_OBJECTS] + </string> <string name="insufficient_land_credits"> O grupo [GROUP] precisará de fundos suficientes de terras contribuÃdas para cobrir este lote antes da aquisição se completar. diff --git a/indra/newview/skins/default/xui/pt/floater_customize.xml b/indra/newview/skins/default/xui/pt/floater_customize.xml index 267612bb9da5375415b13d1cc4fc8c220d933902..7c4fa20f1b00b8b8598ef2c1936bb48d29f8ea8f 100644 --- a/indra/newview/skins/default/xui/pt/floater_customize.xml +++ b/indra/newview/skins/default/xui/pt/floater_customize.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater customize" title="Aparência" width="513"> - <tab_container name="customize tab container" tab_min_width="115" width="511"> +<floater name="floater customize" title="Aparência" width="546"> + <tab_container name="customize tab container" tab_min_width="115" width="544"> <panel label="Partes de corpo" name="body_parts_placeholder"/> <panel label="Forma" name="Shape"> <button label="Reverter" label_selected="Reverter" name="Revert"/> @@ -14,14 +14,9 @@ <button label="Tórax" label_selected="Tórax" name="Torso"/> <button label="Pernas" label_selected="Pernas" name="Legs"/> <radio_group name="sex radio"> - <radio_item length="1" name="radio" type="string"> - Feminino - </radio_item> - <radio_item length="1" name="radio2" type="string"> - Masculino - </radio_item> + <radio_item length="1" name="radio" type="string" label="Feminino" /> + <radio_item length="1" name="radio2" type="string" label="Masculino" /> </radio_group> - <button label="Aleatório" label_selected="Aleatório" name="Randomize"/> <text length="1" name="title" type="string"> [DESC] </text> @@ -38,22 +33,24 @@ Localizado em [PATH] </text> <text length="1" name="not worn instructions" type="string"> - Coloque uma nova forma arrastando uma do seu inventário -para seu avatar. Alternativamente, você pode criar uma nova de um esboço e usá-la. + Coloque uma nova forma arrastando uma do seu inventário para seu avatar. +Alternativamente, você pode criar uma nova de um esboço e usá-la. </text> <text length="1" name="no modify instructions" type="string"> Você não tem permissão para modificar esta vestimenta. </text> + <text name="Item Action Label"> + Forma: + </text> <button label="Criar Nova Forma" label_selected="Criar Nova Forma" name="Create New"/> - <button label="Remover" label_selected="Remover" name="Take Off"/> <button label="Salvar" label_selected="Salvar" name="Save"/> - <button label="Salvar Como" label_selected="Salvar Como" name="Save As"/> + <button label="Salvar como..." label_selected="Salvar como..." name="Save As"/> </panel> <panel label="Pele" name="Skin"> - <button label="Cor de Pele" label_selected="Cor de Pele" name="Skin Color"/> - <button label="Detalhes Faciais" label_selected="Detalhes Faciais" name="Face Detail"/> - <button label="Maquiagem" label_selected="Maquiagem" name="Makeup"/> - <button label="Detalhes do Corpo" label_selected="Detalhes do Corpo" name="Body Detail"/> + <button width="115" label="Cor de Pele" label_selected="Cor de Pele" name="Skin Color"/> + <button width="115" label="Detalhes Faciais" label_selected="Detalhes Faciais" name="Face Detail"/> + <button width="115" label="Maquiagem" label_selected="Maquiagem" name="Makeup"/> + <button width="115" label="Detalhes do Corpo" label_selected="Detalhes do Corpo" name="Body Detail"/> <text length="1" name="title" type="string"> [DESC] </text> @@ -71,26 +68,28 @@ para seu avatar. Alternativamente, você pode criar uma nova de um esboço e us </text> <text length="1" name="not worn instructions" type="string"> Coloque uma nova pele arrastando uma de seu inventário para seu avatar. -Alternativamente, você pode criar uma nova forma a partir de um esboço e usá-la. +Alternativamente, você pode criar uma nova forma a partir de um esboço +e usá-la. </text> <text length="1" name="no modify instructions" type="string"> Você não tem permissão para modificar esta vestimenta. </text> - <texture_picker label="Tatuagens para a cabeça" name="Head Tattoos" tool_tip="Clique para escolher um desenho"/> - <texture_picker label="Tattoos Superiores" name="Upper Tattoos" tool_tip="Clique para escolher um desenho"/> - <texture_picker label="Tattoos Inferiores" name="Lower Tattoos" tool_tip="Clique para escolher um desenho"/> - <button label="Aleatório" label_selected="Aleatório" name="Randomize"/> + <text name="Item Action Label"> + Pele: + </text> + <texture_picker width="86" label="Tattoo: cabeça" name="Head Tattoos" tool_tip="Clique para escolher um desenho"/> + <texture_picker width="86" label="Tattoo: superior" name="Upper Tattoos" tool_tip="Clique para escolher um desenho"/> + <texture_picker width="86" label="Tattoo: inferior" name="Lower Tattoos" tool_tip="Clique para escolher um desenho"/> <button label="Criar Nova Pele" label_selected="Criar Nova Pele" name="Create New"/> - <button label="Remover" label_selected="Remover" name="Take Off"/> <button label="Salvar" label_selected="Salvar" name="Save"/> - <button label="Salvar Como" label_selected="Salvar Como" name="Save As"/> + <button label="Salvar como..." label_selected="Salvar como..." name="Save As"/> <button label="Reverter" label_selected="Reverter" name="Revert"/> </panel> <panel label="Cabelo" name="Hair"> - <button label="Cor" label_selected="Cor" name="Color"/> - <button label="Estilo" label_selected="Estilo" name="Style"/> - <button label="Sombrancelhas" label_selected="Sombrancelhas" name="Eyebrows"/> - <button label="Rosto" label_selected="Rosto" name="Facial"/> + <button width="115" label="Cor" label_selected="Cor" name="Color"/> + <button width="115" label="Estilo" label_selected="Estilo" name="Style"/> + <button width="115" label="Sombrancelhas" label_selected="Sombrancelhas" name="Eyebrows"/> + <button width="115" label="Rosto" label_selected="Rosto" name="Facial"/> <text length="1" name="title" type="string"> [DESC] </text> @@ -108,18 +107,19 @@ Alternativamente, você pode criar uma nova forma a partir de um esboço e usá- </text> <text length="1" name="not worn instructions" type="string"> Ponha um novo cabelo em seu avatar arrastando um do seu inventário. -Alternativamente, você pode criar um novo modelo a partir de um esboço e -usá-lo. +Alternativamente, você pode criar um novo modelo a partir de um esboço +e usá-lo. </text> <text length="1" name="no modify instructions" type="string"> Você não ter permissão para modificar essa vestimenta. </text> + <text name="Item Action Label"> + Cabelo: + </text> <texture_picker label="Texture" name="Texture" tool_tip="Clique para escolher uma imagem"/> - <button label="Aleatório" label_selected="Aleatório" name="Randomize"/> <button label="Criar Novo Cabelo" label_selected="Criar Novo Cabelo" name="Create New"/> - <button label="Remover" label_selected="Remover" name="Take Off"/> <button label="Salvar" label_selected="Salvar" name="Save"/> - <button label="Salvar Como" label_selected="Salvar Como" name="Save As"/> + <button label="Salvar como..." label_selected="Salvar como..." name="Save As"/> <button label="Reverter" label_selected="Reverter" name="Revert"/> </panel> <panel label="Olhos" name="Eyes"> @@ -140,18 +140,18 @@ usá-lo. </text> <text length="1" name="not worn instructions" type="string"> Para colocar novos olhos, arraste um do seu inventário para seu avatar. -Alternativamente, você pode criar um novo modelo de um esboço e -usá-lo. +Alternativamente, você pode criar um novo modelo de um esboço e usá-lo. </text> <text length="1" name="no modify instructions" type="string"> Você não tem permissão para alterar esta vestimenta. </text> + <text name="Item Action Label"> + Olhos: + </text> <texture_picker label="Ãris" name="Iris" tool_tip="Clique para escolher uma imagem"/> - <button label="Aleatório" label_selected="Aleatório" name="Randomize"/> <button label="Criar Novos Olhos" label_selected="Criar Novos Olhos" name="Create New"/> - <button label="Remover" label_selected="Remover" name="Take Off"/> <button label="Salvar" label_selected="Salvar" name="Save"/> - <button label="Salvar Como" label_selected="Salvar Como" name="Save As"/> + <button label="Salvar como..." label_selected="Salvar como..." name="Save As"/> <button label="Reverter" label_selected="Reverter" name="Revert"/> </panel> <panel label="Roupas" name="clothes_placeholder"/> @@ -161,7 +161,7 @@ usá-lo. <button label="Criar Nova Camisa" label_selected="Criar Nova Camisa" name="Create New"/> <button label="Remover" label_selected="Remover" name="Take Off"/> <button label="Salvar" label_selected="Salvar" name="Save"/> - <button label="Salvar Como" label_selected="Salvar Como" name="Save As"/> + <button label="Salvar como..." label_selected="Salvar como..." name="Save As"/> <button label="Reverter" label_selected="Reverter" name="Revert"/> <text length="1" name="title" type="string"> [DESC] @@ -179,13 +179,16 @@ usá-lo. Localizado em [PATH] </text> <text length="1" name="not worn instructions" type="string"> - Para por uma nova camisa em seu avatar, arraste uma do seu -inventário para seu avatar. Alternativamente, você pode criar um -novo modelo a partir de um esboço e usá-lo. + Para por uma nova camisa em seu avatar, arraste uma do seu inventário para +seu avatar. Alternativamente, você pode criar um novo modelo a partir de +um esboço e usá-lo. </text> <text length="1" name="no modify instructions" type="string"> Você não ter permissão para modificar esta vestimenta. </text> + <text name="Item Action Label"> + Camisa: + </text> </panel> <panel label="Calças" name="Pants"> <texture_picker label="Tecido" name="Fabric" tool_tip="Clique para escolher uma imagem"/> @@ -193,7 +196,7 @@ novo modelo a partir de um esboço e usá-lo. <button label="Criar Novas Calças" label_selected="Criar Novas Calças" name="Create New"/> <button label="Remover" label_selected="Remover" name="Take Off"/> <button label="Salvar" label_selected="Salvar" name="Save"/> - <button label="Salvar Como" label_selected="Salvar Como" name="Save As"/> + <button label="Salvar como..." label_selected="Salvar como..." name="Save As"/> <button label="Reverter" label_selected="Reverter" name="Revert"/> <text length="1" name="title" type="string"> [DESC] @@ -218,6 +221,9 @@ de um esboço e usá-lo. <text length="1" name="no modify instructions" type="string"> Você não tem permissão para modificar esta vestimenta. </text> + <text name="Item Action Label"> + Calças: + </text> </panel> <panel label="Sapatos" name="Shoes"> <text length="1" name="title" type="string"> @@ -243,12 +249,15 @@ de um esboço e usá-lo. <text length="1" name="no modify instructions" type="string"> Você não tem permissão para modificar esta vestimenta. </text> + <text name="Item Action Label"> + Sapatos: + </text> <texture_picker label="Tecido" name="Fabric" tool_tip="Clique para escolher uma imagem"/> <color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Clique para pegar o conta-gotas"/> <button label="Criar Novos Sapatos" label_selected="Criar Novos Sapatos" name="Create New" width="166"/> <button label="Remover" label_selected="Remover" name="Take Off"/> <button label="Salvar" label_selected="Salvar" name="Save"/> - <button label="Salvar Como" label_selected="Salvar Como" name="Save As"/> + <button label="Salvar como..." label_selected="Salvar como..." name="Save As"/> <button label="Reverter" label_selected="Reverter" name="Revert"/> </panel> <panel label="Meias" name="Socks"> @@ -269,17 +278,21 @@ de um esboço e usá-lo. </text> <text length="1" name="not worn instructions" type="string"> Para por novas meias em seu avatar, basta arrastar uma nova do seu -inventário. Alternativamente, você pode criar novas meias a partir de um esboço e usá-las. +inventário. Alternativamente, você pode criar novas meias a partir de +um esboço e usá-las. </text> <text length="1" name="no modify instructions" type="string"> Você não tem permissão para modificar essa vestimenta. </text> + <text name="Item Action Label"> + Meias: + </text> <texture_picker label="Tecido" name="Fabric" tool_tip="Clique para escolher uma imagem"/> <color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Clique para pegar o conta-gotas"/> <button label="Criar Novas Meias" label_selected="Criar Novas Meias" name="Create New"/> <button label="Remover" label_selected="Remover" name="Take Off"/> <button label="Salvar" label_selected="Salvar" name="Save"/> - <button label="Salvar Como" label_selected="Salvar Como" name="Save As"/> + <button label="Salvar como..." label_selected="Salvar como..." name="Save As"/> <button label="Reverter" label_selected="Reverter" name="Revert"/> </panel> <panel label="Jaqueta" name="Jacket"> @@ -306,13 +319,16 @@ partir de um esboço e usá-lo. <text length="1" name="no modify instructions" type="string"> Você não tem permissão para modificar esta vestimenta. </text> + <text name="Item Action Label"> + Jaqueta: + </text> <texture_picker label="Tecido Superior" name="Upper Fabric" tool_tip="Clique para escolher uma imagem." width="84"/> <texture_picker label="Tecido Inferior" name="Lower Fabric" tool_tip="Clique para escolher uma imagem." width="84"/> <color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Clique para pegar o conta-gotas"/> <button label="Criar Nova Jaqueta" label_selected="Criar Nova Jaqueta" name="Create New"/> <button label="Remover" label_selected="Remover" name="Take Off"/> <button label="Salvar" label_selected="Salvar" name="Save"/> - <button label="Salvar Como" label_selected="Salvar Como" name="Save As"/> + <button label="Salvar como..." label_selected="Salvar como..." name="Save As"/> <button label="Reverter" label_selected="Reverter" name="Revert"/> </panel> <panel label="Luvas" name="Gloves"> @@ -339,12 +355,15 @@ partir de um esboço e usá-lo. <text length="1" name="no modify instructions" type="string"> Você não tem permissão para modificar essa vestimenta. </text> + <text name="Item Action Label"> + Luvas: + </text> <texture_picker label="Tecido" name="Fabric" tool_tip="Clique para escolher uma imagem"/> <color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Clique para abrir o conta-gotas"/> <button label="Criar Novas Luvas" label_selected="Criar Novas Luvas" name="Create New"/> <button label="Remover" label_selected="Remover" name="Take Off"/> <button label="Salvar" label_selected="Salvar" name="Save"/> - <button label="Salvar Como" label_selected="Salvar Como" name="Save As"/> + <button label="Salvar como..." label_selected="Salvar como..." name="Save As"/> <button label="Reverter" label_selected="Reverter" name="Revert"/> </panel> <panel label="Camiseta" name="Undershirt"> @@ -364,19 +383,22 @@ partir de um esboço e usá-lo. Localizado em [PATH] </text> <text length="1" name="not worn instructions" type="string"> - Para por uma nova Camiseta em seu avatar, basta arrastar um novo -modelo de seu inventário. Alternativamente, você pode criar um -novo modelo a partir de um esboço e usá-lo. + Para por uma nova Camiseta em seu avatar, basta arrastar um novo modelo +de seu inventário. Alternativamente, você pode criar um novo modelo a +partir de um esboço e usá-lo. </text> <text length="1" name="no modify instructions" type="string"> Você não ter permissão para modificar essa vestimenta. </text> + <text name="Item Action Label"> + Camiseta: + </text> <texture_picker label="Tecido" name="Fabric" tool_tip="Clique para escolher uma imagem"/> <color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Clique para abrir o conta-gotas"/> - <button label="Criar Nova Camiseta" label_selected="Criar Nova Roupa de Baixo" name="Create New"/> + <button label="Criar Nova Camiseta" label_selected="Criar Nova Camiseta" name="Create New"/> <button label="Remover" label_selected="Remover" name="Take Off"/> <button label="Salvar" label_selected="Salvar" name="Save"/> - <button label="Salvar Como" label_selected="Salvar Como" name="Save As"/> + <button label="Salvar como..." label_selected="Salvar como..." name="Save As"/> <button label="Reverter" label_selected="Reverter" name="Revert"/> </panel> <panel label="Roupas de Baixo" name="Underpants"> @@ -403,12 +425,15 @@ modelo a partir de um esboço e usá-lo. <text length="1" name="no modify instructions" type="string"> Você não tem permissão para modificar essa vestimenta. </text> + <text name="Item Action Label"> + Roupas de Baixo: + </text> <texture_picker label="Tecido" name="Fabric" tool_tip="Clique para escolher uma imagem"/> <color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Clique para pegar o conta-gotas"/> - <button label="Criar Novas Roupas de Baixo" label_selected="Criar Novas Roupas de Baixo" name="Create New" width="176"/> + <button label="Criar Novas Roupas de Baixo" label_selected="Criar Novas Roupas de Baixo" name="Create New" width="180"/> <button label="Remover" label_selected="Remover" name="Take Off"/> <button label="Salvar" label_selected="Salvar" name="Save"/> - <button label="Salvar Como" label_selected="Salvar Como" name="Save As"/> + <button label="Salvar como..." label_selected="Salvar como..." name="Save As"/> <button label="Reverter" label_selected="Reverter" name="Revert"/> </panel> <panel label="Saia" name="Skirt"> @@ -435,17 +460,20 @@ partir de um esboço e usá-lo. <text length="1" name="no modify instructions" type="string"> Você não tem permissão para modificar esta vestimenta. </text> + <text name="Item Action Label"> + Saia: + </text> <texture_picker label="Tecido" name="Fabric" tool_tip="Clique para escolher uma imagem"/> <color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Click to open Color Picker"/> <button label="Criar Nova Saia" label_selected="Criar Nova Saia" name="Create New"/> <button label="Remover" label_selected="Remover" name="Take Off"/> <button label="Salvar" label_selected="Salvar" name="Save"/> - <button label="Salvar Como" label_selected="Salvar Como" name="Save As"/> + <button label="Salvar como..." label_selected="Salvar como..." name="Save As"/> <button label="Reverter" label_selected="Reverter" name="Revert"/> </panel> </tab_container> - <scroll_container left="216" name="panel_container"/> - <button label="Fechar" label_selected="Fechar" name="Close"/> - <button label="Salvar Tudo" label_selected="Salvar Tudo" name="Save All"/> - <button label="Criar Visual" label_selected="Criar Visual" name="Make Outfit"/> + <scroll_container left="249" name="panel_container"/> + <button label="Cancelar" label_selected="Cancelar" name="Cancel"/> + <button label="OK" label_selected="OK" name="Ok"/> + <button label="Criar Vestimenta..." label_selected="Criar Vestimenta..." name="Make Outfit" left="117" width="125" /> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_device_settings.xml b/indra/newview/skins/default/xui/pt/floater_device_settings.xml index b6206fe2b815585a7028639d8c9149b17d6c4c58..9ce773116c4cf2091add5ab10bedf51660d1c024 100644 --- a/indra/newview/skins/default/xui/pt/floater_device_settings.xml +++ b/indra/newview/skins/default/xui/pt/floater_device_settings.xml @@ -1,2 +1,2 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_device_settings" title="Ajustes do Dispositivo de Conversa por Voz"/> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_device_settings" title="Ajustes do Dispositivo de Conversa por Voz"/> diff --git a/indra/newview/skins/default/xui/pt/floater_font_test.xml b/indra/newview/skins/default/xui/pt/floater_font_test.xml new file mode 100644 index 0000000000000000000000000000000000000000..eb52d3341d90851598c19b86d6baadce3f686da2 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/floater_font_test.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="contents" title="Teste de Fonte"> + <text name="linea"> + OverrideTest, deveria aparecer aqui como Times. (De default/xui/en-us) + </text> +</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_image_preview.xml b/indra/newview/skins/default/xui/pt/floater_image_preview.xml index b32f15314756dac1204533c9ef465ff65b710a5b..a0d8c02ef0550e5c801bd693660e7795ff83d6a8 100644 --- a/indra/newview/skins/default/xui/pt/floater_image_preview.xml +++ b/indra/newview/skins/default/xui/pt/floater_image_preview.xml @@ -7,9 +7,10 @@ Descrição: </text> <text name="preview_label"> - Prévia da Imagem como: + Prévia da +imagem como: </text> - <combo_box label="Tipo de Roupas" name="clothing_type_combo"> + <combo_box label="Tipo de Roupas" name="clothing_type_combo" left="100" width="186"> <combo_box.item name="Image" label="Imagem" /> <combo_box.item name="Hair" label="Cabelo" /> <combo_box.item name="FemaleHead" label="Cabeça Feminina" /> diff --git a/indra/newview/skins/default/xui/pt/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/pt/floater_inventory_item_properties.xml index 3711a4c8711f9be3815f7abf86e1439cca2e1ba0..69752253b6db25f69efa23bbbc925f8c69a5fd99 100644 --- a/indra/newview/skins/default/xui/pt/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/pt/floater_inventory_item_properties.xml @@ -49,7 +49,7 @@ </text> <check_box label="Compartilhar com o grupo" name="CheckShareWithGroup"/> <check_box label="Permitir qualquer um copiar" name="CheckEveryoneCopy"/> - <text name="NextOwnerLabel"> + <text name="NextOwnerLabel" width="230"> Próximo dono pode: </text> <check_box label="Modificar" name="CheckNextOwnerModify"/> @@ -60,12 +60,8 @@ </text> <check_box label="À venda" name="CheckPurchase"/> <radio_group name="RadioSaleType"> - <radio_item name="radio"> - Original - </radio_item> - <radio_item name="radio2"> - Cópia - </radio_item> + <radio_item name="radio" label="Original" /> + <radio_item name="radio2" label="Cópia" /> </radio_group> <text name="TextPrice"> Price: L$ diff --git a/indra/newview/skins/default/xui/pt/floater_joystick.xml b/indra/newview/skins/default/xui/pt/floater_joystick.xml index 90faa6bd057729315d087072aac8f1690cfb28ae..6c2e4a51444a9d09150a0b30def212dfb9f01ac0 100644 --- a/indra/newview/skins/default/xui/pt/floater_joystick.xml +++ b/indra/newview/skins/default/xui/pt/floater_joystick.xml @@ -71,6 +71,8 @@ Zona Morta de Zoom </text> <button label="Padrões do Navegador Espacial" name="SpaceNavigatorDefaults"/> + <button label="OK" label_selected="OK" name="ok_btn"/> + <button label="Cancelar" label_selected="Cancelar" name="cancel_btn"/> <string name="JoystickMonitor"> Monitor do Joystick </string> diff --git a/indra/newview/skins/default/xui/pt/floater_land_holdings.xml b/indra/newview/skins/default/xui/pt/floater_land_holdings.xml index 848ab2ed2adc3fb2576aca06af8cd697b3d2f1da..1a640c9793df4a1abf8e07681da6bd10abcd0f20 100644 --- a/indra/newview/skins/default/xui/pt/floater_land_holdings.xml +++ b/indra/newview/skins/default/xui/pt/floater_land_holdings.xml @@ -1,8 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="land holdings floater" title="Meu terreno"> <scroll_list name="parcel list"> - <column label="Nome" name="name"/> - <column label="Localização" name="location"/> + <column label="Nome do Lote" name="name"/> + <column label="Região" name="location"/> + <column label="Tipo" name="type"/> <column label="Ãrea" name="area"/> </scroll_list> <button label="Teletransporte" label_selected="Teletransporte" name="Teleport" tool_tip="Teletransportar para o centro do terreno."/> diff --git a/indra/newview/skins/default/xui/pt/floater_mute_object.xml b/indra/newview/skins/default/xui/pt/floater_mute_object.xml index 32dd62c96bde323cc2833fcd821eb84fd3832604..d967f527aed0ecda20ef6702401dcfad4dc8be1b 100644 --- a/indra/newview/skins/default/xui/pt/floater_mute_object.xml +++ b/indra/newview/skins/default/xui/pt/floater_mute_object.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="mute by name" title="Emudecer objeto pelo nome"> +<floater name="mute by name" title="Silenciar objeto pelo nome"> <text name="message"> - Emudecer pelo nome afeta apenas conversa de objeto e MI, não sons. Você deve digitar o nome exato do objeto. + Silenciar pelo nome afeta apenas conversa de objeto e MI, não sons. Você deve digitar o nome exato do objeto. </text> <line_editor name="object_name"> Nome do objeto diff --git a/indra/newview/skins/default/xui/pt/floater_my_friends.xml b/indra/newview/skins/default/xui/pt/floater_my_friends.xml index 55df674550c41bbc2b0f798214d71ef281d20a18..a78b255f8aba0d8d4d26339d701a32221ad443c2 100644 --- a/indra/newview/skins/default/xui/pt/floater_my_friends.xml +++ b/indra/newview/skins/default/xui/pt/floater_my_friends.xml @@ -1,7 +1,7 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_my_friends" title="Contatos"> - <tab_container name="friends_and_groups"> - <panel label="Amigos" name="friends_panel"/> - <panel label="Grupos" name="groups_panel"/> - </tab_container> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_my_friends" title="Contatos"> + <tab_container name="friends_and_groups"> + <panel label="Amigos" name="friends_panel"/> + <panel label="Grupos" name="groups_panel"/> + </tab_container> +</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_perm_prefs.xml b/indra/newview/skins/default/xui/pt/floater_perm_prefs.xml new file mode 100644 index 0000000000000000000000000000000000000000..9bb7f04256f9ccc703aac9e5a2a560973a788530 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/floater_perm_prefs.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="perm prefs" title="Permissões Padrão de Upload"> + <panel label="Permissões" name="permissions"> + <button label="?" label_selected="?" name="help"/> + <check_box label="Compartilhar com o grupo" name="share_with_group"/> + <check_box label="Permitir que qualquer um copie" name="everyone_copy"/> + <text name="NextOwnerLabel"> + O próximo dono pode: + </text> + <check_box label="Modificar" name="next_owner_modify"/> + <check_box label="Copiar" name="next_owner_copy"/> + <check_box label="Revender/Dar" name="next_owner_transfer"/> + </panel> + <button label="OK" label_selected="OK" name="ok"/> + <button label="Cancelar" label_selected="Cancelar" name="cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_post_process.xml b/indra/newview/skins/default/xui/pt/floater_post_process.xml index e2fcbe434c3d3e6ab377d228cb73fe50e03c8289..8f5f5db7430cc76f20b7fe0a760eb45877c559c9 100644 --- a/indra/newview/skins/default/xui/pt/floater_post_process.xml +++ b/indra/newview/skins/default/xui/pt/floater_post_process.xml @@ -1,53 +1,53 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Post-Process Floater" title="Ajustes de Pós-processamento"> - <tab_container name="Post-Process Tabs"> - <panel label="Filtro de Cor" name="wmiColorFilterPanel"> - <check_box label="Habilitar" name="wmiColorFilterToggle"/> - <text name="wmiColorFilterBrightnessText"> - Brilho - </text> - <text name="wmiColorFilterSaturationText"> - Saturação - </text> - <text name="wmiColorFilterContrastText"> - Contraste - </text> - <text name="wmiColorFilterBaseText"> - Cor Base do Contraste - </text> - <slider label="R" name="wmiColorFilterBaseR"/> - <slider label="G" name="wmiColorFilterBaseG"/> - <slider label="B" name="wmiColorFilterBaseB"/> - <slider label="I" name="wmiColorFilterBaseI"/> - </panel> - <panel label="visão Noturna" name="wmiNightVisionPanel"> - <check_box label="Habilitar" name="wmiNightVisionToggle"/> - <text name="wmiNightVisionBrightMultText"> - Múltiplo de Amplificação de Luz - </text> - <text name="wmiNightVisionNoiseSizeText"> - Tamanho de RuÃdo - </text> - <text name="wmiNightVisionNoiseStrengthText"> - Intensidade de RuÃdo - </text> - </panel> - <panel label="Florescência" name="wmiBloomPanel"> - <check_box label="Habilitar" name="wmiBloomToggle"/> - <text name="wmiBloomExtractText"> - Extração de Luminosidade - </text> - <text name="wmiBloomSizeText"> - Tamanho da florescência - </text> - <text name="wmiBloomStrengthText"> - Inensidade da florescência - </text> - </panel> - <panel label="Extras" name="Extras"> - <button label="CarregaEfeito" label_selected="CarregaEfeito" name="PPLoadEffect"/> - <button label="SalvaEfeito" label_selected="SalvaEfeito" name="PPSaveEffect"/> - <line_editor label="Nome do Efeito" name="PPEffectNameEditor"/> - </panel> - </tab_container> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Post-Process Floater" title="Ajustes de Pós-processamento"> + <tab_container name="Post-Process Tabs"> + <panel label="Filtro de Cor" name="wmiColorFilterPanel"> + <check_box label="Habilitar" name="wmiColorFilterToggle"/> + <text name="wmiColorFilterBrightnessText"> + Brilho + </text> + <text name="wmiColorFilterSaturationText"> + Saturação + </text> + <text name="wmiColorFilterContrastText"> + Contraste + </text> + <text name="wmiColorFilterBaseText"> + Cor Base do Contraste + </text> + <slider label="R" name="wmiColorFilterBaseR"/> + <slider label="G" name="wmiColorFilterBaseG"/> + <slider label="B" name="wmiColorFilterBaseB"/> + <slider label="I" name="wmiColorFilterBaseI"/> + </panel> + <panel label="visão Noturna" name="wmiNightVisionPanel"> + <check_box label="Habilitar" name="wmiNightVisionToggle"/> + <text name="wmiNightVisionBrightMultText"> + Múltiplo de Amplificação de Luz + </text> + <text name="wmiNightVisionNoiseSizeText"> + Tamanho de RuÃdo + </text> + <text name="wmiNightVisionNoiseStrengthText"> + Intensidade de RuÃdo + </text> + </panel> + <panel label="Florescência" name="wmiBloomPanel"> + <check_box label="Habilitar" name="wmiBloomToggle"/> + <text name="wmiBloomExtractText"> + Extração de Luminosidade + </text> + <text name="wmiBloomSizeText"> + Tamanho da florescência + </text> + <text name="wmiBloomStrengthText"> + Inensidade da florescência + </text> + </panel> + <panel label="Extras" name="Extras"> + <button label="CarregaEfeito" label_selected="CarregaEfeito" name="PPLoadEffect"/> + <button label="SalvaEfeito" label_selected="SalvaEfeito" name="PPSaveEffect"/> + <line_editor label="Nome do Efeito" name="PPEffectNameEditor"/> + </panel> + </tab_container> +</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_preview_gesture.xml b/indra/newview/skins/default/xui/pt/floater_preview_gesture.xml index 416d65fde422f6fc2bf4f410e826cd0fb02db927..87bf86c2827b983c58117e8294bb2c453c942e82 100644 --- a/indra/newview/skins/default/xui/pt/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/pt/floater_preview_gesture.xml @@ -22,37 +22,37 @@ <text name="key_label"> Tecla de Atalho: </text> - <combo_box label="Nenhum" name="modifier_combo"/> - <combo_box label="Nenhum" name="key_combo"/> + <combo_box label="Nenhum" name="modifier_combo" left="116" width="76"/> + <combo_box label="Nenhum" name="key_combo" width="76" left_delta="80"/> <text name="library_label"> Biblioteca: </text> <text name="steps_label"> Passos: </text> - <scroll_list name="library_list"> + <scroll_list name="library_list" width="84"> Animação Som Bate Papo Esperar </scroll_list> - <button label="Incluir" name="add_btn"/> - <button label="Mover Para Cima" name="up_btn"/> - <button label="Mover Para Baixo" name="down_btn"/> - <button label="Remover" name="delete_btn"/> + <button label="Incluir" name="add_btn" left="118" width="87"/> + <button label="Mover Para Cima" name="up_btn" width="114" left_delta="-13"/> + <button label="Mover Para Baixo" name="down_btn" width="114"/> + <button label="Remover" name="delete_btn" width="84" left_delta="13"/> + <scroll_list left="226" name="step_list" width="205" /> <text name="help_label"> - Todos os passos acontecem simultaneamente, a menos que você inclua passos de espera. + Todos os passos acontecem +simultaneamente, a menos que +você inclua passos de espera. </text> <radio_group name="animation_trigger_type"> - <radio_item name="start"> - Iniciar - </radio_item> - <radio_item name="stop"> - Parar - </radio_item> + <radio_item name="start" label="Iniciar" /> + <radio_item name="stop" label="Parar" /> </radio_group> - <check_box label="até que as animações estejam concluÃdas" name="wait_anim_check"/> - <check_box label="tempo em segundos" name="wait_time_check"/> + <check_box bottom_delta="34" label="até que as animações estejam concluÃdas" name="wait_anim_check"/> + <check_box bottom_delta="-30" label="tempo em segundos" name="wait_time_check"/> + <line_editor left_delta="130" name="wait_time_editor" /> <check_box label="Ativar" name="active_check" tool_tip="Gestos ativos podem ser gatilhados escrevendo suas frases de gatilho no chat ou através de suas teclas de atalho. Gestos normalmente ficam inativos quando existe um conflito nas teclas de atalho."/> <button label="Prévia" name="preview_btn"/> <button label="Salvar" name="save_btn"/> diff --git a/indra/newview/skins/default/xui/pt/floater_report_abuse.xml b/indra/newview/skins/default/xui/pt/floater_report_abuse.xml index f7a9c19d92493439f6dfdf28855435e69057006a..79dcf7649433e28dc2fd19e19c74477c6c1e8d46 100644 --- a/indra/newview/skins/default/xui/pt/floater_report_abuse.xml +++ b/indra/newview/skins/default/xui/pt/floater_report_abuse.xml @@ -39,9 +39,9 @@ <combo_box.item name="Select_category" label="Selecionar categoria"/> <combo_box.item name="Age__Age_play" label="Idade > Idade no jogo"/> <combo_box.item name="Age__Adult_resident_on_Teen_Second_Life" label="Idade > Residente adulto no Second Life Jovem"/> - - - + <combo_item name="Age__Underage_resident_outside_of_Teen_Second_Life"> + Idade > Residente menor de idade fora do Second Life Teen + </combo_item> <combo_box.item name="Assault__Combat_sandbox___unsafe_area" label="Assalto > Sandbox de combate / área não segura"/> <combo_box.item name="Assault__Safe_area" label="Assalto > Ãrea segura"/> <combo_box.item name="Assault__Weapons_testing_sandbox" label="Assalto > Testando armas em sandbox"/> @@ -65,13 +65,13 @@ <combo_box.item name="Harassment__Solicting_inciting_others_to_violate_ToS" label="Perturbação > Solicitando/incitando outros a violarem o ToS"/> <combo_box.item name="Harassment__Verbal_abuse" label="Perturbação > Abuso verbal"/> <combo_box.item name="Indecency__Broadly_offensive_content_or_conduct" label="Indecência > Conteúdo ou conduta amplamente ofensivos"/> - - - <combo_box.item name="Indecency__Inappropriate_avatar_name" label="Indecência > Nome de avatar inapropriado"/> - - - + <combo_item name="Indecency__Mature_content_in_PG_region"> + Indecência > Conduta ou conteúdo inapropriados numa região PG + </combo_item> + <combo_item name="Indecency__Inappropriate_content_in_Mature_region"> + Indecência > Conduta ou conteúdo inapropriados numa região Mature + </combo_item> <combo_box.item name="Intellectual_property_infringement_Content_Removal" label="Violação de propriedade intelectual > Remoção de Conteúdo"/> <combo_box.item name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit" label="Violação de Propriedade intelectual > Cópia Ilegal ou Aproveitar-se de Permissões"/> <combo_box.item name="Intolerance" label="Intolerância"/> @@ -98,8 +98,8 @@ </text> <text name="bug_aviso"> Por favor, seja especÃfico(a) sobre data, localidade, -natureza do abuso, texto relevante de conversa/MI e selecione o objeto, -se possÃvel. +natureza do abuso, texto relevante de conversa/MI e +selecione o objeto, se possÃvel. </text> <text name="incomplete_title"> Nota: Relatos incompletos não serão investigados. diff --git a/indra/newview/skins/default/xui/pt/floater_select_key.xml b/indra/newview/skins/default/xui/pt/floater_select_key.xml index 049852e80937705fc4d1e314b79491e87042c056..e41a565d11360033be15cdfa2da91424d0a0073e 100644 --- a/indra/newview/skins/default/xui/pt/floater_select_key.xml +++ b/indra/newview/skins/default/xui/pt/floater_select_key.xml @@ -1,7 +1,7 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="modal container" title=""> - <button label="Cancelar" label_selected="Cancelar" name="Cancel"/> - <text name="Save item as:"> - Aperte uma tecla para selecionar - </text> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="modal container" title=""> + <button label="Cancelar" label_selected="Cancelar" name="Cancel"/> + <text name="Save item as:"> + Aperte uma tecla para selecionar + </text> +</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_sell_land.xml b/indra/newview/skins/default/xui/pt/floater_sell_land.xml index 221145079b54734bcf08b719a392ecef5c499e83..20f9972c73efd5de26d676fa161394c0bc60ec9a 100644 --- a/indra/newview/skins/default/xui/pt/floater_sell_land.xml +++ b/indra/newview/skins/default/xui/pt/floater_sell_land.xml @@ -10,11 +10,12 @@ Tamanho: </text> <text name="info_size"> - [AREA] m². + [AREA] m² </text> - <text name="info_action"> + <text name="info_action" bottom_delta="-67"> Para vender este lote: </text> + <icon bottom_delta="-66" name="step_price" /> <text name="price_label"> Defina um preço: </text> @@ -31,9 +32,10 @@ Vender esta terra para: </text> <text name="sell_to_text"> - Escolha se venderá para qualquer um ou para um comprador em particular. + Escolha se venderá para qualquer um ou para um comprador em +particular. </text> - <combo_box name="sell_to"> + <combo_box name="sell_to" bottom_delta="-32"> <combo_box.item name="--selectone--" label="Selecione um --" /> <combo_box.item name="Anyone" label="Qualquer um" /> <combo_box.item name="Specificuser:" label="Usuário EspecÃfico:" /> @@ -43,15 +45,12 @@ Vender os objetos com a terra? </text> <text name="sell_objects_text"> - Os objetos tranferÃveis do proprietário do terreno que estão neste lote irão mudar de propriedade. - </text> - <radio_group name="sell_objects"> - <radio_item name="no"> - Não, manter a propriedade sobre os objetos - </radio_item> - <radio_item name="yes"> - Sim, vender objetos com a terra - </radio_item> + Os objetos tranferÃveis do proprietário do terreno que estão neste +lote irão mudar de propriedade. + </text> + <radio_group name="sell_objects" bottom_delta="-58"> + <radio_item name="no" label="Não, manter a propriedade sobre os objetos" /> + <radio_item name="yes" label="Sim, vender objetos com a terra" /> </radio_group> <button label="Mostrar Objetos" name="show_objects"/> <text name="nag_message_label"> diff --git a/indra/newview/skins/default/xui/pt/floater_snapshot.xml b/indra/newview/skins/default/xui/pt/floater_snapshot.xml index 641ee332fcd83b3aa4eb0862ecf1bfbcf6fcd3ed..2f6efd49986e05d2d314b9a026cb54a5b5ccddef 100644 --- a/indra/newview/skins/default/xui/pt/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/pt/floater_snapshot.xml @@ -4,15 +4,9 @@ Destino da foto </text> <radio_group label="Tipo de Foto" name="snapshot_type_radio"> - <radio_item name="postcard"> - Enviar por email - </radio_item> - <radio_item name="texture"> - Salvar no seu inventário (L$[AMOUNT]) - </radio_item> - <radio_item name="local"> - Salvar no seu disco rÃgido - </radio_item> + <radio_item name="postcard" label="Enviar por email" /> + <radio_item name="texture" label="Salvar no seu inventário (L$[AMOUNT])" /> + <radio_item name="local" label="Salvar no seu disco rÃgido" /> </radio_group> <text name="file_size_label"> Tamanho do arquivo: [SIZE] KB @@ -66,8 +60,8 @@ <combo_box.item name="JPEG" label="JPEG" /> <combo_box.item name="BMP" label="BMP" /> </combo_box> - <spinner label="Largura" name="snapshot_width"/> - <spinner label="Altura" name="snapshot_height"/> + <spinner label="Largura" name="snapshot_width" label_width="41" width="101"/> + <spinner label="Altura" name="snapshot_height" label_width="31" width="91" left="119"/> <check_box label="Restringir proporções" name="keep_aspect_check"/> <slider label="Qualidade da Imagem" name="image_quality_slider"/> <text name="layer_type_label"> @@ -79,10 +73,10 @@ <combo_box.item name="ObjectMattes" label="Decoração do Objeto" /> </combo_box> <check_box label="Mostrar interface na Foto" name="ui_check"/> - <check_box label="Mostrar Objetos HUD na Foto" name="hud_check"/> - <check_box label="Manter aberto após salvar" name="keep_open_check"/> - <check_box label="Quadro Congelado (prévia da tela inteira)" name="freeze_frame_check"/> - <check_box label="Auto-atualizar" name="auto_snapshot_check"/> + <check_box bottom_delta="-17" label="Mostrar Objetos HUD na Foto" name="hud_check"/> + <check_box bottom_delta="-17" label="Manter aberto após salvar" name="keep_open_check"/> + <check_box bottom_delta="-17" label="Quadro Congelado (prévia da tela inteira)" name="freeze_frame_check"/> + <check_box bottom_delta="-29" label="Auto-atualizar" name="auto_snapshot_check"/> <string name="unknown"> desconhecido </string> diff --git a/indra/newview/skins/default/xui/pt/floater_sound_preview.xml b/indra/newview/skins/default/xui/pt/floater_sound_preview.xml index 34a8b6e9ef2c2a7d6edfac9ee126aa4b83be7a36..df76499f42bf40a793ed9f5460f896d5d9adae8f 100644 --- a/indra/newview/skins/default/xui/pt/floater_sound_preview.xml +++ b/indra/newview/skins/default/xui/pt/floater_sound_preview.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Name/Description" title="sound.wav"> +<floater name="Sound Preview" title="sound.wav"> <text name="name_label"> Nome: </text> diff --git a/indra/newview/skins/default/xui/pt/floater_statistics.xml b/indra/newview/skins/default/xui/pt/floater_statistics.xml new file mode 100644 index 0000000000000000000000000000000000000000..d26c7081cc903d49b29adaacff7198af1ef39970 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/floater_statistics.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="stats floater" title="StatÃstica"/> diff --git a/indra/newview/skins/default/xui/pt/floater_tools.xml b/indra/newview/skins/default/xui/pt/floater_tools.xml index d9b1e342d98f207670c4d50a98d33ba3a864ebee..9a3d14c0ea816acb12f5647549cf4f9fa262e927 100644 --- a/indra/newview/skins/default/xui/pt/floater_tools.xml +++ b/indra/newview/skins/default/xui/pt/floater_tools.xml @@ -17,12 +17,18 @@ <check_box label="Selecionar Textura" name="radio select face"/> <check_box label="Editar partes unidas" name="checkbox edit linked parts"/> <text name="text ruler mode"> - Modo da régua: + Régua: </text> <combo_box name="combobox grid mode"> - <combo_box.item name="World" label="Mundo"/> - <combo_box.item name="Local" label="Local"/> - <combo_box.item name="Reference" label="Referência"/> + <combo_item name="World"> + Mundo + </combo_item> + <combo_item name="Local"> + Local + </combo_item> + <combo_item name="Reference"> + Referência + </combo_item> </combo_box> <check_box label="Esticar ambos os lados" name="checkbox uniform"/> <check_box label="Esticar Texturas" name="checkbox stretch textures"/> @@ -46,29 +52,33 @@ <button label="" label_selected="" name="ToolRing" tool_tip="Anel"/> <button label="" label_selected="" name="ToolTree" tool_tip="Ãrvore"/> <button label="" label_selected="" name="ToolGrass" tool_tip="Grama"/> - <check_box label="Manter ferramenta selecionada" name="checkbox sticky"/> - <check_box label="Copiar Seleção" name="checkbox copy selection"/> - <check_box label="Copiar Centro" name="checkbox copy centers"/> - <check_box label="Rotacionar Cópia" name="checkbox copy rotates"/> + <check_box label="Manter selecionado" name="checkbox sticky"/> + <check_box label="Copiar selecionado" name="checkbox copy selection"/> + <check_box label="Centro" name="checkbox copy centers"/> + <check_box label="Rotacionar" name="checkbox copy rotates"/> <check_box label="Selecionar Terra" name="radio select land"/> - <check_box label="Aplainar Terra" name="radio flatten"/> - <check_box label="Elevar Terra" name="radio raise"/> - <check_box label="Baixar Terra" name="radio lower"/> - <check_box label="Suavizar Terra" name="radio smooth"/> - <check_box label="Terreno RÃgido" name="radio noise"/> - <check_box label="Reverter Terra" name="radio revert"/> - <combo_box name="combobox brush size"> - <combo_box.item name="Small" label="Pequeno"/> - <combo_box.item name="Medium" label="Médio"/> - <combo_box.item name="Large" label="Grande"/> - </combo_box> + <check_box label="Aplainar" name="radio flatten"/> + <check_box label="Subir" name="radio raise"/> + <check_box label="Abaixar" name="radio lower"/> + <check_box label="Suavizar" name="radio smooth"/> + <check_box label="Endurecer" name="radio noise"/> + <check_box label="Reverter" name="radio revert"/> + <button label="Aplicar" label_selected="Aplicar" name="button apply to selection" tool_tip="Modificar Terra Selecionada"/> + <text name="Bulldozer:"> + Escavadeira: + </text> + <text name="Dozer Size:"> + Tamanho + </text> <text name="Strength:"> - Força: + Força + </text> + <text name="obj_count"> + Objetos selecionados: [COUNT] + </text> + <text name="prim_count"> + primitivas: [COUNT] </text> - <button label="Aplicar no selecionado" label_selected="Aplicar no selecionado" name="button apply to selection" tool_tip="Modificar Terra Selecionada"/> - <check_box label="Mostrar Proprietários" name="checkbox show owners"/> - <button label="Mais >>" name="button more" tool_tip="Opções Avançadas"/> - <button label="<< Menos" name="button less" tool_tip="Opções Avançadas"/> <tab_container name="Object Info Tabs"> <panel label="Comum" name="General"> <text name="Name:"> @@ -98,16 +108,13 @@ Os Lindens </text> <button label="Definir..." label_selected="Definir..." name="button set group"/> - <text name="prim info"> - 1 Objeto, 1 Primitiva - </text> <text name="Permissions:"> Permissões: </text> <text name="perm_modify"> Você pode modificar este objeto. </text> - <check_box label="Compartilhar com o Grupo" name="checkbox share with group" tool_tip="Permitir que o membros do grupo movam, modifiquem, copiem e apaguem"/> + <check_box label="Compartilhar com o Grupo" name="checkbox share with group" tool_tip="Permite que todos os membros do grupo definido compartilhem e usem suas permissões para este objeto. Você precisa Doar ao Grupo para habilitar as restrições de função."/> <string name="text deed continued"> Doar... </string> @@ -143,13 +150,27 @@ Quando clicado com o botão esquerdo: </text> <combo_box name="clickaction"> - <combo_box.item name="Touch/grab(default)" label="Tocar/Pegar (padrão)"/> - <combo_box.item name="Sitonobject" label="Sentar no objeto"/> - <combo_box.item name="Buyobject" label="Comprar objeto"/> - <combo_box.item name="Payobject" label="Pagar Objeto"/> - <combo_box.item name="Open" label="Abrir"/> - <combo_box.item name="Play" label="Executar a mÃdia do lote"/> - <combo_box.item name="Opemmedia" label="Abrir a mÃdia do lote"/> + <combo_item name="Touch/grab(default)"> + Tocar/Pegar (padrão) + </combo_item> + <combo_item name="Sitonobject"> + Sentar no objeto + </combo_item> + <combo_item name="Buyobject"> + Comprar objeto + </combo_item> + <combo_item name="Payobject"> + Pagar Objeto + </combo_item> + <combo_item name="Open"> + Abrir + </combo_item> + <combo_item name="Play"> + Executar a mÃdia do lote + </combo_item> + <combo_item name="Opemmedia"> + Abrir a mÃdia do lote + </combo_item> </combo_box> <text name="B:"> B: @@ -233,26 +254,56 @@ Material </text> <combo_box name="material"> - <combo_box.item name="Stone" label="Pedra"/> - <combo_box.item name="Metal" label="Metal"/> - <combo_box.item name="Glass" label="Vidro"/> - <combo_box.item name="Wood" label="Madeira"/> - <combo_box.item name="Flesh" label="Carne"/> - <combo_box.item name="Plastic" label="Plástico"/> - <combo_box.item name="Rubber" label="Couro"/> + <combo_item name="Stone"> + Pedra + </combo_item> + <combo_item name="Metal"> + Metal + </combo_item> + <combo_item name="Glass"> + Vidro + </combo_item> + <combo_item name="Wood"> + Madeira + </combo_item> + <combo_item name="Flesh"> + Carne + </combo_item> + <combo_item name="Plastic"> + Plástico + </combo_item> + <combo_item name="Rubber"> + Couro + </combo_item> </combo_box> <text name="label basetype"> Forma básica </text> <combo_box name="comboBaseType"> - <combo_box.item name="Box" label="Caixa"/> - <combo_box.item name="Cylinder" label="Cilindro"/> - <combo_box.item name="Prism" label="Prisma"/> - <combo_box.item name="Sphere" label="Esfera"/> - <combo_box.item name="Torus" label="Toróide"/> - <combo_box.item name="Tube" label="Tubo"/> - <combo_box.item name="Ring" label="Anel"/> - <combo_box.item name="Sculpted" label="Esculpida"/> + <combo_item name="Box"> + Caixa + </combo_item> + <combo_item name="Cylinder"> + Cilindro + </combo_item> + <combo_item name="Prism"> + Prisma + </combo_item> + <combo_item name="Sphere"> + Esfera + </combo_item> + <combo_item name="Torus"> + Toróide + </combo_item> + <combo_item name="Tube"> + Tubo + </combo_item> + <combo_item name="Ring"> + Anel + </combo_item> + <combo_item name="Sculpted"> + Esculpida + </combo_item> </combo_box> <text name="text cut"> Recorte inicial e final @@ -269,10 +320,18 @@ Forma Vazia </text> <combo_box name="hole"> - <combo_box.item name="Default" label="Padrão"/> - <combo_box.item name="Circle" label="Circulo"/> - <combo_box.item name="Square" label="Quadrado"/> - <combo_box.item name="Triangle" label="Triâgulo"/> + <combo_item name="Default"> + Padrão + </combo_item> + <combo_item name="Circle"> + Circulo + </combo_item> + <combo_item name="Square"> + Quadrado + </combo_item> + <combo_item name="Triangle"> + Triâgulo + </combo_item> </combo_box> <text name="text twist"> Torcer no InÃcio e final @@ -298,6 +357,9 @@ <text name="advanced_dimple"> Cova InÃcio e Final </text> + <text name="advanced_slice"> + Pedaço InÃcio (B) e Fim (E) + </text> <spinner label="B" name="Path Limit Begin"/> <spinner label="E" name="Path Limit End"/> <text name="text taper2"> @@ -318,11 +380,21 @@ Tipo costura </text> <combo_box name="sculpt type control"> - <combo_box.item name="None" label="nenhum)"/> - <combo_box.item name="Sphere" label="Esfera"/> - <combo_box.item name="Torus" label="Toróide"/> - <combo_box.item name="Plane" label="Plano"/> - <combo_box.item name="Cylinder" label="Cilindro"/> + <combo_item name="None"> + (nenhum) + </combo_item> + <combo_item name="Sphere"> + Esfera + </combo_item> + <combo_item name="Torus"> + Toróide + </combo_item> + <combo_item name="Plane"> + Plano + </combo_item> + <combo_item name="Cylinder"> + Cilindro + </combo_item> </combo_box> </panel> <panel label="Recursos" name="Features"> @@ -364,40 +436,88 @@ Mapeamento </text> <combo_box name="combobox texgen"> - <combo_box.item name="Default" label="Padrão"/> - <combo_box.item name="Planar" label="Planar"/> + <combo_item name="Default"> + Padrão + </combo_item> + <combo_item name="Planar"> + Planar + </combo_item> </combo_box> <text name="label shininess"> Brilho </text> <combo_box name="combobox shininess"> - <combo_box.item name="None" label="Nenhum"/> - <combo_box.item name="Low" label="Baixo"/> - <combo_box.item name="Medium" label="Médio"/> - <combo_box.item name="High" label="Alto"/> + <combo_item name="None"> + Nenhum + </combo_item> + <combo_item name="Low"> + Baixo + </combo_item> + <combo_item name="Medium"> + Médio + </combo_item> + <combo_item name="High"> + Alto + </combo_item> </combo_box> <text name="label bumpiness"> Ondulação </text> <combo_box name="combobox bumpiness"> - <combo_box.item name="None" label="Nenhum"/> - <combo_box.item name="Brightness" label="Claridade"/> - <combo_box.item name="Darkness" label="Escuridão"/> - <combo_box.item name="woodgrain" label="Granulação"/> - <combo_box.item name="bark" label="casca"/> - <combo_box.item name="bricks" label="Tijolos"/> - <combo_box.item name="checker" label="Caixa"/> - <combo_box.item name="concrete" label="Concreto"/> - <combo_box.item name="crustytile" label="Encaroçado"/> - <combo_box.item name="cutstone" label="Pedra Cortante"/> - <combo_box.item name="discs" label="Discos"/> - <combo_box.item name="gravel" label="Cascalho"/> - <combo_box.item name="petridish" label="Pedrisco"/> - <combo_box.item name="siding" label="Revestimento"/> - <combo_box.item name="stonetile" label="empedrado"/> - <combo_box.item name="stucco" label="Grafiato"/> - <combo_box.item name="suction" label="Sulcos"/> - <combo_box.item name="weave" label="weave"/> + <combo_item name="None"> + Nenhum + </combo_item> + <combo_item name="Brightness"> + Claridade + </combo_item> + <combo_item name="Darkness"> + Escuridão + </combo_item> + <combo_item name="woodgrain"> + Granulação + </combo_item> + <combo_item name="bark"> + casca + </combo_item> + <combo_item name="bricks"> + Tijolos + </combo_item> + <combo_item name="checker"> + Caixa + </combo_item> + <combo_item name="concrete"> + Concreto + </combo_item> + <combo_item name="crustytile"> + Encaroçado + </combo_item> + <combo_item name="cutstone"> + Pedra Cortante + </combo_item> + <combo_item name="discs"> + Discos + </combo_item> + <combo_item name="gravel"> + Cascalho + </combo_item> + <combo_item name="petridish"> + Pedrisco + </combo_item> + <combo_item name="siding"> + Revestimento + </combo_item> + <combo_item name="stonetile"> + empedrado + </combo_item> + <combo_item name="stucco"> + Grafiato + </combo_item> + <combo_item name="suction"> + Sulcos + </combo_item> + <combo_item name="weave"> + weave + </combo_item> </combo_box> <text name="tex scale"> Repetir por Face @@ -430,21 +550,33 @@ <button label="Alinhar" label_selected="Alinhar" name="button align"/> </panel> <panel label="Conteúdo" name="Contents"> - <button label="Novo Script..." label_selected="Novo Script..." name="button new script"/> + <button label="Novo Script" label_selected="Novo Script..." name="button new script"/> + <button label="Permissões..." name="button permissions"/> </panel> </tab_container> <panel name="land info panel"> + <text name="label_parcel_info"> + Informações do Lote + </text> <text name="label_area_price"> Preço: L$[PRICE] por [AREA] m². </text> <text name="label_area"> Ãrea: [AREA] m². </text> - <button label="Comprar Terra..." label_selected="Comprar Terra.." name="button buy land"/> - <button label="Abandonar Terra..." label_selected="Abandonar Terra..." name="button abandon land"/> + <button label="Sobre a Terra..." label_selected="Sobre a Terra..." name="button about land"/> + <check_box label="Mostrar donos" name="checkbox show owners" tool_tip="Colorir lotes de acordo com seus donos"/> + <button label="?" label_selected="?" name="button show owners help"/> + <text name="label_parcel_modify"> + Modificar Lote + </text> <button label="Sub-Dividir..." label_selected="Sub-Dividir..." name="button subdivide land"/> <button label="Unir..." label_selected="Unir..." name="button join land"/> - <button label="Sobre a Terra..." label_selected="Sobre a Terra..." name="button about land"/> + <text name="label_parcel_trans"> + Transações com a Terra + </text> + <button label="Comprar Terra..." label_selected="Comprar Terra.." name="button buy land"/> + <button label="Abandonar Terra..." label_selected="Abandonar Terra..." name="button abandon land"/> </panel> <string name="status_rotate"> Arrastar as bandas coloridas para girar o objeto @@ -462,10 +594,10 @@ Clicar e arrastar para mudar a vista </string> <string name="status_grab"> - Arrastar para mover objetos, Ctrl para levantar, Ctrl-Shift para girar + Arrastar para mover, Ctrl para levantar, Ctrl-Shift para rotacionar </string> <string name="status_place"> - Clicar no mundo para criar, shift-clicar para selecionar + Clique no mundo para construir </string> <string name="status_selectland"> Clicar e arrastar para selecionar a terra diff --git a/indra/newview/skins/default/xui/pt/floater_world_map.xml b/indra/newview/skins/default/xui/pt/floater_world_map.xml index 54ebdf2bb2e44fec806028f8a1c74e835955ab14..0fb868407758b6694e9edaf9bc0893acef0cc3e5 100644 --- a/indra/newview/skins/default/xui/pt/floater_world_map.xml +++ b/indra/newview/skins/default/xui/pt/floater_world_map.xml @@ -4,35 +4,29 @@ <panel label="Objetos" name="objects_mapview"/> <panel label="Terreno" name="terrain_mapview"/> </tab_container> - <text name="land_for_sale_label"> - Terra à venda - </text> - <text name="auction_label"> - Leilão - </text> <text name="you_label"> Você </text> <text name="home_label"> Casa </text> - <button label="Ir para Casa" label_selected="Ir para casa" name="Go Home" tool_tip="Teletransportar para sua Casa"/> - <text name="person_label"> - Pessoa - </text> - <text name="infohub_label"> - Infohub - </text> - <text name="telehub_label"> - Telehub + <text name="auction_label"> + Leilão </text> - <text name="land_for_sale_label2"> - Terra à Venda + <text name="land_for_sale_label"> + Terra à venda </text> + <button label="Ir para Casa" label_selected="Ir para casa" name="Go Home" tool_tip="Teletransportar para sua Casa"/> + <check_box label="Residente" name="people_chk"/> + <check_box label="Infohub" name="infohub_chk"/> + <check_box label="Telehub" name="telehubchk"/> + <check_box label="Terra à Venda" name="land_for_sale_chk"/> <text name="events_label"> - Eventos + Eventos: </text> - + <check_box label="PG" name="event_chk"/> + <check_box label="Mature" name="event_mature_chk"/> + <check_box label="Adult" name="event_adult_chk"/> <combo_box label="Amigos Conectados" name="friend combo" tool_tip="Amigos para mostrar no Mapa"> <combo_box.item name="none_selected" label="Amigos Conectados" /> </combo_box> @@ -50,10 +44,10 @@ <spinner name="spin x" tool_tip="Coordenada X da posição mostrada no mapa"/> <spinner name="spin y" tool_tip="Coordenada Y da posição mostrada no mapa"/> <spinner name="spin z" tool_tip="Coordenada Z da posição mostrada no Mapa"/> - <button label="Teletransporte" label_selected="Teletransporte" name="Teleport" tool_tip="Teletransportar para a posição selecionada"/> - <button label="Mostrar Destino" label_selected="Mostrar Destino" name="Show Destination" tool_tip="Centralizar mapa na posição selecionada"/> - <button label="Limpar" label_selected="Limpar" name="Clear" tool_tip="Parar de percorrer"/> - <button label="Mostra minha localização" label_selected="Mostra minha localização" name="Show My Location" tool_tip="Centraliza o mapa na posição do seu Avatar"/> - <button label="Copiar SLURL para área de transferência" name="copy_slurl" tool_tip="Copia a posição atual como SLURL para ser usada na Web"/> + <button font="SansSerifSmall" label="Teletransporte" label_selected="Teletransporte" name="Teleport" tool_tip="Teletransportar para a posição selecionada"/> + <button font="SansSerifSmall" left_delta="91" width="135" label="Mostrar destino" label_selected="Mostrar Destino" name="Show Destination" tool_tip="Centralizar mapa na posição selecionada"/> + <button font="SansSerifSmall" label="Limpar" label_selected="Limpar" name="Clear" tool_tip="Parar de percorrer"/> + <button font="SansSerifSmall" left_delta="91" width="135" label="Mostra minha localização" label_selected="Mostra minha localização" name="Show My Location" tool_tip="Centraliza o mapa na posição do seu Avatar"/> + <button font="SansSerifSmall" label="Copiar SLURL para área de transferência" name="copy_slurl" tool_tip="Copia a posição atual como SLURL para ser usada na Web"/> <slider label="Zoom" name="zoom slider"/> </floater> diff --git a/indra/newview/skins/default/xui/pt/menu_inventory.xml b/indra/newview/skins/default/xui/pt/menu_inventory.xml index 4fdafac015253395cbd1c9184121044f87d33573..486588158e5ae21ec1c95ad5ab5dfcfef4cf3882 100644 --- a/indra/newview/skins/default/xui/pt/menu_inventory.xml +++ b/indra/newview/skins/default/xui/pt/menu_inventory.xml @@ -41,9 +41,9 @@ <menu_item_call label="Copiar" name="Copy"/> <menu_item_call label="Colar" name="Paste"/> <menu_item_call label="Apagar" name="Delete"/> + <menu_item_call label="Remover os itens" name="Take Off Items"/> <menu_item_call label="Adicionar ao equipamento" name="Add To Outfit"/> <menu_item_call label="Substituir equipamento" name="Replace Outfit"/> - <menu_item_call label="Remover os itens" name="Take Off Items"/> <menu_item_call label="Iniciar conversa em conferência" name="Conference Chat Folder"/> <menu_item_call label="Executar" name="Sound Play"/> <menu_item_call label="Sobre as Landmarks" name="Teleport To Landmark"/> @@ -55,11 +55,12 @@ <menu_item_call label="Ativar" name="Activate"/> <menu_item_call label="Desativar" name="Deactivate"/> <menu_item_call label="Retirar de você" name="Detach From Yourself"/> + <menu_item_call label="Recuperar Última Posição" name="Restore to Last Position"/> <menu_item_call label="Vestir" name="Object Wear"/> <menu label="Anexar a" name="Attach To"/> <menu label="Anexar ao HUD" name="Attach To HUD"/> - <menu_item_call label="Vestir" name="Wearable Wear"/> <menu_item_call label="Editar" name="Wearable Edit"/> + <menu_item_call label="Vestir" name="Wearable Wear"/> <menu_item_call label="Retirar" name="Take Off"/> <menu_item_call label="--Sem opções--" name="--no options--"/> </menu> diff --git a/indra/newview/skins/default/xui/pt/menu_mini_map.xml b/indra/newview/skins/default/xui/pt/menu_mini_map.xml new file mode 100644 index 0000000000000000000000000000000000000000..1293f4e17ffa541f3b0bca482ec9b34f8006c58e --- /dev/null +++ b/indra/newview/skins/default/xui/pt/menu_mini_map.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="popup"> + <menu_item_call label="Zoom Perto" name="Zoom Close"/> + <menu_item_call label="Zoom Médio" name="Zoom Medium"/> + <menu_item_call label="Zoom Longe" name="Zoom Far"/> + <menu_item_call label="Parar Acompanhamento" name="Stop Tracking"/> + <menu_item_call label="Perfil..." name="Profile"/> +</menu> diff --git a/indra/newview/skins/default/xui/pt/menu_viewer.xml b/indra/newview/skins/default/xui/pt/menu_viewer.xml index bc4508ecc6ff014e951c07b6ec67d81c9bf14dfe..08ccdc043fa7652ceee26418f4f5ac493e234687 100644 --- a/indra/newview/skins/default/xui/pt/menu_viewer.xml +++ b/indra/newview/skins/default/xui/pt/menu_viewer.xml @@ -3,10 +3,12 @@ <menu label="Arquivo" name="File"> <tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/> <menu label="Upload" name="upload"> - <menu_item_call label="Upload de imagem (L$[COST])..." name="Upload Image"/> - <menu_item_call label="Upload de som(L$[COST])..." name="Upload Sound"/> - <menu_item_call label="Upload de animação (L$[COST])..." name="Upload Animation"/> - <menu_item_call label="Upload de Arquivo (L$[COST] por arquivo)..." name="Bulk Upload"/> + <menu_item_call label="Imagem (L$[COST])..." name="Upload Image"/> + <menu_item_call label="Som (L$[COST])..." name="Upload Sound"/> + <menu_item_call label="Animação (L$[COST])..." name="Upload Animation"/> + <menu_item_call label="Bulk (L$[COST] por arquivo)..." name="Bulk Upload"/> + <menu_item_separator label="-----------" name="separator"/> + <menu_item_call label="Definir Permissões Padrão..." name="perm prefs"/> </menu> <menu_item_separator label="-----------" name="separator"/> <menu_item_call label="Fechar janela" name="Close Window"/> @@ -72,7 +74,7 @@ <menu_item_check label="Comunicar" name="Instant Message"/> <menu_item_check label="Inventário" name="Inventory"/> <menu_item_check label="Falantes Ativos" name="Active Speakers"/> - <menu_item_check label="Lista de pessoas que não podem falar com você" name="Mute List"/> + <menu_item_check label="Lista de residentes e objetos silenciados" name="Mute List"/> <menu_item_separator label="-----------" name="separator2"/> <menu_item_check label="Controles de câmera" name="Camera Controls"/> <menu_item_check label="Controles de movimento" name="Movement Controls"/> @@ -81,6 +83,7 @@ <menu_item_separator label="-----------" name="separator3"/> <menu_item_check label="Barra de estatÃsticas" name="Statistics Bar"/> <menu_item_check label="Linhas de propriedades" name="Property Lines"/> + <menu_item_check label="Linhas de banimento" name="Banlines"/> <menu_item_check label="Donos de terrenos" name="Land Owners"/> <menu_item_separator label="-----------" name="separator4"/> <menu label="Dicas" name="Hover Tips"> @@ -113,7 +116,7 @@ <menu_item_separator label="-----------" name="separator3"/> <menu_item_call label="Deixar ausente" name="Set Away"/> <menu_item_call label="Deixar Ocupado" name="Set Busy"/> - <menu_item_call label="Parar todas as animações" name="Stop All Animations"/> + <menu_item_call label="Parar Animação do Meu Avatar" name="Stop Animating My Avatar"/> <menu_item_call label="Liberar teclas" name="Release Keys"/> <menu_item_separator label="-----------" name="separator4"/> <menu_item_call label="Histórico de conta..." name="Account History..."/> @@ -164,7 +167,6 @@ <menu_item_call label="Zoom na Seleção" name="Zoom to Selection"/> <menu_item_call label="Comprar objetos" name="Menu Object Take"/> <menu_item_call label="Pegar cópia" name="Take Copy"/> - <menu_item_call label="Salvar objeto de volta ao meu inventário" name="Save Object Back to My Inventory"/> <menu_item_call label="Salvar objeto de volta aos conteúdos do objeto" name="Save Object Back to Object Contents"/> <menu_item_separator label="-----------" name="separator6"/> <menu_item_call label="Mostrar scripts defeituosos/Erros de janela" name="Show Script Warning/Error Window"/> diff --git a/indra/newview/skins/default/xui/pt/notifications.xml b/indra/newview/skins/default/xui/pt/notifications.xml index 04f3863efcf4f90a25fb514f2e298968a708b2db..a88ab65c7af0649863adbf47fd24112d25ab2890 100644 --- a/indra/newview/skins/default/xui/pt/notifications.xml +++ b/indra/newview/skins/default/xui/pt/notifications.xml @@ -1,5748 +1,3042 @@ -<?xml version="1.0" ?><notifications> - - <global name="skipnexttime"> - - Não exibir isto novamente - </global> - - <global name="alwayschoose"> - - Sempre escolher esta opção - </global> - - <template name="okbutton"> - <form> - <button - - - name="OK" - text="$yestext"/> - </form> - </template> - - <template name="okignore"> - <form> - <button - - - name="OK" - text="$yestext"/> - <ignore text="$ignoretext"/> - </form> - </template> - - <template name="okcancelbuttons"> - <form> - <button - - - name="OK" - text="$yestext"/> - <button - - name="Cancel" - text="$notext"/> - </form> - </template> - - <template name="okcancelignore"> - <form> - <button - - - name="OK" - text="$yestext"/> - <button - - name="Cancel" - text="$notext"/> - <ignore text="$ignoretext"/> - </form> - </template> - - <template name="okhelpbuttons"> - <form> - <button - - - name="OK" - text="$yestext"/> - <button - - name="Help" - text="$helptext"/> - </form> - </template> - - <template name="yesnocancelbuttons"> - <form> - <button - - - name="Yes" - text="$yestext"/> - <button - - name="No" - text="$notext"/> - <button - - name="Cancel" - text="$canceltext"/> - </form> - </template> - - <notification - functor="GenericAcknowledge" - - name="MissingAlert" - > -'[_NAME]' não encontrado no notifications.xml. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="FloaterNotFound" - > -Floater error: Não foram encontrados os seguintes controles: - [CONTROLS] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="TutorialNotFound" - > -Nenhum tutorial está disponÃvel no momento. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="GenericAlert" - > -[MESSAGE] - </notification> - - <notification - - name="GenericAlertYesCancel" - > -[MESSAGE] - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Sim"/> - </notification> - - <notification - - name="WearableSave" - > -Salvar modificações? - <usetemplate - canceltext="Cancelar" - name="yesnocancelbuttons" - notext="Não salvar" - yestext="Salvar"/> - </notification> - - <notification - - name="CompileQueueSaveText" - > -Houve um problema com o carregamento do texto para um script devido à seguinte razão: [REASON]. Por favor, tente novamente mais tarde. - </notification> - - <notification - - name="CompileQueueSaveBytecode" - > -Houve um problema durante o carregamento do script compilado devido à seguinte razão: [REASON]. Por favor, tente novamente mais tarde. - </notification> - - <notification - - name="WriteAnimationFail" - > -Falha nos dados de inscrição de animação. Por favor, tente mais tarde. - </notification> - - <notification - - name="UploadAuctionSnapshotFail" - > -Houve um problema com o carregamento da foto do leilão devido à seguinte razão: [REASON] - </notification> - - <notification - - name="UnableToViewContentsMoreThanOne" - > -Não é possÃvel visualizar os conteúdos de mais de um item ao mesmo tempo. -Por favor, selecione apenas um objeto e tente novamente. - </notification> - - <notification - - name="SaveClothingBodyChanges" - > -Salvar todas as mudanças de roupas/ partes do corpo? - <usetemplate - canceltext="Cancelar" - name="yesnocancelbuttons" - notext="Não Salvar" - yestext="Salvar tudo"/> - </notification> - - <notification - - name="GrantModifyRights" - > -Conceder direitos de modificar a outros residentes lhes permite trocar, deletar ou pegar QUAISQUER objetos que você possa ter no mundo. -Seja MUITO cuidadoso(a) quando passar esta permissão. -Você deseja conceder direitos de modificar para [FIRST_NAME] [LAST_NAME]? - <usetemplate - name="okcancelbuttons" - notext="Não" - yestext="Sim"/> - </notification> - - <notification - - name="GrantModifyRightsMultiple" - > -Conceder direitos para modificar seus objetos a outro residente permite ele mudar QUAISQUER objetos que você possa ter no mundo. Tenha muito cuidado quando conceder essa permissão. -Você deseja permitir que os residentes selecionados tenham direito de edição? - <usetemplate - name="okcancelbuttons" - notext="Não" - yestext="Sim"/> - </notification> - - <notification - - name="RevokeModifyRights" - > -Você deseja cancelar os direitos de edição de [FIRST_NAME] [LAST_NAME]? - <usetemplate - name="okcancelbuttons" - notext="Não" - yestext="Sim"/> - </notification> - - <notification - - name="RevokeModifyRightsMultiple" - > -Você quer revogar os direitos de edição para os residentes selecionados? - <usetemplate - name="okcancelbuttons" - notext="Não" - yestext="Sim"/> - </notification> - - <notification - - name="UnableToCreateGroup" - > -Não foi possÃvel criar um grupo. -[MESSAGE] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="PanelGroupApply" - > -[NEEDS_APPLY_MESSAGE] -[WANT_APPLY_MESSAGE] - <usetemplate - canceltext="Cancelar" - name="yesnocancelbuttons" - notext="Ignorar Alterações" - yestext="Aplicar Alterações"/> - </notification> - - <notification - - name="MustSpecifyGroupNoticeSubject" - > -Você deve especificar um assunto para enviar uma notÃcia para o grupo. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="AddGroupOwnerWarning" - > -Você está para adicionar membros do grupo na função de [ROLE_NAME]. -Membros não podem ser removidos dessa função. -Os membros podem, eles próprios, recusar a função. -Deseja continuar? - <usetemplate - ignoretext="Quando adcionar membro ao grupo como dono" - name="okcancelignore" - notext="Não" - yestext="Sim"/> - </notification> - - <notification - - name="AssignDangerousActionWarning" - > -Você está prestes a adicionar a habilidade '[ACTION_NAME]' para a função '[ROLE_NAME]' - -*AVISO* -Qualquer membro com esta Habilidade pode atribuir a si mesmo -- e a outro membro -- funções que têm mais poderes que os que possuem atualmente, potencialmente elevando-os aos nÃveis próximos ao Proprietário. Certifique-se sobre esta decisão antes de atribuir esta habilidade. - -Adicionar esta habilidade ao '[ROLE_NAME]'? - <usetemplate - name="okcancelbuttons" - notext="Não" - yestext="Sim"/> - </notification> - - <notification - - name="AssignDangerousAbilityWarning" - > -Você está prestes a adicionar a habilidade '[ACTION_NAME]' à função '[ROLE_NAME]'. - -*AVISO* -Qualquer membro numa função com esta habilidade, pode atribuir a sà mesmo -- e a qualquer outro -- todas as habilidades, elevando seus nÃveis próximos ao poder do Proprietário. - -Adicionar esta habilidade a '[ROLE_NAME]'? - <usetemplate - name="okcancelbuttons" - notext="Não" - yestext="Sim"/> - </notification> - - <notification - - name="ClickPublishHelpLand" - > -Selecionando "Publicar na Busca" -Clicando neste Box, será mostrado: -- este lote nos resultados de busca -- os objetos públicos deste lote -- este lote na busca da web - </notification> - - <notification - - name="ClickPublishHelpLandDisabled" - > -Você não pode fazer este lote visÃvel na busca porque ele está localizado numa região que proÃbe isso. - </notification> - - <notification - - name="ClickPublishHelpAvatar" - > -Selecionando "Mostrar na Busca" será mostrado: -- meu perfil nos resultados de busca -- um link para meu perfil nas páginas de grupos públicos - </notification> - - <notification - - name="ClickPartnerHelpAvatar" - > -Você pode propor a outro Residente ou dissolver uma parceria existente através do website [SECOND_LIFE]. - -Ir para o site do Second Life para mais informações sobre parceria? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Ir para a Página"/> - </notification> - - <notification - - name="ClickWebProfileHelpAvatar" - > -Se este Residente definiu uma URL de perfil na web, então você pode: - * Clicar em 'Carregar' para ver a página na aba Web. - * Clicar Carregar > 'Em navegador externo' para ver a página no seu navegador de web padrão. - * Clicar Carregar > 'URL de Casa' para voltar ao perfil do Residente na web se você navegou adiante. - -Quando você está vendo seu próprio perfil, você pode entrar com qualquer URL como sendo seu perfil na web e clicar OK para definÃ-la. -Outros residentes podem visitar a URL que você definiu, quando eles olharem seu perfil. - </notification> - - <notification - - name="JoinGroupCanAfford" - > -Unir-se a esse grupo custa L$[COST]. -Deseja prosseguir? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Unir-se"/> - </notification> - - <notification - - name="JoinGroupCannotAfford" - > -Associar-se a este grupo custa L$[COST]. -Você não tem L$ suficientes para associar-se a este grupo. - </notification> - - <notification - - name="LandBuyPass" - > -Por L$[COST] você pode ingressar no terreno ('[PARCEL_NAME]') por [TIME] horas. Comprar um passe de acesso? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="SalePriceRestriction" - > -O preço de venda deve ser ajustado para mais que 0 L$, se desejar vender para qualquer um. -Por favor, selecione um indivÃduo para realizar a venda se o valor for 0 L$. - </notification> - - <notification - - name="ConfirmLandSaleChange" - - > -[LAND_SIZE] m² selecionados de terra estão sendo configurados para venda. -Seu preço de venda será L$[SALE_PRICE] e está autorizado para venda para [NAME]. Gostaria de continuar a fazer essa alteração? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Continuar"/> - </notification> - - <notification - - name="ConfirmLandSaleToAnyoneChange" - > -ATENÇÃO: Ao clicar em 'vender para qualquer um' torna a sua terra disponÃvel para toda a comunidade Second Life, mesmo aqueles que não estão nesta região. - -A área de [LAND_SIZE] m² de terra selecionada está posta para venda. -Seu preço de venda será L$ [SALE_PRICE] e está autorizado para [NAME]. - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="ReturnObjectsDeededToGroup" - > -Você tem certeza de que quer retornar todos os objetos compartilhados com o grupo '[NAME]' neste lote de terra, para o inventário do seu antigo Proprietário? - -*AVISO* Isso irá deletar os objetos não transferÃveis doados ao grupo! - -Objetos: [N] - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Retornar"/> - </notification> - - <notification - - name="ReturnObjectsOwnedByUser" - > -Você tem certeza de que deseja retornar todos os objetos do residente '[NAME]' neste lote para o inventário dele? - -Objetos: [N] - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Retornar"/> - </notification> - - <notification - - name="ReturnObjectsOwnedBySelf" - > -Você tem certeza de que deseja retornar todos os objetos de sua propriedade neste lote para seu inventário? - -Objetos: [N] - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Retornar"/> - </notification> - - <notification - - name="ReturnObjectsNotOwnedBySelf" - > -Você tem certeza de que deseja retornar todos os objetos que NÃO são seus para o inventário de seus proprietários? -Objetos transferÃveis doados ao grupo retornarão para seu proprietários. - -*AVISO* Isso fará com que os objetos não-transferÃveis sejam deletados! - -Objetos: [N] - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Retornar"/> - </notification> - - <notification - - name="ReturnObjectsNotOwnedByUser" - > -Você tem certeza de que deseja retornar todos os objetos deste lote NÃO pertencentes a [NAME] para o inventário do proprietário? - -*AVISO* Esta ação irá apagar os objetos não transferÃveis doados ao grupo! - -Objetos: [N] - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Retornar"/> - </notification> - - <notification - - name="ReturnAllTopObjects" - > -Você tem certeza de que deseja enviar todos os objetos listados de volta aos inventários de seus proprietários? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Retornar"/> - </notification> - - <notification - - name="DisableAllTopObjects" - > -Você tem certeza que deseja desativar todos os objetos desta região? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Desativar"/> - </notification> - - <notification - - name="ReturnObjectsNotOwnedByGroup" - > -Retornar os objetos deste lote que NÃO são compartilhados com o grupo [NAME] de volta para seus proprietários? - -Objetos: [N] - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Retornar"/> - </notification> - - <notification - - name="UnableToDisableOutsideScripts" - > -Não é possÃvel desabilitar scripts externos. -Toda esta região possui dano habilitado. -Scripts devem ser permitidos para fazer as armas funcionarem. - </notification> - - <notification - - name="MustBeInParcel" - > -Você deve permanecer dentro do lote para definir o ponto de aterrissagem. - </notification> - - <notification - - name="PromptRecipientEmail" - > -Por favor, digite um endereço de email válido para o(s) destinatário(s). - </notification> - - <notification - - name="PromptSelfEmail" - > -Por favor, insira seu endereço de e-mail. - </notification> - - <notification - - name="PromptMissingSubjMsg" - > -Enviar por email uma foto com o assunto ou mensagem padrão? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="ErrorProcessingSnapshot" - > -Erro processando dados da foto. - </notification> - - <notification - - name="ErrorEncodingSnapshot" - > -Erro ao codificar a foto. - </notification> - - <notification - - name="ErrorUploadingPostcard" - > -Houve um problema ao enviar a foto devido à seguinte razão: [REASON] - </notification> - - <notification - - name="ErrorUploadingReportScreenshot" - > -Houve um problema ao carregar a foto da reportagem devido à seguinte razão: [REASON] - </notification> - - <notification - - name="MustAgreeToLogIn" - > -Você deve concordar com os Termos de Serviço para continuar a entrar no [SECOND_LIFE]. - </notification> - - <notification - - name="CouldNotPutOnOutfit" - > -Não foi possÃvel vestir o conjunto. A pasta do conjunto não contém roupas, partes do corpo ou acessórios. - </notification> - - <notification - - name="CannotWearTrash" - > -Não é possÃvel usar roupas ou partes do corpo que estão no lixo. - </notification> - - <notification - - name="CannotWearInfoNotComplete" - > -Você não pode vestir este item porque ele ainda não carregou. Por favor, tente novamente em um minuto. - </notification> - - <notification - - name="MustHaveAccountToLogIn" - > -Oops! Alguma coisa foi deixada em branco. -Você precisa entrar com ambos os Nome e Sobrenome do seu avatar. - -Você precisa de uma conta para entrar no [SECOND_LIFE]. Você gostaria de criar uma conta agora? - <usetemplate - name="okcancelbuttons" - notext="Tentar novamente" - yestext="Criar uma nova conta"/> - </notification> - - <notification - - name="AddClassified" - > -Anúncios classificados aparecem na seção 'Classificados' do diretório de Busca e no www.secondlife.com por uma semana. -Preencha seu anúncio e então clique 'Publicar...' para adicioná-lo ao diretório. -Será solicitado a você um preço a ser pago, quando você clicar Publicar. -Pagando mais, faz com que seu anúncio apareça em posição mais alta na lista e também em posição mais alta, quando as pessoas buscarem por palavras-chave. - <usetemplate - ignoretext="Quando adicionando um Classificado novo" - name="okcancelignore" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="DeleteClassified" - > -Apagar classificado'[NAME]'? -Não há reembolso por taxas já pagas. - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Apagar"/> - </notification> - - <notification - - name="ClassifiedSave" - > -Salvar as mudanças no classificado [NAME]? - <usetemplate - canceltext="Cancelar" - name="yesnocancelbuttons" - notext="Não Salvar" - yestext="Salvar"/> - </notification> - - <notification - - name="DeleteAvatarPick" - > -Apagar pegar [PICK]? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Delete"/> - </notification> - - <notification - - name="PromptGoToEventsPage" - > -Ir até a página web de enventos [SECOND_LIFE] ? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Ir à página"/> - </notification> - - <notification - - name="SelectProposalToView" - > -Por favor, selecione uma proposta para visualizar. - </notification> - - <notification - - name="SelectHistoryItemToView" - > -Por favor, selecione um item do histórico para exibÃ-lo. - </notification> - - <notification - - name="ResetShowNextTimeDialogs" - > -Você gostaria de reabilitar todas estas pop ups que você indicou previamente como 'Não me mostrar novamente'? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="SkipShowNextTimeDialogs" - > -Você gostaria de desabilitar todas as popups que podem ser puladas? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="CacheWillClear" - > -O cache será limpo quando você reiniciar [SECOND_LIFE]. - </notification> - - <notification - - name="CacheWillBeMoved" - > -O Cache será removido após reiniciar [SECOND_LIFE]. -Nota: Isto limpará o cache. - </notification> - - <notification - - name="ChangeConnectionPort" - > -Configuração de porta terá efeito após reiniciar [SECOND_LIFE]. - </notification> - - <notification - - name="ChangeSkin" - > -A nova pele será exibida após reiniciar [SECOND_LIFE]. - </notification> - - <notification - - name="GoToAuctionPage" - > -Ir para a página do [SECOND_LIFE] para ver os detalhes do leilão ou fazer um lance? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Ir para a página"/> - </notification> - - <notification - - name="SaveChanges" - > -Salvar alterações? - <usetemplate - canceltext="Cancelar" - name="yesnocancelbuttons" - notext="Não Salvar" - yestext="Salvar"/> - </notification> - - <notification - - name="GestureSaveFailedTooManySteps" - > -Falha ao salvar Gesto. -Este gesto possui muitos passos. -Tente remover alguns passos e salve-o novamente. - </notification> - - <notification - - name="GestureSaveFailedTryAgain" - > -Falha ao salvar Gesto. Por favor, tente em uma minuto. - </notification> - - <notification - - name="GestureSaveFailedObjectNotFound" - > -Não foi possÃvel salvar o gesto pois o objeto ou o inventário associado ao objeto não foi encontrado. -O objeto pode estar fora de alcance ou foi deletado. - </notification> - - <notification - - name="GestureSaveFailedReason" - > -Houve um problema em salvar um gesto devido à seguinte razão: [REASON]. Por favor, tente salvar o Gesto depois. - </notification> - - <notification - - name="SaveNotecardFailObjectNotFound" - > -Não foi possÃvel salvar uma nota pois o objeto ou o inventário associado ao objeto não foi encontrado. -O objeto pode estar fora de alcance ou foi deletado. - </notification> - - <notification - - name="SaveNotecardFailReason" - > -Houve um problema em salvar uma nota devido a seguinte razão: [REASON]. Por favor, tente salvar a nota novamente mais tarde. - </notification> - - <notification - - name="ScriptCannotUndo" - > -Não foi possÃvel desfazer todas as mudanças na sua versão de script. -Gostaria de carregar a última versão salva? -(**Aviso** Esta operação não pode ser desfeita). - <usetemplate - name="okcancelbuttons" - notext="Não" - yestext="Sim"/> - </notification> - - <notification - - name="SaveScriptFailReason" - > -Houve um problema em salvar um script devido à seguinte razão: [REASON]. Por favor, tente salvar novamente o script mais tarde. - </notification> - - <notification - - name="SaveScriptFailObjectNotFound" - > -Não foi possÃvel salvar o script pois o objeto em que ele está não pôde ser encontrado. -O objeto pode estar fora de alcance ou ter sido deletado. - </notification> - - <notification - - name="SaveBytecodeFailReason" - > -Houve um problema em salvar uma compilação de script devido a seguinte razão: [REASON]. Por favor, tente salvar novamente o script mais tarde. - </notification> - - <notification - - name="CouldNotStartStopScript" - > -Não foi possÃvel iniciar ou parar o script pois o objeto em que ele está não pôde ser encontrado. -O objeto pode estar fora de alcance ou ter sido deletado. - </notification> - - <notification - - name="CannotDownloadFile" - > -Não foi possÃvel baixar o arquivo. - </notification> - - <notification - - name="CannotWriteFile" - > -Não foi possÃvel escrever o arquivo [[FILE]] - </notification> - - <notification - - name="UnsupportedHardware" - > -Aviso: Seu sistema não é compatÃvel com os requisitos mÃnimos exigidos pelo Second Life. Se você continuar usando o Second Life pode experimentar uma performance ruim. Infelizmente não podemos oferecer suporte técnico para configurações de sistema não suportado. - -MINSPECS -Você deseja visitar [_URL] para maiores informações? - <url option="0" name="url"> - - http://www.secondlife.com/corporate/sysreqs.php - </url> - <usetemplate - ignoretext="Ao detectar hardware não suportado" - name="okcancelignore" - notext="Não" - yestext="Sim"/> - </notification> - - <notification - - name="UnknownGPU" - > -Seu sistema possui uma placa gráfica que nos é desconhecido neste momento. -Este é normalmente o caso de um novo hardware que nós não tivemos a chance de testar. Second Life vai muito provavelmente executar corretamente, mas talvez seja necessário ajustar suas configurações de gráficos para algo mais apropriado. -(Menu Editar > Preferências > Gráficos). - <form name="form"> - <ignore name="ignore" - text="Ao detectar uma placa de vÃdeo desconhecida"/> - </form> - </notification> - - <notification - - name="DisplaySettingsNoShaders" - > -[SECOND_LIFE] travou quando inicializava os drivers gráficos. -A Qualidade Gráfica será ajustada para baixa, para evitar alguns erros comuns de drivers. -Isto irá desabilitar alguns atributos gráficos. -Nós recomendamos a atualização dos drivers de sua placa gráfica. -A Qualidade Gráfica pode ser aumentada no Preferências > Gráficos. - </notification> - - <notification - - name="RegionNoTerraforming" - > -A região [REGION] não permite ser aplainada. - </notification> - - <notification - - name="CannotCopyWarning" - > -Você não tem permissão para copiar este item e irá perdê-lo do seu inventário se entregá-lo a alguém. Quer realmente oferecer este item? - <usetemplate - name="okcancelbuttons" - notext="Não" - yestext="Sim"/> - </notification> - - <notification - - name="CannotGiveItem" - > -Não foi possÃvel entregar o item de inventário. - </notification> - - <notification - - name="TransactionCancelled" - > -Transação cancelada. - </notification> - - <notification - - name="TooManyItems" - > -Não é possÃvel passar mais que 42 itens em uma única transferência de inventário. - </notification> - - <notification - - name="NoItems" - > -Você não tem permissão para transferir os itens selecionados. - </notification> - - <notification - - name="CannotCopyCountItems" - > -Você não tem permissão para copiar [COUNT] dos itens selecionados. Você irá perdê-los do seu inventário. -Deseja realmente entregar estes itens? - <usetemplate - name="okcancelbuttons" - notext="Não" - yestext="Sim"/> - </notification> - - <notification - - name="CannotGiveCategory" - > -Você não tem permissão para transferir a pasta selecionada. - </notification> - - <notification - - name="FreezeAvatar" - > -Congelar esse avatar? -Ele ou ela estará temporáriamente incapacitado de mover-se, conversar ou interagir com mundo. - <usetemplate - canceltext="Cancelar" - name="yesnocancelbuttons" - notext="Descongelar" - yestext="Congelar"/> - </notification> - - <notification - - name="FreezeAvatarFullname" - > -Congelar [AVATAR_NAME]? -Ele ou ela vai ficar temporariamente incapaz de se mover, usar o bate-papo ou interagir com o mundo. - <usetemplate - canceltext="Cancelar" - name="yesnocancelbuttons" - notext="Descongelar" - yestext="Congelar"/> - </notification> - - <notification - - name="EjectAvatarFullname" - > -Ejetar [AVATAR_NAME] da sua terra? - <usetemplate - canceltext="Cancelar" - name="yesnocancelbuttons" - notext="Ejetar e Banir" - yestext="Ejetar"/> - </notification> - - <notification - - name="EjectAvatarNoBan" - > -Ejetar este avatar da sua terra? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Ejetar"/> - </notification> - - <notification - - name="EjectAvatarFullnameNoBan" - > -Ejetar [AVATAR_NAME] da sua terra? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Ejetar"/> - </notification> - - <notification - - name="AcquireErrorTooManyObjects" - > -Erro de aquisição: Muitos objetos selecionados. - </notification> - - <notification - - name="AcquireErrorObjectSpan" - > -Erro de aquisição: Objetos criados em mais de uma região. -Por favor, mova todos os objetos a serem adquiridos para uma mesma região. - </notification> - - <notification - - name="PromptGoToCurrencyPage" - > -[EXTRA] - -Vá para [URL] para informação sobre compra de dinheiro. - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Ir até a página"/> - </notification> - - <notification - - name="UnableToLinkObjects" - > -Não é possÃvel unir estes [COUNT] objetos. -Você pode unir um máximo de [MAX] objetos. - </notification> - - <notification - - name="CannotLinkIncompleteSet" - > -Você pode unir apenas conjuntos completos de objetos e deve selecionar mais que um objeto. - </notification> - - <notification - - name="CannotLinkModify" - > -Impossibilitado de unir, porque você não tem permissão para modificar todos os objetos. - -Por favor, certifique-se de que nenhum deles está travado e que você é dono de todos eles. - </notification> - - <notification - - name="CannotLinkDifferentOwners" - > -Impossibilitado de unir porque nem todos os objetos são do mesmo dono. - -Por favor, certifique-se de que você é o dono de todos os objetos selecionados. - </notification> - - <notification - - name="NoFileExtension" - > -Nenhuma extensão para o arquivo: '[FILE]' - -Por favor, certifique-se de que o arquivo tem uma extensão de arquivo correta. - </notification> - - <notification - - name="InvalidFileExtension" - > -Extensão de arquivo inválida: [EXTENSION]. -Esperada [VALIDS] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="CannotUploadSoundFile" - > -Não é possÃvel abrir para leitura o arquivo de som carregado: -[FILE] - </notification> - - <notification - - name="SoundFileNotRIFF" - > -O arquivo não aparenta ser um arquivo do tipo RIFF WAVE: -[FILE] - </notification> - - <notification - - name="SoundFileNotPCM" - > -O arquivo não aparenta ser um arquivo de áudio PCM WAVE: -[FILE] - </notification> - - <notification - - name="SoundFileInvalidChannelCount" - > -O arquivo possui um número de canais inválido (deve ser mono ou estéreo): -[FILE] - </notification> - - <notification - - name="SoundFileInvalidSampleRate" - > -O arquivo não aparenta ter uma taxa de amostragem suportada (deve ser 44.1k): -[FILE] - </notification> - - <notification - - name="SoundFileInvalidWordSize" - > -O arquivo não aparenta ter um tamanho de palavra suportada (deve ser 8 ou 16 bit): -[FILE] - </notification> - - <notification - - name="SoundFileInvalidHeader" - > -Não pode ser encontrado bloco de dados no cabeçalho WAV: -[FILE] - </notification> - - <notification - - name="SoundFileInvalidTooLong" - > -Arquivo de áudio é muito longo (no máximo 10 segundos): -[FILE] - </notification> - - <notification - - name="ProblemWithFile" - > -Problemas com o arquivo [FILE]: - -[ERROR] - </notification> - - <notification - - name="CannotOpenTemporarySoundFile" - > -Não pode abrir o arquivo temporário de som comprimido, para leitura: [FILE] - </notification> - - <notification - - name="UnknownVorbisEncodeFailure" - > -Falha desconhecida de codificação vorbis em: [FILE] - </notification> - - <notification - - name="CorruptResourceFile" - > -Fonte do arquivo corrompida: [FILE] - </notification> - - <notification - - name="UnknownResourceFileVersion" - > -Versão desconhecida de arquivo de recursos da Linden no arquivo: [FILE] - </notification> - - <notification - - name="UnableToCreateOutputFile" - > -Incapaz de criar arquivo de saÃda: [FILE] - </notification> - - <notification - - name="DoNotSupportBulkAnimationUpload" - > -Atualmente, não suportamos o envio de arquivos de animação em massa. - </notification> - - <notification - - name="CannotUploadReason" - > -Incapaz de carregar [FILE] devido ao seguinte motivo: [REASON] -Por favor tente novamente mais tarde. - </notification> - - <notification - - name="CannotCreateLandmarkNotOwner" - > -Você não pode criar um ponto de referência porque o proprietário do terreno não permite. Tente novamente a alguns metros de distância. - </notification> - - <notification - - name="CannotRecompileSelectObjectsNoScripts" - > -Não é possÃvel realizar uma recompilação. -Selecione um objeto com um script. - </notification> - - <notification - - name="CannotRecompileSelectObjectsNoPermission" - > -Impossibilitado de executar uma 'recompilação'. - -Selecione objetos com scripts que você tem permissão para modificar. - </notification> - - <notification - - name="CannotResetSelectObjectsNoScripts" - > -Impossibilitado de executar 'redefinir'. - -Selecione objetos com scripts. - </notification> - - <notification - - name="CannotResetSelectObjectsNoPermission" - > -Impossibilitado de executar 'redefinir'. - -Selecione objetos com scripts que você tem permissão para modificar. - </notification> - - <notification - - name="CannotSetRunningSelectObjectsNoScripts" - > -Impossibilitado de definir quaisquer scripts para 'rodando'. - -Selecione objetos com scripts. - </notification> - - <notification - - name="CannotSetRunningNotSelectObjectsNoScripts" - > -Impossibilitado de definir quaisquer scripts para 'não rodando'. - -Selecione objetos com scripts. - </notification> - - <notification - - name="NoFrontmostFloater" - > -Nenhuma janela flutuante mais à frente para salvar. - </notification> - - <notification - - name="SeachFilteredOnShortWords" - > -Sua consulta de pesquisa foi alterada e as palavras que eram demasiado curtas foram removidas. - -Pesquisava por: [FINALQUERY] - </notification> - - <notification - - name="SeachFilteredOnShortWordsEmpty" - > -Os termos de sua pesquisa eram muito curtos então nenhuma pesquisa foi feita. - </notification> - - <notification - - name="CouldNotTeleportReason" - > -Não é possÃvel teletransportar-se. -[REASON] - </notification> - - <notification - - name="CannotSetLandOwnerNothingSelected" - > -Incapaz de estabelecer o proprietário do terreno: -Nenhum lote selecionado. - </notification> - - <notification - - name="CannotSetLandOwnerMultipleRegions" - > -Não é possÃvel exigir a posse do terreno porque a seleção alcançou múltiplas regiões. Por favor, selecione uma área menor e tente novamente. - </notification> - - <notification - - name="ForceOwnerAuctionWarning" - > -Este lote está oferecido em leilão. Exigir a posse do terreno irá cancelar o leilão e possivelmente deixará alguns residentes infelizes, se os lances já começaram. Exigir posse? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Retomar"/> - </notification> - - <notification - - name="CannotContentifyNothingSelected" - > -Conteúdo não encontrado: -Nenhum lote selecionado. - </notification> - - <notification - - name="CannotContentifyNoRegion" - > -Conteúdo não encontrado: -Nenhuma região selecionada. - </notification> - - <notification - - name="CannotReleaseLandNothingSelected" - > -Não é possÃvel abandonar terreno: -Nenhum lote selecionado. - </notification> - - <notification - - name="CannotReleaseLandNoRegion" - > -Não é possÃvel abandonar terreno: -Não é possÃvel encontrar a região. - </notification> - - <notification - - name="CannotBuyLandNothingSelected" - > -Não é possÃvel comprar terreno: -Nenhum lote selecionado. - </notification> - - <notification - - name="CannotBuyLandNoRegion" - > -Não é possÃvel comprar terreno: -Não é possÃvel achar a região em que este terreno se encontra. - </notification> - - <notification - - name="CannotCloseFloaterBuyLand" - > -Você não pode fechar a janela de Compra de Terreno até que o Second Life calcule o preço desta transação. - </notification> - - <notification - - name="CannotDeedLandNothingSelected" - > -Não é possÃvel transferir posse do terreno: -Nenhum lote selecionado. - </notification> - - <notification - - name="CannotDeedLandNoGroup" - > -Não é possÃvel transferir posse do terreno: -Nenhum grupo selecionado. - </notification> - - <notification - - name="CannotDeedLandNoRegion" - > -Não é possÃvel transferir posse do terreno: -Não é possÃvel se achar a região em que este terreno se encontra. -Por favor, use Ferramentas > Reporte de Bug para reportar isto. - </notification> - - <notification - - name="CannotDeedLandMultipleSelected" - > -Impossibilitado de passar a propriedade da terra: -Selecionados vários lotes. - -Tente selecionar um único lote. - </notification> - - <notification - - name="ParcelCanPlayMedia" - > -Esta localidade pode executar fluxo de mÃdia. -Fluxo de mÃdia necessita de uma conexão de Internet rápida. - -Executar fluxo de mÃdia quando disponÃvel? -(Você pode mudar esta opção mais tarde no Preferências > Ãudio & VÃdeo.) - <usetemplate - name="okcancelbuttons" - notext="Desabilitar" - yestext="Exibir MÃdia"/> - </notification> - - <notification - - name="CannotDeedLandWaitingForServer" - > -Impossibilitado de passar a propriedade da terra: -Esperando pelo servidor informar de quem é a propriedade. - -Por favor, tente novamente. - </notification> - - <notification - - name="CannotDeedLandNoTransfer" - > -Não é possÃvel transferir posse do terreno: -A região [REGION] não permite transferência do terreno. - </notification> - - <notification - - name="CannotReleaseLandWatingForServer" - > -Impossibilitado de abandonar a terra: -Esperando o servidor atualizar as informações do lote. - -Tente novamente em alguns segundos. - </notification> - - <notification - - name="CannotReleaseLandSelected" - > -Impossibilitado de abandonar a terra: -Você não é dono de todos os lotes selecionados. - -Por favor, selecione um único lote. - </notification> - - <notification - - name="CannotReleaseLandDontOwn" - > -Não é possÃvel abandonar terreno: -Você não tem permissão de liberar este lote. -Os lotes que você possui estão em verde. - </notification> - - <notification - - name="CannotReleaseLandRegionNotFound" - > -Impossibilitado de abandonar a terra: -Não consegue achar a região em que esta terra se encontra. - -Por favor, usar Ferramentas > Reportar Bug, para reportar este erro. - </notification> - - <notification - - name="CannotReleaseLandNoTransfer" - > -Não é possÃvel abandonar terreno: -A região [REGION] não permite transferência de terreno. - </notification> - - <notification - - name="CannotReleaseLandPartialSelection" - > -Impossibilitado de abandonar a terra: -Você deve selecionar um lote inteiro para liberá-lo. - -Selecione um lote inteiro ou primeiro divida seu lote. - </notification> - - <notification - - name="ReleaseLandWarning" - > -Você está para liberar [AREA] m² de terra. -Liberando este terreno, o liberará de suas posses, mas não lhe concederá quaisquer L$. - -Liberar esta terra? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Renunciar"/> - </notification> - - <notification - - name="CannotDivideLandNothingSelected" - > -Impossibilitado de dividir a terra: - -Nenhum lote selecionado. - </notification> - - <notification - - name="CannotDivideLandPartialSelection" - > -Impossibilitado de dividir a terra: - -Você selecionou um lote inteiro. -Tente selecionar uma parte do lote. - </notification> - - <notification - - name="LandDivideWarning" - > -Dividir este terreno irá dividir este lote em dois e cada lote pode ter suas próprias configurações. Algumas configurações serão colocadas no padrão depois dessa operação. - -Quer dividir o terreno? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Dividir"/> - </notification> - - <notification - - name="CannotDivideLandNoRegion" - > -Impossibilitado de dividir a terra: -Não consegue achar a região em que esta terra se encontra. - -Por favor, usar Ferramentas > Reportar Bug, para reportar este erro. - </notification> - - <notification - - name="CannotJoinLandNoRegion" - > -Impossibilitado de unir a terra: -Não consegue achar a região em que esta terra se encontra. - -Por favor, usar Ferramentas > Reportar Bug, para reportar este erro. - </notification> - - <notification - - name="CannotJoinLandNothingSelected" - > -Não é possÃvel unir terreno: -Nenhum lote selecionado. - </notification> - - <notification - - name="CannotJoinLandEntireParcelSelected" - > -Impossibilitado de unir a terra: -Você selecionou apenas um lote. - -Selecione a terra através de ambos os lotes. - </notification> - - <notification - - name="CannotJoinLandSelection" - > -Impossibilitado de unir a terra: -Você deve selecionar mais de um lote. - -Selecione a terra através de ambos os lotes. - </notification> - - <notification - - name="JoinLandWarning" - > -Unir esta terra vai criar um grande lote que envolve todos os lotes que intersectam o retângulo selecionado. -Você vai ter que redefinir nome e as opções do novo lote. - -Unir a terra? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Unir"/> - </notification> - - <notification - - name="ConfirmNotecardSave" - > -Esta nota precisa ser salva antes do item ser copiado ou visualizado. Salvar nota? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Salvar"/> - </notification> - - <notification - - name="ConfirmItemCopy" - > -Copiar este item para o seu inventário? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Copiar"/> - </notification> - - <notification - - name="ResolutionSwitchFail" - > -Falha ao trocar a resolução para [RESX] por [RESY] - </notification> - - <notification - - name="ErrorUndefinedGrasses" - > -Erro: Gramado indefinido; [SPECIES] - </notification> - - <notification - - name="ErrorUndefinedTrees" - > -Erro: Ãrvores indefinidas: [SPECIES] - </notification> - - <notification - - name="CannotSaveWearableOutOfSpace" - > -Não é possÃvel salvar '[NAME]' para um arquivo de vestimenta. Você precisa liberar algum espaço no seu computador e salvar o arquivo novamente. - </notification> - - <notification - - name="CannotSaveToAssetStore" - > -Impossibilitado de salvar [NAME] no armazenamento central de ativos. -Isso é geralmente uma falha temporária. Por favor personalize e salve novamente a vestimenta em poucos minutos. - -Se o problema persistir, por favor clicar sobre 'Ferramentas > Bug Report' no menu superior e forneça detalhes sobre a configuração de sua rede. - </notification> - - <notification - - name="YouHaveBeenLoggedOut" - > -Você foi deslogado do [SECOND_LIFE]: - [MESSAGE] -Você ainda pode olhar o bate-papo e as mensagens instantâneas existentes, clicando em 'Exibir IM & bate-papo'. Caso contrário, clique em 'Sair' para sair do [SECOND_LIFE] imediatamente. - <usetemplate - name="okcancelbuttons" - notext="Sair" - yestext="Ver Mensagem Instantânea & Bate- Papo"/> - </notification> - - <notification - - name="OnlyOfficerCanBuyLand" - > -Não é possÃvel comprar o terreno para o grupo: -Você não tem permissão para comprar o terreno para o seu grupo ativado. - </notification> - - <notification - - label="Adicionar amigo" - name="AddFriend" - > -Amigos podem dar permissões de rastrear um ao outro pelo mapa e receber atualizações de status online. - -Oferecer amizade para [NAME]? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Oferecer"/> - </notification> - - <notification - - label="Adicionar amigo" - name="AddFriendWithMessage" - > -Amigos podem dar permissões de rastrear um ao outro pelo mapa e receber atualizações de status online. - -Oferecer amizade para [NAME]? - <form name="form"> - <input name="message" type="text"> -Quer ser meu amigo? - </input> - <button - - - name="Offer" - text="Oferecer"/> - <button - - name="Cancel" - text="Cancelar"/> - </form> - </notification> - - <notification - - name="RemoveFromFriends" - > -Você quer remover [FIRST_NAME] [LAST_NAME] da sua lista de amigos? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Remover"/> - </notification> - - <notification - - name="RemoveMultipleFromFriends" - > -Você quer remover vários amigos da sua lista? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Remover"/> - </notification> - - <notification - - name="GodDeleteAllScriptedPublicObjectsByUser" - > -Você tem certeza que deseja excluir todos os objetos programados de propriedade de -** [AVATAR_NAME] ** -em todos os outros terrenos deste sim? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="APAGAR!!"/> - </notification> - - <notification - - name="GodDeleteAllScriptedObjectsByUser" - > -Você tem certeza que deseja excluir todos os objetos programados de propriedade de -** [AVATAR_NAME] ** -em TODOS OS TERRENOS deste sim? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="!!APAGAR TUDO!!"/> - </notification> - - <notification - - name="GodDeleteAllObjectsByUser" - > -Você tem certeza que deseja excluir TODOS os objetos (programados ou não) de propriedade de -** [AVATAR_NAME] ** -em TODOS OS TERRENOS deste sim? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="!!APAGAR TUDO!!"/> - </notification> - - <notification - - name="BlankClassifiedName" - > -Você deve especificar um nome para seu classificado. - </notification> - - <notification - - name="MinClassifiedPrice" - > -Preço mÃnimo a pagar para incluir na listagem é de L$[MIN_PRICE]. - -Por favor, insira um valor maior. - </notification> - - <notification - - name="ConfirmObjectDeleteLock" - > -Pelo menos um dos itens que você selecionou está trancado. - -Tem certeza de que deseja apagar estes itens? - <usetemplate - name="okcancelbuttons" - notext="Não" - yestext="Sim"/> - </notification> - - <notification - - name="ConfirmObjectDeleteNoCopy" - > -Pelo menos um dos itens que você selecionou não é copiável. - -Tem certeza de que deseja apagar estes itens? - <usetemplate - name="okcancelbuttons" - notext="Não" - yestext="Sim"/> - </notification> - - <notification - - name="ConfirmObjectDeleteNoOwn" - > -Você não é proprietário de pelo menos um dos itens selecionados. - -Tem certeza de que deseja apagar estes itens? - <usetemplate - name="okcancelbuttons" - notext="Não" - yestext="Sim"/> - </notification> - - <notification - - name="ConfirmObjectDeleteLockNoCopy" - > -Pelo menos um dos objetos está trancado ou não é copiável. - -Tem certeza de que deseja apagar estes itens? - <usetemplate - name="okcancelbuttons" - notext="Não" - yestext="Sim"/> - </notification> - - <notification - - name="ConfirmObjectDeleteLockNoOwn" - > -Pelo menos um dos objetos está trancado ou não é de sua posse. - -Tem certeza de que deseja apagar estes itens? - <usetemplate - name="okcancelbuttons" - notext="Não" - yestext="Sim"/> - </notification> - - <notification - - name="ConfirmObjectDeleteNoCopyNoOwn" - > -Pelo menos um dos objetos não é copiável ou não é de sua posse. - -Tem certeza de que deseja apagar estes itens? - <usetemplate - name="okcancelbuttons" - notext="Não" - yestext="Sim"/> - </notification> - - <notification - - name="ConfirmObjectDeleteLockNoCopyNoOwn" - > -Pelo menos um dos objetos está trancado, não é copiável ou você não o possui. - -Tem certeza de que deseja apagar estes itens? - <usetemplate - name="okcancelbuttons" - notext="Não" - yestext="Sim"/> - </notification> - - <notification - - name="ConfirmObjectTakeLock" - > -Pelo menos um dos objetos está trancado. - -Tem certeza de que deseja pegar estes itens? - <usetemplate - name="okcancelbuttons" - notext="Não" - yestext="Sim"/> - </notification> - - <notification - - name="ConfirmObjectTakeNoOwn" - > -Você não possui todos os objetos que está pegando. -Caso continue, as permissões do próximo proprietário serão aplicadas aos objetos e possivelmente restringirão sua habilidade em modificá-los ou copiá-los. - -Você tem certeza de que quer pegar estes itens? - <usetemplate - name="okcancelbuttons" - notext="Não" - yestext="Sim"/> - </notification> - - <notification - - name="ConfirmObjectTakeLockNoOwn" - > -Pelo menos um objeto está bloqueado. -Você não possui todos os objetos que você está pegando. -Se continuar, as permissões para o próximo proprietário serão aplicadas e possivelmente restringirão sua capacidade de modificar ou copiá-los. -No entanto, você pode pegar a seleção atual. - -Tem certeza de que deseja pegar estes itens? - <usetemplate - name="okcancelbuttons" - notext="Não" - yestext="Sim"/> - </notification> - - <notification - - name="CantBuyLandAcrossMultipleRegions" - > -Não foi possÃvel comprar terreno, pois a seleção abrange várias regiões. - -Por favor, selecione uma área menor e tente novamente. - </notification> - - <notification - - name="DeedLandToGroup" - > -Na transferência de propriedade deste lote, o grupo deverá ter e manter créditos suficientes de uso da terra. -O preço de aquisição dos terrenos não é restituÃdo ao o proprietário. Se uma parcela transferida é vendida, o preço de venda é dividido igualmente entre os membros do grupo. - -Transferir propriedade de [AREA] m² de terra ao grupo '[GROUP_NAME]'? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Acionar"/> - </notification> - - <notification - - name="DeedLandToGroupWithContribution" - > -Na transferência de propriedade deste lote, o grupo deverá ter e manter créditos suficientes de uso da terra. -A Transferência incluirá uma contribuição de terra simultanea para o grupo de '[FIRST_NAME] [LAST_NAME]'. -O preço da compra não será restituÃdo ao proprietário. Se um lote for vendido, o preço da venda será dividido igualmente entre os membros do grupo. - -Transferir propriedade destes [AREA] m² de terreno para o grupo '[GROUP_NAME]'? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Acionar"/> - </notification> - - <notification - - name="DisplaySetToSafe" - > -Configurações de display foram ajustadas para nÃveis de segurança porque você especificou -- opção de segurança. - </notification> - - <notification - - name="DisplaySetToRecommended" - > -Configurações de display foram ajustadas para nÃvel recomendado basedo na configuração do seu sistema. - </notification> - - <notification - - name="ErrorMessage" - > -[ERROR_MESSAGE] - </notification> - - <notification - - name="AvatarMoved" - > -Sua [TYPE] localização não está disponÃvel no momento. - [HELP] -Você foi movido para uma região vizinha. - </notification> - - <notification - - name="ClothingLoading" - > -Sua vestimenta ainda está baixando. -Você pode usar o [SECOND_LIFE] normalmente e os outros o visualizarão corretamente. - <form name="form"> - <ignore name="ignore" - text="Quando o vestuário está levando muito tempo para fazer download"/> - </form> - </notification> - - <notification - - name="FirstRun" - > -A instalação do [SECOND_LIFE] está completa. - -Se esta é a primeira vez usando o[SECOND_LIFE], será necessário que você crie uma conta antes de poder se logar. -Retornar a www.secondlife.com para criar uma nova conta? - <usetemplate - name="okcancelbuttons" - notext="Continuar" - yestext="Nova conta.."/> - </notification> - - <notification - - name="LoginPacketNeverReceived" - > -Estamos com problemas de conexão. Pode ser problema com a conexão de sua internet ou com os servidores do Second Life. - -Voce tanto pode checar a conexão de sua internet e tentar novamente em alguns minutos, ou clicar em Teletransporte para tentar teletransportar-se para sua casa. - <form name="form"> - <button - - - name="OK" - text="OK"/> - <button - - name="Help" - text="Ajuda"/> - <button - - name="Teleport" - text="Teletransportar"/> - </form> - </notification> - - <notification - - name="WelcomeChooseSex" - > -Seu personagem irá aparecer num momento. - -Use as teclas de seta para andar. -Pressione a tecla F1 para ajuda ou aprender mais sobre [SECOND_LIFE]. -Por favor, escolha se o seu avatar é feminino ou masculino. Você pode mudar de idéia depois. - <usetemplate - name="okcancelbuttons" - notext="Feminino" - yestext="Masculino"/> - </notification> - - <notification - - name="NotEnoughCurrency" - > -[NAME] L$ [PRICE] Você não possui suficientes L$ para fazer isso. - </notification> - - <notification - - name="GrantedModifyRights" - > -Foi garantido à você o privilégio de alterar o(s) objeto(s) de [FIRST_NAME] [LAST_NAME]' - </notification> - - <notification - - name="RevokedModifyRights" - > -Seu privilégio para alterar o(s) objeto(s) de [FIRST_NAME] [LAST_NAME]'s foi removido. - </notification> - - <notification - - name="FlushMapVisibilityCaches" - > -Isto irá descarregar os caches de mapa relativos a esta região. -Isso é realmente útil apenas para depuração. -(Na produção, aguarde 5 minutos e, então, o mapa de todos será atualizado depois que relogar.) - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="OnlyCopyContentsOfSingleItem" - > -Incapaz de copiar os conteúdos de mais de um item por vez. Por favor, selecione somente um objeto e tente novamente. - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="KickUsersFromRegion" - > -Teletransportar para casa todos os residentes nesta região? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="EstateObjectReturn" - > -Você tem certeza que deseja retornar os objetos pertencentes a [USER_NAME] ? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="InvalidTerrainBitDepth" - > -Não foi possÃvel definir texturas da região: -Textura do Terreno [TEXTURE_NUM] tem uma profundidade de bits inválidos [TEXTURE_BIT_DEPTH]. - -Substitua textura [TEXTURE_NUM], com uma imagem de 24-bit 512x512 ou menor e em seguida, clique em 'Aplicar' novamente. - </notification> - - <notification - - name="InvalidTerrainSize" - > -Não foi possÃvel definir texturas da região: -Textura do Terreno [TEXTURE_NUM] é muito grande em [TEXTURE_SIZE_X] x [TEXTURE_SIZE_Y]. - -Substituir textura [TEXTURE_NUM], com uma imagem de 24-bit 512x512 ou menor e em seguida, clique em 'Aplicar' novamente. - </notification> - - <notification - - name="RawUploadStarted" - > -Upload iniciado. Pode levar uns 2 minutos, dependendo da sua velocidade de conexão. - </notification> - - <notification - - name="ConfirmBakeTerrain" - > -Você realmente deseja nivelar o terreno selecionado a partir do centro elevando/reduzindo os limites e o padrão para a ferramenta ´Reverter´? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Executar"/> - </notification> - - <notification - - name="MaxAllowedAgentOnRegion" - > -Você pode ter somente [MAX_AGENTS] residentes permitidos. - </notification> - - <notification - - name="MaxBannedAgentsOnRegion" - > -Você pode ter apenas [MAX_BANNED] residentes banidos. - </notification> - - <notification - - name="MaxAgentOnRegionBatch" - > -Falha ao adicionar [NUM_ADDED] agentes: -Ultrapassa o limite de [MAX_AGENTS] [LIST_TYPE] de [NUM_EXCESS]. - </notification> - - <notification - - name="MaxAllowedGroupsOnRegion" - > -Você pode ter somente [MAX_GROUPS] grupos permitidos. - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Executar"/> - </notification> - - <notification - - name="MaxManagersOnRegion" - > -Você pode ter apenas [MAX_MANAGER] gerentes da Propriedade. - </notification> - - <notification - - name="OwnerCanNotBeDenied" - > -Não é possÃvel adicionar o dono da propriedade na lista de residentes banidos. - </notification> - - <notification - - name="CanNotChangeAppearanceUntilLoaded" - > -Não é possÃvel alterar a aparência até que as roupas e formas estejam carregadas. - </notification> - - <notification - - name="ClassifiedMustBeAlphanumeric" - > -O tÃtulo do seu Anúncio deve começar com uma letra entre A e Z ou número. Nenhuma pontuação é permitida. - </notification> - - <notification - - name="CantSetBuyObject" - > -Não é possÃvel configurar Comprar Objeto, porque o objeto não está à venda. -Por favor, ponha o objeto à venda e tente novamente. - </notification> - - <notification - - name="FinishedRawDownload" - > -Download do arquivo de terreno RAW concluÃdo em: -[DOWNLOAD_PATH] - </notification> - - <notification - - name="DownloadWindowsMandatory" - > -Uma nova versão do [SECOND_LIFE] está disponÃvel. -[MESSAGE] -Você deve baixar essa atualização para utilizar o [SECOND_LIFE]. - <usetemplate - name="okcancelbuttons" - notext="Sair" - yestext="Atualizar"/> - </notification> - - <notification - - name="DownloadWindows" - > -Uma versão atualizada do [SECOND_LIFE] está disponÃvel. -[MESSAGE] -Essa atualização não é mandatória, mas sugerimos que você a instale para melhorar a performance e a estabilidade. - <usetemplate - name="okcancelbuttons" - notext="Continuar" - yestext="Atualizar"/> - </notification> - - <notification - - name="DownloadWindowsReleaseForDownload" - > -Uma versão atualizada do [SECOND_LIFE] está disponÃvel. -[MESSAGE] -Essa atualização não é mandatória, mas sugerimos que você a instale para melhorar a performance e a estabilidade. - <usetemplate - name="okcancelbuttons" - notext="Continuar" - yestext="Atualizar"/> - </notification> - - <notification - - name="DownloadMacMandatory" - > -Uma nova versão do [SECOND_LIFE] está disponÃvel. -[MESSAGE] -Você deve baixar esta atualização para utilizar o [SECOND_LIFE]. - -Baixar para sua pasta de Aplicativos? - <usetemplate - name="okcancelbuttons" - notext="Sair" - yestext="Atualizar"/> - </notification> - - <notification - - name="DownloadMac" - > -Uma nova versão do [SECOND_LIFE] está disponÃvel. -[MESSAGE] -Essa atualização não é mandatória, mas sugerimos que você a instale para melhorar a performance e a estabilidade. - -Baixar para a sua pasta de Aplicativos? - <usetemplate - name="okcancelbuttons" - notext="Continuar" - yestext="Atualizar"/> - </notification> - - <notification - - name="DownloadMacReleaseForDownload" - > -Uma nova versão do [SECOND_LIFE] está disponÃvel. - -[MESSAGE] -Essa atualização não é mandatória, mas sugerimos que você a instale para melhorar a performance e a estabilidade. - -Baixar para sua pasta de Aplicativos? - <usetemplate - name="okcancelbuttons" - notext="Continuar" - yestext="Atualizar"/> - </notification> - - <notification - - name="DeedObjectToGroup" - > -Delegar este objeto causará ao grupo: -* Receber os L$ pagos ao objeto - <usetemplate - ignoretext="Ao transferir objetos aos grupos" - name="okcancelignore" - notext="Cancelar" - yestext="Acionar"/> - </notification> - - <notification - - name="WebLaunchExternalTarget" - > -Abrir o navegador do seu sistema para ver este conteúdo? - <usetemplate - ignoretext="Ao abrir o navegador web do seu sistema para visualizar uma página Web" - name="okcancelignore" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchJoinNow" - > -Ir ao www.secondlife.com para gerenciar sua conta? - <usetemplate - ignoretext="Ao abrir o navegador web para gerenciar sua conta" - name="okcancelignore" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchBugReport101" - > -Visite a Wiki [SECOND_LIFE] para aprender como reportar bugs corretamente. - <usetemplate - ignoretext="Ao abrir o web browser para visualizar o report de Bug 101 na Wiki" - name="okcancelignore" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchSecurityIssues" - > -Visite a Wiki do [SECOND_LIFE] para detalhes de como Reportar um Problema de Segurança. - <usetemplate - ignoretext="Ao abrir o navegador da web para visualizar a Wiki de Problemas de Segurança" - name="okcancelignore" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchQAWiki" - > -Visite o Wiki de QA do [SECOND_LIFE]. - <usetemplate - ignoretext="Ao abrir o navegador web para visualizar a Wiki de QA" - name="okcancelignore" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - name="WebLaunchPublicIssue" - > -Visite o Rastreador Público de Problemas do [SECOND_LIFE], onde você poderá reportar Bugs e outros Problemas. - <usetemplate - ignoretext="Ao abrir o navegador web para visualizar o Rastreador Público de Problemas" - name="okcancelignore" - notext="Cancelar" - yestext="Ir para a Página"/> - </notification> - - <notification - - name="WebLaunchPublicIssueHelp" - > -Visite a Wiki [SECOND_LIFE] para informações sobre como utilizar o Rastrador de Público de Problemas. - <usetemplate - ignoretext="Ao abrir o navegador web para visualizar a wiki do Rastreador Público de Problemas" - name="okcancelignore" - notext="Cancelar" - yestext="Ir para a página"/> - </notification> - - <notification - - name="WebLaunchSupportWiki" - > -Ir até o Blog Oficial da Linden buscar pelas últimas notÃcias e informações. - <usetemplate - ignoretext="Ao abrir o navegador da web para visualizar o blog" - name="okcancelignore" - notext="Cancelar" - yestext="Ir até a página"/> - </notification> - - <notification - - name="WebLaunchLSLGuide" - > -Ir para a página guia do LSL para ajuda com script? - <usetemplate - ignoretext="Ao abrir o navegador web para visualizar o Guia de Scripts." - name="okcancelignore" - notext="Cancelar" - yestext="Ir para a página"/> - </notification> - - <notification - - name="WebLaunchLSLWiki" - > -Ir para o portal LSL para ajuda com script? - <usetemplate - ignoretext="Ao abrir o navegador da web para visualizar o Portal de LSL" - name="okcancelignore" - notext="Cancelar" - yestext="Ir para a página"/> - </notification> - - <notification - - name="ReturnToOwner" - > -Você tem certeza que deseja retornar os objetos selecionados para seus proprietários? Objetos transferÃveis doados irão retornar aos proprietários anteriores. - -*AVISO* Objetos doados não – transferÃveis serão deletados! - <usetemplate - ignoretext="Ao retornar objetos a seus proprietários" - name="okcancelignore" - notext="Cancelar" - yestext="Retornar"/> - </notification> - - <notification - - name="GroupLeaveConfirmMember" - > -Você é atualmente um membro do grupo [GROUP]. -Deixar este grupo? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Deixar"/> - </notification> - - <notification - - name="ConfirmKick" - > -Você quer REALMENTE expulsar todos os usuários deste grid? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Expulsar todos os usuários"/> - </notification> - - <notification - - name="MuteLinden" - > -Desculpe, você não pode silenciar um Linden. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - label="Silenciar objeto pelo nome falhou" - name="MuteByNameFailed" - > -Você já silenciou este nome. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="RemoveItemWarn" - > -Embora seja permitido, deletar conteúdo pode danificar o objeto. Você quer excluir este item? - <usetemplate - name="okcancelbuttons" - notext="Não" - yestext="Sim"/> - </notification> - - <notification - - name="CantOfferCallingCard" - > -Não é possÃvel oferecer um cartão de visitas neste momento. Por favor, tente novamente em breve. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="CantOfferFriendship" - > -Não é possÃvel oferecer amizade neste momento. Por favor, tente novamente em breve. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="BusyModeSet" - > -Definido o Modo Ocupado. -Bate-papo e mensagens instantâneas serão escondidas. Mensagens instantâneas irão receber a sua resposta de modo ocupado. Todas as ofertas de teletransporte serão recusadas. Todas as ofertas de inventário irão para a sua Lixeira. - <usetemplate - ignoretext="Ao definir o Modo Ocupado" - name="okignore" - yestext="OK"/> - </notification> - - <notification - - name="JoinedTooManyGroupsMember" - > -Você já pertence a muitos grupos para entrar em outro. Por favor, deixe pelo menos um grupo antes de entrar neste. Para sair de um grupo, selecione o Menu Editar e a opção Meus 'Grupos...' -[NAME] convidou você para entrar num grupo como membro. -[INVITE] - <usetemplate - name="okcancelbuttons" - notext="Recusar" - yestext="Entrar"/> - </notification> - - <notification - - name="KickUser" - > -Expulsar este usuário com qual mensagem? - <form name="form"> - <input name="message" type="text"> -Um administrador desligou você. - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Cancelar"/> - </form> - </notification> - - <notification - - name="KickAllUsers" - > -Expulsar todo mundo atualmente do grid com qual mensagem? - <form name="form"> - <input name="message" type="text"> -Um administrador deslogou você. - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Cancelar"/> - </form> - </notification> - - <notification - - name="FreezeUser" - > -Paralise este usuário com qual mensagem? - <form name="form"> - <input name="message" type="text"> -Você foi congelado. Você não pode se mover ou conversar. Um administrador irá contatá-lo via mensagem instantânea (MI). - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Cancelar"/> - </form> - </notification> - - <notification - - name="UnFreezeUser" - > -Liberar este usuário com qual mensagem? - <form name="form"> - <input name="message" type="text"> -Você não está mais congelado. - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Cancelar"/> - </form> - </notification> - - <notification - - name="OfferTeleport" - > -Oferecer um teletransporte para sua localização com qual mensagem? - <form name="form"> - <input name="message" type="text"> -Junte-se a mim em [REGION] - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Cancelar"/> - </form> - </notification> - - <notification - - name="OfferTeleportFromGod" - > -God user convocou para a sua localização? - <form name="form"> - <input name="message" type="text"> -Junte-se a mim em [REGION] - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Cancelar"/> - </form> - </notification> - - <notification - - name="TeleportFromLandmark" - > -Você tem certeza que quer se teletransportar? - <usetemplate - ignoretext="Ao se teletransportar a partir de uma Landmark no inventário" - name="okcancelignore" - notext="Cancelar" - yestext="Teletransportar"/> - </notification> - - <notification - - label="Mensagem para todos na sua Propriedade" - name="MessageEstate" - > -Digite um breve anúncio que será enviado para todos que estejam atualmente na sua propriedade. - <form name="form"> - <input name="message" type="text"/> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Cancelar"/> - </form> - </notification> - - <notification - - label="Mudar propriedade Linden" - name="ChangeLindenEstate" - > -Você está prestes a mudar uma propriedade pertencente a Linden (continente, teen grid, orientação, etc.) - -Isto é EXTREMAMENTE PERIGOSO porque pode fundamentalmente afetar a experiência do usuário. No continente, vai mudar milhares de regiões e fazer o spaceserver soluçar. - -Proceder? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Mudar Propriedade"/> - </notification> - - <notification - - label="Mudar o acesso à propriedade Linden" - name="ChangeLindenAccess" - > -Você está prestes a mudar a lista de acessos de uma propriedade pertencente a Linden (continente, teen grid, orientação, etc.). - -Isto é PERIGOSO e deveria ser feito apenas para utilizar uma brecha que permita que objetos/L$ sejam transferidos para dentro/fora da grade. -Isto mudará milhares de regiões e fará o spaceserver soluçar. - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="OK"/> - </notification> - - <notification - - label="Selecione a propriedade" - name="EstateAllowedAgentAdd" - > -Adicionar à lista de permitidos somente para esta propriedade ou para [ALL_ESTATES]? - <usetemplate - canceltext="Cancelar" - name="yesnocancelbuttons" - notext="Todas as Propriedades" - yestext="Esta Propriedade"/> - </notification> - - <notification - - label="Selecione a propriedade" - name="EstateAllowedAgentRemove" - > -Remover da lista de permissão somente para esta propriedade ou para [ALL_ESTATES]? - <usetemplate - canceltext="Cancelar" - name="yesnocancelbuttons" - notext="Todas as Propriedades" - yestext="Esta Propriedade"/> - </notification> - - <notification - - label="Seleção de propriedade" - name="EstateAllowedGroupAdd" - > -Adicionar à lista de grupos permitidos somente para esta Região ou para [ALL_ESTATES]? - <usetemplate - canceltext="Cancelar" - name="yesnocancelbuttons" - notext="Todas as Propriedades" - yestext="Esta Propriedade"/> - </notification> - - <notification - - label="Selecione a propriedade" - name="EstateAllowedGroupRemove" - > -Remover da lista de grupos permitidos somente para esta propriedade ou de [ALL_ESTATES]? - <usetemplate - canceltext="Cancelar" - name="yesnocancelbuttons" - notext="Todas as Propriedades" - yestext="Esta Propriedade"/> - </notification> - - <notification - - label="Selecione a propriedade" - name="EstateBannedAgentAdd" - > -Negar acesso a esta propriedade somente ou para [ALL_ESTATES]? - <usetemplate - canceltext="Cancelar" - name="yesnocancelbuttons" - notext="Todas as Propriedades" - yestext="Esta Propriedade"/> - </notification> - - <notification - - label="Selecione a propriedade" - name="EstateBannedAgentRemove" - > -Remover este residente da lista de banidos para acesso a esta propriedade apenas ou para [ALL_ESTATES]? - <usetemplate - canceltext="Cancelar" - name="yesnocancelbuttons" - notext="Todas as Propriedades" - yestext="Esta Propriedade"/> - </notification> - - <notification - - label="Selecione a propriedade" - name="EstateManagerAdd" - > -Adicionar gerente da propriedade para esta propriedade somente ou para [ALL_ESTATES]? - <usetemplate - canceltext="Cancelar" - name="yesnocancelbuttons" - notext="Todas as Propriedades" - yestext="Esta Propriedade"/> - </notification> - - <notification - - label="Selecione a propriedade" - name="EstateManagerRemove" - > -Remover o gerente da propriedade desta propriedade apenas ou para [ALL_ESTATES]? - <usetemplate - canceltext="Cancelar" - name="yesnocancelbuttons" - notext="Todas as Propriedades" - yestext="Esta Propriedade"/> - </notification> - - <notification - - label="Confirmar expulsão" - name="EstateKickUser" - > -Expulsar [EVIL_USER] desta propriedade? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Expulsar"/> - </notification> - - <notification - - name="EstateChangeCovenant" - > -Tem certeza de que deseja mudar o Corretor da Propriedade? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Mudar"/> - </notification> - - <notification - - name="ProblemImportingEstateCovenant" - > -Problemas encontrados ao importar o Corretor da propriedade. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="ProblemAddingEstateManager" - > -Problemas em adicionar um novo gerente da propriedade. Uma ou mais propriedades podem ter uma lista de gerentes cheia. - </notification> - - <notification - - name="ProblemAddingEstateGeneric" - > -Problemas em adicionar a esta lista de propriedades. Uma ou mais propriedades podem ter uma lista cheia. - </notification> - - <notification - - name="UnableToLoadNotecard" - > -Não é possÃvel carregar notas neste momento. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="NotAllowedToViewNotecard" - > -Permissões insuficientes para visualizar notecard associado com o ID do ativo solicitado. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="MissingNotecardAssetID" - > -O ID do ativo do notecard não foi localizado no banco de dados. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="PublishClassified" - > -Lembre-se: Taxas de Anúncios de Classificados não são reembolsáveis. - -Publicar este classificado agora por L$ [AMOUNT]? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Publicar"/> - </notification> - - - - - - <notification - - label="Confirmar reiniciar" - name="ConfirmRestart" - > -Você quer realmente reiniciar esta região em 2 minutos? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Reiniciar"/> - </notification> - - <notification - - label="Mensagem para todos desta Região" - name="MessageRegion" - > -Digite um breve aviso que será enviado para todos nesta região. - <form name="form"> - <input name="message" type="text"/> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Cancelar"/> - </form> - </notification> - - <notification - - label="Bloquear Terraforma" - name="HelpRegionBlockTerraform" - > -Se esta opção for assinalada, donos de Terrenos não serão capazes de terraformar independentemente da configuração 'Editar Terreno' de suas terras por lote. - -Padrão: desligado - </notification> - - <notification - - label="Bloquear Vôo" - name="HelpRegionBlockFly" - > -Se esta caixa estiver marcada, as pessoas não poderão voar nesta região independente das configurações por lote de 'Voar'. - -Padrão: desligado. - </notification> - - <notification - - label="Permitir Dano" - name="HelpRegionAllowDamage" - > -Marcar essa caixa habilita o sistema de vitalidade em todos os lotes independente das configurações individuais. Se esta caixa ficar desmarcada, os proprietários de lotes individuais ainda estarão aptos a ativar o sistema de vitalidade de seus lotes. - -Padrão: desligado. - </notification> - - <notification - - label="Limite de Agentes" - name="HelpRegionAgentLimit" - > -Define o número máximo de residentes permitidos nesta região. -Quanto mais residentes existirem em sua região, pior pode ser a performance. - -Padrão: 40 - </notification> - - <notification - - label="Bonus de Objetos" - name="HelpRegionObjectBonus" - > -O Bônus de objetos é um multiplicador para primitivas permitidas em qualquer lote. O intervalo permitido é de 1 a 10. -Se fixado em '1 ', 512m² de cada lote permitem 117 objetos. -Fixado em '2 ', 512m² cada lote permitem 234, ou o dobro, e assim por diante. -O número máximo de objetos permitidos por região permanece 15000 não importa qual seja o Bônus de objeto. Uma vez estabelecido, esteja ciente de que a redução do Bônus de objetos pode retornar objetos ou apagá-los. - -Padrão: 1.0 - </notification> - - - - <notification - - label="Restringir Empurrar" - name="HelpRegionRestrictPushObject" - > -Esta caixa de verificação Configura toda a região para permissões restritivas de empurrar. -Quando habilitada, os agentes só podem empurrar a si mesmos ou serem empurrados pelo dono do lote. -(Empurrar se refere à função LSL llPushObject().) - -Padrão: Desligado. - </notification> - - <notification - - label="Unir/dividir lote" - name="HelpParcelChanges" - > -Configura se os lotes que não pertencem ao dono da propriedade podem ser unidos ou subdivididos. -Se esta opção estiver desmarcada: - * Apenas os donos ou gerentes de propriedades podem unir ou dividir lotes. - * Eles podem unir ou subdividir lotes pertencentes ao dono ou ao grupo onde eles tem os poderes apropriados. -Se esta opção estiver marcada: - * Todos os donos de lotes podem unir ou subdividir os lotes que eles possuem. - * Para lotes pertencentes a grupos, aqueles com os poderes apropriados podem unir ou subdividir lotes. - -Padrão: Marcado. - </notification> - - <notification - - label="Não Mostrar na Pesquisa" - name="HelpRegionSearch" - > -Ao marcar esta caixa irá bloquear os donos de lotes de listar seus lotes na busca - -Padrão: desligado - </notification> - - <notification - - label="Modificar a maturidade da Região" - name="RegionMaturityChange" - > -A classificação de maturidade para esta região foi atualizada. -Pode levar algum tempo para que a mudança seja refletida no mapa. - </notification> - - <notification - - label="Revenda de Terreno" - name="HelpRegionLandResell" - > -Os gerentes e os donos de propriedades podem vender qualquer terreno pertencente ao dono da propriedade. -Se esta opção estiver desmarcada, os compradores não podem revender seus terrenos nesta região. -Se esta opção estiver marcada, compradores podem vender seus terrenos nesta região. - -Padrão: Desabilitada. - </notification> - - <notification - - label="Desabilitar Scripts" - name="HelpRegionDisableScripts" - > -Quando a performance do simulador está ruim, um script pode ser o culpado. Abra a Barra de EstatÃsticas (Ctrl-Shift-1). Olhe no Simulador de FÃsica FPS. Se estiver abaixo de 45, então abra o painel 'Tempo' localizado na parte de baixo da Barra de EstatÃsticas. Se o Tempo de Script indicar 25 ms ou mais, clique no botão 'Get Top CScripts'. Será dado o nome e a localização do script que pode estar causando uma performance ruim. Marque a caixa 'Desabilitar Scripts' e aperte o botão 'Aplicar'. Isto temporariamente desabilitará todos os scripts nesta região. Uma vez que você chegar ao local, investigue o script para determinar se ele está causando o problema. Você pode querer entrar em contato com o proprietário do script, excluir ou devolver o objeto. Desmarque a caixa 'Desabilitar Script' e então clique em 'Aplicar' para reativar os scripts na região. Padrão: desligado. - </notification> - - <notification - - label="Desabilitar Colisões" - name="HelpRegionDisableCollisions" - > -Quando a performance do simulador é pobre, os objetos fÃsicos podem ser os culpados.Abra a a Barra de EstatÃsticas (Ctrl-Shift-1). -Olhe a taxa de quadros por segundos (FPS) dos objetos fÃsicos. - -Se ela estiver abaixo de 45, abra o painel de Tempo, localizado na parte inferior da Barra de EstatÃsticas. Se o Tempo (FÃsicos) do Simulador mostrar 20 ms ou mais, clique o botão 'Pegue os Maiores Colidentes'. Será fornecido a você o nome e a localidade dos objetos fÃsicos que podem estar causando uma performance pobre. -Ativando a caixa Desabilitar Colisões e então pressionando o botão Aplicar, as colisões objeto-objeto serão temporariamente desabilitadas. Você pode precisar fazer isso para que possa viajar até a localidade onde observou um 'colidente-mor'. Uma vez tendo chegado à localidade, investigue o objeto – ele está constantemente colidindo com outros objetos? Você pode desejar contatar o dono do objeto ou deletar ou retornar o objeto. -Desative a caixa 'Desabilitar Colisões' e então use 'Aplicar' para reativar as colisões na região. - -Padrão: off - </notification> - - <notification - - label="Desabilitar FÃsica" - name="HelpRegionDisablePhysics" - > -Desabilitar FÃsica é similar a desabilitar Colisões, com exceção de que todas as simulações fÃsicas serão desabilitadas. Isto significa que não só os objetos pararão de colidir, mas também que os avatares não poderão se mover. - -Isto só deve ser usado quando Desabilitar Colisões não trouxer performance suficiente à região para investigar um problema de FÃsica ou do 'Colidente-Mor'. - -Esteja certo de reabilitar FÃsica quando você terminar, ou os avatares não poderão se mover. - -Default: desligado - </notification> - - <notification - - label="Principais Colidentes" - name="HelpRegionTopColliders" - > -Mostra uma lista de objetos com o maior número de potenciais colisões objeto-objeto. Estes objetos podem diminuir a performance do simulador. -Selecione Ver > Barra de EstatÃsticas e olhe em Simulador > Tempo > Tempo de Simulação (FÃsica) para ver se mais de 20 ms são gastos em fÃsica. - </notification> - - <notification - - label="Principais Scripts" - name="HelpRegionTopScripts" - > -Mostra uma lista dos objetos gastando mais tempo rodando scripts LSL. Estes objetos podem diminuir a performance do simulador. -Selecione Ver > Barra de EstatÃsticas e olhe em Simulador > Tempo > Tempo de Script para ver se mais de 25 ms são gastos em scripts. - </notification> - - <notification - - label="Reiniciar Região" - name="HelpRegionRestart" - > -Reinicia o processo do servidor rodando esta região, após um aviso de dois minutos. Todos os residentes nesta região serão desconectados. A região salvará seus dados e deverá retornar em até 90 segundos. - -Reiniciar a região não consertará a maioria dos problemas de performance, e deveria ser utilizada somente quando solicitado. - </notification> - - <notification - - label="Altura da água" - name="HelpRegionWaterHeight" - > -Esta é a altura em metros onde a água aparece. Caso este ajuste seja diferente de 20 e você tenha águas adjacentes ao limite do seu terreno ou águas continentais, haverá uma abertura visÃvel. - -Padrão: 20 - </notification> - - <notification - - label="Limite do aumento" - name="HelpRegionTerrainRaise" - > -Esta é a distância em metros que os donos de lotes podem elevar o terreno, a partir da altura nivelada do terreno. - -Padrão: 4 - </notification> - - <notification - - label="Limite mais baixo" - name="HelpRegionTerrainLower" - > -Esta é a distância em metros que os donos de lotes podem abaixar o terreno, a partir da altura nivelada do terreno. - -Padrão: -4 - </notification> - - <notification - - label="Carregar terreno RAW" - name="HelpRegionUploadRaw" - > -Este botão faz upload de um arquivo .RAW para a região em que você está. -O arquivo precisa conter as dimensões/número de canais corretos: RGB, 256x256 e 13 canais. A melhor forma de criar um arquivo da região é baixando o arquivo .RAW existente. Um bom primeiro passo seria modificar o primeiro canal (altura da região) e fazer o upload do arquivo. - -O upload pode levar certa de 45 segundos. Note que fazer upload do arquivo da região *não* moverá os objetos que estão na região, apenas o terreno e as permissões associadas a ele. Isso pode fazer com que alguns objetos fiquem debaixo da terra. - -Para mais informações sobre edição dos campos de altura da região, consulte a ajuda F1. - </notification> - - <notification - - label="Baixar RAW de terreno" - name="HelpRegionDownloadRaw" - > -Este botão faz download de um arquivo contendo dados de altura do campo, dimensões do lote, status de lotes à venda e algumas permissões de lote para este terreno. Ao abrir o arquivo em programas como o Photoshop, você precisa especificar as dimensões do documento, que são: RGB, 256x256 com 13 canais. Este arquivo de terras não pode ser aberto de outra forma. - -Para mais informações sobre edição dos campos de altura da região, consulte a Ajuda F1. - </notification> - - <notification - - label="Usar Sol da Propriedade" - name="HelpRegionUseEstateSun" - > -Esta caixa de opção faz com que a posição do sol nesta região seja a mesma que no resto da região. - -Padrão: ligada - </notification> - - <notification - - label="Sol fixo" - name="HelpRegionFixedSun" - > -Esta caixa de opção ajusta a posição do sol no equalizador de fuso e interrompe o movimento do sol. - -Padrão: desligada - </notification> - - <notification - - label="Nivelar Terreno" - name="HelpRegionBakeTerrain" - > -Este botão salva a forma atual do terreno como o novo padrão para a região. Uma vez nivelado, o terreno pode reverter à forma que foi salva, sempre que você ou outros utilizarem a ferramenta 'Revert' na edição de terreno. O terreno nivelado é também o ponto médio entre os limites de elevação e redução de terreno. - </notification> - - <notification - - label="Gerentes da Propriedade" - name="HelpEstateEstateManager" - > -Um gerente da propriedade é um residente a quem você delegou o controle das configurações da região. Ele pode alterar qualquer configuração da região, com exceção de elevar, abaixar ou nivelar o terreno. Em particular, eles podem permitir ou banir residentes da sua propriedade. Gerentes da propriedade só podem ser adicionados ou removidos pelo dono da propriedade. - -Um gerente não pode adicionar ou remover outro gerente. Por favor, escolha somente residentes em quem você confia para serem gerentes da propriedade, pois você poderá ser responsabilizado pelas ações deles. - </notification> - - <notification - - label="Usar hora Global" - name="HelpEstateUseGlobalTime" - > -Esta caixa de opção faz com que o Sol em sua propriedade siga a mesma posição do Sol nas propriedades da 'mainland' do Linden Lab. - -Padrão: ligado - </notification> - - <notification - - label="Sol fixo" - name="HelpEstateFixedSun" - > -Esta caixa de opção ajusta a posição do sol no equalizador de fuso e interrompe o movimento do sol. - </notification> - - <notification - - label="Acesso público" - name="HelpEstateExternallyVisible" - > -Esta caixa de verificação define se os Residentes que estão em outras propriedades podem entrar nesta, sem estar em uma lista de acesso. - -Padrão: on - </notification> - - <notification - - label="Permitir Teletransporte direto" - name="HelpEstateAllowDirectTeleport" - > -Quando marcada, permite que os residentes se teletransportem diretamente para qualquer ponto da sua propriedade. Quando desmarcada, os residentes serão teleportados para o telehub mais próximo. - -Padrão: desmarcada - </notification> - - <notification - - label="Permitir acesso" - name="HelpEstateAllowResident" - > -Acesso a esta propriedade estará limitado aos Residentes listados aqui e em quaisquer grupos abaixo. -Esta definição está disponÃvel apenas quando o Acesso Público estiver desmarcado. - </notification> - - <notification - - label="Permitir acesso de grupo" - name="HelpEstateAllowGroup" - > -Acesso a esta propriedade estará limitado aos grupos listados aqui e a quaisquer Residentes acima. -Esta definição está disponÃvel apenas quando o Acesso Público estiver desmarcado. - </notification> - - <notification - - label="Endereço de Email do Abuso" - name="HelpEstateAbuseEmailAddress" - > -Configurar isto para um endereço de email válido, fará com que relatos de abuso nesta propriedade sejam enviados para esse endereço. -DefinÃ-lo em branco fará com que os relatórios de abuso sejam enviados apenas para a Linden Lab. - </notification> - - <notification - - label="Negar acesso" - name="HelpEstateBanResident" - > -Residentes desta lista estão proibidos de acessar a sua propriedade, independentemente de outras configurações. - </notification> - - <notification - - label="Permitir Conversa por Voz" - name="HelpEstateVoiceChat" - > -Lotes nesta propriedade têm permissão para ter seus canais de voz próprios, nos quais os residentes podem ouvir e falar com os outros residentes próximos. - -Padrão: desligado - </notification> - - <notification - - label="Discordância de Versão de Voz" - name="VoiceVersionMismatch" - > -Esta versão do Second Life não é compatÃvel com as caracterÃsticas do Canal de Voz desta região. Para que a Conversa por Voz funcione corretamente, você precisará atualizar o Second Life. - </notification> - - <notification - - label="Corretor da Propriedade" - name="HelpEstateCovenant" - > -Definir um corretor da propriedade lhe permite vender lotes nesta propriedade. Se um corretor não for definido, você não pode vender terras. O cartão do seu corretor pode ficar vazio se você não desejar aplicar quaisquer regras ou avisar os compradores sobre qualquer coisa em relação ao lote antes da compra. - -Um corretor pode ser usado para comunicar regras, orientações, informações culturais ou simplesmente suas expectativas quanto ao futuro comprador. Isto pode incluir zoneamento, regulamentos para construções, opções de pagamento ou qualquer outra informação que você julgar importante que o novo proprietário veja e concorde antes da compra. - -O comprador precisa concordar com o corretor marcando a caixa de verificação antes de concluir a compra. Corretores são sempre visÃveis na caixa de diálogo 'Sobre a Terra' para todos os lotes que têm corretores definidos. - </notification> - - <notification - - label="ImpossÃvel Comprar Objetos" - name="BuyObjectOneOwner" - > -Não é possÃvel comprar objetos de diferentes proprietários ao mesmo tempo. -Por favor, selecione apenas um objeto e tente novamente. - </notification> - - <notification - - label="ImpossÃvel Comprar Conteúdos" - name="BuyContentsOneOnly" - > -Não é possÃvel comprar os conteúdos de mais de um objeto ao mesmo tempo. -Por favor, selecione apenas um objeto e tente novamente. - </notification> - - <notification - - label="ImpossÃvel Comprar Conteúdos" - name="BuyContentsOneOwner" - > -Não é possÃvel comprar objetos de diferentes proprietários ao mesmo tempo. -Por favor, selecione apenas um objeto e tente novamente. - </notification> - - <notification - - name="BuyOriginal" - > -Comprar o objeto original de [OWNER] por L$[PRICE]? -Você se tornará o proprietário deste objeto. -Você poderá: - Modificar: [MODIFYPERM] - Copiar: [COPYPERM] - Revender ou Doar: [RESELLPERM] - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Comprar"/> - </notification> - - <notification - - name="BuyOriginalNoOwner" - > -Comprar o objeto original por L$[PRICE]? -Você se tornará o proprietário deste objeto. -Você poderá: - Modificar: [MODIFYPERM] - Copiar: [COPYPERM] - Revender ou Doar: [RESELLPERM] - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Comprar"/> - </notification> - - <notification - - name="BuyCopy" - > -Comprar uma cópia de [OWNER] por L$[PRICE]? -O objeto será copiado para o seu inventário. -Você poderá: - Modificar: [MODIFYPERM] - Copiar: [COPYPERM] - Revender ou Doar: [RESELLPERM] - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Comprar"/> - </notification> - - <notification - - name="BuyCopyNoOwner" - > -Comprar uma cópia por L$[PRICE]? -O objeto será copiado para o seu inventário. -Você poderá: - Modificar: [MODIFYPERM] - Copiar: [COPYPERM] - Revender ou Doar: [RESELLPERM] - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Comprar"/> - </notification> - - <notification - - name="BuyContents" - > -Comprar conteúdo de [OWNER] por L$[PRICE]? -Eles serão copiados para o seu inventário. - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Comprar"/> - </notification> - - <notification - - name="BuyContentsNoOwner" - > -Comprar conteúdo por L$[PRICE]? -Eles serão copiados para o seu inventário. - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Comprar"/> - </notification> - - <notification - - name="ConfirmPurchase" - > -Esta transação fará: -[ACTION] - -Você tem certeza de que deseja prosseguir com esta compra? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Confirmar"/> - </notification> - - <notification - - name="ConfirmPurchasePassword" - type="password"> -Esta transação fará: -[ACTION] - -Você tem certeza de que deseja prosseguir com esta compra? -Por favor, re-insira sua senha e clique 'Confirmar Compra'. - <form name="form"> - <input - name="message" - type="password"/> - <button - - - name="ConfirmPurchase" - text="Confirmar Compra"/> - <button - - name="Cancel" - text="Cancelar"/> - </form> - </notification> - - <notification - - name="SetPickLocation" - > -Nota: Você atualizou a localidade desta pick mas os outros detalhes ficarão com seus valores originais. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="MoveInventoryFromObject" - > -Você selecionou itens 'no copy' do inventário. -Estes itens serão movidos para o seu inventário, não copiados. - -Mover os itens do inventário? - <usetemplate - ignoretext="Quando estiver movendo inventário não copiável a partir de objetos." - name="okcancelignore" - notext="Não mover" - yestext="Mover"/> - </notification> - - <notification - - name="MoveInventoryFromScriptedObject" - > -Você selecionou itens de inventário não copiáveis. -Estes itens serão movidos para seu inventário, não copiados. Pelo fato de o objeto ter scripts, mover estes itens ao inventário pode provocar um mal funcionamento do script. - -Mover para o inventário o(s) item(s)? - <usetemplate - ignoretext="Quando movendo objetos com scripts não copiáveis ao inventário" - name="okcancelignore" - notext="Não mover" - yestext="Mover"/> - </notification> - - <notification - - name="ClickActionNotPayable" - > -Aviso: A ação de Pagar ao Objeto com clique foi definida, mas funcionará apenas se for adicionado um script com o evento money(). - <form name="form"> - <ignore name="ignore" - text="Quando Definindo 'Pagar' em objetos sem eventos money()"/> - </form> - </notification> - - <notification - - name="OpenObjectCannotCopy" - > -Não há itens neste objeto que você está autorizado a copiar. - </notification> - - <notification - - name="WebLaunchAccountHistory" - > -Ir para o site do Second Life para visualizar o histórico de sua conta? - <usetemplate - ignoretext="Ao abrir a página web de histórico de conta" - name="okcancelignore" - notext="Cancelar" - yestext="Ir para a página"/> - </notification> - - <notification - - name="ClickOpenF1Help" - > -Visitar o website de Suporte do Second Life? - <usetemplate - ignoretext="Quando visitando o website de Suporte do Second Life" - name="okcancelignore" - notext="Cancelar" - yestext="Ir"/> - </notification> - - <notification - - name="ConfirmQuit" - > -Tem certeza que deseja sair? - <usetemplate - ignoretext="Quando Saindo do Second Life." - name="okcancelignore" - notext="Continuar" - yestext="Sair"/> - </notification> - - <notification - - name="HelpReportAbuseEmailLL" - > -Use esta ferramenta para reportar violações aos Termos de Serviço e aos Padrões da Comunidade. Veja: - -http://secondlife.com/corporate/tos.php -http://secondlife.com/corporate/cs.php - -Todos os abusos aos Termos de Serviço e aos Padrões da Comunidade reportados, são investigados e resolvidos. Você pode ver a resolução do incidente na Reportagem de Incidentes em: - -http://secondlife.com/support/incidentreport.php - </notification> - - <notification - - name="HelpReportAbuseEmailEO" - > -IMPORTANTE: Esta reportagem irá para o dono da região em que você se encontra atualmente e não para a Linden Lab. - -Como um serviço aos residentes e visitantes, o dono da região em que você se encontra foi eleito para receber e resolver todas as reportagens originadas nesta região. A Linden Lab não irá investigar reportagens que você envia desta localidade. - -O dono da região resolverá as reportagens baseado nas regras locais desta região, como definido na Declaração da propriedade. -(Veja as declarações indo ao menu Mundo e selecionando Sobre a Terra.) - -A resolução desta reportagem se aplica apenas a esta região; o acesso de Residentes à s outras áreas do Second Life não será afetado pelas decisões desta reportagem. -Apenas a Linden Lab pode restringir acesso a todo o Second Life. - </notification> - - <notification - - name="HelpReportBug" - > -Use esta ferramenta para reportar *apenas* caracterÃsticas técnicas que não atuem como descrito ou esperado. -Por favor, forneça tantos detalhes quanto possÃvel. -Você pode responder ao e-mail de resposta automática para adicionar mais detalhes à sua reportagem. - -Todas as reportagens de bugs são investigadas e avaliadas. -Nenhum e-mail de resposta será enviado. - -Se você estiver tendo uma dificuldade técnica, por favor contate o Suporte em: -http://secondlife.com/community/support.php - -Nota: reportagens incompletas não serão investigadas - </notification> - - <notification - - name="HelpReportAbuseSelectCategory" - > -Por favor, selecione uma categoria para a reportagem deste abuso. -A seleção de uma categoria nos ajuda a arquivar e processar as reportagens de abuso. - </notification> - - <notification - - name="HelpReportBugSelectCategory" - > -Por favor, selecione uma categoria para este bug. -A seleção de uma categoria nos ajuda a arquivar e processar as reportagens de bugs. - </notification> - - <notification - - name="HelpReportAbuseAbuserNameEmpty" - > -Por favor, entre com o nome do perturbador. -Entrando com um valor preciso, nos ajuda a arquivar e processar as reportagens de abuso. - </notification> - - <notification - - name="HelpReportAbuseAbuserLocationEmpty" - > -Por favor, entre com a localidade aonde o abuso aconteceu. -Entrando com um valor preciso, nos ajuda a arquivar e processar as reportagens de abuso. - </notification> - - <notification - - name="HelpReportAbuseSummaryEmpty" - > -Por favor, digite um resumo de como ocorreu o abuso. -Fazer um resumo detalhado nos ajuda a arquivar e processar as reportagens de abuso. - </notification> - - <notification - - name="HelpReportBugSummaryEmpty" - > -Por favor, digite um resumo do bug. Realizar um resumo detalhado nos ajuda a arquivar e processar as reportagens de abuso. - </notification> - - <notification - - name="HelpReportAbuseDetailsEmpty" - > -Por favor, digite uma descrição detalhada do abuso que ocorreu. -Seja tão especÃfico quanto você puder, incluindo nomes e os detalhes do incidente que está denunciando. -Fazer uma descrição precisa nos ajuda a arquivar e processar as reportagens de abuso. - </notification> - - <notification - - name="HelpReportBugDetailsEmpty" - > -Por favor, digite uma descrição detalhada do bug. -Seja tão especÃfico quanto você puder, incluindo as etapas para reproduzir o bug, se possÃvel. -Fazer uma descrição precisa nos ajuda a arquivar e processar os relatórios de bugs. - </notification> - - <notification - - name="HelpReportAbuseContainsCopyright" - > -Caro Residente, - -Você parece estar relatando violação de propriedade intelectual. Por favor, certifique-se de que está relatando corretamente: - -(1) O Processo de abuso. Você pode apresentar um relatório de abuso se você acredita que um Residente está infringindo o sistema de permissões do Second Life, por exemplo, utilizando ferramentas CopyBot para copiar ou similar, para violar os direitos de propriedade intelectual. A Equipe de Abuso investiga e divulga a ação disciplinar adequada para o comportamento que viola o Estatuto da Comunidade do Second Life ou os Termos de Serviço. No entanto, a mesma não controla e não irá responder aos pedidos para remover o conteúdo do mundo Second Life. - -(2) O processo de remoção de conteúdo ou DMCA. Para solicitar a remoção de conteúdo do Second Life, você deve enviar uma notificação válida de infração, conforme previsto em nossa PolÃtica de DMCA em http://secondlife.com/corporate/dmca.php. - -Se você ainda deseja prosseguir com o processo de abuso, por favor, feche esta janela e termine de enviar seu relatório. Pode ser necessário selecionar a categoria especÃfica 'CopyBot Infração de Permissões'. - -Obrigado, -Linden Lab - </notification> - - <notification - - name="FailedRequirementsCheck" - > -Não foram encontrados os seguintes componentes requeridos de [FLOATER]: -[COMPONENTS] - </notification> - - <notification - - label="Substituir anexo existente" - name="ReplaceAttachment" - > -Já existe um objeto anexado a este ponto do seu corpo. -Você deseja substituÃ-lo pelo objeto selecionado? - <form name="form"> - <ignore name="ignore" - save_option="true" - text="Ao substituir os anexos existentes"/> - <button - - - - name="Yes" - text="Sim"/> - <button - - - name="No" - text="Não"/> - </form> - </notification> - - <notification - - label="Aviso de Modo Ocupado" - name="BusyModePay" - > -Você está no modo Ocupado, o que significa que você não receberá quaisquer itens oferecidos em troca deste pagamento. - -Você gostaria de deixar o modo Ocupado antes de completar esta transação? - <form name="form"> - <ignore name="ignore" - save_option="true" - text="Ao pagar uma pessoa ou objeto no modo ocupado"/> - <button - - - - name="Yes" - text="Sim"/> - <button - - - name="No" - text="Não"/> - </form> - </notification> - - <notification - - name="ConfirmEmptyTrash" - > -Tem certeza de que deseja remover permanentemente o conteúdo da lixeira de seu inventário? - <usetemplate - ignoretext="Ao esvaziar a pasta da lixeira no seu inventário" - name="okcancelignore" - notext="Não" - yestext="Sim"/> - </notification> - - <notification - - name="ConfirmClearBrowserCache" - > -Você tem certeza que deseja limpar o cache do seu navegador? - <usetemplate - name="okcancelbuttons" - notext="Não" - yestext="Sim"/> - </notification> - - <notification - - name="ConfirmClearCookies" - > -Você tem certeza de que deseja limpar os cookies? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Sim"/> - </notification> - - <notification - - name="ConfirmClearMediaUrlList" - > -Você tem certeza de que deseja limpar toda sua lista de URLs? - <usetemplate - name="okcancelbuttons" - notext="Cancelar" - yestext="Sim"/> - </notification> - - <notification - - name="ConfirmEmptyLostAndFound" - > -Deseja realmente remover permanentemente o conteúdo da pasta achados e perdidos? - <usetemplate - ignoretext="Ao esvaziar pasta Achados e Perdidos do seu inventário" - name="okcancelignore" - notext="Não" - yestext="Sim"/> - </notification> - - <notification - - name="CopySLURL" - > -A seguinte SLURL foi copiada para o seu clipboard: - [SLURL] - -Coloque-a em uma página web para dar aos outros um fácil acesso a este local ou tente você, colando-a na barra de endereços do seu navegador. - <form name="form"> - <ignore name="ignore" - text="Ao copiar a SURL para o seu clipboard"/> - </form> - </notification> - - <notification - - name="GraphicsPreferencesHelp" - > -Este painel controla o tamanho da janela, resolução e a qualidade dos gráficos do computador cliente. O Preferências > Interface Gráfica permite escolher entre quatro nÃveis gráficos: Baixo, Médio, Alto e Ultra. Você também pode personalizar suas configurações de gráficos selecionando a opção Custom e manipulando as seguintes definições: - -Sombreamento: Ativar ou desativar vários tipos de sobreadores de pixel. - -Detalhes de Reflexão: Define os tipos de objetos que a água pode refletir. - -Renderização de Avatar: Define opções que afetam a forma como o cliente renderizará os avatares. - -Alcance: Afeta a distância do seu ponto de vista que os objetos serão renderizados na cena. - -Número máximo de partÃculas: Define o número máximo de partÃculas que será capaz de ver na sua tela de uma só vez. - -Qualidade de Pós-Processamento: Define a resolução com a qual o brilho será renderizado. - -Detalhes de malha: Ajusta a quantidade de detalhes ou número de triângulos utilizados na renderização de certos objetos. Um valor mais alto leva mais tempo para renderizar, mas torna esses objetos mais detalhados. - -Detalhe de Iluminação: Seleciona os tipos de luzes que você gostaria de renderizar. - -Detalhe de Terreno: Ajusta a quantidade de detalhes que você gostaria de ver para a textura do terreno. - </notification> - - <notification - - name="WLSavePresetAlert" - > -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="HelpEditSky" - > -Editar os controles graduais do WindLight para configurar e salvar um conjunto de céus. - </notification> - - <notification - - name="HelpEditDayCycle" - > -Definir quais céus colocar durante todo o dia. - </notification> - - <notification - - name="EnvSettingsHelpButton" - > -Essas configurações ajustam a forma como o ambiente parece localmente no seu computador. Sua placa de vÃdeo precisa suportar o sombreador atmosférico, a fim de ter acesso a todas as definições. - -Ajuste o controle gradual "Hora do Dia" para alterar a fase do dia localmente no visualizador. - -Ajuste o controle gradual de "Cobertura das nuvens" para controlar quantas nuvens cobrem o céu. - -Pegue uma cor na paleta de cores de "Cor da Ãgua" para mudar a cor desta. - -Ajuste o controle gradual de "Névoa de Ãgua" para controlar o quão densa é a névoa dentro da água. - -Clique "Usar Horário da Propriedade" para redefinir a hora do dia para o horário atual do dia da região e permanecer atrelado a ela. - -Clique "Céu Avançado " para abrir um editor com configurações mais avançadas para o céu. - -Clique "Ãgua Avançada " para abrir um editor com configurações mais avançadas para a água. - </notification> - - <notification - - name="HelpDayCycle" - > -O editor de Ciclo do Dia dá a você o controle do céu durante um ciclo de dia/noite do Second Life. Este é o ciclo usado pelo controle gradual da hora do dia do editor de ambiente básico. - -O editor do ciclo de dia trabalha configurando quadros-chave. Estes são pontos (representados pelos Ãcones cinza no gráfico de horário) que possuem um pré-ajuste de céu associado a eles. Conforme o dia passa, o céu do Windlight " anima " a interpolação entre esses quadros-chave. - -A seta amarela acima da linha de tempo representa a sua vista atual, baseada no horário do dia. Clique e arraste para ver como o seu dia será animado. Você pode adicionar ou deletar os quadros-chave pressionando os botões Adicionar Chave e Deletar chave ao lado direito da linha de tempo. - -Você pode configurar a posição do tempo de um quadro-chave arrastando-o pela linha do tempo, ou configurando manualmente no quadro de configurações do seu quadro-chave. Será possÃvel a você associar o seu quadro-chave a este respectivo padrão WindLight. - -A duração do ciclo determina a duração geral do "dia". Configurá-la para um valor baixo (por exmplo, 2 min.) quer dizer que a linha do tempo de 24 horas será animada completamente em apenas dois minutos reais! Assim que estiver satisfeito com a linha do tempo e o ciclo dos quadros-chave, use os botões Play e Stop para uma prévia de como ficará o resultado. Lembre-se, você também pode utilizar a seta amarela indicadora do tempo acima da linha do tempo para ver o ciclo animado interativamente. Usando o botão do tempo da popriedade irá sincronizar a duração do seu dia ao ciclo diário da propriedade. - -Assim que estiver satisfeito com o seu ciclo diário, você pode salvá-lo ou carregá-lo através dos botões Salvar Dia Teste e Carregar Dia Teste. Note que, por enquanto, nós permitimos apenas um Ciclo de dia. - </notification> - - <notification - - name="HelpBlueHorizon" - > -Use os cursores Vermelho/Verde/Azul ( Red/Green/Blue -RGB) para ajustar as cores do céu. Você também pode usar o controle de Intensidade (I) para mover os três controles RGB simultaneamente. - </notification> - - <notification - - name="HelpHazeHorizon" - > -Haze Horizon é um dos parâmetros mais úteis para ajuste global de exposição de luz na cena. Ele é eficaz para simular diversas configurações de exposição, tais como configurações para super-exposição do sol e escuros halos de Iris. - </notification> - - <notification - - name="HelpBlueDensity" - > -A densidade global azul afeta a saturação da cor do céu e nevoeiro. Se você mover o controle gradual de intensidade (I) para a direita, as cores vão se tornar mais brilhantes e vibrantes. Se você movê-lo totalmente para a esquerda, as cores perdem intensidade e cor, eventualmente chegando a preto e branco. Se pretende um ajuste fino do equilÃbrio de cor do céu, você pode controlar os diversos elementos da saturação, utilizando os controles graduais para vermelho / verde / azul (RGB). - </notification> - - <notification - - name="HelpHazeDensity" - > -Densidade de Poeira controla o nÃvel de fumaça, poeira cinza na atmosfera. Eficaz para simular cenas com altos nÃveis de poeira e poluentes. É também efetivo em simular névoa e nevoeiro. - </notification> - - <notification - - name="HelpDensityMult" - > -O Multiplicador de Densidade pode ser usado para afetar a densidade atmosférica global. Com definições mais baixas, ele cria uma sensação de "ar rarefeito" e em definições mais altas, ele cria um efeito mais denso, mais esfumaçado. - </notification> - - <notification - - name="HelpDistanceMult" - > -Ajusta como a distância no WindLight é percebida. Um valor zero efetivamente desativa a influência do WindLight sobre terrenos e objetos. Valores superiores a 1 simulam os efeitos atmosféricos mais espessos a maiores distâncias. - </notification> - - <notification - - name="HelpMaxAltitude" - > -Max Altitude ajusta os cálculos de performance de altitude do WindLight, quando computa sua iluminação atmosférica. Em perÃodos vespertinos do dia, é útil para ajustar a "profundidade" de como o pôr-do-sol aparece. - </notification> - - <notification - - name="HelpSunlightColor" - > -Ajustar a cor e intensidade da luz direta na cena. - </notification> - - <notification - - name="HelpSunAmbient" - > -Ajusta a cor e a intensidade da luz ambiente atmosférica na cena. - </notification> - - <notification - - name="HelpSunGlow" - > -O controle gradual de Tamanho controla o tamanho do sol. -O controle gradual de Foco controla o quanto o sol aparecerá desfocado no céu. - </notification> - - <notification - - name="HelpSceneGamma" - > -Ajusta a distribuição na tela de luz e escuridão. - </notification> - - <notification - - name="HelpStarBrightness" - > -Ajusta o brilho das estrelas no céu. - </notification> - - <notification - - name="HelpTimeOfDay" - > -Controla a localização do sol no céu. Semelhante a elevação. - </notification> - - <notification - - name="HelpEastAngle" - > -Controla a localização do sol no céu. -Similar ao azimute. - </notification> - - <notification - - name="HelpCloudColor" - > -Edita as cores das nuvens, É normalmente recomendado manter o tom esbranquiçado, mas hey! Você pode se divertir se desejar. - </notification> - - <notification - - name="HelpCloudDetail" - > -Controla os detalhes da camada de imagem superior na imagem de nuvem principal. X e Y controla sua posição. D (Densidade) controla o quão cheio ou estratificada as nuvens devem aparecer. - </notification> - - <notification - - name="HelpCloudDensity" - > -Permite que você controle a posição das nuvens com os cursores X e Y e a densidade deles com o cursor D. - </notification> - - <notification - - name="HelpCloudCoverage" - > -Controla o quanto as nuvens cobrem o céu. - </notification> - - <notification - - name="HelpCloudScale" - > -Controla o dimensionamento da imagem de nuvens na cúpula celeste. - </notification> - - <notification - - name="HelpCloudScrollX" - > -Controla a velocidade das nuvens que se movem na direção X. - </notification> - - <notification - - name="HelpCloudScrollY" - > -Controla a velocidade que as núvens se movem na direção Y. - </notification> - - <notification - - name="HelpClassicClouds" - > -Marque esta check box para permitir a reprodução das nuvens clássicas mais velhas do Second Life, além das nuvens WindLight. - </notification> - - <notification - - name="HelpWaterFogColor" - > -Escolhe a cor da neblina subaquática. - </notification> - - <notification - - name="HelpWaterFogDensity" - > -Controla a densidade da neblina da água e a distância de visibilidade debaixo d'água. - </notification> - - <notification - - name="HelpUnderWaterFogMod" - > -Modifica o efeito do expoente de densidade de Neblina para controlar até onde você pode ver quando o seu avatar está imerso. - </notification> - - <notification - - name="HelpWaterGlow" - > -Controla o quanto a superfÃcie da água deve brilhar. - </notification> - - <notification - - name="HelpWaterNormalScale" - > -Controla o escalonamento das três marolas que compõem a água. - </notification> - - <notification - - name="HelpWaterFresnelScale" - > -Controla o quanto de luz será refletido por ângulos diferentes. - </notification> - - <notification - - name="HelpWaterFresnelOffset" - > -Controla o quanto da intensidade da luz é refletida. - </notification> - - <notification - - name="HelpWaterScaleAbove" - > -Controla o quanto de luz será refratado olhando acima da superfÃcie da água. - </notification> - - <notification - - name="HelpWaterScaleBelow" - > -Controla o quanto de luz sera refratado visto debaixo da superfÃcie da água. - </notification> - - <notification - - name="HelpWaterBlurMultiplier" - > -Controla como ondas e reflexos são misturados. - </notification> - - <notification - - name="HelpWaterNormalMap" - > -Controla o mapeamento normal em todos os nÃveis da água para determinar reflexões / refrações. - </notification> - - <notification - - name="HelpWaterWave1" - > -Controla aonde e com que velocidade a versão em escala maior do mapa normal se move nas direções X e Y . - </notification> - - <notification - - name="HelpWaterWave2" - > -Controla onde e a velocidade com que o mapa normal em escala menor se move nas direções X e Y. - </notification> - - <notification - - name="NewSkyPreset" - > -Me dê o nome para o novo céu. - <form name="form"> - <input name="message" type="text"> -Novo padrão - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Cancelar"/> - </form> - </notification> - - <notification - - name="ExistsSkyPresetAlert" - > -Este padrão já existe! - </notification> - - <notification - - name="NewWaterPreset" - > -Dê o nome para o novo padrão de água. - <form name="form"> - <input name="message" type="text"> -Nova Apresentação - </input> - <button - - - name="OK" - text="OK"/> - <button - - name="Cancel" - text="Cancelar"/> - </form> - </notification> - - <notification - - name="ExistsWaterPresetAlert" - > -Este padrão já existe! - </notification> - - <notification - - name="WaterNoEditDefault" - > -Você não pode editar ou apagar um padrão predefinido. - </notification> - - <notification - - name="ChatterBoxSessionStartError" - > -Não foi possÃvel iniciar uma nova sessão bate-papo com [RECIPIENT]. -[REASON] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="ChatterBoxSessionEventError" - > -[EVENT] -[REASON] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="ForceCloseChatterBoxSession" - > -Sua sessão de bate-papo com [NAME] tem que fechar. -[REASON] - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="Cannot_Purchase_an_Attachment" - > -Os itens não podem ser comprados enquanto forem parte de um anexo. - </notification> - - <notification - - label="Sobre o pedido de Permissão de Débito" - name="DebitPermissionDetails" - > -Conceder esse pedido dá permissão ao script para tirar Linden dólares (L$) de sua conta. Para revogar esta permissão, o proprietário do objeto deve excluir o objeto ou resetar os scripts dele. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - - name="AutoWearNewClothing" - > -Você gostaria de vestir automaticamente o item de vestuário que você criar? - <usetemplate - ignoretext="Automaticamente vestir novo vestuário" - name="okcancelignore" - notext="Não" - yestext="Sim"/> - </notification> - - <notification - - name="NotAgeVerified" - > -Você precisa ter a idade verificada para acessar este lote. -Gostaria de visitar o site do Second Life para verificação de idade? - -[_URL] - <url option="0" name="url"> - - https://secondlife.com/account/verification.php - </url> - <usetemplate - ignoretext="Alertar sobre a falta de verificação de idade" - name="okcancelignore" - notext="Não" - yestext="Sim"/> - </notification> - - <notification - - name="Cannot enter parcel: no payment info on file" - > -Este lote exige que você tenha informações de pagamento no arquivo antes de poder acessá-lo. -Gostaria de visitar o site do Second Life para configurá-lo? - -[_URL] - <url option="0" name="url"> - - https://secondlife.com/account/ - </url> - <usetemplate - ignoretext="Avisar sobre a falta de informação de pagamento." - name="okcancelignore" - notext="Não" - yestext="Sim"/> - </notification> - - <notification - - name="MissingString" - > -A sequência [STRING_NAME] está faltando do strings.xml - </notification> - - <notification - - name="SystemMessageTip" - > -[MESSAGE] - </notification> - - <notification - - name="Cancelled" - > -Cancelado - </notification> - - <notification - - name="CancelledSit" - > -Cancelada a ação de sentar - </notification> - - <notification - - name="CancelledAttach" - > -Cancelado Anexar - </notification> - - <notification - - name="ReplacedMissingWearable" - > -Substituindo partes de roupa/corpo perdidas com o padrão - </notification> - - <notification - - name="GroupNotice" - > -Assunto: [SUBJECT], Mensagem: [MESSAGE] - </notification> - - <notification - - name="FriendOnline" - > -[FIRST] [LAST] está Online - </notification> - - <notification - - name="FriendOffline" - > -[FIRST] [LAST] está Offline - </notification> - - <notification - - name="AddSelfFriend" - > -Você não pode adicionar a si mesmo como amigo - </notification> - - <notification - - name="UploadingAuctionSnapshot" - > -Fazendo o upload das fotos do site da web e do mundo... -(Leva cerca de 5 minutos) - </notification> - - <notification - - name="UploadPayment" - > -Você paga L$[AMOUNT] para fazer o upload. - </notification> - - <notification - - name="UploadWebSnapshotDone" - > -ConcluÃdo o upload da foto do site da web - </notification> - - <notification - - name="UploadSnapshotDone" - > -O upload da foto foi realizado - </notification> - - <notification - - name="TerrainDownloaded" - > -Feito o download de Terrain.raw - </notification> - - <notification - - name="GestureMissing" - > -O Gesto [NAME] não se encontra na base de dados - </notification> - - <notification - - name="UnableToLoadGesture" - > -ImpossÃvel de carregar o gesto [NAME]. -Por favor, tente novamente. - </notification> - - <notification - - name="LandmarkMissing" - > -O landmark foi perdido na base de dados - </notification> - - <notification - - name="UnableToLoadLandmark" - > -ImpossÃvel carregar o landmark. Por favor, tente de novo. - </notification> - - <notification - - name="CapsKeyOn" - > -Seu botão CAPS LOCK está ativado. -Como isto afeta a senha digitada, você provavelmente desejará desativá-lo. - </notification> - - <notification - - name="NotecardMissing" - > -Notecard foi perdido no banco de dados. - </notification> - - <notification - - name="NotecardNoPermissions" - > -Permissões insuficientes para visualizar o notecard - </notification> - - <notification - - name="RezItemNoPermissions" - > -Sem permissões suficientes para criar objetos. - </notification> - - <notification - - name="UnableToLoadNotecard" - > -ImpossÃvel carregar o notecard. -Por favor, tente novamente. - </notification> - - <notification - - name="ScriptMissing" - > -O script foi perdido no banco de dados. - </notification> - - <notification - - name="ScriptNoPermissions" - > -Permissões insuficientes para visualizar o script. - </notification> - - <notification - - name="UnableToLoadScript" - > -ImpossÃvel carregar o script. Por favor, tente novamente. - </notification> - - <notification - - name="IncompleteInventory" - > -Os conteúdos completos que vocë está oferecendo, não estão ainda disponÃveis localmente. Por favor, tente oferecê-los novamente em um minuto. - </notification> - - <notification - - name="CannotModifyProtectedCategories" - > -Você não pode modificar categorias protegidas. - </notification> - - <notification - - name="CannotRemoveProtectedCategories" - > -Você não pode remover categorias protegidas. - </notification> - - <notification - - name="OfferedCard" - > -Você ofereceu um cartão de visita a [FIRST] [LAST] - </notification> - - <notification - - name="UnableToBuyWhileDownloading" - > -ImpossÃvel comprar o objeto enquanto ele está sendo carregado. -Por favor, tente novamente. - </notification> - - <notification - - name="UnableToLinkWhileDownloading" - > -ImpossÃvel unir o objeto enquanto ele está sendo carregado. -Por favor, tente novamente. - </notification> - - <notification - - name="CannotBuyObjectsFromDifferentOwners" - > -ImpossÃvel comprar objetos de diferentes compradores ao mesmo tempo. -Por favor, compre apenas um objeto. - </notification> - - <notification - - name="ObjectNotForSale" - > -Este objeto não está a venda. - </notification> - - <notification - - name="EnteringGodMode" - > -Entrando em god mode, nÃvel [LEVEL] - </notification> - - <notification - - name="LeavingGodMode" - > -Saindo do god mode, nÃvel [LEVEL] - </notification> - - <notification - - name="CopyFailed" - > -A cópia falhou porque você não tem permissão para copiar. - </notification> - - <notification - - name="InventoryAccepted" - > -[NAME] aceitou sua oferta de inventário. - </notification> - - <notification - - name="InventoryDeclined" - > -[NAME] rejeitou sua oferta de inventário. - </notification> - - <notification - - name="ObjectMessage" - > -[NAME]: [MESSAGE] - </notification> - - <notification - - name="CallingCardAccepted" - > -Seu cartão de visita foi aceito - </notification> - - <notification - - name="CallingCardDeclined" - > -Seu cartão de visita foi negado. - </notification> - - <notification - - name="TeleportToLandmark" - > -Agora que você chegou à mainland, você pode se teletransportar para locais como '[NAME]' clicando no botão de Inventário, no canto direito inferior de sua tela, e selecionando a pasta Landmarks. -Dê um duplo-clique na landmark e clique Teletransportar para viajar para o local desejado. - </notification> - - <notification - - name="TeleportToPerson" - > -Agora que você chegou à mainland, você pode contatar residentes como '[NAME]' clicando no botão de Inventário, canto direito inferior de sua tela, e selecionando a pasta Cartões de Visita. -Dê um duplo-clique num cartão de visita e em Mensagem Instantânea, digite sua mensagem. - </notification> - - <notification - - name="CantSelectLandFromMultipleRegions" - > -ImpossÃvel selecionar terra nas fronteiras do servidor. Tente selecionar um pedaço menor de terra. - </notification> - - <notification - - name="GroupVote" - > -[NAME] propõe que você vote: -[MESSAGE] - <form name="form"> - <button - - name="VoteNow" - text="Vote agora"/> - <button - - name="Later" - text="Depois"/> - </form> - </notification> - - <notification - - name="SystemMessage" - > -[MESSAGE] - </notification> - - <notification - - name="EventNotification" - > -Notificação de evento: - -[NAME] -[DATE] - <form name="form"> - <button - - name="Teleport" - text="Teletransporte"/> - <button - - name="Description" - text="Descrição"/> - <button - - name="Cancel" - text="Cancelar"/> - </form> - </notification> - - <notification - - name="TransferObjectsHighlighted" - > -Todos os objetos deste terreno que serão transferidos ao seu comprador, estão realçados agora. - <form name="form"> - <button - - name="Done" - text="Feito"/> - </form> - </notification> - - <notification - - name="DeactivatedGesturesTrigger" - > -Gestos desativados com o mesmo comando: -[NAMES] - </notification> - - <notification - - name="NoQuickTime" - > -O software QuickTime da Apple parece não estar instalado em seu sistema. -Se você deseja ver fluxo de mÃdia em terrenos que aceitem isso, você deverá ir ao site do QickTime (http://www.apple.com/quicktime) e instalar o player do QuickTime. - </notification> - - <notification - - name="OwnedObjectsReturned" - > -Os objetos que lhe pertencem no lote selecionado do terreno, voltaram ao seu inventário. - </notification> - - <notification - - name="OtherObjectsReturned" - > -Os objetos no lote selecionado de terra que pertence a [FIRST] [LAST], voltaram ao seu inventário. - </notification> - - <notification - - name="OtherObjectsReturned2" - > -Os objetos no lote de terra selecionado que pertence ao residente '[NAME]', voltaram aos seus donos. - </notification> - - <notification - - name="GroupObjectsReturned" - > -Os objetos no lote selecionado de terreno compartilhado pelo grupo [GROUPNAME], voltaram para os inventários de seus donos. -Objetos trasnferÃveis dados ao grupo, voltaram aos seus donos anteriores. -Objetos não transferÃveis dados ao grupo foram deletados. - </notification> - - <notification - - name="UnOwnedObjectsReturned" - > -Os objetos no lote selecionado que NÃO são seus, voltaram aos seus donos. - </notification> - - <notification - - name="NotSafe" - > -Esta terra permite que você sofra ataques. -Você pode ser ferido aqui. Se você morrer, você será teletransportado à sua posição inicial. - </notification> - - <notification - - name="NoFly" - > -Este terreno tem a opção Voar desabilitada. -Ou seja, você não pode voar aqui. - </notification> - - <notification - - name="PushRestricted" - > -Esta terra é “Não empurreâ€. -Você não pode empurrar os outros, a não ser que seja o proprietário da terra. - </notification> - - <notification - - name="NoVoice" - > -O uso de voz está desabilitado nesta terra. - </notification> - - <notification - - name="NoBuild" - > -Este terreno tem a opção de construir desabilitada, ou seja, você não pode criar objetos aqui. - </notification> - - <notification - - name="ScriptsStopped" - > -Um administrador não permitiu scripts temporariamente nesta região. - </notification> - - <notification - - name="ScriptsNotRunning" - > -Esta região não roda nenhum script. - </notification> - - <notification - - name="NoOutsideScripts" - > -Neste terreno, nenhum script funcionará, a não ser os scripts do próprio dono da terra. - </notification> - - <notification - - name="ClaimPublicLand" - > -Pode apenas reclamar terreno público na região em que você está. - </notification> - - <notification - - name="ObjectGiveItem" - > -Um objeto nomeado [OBJECTFROMNAME] do dono [FIRST] [LAST] deu a você [OBJECTTYPE] nomeado '[OBJECTNAME]'. - <form name="form"> - <button - - name="Keep" - text="Segure"/> - <button - - name="Discard" - text="Descarte"/> - <button - - name="Mute" - text="Mudo"/> - </form> - </notification> - - <notification - - name="ObjectGiveItemUnknownUser" - > -Um objeto nomeado [OBJECTFROMNAME], de dono desconhecido, deu a você um [OBJECTTYPE] nomeado [OBJECTNAME]. - <form name="form"> - <button - - name="Keep" - text="Segure"/> - <button - - name="Discard" - text="Descarte"/> - <button - - name="Mute" - text="Mudo"/> - </form> - </notification> - - <notification - - name="UserGiveItem" - > -[NAME]deu a voce um [OBJECTTYPE] nomeado '[OBJECTNAME]'. - <form name="form"> - <button - - name="Keep" - text="Mantenha"/> - <button - - name="Discard" - text="Descarte"/> - <button - - name="Mute" - text="Mudo"/> - </form> - </notification> - - <notification - - name="GodMessage" - > -[NAME] -[MESSAGE] - </notification> - - <notification - - name="JoinGroup" - > -[MESSAGE] - <form name="form"> - <button - - name="Join" - text="Entre"/> - <button - - name="Decline" - text="Saia"/> - <button - - name="Info" - text="Informações"/> - </form> - </notification> - - <notification - - name="TeleportOffered" - > -[NAME] ofereceu um teletransporte para seu local: - -[MESSAGE] - <form name="form"> - <button - - name="Teleport" - text="Teletransporte"/> - <button - - name="Cancel" - text="Cancelar"/> - </form> - </notification> - - <notification - - name="GotoURL" - > -[MESSAGE] -[URL] - <form name="form"> - <button - - name="Later" - text="Depois"/> - <button - - name="GoNow..." - text="Vá agora"/> - </form> - </notification> - - <notification - - name="OfferFriendship" - > -[NAME] está lhe oferecendo sua amizade - -[MESSAGE] - -(Por definição vocês serão capazes de ver um ao outro online) - <form name="form"> - <button - - name="Accept" - text="Aceitar"/> - <button - - name="Decline" - text="Recusar"/> - </form> - </notification> - - <notification - - name="OfferFriendshipNoMessage" - > -[NAME] está lhe oferecendo sua amizade. - -(Por definição vocês serão capazes de ver um ao outro online) - <form name="form"> - <button - - name="Accept" - text="Aceitar"/> - <button - - name="Decline" - text="Recusar"/> - </form> - </notification> - - <notification - - name="FriendshipAccepted" - > -[NAME] aceitou seu convite de amizade. - </notification> - - <notification - - name="FriendshipDeclined" - > -[NAME] recusou seu convite de amizade - </notification> - - <notification - - name="OfferCallingCard" - > -[FIRST] [LAST] está oferecendo seu cartão de visita. -Isto adicionará uma anotação em seu inventário, de modo que você possa mandar rapidamente uma IM para este residente. - <form name="form"> - <button - - name="Accept" - text="Aceitar"/> - <button - - name="Decline" - text="Recusar"/> - </form> - </notification> - - <notification - - name="RegionRestartMinutes" - - - > -A região será reiniciada em [MINUTES] minutos. -Se permanecer nesta região, você será desconectado. - </notification> - - <notification - - name="RegionRestartSeconds" - - - > -Região será reiniciada em [SECONDS] segundos. -Se permanecer nesta região, você será desconectado. - </notification> - - <notification - - name="LoadWebPage" - > -Carregar página da web [URL]? - -[MESSAGE] - -Do objeto: [OBJECTNAME], dono: [NAME]? - <form name="form"> - <button - - name="Gotopage" - text="Vá para a página"/> - <button - - name="Cancel" - text="Cancelar"/> - </form> - </notification> - - <notification - - name="FailedToFindWearableUnnamed" - > -Falhou ao procurar [TYPE] no banco de dados. - </notification> - - <notification - - name="FailedToFindWearable" - > -Falhou ao procurar [TYPE] nomeado [DESC] no banco de dados. - </notification> - - <notification - - name="ScriptQuestion" - > -'[OBJECTNAME]', um objeto pertencente a '[NAME]', gostaria de: - -[QUESTIONS] -Está OK? - <form name="form"> - <button - - name="Yes" - text="Sim"/> - <button - - name="No" - text="Não"/> - <button - - name="Mute" - text="Mudo"/> - </form> - </notification> - - <notification - - name="ScriptQuestionCaution" - > -'[OBJECTNAME]', um objeto de '[NAME]', gostaria de: - -[QUESTIONS] -Se você não confia neste objeto ou em seu criador, você deveria negar o pedido. Para informações adicionais clique no botão Detalhes. - -Autorizar este pedido? - <form name="form"> - <button - - name="Grant" - text="Autorizar"/> - <button - - name="Deny" - text="Negar"/> - <button - - name="Details" - text="Detalhes..."/> - </form> - </notification> - - <notification - - name="ScriptDialog" - > -[FIRST] [LAST]'s '[TITLE]' -[MESSAGE] - <form name="form"> - <button - - name="Ignore" - text="Ignorar"/> - </form> - </notification> - - <notification - - name="ScriptDialogGroup" - > -[GROUPNAME]'s '[TITLE]' -[MESSAGE] - <form name="form"> - <button - - name="Ignore" - text="Ignorar"/> - </form> - </notification> - - <notification - - name="FirstBalanceIncrease" - > -Você recebeu uma quantia de L$[AMOUNT]. -Objetos e outros usuários podem dar L$ a você. -Seu saldo é mostrado no canto superior direito da tela. - </notification> - - <notification - - name="FirstBalanceDecrease" - > -Você pagou L$[AMOUNT]. -O seu balanço de dinheiro está sendo mostrado no canto superior direito da tela. - </notification> - - <notification - - name="FirstSit" - > -Você está sentado. -Use as setas (ou AWSD) para mudar a visão. -Clique em 'Levantar' para levantar. - </notification> - - <notification - - name="FirstMap" - > -Clique e arraste para movimentar o mapa. -Dê um duplo clique para teletransportar-se. -Use os controles à direita para achar coisas e mostrar fundos diferentes. - </notification> - - <notification - - name="FirstBuild" - > -Você pode construir novos objetos em algumas áreas do [SECOND_LIFE]. -Use as ferramentas acima, à esquerda para construir e tente manter apertadas as teclas Ctrl ou Alt para mudar rapidamente as ferramentas. -Aperte ESC para parar de construir. - </notification> - - <notification - - name="FirstLeftClickNoHit" - > -Clicando com esquerdo, você interage com os objetos especiais. -Se o ponteiro do mouse mudar a uma mão, você pode interagir com o objeto. -Clique com o direito que será mostrado sempre um menu das ações que você pode fazer. - </notification> - - <notification - - name="FirstTeleport" - > -Esta região não permite teletransporte ponto-a-ponto. Assim, você foi teletransportado para o telehub mais próximo. -Seu destino está assinalado com um farol alto. -Siga a flecha vermelha até o farol, ou clique nela para apagar o farol. - </notification> - - <notification - - name="FirstOverrideKeys" - > -Suas chaves do movimento estão sendo seguras agora por um objeto. -Tente as teclas de setas ou AWSD para ver o que elas fazem. -Alguns objetos (como armas) requerem que você passe para mouselook para usá-los. -Pressione 'M' para fazer isto. - </notification> - - <notification - - name="FirstAppearance" - > -Você está editando sua aparência. -Para girar e ver em zoom, use as teclas de setas. -Quando terminar, aperte 'Salvar Tudo' para salvar sua aparência e sair. -Você pode editar sua aparência quantas vezes quiser. - </notification> - - <notification - - name="FirstInventory" - > -Este é o seu inventário, que contém objetos, notecards, roupas e outras coisas suas. -* Para vestir um objeto ou uma pasta completa, arraste-o para si mesmo(a). -* Para trzer um objeto ao mundo, arraste-o ao chão. -* Para ler um notecard, dê um duplo-click nele. - </notification> - - <notification - - name="FirstSandbox" - > -Esta é a região conhecida como sandbox. -Os objetos que você constrói aqui podem ser deletados depois que você deixa a área. -As sandboxes são limpas de forma periódica. -Por favor, veja a informação no alto da tela, próxima ao nome da região. -As regiões de sandbox não são comuns e são marcadas com sÃmbolos. - </notification> - - <notification - - name="FirstFlexible" - > -Este objeto tem a propriedade flexÃvel. -Objetos flexÃveis não podem ser fÃsicos e devem ser fantasmas até que a caixa de verificação seja desmarcada. - </notification> - - <notification - - name="FirstDebugMenus" - > -Você ativou o menu Avançado. -Este menu contém funcionalidades úteis para desenvolvedores debugarem o Second Life. -Para mostrar esse menu no Windows pressione Ctrl-Alt-D. No Mac pressione Cmd-Opt-Shift-D. - </notification> - - <notification - - name="FirstSculptedPrim" - > -Você está editando uma primitiva esculpida. -Primitivas esculpidas requerem uma textura especial para especificar suas formas. -Você encontrará exemplos dessas texturas na Biblioteca do Inventário. - </notification> - - <notification - - name="FirstMedia" - > -Você começou a tocar uma mÃdia. MÃdias podem ser autorizadas a iniciar automaticamente se você assim escolher na janela de Preferências, sob Ãudio/VÃdeo. Atente para o risco de segurança que pode haver ao acessar websites de mÃdia que você não confia. - </notification> - - <notification - - name="MaxListSelectMessage" - > -Você pode selecionar até [MAX_SELECT] itens desta lista. - </notification> - - <notification - - name="VoiceInviteP2P" - > -[NAME] está lhe convidando para uma conversa com voz. -Clique Aceitar para atender, ou Recusar para recusar o convite. Clique Mudo para calar quem está chamando. - <form name="form"> - <button - - name="Accept" - text="Aceitar"/> - <button - - name="Decline" - text="Recusar"/> - <button - - name="Mute" - text="Mudo"/> - </form> - </notification> - - <notification - - name="AutoUnmuteByIM" - > -[FIRST] [LAST] recebeu uma Mensagem Instantânea sua e automaticamente não está mais no modo mudo. - </notification> - - <notification - - name="AutoUnmuteByMoney" - > -[FIRST] [LAST] recebeu pagamento seu e automaticamente não está mais no modo mudo. - </notification> - - <notification - - name="AutoUnmuteByInventory" - > -[FIRST] [LAST] recebeu inventário seu e automaticamente não está mais mudo. - </notification> - - <notification - - name="VoiceInviteGroup" - > -[NAME] juntou-se a uma conversa com voz do grupo [GROUP]. -Clique Aceitar para atender, ou Recusar para recusar o convite. Clique Mudo para calar quem está chamando. - <form name="form"> - <button - - name="Accept" - text="Aceitar"/> - <button - - name="Decline" - text="Recusar"/> - <button - - name="Mute" - text="Mudo"/> - </form> - </notification> - - <notification - - name="VoiceInviteAdHoc" - > -[NAME] juntou-se a uma chamada de Conferência com voz... -Clique Aceitar para juntar-se à chamada ou Recusar para recusar o convite. Clique Mudo para calar este usuário. - <form name="form"> - <button - - name="Accept" - text="Aceitar"/> - <button - - name="Decline" - text="Recusar"/> - <button - - name="Mute" - text="Mudo"/> - </form> - </notification> - - <notification - - name="InviteAdHoc" - > -[NAME] está lhe convidando para uma conversa em conferência... - Clique Aceitar para se juntar à conversa, ou Recusar para recusar o convite. Clique Mudo para calar este usuário. - <form name="form"> - <button - - name="Accept" - text="Aceitar"/> - <button - - name="Decline" - text="Recusar"/> - <button - - name="Mute" - text="Mudo"/> - </form> - </notification> - - <notification - - name="VoiceChannelFull" - > -A chamada de voz a qual você está tentando juntar-se, [VOICE_CHANNEL_NAME], atingiu sua máxima capacidade. Favor tentar novamente mais tarde. - </notification> - - <notification - - name="ProximalVoiceChannelFull" - > -Desculpe-nos. Esta área atingiu seu limite de capacidade para conversas com voz. Favor tentar usar voz em outra área. - </notification> - - <notification - - name="VoiceChannelDisconnected" - > -Você foi desconectado de [VOICE_CHANNEL_NAME]. Voce será reconectado agora à Conversa com voz local. - </notification> - - <notification - - name="VoiceChannelDisconnectedP2P" - > -[VOICE_CHANNEL_NAME] desligou a chamada. Voce será reconectado agora à Conversa com voz local. - </notification> - - <notification - - name="P2PCallDeclined" - > -[VOICE_CHANNEL_NAME] recusou sua chamada. Voce será reconectado agora à Conversa com voz local. - </notification> - - <notification - - name="P2PCallNoAnswer" - > -[VOICE_CHANNEL_NAME] não está disponÃvel para aceitar sua chamada. Voce será reconectado agora à Conversa com voz local. - </notification> - - <notification - - name="VoiceChannelJoinFailed" - > -Falha na conexão com [VOICE_CHANNEL_NAME], tente novamente mais tarde. Voce será reconectado agora à Conversa com voz local. - </notification> - - <notification - - name="VoiceLoginRetry" - > -Estamos criando uma canal de voz para você. Isto pode levar até um minuto. - </notification> - - <notification - - name="Cannot enter parcel: not a group member" - > -Você não pode entrar nessa terra, você não é membro do grupo autorizado. - </notification> - - <notification - - name="Cannot enter parcel: banned" - > -Você não pode entrar nessa terra, você foi banido. - </notification> - - <notification - - name="Cannot enter parcel: not on access list" - > -Você não pode entrar nessa terra, você não está na lista de acesso. - </notification> - - <notification - - name="VoiceNotAllowed" - > -Você não tem permissão para se conectar à conversa com voz de [VOICE_CHANNEL_NAME]. - </notification> - - <notification - - name="VoiceCallGenericError" - > -Ocorreu um erro enquanto você tentava se conectar à conversa de voz de [VOICE_CHANNEL_NAME]. Favor tentar novamente mais tarde. - </notification> - - <notification - - name="ServerVersionChanged" - > -A região em que você entrou está rodando uma versão diferente de simulador. Clique aqui para mais detalhes. - </notification> - - <notification - - name="UnableToOpenCommandURL" - > -A URL que vocÊ clicou não pode ser aberta no navegador web. - </notification> - - <global name="UnsupportedCPU"> -- A velocidade da sua CPU não suporta os requisitos mÃnimos exigidos. - </global> - - <global name="UnsupportedGLRequirements"> -Você não parece ter os requisitos de hardware recomendados para rodar o Second Life. O Second Life exige uma placa gráfica OpenGL que tem apoio a multi- texturas. Se este for o caso, você pode se certificar de que tem os drivers mais recentes para sua placa gráfica, e os patches e pacotes de serviços para seu sistema operacional. - -Se continuar com problemas, por favor visite: http://www.secondlife.com/support - </global> - - <global name="UnsupportedCPUAmount"> -796 - </global> - - <global name="UnsupportedRAMAmount"> -510 - </global> - - <global name="UnsupportedGPU"> -- A sua placa de vÃdeo não atende os requisitos mÃnimos exigidos. - </global> - - <global name="UnsupportedRAM"> -- A memória do seu sistema não suporta os requisitos mÃnimos exigidos. - </global> - - <global name="PermYes"> -Sim - </global> - - <global name="PermNo"> -Não - </global> -</notifications> - +<?xml version="1.0" encoding="utf-8"?> +<notifications> + <global name="skipnexttime"> + Não exibir isto novamente + </global> + <global name="alwayschoose"> + Sempre escolher esta opção + </global> + <template name="okbutton"> + <form> + <button + name="OK" + text="$yestext"/> + </form> + </template> + + <template name="okignore"> + <form> + <button + name="OK" + text="$yestext"/> + <ignore text="$ignoretext"/> + </form> + </template> + + <template name="okcancelbuttons"> + <form> + <button + name="OK" + text="$yestext"/> + <button + name="Cancel" + text="$notext"/> + </form> + </template> + + <template name="okcancelignore"> + <form> + <button + name="OK" + text="$yestext"/> + <button + name="Cancel" + text="$notext"/> + <ignore text="$ignoretext"/> + </form> + </template> + + <template name="okhelpbuttons"> + <form> + <button + name="OK" + text="$yestext"/> + <button + name="Help" + text="$helptext"/> + </form> + </template> + + <template name="yesnocancelbuttons"> + <form> + <button + name="Yes" + text="$yestext"/> + <button + name="No" + text="$notext"/> + <button + name="Cancel" + text="$canceltext"/> + </form> + </template> + <notification functor="GenericAcknowledge" label="Mensagem de Alerta Desconhecida" name="MissingAlert"> + Sua versão do Second Life não sabe como mostrar a mensagem de alerta que acabou de receber. + +Detalhes do erro: O alerta chamado '[_NAME]' não foi encontrado em notifications.xml. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="FloaterNotFound"> + Floater error: Não foram encontrados os seguintes controles: + [CONTROLS] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="TutorialNotFound"> + Nenhum tutorial está disponÃvel no momento. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="GenericAlert"> + [MESSAGE] + </notification> + <notification name="GenericAlertYesCancel"> + [MESSAGE] + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Sim"/> + </notification> + <notification name="BadInstallation"> + Ocorreu um erro atualizando o Second Life. Por favor, faça o download da última versão em secondlife.com. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + <notification name="LoginFailedNoNetwork"> + Erro de Rede: Não conseguiu estabelecer uma conexão. +'[DIAGNOSTIC]' +Por favor, verifique sua conexão de rede. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + <notification name="MessageTemplateNotFound"> + Modelo de Mensagem [PATH] não encontrado. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + <notification name="WearableSave"> + Salvar modificações? + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Não salvar" yestext="Salvar"/> + </notification> + <notification name="CompileQueueSaveText"> + Houve um problema com o carregamento do texto para um script devido à seguinte razão: [REASON]. Por favor, tente novamente mais tarde. + </notification> + <notification name="CompileQueueSaveBytecode"> + Houve um problema durante o carregamento do script compilado devido à seguinte razão: [REASON]. Por favor, tente novamente mais tarde. + </notification> + <notification name="WriteAnimationFail"> + Falha nos dados de inscrição de animação. Por favor, tente mais tarde. + </notification> + <notification name="UploadAuctionSnapshotFail"> + Houve um problema com o carregamento da foto do leilão devido à seguinte razão: [REASON] + </notification> + <notification name="UnableToViewContentsMoreThanOne"> + Não é possÃvel visualizar os conteúdos de mais de um item ao mesmo tempo. +Por favor, selecione apenas um objeto e tente novamente. + </notification> + <notification name="SaveClothingBodyChanges"> + Salvar todas as mudanças de roupas/ partes do corpo? + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Não Salvar" yestext="Salvar tudo"/> + </notification> + <notification name="GrantModifyRights"> + Conceder direitos de modificar a outros residentes lhes permite trocar, deletar ou pegar QUAISQUER objetos que você possa ter no mundo. +Seja MUITO cuidadoso(a) quando passar esta permissão. +Você deseja conceder direitos de modificar para [FIRST_NAME] [LAST_NAME]? + <usetemplate name="okcancelbuttons" notext="Não" yestext="Sim"/> + </notification> + <notification name="GrantModifyRightsMultiple"> + Conceder direitos para modificar seus objetos a outro residente permite ele mudar QUAISQUER objetos que você possa ter no mundo. Tenha muito cuidado quando conceder essa permissão. +Você deseja permitir que os residentes selecionados tenham direito de edição? + <usetemplate name="okcancelbuttons" notext="Não" yestext="Sim"/> + </notification> + <notification name="RevokeModifyRights"> + Você deseja cancelar os direitos de edição de [FIRST_NAME] [LAST_NAME]? + <usetemplate name="okcancelbuttons" notext="Não" yestext="Sim"/> + </notification> + <notification name="RevokeModifyRightsMultiple"> + Você quer revogar os direitos de edição para os residentes selecionados? + <usetemplate name="okcancelbuttons" notext="Não" yestext="Sim"/> + </notification> + <notification name="UnableToCreateGroup"> + Não foi possÃvel criar um grupo. +[MESSAGE] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="PanelGroupApply"> + [NEEDS_APPLY_MESSAGE] +[WANT_APPLY_MESSAGE] + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Ignorar Alterações" yestext="Aplicar Alterações"/> + </notification> + <notification name="MustSpecifyGroupNoticeSubject"> + Você deve especificar um assunto para enviar uma notÃcia para o grupo. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="AddGroupOwnerWarning"> + Você está para adicionar membros do grupo na função de [ROLE_NAME]. +Membros não podem ser removidos dessa função. +Os membros podem, eles próprios, recusar a função. +Deseja continuar? + <usetemplate ignoretext="Quando adcionar membro ao grupo como dono" name="okcancelignore" notext="Não" yestext="Sim"/> + </notification> + <notification name="AssignDangerousActionWarning"> + Você está prestes a adicionar a habilidade '[ACTION_NAME]' para a função '[ROLE_NAME]' + +*AVISO* +Qualquer membro com esta Habilidade pode atribuir a si mesmo -- e a outro membro -- funções que têm mais poderes que os que possuem atualmente, potencialmente elevando-os aos nÃveis próximos ao Proprietário. Certifique-se sobre esta decisão antes de atribuir esta habilidade. + +Adicionar esta habilidade ao '[ROLE_NAME]'? + <usetemplate name="okcancelbuttons" notext="Não" yestext="Sim"/> + </notification> + <notification name="AssignDangerousAbilityWarning"> + Você está prestes a adicionar a habilidade '[ACTION_NAME]' à função '[ROLE_NAME]'. + +*AVISO* +Qualquer membro numa função com esta habilidade, pode atribuir a sà mesmo -- e a qualquer outro -- todas as habilidades, elevando seus nÃveis próximos ao poder do Proprietário. + +Adicionar esta habilidade a '[ROLE_NAME]'? + <usetemplate name="okcancelbuttons" notext="Não" yestext="Sim"/> + </notification> + <notification name="ClickPublishHelpLand"> + Selecionando "Publicar na Busca" +Clicando neste Box, será mostrado: +- este lote nos resultados de busca +- os objetos públicos deste lote +- este lote na busca da web + </notification> + <notification name="ClickSoundHelpLand"> + MÃdia e Música podem apenas ser utilizadas dentro deste lote. As opções de Som e Voz podem ser restritas ao lote ou serão ouvidas por residentes fora do lote, dependendo de suas Classificações de maturidade. Ir para o Banco de Conhecimento para saber mais sobre como definir essas opções? + <url name="url"> + https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=5046 + </url> + <usetemplate + name="okcancelbuttons" + yestext="Ir para o Banco de Conhecimento" + notext="Fechar" /> + </notification> + <notification name="ClickSearchHelpAll"> + Os resultados de busca são organizados com base na aba em que você se encontra, sua Classificação de maturidade, a categoria escolhida e outros fatores. Para mais detalhes, por favor veja o Banco de Conhecimento. + <url name="url"> + https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=4722 + </url> + <usetemplate + name="okcancelbuttons" + yestext="Ir para o Banco de Conhecimento" + notext="Fechar" /> + </notification> + <notification name="ClickPublishHelpLandDisabled"> + Você não pode fazer este lote visÃvel na busca porque ele está localizado numa região que proÃbe isso. + </notification> + <notification name="ClickPublishHelpAvatar"> + Selecionando "Mostrar na Busca" será mostrado: +- meu perfil nos resultados de busca +- um link para meu perfil nas páginas de grupos públicos + </notification> + <notification name="ClickPartnerHelpAvatar"> + Você pode propor a outro Residente ou dissolver uma parceria existente através do website [SECOND_LIFE]. + +Ir para o site do Second Life para mais informações sobre parceria? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Ir para a Página"/> + </notification> + <notification name="ClickUploadHelpPermissions"> + Suas permissões padrão podem não funcionar em regiões antigas. + </notification> + <notification name="ClickWebProfileHelpAvatar"> + Se este Residente definiu uma URL de perfil na web, então você pode: + * Clicar em 'Carregar' para ver a página na aba Web. + * Clicar Carregar > 'Em navegador externo' para ver a página no seu navegador de web padrão. + * Clicar Carregar > 'URL de Casa' para voltar ao perfil do Residente na web se você navegou adiante. + +Quando você está vendo seu próprio perfil, você pode entrar com qualquer URL como sendo seu perfil na web e clicar OK para definÃ-la. +Outros residentes podem visitar a URL que você definiu, quando eles olharem seu perfil. + </notification> + <notification name="JoinGroupCanAfford"> + Unir-se a esse grupo custa L$[COST]. +Deseja prosseguir? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Unir-se"/> + </notification> + <notification name="JoinGroupCannotAfford"> + Associar-se a este grupo custa L$[COST]. +Você não tem L$ suficientes para associar-se a este grupo. + </notification> + <notification name="LandBuyPass"> + Por L$[COST] você pode ingressar no terreno ('[PARCEL_NAME]') por [TIME] horas. Comprar um passe de acesso? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="SalePriceRestriction"> + O preço de venda deve ser ajustado para mais que 0 L$, se desejar vender para qualquer um. +Por favor, selecione um indivÃduo para realizar a venda se o valor for 0 L$. + </notification> + <notification name="ConfirmLandSaleChange"> + [LAND_SIZE] m² selecionados de terra estão sendo configurados para venda. +Seu preço de venda será L$[SALE_PRICE] e está autorizado para venda para [NAME]. Gostaria de continuar a fazer essa alteração? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Continuar"/> + </notification> + <notification name="ConfirmLandSaleToAnyoneChange"> + ATENÇÃO: Ao clicar em 'vender para qualquer um' torna a sua terra disponÃvel para toda a comunidade Second Life, mesmo aqueles que não estão nesta região. + +A área de [LAND_SIZE] m² de terra selecionada está posta para venda. +Seu preço de venda será L$ [SALE_PRICE] e está autorizado para [NAME]. + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="ReturnObjectsDeededToGroup"> + Você tem certeza de que quer retornar todos os objetos compartilhados com o grupo '[NAME]' neste lote de terra, para o inventário do seu antigo Proprietário? + +*AVISO* Isso irá deletar os objetos não transferÃveis doados ao grupo! + +Objetos: [N] + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Retornar"/> + </notification> + <notification name="ReturnObjectsOwnedByUser"> + Você tem certeza de que deseja retornar todos os objetos do residente '[NAME]' neste lote para o inventário dele? + +Objetos: [N] + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Retornar"/> + </notification> + <notification name="ReturnObjectsOwnedBySelf"> + Você tem certeza de que deseja retornar todos os objetos de sua propriedade neste lote para seu inventário? + +Objetos: [N] + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Retornar"/> + </notification> + <notification name="ReturnObjectsNotOwnedBySelf"> + Você tem certeza de que deseja retornar todos os objetos que NÃO são seus para o inventário de seus proprietários? +Objetos transferÃveis doados ao grupo retornarão para seu proprietários. + +*AVISO* Isso fará com que os objetos não-transferÃveis sejam deletados! + +Objetos: [N] + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Retornar"/> + </notification> + <notification name="ReturnObjectsNotOwnedByUser"> + Você tem certeza de que deseja retornar todos os objetos deste lote NÃO pertencentes a [NAME] para o inventário do proprietário? + +*AVISO* Esta ação irá apagar os objetos não transferÃveis doados ao grupo! + +Objetos: [N] + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Retornar"/> + </notification> + <notification name="ReturnAllTopObjects"> + Você tem certeza de que deseja enviar todos os objetos listados de volta aos inventários de seus proprietários? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Retornar"/> + </notification> + <notification name="DisableAllTopObjects"> + Você tem certeza que deseja desativar todos os objetos desta região? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Desativar"/> + </notification> + <notification name="ReturnObjectsNotOwnedByGroup"> + Retornar os objetos deste lote que NÃO são compartilhados com o grupo [NAME] de volta para seus proprietários? + +Objetos: [N] + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Retornar"/> + </notification> + <notification name="UnableToDisableOutsideScripts"> + Não é possÃvel desabilitar scripts externos. +Toda esta região possui dano habilitado. +Scripts devem ser permitidos para fazer as armas funcionarem. + </notification> + <notification name="MustBeInParcel"> + Você deve permanecer dentro do lote para definir o ponto de aterrissagem. + </notification> + <notification name="PromptRecipientEmail"> + Por favor, digite um endereço de email válido para o(s) destinatário(s). + </notification> + <notification name="PromptSelfEmail"> + Por favor, insira seu endereço de e-mail. + </notification> + <notification name="PromptMissingSubjMsg"> + Enviar por email uma foto com o assunto ou mensagem padrão? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="ErrorProcessingSnapshot"> + Erro processando dados da foto. + </notification> + <notification name="ErrorEncodingSnapshot"> + Erro ao codificar a foto. + </notification> + <notification name="ErrorUploadingPostcard"> + Houve um problema ao enviar a foto devido à seguinte razão: [REASON] + </notification> + <notification name="ErrorUploadingReportScreenshot"> + Houve um problema ao carregar a foto da reportagem devido à seguinte razão: [REASON] + </notification> + <notification name="MustAgreeToLogIn"> + Você deve concordar com os Termos de Serviço para continuar a entrar no [SECOND_LIFE]. + </notification> + <notification name="CouldNotPutOnOutfit"> + Não foi possÃvel vestir o conjunto. A pasta do conjunto não contém roupas, partes do corpo ou acessórios. + </notification> + <notification name="CannotWearTrash"> + Não é possÃvel usar roupas ou partes do corpo que estão no lixo. + </notification> + <notification name="CannotWearInfoNotComplete"> + Você não pode vestir este item porque ele ainda não carregou. Por favor, tente novamente em um minuto. + </notification> + <notification name="MustHaveAccountToLogIn"> + Oops! Alguma coisa foi deixada em branco. +Você precisa entrar com ambos os Nome e Sobrenome do seu avatar. + +Você precisa de uma conta para entrar no [SECOND_LIFE]. Você gostaria de criar uma conta agora? + <usetemplate name="okcancelbuttons" notext="Tentar novamente" yestext="Criar uma nova conta"/> + </notification> + <notification name="AddClassified"> + Anúncios classificados aparecem na seção 'Classificados' do diretório de Busca e no www.secondlife.com por uma semana. +Preencha seu anúncio e então clique 'Publicar...' para adicioná-lo ao diretório. +Será solicitado a você um preço a ser pago, quando você clicar Publicar. +Pagando mais, faz com que seu anúncio apareça em posição mais alta na lista e também em posição mais alta, quando as pessoas buscarem por palavras-chave. + <usetemplate ignoretext="Quando adicionando um Classificado novo" name="okcancelignore" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="DeleteClassified"> + Apagar classificado'[NAME]'? +Não há reembolso por taxas já pagas. + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Apagar"/> + </notification> + <notification name="ClassifiedSave"> + Salvar as mudanças no classificado [NAME]? + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Não Salvar" yestext="Salvar"/> + </notification> + <notification name="DeleteAvatarPick"> + Apagar pegar [PICK]? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Delete"/> + </notification> + <notification name="PromptGoToEventsPage"> + Ir até a página web de enventos [SECOND_LIFE] ? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Ir à página"/> + </notification> + <notification name="SelectProposalToView"> + Por favor, selecione uma proposta para visualizar. + </notification> + <notification name="SelectHistoryItemToView"> + Por favor, selecione um item do histórico para exibÃ-lo. + </notification> + <notification name="ResetShowNextTimeDialogs"> + Você gostaria de reabilitar todas estas pop ups que você indicou previamente como 'Não me mostrar novamente'? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="SkipShowNextTimeDialogs"> + Você gostaria de desabilitar todas as popups que podem ser puladas? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="CacheWillClear"> + O cache será limpo quando você reiniciar [SECOND_LIFE]. + </notification> + <notification name="CacheWillBeMoved"> + O Cache será removido após reiniciar [SECOND_LIFE]. +Nota: Isto limpará o cache. + </notification> + <notification name="ChangeConnectionPort"> + Configuração de porta terá efeito após reiniciar [SECOND_LIFE]. + </notification> + <notification name="ChangeSkin"> + A nova pele será exibida após reiniciar [SECOND_LIFE]. + </notification> + <notification name="GoToAuctionPage"> + Ir para a página do [SECOND_LIFE] para ver os detalhes do leilão ou fazer um lance? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Ir para a página"/> + </notification> + <notification name="SaveChanges"> + Salvar alterações? + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Não Salvar" yestext="Salvar"/> + </notification> + <notification name="GestureSaveFailedTooManySteps"> + Falha ao salvar Gesto. +Este gesto possui muitos passos. +Tente remover alguns passos e salve-o novamente. + </notification> + <notification name="GestureSaveFailedTryAgain"> + Falha ao salvar Gesto. Por favor, tente em uma minuto. + </notification> + <notification name="GestureSaveFailedObjectNotFound"> + Não foi possÃvel salvar o gesto pois o objeto ou o inventário associado ao objeto não foi encontrado. +O objeto pode estar fora de alcance ou foi deletado. + </notification> + <notification name="GestureSaveFailedReason"> + Houve um problema em salvar um gesto devido à seguinte razão: [REASON]. Por favor, tente salvar o Gesto depois. + </notification> + <notification name="SaveNotecardFailObjectNotFound"> + Não foi possÃvel salvar uma nota pois o objeto ou o inventário associado ao objeto não foi encontrado. +O objeto pode estar fora de alcance ou foi deletado. + </notification> + <notification name="SaveNotecardFailReason"> + Houve um problema em salvar uma nota devido a seguinte razão: [REASON]. Por favor, tente salvar a nota novamente mais tarde. + </notification> + <notification name="ScriptCannotUndo"> + Não foi possÃvel desfazer todas as mudanças na sua versão de script. +Gostaria de carregar a última versão salva? +(**Aviso** Esta operação não pode ser desfeita). + <usetemplate name="okcancelbuttons" notext="Não" yestext="Sim"/> + </notification> + <notification name="SaveScriptFailReason"> + Houve um problema em salvar um script devido à seguinte razão: [REASON]. Por favor, tente salvar novamente o script mais tarde. + </notification> + <notification name="SaveScriptFailObjectNotFound"> + Não foi possÃvel salvar o script pois o objeto em que ele está não pôde ser encontrado. +O objeto pode estar fora de alcance ou ter sido deletado. + </notification> + <notification name="SaveBytecodeFailReason"> + Houve um problema em salvar uma compilação de script devido a seguinte razão: [REASON]. Por favor, tente salvar novamente o script mais tarde. + </notification> + <notification name="CouldNotStartStopScript"> + Não foi possÃvel iniciar ou parar o script pois o objeto em que ele está não pôde ser encontrado. +O objeto pode estar fora de alcance ou ter sido deletado. + </notification> + <notification name="CannotDownloadFile"> + Não foi possÃvel baixar o arquivo. + </notification> + <notification name="CannotWriteFile"> + Não foi possÃvel escrever o arquivo [[FILE]] + </notification> + <notification name="UnsupportedHardware"> + Aviso: Seu sistema não é compatÃvel com os requisitos mÃnimos exigidos pelo Second Life. Se você continuar usando o Second Life pode experimentar uma performance ruim. Infelizmente não podemos oferecer suporte técnico para configurações de sistema não suportado. + +MINSPECS +Você deseja visitar [_URL] para maiores informações? + <url name="url" option="0"> + http://www.secondlife.com/corporate/sysreqs.php + </url> + <usetemplate ignoretext="Ao detectar hardware não suportado" name="okcancelignore" notext="Não" yestext="Sim"/> + </notification> + <notification name="UnknownGPU"> + Seu sistema possui uma placa gráfica que nos é desconhecido neste momento. +Este é normalmente o caso de um novo hardware que nós não tivemos a chance de testar. Second Life vai muito provavelmente executar corretamente, mas talvez seja necessário ajustar suas configurações de gráficos para algo mais apropriado. +(Menu Editar > Preferências > Gráficos). + <form name="form"> + <ignore name="ignore" text="Ao detectar uma placa de vÃdeo desconhecida"/> + </form> + </notification> + <notification name="DisplaySettingsNoShaders"> + [SECOND_LIFE] travou quando inicializava os drivers gráficos. +A Qualidade Gráfica será ajustada para baixa, para evitar alguns erros comuns de drivers. +Isto irá desabilitar alguns atributos gráficos. +Nós recomendamos a atualização dos drivers de sua placa gráfica. +A Qualidade Gráfica pode ser aumentada no Preferências > Gráficos. + </notification> + <notification name="RegionNoTerraforming"> + A região [REGION] não permite ser aplainada. + </notification> + <notification name="CannotCopyWarning"> + Você não tem permissão para copiar este item e irá perdê-lo do seu inventário se entregá-lo a alguém. Quer realmente oferecer este item? + <usetemplate name="okcancelbuttons" notext="Não" yestext="Sim"/> + </notification> + <notification name="CannotGiveItem"> + Não foi possÃvel entregar o item de inventário. + </notification> + <notification name="TransactionCancelled"> + Transação cancelada. + </notification> + <notification name="TooManyItems"> + Não é possÃvel passar mais que 42 itens em uma única transferência de inventário. + </notification> + <notification name="NoItems"> + Você não tem permissão para transferir os itens selecionados. + </notification> + <notification name="CannotCopyCountItems"> + Você não tem permissão para copiar [COUNT] dos itens selecionados. Você irá perdê-los do seu inventário. +Deseja realmente entregar estes itens? + <usetemplate name="okcancelbuttons" notext="Não" yestext="Sim"/> + </notification> + <notification name="CannotGiveCategory"> + Você não tem permissão para transferir a pasta selecionada. + </notification> + <notification name="FreezeAvatar"> + Congelar esse avatar? +Ele ou ela estará temporáriamente incapacitado de mover-se, conversar ou interagir com mundo. + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Descongelar" yestext="Congelar"/> + </notification> + <notification name="FreezeAvatarFullname"> + Congelar [AVATAR_NAME]? +Ele ou ela vai ficar temporariamente incapaz de se mover, usar o bate-papo ou interagir com o mundo. + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Descongelar" yestext="Congelar"/> + </notification> + <notification name="EjectAvatarFullname"> + Ejetar [AVATAR_NAME] da sua terra? + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Ejetar e Banir" yestext="Ejetar"/> + </notification> + <notification name="EjectAvatarNoBan"> + Ejetar este avatar da sua terra? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Ejetar"/> + </notification> + <notification name="EjectAvatarFullnameNoBan"> + Ejetar [AVATAR_NAME] da sua terra? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Ejetar"/> + </notification> + <notification name="AcquireErrorTooManyObjects"> + Erro de aquisição: Muitos objetos selecionados. + </notification> + <notification name="AcquireErrorObjectSpan"> + Erro de aquisição: Objetos criados em mais de uma região. +Por favor, mova todos os objetos a serem adquiridos para uma mesma região. + </notification> + <notification name="PromptGoToCurrencyPage"> + [EXTRA] + +Vá para [URL] para informação sobre compra de dinheiro. + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Ir até a página"/> + </notification> + <notification name="UnableToLinkObjects"> + Não é possÃvel unir estes [COUNT] objetos. +Você pode unir um máximo de [MAX] objetos. + </notification> + <notification name="CannotLinkIncompleteSet"> + Você pode unir apenas conjuntos completos de objetos e deve selecionar mais que um objeto. + </notification> + <notification name="CannotLinkModify"> + Impossibilitado de unir, porque você não tem permissão para modificar todos os objetos. + +Por favor, certifique-se de que nenhum deles está travado e que você é dono de todos eles. + </notification> + <notification name="CannotLinkDifferentOwners"> + Impossibilitado de unir porque nem todos os objetos são do mesmo dono. + +Por favor, certifique-se de que você é o dono de todos os objetos selecionados. + </notification> + <notification name="NoFileExtension"> + Nenhuma extensão para o arquivo: '[FILE]' + +Por favor, certifique-se de que o arquivo tem uma extensão de arquivo correta. + </notification> + <notification name="InvalidFileExtension"> + Extensão de arquivo inválida: [EXTENSION]. +Esperada [VALIDS] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="CannotUploadSoundFile"> + Não é possÃvel abrir para leitura o arquivo de som carregado: +[FILE] + </notification> + <notification name="SoundFileNotRIFF"> + O arquivo não aparenta ser um arquivo do tipo RIFF WAVE: +[FILE] + </notification> + <notification name="SoundFileNotPCM"> + O arquivo não aparenta ser um arquivo de áudio PCM WAVE: +[FILE] + </notification> + <notification name="SoundFileInvalidChannelCount"> + O arquivo possui um número de canais inválido (deve ser mono ou estéreo): +[FILE] + </notification> + <notification name="SoundFileInvalidSampleRate"> + O arquivo não aparenta ter uma taxa de amostragem suportada (deve ser 44.1k): +[FILE] + </notification> + <notification name="SoundFileInvalidWordSize"> + O arquivo não aparenta ter um tamanho de palavra suportada (deve ser 8 ou 16 bit): +[FILE] + </notification> + <notification name="SoundFileInvalidHeader"> + Não pode ser encontrado bloco de dados no cabeçalho WAV: +[FILE] + </notification> + <notification name="SoundFileInvalidTooLong"> + Arquivo de áudio é muito longo (no máximo 10 segundos): +[FILE] + </notification> + <notification name="ProblemWithFile"> + Problemas com o arquivo [FILE]: + +[ERROR] + </notification> + <notification name="CannotOpenTemporarySoundFile"> + Não pode abrir o arquivo temporário de som comprimido, para leitura: [FILE] + </notification> + <notification name="UnknownVorbisEncodeFailure"> + Falha desconhecida de codificação vorbis em: [FILE] + </notification> + <notification name="CannotEncodeFile"> + ImpossÃvel codificar o arquivo: [FILE] + </notification> + <notification name="CorruptResourceFile"> + Fonte do arquivo corrompida: [FILE] + </notification> + <notification name="UnknownResourceFileVersion"> + Versão desconhecida de arquivo de recursos da Linden no arquivo: [FILE] + </notification> + <notification name="UnableToCreateOutputFile"> + Incapaz de criar arquivo de saÃda: [FILE] + </notification> + <notification name="DoNotSupportBulkAnimationUpload"> + Atualmente, não suportamos o envio de arquivos de animação em massa. + </notification> + <notification name="CannotUploadReason"> + Incapaz de carregar [FILE] devido ao seguinte motivo: [REASON] +Por favor tente novamente mais tarde. + </notification> + <notification name="CannotCreateLandmarkNotOwner"> + Você não pode criar um ponto de referência porque o proprietário do terreno não permite. Tente novamente a alguns metros de distância. + </notification> + <notification name="CannotRecompileSelectObjectsNoScripts"> + Não é possÃvel realizar uma recompilação. +Selecione um objeto com um script. + </notification> + <notification name="CannotRecompileSelectObjectsNoPermission"> + Impossibilitado de executar uma 'recompilação'. + +Selecione objetos com scripts que você tem permissão para modificar. + </notification> + <notification name="CannotResetSelectObjectsNoScripts"> + Impossibilitado de executar 'redefinir'. + +Selecione objetos com scripts. + </notification> + <notification name="CannotResetSelectObjectsNoPermission"> + Impossibilitado de executar 'redefinir'. + +Selecione objetos com scripts que você tem permissão para modificar. + </notification> + <notification name="CannotSetRunningSelectObjectsNoScripts"> + Impossibilitado de definir quaisquer scripts para 'rodando'. + +Selecione objetos com scripts. + </notification> + <notification name="CannotSetRunningNotSelectObjectsNoScripts"> + Impossibilitado de definir quaisquer scripts para 'não rodando'. + +Selecione objetos com scripts. + </notification> + <notification name="NoFrontmostFloater"> + Nenhuma janela flutuante mais à frente para salvar. + </notification> + <notification name="SeachFilteredOnShortWords"> + Sua consulta de pesquisa foi alterada e as palavras que eram demasiado curtas foram removidas. + +Pesquisava por: [FINALQUERY] + </notification> + <notification name="SeachFilteredOnShortWordsEmpty"> + Os termos de sua pesquisa eram muito curtos então nenhuma pesquisa foi feita. + </notification> + <notification name="CouldNotTeleportReason"> + Não é possÃvel teletransportar-se. +[REASON] + </notification> + + <notification name="invalid_tport"> +Problema encontrado ao processar seu pedido de Teletransporte. Você pode tentar reiniciar antes de tentar teletransportar-se. Se você continuar a receber esta mensagem, por favor verifique a FAQ do Suporte Técnico em: +www.secondlife.com/support + </notification> + <notification name="invalid_region_handoff"> +Problema encontrado ao processar a passagem de regiões. Você pode tentar reiniciar antes de tentar atravessar regiões novamente. Se você continuar a receber esta mensagem, por favor verifique a FAQ do Suporte Técnico em: +www.secondlife.com/support + </notification> + <notification name="blocked_tport"> +Desculpe, teletransportes estão atualmente bloqueados. Tente novamente dentro de alguns instantes. Se você continuar com problemas de teletransporte, por favor tente deslogar e relogar para resolver o problema. + </notification> + <notification name="nolandmark_tport"> +Desculpe, mas o sistema não conseguiu localizar a landmark de destino. + </notification> + <notification name="timeout_tport"> +Desculpe, não foi possÃvel para o sistema executar o teletransporte. Tente novamente dentro de alguns instantes. + </notification> + <notification name="noaccess_tport"> +Desculpe, você não tem acesso ao destino deste teletransporte. + </notification> + <notification name="missing_attach_tport"> +Seu anexos ainda não chegaram. Tente esperar por alguns momentos ou deslogar e logar antes de tentar teleransportar-se novamente. + </notification> + <notification name="too_many_uploads_tport"> +Afluxo nesta região é atualmente tão alto que seu pedido de teletransporte não será possÃvel em tempo oportuno. Por favor, tente novamente em alguns minutos ou vá a uma área menos ocupada. + </notification> + <notification name="expired_tport"> +Desculpe, mas o sistema não conseguiu concluir o seu pedido de teletransporte em tempo hábil. Por favor, tente novamente em alguns minutos. + </notification> + <notification name="expired_region_handoff"> +Desculpe, mas o sistema não pôde concluir a sua travessia de região em tempo hábil. Por favor, tente novamente em alguns minutos. + </notification> + <notification name="no_host"> +Não foi possÃvel encontrar o destino do teletransporte. O destino pode estar temporariamente indisponÃvel ou não existir mais. Por favor, tente novamente em poucos minutos. + </notification> + <notification name="no_inventory_host"> +O sistema de inventário está indisponÃvel no momento. + </notification> + + <notification name="CannotSetLandOwnerNothingSelected"> + Incapaz de estabelecer o proprietário do terreno: +Nenhum lote selecionado. + </notification> + <notification name="CannotSetLandOwnerMultipleRegions"> + Não é possÃvel exigir a posse do terreno porque a seleção alcançou múltiplas regiões. Por favor, selecione uma área menor e tente novamente. + </notification> + <notification name="ForceOwnerAuctionWarning"> + Este lote está oferecido em leilão. Exigir a posse do terreno irá cancelar o leilão e possivelmente deixará alguns residentes infelizes, se os lances já começaram. Exigir posse? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Retomar"/> + </notification> + <notification name="CannotContentifyNothingSelected"> + Conteúdo não encontrado: +Nenhum lote selecionado. + </notification> + <notification name="CannotContentifyNoRegion"> + Conteúdo não encontrado: +Nenhuma região selecionada. + </notification> + <notification name="CannotReleaseLandNothingSelected"> + Não é possÃvel abandonar terreno: +Nenhum lote selecionado. + </notification> + <notification name="CannotReleaseLandNoRegion"> + Não é possÃvel abandonar terreno: +Não é possÃvel encontrar a região. + </notification> + <notification name="CannotBuyLandNothingSelected"> + Não é possÃvel comprar terreno: +Nenhum lote selecionado. + </notification> + <notification name="CannotBuyLandNoRegion"> + Não é possÃvel comprar terreno: +Não é possÃvel achar a região em que este terreno se encontra. + </notification> + <notification name="CannotCloseFloaterBuyLand"> + Você não pode fechar a janela de Compra de Terreno até que o Second Life calcule o preço desta transação. + </notification> + <notification name="CannotDeedLandNothingSelected"> + Não é possÃvel transferir posse do terreno: +Nenhum lote selecionado. + </notification> + <notification name="CannotDeedLandNoGroup"> + Não é possÃvel transferir posse do terreno: +Nenhum grupo selecionado. + </notification> + <notification name="CannotDeedLandNoRegion"> + Não é possÃvel transferir posse do terreno: +Não é possÃvel se achar a região em que este terreno se encontra. +Por favor, use Ferramentas > Reporte de Bug para reportar isto. + </notification> + <notification name="CannotDeedLandMultipleSelected"> + Impossibilitado de passar a propriedade da terra: +Selecionados vários lotes. + +Tente selecionar um único lote. + </notification> + <notification name="ParcelCanPlayMedia"> + Esta localidade pode executar fluxo de mÃdia. +Fluxo de mÃdia necessita de uma conexão de Internet rápida. + +Executar fluxo de mÃdia quando disponÃvel? +(Você pode mudar esta opção mais tarde no Preferências > Ãudio & VÃdeo.) + <usetemplate name="okcancelbuttons" notext="Desabilitar" yestext="Exibir MÃdia"/> + </notification> + <notification name="CannotDeedLandWaitingForServer"> + Impossibilitado de passar a propriedade da terra: +Esperando pelo servidor informar de quem é a propriedade. + +Por favor, tente novamente. + </notification> + <notification name="CannotDeedLandNoTransfer"> + Não é possÃvel transferir posse do terreno: +A região [REGION] não permite transferência do terreno. + </notification> + <notification name="CannotReleaseLandWatingForServer"> + Impossibilitado de abandonar a terra: +Esperando o servidor atualizar as informações do lote. + +Tente novamente em alguns segundos. + </notification> + <notification name="CannotReleaseLandSelected"> + Impossibilitado de abandonar a terra: +Você não é dono de todos os lotes selecionados. + +Por favor, selecione um único lote. + </notification> + <notification name="CannotReleaseLandDontOwn"> + Não é possÃvel abandonar terreno: +Você não tem permissão de liberar este lote. +Os lotes que você possui estão em verde. + </notification> + <notification name="CannotReleaseLandRegionNotFound"> + Impossibilitado de abandonar a terra: +Não consegue achar a região em que esta terra se encontra. + +Por favor, usar Ferramentas > Reportar Bug, para reportar este erro. + </notification> + <notification name="CannotReleaseLandNoTransfer"> + Não é possÃvel abandonar terreno: +A região [REGION] não permite transferência de terreno. + </notification> + <notification name="CannotReleaseLandPartialSelection"> + Impossibilitado de abandonar a terra: +Você deve selecionar um lote inteiro para liberá-lo. + +Selecione um lote inteiro ou primeiro divida seu lote. + </notification> + <notification name="ReleaseLandWarning"> + Você está para liberar [AREA] m² de terra. +Liberando este terreno, o liberará de suas posses, mas não lhe concederá quaisquer L$. + +Liberar esta terra? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Renunciar"/> + </notification> + <notification name="CannotDivideLandNothingSelected"> + Impossibilitado de dividir a terra: + +Nenhum lote selecionado. + </notification> + <notification name="CannotDivideLandPartialSelection"> + Impossibilitado de dividir a terra: + +Você selecionou um lote inteiro. +Tente selecionar uma parte do lote. + </notification> + <notification name="LandDivideWarning"> + Dividir este terreno irá dividir este lote em dois e cada lote pode ter suas próprias configurações. Algumas configurações serão colocadas no padrão depois dessa operação. + +Quer dividir o terreno? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Dividir"/> + </notification> + <notification name="CannotDivideLandNoRegion"> + Impossibilitado de dividir a terra: +Não consegue achar a região em que esta terra se encontra. + +Por favor, usar Ferramentas > Reportar Bug, para reportar este erro. + </notification> + <notification name="CannotJoinLandNoRegion"> + Impossibilitado de unir a terra: +Não consegue achar a região em que esta terra se encontra. + +Por favor, usar Ferramentas > Reportar Bug, para reportar este erro. + </notification> + <notification name="CannotJoinLandNothingSelected"> + Não é possÃvel unir terreno: +Nenhum lote selecionado. + </notification> + <notification name="CannotJoinLandEntireParcelSelected"> + Impossibilitado de unir a terra: +Você selecionou apenas um lote. + +Selecione a terra através de ambos os lotes. + </notification> + <notification name="CannotJoinLandSelection"> + Impossibilitado de unir a terra: +Você deve selecionar mais de um lote. + +Selecione a terra através de ambos os lotes. + </notification> + <notification name="JoinLandWarning"> + Unir esta terra vai criar um grande lote que envolve todos os lotes que intersectam o retângulo selecionado. +Você vai ter que redefinir nome e as opções do novo lote. + +Unir a terra? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Unir"/> + </notification> + <notification name="ShowOwnersHelp"> + Mostrar donos: +Colorir os lotes para mostrar o tipo de dono. + +Green = Sua terra +Aqua = Terra do seu Grupo +Red = PossuÃda por outros +Yellow = À venda +Purple = A leilão +Grey = Pública + </notification> + <notification name="ConfirmNotecardSave"> + Esta nota precisa ser salva antes do item ser copiado ou visualizado. Salvar nota? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Salvar"/> + </notification> + <notification name="ConfirmItemCopy"> + Copiar este item para o seu inventário? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Copiar"/> + </notification> + <notification name="ResolutionSwitchFail"> + Falha ao trocar a resolução para [RESX] por [RESY] + </notification> + <notification name="ErrorUndefinedGrasses"> + Erro: Gramado indefinido; [SPECIES] + </notification> + <notification name="ErrorUndefinedTrees"> + Erro: Ãrvores indefinidas: [SPECIES] + </notification> + <notification name="CannotSaveWearableOutOfSpace"> + Não é possÃvel salvar '[NAME]' para um arquivo de vestimenta. Você precisa liberar algum espaço no seu computador e salvar o arquivo novamente. + </notification> + <notification name="CannotSaveToAssetStore"> + Impossibilitado de salvar [NAME] no armazenamento central de ativos. +Isso é geralmente uma falha temporária. Por favor personalize e salve novamente a vestimenta em poucos minutos. + +Se o problema persistir, por favor clicar sobre 'Ferramentas > Bug Report' no menu superior e forneça detalhes sobre a configuração de sua rede. + </notification> + <notification name="YouHaveBeenLoggedOut"> + Você foi deslogado do [SECOND_LIFE]: + [MESSAGE] +Você ainda pode olhar o bate-papo e as mensagens instantâneas existentes, clicando em 'Exibir IM & bate-papo'. Caso contrário, clique em 'Sair' para sair do [SECOND_LIFE] imediatamente. + <usetemplate name="okcancelbuttons" notext="Sair" yestext="Ver Mensagem Instantânea & Bate- Papo"/> + </notification> + <notification name="OnlyOfficerCanBuyLand"> + Não é possÃvel comprar o terreno para o grupo: +Você não tem permissão para comprar o terreno para o seu grupo ativado. + </notification> + <notification label="Adicionar amigo" name="AddFriend"> + Amigos podem dar permissões de rastrear um ao outro pelo mapa e receber atualizações de status online. + +Oferecer amizade para [NAME]? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Oferecer"/> + </notification> + <notification label="Adicionar amigo" name="AddFriendWithMessage"> + Amigos podem dar permissões de rastrear um ao outro pelo mapa e receber atualizações de status online. + +Oferecer amizade para [NAME]? + <form name="form"> + <input name="message" type="text"> + Quer ser meu amigo? + </input> + <button name="Offer" text="Oferecer"/> + <button name="Cancel" text="Cancelar"/> + </form> + </notification> + <notification name="RemoveFromFriends"> + Você quer remover [FIRST_NAME] [LAST_NAME] da sua lista de amigos? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Remover"/> + </notification> + <notification name="RemoveMultipleFromFriends"> + Você quer remover vários amigos da sua lista? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Remover"/> + </notification> + <notification name="GodDeleteAllScriptedPublicObjectsByUser"> + Você tem certeza que deseja excluir todos os objetos programados de propriedade de +** [AVATAR_NAME] ** +em todos os outros terrenos deste sim? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="APAGAR!!"/> + </notification> + <notification name="GodDeleteAllScriptedObjectsByUser"> + Você tem certeza que deseja excluir todos os objetos programados de propriedade de +** [AVATAR_NAME] ** +em TODOS OS TERRENOS deste sim? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="!!APAGAR TUDO!!"/> + </notification> + <notification name="GodDeleteAllObjectsByUser"> + Você tem certeza que deseja excluir TODOS os objetos (programados ou não) de propriedade de +** [AVATAR_NAME] ** +em TODOS OS TERRENOS deste sim? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="!!APAGAR TUDO!!"/> + </notification> + <notification name="BlankClassifiedName"> + Você deve especificar um nome para seu classificado. + </notification> + <notification name="MinClassifiedPrice"> + Preço mÃnimo a pagar para incluir na listagem é de L$[MIN_PRICE]. + +Por favor, insira um valor maior. + </notification> + <notification name="ConfirmObjectDeleteLock"> + Pelo menos um dos itens que você selecionou está trancado. + +Tem certeza de que deseja apagar estes itens? + <usetemplate name="okcancelbuttons" notext="Não" yestext="Sim"/> + </notification> + <notification name="ConfirmObjectDeleteNoCopy"> + Pelo menos um dos itens que você selecionou não é copiável. + +Tem certeza de que deseja apagar estes itens? + <usetemplate name="okcancelbuttons" notext="Não" yestext="Sim"/> + </notification> + <notification name="ConfirmObjectDeleteNoOwn"> + Você não é proprietário de pelo menos um dos itens selecionados. + +Tem certeza de que deseja apagar estes itens? + <usetemplate name="okcancelbuttons" notext="Não" yestext="Sim"/> + </notification> + <notification name="ConfirmObjectDeleteLockNoCopy"> + Pelo menos um dos objetos está trancado ou não é copiável. + +Tem certeza de que deseja apagar estes itens? + <usetemplate name="okcancelbuttons" notext="Não" yestext="Sim"/> + </notification> + <notification name="ConfirmObjectDeleteLockNoOwn"> + Pelo menos um dos objetos está trancado ou não é de sua posse. + +Tem certeza de que deseja apagar estes itens? + <usetemplate name="okcancelbuttons" notext="Não" yestext="Sim"/> + </notification> + <notification name="ConfirmObjectDeleteNoCopyNoOwn"> + Pelo menos um dos objetos não é copiável ou não é de sua posse. + +Tem certeza de que deseja apagar estes itens? + <usetemplate name="okcancelbuttons" notext="Não" yestext="Sim"/> + </notification> + <notification name="ConfirmObjectDeleteLockNoCopyNoOwn"> + Pelo menos um dos objetos está trancado, não é copiável ou você não o possui. + +Tem certeza de que deseja apagar estes itens? + <usetemplate name="okcancelbuttons" notext="Não" yestext="Sim"/> + </notification> + <notification name="ConfirmObjectTakeLock"> + Pelo menos um dos objetos está trancado. + +Tem certeza de que deseja pegar estes itens? + <usetemplate name="okcancelbuttons" notext="Não" yestext="Sim"/> + </notification> + <notification name="ConfirmObjectTakeNoOwn"> + Você não possui todos os objetos que está pegando. +Caso continue, as permissões do próximo proprietário serão aplicadas aos objetos e possivelmente restringirão sua habilidade em modificá-los ou copiá-los. + +Você tem certeza de que quer pegar estes itens? + <usetemplate name="okcancelbuttons" notext="Não" yestext="Sim"/> + </notification> + <notification name="ConfirmObjectTakeLockNoOwn"> + Pelo menos um objeto está bloqueado. +Você não possui todos os objetos que você está pegando. +Se continuar, as permissões para o próximo proprietário serão aplicadas e possivelmente restringirão sua capacidade de modificar ou copiá-los. +No entanto, você pode pegar a seleção atual. + +Tem certeza de que deseja pegar estes itens? + <usetemplate name="okcancelbuttons" notext="Não" yestext="Sim"/> + </notification> + <notification name="CantBuyLandAcrossMultipleRegions"> + Não foi possÃvel comprar terreno, pois a seleção abrange várias regiões. + +Por favor, selecione uma área menor e tente novamente. + </notification> + <notification name="DeedLandToGroup"> + Na transferência de propriedade deste lote, o grupo deverá ter e manter créditos suficientes de uso da terra. +O preço de aquisição dos terrenos não é restituÃdo ao o proprietário. Se uma parcela transferida é vendida, o preço de venda é dividido igualmente entre os membros do grupo. + +Transferir propriedade de [AREA] m² de terra ao grupo '[GROUP_NAME]'? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Acionar"/> + </notification> + <notification name="DeedLandToGroupWithContribution"> + Na transferência de propriedade deste lote, o grupo deverá ter e manter créditos suficientes de uso da terra. +A Transferência incluirá uma contribuição de terra simultanea para o grupo de '[FIRST_NAME] [LAST_NAME]'. +O preço da compra não será restituÃdo ao proprietário. Se um lote for vendido, o preço da venda será dividido igualmente entre os membros do grupo. + +Transferir propriedade destes [AREA] m² de terreno para o grupo '[GROUP_NAME]'? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Acionar"/> + </notification> + <notification name="DisplaySetToSafe"> + Configurações de display foram ajustadas para nÃveis de segurança porque você especificou -- opção de segurança. + </notification> + <notification name="DisplaySetToRecommended"> + Configurações de display foram ajustadas para nÃvel recomendado basedo na configuração do seu sistema. + </notification> + <notification name="ErrorMessage"> + [ERROR_MESSAGE] + </notification> + <notification name="AvatarMoved"> + Sua [TYPE] localização não está disponÃvel no momento. + [HELP] +Você foi movido para uma região vizinha. + </notification> + <notification name="ClothingLoading"> + Sua vestimenta ainda está baixando. +Você pode usar o [SECOND_LIFE] normalmente e os outros o visualizarão corretamente. + <form name="form"> + <ignore name="ignore" text="Quando o vestuário está levando muito tempo para fazer download"/> + </form> + </notification> + <notification name="FirstRun"> + A instalação do [SECOND_LIFE] está completa. + +Se esta é a primeira vez usando o[SECOND_LIFE], será necessário que você crie uma conta antes de poder se logar. +Retornar a www.secondlife.com para criar uma nova conta? + <usetemplate name="okcancelbuttons" notext="Continuar" yestext="Nova conta.."/> + </notification> + <notification name="LoginPacketNeverReceived"> + Estamos com problemas de conexão. Pode ser problema com a conexão de sua internet ou com os servidores do Second Life. + +Voce tanto pode checar a conexão de sua internet e tentar novamente em alguns minutos, ou clicar em Teletransporte para tentar teletransportar-se para sua casa. + <form name="form"> + <button name="OK" text="OK"/> + <button name="Help" text="Ajuda"/> + <button name="Teleport" text="Teletransportar"/> + </form> + </notification> + <notification name="WelcomeChooseSex"> + Seu personagem irá aparecer num momento. + +Use as teclas de seta para andar. +Pressione a tecla F1 para ajuda ou aprender mais sobre [SECOND_LIFE]. +Por favor, escolha se o seu avatar é feminino ou masculino. Você pode mudar de idéia depois. + <usetemplate name="okcancelbuttons" notext="Feminino" yestext="Masculino"/> + </notification> + <notification name="NotEnoughCurrency"> + [NAME] L$ [PRICE] Você não possui suficientes L$ para fazer isso. + </notification> + <notification name="GrantedModifyRights"> + Foi garantido à você o privilégio de alterar o(s) objeto(s) de [FIRST_NAME] [LAST_NAME]' + </notification> + <notification name="RevokedModifyRights"> + Seu privilégio para alterar o(s) objeto(s) de [FIRST_NAME] [LAST_NAME]'s foi removido. + </notification> + <notification name="FlushMapVisibilityCaches"> + Isto irá descarregar os caches de mapa relativos a esta região. +Isso é realmente útil apenas para depuração. +(Na produção, aguarde 5 minutos e, então, o mapa de todos será atualizado depois que relogar.) + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="BuyOneObjectOnly"> + ImpossÃvel comprar mais de um objeto ao mesmo tempo. Por favor, selecione apenas um objeto e tente novamente. + </notification> + <notification name="OnlyCopyContentsOfSingleItem"> + Incapaz de copiar os conteúdos de mais de um item por vez. Por favor, selecione somente um objeto e tente novamente. + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="KickUsersFromRegion"> + Teletransportar para casa todos os residentes nesta região? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="EstateObjectReturn"> + Você tem certeza que deseja retornar os objetos pertencentes a [USER_NAME] ? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="InvalidTerrainBitDepth"> + Não foi possÃvel definir texturas da região: +Textura do Terreno [TEXTURE_NUM] tem uma profundidade de bits inválidos [TEXTURE_BIT_DEPTH]. + +Substitua textura [TEXTURE_NUM], com uma imagem de 24-bit 512x512 ou menor e em seguida, clique em 'Aplicar' novamente. + </notification> + <notification name="InvalidTerrainSize"> + Não foi possÃvel definir texturas da região: +Textura do Terreno [TEXTURE_NUM] é muito grande em [TEXTURE_SIZE_X] x [TEXTURE_SIZE_Y]. + +Substituir textura [TEXTURE_NUM], com uma imagem de 24-bit 512x512 ou menor e em seguida, clique em 'Aplicar' novamente. + </notification> + <notification name="RawUploadStarted"> + Upload iniciado. Pode levar uns 2 minutos, dependendo da sua velocidade de conexão. + </notification> + <notification name="ConfirmBakeTerrain"> + Você realmente deseja nivelar o terreno selecionado a partir do centro elevando/reduzindo os limites e o padrão para a ferramenta ´Reverter´? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Executar"/> + </notification> + <notification name="MaxAllowedAgentOnRegion"> + Você pode ter somente [MAX_AGENTS] residentes permitidos. + </notification> + <notification name="MaxBannedAgentsOnRegion"> + Você pode ter apenas [MAX_BANNED] residentes banidos. + </notification> + <notification name="MaxAgentOnRegionBatch"> + Falha ao adicionar [NUM_ADDED] agentes: +Ultrapassa o limite de [MAX_AGENTS] [LIST_TYPE] de [NUM_EXCESS]. + </notification> + <notification name="MaxAllowedGroupsOnRegion"> + Você pode ter somente [MAX_GROUPS] grupos permitidos. + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Executar"/> + </notification> + <notification name="MaxManagersOnRegion"> + Você pode ter apenas [MAX_MANAGER] gerentes da Propriedade. + </notification> + <notification name="OwnerCanNotBeDenied"> + Não é possÃvel adicionar o dono da propriedade na lista de residentes banidos. + </notification> + <notification name="CanNotChangeAppearanceUntilLoaded"> + Não é possÃvel alterar a aparência até que as roupas e formas estejam carregadas. + </notification> + <notification name="ClassifiedMustBeAlphanumeric"> + O tÃtulo do seu Anúncio deve começar com uma letra entre A e Z ou número. Nenhuma pontuação é permitida. + </notification> + <notification name="CantSetBuyObject"> + Não é possÃvel configurar Comprar Objeto, porque o objeto não está à venda. +Por favor, ponha o objeto à venda e tente novamente. + </notification> + <notification name="FinishedRawDownload"> + Download do arquivo de terreno RAW concluÃdo em: +[DOWNLOAD_PATH] + </notification> + <notification name="DownloadWindowsMandatory"> + Uma nova versão do [SECOND_LIFE] está disponÃvel. +[MESSAGE] +Você deve baixar essa atualização para utilizar o [SECOND_LIFE]. + <usetemplate name="okcancelbuttons" notext="Sair" yestext="Atualizar"/> + </notification> + <notification name="DownloadWindows"> + Uma versão atualizada do [SECOND_LIFE] está disponÃvel. +[MESSAGE] +Essa atualização não é mandatória, mas sugerimos que você a instale para melhorar a performance e a estabilidade. + <usetemplate name="okcancelbuttons" notext="Continuar" yestext="Atualizar"/> + </notification> + <notification name="DownloadWindowsReleaseForDownload"> + Uma versão atualizada do [SECOND_LIFE] está disponÃvel. +[MESSAGE] +Essa atualização não é mandatória, mas sugerimos que você a instale para melhorar a performance e a estabilidade. + <usetemplate name="okcancelbuttons" notext="Continuar" yestext="Atualizar"/> + </notification> + <notification name="DownloadMacMandatory"> + Uma nova versão do [SECOND_LIFE] está disponÃvel. +[MESSAGE] +Você deve baixar esta atualização para utilizar o [SECOND_LIFE]. + +Baixar para sua pasta de Aplicativos? + <usetemplate name="okcancelbuttons" notext="Sair" yestext="Atualizar"/> + </notification> + <notification name="DownloadMac"> + Uma nova versão do [SECOND_LIFE] está disponÃvel. +[MESSAGE] +Essa atualização não é mandatória, mas sugerimos que você a instale para melhorar a performance e a estabilidade. + +Baixar para a sua pasta de Aplicativos? + <usetemplate name="okcancelbuttons" notext="Continuar" yestext="Atualizar"/> + </notification> + <notification name="DownloadMacReleaseForDownload"> + Uma nova versão do [SECOND_LIFE] está disponÃvel. + +[MESSAGE] +Essa atualização não é mandatória, mas sugerimos que você a instale para melhorar a performance e a estabilidade. + +Baixar para sua pasta de Aplicativos? + <usetemplate name="okcancelbuttons" notext="Continuar" yestext="Atualizar"/> + </notification> + <notification name="DeedObjectToGroup"> + Delegar este objeto causará ao grupo: +* Receber os L$ pagos ao objeto + <usetemplate ignoretext="Ao transferir objetos aos grupos" name="okcancelignore" notext="Cancelar" yestext="Acionar"/> + </notification> + <notification name="WebLaunchExternalTarget"> + Abrir o navegador do seu sistema para ver este conteúdo? + <usetemplate ignoretext="Ao abrir o navegador web do seu sistema para visualizar uma página Web" name="okcancelignore" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="WebLaunchJoinNow"> + Ir ao www.secondlife.com para gerenciar sua conta? + <usetemplate ignoretext="Ao abrir o navegador web para gerenciar sua conta" name="okcancelignore" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="WebLaunchBugReport101"> + Visite a Wiki [SECOND_LIFE] para aprender como reportar bugs corretamente. + <usetemplate ignoretext="Ao abrir o web browser para visualizar o report de Bug 101 na Wiki" name="okcancelignore" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="WebLaunchSecurityIssues"> + Visite a Wiki do [SECOND_LIFE] para detalhes de como Reportar um Problema de Segurança. + <usetemplate ignoretext="Ao abrir o navegador da web para visualizar a Wiki de Problemas de Segurança" name="okcancelignore" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="WebLaunchQAWiki"> + Visite o Wiki de QA do [SECOND_LIFE]. + <usetemplate ignoretext="Ao abrir o navegador web para visualizar a Wiki de QA" name="okcancelignore" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="WebLaunchPublicIssue"> + Visite o Rastreador Público de Problemas do [SECOND_LIFE], onde você poderá reportar Bugs e outros Problemas. + <usetemplate ignoretext="Ao abrir o navegador web para visualizar o Rastreador Público de Problemas" name="okcancelignore" notext="Cancelar" yestext="Ir para a Página"/> + </notification> + <notification name="WebLaunchPublicIssueHelp"> + Visite a Wiki [SECOND_LIFE] para informações sobre como utilizar o Rastrador de Público de Problemas. + <usetemplate ignoretext="Ao abrir o navegador web para visualizar a wiki do Rastreador Público de Problemas" name="okcancelignore" notext="Cancelar" yestext="Ir para a página"/> + </notification> + <notification name="WebLaunchSupportWiki"> + Ir até o Blog Oficial da Linden buscar pelas últimas notÃcias e informações. + <usetemplate ignoretext="Ao abrir o navegador da web para visualizar o blog" name="okcancelignore" notext="Cancelar" yestext="Ir até a página"/> + </notification> + <notification name="WebLaunchLSLGuide"> + Ir para a página guia do LSL para ajuda com script? + <usetemplate ignoretext="Ao abrir o navegador web para visualizar o Guia de Scripts." name="okcancelignore" notext="Cancelar" yestext="Ir para a página"/> + </notification> + <notification name="WebLaunchLSLWiki"> + Ir para o portal LSL para ajuda com script? + <usetemplate ignoretext="Ao abrir o navegador da web para visualizar o Portal de LSL" name="okcancelignore" notext="Cancelar" yestext="Ir para a página"/> + </notification> + <notification name="ReturnToOwner"> + Você tem certeza que deseja retornar os objetos selecionados para seus proprietários? Objetos transferÃveis doados irão retornar aos proprietários anteriores. + +*AVISO* Objetos doados não – transferÃveis serão deletados! + <usetemplate ignoretext="Ao retornar objetos a seus proprietários" name="okcancelignore" notext="Cancelar" yestext="Retornar"/> + </notification> + <notification name="GroupLeaveConfirmMember"> + Você é atualmente um membro do grupo [GROUP]. +Deixar este grupo? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Deixar"/> + </notification> + <notification name="ConfirmKick"> + Você quer REALMENTE expulsar todos os usuários deste grid? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Expulsar todos os usuários"/> + </notification> + <notification name="MuteLinden"> + Desculpe, você não pode silenciar um Linden. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="CannotStartAuctionAlreadyForSale"> + Você não pode começar um leilão com um lote que já foi colocado à venda. Desabilite a venda da terra se você tem certeza que deseja iniciar um leilão. + </notification> + <notification label="Silenciar objeto pelo nome falhou" name="MuteByNameFailed"> + Você já silenciou este nome. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="RemoveItemWarn"> + Embora seja permitido, deletar conteúdo pode danificar o objeto. Você quer excluir este item? + <usetemplate name="okcancelbuttons" notext="Não" yestext="Sim"/> + </notification> + <notification name="CantOfferCallingCard"> + Não é possÃvel oferecer um cartão de visitas neste momento. Por favor, tente novamente em breve. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="CantOfferFriendship"> + Não é possÃvel oferecer amizade neste momento. Por favor, tente novamente em breve. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="BusyModeSet"> + Definido o Modo Ocupado. +Bate-papo e mensagens instantâneas serão escondidas. Mensagens instantâneas irão receber a sua resposta de modo ocupado. Todas as ofertas de teletransporte serão recusadas. Todas as ofertas de inventário irão para a sua Lixeira. + <usetemplate ignoretext="Ao definir o Modo Ocupado" name="okignore" yestext="OK"/> + </notification> + <notification name="JoinedTooManyGroupsMember"> + Você já pertence a muitos grupos para entrar em outro. Por favor, deixe pelo menos um grupo antes de entrar neste. Para sair de um grupo, selecione o Menu Editar e a opção Meus 'Grupos...' +[NAME] convidou você para entrar num grupo como membro. +[INVITE] + <usetemplate name="okcancelbuttons" notext="Recusar" yestext="Entrar"/> + </notification> + <notification name="KickUser"> + Expulsar este usuário com qual mensagem? + <form name="form"> + <input name="message" type="text"> + Um administrador desligou você. + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Cancelar"/> + </form> + </notification> + <notification name="KickAllUsers"> + Expulsar todo mundo atualmente do grid com qual mensagem? + <form name="form"> + <input name="message" type="text"> + Um administrador deslogou você. + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Cancelar"/> + </form> + </notification> + <notification name="FreezeUser"> + Paralise este usuário com qual mensagem? + <form name="form"> + <input name="message" type="text"> + Você foi congelado. Você não pode se mover ou conversar. Um administrador irá contatá-lo via mensagem instantânea (MI). + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Cancelar"/> + </form> + </notification> + <notification name="UnFreezeUser"> + Liberar este usuário com qual mensagem? + <form name="form"> + <input name="message" type="text"> + Você não está mais congelado. + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Cancelar"/> + </form> + </notification> + <notification name="OfferTeleport"> + Oferecer um teletransporte para sua localização com qual mensagem? + <form name="form"> + <input name="message" type="text"> + Junte-se a mim em [REGION] + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Cancelar"/> + </form> + </notification> + <notification name="OfferTeleportFromGod"> + God user convocou para a sua localização? + <form name="form"> + <input name="message" type="text"> + Junte-se a mim em [REGION] + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Cancelar"/> + </form> + </notification> + <notification name="TeleportFromLandmark"> + Você tem certeza que quer se teletransportar? + <usetemplate ignoretext="Ao se teletransportar a partir de uma Landmark no inventário" name="okcancelignore" notext="Cancelar" yestext="Teletransportar"/> + </notification> + <notification label="Mensagem para todos na sua Propriedade" name="MessageEstate"> + Digite um breve anúncio que será enviado para todos que estejam atualmente na sua propriedade. + <form name="form"> + <input name="message" type="text"/> + <button name="OK" text="OK"/> + <button name="Cancel" text="Cancelar"/> + </form> + </notification> + <notification label="Mudar propriedade Linden" name="ChangeLindenEstate"> + Você está prestes a mudar uma propriedade pertencente a Linden (continente, teen grid, orientação, etc.) + +Isto é EXTREMAMENTE PERIGOSO porque pode fundamentalmente afetar a experiência do usuário. No continente, vai mudar milhares de regiões e fazer o spaceserver soluçar. + +Proceder? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Mudar Propriedade"/> + </notification> + <notification label="Mudar o acesso à propriedade Linden" name="ChangeLindenAccess"> + Você está prestes a mudar a lista de acessos de uma propriedade pertencente a Linden (continente, teen grid, orientação, etc.). + +Isto é PERIGOSO e deveria ser feito apenas para utilizar uma brecha que permita que objetos/L$ sejam transferidos para dentro/fora da grade. +Isto mudará milhares de regiões e fará o spaceserver soluçar. + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification label="Selecione a propriedade" name="EstateAllowedAgentAdd"> + Adicionar à lista de permitidos somente para esta propriedade ou para [ALL_ESTATES]? + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Todas as Propriedades" yestext="Esta Propriedade"/> + </notification> + <notification label="Selecione a propriedade" name="EstateAllowedAgentRemove"> + Remover da lista de permissão somente para esta propriedade ou para [ALL_ESTATES]? + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Todas as Propriedades" yestext="Esta Propriedade"/> + </notification> + <notification label="Seleção de propriedade" name="EstateAllowedGroupAdd"> + Adicionar à lista de grupos permitidos somente para esta Região ou para [ALL_ESTATES]? + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Todas as Propriedades" yestext="Esta Propriedade"/> + </notification> + <notification label="Selecione a propriedade" name="EstateAllowedGroupRemove"> + Remover da lista de grupos permitidos somente para esta propriedade ou de [ALL_ESTATES]? + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Todas as Propriedades" yestext="Esta Propriedade"/> + </notification> + <notification label="Selecione a propriedade" name="EstateBannedAgentAdd"> + Negar acesso a esta propriedade somente ou para [ALL_ESTATES]? + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Todas as Propriedades" yestext="Esta Propriedade"/> + </notification> + <notification label="Selecione a propriedade" name="EstateBannedAgentRemove"> + Remover este residente da lista de banidos para acesso a esta propriedade apenas ou para [ALL_ESTATES]? + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Todas as Propriedades" yestext="Esta Propriedade"/> + </notification> + <notification label="Selecione a propriedade" name="EstateManagerAdd"> + Adicionar gerente da propriedade para esta propriedade somente ou para [ALL_ESTATES]? + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Todas as Propriedades" yestext="Esta Propriedade"/> + </notification> + <notification label="Selecione a propriedade" name="EstateManagerRemove"> + Remover o gerente da propriedade desta propriedade apenas ou para [ALL_ESTATES]? + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Todas as Propriedades" yestext="Esta Propriedade"/> + </notification> + <notification label="Confirmar expulsão" name="EstateKickUser"> + Expulsar [EVIL_USER] desta propriedade? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Expulsar"/> + </notification> + <notification name="EstateChangeCovenant"> + Tem certeza de que deseja mudar o Corretor da Propriedade? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Mudar"/> + </notification> + <notification name="RegionEntryAccessBlocked"> + Você não é permitido na Região devido à sua Classificação de maturidade. Isto pode ser o resultado da falta de informação de validação de sua idade. + +Por favor, verifique se você está com o último Visualizador instalado e vá ao Banco de Conhecimento para detalhes em como acessar áreas com esta classificação de maturidade. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + <notification name="RegionEntryAccessBlocked_KB"> + Você não é permitido nesta região devido à sua Classificação de maturidade. + +Ir para o Banco de Conhecimento para maiores informações sobre Classificações de maturidade? + <url name="url"> + https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=6010 + </url> + <usetemplate + name="okcancelignore" + yestext="Ir para o Banco de Conhecimento" + notext="Fechar" + ignoretext="Quando a entrada na região está bloqueada devido à Classificação de maturidade"/> + </notification> + <notification name="RegionEntryAccessBlocked_Notify"> + Você não é permitido nesta região devido à sua Classificação de maturidade. + </notification> + <notification name="RegionEntryAccessBlocked_Change"> + Você não é permitido nessa região devido à sua preferência de Classificação de maturidade. + +Você pode clicar em 'Mudar Preferência' para aumentar sua preferência de Classificação de maturidade agora e permitir sua entrada. Você estará habilitado a buscar e acessar conteúdo [REGIONMATURITY] a partir de agora. Se você desejar mais tarde voltar à configuração anterior, vá para Editar > Preferencias... > Geral. + <form> + <button + name="OK" + text="Mudar Preferência"/> + <button + default="true" + name="Cancel" + text="Fechar"/> + <ignore text="Quando a entrada na Região está bloqueada devido à preferência de Classificação de maturidade"/> + </form> + </notification> + <notification name="LandClaimAccessBlocked"> + Você não pode reclamar esta terra devido à sua Classificação de maturidade. Isto pode ser o resultado de falta de informação na validação de sua idade. + +Por favor, verifique se você tem o último Visualizador instalado e vá para o Banco de Conhecimento para detalhes sobre o acesso de áreas com esta Classificação de maturidade. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + <notification name="LandClaimAccessBlocked_KB"> + Você não pode reclamar esta terra devido à sua Classificação de maturidade. + +Ir para a o Banco de Conhecimento para maiores informações sobre Classificações de maturidade? + <url name="url"> + https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=6010 + </url> + <usetemplate + name="okcancelignore" + yestext="Ir para o Banco de Conhecimento" + notext="Fechar" + ignoretext="Quando reclamar a Terra está bloqueado devido à Classificação de maturidade"/> + </notification> + <notification name="LandClaimAccessBlocked_Notify"> + Você não pode reclamar esta terra devido à sua Classificação de maturidade. + </notification> + <notification name="LandClaimAccessBlocked_Change"> + Você não pode reclamar esta terra devido à sua preferência de Classsificação de maturidade. + +Você pode clicar em 'Mudar Preferência' para aumentar sua preferência de Classificação de maturidade agora e permitir sua entrada. Você estará habilitado a buscar e acessar conteúdo [REGIONMATURITY] a partir de agora. Se você desejar mais tarde voltar à configuração anterior, vá para Editar > Preferencias... > Geral. + <usetemplate + name="okcancelignore" + yestext="Mudar Preferência" + notext="Fechar" + ignoretext="Quando reclamar a Terra está bloqueado devido à preferência de Classificação de maturidade"/> + </notification> + <notification name="LandBuyAccessBlocked"> + Você não pode comprar esta terra devido à sua Classificação de maturidade. Isto pode ser o resultado de falta de informação na validação de sua idade. + +Por favor, verifique se você tem o último Visualizador instalado e vá para o Banco de Conhecimento para detalhes sobre o acesso de áreas com esta Classificação de maturidade. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + <notification name="LandBuyAccessBlocked_KB"> + Você não pode comprar esta terra devido à sua Classificação de maturidade. + +Ir para o Banco de Conhecimento para maiores informações sobre Classificações de Maturidade? + <url name="url"> + https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=6010 + </url> + <usetemplate + name="okcancelignore" + yestext="Ir para o Banco de Conhecimento" + notext="Fechar" + ignoretext="Quando a compra de Terra está bloqueada devido à Classificação de maturidade"/> + </notification> + <notification name="LandBuyAccessBlocked_Notify"> + Você não pode comprar esta terra devido à sua Classificação de maturidade. + </notification> + <notification name="LandBuyAccessBlocked_Change"> + Você não pode comprar esta terra devido à sua preferência de Classificação de maturidade. + +Você pode clicar em 'Mudar Preferência' para aumentar sua preferência de Classificação de maturidade agora e permitir sua entrada. Você estará habilitado a buscar e acessar conteúdo [REGIONMATURITY] a partir de agora. Se você desejar mais tarde voltar à configuração anterior, vá para Editar > Preferencias... > Geral. + <usetemplate + name="okcancelignore" + yestext="Mudar Preferência" + notext="Fechar" + ignoretext="Quando a compra de Terra está bloqueada devido à preferência de Classificação de maturidade"/> + </notification> + <notification name="TooManyPrimsSelected"> + "Muitos prims foram selecionados. Por favor, selecione [MAX_PRIM_COUNT] ou menos e tente novamente." + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ProblemImportingEstateCovenant"> + Problemas encontrados ao importar o Corretor da propriedade. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ProblemAddingEstateManager"> + Problemas em adicionar um novo gerente da propriedade. Uma ou mais propriedades podem ter uma lista de gerentes cheia. + </notification> + <notification name="ProblemAddingEstateGeneric"> + Problemas em adicionar a esta lista de propriedades. Uma ou mais propriedades podem ter uma lista cheia. + </notification> + <notification name="UnableToLoadNotecardAsset"> + ImpossÃvel carregar o notecard da propriedade no momento. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="NotAllowedToViewNotecard"> + Permissões insuficientes para visualizar notecard associado com o ID do ativo solicitado. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MissingNotecardAssetID"> + O ID do ativo do notecard não foi localizado no banco de dados. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="PublishClassified"> + Lembre-se: Taxas de Anúncios de Classificados não são reembolsáveis. + +Publicar este classificado agora por L$ [AMOUNT]? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Publicar"/> + </notification> + <notification name="SetClassifiedMature"> + Este classificado contém conteúdo Mature? + <usetemplate + canceltext="Cancelar" + name="yesnocancelbuttons" + notext="Não" + yestext="Sim"/> + </notification> + <notification name="SetGroupMature"> + Este grupo contém conteúdo Mature? + <usetemplate + canceltext="Cancelar" + name="yesnocancelbuttons" + notext="Não" + yestext="Sim"/> + </notification> + <notification label="Confirmar reiniciar" name="ConfirmRestart"> + Você quer realmente reiniciar esta região em 2 minutos? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Reiniciar"/> + </notification> + <notification label="Mensagem para todos desta Região" name="MessageRegion"> + Digite um breve aviso que será enviado para todos nesta região. + <form name="form"> + <input name="message" type="text"/> + <button name="OK" text="OK"/> + <button name="Cancel" text="Cancelar"/> + </form> + </notification> + <notification label="Bloquear Terraforma" name="HelpRegionBlockTerraform"> + Se esta opção for assinalada, donos de Terrenos não serão capazes de terraformar independentemente da configuração 'Editar Terreno' de suas terras por lote. + +Padrão: desligado + </notification> + <notification label="Bloquear Vôo" name="HelpRegionBlockFly"> + Se esta caixa estiver marcada, as pessoas não poderão voar nesta região independente das configurações por lote de 'Voar'. + +Padrão: desligado. + </notification> + <notification label="Mudança Conjunta das Permissões de Conteúdo" name="HelpBulkPermission"> + A ferramenta de Mudança Conjunta das Permissões lhe ajuda a mudar, rapidamente, as permissões de múltiplos itens que estão no conteúdo do(s) objeto(s) selecionado(s). Por favor observe que, no entanto, você está apenas definindo permissões para on itens que estão no conteúdo dos objetos selecionados -- não as permissões para o container dos próprios objetos. + +Também observe que as permissões não se aplicam aos conteúdos aninhados, contidos em quaisquer dos objetos. Sua solicitação opera apenas nos itens em exatamente um nÃvel de profundidade. + +Você pode escolher seletivamente quais tipos de itens modificar, usando a lista de conferência aqui, abaixo de 'Tipos de Conteúdo'. Quando você seleciona Texturas, as fotos são incluÃdas. + +* Esta ferramenta apenas mudará as permissões em itens que você pode mudar. +* Você não pode dar ao Próximo dono, as permissões que você já não tem. +* As permissões ao Próximo dono são meramente solicitações. Se um dos itens não puder assumir todas as novas permissões, nenhuma delas mudará. + +Quando você estiver pronto para mudar as permissões globais, clique 'Aplicar' e aguarde os resultados na tela. + +Se você fechar a janela de Permissões Conjuntas enquanto elas estiverem sendo alteradas, a operação será suspensa. + </notification> + <notification label="Permitir Dano" name="HelpRegionAllowDamage"> + Marcar essa caixa habilita o sistema de vitalidade em todos os lotes independente das configurações individuais. Se esta caixa ficar desmarcada, os proprietários de lotes individuais ainda estarão aptos a ativar o sistema de vitalidade de seus lotes. + +Padrão: desligado. + </notification> + <notification label="Limite de Agentes" name="HelpRegionAgentLimit"> + Define o número máximo de residentes permitidos nesta região. +Quanto mais residentes existirem em sua região, pior pode ser a performance. + +Padrão: 40 + </notification> + <notification label="Bonus de Objetos" name="HelpRegionObjectBonus"> + O Bônus de objetos é um multiplicador para primitivas permitidas em qualquer lote. O intervalo permitido é de 1 a 10. +Se fixado em '1 ', 512m² de cada lote permitem 117 objetos. +Fixado em '2 ', 512m² cada lote permitem 234, ou o dobro, e assim por diante. +O número máximo de objetos permitidos por região permanece 15000 não importa qual seja o Bônus de objeto. Uma vez estabelecido, esteja ciente de que a redução do Bônus de objetos pode retornar objetos ou apagá-los. + +Padrão: 1.0 + </notification> + <notification label="Maturidade" name="HelpRegionMaturity"> + Define a Classificação de Maturidade da região, como mostrado na barra de menu, no topo de qualquer visualizador do Residente e nas dicas no Mapa-Mundi, quando o cursor passa sobre esta Região. Esta definição também afeta o acesso a esta Região e aos resultados de busca. Outros Residentes podem apenas entrar em Regiões ou ver resultados de busca com a mesma Classificação de maturidade que eles escolheram em suas preferências. + +Pode levar algum tempo até que esta mudança se reflita no mapa. + </notification> + <notification label="Restringir Empurrar" name="HelpRegionRestrictPushObject"> + Esta caixa de verificação Configura toda a região para permissões restritivas de empurrar. +Quando habilitada, os agentes só podem empurrar a si mesmos ou serem empurrados pelo dono do lote. +(Empurrar se refere à função LSL llPushObject().) + +Padrão: Desligado. + </notification> + <notification label="Unir/dividir lote" name="HelpParcelChanges"> + Configura se os lotes que não pertencem ao dono da propriedade podem ser unidos ou subdivididos. +Se esta opção estiver desmarcada: + * Apenas os donos ou gerentes de propriedades podem unir ou dividir lotes. + * Eles podem unir ou subdividir lotes pertencentes ao dono ou ao grupo onde eles tem os poderes apropriados. +Se esta opção estiver marcada: + * Todos os donos de lotes podem unir ou subdividir os lotes que eles possuem. + * Para lotes pertencentes a grupos, aqueles com os poderes apropriados podem unir ou subdividir lotes. + +Padrão: Marcado. + </notification> + <notification label="Não Mostrar na Pesquisa" name="HelpRegionSearch"> + Ao marcar esta caixa irá bloquear os donos de lotes de listar seus lotes na busca + +Padrão: desligado + </notification> + <notification label="Modificar a maturidade da Região" name="RegionMaturityChange"> + A classificação de maturidade para esta região foi atualizada. +Pode levar algum tempo para que a mudança seja refletida no mapa. + </notification> + <notification label="Revenda de Terreno" name="HelpRegionLandResell"> + Os gerentes e os donos de propriedades podem vender qualquer terreno pertencente ao dono da propriedade. +Se esta opção estiver desmarcada, os compradores não podem revender seus terrenos nesta região. +Se esta opção estiver marcada, compradores podem vender seus terrenos nesta região. + +Padrão: Desabilitada. + </notification> + <notification label="Desabilitar Scripts" name="HelpRegionDisableScripts"> + Quando a performance do simulador está ruim, um script pode ser o culpado. Abra a Barra de EstatÃsticas (Ctrl-Shift-1). Olhe no Simulador de FÃsica FPS. Se estiver abaixo de 45, então abra o painel 'Tempo' localizado na parte de baixo da Barra de EstatÃsticas. Se o Tempo de Script indicar 25 ms ou mais, clique no botão 'Get Top CScripts'. Será dado o nome e a localização do script que pode estar causando uma performance ruim. Marque a caixa 'Desabilitar Scripts' e aperte o botão 'Aplicar'. Isto temporariamente desabilitará todos os scripts nesta região. Uma vez que você chegar ao local, investigue o script para determinar se ele está causando o problema. Você pode querer entrar em contato com o proprietário do script, excluir ou devolver o objeto. Desmarque a caixa 'Desabilitar Script' e então clique em 'Aplicar' para reativar os scripts na região. Padrão: desligado. + </notification> + <notification label="Desabilitar Colisões" name="HelpRegionDisableCollisions"> + Quando a performance do simulador é pobre, os objetos fÃsicos podem ser os culpados.Abra a a Barra de EstatÃsticas (Ctrl-Shift-1). +Olhe a taxa de quadros por segundos (FPS) dos objetos fÃsicos. + +Se ela estiver abaixo de 45, abra o painel de Tempo, localizado na parte inferior da Barra de EstatÃsticas. Se o Tempo (FÃsicos) do Simulador mostrar 20 ms ou mais, clique o botão 'Pegue os Maiores Colidentes'. Será fornecido a você o nome e a localidade dos objetos fÃsicos que podem estar causando uma performance pobre. +Ativando a caixa Desabilitar Colisões e então pressionando o botão Aplicar, as colisões objeto-objeto serão temporariamente desabilitadas. Você pode precisar fazer isso para que possa viajar até a localidade onde observou um 'colidente-mor'. Uma vez tendo chegado à localidade, investigue o objeto – ele está constantemente colidindo com outros objetos? Você pode desejar contatar o dono do objeto ou deletar ou retornar o objeto. +Desative a caixa 'Desabilitar Colisões' e então use 'Aplicar' para reativar as colisões na região. + +Padrão: off + </notification> + <notification label="Desabilitar FÃsica" name="HelpRegionDisablePhysics"> + Desabilitar FÃsica é similar a desabilitar Colisões, com exceção de que todas as simulações fÃsicas serão desabilitadas. Isto significa que não só os objetos pararão de colidir, mas também que os avatares não poderão se mover. + +Isto só deve ser usado quando Desabilitar Colisões não trouxer performance suficiente à região para investigar um problema de FÃsica ou do 'Colidente-Mor'. + +Esteja certo de reabilitar FÃsica quando você terminar, ou os avatares não poderão se mover. + +Default: desligado + </notification> + <notification label="Principais Colidentes" name="HelpRegionTopColliders"> + Mostra uma lista de objetos com o maior número de potenciais colisões objeto-objeto. Estes objetos podem diminuir a performance do simulador. +Selecione Ver > Barra de EstatÃsticas e olhe em Simulador > Tempo > Tempo de Simulação (FÃsica) para ver se mais de 20 ms são gastos em fÃsica. + </notification> + <notification label="Principais Scripts" name="HelpRegionTopScripts"> + Mostra uma lista dos objetos gastando mais tempo rodando scripts LSL. Estes objetos podem diminuir a performance do simulador. +Selecione Ver > Barra de EstatÃsticas e olhe em Simulador > Tempo > Tempo de Script para ver se mais de 25 ms são gastos em scripts. + </notification> + <notification label="Reiniciar Região" name="HelpRegionRestart"> + Reinicia o processo do servidor rodando esta região, após um aviso de dois minutos. Todos os residentes nesta região serão desconectados. A região salvará seus dados e deverá retornar em até 90 segundos. + +Reiniciar a região não consertará a maioria dos problemas de performance, e deveria ser utilizada somente quando solicitado. + </notification> + <notification label="Altura da água" name="HelpRegionWaterHeight"> + Esta é a altura em metros onde a água aparece. Caso este ajuste seja diferente de 20 e você tenha águas adjacentes ao limite do seu terreno ou águas continentais, haverá uma abertura visÃvel. + +Padrão: 20 + </notification> + <notification label="Limite do aumento" name="HelpRegionTerrainRaise"> + Esta é a distância em metros que os donos de lotes podem elevar o terreno, a partir da altura nivelada do terreno. + +Padrão: 4 + </notification> + <notification label="Limite mais baixo" name="HelpRegionTerrainLower"> + Esta é a distância em metros que os donos de lotes podem abaixar o terreno, a partir da altura nivelada do terreno. + +Padrão: -4 + </notification> + <notification label="Carregar terreno RAW" name="HelpRegionUploadRaw"> + Este botão faz upload de um arquivo .RAW para a região em que você está. +O arquivo precisa conter as dimensões/número de canais corretos: RGB, 256x256 e 13 canais. A melhor forma de criar um arquivo da região é baixando o arquivo .RAW existente. Um bom primeiro passo seria modificar o primeiro canal (altura da região) e fazer o upload do arquivo. + +O upload pode levar certa de 45 segundos. Note que fazer upload do arquivo da região *não* moverá os objetos que estão na região, apenas o terreno e as permissões associadas a ele. Isso pode fazer com que alguns objetos fiquem debaixo da terra. + +Para mais informações sobre edição dos campos de altura da região, consulte a ajuda F1. + </notification> + <notification label="Baixar RAW de terreno" name="HelpRegionDownloadRaw"> + Este botão faz download de um arquivo contendo dados de altura do campo, dimensões do lote, status de lotes à venda e algumas permissões de lote para este terreno. Ao abrir o arquivo em programas como o Photoshop, você precisa especificar as dimensões do documento, que são: RGB, 256x256 com 13 canais. Este arquivo de terras não pode ser aberto de outra forma. + +Para mais informações sobre edição dos campos de altura da região, consulte a Ajuda F1. + </notification> + <notification label="Usar Sol da Propriedade" name="HelpRegionUseEstateSun"> + Esta caixa de opção faz com que a posição do sol nesta região seja a mesma que no resto da região. + +Padrão: ligada + </notification> + <notification label="Sol fixo" name="HelpRegionFixedSun"> + Esta caixa de opção ajusta a posição do sol no equalizador de fuso e interrompe o movimento do sol. + +Padrão: desligada + </notification> + <notification label="Nivelar Terreno" name="HelpRegionBakeTerrain"> + Este botão salva a forma atual do terreno como o novo padrão para a região. Uma vez nivelado, o terreno pode reverter à forma que foi salva, sempre que você ou outros utilizarem a ferramenta 'Revert' na edição de terreno. O terreno nivelado é também o ponto médio entre os limites de elevação e redução de terreno. + </notification> + <notification label="Gerentes da Propriedade" name="HelpEstateEstateManager"> + Um gerente da propriedade é um residente a quem você delegou o controle das configurações da região. Ele pode alterar qualquer configuração da região, com exceção de elevar, abaixar ou nivelar o terreno. Em particular, eles podem permitir ou banir residentes da sua propriedade. Gerentes da propriedade só podem ser adicionados ou removidos pelo dono da propriedade. + +Um gerente não pode adicionar ou remover outro gerente. Por favor, escolha somente residentes em quem você confia para serem gerentes da propriedade, pois você poderá ser responsabilizado pelas ações deles. + </notification> + <notification label="Usar hora Global" name="HelpEstateUseGlobalTime"> + Esta caixa de opção faz com que o Sol em sua propriedade siga a mesma posição do Sol nas propriedades da 'mainland' do Linden Lab. + +Padrão: ligado + </notification> + <notification label="Sol fixo" name="HelpEstateFixedSun"> + Esta caixa de opção ajusta a posição do sol no equalizador de fuso e interrompe o movimento do sol. + </notification> + <notification label="Acesso público" name="HelpEstateExternallyVisible"> + Esta caixa de verificação define se os Residentes que estão em outras propriedades podem entrar nesta, sem estar em uma lista de acesso. + +Padrão: on + </notification> + <notification label="Permitir Teletransporte direto" name="HelpEstateAllowDirectTeleport"> + Quando marcada, permite que os residentes se teletransportem diretamente para qualquer ponto da sua propriedade. Quando desmarcada, os residentes serão teleportados para o telehub mais próximo. + +Padrão: desmarcada + </notification> + <notification label="Permitir acesso" name="HelpEstateAllowResident"> + Acesso a esta propriedade estará limitado aos Residentes listados aqui e em quaisquer grupos abaixo. +Esta definição está disponÃvel apenas quando o Acesso Público estiver desmarcado. + </notification> + <notification label="Permitir acesso de grupo" name="HelpEstateAllowGroup"> + Acesso a esta propriedade estará limitado aos grupos listados aqui e a quaisquer Residentes acima. +Esta definição está disponÃvel apenas quando o Acesso Público estiver desmarcado. + </notification> + <notification label="Endereço de Email do Abuso" name="HelpEstateAbuseEmailAddress"> + Configurar isto para um endereço de email válido, fará com que relatos de abuso nesta propriedade sejam enviados para esse endereço. +DefinÃ-lo em branco fará com que os relatórios de abuso sejam enviados apenas para a Linden Lab. + </notification> + <notification label="Negar acesso" name="HelpEstateBanResident"> + Residentes desta lista estão proibidos de acessar a sua propriedade, independentemente de outras configurações. + </notification> + <notification label="Permitir Conversa por Voz" name="HelpEstateVoiceChat"> + Lotes nesta propriedade têm permissão para ter seus canais de voz próprios, nos quais os residentes podem ouvir e falar com os outros residentes próximos. + +Padrão: desligado + </notification> + <notification label="Discordância de Versão de Voz" name="VoiceVersionMismatch"> + Esta versão do Second Life não é compatÃvel com as caracterÃsticas do Canal de Voz desta região. Para que a Conversa por Voz funcione corretamente, você precisará atualizar o Second Life. + </notification> + <notification label="Corretor da Propriedade" name="HelpEstateCovenant"> + Definir um corretor da propriedade lhe permite vender lotes nesta propriedade. Se um corretor não for definido, você não pode vender terras. O cartão do seu corretor pode ficar vazio se você não desejar aplicar quaisquer regras ou avisar os compradores sobre qualquer coisa em relação ao lote antes da compra. + +Um corretor pode ser usado para comunicar regras, orientações, informações culturais ou simplesmente suas expectativas quanto ao futuro comprador. Isto pode incluir zoneamento, regulamentos para construções, opções de pagamento ou qualquer outra informação que você julgar importante que o novo proprietário veja e concorde antes da compra. + +O comprador precisa concordar com o corretor marcando a caixa de verificação antes de concluir a compra. Corretores são sempre visÃveis na caixa de diálogo 'Sobre a Terra' para todos os lotes que têm corretores definidos. + </notification> + <notification label="ImpossÃvel Comprar Objetos" name="BuyObjectOneOwner"> + Não é possÃvel comprar objetos de diferentes proprietários ao mesmo tempo. +Por favor, selecione apenas um objeto e tente novamente. + </notification> + <notification label="ImpossÃvel Comprar Conteúdos" name="BuyContentsOneOnly"> + Não é possÃvel comprar os conteúdos de mais de um objeto ao mesmo tempo. +Por favor, selecione apenas um objeto e tente novamente. + </notification> + <notification label="ImpossÃvel Comprar Conteúdos" name="BuyContentsOneOwner"> + Não é possÃvel comprar objetos de diferentes proprietários ao mesmo tempo. +Por favor, selecione apenas um objeto e tente novamente. + </notification> + <notification name="BuyOriginal"> + Comprar o objeto original de [OWNER] por L$[PRICE]? +Você se tornará o proprietário deste objeto. +Você poderá: + Modificar: [MODIFYPERM] + Copiar: [COPYPERM] + Revender ou Doar: [RESELLPERM] + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Comprar"/> + </notification> + <notification name="BuyOriginalNoOwner"> + Comprar o objeto original por L$[PRICE]? +Você se tornará o proprietário deste objeto. +Você poderá: + Modificar: [MODIFYPERM] + Copiar: [COPYPERM] + Revender ou Doar: [RESELLPERM] + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Comprar"/> + </notification> + <notification name="BuyCopy"> + Comprar uma cópia de [OWNER] por L$[PRICE]? +O objeto será copiado para o seu inventário. +Você poderá: + Modificar: [MODIFYPERM] + Copiar: [COPYPERM] + Revender ou Doar: [RESELLPERM] + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Comprar"/> + </notification> + <notification name="BuyCopyNoOwner"> + Comprar uma cópia por L$[PRICE]? +O objeto será copiado para o seu inventário. +Você poderá: + Modificar: [MODIFYPERM] + Copiar: [COPYPERM] + Revender ou Doar: [RESELLPERM] + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Comprar"/> + </notification> + <notification name="BuyContents"> + Comprar conteúdo de [OWNER] por L$[PRICE]? +Eles serão copiados para o seu inventário. + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Comprar"/> + </notification> + <notification name="BuyContentsNoOwner"> + Comprar conteúdo por L$[PRICE]? +Eles serão copiados para o seu inventário. + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Comprar"/> + </notification> + <notification name="ConfirmPurchase"> + Esta transação fará: +[ACTION] + +Você tem certeza de que deseja prosseguir com esta compra? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Confirmar"/> + </notification> + <notification name="ConfirmPurchasePassword" type="password"> + Esta transação fará: +[ACTION] + +Você tem certeza de que deseja prosseguir com esta compra? +Por favor, re-insira sua senha e clique 'Confirmar Compra'. + <form name="form"> + <input name="message" type="password"/> + <button name="ConfirmPurchase" text="Confirmar Compra"/> + <button name="Cancel" text="Cancelar"/> + </form> + </notification> + <notification name="SetPickLocation"> + Nota: Você atualizou a localidade desta pick mas os outros detalhes ficarão com seus valores originais. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MoveInventoryFromObject"> + Você selecionou itens 'no copy' do inventário. +Estes itens serão movidos para o seu inventário, não copiados. + +Mover os itens do inventário? + <usetemplate ignoretext="Quando estiver movendo inventário não copiável a partir de objetos." name="okcancelignore" notext="Não mover" yestext="Mover"/> + </notification> + <notification name="MoveInventoryFromScriptedObject"> + Você selecionou itens de inventário não copiáveis. +Estes itens serão movidos para seu inventário, não copiados. Pelo fato de o objeto ter scripts, mover estes itens ao inventário pode provocar um mal funcionamento do script. + +Mover para o inventário o(s) item(s)? + <usetemplate ignoretext="Quando movendo objetos com scripts não copiáveis ao inventário" name="okcancelignore" notext="Não mover" yestext="Mover"/> + </notification> + <notification name="ClickActionNotPayable"> + Aviso: A ação de Pagar ao Objeto com clique foi definida, mas funcionará apenas se for adicionado um script com o evento money(). + <form name="form"> + <ignore name="ignore" text="Quando Definindo 'Pagar' em objetos sem eventos money()"/> + </form> + </notification> + <notification name="OpenObjectCannotCopy"> + Não há itens neste objeto que você está autorizado a copiar. + </notification> + <notification name="WebLaunchAccountHistory"> + Ir para o site do Second Life para visualizar o histórico de sua conta? + <usetemplate ignoretext="Ao abrir a página web de histórico de conta" name="okcancelignore" notext="Cancelar" yestext="Ir para a página"/> + </notification> + <notification name="ClickOpenF1Help"> + Visitar o website de Suporte do Second Life? + <usetemplate ignoretext="Quando visitando o website de Suporte do Second Life" name="okcancelignore" notext="Cancelar" yestext="Ir"/> + </notification> + <notification name="ConfirmQuit"> + Tem certeza que deseja sair? + <usetemplate ignoretext="Quando Saindo do Second Life." name="okcancelignore" notext="Continuar" yestext="Sair"/> + </notification> + <notification name="HelpReportAbuseEmailLL"> + Use esta ferramenta para reportar violações aos Termos de Serviço e aos Padrões da Comunidade. Veja: + +http://secondlife.com/corporate/tos.php +http://secondlife.com/corporate/cs.php + +Todos os abusos aos Termos de Serviço e aos Padrões da Comunidade reportados, são investigados e resolvidos. Você pode ver a resolução do incidente na Reportagem de Incidentes em: + +http://secondlife.com/support/incidentreport.php + </notification> + <notification name="HelpReportAbuseEmailEO"> + IMPORTANTE: Esta reportagem irá para o dono da região em que você se encontra atualmente e não para a Linden Lab. + +Como um serviço aos residentes e visitantes, o dono da região em que você se encontra foi eleito para receber e resolver todas as reportagens originadas nesta região. A Linden Lab não irá investigar reportagens que você envia desta localidade. + +O dono da região resolverá as reportagens baseado nas regras locais desta região, como definido na Declaração da propriedade. +(Veja as declarações indo ao menu Mundo e selecionando Sobre a Terra.) + +A resolução desta reportagem se aplica apenas a esta região; o acesso de Residentes à s outras áreas do Second Life não será afetado pelas decisões desta reportagem. +Apenas a Linden Lab pode restringir acesso a todo o Second Life. + </notification> + <notification name="HelpReportBug"> + Use esta ferramenta para reportar *apenas* caracterÃsticas técnicas que não atuem como descrito ou esperado. +Por favor, forneça tantos detalhes quanto possÃvel. +Você pode responder ao e-mail de resposta automática para adicionar mais detalhes à sua reportagem. + +Todas as reportagens de bugs são investigadas e avaliadas. +Nenhum e-mail de resposta será enviado. + +Se você estiver tendo uma dificuldade técnica, por favor contate o Suporte em: +http://secondlife.com/community/support.php + +Nota: reportagens incompletas não serão investigadas + </notification> + <notification name="HelpReportAbuseSelectCategory"> + Por favor, selecione uma categoria para a reportagem deste abuso. +A seleção de uma categoria nos ajuda a arquivar e processar as reportagens de abuso. + </notification> + <notification name="HelpReportBugSelectCategory"> + Por favor, selecione uma categoria para este bug. +A seleção de uma categoria nos ajuda a arquivar e processar as reportagens de bugs. + </notification> + <notification name="HelpReportAbuseAbuserNameEmpty"> + Por favor, entre com o nome do perturbador. +Entrando com um valor preciso, nos ajuda a arquivar e processar as reportagens de abuso. + </notification> + <notification name="HelpReportAbuseAbuserLocationEmpty"> + Por favor, entre com a localidade aonde o abuso aconteceu. +Entrando com um valor preciso, nos ajuda a arquivar e processar as reportagens de abuso. + </notification> + <notification name="HelpReportAbuseSummaryEmpty"> + Por favor, digite um resumo de como ocorreu o abuso. +Fazer um resumo detalhado nos ajuda a arquivar e processar as reportagens de abuso. + </notification> + <notification name="HelpReportBugSummaryEmpty"> + Por favor, digite um resumo do bug. Realizar um resumo detalhado nos ajuda a arquivar e processar as reportagens de abuso. + </notification> + <notification name="HelpReportAbuseDetailsEmpty"> + Por favor, digite uma descrição detalhada do abuso que ocorreu. +Seja tão especÃfico quanto você puder, incluindo nomes e os detalhes do incidente que está denunciando. +Fazer uma descrição precisa nos ajuda a arquivar e processar as reportagens de abuso. + </notification> + <notification name="HelpReportBugDetailsEmpty"> + Por favor, digite uma descrição detalhada do bug. +Seja tão especÃfico quanto você puder, incluindo as etapas para reproduzir o bug, se possÃvel. +Fazer uma descrição precisa nos ajuda a arquivar e processar os relatórios de bugs. + </notification> + <notification name="HelpReportAbuseContainsCopyright"> + Caro Residente, + +Você parece estar relatando violação de propriedade intelectual. Por favor, certifique-se de que está relatando corretamente: + +(1) O Processo de abuso. Você pode apresentar um relatório de abuso se você acredita que um Residente está infringindo o sistema de permissões do Second Life, por exemplo, utilizando ferramentas CopyBot para copiar ou similar, para violar os direitos de propriedade intelectual. A Equipe de Abuso investiga e divulga a ação disciplinar adequada para o comportamento que viola o Estatuto da Comunidade do Second Life ou os Termos de Serviço. No entanto, a mesma não controla e não irá responder aos pedidos para remover o conteúdo do mundo Second Life. + +(2) O processo de remoção de conteúdo ou DMCA. Para solicitar a remoção de conteúdo do Second Life, você deve enviar uma notificação válida de infração, conforme previsto em nossa PolÃtica de DMCA em http://secondlife.com/corporate/dmca.php. + +Se você ainda deseja prosseguir com o processo de abuso, por favor, feche esta janela e termine de enviar seu relatório. Pode ser necessário selecionar a categoria especÃfica 'CopyBot Infração de Permissões'. + +Obrigado, +Linden Lab + </notification> + <notification name="FailedRequirementsCheck"> + Não foram encontrados os seguintes componentes requeridos de [FLOATER]: +[COMPONENTS] + </notification> + <notification label="Substituir anexo existente" name="ReplaceAttachment"> + Já existe um objeto anexado a este ponto do seu corpo. +Você deseja substituÃ-lo pelo objeto selecionado? + <form name="form"> + <ignore name="ignore" save_option="true" text="Ao substituir os anexos existentes"/> + <button name="Yes" text="Sim"/> + <button name="No" text="Não"/> + </form> + </notification> + <notification label="Aviso de Modo Ocupado" name="BusyModePay"> + Você está no modo Ocupado, o que significa que você não receberá quaisquer itens oferecidos em troca deste pagamento. + +Você gostaria de deixar o modo Ocupado antes de completar esta transação? + <form name="form"> + <ignore name="ignore" save_option="true" text="Ao pagar uma pessoa ou objeto no modo ocupado"/> + <button name="Yes" text="Sim"/> + <button name="No" text="Não"/> + </form> + </notification> + <notification name="ConfirmEmptyTrash"> + Tem certeza de que deseja remover permanentemente o conteúdo da lixeira de seu inventário? + <usetemplate ignoretext="Ao esvaziar a pasta da lixeira no seu inventário" name="okcancelignore" notext="Não" yestext="Sim"/> + </notification> + <notification name="ConfirmClearBrowserCache"> + Você tem certeza que deseja limpar o cache do seu navegador? + <usetemplate name="okcancelbuttons" notext="Não" yestext="Sim"/> + </notification> + <notification name="ConfirmClearCookies"> + Você tem certeza de que deseja limpar os cookies? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Sim"/> + </notification> + <notification name="ConfirmClearMediaUrlList"> + Você tem certeza de que deseja limpar toda sua lista de URLs? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Sim"/> + </notification> + <notification name="ConfirmEmptyLostAndFound"> + Deseja realmente remover permanentemente o conteúdo da pasta achados e perdidos? + <usetemplate ignoretext="Ao esvaziar pasta Achados e Perdidos do seu inventário" name="okcancelignore" notext="Não" yestext="Sim"/> + </notification> + <notification name="CopySLURL"> + A seguinte SLURL foi copiada para o seu clipboard: + [SLURL] + +Coloque-a em uma página web para dar aos outros um fácil acesso a este local ou tente você, colando-a na barra de endereços do seu navegador. + <form name="form"> + <ignore name="ignore" text="Ao copiar a SURL para o seu clipboard"/> + </form> + </notification> + <notification name="GraphicsPreferencesHelp"> + Este painel controla o tamanho da janela, resolução e a qualidade dos gráficos do computador cliente. O Preferências > Interface Gráfica permite escolher entre quatro nÃveis gráficos: Baixo, Médio, Alto e Ultra. Você também pode personalizar suas configurações de gráficos selecionando a opção Custom e manipulando as seguintes definições: + +Sombreamento: Ativar ou desativar vários tipos de sobreadores de pixel. + +Detalhes de Reflexão: Define os tipos de objetos que a água pode refletir. + +Renderização de Avatar: Define opções que afetam a forma como o cliente renderizará os avatares. + +Alcance: Afeta a distância do seu ponto de vista que os objetos serão renderizados na cena. + +Número máximo de partÃculas: Define o número máximo de partÃculas que será capaz de ver na sua tela de uma só vez. + +Qualidade de Pós-Processamento: Define a resolução com a qual o brilho será renderizado. + +Detalhes de malha: Ajusta a quantidade de detalhes ou número de triângulos utilizados na renderização de certos objetos. Um valor mais alto leva mais tempo para renderizar, mas torna esses objetos mais detalhados. + +Detalhe de Iluminação: Seleciona os tipos de luzes que você gostaria de renderizar. + +Detalhe de Terreno: Ajusta a quantidade de detalhes que você gostaria de ver para a textura do terreno. + </notification> + <notification name="WLSavePresetAlert"> + 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="HelpEditSky"> + Editar os controles graduais do WindLight para configurar e salvar um conjunto de céus. + </notification> + <notification name="HelpEditDayCycle"> + Definir quais céus colocar durante todo o dia. + </notification> + <notification name="EnvSettingsHelpButton"> + Essas configurações ajustam a forma como o ambiente parece localmente no seu computador. Sua placa de vÃdeo precisa suportar o sombreador atmosférico, a fim de ter acesso a todas as definições. + +Ajuste o controle gradual "Hora do Dia" para alterar a fase do dia localmente no visualizador. + +Ajuste o controle gradual de "Cobertura das nuvens" para controlar quantas nuvens cobrem o céu. + +Pegue uma cor na paleta de cores de "Cor da Ãgua" para mudar a cor desta. + +Ajuste o controle gradual de "Névoa de Ãgua" para controlar o quão densa é a névoa dentro da água. + +Clique "Usar Horário da Propriedade" para redefinir a hora do dia para o horário atual do dia da região e permanecer atrelado a ela. + +Clique "Céu Avançado " para abrir um editor com configurações mais avançadas para o céu. + +Clique "Ãgua Avançada " para abrir um editor com configurações mais avançadas para a água. + </notification> + <notification name="HelpDayCycle"> + O editor de Ciclo do Dia dá a você o controle do céu durante um ciclo de dia/noite do Second Life. Este é o ciclo usado pelo controle gradual da hora do dia do editor de ambiente básico. + +O editor do ciclo de dia trabalha configurando quadros-chave. Estes são pontos (representados pelos Ãcones cinza no gráfico de horário) que possuem um pré-ajuste de céu associado a eles. Conforme o dia passa, o céu do Windlight " anima " a interpolação entre esses quadros-chave. + +A seta amarela acima da linha de tempo representa a sua vista atual, baseada no horário do dia. Clique e arraste para ver como o seu dia será animado. Você pode adicionar ou deletar os quadros-chave pressionando os botões Adicionar Chave e Deletar chave ao lado direito da linha de tempo. + +Você pode configurar a posição do tempo de um quadro-chave arrastando-o pela linha do tempo, ou configurando manualmente no quadro de configurações do seu quadro-chave. Será possÃvel a você associar o seu quadro-chave a este respectivo padrão WindLight. + +A duração do ciclo determina a duração geral do "dia". Configurá-la para um valor baixo (por exmplo, 2 min.) quer dizer que a linha do tempo de 24 horas será animada completamente em apenas dois minutos reais! Assim que estiver satisfeito com a linha do tempo e o ciclo dos quadros-chave, use os botões Play e Stop para uma prévia de como ficará o resultado. Lembre-se, você também pode utilizar a seta amarela indicadora do tempo acima da linha do tempo para ver o ciclo animado interativamente. Usando o botão do tempo da popriedade irá sincronizar a duração do seu dia ao ciclo diário da propriedade. + +Assim que estiver satisfeito com o seu ciclo diário, você pode salvá-lo ou carregá-lo através dos botões Salvar Dia Teste e Carregar Dia Teste. Note que, por enquanto, nós permitimos apenas um Ciclo de dia. + </notification> + <notification name="HelpBlueHorizon"> + Use os cursores Vermelho/Verde/Azul ( Red/Green/Blue -RGB) para ajustar as cores do céu. Você também pode usar o controle de Intensidade (I) para mover os três controles RGB simultaneamente. + </notification> + <notification name="HelpHazeHorizon"> + Haze Horizon é um dos parâmetros mais úteis para ajuste global de exposição de luz na cena. Ele é eficaz para simular diversas configurações de exposição, tais como configurações para super-exposição do sol e escuros halos de Iris. + </notification> + <notification name="HelpBlueDensity"> + A densidade global azul afeta a saturação da cor do céu e nevoeiro. Se você mover o controle gradual de intensidade (I) para a direita, as cores vão se tornar mais brilhantes e vibrantes. Se você movê-lo totalmente para a esquerda, as cores perdem intensidade e cor, eventualmente chegando a preto e branco. Se pretende um ajuste fino do equilÃbrio de cor do céu, você pode controlar os diversos elementos da saturação, utilizando os controles graduais para vermelho / verde / azul (RGB). + </notification> + <notification name="HelpHazeDensity"> + Densidade de Poeira controla o nÃvel de fumaça, poeira cinza na atmosfera. Eficaz para simular cenas com altos nÃveis de poeira e poluentes. É também efetivo em simular névoa e nevoeiro. + </notification> + <notification name="HelpDensityMult"> + O Multiplicador de Densidade pode ser usado para afetar a densidade atmosférica global. Com definições mais baixas, ele cria uma sensação de "ar rarefeito" e em definições mais altas, ele cria um efeito mais denso, mais esfumaçado. + </notification> + <notification name="HelpDistanceMult"> + Ajusta como a distância no WindLight é percebida. Um valor zero efetivamente desativa a influência do WindLight sobre terrenos e objetos. Valores superiores a 1 simulam os efeitos atmosféricos mais espessos a maiores distâncias. + </notification> + <notification name="HelpMaxAltitude"> + Max Altitude ajusta os cálculos de performance de altitude do WindLight, quando computa sua iluminação atmosférica. Em perÃodos vespertinos do dia, é útil para ajustar a "profundidade" de como o pôr-do-sol aparece. + </notification> + <notification name="HelpSunlightColor"> + Ajustar a cor e intensidade da luz direta na cena. + </notification> + <notification name="HelpSunAmbient"> + Ajusta a cor e a intensidade da luz ambiente atmosférica na cena. + </notification> + <notification name="HelpSunGlow"> + O controle gradual de Tamanho controla o tamanho do sol. +O controle gradual de Foco controla o quanto o sol aparecerá desfocado no céu. + </notification> + <notification name="HelpSceneGamma"> + Ajusta a distribuição na tela de luz e escuridão. + </notification> + <notification name="HelpStarBrightness"> + Ajusta o brilho das estrelas no céu. + </notification> + <notification name="HelpTimeOfDay"> + Controla a localização do sol no céu. Semelhante a elevação. + </notification> + <notification name="HelpEastAngle"> + Controla a localização do sol no céu. +Similar ao azimute. + </notification> + <notification name="HelpCloudColor"> + Edita as cores das nuvens, É normalmente recomendado manter o tom esbranquiçado, mas hey! Você pode se divertir se desejar. + </notification> + <notification name="HelpCloudDetail"> + Controla os detalhes da camada de imagem superior na imagem de nuvem principal. X e Y controla sua posição. D (Densidade) controla o quão cheio ou estratificada as nuvens devem aparecer. + </notification> + <notification name="HelpCloudDensity"> + Permite que você controle a posição das nuvens com os cursores X e Y e a densidade deles com o cursor D. + </notification> + <notification name="HelpCloudCoverage"> + Controla o quanto as nuvens cobrem o céu. + </notification> + <notification name="HelpCloudScale"> + Controla o dimensionamento da imagem de nuvens na cúpula celeste. + </notification> + <notification name="HelpCloudScrollX"> + Controla a velocidade das nuvens que se movem na direção X. + </notification> + <notification name="HelpCloudScrollY"> + Controla a velocidade que as núvens se movem na direção Y. + </notification> + <notification name="HelpClassicClouds"> + Marque esta check box para permitir a reprodução das nuvens clássicas mais velhas do Second Life, além das nuvens WindLight. + </notification> + <notification name="HelpWaterFogColor"> + Escolhe a cor da neblina subaquática. + </notification> + <notification name="HelpWaterFogDensity"> + Controla a densidade da neblina da água e a distância de visibilidade debaixo d'água. + </notification> + <notification name="HelpUnderWaterFogMod"> + Modifica o efeito do expoente de densidade de Neblina para controlar até onde você pode ver quando o seu avatar está imerso. + </notification> + <notification name="HelpWaterGlow"> + Controla o quanto a superfÃcie da água deve brilhar. + </notification> + <notification name="HelpWaterNormalScale"> + Controla o escalonamento das três marolas que compõem a água. + </notification> + <notification name="HelpWaterFresnelScale"> + Controla o quanto de luz será refletido por ângulos diferentes. + </notification> + <notification name="HelpWaterFresnelOffset"> + Controla o quanto da intensidade da luz é refletida. + </notification> + <notification name="HelpWaterScaleAbove"> + Controla o quanto de luz será refratado olhando acima da superfÃcie da água. + </notification> + <notification name="HelpWaterScaleBelow"> + Controla o quanto de luz sera refratado visto debaixo da superfÃcie da água. + </notification> + <notification name="HelpWaterBlurMultiplier"> + Controla como ondas e reflexos são misturados. + </notification> + <notification name="HelpWaterNormalMap"> + Controla o mapeamento normal em todos os nÃveis da água para determinar reflexões / refrações. + </notification> + <notification name="HelpWaterWave1"> + Controla aonde e com que velocidade a versão em escala maior do mapa normal se move nas direções X e Y . + </notification> + <notification name="HelpWaterWave2"> + Controla onde e a velocidade com que o mapa normal em escala menor se move nas direções X e Y. + </notification> + <notification name="NewSkyPreset"> + Me dê o nome para o novo céu. + <form name="form"> + <input name="message" type="text"> + Novo padrão + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Cancelar"/> + </form> + </notification> + <notification name="ExistsSkyPresetAlert"> + Este padrão já existe! + </notification> + <notification name="NewWaterPreset"> + Dê o nome para o novo padrão de água. + <form name="form"> + <input name="message" type="text"> + Nova Apresentação + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Cancelar"/> + </form> + </notification> + <notification name="ExistsWaterPresetAlert"> + Este padrão já existe! + </notification> + <notification name="WaterNoEditDefault"> + Você não pode editar ou apagar um padrão predefinido. + </notification> + <notification name="ChatterBoxSessionStartError"> + Não foi possÃvel iniciar uma nova sessão bate-papo com [RECIPIENT]. +[REASON] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ChatterBoxSessionEventError"> + [EVENT] +[REASON] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ForceCloseChatterBoxSession"> + Sua sessão de bate-papo com [NAME] tem que fechar. +[REASON] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="Cannot_Purchase_an_Attachment"> + Os itens não podem ser comprados enquanto forem parte de um anexo. + </notification> + <notification label="Sobre o pedido de Permissão de Débito" name="DebitPermissionDetails"> + Conceder esse pedido dá permissão ao script para tirar Linden dólares (L$) de sua conta. Para revogar esta permissão, o proprietário do objeto deve excluir o objeto ou resetar os scripts dele. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="AutoWearNewClothing"> + Você gostaria de vestir automaticamente o item de vestuário que você criar? + <usetemplate ignoretext="Automaticamente vestir novo vestuário" name="okcancelignore" notext="Não" yestext="Sim"/> + </notification> + <notification name="NotAgeVerified"> + Você precisa ter a idade verificada para acessar este lote. +Gostaria de visitar o site do Second Life para verificação de idade? + +[_URL] + <url name="url" option="0"> + https://secondlife.com/account/verification.php + </url> + <usetemplate ignoretext="Alertar sobre a falta de verificação de idade" name="okcancelignore" notext="Não" yestext="Sim"/> + </notification> + <notification name="Cannot enter parcel: no payment info on file"> + Este lote exige que você tenha informações de pagamento no arquivo antes de poder acessá-lo. +Gostaria de visitar o site do Second Life para configurá-lo? + +[_URL] + <url name="url" option="0"> + https://secondlife.com/account/ + </url> + <usetemplate ignoretext="Avisar sobre a falta de informação de pagamento." name="okcancelignore" notext="Não" yestext="Sim"/> + </notification> + <notification name="MissingString"> + A sequência [STRING_NAME] está faltando do strings.xml + </notification> + <notification name="SystemMessageTip"> + [MESSAGE] + </notification> + <notification name="Cancelled"> + Cancelado + </notification> + <notification name="CancelledSit"> + Cancelada a ação de sentar + </notification> + <notification name="CancelledAttach"> + Cancelado Anexar + </notification> + <notification name="ReplacedMissingWearable"> + Substituindo partes de roupa/corpo perdidas com o padrão + </notification> + <notification name="GroupNotice"> + Assunto: [SUBJECT], Mensagem: [MESSAGE] + </notification> + <notification name="FriendOnline"> + [FIRST] [LAST] está Online + </notification> + <notification name="FriendOffline"> + [FIRST] [LAST] está Offline + </notification> + <notification name="AddSelfFriend"> + Você não pode adicionar a si mesmo como amigo + </notification> + <notification name="UploadingAuctionSnapshot"> + Fazendo o upload das fotos do site da web e do mundo... +(Leva cerca de 5 minutos) + </notification> + <notification name="UploadPayment"> + Você paga L$[AMOUNT] para fazer o upload. + </notification> + <notification name="UploadWebSnapshotDone"> + ConcluÃdo o upload da foto do site da web + </notification> + <notification name="UploadSnapshotDone"> + O upload da foto foi realizado + </notification> + <notification name="TerrainDownloaded"> + Feito o download de Terrain.raw + </notification> + <notification name="GestureMissing"> + O Gesto [NAME] não se encontra na base de dados + </notification> + <notification name="UnableToLoadGesture"> + ImpossÃvel de carregar o gesto [NAME]. +Por favor, tente novamente. + </notification> + <notification name="LandmarkMissing"> + O landmark foi perdido na base de dados + </notification> + <notification name="UnableToLoadLandmark"> + ImpossÃvel carregar o landmark. Por favor, tente de novo. + </notification> + <notification name="CapsKeyOn"> + Seu botão CAPS LOCK está ativado. +Como isto afeta a senha digitada, você provavelmente desejará desativá-lo. + </notification> + <notification name="NotecardMissing"> + Notecard foi perdido no banco de dados. + </notification> + <notification name="NotecardNoPermissions"> + Permissões insuficientes para visualizar o notecard + </notification> + <notification name="RezItemNoPermissions"> + Sem permissões suficientes para criar objetos. + </notification> + <notification name="UnableToLoadNotecard"> + Não é possÃvel carregar notas neste momento. + </notification> + <notification name="ScriptMissing"> + O script foi perdido no banco de dados. + </notification> + <notification name="ScriptNoPermissions"> + Permissões insuficientes para visualizar o script. + </notification> + <notification name="UnableToLoadScript"> + ImpossÃvel carregar o script. Por favor, tente novamente. + </notification> + <notification name="IncompleteInventory"> + Os conteúdos completos que vocë está oferecendo, não estão ainda disponÃveis localmente. Por favor, tente oferecê-los novamente em um minuto. + </notification> + <notification name="CannotModifyProtectedCategories"> + Você não pode modificar categorias protegidas. + </notification> + <notification name="CannotRemoveProtectedCategories"> + Você não pode remover categorias protegidas. + </notification> + <notification name="OfferedCard"> + Você ofereceu um cartão de visita a [FIRST] [LAST] + </notification> + <notification name="UnableToBuyWhileDownloading"> + ImpossÃvel comprar o objeto enquanto ele está sendo carregado. +Por favor, tente novamente. + </notification> + <notification name="UnableToLinkWhileDownloading"> + ImpossÃvel unir o objeto enquanto ele está sendo carregado. +Por favor, tente novamente. + </notification> + <notification name="CannotBuyObjectsFromDifferentOwners"> + ImpossÃvel comprar objetos de diferentes compradores ao mesmo tempo. +Por favor, compre apenas um objeto. + </notification> + <notification name="ObjectNotForSale"> + Este objeto não está a venda. + </notification> + <notification name="EnteringGodMode"> + Entrando em god mode, nÃvel [LEVEL] + </notification> + <notification name="LeavingGodMode"> + Saindo do god mode, nÃvel [LEVEL] + </notification> + <notification name="CopyFailed"> + A cópia falhou porque você não tem permissão para copiar. + </notification> + <notification name="InventoryAccepted"> + [NAME] aceitou sua oferta de inventário. + </notification> + <notification name="InventoryDeclined"> + [NAME] rejeitou sua oferta de inventário. + </notification> + <notification name="ObjectMessage"> + [NAME]: [MESSAGE] + </notification> + <notification name="CallingCardAccepted"> + Seu cartão de visita foi aceito + </notification> + <notification name="CallingCardDeclined"> + Seu cartão de visita foi negado. + </notification> + <notification name="TeleportToLandmark"> + Agora que você chegou à mainland, você pode se teletransportar para locais como '[NAME]' clicando no botão de Inventário, no canto direito inferior de sua tela, e selecionando a pasta Landmarks. +Dê um duplo-clique na landmark e clique Teletransportar para viajar para o local desejado. + </notification> + <notification name="TeleportToPerson"> + Agora que você chegou à mainland, você pode contatar residentes como '[NAME]' clicando no botão de Inventário, canto direito inferior de sua tela, e selecionando a pasta Cartões de Visita. +Dê um duplo-clique num cartão de visita e em Mensagem Instantânea, digite sua mensagem. + </notification> + <notification name="CantSelectLandFromMultipleRegions"> + ImpossÃvel selecionar terra nas fronteiras do servidor. Tente selecionar um pedaço menor de terra. + </notification> + <notification name="SearchWordBanned"> + Alguns termos da sua busca foram excluÃdos, devido à s restrições de conteúdo, como explicado nos Padrões da Comunidade. + </notification> + <notification name="NoContentToSearch"> + Por favor, selecione ao menos um tipo de conteúdo para a busca (PG, Mature ou Adult). + </notification> + <notification name="GroupVote"> + [NAME] propõe que você vote: +[MESSAGE] + <form name="form"> + <button name="VoteNow" text="Vote agora"/> + <button name="Later" text="Depois"/> + </form> + </notification> + <notification name="SystemMessage"> + [MESSAGE] + </notification> + <notification name="EventNotification"> + Notificação de evento: + +[NAME] +[DATE] + <form name="form"> + <button name="Teleport" text="Teletransporte"/> + <button name="Description" text="Descrição"/> + <button name="Cancel" text="Cancelar"/> + </form> + </notification> + <notification name="TransferObjectsHighlighted"> + Todos os objetos deste terreno que serão transferidos ao seu comprador, estão realçados agora. + <form name="form"> + <button name="Done" text="Feito"/> + </form> + </notification> + <notification name="DeactivatedGesturesTrigger"> + Gestos desativados com o mesmo comando: +[NAMES] + </notification> + <notification name="NoQuickTime"> + O software QuickTime da Apple parece não estar instalado em seu sistema. +Se você deseja ver fluxo de mÃdia em terrenos que aceitem isso, você deverá ir ao site do QickTime (http://www.apple.com/quicktime) e instalar o player do QuickTime. + </notification> + <notification name="OwnedObjectsReturned"> + Os objetos que lhe pertencem no lote selecionado do terreno, voltaram ao seu inventário. + </notification> + <notification name="OtherObjectsReturned"> + Os objetos no lote selecionado de terra que pertence a [FIRST] [LAST], voltaram ao seu inventário. + </notification> + <notification name="OtherObjectsReturned2"> + Os objetos no lote de terra selecionado que pertence ao residente '[NAME]', voltaram aos seus donos. + </notification> + <notification name="GroupObjectsReturned"> + Os objetos no lote selecionado de terreno compartilhado pelo grupo [GROUPNAME], voltaram para os inventários de seus donos. +Objetos trasnferÃveis dados ao grupo, voltaram aos seus donos anteriores. +Objetos não transferÃveis dados ao grupo foram deletados. + </notification> + <notification name="UnOwnedObjectsReturned"> + Os objetos no lote selecionado que NÃO são seus, voltaram aos seus donos. + </notification> + <notification name="NotSafe"> + Esta terra permite que você sofra ataques. +Você pode ser ferido aqui. Se você morrer, você será teletransportado à sua posição inicial. + </notification> + <notification name="NoFly"> + Este terreno tem a opção Voar desabilitada. +Ou seja, você não pode voar aqui. + </notification> + <notification name="PushRestricted"> + Esta terra é “Não empurreâ€. +Você não pode empurrar os outros, a não ser que seja o proprietário da terra. + </notification> + <notification name="NoVoice"> + O uso de voz está desabilitado nesta terra. + </notification> + <notification name="NoBuild"> + Este terreno tem a opção de construir desabilitada, ou seja, você não pode criar objetos aqui. + </notification> + <notification name="ScriptsStopped"> + Um administrador não permitiu scripts temporariamente nesta região. + </notification> + <notification name="ScriptsNotRunning"> + Esta região não roda nenhum script. + </notification> + <notification name="NoOutsideScripts"> + Neste terreno, nenhum script funcionará, a não ser os scripts do próprio dono da terra. + </notification> + <notification name="ClaimPublicLand"> + Pode apenas reclamar terreno público na região em que você está. + </notification> + <notification name="RegionTPAccessBlocked"> + Você não é permitido na Região devido à sua Classificação de maturidade. Você precisa validar sua idade e/ou instalar o último Visualizador. + +Por favor, vá ao Banco de Conhecimento para detalhes sobre o acesso de áreas com esta Classificação de maturidade. + </notification> + <notification name="URBannedFromRegion"> + Você está banido da região. + </notification> + <notification name="NoTeenGridAccess"> + Sua conta não pode conectar a esta região da grade teen. + </notification> + <notification name="NoHelpIslandTP"> + Você não pode se tele-transportar de volta à Ilha de Ajuda. +Vá para a Ilha de Ajuda Pública para repetir este tutorial. + </notification> + <notification name="ImproperPaymentStatus"> + Você não tem o status de pagamento adequado para entrar nesta região. + </notification> + <notification name="MustGetAgeRgion"> + Você precisa ter sua idade verificada para entrar nesta região. + </notification> + <notification name="MustGetAgeParcel"> + Você precisa ter a idade verificada para entrar neste lote. + </notification> + <notification name="NoDestRegion"> + Nenhuma região de destino encontrada. + </notification> + <notification name="NotAllowedInDest"> + Você não é permitido nesse destino. + </notification> + <notification name="RegionParcelBan"> + Não consegue atravessar região com lote banido. Tente outra forma. + </notification> + <notification name="TelehubRedirect"> + Você foi redirecionado para um telehub. + </notification> + <notification name="CouldntTPCloser"> + Não conseguiu tele-transportar próximo ao destino. + </notification> + <notification name="TPCancelled"> + Tele-transporte cancelado. + </notification> + <notification name="FullRegionTryAgain"> + A região que você está tentando entrar está no momento cheia. +Por favor, tente novamente em alguns instantes. + </notification> + <notification name="GeneralFailure"> + Falha geral. + </notification> + <notification name="RoutedWrongRegion"> + Direcionado para a região errada. Por favor, tente novamente. + </notification> + <notification name="NoValidAgentID"> + ID do agente inválido. + </notification> + <notification name="NoValidSession"> + ID de sessão inválido. + </notification> + <notification name="NoValidCircuit"> + Código de circuito inválido. + </notification> + <notification name="NoValidTimestamp"> + Hora inválida. + </notification> + <notification name="NoPendingConnection"> + ImpossÃvel criar a conexão pendente. + </notification> + <notification name="InternalUsherError"> + Um erro interno ocorreu enquanto se tentava direcioná-lo para seu destino de Tele-transporte. O Second Life pode estar passando por problemas no serviço, neste momento. + </notification> + <notification name="NoGoodTPDestination"> + ImpossÃvel encontrar um bom destino para tele-transporte nesta região. + </notification> + <notification name="InternalErrorRegionResolver"> + Um erro interno ocorreu enquanto tentava-se definir as coordenadas globais da sua solicitação de tele-transporte. O Second Life pode estar passando por problemas no serviço, no momento. + </notification> + <notification name="NoValidLanding"> + Não se achou um ponto de aterrissagem válido. + </notification> + <notification name="NoValidParcel"> + Nenhum lote válido foi encontrado. + </notification> + <notification name="ObjectGiveItem"> + Um objeto nomeado [OBJECTFROMNAME] do dono [FIRST] [LAST] deu a você [OBJECTTYPE] nomeado '[OBJECTNAME]'. + <form name="form"> + <button name="Keep" text="Segure"/> + <button name="Discard" text="Descarte"/> + <button name="Mute" text="Mudo"/> + </form> + </notification> + <notification name="ObjectGiveItemUnknownUser"> + Um objeto nomeado [OBJECTFROMNAME], de dono desconhecido, deu a você um [OBJECTTYPE] nomeado [OBJECTNAME]. + <form name="form"> + <button name="Keep" text="Segure"/> + <button name="Discard" text="Descarte"/> + <button name="Mute" text="Mudo"/> + </form> + </notification> + <notification name="UserGiveItem"> + [NAME]deu a voce um [OBJECTTYPE] nomeado '[OBJECTNAME]'. + <form name="form"> + <button name="Keep" text="Mantenha"/> + <button name="Discard" text="Descarte"/> + <button name="Mute" text="Mudo"/> + </form> + </notification> + <notification name="GodMessage"> + [NAME] +[MESSAGE] + </notification> + <notification name="JoinGroup"> + [MESSAGE] + <form name="form"> + <button name="Join" text="Entre"/> + <button name="Decline" text="Saia"/> + <button name="Info" text="Informações"/> + </form> + </notification> + <notification name="TeleportOffered"> + [NAME] ofereceu um teletransporte para seu local: + +[MESSAGE] + <form name="form"> + <button name="Teleport" text="Teletransporte"/> + <button name="Cancel" text="Cancelar"/> + </form> + </notification> + <notification name="GotoURL"> + [MESSAGE] +[URL] + <form name="form"> + <button name="Later" text="Depois"/> + <button name="GoNow..." text="Vá agora"/> + </form> + </notification> + <notification name="OfferFriendship"> + [NAME] está lhe oferecendo sua amizade + +[MESSAGE] + +(Por definição vocês serão capazes de ver um ao outro online) + <form name="form"> + <button name="Accept" text="Aceitar"/> + <button name="Decline" text="Recusar"/> + </form> + </notification> + <notification name="OfferFriendshipNoMessage"> + [NAME] está lhe oferecendo sua amizade. + +(Por definição vocês serão capazes de ver um ao outro online) + <form name="form"> + <button name="Accept" text="Aceitar"/> + <button name="Decline" text="Recusar"/> + </form> + </notification> + <notification name="FriendshipAccepted"> + [NAME] aceitou seu convite de amizade. + </notification> + <notification name="FriendshipDeclined"> + [NAME] recusou seu convite de amizade + </notification> + <notification name="OfferCallingCard"> + [FIRST] [LAST] está oferecendo seu cartão de visita. +Isto adicionará uma anotação em seu inventário, de modo que você possa mandar rapidamente uma IM para este residente. + <form name="form"> + <button name="Accept" text="Aceitar"/> + <button name="Decline" text="Recusar"/> + </form> + </notification> + <notification name="RegionRestartMinutes"> + A região será reiniciada em [MINUTES] minutos. +Se permanecer nesta região, você será desconectado. + </notification> + <notification name="RegionRestartSeconds"> + Região será reiniciada em [SECONDS] segundos. +Se permanecer nesta região, você será desconectado. + </notification> + <notification name="LoadWebPage"> + Carregar página da web [URL]? + +[MESSAGE] + +Do objeto: [OBJECTNAME], dono: [NAME]? + <form name="form"> + <button name="Gotopage" text="Carregar"/> + <button name="Cancel" text="Cancelar"/> + </form> + </notification> + <notification name="FailedToFindWearableUnnamed"> + Falhou ao procurar [TYPE] no banco de dados. + </notification> + <notification name="FailedToFindWearable"> + Falhou ao procurar [TYPE] nomeado [DESC] no banco de dados. + </notification> + <notification name="InvalidWearable"> + O item que você está tentando vestir usa uma caracterÃstica que seu Visualizador não lê. Por favor, atualize sua versão do Second Life para vestir este item. + </notification> + <notification name="ScriptQuestion"> + '[OBJECTNAME]', um objeto pertencente a '[NAME]', gostaria de: + +[QUESTIONS] +Está OK? + <form name="form"> + <button name="Yes" text="Sim"/> + <button name="No" text="Não"/> + <button name="Mute" text="Mudo"/> + </form> + </notification> + <notification name="ScriptQuestionCaution"> + '[OBJECTNAME]', um objeto de '[NAME]', gostaria de: + +[QUESTIONS] +Se você não confia neste objeto ou em seu criador, você deveria negar o pedido. Para informações adicionais clique no botão Detalhes. + +Autorizar este pedido? + <form name="form"> + <button name="Grant" text="Autorizar"/> + <button name="Deny" text="Negar"/> + <button name="Details" text="Detalhes..."/> + </form> + </notification> + <notification name="ScriptDialog"> + [FIRST] [LAST]'s '[TITLE]' +[MESSAGE] + <form name="form"> + <button name="Ignore" text="Ignorar"/> + </form> + </notification> + <notification name="ScriptDialogGroup"> + [GROUPNAME]'s '[TITLE]' +[MESSAGE] + <form name="form"> + <button name="Ignore" text="Ignorar"/> + </form> + </notification> + <notification name="FirstBalanceIncrease"> + Você recebeu uma quantia de L$[AMOUNT]. +Objetos e outros usuários podem dar L$ a você. +Seu saldo é mostrado no canto superior direito da tela. + </notification> + <notification name="FirstBalanceDecrease"> + Você pagou L$[AMOUNT]. +O seu balanço de dinheiro está sendo mostrado no canto superior direito da tela. + </notification> + <notification name="FirstSit"> + Você está sentado. +Use as setas (ou AWSD) para mudar a visão. +Clique em 'Levantar' para levantar. + </notification> + <notification name="FirstMap"> + Clique e arraste para movimentar o mapa. +Dê um duplo clique para teletransportar-se. +Use os controles à direita para achar coisas e mostrar fundos diferentes. + </notification> + <notification name="FirstBuild"> + Você pode construir novos objetos em algumas áreas do [SECOND_LIFE]. +Use as ferramentas acima, à esquerda para construir e tente manter apertadas as teclas Ctrl ou Alt para mudar rapidamente as ferramentas. +Aperte ESC para parar de construir. + </notification> + <notification name="FirstLeftClickNoHit"> + Clicando com esquerdo, você interage com os objetos especiais. +Se o ponteiro do mouse mudar a uma mão, você pode interagir com o objeto. +Clique com o direito que será mostrado sempre um menu das ações que você pode fazer. + </notification> + <notification name="FirstTeleport"> + Esta região não permite teletransporte ponto-a-ponto. Assim, você foi teletransportado para o telehub mais próximo. +Seu destino está assinalado com um farol alto. +Siga a flecha vermelha até o farol, ou clique nela para apagar o farol. + </notification> + <notification name="FirstOverrideKeys"> + Suas chaves do movimento estão sendo seguras agora por um objeto. +Tente as teclas de setas ou AWSD para ver o que elas fazem. +Alguns objetos (como armas) requerem que você passe para mouselook para usá-los. +Pressione 'M' para fazer isto. + </notification> + <notification name="FirstAppearance"> + Você está editando sua aparência. +Para girar e ver em zoom, use as teclas de setas. +Quando terminar, aperte 'Salvar Tudo' para salvar sua aparência e sair. +Você pode editar sua aparência quantas vezes quiser. + </notification> + <notification name="FirstInventory"> + Este é o seu inventário, que contém objetos, notecards, roupas e outras coisas suas. +* Para vestir um objeto ou uma pasta completa, arraste-o para si mesmo(a). +* Para trzer um objeto ao mundo, arraste-o ao chão. +* Para ler um notecard, dê um duplo-click nele. + </notification> + <notification name="FirstSandbox"> + Esta é a região conhecida como sandbox. +Os objetos que você constrói aqui podem ser deletados depois que você deixa a área. +As sandboxes são limpas de forma periódica. +Por favor, veja a informação no alto da tela, próxima ao nome da região. +As regiões de sandbox não são comuns e são marcadas com sÃmbolos. + </notification> + <notification name="FirstFlexible"> + Este objeto tem a propriedade flexÃvel. +Objetos flexÃveis não podem ser fÃsicos e devem ser fantasmas até que a caixa de verificação seja desmarcada. + </notification> + <notification name="FirstDebugMenus"> + Você ativou o menu Avançado. +Este menu contém funcionalidades úteis para desenvolvedores debugarem o Second Life. +Para mostrar esse menu no Windows pressione Ctrl-Alt-D. No Mac pressione Cmd-Opt-Shift-D. + </notification> + <notification name="FirstSculptedPrim"> + Você está editando uma primitiva esculpida. +Primitivas esculpidas requerem uma textura especial para especificar suas formas. +Você encontrará exemplos dessas texturas na Biblioteca do Inventário. + </notification> + <notification name="FirstMedia"> + Você começou a tocar uma mÃdia. MÃdias podem ser autorizadas a iniciar automaticamente se você assim escolher na janela de Preferências, sob Ãudio/VÃdeo. Atente para o risco de segurança que pode haver ao acessar websites de mÃdia que você não confia. + </notification> + <notification name="MaxListSelectMessage"> + Você pode selecionar até [MAX_SELECT] itens desta lista. + </notification> + <notification name="VoiceInviteP2P"> + [NAME] está lhe convidando para uma conversa com voz. +Clique Aceitar para atender, ou Recusar para recusar o convite. Clique Mudo para calar quem está chamando. + <form name="form"> + <button name="Accept" text="Aceitar"/> + <button name="Decline" text="Recusar"/> + <button name="Mute" text="Mudo"/> + </form> + </notification> + <notification name="AutoUnmuteByIM"> + [FIRST] [LAST] recebeu uma Mensagem Instantânea sua e automaticamente não está mais no modo mudo. + </notification> + <notification name="AutoUnmuteByMoney"> + [FIRST] [LAST] recebeu pagamento seu e automaticamente não está mais no modo mudo. + </notification> + <notification name="AutoUnmuteByInventory"> + [FIRST] [LAST] recebeu inventário seu e automaticamente não está mais mudo. + </notification> + <notification name="VoiceInviteGroup"> + [NAME] juntou-se a uma conversa com voz do grupo [GROUP]. +Clique Aceitar para atender, ou Recusar para recusar o convite. Clique Mudo para calar quem está chamando. + <form name="form"> + <button name="Accept" text="Aceitar"/> + <button name="Decline" text="Recusar"/> + <button name="Mute" text="Mudo"/> + </form> + </notification> + <notification name="VoiceInviteAdHoc"> + [NAME] juntou-se a uma chamada de Conferência com voz... +Clique Aceitar para juntar-se à chamada ou Recusar para recusar o convite. Clique Mudo para calar este usuário. + <form name="form"> + <button name="Accept" text="Aceitar"/> + <button name="Decline" text="Recusar"/> + <button name="Mute" text="Mudo"/> + </form> + </notification> + <notification name="InviteAdHoc"> + [NAME] está lhe convidando para uma conversa em conferência... + Clique Aceitar para se juntar à conversa, ou Recusar para recusar o convite. Clique Mudo para calar este usuário. + <form name="form"> + <button name="Accept" text="Aceitar"/> + <button name="Decline" text="Recusar"/> + <button name="Mute" text="Mudo"/> + </form> + </notification> + <notification name="VoiceChannelFull"> + A chamada de voz a qual você está tentando juntar-se, [VOICE_CHANNEL_NAME], atingiu sua máxima capacidade. Favor tentar novamente mais tarde. + </notification> + <notification name="ProximalVoiceChannelFull"> + Desculpe-nos. Esta área atingiu seu limite de capacidade para conversas com voz. Favor tentar usar voz em outra área. + </notification> + <notification name="VoiceChannelDisconnected"> + Você foi desconectado de [VOICE_CHANNEL_NAME]. Voce será reconectado agora à Conversa com voz local. + </notification> + <notification name="VoiceChannelDisconnectedP2P"> + [VOICE_CHANNEL_NAME] desligou a chamada. Voce será reconectado agora à Conversa com voz local. + </notification> + <notification name="P2PCallDeclined"> + [VOICE_CHANNEL_NAME] recusou sua chamada. Voce será reconectado agora à Conversa com voz local. + </notification> + <notification name="P2PCallNoAnswer"> + [VOICE_CHANNEL_NAME] não está disponÃvel para aceitar sua chamada. Voce será reconectado agora à Conversa com voz local. + </notification> + <notification name="VoiceChannelJoinFailed"> + Falha na conexão com [VOICE_CHANNEL_NAME], tente novamente mais tarde. Voce será reconectado agora à Conversa com voz local. + </notification> + <notification name="VoiceLoginRetry"> + Estamos criando uma canal de voz para você. Isto pode levar até um minuto. + </notification> + <notification name="Cannot enter parcel: not a group member"> + Você não pode entrar nessa terra, você não é membro do grupo autorizado. + </notification> + <notification name="Cannot enter parcel: banned"> + Você não pode entrar nessa terra, você foi banido. + </notification> + <notification name="Cannot enter parcel: not on access list"> + Você não pode entrar nessa terra, você não está na lista de acesso. + </notification> + <notification name="VoiceNotAllowed"> + Você não tem permissão para se conectar à conversa com voz de [VOICE_CHANNEL_NAME]. + </notification> + <notification name="VoiceCallGenericError"> + Ocorreu um erro enquanto você tentava se conectar à conversa de voz de [VOICE_CHANNEL_NAME]. Favor tentar novamente mais tarde. + </notification> + <notification name="ServerVersionChanged"> + A região em que você entrou está rodando uma versão diferente de simulador. Clique aqui para mais detalhes. + </notification> + <notification name="UnableToOpenCommandURL"> + A URL que vocÊ clicou não pode ser aberta no navegador web. + </notification> + <global name="UnsupportedCPU"> + - A velocidade da sua CPU não suporta os requisitos mÃnimos exigidos. + </global> + <global name="UnsupportedGLRequirements"> + Você não parece ter os requisitos de hardware recomendados para rodar o Second Life. O Second Life exige uma placa gráfica OpenGL que tem apoio a multi- texturas. Se este for o caso, você pode se certificar de que tem os drivers mais recentes para sua placa gráfica, e os patches e pacotes de serviços para seu sistema operacional. + +Se continuar com problemas, por favor visite: http://www.secondlife.com/support + </global> + <global name="UnsupportedCPUAmount"> + 796 + </global> + <global name="UnsupportedRAMAmount"> + 510 + </global> + <global name="UnsupportedGPU"> + - A sua placa de vÃdeo não atende os requisitos mÃnimos exigidos. + </global> + <global name="UnsupportedRAM"> + - A memória do seu sistema não suporta os requisitos mÃnimos exigidos. + </global> + <global name="PermYes"> + Sim + </global> + <global name="PermNo"> + Não + </global> +</notifications> diff --git a/indra/newview/skins/default/xui/pt/panel_group_general.xml b/indra/newview/skins/default/xui/pt/panel_group_general.xml index 9eba44ba61df71a251d96ee7af689b48f34d5f10..f4941eabd9796557214d5433b976b616bff1bad4 100644 --- a/indra/newview/skins/default/xui/pt/panel_group_general.xml +++ b/indra/newview/skins/default/xui/pt/panel_group_general.xml @@ -45,7 +45,17 @@ <check_box label="Adesão aberta" name="open_enrollement" tool_tip="Definir se este grupo permite que novos membros entrem sem serem convidados"/> <check_box label="Taxa de adesão: L$" name="check_enrollment_fee" tool_tip="Define se é necessária uma taxa de adesão para se unir ao grupo."/> <spinner name="spin_enrollment_fee" tool_tip="Os novos membros devem pagar esta taxa para se unir ao grupo quando a Taxa de Adesão está marcada."/> - + <combo_box name="group_mature_check" tool_tip="Define se a informação do seu grupo é considerada mature."> + <combo_item name="select_mature"> + - Selecionar Maturidade - + </combo_item> + <combo_item name="mature"> + Conteúdo Mature + </combo_item> + <combo_item name="pg"> + Conteúdo PG + </combo_item> + </combo_box> <panel name="title_container"> <text name="active_title_label"> Meu tÃtulo ativo diff --git a/indra/newview/skins/default/xui/pt/panel_group_invite.xml b/indra/newview/skins/default/xui/pt/panel_group_invite.xml index f34fa1c60eca78ea5b8e9e64281a808d1b496dca..e9c7bab3dbea24377387b608a5d51d4a1c39a645 100644 --- a/indra/newview/skins/default/xui/pt/panel_group_invite.xml +++ b/indra/newview/skins/default/xui/pt/panel_group_invite.xml @@ -1,11 +1,11 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Convidar um membro" name="invite_panel"> <text name="help_text"> - Você pode selecionar múltiplos residentes -para convidar ao seu grupo. Clique -'Abra o Selecionador de Pessoas' para iniciar. + Voce pode selecionar vários residentes +para convidar ao seu grupo. Clique 'Abrir +Seletor de Residente' para iniciar. </text> - <button label="Abrir selecionador de pessoas" name="add_button" tool_tip=""/> + <button label="Abrir Seletor de Residente" name="add_button" tool_tip=""/> <name_list name="invitee_list" tool_tip="Mantenha apertada a tecla Control e clique nos nomes dos residentes para uma seleção múltipla."/> <button label="Remove Selected from List" name="remove_button" tool_tip="Remove os residentes selecionados acima da lista de convite."/> <text name="role_text"> diff --git a/indra/newview/skins/default/xui/pt/panel_group_land_money.xml b/indra/newview/skins/default/xui/pt/panel_group_land_money.xml index 59a8f8f46d5d9bd1fa771eefca6a01c43090e546..f5e96869d7c1dc4987b1be10c891aa91c7fd1da4 100644 --- a/indra/newview/skins/default/xui/pt/panel_group_land_money.xml +++ b/indra/newview/skins/default/xui/pt/panel_group_land_money.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Terra & L$" name="land_money_tab"> <string name="help_text"> - Lotes pertencentes ao grupo são listados com detalhes de contribuição. Um aviso aparece até que o total de Terras em Uso seja menor ou igual ao Total de Contribuições. As abas de Planejamento, Detalhes e Vendas fornecem informações sobre as finanças do grupo. + Lotes pertencentes ao grupo são listados adiante, com os detalhes de contribuição. Um aviso aparece até que o Total de Terra em Uso seja menor ou igual à Contribuição Total. As abas de Planejamento, Detalhes e Vendas fornecem informações sobre as finanças do grupo. </string> <button label="?" name="help_button"/> <string name="cant_view_group_land_text"> @@ -19,6 +19,7 @@ <scroll_list name="group_parcel_list"> <column label="Nome do Lote" name="name"/> <column label="Região" name="location"/> + <column label="Tipo" name="type"/> <column label="Ãrea" name="area"/> </scroll_list> <button label="Mostrar no Mapa" label_selected="Mostrar no Mapa" name="map_button"/> @@ -56,6 +57,11 @@ Grupo L$ </text> <tab_container name="group_money_tab_container"> + <panel label="Planejamento" name="group_money_planning_tab"> + <text_editor name="group_money_planning_text"> + Computando.. + </text_editor> + </panel> <panel label="Detalhes" name="group_money_details_tab"> <text_editor name="group_money_details_text"> Computando... diff --git a/indra/newview/skins/default/xui/pt/panel_group_roles.xml b/indra/newview/skins/default/xui/pt/panel_group_roles.xml index 5371355e9bc04b1f3ecda96f342be7be9b8a5425..32ed839bd8b6d1fb425b063e0313dfb844649538 100644 --- a/indra/newview/skins/default/xui/pt/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/pt/panel_group_roles.xml @@ -50,7 +50,7 @@ Estes ajustes podem ser facilmente customizados para uma flexibilidade e organiz <column label="Tarifa doada" name="donated"/> <column label="Último login" name="online"/> </name_list> - <button label="Convidar nova pessoa..." name="member_invite"/> + <button label="Convidar Novo Membro ..." name="member_invite"/> <button label="Ejetar do Grupo" name="member_eject"/> <string name="help_text"> Você pode adicionar ou remover as funções designadas aos membros. Selecione vários membros, segurando a tecla Ctrl e clicando em seus nomes. diff --git a/indra/newview/skins/default/xui/pt/panel_groups.xml b/indra/newview/skins/default/xui/pt/panel_groups.xml index 50d1dd3745e649f3de52df7910504ce4888205cc..8a886ef8b1c7f99446f9aaac690f3802c12ec1b5 100644 --- a/indra/newview/skins/default/xui/pt/panel_groups.xml +++ b/indra/newview/skins/default/xui/pt/panel_groups.xml @@ -1,16 +1,16 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="groups"> - <text name="groupdesc"> - Seu grupo ativo atual es'ta mostrado em negrito. - </text> - <text name="groupcount"> - Você pertence a [COUNT] grupos (de no máximo [MAX]). -aximo - </text> - <button label="MI/Chamada" name="IM" tool_tip="Abrir sessão de Mensagem Instantânea"/> - <button label="Informações" name="Info"/> - <button label="Ativar" name="Activate"/> - <button label="Deixar" name="Leave"/> - <button label="Criar..." name="Create"/> - <button label="Buscar..." name="Search..."/> -</panel> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="groups"> + <text name="groupdesc"> + Seu grupo ativo atual es'ta mostrado em negrito. + </text> + <text name="groupcount"> + Você pertence a [COUNT] grupos (de no máximo [MAX]). +aximo + </text> + <button label="MI/Chamada" name="IM" tool_tip="Abrir sessão de Mensagem Instantânea"/> + <button label="Informações" name="Info"/> + <button label="Ativar" name="Activate"/> + <button label="Deixar" name="Leave"/> + <button label="Criar..." name="Create"/> + <button label="Buscar..." name="Search..."/> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_login.xml b/indra/newview/skins/default/xui/pt/panel_login.xml index 16129747160f9af75d9baeadabc2e9aa9474e216..9f9b80912d5a63e73392c282b7611414c2cc4c88 100644 --- a/indra/newview/skins/default/xui/pt/panel_login.xml +++ b/indra/newview/skins/default/xui/pt/panel_login.xml @@ -10,7 +10,7 @@ Senha: </text> <text name="start_location_text"> - Localização inicial: + Posição inicial: </text> <combo_box name="start_location_combo"> <combo_box.item name="MyHome" label="Minha casa" /> @@ -22,7 +22,7 @@ <text name="create_new_account_text"> Registrar-se para uma conta </text> - <text name="forgot_password_text"> + <text name="forgot_password_text" left="-240" width="230"> Esqueceu seu nome de usuário ou senha? </text> <text name="channel_text"> diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml b/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml index 8ae635bbaeb280f4ad8d37b5d27e13679256f5fc..b32e1fb3e15560a5113bffd2689e3056548cee47 100644 --- a/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml @@ -5,15 +5,9 @@ do Chat: </text> <radio_group name="chat_font_size"> - <radio_item name="radio"> - Pequeno - </radio_item> - <radio_item name="radio2"> - Médio - </radio_item> - <radio_item name="radio3"> - Grande - </radio_item> + <radio_item name="radio" label="Pequeno" /> + <radio_item name="radio2" label="Médio" /> + <radio_item name="radio3" label="Grande" /> </radio_group> <text length="1" name="text_box2" type="string"> Cor do Chat: @@ -34,7 +28,7 @@ do Chat: <text length="1" name="text_box3" type="string"> Console do Chat: </text> - <spinner label="Ocultar Chat depois" label_width="112" name="fade_chat_time" width="162"/> + <spinner label="Ocultar Chat depois" label_width="108" name="fade_chat_time" width="160"/> <text left="310" length="1" name="text_box4" type="string"> (segundos) </text> diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_general.xml b/indra/newview/skins/default/xui/pt/panel_preferences_general.xml index 4ad795ffc86ae50d3ded7d4c7c2cc725fb69a029..d82330cc785da380c6305c857b9bc6b998273c92 100644 --- a/indra/newview/skins/default/xui/pt/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/pt/panel_preferences_general.xml @@ -27,10 +27,28 @@ </text> <check_box label="Usar escala independente da resolução" name="ui_auto_scale"/> <spinner label="Tempo para ficar Ausente:" name="afk_timeout_spinner"/> - <check_box label="Rotacionar Mini-Mapa" name="rotate_mini_map_checkbox"/> <check_box label="Avisar quando receber ou gastar Linden dollars (L$)" name="notify_money_change_checkbox"/> - <check_box label="Usar a paleta de cores padrão do sistema" name="use_system_color_picker_checkbox" tool_tip="Usar a paleta de cores padrão do sistema ao invés de uma feita dentro de Second Life."/> - <check_box label="Mostrar o painel de busca na barra sobreposta" name="show_search_panel" tool_tip="Mostrar o painel de busca embutido."/> + <text name="maturity_desired_label" bottom="-312"> + Classificação: + </text> + <text name="maturity_desired_prompt" bottom="-312"> + Eu quero acessar +conteúdo classificado: + </text> + <combo_box name="maturity_desired_combobox" bottom="-330" left="278"> + <combo_item name="Desired_Adult"> + PG, Mature e Adult + </combo_item> + <combo_item name="Desired_Mature"> + PG e Mature + </combo_item> + <combo_item name="Desired_PG"> + apenas PG + </combo_item> + </combo_box> + <text name="maturity_desired_textbox" bottom="-324" left="278"> + apenas PG + </text> <text length="1" name="start_location_textbox" type="string"> Posição Inicial: </text> @@ -73,6 +91,21 @@ <combo_box.item name="Chinese" label="䏿–‡ (简体) (Chinês) - Beta"/> <combo_box.item name="(Japanese)" label="日本語 (Japonês) - Beta"/> <combo_box.item name="(Korean)" label="한êµì–´ (Coreano) - Beta"/> + <combo_item name="Italian"> + Italiano - Beta + </combo_item> + <combo_item name="Dutch"> + Nederlands (Holandês) - Beta + </combo_item> + </combo_item> + <combo_item name="Russian"> + РуÑÑкий (Russo) - Beta + </combo_item> + <combo_item name="Turkish"> + Türkçe (Turco) - Beta + </combo_item> + <combo_item name="Ukrainian"> + УкраїнÑька (Ucraniano) - Beta </combo_box> <check_box label="Compartilhar a linguagem com objetos" name="language_is_public" tool_tip="Isto permite que os objetos no mundo conheçam sua linguagem preferida."/> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml index a14ad6d4de67999cf601ed14124128830ae8b81b..ec46c8b99ccbef072111e25fc16ccad27ff1b49b 100644 --- a/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml @@ -68,18 +68,10 @@ rápido Detalhes de Reflexão: </text> <radio_group name="ReflectionDetailRadio"> - <radio_item name="0"> - Terreno e Ãrvores - </radio_item> - <radio_item name="1"> - Todos os objetos estáticos - </radio_item> - <radio_item name="2"> - Todos os avatares e Objetos - </radio_item> - <radio_item name="3"> - Tudo - </radio_item> + <radio_item name="0" label="Terreno e Ãrvores" /> + <radio_item name="1" label="Todos os objetos estáticos" /> + <radio_item name="2" label="Todos os avatares e Objetos" /> + <radio_item name="3" label="Tudo" /> </radio_group> <text name="AvatarRenderingText"> Renderização de Avatar: @@ -93,18 +85,18 @@ rápido <text name="DrawDistanceMeterText2"> m </text> - <slider label="Distancia de desenho:" label_width="146" name="DrawDistance" width="255"/> - <slider label="Contador máx. de partÃculas:" label_width="146" name="MaxParticleCount" width="262"/> - <slider label="Qualidade de Pós-processamento:" label_width="146" name="RenderPostProcess" width="223"/> + <slider label="Distancia de desenho:" label_width="150" name="DrawDistance" width="255"/> + <slider label="Contador máx. de partÃculas:" label_width="150" name="MaxParticleCount" width="262"/> + <slider label="Qualidade de Pós-processamento:" label_width="178" name="RenderPostProcess" width="223"/> <text name="MeshDetailText"> Detalhes de Malha: </text> - <slider label="Objetos:" name="ObjectMeshDetail"/> - <slider label="Primitivas Flexiveis:" name="FlexibleMeshDetail"/> - <slider label="Ãrvores:" name="TreeMeshDetail"/> - <slider label="Avatares:" name="AvatarMeshDetail"/> - <slider label="Terreno:" name="TerrainMeshDetail"/> - <slider label="Céu:" name="SkyMeshDetail"/> + <slider label=" Objetos:" name="ObjectMeshDetail"/> + <slider label=" Primitivas Flexiveis:" name="FlexibleMeshDetail"/> + <slider label=" Ãrvores:" name="TreeMeshDetail"/> + <slider label=" Avatares:" name="AvatarMeshDetail"/> + <slider label=" Terreno:" name="TerrainMeshDetail"/> + <slider label=" Céu:" name="SkyMeshDetail"/> <text name="PostProcessText"> Baixo </text> @@ -130,25 +122,17 @@ rápido Detalhes de Iluminação: </text> <radio_group name="LightingDetailRadio"> - <radio_item name="SunMoon"> - Sol e Lua apenas - </radio_item> - <radio_item name="LocalLights"> - Luzes locais nas proximidades - </radio_item> + <radio_item name="SunMoon" label="Sol e Lua apenas" /> + <radio_item name="LocalLights" label="Luzes locais nas proximidades" /> </radio_group> <text name="TerrainDetailText"> Detalhe do Terreno: </text> <radio_group left_delta="45" name="TerrainDetailRadio" width="276"> - <radio_item name="0"> - Baixo - </radio_item> - <radio_item name="2"> - Alto - </radio_item> + <radio_item name="0" label="Baixo" /> + <radio_item name="2" label="Alto" /> </radio_group> - <button label="Configurações Recomendadas" name="Defaults"/> + <button label="Configurações Recomendadas" name="Defaults" width="190" left="110"/> <button label="Opções de Hardware" label_selected="Opções de Hardware" name="GraphicsHardwareButton"/> <string name="resolution_format"> [RES_X] x [RES_Y] diff --git a/indra/newview/skins/default/xui/pt/panel_region_covenant.xml b/indra/newview/skins/default/xui/pt/panel_region_covenant.xml index f70e975bd43818c585adaf86c13fb7b837bf6b20..6218e4eafbfa06da70c6e02f07561dde1d5abf65 100644 --- a/indra/newview/skins/default/xui/pt/panel_region_covenant.xml +++ b/indra/newview/skins/default/xui/pt/panel_region_covenant.xml @@ -1,50 +1,80 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Corretagem" name="Covenant"> + <text name="estate_section_lbl"> + Propriedade: + </text> + <text bottom_delta="-19" name="estate_name_lbl"> + Nome: + </text> + <text name="estate_name_text"> + mainland + </text> + <text bottom_delta="-19" name="estate_owner_lbl"> + Dono: + </text> + <text name="estate_owner_text"> + (nenhum) + </text> + <text name="estate_cov_lbl"> + Corretagem: + </text> + <text name="covenant_timestamp_text"> + Última modificação: Quarta, 31 de dezembro de 1969 à s 16:00:00 horas + </text> + <button label="?" name="covenant_help"/> + <text_editor name="covenant_editor"> + Não há nenhuma regra fornecida para esta Propriedade. + </text_editor> + <button label="Resetar" name="reset_covenant"/> <text bottom="-25" name="covenant_help_text"> - As mudanças nas informações de corretagem serão mostradas em todos os lotes da propriedade. + As mudanças das regras serão mostradas em todos os lotes da propriedade. </text> - <text bottom_delta="-31" name="region_name_lbl"> + <text name="covenant_instructions"> + Arraste e solte um notecard, para mudar as Regras desta Propriedade. + </text> + <text name="region_section_lbl"> Região: </text> + <text bottom_delta="-31" name="region_name_lbl"> + Nome: + </text> <text name="region_name_text"> - (desconhecido) + leyla </text> - <text bottom_delta="-19" name="estate_name_lbl"> - Propriedade: + <text name="region_landtype_lbl"> + Tipo: </text> - <text name="estate_name_text"> - (desconhecido) + <text name="region_landtype_text"> + Continente / Terra </text> - <text name="covenent_instructions"> - Arraste e solte um notecard para alterar a corretagem desta propriedade. + <text name="region_maturity_lbl"> + Classificação: </text> - <button label="?" name="covenant_help"/> - <button label="Resetar" name="reset_covenant"/> - <text bottom_delta="-19" name="estate_owner_lbl"> - Dono da propriedade: + <text name="region_maturity_text"> + Adult </text> - <text name="estate_owner_text"> - (desconhecido) + <text name="resellable_lbl"> + Revender: </text> <text name="resellable_clause"> - Terras compradas nesta região podem ou não, ser revendidas. + Terra nesta região não pode ser revendida. + </text> + <text name="changeable_lbl"> + Subdividir: </text> <text name="changeable_clause"> - Terras compradas nesta região podem ou não, ser unidas ou subdivididas. + Terra nesta região não pode ser unida/sub-dividida. </text> - <text_editor name="covenant_editor"> - Carregando... - </text_editor> - <text name="can_resell"> + <string name="can_resell"> Terras compradas na região poderão ser revendidas. - </text> - <text name="can_not_resell"> + </string> + <string name="can_not_resell"> Terras compradas na região não poderão ser revendidas. - </text> - <text name="can_change"> + </string> + <string name="can_change"> O terreno comprado nesta região pode ser compartilhado ou subdividido. - </text> - <text name="can_not_change"> + </string> + <string name="can_not_change"> O terreno comprado nesta região não pode ser compartilhado ou subdividido. - </text> + </string> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_region_general.xml b/indra/newview/skins/default/xui/pt/panel_region_general.xml index c04a5f001ee93f1d0e90f677786ea2d223ce59e6..6873d4ac98f75cdab6563eb728f972e3a5382491 100644 --- a/indra/newview/skins/default/xui/pt/panel_region_general.xml +++ b/indra/newview/skins/default/xui/pt/panel_region_general.xml @@ -12,6 +12,12 @@ <text name="version_channel_text"> desconhecido </text> + <text name="region_type_lbl"> + Tipo: + </text> + <text name="region_type"> + desconhecido + </text> <check_box label="Bloquear Terraform" name="block_terraform_check"/> <button label="?" name="terraform_help"/> <check_box label="Bloquear Vôo" name="block_fly_check"/> @@ -31,10 +37,19 @@ <spinner label="Objeto Bonus" name="object_bonus_spin"/> <button label="?" name="object_bonus_help"/> <text label="Maturidade" name="access_text"> - Maturidade: + Classificação: </text> - - + <combo_box label="Mature" name="access_combo"> + <combo_item name="Adult"> + Adult + </combo_item> + <combo_item name="Mature"> + Mature + </combo_item> + <combo_item name="PG"> + PG + </combo_item> + </combo_box> <button label="?" name="access_help"/> <button label="Aplicar" name="apply_btn"/> <button label="Teletransportar um usuário para Casa..." name="kick_btn"/> diff --git a/indra/newview/skins/default/xui/pt/strings.xml b/indra/newview/skins/default/xui/pt/strings.xml index d54b562e5950c55c648f9dacf842a1794b5aab6d..8542fc6c0e7056bf37feec1cc0c388eb45974da3 100644 --- a/indra/newview/skins/default/xui/pt/strings.xml +++ b/indra/newview/skins/default/xui/pt/strings.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <!-- This file contains strings that used to be hardcoded in the source. - It is only for those strings which don't belong in a floater. + It is only for those strings which do not belong in a floater. For example, the strings used in avatar chat bubbles, and strings that are returned from one component and may appear in many places--> <strings> @@ -55,9 +55,6 @@ <string name="LoginDownloadingClothing"> Baixando roupas... </string> - <string name="LoginFailedNoNetwork"> - Erro de Rede: Não foi possÃvel estabelecer uma conexão. Por favor, verifique sua conexão de rede. - </string> <string name="AgentLostConnection"> Esta região pode estar passando por problemas. Por favor, verifique sua conexão com a internet. </string> @@ -184,6 +181,9 @@ <string name="AssetErrorCircuitGone"> Circuito caiu </string> + <string name="AssetErrorPriceMismatch"> + Visualizador e servidor não concordam no preço + </string> <string name="AssetErrorUnknownStatus"> Status desconhecido </string> @@ -418,4 +418,69 @@ <string name="shout"> grita: </string> + <string name="SIM_ACCESS_PG"> + PG + </string> + <string name="SIM_ACCESS_MATURE"> + Mature + </string> + <string name="SIM_ACCESS_ADULT"> + Adult + </string> + <string name="SIM_ACCESS_DOWN"> + Desconectado + </string> + <string name="SIM_ACCESS_MIN"> + Desconhecido + </string> + <string name="land_type_unknown"> + (desconhecido) + </string> + <string name="covenant_never_modified">Última modificação: (nunca)</string> + <string name="covenant_modified">Última modificação: </string> + <string name="all_files"> + Todos os Arquivos + </string> + <string name="sound_files"> + Sons + </string> + <string name="animation_files"> + Animações + </string> + <string name="image_files"> + Imagens + </string> + <string name="save_file_verb"> + Salvar + </string> + <string name="load_file_verb"> + Carregar + </string> + <string name="targa_image_files"> + Imagens Targa + </string> + <string name="bitmap_image_files"> + Imagens Bitmap + </string> + <string name="avi_movie_file"> + Arquivo de filme AVI + </string> + <string name="xaf_animation_file"> + Arquivo de Animação XAF + </string> + <string name="xml_file"> + Arquivo XML + </string> + <string name="dot_raw_file"> + Arquivo RAW + </string> + <string name="compressed_image_files"> + Imagens Compactadas + </string> + <string name="load_files"> + Carregar Arquivos + </string> + <string name="choose_the_directory"> + Escolher Diretório + </string> </strings> diff --git a/indra/newview/skins/paths.xml b/indra/newview/skins/paths.xml index 949cc145d9c4b01f6d2043a94feb8fcc96a36ed3..3b91a904b0f2aab15956fc4051ec8062712b5c69 100644 --- a/indra/newview/skins/paths.xml +++ b/indra/newview/skins/paths.xml @@ -1,4 +1,4 @@ <paths> - <directory>xui/en-us</directory> + <directory>xui/en</directory> <directory>xui/[LANGUAGE]</directory> </paths> \ No newline at end of file diff --git a/indra/newview/tests/llcapabilitylistener_test.cpp b/indra/newview/tests/llcapabilitylistener_test.cpp index 90cc8678524e365b44efb1b7086a8dcdd0f9eeb6..b965379c9c02f19c7d7abbea951ae080795c476b 100644 --- a/indra/newview/tests/llcapabilitylistener_test.cpp +++ b/indra/newview/tests/llcapabilitylistener_test.cpp @@ -4,7 +4,7 @@ * @date 2008-12-31 * @brief Test for llcapabilitylistener.cpp. * - * $LicenseInfo:firstyear=2008&license=internal$ + * $LicenseInfo:firstyear=2008&license=viewergpl$ * Copyright (c) 2008, Linden Research, Inc. * $/LicenseInfo$ */ diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 583dba4fd931434ec5dfbbdca7fd4c29d845bfa5..2838ff6335495f901b7be475c49a58f7d01f6a23 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -256,9 +256,9 @@ def construct(self): dst="updater.exe") # For google-perftools tcmalloc allocator. - #if self.prefix(src="../../libraries/i686-win32/lib/release", dst=""): - # self.path("libtcmalloc_minimal.dll") - # self.end_prefix() + if self.prefix(src="../../libraries/i686-win32/lib/release", dst=""): + self.path("libtcmalloc_minimal.dll") + self.end_prefix() def nsi_file_commands(self, install=True): @@ -439,6 +439,18 @@ def construct(self): self.path("German.lproj") self.path("Japanese.lproj") self.path("Korean.lproj") + self.path("da.lproj") + self.path("es.lproj") + self.path("fr.lproj") + self.path("hu.lproj") + self.path("it.lproj") + self.path("nl.lproj") + self.path("pl.lproj") + self.path("pt.lproj") + self.path("ru.lproj") + self.path("tr.lproj") + self.path("uk.lproj") + self.path("zh-Hans.lproj") # SLVoice and vivox lols self.path("vivox-runtime/universal-darwin/libalut.dylib", "libalut.dylib") @@ -656,7 +668,7 @@ def construct(self): self.path("app_settings/mozilla-runtime-linux-i686") if self.prefix("../../libraries/i686-linux/lib_release_client", dst="lib"): - self.path("libkdu_v42R.so", "libkdu.so") + #self.path("libkdu_v42R.so", "libkdu.so") self.path("libfmod-3.75.so") self.path("libapr-1.so.0") self.path("libaprutil-1.so.0") diff --git a/indra/test/CMakeLists.txt b/indra/test/CMakeLists.txt index 02dd01e1b0d444698b1abe8907791f10c46112c6..42a32f95b1aefa755a1b4bc522fb41369349cc16 100644 --- a/indra/test/CMakeLists.txt +++ b/indra/test/CMakeLists.txt @@ -35,8 +35,8 @@ set(test_SOURCE_FILES llblowfish_tut.cpp llbuffer_tut.cpp lldate_tut.cpp - lldoubledispatch_tut.cpp lldependencies_tut.cpp + lldoubledispatch_tut.cpp llerror_tut.cpp llevents_tut.cpp llhost_tut.cpp @@ -130,6 +130,7 @@ target_link_libraries(test ${BOOST_PROGRAM_OPTIONS_LIBRARY} ${BOOST_REGEX_LIBRARY} ${DL_LIBRARY} + ${GOOGLE_PERFTOOLS_LIBRARIES} ) if (WINDOWS) diff --git a/indra/test/llhttpdate_tut.cpp b/indra/test/llhttpdate_tut.cpp index b764696daecdab0320e0f26e0b46a95f05d825a7..b9733dc0304b0cc2599faa4ba0ee0720c958624e 100644 --- a/indra/test/llhttpdate_tut.cpp +++ b/indra/test/llhttpdate_tut.cpp @@ -50,6 +50,7 @@ namespace tut template<> template<> void httpdate_object::test<1>() { + static std::string epoch_expected = "Thursday, 01 Jan 1970 00:00:00 GMT" ; ensure("Check Epoch in RFC 1123", ( epoch_expected == some_date.asRFC1123())); } @@ -57,6 +58,7 @@ namespace tut template<> template<> void httpdate_object::test<2>() { + static std::string expected = "Wednesday, 18 Jul 2007 22:17:24 GMT" ; some_date = LLDate(1184797044.037586); ensure("Check some timestamp in RFC 1123", ( expected == some_date.asRFC1123())); @@ -66,6 +68,7 @@ namespace tut template<> template<> void httpdate_object::test<3>() { + //F64 sometime = LLFrameTimer::getTotalSeconds(); time_t sometime; time(&sometime); diff --git a/indra/win_crash_logger/CMakeLists.txt b/indra/win_crash_logger/CMakeLists.txt index 27022680b861e9d8eb5e5b43742da74e3784a250..0bd59f09908e981e6e12195e17a9cdf546e096a1 100644 --- a/indra/win_crash_logger/CMakeLists.txt +++ b/indra/win_crash_logger/CMakeLists.txt @@ -72,6 +72,7 @@ target_link_libraries(windows-crash-logger ${LLCOMMON_LIBRARIES} ${WINDOWS_LIBRARIES} ${DXGUID_LIBRARY} + ${GOOGLE_PERFTOOLS_LIBRARIES} user32 gdi32 ole32 diff --git a/indra/win_updater/updater.cpp b/indra/win_updater/updater.cpp index e7adaf356bc80aad6b61d9b9607fe04ace24b9c4..3937351d73bde604ff3d81dd74339aa3c5ba4d46 100644 --- a/indra/win_updater/updater.cpp +++ b/indra/win_updater/updater.cpp @@ -42,6 +42,11 @@ #include <windows.h> #include <wininet.h> #include <stdio.h> +#include <string> +#include <iostream> +#include <stdexcept> +#include <sstream> +#include <fstream> #define BUFSIZE 8192 @@ -52,13 +57,16 @@ WCHAR gProgress[256]; char* gUpdateURL = NULL; #if _DEBUG -FILE* logfile = 0; +std::ofstream logfile; +#define DEBUG(expr) logfile << expr << std::endl +#else +#define DEBUG(expr) /**/ #endif -char* wchars_to_utf8chars(WCHAR* in_chars) +char* wchars_to_utf8chars(const WCHAR* in_chars) { int tlen = 0; - WCHAR* twc = in_chars; + const WCHAR* twc = in_chars; while (*twc++ != 0) { tlen++; @@ -81,103 +89,128 @@ char* wchars_to_utf8chars(WCHAR* in_chars) return res; } -int WINAPI get_url_into_file(WCHAR *uri, char *path, int *cancelled) +class Fetcher +{ +public: + Fetcher(const std::wstring& uri) + { + // These actions are broken out as separate methods not because it + // makes the code clearer, but to avoid triggering AntiVir and + // McAfee-GW-Edition virus scanners (DEV-31680). + mInet = openInet(); + mDownload = openUrl(uri); + } + + ~Fetcher() + { + DEBUG("Calling InternetCloseHandle"); + InternetCloseHandle(mDownload); + InternetCloseHandle(mInet); + } + + unsigned long read(char* buffer, size_t bufflen) const; + + DWORD getTotalBytes() const + { + DWORD totalBytes; + DWORD sizeof_total_bytes = sizeof(totalBytes); + HttpQueryInfo(mDownload, HTTP_QUERY_CONTENT_LENGTH | HTTP_QUERY_FLAG_NUMBER, + &totalBytes, &sizeof_total_bytes, NULL); + return totalBytes; + } + + struct InetError: public std::runtime_error + { + InetError(const std::string& what): std::runtime_error(what) {} + }; + +private: + // We test results from a number of different MS functions with different + // return types -- but the common characteristic is that 0 (i.e. (! result)) + // means an error of some kind. + template <typename RESULT> + static RESULT check(const std::string& desc, RESULT result) + { + if (result) + { + // success, show caller + return result; + } + DWORD err = GetLastError(); + std::ostringstream out; + out << desc << " Failed: " << err; + DEBUG(out.str()); + throw InetError(out.str()); + } + + HINTERNET openUrl(const std::wstring& uri) const; + HINTERNET openInet() const; + + HINTERNET mInet, mDownload; +}; + +HINTERNET Fetcher::openInet() const +{ + DEBUG("Calling InternetOpen"); + // Init wininet subsystem + return check("InternetOpen", + InternetOpen(L"LindenUpdater", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0)); +} + +HINTERNET Fetcher::openUrl(const std::wstring& uri) const +{ + DEBUG("Calling InternetOpenUrl: " << wchars_to_utf8chars(uri.c_str())); + return check("InternetOpenUrl", + InternetOpenUrl(mInet, uri.c_str(), NULL, 0, INTERNET_FLAG_NEED_FILE, NULL)); +} + +unsigned long Fetcher::read(char* buffer, size_t bufflen) const +{ + unsigned long bytes_read = 0; + DEBUG("Calling InternetReadFile"); + check("InternetReadFile", + InternetReadFile(mDownload, buffer, bufflen, &bytes_read)); + return bytes_read; +} + +int WINAPI get_url_into_file(const std::wstring& uri, const std::string& path, int *cancelled) { int success = FALSE; *cancelled = FALSE; - HINTERNET hinet, hdownload; - char data[BUFSIZE]; /* Flawfinder: ignore */ - unsigned long bytes_read; - -#if _DEBUG - fprintf(logfile,"Opening '%s'\n",path); - fflush(logfile); -#endif + DEBUG("Opening '" << path << "'"); - FILE* fp = fopen(path, "wb"); /* Flawfinder: ignore */ + FILE* fp = fopen(path.c_str(), "wb"); /* Flawfinder: ignore */ if (!fp) { -#if _DEBUG - fprintf(logfile,"Failed to open '%s'\n",path); - fflush(logfile); -#endif - return success; - } - -#if _DEBUG - fprintf(logfile,"Calling InternetOpen\n"); - fflush(logfile); -#endif - // Init wininet subsystem - hinet = InternetOpen(L"LindenUpdater", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); - if (hinet == NULL) - { + DEBUG("Failed to open '" << path << "'"); return success; } -#if _DEBUG - fprintf(logfile,"Calling InternetOpenUrl: %s\n",wchars_to_utf8chars(uri)); - fflush(logfile); -#endif - hdownload = InternetOpenUrl(hinet, uri, NULL, 0, INTERNET_FLAG_NEED_FILE, NULL); - if (hdownload == NULL) - { -#if _DEBUG - DWORD err = GetLastError(); - fprintf(logfile,"InternetOpenUrl Failed: %d\n",err); - fflush(logfile); -#endif - return success; - } + // Note, ctor can throw, since it uses check() function. + Fetcher fetcher(uri); + gTotalBytes = fetcher.getTotalBytes(); - DWORD sizeof_total_bytes = sizeof(gTotalBytes); - HttpQueryInfo(hdownload, HTTP_QUERY_CONTENT_LENGTH | HTTP_QUERY_FLAG_NUMBER, &gTotalBytes, &sizeof_total_bytes, NULL); - +/*==========================================================================*| + // nobody uses total_bytes?!? What's this doing here? DWORD total_bytes = 0; - success = InternetQueryDataAvailable(hdownload, &total_bytes, 0, 0); - if (success == FALSE) - { -#if _DEBUG - DWORD err = GetLastError(); - fprintf(logfile,"InternetQueryDataAvailable Failed: %d bytes Err:%d\n",total_bytes,err); - fflush(logfile); -#endif - return success; - } + success = check("InternetQueryDataAvailable", + InternetQueryDataAvailable(hdownload, &total_bytes, 0, 0)); +|*==========================================================================*/ success = FALSE; while(!success && !(*cancelled)) { - MSG msg; - -#if _DEBUG - fprintf(logfile,"Calling InternetReadFile\n"); - fflush(logfile); -#endif - if (!InternetReadFile(hdownload, data, BUFSIZE, &bytes_read)) - { -#if _DEBUG - fprintf(logfile,"InternetReadFile Failed.\n"); - fflush(logfile); -#endif - // ...an error occurred - return FALSE; - } + char data[BUFSIZE]; /* Flawfinder: ignore */ + unsigned long bytes_read = fetcher.read(data, sizeof(data)); -#if _DEBUG if (!bytes_read) { - fprintf(logfile,"InternetReadFile Read 0 bytes.\n"); - fflush(logfile); + DEBUG("InternetReadFile Read " << bytes_read << " bytes."); } -#endif -#if _DEBUG - fprintf(logfile,"Reading Data, bytes_read = %d\n",bytes_read); - fflush(logfile); -#endif + DEBUG("Reading Data, bytes_read = " << bytes_read); if (bytes_read == 0) { @@ -200,25 +233,17 @@ int WINAPI get_url_into_file(WCHAR *uri, char *path, int *cancelled) } -#if _DEBUG - fprintf(logfile,"Calling InvalidateRect\n"); - fflush(logfile); -#endif + DEBUG("Calling InvalidateRect"); // Mark the window as needing redraw (of the whole thing) InvalidateRect(gWindow, NULL, TRUE); // Do the redraw -#if _DEBUG - fprintf(logfile,"Calling UpdateWindow\n"); - fflush(logfile); -#endif + DEBUG("Calling UpdateWindow"); UpdateWindow(gWindow); -#if _DEBUG - fprintf(logfile,"Calling PeekMessage\n"); - fflush(logfile); -#endif + DEBUG("Calling PeekMessage"); + MSG msg; while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { TranslateMessage(&msg); @@ -232,15 +257,7 @@ int WINAPI get_url_into_file(WCHAR *uri, char *path, int *cancelled) } } -#if _DEBUG - fprintf(logfile,"Calling InternetCloseHandle\n"); - fclose(logfile); -#endif - fclose(fp); - InternetCloseHandle(hdownload); - InternetCloseHandle(hinet); - return success; } @@ -306,9 +323,8 @@ WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nSho char* argv[MAX_ARGS]; /* Flawfinder: ignore */ #if _DEBUG - logfile = _wfopen(TEXT("updater.log"),TEXT("wt")); - fprintf(logfile,"Parsing command arguments\n"); - fflush(logfile); + logfile.open("updater.log", std::ios_base::out); + DEBUG("Parsing command arguments"); #endif char *token = NULL; @@ -346,10 +362,7 @@ WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nSho // Process command line arguments // -#if _DEBUG - fprintf(logfile,"Processing command arguments\n"); - fflush(logfile); -#endif + DEBUG("Processing command arguments"); // // Parse the command line arguments @@ -358,7 +371,6 @@ WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nSho WNDCLASSEX wndclassex = { 0 }; //DEVMODE dev_mode = { 0 }; - char update_exec_path[MAX_PATH]; /* Flawfinder: ignore */ const int WINDOW_WIDTH = 250; const int WINDOW_HEIGHT = 100; @@ -407,26 +419,34 @@ WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nSho } // Can't feed GetTempPath into GetTempFile directly - if (0 == GetTempPathA(MAX_PATH - 14, update_exec_path)) + char temp_path[MAX_PATH]; /* Flawfinder: ignore */ + if (0 == GetTempPathA(sizeof(temp_path), temp_path)) { MessageBox(gWindow, L"Problem with GetTempPath()", L"Error", MB_OK); return 1; } - strcat(update_exec_path, "Second_Life_Updater.exe"); + std::string update_exec_path(temp_path); + update_exec_path.append("Second_Life_Updater.exe"); WCHAR update_uri[4096]; - mbstowcs(update_uri, gUpdateURL, 4096); + mbstowcs(update_uri, gUpdateURL, sizeof(update_uri)); int success = 0; int cancelled = 0; // Actually do the download -#if _DEBUG - fprintf(logfile,"Calling get_url_into_file\n"); - fflush(logfile); -#endif - success = get_url_into_file(update_uri, update_exec_path, &cancelled); + try + { + DEBUG("Calling get_url_into_file"); + success = get_url_into_file(update_uri, update_exec_path, &cancelled); + } + catch (const Fetcher::InetError& e) + { + (void)e; + success = FALSE; + DEBUG("Caught: " << e.what()); + } // WinInet can't tell us if we got a 404 or not. Therefor, we check // for the size of the downloaded file, and assume that our installer @@ -466,10 +486,31 @@ WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nSho // L"Download Complete", // MB_OK); - if (32 >= (int) ShellExecuteA(gWindow, "open", update_exec_path, NULL, +/*==========================================================================*| + // DEV-31680: ShellExecuteA() causes McAfee-GW-Edition and AntiVir + // scanners to flag this executable as a probable virus vector. + // Less than or equal to 32 means failure + if (32 >= (int) ShellExecuteA(gWindow, "open", update_exec_path.c_str(), NULL, "C:\\", SW_SHOWDEFAULT)) +|*==========================================================================*/ + // from http://msdn.microsoft.com/en-us/library/ms682512(VS.85).aspx + STARTUPINFOA si; + PROCESS_INFORMATION pi; + ZeroMemory(&si, sizeof(si)); + si.cb = sizeof(si); + ZeroMemory(&pi, sizeof(pi)); + + if (! CreateProcessA(update_exec_path.c_str(), // executable file + NULL, // command line + NULL, // process cannot be inherited + NULL, // thread cannot be inherited + FALSE, // do not inherit existing handles + 0, // process creation flags + NULL, // inherit parent's environment + NULL, // inherit parent's current dir + &si, // STARTUPINFO + &pi)) // PROCESS_INFORMATION { - // Less than or equal to 32 means failure MessageBox(gWindow, L"Update failed. Please try again later.", NULL, MB_OK); return 1; } diff --git a/install.xml b/install.xml index 7ea4efad8ab804a0158bea9b273480f78f72d19d..1b3c34737c93672679ff3cb24cfe03e3289deea3 100644 --- a/install.xml +++ b/install.xml @@ -207,30 +207,30 @@ <key>darwin</key> <map> <key>md5sum</key> - <string>10579844b84c3038ceb3706abc60c3b0</string> + <string>081ef195a856c708cc473c4421b4b290</string> <key>url</key> - <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.34.1-darwin-20090603.tar.bz2</uri> + <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.34.1-darwin-20090223.tar.bz2</uri> </map> <key>linux</key> <map> <key>md5sum</key> - <string>33e2d48a6c2207ade0f914fff99c18af</string> + <string>b516a8576ecad0f957db7fc2cd972aac</string> <key>url</key> - <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.34.1-linux-20090427.tar.bz2</uri> + <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.34.1-linux-20090223a.tar.bz2</uri> </map> <key>linux64</key> <map> <key>md5sum</key> - <string>cadb1934581b20f9b03aa18e2be7c55c</string> + <string>6db62bb7f141b3a1b3107e1f9aad0eb0</string> <key>url</key> - <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.34.1-linux64-20090427.tar.bz2</uri> + <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.34.1-linux64-20090223a.tar.bz2</uri> </map> <key>windows</key> <map> <key>md5sum</key> - <string>23a639706b58bf31de4898cfc265bedc</string> + <string>3b56fe9e8d2975c612639d0a5370ffe7</string> <key>url</key> - <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.34.1-windows-20090603.tar.bz2</uri> + <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.34.1-windows-20090225.tar.bz2</uri> </map> </map> </map> @@ -274,6 +274,25 @@ </map> </map> </map> + <key>dbghelp</key> + <map> + <key>copyright</key> + <string>Copyright Microsoft Corporation</string> + <key>description</key> + <string>dbghelp: Debug helper from Microsoft Debugging Tools For Windows</string> + <key>license</key> + <string>MSDTW</string> + <key>packages</key> + <map> + <key>windows</key> + <map> + <key>md5sum</key> + <string>b7563064037e032143ca2d610aae5153</string> + <key>url</key> + <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/dbghelp-6.11.1.404-windows-20090520.tar.bz2</uri> + </map> + </map> + </map> <key>dbusglib</key> <map> <key>copyright</key> @@ -522,6 +541,25 @@ </map> </map> </map> + <key>google-perftools</key> + <map> + <key>copyright</key> + <string>Copyright (c) 2005, Google Inc.</string> + <key>description</key> + <string>Heap performance and validity checking tools from google. Includes TCMalloc, heap-checker, heap-profiler and cpu-profiler.</string> + <key>license</key> + <string>bsd</string> + <key>packages</key> + <map> + <key>windows</key> + <map> + <key>md5sum</key> + <string>32dba32ddd460a08e082898ebba6315c</string> + <key>url</key> + <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/google-perftools-1.0-windows-20090406.tar.bz2</uri> + </map> + </map> + </map> <key>gstreamer</key> <map> <key>license</key> @@ -1105,9 +1143,9 @@ anguage Infrstructure (CLI) international standard</string> <key>darwin</key> <map> <key>md5sum</key> - <string>ac3e0218287e084709afea06b82ae03b</string> + <string>23313fda213a2496945435db2a0ee78b</string> <key>url</key> - <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/openjpeg-1.2-darwin-20080812.tar.bz2</uri> + <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/openjpeg-1.3.0-darwin-20090501.tar.bz2</uri> </map> <key>linux</key> <map> @@ -1132,53 +1170,6 @@ anguage Infrstructure (CLI) international standard</string> </map> </map> </map> - <key>pth</key> - <map> - <key>copyright</key> - <string>Copyright (c) 1999-2006 Ralf S. Engelschall <rse@gnu.org></string> - <key>description</key> - <string>Portable cooperative threads package, used to support Boost.Coroutine on Mac OS X 10.4</string> - <key>license</key> - <string>lgpl</string> - <key>packages</key> - <map> - <key>darwin</key> - <map> - <key>md5sum</key> - <string>533f4c710a209a6c4f205f81ccc0cfce</string> - <key>url</key> - <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/pth-2.0.7-darwin-20090427.tar.bz2</uri> - </map> - <key>linux</key> - <map> - <key>md5sum</key> - <string>c5c2f73847c126e679d925beab48c7d4</string> - <key>url</key> - <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/pth-2.0.7-linux-20090427.tar.bz2</uri> - </map> - <key>linux32</key> - <map> - <key>md5sum</key> - <string>c5c2f73847c126e679d925beab48c7d4</string> - <key>url</key> - <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/pth-2.0.7-linux32-20090427.tar.bz2</uri> - </map> - <key>linux64</key> - <map> - <key>md5sum</key> - <string>c5c2f73847c126e679d925beab48c7d4</string> - <key>url</key> - <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/pth-2.0.7-linux64-20090427.tar.bz2</uri> - </map> - <key>windows</key> - <map> - <key>md5sum</key> - <string>c5c2f73847c126e679d925beab48c7d4</string> - <key>url</key> - <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/pth-2.0.7-windows-20090427.tar.bz2</uri> - </map> - </map> - </map> <key>quicktime</key> <map> <key>copyright</key> @@ -1393,6 +1384,123 @@ anguage Infrstructure (CLI) international standard</string> <key>url</key> <string>http://www.xfree86.org/4.4.0/LICENSE9.html#sgi</string> </map> + <key>MSDTW</key> + <map> + <key>text</key> + <string>MICROSOFT SOFTWARE LICENSE TERMS +MICROSOFT DEBUGGING TOOLS FOR WINDOWS +These license terms are an agreement between Microsoft Corporation (or based on where you live, one of +its affiliates) and you. Please read them. They apply to the software named above, which includes the +media on which you received it, if any. The terms also apply to any Microsoft +* updates, +* supplements, +* Internet-based services +* support services, and +* Debugging symbol files that you may access over the internet +for this software, unless other terms accompany those items. If so, those terms apply. +By using the software, you accept these terms. If you do not accept them, do not use the +software. +If you comply with these license terms, you have the rights below. +1. INSTALLATION AND USE RIGHTS. One user may install and use any number of copies of the +software on your devices to design, develop, debug and test your programs. +2. ADDITIONAL LICENSING REQUIREMENTS AND/OR USE RIGHTS. +a. Distributable Code. The software contains code that you are permitted to distribute in programs +you develop if you comply with the terms below. +i. Right to Use and Distribute. The code and text files listed below are “Distributable Code.” +* REDIST.TXT Files. You may copy and distribute the object code form of code listed in +REDIST.TXT files. +* Sample Code. You may modify, copy, and distribute the source and object code form of +code marked as “sample.” +* Third Party Distribution. You may permit distributors of your programs to copy and +distribute the Distributable Code as part of those programs. +ii. Distribution Requirements. For any Distributable Code you distribute, you must +* add significant primary functionality to it in your programs; +* require distributors and external end users to agree to terms that protect it at least as much +as this agreement; +* display your valid copyright notice on your programs; and +* indemnify, defend, and hold harmless Microsoft from any claims, including attorneysÂ’ fees, +related to the distribution or use of your programs. +iii. Distribution Restrictions. You may not +* alter any copyright, trademark or patent notice in the Distributable Code; +* distribute any symbol files which you may access or use under these license terms for the +software; +* use MicrosoftÂ’s trademarks in your programsÂ’ names or in a way that suggests your +programs come from or are endorsed by Microsoft; +* distribute Distributable Code to run on a platform other than the Windows platform; +* include Distributable Code in malicious, deceptive or unlawful programs; or +* modify or distribute the source code of any Distributable Code so that any part of it +becomes subject to an Excluded License. An Excluded License is one that requires, as a +condition of use, modification or distribution, that +* the code be disclosed or distributed in source code form; or +* others have the right to modify it. +3. SCOPE OF LICENSE. The software is licensed, not sold. This agreement only gives you some rights +to use the software. Microsoft reserves all other rights. Unless applicable law gives you more rights +despite this limitation, you may use the software only as expressly permitted in this agreement. In +doing so, you must comply with any technical limitations in the software that only allow you to use it in +certain ways. You may not +* work around any technical limitations in the software; +* reverse engineer, decompile or disassemble the software, except and only to the extent that +applicable law expressly permits, despite this limitation; +* make more copies of the software than specified in this agreement or allowed by applicable law, +despite this limitation; +* publish the software for others to copy; +* rent, lease or lend the software; +* transfer the software or this agreement to any third party; or +* use the software for commercial software hosting services. +4. INTERNET-BASED SERVICES. Microsoft provides Internet-based services with the software. It may +change or cancel them at any time. +a. Consent for Internet-Based Services. The software contains features which may connect to +Microsoft or service provider computer systems over the Internet. In some cases, you will not +receive a separate notice when they connect. You may switch these features on or you may +choose not to use them. For more information about these features, see +http://www.microsoft.com/info/privacy/default.mspx. By using these features, you consent to the transmission of +this information. Microsoft does not use the information to identify or contact you. +b. Misuse of Internet-based Services. You may not use these services in any way that could +harm them or impair anyone elseÂ’s use of them. You may not use the services to try to gain +unauthorized access to any service, data, account or network by any means. + +5. BACKUP COPY. You may make one backup copy of the software. You may use it only to reinstall the +software. +6. DOCUMENTATION. Any person that has valid access to your computer or internal network may copy +and use the documentation for your internal, reference purposes. +7. EXPORT RESTRICTIONS. The software is subject to United States export laws and regulations. You +must comply with all domestic and international export laws and regulations that apply to the software. +These laws include restrictions on destinations, end users and end use. For additional information, see +www.microsoft.com/exporting. +8. SUPPORT SERVICES. Because this software is “as is,” we may not provide support services for it. +9. ENTIRE AGREEMENT. This agreement, and the terms for supplements, updates, Internet-based +services and support services that you use, are the entire agreement for the software and support +services. +10. APPLICABLE LAW. +a. United States. If you acquired the software in the United States, Washington state law governs +the interpretation of this agreement and applies to claims for breach of it, regardless of conflict of +laws principles. The laws of the state where you live govern all other claims, including claims under +state consumer protection laws, unfair competition laws, and in tort. +b. Outside the United States. If you acquired the software in any other country, the laws of that +country apply. +11. LEGAL EFFECT. This agreement describes certain legal rights. You may have other rights under the +laws of your country. You may also have rights with respect to the party from whom you acquired the +software. This agreement does not change your rights under the laws of your country if the laws of +your country do not permit it to do so. +12. DISCLAIMER OF WARRANTY. The software is licensed “as-is.” You bear the risk of using +it. Microsoft gives no express warranties, guarantees or conditions. You may have +additional consumer rights under your local laws which this agreement cannot change. To +the extent permitted under your local laws, Microsoft excludes the implied warranties of +merchantability, fitness for a particular purpose and non-infringement. +13. LIMITATION ON AND EXCLUSION OF REMEDIES AND DAMAGES. You can recover from +Microsoft and its suppliers only direct damages up to U.S. $5.00. You cannot recover any +other damages, including consequential, lost profits, special, indirect or incidental +damages. +This limitation applies to +* anything related to the software, services, content (including code) on third party Internet sites, or +third party programs; and +* claims for breach of contract, breach of warranty, guarantee or condition, strict liability, negligence, +or other tort to the extent permitted by applicable law. +It also applies even if Microsoft knew or should have known about the possibility of the damages. The +above limitation or exclusion may not apply to you because your country may not allow the exclusion or +limitation of incidental, consequential or other damages. + </string> + </map> <key>apache 2.0</key> <map> <key>url</key> diff --git a/scripts/messages/message_template.msg b/scripts/messages/message_template.msg index a65b4a30713945f7f6d5faff4cb4ef40b1c3951c..23efd65c45e71e62ad41ec9a580ed2a7b8643354 100644 --- a/scripts/messages/message_template.msg +++ b/scripts/messages/message_template.msg @@ -2720,7 +2720,7 @@ version 2.0 // end viewer to simulator section { - ViewerStats Low 131 NotTrusted Zerocoded + ViewerStats Low 131 NotTrusted Zerocoded UDPDeprecated { AgentData Single { AgentID LLUUID } @@ -4911,6 +4911,12 @@ version 2.0 { ActualArea S32 } { Final BOOL } // true if buyer should be in tier } + { + RegionData Single // included so region name shows up in transaction logs + { RegionID LLUUID } + { GridX U32 } + { GridY U32 } + } } // sim ->dataserver